:root{--ink:#fff6e8;--ink-dim:#fff6e8bd;--ink-faint:#fff6e875;--gold:#e8c27a;--gold-bright:#f6dca4;--gold-line:#e8c27a8c;--glass:#120d0a80;--glass-edge:#f6dca438;--serif:"Cormorant Garamond", "Iowan Old Style", "Palatino Linotype", Georgia, serif;--caps:"Cinzel", "Trajan Pro", Georgia, serif;--shadow:0 1px 18px #2812048c, 0 0 2px #28120466;--ease:cubic-bezier(.22, .61, .36, 1);--lb:12.8vh}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);font-family:var(--serif);-webkit-font-smoothing:antialiased;background:#0b0d14;margin:0;overflow:hidden}#app,#app canvas{cursor:grab;width:100%;height:100%;display:block;position:fixed;inset:0}#app canvas:active{cursor:grabbing}body.lens #app canvas{cursor:crosshair}#hud{pointer-events:none;text-shadow:var(--shadow);-webkit-user-select:none;user-select:none;position:fixed;inset:0}kbd{min-width:1.65em;font-family:var(--caps);text-align:center;text-shadow:none;color:var(--ink);background:#140c0638;border:1px solid #fff6e857;border-bottom-width:2px;border-radius:4px;margin:0 .12em;padding:0 .42em;font-size:10.5px;line-height:1.75;display:inline-block}#loading{z-index:50;transition:opacity 2.2s var(--ease) .2s, visibility 0s linear 2.5s;background:radial-gradient(at 50% 45%,#2a2019 0%,#120d0b 60%,#09080a 100%);place-content:center;justify-items:center;gap:26px;display:grid;position:absolute;inset:0}#loading.gone{opacity:0;visibility:hidden}#hud.instant #loading,#hud.instant #title,#hud.instant #begin{transition:none!important}#loading .emblem{width:120px;height:120px}#loading .e-ring{stroke-dasharray:620;stroke-dashoffset:620px;animation:draw 2.8s var(--ease) infinite}#loading .e-ring:nth-of-type(2){animation-delay:.12s}#loading .e-ring:nth-of-type(3){animation-delay:.24s}#loading .e-ring:nth-of-type(4){animation-delay:.36s}#loading .e-ring:nth-of-type(5){animation-delay:.48s}#loading .e-ring:nth-of-type(6){animation-delay:.6s}#loading .e-ring:nth-of-type(7){animation-delay:.72s}#loading p{font-family:var(--caps);letter-spacing:.5em;text-transform:uppercase;color:var(--gold);opacity:.8;margin:0;font-size:11px;animation:2.8s ease-in-out infinite breathe}@keyframes draw{0%{stroke-dashoffset:620px;opacity:.2}45%{stroke-dashoffset:0;opacity:1}80%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:-620px;opacity:.2}}.emblem{overflow:visible}.emblem .e-ring{fill:none;stroke:var(--gold);stroke-width:.9px;opacity:.75}.emblem .e-wall{stroke-width:1.8px;opacity:.95}.emblem .e-water{fill:#e8c27a1f}.emblem .e-canal{stroke:var(--gold);stroke-width:.9px;opacity:.8}.emblem .e-core{fill:#fff4d6;filter:drop-shadow(0 0 4px #ffd79a)drop-shadow(0 0 10px #ffd79acc)}#title{text-align:center;opacity:0;width:min(92vw,820px);transition:opacity 2.4s var(--ease), transform 3s var(--ease), filter 2.4s var(--ease);position:absolute;top:31%;left:50%;transform:translate(-50%,-50%)}#title:before,#intro-card:before,#finale:before{content:"";z-index:-1;background:radial-gradient(closest-side,#2e18083d,#2e18081a 50%,#0000);width:150%;height:190%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}#hud.ready #title{opacity:1}#title.gone,#hud.ready #title.gone{opacity:0;filter:blur(6px);transform:translate(-50%,-56%)}#title .emblem{filter:drop-shadow(0 1px 10px #3c1e0873);width:clamp(64px,7vw,92px);height:clamp(64px,7vw,92px);margin-bottom:18px;animation:120s linear infinite turn}@keyframes turn{to{transform:rotate(360deg)}}#title .eyebrow{font-family:var(--caps);letter-spacing:.46em;text-transform:uppercase;color:var(--gold-bright);text-shadow:0 0 14px #321806b3,0 1px 2px #32180699;padding-left:.46em;font-size:clamp(10px,.95vw,13px)}#title h1{font-family:var(--caps);letter-spacing:.22em;background:linear-gradient(#fffaf0 0%,#fbe7c2 55%,#e8c27a 100%);color:#0000;filter:drop-shadow(0 2px 18px #3216048c);text-shadow:none;-webkit-background-clip:text;background-clip:text;margin:.22em 0 .18em;padding-left:.22em;font-size:clamp(46px,7.4vw,112px);font-weight:400;line-height:1}.rule{justify-content:center;align-items:center;gap:12px;margin:0 auto .9em;display:flex}.rule span{background:linear-gradient(90deg, transparent, var(--gold-line));width:min(18vw,140px);height:1px}.rule span:last-child{background:linear-gradient(90deg, var(--gold-line), transparent)}.rule i{border:1px solid var(--gold);width:6px;height:6px;transform:rotate(45deg)}#title .lede{color:var(--ink);text-shadow:0 0 16px #321806b3,0 1px 2px #3218068c;margin:0;font-size:clamp(18px,1.75vw,25px);font-style:italic;font-weight:400}#begin{text-align:center;opacity:0;transition:opacity 1.6s var(--ease) .8s;position:absolute;bottom:9vh;left:50%;transform:translate(-50%)}#hud.ready #begin{opacity:1}#begin.gone,#hud.ready #begin.gone{opacity:0;transition-duration:.8s;transition-delay:0s}#begin .cta{font-family:var(--caps);letter-spacing:.4em;text-transform:uppercase;color:var(--ink);text-shadow:0 0 14px #321806cc,0 1px 2px #32180699;margin:0 0 1.1em;padding-left:.4em;font-size:13px;animation:3.4s ease-in-out infinite breathe}#begin .footnote{color:var(--ink-dim);text-shadow:0 0 12px #321806b3;margin:0;font-size:15px;font-style:italic}@keyframes breathe{0%,to{opacity:.35}50%{opacity:.95}}#letterbox .bar{height:var(--lb);transition:transform 1.6s var(--ease);will-change:transform;background:#050404;position:absolute;left:0;right:0}#letterbox .top{top:0;transform:translateY(-101%)}#letterbox .bottom{bottom:0;transform:translateY(101%)}#hud.lb-full #letterbox .top,#hud.lb-full #letterbox .bottom{transform:translateY(0)}#hud.lb-thin #letterbox .top{transform:translateY(-58%)}#hud.lb-thin #letterbox .bottom{transform:translateY(58%)}#veil{opacity:0;z-index:40;background:radial-gradient(at 50% 40%,#fff9ef 0%,#f4e6d2 55%,#e6d3bb 100%);transition:opacity 1.2s;position:absolute;inset:0}#veil.dark{background:#030305}#intro-card{text-align:center;width:max-content;max-width:94vw;position:absolute;top:29%;left:50%;transform:translate(-50%,-50%)}#intro-card .kicker,#intro-card h2,#intro-card .sub{opacity:0;filter:blur(5px);transition:opacity 2.2s var(--ease), transform 2.8s var(--ease), filter 2.2s var(--ease);transform:translateY(10px)}#intro-card .kicker{font-family:var(--caps);letter-spacing:.5em;text-transform:uppercase;color:var(--gold-bright);text-shadow:0 0 14px #321806bf,0 1px 2px #32180699;padding-left:.5em;font-size:clamp(10px,.95vw,13px)}#intro-card h2{font-family:var(--caps);letter-spacing:.12em;text-wrap:balance;text-shadow:0 2px 24px #32180699,0 1px 3px #32180680;margin:.36em 0 .38em;padding-left:.12em;font-size:clamp(28px,4.1vw,62px);font-weight:400;line-height:1.08}#intro-card .sub{color:var(--ink);text-shadow:0 0 16px #321806bf,0 1px 2px #3218068c;margin:0;font-size:clamp(17px,1.65vw,23px);font-style:italic}#hud.intro-title #intro-card .kicker,#hud.intro-title #intro-card h2{opacity:1;filter:none;transform:none}#hud.intro-title #intro-card h2{transition-delay:.35s}#hud.intro-sub #intro-card .sub{opacity:1;filter:none;transform:none}#clock{font-family:var(--caps);letter-spacing:.18em;opacity:0;transition:opacity 1.6s var(--ease);justify-items:end;display:grid;position:absolute;top:22px;right:30px}#clock .time{font-size:22px;line-height:1}#clock .arc{width:64px;height:20px;margin:7px 0 0;overflow:visible}#clock .arc path{fill:none;stroke:var(--gold-line);stroke-width:.8px;stroke-dasharray:1.5 2.2}#clock .arc line{stroke:#fff6e847;stroke-width:.6px}#clock .sun{background:#ffe7b8;border-radius:50%;width:7px;height:7px;margin:-3.5px -3.5px 0 0;transition:transform 1s linear,background 2s,box-shadow 2s;position:absolute;top:45px;right:29px;box-shadow:0 0 6px 2px #ffc878cc}#clock .sun.moon{background:#dfe6ff;box-shadow:0 0 6px 1px #b4c8ffb3}#clock .phase{text-transform:uppercase;color:var(--gold);letter-spacing:.26em;margin-top:5px;font-size:10.5px;display:block}#place{font-family:var(--caps);letter-spacing:.34em;text-transform:uppercase;white-space:nowrap;opacity:0;transition:opacity 1.8s var(--ease), transform 1.8s var(--ease);align-items:center;gap:18px;font-size:clamp(13px,1.25vw,17px);display:flex;position:absolute;top:15%;left:50%;transform:translate(-50%,8px)}#place:before,#place:after{content:"";background:linear-gradient(90deg, transparent, var(--gold-line));width:54px;height:1px}#place:after{background:linear-gradient(90deg, var(--gold-line), transparent)}#place .name{padding-left:.34em}#hud.started #clock{opacity:1}#hud.started #place.shown{opacity:.94;transform:translate(-50%)}#scrim{opacity:0;height:36vh;transition:opacity 1.6s var(--ease);background:linear-gradient(#0000,#0e080333 55%,#0e080375);position:absolute;bottom:0;left:0;right:0}#hud.captioning #scrim{opacity:1}#hud.lb-full #scrim,#hud.photo #scrim{opacity:0}#caption{text-align:center;opacity:0;width:min(88vw,940px);transition:opacity 1.4s var(--ease), bottom 1.6s var(--ease);position:absolute;bottom:9.5vh;left:50%;transform:translate(-50%)}#caption.shown{opacity:1}#caption.off{visibility:hidden}#caption .label{font-family:var(--caps);letter-spacing:.44em;text-transform:uppercase;color:var(--gold);margin-bottom:10px;padding-left:.44em;font-size:10.5px}#caption .label:before,#caption .label:after{content:"";vertical-align:middle;background:var(--gold-line);width:26px;height:1px;margin:0 14px .28em;display:inline-block}#caption .lines{display:grid}#caption .line{color:var(--ink);text-shadow:0 1px 3px #140a02bf,0 0 22px #140a0299;opacity:0;transition:opacity .9s var(--ease), transform 1.2s var(--ease);grid-area:1/1;margin:0;font-size:clamp(19px,1.72vw,26px);font-style:italic;font-weight:400;line-height:1.38;transform:translateY(6px)}#caption .line.on{opacity:1;transition-delay:.35s;transform:none}#hud.lb-full #caption{bottom:2.2vh}#hud.lb-thin #caption{bottom:4.5vh}#hint{color:var(--ink-dim);opacity:0;transition:opacity 1.4s var(--ease);gap:8px;font-size:15px;display:grid;position:absolute;bottom:24px;left:28px}#hud.started #hint{opacity:1}#hud.started #hint.hidden{opacity:0}#mode{align-items:baseline;gap:12px;display:flex}#mode:empty{display:none}#mode b{font-family:var(--caps);letter-spacing:.32em;text-transform:uppercase;color:var(--gold);font-size:11px;font-weight:500}#mode span{font-style:italic}#hint .keys{color:var(--ink-faint);font-size:14px}#hint .keys span{margin:0 4px}#minimap{aspect-ratio:1;opacity:0;width:clamp(132px,12vw,176px);transition:opacity 1.4s var(--ease), transform 1.4s var(--ease);filter:drop-shadow(0 4px 18px #0a060273);border-radius:50%;position:absolute;bottom:24px;right:26px}#minimap svg{width:100%;height:100%;display:block;overflow:visible}#hud.started #minimap{opacity:.94}#hud.started #minimap.hidden{opacity:0;transform:scale(.92)}.mm-land{fill:url(#mm-land);fill-opacity:.62}.mm-island{fill-opacity:.8}.mm-water{fill:#3fb2b0;fill-opacity:.62}.mm-bridge{stroke:#f3e2c2;stroke-width:14px;stroke-opacity:.55}.mm-rim{fill:none;stroke:var(--gold);stroke-width:8px;stroke-opacity:.85}.mm-tick{stroke:var(--gold);stroke-width:6px;stroke-opacity:.55}.mm-needle path{fill:var(--gold)}.mm-needle text{fill:var(--gold);font-family:var(--caps);font-size:84px;font-weight:600}.mm-crystal{fill:#fffaf0}.mm-route{fill:none;stroke:#fff3dc;stroke-width:9px;stroke-dasharray:2 26;stroke-linecap:round;stroke-opacity:.8;opacity:0;transition:opacity 1.2s}.mm-route-done{fill:none;stroke:#f3cf87;stroke-width:14px;stroke-linecap:round;opacity:0;transition:opacity 1.2s}#minimap.voyage .mm-route,#minimap.voyage .mm-route-done{opacity:1}.mm-boat-shape{fill:#fff6e2;stroke:#2a1a08;stroke-width:8px;stroke-linejoin:round}.mm-boat-halo{fill:#ffe2aa4d;transform-box:fill-box;transform-origin:50%;animation:2.6s ease-in-out infinite halo}.mm-distance{fill:var(--ink);font-family:var(--caps);letter-spacing:4px;paint-order:stroke;stroke:#0a141acc;stroke-width:12px;font-size:74px}#minimap:not(.far) .mm-distance{display:none}@keyframes halo{0%,to{opacity:.8;transform:scale(.85)}50%{opacity:.25;transform:scale(1.35)}}#lens-banner{border:1px solid var(--glass-edge);background:var(--glass);color:var(--ink-dim);white-space:nowrap;opacity:0;transition:opacity .6s var(--ease), transform .6s var(--ease);border-radius:999px;padding:8px 18px 9px;font-size:15px;font-style:italic;position:absolute;top:22px;left:50%;transform:translate(-50%,-8px)}#lens-banner b{font-family:var(--caps);letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-right:10px;font-size:10.5px;font-style:normal;font-weight:500}#lens-banner span{color:var(--ink-faint)}#lens-banner.shown{opacity:1;transform:translate(-50%)}#lens-card{border:1px solid var(--glass-edge);-webkit-backdrop-filter:blur(8px);opacity:0;visibility:hidden;width:340px;transition:opacity .35s var(--ease), visibility 0s linear .35s;will-change:transform;text-shadow:none;background:linear-gradient(#1c140dc7,#100b08d1);border-radius:3px;padding:16px 20px 18px;position:absolute;top:0;left:0;box-shadow:0 18px 50px #00000059,inset 0 1px #fff0d214}#lens-card:before{content:"";background:linear-gradient(90deg, transparent, var(--gold), transparent);height:1px;position:absolute;top:0;left:20px;right:20px}#lens-card.shown{opacity:1;visibility:visible;transition:opacity .35s var(--ease)}#lens-card.pinned{border-color:#f6dca480}#lens-card.swap .label,#lens-card.swap .canon{animation:lens-in .5s var(--ease)}#lens-card .source{font-family:var(--caps);letter-spacing:.3em;text-transform:uppercase;color:var(--gold);opacity:.85;font-size:9.5px}#lens-card .label{font-family:var(--caps);letter-spacing:.08em;color:var(--ink);margin:8px 0 10px;font-size:18px}#lens-card .canon{color:var(--ink-dim);margin:0;font-size:18px;font-style:italic;line-height:1.4}#lens-card .note{color:var(--ink-faint);border-top:1px solid #f6dca424;margin-top:10px;padding-top:9px;font-size:14px}#lens-card .note:before{content:"Interpretation —";font-family:var(--caps);letter-spacing:.22em;text-transform:uppercase;color:var(--gold);opacity:.8;font-size:9px}@keyframes lens-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}#toast{color:var(--ink);opacity:0;transition:opacity .8s var(--ease), transform .8s var(--ease);white-space:nowrap;font-size:18px;font-style:italic;position:absolute;bottom:26%;left:50%;transform:translate(-50%,6px)}#toast.shown{opacity:1;transform:translate(-50%)}#finale{text-align:center;opacity:0;width:max-content;max-width:94vw;transition:opacity 2.6s var(--ease);position:absolute;top:38%;left:50%;transform:translate(-50%,-50%)}#finale .kicker{font-family:var(--caps);letter-spacing:.5em;text-transform:uppercase;color:var(--gold);font-size:11px}#finale h2{font-family:var(--caps);letter-spacing:.1em;text-wrap:balance;text-shadow:0 2px 24px #0a0614b3;margin:.45em 0 .85em;padding-left:.1em;font-size:clamp(22px,2.9vw,42px);font-weight:400}#finale p{color:var(--ink-dim);margin:0;font-size:17px;font-style:italic}#hud.finale #finale{opacity:1}#help{opacity:0;visibility:hidden;transition:opacity .5s var(--ease), visibility 0s linear .5s;z-index:30;background:radial-gradient(#0806048c,#080604c7);place-items:center;display:grid;position:absolute;inset:0}#help.open{opacity:1;visibility:visible;transition:opacity .5s var(--ease)}#help .panel{border:1px solid var(--glass-edge);width:min(92vw,860px);text-shadow:none;transition:transform .6s var(--ease);background:linear-gradient(#1e160fdb,#0f0b08e6);padding:34px 44px 30px;transform:translateY(8px);box-shadow:0 30px 90px #00000080}#help.open .panel{transform:none}#help .kicker{font-family:var(--caps);letter-spacing:.46em;text-transform:uppercase;color:var(--gold);text-align:center;font-size:10.5px}#help h2{font-family:var(--caps);letter-spacing:.12em;text-align:center;margin:8px 0 26px;font-size:30px;font-weight:400}#help .cols{grid-template-columns:repeat(4,1fr);gap:28px;display:grid}#help h3{font-family:var(--caps);letter-spacing:.26em;text-transform:uppercase;color:var(--gold);border-bottom:1px solid #f6dca429;margin:0 0 12px;padding-bottom:8px;font-size:11px;font-weight:500}#help section>p{color:var(--ink-dim);margin:0 0 12px;font-size:15px;font-style:italic;line-height:1.35}#help dl{gap:7px;margin:0;display:grid}#help dt{color:var(--ink-faint);font-size:13px}#help dd{color:var(--ink);margin:-4px 0 4px;font-size:16px}#help .close{text-align:center;color:var(--ink-faint);margin:24px 0 0;font-style:italic}@media (max-width:760px){#help .cols{grid-template-columns:repeat(2,1fr)}}#photo-panel{border:1px solid var(--glass-edge);background:var(--glass);-webkit-backdrop-filter:blur(8px);text-shadow:none;opacity:0;visibility:hidden;pointer-events:auto;transition:opacity .5s var(--ease), transform .5s var(--ease), visibility 0s linear .5s;border-radius:4px;padding:12px 18px 14px;position:absolute;bottom:22px;left:50%;transform:translate(-50%,12px)}#hud.photo #photo-panel{opacity:1;visibility:visible;transition:opacity .5s var(--ease), transform .5s var(--ease);transform:translate(-50%)}#hud.photo #photo-panel.collapsed{opacity:0;visibility:hidden}#photo-panel .head{color:var(--ink-faint);white-space:nowrap;align-items:baseline;gap:14px;font-size:14px;font-style:italic;display:flex}#photo-panel .head b{font-family:var(--caps);letter-spacing:.3em;text-transform:uppercase;color:var(--gold);font-size:11px;font-style:normal;font-weight:500}#photo-panel .rows{flex-wrap:wrap;align-items:center;gap:8px 22px;margin-top:10px;display:flex}#photo-panel label{font-family:var(--caps);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim);align-items:center;gap:9px;font-size:10.5px;display:flex}#photo-panel label[hidden]{display:none}#photo-panel output{min-width:3.4em;font-family:var(--serif);letter-spacing:0;text-transform:none;color:var(--ink);font-size:15px}#photo-panel input[type=range]{width:130px;accent-color:var(--gold)}#photo-panel button{font-family:var(--caps);letter-spacing:.22em;text-transform:uppercase;color:var(--ink);border:1px solid var(--gold-line);cursor:pointer;background:#e8c27a24;border-radius:3px;padding:6px 12px;font-size:10.5px}#photo-panel button:hover{background:#e8c27a42}#hud.cinematic #clock,#hud.cinematic #place,#hud.cinematic #hint,#hud.cinematic #minimap{opacity:0}#hud.intro #caption .label{opacity:.9}#hud.photo #clock,#hud.photo #place,#hud.photo #hint,#hud.photo #minimap,#hud.photo #caption,#hud.photo #toast,#hud.photo #finale,#hud.photo #lens-banner,#hud.photo #lens-card,#hud.photo #letterbox,#hud.photo #help{opacity:0;visibility:hidden}
