@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-sans-latin-ext-400-normal-BtiwyxMk.woff2)format("woff2"),url(/assets/dm-sans-latin-ext-400-normal-BjWJ59Pq.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-sans-latin-400-normal-CW0RaeGs.woff2)format("woff2"),url(/assets/dm-sans-latin-400-normal-BwCSEQnW.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/dm-sans-latin-ext-500-normal-BJfUCQsA.woff2)format("woff2"),url(/assets/dm-sans-latin-ext-500-normal-DR84L5F-.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/dm-sans-latin-500-normal-B9HHJjqV.woff2)format("woff2"),url(/assets/dm-sans-latin-500-normal-Dr3UlScf.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/dm-sans-latin-ext-700-normal-CJIcxD6K.woff2)format("woff2"),url(/assets/dm-sans-latin-ext-700-normal-BLI3TTWz.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/dm-sans-latin-700-normal-DvUfVpUG.woff2)format("woff2"),url(/assets/dm-sans-latin-700-normal-CUSSCpQX.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Serif Display;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-serif-display-latin-ext-400-normal-p18AlW_x.woff2)format("woff2"),url(/assets/dm-serif-display-latin-ext-400-normal-B1toqZab.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Serif Display;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-serif-display-latin-400-normal-C5_t9oOD.woff2)format("woff2"),url(/assets/dm-serif-display-latin-400-normal-_kVFYEpx.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Parisienne;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/parisienne-latin-ext-400-normal-Dztwpsbx.woff2)format("woff2"),url(/assets/parisienne-latin-ext-400-normal-DZKaXAkd.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Parisienne;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/parisienne-latin-400-normal-21gANpEP.woff2)format("woff2"),url(/assets/parisienne-latin-400-normal-C9Kl9k4-.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink:#2c3a36;--ink-soft:#55625d;--paper:#f6f1e5;--card-bg:#fbf9ef;--sky:#f1efe7;--line:#d9dbce;--accent:#396c68;--accent-dark:#2c5551;--accent-2:#c0604f;--muted:#7d857c;--card:#fbf9eff2;--shadow:0 10px 30px #2c3a3624;--shadow-sm:0 3px 12px #2c3a361a;--radius:14px;--gutter:16px;--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px);--list-h:58px;--sans:"DM Sans", system-ui, -apple-system, sans-serif;--serif:"DM Serif Display", Georgia, serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;margin:0;overflow:hidden}body{background:radial-gradient(ellipse at 50% 40%, #f7f5ee 0%, var(--sky) 60%, #e8e5da 100%);background-color:var(--sky)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}button:focus-visible,a:focus-visible{outline:2px solid var(--accent-2);outline-offset:3px}[hidden]{display:none!important}h1,h2,h3{font-family:var(--serif);margin:0;font-weight:400}#app{position:fixed;inset:0;overflow:hidden}#scene{touch-action:none;outline:none;width:100%;height:100%;display:block;position:absolute;inset:0}#top,#rail,#owner-controls,#controls,#turn,#made-with,#loading,#error{touch-action:none}#place-list,.chips{touch-action:pan-x}.card,#room-stage,#lightbox{touch-action:pan-y}#turn{left:50%;bottom:calc(var(--safe-b) + var(--list-h) + 40px);z-index:6;pointer-events:none;align-items:center;gap:6px;display:flex;position:absolute;transform:translate(-50%)}#turn>*{pointer-events:auto}.turn-btn{background:var(--card);border:1px solid var(--line);width:44px;height:44px;box-shadow:var(--shadow-sm);color:var(--accent);border-radius:50%;place-items:center;display:grid}.turn-btn:active{transform:translateY(1px)}.turn-note{font:700 10px/1.2 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-dark);background:var(--card);border:1px solid var(--line);white-space:nowrap;border-radius:999px;max-width:220px;padding:6px 10px;transition:opacity .6s,max-width .6s,padding .6s;overflow:hidden}#turn.learned .turn-note{opacity:0;border-width:0;max-width:0;padding:6px 0}body[data-room] #turn,body.card-open #turn{display:none}.eyebrow{font:700 10px/1.4 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);align-items:center;gap:7px;margin:0;display:flex}.eyebrow-icon{letter-spacing:0;color:var(--accent-2);font-size:15px}.icon-btn{width:44px;height:44px;color:var(--ink-soft);border-radius:12px;flex-shrink:0;place-items:center;transition:background .2s,color .2s;display:inline-grid}.icon-btn:hover{color:var(--accent);background:#396c681a}.icon-btn:active{transform:translateY(1px)}#top{top:calc(var(--safe-t) + 12px);left:var(--gutter);right:var(--gutter);pointer-events:none;z-index:6;transition:opacity .3s,transform .3s;display:flex;position:absolute}body:not(.owner) #top{right:var(--gutter)}body.owner #top{right:calc(var(--gutter) + 150px)}#top>*{pointer-events:auto}.title-chip{background:var(--card);border:1px solid var(--line);max-width:100%;box-shadow:var(--shadow-sm);border-radius:16px;align-items:center;gap:2px;padding:2px 2px 2px 16px;display:flex}.title{font:400 22px/1.1 var(--title-font,var(--serif));letter-spacing:-.01em;color:var(--accent-dark);white-space:nowrap;text-overflow:ellipsis;padding:10px 0;overflow:hidden}#top.in-room .title-chip{opacity:.92}#top.in-room .title{font-size:18px}#owner-controls{top:calc(var(--safe-t) + 12px);right:var(--gutter);background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-sm);z-index:6;border-radius:16px;gap:2px;padding:2px;display:flex;position:absolute}.owner-btn.danger:hover{color:var(--accent-2);background:#c0604f1a}body[data-room] #owner-controls{display:none}@media (max-width:759px){body #top,body.owner #top{right:calc(var(--gutter) + 52px)}.title-chip{padding-right:16px}#top.in-room .title,body[data-style^=paris] #top.in-room .title{font-size:inherit}#top.in-room .dedication{display:block}#rail{left:var(--gutter);top:calc(var(--safe-t) + 70px);z-index:6;touch-action:none;flex-direction:column;align-items:flex-start;gap:8px;display:flex;position:absolute}.rail-btn,#rail #music{background:var(--card);border:1px solid var(--line);width:44px;height:44px;box-shadow:var(--shadow-sm);color:var(--ink-soft);border-radius:50%}#rail #music{width:auto;min-width:44px}.rail-btn:hover{background:var(--card);color:var(--accent)}#app>.share-btn{top:calc(var(--safe-t) + 15px);right:var(--gutter);z-index:6;position:absolute}body.panel-open #rail,body.card-open #rail,body.panel-open #app>.share-btn,body.card-open #app>.share-btn,body[data-room] #rail>.rail-btn{visibility:hidden}#controls,#turn{display:none}html.app-mode body #top{right:calc(var(--gutter) + 52px)}html.app-mode body.owner #top{right:calc(var(--gutter) + 104px)}html.app-mode .title-chip{padding-right:2px}html.app-mode .title-chip .share-btn,html.app-mode .title-chip .look-btn{display:none}#app-hud{top:calc(var(--safe-t) + 15px);right:var(--gutter);z-index:7;touch-action:none;flex-direction:row;align-items:center;gap:8px;display:flex;position:absolute}#app-hud #music{background:var(--card);border:1px solid var(--line);width:auto;min-width:44px;height:44px;box-shadow:var(--shadow-sm);color:var(--ink-soft);border-radius:999px}#app-hud .rail-btn{flex:none;place-items:center;display:grid}html.app-mode body.panel-open #app-hud #music,html.app-mode body.card-open #app-hud #music{visibility:visible}body[data-room] #app-hud .edit-btn{visibility:hidden}#app-hud .edit-btn.done{background:var(--accent);border-color:var(--accent);color:#f7f3e6}html.app-mode body.editing .title-chip>.icon-btn:not(.share-btn):not(.look-btn):not(.back-btn){display:none}html.app-mode body.editing .title-chip{padding-right:10px}.edit-sticker{color:#8a2f4c;font:700 10.5px/1.3 var(--sans);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;background:#f4c9d4;border-radius:999px;flex:none;margin:0 2px 0 8px;padding:3px 9px;transform:rotate(-3deg);box-shadow:0 1px #8a2f4c2e}body.editing #place-list,body.editing #speech-layer,body.editing #made-with,body.editing #place-card{display:none}#edit-pane{z-index:9;padding:12px 0 calc(var(--safe-b) + 10px);background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);touch-action:pan-x;border-bottom:0;border-radius:22px 22px 0 0;position:fixed;bottom:0;left:0;right:0}#edit-pane:not([hidden]){animation:.28s cubic-bezier(.2,.8,.2,1) both rise}.edit-tabs,.edit-row{scrollbar-width:none;touch-action:pan-x;padding:0 var(--gutter);scroll-padding:0 var(--gutter);display:flex;overflow-x:auto}.edit-tabs::-webkit-scrollbar{display:none}.edit-row::-webkit-scrollbar{display:none}.edit-tabs{gap:6px;padding-bottom:12px}.edit-tab{border:1px solid var(--line);min-height:40px;font:700 13px var(--sans);color:var(--ink-soft);white-space:nowrap;background:#f3f1e6;border-radius:999px;flex:none;padding:0 15px}.edit-tab[aria-selected=true]{background:var(--accent);border-color:var(--accent);color:#f7f3e6}.edit-row{gap:10px;padding-top:4px;padding-bottom:6px}.edit-tile{text-align:center;flex-direction:column;flex:none;align-items:center;gap:6px;width:76px;min-height:114px;padding:0 0 2px;transition:opacity .2s;display:flex}.edit-sw{border:1.5px solid var(--line);background-color:#f3f1e6;border-radius:12px;place-items:center;width:60px;height:60px;display:grid;position:relative}.edit-sw.room{background:#ebe7d8}.edit-emoji{font-size:28px;line-height:1}.edit-tile[aria-pressed=true] .edit-sw{box-shadow:0 0 0 2.5px var(--card), 0 0 0 5px var(--accent)}.edit-badge{background:var(--accent);color:#fff;border:2px solid var(--card);border-radius:50%;place-items:center;width:20px;height:20px;display:none;position:absolute;top:-7px;right:-7px}.edit-tile[aria-pressed=true] .edit-badge{display:grid}.edit-label{max-width:76px;font:600 12px/1.25 var(--sans);color:var(--ink);overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.edit-sub{letter-spacing:.04em;max-width:76px;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:-4px;font-size:10px;overflow:hidden}#edit-pane.busy .edit-tile{opacity:.45;pointer-events:none}#edit-pane.busy .edit-tile.saving{opacity:1}#edit-pane.busy .edit-tab{pointer-events:none}.edit-spin{border:2.5px solid #ffffffb3;border-top-color:var(--accent);background:#fbf9ef99;border-radius:50%;width:22px;height:22px;animation:.8s linear infinite edit-spin;position:absolute}.edit-foot{min-height:46px;padding:0 var(--gutter);align-items:center;margin-top:6px;display:flex}.edit-msg,.edit-hint{color:var(--ink-soft);margin:0;font-size:13px}.edit-acts{gap:8px;width:100%;display:flex}.edit-act{border:1.5px solid var(--line);min-height:44px;color:var(--ink);font:700 14px var(--sans);background:#f3f1e6;border-radius:999px;flex:1;justify-content:center;align-items:center;gap:7px;padding:0 14px;text-decoration:none;display:inline-flex}.edit-act svg{width:16px;height:16px}.edit-act.danger{color:#b3264f}}@keyframes edit-spin{to{transform:rotate(360deg)}}.card{left:var(--gutter);right:var(--gutter);bottom:calc(var(--safe-b) + var(--list-h) + 38px);max-width:420px;max-height:calc(100dvh - var(--safe-t) - var(--list-h) - 130px);border-radius:var(--radius);background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);z-index:8;scrollbar-width:thin;padding:18px 18px 16px;position:absolute;overflow:auto}.card.rise,#info-card:not([hidden]),#look-card:not([hidden]){animation:.28s cubic-bezier(.2,.8,.2,1) both rise}.card-close{position:absolute;top:6px;right:6px}.card h2{letter-spacing:-.01em;color:var(--accent-dark);margin:6px 44px 8px 0;font-size:28px;line-height:1.08}.card .desc,.card .blurb{color:var(--ink-soft);margin:0 0 10px;font-size:14px;line-height:1.55}.card .when{color:var(--muted);margin:0 0 14px;font-size:12px}.primary{background:var(--accent);color:#f7f3e6;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:48px;padding:12px 16px;font-size:14px;font-weight:700;transition:background .2s,transform .1s;display:flex;box-shadow:0 3px #2c555140}.primary:hover{background:var(--accent-dark)}.primary:active{transform:translateY(1px)}.episodes{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.episode{border:1px solid var(--line);min-height:44px;color:var(--ink);background:#f3f1e6;border-radius:12px;align-items:center;gap:7px;padding:8px 13px;font-size:13px;font-weight:500;display:inline-flex}.episode svg{width:14px;height:14px;color:var(--accent-2)}.episode:hover{background:#e4eadb}.people{flex-wrap:wrap;gap:6px 14px;margin:4px 0 12px;padding:0;font-size:13px;font-weight:700;list-style:none;display:flex}.people li{align-items:center;gap:6px;display:flex}.people li.resident{color:var(--muted);font-weight:500}.people .dot{background:var(--muted);border-radius:50%;width:9px;height:9px}.how{border-top:1px solid var(--line);color:var(--ink-soft);gap:4px;margin:0;padding:12px 0 0;font-size:13px;line-height:1.5;list-style:none;display:grid}.how b{color:var(--ink)}#info-card{top:calc(var(--safe-t) + 70px);bottom:auto}body.panel-open #music{visibility:hidden}#look-card{top:calc(var(--safe-t) + 70px);bottom:auto}.look-row{margin-top:12px}.look-title{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:0 0 6px;font-size:12px;font-weight:700}.look-opts{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:6px;display:grid}.look-opt{border:1.5px solid var(--line);min-height:44px;color:var(--ink);text-align:left;background:#f3f1e6;border-radius:12px;align-items:center;gap:8px;padding:6px 10px;font-size:13px;font-weight:600;display:flex}.look-opt:hover:not(:disabled){background:#e4eadb}.look-opt[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:#e4eadb}.look-opt:disabled{opacity:.6;cursor:progress}.look-sw{border-radius:7px;flex:none;width:22px;height:22px;box-shadow:inset 0 0 0 1px #2c3a3626}.look-msg{min-height:1.2em;color:var(--ink-soft);margin:10px 0 0;font-size:13px}#letters-card{top:calc(var(--safe-t) + 70px);bottom:auto}#letters-card:not([hidden]){animation:.28s cubic-bezier(.2,.8,.2,1) both rise}.letter-write{margin-top:4px}.letter-input{resize:none;border:1.5px solid var(--line);width:100%;min-height:72px;font:inherit;color:var(--ink);background:#fffdf6;border-radius:12px;padding:10px 12px;font-size:16px;line-height:1.4;display:block}.letter-input:focus{border-color:var(--accent);outline:none}.letter-row{justify-content:space-between;align-items:center;gap:10px;margin-top:8px;display:flex}.letter-count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.letter-send{background:var(--accent);color:#f7f3e6;border-radius:12px;min-height:44px;padding:10px 20px;font-size:14px;font-weight:700;box-shadow:0 3px #2c555140}.letter-send:hover:not(:disabled){background:var(--accent-dark)}.letter-send:disabled{opacity:.5;cursor:default;box-shadow:none}.letters{gap:8px;margin:4px 0 0;padding:0;list-style:none;display:grid}.letter{border:1px solid var(--line);background:#f3f1e6;border-radius:12px;padding:10px 12px;position:relative}.letter.unread{border-color:var(--accent-2);box-shadow:inset 3px 0 0 var(--accent-2);background:#fffdf6}.letter-head{align-items:baseline;gap:8px;margin:0 0 3px;font-size:13px;display:flex}.letter-when{color:var(--muted);font-size:12px}.letter-new{background:var(--accent-2);color:#fff8ee;letter-spacing:.03em;text-transform:uppercase;border-radius:99px;margin-left:auto;padding:1px 8px;font-size:11px;font-weight:700}.letter-text{color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:14px;line-height:1.5}.letter-del{min-height:28px;color:var(--muted);text-underline-offset:2px;margin-top:4px;font-size:12px;text-decoration:underline}.letter-del:hover{color:var(--accent-2)}.letters-empty{color:var(--muted);text-align:center;padding:14px 4px;font-size:14px}#place-list{left:0;right:0;bottom:calc(var(--safe-b) + 28px);z-index:7;position:absolute}.chips{padding:4px var(--gutter) 6px;scroll-padding:0 var(--gutter);scrollbar-width:none;scroll-snap-type:x proximity;gap:8px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chip{scroll-snap-align:start;height:var(--list-h);background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-sm);text-align:left;border-radius:14px;flex-shrink:0;align-items:center;gap:10px;padding:6px 14px 6px 8px;transition:background .2s,border-color .2s,transform .15s;display:flex}.chip:active{transform:translateY(1px)}.chip-icon{width:40px;height:40px;color:var(--accent);background:#ebe7d8;border-radius:11px;place-items:center;font-size:20px;line-height:1;display:grid}.chip-text{flex-direction:column;gap:2px;min-width:0;display:flex}.chip-text b{white-space:nowrap;text-overflow:ellipsis;max-width:180px;font-size:13px;font-weight:700;overflow:hidden}.chip-text small{letter-spacing:.06em;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:180px;font-size:10px;overflow:hidden}.chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#f7f3e6}.chip[aria-pressed=true] .chip-icon{color:#fff;background:#ffffff29}.chip[aria-pressed=true] small{color:#d6e2dc}#made-with{left:0;right:0;bottom:calc(var(--safe-b) + 7px);text-align:center;font:500 11px var(--sans);color:var(--muted);z-index:6;pointer-events:none;position:absolute}#made-with a{color:inherit;pointer-events:auto;padding:4px 8px;text-decoration:none}#made-with b{color:var(--accent);font-weight:700}body[data-room] #made-with{display:none}body[data-time=night] #made-with{color:#fffaf0c7;text-shadow:0 1px 3px #00001473}body[data-time=night] #made-with b{color:#fff}#room-stage{left:var(--gutter);right:var(--gutter);bottom:calc(var(--safe-b) + 12px);border-radius:var(--radius);background:var(--card);border:1px solid var(--line);max-width:720px;box-shadow:var(--shadow);z-index:8;gap:10px;margin:0 auto;padding:14px 16px 12px;animation:.3s cubic-bezier(.2,.8,.2,1) both rise;display:grid;position:absolute}.stage-head{justify-content:space-between;align-items:flex-end;gap:12px;display:flex}#room-stage h2{color:var(--accent-dark);margin:4px 0 2px;font-size:24px;line-height:1.05}.episode-title{color:var(--muted);margin:0;font-size:13px;font-style:italic}.stage-meta{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:5px;display:flex}.progress{gap:4px;display:flex}.progress i{background:#dcdccf;border-radius:50%;width:7px;height:7px;transition:background .3s,transform .3s}.progress i.done{background:#9fb6ab}.progress i.now{background:var(--accent-2);transform:scale(1.25)}.count{color:var(--muted);letter-spacing:.04em;font-size:11px}.line{border:1px solid var(--line);border-left:4px solid var(--speaker,var(--accent));min-height:50px;color:var(--ink);background:#fffdf4;border-radius:11px;padding:11px 14px;font-size:15px;line-height:1.45}.line.pop{animation:.25s both line-in}.line .speaker{color:var(--speaker,var(--accent));margin-right:8px;font-weight:700}.line .speaker:empty{display:none}.more{flex-wrap:wrap;gap:6px;display:flex}.actions{gap:8px;display:flex}.btn{border:1px solid var(--line);min-height:44px;color:var(--ink);background:#f3f1e6;border-radius:11px;justify-content:center;align-items:center;gap:8px;padding:10px 16px;font-size:14px;font-weight:500;transition:background .2s;display:inline-flex}.btn:hover{background:#e4eadb}.btn svg{width:17px;height:17px}.more .btn svg{color:var(--accent-2)}.actions .btn{flex:1}.primary-btn{background:var(--accent);border-color:var(--accent);color:#f7f3e6;font-weight:700}.primary-btn:hover{background:var(--accent-dark)}#speech-layer{pointer-events:none;z-index:5;position:absolute;inset:0;overflow:hidden}#speech-layer .bubble{width:max-content;max-width:min(200px,56vw);color:var(--ink);font:500 13px/1.35 var(--sans);text-align:left;border:1px solid color-mix(in srgb, var(--speaker,var(--accent)) 35%, #d7dacc);border-top:3px solid var(--speaker,var(--accent));will-change:transform;overflow-wrap:anywhere;background:#fffdf4f7;border-radius:12px;padding:7px 11px 8px;position:absolute;top:0;left:0;box-shadow:0 5px 16px #35452e24}#speech-layer .bubble:after{content:"";bottom:-6px;left:var(--tail-x,50%);border-right:1px solid color-mix(in srgb, var(--speaker,var(--accent)) 35%, #d7dacc);border-bottom:1px solid color-mix(in srgb, var(--speaker,var(--accent)) 35%, #d7dacc);background:#fffdf4;width:10px;height:10px;margin-left:-5px;position:absolute;transform:rotate(45deg)}#speech-layer .bubble[data-name]:before{content:attr(data-name);font:700 9.5px/1.2 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb, var(--speaker,var(--accent)) 80%, var(--ink));margin-bottom:2px;display:block}#speech-layer .bubble>*{pointer-events:none}#speech-layer .bubble.pop{animation:.22s cubic-bezier(.3,1.4,.5,1) both bubble-in}#speech-layer .bubble.out{opacity:0;transition:opacity .25s}body[data-room] #speech-layer .bubble{border-radius:13px;max-width:min(260px,66vw);padding:9px 13px 10px;font-size:15px}body[data-room] #speech-layer .bubble[data-name]:before{font-size:10px}#lightbox{z-index:20;padding:calc(var(--safe-t) + 56px) var(--gutter) calc(var(--safe-b) + 24px);-webkit-backdrop-filter:blur(6px);cursor:zoom-out;background:#26302cc7;place-items:center;animation:.2s both fade;display:grid;position:absolute;inset:0}#lightbox figure{flex-direction:column;align-items:center;gap:10px;max-width:min(100%,980px);max-height:100%;margin:0;display:flex}#lightbox img{max-width:100%;max-height:calc(100dvh - var(--safe-t) - var(--safe-b) - 160px);object-fit:contain;opacity:0;background:#e9dfca;border:10px solid #fbf9ef;border-radius:6px;transition:opacity .25s,transform .25s;display:block;transform:scale(.97);box-shadow:0 20px 60px #00000059}#lightbox img.ready{opacity:1;transform:none}#lightbox video{max-width:100%;max-height:calc(100dvh - var(--safe-t) - var(--safe-b) - 160px);cursor:auto;background:#1d2422;border:10px solid #fbf9ef;border-radius:6px;display:block;box-shadow:0 20px 60px #00000059}#lightbox figcaption{text-align:center;color:#f6f1e5}#lightbox .when{font:400 22px/1.2 var(--serif);margin:0}#lightbox .where{letter-spacing:.1em;text-transform:uppercase;color:#cfd6cd;margin:2px 0 0;font-size:12px}#lightbox .card-close{top:calc(var(--safe-t) + 8px);color:#f6f1e5;position:absolute;right:8px}#loading{z-index:30;background:var(--sky);flex-direction:column;justify-content:center;align-items:center;gap:14px;transition:opacity .6s;display:flex;position:absolute;inset:0}#loading.done{opacity:0;pointer-events:none}html.rn-arrive #loading{background:#eafaf1}html.rn-arrive #loading>*{visibility:hidden}#loading p{font:400 20px var(--serif);color:var(--accent-dark);margin:0}#loading p:after{content:"";text-align:left;width:1.2em;animation:1.4s steps(4,end) infinite dots;display:inline-block}.loading-mark{background:var(--accent);width:64px;height:64px;color:var(--paper);font:400 36px/1 var(--serif);border-radius:20px;place-items:center;animation:1.1s ease-in-out infinite hop;display:grid;box-shadow:0 8px #2c5551,0 14px 30px #2c555140}.toast{left:50%;top:calc(var(--safe-t) + 72px);z-index:25;opacity:0;background:var(--ink);max-width:calc(100% - 32px);color:var(--paper);box-shadow:var(--shadow);pointer-events:none;border-radius:12px;padding:10px 16px;font-size:13px;transition:opacity .25s,transform .25s;position:absolute;transform:translate(-50%,-8px)}.toast.show{opacity:1;transform:translate(-50%)}#error{z-index:40;padding:var(--gutter);background:var(--sky);place-items:center;display:grid;position:absolute;inset:0}.error-box{text-align:center;max-width:420px}.error-box h1{font:400 30px/1.15 var(--serif);color:var(--accent-dark);margin:0 0 8px}.error-box p{color:var(--ink-soft);line-height:1.5}.error-box .btn{margin-top:18px;padding:10px 22px;text-decoration:none}.title-chip.has-back{padding-left:2px}.title-chip .back-btn{color:var(--ink-soft)}.error-box pre{white-space:pre-wrap;text-align:left;color:var(--muted);max-height:40vh;font-size:12px;overflow:auto}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}}@keyframes bubble-in{0%{opacity:0;scale:.8}to{opacity:1;scale:1}}@keyframes line-in{0%{opacity:.3}}@keyframes hop{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}@media (min-width:760px){:root{--gutter:24px}.title{font-size:26px}.card{left:var(--gutter);width:400px;right:auto}#info-card,#look-card,#letters-card{top:calc(var(--safe-t) + 78px)}.chips{justify-content:safe center}#room-stage{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"head head""line actions""more more";align-items:center;column-gap:14px;display:grid}.stage-head{grid-area:head}.line{grid-area:line}.more{grid-area:more}.more:empty{display:none}.actions{grid-area:actions}.actions .btn{flex:none}#speech-layer .bubble{max-width:230px}body[data-room] #speech-layer .bubble{max-width:300px}}@media (max-height:640px){.card .desc,.card .blurb{font-size:13px}.card h2{font-size:24px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}body[data-style^=paris]{background:linear-gradient(180deg, var(--sky-top) 0%, var(--sky) 62%)}body[data-style^=paris] .title{letter-spacing:0;color:var(--accent-dark);padding:7px 2px 3px 0;font-size:28px;line-height:1}body[data-style^=paris] #top.in-room .title{font-size:25px}.title-stack{flex-direction:column;min-width:0;padding:2px 0 6px;display:flex}.dedication{font:700 9.5px/1.2 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dedication:before{content:"♥";color:var(--accent-2);letter-spacing:0;margin-right:6px}#top.in-room .dedication{display:none}body[data-style^=paris] #music{top:calc(var(--safe-t,0px) + 86px)}#controls{top:calc(var(--safe-t) + 12px);right:var(--gutter);z-index:6;max-width:calc(100vw - 2 * var(--gutter));background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-sm);color:var(--ink);border-radius:16px;position:absolute}#controls[hidden],body[data-room] #controls{display:none}.controls-toggle{min-width:44px;height:44px;color:var(--ink-soft);border-radius:16px;padding:0 14px;font-size:15px;font-weight:600;line-height:1}#controls.open .controls-toggle{text-align:left;letter-spacing:.08em;text-transform:uppercase;width:100%;color:var(--accent);white-space:pre;font-size:12px}.controls-list{grid-template-columns:auto auto;gap:6px 14px;margin:0;padding:0 16px 14px;font-size:13px;line-height:1.3;display:grid}.controls-list dt{color:var(--ink);font-weight:600}.controls-list dd{color:var(--ink-soft);margin:0}.owner-row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.owner-act{border:1.5px solid var(--line,#00000026);min-height:38px;color:inherit;font:600 13px var(--sans);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:0 14px;text-decoration:none;display:inline-flex}.owner-act svg{width:15px;height:15px}.owner-act.danger{color:#b3264f}.owner-act.danger.solid{color:#fff;background:#b3264f;border-color:#b3264f}.owner-act:disabled{opacity:.5;cursor:default}.sheet{z-index:40;background:#14181c73;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.sheet-card{background:var(--card-solid,#fffdf8);width:min(380px,100%);color:var(--ink,#2c3a36);border-radius:22px;padding:22px;animation:.22s cubic-bezier(.2,.8,.2,1) both rise;box-shadow:0 20px 60px #00000040}.sheet-card h2{margin:0;font-size:22px}.sheet-card ul{opacity:.85;margin:12px 0 0;padding-left:1.2em;font-size:14px;line-height:1.5}.sheet-err{color:#b3264f;margin:10px 0 0;font-size:13px}.sheet-err:empty{display:none}.sheet-btns{gap:10px;margin-top:18px;display:flex}.sheet-btn{border:1.5px solid var(--line,#00000026);min-height:46px;color:inherit;font:700 14px var(--sans);cursor:pointer;background:0 0;border-radius:999px;flex:1}.sheet-btn.danger{color:#fff;background:#b3264f;border-color:#b3264f}.sheet-btn:disabled{opacity:.5}
