:root{--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px)}:where(#app),.theme-hub{--bg-inner:var(--hub-bg-inner);--bg-mid:var(--hub-bg-mid);--bg-outer:var(--hub-bg-outer);--text:var(--hub-text);--text-soft:var(--hub-text-soft);--accent:var(--hub-accent);--glow:#ffaa5099}.theme-two-halves{--bg-inner:var(--seer-bg-inner);--bg-mid:var(--hub-bg-mid);--bg-outer:var(--listener-bg-outer);--accent:var(--seer-accent)}.theme-cartographers{--bg-inner:var(--carto-bg-inner);--bg-mid:var(--carto-bg-mid);--bg-outer:var(--carto-bg-outer);--text:var(--carto-text);--text-soft:var(--carto-text-soft);--accent:var(--carto-accent);--glow:#e8553f80}.theme-seer{--bg-inner:var(--seer-bg-inner);--bg-mid:var(--seer-bg-mid);--bg-outer:var(--seer-bg-outer);--text:var(--seer-text);--text-soft:var(--seer-text-soft);--accent:var(--seer-accent);--glow:#78b4ff99}.theme-listener{--bg-inner:var(--listener-bg-inner);--bg-mid:var(--listener-bg-mid);--bg-outer:var(--listener-bg-outer);--text:var(--listener-text);--text-soft:var(--listener-text-soft);--accent:var(--listener-accent);--glow:#ffa05a99}*{box-sizing:border-box}html,body{overscroll-behavior:none;color:#fff3de;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:#0b2a4a;height:100%;margin:0;font-family:Nunito,system-ui,sans-serif;overflow:hidden}body{position:fixed;inset:0}#app{color:var(--text);background:radial-gradient(ellipse 120% 70% at 50% 30%, var(--bg-inner) 0%, var(--bg-mid) 45%, var(--bg-outer) 100%);transition:background .35s;position:absolute;inset:0}.screen-game{padding:calc(var(--safe-top) + 10px) calc(var(--safe-right) + 12px) calc(var(--safe-bottom) + 8px) calc(var(--safe-left) + 12px);grid-template:"top""stage"minmax(0,1fr)"bottom"/minmax(0,1fr);gap:8px;display:grid}.hud-top{grid-area:top}#stage{touch-action:none;grid-area:stage;min-height:0;position:relative}#stage canvas{display:block;position:absolute;inset:0}.hud-bottom{grid-area:bottom}.hud{justify-content:space-between;align-items:center;gap:10px;display:flex}.hud-title{flex-direction:column;min-width:0;display:flex}.game-name{letter-spacing:2px;color:var(--text);text-shadow:0 0 14px var(--glow);white-space:nowrap;text-overflow:ellipsis;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:22px;font-weight:700;overflow:hidden}.moves{color:var(--text-soft);font-variant-numeric:tabular-nums;min-height:1.2em;font-size:12px}.hud-buttons{align-items:center;gap:10px;display:flex}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.icon-button,.text-button{color:#ffe2b0;background:#0a080e8c;border:1px solid #ffdcaa40;border-radius:14px;justify-content:center;align-items:center;min-width:44px;min-height:44px;display:inline-flex}.text-button{letter-spacing:1px;padding:0 16px;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:14px;font-weight:700}.icon-button>svg:not([width]){flex:none;width:22px;height:22px}.icon-button .cross,.icon-button[aria-pressed=true] .wave{display:none}.icon-button[aria-pressed=true] .cross{display:inline}.hint{color:var(--text-soft);font-size:13px}.version{color:#e8c99a8c;font-variant-numeric:tabular-nums;font-size:11px}@media (hover:hover) and (pointer:fine){.icon-button:hover,.text-button:hover{border-color:#ffdcaa99;box-shadow:0 0 18px #ffbe6e40}}@media (orientation:landscape) and (max-height:500px){.screen-game{grid-template:"top stage bottom"minmax(0,1fr)/minmax(120px,auto) minmax(0,1fr) minmax(120px,auto);gap:12px}.hud-top,.hud-bottom{flex-direction:column;justify-content:space-between;align-items:flex-start}.hud-bottom{text-align:right;align-items:flex-end}.hud-buttons{flex-direction:column;align-items:flex-start}.hint{max-width:140px}}@media (min-width:768px) and (min-height:600px){.screen-game{padding:calc(var(--safe-top) + 20px) calc(var(--safe-right) + 28px) calc(var(--safe-bottom) + 16px) calc(var(--safe-left) + 28px);gap:14px}.game-name{font-size:28px}.moves,.hint{font-size:14px}}.overlay{background:radial-gradient(#08070b59,#08070bcc);justify-content:center;align-items:center;padding:24px;animation:.4s ease-out fade-in;display:flex;position:absolute;inset:0}.overlay[hidden]{display:none}.overlay-card{text-align:center;background:linear-gradient(180deg, var(--bg-inner), var(--bg-mid));border:1px solid #ffdcaa4d;border-radius:22px;width:100%;max-width:340px;padding:24px 22px 20px;box-shadow:0 0 40px #ffaa504d,0 20px 40px #0009}.overlay-card h2{color:var(--text);text-shadow:0 0 16px var(--glow);margin:0 0 6px;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:22px}.overlay-card p{color:var(--text-soft);margin:0 0 18px}.primary-button{color:#2a1608;letter-spacing:1px;background:linear-gradient(#ffd592,#e08a2e);border:none;border-radius:14px;justify-content:center;align-items:center;width:100%;min-height:50px;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:15px;font-weight:700;text-decoration:none;display:flex;box-shadow:0 0 24px #ffaa5073,inset 0 -3px #0003}.fatal{text-align:center;color:var(--text);position:absolute;inset:auto 24px 40%}@keyframes fade-in{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.overlay{animation:none}}a.icon-button,a.text-button{text-decoration:none}.hud-lead{align-items:center;gap:10px;min-width:0;display:flex}.text-button.wide{width:100%;margin-top:10px}.overlay-card .primary-button[hidden]{display:none}.pill{min-height:32px;color:var(--text-soft);white-space:nowrap;background:#00000059;border:1px solid #ffffff2e;border-radius:999px;align-items:center;padding:0 12px;font-size:12px;display:inline-flex}.seam-button{min-height:48px;color:var(--text);letter-spacing:1px;background:#00000073;border:1px solid #ffffff38;border-radius:24px;align-items:center;gap:10px;padding:0 16px 0 12px;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:13px;font-weight:700;display:inline-flex;position:relative}.seam-half{width:12px;height:24px}.seam-seer{background:var(--seer-accent);box-shadow:0 0 10px var(--seer-accent);border-radius:12px 0 0 12px}.seam-listener{background:var(--listener-accent);box-shadow:0 0 10px var(--listener-accent);border-radius:0 12px 12px 0;margin-left:-10px}.theme-seer .seam-listener,.theme-listener .seam-seer{opacity:.35;box-shadow:none}.screen-menu{padding:calc(var(--safe-top) + 10px) calc(var(--safe-right) + 16px) calc(var(--safe-bottom) + 16px) calc(var(--safe-left) + 16px);flex-direction:column;align-items:center;gap:22px;display:flex;overflow-y:auto}.menu-top{justify-content:space-between;align-self:stretch;align-items:center;display:flex}.menu-title{text-align:center;margin-top:4vh}.wing-title{letter-spacing:3px;color:#0000;text-shadow:none;background:linear-gradient(90deg, var(--seer-accent), var(--listener-accent));-webkit-background-clip:text;background-clip:text;margin:0;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:clamp(30px,8vw,54px)}.tagline{color:var(--text-soft);letter-spacing:1px;margin:8px 0 0}.menu-footer{margin-top:auto}.modes{justify-content:center;gap:10px;width:100%;display:flex}.mode{letter-spacing:1px;background:#00000059;border:1px solid #fff3;border-radius:24px;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;min-width:0;max-width:200px;min-height:48px;padding:6px 18px;font-family:Fredoka,Nunito,system-ui,sans-serif;font-weight:700;display:inline-flex}.mode small{color:var(--text-soft);letter-spacing:0;font-family:Nunito,system-ui,sans-serif;font-size:11px;font-weight:400}.mode-on{border-color:var(--accent);box-shadow:0 0 18px color-mix(in srgb, var(--accent) 45%, transparent)}.mode:disabled{opacity:.55;cursor:default}.levels{grid-template-columns:minmax(0,1fr);gap:10px;width:100%;max-width:980px;margin:0;padding:0;list-style:none;display:grid}.lands-title{width:100%;max-width:980px;color:var(--accent);margin:18px 0 0;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:20px}.lands{grid-template-columns:minmax(0,1fr);gap:14px;width:100%;max-width:980px;display:grid}@media (min-width:720px){.lands{grid-template-columns:repeat(2,minmax(0,1fr))}}.endless{gap:10px;width:100%;max-width:980px;padding-bottom:12px;display:grid}.endless .lands-title{margin-bottom:0}.endless-line{color:var(--text-soft);margin:0;font-size:14px}.level-last{outline:3px solid var(--accent);outline-offset:3px}.endless-card .level-number{font-size:28px}.land{background:var(--land-bg);color:var(--land-text);border-radius:22px;padding:14px;box-shadow:0 6px 18px #00000040}.land-name{margin:0;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:20px}.land-line{opacity:.85;margin:4px 0 12px;font-size:14px;font-weight:600}.land .level{min-height:52px;color:var(--land-text);background:#ffffff8c;border-color:#ffffffb3}.land .level-number{color:var(--land-accent)}.land .level-tag{color:var(--land-text)}.level{min-height:64px;color:var(--text);background:linear-gradient(90deg,#10294ab3,#4a2208b3);border:1px solid #ffffff29;border-radius:18px;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 16px;text-decoration:none;display:grid}.level-number{text-align:center;color:var(--accent);font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:22px;font-weight:700}.level-name{font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:16px;font-weight:700}.level-tag{color:var(--text-soft);font-size:12px}.level-locked{opacity:.45}@media (hover:hover) and (pointer:fine){a.level{transition:transform .15s,box-shadow .15s}a.level:hover{box-shadow:0 0 28px color-mix(in srgb, var(--accent) 35%, transparent);transform:translateY(-2px)}.seam-button:hover{border-color:#ffffff80}}@media (orientation:landscape) and (max-height:500px){.screen-menu{gap:12px}.menu-title{margin-top:0}.levels{grid-template-columns:repeat(2,minmax(0,1fr))}.hud-lead{flex-direction:column;align-items:flex-start}.seam-button{border-radius:18px;flex-direction:column;padding:10px}}@media (min-width:768px) and (min-height:600px){.screen-menu{padding-left:calc(var(--safe-left) + 32px);padding-right:calc(var(--safe-right) + 32px);gap:30px}.menu-title{margin-top:8vh}.levels{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.level{min-height:84px}}@media (min-width:1200px) and (min-height:700px){.levels{grid-template-columns:repeat(4,minmax(0,1fr))}.level{text-align:left;grid-template-rows:auto auto auto;grid-template-columns:minmax(0,1fr);align-content:end;min-height:180px}.level-number{text-align:left;font-size:34px}}.role-sees,.pill[hidden]{display:none}.theme-seer .game-name,.theme-listener .game-name{font-size:18px}@media (min-width:600px){.role-sees{display:inline}}[hidden]{display:none!important}.field{text-align:left;color:var(--text-soft);flex-direction:column;gap:6px;font-size:13px;display:flex}input,select{font:inherit;min-height:48px;color:var(--text);-webkit-user-select:text;user-select:text;background:#0006;border:1px solid #ffffff40;border-radius:14px;padding:0 14px;font-size:16px}input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.field-hint{color:var(--text-soft);min-height:1em;margin:0;font-size:12px}.field-error{color:#ffb3a0;min-height:1em;margin:0;font-size:13px}.field-error:empty,.field-hint:empty{min-height:0}.join-form{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 10px;width:100%;max-width:420px;display:grid}.join-label{color:var(--text-soft);grid-column:1/-1;font-size:13px}.join-form input{text-transform:uppercase;letter-spacing:4px;font-weight:600}.join-form .field-error{grid-column:1/-1}.join-form .field-error:empty{display:none}.start-room{text-align:center;border-top:1px solid #ffffff1f;width:100%;max-width:420px;margin-top:8px;padding-top:18px}.start-room[hidden]{display:none}.start-room-title{color:var(--text);margin:0 0 4px;font-size:15px;font-weight:600}.start-room-hint{color:var(--text-soft);margin:0;font-size:13px}.screen-online{overflow-y:auto}.online-top{inset:calc(var(--safe-top) + 10px) calc(var(--safe-right) + 16px) auto calc(var(--safe-left) + 16px);z-index:2;position:absolute}.online-panel{min-height:100%;padding:calc(var(--safe-top) + 70px) calc(var(--safe-right) + 16px) calc(var(--safe-bottom) + 24px) calc(var(--safe-left) + 16px);justify-content:center;align-items:center;display:flex}.panel-card{text-align:center;background:linear-gradient(#0a1220d9,#140a05d9);border:1px solid #ffffff2e;border-radius:24px;flex-direction:column;gap:14px;width:100%;max-width:440px;padding:24px 20px;display:flex;box-shadow:0 20px 50px #0000008c}.panel-title{margin:0;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:22px}.panel-actions{flex-direction:column;gap:10px;display:flex}.primary-button:disabled{opacity:.45;box-shadow:none;cursor:default}.eyebrow{letter-spacing:2px;text-transform:uppercase;color:var(--text-soft);margin:0;font-size:12px}.room-code{letter-spacing:10px;background:linear-gradient(90deg, var(--seer-accent), var(--listener-accent));color:#0000;-webkit-user-select:text;user-select:text;-webkit-background-clip:text;background-clip:text;margin:-6px 0 0;padding-left:10px;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:44px;font-weight:700}.status-line{margin:0;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:18px}.lamp{background:radial-gradient(circle, #fff6e0 0%, var(--listener-accent) 35%, transparent 70%);border-radius:50%;width:56px;height:56px;margin:4px auto;animation:1.8s ease-in-out infinite lamp}.status-failed .lamp{opacity:.35;animation:none}@keyframes lamp{50%{opacity:.6;transform:scale(.8)}}.lobby-players{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.lobby-player{text-align:left;background:#0000004d;border:1px solid #ffffff24;border-radius:16px;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:60px;padding:8px 14px;display:grid;position:relative}.lobby-player[data-host]:after{content:attr(data-host);letter-spacing:1px;text-transform:uppercase;background:var(--accent);color:#10131a;border-radius:999px;padding:1px 8px;font-size:10px;position:absolute;top:-8px;right:12px}.player-orb{border-radius:50%;width:22px;height:22px}.role-seer .player-orb{background:var(--seer-accent);box-shadow:0 0 14px var(--seer-accent)}.role-listener .player-orb{background:var(--listener-accent);box-shadow:0 0 14px var(--listener-accent)}.player-text{flex-direction:column;min-width:0;display:flex}.player-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.player-name small{color:var(--text-soft);font-weight:400}.player-role,.player-state{color:var(--text-soft);font-size:12px}.player-state.is-ready{color:#b9f5c4}.screen-online>.screen-game{position:absolute;inset:0}.ping-bar{gap:8px;display:flex}.ping-button{width:48px;height:48px;color:var(--text);background:#00000073;border:1px solid #ffffff38;border-radius:50%;justify-content:center;align-items:center;padding:10px;display:inline-flex}.ping-button svg{width:100%;height:100%}.ping-danger{color:#ff9a7a}.ping-button[aria-pressed=true]{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 30%, #00000080);box-shadow:0 0 16px color-mix(in srgb, var(--accent) 60%, transparent)}.ping-armed #stage{cursor:crosshair}.screen-online .hud-bottom{flex-wrap:wrap;justify-content:center}.screen-online .hud-bottom .hint{text-align:center;width:100%}#chat-open{position:relative}.badge{background:var(--listener-accent);color:#1a0d05;border-radius:9px;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:700;line-height:18px;position:absolute;top:-4px;right:-4px}.banner,.toast{text-align:center;z-index:3;pointer-events:none;background:#000000bf;border:1px solid #fff3;border-radius:14px;max-width:min(92vw,460px);margin:0;padding:10px 16px;font-size:14px;position:absolute;left:50%;transform:translate(-50%)}.banner{top:calc(var(--safe-top) + 72px)}.toast{bottom:calc(var(--safe-bottom) + 130px)}.chat{z-index:4;max-height:55%;padding:12px calc(var(--safe-right) + 12px) calc(var(--safe-bottom) + 12px) calc(var(--safe-left) + 12px);background:#080a10f0;border-top:1px solid #fff3;border-radius:20px 20px 0 0;flex-direction:column;display:flex;position:absolute;bottom:0;left:0;right:0}.chat-head{justify-content:space-between;align-items:center;font-family:Fredoka,Nunito,system-ui,sans-serif;font-weight:700;display:flex}.chat-log{-webkit-user-select:text;user-select:text;flex-direction:column;flex:1;gap:6px;min-height:80px;margin:8px 0;padding:0;font-size:14px;list-style:none;display:flex;overflow-y:auto}.chat-line b{font-weight:600}.chat-line.role-seer b{color:var(--seer-accent)}.chat-line.role-listener b{color:var(--listener-accent)}.chat-form{grid-template-columns:minmax(0,1fr) auto;gap:8px;display:grid}@media (min-width:1024px){.chat{left:auto;top:calc(var(--safe-top) + 80px);bottom:calc(var(--safe-bottom) + 90px);width:320px;max-height:none;right:calc(var(--safe-right) + 20px);border:1px solid #fff3;border-radius:20px}}@media (orientation:landscape) and (max-height:500px){.ping-bar{flex-wrap:wrap;justify-content:flex-end;max-width:112px}.ping-button{width:44px;height:44px;padding:9px}.screen-online .hud-bottom .hint{display:none}.online-panel{padding-top:calc(var(--safe-top) + 12px)}.online-top{position:static}}@media (max-width:599px){.theme-seer .game-name,.theme-listener .game-name{letter-spacing:1px;font-size:15px}}.dialogue-backdrop,.dialogue-whisper{z-index:6;padding:16px calc(var(--safe-right) + 16px) calc(var(--safe-bottom) + 96px) calc(var(--safe-left) + 16px);justify-content:center;align-items:flex-end;display:flex;position:absolute;inset:0}.dialogue-backdrop{background:linear-gradient(#00000026,#0009);animation:.5s ease-out fade-in}.dialogue-whisper{pointer-events:none;padding-top:calc(var(--safe-top) + 74px);align-items:flex-start}.dialogue-whisper .dialogue{pointer-events:auto;max-width:420px;padding:12px 16px}.dialogue{width:100%;max-width:520px;box-shadow:0 0 40px color-mix(in srgb, var(--accent) 22%, transparent), 0 16px 40px #00000080;text-align:center;cursor:pointer;background:#06080ee0;border:1px solid #fff3;border-radius:20px;padding:20px 20px 16px}.dialogue-text p{color:var(--text);text-shadow:0 0 12px var(--glow);margin:0 0 6px;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:18px;line-height:1.5}.dialogue-in{animation:.6s ease-out story-in}@keyframes story-in{0%{opacity:0;transform:translateY(6px)}}.dialogue-next{min-height:44px;color:var(--text-soft);letter-spacing:1px;background:0 0;border:1px solid #ffffff4d;border-radius:22px;margin-top:10px;padding:0 22px;font-family:Fredoka,Nunito,system-ui,sans-serif;font-weight:700}.glyph-inline{vertical-align:-.35em;width:1.4em;height:1.4em;color:var(--accent);filter:drop-shadow(0 0 6px var(--glow));margin:0 .15em;display:inline-block}.glyph-inline svg{width:100%;height:100%}.story-line{font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:16px;color:var(--text)!important}#stage .coach{z-index:2;text-align:center;pointer-events:none;background:#000000b8;border:1px solid #fff3;border-radius:14px;width:max-content;max-width:min(92%,460px);padding:10px 14px;font-size:14px;line-height:1.4;animation:.3s ease-out fade-in;position:absolute;top:8px;left:50%;transform:translate(-50%)}.coach-tutorial{border-color:var(--accent)!important}.coach-step{letter-spacing:1px;text-transform:uppercase;color:var(--accent);font-size:11px;display:block}.coach-step:empty{display:none}.rules-overlay{z-index:7}.rules-card{max-width:460px;max-height:100%;overflow-y:auto}.rules-list{text-align:left;flex-direction:column;gap:10px;margin:0 0 16px;padding:0;list-style:none;display:flex}.rule{grid-template-columns:96px minmax(0,1fr);align-items:center;gap:14px;font-size:14px;display:grid}.rule img{border-radius:10px}@media (min-width:768px) and (min-height:600px){.rules-card{max-width:640px}.rules-list{grid-template-columns:1fr 1fr;display:grid}}@media (orientation:landscape) and (max-height:500px){.rules-list{grid-template-columns:1fr 1fr;display:grid}.dialogue-backdrop{padding-bottom:calc(var(--safe-bottom) + 16px)}}@media (prefers-reduced-motion:reduce){.dialogue-backdrop,.dialogue-in,#stage .coach{animation:none}}#stage:after{content:"";pointer-events:none;background:radial-gradient(ellipse 75% 70% at 50% 50%, transparent 55%, color-mix(in srgb, var(--bg-outer) 75%, transparent) 100%);z-index:1;position:absolute;inset:0}.draw-pad{z-index:3;cursor:crosshair;touch-action:none;width:100%;height:100%;position:absolute;inset:0}.drawing #stage{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--accent) 45%, transparent);border-radius:12px}.ping-draw[aria-pressed=true],.ping-button[aria-pressed=true]{border-color:var(--accent);box-shadow:0 0 14px color-mix(in srgb, var(--accent) 55%, transparent)}.shape-strip{vertical-align:middle;color:var(--accent);gap:6px;margin-left:8px;display:inline-flex}.shape-item{display:inline-flex}@media (max-width:420px){.ping-bar{gap:5px}.ping-button{width:44px;height:44px;padding:9px}.drawing .hint{max-width:none}}.dialogue-text p{font-family:Nunito,system-ui,sans-serif;font-size:21px;font-weight:600;line-height:1.45}.dialogue-whisper .dialogue-text p{font-size:17px}.story-line{font-family:Nunito,system-ui,sans-serif;font-size:19px;font-weight:600}.doorway{z-index:50;pointer-events:none;perspective:1200px;position:fixed;inset:0}.door-half{background:radial-gradient(ellipse 60% 40% at 50% 38%, #ffffff14, transparent 70%), repeating-linear-gradient(0deg, #00000038 0 1px, transparent 1px 46px), var(--door-color);width:50.5%;transition:transform 1.1s cubic-bezier(.6,0,.3,1),opacity 1.1s ease-in;position:absolute;top:0;bottom:0;box-shadow:inset 0 0 80px #0009}.door-left{--door-color:linear-gradient(90deg, var(--seer-bg-outer), var(--seer-bg-inner));transform-origin:0;border-right:1px solid color-mix(in srgb, var(--seer-accent) 50%, transparent);left:0}.door-right{--door-color:linear-gradient(270deg, var(--listener-bg-outer), var(--listener-bg-inner));transform-origin:100%;border-left:1px solid color-mix(in srgb, var(--listener-accent) 50%, transparent);right:0}.door-seam{background:linear-gradient(180deg, var(--seer-accent), #fff, var(--listener-accent));width:3px;transition:opacity .5s ease-out;animation:1.6s ease-in-out infinite seam-breathe;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 0 24px #fff}@keyframes seam-breathe{50%{opacity:.6}}.doorway-open .door-left{opacity:0;transform:rotateY(80deg)}.doorway-open .door-right{opacity:0;transform:rotateY(-80deg)}.doorway-open .door-seam{opacity:0}@media (prefers-reduced-motion:reduce){.door-half{transition:opacity .35s ease-out}.doorway-open .door-left,.doorway-open .door-right{transform:none}.door-seam{animation:none}}.quality-button{min-height:44px;padding:0 14px;font-size:12px}.side{display:none}.info-sheet{z-index:30;max-height:70%;padding:12px calc(var(--safe-right) + 16px) calc(var(--safe-bottom) + 16px) calc(var(--safe-left) + 16px);background:#080c16f5;border-top:1px solid #fff3;border-radius:20px 20px 0 0;flex-direction:column;animation:.22s ease-out info-sheet-up;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -10px 30px #00000059}.info-sheet[hidden]{display:none}@keyframes info-sheet-up{0%{opacity:0;transform:translateY(40%)}}@media (prefers-reduced-motion:reduce){.info-sheet{animation:none}}.info-sheet-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.info-sheet-title{margin:0;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:18px}.info-sheet-body{-webkit-overflow-scrolling:touch;gap:16px;margin-top:8px;display:grid;overflow-y:auto}.info-sheet .side{flex-direction:column;gap:10px;display:flex}@media (min-width:600px){.info-sheet-body{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));align-items:start}}@media (min-width:1024px) and (min-height:600px){.info-button,.info-sheet{display:none}}.fullscreen-button{display:none}@media (hover:hover) and (pointer:fine){.fullscreen-button{display:inline-flex}}@media (min-width:1024px) and (min-height:600px){.screen-game{grid-template-columns:clamp(220px,18vw,280px) minmax(0,1fr) clamp(240px,22vw,320px);grid-template-areas:"top top top""left stage right""bottom bottom bottom";gap:16px 24px;max-width:1760px;margin:0 auto}.side{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#04060c73;border:1px solid #ffffff1f;border-radius:20px;flex-direction:column;gap:10px;min-height:0;padding:16px;display:flex;overflow-y:auto}.side-left{grid-area:left}.side-right{grid-area:right}.chat-docked #chat-open,.chat-docked #chat-close{display:none}.side .chat{background:0 0;border:0;border-radius:0;flex:1;width:auto;min-height:220px;max-height:none;padding:0;position:static}}.side-title{letter-spacing:1.5px;text-transform:uppercase;color:var(--text-soft);justify-content:space-between;align-items:baseline;margin:6px 0 0;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:13px;display:flex}.side-count{letter-spacing:0;text-transform:none;opacity:.8;font-family:Nunito,system-ui,sans-serif;font-size:12px}.objectives{gap:8px;margin:0;padding:0;font-size:14px;line-height:1.35;list-style:none;display:grid}.objective{grid-template-columns:18px minmax(0,1fr);align-items:start;gap:8px;display:grid}.objective-mark{border:1.5px solid var(--accent);border-radius:50%;width:14px;height:14px;margin-top:2px}.objective-done{color:var(--text-soft)}.objective-done .objective-mark{background:var(--accent);box-shadow:0 0 10px var(--accent)}.objective-done span:last-child{text-decoration:line-through;-webkit-text-decoration-color:color-mix(in srgb, var(--accent) 60%, transparent);text-decoration-color:color-mix(in srgb, var(--accent) 60%, transparent)}.glyph-journal{grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.glyph-slot{aspect-ratio:1;color:#ffffff4d;border:1px dashed #ffffff2e;border-radius:12px;place-items:center;font-family:Fredoka,Nunito,system-ui,sans-serif;display:grid}.glyph-known{border-style:solid;border-color:color-mix(in srgb, var(--accent) 45%, transparent);color:var(--accent);filter:drop-shadow(0 0 6px color-mix(in srgb, var(--accent) 50%, transparent));padding:8px}.glyph-known svg{width:100%;height:100%}.half-card{min-height:64px;color:var(--text);text-align:left;font:inherit;cursor:pointer;background:#ffffff08;border:1px solid #ffffff24;border-radius:16px;grid-template-columns:14px minmax(0,1fr) auto;grid-template-areas:"dot name here""dot sees sees";align-items:center;gap:2px 10px;padding:12px 14px;display:grid}.half-dot{border-radius:50%;grid-area:dot;width:12px;height:12px}.half-seer .half-dot,.side-player.role-seer .half-dot{background:var(--seer-accent);box-shadow:0 0 10px var(--seer-accent)}.half-listener .half-dot,.side-player.role-listener .half-dot{background:var(--listener-accent);box-shadow:0 0 10px var(--listener-accent)}.half-name{grid-area:name;font-family:Fredoka,Nunito,system-ui,sans-serif;font-weight:700}.half-sees{color:var(--text-soft);grid-area:sees;font-size:13px}.half-here{color:var(--accent);visibility:hidden;grid-area:here;font-size:11px}.half-active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent);cursor:default}.half-active .half-here{visibility:visible}.side-players{gap:8px;margin:0;padding:0;list-style:none;display:grid}.side-player{grid-template-columns:14px minmax(0,1fr) auto;align-items:center;gap:10px;font-size:14px;display:grid}.side-player b{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.side-player-role{color:var(--text-soft);font-size:12px}@media (min-width:600px) and (max-width:1023px) and (orientation:portrait){.chat{width:min(560px,92vw);max-height:40%;left:50%;right:auto;bottom:calc(var(--safe-bottom) + 84px);border:1px solid #fff3;border-radius:20px;transform:translate(-50%)}}.hud-top{z-index:7;position:relative}.screen-hub{padding:calc(var(--safe-top) + 10px) calc(var(--safe-right) + 16px) calc(var(--safe-bottom) + 10px) calc(var(--safe-left) + 16px);background:radial-gradient(circle at 50% 58%, rgba(255, 190, 110, calc(.05 + var(--lit,0) * .04)), transparent 45%), radial-gradient(ellipse 120% 70% at 50% 30%, var(--bg-inner) 0%, var(--bg-mid) 45%, var(--bg-outer) 100%);grid-template:"top""hall"minmax(0,1fr)"foot"/minmax(0,1fr);display:grid;overflow:hidden}.hub-top{z-index:3;grid-area:top;align-items:center;gap:8px;display:flex;position:relative}.hub-corner{gap:6px;margin-left:auto;display:flex}.hub-sheet-button{min-height:44px;color:var(--text-soft);letter-spacing:1px;background:#00000059;border:1px solid #ffdcaa38;border-radius:22px;padding:0 14px;font:600 12px/1 Fredoka,serif}.hub-footer{text-align:center;z-index:1;grid-area:foot;position:relative}.hub-hall{flex-direction:column;grid-area:hall;justify-content:center;align-items:center;gap:clamp(6px,2cqh,28px);min-height:0;display:flex;position:relative;container-type:size}.hub-dome{pointer-events:none;width:100%;height:65%;position:fixed;inset:0 0 35%;-webkit-mask-image:linear-gradient(#000 40%,#0000);mask-image:linear-gradient(#000 40%,#0000)}.star{fill:#fff3de;opacity:var(--dim)}.star-twinkle{animation:twinkle 5s ease-in-out var(--delay) infinite}@keyframes twinkle{50%{opacity:calc(var(--dim) * .25)}}.hub-carving{letter-spacing:.22em;text-transform:uppercase;color:#ffd45e;text-shadow:0 1px #ffffff59,0 -1px #0b2a4a99,0 0 26px #ffd45e73;margin:0;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:clamp(22px,min(10vw,7cqh),64px);position:relative}.hub-floor{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"d1 d2""lamp lamp""d3 d4";align-items:center;gap:clamp(4px,1.6cqh,18px) 14px;width:100%;max-width:560px;display:grid;position:relative}.hub-door-1{grid-area:d1}.hub-door-2{grid-area:d2}.hub-door-3{grid-area:d3}.hub-door-4{grid-area:d4}.hub-centre{aspect-ratio:1;grid-area:lamp;justify-self:center;width:clamp(80px,17cqh,200px);position:relative}.hub-door{min-width:0;color:var(--text);text-align:center;border-radius:16px;flex-direction:column;align-items:center;gap:8px;padding:4px;text-decoration:none;display:flex}.door-arch{aspect-ratio:3/4;background:linear-gradient(#1f5f8c,#0f3a5e);border:3px solid #5fa7d6;border-radius:999px 999px 10px 10px;place-items:center;width:clamp(42px,10.5cqh,104px);display:grid;position:relative;box-shadow:inset 0 0 0 2px #00000080,inset 0 -14px 24px #0009,0 10px 24px #00000080}.door-glyph{color:#cfe6f580;width:46%}.door-glyph svg{width:100%;height:auto;display:block}.door-label{flex-direction:column;gap:3px;display:flex}.door-name{letter-spacing:.5px;font:700 clamp(13px,3.6vw,17px)/1.15 Fredoka,serif}.door-count{white-space:nowrap;color:#ffe7bf;background:#ffe08a29;border-radius:999px;align-self:center;padding:1px 8px;font-size:11px;line-height:1.4}.door-line{color:var(--text-soft);font-size:12px;line-height:1.3}.hub-door-open .door-arch{background:radial-gradient(circle at 50% 60%, #ffc97859, transparent 70%), linear-gradient(90deg, var(--seer-bg-inner) 50%, var(--listener-bg-inner) 50%);border-color:#ffe08a;box-shadow:inset 0 0 18px #ffc97859,0 0 30px #ffaa5059,0 10px 24px #00000080}.hub-door-open .door-glyph{color:#ffe7bf;filter:drop-shadow(0 0 8px #ffc978e6)}.hub-door-open:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.hub-door-sealed{opacity:.7}.hub-door-sealed .door-name{color:var(--text-soft)}.hub-door-sealed .door-line{letter-spacing:1px;text-transform:uppercase;opacity:.8;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:10px}.door-step{color:#ffe7bf;background:#0f3a5e;border:2px solid #ffe08a;border-radius:50%;place-items:center;width:clamp(18px,4.2cqh,26px);height:clamp(18px,4.2cqh,26px);font:700 clamp(10px,2.4cqh,14px)/1 Fredoka,sans-serif;display:grid;position:absolute;top:-6px;right:-8px;box-shadow:0 2px 6px #00000073}.door-step svg{width:62%;height:62%}.door-step-done{color:#fff;background:#3f9b5a;border-color:#c8f2c0}.hub-door-locked{opacity:.78}.hub-door-locked .door-arch{filter:saturate(.4)}.hub-door-locked .door-step{color:#dfe8ef;background:#33465a;border-color:#9fb3c4}.hub-door-locked .door-name{color:var(--text-soft)}.hub-door-locked .door-line{color:#ffe7bf;font-size:11px;font-weight:700}.door-next{white-space:nowrap;color:#4a2a00;z-index:1;background:#ffd84a;border-radius:999px;padding:2px 8px;font:700 clamp(10px,2.2cqh,13px)/1.3 Fredoka,sans-serif;position:absolute;bottom:-9px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #0006}.hub-door-next .door-arch{animation:2.2s ease-in-out infinite door-next-glow}@keyframes door-next-glow{0%,to{box-shadow:inset 0 0 18px #ffc97859,0 0 26px #ffd84a73,0 10px 24px #00000080}50%{box-shadow:inset 0 0 24px #ffc9788c,0 0 52px #ffd84ae6,0 10px 24px #00000080}}.hub-still .hub-door-next .door-arch{animation:none}.hub-festival-next{animation:2.2s ease-in-out infinite door-next-glow}@media (hover:hover) and (pointer:fine){.hub-door-open .door-arch{transition:transform .25s,box-shadow .25s}.hub-door-open:hover .door-arch{transform:translateY(-3px);box-shadow:inset 0 0 24px #ffc97880,0 0 44px #ffaa508c,0 14px 28px #00000080}}.hub-lamp,.hub-lamp svg{width:100%;height:100%;position:absolute;inset:0}.lamp-ring{fill:none;stroke:#c9a15a2e;stroke-width:1.5px;stroke-dasharray:2 5}.lamp-ring-lit{stroke:#ffc978;stroke-width:2.5px;stroke-dasharray:none;filter:drop-shadow(0 0 6px #ffbe6ee6)}.lamp-base{fill:#0a284659}.lamp-rock{fill:#6f8fa8;stroke:#9fc2dc;stroke-width:1.5px}.lamp-tower{fill:#fff8ec;stroke:#c9a15a;stroke-width:1.5px}.lamp-stripe{fill:#e8625a}.lamp-roof{fill:#e8625a;stroke:#c9a15a;stroke-width:1.5px;stroke-linejoin:round}.lamp-brass{fill:#8a6438;stroke:#c9a15a;stroke-width:1.5px}.lamp-glass{fill:#fff3de59;stroke:#c9a15a;stroke-width:1.5px}.lamp-wick{fill:color-mix(in srgb, #ffc978 calc(30% + var(--lit) * 14%), #f4ead8);filter:drop-shadow(0 0 calc(2px + var(--lit) * 2px) #ffc86ee6)}.hub-keeper{width:14px;height:14px;box-shadow:0 0 calc(18px * var(--bright)) calc(6px * var(--bright)) rgba(255, 201, 120, var(--bright));background:radial-gradient(circle,#fff 0%,#ffe7bf 40%,#ffc97800 72%);border-radius:50%;margin:-7px 0 0 -7px;animation:14s ease-in-out infinite keeper-drift;position:absolute;top:50%;left:50%;transform:translate(70px,-60px)}@keyframes keeper-drift{0%{transform:translate(70px,-60px)}25%{transform:translate(-60px,-78px)}50%{transform:translate(-82px,10px)}75%{transform:translate(40px,52px)}to{transform:translate(70px,-60px)}}.hub-still .star-twinkle,.hub-still .hub-keeper{animation:none}.hub-panel{z-index:5;max-height:70%;padding:16px calc(var(--safe-right) + 18px) calc(var(--safe-bottom) + 18px) calc(var(--safe-left) + 18px);visibility:hidden;background:#0c0808f0;border-top:1px solid #ffdcaa33;border-radius:22px 22px 0 0;flex-direction:column;gap:10px;transition:transform .3s,visibility 0s linear .3s;display:flex;position:fixed;bottom:0;left:0;right:0;transform:translateY(105%);box-shadow:0 -20px 50px #0009}.hub-panel-shown{visibility:visible;transition:transform .3s;transform:none}.hub-panel-head{align-items:center;gap:10px;display:flex}.hub-panel-head .side-title{flex:1;margin:0}.hub-panel-close{font-size:24px;line-height:1}.hub-panel-body{min-height:0;overflow-y:auto}.fragment-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.fragment{border:1px dashed #ffffff24;border-radius:14px;align-items:center;gap:12px;padding:10px 12px;display:flex}.fragment-glyph{color:#ffffff4d;flex:none;place-items:center;width:40px;height:40px;font-family:Fredoka,Nunito,system-ui,sans-serif;display:grid}.fragment-glyph svg{width:30px;height:30px}.fragment-text{flex-direction:column;gap:2px;display:flex}.fragment-name{font:700 14px Fredoka,serif}.fragment-state{color:var(--text-soft);opacity:.75;font-size:12px}.fragment-restored{border-style:solid;border-color:#ffc97866;box-shadow:inset 0 0 18px #ffbe6e1f}.fragment-restored .fragment-glyph{color:var(--accent);filter:drop-shadow(0 0 6px #ffbe6eb3)}@media (orientation:landscape) and (max-height:500px){.screen-hub{padding-top:calc(var(--safe-top) + 6px)}.hub-hall{gap:6px}.hub-carving{font-size:clamp(18px,9cqh,36px)}.hub-floor{grid-template-columns:repeat(2,minmax(0,1fr)) auto repeat(2,minmax(0,1fr));grid-template-areas:"d1 d2 lamp d3 d4";max-width:860px}.hub-centre{width:clamp(72px,38cqh,150px)}.door-arch{width:clamp(36px,20cqh,76px)}.door-line{display:none}.hub-door-open .door-line{font-size:11px;display:block}.hub-panel{width:min(380px,60vw);max-height:none;padding-top:calc(var(--safe-top) + 16px);border-top:0;border-left:1px solid #ffdcaa33;border-radius:22px 0 0 22px;top:0;left:auto;transform:translate(105%)}.hub-panel-shown{transform:none}}@media (min-width:600px) and (min-height:700px){.hub-floor{gap:28px 40px;max-width:640px}.hub-centre{width:clamp(120px,22cqh,260px)}.door-arch{width:clamp(64px,12cqh,132px)}.door-line{font-size:14px}.hub-panel{width:min(560px,90vw);left:50%;transform:translate(-50%,105%)}.hub-panel-shown{transform:translate(-50%)}}@media (min-width:1024px) and (min-height:600px){.screen-hub{grid-template-columns:minmax(220px,300px) minmax(0,1fr) minmax(220px,300px);grid-template-areas:"top top top""left hall right""foot foot foot";column-gap:clamp(16px,3vw,48px)}.hub-sheet-button,.hub-panel-close{display:none}.hub-panel,.hub-panel-shown{z-index:1;visibility:visible;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);width:auto;max-height:100%;box-shadow:none;background:#08050580;border:1px solid #ffdcaa24;border-radius:20px;align-self:center;padding:18px;transition:none;position:relative;inset:auto;transform:none}.hub-panel-fragments{grid-area:left}.hub-panel-glyphs{grid-area:right}.hub-floor{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);grid-template-areas:"d1 lamp d2""d3 lamp d4";gap:24px clamp(24px,4vw,64px);max-width:900px}.hub-centre{align-self:center;width:clamp(160px,36cqh,320px)}.door-arch{width:clamp(64px,15cqh,124px)}.door-line{font-size:13px}.hub-carving{font-size:clamp(36px,min(6vw,9cqh),84px)}}@media (min-width:1800px){.screen-hub{grid-template-columns:minmax(0,1fr) 300px minmax(0,1100px) 300px minmax(0,1fr);grid-template-areas:"top top top top top"".left hall right.""foot foot foot foot foot"}}@media (prefers-reduced-motion:reduce){.hub-panel,.hub-panel-shown{transition:none}}.hub-lamp{color:inherit;cursor:pointer;background:0 0;border:0;border-radius:50%;padding:0}.hub-lamp:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lamp-ring{transition:stroke 1.2s,stroke-width 1.2s,filter 1.2s}.hub-keeper{transition:box-shadow 1.5s}.hub-lamp-call{animation:1.8s ease-in-out infinite lamp-call}@keyframes lamp-call{50%{filter:drop-shadow(0 0 18px #ffc978a6)}}.hub-intro-hint{white-space:nowrap;letter-spacing:1.5px;text-transform:uppercase;color:var(--accent);margin:4px 0 0;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:13px;animation:.8s ease-out fade-in;position:absolute;top:100%;left:50%;transform:translate(-50%)}.hub-door .door-glyph{transition:color .5s,filter .5s}.door-glyph-lit .door-glyph{color:#ffe7bf;filter:drop-shadow(0 0 10px #ffc978f2)}.hub-door-beckon .door-arch{animation:2.4s ease-in-out infinite door-beckon}@keyframes door-beckon{50%{box-shadow:inset 0 0 26px #ffc97899,0 0 56px #ffaa50bf,0 10px 24px #00000080}}.hub-caption{text-align:center;width:min(92%,520px);color:var(--text);text-shadow:0 0 14px var(--glow);pointer-events:none;margin:0;transition:opacity 1.5s;animation:1.2s ease-out fade-in;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.hub-caption-out{opacity:0}.hub-intro-dark{z-index:8;cursor:pointer;background:radial-gradient(80% 45% at 50% 100%,#ffd45ed9,#0000 70%),linear-gradient(#2f7fb0 0%,#6fa8d0 45%,#f6b98a 80%,#ffd45e 100%);flex-direction:column;justify-content:center;align-items:center;gap:18px;padding:24px;transition:opacity 1.4s;display:flex;position:fixed;inset:0}.hub-intro-dark-out{opacity:0;pointer-events:none}.hub-intro-line{color:#fffdf5;text-shadow:0 2px 12px #0b2a4a8c;text-align:center;margin:0;font-size:clamp(22px,5vw,32px);animation:2.4s ease-out fade-in}.hub-intro-tap{letter-spacing:1px;color:var(--text-soft);opacity:0;margin:0;font-size:12px;animation:1s ease-out 3s forwards fade-in-late}@keyframes fade-in-late{to{opacity:.6}}.hub-intro-skip{top:calc(var(--safe-top) + 10px);right:calc(var(--safe-right) + 16px);z-index:9;min-height:44px;color:var(--text-soft);letter-spacing:1px;background:#00000073;border:1px solid #ffffff40;border-radius:22px;padding:0 18px;font:600 13px/1 Fredoka,serif;position:fixed}.hub-intro .hub-corner{visibility:hidden}.hub-intro .hub-door-open{pointer-events:none}.hub-keeper.keeper-arrive{animation:2.6s ease-out keeper-descend,14s ease-in-out 2.6s infinite keeper-drift}@keyframes keeper-descend{0%{transform:translateY(-60vh)}70%{transform:translate(40px,-40px)}to{transform:translate(70px,-60px)}}.keeper-glyphs{z-index:2;pointer-events:none;gap:14px;transition:opacity .6s;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.keeper-glyphs-out{opacity:0}.keeper-glyph{color:#ffe7bf;filter:drop-shadow(0 0 10px #ffc978e6);width:clamp(48px,9vh,72px)}.keeper-glyph svg{width:100%;height:auto;display:block}.hub-centre:has(.keeper-glyphs) .hub-lamp{opacity:.25;transition:opacity .6s}.keeper-glyph path,.keeper-glyph circle{stroke-dasharray:1;stroke-dashoffset:1px;animation:1.1s ease-in-out forwards glyph-trace}@keyframes glyph-trace{to{stroke-dashoffset:0}}.dialogue-fragment .dialogue{border-color:#ffc97873;box-shadow:0 0 60px #ffbe6e59,0 16px 40px #00000080}.dialogue-fragment .dialogue-text p:first-child .glyph-inline{width:56px;height:56px;margin-bottom:6px}.fragment-state.story-line{opacity:.9;font-size:15px;line-height:1.35}@media (prefers-reduced-motion:reduce){.hub-lamp-call,.hub-door-beckon .door-arch,.hub-keeper.keeper-arrive{animation:none}.keeper-glyph path,.keeper-glyph circle{stroke-dashoffset:0;animation:none}}.hub-daily{width:min(100%,420px);color:var(--text);text-align:center;background:linear-gradient(90deg,#0000 49.6%,#c9a15a40 50%,#0000 50.4%),linear-gradient(#fff3de1a,#fff3de08);border:1px solid #c9a15a73;border-radius:6px 6px 14px 14px;flex-direction:column;gap:4px;padding:10px 16px;text-decoration:none;display:flex;position:relative;box-shadow:0 0 26px #ffbe6e2e,0 10px 24px #00000073}.hub-daily-head{letter-spacing:1.2px;text-transform:uppercase;color:var(--text-soft);justify-content:space-between;font:600 11px/1.2 Fredoka,serif;display:flex}.hub-daily-line{font-size:16px;line-height:1.3}.hub-daily-foot{color:var(--text-soft);flex-wrap:wrap;justify-content:center;gap:4px 12px;font-size:12px;display:flex}.hub-daily-go{letter-spacing:1px;color:var(--accent);font:700 12px/1.4 Fredoka,serif}.hub-daily-streak{color:var(--accent)}.hub-daily:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (hover:hover) and (pointer:fine){.hub-daily{transition:box-shadow .2s,transform .2s}.hub-daily:hover{transform:translateY(-2px);box-shadow:0 0 40px #ffbe6e59,0 12px 26px #00000073}}@media (orientation:landscape) and (max-height:500px){.hub-daily{flex-direction:row;align-items:center;gap:14px;width:auto;max-width:92%;padding:6px 14px}.hub-daily-head{flex-direction:column;gap:2px}.hub-daily-line{max-width:340px;font-size:14px}}@media (orientation:landscape) and (max-height:500px) and (max-width:900px){.hub-daily-line{display:none}}@media (min-width:1024px) and (min-height:600px){.hub-daily{width:min(100%,460px);padding:14px 20px}.hub-daily-line{font-size:18px}}.pill-timer{font-variant-numeric:tabular-nums}.daily-result h2{margin-bottom:4px}.daily-stats{justify-content:center;gap:28px;margin:8px 0;display:flex}.daily-stat{color:var(--text-soft);flex-direction:column;align-items:center;gap:2px;font-size:12px;display:flex}.daily-stat-value{color:var(--text);font-variant-numeric:tabular-nums;font:700 26px/1.1 Fredoka,serif}.daily-board .daily-stat-value{font-size:18px}.daily-pattern{justify-content:center;gap:4px;margin:6px 0 10px;display:flex}.daily-pattern span{border-radius:4px;width:18px;height:18px}.daily-pattern .cell-seer{background:var(--seer-accent);box-shadow:0 0 8px color-mix(in srgb, var(--seer-accent) 60%, transparent)}.daily-pattern .cell-listener{background:var(--listener-accent);box-shadow:0 0 8px color-mix(in srgb, var(--listener-accent) 60%, transparent)}.daily-note{color:var(--text-soft);margin:0 0 6px;font-size:13px}.daily-replay{font-style:italic}.daily-friend{color:var(--accent);margin:0 0 8px;font-weight:600}.daily-share-status{min-height:1.2em;color:var(--accent);margin:4px 0;font-size:13px}@media (orientation:portrait) and (max-height:700px){.hub-daily-line{display:none}}.screen-settings{padding:calc(var(--safe-top) + 10px) calc(var(--safe-right) + 16px) calc(var(--safe-bottom) + 24px) calc(var(--safe-left) + 16px);flex-direction:column;align-items:center;gap:16px;display:flex;overflow-y:auto}.settings-title{letter-spacing:2px;text-shadow:0 0 24px var(--glow);margin:0;font:700 clamp(28px,7vw,44px)/1.1 Fredoka,serif}.settings-grid{grid-template-columns:minmax(0,1fr);gap:14px;width:100%;max-width:560px;display:grid}.settings-card{background:#08050580;border:1px solid #ffdcaa29;border-radius:18px;flex-direction:column;gap:10px;padding:16px 18px;display:flex}.settings-card .side-title{margin:0}.setting-hint{color:var(--text-soft);margin:0;font-size:13px;line-height:1.45}.setting-strong{color:var(--text)}.toggle{min-height:48px;color:var(--text);text-align:left;background:0 0;border:0;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:0 4px;font:600 16px Nunito,sans-serif;display:grid}.toggle-state{color:var(--text-soft);font-size:13px}.toggle-track{background:#ffffff29;border-radius:14px;width:48px;height:28px;transition:background .2s;position:relative}.toggle-track:after{content:"";background:#fff3de;border-radius:50%;width:22px;height:22px;transition:transform .2s;position:absolute;top:3px;left:3px}.toggle[aria-checked=true] .toggle-track{background:var(--accent)}.toggle[aria-checked=true] .toggle-track:after{background:#2a1a10;transform:translate(20px)}.toggle:focus-visible,.segmented button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:12px}.segmented{background:#00000059;border:1px solid #ffffff1f;border-radius:24px;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:4px;padding:4px;display:grid}.segmented button{min-height:44px;color:var(--text-soft);letter-spacing:1px;background:0 0;border:0;border-radius:20px;font:700 13px Fredoka,serif}.segmented button[aria-checked=true]{background:var(--accent);color:#2a1a10}.credits-details summary{cursor:pointer;min-height:44px;color:var(--accent);align-items:center;font:600 14px Nunito,sans-serif;display:flex}.credits h3{letter-spacing:1px;text-transform:uppercase;color:var(--text-soft);margin:10px 0 4px;font:600 12px Fredoka,serif}.credits ul{margin:0;padding:0;list-style:none}.credits li{border-bottom:1px solid #ffffff0f;justify-content:space-between;gap:12px;padding:4px 0;font-size:13px;display:flex}.credit-licence{color:var(--text-soft);text-align:right}@media (min-width:768px) and (min-height:600px){.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;max-width:960px}.settings-card:nth-child(3){grid-row:span 2}}@media (hover:hover) and (pointer:fine){.segmented button:hover{color:var(--text)}}.hub-daily{transition:opacity .8s}.hub-hall:has(.hub-caption:not(.hub-caption-out)) .hub-daily{opacity:0;pointer-events:none}.screen-game.screen-carto{grid-template:"top""body"minmax(0,1fr)"bottom"/minmax(0,1fr)}.carto-body{grid-area:body;grid-template-columns:minmax(0,1fr);min-height:0;display:grid;position:relative}.carto-body #stage{border-radius:10px;grid-area:auto;overflow:hidden}.carto-scouts{z-index:30;padding:14px calc(var(--safe-right) + 16px) calc(var(--safe-bottom) + 16px) calc(var(--safe-left) + 16px);background:#0e0a08f5;border-top:1px solid #ffdcaa33;border-radius:18px 18px 0 0;max-height:70%;transition:transform .25s;position:fixed;bottom:0;left:0;right:0;overflow:auto;transform:translateY(105%)}.carto-scouts.carto-scouts-shown{transform:none}.carto-scout-list{gap:8px;margin:8px 0 0;padding:0;list-style:none;display:grid}.carto-scout{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.carto-scout-dot{border-radius:50%;width:16px;height:16px;box-shadow:0 0 8px}.carto-scout-info{flex-direction:column;min-width:0;display:flex}.carto-scout-name{color:var(--text);font-family:Fredoka,Nunito,system-ui,sans-serif}.carto-scout-detail,.carto-cooldown{color:var(--text-soft);font-size:13px}.carto-call-vote{padding:0 10px;font-size:12px}.hud.carto-tools{flex-flow:wrap;align-items:center;gap:8px}.carto-tool-row,.carto-note-row{flex-wrap:wrap;gap:6px;display:flex}.carto-tool,.carto-note-kind{min-width:44px;min-height:44px;color:var(--text);background:#0a080e8c;border:1px solid #ffdcaa40;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;padding:2px 10px;font-size:13px;line-height:1.15;display:inline-flex}.carto-tool[aria-pressed=true],.carto-note-kind[aria-pressed=true]{border-color:var(--accent);background:#b3301f59}.carto-tool:disabled{opacity:.4}.carto-tool-uses{color:var(--text-soft);font-size:11px}.carto-seal.primary-button{width:auto;min-width:0;margin-left:auto;padding:0 18px}.carto-seal:disabled{opacity:.45}.carto-home{width:auto;min-height:44px;margin-left:auto;padding:0 14px}.carto-home:disabled{opacity:.45}.carto-pieces{color:#ffe2a8}.carto-pieces-done{color:#b9f0b0}.carto-toast,.carto-hint{z-index:25;text-align:center;width:min(92vw,460px);color:var(--text);pointer-events:none;background:#0e0a08e6;border:1px solid #ffdcaa33;border-radius:12px;margin:0;padding:10px 14px;position:fixed;left:50%;transform:translate(-50%)}.carto-toast{top:calc(var(--safe-top) + 64px)}.carto-hint{bottom:calc(var(--safe-bottom) + 132px);font-family:Nunito,system-ui,sans-serif;font-size:17px;font-style:italic}.carto-vote{left:50%;top:calc(var(--safe-top) + 110px);z-index:26;border:1px solid var(--accent);text-align:center;background:#1e0e0af2;border-radius:14px;width:min(92vw,380px);padding:12px 14px;position:fixed;transform:translate(-50%)}.carto-vote p{margin:0 0 6px}.carto-vote-count{color:var(--text-soft);font-size:13px}.carto-vote-buttons{justify-content:center;gap:8px;display:flex}.carto-hourglass-low{color:#ffb4a0}.rules-list-text .rule{grid-template-columns:1fr}@media (min-width:1024px) and (min-height:600px){.carto-body{grid-template-columns:minmax(0,1fr) clamp(240px,22vw,320px);gap:14px}.carto-scouts{background:#0e0a0899;border:1px solid #ffdcaa26;border-radius:14px;max-height:none;padding:14px;transition:none;position:static;transform:none}.carto-scouts-open{display:none}.carto-hint{bottom:calc(var(--safe-bottom) + 90px)}}@media (orientation:landscape) and (max-height:500px){.screen-game.screen-carto{grid-template:"top body"minmax(0,1fr)"top bottom"/auto minmax(0,1fr);gap:8px 12px}.screen-carto .hud-bottom{text-align:left;flex-direction:row;align-items:center}.carto-tool-uses{display:none}.carto-tool,.carto-note-kind{min-height:40px}.carto-hint{bottom:calc(var(--safe-bottom) + 64px)}}@media (max-width:599px){.screen-carto .game-name{font-size:clamp(14px,4.4vw,18px)}}.theme-cartographers .room-code{background:linear-gradient(90deg, var(--carto-accent), #f3e2bf);-webkit-background-clip:text;background-clip:text}.carto-role-touched{color:#ffb4a0}.theme-cartographers .chat{z-index:8}@media (min-width:1024px) and (min-height:600px){.theme-cartographers .chat{right:calc(var(--safe-right) + 28px + clamp(240px, 22vw, 320px) + 14px)}}.carto-wren-note{text-align:left;background:#f0deba14;border:1px solid #ffdcaa40;border-radius:12px;margin:4px 0 14px;padding:10px 14px}.carto-wren-text{color:var(--text);margin:4px 0 0;font-family:Nunito,system-ui,sans-serif;font-size:17px;font-style:italic}.carto-notes{width:100%;max-width:720px;margin:28px auto 0}.carto-note-list{margin:12px 0 0;padding:0;list-style:none}.hub-land-lanterns{pointer-events:none;justify-content:center;gap:6%;width:90%;display:flex;position:absolute;bottom:-14%;left:50%;transform:translate(-50%)}.hub-land-lanterns .land-lantern{width:14%}.land-lantern{aspect-ratio:24/32;display:block}.land-lantern svg{width:100%;height:100%;overflow:visible}.fragment-glyph .land-lantern{width:22px}.land-lantern{position:relative}.land-star{color:#ffd84a;text-shadow:0 0 6px #ffd84acc;font-size:clamp(10px,1.2em,18px);line-height:1;position:absolute;top:-38%;left:50%;transform:translate(-50%)}.land-star-line{color:#ffd84a}.level-challenge{border-color:#ffd84abf;box-shadow:inset 0 0 0 1px #ffd84a59}.level-challenge .level-number{color:#e8a400}.land .level-challenge{background:#fff8d6bf}.land-lantern .lantern-handle{fill:none;stroke:#ffffff59;stroke-width:1.6px}.land-lantern .lantern-cap{fill:#ffffff4d}.land-lantern .lantern-body{fill:#ffffff0f;stroke:#ffffff4d;stroke-width:1.4px;stroke-dasharray:3 2}.land-lantern-lit .lantern-handle{stroke:var(--hub-accent)}.land-lantern-lit .lantern-cap{fill:var(--hub-accent)}.land-lantern-lit .lantern-body{fill:var(--land-accent);stroke:#fffbea;stroke-dasharray:none}.land-lantern-lit svg{filter:drop-shadow(0 0 6px var(--land-accent))}.land-lantern-section{margin-top:16px}.side-subtitle{letter-spacing:1.2px;text-transform:uppercase;color:var(--text-soft);margin:0 0 8px;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:12px}.theme-library{--bg-inner:var(--library-bg-inner);--bg-mid:var(--library-bg-mid);--bg-outer:var(--library-bg-outer);--text:var(--library-text);--text-soft:var(--library-text-soft);--accent:var(--library-accent);--glow:#ffc85780;--book-0:#e85d75;--book-1:#4fa3d9;--book-2:#f2b134;--book-3:#6cc17a;--book-4:#9b7bd4}.library-hoot{max-width:34ch;color:var(--text-soft);margin:8px auto 0;font-style:italic}.library-shelf .library-book{border-left:8px solid var(--book-colour,var(--accent))}.screen-library{--accent:color-mix(in srgb, var(--book-cover,var(--library-accent)) 55%, #ffe9b8)}.screen-library .game-name{text-shadow:0 2px 0 var(--book-cover-dark,transparent)}.library-bottom{justify-content:center;min-height:24px}.library-bottom:has(.ping-bar){justify-content:space-between}.library-dots{gap:8px;margin:0;padding:0;list-style:none;display:flex}.library-dot{border:2px solid #ffffff73;border-radius:50%;width:12px;height:12px}.library-dot-read{background:var(--accent);border-color:var(--accent)}.library-dot-next{border-color:#ffe38a;box-shadow:0 0 10px #ffe38acc}.library-page-list,.library-reader-list,.library-legend{gap:6px;margin:0;padding:0;list-style:none;display:grid}.library-page{min-height:40px;color:var(--text-soft);background:#ffffff0d;border:1px solid #ffffff1f;border-radius:12px;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.library-page-read{border-left:6px solid var(--book-cover,var(--accent));color:var(--text)}.library-page-scribbled{border-left-color:#b062d6}.library-page-next{color:var(--text);background:#ffe38a24;border-color:#ffe38acc;font-weight:700}.library-page-later{opacity:.6}.library-page-end{letter-spacing:.5px;font-family:Fredoka,Nunito,system-ui,sans-serif}.library-page-state{color:#ffe38a;font-size:13px}.library-reader{align-items:center;gap:10px;min-height:36px;display:flex}.library-reader-name{flex:1;font-weight:700}.library-reader-tag{color:var(--text-soft);font-size:12px}.library-legend li{color:var(--text-soft);grid-template-columns:26px minmax(0,1fr);align-items:center;gap:10px;font-size:14px;display:grid}.legend-mark{border-radius:50%;width:22px;height:22px}.legend-spin{background:#ffd27a38;border:3px double #ffd27a}.legend-swing{background:linear-gradient(90deg,#ffe7a3 0 5px,#c98a4b 5px);border-radius:4px;height:12px}.legend-preview{border:3px solid #ff8a3d;border-color:#ff8a3d #ff8a3d #0000 #0000}.legend-scribble{border:3px solid #0000;border-color:#0000 #0000 #b062d6 #b062d6}@media (min-width:1024px) and (min-height:600px){.library-dots{display:none}:is(.library-bottom,.library-bottom:has(.ping-bar)){justify-content:center}.library-side-panel .chat{margin-top:6px}}@media (max-width:599px){.screen-library .game-name,.theme-cartographers .hud .game-name{font-size:clamp(15px,4.6vw,19px)}.theme-cartographers .hud .game-name{white-space:normal;letter-spacing:1px;line-height:1.1}}@media (orientation:landscape) and (max-height:500px){:is(.library-bottom,.library-bottom:has(.ping-bar)){justify-content:flex-end;align-items:center}.library-bottom .ping-bar,.library-dots{flex-direction:column}}.library-hint{bottom:calc(var(--safe-bottom) + 24px);font-family:Nunito,system-ui,sans-serif;font-size:17px;font-style:italic}.theme-adventure{--bg-inner:var(--adventure-bg-inner);--bg-mid:var(--adventure-bg-mid);--bg-outer:var(--adventure-bg-outer);--text:var(--adventure-text);--text-soft:var(--adventure-text-soft);--accent:var(--adventure-accent);--glow:#ffc85780}.adventure-list{grid-template-columns:minmax(0,1fr);max-width:640px}.adventure-card{border-left:8px solid var(--accent);min-height:84px}.adventure-card-text{flex:1;gap:4px;min-width:0;display:grid}.adventure-blurb{color:var(--text-soft);font-size:14px}.land .adventure-blurb{color:var(--land-text);opacity:.8}.adventure-bottom{justify-content:space-between;align-items:center;gap:12px}.adventure-buttons{gap:10px;margin-left:auto;display:flex}.adventure-buttons .text-button{min-height:44px;padding:0 18px}.adventure-mini-pack{color:var(--text);white-space:pre;font-weight:700}.adventure-room-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.adventure-room{min-height:40px;color:var(--text-soft);background:#ffffff0f;border:1px solid #ffffff24;border-radius:12px;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.adventure-room-visited{color:var(--text);border-left:6px solid var(--accent)}.adventure-room-here{color:var(--text);background:#ffe38a29;border-color:#ffe38ad9;font-weight:700}.adventure-room-state{color:#ffe38a;font-size:13px}.adventure-pack{grid-template-columns:auto minmax(0,1fr);gap:8px 12px;margin:0;display:grid}.adventure-pack dt{text-transform:uppercase;letter-spacing:1px;color:var(--text-soft);font-size:13px}.adventure-pack dd{margin:0;font-weight:700}.adventure-pack-signs{flex-wrap:wrap;gap:6px;display:flex}.adventure-sign{color:#ffe9a8;width:28px;height:28px;display:inline-flex}.adventure-sign svg,.adventure-sign-choice svg{width:100%;height:100%}.side.adventure-rooms-panel,.side.adventure-backpack{background:#143c1e73}.adventure-sign-choices{justify-content:center;gap:14px;margin:12px 0;display:flex}.adventure-sign-choice{color:#ffe9a8;cursor:pointer;background:#6c5b9ed9;border:2px solid #ffffff4d;border-radius:18px;width:84px;height:84px;padding:14px}.adventure-sign-choice:focus-visible,.adventure-sign-choice:hover{border-color:#ffe9a8}.adventure-choices{gap:10px;margin-top:12px;display:grid}@media (min-width:1024px) and (min-height:600px){.adventure-mini-pack{display:none}}@media (max-width:599px){.screen-adventure .game-name{font-size:clamp(15px,4.6vw,19px)}.adventure-buttons .text-button{padding:0 14px}}.theme-finale{--bg-inner:var(--finale-bg-inner);--bg-mid:var(--finale-bg-mid);--bg-outer:var(--finale-bg-outer);--text:var(--finale-text);--text-soft:var(--finale-text-soft);--accent:var(--finale-accent);--glow:#ffd84a8c}.finale-locked,.finale-hint{text-align:center;max-width:560px;color:var(--text-soft);margin:0}.finale-stage{background:linear-gradient(90deg,#0000 0 4%,#ffffff1a 4% 96%,#0000 96%);border-radius:40px 40px 12px 12px;flex-direction:column;align-items:stretch;width:100%;max-width:520px;padding:0 6% 12px;display:flex}.finale-tower{flex-direction:column-reverse;gap:10px;margin:0;padding:0;list-style:none;display:flex}.finale-floor{border-left:8px solid var(--accent);background:repeating-linear-gradient(0deg,#ffffff0f 0 18px,#ff5a5a1f 18px 36px),#1410328c}.finale-floor-done{border-left-color:#8fe38f}.finale-floor-done .level-tag:before{content:"✓ "}.finale-lamp-room{color:#2b1a00;cursor:pointer;background:radial-gradient(circle at 50% 40%,#ffeca0e6,#ffaa3c59 55%,#1e143c99);border:2px solid #ffd84ab3;border-radius:46px 46px 16px 16px;width:78%;min-height:92px;margin:0 auto 14px;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:18px;font-weight:700;position:relative;overflow:hidden}.finale-lamp-room:disabled{cursor:default;color:var(--text-soft);background:#1e143c99;border-color:#fff3}.finale-lamp-text{padding:0 14px;position:relative}.finale-lamp-glow{background:radial-gradient(circle,#ffffff8c,#0000 60%);animation:2.4s ease-in-out infinite alternate finale-glow;position:absolute;inset:-30%}.finale-lamp-room:disabled .finale-lamp-glow{display:none}@keyframes finale-glow{0%{opacity:.4}to{opacity:1}}.finale-choice{gap:12px;display:grid}.festival{z-index:40;padding:calc(var(--safe-top) + 24px) calc(var(--safe-right) + 16px) calc(var(--safe-bottom) + 24px) calc(var(--safe-left) + 16px);color:#fffdf5;text-align:center;background:radial-gradient(at 50% 0,#ffe9a8,#ff9f6b 35%,#8b4fb3 70%,#2b2f7a);flex-direction:column;align-items:center;gap:14px;display:flex;position:fixed;inset:0;overflow-y:auto}.festival-sky{pointer-events:none;position:absolute;inset:0;overflow:hidden}.festival-rainbow{aspect-ratio:2;opacity:.8;background:radial-gradient(at 50% 100%,#0000 52%,#9b6bff 52% 56%,#4fa3ff 56% 60%,#5fd38a 60% 64%,#ffe14f 64% 68%,#ffa24f 68% 72%,#ff5f6b 72% 76%,#0000 76%);border-radius:50% 50% 0 0/100% 100% 0 0;width:min(120vw,900px);position:absolute;top:6%;left:50%;transform:translate(-50%)}.festival-beam{transform-origin:0;clip-path:polygon(0 45%,100% 0,100% 100%,0 55%);background:linear-gradient(90deg,#fffad2b3,#0000);width:60vmax;height:18vmax;animation:6s linear infinite festival-sweep;position:absolute;top:0;left:50%}@keyframes festival-sweep{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.festival-confetti{top:-5%;left:calc((var(--i) * 37 % 100) * 1%);background:hsl(calc(var(--i) * 47), 90%, 62%);width:8px;height:14px;animation:festival-fall calc(4s + (var(--i) * 7 % 5) * .6s) linear infinite;animation-delay:calc(var(--i) * -.37s);border-radius:2px;position:absolute}@keyframes festival-fall{to{transform:translateY(110vh)rotate(720deg)}}@media (prefers-reduced-motion:reduce){.festival-beam,.finale-lamp-glow{animation:none}}.festival-title{text-shadow:0 3px #0003;margin:0;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:clamp(30px,8vw,56px);position:relative}.festival-guests{flex-wrap:wrap;justify-content:center;gap:8px;max-width:720px;margin:0;padding:0;list-style:none;display:flex;position:relative}.festival-guest{background:#ffffff38;border-radius:999px;padding:6px 12px;font-weight:700}.guest-muddle{background:#9678c899}.festival-credits{background:#14103273;border-radius:18px;width:min(100%,520px);max-height:34vh;position:relative;overflow:hidden}.festival-credits-roll{padding:16px;animation:22s linear both festival-roll}.festival-credits-roll h3,.festival-credits-roll h4{margin:10px 0 4px;font-family:Fredoka,Nunito,system-ui,sans-serif}.festival-credits-roll p{margin:2px 0;font-size:14px}@keyframes festival-roll{0%{transform:translateY(34vh)}to{transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.festival-credits{max-height:none}.festival-credits-roll{animation:none}}.festival-note{max-width:520px;margin:0;font-style:italic;position:relative}.hub-festival{white-space:nowrap;color:#ffd84a;z-index:2;background:#1e143cbf;border:1px solid #ffd84acc;border-radius:999px;padding:4px 12px;font-family:Fredoka,Nunito,system-ui,sans-serif;font-size:13px;font-weight:700;text-decoration:none;position:absolute;bottom:6%;left:50%;transform:translate(-50%);box-shadow:0 0 16px #ffd84a80}.hub-new-door{color:var(--text-soft);text-align:center;margin:0 0 10px;font-size:12px;font-style:italic}.celebration{z-index:60;top:calc(env(safe-area-inset-top) + 14px);color:#3a2a12;pointer-events:none;background:#fff8e6;border-radius:18px;align-items:center;gap:12px;width:min(420px,100vw - 32px);padding:12px 16px;animation:.45s cubic-bezier(.2,1.4,.4,1) both celebration-in;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #00000040}.celebration-out{animation:.4s ease-in both celebration-out}.celebration-badge{color:#6b4a10;background:#ffd45e;border-radius:50%;flex:none;place-items:center;width:48px;height:48px;font-size:26px;display:grid}.celebration-badge svg{width:30px;height:30px}.celebration-text{gap:2px;min-width:0;display:grid}.celebration-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:#b8812a;font-size:12px;font-weight:700}.celebration-title{font-family:var(--font-display,inherit);font-size:19px;font-weight:700}.celebration-line{opacity:.85;font-size:14px}.celebration-sparkle{background:#ffd45e;border-radius:50%;width:7px;height:7px;animation:.9s ease-out both celebration-sparkle;position:absolute;top:50%;left:38px}@keyframes celebration-in{0%{opacity:0;transform:translate(-50%,-24px)scale(.9)}}@keyframes celebration-out{to{opacity:0;transform:translate(-50%,-16px)}}@keyframes celebration-sparkle{0%{transform:rotate(var(--a)) translateX(0);opacity:1}to{transform:rotate(var(--a)) translateX(46px);opacity:0}}@media (prefers-reduced-motion:reduce){.celebration,.celebration-out{animation:none}}.sticker-shelf,.achievement-box{margin-top:14px}.sticker-title{color:var(--text-soft);margin:12px 0 6px;font-size:14px}.sticker-row{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.sticker{width:38px;height:38px;color:var(--text-soft);border:2px dashed #ffffff59;border-radius:50%;place-items:center;font-size:18px;display:grid}.sticker-on{border:2px solid var(--sticker,var(--accent));background:#ffffffeb;font-size:20px}.achievement-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.achievement{opacity:.6;border-radius:12px;align-items:center;gap:10px;padding:6px 8px;display:flex}.achievement-on{opacity:1;background:#ffffff1a}.achievement-badge{width:32px;height:32px;color:var(--text);background:#ffffff26;border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.achievement-on .achievement-badge{color:#6b4a10;background:#ffd45e}.achievement-badge svg{width:20px;height:20px}.achievement-text{min-width:0;display:grid}.achievement-name{font-size:14px;font-weight:700}.achievement-how{color:var(--text-soft);font-size:12px}.weekly-card{background:#ffffff1f;border-radius:14px;margin:0 0 12px;padding:10px 12px}.weekly-title{justify-content:space-between;gap:8px;font-weight:700;display:flex}.weekly-line{color:var(--text-soft);margin:4px 0 0;font-size:13px}.trail-picker{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;display:grid}.trail-swatch{background:color-mix(in srgb, var(--text) 8%, transparent);min-height:44px;color:var(--text);font:inherit;text-align:left;cursor:pointer;border:2px solid #0000;border-radius:12px;align-items:center;gap:8px;padding:6px 10px;font-size:14px;display:flex}.trail-swatch[aria-checked=true]{border-color:var(--accent)}.trail-swatch[aria-disabled=true]{opacity:.55;cursor:default}.trail-dots{background:linear-gradient(90deg, var(--sun) 50%, var(--moon) 50%);width:28px;height:14px;box-shadow:0 0 8px var(--sun);border-radius:7px;flex:none}:root[data-motion=less] *,:root[data-motion=less] :before,:root[data-motion=less] :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}:root[data-text=large] :is(.menu-title,.levels,.lands,.settings-grid,.dialogue,.overlay-card,.side,.hub-sheet,.info-sheet,.celebration,.chat):not(:is(.menu-title,.levels,.lands,.settings-grid,.dialogue,.overlay-card,.side,.hub-sheet,.info-sheet,.celebration,.chat) *){zoom:1.15}:root[data-text=larger] :is(.menu-title,.levels,.lands,.settings-grid,.dialogue,.overlay-card,.side,.hub-sheet,.info-sheet,.celebration,.chat):not(:is(.menu-title,.levels,.lands,.settings-grid,.dialogue,.overlay-card,.side,.hub-sheet,.info-sheet,.celebration,.chat) *){zoom:1.3}.setting-sub{margin:12px 0 6px;font-size:14px;font-weight:600}.account-email,.account-name{gap:8px;display:grid}.account-email input,.account-name input{min-height:44px;color:var(--text);font:inherit;background:#00000040;border:1px solid #ffffff40;border-radius:12px;padding:8px 12px;font-size:16px}.account-or{text-align:center;color:var(--text-soft);margin:10px 0}.account-who{overflow-wrap:anywhere;margin:0;font-weight:600}.account-status,.account-deleted{min-height:1.2em;color:var(--accent);margin:6px 0 0}.danger{color:#ffb3a8}.primary-button.danger{color:#fff;background:#d55e00}.board{text-align:left;background:#00000038;border-radius:14px;margin:10px 0;padding:10px 12px}.board-title{margin:0 0 6px;font-size:15px}.board-list{gap:2px;max-height:220px;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.board-row{border-radius:8px;grid-template-columns:2em 1fr auto;gap:8px;padding:3px 6px;font-size:14px;display:grid}.board-me{background:color-mix(in srgb, var(--accent) 25%, transparent);font-weight:700}.board-rank{color:var(--text-soft)}.board-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.board-empty,.board-note{color:var(--text-soft);margin:4px 0 0;font-size:13px}.board-sign-in{color:var(--accent)}.land-closed{opacity:.75}.land-locked-note{color:var(--land-text);margin:6px 0 4px;font-size:14px;font-weight:700}.land-locked .land-levels{opacity:.6}.land-closed-note{color:var(--land-text);margin:6px 0 0;font-size:14px;font-style:italic}.song-notes{margin:4px 0;font-size:15px}.song-notes span:first-child{color:var(--accent);font-size:18px}.phrase-bar{flex-wrap:wrap;gap:6px;padding:6px 0;display:flex}.phrase-bar .phrase{border:1px solid color-mix(in srgb, currentColor 30%, transparent);background:color-mix(in srgb, currentColor 8%, transparent);min-height:36px;color:inherit;font:inherit;cursor:pointer;border-radius:999px;padding:4px 10px;font-size:14px}.chat-name{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-weight:700;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.chat-phrase span{font-style:italic}.safety-menu{z-index:60;background:var(--hub-bg-mid,#12343b);width:min(320px,100vw - 32px);color:var(--hub-text,#fff);border-radius:18px;gap:10px;padding:18px;display:grid;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 12px 40px #0006}.safety-menu h3{margin:0}.safety-body{gap:8px;display:grid}.safety-question{margin:0}.queue-count{margin:4px 0 8px;font-size:20px;font-weight:700}.queue-you{font-weight:700;list-style:none}.setting-sound-parts{flex-direction:column;gap:10px;margin-top:12px;display:flex}.setting-sound-parts[hidden]{display:none}.skip-offer{left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 12px);z-index:40;color:#ffe7bf;cursor:pointer;background:#141e3ce0;border:1px solid #ffd84acc;border-radius:999px;padding:8px 16px;font:700 14px/1.2 Fredoka,sans-serif;position:fixed;transform:translate(-50%);box-shadow:0 4px 14px #0006}.sign-in-nudge{left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 16px);z-index:45;color:#ffe7bf;background:#0c2842f5;border:1px solid #ffe08a99;border-radius:18px;width:min(420px,100vw - 32px);padding:16px 18px 14px;position:fixed;transform:translate(-50%);box-shadow:0 10px 30px #00000073}.sign-in-nudge-title{margin:0 0 6px;font:700 18px/1.2 Fredoka,sans-serif}.sign-in-nudge p{color:var(--text-soft);margin:0 0 12px;font-size:14px;line-height:1.4}.sign-in-nudge-buttons{justify-content:flex-end;align-items:center;gap:12px;display:flex}.stars{gap:2px;font-size:1.1em;line-height:1;display:inline-flex}.star{color:currentColor;opacity:.28}.star-lit{color:#ffc21a;opacity:1;text-shadow:0 0 1px #5a3200b3,0 0 6px #ffc82880}.stars-line{flex-direction:column;align-items:center;gap:4px;margin:6px 0 10px;display:flex}.stars-line .stars{gap:6px;font-size:30px}.stars-par{color:var(--text-soft);font-size:13px}.level-tag-stars .stars{font-size:14px}.screen-info{padding:calc(var(--safe-top) + 10px) calc(var(--safe-right) + 16px) calc(var(--safe-bottom) + 28px) calc(var(--safe-left) + 16px);flex-direction:column;align-items:center;gap:16px;display:flex;overflow-y:auto}.info-page{flex-direction:column;gap:14px;width:100%;max-width:720px;display:flex}.info-title{letter-spacing:1px;text-shadow:0 0 24px var(--glow);margin:0 0 4px;font:700 clamp(28px,7vw,44px)/1.1 Fredoka,serif}.info-page p{color:var(--text);margin:0;line-height:1.6}.legal-updated{font-size:13px;color:var(--text-soft)!important}.info-section{background:#0805056b;border:1px solid #ffdcaa29;border-radius:18px;flex-direction:column;gap:10px;padding:16px 18px;display:flex}.info-section h2{color:var(--accent);margin:0;font:600 20px/1.2 Fredoka,sans-serif}.page-links{flex-wrap:wrap;justify-content:center;gap:6px 18px;margin-top:10px;font-size:14px;display:flex}.page-links a{min-height:44px;color:var(--text-soft);text-underline-offset:3px;align-items:center;text-decoration:underline;display:inline-flex}.page-links a:hover{color:var(--text)}.legal .credits{background:#0805056b;border-radius:18px;padding:16px 18px}.welcome-page{grid-template-columns:minmax(0,1fr);gap:28px;width:100%;max-width:1180px;display:grid}.welcome-top{width:100%;max-width:1180px}.welcome-hero{text-align:center;flex-direction:column;align-items:center;gap:12px;display:flex}.welcome-name{letter-spacing:3px;color:var(--text);text-shadow:0 0 32px var(--glow);margin:0;font:700 clamp(48px,14vw,96px)/1 Fredoka,serif}.welcome-tagline{color:var(--accent);margin:0;font:600 clamp(18px,4.6vw,26px)/1.3 Fredoka,sans-serif}.welcome-line{max-width:34em;color:var(--text);margin:0;line-height:1.6}.welcome-play{width:auto;min-width:220px;min-height:56px;padding:0 32px;font-size:18px}.welcome-free{color:var(--text-soft);margin:0;font-size:14px}.welcome-slides{aspect-ratio:16/10;background:#08050580;border:1px solid #ffdcaa2e;border-radius:22px;width:100%;position:relative;overflow:hidden;box-shadow:0 18px 50px #00000059}.welcome-slide{opacity:0;margin:0;transition:opacity .9s;position:absolute;inset:0}.welcome-slide.is-on{opacity:1}.welcome-slide img{object-fit:cover;width:100%;height:100%;display:block}.welcome-slide figcaption{text-align:center;color:#fffdf5;background:linear-gradient(#0000,#050a19bf);padding:36px 16px 40px;font-weight:600;position:absolute;bottom:0;left:0;right:0}.welcome-dots{justify-content:center;display:flex;position:absolute;bottom:6px;left:0;right:0}.welcome-dot{cursor:pointer;background:0 0;border:0;place-items:center;width:32px;height:32px;display:grid}.welcome-dot:after{content:"";background:#ffffff73;border-radius:50%;width:9px;height:9px}.welcome-dot[aria-selected=true]:after{background:var(--accent)}.welcome-modes{flex-direction:column;align-items:center;gap:16px;display:flex}.welcome-modes-title{text-align:center;margin:0;font:700 clamp(24px,6vw,34px)/1.2 Fredoka,sans-serif}.welcome-mode-grid{grid-template-columns:minmax(0,1fr);gap:12px;width:100%;display:grid}.welcome-mode{background:#0805056b;border:1px solid #ffdcaa29;border-radius:18px;padding:16px 18px}.welcome-mode h3{color:var(--accent);margin:0 0 6px;font:600 20px/1.2 Fredoka,sans-serif}.welcome-mode p{margin:0;line-height:1.5}.welcome-help{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.welcome-help .text-button.wide{width:auto}@media (orientation:portrait){.welcome-slides{aspect-ratio:9/16;justify-self:center;max-width:40.5vh;max-height:72vh}}@media (min-width:900px) and (orientation:landscape){.welcome-page{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;column-gap:40px}.welcome-hero{text-align:left;align-items:flex-start}.welcome-modes,.welcome-help,.welcome-page>.page-links{grid-column:1/-1}}@media (min-width:700px){.welcome-mode-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1100px){.welcome-mode-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.welcome-share{justify-content:center;padding:0;position:relative;overflow:hidden}.welcome-share-bg{object-fit:cover;filter:blur(6px)brightness(.45)saturate(1.15);width:calc(100% + 40px);height:calc(100% + 40px);position:absolute;inset:-20px}.welcome-share .welcome-hero{text-align:center;align-items:center;position:relative}.welcome-share .welcome-name{font-size:120px}.welcome-share .welcome-tagline{font-size:36px}.welcome-share .welcome-free{color:var(--text);font-size:22px}.welcome-share .welcome-line,.welcome-share .welcome-play{display:none}.press-facts{grid-template-columns:max-content minmax(0,1fr);gap:8px 16px;margin:0;display:grid}.press-facts dt{color:var(--text-soft);font-weight:700}.press-facts dd{margin:0}.press-logo{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.press-links{flex-wrap:wrap;gap:8px 16px;display:flex}.press-download{min-height:44px;color:var(--accent);align-items:center;font-weight:700;display:inline-flex}.press-clip{background:#000;border-radius:14px;width:100%}.press-shots{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.press-shot{margin:0}.press-shot img{border-radius:12px;width:100%;display:block}.press-shot-phone img{width:auto;max-width:100%;max-height:340px}.press-shot figcaption{color:var(--text-soft);margin-top:6px;font-size:13px}.screen-info.press .info-page{max-width:980px}@media (max-width:600px){.press-shots{grid-template-columns:minmax(0,1fr)}}.stats-notice{left:50%;bottom:calc(var(--safe-bottom) + 12px);z-index:44;color:#ffe7bf;background:#0c2842f5;border:1px solid #ffe08a80;border-radius:16px;flex-wrap:wrap;align-items:center;gap:8px 16px;width:min(560px,100vw - 32px);padding:12px 16px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 10px 30px #00000073}.stats-notice p{flex:260px;margin:0;font-size:14px;line-height:1.4}.stats-notice-link{color:inherit;text-decoration:underline}.stats-notice-buttons{justify-content:flex-end;align-items:center;gap:12px;margin-left:auto;display:flex}
