*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#343d34;color:#e6e1cd;font-family:'Yu Mincho','Hiragino Mincho ProN',Georgia,serif}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}button:focus-visible{outline:2px solid #e4d69e;outline-offset:7px}button:disabled{opacity:.5;cursor:wait}#game-shell,#scene{width:100%;height:100%;position:absolute;inset:0}#scene{display:block;touch-action:none}.hidden{display:none!important}.vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 45%,transparent 45%,rgba(12,19,14,.44) 100%);box-shadow:inset 0 0 100px #0c150d33}#hurt{position:absolute;inset:0;pointer-events:none;opacity:0;background:radial-gradient(ellipse,transparent 30%,#7c101e99);transition:opacity .45s}.overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#172019b8;backdrop-filter:blur(5px);z-index:20}.title-screen{background:linear-gradient(90deg,#0f191ca8,#17261f66 40%,#18271c22);backdrop-filter:none;text-align:center}.title-inner{width:min(600px,90vw);margin-top:-2vh;text-shadow:0 2px 10px #152015}.crown-symbol{width:100px;height:86px;margin:0 auto 20px;filter:drop-shadow(0 0 12px #b5a55a80)}.crown-symbol svg{width:100%;height:100%;stroke:#d0bb80;stroke-width:1.5;fill:none}h1{font-family:Georgia,'Times New Roman',serif;font-size:clamp(36px,5.4vw,76px);letter-spacing:.1em;font-weight:400;margin:0;white-space:nowrap;color:#d8c99b;text-shadow:0 0 27px #d2bb6355,0 3px 15px #071e18}.japanese-title{font-size:19px;letter-spacing:.65em;margin:12px 0 33px;padding-left:.65em}.title-poem{font-size:14px;line-height:2.2;letter-spacing:.18em;color:#d2d6c4;margin-bottom:30px}.ornate-button{display:block;margin:12px auto;background:linear-gradient(90deg,transparent,#7d704c35 25%,#99855935 75%,transparent);border:0;border-top:1px solid #bfb18360;border-bottom:1px solid #bfb18360;min-width:240px;padding:13px 36px;letter-spacing:.22em;font-size:16px;transition:background .2s,color .2s}.ornate-button:hover{background:linear-gradient(90deg,transparent,#a9955955,transparent);color:#fff3c8}.text-button{display:block;background:none;border:none;padding:10px;margin:2px auto;color:#c7c7b7;font-size:13px;letter-spacing:.12em}.text-button:hover{color:#f0ddaa}.disclosure{position:absolute;bottom:17px;font-size:11px;letter-spacing:.1em;color:#c3c9b8aa}.menu-panel{text-align:center;width:min(440px,90vw);padding:30px 20px;border-top:1px solid #b5a87850;border-bottom:1px solid #b5a87850;background:#1e291dcc}.menu-panel h2{font-weight:400;font-size:29px;letter-spacing:.18em;margin:12px 0 24px}.menu-panel p{font-family:'Yu Gothic',sans-serif;color:#c7c9b8;line-height:1.9;font-size:13px}.menu-panel .footnote{font-size:11px;opacity:.6;margin-top:20px}.help-panel dl{display:grid;grid-template-columns:35% 65%;font-size:13px;text-align:left;line-height:2.3;margin:20px 0}.help-panel dt{color:#cabb83}.help-panel dd{margin:0;font-family:'Yu Gothic',sans-serif;font-size:12px}.death-inner,.victory-inner{text-align:center}.death-inner h2{color:#b05850;font-weight:400;font-size:clamp(50px,8vw,90px);letter-spacing:.35em;margin:0 0 25px;text-shadow:0 0 35px #87070060}.death-inner p,.victory-inner p{font-size:14px;color:#b8baaa;margin-bottom:38px}.victory-inner h2{font-size:24px;font-weight:400;margin-top:28px;letter-spacing:.18em}.victory-line{font-size:clamp(36px,5vw,70px)!important;color:#d3c080!important;letter-spacing:.16em}.vitals{position:absolute;top:28px;left:28px;display:flex;align-items:center;gap:12px;filter:drop-shadow(0 2px 4px #152019)}.crest{font-size:43px;line-height:1;color:#c8b68c;text-shadow:0 0 12px #dec69870}.bars{width:clamp(180px,22vw,340px)}.bar{border:1px solid #a18b5d77;background:#1b241d99;box-shadow:inset 0 0 3px #000;height:13px;margin-bottom:6px;padding:2px}.bar>div{height:100%;transition:width .09s linear}.hp>div{background:linear-gradient(0deg,#872d2c,#a45945);width:100%}.focus{width:78%;height:8px}.focus>div{width:100%;background:#496675}.stamina{height:10px;width:87%}.stamina>div{width:100%;background:linear-gradient(0deg,#547442,#92a165)}.compass{position:absolute;top:34px;left:50%;transform:translateX(-50%);width:210px;display:flex;align-items:center;justify-content:space-around;gap:10px;font-size:12px;color:#c8c9b4;text-shadow:0 1px 4px #122016}.compass b{font-weight:400;font-size:14px}.compass i{width:43px;height:1px;background:#ccc5a77a}.compass #bearing{position:absolute;top:22px;left:50%;border:4px solid transparent;border-top-color:#d2be84}.small-button{position:absolute;top:27px;right:28px;background:#18241d55;border:1px solid #b5ad8155;font-size:11px;padding:8px 14px}.equipment{position:absolute;left:35px;bottom:50px;width:145px;height:160px}.gear{border:1px solid #b9aa7e66;background:linear-gradient(135deg,#21302744,#1b251dd9);position:absolute;width:68px;height:68px}.gear svg{width:56px;height:56px;stroke:#cdc6a1;stroke-width:2;fill:none;filter:drop-shadow(0 0 6px #e8b63555)}.gear.sword{top:0;left:66px}.gear.flask{left:0;top:65px}.gear.flask svg{stroke:#bfa368;fill:#9b6c2644}.gear.flask span{position:absolute;right:5px;bottom:3px;font-size:18px}.item-name{position:absolute;left:3px;top:140px;font-size:14px;white-space:nowrap;text-shadow:0 2px 4px #142018}.item-key{position:absolute;left:3px;top:165px;font-size:11px;color:#b9c2ae}.runes{position:absolute;bottom:32px;right:36px;min-width:116px;padding:6px 12px;background:#1b261cbb;border-top:1px solid #b9aa7e55;border-bottom:1px solid #b9aa7e55;display:flex;align-items:center;justify-content:space-between;gap:22px}.runes span{color:#c8b776;font-size:25px}.runes b{font-weight:400;font-size:17px}#boss-bar{position:absolute;bottom:67px;left:24%;right:18%;text-shadow:0 2px 5px #111b10}.boss-name{font-size:16px;margin-bottom:8px;letter-spacing:.08em}.boss-track{height:15px;border:1px solid #ab8c5e88;padding:2px;background:#172419c9}.boss-track>div{height:100%;background:linear-gradient(0deg,#813c30,#b5694a);transition:width .2s}#controls-hint{position:absolute;bottom:13px;left:50%;transform:translateX(-50%);font-size:11px;white-space:nowrap;color:#d3d8c6b0;font-family:'Yu Gothic',sans-serif;text-shadow:0 1px 4px #102512}#interact{position:absolute;bottom:27%;left:50%;transform:translateX(-50%);padding:10px 44px;min-width:260px;text-align:center;background:linear-gradient(90deg,transparent,#131d16e0 22%,#131d16e0 78%,transparent);border-top:1px solid #aba17c66;border-bottom:1px solid #aba17c66;letter-spacing:.07em;font-size:15px}#area-name{position:absolute;top:24%;left:50%;transform:translateX(-50%);width:450px;max-width:85vw;text-align:center;pointer-events:none;z-index:15;animation:area-in 5s both}#area-name span{display:block;font-size:37px;letter-spacing:.45em;padding:20px 0 20px .45em;border-bottom:1px solid #d6d1b866;text-shadow:0 3px 12px #071b12}#toast{position:absolute;top:100px;left:50%;transform:translateX(-50%);padding:12px 35px;color:#e1d7b2;font-size:14px;background:linear-gradient(90deg,transparent,#152317ce,transparent);text-align:center;pointer-events:none;z-index:30;opacity:0;transition:opacity .3s;max-width:90vw;white-space:nowrap}#lock-marker{position:absolute;width:9px;height:9px;transform:translate(-50%,-50%);background:#efe4c6;border-radius:50%;box-shadow:0 0 9px #fff8d8;pointer-events:none}#loading{position:absolute;bottom:60px;font-size:12px;color:#e5dfb5}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}#touch-ui{position:absolute;inset:0;pointer-events:none;z-index:12}#joystick{position:absolute;bottom:35px;left:24px;width:110px;height:110px;border:1px solid #eee1b440;border-radius:50%;background:#13251b44;pointer-events:auto;touch-action:none}#joystick-knob{position:absolute;width:44px;height:44px;left:33px;top:33px;background:#d7d4b933;border:1px solid #e4d9b860;border-radius:50%}#touch-camera{position:absolute;right:10px;top:90px;width:45%;height:45%;pointer-events:auto;touch-action:none}.touch-actions{position:absolute;right:20px;bottom:25px;width:164px;height:152px;display:grid;grid-template-columns:repeat(3,1fr);gap:7px;pointer-events:auto}.touch-actions button{border:1px solid #d1c39188;background:#263024aa;font-size:12px;padding:0;border-radius:50%;height:46px;touch-action:none}.touch-actions .attack-button{background:#70674988}.touch-actions .dodge-button{background:#3f514488}@keyframes area-in{0%,100%{opacity:0}15%,70%{opacity:1}}@media(max-width:700px){.vitals{left:14px;top:16px;gap:6px}.crest{font-size:30px}.bars{width:170px}.bar{height:10px;margin-bottom:4px}.focus{height:6px}.stamina{height:8px}.compass{top:76px;width:130px}.small-button{top:17px;right:12px;font-size:10px;padding:6px 9px}.equipment{left:14px;bottom:168px;transform:scale(.65);transform-origin:left bottom}.runes{bottom:190px;right:17px;min-width:95px;padding:2px 10px}.runes span{font-size:19px}.runes b{font-size:14px}#boss-bar{bottom:203px;left:14%;right:14%}.boss-name{font-size:12px}.boss-track{height:11px}#controls-hint{display:none}#interact{bottom:42%;font-size:12px;min-width:210px;padding:9px 22px}#toast{top:114px;font-size:12px;white-space:normal;width:90%}.title-inner{margin-top:-3vh}.crown-symbol{width:77px;height:64px;margin-bottom:16px}h1{font-size:clamp(26px,7.3vw,50px);letter-spacing:.06em}.japanese-title{font-size:15px;margin-bottom:24px}.title-poem{font-size:12px;margin-bottom:22px}.disclosure{font-size:9px;text-align:center;bottom:14px}.menu-panel{max-height:92%;overflow:auto;padding:15px}.death-inner h2{padding-left:.35em;font-size:42px}.death-inner p{font-size:12px}.victory-inner h2{font-size:18px}.help-panel dl{font-size:12px}.help-panel dd{font-size:10px}#area-name span{font-size:27px}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition:none!important}}

