/* Discoverable scenery: no persistent button boxes or markers. */
.scene-target,.scene-target:hover,.scene-target:focus{background:transparent;border:0;border-radius:0;box-shadow:none;padding:0;min-width:32px;min-height:32px;opacity:1}
.scene-target:before{content:none}.scene-target{transform:translate(-50%,-50%)}
.target-label{position:absolute;left:50%;bottom:0;transform:translate(-50%,100%);opacity:0;pointer-events:none;background:#09151dea;color:#ead7ac;border-radius:3px;padding:5px 9px;font-size:12px;white-space:nowrap;transition:opacity .15s}
.scene-target:hover .target-label,.scene-target:focus-visible .target-label,.scene-target.revealed .target-label,.scene-target.touch-revealed .target-label{opacity:1}
.scene-target:focus-visible{outline:1px dashed #e5bb7499;outline-offset:-5px}
.exit-target .target-label{bottom:45%;max-width:140px;white-space:normal}.exit-target{min-height:44px}
.exit-target[style*="left: 5%"] .target-label{left:5%;transform:none;text-align:left}
.exit-target[style*="left: 95%"] .target-label{left:auto;right:5%;transform:none;text-align:right}
#scene-caption{pointer-events:none}.scene-caption{padding:8px 18px;font-size:11px}
@media(hover:none){.scene-target:hover .target-label{opacity:0}.scene-target.touch-revealed .target-label,.scene-target.revealed .target-label{opacity:1}}

/* The chart preserves the picture's proportions at every viewport size. */
#sea-map{width:min(1020px,calc(100% - 20px));max-height:94dvh;padding:20px;background:#081923;border-color:#b39760}
.chart-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.chart-heading h2{margin:8px 0 16px}.chart-heading button{font-size:26px;align-self:flex-start;padding:2px 12px}.chart-surface{position:relative;aspect-ratio:3/2;isolation:isolate;overflow:hidden;border:1px solid #8c784d}.chart-surface>img{display:block;width:100%;height:100%;object-fit:cover}.chart-routes{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#chart-course{fill:none;stroke:#e5bb7480;stroke-width:.3;stroke-dasharray:1 1}#chart-wake{fill:none;stroke:#fff1c9;stroke-width:.4;stroke-linecap:round;stroke-linejoin:round}.chart-island{position:absolute;transform:translate(-50%,-35%);min-height:44px;padding:5px 10px;background:#081923eb;border-color:#e5bb74;color:#ffe4ad;font-family:Georgia,serif;font-size:18px;white-space:nowrap;box-shadow:0 2px 12px #0009}.chart-island small{display:block;font:12px Arial,sans-serif;color:#badbd8;margin-top:3px}.chart-island.current{border-color:#b1f2dc;background:#173b40}.chart-island.locked{border-style:dashed;border-color:#9ba7a5;color:#c8cdcb}.chart-island:disabled{opacity:.8}#chart-boat{position:absolute;transform:translate(-50%,-50%);font-size:34px;line-height:1;filter:drop-shadow(0 3px 3px #000);pointer-events:none;z-index:2}.chart-footer{display:flex;align-items:center;gap:16px;justify-content:space-between;min-height:64px}#chart-status{font-size:16px;line-height:1.4;margin:12px 0;color:#f4dfb3}#chart-skip{white-space:nowrap}.chart-note{font-size:14px;line-height:1.5;color:#a5b9c2;margin:0}#chart-skip[hidden]{display:none}
@media(max-width:600px){#sea-map{padding:12px}.chart-heading h2{font-size:23px}.chart-island{font-size:14px;padding:4px 7px}.chart-island small{font-size:11px}#chart-boat{font-size:26px}.chart-footer{gap:8px}#chart-status{font-size:14px}.chart-island:last-child{white-space:normal;width:100px;text-align:center}}

:root{color-scheme:dark;--bg:#000;--panel:#100a18;--line:#53315c;--mint:#e5b9ed;--gold:#edcf94;--text:#f4eaf7;--muted:#b9a6c2;--verb:#ba69c8;--viewport-height:100dvh}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#000;color:var(--text);font:16px Arial,sans-serif}button,input,select{font:inherit}button{cursor:pointer;color:var(--text);background:#21132a;border:1px solid var(--line);border-radius:2px;padding:9px 14px}button:hover{color:#fff;background:#3a2145}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #f5da96;outline-offset:2px}button:disabled{opacity:.35;cursor:default}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.game-screen{height:var(--viewport-height);max-width:1600px;width:100%;margin:auto;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);display:grid;grid-template-rows:minmax(0,1fr) clamp(164px,27dvh,238px);overflow:hidden;background:#000}.scene-viewport{min-width:0;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden}.scene{position:relative;flex:none;aspect-ratio:3/2;max-width:100%;max-height:100%;background:#122431 url('scenes-walking.png') 0 0/200% 300%;overflow:hidden;image-rendering:pixelated;cursor:crosshair;isolation:isolate;touch-action:manipulation}#scene-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;image-rendering:pixelated}#alexios{position:absolute;aspect-ratio:384/1024;height:30%;width:auto;transform:translate(-50%,-81.15%);pointer-events:none;z-index:3;filter:drop-shadow(1px 2px 1px #06101a55)}.actor-sprite{width:100%;height:100%;background:url('alexios-walk.png') 0 0/400% 100% no-repeat;image-rendering:pixelated;transform:scaleX(var(--facing,1))}.hotspot{position:absolute;z-index:5;cursor:pointer}.scene:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}#walk-marker{position:absolute;display:none;width:18px;height:8px;border:1px solid #efcc84;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:2}.scene-meta{position:absolute;top:0;left:0;right:0;pointer-events:none;padding:8px 12px;background:linear-gradient(#0009,transparent);z-index:6}.scene-meta h1{margin:0;color:#f0deb6;font:14px Georgia,serif;text-shadow:1px 2px #000}.game-subtitle{position:absolute;top:12%;left:7%;width:86%;z-index:6;pointer-events:none;opacity:0;transition:opacity .2s;text-align:center}.game-subtitle.visible{opacity:1}.game-subtitle p{display:inline;background:#000c;color:#f9e5ac;text-shadow:1px 1px #000;box-decoration-break:clone;-webkit-box-decoration-break:clone;padding:3px 6px;font-size:clamp(14px,1.6vw,21px);line-height:1.5}
.game-hud{min-height:0;display:grid;grid-template-rows:28px minmax(0,1fr) 36px;background:#000;padding:0 16px}.command{display:flex;align-items:center;justify-content:center;gap:12px;min-width:0;color:var(--verb);font:clamp(15px,1.65vw,22px) Georgia,serif;text-align:center}.command #command{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.command button{padding:2px 6px;background:transparent;font-size:13px;border:0;color:var(--muted)}.controls{display:grid;grid-template-columns:43% 57%;min-height:0;gap:0;max-width:1220px;width:100%;margin:auto;height:100%}.verbs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));align-items:stretch;gap:1px 8px;min-height:0;padding:0 14px 0 0}.verbs button{padding:0 3px;border:0;background:transparent;color:var(--verb);font-family:Georgia,serif;font-weight:bold;font-size:clamp(16px,2.5vw,34px);white-space:nowrap;text-shadow:1px 2px #452047;line-height:1.1}.verbs button:hover,.verbs button.active{color:#f4b7ff;text-shadow:1px 2px #653275}.verbs button.active{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}.inventory-wrap{display:grid;grid-template-columns:minmax(0,1fr) 32px;min-width:0;min-height:0}.inventory{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:0 6px;min-height:0}.item{position:relative;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;border:1px solid transparent;background:#000;padding:1px}.item:hover{background:#160b1d;border-color:#64356f}.item.selected{border-color:#e7a1f3;background:#1b0b22}.inventory-icon{display:block;height:100%;max-width:100%;aspect-ratio:1;background-image:url('inventory-art.png');background-size:400% 400%;background-repeat:no-repeat;image-rendering:pixelated;pointer-events:none}.inventory-label{position:absolute;bottom:0;left:50%;transform:translateX(-50%);z-index:2;background:#190d20;color:#ffe5aa;font-size:13px;line-height:1.3;padding:2px 5px;max-width:180px;width:max-content;opacity:0;pointer-events:none}.item:hover .inventory-label,.item:focus-visible .inventory-label{opacity:1}.inventory-paging{display:flex;flex-direction:column;align-items:center;justify-content:space-around}.inventory-paging button{padding:3px;border:0;background:transparent;color:var(--verb);font-size:24px;min-height:30px}#inventory-page{font-size:12px;color:var(--muted)}.empty{grid-column:1/-1;grid-row:1/-1;margin:auto;color:var(--muted);font-size:14px}.game-menu{display:flex;align-items:center;justify-content:center;gap:clamp(4px,2vw,26px);border-top:1px solid #28142e;min-width:0}.game-menu button{background:transparent;border:0;color:#a98bb7;font-size:14px;padding:5px 8px;min-height:30px}.game-menu button:hover{color:#ffe3ff}#count{font-size:12px;color:#c3a079}
/* Menus stay within the game viewport. Only their contents may scroll. */
dialog{width:min(720px,calc(100% - 24px));max-height:calc(var(--viewport-height) - 24px);border:2px solid #855493;border-radius:2px;padding:24px;background:#100a18;color:var(--text);box-shadow:0 0 0 4px #000,0 20px 80px #000c;overflow:auto;overscroll-behavior:contain}dialog::backdrop{background:#000b}.close{float:right;border:0;background:transparent;font-size:28px;padding:0 6px;color:#deb6e6}.small-label{font-size:12px;letter-spacing:2px;color:var(--gold)}h2{font:28px Georgia,serif;color:#edc1f4;margin:8px 0 18px}#dialog-body{font-size:16px;line-height:1.65;color:#e2d6e7}#dialog-body p{margin:0 0 12px}#dialog-options{display:grid;gap:8px;margin-top:18px}#dialog-options button{text-align:left;color:#edc1f4}#dialog-options button:hover{color:#fff2b1}.dialog-companion{border-top:1px solid var(--line);margin-top:16px;padding-top:10px}.companion-answer{font-size:16px;color:#f5dfac;line-height:1.5}.dialog-answer:empty{display:none}.companion-form{display:flex;gap:6px;margin-top:12px;min-width:0}.companion-form input{flex:1;min-width:0;background:#08040d;border:1px solid #60406e;color:#fff;padding:10px;font-size:16px}.companion-form button{font-size:14px;padding:8px 10px}.voice-status{font-size:14px;line-height:1.5;color:#bba8c5}.mic-button[aria-pressed=true]{background:#733e55;color:white}.companion-heading{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.companion-heading h2{margin:4px 0}.companion-heading button{font-size:13px;padding:6px 8px}#alexios-mood{color:var(--gold);font-style:italic;font-size:14px}#companion-log{max-height:25dvh;overflow:auto;font-size:15px;line-height:1.5;border-top:1px solid var(--line)}#companion-log strong{color:#e3b1ee}.conversation-prompts{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}.conversation-prompts button{font-size:14px;padding:7px 9px}.local-paths{display:grid;gap:10px}.local-paths button{text-align:left;font-size:17px;padding:14px}#sea-map{background:#081923}#sea-map .chart-heading h2{color:#f1d6a4}#sea-map .chart-note{font-size:14px;line-height:1.5}#sea-map .chart-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}#sea-map .chart-surface{max-height:none}
/* Settings is a separate page in the game, with a dedicated return control. */
.settings-screen{height:var(--viewport-height);overflow:auto;background:#0c0712;overscroll-behavior:contain;padding:env(safe-area-inset-top) max(18px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(18px,env(safe-area-inset-left))}.settings-header{position:sticky;top:0;z-index:1;background:#0c0712;display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:1000px;margin:auto;padding:20px 0;border-bottom:1px solid var(--line)}.settings-header h1{font:34px Georgia,serif;color:#efc2f5;margin:6px 0 0}.settings-content{max-width:1000px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:24px 0}.settings-group{border:1px solid #3e244c;padding:22px;background:#130c1d}.settings-group:last-child{grid-column:1/-1}.settings-group h2{font-size:24px}.settings-group label{display:flex;align-items:center;gap:10px;font-size:16px;line-height:1.5}.sound-options,.voice-settings{display:grid;gap:18px;margin-top:20px}.voice-settings label:has(select){display:grid}.voice-settings select{width:100%;min-width:0;color:var(--text);background:#21132a;border:1px solid var(--line);padding:9px;font-size:16px}.settings-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}input[type=range]{accent-color:#c781da;min-width:0}input[type=checkbox]{accent-color:#c781da;width:18px;height:18px}#theme-audio{display:block;width:100%;margin-top:16px;height:44px}#soundscape-status,.companion-note,#save-status,#display-status{font-size:14px;color:var(--muted);line-height:1.6}
@media(max-width:600px){.game-hud{padding:0 6px;grid-template-rows:25px minmax(0,1fr) 35px}.controls{grid-template-columns:45% 55%}.verbs{gap:0;padding-right:6px}.verbs button{font-size:clamp(14px,3.8vw,20px);padding:0}.inventory-wrap{grid-template-columns:minmax(0,1fr) 23px}.inventory{gap:0}.inventory-paging button{font-size:20px}.game-menu{gap:0;justify-content:space-around}.game-menu button{padding:6px 4px;font-size:13px}#count{display:none}.settings-content{grid-template-columns:1fr}.settings-header h1{font-size:28px}.settings-header button{font-size:14px}.settings-group{padding:16px}.settings-group:last-child{grid-column:auto}dialog{padding:18px}.companion-form{flex-wrap:wrap}.companion-form input{flex-basis:100%}.companion-form button{flex:1}.scene-meta h1{font-size:12px}.game-subtitle p{font-size:14px}}
@media(max-height:520px) and (orientation:landscape){.game-screen{grid-template-rows:minmax(0,1fr) 140px}.game-hud{grid-template-rows:22px minmax(0,1fr) 30px}.verbs button{font-size:clamp(16px,2.4vw,24px)}.game-menu button{font-size:13px;min-height:28px;padding:4px 8px}.inventory-paging button{min-height:25px;font-size:20px}.command{font-size:16px}.scene-meta{padding:4px 8px}.scene-meta h1{font-size:12px}.game-subtitle p{font-size:14px}dialog{padding:16px}.settings-header{padding:12px 0}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.inventory-icon{background:none;max-width:none;flex:none}.item.icon-unavailable .inventory-label{opacity:1;white-space:normal;width:100%;text-align:center}
#sea-map{max-height:calc(var(--viewport-height) - 24px)}
#paths-dialog{width:min(840px,calc(100% - 24px))}#paths-description{font-size:15px;line-height:1.5;color:var(--muted)}.local-paths{grid-template-columns:1fr 1fr;gap:10px}.local-paths .explore-place{display:flex;align-items:center;gap:12px;padding:8px;min-width:0}.explore-preview{display:block;flex:0 0 90px;aspect-ratio:3/2;image-rendering:pixelated;background-repeat:no-repeat}.explore-label{font-size:16px;line-height:1.3}.explore-label small{display:block;font-size:13px;color:var(--gold);margin-top:5px}.explore-place:disabled{opacity:.65}@media(max-width:540px){.local-paths{grid-template-columns:1fr}.explore-preview{flex-basis:80px}}

/* Full-screen story titles share the adventure's moonlit palette. */
#story-screen{width:100%;max-width:none;height:100%;height:100dvh;max-height:none;margin:0;padding:clamp(16px,4vw,52px);border:0;border-radius:0;background:#04112d url('opening-island.png') center/cover no-repeat;color:#ffedc0;overflow:auto;text-align:center;isolation:isolate;box-sizing:border-box}
#story-screen::before{content:'';position:fixed;inset:0;background:linear-gradient(180deg,#02082244,#02082211 35%,#020822dd);z-index:-1;pointer-events:none}
#story-screen::backdrop{background:#000}
.story-content{min-height:100%;max-width:900px;margin:auto;display:flex;flex-direction:column;align-items:center;justify-content:center}
#story-kicker{font:700 clamp(14px,2vw,22px)/1.4 Georgia,serif;letter-spacing:.15em;color:#ffc367;margin:0 0 12px;text-shadow:0 2px 4px #000}
#story-title{font:900 clamp(40px,8vw,106px)/.98 Georgia,serif;letter-spacing:-.04em;color:#ffcc53;text-shadow:3px 5px 0 #110b27,0 0 32px #000;margin:0 0 22px;max-width:900px}
#story-theme{font:italic clamp(18px,2.3vw,28px)/1.35 Georgia,serif;color:#ffe7ae;margin:0 0 18px;text-shadow:0 2px 5px #000}
#story-text{max-width:740px;font-size:clamp(16px,1.7vw,20px);line-height:1.65;text-wrap:pretty;margin:0 0 24px;text-shadow:0 2px 4px #000}
#story-text:empty{display:none}
#story-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:12px}
#story-actions button{font:700 16px/1.3 Georgia,serif;padding:14px 22px;min-height:44px;border:1px solid #e7b653;background:#09132cdd;color:#ffe6a5;border-radius:2px;box-shadow:0 2px 10px #0007}
#story-actions button:first-child{background:#e6b955;color:#171022;border-color:#ffe3a1}
#story-actions button:hover,#story-actions button:focus-visible{outline:2px solid #fff0c0;outline-offset:3px;filter:brightness(1.15)}
#story-status{min-height:20px;max-width:700px;color:#e4dafa}
#story-screen[data-mode=title] #story-title{max-width:720px}
#story-screen:not([data-mode=title])::before{background:linear-gradient(#020822b8,#020822e8)}
#story-screen:not([data-mode=title]) #story-title{font-size:clamp(30px,5vw,66px);line-height:1.06}
@media(max-height:550px) and (orientation:landscape){#story-screen{padding:18px 30px}#story-title{font-size:58px;margin-bottom:12px}#story-kicker{margin-bottom:8px;font-size:14px}#story-theme{font-size:18px;margin-bottom:10px}#story-text{font-size:16px;line-height:1.4;margin-bottom:10px}#story-actions{margin-top:4px}#story-actions button{padding:10px 16px}#story-status{margin:8px 0 0}}

#opening-motion{position:fixed;inset:0;width:100%;height:100%;z-index:-2;pointer-events:none}
.opening-toolbar{position:absolute;top:max(12px,env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right));display:flex;gap:10px;z-index:2}
.opening-toolbar button{background:#081329cc;border:1px solid #d4b77988;color:#fce6b3;font-size:14px;min-height:44px;padding:10px 14px}
#story-screen:not([data-mode=title]) .opening-toolbar{display:none}
#story-screen[data-mode=title]{padding-top:74px}
#story-screen[data-mode=title][data-entrance=playing] #opening-motion{animation:opening-pan 8.5s ease-out both}
#story-screen[data-mode=title][data-entrance=playing] #story-kicker{animation:opening-reveal 2s .5s both}
#story-screen[data-mode=title][data-entrance=playing] #story-title{animation:opening-reveal 3s 1.3s both}
#story-screen[data-mode=title][data-entrance=playing] #story-theme{animation:opening-reveal 2s 3s both}
@keyframes opening-pan{from{transform:scale(1.065);filter:brightness(.35)}to{transform:scale(1);filter:brightness(1)}}
@keyframes opening-reveal{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){#story-screen *{animation:none!important}}

#prologue-stage{display:none}#story-screen[data-mode=prologue]{padding:0;background:#000;overflow:hidden}
#story-screen[data-mode=prologue]::before,#story-screen[data-mode=prologue] .story-content{display:none}
#story-screen[data-mode=prologue] #prologue-stage{display:flex;position:absolute;inset:0;align-items:center;justify-content:center;background:#000}
#prologue-canvas{display:block;max-width:100%;max-height:100%;width:auto;height:auto;aspect-ratio:3/2;object-fit:contain}
.prologue-controls{position:absolute;top:max(12px,env(safe-area-inset-top));left:16px;right:16px;display:flex;gap:10px;align-items:center;color:#ffe6b3;text-shadow:0 2px 5px #000}
#prologue-scene{margin-right:auto;font:700 16px/1.3 Georgia,serif}
.prologue-controls button{background:#07152ee8;color:#ffe6b3;border:1px solid #ac925e;font-size:14px;min-height:44px;padding:10px 14px}
#prologue-caption{position:absolute;bottom:max(16px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(760px,calc(100% - 40px));padding:14px 20px;box-sizing:border-box;margin:0;background:#020919e8;border-top:1px solid #aa884f77;color:#ffedc4;font:18px/1.5 Georgia,serif;text-shadow:0 2px 3px #000;text-wrap:pretty}
@media(max-height:500px){#prologue-caption{font-size:16px;line-height:1.35;padding:8px 14px;bottom:8px}.prologue-controls{top:8px}}
/* Reserve caption space so the action is never covered by dialogue. */
#story-screen[data-mode=prologue] #prologue-stage{flex-direction:column;padding:8px 0;box-sizing:border-box;gap:6px}
#prologue-canvas{flex:1;min-height:0;width:100%;height:0;max-height:none}
.prologue-controls{position:static;order:-1;width:calc(100% - 32px);flex-shrink:0;min-height:44px}
#prologue-caption{position:static;transform:none;flex-shrink:0;margin:0 auto;width:min(760px,calc(100% - 24px))}

#chart-boat{width:clamp(44px,9%,70px);aspect-ratio:1;font-size:0;line-height:0}#chart-boat img{display:block;width:100%;height:100%;object-fit:contain;image-rendering:pixelated}

#dialog-closeup:empty{display:none}
#dialog.portrait-view,#dialog.jar-view{width:min(1100px,calc(100% - 20px));height:min(720px,calc(100dvh - 20px));max-height:calc(100dvh - 20px);padding:0;overflow:hidden;background:#000;box-sizing:border-box}
#dialog.portrait-view[open]{display:grid;grid-template-columns:48% 52%}
#dialog.jar-view[open]{display:grid;grid-template-rows:minmax(0,1fr) auto}
#dialog.portrait-view .dialog-reading,#dialog.jar-view .dialog-reading{padding:24px;overflow:auto;min-height:0;background:#08060e}
#dialog.portrait-view #dialog-closeup{display:flex;align-items:center;background:#000;min-width:0;overflow:hidden}
.conversation-portrait{width:100%;aspect-ratio:1;background-image:url('conversation-portraits.png');background-size:300% 200%;background-repeat:no-repeat;image-rendering:pixelated}
#dialog.portrait-view .close,#dialog.jar-view .close{position:absolute;float:none;width:44px;height:44px;z-index:4;top:8px;right:8px;background:#0e071bd9;border:1px solid #977248;min-width:44px;min-height:44px}
#dialog.portrait-view #dialog-title{padding-right:36px}
#dialog.portrait-view #dialog-options button,#dialog.jar-view #dialog-options button{min-height:48px;padding:12px 16px;font-size:17px;line-height:1.4}
#dialog.jar-view #dialog-closeup{min-height:0;position:relative}
.jar-closeup{position:absolute;inset:0;background:#050a19 url('jar-closeup.png') center/contain no-repeat;aspect-ratio:3/2;max-height:100%;max-width:100%;margin:auto;height:100%;width:auto}
.jar-target{position:absolute;top:24%;width:18%;height:63%;transform:translateX(-50%);display:flex;align-items:flex-end;justify-content:center;padding:8px 0;background:transparent;border:2px solid transparent;color:#fff0bb;font:700 clamp(14px,2vw,20px)/1.2 Georgia,serif;text-shadow:0 2px 4px #000;border-radius:10px}
.jar-target:hover,.jar-target:focus-visible,.jar-struck{border-color:#f2cd70;background:#ffe09d18;box-shadow:0 0 20px #ddaa5544;outline:none}
.jar-target:disabled{opacity:1;cursor:default}
#dialog.jar-view .dialog-reading{padding:12px 20px;max-height:38dvh}
#dialog.jar-view #dialog-title{font-size:22px;margin:3px 0 8px}#dialog.jar-view #dialog-body p{margin-bottom:6px;font-size:16px;line-height:1.4}
#dialog.jar-view #dialog-options{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}#dialog.jar-view .dialog-companion{display:none}
@media(max-width:640px){#dialog.portrait-view[open]{grid-template-columns:1fr;grid-template-rows:36% minmax(0,1fr)}#dialog.portrait-view #dialog-closeup{justify-content:center}.conversation-portrait{height:100%;width:auto}#dialog.portrait-view .dialog-reading{padding:16px}#dialog.jar-view[open]{grid-template-rows:minmax(0,1fr) auto}}

/* Keep the dismiss button out of the artwork/content grid. */
#dialog.portrait-view #dialog-closeup{grid-column:1;grid-row:1;min-height:0}
#dialog.portrait-view .dialog-reading{grid-column:2;grid-row:1;min-width:0}
#dialog.jar-view #dialog-closeup{grid-column:1;grid-row:1;overflow:hidden}
#dialog.jar-view .dialog-reading{grid-column:1;grid-row:2;min-width:0}
@media(max-width:640px){#dialog.portrait-view .dialog-reading{grid-column:1;grid-row:2}}
/* Close-up game boards have explicit layout; close buttons never occupy a grid cell. */
#dialog.network-view,#dialog.petanque-view{width:min(1050px,calc(100% - 20px));padding:0;max-height:calc(100dvh - 20px);overflow:auto;background:#100c18}
#dialog.network-view[open],#dialog.petanque-view[open]{display:flex;flex-direction:column}
#dialog.network-view .close,#dialog.petanque-view .close{position:absolute;float:none;top:8px;right:8px;width:44px;height:44px;min-height:44px;z-index:4;background:#100b1deb;border:1px solid #a88059}
#dialog.network-view #dialog-closeup,#dialog.petanque-view #dialog-closeup{flex:none;display:block;min-height:0}
#dialog.network-view .dialog-reading,#dialog.petanque-view .dialog-reading{padding:16px 22px;background:#100c18;flex:none}
#dialog.network-view .dialog-companion,#dialog.petanque-view .dialog-companion{display:none}
#dialog.network-view #dialog-options,#dialog.petanque-view #dialog-options{display:flex;flex-wrap:wrap;margin-top:10px;gap:8px}
#dialog.network-view #dialog-body p,#dialog.petanque-view #dialog-body p{line-height:1.4;margin-bottom:8px}
#dialog.network-view h2,#dialog.petanque-view h2{font-size:24px;margin:4px 0 10px}
.network-board{padding:20px;background:#121e28;border-bottom:1px solid #aa8b59}.network-board-title{font-size:16px;color:#f1d59d;padding-right:40px;margin:0 0 16px}
.network-row{display:grid;grid-template-columns:29% 1fr;gap:12px;align-items:center;border-top:1px solid #ffffff20;padding:14px 0;font-size:16px}.network-choices{display:flex;gap:6px}.network-choices button{flex:1;min-width:0;min-height:48px;font-size:16px;padding:9px;line-height:1.3}.network-choices button[aria-pressed=true]{background:#684251;border-color:#f1d59d;color:#fff0c8}.water-controls{display:flex;gap:12px;align-items:center}.water-controls button{width:48px;height:48px;font-size:24px}.water-controls output{color:#badeeb;font-size:18px}
.petanque-layout{background:#142028}.petanque-court{position:relative;width:100%;aspect-ratio:1.8;background:url('petanque-court.png') center/cover;overflow:hidden;border-bottom:1px solid #aa8b59}.boule{position:absolute;display:block;width:2.8%;aspect-ratio:1;border-radius:50%;transform:translate(-50%,-50%);box-shadow:2px 3px 3px #000a;background:radial-gradient(circle at 30% 30%,#fff,#91a6b3 42%,#344552 85%);border:1px solid #34414b}.boule.jack{width:1.8%;background:#ffe75e;border:1px solid #4a3000;outline:2px solid #ffe78088;outline-offset:3px}.boule.rival{background:radial-gradient(circle at 30% 30%,#ffe1b0,#b5653c 50%,#542c1c)}.boule.rolling{animation:boule-roll .7s ease-out}@keyframes boule-roll{from{top:92%;left:50%;transform:translate(-50%,-50%) scale(1.4)}to{transform:translate(-50%,-50%) scale(1)}}
.petanque-controls{display:grid;grid-template-columns:1fr 1fr auto;gap:16px;align-items:center;padding:14px 20px}.petanque-controls label{font-size:16px;color:#f2d6a2}.petanque-controls input{display:block;width:100%;min-height:38px;accent-color:#e3c484}.petanque-controls button{min-height:48px;font-size:17px}.petanque-controls output{float:right;color:white}
@media(max-width:640px){.network-row{grid-template-columns:1fr;gap:8px;padding:10px 0}.network-board{padding:16px}.network-choices button{font-size:14px;min-height:48px}.petanque-controls{gap:10px;padding:12px;grid-template-columns:1fr 1fr}.petanque-controls button{grid-column:1/-1}.petanque-court{aspect-ratio:1.5}#dialog.network-view .dialog-reading,#dialog.petanque-view .dialog-reading{padding:14px}#dialog.network-view #dialog-options button,#dialog.petanque-view #dialog-options button{min-height:44px}}
@media(prefers-reduced-motion:reduce){.boule.rolling{animation:none}}
.petanque-play{display:grid;grid-template-columns:26% 74%;background:#050914}.petanque-player{position:relative;min-height:180px;overflow:hidden;background:url('lantern-network.png') 0 0/200% 300%;border-right:2px solid #c9a876}.petanque-player>span{position:absolute;top:10px;left:8px;right:8px;padding:6px;background:#080816d9;color:#f3d7a6;font-size:14px;z-index:2;text-align:center}.petanque-alexios{position:absolute;height:90%;aspect-ratio:480/1024;bottom:-7%;left:50%;transform:translateX(-50%);background:url('alexios-walk.png') 0 0/400% 100% no-repeat;image-rendering:pixelated}.is-throwing .petanque-alexios{animation:alexios-boule-throw 1.5s steps(1) both}.is-throwing .boule.rolling{animation:boule-release 1.5s ease-out both}@keyframes alexios-boule-throw{0%{background-position:0 0}20%{background-position:33.333% 0}42%{background-position:66.667% 0}66%{background-position:100% 0}100%{background-position:0 0}}@keyframes boule-release{0%,42%{top:92%;left:50%;transform:translate(-50%,-50%) scale(1.4);opacity:0}43%{top:92%;left:50%;opacity:1}100%{transform:translate(-50%,-50%) scale(1);opacity:1}}
@media(max-width:640px){.petanque-play{grid-template-columns:30% 70%}.petanque-player{min-height:160px}.petanque-player>span{font-size:12px;padding:3px;top:4px;left:2px;right:2px}.petanque-alexios{height:88%}.petanque-court{aspect-ratio:1.15}}
@media(prefers-reduced-motion:reduce){.is-throwing .petanque-alexios,.is-throwing .boule.rolling{animation:none}}

/* Fixed court geometry keeps contact radii and scoring consistent on phones. */
.petanque-play .petanque-court{aspect-ratio:1.5}.petanque-court .boule{animation:none!important}.petanque-play .petanque-player{min-height:0}
#dialog.mill-view{width:min(1000px,calc(100% - 16px));max-height:calc(100dvh - 16px);height:auto;padding:0;overflow:auto;background:#100c18}
#dialog.mill-view[open]{display:flex;flex-direction:column}
#dialog.mill-view .close{position:absolute;top:8px;right:8px;z-index:5;width:44px;height:44px;min-width:44px;min-height:44px;background:#100c18eb;border:1px solid #cba773}
#dialog.mill-view #dialog-closeup{display:block;flex:none;min-height:0;background:#08060e}
.mill-surface{position:relative;aspect-ratio:1.5;overflow:hidden;margin:auto;width:min(100%,87dvh);max-width:100%}
.mill-surface>img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:fill;pointer-events:none}
.mill-surface.mill-detail{width:min(100%,calc(46dvh * var(--detail-ratio)));height:auto;aspect-ratio:var(--detail-ratio)}
.mill-part{position:absolute;transform:translate(-50%,-50%);min-height:48px;padding:8px 12px;border:1px solid #dec391;background:#100b1dd9;color:#fff4db;font-size:clamp(14px,1.5vw,18px);max-width:28%;box-shadow:0 2px 12px #0008}
.mill-part:hover,.mill-part:focus-visible{outline:3px solid #e5bc75;outline-offset:3px;background:#322039}
.mill-operate{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);min-height:48px;max-width:calc(100% - 24px);width:max-content;background:#20152af2;color:#fff2d6;border:1px solid #e3bc79;padding:12px 20px;font-size:16px}
#dialog.mill-view .dialog-reading{padding:14px 20px;flex:none;background:#100c18}
#dialog.mill-view h2{font-size:24px;margin:4px 0 8px}
#dialog.mill-view #dialog-body p{font-size:16px;line-height:1.45;margin:0 0 12px}
#dialog.mill-view .dialog-companion{display:none}
#dialog.mill-view #dialog-options{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
#dialog.mill-view #dialog-options button{font-size:16px;min-height:44px;padding:8px 14px}
.mill-progress{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;font-size:14px;color:#e8d7ba}
.mill-progress label{display:grid;gap:5px}.mill-progress progress{width:100%;height:10px;accent-color:#cca962}
@media(max-width:600px){#dialog.mill-view .dialog-reading{padding:12px}.mill-part{padding:5px;font-size:14px}.mill-progress{gap:8px}.mill-surface.mill-detail{width:min(100%,calc(40dvh * var(--detail-ratio)))}}
.mill-surface.mill-lever-film{width:min(100%,54dvh);aspect-ratio:1;background-image:url('alexios-lever-sequence.png');background-size:300% 200%;background-repeat:no-repeat;image-rendering:auto}
#dialog.mill-view .mill-pull-button{border-color:#dfb66d;background:#35243c;color:#fff0cd}
#dialog.mill-view #dialog-options>.voice-status{flex-basis:100%;font-size:14px}
