@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:400 600;font-display:swap;src:url('./vendor/fonts/CormorantGaramond-Regular.woff2') format('woff2')}
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:400 600;font-display:swap;src:url('./vendor/fonts/CormorantGaramond-Italic.woff2') format('woff2')}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:400 700;font-display:swap;src:url('./vendor/fonts/DMSans.woff2') format('woff2')}
:root{--ivory:#f8efda;--gold:#dec18a;--ink:#183132;--muted:#b9bba9;--serif:'Cormorant Garamond',Georgia,serif;--sans:'DM Sans',system-ui,sans-serif;color-scheme:dark;font-family:var(--sans)}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#263d40;color:var(--ivory)}button{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:2px solid #fff2bf;outline-offset:5px}button:hover{filter:brightness(1.1)}[hidden]{display:none!important}#scene{position:fixed;inset:0;width:100%;height:100%;display:block;outline:none}.film-grain{pointer-events:none;position:fixed;inset:0;z-index:1;opacity:.038;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.92' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.6' filter='url(%23n)'/%3E%3C/svg%3E")}.vignette{position:fixed;inset:0;pointer-events:none;z-index:1;background:radial-gradient(ellipse at 58% 42%,transparent 35%,#0d26262b 100%)}body[data-phase=menu] .vignette{background:linear-gradient(90deg,#102827eb 0%,#122b2acc 18%,#142d2a69 39%,transparent 70%),linear-gradient(0deg,#1128268c,transparent 32%)}#loading{position:fixed;inset:0;background:#183132;z-index:40;display:grid;place-content:center;text-align:center;transition:opacity .6s}#loading .loading-mark{font-size:52px;color:var(--gold)}#loading p{font:italic 32px var(--serif)}#loading span{font-size:9px;letter-spacing:3px}#menu{position:fixed;inset:0;z-index:3;padding:42px 5.3vw;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between}#menu button{pointer-events:auto}.edition{display:flex;align-items:center;gap:17px;font-size:10px;letter-spacing:2.5px}.edition-mark{font:23px var(--serif);color:var(--gold);width:40px;height:40px;border:1px solid #ddc18b55;display:grid;place-items:center}.edition-rule{width:64px;height:1px;background:#dec18a50}.menu-copy{margin-top:16px;max-width:470px}.eyebrow{font-size:10px;letter-spacing:2.3px;font-weight:500;color:var(--gold);line-height:1.5}h1{font:500 clamp(78px,7.9vw,132px)/.81 var(--serif);letter-spacing:-5px;margin:25px 0 28px}h1 em{font-weight:400;color:#e9d2a5}p{line-height:1.7}.tagline{font-size:15px;line-height:1.8;color:#e6e1d1;font-weight:400;letter-spacing:.2px;margin:0 0 28px}.menu-actions{display:grid;gap:10px;max-width:310px}.primary,.secondary{display:flex;align-items:center;justify-content:space-between;gap:20px;width:100%;border-radius:2px;min-height:52px;padding:15px 20px;text-align:left;font-size:12px;letter-spacing:.3px;transition:background .2s,transform .2s}.primary{background:var(--gold);color:#173131;border:1px solid var(--gold);font-weight:700}.primary:hover{background:#ebd3a7;transform:translateY(-1px)}.primary span{font-size:20px;font-weight:400}.secondary{background:#17313135;border:1px solid #e6d8ba44;color:var(--ivory)}.secondary:hover{background:#17313188}.menu-note{font-size:8px;letter-spacing:1.7px;color:#c5c5b3;margin:18px 0 0}.menu-footer{display:flex;align-items:center;gap:35px;font-size:9px;letter-spacing:1.8px}.text-button{border:0;background:none;color:var(--ivory);font-size:10px;padding:10px 0;letter-spacing:.6px}.text-button span{padding-left:10px}.location-card{position:absolute;right:5.3vw;bottom:62px;text-align:right}.location-card>span:first-child{font-size:9px;letter-spacing:2px;color:#fbf1d7}.location-card strong{display:block;font:italic 28px/1.1 var(--serif);margin-top:14px;text-shadow:0 2px 12px #183132}.location-line{display:block;width:42px;height:1px;margin:16px 0 0 auto;background:var(--gold)}#hud{position:fixed;inset:0;z-index:4;pointer-events:none}.hud-top{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;padding:28px 32px;background:linear-gradient(180deg,#102624b0,transparent)}.chapter-card{max-width:470px;text-shadow:0 2px 12px #10262480}.chapter-card .eyebrow{font-size:9px}.chapter-card h2{font:500 31px/1.1 var(--serif);margin:8px 0 5px;letter-spacing:-.4px}.chapter-card p{font-size:11px;margin:0;color:#f3ebd9}.progress-track{width:160px;height:2px;background:#f9e8c133;margin-top:15px}#progress-fill{height:100%;width:0;background:var(--gold);transition:width .25s}.hud-right{display:flex;align-items:center;gap:16px}#mode-label{font-size:8px;letter-spacing:1.8px}.icon-button{pointer-events:auto;width:42px;height:42px;background:#19373170;border:1px solid #e7d8b93b;border-radius:50%;font-size:16px;color:var(--ivory)}.controls-legend{position:absolute;left:50%;bottom:28px;transform:translateX(-50%);display:flex;gap:22px;white-space:nowrap;font-size:10px;color:#f6ecd5;background:#112925ad;backdrop-filter:blur(12px);padding:13px 22px;border:1px solid #f2d8a621;border-radius:3px}kbd{font:9px var(--sans);color:var(--gold);padding-right:6px;letter-spacing:1px}#toast{position:fixed;z-index:12;top:24%;left:50%;transform:translateX(-50%);color:var(--ivory);background:#153532dc;border:1px solid #d4b87b55;box-shadow:0 6px 25px #12282622;padding:12px 22px;max-width:min(420px,90vw);font-size:12px;text-align:center;pointer-events:none;transition:opacity .3s}#toast:empty{display:none}.modal-shell{position:fixed;inset:0;z-index:25;display:grid;place-items:center;background:#102421bb;backdrop-filter:blur(9px);padding:24px;overflow:auto}.modal{width:min(100%,450px);padding:38px;background:linear-gradient(145deg,#28453f,#173532);border:1px solid #d3bd8955;box-shadow:0 20px 120px #00151055;text-align:center}.modal h2{font:500 46px/.98 var(--serif);letter-spacing:-1px;margin:20px 0}.modal>p{font-size:12px;color:#e4e0cf}.modal .primary,.modal .secondary{margin-top:12px}.modal .eyebrow{font-size:9px;color:var(--gold)}.modal .small-note{font-size:10px;color:#b9c4b3;margin-top:20px;line-height:1.7}.scripture-note{font-size:9px!important;letter-spacing:.8px;color:var(--gold)!important}.finish-art{font:33px var(--serif);color:var(--gold);margin-bottom:16px}.finish-stats{display:flex;justify-content:center;gap:38px;border-top:1px solid #d4b97f30;border-bottom:1px solid #d4b97f30;padding:19px 0;margin:24px 0 10px}.finish-stats span{display:block;font:27px var(--serif)}.finish-stats small{font-size:7px;letter-spacing:1px;color:#c1cbb9;display:block;margin-top:7px}.help-modal{width:min(100%,510px);text-align:left}.help-modal h2{font-size:46px}.help-modal dl{font-size:11px}.help-modal dl>div{border-top:1px solid #d4b97f25;padding:10px 0}.help-modal dt{font-weight:600;color:var(--gold);margin-bottom:5px}.help-modal dd{margin:0;line-height:1.6;color:#dce3d2}#balance-meter{position:absolute;bottom:85px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:14px;font-size:8px;letter-spacing:1.2px;background:#12302dc9;padding:15px 18px;border-radius:4px}.balance-track{width:180px;height:6px;background:#986a5355;position:relative;border-radius:10px}.balance-safe{position:absolute;left:35%;width:30%;height:100%;background:#b8c99888}#balance-needle{position:absolute;left:50%;top:-4px;height:14px;width:3px;background:#fff0c9;transition:left .08s;border-radius:2px}#touch-controls{position:fixed;inset:auto 18px calc(18px + env(safe-area-inset-bottom));z-index:8;display:flex;justify-content:space-between;align-items:flex-end;pointer-events:none}#touch-controls button{pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;background:#153532bd;border:1px solid #eed4a261;color:#fff0d0;backdrop-filter:blur(6px);border-radius:8px;min-width:44px;min-height:44px;font-size:21px}.touch-move{display:grid;grid-template:repeat(2,46px)/repeat(3,46px);gap:5px}.touch-move [data-move=up]{grid-column:2}.touch-move [data-move=left]{grid-column:1;grid-row:2}.touch-move [data-move=down]{grid-column:2;grid-row:2}.touch-move [data-move=right]{grid-column:3;grid-row:2}.touch-actions{display:grid;gap:8px}.turn-row{display:flex;justify-content:flex-end;gap:8px}#interact-button,#rope-left,#rope-right{font-size:8px!important;letter-spacing:1px;padding:8px 12px}.rope-buttons{display:flex;gap:8px}body:not([data-phase=lowering]) .rope-buttons{display:none}body[data-phase=lowering] #interact-button,body[data-phase=lowering] .turn-row,body[data-phase=lowering] .touch-move{display:none}body[data-phase=lowering] #touch-controls{justify-content:center}body[data-phase=lowering] #rope-left,body[data-phase=lowering] #rope-right{width:120px;height:55px}body[data-phase=menu] #touch-controls{display:none!important}@media(max-width:700px){#menu{padding:25px 26px}.edition{font-size:8px;letter-spacing:1.6px}.edition-rule{display:none}.edition-mark{width:32px;height:32px;font-size:20px}.menu-copy{margin-top:50px}h1{font-size:85px;letter-spacing:-3px;margin-top:22px}.tagline{font-size:13px;margin-bottom:24px}.menu-actions{max-width:290px}.location-card{display:none}.menu-footer{font-size:7px;letter-spacing:1px;gap:25px}.menu-note{font-size:7px;letter-spacing:1.2px}.hud-top{padding:20px 18px;gap:10px}.chapter-card{max-width:280px}.chapter-card h2{font-size:25px}.chapter-card p{font-size:10px;max-width:260px}.hud-right{gap:5px}#mode-label{display:none}.controls-legend{display:none}.modal{padding:27px}.modal h2{font-size:40px}.modal-shell{padding:18px}.help-modal{margin:auto}#balance-meter{bottom:100px;font-size:7px;gap:8px;padding:12px}.balance-track{width:130px}#toast{top:27%;font-size:11px}}@media(max-height:550px){#menu{padding:19px 30px}.edition{font-size:8px}.edition-mark{width:28px;height:28px;font-size:18px}.menu-copy{margin:8px 0;max-width:450px}h1{font-size:65px;line-height:.83;margin:14px 0}.tagline{font-size:11px;line-height:1.5;margin:0 0 12px}.menu-actions{display:flex;max-width:470px;gap:8px}.menu-actions button{font-size:10px;min-height:41px;padding:9px 13px;width:auto;gap:16px}.menu-note{font-size:6px;margin:9px 0}.eyebrow{font-size:8px}.menu-footer{font-size:7px}.location-card{bottom:35px}.location-card strong{font-size:22px}.hud-top{padding:14px 20px}.chapter-card h2{font-size:24px}.chapter-card p{font-size:10px}.progress-track{margin-top:9px}.modal-shell{padding:15px}.modal{padding:20px 28px;max-height:calc(100dvh - 30px);overflow:auto}.modal h2{font-size:32px;margin:12px 0}.modal>p{font-size:11px}.finish-art{display:none}.finish-stats{margin:12px 0;padding:10px}.modal .small-note{margin-top:12px}.controls-legend{bottom:14px;padding:9px 16px}#balance-meter{bottom:80px}#touch-controls{bottom:12px}.touch-move{grid-template:repeat(2,42px)/repeat(3,42px)}#toast{top:31%}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
/* Separate-device two-player room UI */
.shared-keyboard{text-align:left;font-size:10px;padding:4px 0 0!important;min-height:22px}.room-modal{width:min(100%,470px);text-align:left;padding:30px 34px;max-height:calc(100dvh - 40px);overflow:auto}.room-modal h2{font-size:44px;margin:14px 0}.room-modal>p{font-size:12px}.room-modal .primary,.room-modal .secondary{margin-top:10px}.room-divider{display:flex;align-items:center;gap:10px;margin:24px 0 18px;color:#c9cfbd;font-size:8px;letter-spacing:1.5px}.room-divider:before,.room-divider:after{content:'';height:1px;background:#d3bd8940;flex:1}.room-modal label{display:block;font-size:10px;color:#d8d7c6;margin-bottom:6px}.room-join-row{display:flex;gap:8px;align-items:stretch}.room-join-row input{width:58%;min-width:0;background:#102d29;border:1px solid #d4ba7f66;color:var(--ivory);font:24px var(--serif);letter-spacing:5px;padding:11px 13px;border-radius:2px;text-transform:uppercase}.room-join-row input:focus{outline:2px solid var(--gold);outline-offset:2px}.room-join-row .secondary{width:42%;margin:0;justify-content:center}.room-modal button:disabled{opacity:.38;cursor:not-allowed;filter:none;transform:none}#room-error{background:#804b3d44;border:1px solid #cf8a694d;color:#ffcfb4;padding:10px 12px;font-size:11px;line-height:1.5}#room-code{font:500 43px var(--serif);letter-spacing:8px;margin:5px 0 0;color:#f5d9a1}#room-role{margin:0 0 14px;font-size:11px;color:#d9dfce}.player-slots{display:grid;grid-template-columns:1fr 1fr;gap:8px}.player-slots>div{padding:12px;border:1px solid #d4ba7f44;background:#102d2944;font-size:10px;line-height:1.6}#room-status{font-size:11px;min-height:18px;color:#e7ddc5}.room-bottom-actions{display:flex;justify-content:space-between;gap:14px;margin-top:9px}.room-connect-note{font-size:9px!important;line-height:1.6;color:#a9bead!important;border-top:1px solid #d4ba7f2a;padding-top:15px;margin-top:18px}.network-status{display:grid;text-align:right;gap:5px}#connection-badge{font-size:9px;font-weight:600;color:#e6d0a1}#partner-status{font-size:8px;color:#d6dfcd}.network-status>span{max-width:190px}body[data-online=true] #touch-controls .rope-buttons{display:none!important}body[data-online=true][data-phase=lowering] #interact-button{display:block!important;min-width:175px;height:54px;font-size:11px!important}body[data-online=true][data-phase=lowering] #touch-controls{justify-content:center}body[data-online=true] .controls-legend{font-size:9px}@media(max-width:700px){.room-modal{padding:25px;max-height:calc(100dvh - 30px)}.room-modal h2{font-size:38px}.network-status{max-width:96px}#connection-badge{font-size:8px}#partner-status{font-size:7px}.room-modal .primary,.room-modal .secondary{min-height:46px}#room-code{font-size:37px;letter-spacing:6px}.room-connect-note{font-size:8px!important}.menu-copy{margin-top:25px}}@media(max-height:550px){.menu-actions{flex-wrap:wrap;max-width:420px}.menu-actions .shared-keyboard{flex-basis:100%;width:auto}.room-modal{width:min(94vw,680px);padding:20px 28px}.room-modal h2{font-size:30px;margin:8px 0}.room-modal>p{font-size:10px;margin:8px 0}.room-modal .eyebrow{font-size:8px}.room-modal .primary,.room-modal .secondary{min-height:40px;padding:10px 14px}.room-divider{margin:13px 0}.room-connect-note{margin-top:10px!important;padding-top:8px}.room-bottom-actions{margin-top:4px}#room-code{font-size:32px}.player-slots>div{padding:8px}.room-modal #close-room-button{padding:3px 0}}
