/* SPDX-License-Identifier: GPL-3.0-only */
@font-face{font-family:Alegreya;src:url('../vendor/alegreya-latin-600-normal.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:Source;src:url('../vendor/source-sans-3-latin-400-normal.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Source;src:url('../vendor/source-sans-3-latin-600-normal.woff2') format('woff2');font-weight:600;font-display:swap}
:root{color-scheme:dark;--forest:#214c3e;--deep:#112e29;--linen:#f3ead6;--muted:#c7d6c5;--brass:#e4ba70;--ink:#20291e;--line:#6e8772;--danger:#ffc3b0;--shadow:0 12px 32px #071e2450;font-family:Source,system-ui,sans-serif;color:var(--linen);background:var(--deep);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;touch-action:manipulation}button,input,select{min-height:44px}button{color:var(--linen);background:#284f43;border:1px solid var(--line);border-radius:5px;padding:9px 15px;transition:background .15s,transform .15s}button:hover:not(:disabled){background:#3a6252}button:disabled{cursor:wait;opacity:.58}button:active:not(:disabled){transform:translateY(1px)}button:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible{outline:3px solid var(--brass);outline-offset:3px}::selection{color:var(--deep);background:var(--brass)}input{caret-color:var(--brass)}*{scrollbar-color:#9a9b77 var(--deep);scrollbar-width:thin}a{text-underline-offset:3px}[hidden]{display:none!important}
.creator{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(390px,1fr);min-height:100dvh}#stage{position:relative;min-width:0;background:#342c26;height:100dvh;overflow:hidden}#world{display:block;width:100%;height:100%;touch-action:none}.brand{position:absolute;top:36px;left:38px;display:flex;gap:14px;align-items:center;pointer-events:none;text-shadow:0 3px 12px #000}.brand svg{width:42px;stroke:var(--brass);fill:none;stroke-width:2;stroke-linejoin:round}h1,h2{font-family:Alegreya,Georgia,serif;font-weight:600;margin:0;line-height:1.06}h1{font-size:40px}.brand p{margin:6px 0 0;color:#e4d2ae;font-size:17px}.preview-tools{position:absolute;bottom:32px;left:50%;transform:translateX(-50%);display:flex;gap:15px;align-items:center;white-space:nowrap;background:#25281ee6;padding:6px 10px;border-radius:6px;box-shadow:var(--shadow)}.preview-tools span{font-size:15px}.preview-tools button{font-size:23px;padding:2px 13px;border-color:transparent;background:transparent}
#wardrobe{background:var(--forest);height:100dvh;overflow:auto}.panel-content{max-width:550px;margin:0 auto;padding:40px 40px 26px}h2{font-size:40px;text-wrap:balance}.intro{color:var(--muted);margin:12px 0 24px;font-size:18px;line-height:1.4}.field-label,legend,.hair-row>label{font-weight:600;font-size:15px}.field-label{display:block;margin-bottom:7px}input:not([type=checkbox]),select{width:100%;padding:10px 12px;background:var(--deep);color:var(--linen);border:1px solid var(--line);border-radius:4px}input::placeholder{color:#bbc8b8}small{display:block;color:var(--muted);font-size:13px;margin-top:5px}fieldset{border:0;padding:0;margin:19px 0 0;min-width:0}legend{margin-bottom:8px;padding:0}.segments{display:flex;gap:6px}.segments button{flex:1;padding:8px 7px;font-size:14px;min-width:0}.segments button[aria-pressed=true]{background:var(--brass);color:var(--ink);border-color:var(--brass)}.swatches{display:flex;gap:10px;flex-wrap:wrap}.swatches button{position:relative;width:44px;height:44px;padding:0;border:2px solid #a4b59e;border-radius:50%;background:var(--swatch);box-shadow:inset 0 0 0 4px var(--forest)}.swatches button:hover:not(:disabled){background:var(--swatch);transform:translateY(-2px)}.swatches button[aria-pressed=true]{border-color:var(--linen);outline:2px solid var(--brass);outline-offset:2px}.swatches button[aria-pressed=true]::after{content:'';position:absolute;right:-3px;bottom:-3px;width:19px;height:19px;line-height:19px;font-size:14px;border-radius:50%;background:var(--linen);color:#112a23;font-weight:600}.hair-row{display:flex;gap:18px;align-items:flex-end;margin-top:19px}.hair-row>label:first-child{flex:1}.hair-row select{display:block;margin-top:7px}.check{display:flex;align-items:center;gap:7px;min-height:44px}.check input{width:18px;min-height:18px;height:18px;accent-color:var(--brass)}.appearance-note{font-size:13px;color:var(--muted);margin:16px 0 6px}#form-status{font-size:14px;min-height:22px;margin:7px 0;color:var(--brass)}#form-status.error{color:var(--danger)}.primary{display:flex;justify-content:space-between;align-items:center;gap:15px;background:var(--brass);color:var(--ink);border-color:var(--brass);width:100%;min-height:52px;font-weight:600;font-size:18px}.primary:hover:not(:disabled){background:#f0c87e}.primary span{font-size:24px}.secondary{margin-top:10px;width:100%}.identity-note{font-size:13px;line-height:1.4;color:var(--muted);margin:17px 0 0;max-width:60ch}.notice{position:absolute;left:6%;right:6%;top:45%;padding:22px;background:#392924;color:var(--linen);box-shadow:var(--shadow);line-height:1.5}.notice button{display:block;margin-top:12px}
button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}.hair-choice{flex:1}.hair-choice label{font-weight:600;font-size:15px}
.swatches button[aria-pressed=true]::after{content:''}.swatches button[aria-pressed=true]::before{content:'';position:absolute;z-index:1;right:3px;bottom:2px;width:6px;height:10px;border:solid #112a23;border-width:0 2px 2px 0;transform:rotate(45deg)}
@media(min-width:1500px){.panel-content{padding-top:55px}h2{font-size:46px}fieldset{margin-top:24px}}
#auth{background:var(--forest);height:100dvh;overflow:auto;display:flex;align-items:safe center}.auth-content{width:100%;padding-top:48px;padding-bottom:48px}.auth-content h2{max-width:12ch}.auth-content .intro{max-width:35ch;margin-bottom:28px}.auth-modes{display:flex;gap:8px;margin-bottom:26px}.auth-modes button{flex:1;font-weight:600}.auth-modes button[aria-pressed=true]{color:var(--brass);background:var(--deep);border-color:var(--brass)}.auth-field{margin-bottom:22px}.auth-field small{line-height:1.45}.password-control{display:flex;gap:8px}.password-control input{min-width:0;flex:1}.password-control button{flex:0 0 auto;padding-inline:12px}.auth-content .primary span{font-size:18px}.auth-context{color:var(--linen);font-size:15px;line-height:1.5;margin:0 0 20px;padding:14px 0;border-block:1px solid var(--line)}#auth-status{min-height:23px;color:var(--brass);font-size:15px;line-height:1.5;margin:18px 0 0;overflow-wrap:anywhere}#auth-status.error,.account-status{color:var(--danger)}.auth-content input[aria-invalid=true]{border-color:var(--danger)}.identity-note a{color:var(--brass)}a:focus-visible{outline:3px solid var(--brass);outline-offset:3px}.account-line{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 24px;padding-bottom:15px;border-bottom:1px solid var(--line)}.account-line span{font-size:14px;color:var(--muted);overflow-wrap:anywhere;min-width:0}.account-line button{font-size:14px;white-space:nowrap}.account-status{font-size:14px;line-height:1.4;margin:8px 0 0}.account-status:empty{display:none}#inn-username{overflow-wrap:anywhere;max-width:30ch}.player-panel:has(#inn-username:not([hidden])){max-width:calc(100% - 40px)}
.backpack{position:absolute;z-index:6;top:174px;right:28px;bottom:28px;width:min(430px,calc(100% - 56px));background:var(--deep);border-radius:8px;box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden}.backpack-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 20px 12px}.backpack-heading h2{font-size:28px;outline-offset:4px}.backpack-heading button{font-size:14px;padding:8px 12px}.backpack-scroll{overflow:auto;overscroll-behavior:contain;scroll-padding:16px;padding:0 20px 24px;line-height:1.4}.backpack-scroll>section{padding-top:20px;margin-top:18px;border-top:1px solid var(--line)}.backpack-scroll>.first-improvement{padding-top:0;margin-top:0;border-top:0}.backpack h3{font-family:Alegreya,Georgia,serif;font-size:22px;font-weight:600;margin:0 0 8px}.backpack h4{font-size:16px;margin:0 0 6px;font-weight:600}.backpack p{font-size:15px;margin:5px 0 8px}.backpack .supporting{font-size:13px;color:var(--muted);line-height:1.4}.backpack .equipment-warning{font-size:13px;color:var(--danger)}.equipment-row{display:flex;align-items:center;gap:16px;justify-content:space-between;padding-block:12px}.equipment-row+.equipment-row{border-top:1px solid #284f43}.equipment-row>div{min-width:0}.equipment-row strong{font-weight:600;font-size:15px}.equipment-row button{font-size:14px;flex-shrink:0;padding-inline:12px}.materials-list{margin:0;font-size:15px;font-variant-numeric:tabular-nums}.materials-list>div{display:flex;justify-content:space-between;gap:20px;padding-block:5px}.materials-list dd{margin:0;color:var(--brass);font-weight:600}.recipe-row{padding-block:14px}.recipe-row+.recipe-row{border-top:1px solid #284f43}.recipe-costs,.drop-list{padding-left:20px;margin:7px 0;font-size:14px}.recipe-costs li{padding-block:2px;font-variant-numeric:tabular-nums}.missing-material{color:var(--danger)}.craft-button{margin-top:6px;color:var(--ink);background:var(--brass);border-color:var(--brass);font-weight:600;width:100%}.craft-button:hover:not(:disabled){background:#f0c87e}.craft-button:disabled{cursor:not-allowed}.drop-details{margin-top:20px;border-top:1px solid var(--line);padding-top:8px}.drop-details summary{cursor:pointer;padding-block:12px;font-size:14px;color:var(--brass)}.drop-details summary:focus-visible,.backpack-heading h2:focus-visible,.recipe-row:focus-visible,.equipment-row:focus-visible{outline:3px solid var(--brass);outline-offset:3px}.drop-details h4{font-size:14px;margin-top:16px}.adventure-panel-open .adventure-feedback{visibility:hidden}
/* Batch quantities belong to the existing workshop recipe, not a new panel. */
#recipe-list .recipe-result{font-size:14px;color:var(--linen);overflow-wrap:anywhere}
#recipe-list .recipe-quantity{display:grid;grid-template-columns:minmax(0,1fr) minmax(72px,96px) auto;align-items:center;gap:8px;margin-top:12px}
#recipe-list .recipe-quantity label{font-size:15px;font-weight:600}
#recipe-list .recipe-quantity input{min-width:0;min-height:44px;font-size:16px;font-variant-numeric:tabular-nums}
#recipe-list .recipe-maximum{min-width:64px;min-height:44px;padding-inline:12px}
#recipe-list .recipe-maximum:disabled{cursor:not-allowed}
#recipe-list .recipe-limit{margin:5px 0 8px;font-variant-numeric:tabular-nums}
#recipe-list .recipe-reason{margin:8px 0 0;font-size:13px;line-height:1.4;color:var(--danger);overflow-wrap:anywhere}
#recipe-list .recipe-reason.supporting{color:var(--muted)}
#recipe-list .recipe-confirmation{margin-top:8px;font-size:14px;color:var(--brass);overflow-wrap:anywhere}
#recipe-list .recipe-confirmation.feedback-error{color:var(--danger)}
#recipe-list input[aria-invalid=true]{border-color:var(--danger)}
/* The chapter keeps Umbral's world-first composition. */
:root{--safe-top:env(safe-area-inset-top,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}
body{position:relative}a{color:var(--brass)}svg{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}h3{font-family:Alegreya,Georgia,serif;font-size:22px;font-weight:600;text-wrap:balance}button{background:var(--forest)}button:hover:not(:disabled){background:#355e4b}button[aria-pressed=true]{background:var(--brass);color:var(--ink);border-color:var(--brass)}button svg{flex-shrink:0}
.swatches button[aria-pressed=true]{background:var(--swatch)}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.supporting{color:var(--muted);font-size:14px;line-height:1.5}.in-inn{height:100dvh;overflow:hidden}.in-inn #stage{width:100%;height:100dvh;min-height:0}.in-inn .brand{display:none}#world{outline-offset:-4px}.notice{z-index:25}
#inn-ui{position:absolute;inset:0;pointer-events:none}#inn-ui button,#inn-ui input,#inn-ui select,#inn-ui a,#inn-ui .world-panel{pointer-events:auto}
.topbar{position:absolute;z-index:2;top:max(14px,var(--safe-top));left:max(18px,var(--safe-left));right:max(18px,var(--safe-right));display:flex;justify-content:space-between;gap:12px;align-items:center}
.world-brand{font:600 26px Alegreya,Georgia,serif;background:var(--deep);padding:10px 15px;border-radius:5px}.topbar nav{display:flex;gap:4px;padding:4px;background:var(--deep);border-radius:5px}.topbar nav button{font-size:15px;min-width:72px;border:0;background:transparent;padding:8px 12px}.topbar nav button:hover,.topbar nav button[aria-expanded=true]{background:var(--forest)}#backpack-toggle{color:var(--brass)}#backpack-toggle:hover{background:var(--forest);color:var(--brass)}
.place{position:absolute;top:calc(max(14px,var(--safe-top)) + 66px);left:max(18px,var(--safe-left));width:min(284px,calc(100% - 36px));padding:11px 13px;background:var(--deep);border-radius:5px;display:flex;flex-direction:column;gap:3px}
.player-identity{display:flex;justify-content:space-between;align-items:baseline;gap:10px;min-width:0}.player-identity strong{font:600 23px Alegreya,Georgia,serif;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-identity #level-label{font-size:13px;white-space:nowrap;color:var(--brass)}#zone-name{font-size:13px;color:var(--muted)}#inn-username{display:none}
#expedition-hud{display:grid;grid-template-columns:auto 1fr;align-items:center;column-gap:9px;row-gap:5px;margin-top:5px}.meter-label{display:flex;justify-content:space-between;gap:7px;font-size:12px;min-width:106px;font-variant-numeric:tabular-nums}.meter-label label{color:var(--muted)}#expedition-hud progress{display:block;width:100%;height:6px;border:0;border-radius:3px;overflow:hidden;background:var(--forest);accent-color:var(--brass)}#expedition-hud progress::-webkit-progress-bar{background:var(--forest)}#expedition-hud progress::-webkit-progress-value{background:var(--brass)}#expedition-hud progress::-moz-progress-bar{background:var(--brass)}#health-bar{accent-color:var(--linen)!important}#health-bar::-webkit-progress-value{background:var(--linen)!important}#health-bar::-moz-progress-bar{background:var(--linen)!important}
#chapter-objective{font-size:14px;line-height:1.35;margin:8px 0 0}#wayfinding{font-size:13px;margin:3px 0 0;font-variant-numeric:tabular-nums;color:var(--brass)}#chapter-badge{font-size:13px;color:var(--brass);margin-top:5px}
.presence{position:absolute;right:max(18px,var(--safe-right));top:calc(max(14px,var(--safe-top)) + 64px);display:flex;flex-direction:column;gap:2px;padding:7px 10px;border-radius:5px;background:var(--deep);text-align:right;font-size:12px;color:var(--muted)}.presence strong{font-size:12px;font-weight:400}
.world-panel{position:absolute;z-index:8;top:calc(max(14px,var(--safe-top)) + 66px);right:max(18px,var(--safe-right));bottom:max(18px,var(--safe-bottom));width:min(390px,calc(100% - max(18px,var(--safe-left)) - max(18px,var(--safe-right))));display:flex;flex-direction:column;max-height:none;background:var(--deep);border-radius:8px;box-shadow:var(--shadow);overflow:hidden}
.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:17px 18px 13px;flex-shrink:0}.panel-heading h2{font-size:27px;line-height:1.1;min-width:0;outline-offset:4px}.panel-heading button{font-size:14px;padding:8px 10px}.panel-scroll{padding:0 18px 24px;overflow:auto;overscroll-behavior:contain;scroll-padding:16px;line-height:1.5}.panel-scroll>p{font-size:15px}.panel-scroll h3{margin:26px 0 12px}.option-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.option-actions button{font-size:14px;min-width:0}.camera-controls{display:grid;grid-template-columns:1fr 1fr;gap:8px}.camera-controls button{font-size:14px}#reset-camera{grid-column:1/-1}
#valley-map{display:block;width:100%;height:auto;background:#b6bd83;border-radius:5px;margin-bottom:15px}
.backpack.world-panel{width:min(430px,calc(100% - max(18px,var(--safe-left)) - max(18px,var(--safe-right))));padding:0}.backpack-scroll{line-height:1.45}.backpack-scroll>section{margin-top:20px;padding-top:20px}.backpack-scroll>.first-improvement{margin-top:0;padding-top:0}.backpack-scroll>.first-improvement h3{margin-top:0}.recipe-row h4{font-size:17px}.chapter-objectives{list-style:none;padding:0;margin:14px 0 0;font-size:14px}.chapter-objectives li{display:flex;justify-content:space-between;gap:15px;padding:7px 0;border-bottom:1px solid var(--forest)}.chapter-objectives strong{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--brass);font-weight:400}.chapter-objectives .goal-done{color:var(--muted)}.chapter-objectives .goal-done strong{color:var(--linen)}
.action-zone{position:absolute;right:max(18px,var(--safe-right));bottom:max(20px,var(--safe-bottom));display:flex;align-items:flex-end;gap:8px;pointer-events:auto}.action-zone button{display:flex;align-items:center;justify-content:center;gap:9px;min-height:54px;padding:11px 16px}.action-zone svg{width:23px;height:23px}.action-zone #attack{background:var(--brass);color:var(--ink);border-color:var(--brass);touch-action:manipulation}.action-zone #attack:disabled{cursor:not-allowed}.action-zone #interact,.portal-prompt button{background:var(--deep)}kbd{font:400 12px Source,system-ui,sans-serif;color:inherit;opacity:.85}.portal-prompt{position:static;width:auto;background:none;padding:0;transform:none;box-shadow:none}
.combat{position:absolute;z-index:2;right:max(18px,var(--safe-right));bottom:calc(max(20px,var(--safe-bottom)) + 70px);width:250px;background:var(--deep);padding:11px 12px;border-radius:6px;pointer-events:auto}.target-picker{display:flex;align-items:center;gap:9px}.target-picker label{font-size:13px;color:var(--muted)}.target-picker select{font-size:14px;padding:7px 8px;min-width:0}.target-state{font-size:13px;line-height:1.35;margin:8px 0;min-height:35px;font-variant-numeric:tabular-nums}.target-state span{display:block}#target-range{color:var(--muted)}#select-target{width:100%;font-size:14px;min-height:44px}
.adventure-feedback{position:absolute;z-index:3;left:50%;transform:translateX(-50%);bottom:calc(max(20px,var(--safe-bottom)) + 14px);width:min(420px,calc(100% - 700px));max-height:140px;overflow:auto;pointer-events:none;font-size:14px;line-height:1.4}.adventure-feedback p{padding:10px 13px;margin:6px 0 0;background:var(--deep);border-radius:6px}.adventure-feedback .feedback-error{color:var(--danger)}
.movement{position:absolute;display:none;left:max(16px,var(--safe-left));bottom:max(16px,var(--safe-bottom));width:112px;pointer-events:none;user-select:none;-webkit-user-select:none}
.joystick{position:relative;width:112px;height:112px;border-radius:50%;background:var(--deep);border:1px solid var(--line);touch-action:none;pointer-events:auto;cursor:grab;--stick-x:0px;--stick-y:0px}.joystick-track{position:absolute;inset:18px;border:1px solid var(--line);border-radius:50%;pointer-events:none}.joystick-knob{position:absolute;left:50%;top:50%;width:44px;height:44px;margin:-22px;background:var(--brass);border-radius:50%;transform:translate(var(--stick-x),var(--stick-y));pointer-events:none}.joystick.is-active{background:var(--forest);border-color:var(--brass)}
.joystick:focus-visible,.panel-heading h2:focus-visible,.recipe-row:focus-visible,.equipment-row:focus-visible,.drop-details summary:focus-visible{outline:3px solid var(--brass);outline-offset:4px}
.walk-hint{position:absolute;left:max(18px,var(--safe-left));bottom:max(20px,var(--safe-bottom));display:flex;flex-direction:column;gap:3px;background:var(--deep);padding:10px 14px;border-radius:5px;font-size:13px;color:var(--muted)}
.chat.world-panel{width:min(390px,calc(100% - 36px));bottom:auto;max-height:calc(100dvh - max(14px,var(--safe-top)) - max(18px,var(--safe-bottom)) - 66px)}#chat-log{overflow:auto;overscroll-behavior:contain;min-height:90px;height:240px;padding:8px 18px;font-size:15px;line-height:1.5;overflow-wrap:anywhere}#chat-log p{margin:0 0 9px}#chat-log strong{color:var(--brass)}#chat-form{display:flex;gap:8px;padding:12px 18px 16px}#chat-form input{font-size:16px;min-width:0}#chat-form button{font-size:14px;padding-inline:10px}#chat-status{font-size:13px;line-height:1.4;color:var(--danger);padding:0 18px 14px;margin:0}#chat-status:empty{display:none}
.adventure-panel-open .action-zone,.adventure-panel-open .combat,.adventure-panel-open .adventure-feedback,.utility-panel-open .action-zone,.utility-panel-open .combat,.utility-panel-open .movement,.utility-panel-open .adventure-feedback{visibility:hidden}
@media(max-width:1100px){.creator{grid-template-columns:minmax(0,1.15fr) minmax(370px,1fr)}.panel-content{padding:32px 27px 24px}h2{font-size:35px}.adventure-feedback{left:auto;right:max(18px,var(--safe-right));top:calc(max(14px,var(--safe-top)) + 116px);bottom:auto;width:250px;transform:none;max-height:120px}}
@media(max-width:760px){.creator{display:block}#stage{height:46dvh;min-height:320px}#wardrobe{height:auto;overflow:visible}#auth{height:auto;min-height:54dvh;overflow:visible}.panel-content{max-width:540px;padding:28px 24px 30px}.auth-content{padding-top:30px;padding-bottom:34px}.auth-content h2{max-width:none}.auth-content .intro{margin-bottom:22px}.auth-modes{margin-bottom:22px}.auth-field input{font-size:16px}.account-line{gap:8px}.brand{top:max(20px,var(--safe-top));left:max(23px,var(--safe-left))}.brand h1{font-size:31px}.brand svg{width:34px}.brand p{font-size:14px}.preview-tools{bottom:16px;padding:2px 7px;gap:7px}.preview-tools span{font-size:13px}h2{font-size:34px}h2 br{display:none}.intro{font-size:16px;margin-bottom:20px}
 .topbar{left:max(12px,var(--safe-left));right:max(12px,var(--safe-right));gap:7px}.world-brand{font-size:22px;padding:9px 10px;white-space:nowrap}.topbar nav{gap:0;padding:3px}.topbar nav button{font-size:13px;min-width:54px;padding:8px}.place{top:calc(max(14px,var(--safe-top)) + 61px);left:max(12px,var(--safe-left));width:min(280px,calc(100% - 24px));padding:9px 11px}.player-identity strong{font-size:21px}#zone-name{font-size:12px}#chapter-objective{font-size:13px;line-height:1.35;margin-top:7px}#wayfinding{font-size:12px}
 .presence{top:auto;bottom:calc(max(16px,var(--safe-bottom)) + 134px);right:max(16px,var(--safe-right));font-size:11px;max-width:145px}.presence strong{font-size:11px}.world-panel,.backpack.world-panel{top:calc(max(14px,var(--safe-top)) + 61px);right:max(12px,var(--safe-right));left:max(12px,var(--safe-left));bottom:max(12px,var(--safe-bottom));width:auto}.panel-heading{padding:14px 16px 12px}.panel-heading h2{font-size:25px}.panel-scroll{padding:0 16px 22px}.chat.world-panel{width:auto;max-height:calc(100dvh - max(14px,var(--safe-top)) - max(12px,var(--safe-bottom)) - 61px)}#chat-log{height:220px}
 .action-zone{right:max(16px,var(--safe-right));bottom:max(16px,var(--safe-bottom));flex-direction:column;gap:8px}.action-zone button{width:72px;min-height:56px;font-size:13px;line-height:1.2;flex-direction:column;gap:3px;padding:8px 5px;overflow-wrap:anywhere}.action-zone #attack{height:64px}.action-zone kbd{display:none}.combat{right:max(16px,var(--safe-right));bottom:calc(max(16px,var(--safe-bottom)) + 82px);width:min(220px,calc(100% - 160px));padding:9px 10px}.combat .target-picker label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.target-picker select{font-size:13px;padding:5px 6px}.target-state{font-size:12px;min-height:30px;margin:5px 0}#select-target{font-size:13px;padding:6px;min-height:44px}.combat~.presence{display:none}
 .adventure-feedback{top:auto;right:auto;left:max(12px,var(--safe-left));bottom:calc(max(16px,var(--safe-bottom)) + 134px);width:min(250px,calc(100% - 172px));max-height:112px;font-size:12px}.adventure-feedback p{padding:8px 10px}.adventure-feedback p:not(:last-child){display:none}
}
@media(pointer:coarse),(max-width:760px){.movement{display:block}.walk-hint{display:none}.action-zone{right:max(16px,var(--safe-right));bottom:max(16px,var(--safe-bottom))}}
@media(max-width:370px){.world-brand{font-size:20px;padding-inline:8px}.topbar nav button{min-width:49px;font-size:12px;padding-inline:6px}.topbar{gap:4px}.place{width:252px}}
@media(max-height:500px){.topbar{top:max(8px,var(--safe-top))}.world-brand{font-size:21px;padding-block:7px}.topbar nav{padding-block:0}.place{top:calc(max(8px,var(--safe-top)) + 55px);width:220px;padding:7px 10px}.player-identity strong{font-size:20px}#zone-name{display:none}#chapter-objective{font-size:12px}#wayfinding{font-size:12px}.meter-label{font-size:11px;min-width:94px}.presence{display:none}.world-panel,.backpack.world-panel{top:calc(max(8px,var(--safe-top)) + 55px);bottom:max(12px,var(--safe-bottom))}.panel-heading{padding-block:10px}.movement,.joystick{width:96px;height:96px}.movement,.action-zone{bottom:max(12px,var(--safe-bottom))}.action-zone button{height:48px;min-height:48px;width:62px}.action-zone #attack{height:58px}.combat{bottom:calc(max(12px,var(--safe-bottom)) + 72px);width:200px}.target-state{font-size:12px;min-height:30px}#select-target{min-height:44px}.adventure-feedback{bottom:max(12px,var(--safe-bottom));left:calc(max(16px,var(--safe-left)) + 112px);width:calc(100% - max(16px,var(--safe-left)) - max(16px,var(--safe-right)) - 360px);max-height:90px;top:auto}.chat.world-panel{max-height:calc(100dvh - max(8px,var(--safe-top)) - max(12px,var(--safe-bottom)) - 55px)}#chat-log{height:130px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
/* Short landscape screens keep action labels inside their touch targets. */
@media(max-height:500px){.action-zone button{width:76px;height:auto;min-height:52px;flex-direction:column;gap:2px;padding:5px 4px;font-size:12px;line-height:1.1;overflow-wrap:anywhere}.action-zone button span{display:block;min-width:0;max-width:100%}.action-zone kbd{display:none}.action-zone button svg{width:18px;height:18px}.action-zone #attack{height:auto;min-height:58px}}

/* Credits are a reading surface; these rules never alter the game overlays. */
.credits-page{min-height:100dvh;overflow:auto}
.credits-content{width:100%;max-width:780px;margin-inline:auto;padding:max(36px,var(--safe-top)) max(24px,var(--safe-right)) max(72px,var(--safe-bottom)) max(24px,var(--safe-left));overflow-wrap:anywhere}
.credits-content h1{max-width:18ch;font-size:clamp(32px,6vw,48px);line-height:1.1;margin:30px 0 24px;text-wrap:balance}
.credits-content h2{max-width:30ch;font-size:26px;line-height:1.15;margin:36px 0 12px}
.credits-content p{max-width:72ch;margin:0 0 18px;font-size:18px;line-height:1.65;color:var(--muted)}
.credits-content a{text-underline-offset:4px;border-radius:3px}
.credits-content a:hover{color:var(--linen)}
.credits-content a:focus-visible{outline:3px solid var(--brass);outline-offset:4px}
.credits-content>a:first-child{display:inline-flex;align-items:center;min-height:44px;font-size:16px}
.credits-content .download-source{display:inline-flex;align-items:center;justify-content:center;max-width:100%;min-height:48px;padding:12px 16px;background:var(--forest);color:var(--linen);border-radius:5px;font-size:16px;font-weight:600;line-height:1.4;text-decoration:none;white-space:normal}
.credits-content .download-source:hover{background:#355e4b;color:var(--linen)}
@media(max-width:560px){.credits-content{padding:max(24px,var(--safe-top)) max(18px,var(--safe-right)) max(56px,var(--safe-bottom)) max(18px,var(--safe-left))}.credits-content p{font-size:16px}.credits-content .download-source{width:100%;padding:14px 16px}}

/* Combat shares one flow-based dock: target, danger, context, then actions. */
.combat-dock{position:absolute;z-index:3;right:max(18px,var(--safe-right));bottom:max(20px,var(--safe-bottom));display:flex;flex-direction:column;gap:8px;width:340px;max-width:calc(100% - 36px);pointer-events:none}
.combat-dock .combat{position:static;width:100%;padding:11px 12px;border-radius:6px;pointer-events:auto}
.combat-dock .adventure-feedback{position:static;inset:auto;transform:none;width:100%;max-height:90px;pointer-events:none}
.target-controls{display:flex;align-items:center;gap:8px}.target-controls .target-picker{flex:1;min-width:0}.target-controls #select-target{flex:0 0 auto;width:auto;min-height:44px;max-width:104px;padding:7px 9px;font-size:13px;line-height:1.2}
.combat-dock .target-state{margin:7px 0 0;min-height:0}
.combat-dock .action-zone{position:static;display:flex;flex-direction:column;align-items:stretch;gap:8px;right:auto;bottom:auto;pointer-events:none}
.context-actions{display:flex;justify-content:flex-end;gap:8px}.context-actions:has(>#portal-prompt[hidden]):has(>#interact[hidden]){display:none}
.combat-dock .context-actions button{width:auto;min-height:44px;height:auto;max-width:100%;padding:9px 13px;flex-direction:row;font-size:14px;line-height:1.3;pointer-events:auto}
.combat-dock .portal-prompt{width:auto;position:static;transform:none}
.combat-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;pointer-events:auto}
.combat-dock .combat-actions button{width:100%;min-width:0;height:68px;min-height:68px;padding:8px 6px;display:flex;flex-direction:column;justify-content:center;gap:3px;font-size:14px;line-height:1.15;overflow-wrap:normal}
.combat-dock .combat-actions #attack{height:68px;min-height:68px;background:var(--brass);color:var(--ink)}
.combat-actions button>span{display:block;max-width:100%}.combat-actions button small{display:block;min-height:14px;margin:0;font-size:12px;line-height:1.15;color:inherit;font-variant-numeric:tabular-nums}.combat-actions button kbd{font-size:12px;line-height:1}
.combat-actions:not(:has(#heavy-attack:not([hidden]))){display:flex;justify-content:flex-end}.combat-actions:not(:has(#heavy-attack:not([hidden]))) #attack{width:104px}
.combat-warning{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:36px;padding:8px 10px;background:var(--deep);border-radius:5px;font-size:13px;line-height:1.25;color:var(--linen);pointer-events:none}.combat-warning strong{font-weight:600;color:var(--brass)}#combat-warning-time{white-space:nowrap;font-variant-numeric:tabular-nums}
.adventure-panel-open .combat-dock,.utility-panel-open .combat-dock,.development-open #inn-ui .combat-dock{visibility:hidden}
@media(max-width:760px),(pointer:coarse){.combat-dock{right:max(16px,var(--safe-right));bottom:max(16px,var(--safe-bottom));width:184px;max-width:calc(100% - max(16px,var(--safe-left)) - max(16px,var(--safe-right)) - 128px)}.combat-dock .combat{padding:8px}.target-controls #select-target{flex-basis:58px;max-width:58px;padding:5px 4px;font-size:12px}.combat-dock .target-picker select{min-height:44px;font-size:13px}.combat-dock .combat-actions button,.combat-dock .combat-actions #attack{height:64px;min-height:64px;padding:7px 3px;font-size:12px;gap:3px}.combat-actions button kbd{display:none}.combat-dock .context-actions button{font-size:13px;min-height:44px}.combat-warning{font-size:12px;padding:8px}.combat-actions:not(:has(#heavy-attack:not([hidden]))) #attack{width:56px}#inn-ui:has(#combat:not([hidden])) .presence{display:none}}
@media(max-width:370px){.combat-dock{width:172px;max-width:calc(100% - max(16px,var(--safe-left)) - max(16px,var(--safe-right)) - 112px)}}
@media(max-height:500px){.combat-dock{bottom:max(12px,var(--safe-bottom));width:244px}.combat-dock .combat-actions button,.combat-dock .combat-actions #attack{height:60px;min-height:60px;font-size:12px;padding:6px 4px}.combat-dock .context-actions button{min-height:44px;height:auto}.combat-dock .target-state{font-size:12px;line-height:1.25}.combat-dock .combat-warning{min-height:34px;padding:7px 8px;font-size:12px}}
@media(max-width:370px) and (max-height:500px){.combat-dock{width:172px}#inn-ui:has(#combat:not([hidden])) #chapter-objective{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}#inn-ui:has(#combat:not([hidden])) #wayfinding{display:none}}
