html,body{height:100%;margin:0;padding:0}:root{--app-bg:#efe8da;--app-glow-1:transparent;--app-glow-2:transparent;--app-gradient:linear-gradient(135deg, var(--mantine-color-brand-8) 0%, var(--mantine-color-brand-7) 55%, var(--mantine-color-brand-6) 100%)}:root[data-mantine-color-scheme=dark]{--app-bg:#1f1d1a;--app-glow-1:transparent;--app-glow-2:transparent}html{background-color:var(--app-bg);background-image:radial-gradient(520px 360px at 100% 0%, var(--app-glow-1), transparent 70%), radial-gradient(420px 300px at 0% 0%, var(--app-glow-2), transparent 70%);background-repeat:no-repeat}body{background:0 0}html[data-to-shell]{background:#221f1c}html[data-to-shell] body{visibility:hidden}@media (hover:none) and (pointer:coarse){body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}:is(input,textarea,[contenteditable]:not([contenteditable=false])){-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}img{-webkit-user-drag:none}}[data-section]{--section-from:#c9bde4;--section-to:#ddd4ee;--section-ink:#4a3d73}[data-mantine-color-scheme=dark] [data-section]{--section-ink:#cfc4e6}[data-section=library]{--section-from:#b9cbe0;--section-to:#d3e0ec;--section-ink:#34506e}[data-mantine-color-scheme=dark] [data-section=library]{--section-ink:#c6d6e8}[data-section=exercises]{--section-from:#e6bab5;--section-to:#f0d3cf;--section-ink:#7a3b35}[data-mantine-color-scheme=dark] [data-section=exercises]{--section-ink:#ecc5c0}[data-section=metronome]{--section-from:#ecccaa;--section-to:#f4e0c9;--section-ink:#7a4f22}[data-mantine-color-scheme=dark] [data-section=metronome]{--section-ink:#f1d7ba}[data-section=journal]{--section-from:#bdd1b5;--section-to:#d4e2ce;--section-ink:#3f5a36}[data-mantine-color-scheme=dark] [data-section=journal]{--section-ink:#c7d9c0}[data-section=trainer]{--section-from:#c9bde4;--section-to:#ddd4ee;--section-ink:#4a3d73}[data-mantine-color-scheme=dark] [data-section=trainer]{--section-ink:#d2c8e8}[data-section=roadmap]{--section-from:#b3c3d6;--section-to:#cdd8e5;--section-ink:#34506e}[data-mantine-color-scheme=dark] [data-section=roadmap]{--section-ink:#c1cfe0}[data-section=updates]{--section-from:#d6bfd7;--section-to:#e5d5e6;--section-ink:#5e3b61}[data-mantine-color-scheme=dark] [data-section=updates]{--section-ink:#dcc6dd}[data-section=extra]{--section-from:#ecccaa;--section-to:#f4e0c9;--section-ink:#7a4f22}[data-mantine-color-scheme=dark] [data-section=extra]{--section-ink:#f1d7ba}.section-icon{border:1.5px solid var(--sk-ink,#2d2b33);color:#2d2b33;background:var(--section-from);width:48px;height:48px;box-shadow:2px 2px 0 var(--sk-ink,#2d2b33);border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;font-size:18px;font-weight:700;display:inline-flex}.section-icon--art{box-shadow:none;filter:drop-shadow(1px 2px 1.5px #2d2b334d);background:0 0;border:0;border-radius:0}.section-icon--art img{object-fit:contain;width:100%;height:100%}.section-icon--sm{border-radius:14px;width:44px;height:44px}.section-icon--xs{border-radius:12px;width:40px;height:40px;font-size:16px}.page-header{margin-bottom:var(--mantine-spacing-lg);align-items:center;gap:14px;display:flex}.page-header__actions{flex:none;gap:8px;margin-left:auto;display:flex}.page-header__actions .mantine-Button-root,.tool-sheet-button{min-width:40px;min-height:40px}.mantine-Drawer-header .mantine-Drawer-close,.mantine-Modal-header .mantine-Modal-close{width:40px;min-width:40px;height:40px;min-height:40px}.tool-settings-bar{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.tool-settings-bar__summary{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.mantine-Text-root[data-truncate],.mantine-Button-root .mantine-Button-label,.tool-settings-bar__summary,.pj-setup__name{overflow:clip visible}.link-row{border-radius:var(--mantine-radius-lg);background:var(--mantine-color-body);border:1px solid var(--mantine-color-default-border);min-height:60px;box-shadow:var(--mantine-shadow-xs);color:var(--mantine-color-text);-webkit-tap-highlight-color:transparent;align-items:center;gap:12px;padding:10px 12px 10px 10px;text-decoration:none;transition:transform .12s,box-shadow .12s;display:flex}.link-row:active{transform:scale(.985)}@media (hover:hover){.link-row:hover{box-shadow:var(--mantine-shadow-sm)}}.link-row__text{flex-direction:column;flex:1;min-width:0;display:flex}.link-row__title{font-weight:600;line-height:1.35}.link-row__meta{font-size:var(--mantine-font-size-xs);color:var(--mantine-color-dimmed)}.link-row__chevron{color:var(--mantine-color-dimmed);flex-shrink:0}.home-hero{color:#fff;background:var(--app-gradient);text-shadow:0 1px 2px #140a3c2e;border-radius:28px;padding:1.25rem;position:relative;overflow:hidden;box-shadow:0 18px 40px -18px #6f40f5a6}.home-hero .mantine-Button-root{text-shadow:none}.home-hero__content{z-index:1;position:relative}.home-hero__row{align-items:center;gap:12px;margin-top:10px;display:flex}.home-hero__soft{color:#ffffffdb}.home-hero__keys{opacity:.14;pointer-events:none;width:150px;position:absolute;top:-18px;right:-22px;transform:rotate(14deg)}.home-tile{border-radius:var(--mantine-radius-lg);background:var(--mantine-color-body);border:1px solid var(--mantine-color-default-border);height:100%;box-shadow:var(--mantine-shadow-xs);color:var(--mantine-color-text);-webkit-tap-highlight-color:transparent;flex-direction:column;align-items:flex-start;gap:4px;padding:12px;text-decoration:none;transition:transform .12s;display:flex}.home-news{border-radius:var(--mantine-radius-lg);background:var(--mantine-color-body);border:1px solid var(--mantine-color-default-border);min-height:60px;box-shadow:var(--mantine-shadow-xs);color:var(--mantine-color-text);-webkit-tap-highlight-color:transparent;align-items:center;gap:12px;padding:12px;text-decoration:none;transition:transform .12s;display:flex}.home-news:active{transform:scale(.985)}.home-news__text{flex:1;min-width:0}.home-tile:active{transform:scale(.97)}.home-tile .section-icon{margin-bottom:6px}.gradient-card{color:#fff;background:linear-gradient(135deg, var(--section-from) 0%, var(--section-to) 150%);box-shadow:0 14px 32px -16px var(--section-from);text-shadow:0 1px 2px #0a1e1e2e;border-radius:24px;align-items:center;gap:16px;padding:1rem 1.25rem;display:flex}.gradient-card__soft{opacity:.92}.lesson-dots{grid-template-columns:repeat(auto-fill,minmax(62px,1fr));gap:14px 6px;display:grid}.lesson-dot{color:var(--mantine-color-dimmed);-webkit-tap-highlight-color:transparent;flex-direction:column;align-items:center;gap:6px;text-decoration:none;display:flex}.lesson-dot__circle{background:var(--dot-soft);width:54px;height:54px;color:var(--dot-ink);border-radius:50%;justify-content:center;align-items:center;font-size:20px;font-weight:800;transition:transform .12s;display:flex}.lesson-dot:active .lesson-dot__circle{transform:scale(.92)}.lesson-dot__label{font-size:12px;line-height:1.2}.lesson-dot[data-state=done] .lesson-dot__circle{background:linear-gradient(135deg, var(--dot-from), var(--dot-to));color:#fff;box-shadow:0 6px 14px -6px var(--dot-from)}.lesson-dot[data-state=current] .lesson-dot__circle{background:var(--mantine-color-body);color:var(--dot-from);border:3px solid var(--dot-from);animation:2.4s ease-out infinite lesson-dot-glow}.lesson-dot[data-state=current] .lesson-dot__label{color:var(--dot-ink);font-weight:700}.lesson-dot[data-state=locked] .lesson-dot__circle{color:var(--mantine-color-dimmed);border:2px dashed var(--mantine-color-default-border);background:0 0}@keyframes lesson-dot-glow{0%{box-shadow:0 0 0 0 var(--dot-to)}80%,to{box-shadow:0 0 0 12px #0000}}@media (prefers-reduced-motion:reduce){.lesson-dot[data-state=current] .lesson-dot__circle{box-shadow:0 0 0 5px var(--dot-soft);animation:none}}.lesson-dot--mini .lesson-dot__circle{width:20px;height:20px;font-size:10px;box-shadow:none!important;border-width:2px!important;animation:none!important}.chapter-badge{color:#fff;background:linear-gradient(135deg, var(--dot-from), var(--dot-to));width:40px;height:40px;box-shadow:0 6px 14px -6px var(--dot-from);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;font-size:18px;font-weight:800;display:inline-flex}.journal-row{align-items:center;gap:12px;min-height:60px;padding:8px 12px;display:flex}.journal-row+.journal-row{border-top:1px solid var(--mantine-color-default-border)}.journal-row__title{flex:1;min-width:0;line-height:1.35}.num-bubble{background:var(--dot-soft);width:32px;height:32px;color:var(--dot-ink);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:800;display:inline-flex}.journal-row[data-done] .num-bubble{background:linear-gradient(135deg, var(--dot-from), var(--dot-to));color:#fff}.tip-row{align-items:flex-start;gap:12px;display:flex}@media (max-width:36em){.lesson-nav__prev{order:2}.lesson-nav__spacer{display:none}}.metronome{gap:var(--mantine-spacing-lg);padding:var(--mantine-spacing-lg);flex-direction:column;display:flex}.metronome__face,.metronome__controls{gap:var(--mantine-spacing-lg);flex-direction:column;min-width:0;display:flex}@media (orientation:landscape) and (min-width:35em){.metronome{align-items:center;column-gap:var(--mantine-spacing-xl);grid-template-columns:minmax(0,5fr) minmax(0,6fr);display:grid}}@media (orientation:landscape) and (max-height:540px){.metronome{padding:var(--mantine-spacing-sm) var(--mantine-spacing-md)}.metronome__face,.metronome__controls{gap:10px}.metronome .metronome-bpm{font-size:64px}.metronome .metronome__tap{height:44px}.app-content:has(.metronome){padding-bottom:calc(8px + var(--safe-bottom))}}@media (orientation:landscape) and (max-height:340px){.metronome{padding:6px var(--mantine-spacing-md)}.metronome__face,.metronome__controls{gap:5px}.metronome__controls{padding-top:4px}.metronome .metronome__beats{height:36px}.metronome .metronome-bpm{font-size:52px}.metronome .metronome__start{height:48px}}.metronome__beats{height:48px}.metronome .mantine-SegmentedControl-label{justify-content:center;align-items:center;min-height:40px;display:flex}.beat-dot{background:var(--mantine-color-brand-light);border-radius:50%;width:26px;height:26px;transition:transform 80ms ease-out,background-color 60ms linear,box-shadow 80ms ease-out;display:block}.beat-dot[data-accent]{background:var(--mantine-color-orange-light);width:36px;height:36px}.beat-dot[data-active]{background:var(--mantine-color-brand-5);box-shadow:0 0 0 6px var(--mantine-color-brand-light);transform:scale(1.15)}.beat-dot[data-accent][data-active]{background:var(--mantine-color-orange-5);box-shadow:0 0 0 7px var(--mantine-color-orange-light)}@media (prefers-reduced-motion:reduce){.beat-dot{transition:none}.beat-dot[data-active]{transform:none}}.metronome-bpm{letter-spacing:-2px;font-variant-numeric:tabular-nums;background:linear-gradient(135deg, var(--mantine-color-orange-7), var(--mantine-color-pink-6));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:84px;font-weight:800;line-height:1}.markdown-body{max-width:760px;color:var(--mantine-color-text);margin:0 auto;padding:.25rem .25rem .5rem;font-size:1.0625rem;line-height:1.75}@media (min-width:48em){.markdown-body{background:var(--mantine-color-body);border:1px solid var(--mantine-color-default-border);box-shadow:var(--mantine-shadow-sm);border-radius:24px;padding:2rem 2.5rem;font-size:1.1rem}}:where(.markdown-body) img{border-radius:16px;max-width:100%;height:auto;margin:1.25rem auto;display:block;box-shadow:0 8px 24px -8px #2212544d}:where(.markdown-body) h1{letter-spacing:-.3px;background-image:var(--app-gradient);margin:.5rem 0 1.25rem;font-size:1.75rem;font-weight:800;line-height:1.25}[data-mantine-color-scheme=dark] :where(.markdown-body) h1{background-image:linear-gradient(135deg, var(--mantine-color-brand-3) 0%, var(--mantine-color-pink-3) 100%)}:where(.markdown-body) h1{-webkit-text-fill-color:transparent;-webkit-box-decoration-break:clone;box-decoration-break:clone;-webkit-background-clip:text;background-clip:text}:where(.markdown-body) h2{color:var(--mantine-color-brand-8);font-size:1.35rem;font-weight:800;line-height:1.3;position:relative}[data-mantine-color-scheme=dark] :where(.markdown-body) h2{color:var(--mantine-color-brand-2)}:where(.markdown-body) h2{margin:2.25rem 0 1rem;padding-left:.85rem}:where(.markdown-body) h2:before{content:"";background:var(--app-gradient);border-radius:99px;width:5px;position:absolute;top:.15em;bottom:.15em;left:0}:where(.markdown-body) h3{color:var(--mantine-color-pink-7);font-size:1.15rem;font-weight:700;line-height:1.35}[data-mantine-color-scheme=dark] :where(.markdown-body) h3{color:var(--mantine-color-pink-3)}:where(.markdown-body) h3{margin:1.75rem 0 .75rem}@media (min-width:48em){:where(.markdown-body) h1{font-size:2.4rem}:where(.markdown-body) h2{margin-top:2.75rem;font-size:1.6rem}:where(.markdown-body) h3{font-size:1.3rem}}:where(.markdown-body) p{color:var(--mantine-color-gray-9);margin:0 0 1.1rem}[data-mantine-color-scheme=dark] :where(.markdown-body) p{color:var(--mantine-color-dark-0)}:where(.markdown-body) ul,:where(.markdown-body) ol{color:var(--mantine-color-gray-9);margin:0 0 1.1rem;padding-left:1.4rem}[data-mantine-color-scheme=dark] :where(.markdown-body) ul,[data-mantine-color-scheme=dark] :where(.markdown-body) ol{color:var(--mantine-color-dark-0)}:where(.markdown-body) li{margin-bottom:.5rem}:where(.markdown-body) li::marker{color:var(--mantine-color-brand-5);font-weight:700}:where(.markdown-body) blockquote{background:var(--mantine-color-brand-0);margin:1.5rem 0;padding:.9rem 1.1rem}[data-mantine-color-scheme=dark] :where(.markdown-body) blockquote{background:#7f52ff1f}:where(.markdown-body) blockquote{border-left:4px solid var(--mantine-color-brand-5);border-radius:6px 16px 16px 6px;font-size:1rem}:where(.markdown-body) hr{background:var(--app-gradient);opacity:.35;border:0;border-radius:99px;max-width:120px;height:3px;margin:2.5rem auto}:where(.markdown-body) strong{color:var(--mantine-color-orange-9)}[data-mantine-color-scheme=dark] :where(.markdown-body) strong{color:var(--mantine-color-yellow-4)}:where(.markdown-body) strong{font-weight:700}:where(.markdown-body) code{background:var(--mantine-color-brand-0)}[data-mantine-color-scheme=dark] :where(.markdown-body) code{background:#7f52ff2e}:where(.markdown-body) code{color:var(--mantine-color-brand-8);border-radius:6px;padding:.15em .4em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em}[data-mantine-color-scheme=dark] :where(.markdown-body) code{color:var(--mantine-color-brand-2)}.theme-icon--sun{display:none}[data-mantine-color-scheme=dark] .theme-icon--sun{display:block}[data-mantine-color-scheme=dark] .theme-icon--moon{display:none}:where(.markdown-body) a{color:var(--mantine-color-brand-7)}[data-mantine-color-scheme=dark] :where(.markdown-body) a{color:var(--mantine-color-brand-3)}:where(.markdown-body) a{border-bottom:2px solid var(--mantine-color-brand-2);font-weight:600;text-decoration:none}[data-mantine-color-scheme=dark] :where(.markdown-body) a{border-bottom:2px solid #9068ff73}:where(.markdown-body) a{transition:border-color .15s,color .15s}:where(.markdown-body) a:hover{color:var(--mantine-color-brand-9)}[data-mantine-color-scheme=dark] :where(.markdown-body) a:hover{color:var(--mantine-color-brand-1)}:where(.markdown-body) a:hover{border-bottom-color:currentColor}.markdown-table-wrapper{border:1px solid var(--mantine-color-default-border);background:var(--mantine-color-body);border-radius:16px;margin:1.5rem 0;overflow-x:auto}.markdown-table-wrapper table{border-collapse:collapse;width:100%;font-size:.975rem}.markdown-table-wrapper th,.markdown-table-wrapper td{text-align:left;vertical-align:top;border-bottom:1px solid var(--mantine-color-default-border);padding:.7rem .9rem}.markdown-table-wrapper th{background:var(--mantine-color-brand-0)}[data-mantine-color-scheme=dark] .markdown-table-wrapper th{background:#7f52ff2e}.markdown-table-wrapper th{color:var(--mantine-color-brand-9);font-weight:700}[data-mantine-color-scheme=dark] .markdown-table-wrapper th{color:var(--mantine-color-brand-1)}.markdown-table-wrapper th{white-space:nowrap}.markdown-table-wrapper td{color:var(--mantine-color-gray-9)}[data-mantine-color-scheme=dark] .markdown-table-wrapper td{color:var(--mantine-color-dark-0)}.markdown-table-wrapper tbody tr:last-child td{border-bottom:none}.markdown-table-wrapper tbody tr:hover td{background:#00000005}[data-mantine-color-scheme=dark] .markdown-table-wrapper tbody tr:hover td{background:#ffffff08}:where(.markdown-body) blockquote p{margin-bottom:.5rem;font-size:1rem}:where(.markdown-body) blockquote p:last-child{margin-bottom:0}.markdown-pre-wrapper{margin:1.5rem 0}.abcjs-highlight{fill:#ff4757!important;stroke:#ff4757!important}.practice-correct,.practice-correct *{fill:#2f9e44!important;stroke:#2f9e44!important}@keyframes practice-miss-color{0%{fill:#e03131;stroke:#e03131}30%{fill:#e03131;stroke:#e03131}45%{fill:#000;stroke:#000}60%{fill:#e03131;stroke:#e03131}to{fill:#000;stroke:#000}}@keyframes practice-miss-shake{0%,to{transform:translate(0)}20%{transform:translate(-2.5px)}45%{transform:translate(2.5px)}70%{transform:translate(-1.5px)}88%{transform:translate(1px)}}.practice-miss-flash{animation:.45s ease-in-out practice-miss-color,.45s ease-in-out practice-miss-shake}.practice-miss-flash *{animation:.45s ease-in-out practice-miss-color}@media (prefers-reduced-motion:reduce){.practice-miss-flash{animation:.45s ease-in-out practice-miss-color}}@keyframes practice-hit-color{0%{fill:#69db7c;stroke:#69db7c}55%{fill:#69db7c;stroke:#69db7c}to{fill:#000;stroke:#000}}.practice-hit-flash,.practice-hit-flash *{animation:.45s ease-out practice-hit-color}.practice-wrong,.practice-wrong *{fill:#e8590c!important;stroke:#e8590c!important}.practice-missing,.practice-missing *{fill:#adb5bd!important;stroke:#adb5bd!important}.practice-outside{opacity:.25}.sheet-section-band{z-index:360;pointer-events:none;background:#7c3aed1f;border-radius:8px;position:fixed}.sheet-section-handle{z-index:361;cursor:ew-resize;touch-action:none;background:0 0;border:0;justify-content:center;align-items:center;width:40px;padding:0;display:flex;position:fixed;transform:translate(-50%)}.sheet-section-handle:before{content:"";background:var(--mantine-color-violet-6);border-radius:999px;width:6px;height:100%;box-shadow:0 0 0 2px #fff}.sheet-section-handle:focus-visible:before{outline:2px solid var(--mantine-color-violet-9);outline-offset:2px}.sheet-music-wrapper.is-picking .sheet-music-paper{touch-action:none;cursor:crosshair;-webkit-user-select:none;user-select:none;outline:2px dashed var(--mantine-color-blue-5);outline-offset:2px}@media (max-width:480px){.drill-hands-picker .mantine-SegmentedControl-label{padding-inline:6px;font-size:12px}}:root{--safe-top:max(env(safe-area-inset-top,0px), var(--shell-safe-top,0px));--edge-top:14px;--safe-bottom:max(env(safe-area-inset-bottom,0px), var(--shell-safe-bottom,0px));--safe-left:max(env(safe-area-inset-left,0px), var(--shell-safe-left,0px));--safe-right:max(env(safe-area-inset-right,0px), var(--shell-safe-right,0px))}@media (max-height:340px){:root{--edge-top:8px}}.app-content{max-width:900px;padding-top:calc(var(--safe-top) + var(--mantine-spacing-md));padding-bottom:calc(var(--mantine-spacing-xl) + var(--safe-bottom));padding-inline:calc(var(--mantine-spacing-md) + max(var(--safe-left), var(--safe-right)));margin:0 auto}@media (max-width:48em){.app-content{padding-inline:calc(var(--mantine-spacing-xs) + max(var(--safe-left), var(--safe-right)))}}.sign-in-screen{min-height:100dvh;padding:calc(var(--safe-top) + var(--mantine-spacing-md)) calc(var(--mantine-spacing-md) + max(var(--safe-left), var(--safe-right))) calc(var(--safe-bottom) + var(--mantine-spacing-md));justify-content:center;align-items:center;display:flex}.sheet-music-wrapper{background:var(--mantine-color-body);border:1px solid var(--mantine-color-default-border);box-shadow:var(--mantine-shadow-sm);border-radius:20px;margin:1.5rem 0;padding:1rem}@media (max-width:48em){.sheet-music-wrapper{border-radius:16px;padding:.5rem}}.sheet-music-wrapper.is-focused{z-index:350;box-shadow:none;overscroll-behavior:contain;padding:0 calc(.75rem + max(var(--safe-left), var(--safe-right))) calc(.75rem + var(--safe-bottom)) calc(.75rem + max(var(--safe-left), var(--safe-right)));border:none;border-radius:0;flex-direction:column;gap:.5rem;display:flex;position:fixed;inset:0;overflow-y:auto;margin:0!important}.sheet-music-wrapper.is-focused .sheet-music-paper{flex:none;min-height:0;max-height:100%;overflow:auto;width:calc(100% * var(--sheet-zoom,1))!important;padding-bottom:1rem!important;overflow:auto!important}.sheet-music-wrapper.is-focused .sheet-music-paper svg{width:100%!important;height:auto!important;position:static!important}.sheet-chunk{display:block!important}.sheet-music-wrapper.is-focused .sheet-chunk{padding-bottom:0!important}.sheet-music-wrapper.is-focused .sheet-chunk svg{display:block!important}.sheet-music-wrapper.is-focused{overflow:auto}.sheet-music-wrapper.is-focused>*{flex-shrink:0}.sheet-music-wrapper.is-focused>.mantine-Group-root:first-child{z-index:1;background:var(--mantine-color-body);padding-top:calc(.75rem + var(--safe-top));position:sticky;top:0;left:0}body.sheet-focus-lock{overflow:hidden}body.sheet-focus-lock .markdown-body{-webkit-backdrop-filter:none;backdrop-filter:none}body.sheet-focus-lock .markdown-pre-wrapper,body.sheet-focus-lock .markdown-pre-wrapper:hover{transition:none;transform:none}.home-btn{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:999px;flex-shrink:0;place-items:center;width:40px;height:40px;padding:0;display:grid}.home-btn__art{object-fit:contain;pointer-events:none;width:100%;height:100%}.home-btn:active{transform:translateY(2px)scale(.96)}.home-btn:focus-visible{outline:3px solid var(--mantine-color-brand-5);outline-offset:2px}.nav-btns{flex-shrink:0;gap:8px;display:flex}.nav-btns--float{z-index:200;top:calc(var(--safe-top) + var(--edge-top));left:calc(max(var(--safe-left), var(--safe-right)) + 8px);position:fixed}body:has(.page-header) .nav-btns--float{display:none}.page-header>.nav-btns{top:calc(var(--safe-top) + var(--edge-top));left:calc(max(var(--safe-left), var(--safe-right)) + 8px);position:absolute}.app-content:has(.page-header){padding-top:calc(var(--safe-top) + var(--edge-top))}.page-header>.section-icon{align-self:flex-start;margin-top:-4px}.page-header__actions{align-self:flex-start;align-items:center;min-height:40px}@media (max-width:1100px){.page-header:before{content:"";flex:none;width:88px}}.app-content:not(.app-content--lobby):not(:has(.page-header,.guided-intro-frame)){padding-top:calc(var(--safe-top) + var(--edge-top) + 48px)}.land-grid{gap:var(--mantine-spacing-sm);grid-template-columns:minmax(0,1fr);display:grid}.land-grid--loose{gap:var(--mantine-spacing-xl)}@media (orientation:landscape) and (min-width:35em){.land-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr))}.land-grid--wide{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}.split-land{gap:var(--mantine-spacing-md);grid-template-columns:minmax(190px,.34fr) minmax(0,1fr);align-items:start;display:grid}.split-land__aside{top:calc(var(--safe-top) + var(--edge-top));position:sticky}}@media (orientation:landscape) and (max-height:540px){.page-header{gap:10px;margin-bottom:10px}.app-content:has(.page-header){padding-top:calc(var(--safe-top) + var(--edge-top));max-width:none;position:relative}.page-header>.nav-btns{top:calc(var(--safe-top) + var(--edge-top));left:calc(max(var(--safe-left), var(--safe-right)) + 8px);position:absolute}.page-header:before{content:"";flex:none;width:88px}.page-header>.section-icon{align-self:flex-start;margin-top:2px}.page-header__actions{align-self:flex-start;align-items:center;min-height:40px}.page-header .section-icon{border-radius:12px;width:36px;height:36px}.page-header .section-icon svg{width:20px;height:20px}.page-header .mantine-Title-root{font-size:20px;line-height:1.2}.hide-short-landscape{display:none!important}.page-header .page-header__desc{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.35;display:-webkit-box;overflow:hidden}}.ambient-piece{border:1px solid var(--mantine-color-default-border);background:0 0;border-radius:10px;width:100%;min-height:44px;padding:8px 12px;transition:background-color .14s,border-color .14s;display:block}.ambient-piece:active{transform:scale(.99)}.ambient-piece[data-selected]{border-color:var(--mantine-color-violet-5);background:var(--mantine-color-violet-light)}.course-card{color:inherit;border:1px solid var(--mantine-color-default-border);border-radius:var(--mantine-radius-md);background:var(--mantine-color-body);text-decoration:none;transition:transform .12s;display:block;overflow:hidden}.course-card__image{aspect-ratio:16/9;object-fit:cover;width:100%;height:auto;display:block}.course-card__body{padding:var(--mantine-spacing-md)}.course-card:active{transform:scale(.995)}.course-card--upcoming{opacity:.55;cursor:default;border-style:dashed}.course-card--upcoming:active{transform:none}@media (orientation:landscape) and (max-height:540px){.land-grid--wide{grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr))}.course-card__image{aspect-ratio:4}.course-card__body{padding:var(--mantine-spacing-sm) var(--mantine-spacing-md)}.course-card__summary{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.app-content:has(.course-card){padding-bottom:calc(8px + var(--safe-bottom))}}.corridor{--door-w:clamp(64px, calc((100dvh - 191px) * .53), 118px);overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;align-items:flex-start;gap:14px;margin:-6px -10px 0;padding:14px 10px 6px;display:flex;overflow-x:auto}.corridor::-webkit-scrollbar{display:none}@media (max-width:700px){.corridor{--door-w:clamp(64px, calc((100dvh - 217px) * .53), 118px)}}.door{flex:0 0 var(--door-w);width:var(--door-w);color:inherit;scroll-snap-align:center;-webkit-tap-highlight-color:transparent;flex-direction:column;align-items:center;gap:6px;text-decoration:none;display:flex}.door--upcoming{flex-basis:calc(var(--door-w) * 568 / 319);width:calc(var(--door-w) * 568 / 319)}.door__art{width:100%;transition:transform .14s;display:block;position:relative}.door__room{background:#e8e1d4 50%/cover no-repeat;transition:filter .16s;position:absolute}.door__img{filter:drop-shadow(0 5px 5px #3a323659);-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:auto;display:block;position:relative}.door__tag{z-index:1;background:var(--dot-from,#e8935a);color:#fff;white-space:nowrap;border:1px solid #3a3236;border-radius:99px;padding:0 7px;font-size:10.5px;font-weight:700;line-height:1.6;position:absolute;top:-10px;left:50%;transform:translate(-50%)}.door__stamp{color:#fff;background:#5e9c77;border:1px solid #3a3236;border-radius:50%;place-items:center;width:19px;height:19px;display:grid;position:absolute;top:9%;right:16%}.door__title{-webkit-line-clamp:2;text-align:center;width:100%;text-shadow:0 0 3px var(--mantine-color-body), 0 0 3px var(--mantine-color-body);-webkit-box-orient:vertical;margin-bottom:-1px;padding-bottom:1px;font-size:11.5px;font-weight:600;line-height:1.25;display:-webkit-box;overflow:hidden}.door__progress{background:#3a32362e;border-radius:99px;width:70%;height:3px;display:block;overflow:hidden}.door__progress>span{background:var(--mantine-color-orange-6);height:100%;display:block}.door:active .door__art{transform:translateY(1px)}.door[data-state=current] .door__img{filter:drop-shadow(0 5px 5px #3a323659)drop-shadow(0 0 9px #ffc864cc)}.door[data-state=current] .door__room{filter:brightness(1.12)saturate(1.1)}.door[data-state=closed]{cursor:default}.door[data-state=closed] .door__room{filter:grayscale()brightness(.4)}.door[data-state=closed] .door__img{filter:drop-shadow(0 5px 5px #3a32364d)saturate(.55)brightness(.86)}.door[data-state=closed] .door__title{opacity:.7}.door[data-state=closed]:active .door__art{transform:none}@media (prefers-reduced-motion:reduce){.door__art,.door__room{transition:none}}@media (orientation:landscape) and (min-width:35em){.split-land__aside .path-summary{text-align:center;flex-direction:column}}.step-card{transition:border-color .14s,background-color .14s}.step-card__prefix{display:none}.chapter-layout{flex-direction:column;display:flex}@media (orientation:landscape) and (min-width:35em){.chapter-layout{column-gap:var(--mantine-spacing-md);grid-template:"progress steps""review steps""nav steps"".steps"1fr/minmax(190px,.34fr) minmax(0,1fr);align-items:start;display:grid}.chapter-layout__progress{grid-area:progress}.chapter-layout__steps{grid-area:steps}.chapter-layout__review{grid-area:review;margin-top:0!important}.chapter-layout__nav{grid-area:nav;margin-top:var(--mantine-spacing-md)!important;flex-wrap:wrap!important}.chapter-layout__nav>*{flex:auto}}@media (orientation:landscape) and (max-height:540px) and (min-width:35em){.path-split{gap:var(--mantine-spacing-sm);grid-template-columns:minmax(120px,.2fr) minmax(0,1fr)}.path-split .split-land__aside{padding:var(--mantine-spacing-xs)}.path-split .split-land__aside .mantine-Text-root{font-size:12px}.chapter-layout__steps .land-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 8px}.step-card.mantine-Card-root{padding:4px 10px!important}.step-card__prefix{color:var(--mantine-color-dimmed);font-weight:600;display:inline!important}.step-card__label,.step-card__kind,.step-card__here{display:none!important}.chapter-layout{grid-template-columns:minmax(160px,.28fr) minmax(0,1fr)}.chapter-layout__progress{margin-bottom:var(--mantine-spacing-xs)!important}.chapter-layout__nav{margin-top:var(--mantine-spacing-xs)!important}.chapter-layout__review-hint{display:none}.app-content:has(.chapter-layout){padding-bottom:calc(8px + var(--safe-bottom))}}@media (orientation:landscape) and (max-height:340px) and (min-width:35em){.chapter-layout__steps .land-grid{row-gap:4px}.step-card.mantine-Card-root{padding-block:2px!important}}.step-card[data-state=current]{border-color:var(--mantine-color-orange-5);background:var(--mantine-color-orange-light)}.step-card[data-state=done]{border-color:var(--mantine-color-teal-4)}.step-card[data-state=locked]{opacity:.7}.step-card__open{min-width:0;color:inherit;flex-direction:column;flex:1;justify-content:center;align-self:stretch;padding-block:4px;text-decoration:none;display:flex}.step-tick{width:44px;height:44px;color:var(--mantine-color-dimmed);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;transition:color .14s,background-color .14s,transform .12s;display:flex}.step-tick[data-done]{color:var(--mantine-color-teal-6)}.step-tick:active{transform:scale(.9)}.step-tick:disabled{opacity:.45}.drill-stage.is-focused{z-index:350;background:var(--mantine-color-body);padding:calc(var(--edge-top) + var(--safe-top)) calc(.75rem + max(var(--safe-left), var(--safe-right))) calc(.5rem + var(--safe-bottom)) calc(.75rem + max(var(--safe-left), var(--safe-right)));overscroll-behavior:contain;gap:.5rem;position:fixed;inset:0;overflow-y:auto}.drill-stage.is-focused>*{flex-shrink:0}.drill-stage.is-focused>[data-testid=staff]{flex:1 0 auto}.drill-stage.is-focused.is-tight>[data-testid=staff]{flex:auto}.drill-stage.is-tight .vkb{height:96px}.drill-stage.is-focused>.drill-stage__actions{z-index:1;background:var(--mantine-color-body);width:100%;padding-block:.25rem;position:sticky;bottom:0}.vkb-frame{border:1px solid var(--mantine-color-gray-3);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;background:#d9d4e6;border-radius:12px;padding:6px 6px 10px;overflow-x:auto}.vkb{--vkb-depth:6px;height:150px;position:relative}.vkb-key{cursor:pointer;-webkit-tap-highlight-color:transparent;border:0;padding:0;transition:transform 60ms ease-out,box-shadow 60ms ease-out,background 60ms ease-out;position:absolute;top:0}.vkb-key--white{z-index:1;height:calc(100% - var(--vkb-depth));box-shadow:0 var(--vkb-depth) 0 0 #c3bdd4, inset 0 -2px 0 0 #e6e2ef;background:linear-gradient(#fff 70%,#f1eff7 100%);border-radius:0 0 9px 9px;margin-left:1px}.vkb-key--black{z-index:2;background:linear-gradient(#3d3749 0%,#2b2733 85%,#3a3446 100%);border-radius:0 0 6px 6px;height:60%;box-shadow:0 5px #110e18}.vkb-key--white[data-down]{transform:translateY(calc(var(--vkb-depth) - 1px));background:linear-gradient(#f1eff7 60%,#e6e2ef 100%);box-shadow:0 1px #c3bdd4,inset 0 -2px #e6e2ef}.vkb-key--black[data-down]{background:linear-gradient(#2b2733 0%,#221f29 100%);transform:translateY(4px);box-shadow:0 1px #110e18}.busy-ring{border:2.5px solid color-mix(in srgb, currentColor 25%, transparent);border-top-color:currentColor;border-radius:50%;flex:none;width:18px;height:18px;animation:.8s linear infinite busy-spin;display:inline-block}.busy-ring--light{color:#fff}@keyframes busy-spin{to{transform:rotate(360deg)}}.sheet-busy{color:#4f4644;background:#fff;border-radius:4px;justify-content:center;align-items:center;gap:10px;min-height:120px;font-size:14px;animation:.15s .2s both busy-appear;display:flex}@keyframes busy-appear{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.busy-ring{animation-duration:2.4s}}.song-card{color:inherit;padding:var(--mantine-spacing-md);border:1px solid var(--mantine-color-default-border);border-radius:var(--mantine-radius-md);background:var(--mantine-color-body);text-decoration:none;transition:border-color .14s,transform .12s;display:block}.song-card:active{transform:scale(.995)}.sheet-import__row{align-items:center;gap:var(--mantine-spacing-sm) var(--mantine-spacing-lg);flex-wrap:wrap;display:flex}.sheet-import__intro{flex:16em;min-width:0}.sheet-import__pick{flex:none}.update-card{padding:var(--mantine-spacing-md);border:1px solid var(--mantine-color-default-border);border-radius:var(--mantine-radius-md);background:var(--mantine-color-body);content-visibility:auto;contain-intrinsic-size:auto 900px}.update-card .markdown-body{max-width:none;box-shadow:none;background:0 0;border:0;border-radius:0;margin:0;padding:0;font-size:1rem}.update-card :where(.markdown-body)>:first-child{margin-top:0}.update-card :where(.markdown-body) h2{margin:1.5rem 0 .5rem;font-size:1.1rem}.chip-locked-label{align-items:center;gap:4px;display:inline-flex}.photo-sheet{margin:1rem 0}.photo-sheet-paper{background:var(--mantine-color-body);border:1px solid var(--mantine-color-default-border);background-color:#fff;border-radius:16px;position:relative;overflow:hidden}.photo-sheet-paper img{object-fit:contain;width:100%;height:auto;max-height:calc(100dvh - 16rem);margin:0 auto;display:block}.photo-sheet-half{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;width:40%;position:absolute;top:0;bottom:0}.photo-sheet-half:disabled{cursor:default}.photo-sheet-half.is-left{left:0}.photo-sheet-half.is-right{right:0}.photo-sheet.is-focused{z-index:350;background:var(--mantine-color-body);flex-direction:column;margin:0;padding:.5rem;display:flex;position:fixed;inset:0}.photo-sheet.is-focused .photo-sheet-paper{border-radius:12px;flex:auto;align-items:center;min-height:0;display:flex}.photo-sheet.is-focused .photo-sheet-paper img{max-height:100%}:root{--admin-head-bg:var(--mantine-color-gray-0)}:root[data-mantine-color-scheme=dark]{--admin-head-bg:var(--mantine-color-dark-6)}.admin-list-toolbar{border-bottom:1px solid var(--mantine-color-default-border)}.admin-list-footer{border-top:1px solid var(--mantine-color-default-border);background-color:var(--admin-head-bg)}.admin-list .mantine-Table-thead .mantine-Table-th{background-color:var(--admin-head-bg);color:var(--mantine-color-dimmed);font-size:var(--mantine-font-size-xs);white-space:nowrap;font-weight:600}.admin-list .mantine-Table-td{vertical-align:top}.admin-user-table .mantine-Table-td:not(:first-child){white-space:nowrap}.admin-sticky-actions{z-index:1;background-color:var(--mantine-color-body);box-shadow:inset 1px 0 0 var(--mantine-color-default-border);position:sticky;right:0}.admin-list .mantine-Table-thead .admin-sticky-actions{background-color:var(--admin-head-bg)}.mantine-Table-tbody>.mantine-Table-tr[data-striped=odd]:nth-of-type(odd)>.admin-sticky-actions{background-image:linear-gradient(var(--table-striped-color), var(--table-striped-color))}.mantine-Table-tr[data-hover]:hover>.admin-sticky-actions{background-image:linear-gradient(var(--table-hover-color), var(--table-hover-color))}.guided-stage{z-index:350;background:var(--mantine-color-body);padding:calc(var(--edge-top) + var(--safe-top)) calc(.75rem + max(var(--safe-left), var(--safe-right))) calc(.5rem + var(--safe-bottom)) calc(.75rem + max(var(--safe-left), var(--safe-right)));grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);display:grid;position:fixed;inset:0}.guided-stage__bar{align-items:center;gap:.5rem;padding-bottom:.4rem;display:flex;position:relative}.guided-stage__progress{position:absolute;bottom:0;left:0;right:0}.guided-stage__body{overscroll-behavior:contain;padding:.75rem 0;overflow:hidden auto}.guided-step{flex-direction:column;gap:1rem;max-width:60rem;margin:0 auto;animation:.3s cubic-bezier(.2,.8,.2,1) both guided-step-in;display:flex}.guided-step[data-dir=back]{animation-name:guided-step-back}@keyframes guided-step-in{0%{opacity:0;transform:translate(28px)}to{opacity:1;transform:none}}@keyframes guided-step-back{0%{opacity:0;transform:translate(-28px)}to{opacity:1;transform:none}}.guided-step__words{flex-direction:column;gap:.75rem;display:flex}.lesson-feedback{max-width:24rem}.lesson-feedback__slips{grid-template-columns:1fr 1fr;gap:10px;display:grid}.lesson-feedback__slip{--tilt:-.6deg;background:var(--menu-paper) center / 100% 100% no-repeat;color:#2d2b33;white-space:nowrap;filter:drop-shadow(1px 2px 1.5px #00000073);min-height:44px;transform:rotate(var(--tilt));-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;gap:8px;padding:4px 12px;font-size:15px;font-weight:700;display:flex}.lesson-feedback__slip+.lesson-feedback__slip{--tilt:.5deg}.lesson-feedback__slip:active{transform:translate(1px, 1px) rotate(var(--tilt));filter:drop-shadow(0 1px 1px #00000073)}.lesson-feedback__slip:focus-visible{outline-offset:3px;outline:2px dashed}.lesson-feedback__slip:disabled{cursor:progress}.lesson-feedback__mark{pointer-events:none;flex:none}.tick-inline{-webkit-tap-highlight-color:transparent;border-radius:999px;align-self:flex-start;align-items:center;gap:10px;min-height:44px;display:inline-flex}.tick-inline__mark{flex:none;place-items:center;width:44px;height:44px;display:grid;position:relative}.tick-inline:active .tick-inline__mark{transform:scale(.92)}.tick-inline:disabled{opacity:.55}.tick-inline:focus-visible{outline-offset:2px;outline:2px dashed}.guided-step__title{font-size:1.75rem;line-height:1.25}.guided-step__text{font-size:1.2rem;line-height:1.5}.guided-step__image{object-fit:contain;max-width:32rem;max-height:40vh}.guided-diagram-box{width:100%}.guided-diagram-box>svg{width:100%;height:auto;max-height:inherit;margin-inline:auto;display:block}.guided-stage__slot{display:contents}@media (max-width:30em){.guided-stage__bar:has(.guided-stage__slot>*) .guided-stage__count{display:none}}.guided-play__position{margin-top:6px}.guided-play__controls{margin-top:12px}.guided-play__hint{flex:14rem;min-width:0}.guided-praise{animation:.42s cubic-bezier(.34,1.56,.64,1) both pj-praise-pop}@keyframes pj-praise-pop{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}.guided-intro{flex-direction:column;gap:1rem;display:flex}.guided-intro__words{flex-direction:column;gap:1rem;min-width:0;display:flex}.guided-intro__media{flex-direction:column;gap:.75rem;min-width:0;display:flex}.guided-intro__actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}@media (orientation:landscape){.guided-intro{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);align-items:center;gap:1.25rem;display:grid}.guided-intro__image{object-fit:contain;max-height:60vh}}.guided-intro__region{border-left:3px solid var(--mantine-color-violet-4);flex-direction:column;gap:.25rem;padding-left:.75rem;display:flex}.guided-intro__picture{align-self:center;max-width:100%;position:relative}.guided-intro__speaker-art{border:1.5px solid var(--mantine-color-violet-3);background:#fffdf8;border-radius:50%;padding:4px;position:absolute;bottom:-10px;right:-6px;box-shadow:0 2px 6px #2d2b332e}.guided-rotate-hint{display:none}@media (pointer:coarse) and (orientation:portrait){.guided-rotate-hint{border-radius:var(--mantine-radius-md);background:var(--mantine-color-blue-light);color:var(--mantine-color-blue-light-color);align-items:center;gap:.4rem;margin-bottom:.75rem;padding:.4rem .75rem;font-size:.9rem;display:flex}}@media (orientation:landscape) and (max-height:540px){.guided-intro-frame{min-height:calc(100dvh - var(--safe-top) - var(--mantine-spacing-md) * 2);margin-bottom:calc(var(--mantine-spacing-md) - var(--mantine-spacing-xl));align-items:safe center;display:flex}.guided-intro-frame>.guided-intro{flex:1;min-width:0}.guided-intro{grid-template-columns:minmax(0,.85fr) minmax(0,1.25fr);gap:1rem;padding:.75rem}.guided-intro__media,.guided-intro__words{gap:.5rem}.guided-intro__words .mantine-Title-root{font-size:1.35rem}.guided-stage__body{padding:.75rem 0 .25rem}.guided-step,.guided-step__words{gap:.5rem}.lesson-feedback__note{display:none}.tick-inline,.lesson-feedback__slip{min-height:40px}.tick-inline__mark{width:40px;height:40px}.tick-inline__label{font-size:.875rem;line-height:1.25}.guided-step__title{font-size:1.35rem}.guided-step__text{font-size:1.05rem}.guided-step.has-image{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:1.5rem;display:grid}.guided-step__image{max-height:60vh}.guided-step.is-connect.has-image{gap:.5rem;display:flex}.guided-step.is-connect .guided-step__image,.guided-step .mantine-Switch-description{display:none}.guided-step:is(.is-play,.has-staff) .guided-step__title{font-size:1.1rem}.guided-step:is(.is-play,.has-staff) .guided-step__text{font-size:.95rem}.guided-step:is(.is-play,.has-staff) .guided-step__words{flex-direction:column;gap:.1rem;display:flex}.guided-play__position{margin-top:2px;line-height:1.3}.guided-play__controls{margin-top:6px}.guided-play__controls .mantine-Button-root{height:40px;padding-inline:12px}.guided-step.is-play{gap:4px}.guided-step.is-play .guided-step__text{line-height:1.4}}@media (orientation:landscape) and (max-height:340px){.guided-stage__body{padding-top:.25rem}.guided-step__words{gap:4px}.guided-step__text{line-height:1.4}.guided-play__position{margin-top:0}.guided-play__controls{margin-top:2px}.guided-step:is(.is-play,.has-staff){gap:4px}.guided-step:is(.is-play,.has-staff) .guided-step__text{line-height:1.3}}.guided-coin{width:44px;height:44px;position:relative}.guided-coin:disabled{cursor:default}.guided-coin:disabled .home-btn__art{opacity:.4}.guided-coin--ready .home-btn__art{filter:drop-shadow(0 0 5px #ffc478d9)}.guided-next--narrating{position:relative;overflow:visible}.guided-next--narrating:after{content:"";background:conic-gradient(var(--mantine-color-blue-filled) var(--guide-narration,0%), transparent 0);pointer-events:none;border-radius:50%;position:absolute;inset:-3px;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - 3px),#000 calc(100% - 2.5px));mask:radial-gradient(farthest-side,#0000 calc(100% - 3px),#000 calc(100% - 2.5px))}.guided-next--narrating:disabled:after,.guided-next--narrating[data-disabled]:after{opacity:1}@media (prefers-reduced-motion:reduce){.guided-step,.guided-praise{animation:none}}.pj-splash{z-index:10000;touch-action:none;color:#fff;background:radial-gradient(120% 80% at 15% 5%,#7f52fff2 0%,#0000 55%),radial-gradient(90% 70% at 95% 100%,#e64980bf 0%,#0000 60%),#2a1766;justify-content:center;align-items:center;display:flex;position:fixed;inset:0;overflow:hidden}html:not([data-splash]) .pj-splash{animation:.6s 14s forwards pj-splash-out}html[data-splash=on],html[data-splash=on] body{overflow:hidden}html[data-splash=leaving] .pj-splash{pointer-events:none;animation:.6s forwards pj-splash-out}html[data-splash=off] .pj-splash{display:none}.pj-splash__photo{opacity:0;background:url(/images/splash/splash-landscape.webp) 50%/cover no-repeat;transition:opacity .7s ease-out;position:absolute;inset:0}@media (orientation:portrait){.pj-splash__photo{background-image:url(/images/splash/splash-portrait.webp)}}html[data-splash-photo=on] .pj-splash__photo{opacity:1;animation:5s ease-out both pj-splash-zoom}.pj-splash__center{text-align:center;flex-direction:column;align-items:center;gap:.35rem;padding:0 16px;display:flex;position:relative}.pj-splash__logo{aspect-ratio:1;width:clamp(88px,min(34vw,30vh),148px);margin-bottom:.9rem;animation:.8s cubic-bezier(.34,1.56,.64,1) both pj-splash-pop;position:relative}@media (max-height:420px){.pj-splash__logo{width:84px;margin-bottom:.5rem}.pj-splash__center{margin-top:-2.5rem}}.pj-splash__logo svg{border-radius:22%;display:block;position:relative;box-shadow:0 18px 50px #0f04328c,0 0 0 1px #ffffff2e}.pj-splash__logo:before{content:"";background:radial-gradient(circle,#c7b4ff8c 0%,#0000 62%);border-radius:50%;animation:2.4s ease-in-out infinite pj-splash-glow;position:absolute;inset:-45%}.pj-splash__key{fill:#fff;animation:1.8s ease-in-out infinite pj-splash-key;animation-delay:calc(.6s + var(--key-i) * .13s)}.pj-splash__name{letter-spacing:.01em;text-shadow:0 2px 18px #14053c73;margin:0;font-size:1.75rem;font-weight:800;animation:.6s ease-out .35s both pj-splash-rise}.pj-splash__tagline{opacity:.85;text-wrap:balance;max-width:min(22rem,100%);margin:0;font-size:1.05rem;font-weight:500;animation:.6s ease-out .55s both pj-splash-rise}.pj-splash__quote{display:none}.pj-splash__sound{font:inherit;color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;background:linear-gradient(135deg,#9775fae6,#f06595e6);border:1px solid #ffffff73;border-radius:999px;margin-top:.9rem;padding:.6rem 1.3rem;font-size:1rem;font-weight:700;display:none;box-shadow:0 0 22px #f065958c}html[data-splash-sound=ask] .pj-splash__sound{animation:.4s ease-out both pj-splash-rise,1.4s ease-in-out .4s infinite pj-splash-beat;display:inline-block}html[data-splash-sound=on] .pj-splash__sound{pointer-events:none;animation:.5s forwards pj-splash-out;display:inline-block}html[data-splash-sound=ask] .pj-splash{cursor:pointer}.pj-splash__loading{left:50%;bottom:calc(var(--safe-bottom) + min(9vh, 60px));flex-direction:column;gap:.45rem;width:min(260px,100% - 32px);display:flex;position:absolute;transform:translate(-50%)}.pj-splash__status{text-shadow:0 1px 8px #14053c99;justify-content:space-between;align-items:baseline;gap:.75rem;font-size:.85rem;font-weight:600;display:flex}.pj-splash__msgs{flex:1;height:1.3em;position:relative;overflow:hidden}.pj-splash__msg{white-space:nowrap;opacity:0;--msg-step:calc(var(--splash-min) / var(--msg-n));animation:pj-splash-msg var(--msg-step) ease-in-out calc(var(--msg-i) * var(--msg-step)) both;position:absolute;top:0;left:0}.pj-splash__msg:last-child{color:#fcc2d7;animation:pj-splash-rise .4s ease-out calc(var(--msg-i) * var(--msg-step)) both}@property --pj-splash-pct{syntax:"<integer>";inherits:false;initial-value:0}.pj-splash__pct{text-align:right;font-variant-numeric:tabular-nums;min-width:3ch;animation:pj-splash-pct var(--splash-min) linear both;counter-reset:pj-pct var(--pj-splash-pct)}.pj-splash__pct:after{content:counter(pj-pct) "%"}.pj-splash__bar{background:#ffffff2e;border-radius:999px;height:6px;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff1f}.pj-splash__bar span{border-radius:inherit;transform-origin:0;height:100%;animation:pj-splash-fill var(--splash-min) linear both;background:linear-gradient(90deg,#9775fa,#f783ac,#fff);display:block;position:relative;overflow:hidden;box-shadow:0 0 12px #f783accc}.pj-splash__bar span:after{content:"";background:linear-gradient(90deg,#0000,#ffffffb3,#0000);animation:1.1s ease-in-out infinite pj-splash-shine;position:absolute;inset:0;transform:translate(-100%)}.pj-splash__notes{pointer-events:none;position:absolute;inset:0}.pj-splash__note{left:var(--note-x);color:#ffffff8c;animation:pj-splash-float 3.4s ease-in var(--note-delay) infinite both;position:absolute;bottom:-3rem}@keyframes pj-splash-pop{0%{opacity:0;transform:scale(.5)rotate(-10deg)}to{opacity:1;transform:none}}@keyframes pj-splash-glow{0%,to{opacity:.55;transform:scale(.92)}50%{opacity:1;transform:scale(1.06)}}@keyframes pj-splash-key{0%{fill:#fff}7%{fill:var(--pj-key-lit,#b197fc)}22%,to{fill:#fff}}@keyframes pj-splash-zoom{0%{transform:scale(1.08)}to{transform:none}}@keyframes pj-splash-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes pj-splash-fill{0%{transform:scaleX(0)}15%{transform:scaleX(.18)}30%{transform:scaleX(.34)}42%{transform:scaleX(.37)}60%{transform:scaleX(.64)}72%{transform:scaleX(.7)}88%{transform:scaleX(.93)}to{transform:scaleX(1)}}@keyframes pj-splash-pct{0%{--pj-splash-pct:0}15%{--pj-splash-pct:18}30%{--pj-splash-pct:34}42%{--pj-splash-pct:37}60%{--pj-splash-pct:64}72%{--pj-splash-pct:70}88%{--pj-splash-pct:93}to{--pj-splash-pct:100}}@keyframes pj-splash-msg{0%{opacity:0;transform:translateY(.6em)}15%,85%{opacity:1;transform:none}to{opacity:0;transform:translateY(-.6em)}}@keyframes pj-splash-beat{0%,to{transform:scale(1);box-shadow:0 0 22px #f065958c}50%{transform:scale(1.06);box-shadow:0 0 34px #f06595d9}}@keyframes pj-splash-shine{to{transform:translate(100%)}}@keyframes pj-splash-float{0%{opacity:0;transform:translateY(0)rotate(-8deg)}15%{opacity:1}to{opacity:0;transform:translateY(-105vh)rotate(14deg)}}@keyframes pj-splash-out{to{opacity:0;visibility:hidden;transform:scale(1.04)}}@media (prefers-reduced-motion:reduce){.pj-splash__logo,.pj-splash__logo:before,.pj-splash__key,html[data-splash-photo=on] .pj-splash__photo,.pj-splash__bar span:after,html[data-splash-sound=ask] .pj-splash__sound,.pj-splash__name,.pj-splash__tagline{animation:none}.pj-splash__note{display:none}}.pj-intro{z-index:9990;color:#fff;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);background:radial-gradient(120% 80% at 15% 5%,#7f52fff2 0%,#0000 55%),radial-gradient(90% 70% at 95% 100%,#e64980bf 0%,#0000 60%),#2a1766;flex-direction:column;display:flex;position:fixed;inset:0;overflow:hidden}html[data-intro=on],html[data-intro=on] body{overflow:hidden}.pj-intro__photo,.pj-intro__scrim,.pj-intro__notes{pointer-events:none;position:absolute;inset:0}.pj-intro__photo{background:url(/images/splash/splash-landscape.webp) 50%/cover no-repeat;transition:opacity .7s;animation:14s ease-out both pj-intro-drift}@media (orientation:portrait){.pj-intro__photo{background-image:url(/images/splash/splash-portrait.webp)}}.pj-intro[data-photo=dim] .pj-intro__photo{opacity:.3}.pj-intro__scrim{background:linear-gradient(#1a0e40b3 0%,#1a0e4000 38% 72%,#1a0e408c 100%)}.pj-intro__notes span{color:#fff6;font-size:1.6rem;animation:5s ease-in infinite both pj-splash-float;position:absolute;bottom:-3rem}.pj-intro__top{gap:10px;padding:12px 16px 0;display:grid;position:relative}.pj-intro__bars{gap:4px;display:flex}.pj-intro__bar{background:#ffffff47;border-radius:2px;flex:1;height:3px;overflow:hidden}.pj-intro__bar>span{transform-origin:0;background:#fff;height:100%;display:block;transform:scaleX(0)}.pj-intro__bar>span[data-state=done]{transform:none}.pj-intro__bar>span[data-state=now]{animation:pj-intro-fill var(--bar-ms) linear both}.pj-intro__actions{justify-content:space-between;align-items:center;display:flex}.pj-intro button{font:inherit;color:inherit;cursor:pointer;border:0}.pj-intro button:focus{outline:none}.pj-intro button:focus-visible{outline-offset:2px;outline:2px solid #ffd66b}.pj-intro__icon-btn{background:#ffffff24;border-radius:50%;place-items:center;width:40px;height:40px;display:grid}.pj-intro__skip{background:#ffffff24;border-radius:999px;min-height:40px;padding:0 16px;font-weight:700}.pj-intro__body{cursor:pointer;flex-direction:column;flex:1;align-items:center;min-height:0;display:flex;position:relative}.pj-intro__caption{text-align:center;text-wrap:balance;text-shadow:0 2px 12px #14083ccc;max-width:24em;min-height:4.3em;margin:14px 0 0;padding:0 20px;font-size:clamp(1.15rem,4.8vw,1.55rem);font-weight:700;line-height:1.4}.pj-intro__stage{flex:1;place-items:center;width:100%;min-height:0;padding:4px 16px;display:grid}.pj-intro__art{aspect-ratio:1;width:min(100%,50vh,460px);animation:.45s ease-out both pj-splash-rise}.pj-intro__art svg{width:100%;height:100%;display:block;overflow:visible}.pj-intro__foot{justify-content:center;min-height:76px;padding:8px 16px 20px;display:flex;position:relative}.pj-intro .pj-intro__start{color:#2a1766;background:#ffd66b;border-radius:999px;width:min(100%,360px);height:54px;font-size:1.15rem;font-weight:800;animation:.7s cubic-bezier(.34,1.56,.64,1) .4s both pj-splash-pop;box-shadow:0 0 32px #ffd66b8c}.pj-intro .pj-intro__unmute{color:#2a1766;background:#ffffffeb;border-radius:999px;align-items:center;gap:8px;height:44px;padding:0 18px;font-weight:700;display:inline-flex}.pj-intro__brand{flex-direction:column;justify-content:center;align-items:center;gap:12px;height:100%;display:flex}.pj-intro__brand img{border-radius:22%;width:40%;height:auto;animation:.8s cubic-bezier(.34,1.56,.64,1) both pj-splash-pop;box-shadow:0 0 48px #b197fcb3}.pj-intro__brand p{text-shadow:0 2px 16px #14083ccc;margin:0;font-size:clamp(1.4rem,6vw,2rem);font-weight:800}@media (orientation:landscape) and (max-height:560px){.pj-intro__top{gap:6px;padding-top:8px}.pj-intro__body{flex-direction:row-reverse;justify-content:center;gap:8px}.pj-intro__caption{text-align:left;flex:1;align-self:center;min-height:0;margin:0;font-size:clamp(1.05rem,3.2vw,1.4rem)}.pj-intro__stage{flex:1;height:100%}.pj-intro__art{width:min(100%,64vh)}.pj-intro__foot{min-height:0;padding:0 16px 8px}.pj-intro .pj-intro__start{height:46px}}.pj-intro__bob{animation:1.8s ease-in-out infinite pj-intro-bob}.pj-intro__halo{transform-box:fill-box;transform-origin:50%;animation:2.2s ease-in-out infinite pj-splash-glow}.pj-intro__twinkle{opacity:.2;animation:2.4s ease-in-out infinite pj-intro-twinkle}.pj-intro__rise{animation:2.4s cubic-bezier(.2,.8,.2,1) both pj-intro-rise}.pj-intro__key{fill:#fff}.pj-intro__key--black{fill:#1f1f28}.pj-intro__key--gold{animation:.8s ease-out both pj-intro-press-gold}.pj-intro__key--loop{animation-duration:2.4s;animation-iteration-count:infinite}.pj-intro__wave{opacity:0;animation:1.8s ease-out infinite pj-intro-wave}.pj-intro__cable{animation:1.2s linear infinite pj-intro-cable}.pj-intro__phone{transform-box:fill-box;transform-origin:50%;animation:1.8s ease-in-out infinite pj-intro-listen}.pj-intro__done{animation:.5s ease-out both pj-intro-done}.pj-intro__walk{animation:6s linear both pj-intro-walk}.pj-intro__draw{stroke-dasharray:1;animation:4.2s ease-in-out both pj-intro-draw}.pj-intro__lamp{animation:.5s ease-out both pj-intro-lamp}.pj-intro__next{transform-box:fill-box;transform-origin:50%;animation:1.4s ease-in-out 3.8s infinite both pj-intro-next}.pj-intro__tick{stroke-dasharray:1;animation:.4s ease-out both pj-intro-draw}.pj-intro__path{animation:6s ease-in-out both pj-intro-path}.pj-intro__fan{opacity:0;transform-box:fill-box;transform-origin:50% 100%;animation:.8s cubic-bezier(.2,.8,.2,1) both pj-intro-fan}.pj-intro__pop{transform-box:fill-box;transform-origin:50%;animation:.5s cubic-bezier(.3,1.6,.5,1) both pj-intro-pop;transform:scale(0)}.pj-intro__swing{transform-box:fill-box;transform-origin:50% 100%;animation:.6s ease-in-out infinite alternate pj-intro-swing}.pj-intro__appear{opacity:0;transform-box:fill-box;transform-origin:50%;animation:1.6s ease-out .3s both pj-intro-appear}.pj-intro__talk{transform-box:fill-box;transform-origin:50%;animation:.6s ease-in-out infinite alternate pj-intro-talk}@keyframes pj-intro-fill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes pj-intro-drift{0%{transform:scale(1.12)}to{transform:scale(1.02)}}@keyframes pj-intro-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes pj-intro-twinkle{0%,to{opacity:.15}50%{opacity:.95}}@keyframes pj-intro-rise{0%{opacity:0;transform:translateY(150px)scale(.5)}to{opacity:1;transform:none}}@keyframes pj-intro-press-gold{0%,to{fill:#fff}12%{fill:#ffd66b}}@keyframes pj-intro-wave{0%{opacity:0;transform:translateY(0)}30%{opacity:.9}to{opacity:0;transform:translateY(-34px)}}@keyframes pj-intro-cable{to{stroke-dashoffset:-8px}}@keyframes pj-intro-listen{0%,to{transform:none}50%{transform:scale(1.03)}}@keyframes pj-intro-done{to{fill:#ffd66b}}@keyframes pj-intro-walk{0%,18%{transform:translate(0)}21%{transform:translate(28px,-16px)}24%,58%{transform:translate(56px)}61%{transform:translate(84px,-16px)}64%,80%{transform:translate(112px)}83%{transform:translate(140px,-16px)}86%,to{transform:translate(168px)}}@keyframes pj-intro-draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes pj-intro-lamp{to{fill:#ffd66b;stroke:#fff1c2}}@keyframes pj-intro-next{0%,to{stroke:#b197fc;transform:none}50%{stroke:#ffd66b;transform:scale(1.18)}}@keyframes pj-intro-path{0%,8%{transform:translate(70px,272px)}20%,30%{transform:translate(200px,238px)}42%,52%{transform:translate(110px,178px)}64%,to{transform:translate(220px,122px)}}@keyframes pj-intro-fan{0%{opacity:0;transform:translateY(24px)rotate(0)}to{opacity:1;transform:rotate(var(--rot))}}@keyframes pj-intro-pop{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes pj-intro-swing{0%{transform:rotate(-24deg)}to{transform:rotate(24deg)}}@keyframes pj-intro-appear{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}@keyframes pj-intro-talk{0%{transform:scaleY(.35)}to{transform:scaleY(1)}}@media (prefers-reduced-motion:reduce){.pj-intro *,.pj-intro{animation-duration:1ms!important;animation-iteration-count:1!important;animation-delay:0s!important}.pj-intro__notes{display:none}}::view-transition{pointer-events:none}::view-transition-old(.page-exit){animation:.14s ease-in reverse both pj-page-fade}::view-transition-new(.page-enter){animation:.22s ease-out 80ms both pj-page-fade,.34s cubic-bezier(.2,.8,.2,1) both pj-page-rise}@keyframes pj-page-fade{0%{opacity:0}to{opacity:1}}@keyframes pj-page-rise{0%{translate:0 10px}to{translate:0}}.guided-stage{view-transition-name:pj-guided-stage}::view-transition-group(pj-guided-stage){z-index:102}::view-transition-old(pj-guided-stage){animation:.14s ease-in reverse both pj-page-fade}::view-transition-new(pj-guided-stage){animation:.22s ease-out 80ms both pj-page-fade,.34s cubic-bezier(.2,.8,.2,1) both pj-page-rise}.pj-splash{view-transition-name:pj-splash}.pj-intro{view-transition-name:pj-intro}::view-transition-group(pj-splash){z-index:103;animation:none}::view-transition-group(pj-intro){z-index:103;animation:none}::view-transition-old(pj-splash){animation:none}::view-transition-new(pj-splash){animation:none}::view-transition-old(pj-intro){animation:none}::view-transition-new(pj-intro){animation:none}:root[data-pj-nav=history]::view-transition-group(*){animation:none!important}:root[data-pj-nav=history]::view-transition-old(*){animation:none!important}:root[data-pj-nav=history]::view-transition-new(*){animation:none!important}:is(.home-hero,.home-tile,.home-news,.link-row,.course-card,.step-card){animation:.42s cubic-bezier(.2,.8,.2,1) backwards pj-rise;animation-delay:calc(var(--pj-i,0) * 50ms)}:is(.home-hero,.home-tile,.home-news,.link-row,.course-card,.step-card):nth-child(2){--pj-i:1}:is(.home-hero,.home-tile,.home-news,.link-row,.course-card,.step-card):nth-child(3){--pj-i:2}:is(.home-hero,.home-tile,.home-news,.link-row,.course-card,.step-card):nth-child(4){--pj-i:3}:is(.home-hero,.home-tile,.home-news,.link-row,.course-card,.step-card):nth-child(5){--pj-i:4}:is(.home-hero,.home-tile,.home-news,.link-row,.course-card,.step-card):nth-child(6){--pj-i:5}:is(.home-hero,.home-tile,.home-news,.link-row,.course-card,.step-card):nth-child(7){--pj-i:6}:is(.home-hero,.home-tile,.home-news,.link-row,.course-card,.step-card):nth-child(8){--pj-i:7}:is(.home-hero,.home-tile,.home-news,.link-row,.course-card,.step-card):nth-child(n+9){--pj-i:8}@keyframes pj-rise{0%{opacity:0;translate:0 12px}}.tick-celebrate{border-radius:var(--mantine-radius-default);position:relative}.step-tick{position:relative}.tick-mark{pointer-events:none;flex:none;display:block}.sketch-progress{border:1.5px solid var(--sk-ink,#2d2b33);background:var(--mantine-color-body);height:14px;box-shadow:1px 1px 0 var(--sk-ink,#2d2b33);border-radius:999px;position:relative}.sketch-progress__fill{border:0 solid #0000;border-image:var(--progress-fill) 0 40 0 40 fill / 0 5px 0 5px stretch;filter:saturate(1.4);min-width:10px;max-width:calc(100% - 4px);transition:width .4s;position:absolute;top:2px;bottom:2px;left:2px}.paper-tag{border:0 solid #0000;border-image:var(--paper-tag) 0 12 0 75 fill / 0 3px 0 20px stretch;color:#2d2b33;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;flex-shrink:0;align-items:center;height:22px;padding:0 9px 0 24px;font-size:11px;font-weight:700;display:inline-flex}.step-card__kind{object-fit:contain;flex:none}.tick-pop{animation:.46s cubic-bezier(.34,1.56,.64,1) pj-tick-pop}@keyframes pj-tick-pop{0%{transform:scale(.3)}to{transform:none}}.tick-burst{border-radius:inherit;pointer-events:none;position:absolute;inset:0}.tick-burst__ring{border-radius:inherit;animation:.65s ease-out forwards pj-tick-ring;position:absolute;inset:0}@keyframes pj-tick-ring{0%{box-shadow:0 0 #12b8868c}to{box-shadow:0 0 0 16px #12b88600}}.tick-burst__note{color:var(--mantine-color-teal-6);opacity:0;font-size:20px;font-weight:700;line-height:1;animation:.9s ease-out both pj-tick-note;position:absolute;top:50%;left:50%}.tick-burst__note[data-side=left]{--pj-dx:-30px;--pj-rot:-18deg}.tick-burst__note[data-side=right]{--pj-dx:30px;--pj-rot:18deg;animation-delay:90ms}@keyframes pj-tick-note{0%{opacity:0;transform:translate(-50%,-50%)scale(.5)}25%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--pj-dx)), calc(-50% - 46px)) rotate(var(--pj-rot)) scale(1.1)}}@supports (animation-timeline:view()){.markdown-body>:is(h2,h3,h4,p,ul,ol,blockquote,hr){animation:linear both pj-reveal;animation-timeline:view();animation-range:entry entry 55%}}@keyframes pj-reveal{0%{opacity:0;translate:0 18px}to{opacity:1;translate:none}}@media (prefers-reduced-motion:reduce){::view-transition-group(*){animation:none!important}::view-transition-old(*){animation:none!important}::view-transition-new(*){animation:none!important}:is(.home-hero,.home-tile,.home-news,.link-row,.course-card,.step-card),.markdown-body>*,.tick-pop{animation:none!important}.tick-burst{display:none}}.pj-setup{z-index:9985;color:#fff;-webkit-tap-highlight-color:transparent;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);background:radial-gradient(120% 80% at 15% 5%,#7f52fff2 0%,#0000 55%),radial-gradient(90% 70% at 95% 100%,#e64980bf 0%,#0000 60%),#2a1766;flex-direction:column;display:flex;position:fixed;inset:0;overflow:hidden}html[data-setup=on],html[data-setup=on] body{overflow:hidden}.pj-setup__photo{opacity:.35}.pj-setup__scrim{pointer-events:none;background:linear-gradient(#1a0e408c 0%,#1a0e4026 40%,#1a0e40bf 100%);position:absolute;inset:0}:where(.pj-setup) button{font:inherit;color:inherit;cursor:pointer;border:0}.pj-setup button:focus,.pj-setup input:focus{outline:none}.pj-setup button:focus-visible{outline-offset:2px;outline:2px solid #ffd66b}.pj-setup__top{gap:8px;padding:12px 16px 0;display:grid;position:relative}.pj-setup__top-row{justify-content:space-between;align-items:center;gap:12px;min-height:40px;display:flex}.pj-setup__top-row>.pj-setup__title{text-align:left;min-width:0}.pj-setup__top-row>.pj-setup__step{flex:none}.pj-setup__step{letter-spacing:.04em;opacity:.8;font-size:13px;font-weight:700}.pj-setup__body{flex-direction:column;flex:1;justify-content:safe center;align-items:center;gap:16px;min-height:0;padding:8px 20px 20px;animation:.35s ease-out both pj-setup-in;display:flex;position:relative;overflow-y:auto}.pj-setup__hero{flex-direction:column;align-items:center;gap:10px;min-width:0;display:flex}.pj-setup .pj-figure{--pj-figure-h:clamp(170px, 27vh, 320px);box-shadow:0 0 0 4px #ffd66b,0 0 0 12px #ffd66b29,0 14px 40px #00000059}.pj-setup__name{text-overflow:ellipsis;white-space:nowrap;max-width:80vw;margin:0;font-size:22px;font-weight:800;overflow:hidden}.pj-setup__panel{text-align:center;flex-direction:column;align-items:center;gap:12px;width:100%;max-width:420px;display:flex}.pj-setup__title{margin:0;font-size:24px;font-weight:800;line-height:1.25}.pj-setup__hint{opacity:.82;margin:0;font-size:14px}.pj-setup__grid{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffff1a;border-radius:20px;grid-template-columns:repeat(4,1fr);gap:10px;width:100%;padding:12px;display:grid}.pj-setup__tile{background:0 0;border-radius:50%;outline:3px solid #0000;justify-self:center;place-items:center;padding:4px;transition:transform .15s,outline-color .15s;display:grid}.pj-setup__tile[data-on]{outline-color:#ffd66b;transform:scale(1.08)}.pj-setup__tile:active{transform:scale(.94)}.pj-setup__cta{color:#2a1766;background:#fff;border-radius:999px;width:100%;min-height:52px;font-size:17px;font-weight:800;box-shadow:0 10px 28px #0000004d}.pj-setup__cta:disabled{opacity:.7}.pj-setup__back{opacity:.85;background:0 0;min-height:40px;padding:0 12px;font-weight:600}.pj-setup__input{color:#fff;width:100%;min-height:56px;font:inherit;text-align:center;background:#ffffff1f;border:2px solid #ffffff59;border-radius:16px;padding:0 16px;font-size:20px;font-weight:700}.pj-setup__input::placeholder{color:#ffffff80}.pj-setup__input:focus{border-color:#ffd66b}.pj-setup__error{background:#e6494947;border-radius:10px;margin:0;padding:8px 12px;font-size:14px}@media (orientation:landscape) and (max-height:520px){.pj-setup__body{flex-direction:row;align-items:safe center;gap:32px;padding:4px 24px 8px}.pj-setup__top{padding-top:8px}.pj-setup__top-row{min-height:0}.pj-setup .pj-figure{--pj-figure-h:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 96px)}.pj-setup__panel{gap:8px}.pj-setup__title{font-size:20px}.pj-setup__grid{grid-template-columns:repeat(6,1fr);gap:4px;padding:8px}.pj-setup__cta{min-height:46px}.pj-setup__panel{grid-template-columns:auto minmax(0,1fr);justify-items:center;display:grid}.pj-setup__panel>*{grid-column:1/-1}.pj-setup__panel>.pj-setup__back{order:1;grid-column:1;min-height:46px}.pj-setup__panel:has(>.pj-setup__back)>.pj-setup__cta{order:2;grid-column:2}}@media (orientation:landscape) and (min-width:48em) and (min-height:521px){.pj-setup__body{flex-direction:row;gap:48px}.pj-setup .pj-figure{--pj-figure-h:min(calc(100dvh - var(--safe-top) - var(--safe-bottom) - 140px), 600px)}}.pj-setup__panel:has(.house-picker){max-width:540px}.house-picker{flex-direction:column;gap:8px;width:100%;display:flex}.house-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;width:100%;display:grid}.house-tile{background:color-mix(in srgb, currentColor 8%, transparent);min-width:0;color:inherit;font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;border:2px solid #0000;border-radius:16px;flex-direction:column;align-items:center;gap:2px;padding:6px 2px 4px;transition:transform .12s,border-color .12s,background-color .12s;display:flex}.house-tile[data-on]{border-color:var(--house-color);background:color-mix(in srgb, var(--house-color) 24%, transparent);transform:scale(1.04)}.house-tile:active{transform:scale(.95)}.house-tile:focus-visible{outline:3px solid var(--house-color);outline-offset:2px}.house-tile__img{object-fit:contain;width:56px;height:56px}.house-tile__name{text-align:center;overflow-wrap:anywhere;justify-content:center;align-items:center;max-width:100%;min-height:2.3em;font-size:11px;font-weight:700;line-height:1.15;display:flex}.house-picker__about{opacity:.9;min-height:2.7em;margin:0;font-size:13px;line-height:1.35}@media (orientation:landscape) and (min-width:35em){.house-grid{grid-template-columns:repeat(6,minmax(0,1fr))}}@media (orientation:landscape) and (max-height:520px){.house-tile{padding:4px 2px 2px}.house-tile__img{width:36px;height:36px}}.pj-figure{--pj-figure-h:280px;height:var(--pj-figure-h);width:calc(var(--pj-figure-h) * .62);padding-top:calc(var(--pj-figure-h) * .04);background:radial-gradient(60% 12% at 50% 96%, #0000001f, transparent 70%), var(--pj-figure-bg);border-radius:28px;flex:none;justify-content:center;align-items:flex-end;display:flex;position:relative;overflow:hidden}.pj-figure__body{transform-origin:50% 100%;width:auto;height:100%;animation:.42s cubic-bezier(.34,1.56,.64,1) both pj-setup-pop}.pj-figure__mascot{transform-origin:50% 100%;filter:drop-shadow(0 4px 6px #0003);width:34%;height:auto;animation:.42s cubic-bezier(.34,1.56,.64,1) both pj-setup-pop;position:absolute;bottom:2%;right:2%}.pj-wardrobe{grid-template-columns:1fr;gap:20px;max-width:1000px;margin:0 auto;display:grid}.pj-wardrobe__stage{flex-direction:column;align-items:center;gap:8px;min-width:0;display:flex}.pj-wardrobe__stage .pj-figure{--pj-figure-h:clamp(200px, 34vh, 340px)}.pj-wardrobe__name{max-width:100%}.pj-wardrobe__form{min-width:0}.pj-wardrobe .pj-char__panel{max-height:none;overflow:visible}@media (min-width:48em),(orientation:landscape){.mantine-Modal-content.pj-wardrobe-content{flex-direction:column;display:flex;overflow:hidden}.mantine-Modal-body.pj-wardrobe-body{flex:1;min-height:0;display:flex;overflow:hidden}.pj-wardrobe{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(180px,38%) minmax(0,1fr);gap:32px;width:100%;min-height:0}.pj-wardrobe__stage{align-self:center}.pj-wardrobe__form{overscroll-behavior:contain;min-height:0;padding:4px 8px 16px 4px;overflow-y:auto}.pj-wardrobe__stage .pj-figure{--pj-figure-h:min(calc(100dvh - 140px), 560px)}}.lobby-player-wrap{align-items:flex-end;gap:2px;min-width:0;display:flex}.lobby-mascot{object-fit:contain;pointer-events:none;flex:none;width:52px;height:52px;margin-bottom:-6px}@keyframes pj-setup-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}@keyframes pj-setup-pop{0%{transform:scale(.7)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.pj-setup__body,.pj-figure__body,.pj-figure__mascot{animation:none}}.pj-char{--pj-char-accent:var(--mantine-primary-color-filled);--pj-char-on-accent:var(--mantine-primary-color-contrast);--pj-char-surface:color-mix(in srgb, currentColor 8%, transparent);--pj-char-line:color-mix(in srgb, currentColor 18%, transparent);text-align:left;flex-direction:column;gap:10px;width:100%;display:flex}.pj-setup .pj-char{--pj-char-accent:#ffd66b;--pj-char-on-accent:#2a1766;--pj-char-surface:#ffffff1a;--pj-char-line:#ffffff38}:where(.pj-char) button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0}.pj-char button:focus-visible{outline:2px solid var(--pj-char-accent);outline-offset:2px}.pj-char__head{justify-content:space-between;align-items:center;gap:8px;display:flex}.pj-char__gender{background:var(--pj-char-surface);border-radius:999px;padding:3px;display:inline-flex}.pj-char__gender button{opacity:.75;border-radius:999px;min-width:64px;min-height:40px;padding:0 16px;font-weight:700;transition:background .15s,color .15s}.pj-char__gender button[data-on]{background:var(--pj-char-accent);color:var(--pj-char-on-accent);opacity:1}.pj-char__dice{background:var(--pj-char-surface);border-radius:999px;min-height:40px;padding:0 14px;font-size:14px;font-weight:600}.pj-char__dice:active{transform:rotate(-6deg)scale(.96)}.pj-char__panel{overscroll-behavior:contain;flex-direction:column;gap:12px;max-height:336px;padding:5px;display:flex;overflow-y:auto}.pj-char__group{flex-direction:column;gap:6px;display:flex}.pj-char__group-title{opacity:.75;margin:0;font-size:13px;font-weight:700}.pj-char__tiles{grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:8px;display:grid}.pj-char__tile{outline-offset:1px;border-radius:50%;outline:3px solid #0000;justify-self:center;width:64px;height:64px;padding:0;transition:transform .15s,outline-color .15s;overflow:hidden}.pj-char__tile img{width:100%;height:100%;display:block}.pj-char__tile[data-on]{outline-color:var(--pj-char-accent)}.pj-char__tile:active,.pj-char__swatch:active{transform:scale(.92)}.pj-char__picked{opacity:.8;min-height:1.4em;margin:0;font-size:13px;font-weight:600}.pj-char__swatches{flex-wrap:wrap;gap:8px;display:flex}.pj-char__swatch{outline-offset:2px;border-radius:50%;outline:3px solid #0000;width:36px;height:36px;transition:transform .15s,outline-color .15s;box-shadow:inset 0 0 0 1px #00000026}.pj-char__swatch[data-on]{outline-color:var(--pj-char-accent)}@media (orientation:landscape) and (max-height:520px){.pj-setup__panel:has(.pj-char) .pj-setup__hint{display:none}.pj-char{gap:6px}.pj-char__panel{max-height:112px}.pj-char__tiles{grid-template-columns:repeat(auto-fill,minmax(48px,1fr))}.pj-char__tile{width:48px;height:48px}}.pj-pbe-badge{top:var(--safe-top);left:var(--safe-left);z-index:10050;color:#fff;letter-spacing:.08em;pointer-events:none;background:#f76707;border-bottom-right-radius:8px;padding:2px 8px 3px;font-size:11px;font-weight:800;line-height:1.4;position:fixed;box-shadow:0 2px 6px #00000040}.teacher-bubble{align-items:flex-start;gap:12px;display:flex}.teacher-bubble__portrait{flex-direction:column;flex-shrink:0;align-items:center;display:flex}.teacher-bubble__portrait .mantine-Avatar-root{border:3px solid var(--mantine-color-body);box-shadow:0 0 0 2px var(--mantine-color-brand-4), 0 4px 0 2px var(--mantine-color-brand-4)}.teacher-bubble__name{background:var(--mantine-color-brand-6);border:2px solid var(--mantine-color-body);color:#fff;white-space:nowrap;border-radius:999px;margin-top:-10px;padding:1px 10px;font-size:12px;font-weight:700;line-height:1.5;position:relative}.teacher-bubble__speech{background:var(--mantine-color-body);border:2px solid var(--mantine-color-brand-2);min-width:0;box-shadow:0 4px 0 var(--mantine-color-brand-2);border-radius:18px;flex:1;margin-top:6px;padding:10px 14px;position:relative}:root[data-mantine-color-scheme=dark] .teacher-bubble__speech{border-color:var(--mantine-color-dark-4);box-shadow:0 4px 0 var(--mantine-color-dark-4)}.teacher-bubble__speech:before,.teacher-bubble__speech:after{content:"";border-style:solid;border-color:#0000;position:absolute;top:18px}.teacher-bubble__speech:before{border-width:8px 12px 8px 0;border-right-color:var(--mantine-color-brand-2);left:-12px}:root[data-mantine-color-scheme=dark] .teacher-bubble__speech:before{border-right-color:var(--mantine-color-dark-4)}.teacher-bubble__speech:after{border-width:6px 9px 6px 0;border-right-color:var(--mantine-color-body);top:20px;left:-8px}.teacher-bubble[data-compact]{gap:10px}.teacher-bubble[data-compact] .teacher-bubble__speech{margin-top:2px;padding:8px 12px}.teacher-bubble[data-compact] .teacher-bubble__speech:before{top:14px}.teacher-bubble[data-compact] .teacher-bubble__speech:after{top:16px}.chapter-farewell{z-index:400;left:50%;bottom:calc(12px + var(--safe-bottom));background:var(--mantine-color-body);border:1.5px solid var(--mantine-color-default-border);border-radius:14px;align-items:center;gap:12px;width:min(460px,100% - 32px);padding:10px 14px;animation:.32s ease-out chapter-farewell-in;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 6px 20px #0000002e}.chapter-farewell__art{object-fit:contain;flex-shrink:0;width:72px;height:72px}.chapter-farewell__words{flex-direction:column;gap:4px;min-width:0;display:flex}.chapter-farewell__close{align-self:flex-end}@keyframes chapter-farewell-in{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.chapter-farewell{animation:none}}.app-content.app-content--lobby{max-width:none;margin:0;padding:0}.lobby{--lobby-h:100vh;--lobby-paper:#f4ede1;--lobby-ink:#2d2b33;--lobby-ink-soft:#2d2b338c;--lobby-navy:#33405f;--lobby-lavender:#8a76b8;--lobby-side:calc(max(var(--safe-left), var(--safe-right)) + 18px);--lobby-menu-w:184px;--lobby-teacher-left:max(18cqw, calc(max(var(--safe-left), var(--safe-right)) + 96px));height:var(--lobby-h);color:var(--lobby-ink);background:#e9e1d2;position:relative;overflow:hidden;container-type:size}@supports (height:100dvh){.lobby{--lobby-h:100dvh}}.lobby__backdrop{object-fit:cover;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.scene-cover{--scene-w:max(100cqw, calc(100cqh * var(--scene-ratio)));--scene-h:max(100cqh, calc(100cqw / var(--scene-ratio)));left:calc((100cqw - var(--scene-w)) * var(--scene-focus));top:calc((100cqh - var(--scene-h)) / 2);width:var(--scene-w);height:var(--scene-h);position:absolute}.lobby-ambient{pointer-events:none;overflow:hidden}.lobby-ambient__beams{filter:blur(10px);position:absolute;inset:0}.lobby-ambient__beam{mix-blend-mode:screen;animation:lobby-beam 11s ease-in-out var(--beam-delay,0s) infinite;background:linear-gradient(160deg,#ffde96bf,#ffde961f 75%);position:absolute;inset:0}@keyframes lobby-beam{0%,to{opacity:.55}50%{opacity:1}}.lobby-ambient__mote{opacity:0;background:#fff1c4;border-radius:50%;animation-name:lobby-mote;animation-timing-function:ease-in-out;animation-iteration-count:infinite;position:absolute;box-shadow:0 0 7px 3px #ffc464d9}@keyframes lobby-mote{0%{opacity:0;transform:translate(0)}20%{opacity:.95}35%{opacity:.45}50%{opacity:1}70%{opacity:.6}to{opacity:0;transform:translate(var(--mote-dx), var(--mote-dy))}}.rising-note{pointer-events:none;color:#3a3448;opacity:0;filter:drop-shadow(0 0 1.5px #fffaecf2)drop-shadow(0 0 4px #ffecbe99);animation-name:rising-note;animation-timing-function:ease-in-out;animation-iteration-count:infinite;display:block;position:absolute}.rising-note[data-tone=lavender]{color:#6e58a8}.rising-note svg{fill:currentColor;stroke:currentColor;width:auto;height:100%;display:block}@keyframes rising-note{0%{opacity:0;transform:translate(0, 0) rotate(var(--note-tilt)) scale(.55)}12%{opacity:.95;transform:translate(var(--note-sway), calc(var(--scene-h) * var(--note-rise) * -.12)) rotate(calc(var(--note-tilt) * .6)) scale(1)}38%{transform:translate(calc(var(--note-sway) * -1), calc(var(--scene-h) * var(--note-rise) * -.38)) rotate(calc(var(--note-tilt) * -.2)) scale(1)}64%{opacity:.85;transform:translate(var(--note-sway), calc(var(--scene-h) * var(--note-rise) * -.64)) rotate(calc(var(--note-tilt) * -.6)) scale(1)}to{opacity:0;transform:translate(calc(var(--note-sway) * -.5), calc(var(--scene-h) * var(--note-rise) * -1)) rotate(calc(var(--note-tilt) * -1)) scale(.9)}}.lobby-teacher__image{animation:.35s ease-out lobby-teacher-face}@keyframes lobby-teacher-face{0%{opacity:.35}to{opacity:1}}.lobby-teacher__figure{transform-origin:50% 100%;animation:4.8s ease-in-out infinite lobby-breathe}@keyframes lobby-breathe{0%,to{scale:1}50%{scale:1.005 1.012}}.lobby-menu__btn{animation:.5s cubic-bezier(.2,.8,.3,1.15) backwards lobby-menu-in}.lobby-menu>.lobby-menu__btn:nth-child(2){animation-delay:80ms}.lobby-menu>.lobby-menu__btn:nth-child(3){animation-delay:.16s}.lobby-menu>.lobby-menu__btn:nth-child(4){animation-delay:.24s}.lobby-together{animation-delay:.32s}@keyframes lobby-menu-in{0%{opacity:0;translate:48px}to{opacity:1;translate:0}}.lobby-play{animation:7s ease-in-out 1.5s infinite lobby-play-nudge}@keyframes lobby-play-nudge{0%,10%,to{scale:1}4%{scale:1.06}7%{scale:.99}}@media (prefers-reduced-motion:reduce){.lobby-ambient__mote,.rising-note{display:none}.lobby-ambient__beam{opacity:.7;animation:none}.lobby-teacher__image,.lobby-teacher__figure,.lobby-menu__btn,.lobby-play{animation:none}}.lobby-teacher{left:var(--lobby-teacher-left);aspect-ratio:640/1600;height:82%;position:absolute;bottom:0}.lobby-teacher__figure{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;width:100%;height:100%;padding:0;display:block}.lobby-teacher__image{object-fit:contain;object-position:bottom;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%;display:block}.lobby-teacher__figure:focus-visible{outline:2px dashed var(--lobby-ink);outline-offset:4px}.lobby-teacher__speech{width:min(250px, 34vw, calc(100cqw - var(--lobby-side) - var(--lobby-menu-w) - 8px - var(--lobby-teacher-left) - 32.8cqh + 8px));border:1.5px solid var(--lobby-ink);color:var(--lobby-ink);font:inherit;text-align:left;cursor:pointer;background:#fffdf8;border-radius:14px;padding:8px 12px;font-size:13px;line-height:1.45;position:absolute;top:10%;left:calc(100% - 8px)}@container (max-height:340px){.lobby-teacher__speech{font-size:12px}}.lobby-teacher__speech:after{content:"";border-left:1.5px solid var(--lobby-ink);border-bottom:1.5px solid var(--lobby-ink);background:#fffdf8;width:14px;height:14px;position:absolute;top:18px;left:-8px;transform:rotate(45deg)}.lobby-teacher__name{color:var(--lobby-lavender);letter-spacing:.02em;font-size:12px;font-weight:700;display:block}.lobby__hud{padding:calc(var(--safe-top) + var(--edge-top)) var(--lobby-side) max(var(--safe-bottom), 14px);pointer-events:none;flex-direction:column;justify-content:space-between;gap:8px;display:flex;position:absolute;inset:0}.lobby__hud :is(a,button),.lobby__notice{pointer-events:auto}.lobby__top,.lobby__bottom{justify-content:space-between;gap:8px;display:flex}.lobby__top{align-items:center}.lobby__bottom{justify-content:flex-end;align-items:center}.lobby__corner{gap:8px;display:flex}.lobby__middle{flex:1;justify-content:flex-end;align-items:center;gap:12px;min-height:0;display:flex}.lobby__notice{border-radius:var(--mantine-radius-md);width:min(440px,100%);max-height:100%;margin-left:auto;margin-right:auto;overflow-y:auto}.lobby-player{border:0 solid #0000;border-image:var(--player-card) 150 40 40 155 fill / 24px 7px 7px 25px stretch;max-width:250px;color:var(--lobby-ink);font:inherit;text-align:left;filter:drop-shadow(1px 2px 1.5px #2d2b3359);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;align-items:center;gap:8px;padding:11px 18px 9px 22px;display:flex}.lobby-player:active{transform:translateY(1px)}.lobby-player__text{flex-direction:column;gap:2px;min-width:0;display:flex}.lobby-player__name{white-space:nowrap;text-overflow:ellipsis;margin-block:-4px;padding-block:4px;font-size:13px;font-weight:700;line-height:1.24;overflow:hidden}.lobby-player__house{white-space:nowrap;text-overflow:ellipsis;opacity:.9;align-items:center;gap:4px;margin-block:-4px;padding-block:4px;font-size:11px;font-weight:700;line-height:1.2;display:flex;overflow:hidden}.lobby-player__house-dot{border:1px solid var(--lobby-ink);border-radius:50%;flex:none;width:8px;height:8px}.lobby-player__progress{align-items:center;gap:6px;display:flex}.lobby-player__bar{background:#2d2b331f;border-radius:999px;width:96px;height:7px;display:block;overflow:hidden}.lobby-player__bar>span{background:var(--lobby-lavender);border-radius:999px;height:100%;display:block}.lobby-player__meta{opacity:.85;font-size:11px;font-weight:600;line-height:1.1}.hud-btn{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;flex-direction:column;align-items:center;gap:1px;padding:0;text-decoration:none;display:flex;position:relative}.hud-btn__thing{object-fit:contain;filter:drop-shadow(1px 2px 1.5px #2d2b3366);-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:46px;height:46px;display:block}.hud-btn:active .hud-btn__thing{transform:translate(1px,1px)}.hud-btn:focus-visible{outline:2px dashed var(--lobby-ink);outline-offset:2px}.hud-btn[aria-pressed=false] .hud-btn__thing{opacity:.5;filter:grayscale()drop-shadow(1px 2px 1.5px #2d2b334d)}.hud-btn__label{color:var(--lobby-ink);white-space:nowrap;text-shadow:0 0 3px var(--lobby-paper), 0 0 2px var(--lobby-paper);font-size:12px;font-weight:700;line-height:1.1}.lobby-menu{width:var(--lobby-menu-w);flex-direction:column;gap:8px;display:flex}.lobby-menu__btn{--tilt:-.6deg;background:var(--menu-paper) center / 100% 100% no-repeat;min-height:40px;color:var(--lobby-ink);font:inherit;text-align:left;filter:drop-shadow(1px 2px 1.5px #2d2b3359);transform:rotate(var(--tilt));cursor:pointer;-webkit-tap-highlight-color:transparent;border:0;align-items:center;gap:6px;padding:4px 12px 4px 4px;font-size:14px;font-weight:700;text-decoration:none;display:flex}.lobby-menu__btn:nth-child(2n){--tilt:.5deg}.lobby-menu__thing{margin-block:-8px;object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;flex:none;width:46px;height:46px;margin-left:6px}.lobby-menu__label{flex:1;min-width:0}.lobby-menu__arrow{opacity:.45;flex:none}.lobby-menu__sub{white-space:nowrap;text-overflow:ellipsis;opacity:.8;margin-block:-3px -1px;padding-block:3px 1px;font-size:11px;font-weight:600;line-height:1.2;display:block;overflow:hidden}.lobby-menu__btn.lobby-together{width:calc(var(--lobby-menu-w) + 22px);--tilt:.5deg;min-height:48px}.play-mode__thing{object-fit:contain;flex:none;width:44px;height:44px}.lobby-menu__btn:active{transform:translate(1px, 1px) rotate(var(--tilt));filter:drop-shadow(0 1px 1px #2d2b3359)}.lobby-menu__btn:focus-visible{outline:2px dashed var(--lobby-ink);outline-offset:3px}@media (orientation:landscape) and (max-height:420px){.lobby-menu{gap:6px}.lobby-menu__btn{min-height:36px;padding-block:2px}.lobby-menu__thing{width:42px;height:42px}}@media (orientation:landscape) and (max-height:340px){.lobby-menu{gap:4px}.lobby-menu__btn{min-height:33px;padding-block:1px}.lobby-menu__thing{width:40px;height:40px}}.lobby-play{border:11px solid #0000;border-width:11px 27px 11px 12px;border-image:var(--play-ticket) 50 125 50 55 fill / 11px 27px 11px 12px stretch;min-width:180px;max-width:260px;color:var(--lobby-paper);filter:drop-shadow(2px 3px 2px #2d2b3366);-webkit-tap-highlight-color:transparent;flex-direction:column;justify-content:center;align-items:center;padding:2px 8px 4px 10px;text-decoration:none;display:flex}.lobby-play:active{filter:drop-shadow(1px 1px 1px #2d2b3366);transform:translate(1px,1px)}.lobby-play:focus-visible{outline:2px dashed var(--lobby-ink);outline-offset:3px}.lobby-play__kicker{white-space:nowrap;text-overflow:ellipsis;opacity:.95;max-width:100%;margin-block:-4px;padding-block:4px;font-size:11px;font-weight:700;line-height:1.2;overflow:hidden}.lobby-play__main{align-items:center;gap:6px;font-size:22px;font-weight:700;line-height:1.15;display:flex}@media (orientation:landscape) and (max-height:340px){.lobby-play{border-width:9px 22px 9px 10px;border-image-width:9px 22px 9px 10px;padding:0 8px 2px 10px}}@media (min-height:600px){.hud-btn__thing{width:56px;height:56px}.hud-btn__label{font-size:13px}.lobby-play{border-width:14px 34px 14px 15px;border-image-width:14px 34px 14px 15px;min-width:220px;padding:6px 12px 8px 14px}.lobby-play__main{font-size:26px}}.pj-route-loading{z-index:3;pointer-events:none;opacity:0;justify-content:center;align-items:center;padding:16px;animation:.24s ease-out .2s forwards pj-route-loading-in;display:flex;position:fixed;inset:0}.pj-route-loading__card{border:1.5px solid var(--sk-ink,#2d2b33);background:var(--sk-paper,#fbf8f1);width:min(330px,100%);box-shadow:3px 3px 0 var(--sk-ink,#2d2b33);border-radius:14px;flex-direction:column;align-items:center;gap:14px;padding:16px 18px 18px;display:flex;transform:rotate(-1.2deg)}.pj-route-loading__line{align-self:stretch;align-items:center;gap:10px;display:flex}.pj-route-loading__face{border:1.5px solid var(--sk-ink,#2d2b33);background:#e4dcec;border-radius:50%;flex:none;width:48px;height:48px}.pj-route-loading__text{font-family:var(--sk-font-hand,inherit);flex-direction:column;margin:0;font-size:15px;line-height:1.3;display:flex}.pj-route-loading__name{opacity:.6;font-size:12px;font-weight:700}.pj-route-loading__keys{width:100%;max-width:200px;height:auto;overflow:visible}.pj-route-loading__white{fill:#fffdf8;stroke:var(--sk-ink,#2d2b33);stroke-width:1.2px;animation:1.6s ease-in-out infinite pj-route-loading-key}.pj-route-loading__black{fill:var(--sk-ink,#2d2b33)}@keyframes pj-route-loading-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes pj-route-loading-key{0%,30%,to{fill:#fffdf8}10%{fill:#c9b8ec}}@media (prefers-reduced-motion:reduce){.pj-route-loading__white{animation:none}}.tool-split{gap:var(--mantine-spacing-md);flex-direction:column;display:flex}@media (orientation:landscape) and (min-width:600px) and (max-height:600px){.tool-split{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:start;gap:16px;display:grid}.tool-split__main{position:sticky;top:8px}.drill-stage:not(.is-focused){grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);grid-auto-flow:dense;align-items:start;gap:10px 20px;display:grid}.drill-stage:not(.is-focused)>*{grid-column:2;width:100%}.drill-stage:not(.is-focused)>[data-testid=staff]{grid-area:1/1/span 8;justify-self:center}.drill-stage:not(.is-focused)>.drill-stage__prompt,.drill-stage:not(.is-focused)>.drill-stage__actions{text-align:left;justify-content:flex-start}.ear-stage{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-auto-flow:dense;align-items:start;gap:10px 20px;display:grid}.ear-stage>*{grid-column:2;width:100%}.ear-stage>:nth-child(-n+2){grid-column:1}}.dorm{--dorm-h:100vh;height:var(--dorm-h);color:#2d2b33;background:#e6dccb;position:relative;overflow:hidden;container-type:size}@supports (height:100dvh){.dorm{--dorm-h:100dvh}}.dorm__backdrop{object-fit:cover;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;animation:.4s ease-out dorm-scene-in}@keyframes dorm-scene-in{0%{opacity:.35}}.dorm[data-light=dem] .dorm-learner,.dorm[data-light=dem] .dorm-furniture,.dorm[data-light=dem] .dorm-thing__img,.dorm[data-light=dem] .dorm-person-chip{filter:brightness(.78)saturate(.82)}.dorm-furniture{pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.dorm-slot-pick{z-index:28;color:#8a76b8;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#f4ede11f;border:2px dashed #8a76b8d9;border-radius:10px;place-items:center;padding:0;font-size:clamp(20px,5vh,34px);font-weight:700;display:grid;position:absolute}.dorm-slot-pick[aria-pressed=true]{background:#8a76b838;border-style:solid}.dorm-slot-pick--empty{background:#f4ede18c}.dorm-slot-pick:focus-visible{outline-offset:2px;outline:2px solid #8a76b8}.dorm-door-sign{white-space:normal;text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:1px;max-width:min(240px,42vw);padding:3px 10px;display:inline-flex;transform:translate(-50%,-50%)}.dorm-door-sign__play{align-items:center;gap:2px;font-weight:600;display:inline-flex}.dorm-thing{width:auto;position:absolute;transform:translate(-50%,-100%)}.dorm-thing__img{width:auto;height:100%;display:block}.dorm-keepsake{cursor:pointer;filter:drop-shadow(1px 2px 1.5px #2d2b334d);-webkit-tap-highlight-color:transparent;background:0 0;border:0;padding:0}.dorm-keepsake:before{content:"";width:max(100%, min(40px, calc(var(--scene-w) * .065 - 2px)));height:max(100%, min(40px, calc(var(--scene-h) * .098 - 2px)));position:absolute;bottom:0;left:50%;transform:translate(-50%)}.dorm-keepsake:active{transform:translate(-50%,-100%)scale(.94)}.dorm-keepsake:focus-visible{outline-offset:2px;outline:2px solid #8a76b8}.dorm-learner{pointer-events:none;animation:.45s ease-out dorm-arrive}.dorm-thing--flip{transform-origin:0 0;scale:-1 1}@keyframes dorm-arrive{0%{opacity:0;transform:translate(-50%,calc(6px - 100%))}}.dorm-seat-hit{z-index:3;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;padding:0;transition:background-color .2s;position:absolute;inset:0}.dorm-seat-hit:focus-visible{background:#8a76b847;outline:none}@media (hover:hover){.dorm-seat-hit:hover{background:#8a76b824}}.dorm-sr{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.dorm-seat-tag{z-index:20;color:#2d2b33;font:inherit;white-space:nowrap;cursor:pointer;background:#f4ede1;border:1.5px solid #2d2b33;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700;animation:.25s ease-out dorm-tag-in;position:absolute;transform:translate(-50%,-50%);box-shadow:2px 2px #2d2b33}@keyframes dorm-tag-in{0%{opacity:0;transform:translate(-50%,-30%)}}.dorm__top{z-index:30;top:calc(var(--safe-top) + var(--edge-top));min-height:40px;left:calc(max(var(--safe-left), var(--safe-right)) + 104px);align-items:center;gap:8px;display:flex;position:absolute}.dorm-menu__toggle[aria-expanded=true]{filter:brightness(.93);transform:translateY(2px)scale(.96)}.dorm-menu__panel{width:max-content;max-width:min(420px, calc(100vw - 2 * max(var(--safe-left), var(--safe-right)) - 116px));background:#f4ede1f5;border:1.5px solid #2d2b33;border-radius:14px;flex-wrap:wrap;gap:8px;padding:10px;animation:.15s ease-out dorm-menu-in;display:flex;position:absolute;top:calc(100% + 8px);left:0;box-shadow:3px 3px #2d2b33}.dorm-menu__panel .dorm-chip{min-height:40px;text-decoration:none}@keyframes dorm-menu-in{0%{opacity:0;translate:0 -6px}}@media (prefers-reduced-motion:reduce){.dorm-menu__panel{animation:none}}.dorm-rain{z-index:24;pointer-events:none;background:#28344814;position:absolute;inset:0;overflow:hidden}.dorm-rain--out{background:linear-gradient(#2630446b,#26304438 60%)}.dorm[data-light=dem] .dorm-rain{background:#080c1a38}.dorm[data-light] .dorm-rain--painted{background:0 0}.dorm[data-rain-art] .dorm-learner,.dorm[data-rain-art] .dorm-furniture,.dorm[data-rain-art] .dorm-thing__img,.dorm[data-rain-art] .dorm-person-chip{filter:brightness(.9)saturate(.76)}.dorm[data-rain-art][data-light=dem] .dorm-learner,.dorm[data-rain-art][data-light=dem] .dorm-furniture,.dorm[data-rain-art][data-light=dem] .dorm-thing__img,.dorm[data-rain-art][data-light=dem] .dorm-person-chip{filter:brightness(.72)saturate(.76)}.dorm-rain-sky{z-index:1;pointer-events:none;position:absolute;inset:0;overflow:hidden}.dorm-rain__streak{transform-origin:top;background:linear-gradient(#e8eef800,#e8eef8);border-radius:1px;width:2px;animation-name:dorm-rain-fall;animation-timing-function:linear;animation-iteration-count:infinite;position:absolute;top:0;translate:0 -20cqh;rotate:12deg}@keyframes dorm-rain-fall{to{translate:-27cqh 112cqh}}.dorm-flash{opacity:0;background:#eef3ff;animation:1s ease-out forwards dorm-flash;position:absolute;inset:0}@keyframes dorm-flash{0%{opacity:0}4%{opacity:var(--flash)}12%{opacity:calc(var(--flash) * .12)}20%{opacity:calc(var(--flash) * .75)}to{opacity:0}}@media (prefers-reduced-motion:reduce){.dorm-rain__streak,.dorm-flash{display:none}}.dorm__bottom{z-index:30;right:calc(max(var(--safe-left), var(--safe-right)) + 12px);bottom:calc(var(--safe-bottom) + 12px);left:calc(max(var(--safe-left), var(--safe-right)) + 12px);pointer-events:none;flex-flow:row-reverse wrap;justify-content:space-between;align-items:flex-end;gap:8px;display:flex;position:absolute}.dorm__bottom>*{pointer-events:auto}.dorm-chip{color:#2d2b33;font:inherit;cursor:pointer;background:#f4ede1;border:1.5px solid #2d2b33;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:8px 18px;font-size:14px;font-weight:700;display:inline-flex;box-shadow:2px 2px #2d2b33}.dorm-chip[aria-pressed=true]{color:#fff;background:#8a76b8}.dorm-chip:active,.dorm-seat-tag:active{translate:2px 2px;box-shadow:0 0 #2d2b33}.dorm-note{color:#2d2b33;max-width:min(360px,60vw);font:inherit;text-align:left;background:#f4ede1f0;border:1.5px solid #2d2b33;border-radius:10px;padding:6px 12px;font-size:12.5px;line-height:1.4;text-decoration:none;box-shadow:2px 2px #2d2b33}.dorm-note strong{font-size:13.5px;display:block}button.dorm-note{z-index:30;top:calc(var(--safe-top) + var(--edge-top) + 44px);cursor:pointer;animation:.25s ease-out dorm-tag-in;position:absolute;left:50%;transform:translate(-50%)}@media (prefers-reduced-motion:reduce){.dorm-learner,.dorm__backdrop,.dorm-seat-tag,button.dorm-note{animation:none}.dorm-seat-hit{transition:none}}.dorm-front{z-index:12;pointer-events:none;position:absolute;inset:0}.dorm-front__img{object-fit:fill}.dorm-name-tag{z-index:25;color:#2d2b33;white-space:nowrap;pointer-events:none;background:#f4ede1eb;border:1.5px solid #2d2b33;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:700;position:absolute;transform:translate(-50%,-100%)}.dorm-name-tag--sound{align-items:center;gap:2px;padding-right:2px;display:inline-flex}.dorm-sound-btn{cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:50%;width:26px;height:26px;padding:0;font-size:15px;line-height:1;position:relative}.dorm-sound-btn:after{content:"";position:absolute;inset:-9px}.dorm-sound-btn:active{transform:scale(.88)}.dorm-sound-btn:focus-visible{outline:2px solid #8a76b8}.dorm-person-chip{z-index:20;pointer-events:none;position:absolute;transform:translate(-50%,-50%)}.dorm-reaction{z-index:26;pointer-events:none;font-size:clamp(22px,5vh,34px);animation:2.6s ease-out forwards dorm-reaction-up;position:absolute;transform:translate(-50%,-100%)}@keyframes dorm-reaction-up{0%{opacity:0;transform:translate(-50%,-80%)scale(.6)}12%{opacity:1;transform:translate(-50%,-100%)scale(1.1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-260%)scale(1)}}.dorm-live{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.dorm-live:empty{display:none}.dorm-chat__reacts{justify-content:flex-end;gap:8px;margin-bottom:6px;display:flex}.dorm-reaction-btn{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:50%;width:40px;height:40px;padding:0;font-size:22px;line-height:1}.dorm-reaction-btn:active{transform:scale(.88)}.dorm-reaction-btn:focus-visible{outline:2px solid #8a76b8}.dorm-chip--small{min-height:40px;padding:4px 12px;font-size:12.5px;text-decoration:none}.dorm-chip--main{color:#fff;background:#8a76b8}.dorm-chip--round{flex:none;width:40px;height:40px;padding:0}.dorm-piano-tools{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.dorm-piano-tools:has(>.dorm-keys){flex:1 0 100%}.dorm-sheet[hidden]{display:none}.dorm-sheet{z-index:32;top:calc(var(--safe-top) + var(--edge-top) + 48px);right:calc(max(var(--safe-left), var(--safe-right)) + 12px);bottom:calc(var(--safe-bottom) + 12px);left:calc(max(var(--safe-left), var(--safe-right)) + 12px);color:#2d2b33;pointer-events:auto;background:#f4ede1f7;border:1.5px solid #2d2b33;border-radius:12px;flex-direction:column;max-width:760px;margin:0 auto;display:flex;position:fixed;box-shadow:2px 2px #2d2b33}body.sheet-focus-lock .dorm__bottom,body.sheet-focus-lock .dorm-sheet{z-index:350}.dorm-sheet__bar{border-bottom:1.5px solid #2d2b33;align-items:center;gap:8px;padding:6px 6px 6px 12px;display:flex}.dorm-sheet__bar .dorm-chip--round:first-child{margin-left:-6px}.dorm-sheet__title{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-weight:700;overflow:hidden clip}.dorm-sheet__body{overscroll-behavior:contain;flex:1;min-height:0;padding:10px 12px 12px;overflow-y:auto}.dorm-sheet__hint{margin:0 0 8px;font-size:12.5px;line-height:1.4}.dorm-sheet__busy{align-items:center;gap:8px;display:flex}.dorm-sheet__list{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.dorm-sheet__item{width:100%;color:inherit;font:inherit;text-align:left;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;background:#fff8ec;border:1.5px solid #2d2b33;border-radius:10px;padding:10px 14px;font-weight:700;overflow:hidden clip;box-shadow:2px 2px #2d2b33}.dorm-sheet__item:active{translate:2px 2px;box-shadow:0 0 #2d2b33}.dorm-keys{flex:1 0 100%;justify-content:center;align-items:stretch;gap:8px;display:flex}.dorm-keys__side{flex-direction:column;justify-content:flex-end;gap:8px;display:flex}.dorm-keys__side:last-child{justify-content:space-between}.dorm-keys__board{flex:auto;min-width:0;max-width:980px}.dorm-keys .vkb-frame{background:#f4ede1;border:1.5px solid #2d2b33;border-radius:12px;padding:6px 6px 8px;overflow:hidden;box-shadow:2px 2px #2d2b33}.dorm-keys .vkb{height:clamp(80px,26cqh,150px)}.dorm-keys .vkb-key{touch-action:none}.dorm-chip:disabled{opacity:.6;cursor:default}.dorm__bottom[hidden]{display:none}.dorm-slot{aspect-ratio:1;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;padding:0}.dorm-slot:not(.dorm-slot--empty){filter:drop-shadow(1px 2px 1.5px #2d2b334d);outline-offset:1px;border-radius:6px;outline:1.5px dashed #8a76b8b3}.dorm-slot__box{background:#2d2b332e;border:2px dashed #f4ede1d9;border-radius:6px;width:100%;height:100%;display:block}.dorm-slot--target .dorm-slot__box{background:#8a76b84d;border-color:#8a76b8;animation:1.2s ease-in-out infinite dorm-slot-pulse}@keyframes dorm-slot-pulse{50%{background:#8a76b880}}.dorm-slot:focus-visible{outline-offset:2px;outline:2px solid #8a76b8}.dorm-tray{z-index:30;right:calc(max(var(--safe-left), var(--safe-right)) + 12px);bottom:calc(var(--safe-bottom) + 12px);left:calc(max(var(--safe-left), var(--safe-right)) + 12px);color:#2d2b33;background:#f4ede1f5;border:1.5px solid #2d2b33;border-radius:12px;max-width:560px;margin:0 auto;padding:8px 10px;position:absolute;box-shadow:2px 2px #2d2b33}.dorm-tray__hint{margin:0 0 6px;font-size:12.5px;line-height:1.35}.dorm-tray__items{align-items:center;gap:6px;min-height:48px;display:flex;overflow-x:auto}.dorm-tray__empty{opacity:.7;font-size:12.5px}.dorm-tray__item{cursor:pointer;background:#fff8ec;border:1.5px solid #2d2b33;border-radius:8px;flex:none;width:48px;height:48px;padding:3px}.dorm-tray__item img{object-fit:contain;width:100%;height:100%;display:block}.dorm-tray__item[aria-pressed=true]{background:#8a76b8;translate:0 -3px}.dorm-tray__item--style{width:72px;height:56px}.dorm-tray__item--none{width:auto;height:56px;font:inherit;padding:0 10px;font-size:12px}.dorm-tray__actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.dorm-tray--row{flex-wrap:wrap;align-items:center;gap:6px 8px;display:flex}.dorm-tray--row .dorm-tray__hint{flex:200px;margin:0}.dorm-tray--row .dorm-tray__actions{margin-top:0;margin-left:auto}.dorm-tray--row .dorm-tray__items{flex:100%}@media (prefers-reduced-motion:reduce){.dorm-slot--target .dorm-slot__box{animation:none}}.dorm-piano-panel{background:#f4ede1f7;border:1.5px solid #2d2b33;border-radius:12px;flex-direction:column;gap:8px;max-width:min(380px,86vw);max-height:60vh;padding:10px 12px;display:flex;overflow-y:auto;box-shadow:2px 2px #2d2b33}.dorm-piano-panel__side{flex-direction:column;gap:8px;display:flex}@media (orientation:landscape) and (max-height:540px){.dorm-piano-panel{grid-template-columns:minmax(0,1fr) 176px;align-items:start;gap:10px;max-width:min(600px,100%);padding:8px 10px;display:grid}.dorm-piano-panel__side{position:sticky;top:0}.dorm-piano-panel .mantine-Card-root,.dorm-piano-panel .mantine-Alert-root{padding:10px 12px}}.dorm-piano-panel__hint{margin:6px 0 0;font-size:12.5px}.dorm-piano-panel__actions{justify-content:space-between;gap:8px;display:flex}@media (prefers-reduced-motion:reduce){.dorm-reaction{animation-duration:1.2s}}.tap-targets .mantine-Button-root{min-height:40px}.tap-targets .mantine-Input-input:not(textarea){height:40px;min-height:40px}.tap-targets textarea.mantine-Input-input{min-height:40px}.tap-targets .mantine-ActionIcon-root{min-width:40px;min-height:40px}.tap-targets .mantine-Switch-body{min-height:40px}.friend-code{letter-spacing:2px}.presence-line{color:#6b6775;white-space:nowrap;align-items:center;gap:5px;font-size:12px;font-weight:500;line-height:1.3;display:inline-flex}.presence-line__dot{background:#b9b4c2;border-radius:50%;flex:none;width:8px;height:8px}.presence-line--online{color:#2f7d4f}.presence-line--online .presence-line__dot{background:#3fa866;box-shadow:0 0 0 2px #3fa86640}.hud-btn__badge,.unread-badge{color:#fff;text-align:center;background:#c4473a;border:1.5px solid #fff8ec;border-radius:999px;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:700;line-height:15px}.hud-btn__badge{position:absolute;top:-4px;right:-6px}.unread-badge{margin-left:6px;display:inline-block}.friend-link{position:relative}.friend-link:after{content:"";height:40px;position:absolute;top:50%;left:-8px;right:-8px;transform:translateY(-50%)}.chat{flex-direction:column;gap:6px;padding-bottom:8px;display:flex}.chat__list{flex-direction:column;gap:6px;min-height:120px;display:flex}.chat__day{opacity:.6;align-self:center;margin:6px 0 2px;font-size:11px;font-weight:700}.chat__row{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.chat__row--mine{align-items:flex-end}.chat__bubble{color:#2d2b33;max-width:min(78%,420px);font:inherit;text-align:left;cursor:pointer;background:#fff8ec;border:1.5px solid #2d2b33;border-radius:14px 14px 14px 4px;flex-direction:column;padding:6px 10px;display:flex;box-shadow:1px 1px #2d2b33}.chat__row--mine .chat__bubble{cursor:default;background:#e6dcf5;border-radius:14px 14px 4px}.chat__bubble:disabled{opacity:1}.chat__text{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.4}.chat__time{opacity:.55;align-self:flex-end;font-size:10.5px}.chat__compose{padding:8px 0 calc(var(--safe-bottom,0px) + 8px);background:var(--mantine-color-body);position:sticky;bottom:0}.dorm-say{z-index:26;color:#2d2b33;overflow-wrap:anywhere;pointer-events:none;background:#fff8ec;border:1.5px solid #2d2b33;border-radius:12px;max-width:min(220px,40vw);padding:4px 10px;font-size:12.5px;line-height:1.35;animation:.25s ease-out dorm-tag-in;position:absolute;transform:translate(-50%,-100%);box-shadow:2px 2px #2d2b33}.dorm-say:after{content:"";background:#fff8ec;border-bottom:1.5px solid #2d2b33;border-right:1.5px solid #2d2b33;width:10px;height:10px;position:absolute;bottom:-7px;left:50%;transform:translate(-50%)rotate(45deg)}.dorm-chat{color:#2d2b33;background:#f4ede1f5;border:1.5px solid #2d2b33;border-radius:12px;width:min(340px,86vw);padding:8px 10px;box-shadow:2px 2px #2d2b33}.dorm-chat__log{flex-direction:column;max-height:min(150px,30vh);margin-bottom:6px;font-size:12.5px;line-height:1.35;display:flex;overflow-y:auto}.dorm-chat__line{overflow-wrap:anywhere;align-items:baseline;gap:6px;padding:1.5px 4px;display:flex}.dorm-chat__line strong{flex:none}.dorm-chat__line span{flex:1}.dorm-chat__line--pick{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:6px}.dorm-chat__line--pick[aria-expanded=true]{background:#8a76b82e}.dorm-chat__line--pick:focus-visible{outline:2px solid #8a76b8}.dorm-chat__report{color:#a8322d;flex:none;align-self:flex-end;margin:2px 2px 4px}.dorm-chat__form{gap:8px;display:flex}.dorm-chat__input{color:#2d2b33;min-width:0;min-height:40px;font:inherit;background:#fff;border:1.5px solid #2d2b33;border-radius:999px;flex:1;padding:5px 10px;font-size:13px}@media (prefers-reduced-motion:reduce){.dorm-say{animation:none}}.walk-stage{--walk-unit:100vh;z-index:350;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#1d1b20;position:fixed;inset:0;overflow:hidden}.walk-stage__world{top:var(--walk-top,0px);height:var(--walk-unit);will-change:transform;position:absolute;left:0;right:0}.walk-stage__backdrop{pointer-events:none;height:100%;position:absolute;top:0;overflow:hidden}.walk-stage__person{transform-origin:50% 100%;will-change:transform, background-position;pointer-events:none;background-repeat:no-repeat;position:absolute;top:0;left:0}.walk-stage__tag{will-change:transform;pointer-events:none;flex-direction:column;align-items:center;display:flex;position:absolute;top:0;left:0}.walk-stage__say{width:max-content;margin-bottom:9px;animation:.25s ease-out walk-say-in;position:relative;transform:none}@keyframes walk-say-in{0%{opacity:0;transform:translateY(30%)}}@media (prefers-reduced-motion:reduce){.walk-stage__say{animation:none}}.walk-stage__reaction{top:0;left:50%}.walk-stage__name{color:#f4ede1;text-overflow:ellipsis;white-space:nowrap;background:#1d1b20b8;border-radius:999px;max-width:9rem;padding:1px 8px;font-size:12px;line-height:1.5;overflow:hidden}.walk-stage__exit{pointer-events:none;position:absolute;top:0;left:0}.walk-stage__thing{align-items:center;gap:4px;display:inline-flex}.walk-stage__thing-icon{stroke-width:2.2px;flex:none;width:14px;height:14px}.walk-stage__seat-plate{padding:3px 12px;animation:2.6s ease-in-out infinite walk-seat-bob;display:inline-flex}.walk-stage__seat-icon{stroke-width:2.2px;width:16px;height:16px}@keyframes walk-seat-bob{0%,to{filter:drop-shadow(1px 2px 1.5px #2d2b3359);translate:0}50%{filter:drop-shadow(1px 4px 2px #2d2b334d)drop-shadow(0 0 6px #ffd68cd9);translate:0 -4px}}@media (prefers-reduced-motion:reduce){.walk-stage__seat-plate{animation:none}}.walk-stage__seated{opacity:0;pointer-events:none;max-width:none;transition:opacity .28s;position:absolute}.walk-stage__seated[data-on]{opacity:1}.walk-stage__person{transition:opacity .22s}.walk-stage__person[data-seated],.walk-stage__exit[data-hidden]{opacity:0}.walk-stage__prop{filter:brightness(.42)saturate(.7)blur(1.2px);will-change:transform;pointer-events:none;max-width:none;position:absolute;top:0;left:0}.walk-life{pointer-events:none;position:absolute;inset:0}.walk-life>*{position:absolute}.walk-life__canopy{transform-origin:50% 100%;will-change:transform;background-repeat:no-repeat;animation:ease-in-out infinite walk-sway;-webkit-mask-image:radial-gradient(closest-side,#000 50%,#0000 92%);mask-image:radial-gradient(closest-side,#000 50%,#0000 92%)}@keyframes walk-sway{0%,to{transform:skew(0)}22%{transform:skewX(var(--sway))}45%{transform:skewX(calc(var(--sway) * -.35))}63%{transform:skewX(calc(var(--sway) * .55))}82%{transform:skewX(calc(var(--sway) * -.15))}}.walk-life__hang{transform-origin:50% 0;will-change:transform;max-width:none;animation:ease-in-out infinite walk-hang}@keyframes walk-hang{0%,to{transform:rotate(0)}25%{transform:rotate(var(--sway))}75%{transform:rotate(calc(var(--sway) * -1))}}.walk-life__hang[data-tick]{transform-origin:50% 100%;animation-name:walk-tick;animation-direction:alternate}@keyframes walk-tick{0%{transform:rotate(0)}to{transform:rotate(var(--sway))}}.walk-life__beam{mix-blend-mode:screen;filter:blur(8px);will-change:transform, opacity;transform-origin:50% 0;background:linear-gradient(#ffde9699,#ffde9614 85%);animation:11s ease-in-out infinite walk-beam-breathe,23s ease-in-out infinite walk-beam-drift}@keyframes walk-beam-breathe{0%,to{opacity:.45}50%{opacity:.95}}@keyframes walk-beam-drift{0%,to{transform:skew(0)}50%{translate:calc(var(--walk-unit) * .02) 0;transform:skew(-4deg)}}.walk-life__leaf{opacity:0;width:auto;max-width:none;animation:linear infinite walk-leaf}@keyframes walk-leaf{0%{opacity:0;transform:translate(0)rotate(0)}6%{opacity:1}25%{transform:translate(calc(var(--drift) * .5), calc(var(--fall) * .25)) rotate(calc(var(--spin) * .25))}45%{transform:translate(calc(var(--drift) * -.1), calc(var(--fall) * .5)) rotate(calc(var(--spin) * .5))}62%{transform:translate(calc(var(--drift) * .8), calc(var(--fall) * .75)) rotate(calc(var(--spin) * .8))}75%,88%{opacity:1;transform:translate(var(--drift), var(--fall)) rotate(var(--spin))}to{opacity:0;transform:translate(var(--drift), var(--fall)) rotate(var(--spin))}}.walk-life__bird{opacity:0;animation:linear infinite walk-bird}@keyframes walk-bird{0%{opacity:0;transform:translate(0)}2%{opacity:1}28%{opacity:1}30%,to{opacity:0;transform:translateX(var(--fly))}}.walk-life__bird-arc{animation:infinite walk-bird-arc;position:absolute;inset:0}@keyframes walk-bird-arc{0%{animation-timing-function:ease-out;transform:translateY(0)}14%{transform:translateY(calc(var(--arc) * -1));animation-timing-function:ease-in-out}30%,to{transform:translateY(calc(var(--arc) * -.35))}}.walk-life__bird-body{position:absolute;inset:0;overflow:hidden}.walk-life__bird-body[data-left]{transform:scaleX(-1)}.walk-life__wings{max-width:none;height:100%;animation:walk-loop var(--beat) steps(16, end) infinite;display:block}.walk-life__perch-body,.walk-life__perch-fly{position:absolute;inset:0}.walk-life__perch-body[data-left]{transform:scaleX(-1)}.walk-life__perch-sit,.walk-life__perch-peck{object-fit:contain;width:100%;height:100%;animation:none;position:absolute;inset:0}.walk-life__perch-sit{animation-name:walk-perch-sit}.walk-life__perch-peck{opacity:0;animation-name:walk-perch-peck}@keyframes walk-perch-sit{0%{opacity:1}70%{opacity:0}74%{opacity:1}80%{opacity:0}84%,to{opacity:1}}@keyframes walk-perch-peck{0%{opacity:0}70%{opacity:1}74%{opacity:0}80%{opacity:1}84%,to{opacity:0}}.walk-life__perch-fly{--beat:.42s;opacity:0;transform:scaleX(var(--away,1));overflow:hidden}.walk-life__perch:not([data-phase=flee]):not([data-phase=land]) .walk-life__wings{animation:none}.walk-life__perch[data-phase=land] .walk-life__perch-fly{transform:scaleX(calc(var(--away,1) * -1))}.walk-life__perch[data-phase=gone]{visibility:hidden}.walk-life__perch[data-phase=flee]{animation:1.6s ease-in forwards walk-perch-flee}.walk-life__perch[data-phase=flee] .walk-life__perch-body{opacity:0}.walk-life__perch[data-phase=flee] .walk-life__perch-fly{opacity:1}@keyframes walk-perch-flee{0%{opacity:1;transform:translate(0)}12%{transform:translate(calc(var(--away,1) * .02 * var(--walk-unit)), calc(-.05 * var(--walk-unit)))}70%{opacity:1}to{opacity:0;transform:translate(calc(var(--away,1) * .55 * var(--walk-unit)), calc(-.42 * var(--walk-unit)))}}.walk-life__perch[data-phase=land]{animation:1.4s ease-out forwards walk-perch-land}.walk-life__perch[data-phase=land] .walk-life__perch-fly{animation:1.4s step-end forwards walk-perch-land-fly}.walk-life__perch[data-phase=land] .walk-life__perch-body{animation:1.4s step-end forwards walk-perch-land-sit}@keyframes walk-perch-land{0%{opacity:0;transform:translate(calc(var(--away,1) * .45 * var(--walk-unit)), calc(-.35 * var(--walk-unit)))}25%{opacity:1}to{opacity:1;transform:translate(0)}}@keyframes walk-perch-land-fly{0%{opacity:1}92%,to{opacity:0}}@keyframes walk-perch-land-sit{0%{opacity:0}92%,to{opacity:1}}.walk-life__loop{overflow:hidden}.walk-life__loop>img{max-width:none;height:100%;animation:walk-loop var(--loop-time) steps(var(--loop-frames), end) infinite;display:block}@keyframes walk-loop{0%{transform:translate(0)}to{transform:translate(-100%)}}@media (prefers-reduced-motion:reduce){.walk-life__canopy,.walk-life__hang,.walk-life__beam,.walk-life__bird-arc,.walk-life__perch-sit,.walk-life__perch-peck,.walk-life__loop>img,.walk-life__wings{animation:none}.walk-life__perch[data-phase=flee]{visibility:hidden}.walk-life__perch[data-phase=land],.walk-life__perch[data-phase=land] .walk-life__perch-fly,.walk-life__perch[data-phase=land] .walk-life__perch-body{animation:none}.walk-life__leaf,.walk-life__bird,.walk-life .lobby-ambient__mote{display:none}}.walk-stage__nav{z-index:2;top:calc(var(--safe-top) + var(--edge-top));left:calc(max(var(--safe-left), var(--safe-right)) + 8px);position:absolute}.walk-stage__nav .nav-btns--float,.walk-stage__nav .nav-btns{position:static}.walk-stage__mood{z-index:1;pointer-events:none;background:radial-gradient(ellipse 75% 70% at 50% 52%, transparent 40%, rgb(6 6 12/var(--walk-vignette,.6)) 100%), linear-gradient(var(--walk-tint,transparent), var(--walk-tint,transparent));position:absolute;inset:0;overflow:hidden}.walk-stage__mood:before{content:"";opacity:.09;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.5 0 0 0 0 0.5 0 0 0 0 0.5 0 0 0 1.4 -0.45'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");animation:.5s steps(4,end) infinite walk-grain;position:absolute;inset:-50%}.walk-stage__mood:after{content:"";opacity:0;background:#080810;animation:13s infinite walk-flicker;position:absolute;inset:0}@keyframes walk-grain{0%{transform:translate(0)}25%{transform:translate(-7%,4%)}50%{transform:translate(5%,-6%)}75%{transform:translate(-3%,-8%)}to{transform:translate(0)}}.walk-stage__mood[data-flicker=off]:after{animation:none}@keyframes walk-flicker{0%,61%,62.2%,63%,64.4%,to{opacity:0}61.6%{opacity:.16}63.6%{opacity:.1}}@media (prefers-reduced-motion:reduce){.walk-stage__mood:before,.walk-stage__mood:after{animation:none}}.walk-rain{z-index:1;pointer-events:none;background:#28344814;position:absolute;inset:0;overflow:hidden;container-type:size}.walk-rain[data-exposure=open]{background:linear-gradient(#26304424,#2630440f 65%)}.walk-rain[data-exposure=glass]{background:#28344824}.walk-rain-grey{z-index:1;pointer-events:none;mix-blend-mode:saturation;opacity:.2;background:gray;position:absolute;inset:0}.walk-rain-grey[data-exposure=open]{opacity:.25}.walk-time{z-index:1;pointer-events:none;mix-blend-mode:multiply;position:absolute;inset:0}.walk-time[data-time=binh-minh]{background:linear-gradient(#fabab2,#ffd6c0 55%,#ded4e8)}.walk-time[data-time=hoang-hon]{background:linear-gradient(#ffa070,#eea48c 50%,#a080a8)}.walk-time[data-time=dem]{background:linear-gradient(#485896,#606ca0 60%,#464e80)}.walk-time[data-exposure=glass]{opacity:.7}.walk-time[data-time=dem][data-exposure=open],.walk-time[data-time=hoang-hon][data-exposure=open],.walk-time[data-time=binh-minh][data-exposure=open]{opacity:.3}.walk-time[data-exposure=roof]{opacity:.4}.walk-time-pick{flex-wrap:wrap;flex-basis:100%;gap:6px;display:flex}.walk-time-pick .dorm-chip{padding-inline:9px}.walk-stage__menu{z-index:3;top:calc(var(--safe-top) + var(--edge-top));left:calc(max(var(--safe-left), var(--safe-right)) + 104px);align-items:center;min-height:40px;display:flex;position:absolute}.walk-stage__place{z-index:2;top:calc(var(--safe-top) + var(--edge-top) + 8px);right:calc(max(var(--safe-left), var(--safe-right)) + 12px);position:absolute}.walk-stage__hint{z-index:2;left:50%;bottom:calc(var(--safe-bottom) + 10px);color:#f4ede1;text-align:center;pointer-events:none;background:#1d1b20b8;border-radius:999px;max-width:min(36rem,90vw);margin:0;padding:6px 14px;font-size:13px;position:absolute;transform:translate(-50%)}.walk-stage__hint--dock{max-width:min(36rem, calc(100vw - 2 * (max(var(--safe-left), var(--safe-right)) + 60px)))}.walk-stage__talk{z-index:3;right:calc(max(var(--safe-left), var(--safe-right)) + 12px);bottom:calc(var(--safe-bottom) + 10px);flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:absolute}.walk-stage__invite{z-index:4;min-width:min(20rem,86vw)}.walk-stage__invite-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.walk-stage__invite-who{flex-direction:column;gap:2px;min-width:0;display:flex}.walk-stage__invite-who .presence-line{color:#cfc8bb}.walk-stage__invite-who .presence-line--online{color:#8fd8a8}.walk-stage__invite-name{color:#f4ede1;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:14px;font-weight:700;overflow:hidden}.walk-stage__invite-note{color:#f4ede1;text-align:center;max-width:20rem;margin:0;font-size:13px}.walk-stage__ways{z-index:2;background:#1d1b20c7;border-radius:14px;flex-direction:column;align-items:stretch;gap:8px;min-width:min(18rem,80vw);max-height:calc(100% - 16px);padding:12px 14px;display:flex;position:absolute;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}.walk-stage__ways .room-plate{align-self:center}.walk-stage__ways .dorm-chip{min-height:40px}.walk-map{z-index:4;padding:calc(var(--safe-top) + 8px) calc(max(var(--safe-left), var(--safe-right)) + 12px) calc(var(--safe-bottom) + 8px);background:#121015db;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex;position:absolute;inset:0}.walk-map__frame{width:min(100%, calc((100dvh - var(--safe-top) - var(--safe-bottom) - 72px) * 16 / 9));aspect-ratio:16/9;flex:none;position:relative}.walk-map__art{border-radius:10px;width:100%;height:100%;display:block;box-shadow:0 0 0 1.5px #2d2b33,3px 3px #2d2b33}.walk-map__pin{cursor:pointer;min-height:32px;font:inherit;position:absolute;transform:translate(-50%,-50%)}.walk-map__pin[aria-pressed=true]{outline-offset:2px;outline:2px solid #f4ede1}.walk-map__pin[data-people]{z-index:1}.walk-map__people{pointer-events:none;display:flex;position:absolute;top:-10px;left:calc(100% - 12px)}.walk-map__people[data-left]{flex-direction:row-reverse;left:auto;right:calc(100% - 12px)}.walk-map__face{border-radius:50%;display:block;box-shadow:0 0 0 2px #f4ede1}.walk-map__face+.walk-map__face{margin-left:-7px}.walk-map__people[data-left] .walk-map__face+.walk-map__face{margin-left:0;margin-right:-7px}.walk-map__face--me{box-shadow:0 0 0 2px #e2b04a}.walk-map__place{z-index:5}.walk-map__how{color:#f4ede1;text-align:center;max-width:18rem;margin:0;font-size:13px}.walk-map__close{flex:none;min-height:40px}.walk-stage__rotate{z-index:2;left:50%;top:calc(var(--walk-top,0px) / 2);color:#f4ede1;white-space:nowrap;pointer-events:none;margin:0;font-size:13px;position:absolute;transform:translate(-50%,-50%)}@media (orientation:landscape){.walk-stage__rotate{display:none}}.walk-stage__fade{z-index:3;opacity:0;pointer-events:none;background:#121015;transition:opacity .36s;position:absolute;inset:0}.walk-stage__fade[data-on]{opacity:1}@media (prefers-reduced-motion:reduce){.walk-stage__fade{transition-duration:1ms}}.party__cols{grid-template-columns:minmax(0,1fr);align-items:start;gap:12px;display:grid}@media (orientation:landscape) and (min-width:540px){.party__cols{grid-template-columns:minmax(0,5fr) minmax(0,6fr)}}.party__people{overscroll-behavior:contain;flex-direction:column;flex:0 auto;gap:8px;min-height:0;max-height:22rem;display:flex;overflow-y:auto}.party__people .friend-row{content-visibility:visible}@media (orientation:landscape) and (max-height:540px) and (min-width:35em){.party__cols .mantine-Card-root{padding:12px}.party__roster{max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 132px)}.party__people{max-height:none}.party__people .friend-row{padding:6px 10px}}@media (orientation:landscape) and (max-height:340px){.friend-duel__blurb,.friend-duel__aside,.party__mode-title{display:none}}.duel-arena{z-index:350;padding:calc(var(--edge-top) + var(--safe-top)) calc(.75rem + max(var(--safe-left), var(--safe-right))) calc(.5rem + var(--safe-bottom)) calc(.75rem + max(var(--safe-left), var(--safe-right)));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#f4efe6;background:#14101ce6;flex-direction:column;gap:.5rem;display:flex;position:fixed;inset:0;overflow:hidden}.duel-arena__hud{grid-template-columns:1fr auto 1fr;align-items:center;gap:.75rem;min-height:44px;display:grid}.duel-arena__side{align-items:center;gap:.5rem;min-width:0;display:flex}.duel-arena__side--them{justify-content:flex-end}.duel-arena__name{opacity:.85;white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;overflow:hidden}.duel-arena__name--team{-webkit-line-clamp:2;white-space:normal;-webkit-box-orient:vertical;margin-bottom:-1px;padding-bottom:1px;line-height:1.25;display:-webkit-box}.duel-arena__side--them .duel-arena__name--team{text-align:right}.duel-arena__person{max-width:100%;display:inline-block}.duel-arena__faces{flex-shrink:0;display:flex}.duel-arena__face{display:block}.duel-arena__faces--team{width:32px;height:40px;position:relative}.duel-arena__faces--team .duel-arena__face{border-radius:50%;display:block;position:absolute;box-shadow:0 0 0 2px #17131f}.duel-arena__faces--team .duel-arena__face:first-child{top:0;left:0}.duel-arena__faces--team .duel-arena__face+.duel-arena__face{bottom:0;right:0}.duel-arena__count{font-variant-numeric:tabular-nums;font-size:1.75rem;font-weight:700;line-height:1}.duel-arena__wins{gap:4px;display:inline-flex}.duel-arena__wins>span{opacity:.6;border:1.5px solid;border-radius:50%;width:10px;height:10px}.duel-arena__wins>span.is-won{opacity:1;background:#f2c14e;border-color:#f2c14e}.duel-arena__middle{justify-items:center;gap:2px;min-width:96px;display:grid}.duel-arena__round{opacity:.8;font-size:.75rem}.duel-arena__clock{font-variant-numeric:tabular-nums;font-size:1.25rem;font-weight:700;line-height:1}.duel-arena__bar{background:linear-gradient(to right, #f4efe6 var(--left,100%), #f4efe633 var(--left,100%));border-radius:2px;width:96px;height:3px}.duel-arena__stage{flex:1;min-height:0;display:flex;position:relative}.duel-arena__staff{color:#000;background:#fff;border-radius:16px;flex:1;min-height:0;padding:8px 1rem;overflow:hidden}.duel-arena__overlay{text-align:center;background:#14101cd1;border-radius:16px;place-content:center;justify-items:center;gap:.5rem;display:grid;position:absolute;inset:0}.duel-arena__countdown{font-variant-numeric:tabular-nums;font-size:4rem;font-weight:700;line-height:1}.duel-arena__foot{align-items:center;gap:.5rem;min-height:30px;display:flex}@media (max-height:400px){.duel-arena__foot .mantine-Text-root{display:none}}.review-kind-row{margin-bottom:var(--mantine-spacing-md);scrollbar-width:none;overscroll-behavior-x:contain;align-items:center;gap:8px;padding:4px 24px 4px 2px;display:flex;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 20px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 20px),#0000)}.review-kind-row::-webkit-scrollbar{display:none}.review-kind-row>*{flex:none}.review-kind-row__group{color:var(--sk-ink,#2d2b33);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;opacity:.7;margin-left:8px;font-size:11px;font-weight:700}.review-kind-row__group:first-child{margin-left:0}
