@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
.label-row output{font-size:9px;color:var(--muted);font-variant-numeric:tabular-nums}
.range-setting input[type=range]{display:block;appearance:none;-webkit-appearance:none;width:100%;height:4px;margin:17px 0 9px;border-radius:5px;background:rgba(255,255,255,.18);cursor:pointer;accent-color:var(--gold)}
.range-setting input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:12px;height:12px;border:2px solid #e9d2a2;border-radius:50%;background:#e9d2a2;box-shadow:0 0 0 3px #e9d2a212;transition:box-shadow .15s}
.range-setting input[type=range]::-moz-range-thumb{width:10px;height:10px;border:1px solid #e9d2a2;border-radius:50%;background:#e9d2a2}
.range-setting input[type=range]:hover::-webkit-slider-thumb{box-shadow:0 0 0 5px #e9d2a21a}
.range-setting input[type=range]:disabled{opacity:.3;cursor:default}
.range-setting .setting-note{line-height:1.6}
.graphics-settings>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;list-style:none;cursor:pointer;font-size:12px;color:var(--cream);padding:3px 0}
.graphics-settings>summary::-webkit-details-marker{display:none}
.graphics-settings>summary small{display:block;font-size:9px;font-weight:400;color:var(--muted);margin-top:6px}
.graphics-settings>summary svg{width:16px;height:16px;fill:none;stroke:var(--gold);stroke-width:1.4;transition:transform .2s;flex-shrink:0}
.graphics-settings[open]>summary svg{transform:rotate(180deg)}
.graphics-settings>summary:hover{color:var(--gold)}
.graphics-settings>summary:focus-visible{outline:2px solid var(--gold);outline-offset:5px;border-radius:2px}
:root{font-family:'DM Sans',sans-serif;color:#fffdf4;font-synthesis:none;--cream:#f8f3e4;--muted:rgba(255,253,243,.64);--gold:#e9d2a2;--line:rgba(255,255,255,.17)}
*{box-sizing:border-box}body{margin:0;background:#8bbac6;overflow:hidden}button,select,input{font:inherit}button,a,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--gold);outline-offset:5px}[hidden]{display:none!important}#world{position:fixed;inset:0}canvas{display:block;width:100%;height:100%;touch-action:none;outline:none}.vignette{pointer-events:none;position:fixed;inset:0;background:linear-gradient(180deg,rgba(13,37,49,.25),transparent 28%,transparent 65%,rgba(5,30,36,.52));box-shadow:inset 0 0 160px rgba(5,25,35,.1)}.topbar{position:fixed;left:42px;right:36px;top:30px;display:flex;align-items:center;justify-content:space-between;gap:20px}.wordmark{display:flex;align-items:center;gap:13px;color:var(--cream);text-decoration:none;font-family:Manrope,sans-serif;font-size:22px;letter-spacing:7px;font-weight:700}.wordmark svg{width:27px;height:30px;fill:none;stroke:var(--cream);stroke-width:1.25;stroke-linejoin:round}.edition{font-size:9px;letter-spacing:2.6px;font-weight:500;margin-left:8px;padding-left:23px;border-left:1px solid var(--line)}.top-actions{margin-left:auto;display:flex;align-items:center;gap:12px}.live-status{font-size:9px;letter-spacing:2px;margin-right:20px;display:flex;gap:10px;align-items:center}.live-status i{width:5px;height:5px;background:#e0e3c8;border-radius:50%;box-shadow:0 0 8px #f3e5b25c}.icon-button{border:1px solid var(--line);width:38px;height:38px;background:rgba(15,42,48,.09);border-radius:50%;display:grid;place-items:center;font-size:17px;transition:background .2s,border-color .2s;flex-shrink:0}.icon-button:hover,.icon-button[aria-expanded=true]{background:#f8f3e420;border-color:#ffffff66}.icon-button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round}.scene-title{position:fixed;left:44px;top:138px;pointer-events:none;text-shadow:0 2px 26px #18384728}.eyebrow{font-size:9px;font-weight:600;letter-spacing:2.8px;color:var(--muted);display:block}.scene-title .eyebrow{display:flex;align-items:center;gap:10px;color:#fff9ea}.eyebrow>span{height:1px;width:22px;background:var(--gold)}h1{font-family:Georgia,'Times New Roman',serif;font-size:clamp(32px,3.7vw,59px);font-weight:400;letter-spacing:-1.5px;margin:17px 0 9px;line-height:1.12}.scene-title p{font-size:12px;letter-spacing:.5px;color:#f9f5e4c9;margin:0}.bottom-bar{position:fixed;bottom:38px;left:44px;right:44px;display:flex;justify-content:space-between;align-items:flex-end;pointer-events:none}.vessel-card{min-width:220px}.vessel-card>.eyebrow{color:#f4e9d4;font-size:10px;letter-spacing:2px}.vessel-meta{display:flex;align-items:center;gap:19px;margin-top:13px}.speed{display:flex;align-items:baseline;gap:8px}.speed b{font-size:34px;font-family:Manrope,sans-serif;font-weight:400;line-height:1;letter-spacing:-1.5px;min-width:51px}.speed small{font-size:10px;color:var(--muted)}.vertical-rule{width:1px;height:27px;background:var(--line)}.sail-readout>span{font-size:8px;letter-spacing:1.2px;color:var(--muted)}.sail-meter{height:2px;background:#ffffff25;width:85px;margin-top:10px}.sail-meter i{height:2px;width:0%;display:block;background:var(--gold)}.navigation{position:absolute;left:50%;transform:translateX(-50%);bottom:0;text-align:center;width:220px}.heading-line{display:flex;gap:12px;align-items:center;justify-content:center;font-size:9px;letter-spacing:2px;margin-bottom:14px}.heading-divider{height:9px;width:1px;background:var(--line)}#heading{font-size:12px;letter-spacing:1px}.compass-scale{display:flex;align-items:center;justify-content:space-between;color:#ffffff70;font-size:8px;letter-spacing:1px;mask-image:linear-gradient(90deg,transparent,black 25%,black 75%,transparent)}.compass-scale i{width:1px;height:5px;background:#ffffff70}.compass-marker{font-size:7px;color:var(--gold);position:relative;top:6px}.conditions{display:flex;align-items:center;gap:14px}.conditions svg{width:30px;height:30px;stroke:var(--gold);fill:none;stroke-width:1}.conditions span{font-size:9px;letter-spacing:1.7px}.conditions p{font-size:10px;margin:7px 0 0;color:var(--muted);letter-spacing:.2px}.controls-hint{position:fixed;left:50%;bottom:125px;transform:translateX(-50%);display:flex;align-items:center;gap:14px;color:#fff9e7ad;font-size:10px;letter-spacing:.35px;white-space:nowrap;pointer-events:none}.controls-hint>span:first-child{text-align:center;display:flex;flex-direction:column;gap:3px;align-items:center}.key-cluster{display:flex;gap:3px}kbd{display:inline-grid;place-items:center;border:1px solid #fff8e947;border-radius:3px;min-width:19px;height:19px;font:9px 'DM Sans',sans-serif;background:#10373a15}.controls-hint i{font-style:normal;margin:0 8px;color:#fff8e960}.panel{position:fixed;top:86px;right:36px;width:348px;max-height:calc(100dvh - 200px);overflow:auto;padding:25px;background:rgba(14,34,38,.9);border:1px solid #e6ead125;border-radius:10px;box-shadow:0 15px 65px #041c2938;backdrop-filter:blur(25px);scrollbar-width:thin;scrollbar-color:#ffffff30 transparent}.panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:27px}.panel-header .icon-button{width:26px;height:26px;border:0;background:transparent;font-size:24px;position:relative;top:-7px;right:-8px}.panel-header .eyebrow{font-size:8px;letter-spacing:2px;color:var(--gold)}h2{font:23px Georgia,serif;font-weight:400;line-height:1.2;margin:10px 0 0;letter-spacing:-.3px}.setting{margin-top:23px}.setting>label,.label-row label{font-size:11px;font-weight:500;color:var(--cream)}.segments{display:flex;gap:4px;padding:4px;background:#00000021;border:1px solid #ffffff0e;border-radius:6px;margin-top:10px}.segments button{flex:1;background:transparent;border:1px solid transparent;border-radius:4px;font-size:10px;padding:9px 3px;color:var(--muted)}.segments button.active{color:#f5e8ca;background:#efddaf16;border-color:#e5cc922c}.segments button:hover{background:#ffffff10}select{display:block;width:100%;margin-top:10px;padding:12px;background:#ffffff07;color:var(--cream);border:1px solid #ffffff20;border-radius:5px;font-size:11px;outline:none}select option{background:#203a3d}.label-row{display:flex;justify-content:space-between;align-items:center;gap:8px}.label-row>span{font-size:9px;color:var(--muted)}.panel-rule{height:1px;background:var(--line);margin:25px 0}.ship-info{display:flex;align-items:center;gap:17px}.ship-info svg{width:40px;height:40px;fill:none;stroke:var(--gold);stroke-width:1}.ship-info .eyebrow{font-size:7px;letter-spacing:2px}.ship-info h3{font:20px Georgia,serif;margin:6px 0}.ship-info p{font-size:9px;color:var(--muted);margin:0}.swatches{display:flex;gap:12px;margin-top:14px}.swatch{height:25px;width:25px;border-radius:50%;background:var(--swatch);border:2px solid transparent;box-shadow:0 0 0 1px #ffffff12}.swatch.active{box-shadow:0 0 0 1px var(--gold);border:3px solid #1c3638}.setting-note{font-size:9px;color:var(--muted);margin:6px 0 0}.switch{display:inline-flex;cursor:pointer}.switch input{position:absolute;opacity:0;width:32px;height:20px;margin:0}.switch span{width:32px;height:18px;border-radius:15px;background:#ffffff22;transition:background .2s;pointer-events:none}.switch span:after{content:'';display:block;width:12px;height:12px;background:#ced3c9;border-radius:50%;margin:3px;transition:transform .2s}.switch input:checked+span{background:#ab9463}.switch input:checked+span:after{transform:translateX(14px);background:white}.switch input:focus-visible+span{outline:2px solid var(--gold);outline-offset:4px}.text-button{background:transparent;border:0;padding:0;font-size:10px;color:var(--muted)}.text-button:hover{color:var(--cream)}.help-panel{width:320px}.help-panel .panel-header{margin-bottom:14px}.help-panel h2{margin-top:0}.help-panel>p{font-size:11px;line-height:1.8;color:var(--muted)}dl{margin:22px 0 0}dl>div{display:flex;justify-content:space-between;align-items:center;margin-top:17px;font-size:10px}dt{color:var(--gold)}dd{margin:0;color:var(--muted)}#show-ui{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);border:1px solid #ffffff25;border-radius:20px;background:#12313766;padding:9px 15px;font-size:10px;opacity:.4}#show-ui:hover{opacity:1}#show-ui kbd{margin-left:8px}#pause-indicator{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);letter-spacing:4px;font-size:12px;text-align:center;pointer-events:none;text-shadow:0 2px 15px black}#pause-indicator span{display:block;font-size:10px;letter-spacing:.5px;margin-top:12px;color:var(--muted)}#loading{position:fixed;inset:0;background:#153338;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:10;transition:opacity 1s;pointer-events:none}.loading-mark{font:80px Georgia,serif;color:var(--gold);margin-bottom:35px}.loading-mark:after{content:'';display:block;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);margin-top:22px;animation:breathe 2s infinite}#loading .eyebrow{font-size:9px;color:var(--gold)}#loading p{font:29px Georgia,serif;margin:15px 0}#loading-detail{font-size:10px;color:var(--muted);margin-top:10px}#loading.loaded{opacity:0}#error{position:fixed;inset:0;z-index:20;background:#153338;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:30px;text-align:center}#error h2{font-size:32px}#error p{max-width:460px;line-height:1.7;font-size:13px;color:var(--muted)}#error button{background:#e1cd9d;border:0;color:#173238;border-radius:4px;padding:12px 24px;margin-top:15px}#toast{position:fixed;left:50%;top:88px;transform:translate(-50%,-8px);background:#153338dc;border:1px solid #fff3d42a;color:var(--cream);padding:11px 20px;border-radius:25px;font-size:11px;opacity:0;transition:opacity .25s,transform .25s;pointer-events:none}#toast.visible{opacity:1;transform:translate(-50%,0)}.touch-controls{display:none;position:fixed;right:22px;bottom:150px;text-align:center}.touch-controls button{width:40px;height:40px;border:1px solid #fff4dc4a;border-radius:6px;background:#143a4050;margin:2px;touch-action:none;user-select:none}.touch-controls button:active{background:#fff3d43a}@keyframes breathe{50%{opacity:.25}}@media(pointer:coarse){.touch-controls{display:block}.controls-hint{display:none}}@media(max-width:850px){.edition,.live-status{display:none}.topbar{left:25px;right:23px;top:23px}.scene-title{left:27px;top:115px}h1{font-size:38px}.bottom-bar{left:27px;right:27px;bottom:27px}.conditions{display:none}.navigation{left:auto;right:0;transform:none;width:150px}.panel{right:23px;top:78px;max-height:calc(100dvh - 200px)}.controls-hint{bottom:111px;font-size:9px}}@media(max-width:480px){.wordmark{font-size:18px;letter-spacing:5px}.top-actions{gap:8px}.icon-button{width:33px;height:33px}.scene-title{top:109px}.scene-title h1{font-size:32px}.scene-title p{font-size:10px}.scene-title .eyebrow{font-size:8px;letter-spacing:2px}.panel{width:calc(100% - 32px);right:16px;max-height:calc(100dvh - 185px);padding:22px}.vessel-card{min-width:150px}.vessel-card>.eyebrow{font-size:8px}.vessel-meta{gap:12px}.speed b{font-size:28px;min-width:42px}.sail-readout>span{font-size:7px}.sail-meter{width:60px}.navigation{width:115px}.controls-hint>span:last-child{font-size:0}.controls-hint{bottom:105px}.heading-line{font-size:7px;gap:7px}.topbar{gap:10px}.bottom-bar{left:23px;right:23px}}

/* A single circular eyepiece, with a soft field stop and restrained brass rim. */
.spyglass-toggle{position:fixed;right:34px;bottom:124px;z-index:6;padding:10px 14px;border:1px solid #d9c18b66;border-radius:5px;background:#152d32df;color:#eee5d2;font:inherit;cursor:pointer}
#spyglass-overlay{position:fixed;inset:0;z-index:30;pointer-events:none;background:radial-gradient(circle at center,transparent 0,transparent 32vmin,#10100a12 36vmin,#080908b8 40vmin,#030504 42vmin);color:#e4d8bd}
#spyglass-overlay[hidden]{display:none}
.spyglass-crosshair{position:absolute;left:50%;top:50%;width:22px;height:22px;transform:translate(-50%,-50%);opacity:.7;background:linear-gradient(#cfb779,#cfb779) center top/1px 7px no-repeat,linear-gradient(#cfb779,#cfb779) center bottom/1px 7px no-repeat,linear-gradient(#cfb779,#cfb779) left center/7px 1px no-repeat,linear-gradient(#cfb779,#cfb779) right center/7px 1px no-repeat;filter:drop-shadow(0 1px 2px #000)}
.spyglass-range{position:absolute;top:calc(50% + 27px);left:50%;transform:translateX(-50%);color:#e3d7b7;font-size:11px;letter-spacing:.12em;font-variant-numeric:tabular-nums;white-space:nowrap;text-shadow:0 1px 3px #000,0 0 8px #000}
.spyglass-lens{position:absolute;left:50%;top:50%;width:84vmin;height:84vmin;transform:translate(-50%,-50%);border-radius:50%;box-shadow:inset 0 0 0 2px #b49c6233,inset 0 0 15px 5px #000b,inset 0 0 45px #53482025; background:radial-gradient(ellipse at 28% 18%,#e5d3a009,transparent 55%)}
.spyglass-caption{position:absolute;bottom:2.4vmin;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:16px;font-size:11px;letter-spacing:.14em}
.spyglass-caption strong{font-size:16px;font-weight:400;letter-spacing:0}
.spyglass-caption small{letter-spacing:.02em;opacity:.65}
#spyglass-close{pointer-events:auto;background:transparent;border:1px solid #b7a67755;border-radius:4px;color:inherit;padding:8px 10px;font:inherit;cursor:pointer}
.spyglass-active .hud,.spyglass-active .panel{visibility:hidden}
@media(max-width:650px){.spyglass-toggle{right:20px;bottom:160px}.spyglass-caption{flex-wrap:wrap;gap:10px;font-size:9px}.spyglass-caption small{display:none}}

/* Faint curved reflections on the eyepiece glass. */
.spyglass-lens::before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(ellipse at 25% 17%,#e2f5ff18 0,transparent 32%),radial-gradient(ellipse at 76% 81%,#bd9b5b0c 0,transparent 40%);box-shadow:inset 0 0 32px #9ac6cc12;pointer-events:none}
.spyglass-lens::after{content:"";position:absolute;inset:3%;border-radius:50%;border:1px solid transparent;border-top-color:#d8edee17;border-left-color:#d8edee09;transform:rotate(-28deg);filter:blur(1px);pointer-events:none}

.spyglass-navigation{position:absolute;right:4vw;top:5vh;display:flex;align-items:center;gap:16px;color:#e3d7b7}
.spyglass-compass{position:relative;width:112px;height:112px;border:1px solid #b9a16a66;border-radius:50%;background:#080b0b}
.spyglass-rose{position:absolute;inset:5px;border-radius:50%;background:repeating-conic-gradient(from -1deg,#b9a16a77 0deg 1deg,transparent 1deg 15deg);border:8px solid transparent;background-clip:border-box}
.spyglass-rose::before{content:"";position:absolute;inset:1px;border-radius:50%;background:#080b0b}
.spyglass-rose b{position:absolute;font-size:10px;font-weight:400;z-index:1;line-height:12px}
.spyglass-rose .north{top:3px;left:50%;transform:translateX(-50%);color:#e8bf75}.spyglass-rose .south{bottom:3px;left:50%;transform:translateX(-50%)}.spyglass-rose .east{right:3px;top:50%;transform:translateY(-50%)}.spyglass-rose .west{left:3px;top:50%;transform:translateY(-50%)}
.spyglass-bearing-marker{position:absolute;left:50%;top:-4px;transform:translateX(-50%);border-left:4px solid transparent;border-right:4px solid transparent;border-top:8px solid #ebd7a1}
.spyglass-ship{position:absolute;left:40px;top:32px;width:32px;height:48px;fill:#bda56b44;stroke:#ead4a0;stroke-width:1.5;transform-origin:center}
.spyglass-bearing{display:grid;gap:5px}.spyglass-bearing span{font-size:8px;letter-spacing:.16em;opacity:.65}.spyglass-bearing strong{font-size:14px;letter-spacing:.06em;font-weight:400;font-variant-numeric:tabular-nums}.spyglass-bearing strong+span{margin-top:6px}
@media(max-width:650px){.spyglass-navigation{right:12px;top:14px;gap:10px}.spyglass-compass{width:88px;height:88px}.spyglass-ship{left:28px;top:20px}.spyglass-bearing strong{font-size:12px}.spyglass-bearing span{font-size:7px}}

.cabin-toggle{position:fixed;right:34px;bottom:176px;z-index:6;padding:10px 14px;border:1px solid #d9c18b66;border-radius:5px;background:#152d32df;color:#eee5d2;font:inherit;cursor:pointer}
#cabin-overlay{position:fixed;inset:0;z-index:25;pointer-events:none;color:#f2e8d1;background:linear-gradient(#0c100d80,transparent 22%,transparent 85%,#0c100d88)}
#cabin-overlay[hidden]{display:none}
.cabin-active .hud,.cabin-active .panel{visibility:hidden}
.cabin-active .ship-actions{visibility:visible;z-index:26;bottom:32px;width:246px;max-height:calc(100dvh - 180px);pointer-events:none}
.cabin-active .ship-actions>:not(.cannon-controls){display:none}
.cabin-active .ship-actions>.cannon-controls{visibility:visible;pointer-events:auto}
.cabin-active .ship-actions{padding:0;background:none;border-color:transparent;box-shadow:none;overflow:visible}.cabin-active .ship-actions>.cannon-controls{padding:0}
.cabin-active.using-cannon .ship-actions>.cannon-controls{display:none}
@media(max-width:650px){.cabin-active .ship-actions{right:16px;bottom:48px;width:230px}}
.cabin-toolbar{position:absolute;left:34px;right:34px;top:28px;display:flex;justify-content:space-between;align-items:flex-start;gap:20px}
.cabin-toolbar span{font-size:9px;letter-spacing:.24em;color:#d9c99d}.cabin-toolbar h2{font:400 25px Georgia,serif;margin:7px 0}.cabin-toolbar p{font-size:11px;opacity:.7;margin:0}
.cabin-hint{position:absolute;z-index:1;bottom:28px;left:34px;width:190px;display:grid;gap:12px;padding:14px;border:1px solid #d7c59a38;border-radius:8px;background:#172522c9;box-shadow:0 6px 22px #0002;font-size:11px;color:#f2e8d1cc;letter-spacing:.02em}
.cabin-control-row{display:flex;align-items:center;gap:13px}
.movement-keys{width:74px;display:flex;flex-direction:column;align-items:center;gap:4px;flex-shrink:0}
.cabin-hint kbd{width:22px;min-width:22px;height:22px;border:1px solid #d7c59a65;border-bottom-width:3px;border-radius:4px;background:linear-gradient(#e9d2a21a,#e9d2a208);box-shadow:0 2px 0 #0003;color:#f2e8d1;font-size:10px}
.movement-keys .key-cluster{gap:4px}
.look-keys{width:74px;display:flex;justify-content:center;gap:4px;flex-shrink:0}
.control-alternative{color:#f2e8d188}
.helm-drive-hints{display:grid;gap:8px;font-size:10px;line-height:1.5}
.helm-drive-hints kbd{width:19px;min-width:19px;height:19px;font-size:9px;margin-right:4px}
.using-helm .cabin-hint{width:210px}
.helm-readout{display:none;position:absolute;right:34px;top:42%;width:154px;padding:16px 18px;border:1px solid #d7c59a38;border-radius:8px;background:#172522c9;box-shadow:0 6px 22px #0002;pointer-events:none;font-variant-numeric:tabular-nums}
.using-helm .helm-readout{display:grid;gap:14px}
.helm-readout-label{display:block;font-size:8px;letter-spacing:.18em;color:#d9c99d;margin-bottom:7px}
.helm-readout div>div{display:flex;align-items:baseline;gap:9px}
.helm-speed strong{font-size:29px;font-weight:500;line-height:1}
.helm-speed div>span{font-size:11px;color:#f2e8d199}
.helm-heading{border-top:1px solid #d7c59a26;padding-top:13px}
.helm-heading strong{font-size:20px;font-weight:500;line-height:1}
#helm-cardinal{font-size:12px;color:#e9d2a2}
@media(max-width:650px){.helm-readout{right:20px;top:32%;width:134px;padding:13px 14px}.helm-speed strong{font-size:25px}}
@media(max-height:500px){.helm-readout{top:24px;right:20px}}
.cabin-actions{border-top:1px solid #d7c59a26;padding-top:10px}
.cabin-actions button{display:flex;align-items:center;gap:13px;width:100%;pointer-events:auto;border:1px solid transparent;background:transparent;border-radius:4px;padding:4px 0;color:inherit;font:inherit;cursor:pointer;text-align:left}
.cabin-actions button kbd{margin-left:26px;margin-right:26px}
.cabin-actions button:hover{background:#d7c59a18;color:#fff8e9}
@media(max-width:650px){.cabin-toggle{right:20px;bottom:212px}.cabin-toolbar{left:20px;right:20px;top:20px;flex-wrap:wrap}.cabin-toolbar h2{font-size:21px}.cabin-hint{left:20px;bottom:20px;width:175px;padding:12px;font-size:10px}}
@media(max-height:500px){.cabin-hint{bottom:12px;gap:7px;padding:10px}.cabin-actions{padding-top:6px}}

#ship-transition{position:fixed;inset:0;background:#000;opacity:0;pointer-events:none;z-index:40}
#ship-interact{position:absolute;bottom:85px;left:50%;transform:translateX(-50%);pointer-events:auto;background:#172522ed;color:#f2e8d1;border:1px solid #d7c59a70;border-radius:6px;padding:13px 20px;font-size:13px}
#ship-interact kbd{margin-right:10px}

/* One flowing stack prevents action controls from overlapping as panels grow. */
/* Ship actions: no card, outlined keycap-style buttons floating over the sea (no backdrop blur: it re-blurs the canvas every frame). */
.ship-actions{position:fixed;right:34px;bottom:124px;z-index:6;width:212px;display:flex;flex-direction:column-reverse;gap:5px;max-height:calc(100dvh - 225px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:#fff8e930 transparent;padding:2px}
.ship-actions>.spyglass-toggle,.ship-actions>.cabin-toggle,.ship-actions>.tail-slam-toggle,.ship-actions>.leviathan-attack-toggle,.ship-actions>.cannon-controls{position:static;inset:auto;width:100%;flex-shrink:0;margin:0}
.ship-actions>.spyglass-toggle,.ship-actions>.cabin-toggle,.ship-actions>.tail-slam-toggle,.ship-actions>.leviathan-attack-toggle{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:30px;padding:0 6px 0 11px;font:500 12px/1.2 'DM Sans',sans-serif;letter-spacing:.2px;color:#fbf5e6;text-align:left;text-shadow:0 1px 3px #031418b0;background:#0b282d4d;border:1px solid #fff8e93d;border-radius:4px;box-shadow:inset 0 0 12px #e9d2a20d;transition:background .15s,border-color .15s,box-shadow .15s}
.ship-actions>button:hover:not(:disabled){background:#0b282d73;border-color:#e9d2a2a6;box-shadow:inset 0 0 12px #e9d2a21a,0 0 10px #e9d2a22e}.ship-actions>button:disabled{opacity:.45;cursor:default}
.ship-actions>button kbd{flex:none;min-width:19px;height:19px;padding:0 4px;border:1px solid #fff8e952;border-radius:3px;background:#10373a26;color:#fff8e9d9;font:500 9px/1 'DM Sans',sans-serif;text-shadow:none}
/* Group captions; the dock stacks bottom-up, so each caption follows its group in the DOM. */
.ship-actions-heading,.ship-actions>.cannon-controls:before{display:block;flex-shrink:0;font:600 8px/1 'DM Sans',sans-serif;letter-spacing:2.4px;text-transform:uppercase;color:var(--gold);opacity:.75;padding:0 1px 1px;text-shadow:0 1px 3px #031418b0}
.ship-actions-heading{margin-top:5px;padding-top:10px;border-top:1px solid #fff8e924}.ship-actions>.cannon-controls:before{content:'Cannons'}
.ship-actions .mine-toggle{white-space:nowrap}
.ship-actions .cannon-row{width:100%}.ship-actions #cannon-fire{flex:1;min-width:0}.ship-actions .cannon-lock{width:100%}
body:has(#settings:not([hidden])) .ship-actions,body:has(#help:not([hidden])) .ship-actions{visibility:hidden}
@media(max-width:1000px) and (min-width:651px){.controls-hint{left:27px;transform:none}.controls-hint>span:last-child{max-width:240px;white-space:normal;line-height:1.7}}
@media(max-width:650px){.ship-actions{right:16px;bottom:160px;width:204px;max-height:calc(100dvh - 255px)}.ship-actions>.spyglass-toggle,.ship-actions>.cabin-toggle,.ship-actions .cannon-controls button:not(.cannon-side){min-height:30px}.ship-actions .cannon-controls .cannon-side{min-height:34px}}
@media(pointer:coarse){.ship-actions{bottom:264px;max-height:calc(100dvh - 360px)}}
@media(max-height:600px) and (pointer:fine){.ship-actions{bottom:110px;max-height:calc(100dvh - 205px)}.ship-actions>.spyglass-toggle,.ship-actions>.cabin-toggle,.ship-actions>.tail-slam-toggle,.ship-actions>.leviathan-attack-toggle,.ship-actions .cannon-controls button:not(.cannon-side){min-height:28px}}

/* Individual cannon station */
.cannon-station[hidden]{display:none}
.cannon-station{position:fixed;inset:0;z-index:32;pointer-events:none;color:#ead092;background:none;text-shadow:0 2px 7px #000b}
.cannon-sight{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font:200 20px Georgia,serif;opacity:.55}
.cannon-station-card{position:absolute;right:32px;bottom:44px;width:176px;box-sizing:border-box;padding:12px 0 0 18px;border:0;border-right:1px solid #d8b45955;background:linear-gradient(90deg,transparent,#17180e26);text-align:right;pointer-events:none}
.cannon-station-eyebrow{font-size:8px;letter-spacing:.3em;color:#bfa66b;padding-right:12px}
.cannon-station h2{font:400 17px Georgia,serif;margin:5px 12px 14px 0;color:#f2dda9}
.cannon-instrument{position:relative;width:138px;height:138px;margin:0 4px 6px auto;border-radius:50%;background:none;box-shadow:0 0 22px #e7bd4f08}
.cannon-instrument::before{content:'';position:absolute;inset:3px;border-radius:50%;background:#1a211917}
.cannon-instrument-ticks{position:absolute;inset:8px;border-radius:50%;background:repeating-conic-gradient(from 240deg,#ead09288 0deg 1deg,transparent 1deg 15deg);mask-image:radial-gradient(circle,transparent 64%,#000 65%,#000 69%,transparent 70%);-webkit-mask-image:radial-gradient(circle,transparent 64%,#000 65%,#000 69%,transparent 70%)}
.cannon-instrument::after{content:'';position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 240deg,#dfb95f var(--elevation,105deg),#d8b45930 0deg,#d8b45930 240deg,transparent 240deg);mask-image:radial-gradient(circle,transparent 68%,#000 69%);-webkit-mask-image:radial-gradient(circle,transparent 68%,#000 69%);pointer-events:none}
.cannon-instrument-value{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}
.cannon-instrument-value strong{font:italic 36px Georgia,serif;font-variant-numeric:tabular-nums;font-weight:400;color:#f7d98e}
.cannon-instrument-value span{font-size:7px;letter-spacing:.2em;color:#c7b58b}
.cannon-train{margin:-9px 14px 16px 0;font:10px monospace;letter-spacing:.1em;color:#dfc998}
.cannon-station-status{font-size:9px;letter-spacing:.2em;margin:0 12px 7px 0;color:#f5d584}
.cannon-station-meter{height:2px;background:#e1bb6326;margin:0 12px 0 12px;overflow:hidden}
.cannon-station-meter i{display:block;width:0;height:100%;background:#f3ca67;box-shadow:0 0 8px #eebe50}
.cannon-station-hint{font-size:9px;line-height:1.8;margin:10px 12px;color:#dfd4b8a6}
.cannon-station-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:12px 12px 0 0;pointer-events:auto}
.cannon-station button{font-family:inherit;font-size:10px;color:#e9d3a0;border:1px solid #ddbd6d44;background:#17201a35;border-radius:2px;padding:9px 5px;cursor:pointer;touch-action:none;text-shadow:0 1px 4px #000;transition:background .15s,border-color .15s}
.cannon-station button:hover{background:#c5a24925;border-color:#dfbc69aa}
.cannon-station button[data-action=leave]{grid-column:1/-1;border-color:transparent;color:#d5c8a799;padding:5px}
.cannon-station button:disabled{opacity:.35;cursor:default}
.using-cannon .bottom-bar,.using-cannon .controls-hint,.using-cannon .touch-controls{visibility:hidden}
@media(max-width:650px){.cannon-station-card{right:12px;bottom:20px;width:145px;padding-left:6px}.cannon-instrument{width:112px;height:112px}.cannon-instrument-value strong{font-size:29px}.cannon-station-hint{font-size:8px}}
@media(max-height:550px){.cannon-station-card{bottom:12px}.cannon-instrument{width:85px;height:85px}.cannon-station h2{margin-bottom:5px}.cannon-station-hint{display:none}.cannon-train{margin-bottom:9px}.cannon-instrument-value strong{font-size:25px}}
.using-cannon .cabin-toolbar,.using-cannon .cabin-hint,.using-cannon .cannon-controls{visibility:hidden}

.ship-teleport{position:absolute;z-index:3;left:34px;top:145px;width:190px;pointer-events:auto;border:1px solid #d7c59a70;border-radius:7px;background:#172522ed;box-shadow:0 8px 24px #0003;font-size:12px}
.ship-teleport summary{padding:13px 15px;cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center}
.ship-teleport summary::-webkit-details-marker{display:none}
.ship-teleport[open] summary{border-bottom:1px solid #d7c59a30}
.ship-teleport nav{display:grid;padding:6px;gap:3px;max-height:calc(100dvh - 260px);overflow-y:auto}
.ship-teleport button{font:inherit;text-align:left;color:inherit;background:transparent;border:0;border-radius:4px;padding:11px 9px;cursor:pointer}
.ship-teleport button:hover,.ship-teleport button:focus-visible{background:#d7c59a22}
.ship-teleport summary:focus-visible{outline:2px solid #d7c59a;outline-offset:3px}
.using-cannon .ship-teleport{visibility:hidden}
@media(max-width:650px){.ship-teleport{left:20px;top:145px;width:175px}}

.heading-compass{position:relative;width:76px;height:76px;margin:0 auto;border:1px solid #d9c18b66;border-radius:50%;background:#152d3255}
.heading-rose{position:absolute;inset:5px;border-radius:50%;background:repeating-conic-gradient(#eee5d277 0deg 1deg,transparent 1deg 15deg);transform-origin:center;will-change:transform}
.heading-rose::before{content:'';position:absolute;inset:4px;border-radius:50%;background:#183138}
.heading-rose span{position:absolute;font-size:9px;line-height:12px;letter-spacing:0;color:#eee5d2}
.heading-rose .north{top:6px;left:50%;transform:translateX(-50%);color:var(--gold);font-weight:700}
.heading-rose .south{bottom:6px;left:50%;transform:translateX(-50%)}
.heading-rose .east{right:7px;top:50%;transform:translateY(-50%)}
.heading-rose .west{left:7px;top:50%;transform:translateY(-50%)}
.heading-pointer{position:absolute;top:-5px;left:50%;transform:translateX(-50%);border-left:4px solid transparent;border-right:4px solid transparent;border-top:9px solid var(--gold);z-index:1}
.heading-pin{position:absolute;left:50%;top:50%;width:4px;height:4px;background:var(--gold);border-radius:50%;transform:translate(-50%,-50%)}
.navigation .heading-line{margin-bottom:10px}

.teleport-group{padding:12px 9px 4px;color:#d9c99d;font-size:10px;letter-spacing:.12em;text-transform:uppercase;border-top:1px solid #d7c59a30;margin-top:4px}

/* A substantial traditional helm, cropped into a soft slice at the left edge. */
.steering-wheel-hud{--wheel-size:clamp(360px,64vh,740px);position:fixed;left:0;top:65%;transform:translateY(-50%);width:calc(var(--wheel-size)*.56);height:var(--wheel-size);pointer-events:none;opacity:.5;color:#c4ded2;overflow:hidden;mask-image:linear-gradient(90deg,transparent,black 15%,black 48%,transparent 98%),linear-gradient(155deg,black 36%,black 57%,transparent 80%);mask-composite:intersect;-webkit-mask-image:linear-gradient(90deg,transparent,black 15%,black 48%,transparent 98%),linear-gradient(155deg,black 36%,black 57%,transparent 80%);-webkit-mask-composite:source-in}
.steering-wheel-hud svg{position:absolute;left:calc(var(--wheel-size)*-.46);width:var(--wheel-size);height:var(--wheel-size);overflow:visible;filter:drop-shadow(0 0 7px #a3dbd138)}
#steering-wheel-rotor{transform-origin:320px 320px;will-change:transform}
.wheel-rim{fill:none;stroke:currentColor;stroke-width:46;opacity:.9}
.wheel-rim-detail{fill:none;stroke:#ecdfb7;stroke-width:2.5;opacity:.5}
.wheel-rim-inner{opacity:.35}
.wheel-spokes{fill:currentColor;opacity:.9}
.wheel-hub{fill:currentColor;stroke:#ecdfb7;stroke-width:3;fill-opacity:.75}
.wheel-hub-detail{fill:none;stroke:#ecdfb7;stroke-width:2;opacity:.6}
.wheel-pin{fill:var(--gold);opacity:.65}
@media(max-width:650px){.steering-wheel-hud{--wheel-size:clamp(300px,52vh,460px);top:64%;opacity:.4}}

.flare-toggle:disabled{opacity:.5;cursor:default}
.cabin-active .ship-actions>.flare-toggle{display:flex}
.using-cannon .ship-actions>.flare-toggle{display:none}

.cabin-active .ship-actions>.mine-toggle{display:flex}
.mine-toggle:disabled{opacity:.5;cursor:default}
#scene-menu{position:fixed;inset:0;z-index:11;background:#153338;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:16px}
#scene-menu[hidden]{display:none}
#scene-menu .loading-mark{margin-bottom:12px}
#scene-menu .eyebrow{font-size:9px;color:var(--gold)}
.scene-list{display:flex;flex-direction:column;gap:10px;width:min(360px,100%)}
.scene-list button{font:inherit;color:var(--cream);text-align:left;background:#ffffff0d;border:1px solid var(--line);border-radius:3px;padding:14px 16px;cursor:pointer;display:grid;gap:5px}
.scene-list button:hover,.scene-list button:focus-visible{border-color:var(--gold);background:#ffffff1a;outline:none}
.scene-list strong{font:20px Georgia,serif;font-weight:400}
.scene-list span{font-size:11px;color:var(--muted)}
#perf-meter{position:fixed;top:78px;left:16px;z-index:6;margin:0;padding:7px 9px;font:11px/1.45 ui-monospace,Consolas,monospace;color:#e9f3ee;background:#0b1a1ccc;border:1px solid var(--line);border-radius:3px;pointer-events:none;white-space:pre}
#perf-meter[hidden]{display:none}
/* First person: keep the world settings reachable (Esc frees the mouse, then click). */
.cabin-active .topbar{z-index:27}
.cabin-active #settings-toggle,.cabin-active #settings{visibility:visible}
.cabin-active #settings{z-index:27}
/* First person: the frame meter moves right, clear of the location and teleport box. */
.cabin-active #perf-meter{left:auto;right:16px;top:86px}
