@font-face{font-family:DW;src:url('/assets/pixel-font.ttf') format('truetype');font-display:swap}
:root{color-scheme:dark;--ink:#f4efe0;--muted:#a3a69c;--line:#30372f;--gold:#c9b479;--topbar-height:40px;--controls-height:56px;font-family:ui-sans-serif,system-ui,sans-serif;background:#000;color:var(--ink)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{overscroll-behavior:none;background:#000}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;border:1px solid var(--line);background:#20261f;border-radius:4px;min-height:42px;padding:9px 14px;touch-action:manipulation}button:hover{filter:brightness(1.15)}button:active{background:#36422f}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid var(--gold);outline-offset:-3px}button:disabled{cursor:default;opacity:.4}
.console{height:100vh;height:100dvh;width:100%;display:grid;grid-template-rows:calc(var(--topbar-height) + env(safe-area-inset-top)) minmax(0,1fr) calc(var(--controls-height) + env(safe-area-inset-bottom));padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
.topbar{display:flex;align-items:center;gap:12px;min-width:0;padding:env(safe-area-inset-top) 8px 0 12px;background:#0d110e}.brand{font-size:11px;letter-spacing:1px;font-weight:750;white-space:nowrap;color:#c9b479}#location{margin-left:auto;min-width:0;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:10px ui-monospace,monospace;color:var(--muted)}.icon-button{flex:none;width:36px;height:36px;min-height:36px;padding:0;border:0;background:none;font-size:21px}
.playfield{min-width:0;min-height:0;display:flex;align-items:center;justify-content:center;background:#000;overflow:hidden;container-type:size}
.game-layout{--stats-height:0px;--compass-height:0px;--hunt-count:0;--hunt-row-height:42px;--hunt-height:calc(var(--hunt-count) * var(--hunt-row-height));width:min(100cqw,calc((100cqh - var(--stats-height) - var(--hunt-height) - var(--compass-height)) * 256 / 240));max-width:100%;flex:none}
.game-layout.has-character{--stats-height:52px}
.screen{width:100%;aspect-ratio:256/240;background:#000;position:relative;overflow:hidden;isolation:isolate;touch-action:auto;container-type:inline-size}
.character-stats{height:var(--stats-height);padding:6px 10px;background:#101710;border-bottom:1px solid #394537;font:12px/18px ui-monospace,monospace;font-variant-numeric:tabular-nums}
.hero-heading{display:flex;align-items:center;gap:12px;color:#c9b479}.hero-heading strong{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#f4efe0;text-transform:uppercase}.hero-heading span{white-space:nowrap}.hero-vitals{display:flex;justify-content:space-between;gap:12px;color:#b9c7b2}.hero-vitals b{color:#f4efe0}.hero-vitals .low-health,.hero-vitals .low-health b{color:#ffad79}
.hunt-tracker{background:#101710;box-shadow:inset 0 1px #394537}
.hunt-row{height:var(--hunt-row-height);display:grid;grid-template-columns:24px minmax(0,1fr) auto;grid-template-rows:16px 14px;gap:1px 6px;align-items:center;padding:5px 10px;border-bottom:1px solid #2c382a;font:11px/14px ui-sans-serif,system-ui,sans-serif;font-variant-numeric:tabular-nums}
.hunt-number,.hunt-progress{font-weight:750;color:#e2cc8f}.hunt-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#eceddf}.hunt-status{grid-column:2/4;white-space:nowrap;font-size:10px;color:#a5b09f}.targets-here .hunt-status{color:#c0dfa6}.hunt-complete .hunt-status{color:#e2cc8f}
canvas{display:block;width:100%;height:100%;image-rendering:pixelated;touch-action:none;outline:none}
.controller{background:#101510;border-top:1px solid #30372f;padding:5px 8px calc(6px + env(safe-area-inset-bottom));user-select:none}.control-buttons{height:44px;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;max-width:600px;margin:auto}.control-buttons button{height:44px;min-height:44px;min-width:0;padding:0 4px;font-size:11px;letter-spacing:.5px;font-weight:750}.control-buttons .action-button{background:#35442c;border-color:#687d4d;color:#f0e6c1}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.welcome{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(#020706ed,#0b1417d9);z-index:4;text-align:center;color:var(--ink);padding:5%}.title-rule{height:2px;width:38px;background:var(--gold);margin-bottom:5%}.eyebrow{font:9px ui-monospace,monospace;letter-spacing:3px;margin:0 0 6%}h1{font-family:Georgia,serif;font-size:clamp(28px,6vw,62px);line-height:.95;letter-spacing:3px;color:#d5c897;margin:0;text-shadow:2px 3px #4c553c}h1 span{font-size:1.19em;letter-spacing:1px}.title-sub{font-family:ui-monospace,monospace;font-size:clamp(9px,1.6vw,13px);line-height:1.8;color:#a6b4a5;margin:5% 0}.start-buttons{display:grid;gap:8px;width:75%;max-width:295px}.start-buttons button{background:#c1b687;color:#151c16;border:1px solid #e3dcb5;font-weight:750;font-size:clamp(11px,2vw,15px);min-height:37px}.start-buttons button+button{background:transparent;color:#bfc5b5;border-color:#65715b}.welcome-foot{font-size:7px;letter-spacing:1.1px;color:#7e917b;margin:6% 0 0}.game-panel{position:absolute;background:#020303;color:#fff;border:3px solid #f2f1e5;border-radius:4px;z-index:5;box-shadow:0 0 0 2px #040504;font-family:DW,ui-monospace,monospace;font-size:clamp(10px,2.2vw,17px);line-height:1.75;padding:12px 15px}.game-panel h2{font:inherit;font-size:.8em;letter-spacing:1px;line-height:1;margin:0 0 12px;color:#c4bf9d}.dialog-panel{bottom:4%;left:4%;width:92%;max-height:55%;overflow:auto}.dialog-panel p{margin:0;white-space:pre-line}.dialog-panel button{display:block;font:inherit;font-size:.7em;border:0;background:none;margin-left:auto;padding:5px 0 0;min-height:28px;color:#b5c6a4}.dialog-panel button span{margin-left:12px}.menu-panel{top:5%;right:5%;width:64%;max-height:90%;overflow:auto}.menu-panel.wide{left:4%;right:4%;width:92%}#menu-options{display:grid;grid-template-columns:1fr;gap:3px}#menu-options.two-columns{grid-template-columns:1fr 1fr}.menu-panel button{font:inherit;font-size:.85em;line-height:1.6;background:none;border:0;border-radius:0;text-align:left;padding:5px 2px;min-height:30px}.menu-panel button.selected{background:#2a3a27;color:#f2e7ba}.menu-panel button small{font-size:.75em;display:block;color:#9cba91}.menu-panel .back-button{font-size:.65em;color:#b7b9aa;margin-top:9px;border-top:1px solid #4a4c42;width:100%}.toast{position:absolute;bottom:6%;left:7%;right:7%;padding:10px;text-align:center;background:#101c15f5;color:#e8e5c9;border:1px solid #899577;z-index:6;font-size:12px}.loading{position:absolute;inset:0;display:grid;place-items:center;background:#08120c;color:#e0d7b7;font:13px ui-monospace,monospace;z-index:10}.loading.failed{padding:24px;white-space:pre-wrap;line-height:2}.loading[hidden],*[hidden]{display:none!important}
dialog{color:#e8e8d9;background:#1d251e;border:1px solid #626d55;border-radius:10px;padding:22px;width:min(92vw,620px);max-height:85dvh;overflow:auto;box-shadow:0 16px 90px #000b}dialog::backdrop{background:#000b;backdrop-filter:blur(3px)}.overlay-header{display:flex;justify-content:space-between;align-items:center;gap:10px;border-bottom:1px solid #414b3b;padding-bottom:12px;margin-bottom:17px}.overlay-header h2{margin:0;font-family:Georgia,serif;font-size:25px}.overlay-header button{border:0;background:none;font-size:20px;padding:0;width:35px}#overlay-body{font-size:14px;line-height:1.7}#overlay-body p{color:#bfc9b8}#overlay-body a{color:#ded29e}#overlay-body label{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:11px 0}#overlay-body input:not([type=checkbox]),#overlay-body select{font:inherit;background:#111b12;color:#f1efdb;border:1px solid #677156;padding:9px;border-radius:4px;max-width:55%}#overlay-body input[type=checkbox]{width:20px;height:20px;accent-color:#c3b87a}#overlay-body .buttons{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}#overlay-body .danger{color:#eca79e}#overlay-body table{width:100%;border-collapse:collapse;font-size:12px}#overlay-body td,#overlay-body th{border-bottom:1px solid #47513e;padding:8px;text-align:left;vertical-align:top}.map-canvas{width:100%;height:auto;image-rendering:pixelated;border:1px solid #57654b}.key{color:#e2d5a4}.notes{font-size:12px;color:#aab29e}.name-input{width:100%;max-width:none!important;font-size:22px!important}.new-submit{width:100%;margin:18px 0 0;background:#b8ab7b;color:#151e14;font-weight:700}

.game-panel{font-size:clamp(10px,2.7cqw,17px);touch-action:pan-y;overscroll-behavior:contain}
.screen.in-battle .menu-panel{top:auto;bottom:4%;right:5%;width:61%;max-height:56%}.screen.in-battle .menu-panel.wide{left:4%;right:4%;width:92%;max-height:77%}.screen.in-battle .dialog-panel{max-height:39%}
@media(max-width:520px){.topbar{gap:8px}.brand{font-size:10px;letter-spacing:.6px}#location{font-size:9px}.game-panel{padding:9px 10px;line-height:1.7;border-width:2px}.game-panel h2{margin-bottom:8px}.eyebrow{font-size:7px;letter-spacing:2px}.welcome-foot{font-size:6px;letter-spacing:.6px}.menu-panel button{min-height:30px}.dialog-panel button{min-height:30px}}
@media(max-height:500px) and (orientation:landscape){:root{--topbar-height:32px}.icon-button{height:30px;min-height:30px}.game-panel{padding:7px 9px;border-width:2px;line-height:1.5}.game-panel h2{margin-bottom:7px}.menu-panel button{min-height:27px;padding:3px 2px}.welcome .title-rule,.welcome .eyebrow,.welcome .title-sub{display:none}.welcome h1{font-size:clamp(22px,8cqw,42px);margin-bottom:5%}.welcome-foot{font-size:5px;margin-top:4%;letter-spacing:.5px}.start-buttons{gap:5px}.start-buttons button{min-height:32px;padding:5px 8px;font-size:11px}}

.battle-ui{position:absolute;left:3%;right:3%;bottom:3%;height:36%;z-index:4;display:flex;flex-direction:column;padding:8px 10px;gap:5px;background:#0b1414f5;color:#edf1e2;border:1px solid #85977b;border-radius:5px;touch-action:pan-y}.battle-log-heading{display:flex;justify-content:space-between;gap:8px;font:600 clamp(8px,1.7cqw,12px) ui-monospace,monospace;letter-spacing:.5px;color:#b0bca6}.battle-log-heading span{color:#dfc884}.battle-log{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;font:clamp(10px,2.5cqw,18px)/1.5 ui-sans-serif,system-ui,sans-serif;scrollbar-width:thin}.battle-log p{white-space:pre-line;margin:0 0 7px;color:#9daaa1}.battle-log p:last-child{color:#f5f1db}.battle-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;flex:none}.battle-actions button{min-width:0;min-height:36px;padding:6px 2px;font-size:clamp(10px,2.4cqw,16px);font-weight:700;background:#263b2e;border-color:#62745b}.battle-actions button:disabled{opacity:.45}.screen.in-battle .menu-panel{z-index:7;background:#030806;max-height:60%;width:90%;left:5%;right:5%}.screen.in-battle .menu-panel.wide{max-height:70%}.screen.in-battle .dialog-panel{z-index:8}
@media(max-height:500px) and (orientation:landscape){.battle-ui{padding:4px 6px;gap:2px;height:39%}.battle-actions button{min-height:27px;padding:3px 1px}.battle-log{font-size:10px}.battle-log-heading{font-size:7px}}

.server-save-link{margin-top:8px;min-height:37px;padding:7px 14px;border:1px solid #a08f61;background:#283222;font-size:clamp(10px,2.2cqw,14px);color:#d8c990}.save-choice{padding:12px;border:1px solid #627056;border-radius:5px;margin:12px 0}.save-choice h3{margin:0 0 8px;font-size:15px}.save-choice p{margin:5px 0}.save-choice button{width:100%;margin-top:8px}.server-signin{display:inline-block;padding:10px 14px;border:1px solid #c9b479;border-radius:4px;text-decoration:none;color:#f1e3aa!important}.server-save-link:disabled{opacity:.6}

@media(max-height:500px) and (orientation:landscape){.game-layout{--hunt-row-height:22px}.game-layout.has-character{--stats-height:36px}.character-stats{padding:2px 8px;font-size:10px;line-height:16px}.hunt-row{padding:2px 8px;grid-template-rows:1fr;gap:0 5px;grid-template-columns:20px minmax(0,1fr) auto;font-size:10px}.hunt-name{display:none}.hunt-status{grid-column:2;grid-row:1;font-size:9px;overflow:hidden;text-overflow:ellipsis}.hunt-progress{grid-column:3;grid-row:1}}

/* Trackers remain outside the playfield and open the matching journal entry. */
.hunt-row{width:100%;min-height:0;border:0;border-bottom:1px solid #2c382a;border-radius:0;background:transparent;text-align:left;letter-spacing:normal}.trail-row{background:#102026}.trail-row .hunt-number,.trail-row .hunt-progress{color:#9ce1e8}.trail-row .hunt-status{color:#b1d1d4}.hunt-status{overflow:hidden;text-overflow:ellipsis}.map-landmark{border-left:2px solid #83c8d0;padding-left:12px}

.game-layout.has-compass{--compass-height:46px}.quest-compass{height:var(--compass-height);min-height:0;width:100%;display:flex;align-items:center;gap:10px;border:0;border-bottom:1px solid #504359;border-radius:0;padding:5px 10px;background:#1e1827;text-align:left}.quest-arrow{font:26px/1 ui-sans-serif,system-ui,sans-serif;color:#e1b0f3;flex:none;width:28px;text-align:center}.quest-copy{display:flex;flex:1;min-width:0;flex-direction:column;gap:2px;font:600 11px/15px ui-sans-serif,system-ui,sans-serif;color:#f0dbf8}.quest-copy>span,.quest-copy small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quest-copy small{font-size:10px;font-weight:400;color:#c6b9cc}.quest-help{color:#d7b8e3;font-size:23px}.main-map-note{padding:10px;border-left:3px solid #d494ed;background:#292030}
@media(max-height:500px) and (orientation:landscape){.game-layout.has-compass{--compass-height:32px}.quest-compass{padding:2px 7px;gap:4px}.quest-arrow{font-size:20px;width:22px}.quest-copy{font-size:9px;line-height:12px;gap:0}.quest-copy small{font-size:8px}}

/* The chess board is a separate, resumable tavern activity. */
dialog.chess-mode{width:min(96vw,540px);padding:12px;max-height:94dvh}.chess-mode .overlay-header{margin-bottom:10px;padding-bottom:8px}.chess-mode .overlay-header h2{font-size:22px}.chess-intro{display:flex;flex-wrap:wrap;justify-content:space-between;gap:3px 12px;line-height:1.4;font-size:12px}.chess-intro strong{color:#e8cafa}.chess-intro span{color:#c0c7ba}.chess-status{min-height:24px;margin:7px 0!important;font-weight:650;color:#f1e4bf!important}.chess-board{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));width:100%;aspect-ratio:1;border:2px solid #bcb091;touch-action:manipulation}.chess-square{position:relative;border:0;border-radius:0;min-width:0;min-height:0;padding:2px;aspect-ratio:1;display:grid;place-items:center}.chess-square.light{background:#c9bfa6}.chess-square.dark{background:#657967}.chess-square:disabled{opacity:1;cursor:default}.chess-square:hover{filter:brightness(1.06)}.chess-square svg{width:100%;height:100%;max-height:60px;pointer-events:none}.chess-square small{position:absolute;font:600 9px/1 ui-monospace,monospace;color:#29352a;pointer-events:none}.chess-file{bottom:2px;right:3px}.chess-rank{top:2px;left:3px}.chess-square.selected{box-shadow:inset 0 0 0 3px #edc859;background:#adb981}.chess-square.legal:after{content:'';position:absolute;width:24%;height:24%;border-radius:50%;background:#263e54a8;box-shadow:0 0 0 2px #f1ddad99;pointer-events:none}.chess-square.legal:has(svg):after{width:86%;height:86%;background:none;border:3px solid #6b243f}.chess-square.hint-square{box-shadow:inset 0 0 0 3px #7b3e9c}.chess-controls,.chess-promotion{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.chess-controls button{font-size:12px;flex:1 1 42%;min-height:40px;padding:7px}.chess-promotion strong{width:100%}.chess-promotion button{font-size:12px;text-transform:capitalize}.chess-meta{font-size:11px;line-height:1.5;margin:9px 0}.chess-hint{padding:8px;background:#382c40;border-left:3px solid #c596df;font-size:12px}.chess-history{font-size:12px}.chess-history summary{cursor:pointer}.chess-history p{overflow-wrap:anywhere}.map-info{border:1px solid #687e66;padding:10px;margin:12px 0;background:#111d17}.map-info strong{color:#f2db9d}.map-info p{margin:4px 0 10px}.map-place-list{margin:10px 0}.map-place-list summary{cursor:pointer;padding:8px 0}.map-place-list button{width:100%;text-align:left;margin:4px 0}.map-canvas{touch-action:pan-y}

.overlay-notice{position:sticky;top:0;z-index:3;background:#344b32;border:1px solid #b5c58a;border-radius:5px;padding:12px;margin:0 0 14px;font:600 14px/1.6 ui-sans-serif,system-ui,sans-serif;box-shadow:0 4px 15px #0005}.save-connection{border:1px solid #6a7862;border-left:4px solid #c4b47e;border-radius:5px;padding:12px;background:#111b13;margin-bottom:14px}.save-connection strong{font-size:15px;color:#ecdfb4}.save-connection p{margin:6px 0 0!important;font-size:13px;line-height:1.6}.save-connection[data-state=confirmed]{border-color:#98bf82}.save-connection[data-state=confirmed] strong{color:#c7edb2}.save-connection[data-state=offline],.save-connection[data-state=conflict]{border-color:#d9a379}.save-connection .last-server-save{font-weight:700;color:#e5e8c9!important}.save-connection .device-save-note{font-size:12px;color:#adbdad!important}

.server-connection-status{font-size:clamp(9px,2cqw,12px);color:#b4bea8;margin-top:5px;line-height:1.3}.server-empty{padding:12px;border-left:3px solid #c9b479;background:#2b2d1e}

@media(max-width:520px){.control-buttons{gap:4px}.control-buttons button{padding:0 2px;font-size:10px;letter-spacing:.3px}}

/* Wide screens give the playfield the full available height. The phone DOM is restored on resize. */
.console.desktop-mode{grid-template-columns:minmax(0,1fr) clamp(250px,24vw,320px);grid-template-rows:calc(var(--topbar-height) + env(safe-area-inset-top)) minmax(0,1fr)}
.desktop-mode .topbar{grid-column:1/-1}.desktop-mode .playfield{grid-column:1;grid-row:2;padding:10px;container-type:size}
.desktop-mode .game-layout{width:min(100cqw,calc(100cqh * 256 / 240));max-width:100%}
.desktop-sidebar{grid-column:2;grid-row:2;min-width:0;min-height:0;display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;background:#111812;border-left:1px solid #384433;padding:18px 14px 12px;gap:14px;scrollbar-width:thin}
.sidebar-heading{font-size:11px;font-weight:750;letter-spacing:2px;color:#c9b479}.desktop-sidebar .character-stats{height:auto;min-height:86px;padding:14px 12px;border:1px solid #3d4b35;border-radius:6px;font-size:13px;line-height:24px}.desktop-sidebar .hero-heading{flex-wrap:wrap;gap:0 12px}.desktop-sidebar .hero-heading strong{flex-basis:100%;font-size:17px;letter-spacing:.6px}.desktop-sidebar .hero-vitals{gap:6px}
.desktop-sidebar .quest-compass{height:auto;min-height:82px;flex:none;border:1px solid #574561;border-radius:6px;padding:12px 8px}.desktop-sidebar .quest-copy{font-size:12px;line-height:18px;gap:5px}.desktop-sidebar .quest-copy>span,.desktop-sidebar .quest-copy small{white-space:normal;overflow:visible}.desktop-sidebar .quest-copy small{font-size:11px}.desktop-sidebar .quest-help{display:none}.desktop-sidebar .quest-arrow{font-size:25px;width:26px}
.desktop-sidebar .hunt-tracker{border:1px solid #394537;border-radius:6px;overflow:hidden;flex:none}.desktop-sidebar .hunt-row{height:auto;min-height:72px;padding:10px;grid-template-columns:24px minmax(0,1fr) auto;grid-template-rows:auto auto;gap:4px 6px;font-size:12px}.desktop-sidebar .hunt-name{display:block;white-space:normal;overflow:visible}.desktop-sidebar .hunt-status{grid-column:2/4;grid-row:2;font-size:11px;white-space:normal}.desktop-sidebar .hunt-progress{grid-column:3;grid-row:1}.desktop-help{font-size:11px;line-height:1.8;color:#a6b49b;margin:0}
.desktop-sidebar .controller{margin-top:auto;padding:12px 0 0;border-top:1px solid #384433;background:none;flex:none}.desktop-sidebar .control-buttons{height:auto;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.desktop-sidebar .control-buttons button{height:44px;font-size:12px}
dialog.map-mode{width:min(96vw,980px);padding:18px}.map-toolbar{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px}.map-toolbar button{min-height:36px;padding:6px 12px;font-size:12px}.map-toolbar button[aria-pressed=true]{background:#405132;border-color:#aabf82;color:#f4efcc}.map-viewport{overflow:auto;max-height:63dvh;background:#080e0c;border:1px solid #68765d;overscroll-behavior:contain;touch-action:pan-x pan-y;scrollbar-width:thin}.map-viewport .map-canvas{display:block;width:100%;max-width:none;height:auto;border:0;touch-action:pan-x pan-y;image-rendering:pixelated}.map-mode .map-info{margin-top:10px}
.volume-control{display:flex;align-items:center;gap:10px;max-width:60%;flex:1}.volume-control output{min-width:35px;text-align:right;font-variant-numeric:tabular-nums}#overlay-body .volume-control input[type=range]{max-width:none;min-width:40px;width:100%;padding:0;accent-color:#c9b479}

.desktop-sidebar{padding:14px 12px 12px;gap:10px}.desktop-sidebar .character-stats,.desktop-help{flex:none}.desktop-sidebar .hunt-tracker{min-height:72px;flex:0 1 auto;overflow-y:auto;scrollbar-width:thin}@media(max-height:800px){.desktop-mode .desktop-help{display:none}}
/* Chess: clear square orientation, carved pieces, and persistent last-move markers. */
dialog.chess-mode{width:min(96vw,620px)}
.chess-square svg{max-height:none;filter:drop-shadow(0 1px 1px #101b1a44)}
.chess-square.last-from{background-image:linear-gradient(#f6cc626b,#f6cc626b)}
.chess-square.last-to{background-image:linear-gradient(#ffd44db0,#ffd44db0)}
.chess-square.last-from:before,.chess-square.last-to:before{content:'';position:absolute;inset:2px;border:2px dashed #765817;pointer-events:none}
.chess-square.last-to:before{border-style:solid}
.chess-last-move{padding:8px 10px;margin:8px 0!important;border-left:3px solid #e7bf62;background:#282a20;color:#f4e0a4!important;font-size:12px;line-height:1.5;min-height:35px}
.chess-ladder-status{padding:9px 10px;border:1px solid #8a7298;background:#292333;font-size:12px;line-height:1.5;color:#eddbf6!important}
.chess-resign-note{flex-basis:100%;font-size:12px;line-height:1.4;color:#f1c2a7!important;margin:0!important}
.chess-square:focus-visible{outline:3px solid #8c3ab0;outline-offset:-3px;z-index:1}

/* One 32px strip; extra captures scroll sideways on small screens, never wrap. */
.chess-material{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0 0 5px;padding:3px 6px;background:#18221c;border:1px solid #485747;border-radius:5px;font-size:11px;line-height:1.2}
.chess-material-row{display:grid;grid-template-columns:auto minmax(0,1fr) 3ch;gap:5px;align-items:center;min-width:0;height:24px}
.chess-material-row+.chess-material-row{border-left:1px solid #485747;padding-left:8px}
.chess-material-name{font-size:11px;font-weight:600;max-width:7ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#ece6d6}
.chess-captures{display:flex;flex-wrap:nowrap;align-items:center;gap:3px;min-width:0;height:24px;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:#68785b transparent;overscroll-behavior-x:contain}
.chess-captured-piece{display:inline-flex;flex:none;align-items:center;gap:0;white-space:nowrap;font-size:10px;font-variant-numeric:tabular-nums;color:#d7dccd}
.chess-captured-piece svg{display:block;width:18px;height:20px;flex:none;background:#b8b9a4;border-radius:2px}
.chess-captures-empty{font-size:10px;color:#b2bcae}
.chess-material-score{text-align:right;font-size:12px;font-variant-numeric:tabular-nums;color:#b9c7b2}
.chess-material-score[data-balance=ahead]{color:#e7cd83}.chess-material-score[data-balance=behind]{color:#edaea0}
@media(max-width:380px){.chess-material{gap:5px;padding-inline:4px}.chess-material-row{gap:3px}.chess-material-row+.chess-material-row{padding-left:5px}.chess-material-name{font-size:10px}.chess-captures{gap:2px}}

.chess-practice-rating{font-size:12px;color:#d7c3e8!important;margin:8px 0!important}.chess-square svg{overflow:visible}

/* Keep promotion choices on the board, including in short mobile viewports. */
.chess-board-area{position:relative;isolation:isolate}
.chess-promotion-shade{position:absolute;inset:0;z-index:3;background:#101912a8;display:grid;place-items:center;padding:8px}
.chess-promotion{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:min(100%,350px);gap:8px;margin:0;padding:14px;background:#202c22;border:2px solid #e4ca87;border-radius:12px;box-shadow:0 6px 30px #0009;text-align:center}
.chess-promotion strong,.chess-promotion-move,.chess-promotion-cancel{grid-column:1/-1}
.chess-promotion strong{font-size:18px;color:#ffe6a6}.chess-promotion-move{font-size:12px;color:#e2ddcd}
.chess-promotion button{min-width:0;min-height:44px;padding:5px;font-size:12px}.chess-promotion button svg{display:block;width:100%;height:54px;pointer-events:none}
.chess-promotion button:focus-visible{outline:3px solid #efd185;outline-offset:2px}

/* Keep the quest and city key beside the full map on desktop, below it on phones. */
dialog.map-mode{width:min(97vw,1280px);max-height:94dvh;padding:18px}
.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:16px;align-items:start}
.map-viewport{height:min(65dvh,760px);max-height:none;min-width:0;scrollbar-gutter:stable}
.map-viewport .map-canvas{margin:0 auto;max-width:none}
.map-sidebar{min-width:0;max-height:min(65dvh,760px);overflow:auto;scrollbar-width:thin;padding-right:4px;font-size:12px;line-height:1.5}
.map-next-quest{display:flex;flex-direction:column;gap:6px;padding:12px;background:#332c17;border:2px solid #ffd45c;border-radius:6px}
.map-section-label{font-size:10px;font-weight:800;letter-spacing:1.1px;color:#ffd45c}.map-next-quest strong{font-size:16px;line-height:1.3;color:#fff0ba}.map-quest-destination{color:#ffe497;font-weight:650}
.map-next-quest p{margin:0!important}.map-focus-quest{border-color:#d4ad4a;color:#ffe69a;font-size:12px;min-height:40px}
.map-quest-passage{color:#ffd3a3;font-size:12px;font-weight:650}.map-focus-route{border-color:#ffb86b;color:#ffdbb4;font-size:12px;min-height:40px}.map-symbol.map-symbol-route{border:3px solid #ffb86b}.map-sidebar .map-focus-route[aria-pressed=true]{background:#56361e;border-color:#ffb86b;box-shadow:inset 3px 0 #ffb86b;color:#ffe5c9}
.map-symbol.map-symbol-path{height:0;border:0;border-top:3px dotted #ffd45c}
.map-legend{display:grid;grid-template-columns:1fr 1fr;gap:7px 8px;margin:14px 0}.map-legend-item{display:flex;align-items:center;gap:7px;font-size:10px;line-height:1.3}
.map-symbol{display:inline-block;flex:none;width:14px;height:14px;border:2px solid #fff}.map-symbol-quest{border:3px solid #ffd45c}.map-symbol-selected{border-color:#8be9ff}.map-symbol-hero{border-radius:50%;border-color:#ff4250}.map-symbol-hunt{background:#ffdb7840;border-color:#f3cc8088}.map-symbol-trail{width:11px;height:11px;background:#8ce3ed;border:0;transform:rotate(45deg);margin:1px}
.map-city-list h3{margin:8px 0 2px;font-size:14px}.map-city-list p{font-size:11px;margin:0 0 6px!important}
.map-city-list button,.map-place-list button{display:block;width:100%;text-align:left;min-height:38px;font-size:12px;padding:7px 10px;margin:4px 0}
.map-sidebar button[aria-pressed=true]{background:#23464a;border-color:#8be9ff;box-shadow:inset 3px 0 #8be9ff;color:#e2fcff}.map-sidebar .map-focus-quest[aria-pressed=true]{background:#51441d;border-color:#ffd45c;box-shadow:inset 3px 0 #ffd45c;color:#fff1b9}
.map-sidebar .map-info{margin:10px 0;font-size:12px;border-color:#518087}.map-sidebar .map-info p:last-child{margin-bottom:0}
.map-notes{font-size:12px;margin-top:12px}.map-notes summary{padding:7px 0;cursor:pointer}.map-notes .main-map-note{border-color:#ffd45c;background:#332c17}
@media(max-width:760px){dialog.map-mode{padding:12px}.map-layout{grid-template-columns:minmax(0,1fr);gap:12px}.map-viewport{height: min(62dvh,90vw)}.map-sidebar{max-height:none;overflow:visible;padding:0}.map-city-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 8px}.map-city-list h3,.map-city-list p{grid-column:1/-1}.map-city-list button{margin:0}.map-legend{grid-template-columns:repeat(3,minmax(0,1fr))}.map-toolbar{gap:5px}.map-toolbar button{padding:6px 9px}}

/* Share one compact quest panel between the desktop sidebar and phone compass. */
.quest-guidance{height:var(--compass-height);display:flex;align-items:stretch;background:#1e1827;border-bottom:1px solid #504359;min-width:0}
.quest-guidance .quest-compass{height:100%;flex:1;min-width:0;border:0}
 .quest-path-control{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:116px;padding:4px 6px;border:0;border-left:1px solid #504359;border-radius:0;background:#292030;flex:none;font:600 10px/12px ui-sans-serif,system-ui,sans-serif;color:#e9d39a;touch-action:manipulation}
.quest-path-control>span{white-space:nowrap}.quest-path-control small{font-size:9px;line-height:11px;font-weight:400;color:#d8c9df}.quest-path-control.path-active{opacity:1;background:#27291e;color:#e1d293}
.desktop-sidebar .quest-guidance{height:auto;flex:none;flex-direction:column;border:1px solid #574561;border-radius:6px;overflow:hidden}
.desktop-sidebar .quest-guidance .quest-compass{height:auto;min-height:72px;border-radius:0}
.desktop-sidebar .quest-path-control{flex-direction:row;justify-content:space-between;gap:8px;width:100%;min-height:36px;padding:7px 12px;border-left:0;border-top:1px solid #504359;font-size:11px}.desktop-sidebar .quest-path-control small{font-size:10px;text-align:right}
@media(max-height:500px) and (orientation:landscape){.quest-path-control{gap:0;padding:1px 5px;font-size:9px;line-height:10px;min-height:0}.quest-path-control small{font-size:8px;line-height:9px}}

#menu-options button[data-tone]{border-left-width:5px}#menu-options button[data-tone="green"]{border-left-color:#8fda86;background:#172a1c}#menu-options button[data-tone="yellow"]{border-left-color:#f4d875;background:#2c2718}#menu-options button[data-tone="black"]{border-left-color:#aaa3b7;background:#15131b}
