/* Daily-life scene. Transparent sprites replace all polygon clipping. */
.village-map{background-image:url('assets/village-map-v3.png');aspect-ratio:4096/2731;background-size:contain;background-repeat:no-repeat}
.village-person,.village-person.ebom{width:11%;aspect-ratio:3/5;transform:translate(-50%,-90%);mix-blend-mode:normal}
.village-person .village-sprite{clip-path:none;mask-image:none;mix-blend-mode:normal;background-image:url('assets/union-daily-alpha.png');filter:drop-shadow(0 2px 1px #53452730);position:relative;z-index:1;transition:filter .15s}
.village-person:before{content:"";position:absolute;left:21%;right:20%;bottom:4%;height:5%;border-radius:50%;background:#615c3f22;filter:blur(2px);pointer-events:none}
.village-person:hover .village-sprite,.village-person:focus-visible .village-sprite{transform:none;filter:drop-shadow(0 2px 1px #53452730) brightness(1.04)}
.village-person.growth{--x:27%;--y:28%;--sprite:0%}.village-person.health{--x:79%;--y:28%;--sprite:25%}.village-person.ebom{--x:50%;--y:48%;--sprite:50%}.village-person.career{--x:25%;--y:70%;--sprite:75%}.village-person.family{--x:77%;--y:78%;--sprite:100%}
.village-name,.ebom .village-name{opacity:0;visibility:hidden;pointer-events:none;bottom:0;z-index:4;background:#fffbedf5;border:1px solid #cfc5a4;padding:6px 12px;border-radius:10px;color:#626846;transition:opacity .12s;white-space:nowrap;font-size:12px;box-shadow:0 3px 10px #5c694124}.village-name small{display:block;font-size:11px;font-weight:400;color:#83866e}.village-person:hover,.village-person:focus-visible{z-index:5}.village-person:hover .village-name,.village-person:focus-visible .village-name{opacity:1;visibility:visible}
@media(max-width:700px){.village-person,.village-person.ebom{width:11%}.village-name,.ebom .village-name{font-size:11px;padding:5px 8px}.village-name small{font-size:10px}}
@media(prefers-reduced-motion:reduce){.village-name,.village-sprite{transition:none}}
.village-person,.village-person.ebom{width:13%;aspect-ratio:550/724}
.village-person .village-sprite{background-size:100% 100%;background-position:center}
.growth .village-sprite{background-image:url('assets/growth-daily-v2.png')}.health .village-sprite{background-image:url('assets/health-daily-v2.png')}.ebom .village-sprite{background-image:url('assets/ebom-daily-v2.png')}.career .village-sprite{background-image:url('assets/career-daily-v2.png')}.family .village-sprite{background-image:url('assets/family-daily-v2.png')}

/* Final supplied assets: native ratios; CSS placement only. */
.village-person.growth{--x:30%;--y:27%;width:6.4%;aspect-ratio:972/1618}
.village-person.health{--x:78.5%;--y:28%;width:7.2%;aspect-ratio:1031/1525}
.village-person.ebom{--x:53.5%;--y:61%;width:5.65%;aspect-ratio:887/1774}
.village-person.career{--x:23%;--y:73%;width:8.65%;aspect-ratio:1129/1393}
.village-person.family{--x:70.5%;--y:75.5%; width:7%;aspect-ratio:1019/1543}
.village-person{transform:translate(-50%,-100%)}
.village-person .village-sprite{background-size:contain;background-repeat:no-repeat}

/* 가로형 배너: 캐릭터 성장 영역이 첫 화면에 보이도록 마을 높이를 줄인다. 배경 이미지와 위치는 app.js가 지정한다. */
.village-map{background-image:url('assets/village-banner.webp');aspect-ratio:2164/587;background-size:cover;background-position:center}

/* Header wordmark: warm, compact, and intentionally quieter than the village. */
.brand.brand-logo{display:inline-flex;align-items:center;gap:0;color:#344f3d;font-size:inherit;font-weight:400;letter-spacing:0;line-height:1;text-decoration:none;white-space:nowrap}
.brand-logo .brand-symbol{width:17px;height:17px;margin-right:7px;overflow:visible;flex:0 0 auto}
.brand-logo .brand-symbol-stem,.brand-logo .brand-symbol-ground{fill:none;stroke:#d87946;stroke-width:1.75;stroke-linecap:round}
.brand-logo .brand-symbol-leaf{fill:#6f8b64}
.brand-logo .brand-word{display:inline-block}
.brand-logo .brand-bom{color:#365740;font-family:"Trebuchet MS","Segoe UI",sans-serif;font-size:23px;font-weight:800;letter-spacing:-.85px}
.brand-logo .brand-colon{display:inline-grid;align-content:center;justify-items:center;gap:3px;width:13px;margin:0 4px;color:#d87946}
.brand-logo .brand-colon i{display:block;width:4px;height:4px;border-radius:50%;background:currentColor}
.brand-logo .brand-union{color:#314d48;font-family:"Segoe UI","Malgun Gothic",sans-serif;font-size:19px;font-weight:750;letter-spacing:.7px}
.brand-logo:hover .brand-bom{color:#2d4b36}.brand-logo:hover .brand-colon{color:#c96938}
.brand-logo:focus-visible{outline-color:#d99a6d}
.brand.brand-logo--image{line-height:0}
.brand-logo-image{display:block;width:auto;height:52px;object-fit:contain}
.edition{transform:translateY(5px)}
@media(max-width:700px){.brand-logo .brand-symbol{width:15px;height:15px;margin-right:6px}.brand-logo .brand-bom{font-size:21px}.brand-logo .brand-union{font-size:17px}.brand-logo .brand-colon{width:11px;margin:0 3px;gap:2px}.brand-logo .brand-colon i{width:3.5px;height:3.5px}}
@media(max-width:700px){.brand-logo-image{height:45px}}
@media(prefers-reduced-motion:no-preference){.brand-logo .brand-symbol-leaf{transform-box:fill-box;transform-origin:bottom center;transition:transform .18s ease}.brand-logo:hover .brand-symbol-leaf--left{transform:rotate(-4deg)}.brand-logo:hover .brand-symbol-leaf--right{transform:rotate(4deg)}}