/* Phone controls share the same layout in portrait and landscape. */
html, body { overscroll-behavior: none; }
#game-shell { height: 100dvh; }
.touch-actions button { user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; }
.touch-actions button.pressed { background: #8b8156cc; border-color: #e7dbad; }
body.touch-mode .overlay {
  padding: max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(20px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
}
body.touch-mode .menu-panel { max-height: calc(100dvh - 40px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); overflow-y: auto; overscroll-behavior: contain; padding: 15px; }
body.touch-mode .title-inner { max-height: calc(100dvh - 70px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); overflow-y: auto; margin-top: 0; }
body.touch-mode .disclosure { bottom: max(8px, env(safe-area-inset-bottom)); font-size: 9px; }
body.touch-mode .vitals { top: calc(14px + env(safe-area-inset-top)); left: calc(12px + env(safe-area-inset-left)); gap: 6px; }
body.touch-mode .crest { font-size: 30px; }
body.touch-mode .bars { width: 170px; }
body.touch-mode .compass { top: calc(70px + env(safe-area-inset-top)); width: 130px; }
body.touch-mode .small-button { top: calc(14px + env(safe-area-inset-top)); right: calc(12px + env(safe-area-inset-right)); min-height: 44px; padding: 8px 12px; }
body.touch-mode .item-key, body.touch-mode #controls-hint { display: none; }
body.touch-mode .equipment { left: calc(12px + env(safe-area-inset-left)); bottom: calc(170px + env(safe-area-inset-bottom)); transform: scale(.65); transform-origin: left bottom; }
body.touch-mode .runes { bottom: calc(190px + env(safe-area-inset-bottom)); right: calc(14px + env(safe-area-inset-right)); min-width: 95px; padding: 2px 10px; }
body.touch-mode #boss-bar { bottom: calc(210px + env(safe-area-inset-bottom)); left: 14%; right: 14%; }
body.touch-mode #interact { bottom: 43%; min-width: 210px; font-size: 12px; padding: 9px 22px; pointer-events: none; }
body.touch-mode #toast { top: calc(107px + env(safe-area-inset-top)); font-size: 12px; white-space: normal; width: 90%; padding: 10px 15px; }
body.touch-mode #joystick { left: calc(20px + env(safe-area-inset-left)); bottom: calc(22px + env(safe-area-inset-bottom)); }
body.touch-mode #touch-camera { top: calc(105px + env(safe-area-inset-top)); height: calc(100% - 300px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); right: max(10px, env(safe-area-inset-right)); }
body.touch-mode .touch-actions { right: calc(14px + env(safe-area-inset-right)); bottom: calc(18px + env(safe-area-inset-bottom)); width: 170px; height: 152px; grid-template-columns: repeat(3, 1fr); grid-auto-rows: 46px; gap: 7px; }
body.touch-mode .touch-actions button { height: 46px; min-width: 44px; }
@media (orientation: landscape) and (max-height: 500px) {
  body.touch-mode .compass { top: calc(20px + env(safe-area-inset-top)); }
  body.touch-mode .equipment { display: none; }
  body.touch-mode .runes { top: calc(65px + env(safe-area-inset-top)); bottom: auto; }
  body.touch-mode #joystick { bottom: calc(16px + env(safe-area-inset-bottom)); width: 100px; height: 100px; }
  body.touch-mode #joystick-knob { left: 28px; top: 28px; }
  body.touch-mode .touch-actions { bottom: calc(14px + env(safe-area-inset-bottom)); width: 208px; height: 99px; grid-template-columns: repeat(4, 1fr); }
  body.touch-mode #boss-bar { bottom: calc(30px + env(safe-area-inset-bottom)); left: calc(137px + env(safe-area-inset-left)); right: calc(242px + env(safe-area-inset-right)); }
  body.touch-mode #touch-camera { top: calc(85px + env(safe-area-inset-top)); height: calc(100% - 205px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); width: 43%; }
  body.touch-mode #interact { bottom: 40%; }
  body.touch-mode #area-name { top: 14%; }
  body.touch-mode #area-name span { padding: 12px 0; font-size: 25px; }
  body.touch-mode .crown-symbol, body.touch-mode .title-poem { display: none; }
  body.touch-mode h1 { font-size: 34px; }
  body.touch-mode .japanese-title { font-size: 14px; margin: 8px 0 14px; }
  body.touch-mode .ornate-button { padding: 10px 25px; }
  body.touch-mode .help-panel dl { line-height: 1.8; }
}
