.session-check[data-v-bc8d98a8]{display:grid;min-height:100dvh;place-items:center;padding:24px;background:#f7f6f6;color:#091c32;font-family:ui-sans-serif,PingFang SC,Microsoft YaHei,sans-serif}:root{--programme-music: #b8d3f3;--programme-story: #d6b8eb;--programme-weather: #88d3df;--programme-hourly: #b8e59b;--programme-transition: #f0b56a;--programme-low-noise: #c6cbd1;--color-paper: oklch(97.35% .0261 90.1);--color-paper-2: oklch(93% .024 90);--color-paper-3: oklch(88% .022 90);--color-ink: oklch(17.07% .0143 2.14);--color-ink-2: oklch(32% .016 8);--color-muted: oklch(46% .016 20);--color-rule: oklch(72% .018 70);--color-rule-2: oklch(82% .018 80);--color-accent: oklch(56% .12 54);--color-accent-ink: oklch(17.07% .0143 2.14);--color-focus: oklch(46% .15 45);--color-success: oklch(48% .12 150);--color-error: oklch(51% .17 28);--color-warning: oklch(60% .14 75);--font-display: Michroma, "PingFang SC", "Microsoft YaHei", sans-serif;--font-body: Geist, "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono: "Geist Mono", "SFMono-Regular", Menlo, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-md: 1.25rem;--text-lg: 1.563rem;--text-xl: 1.953rem;--text-display: clamp(1.75rem, 3.5vw, 2.25rem);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--radius-none: 0;--rule: 1px;--dur-short: .16s;--dur-medium: .24s;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in: cubic-bezier(.7, 0, .84, 0);--ease-in-out: cubic-bezier(.65, 0, .35, 1)}:root[data-theme=dark]{--color-paper: oklch(7.67% .0315 29.23);--color-paper-2: oklch(12% .028 29);--color-paper-3: oklch(17% .025 29);--color-ink: oklch(97.35% .0261 90.1);--color-ink-2: oklch(82% .02 70);--color-muted: oklch(68% .018 60);--color-rule: oklch(34% .022 30);--color-rule-2: oklch(24% .022 30);--color-accent: oklch(72% .13 72);--color-accent-ink: oklch(13% .028 29);--color-focus: oklch(83% .14 75);--color-success: oklch(74% .12 150);--color-error: oklch(73% .16 28);--color-warning: oklch(79% .13 80)}:root{color:#edf2f7;background:#111820;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}.app-shell{display:grid;grid-template-columns:246px minmax(0,1fr);min-height:100vh}.sidebar{display:flex;flex-direction:column;gap:38px;padding:28px 18px 18px;background:#151d26;border-right:1px solid #293542}.brand{display:flex;align-items:center;gap:12px;padding:0 8px}.brand-mark{display:grid;place-items:center;width:37px;height:37px;border-radius:12px;background:#e7a758;color:#24180a;font-weight:800}.brand strong,.brand span{display:block}.brand strong{font-size:15px;letter-spacing:.06em}.brand div>span{margin-top:3px;color:#8f9dad;font-size:12px}.navigation{display:grid;gap:5px}.nav-link{display:grid;gap:3px;padding:11px 12px;border-radius:10px;color:#aebac7}.nav-link:hover{background:#202b36;color:#f3f7fb}.nav-link.router-link-active{background:#2a3b4c;color:#fff;box-shadow:inset 3px 0 #e7a758}.nav-link span{font-weight:650;font-size:14px}.nav-link small{font-size:11px;color:#8391a0}.sidebar-footer{display:flex;align-items:center;gap:8px;margin-top:auto;padding:10px 8px;color:#aebac7;font-size:12px}.status-dot{width:8px;height:8px;border-radius:999px;background:#778493}.status-authenticated{background:#5fc28d}.status-anonymous{background:#e7a758}.status-unknown{background:#778493}.main-content{min-width:0;padding:38px clamp(24px,5vw,72px);background:linear-gradient(135deg,#111820,#18232e)}.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;max-width:1160px;margin:0 auto 32px}.eyebrow{margin:0 0 8px;color:#e7a758;font-size:12px;font-weight:700;letter-spacing:.08em}h1,h2,h3,p{margin-top:0}h1{margin-bottom:0;font-size:clamp(27px,4vw,38px);letter-spacing:-.03em}h2{margin-bottom:12px;font-size:24px}h3{margin-bottom:12px;font-size:15px}.runtime-state{display:flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid #344250;border-radius:999px;color:#b8c3ce;font-size:12px;white-space:nowrap}.page-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:1160px;margin:0 auto}.panel{padding:24px;border:1px solid #31404e;border-radius:16px;background:#1a2530d1;box-shadow:0 18px 55px #0000001f}.panel p{margin-bottom:0;color:#b7c2cc;line-height:1.7}.hero-panel{grid-column:1 / -1;min-height:168px;background:linear-gradient(120deg,#364958e5,#21303be5)}.hero-panel h2{font-size:clamp(24px,3vw,31px)}.planned-list{display:grid;gap:10px;margin:0;padding:0;list-style:none}.planned-list li{position:relative;padding-left:18px;color:#cbd4dd;font-size:14px;line-height:1.5}.planned-list li:before{position:absolute;left:0;color:#e7a758;content:"•"}.placeholder-note{border-style:dashed}@media(max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{gap:16px;padding:16px;border-right:0;border-bottom:1px solid #293542}.navigation{grid-template-columns:repeat(2,minmax(0,1fr))}.nav-link small,.sidebar-footer{display:none}.main-content{padding:28px 18px}.topbar{display:block}.runtime-state{display:inline-flex;margin-top:18px}.page-grid{grid-template-columns:1fr}.hero-panel{grid-column:auto}}html,body{overflow-x:clip;background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body)}body{min-width:20rem}button,input,select,textarea{color:inherit;font-family:var(--font-body)}button,.action-link{min-height:2.75rem;white-space:nowrap}button,.action-link,.nav-link{border-radius:var(--radius-none)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.app-shell{grid-template-columns:14rem minmax(0,1fr);background:var(--color-paper)}.sidebar{gap:var(--space-6);padding:var(--space-5);color:var(--color-ink);background:var(--color-paper);border-inline-end:var(--rule) solid var(--color-rule)}.brand{padding:0}.brand-mark{width:2.25rem;height:2.25rem;border-radius:var(--radius-none);color:var(--color-paper);background:var(--color-ink);font-family:var(--font-body);font-weight:700}.brand strong{font-family:var(--font-display);font-size:var(--text-xs);font-weight:500;letter-spacing:.03em;line-height:1.45}.brand div>span,.sidebar-footer{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs)}.navigation{gap:0;border-block-start:var(--rule) solid var(--color-rule)}.navigation__group{margin:0;padding:var(--space-3) 0 var(--space-1);color:var(--color-muted);font-family:var(--font-mono);font-size:.625rem;letter-spacing:.08em}.navigation__group:not(:first-child){margin-block-start:var(--space-2);border-block-start:var(--rule) solid var(--color-rule)}.nav-link{padding:var(--space-3) 0;border-block-end:var(--rule) solid var(--color-rule);color:var(--color-muted);transition:color var(--dur-short) var(--ease-out),background-color var(--dur-short) var(--ease-out)}.nav-link span{font-family:var(--font-body);font-size:var(--text-sm);font-weight:600}.nav-link small{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs)}@media(hover:hover)and (pointer:fine){.nav-link:hover{color:var(--color-ink);background:var(--color-paper-2)}}.nav-link.router-link-active{color:var(--color-ink);background:var(--color-paper-2);box-shadow:inset 3px 0 var(--color-accent)}.sidebar-footer{border-block-start:var(--rule) solid var(--color-rule);padding:var(--space-3) 0 0}.sidebar-footer button{min-height:auto;padding:0;border:0;background:none;color:var(--color-ink)}.status-dot{border-radius:0;background:var(--color-muted)}.status-authenticated{background:var(--color-success)}.status-anonymous{background:var(--color-warning)}.status-unknown{background:var(--color-muted)}.main-content{position:relative;padding:clamp(var(--space-4),5vw,var(--space-7));background:var(--color-paper)}.main-content:before,.listen-page:before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.1;background-image:radial-gradient(var(--color-ink) .5px,transparent .5px);background-size:7px 7px}.main-content>*,.listen-page>*{position:relative;z-index:1}.topbar{align-items:center;max-width:90rem;margin-block-end:var(--space-6)}.eyebrow{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:400;letter-spacing:0}h1,h2,h3{color:var(--color-ink);font-style:normal}h1{font-family:var(--font-display);font-size:var(--text-display);font-weight:500;letter-spacing:0;overflow-wrap:anywhere}h2{font-size:var(--text-lg);font-weight:600}h3{font-size:var(--text-base)}.runtime-state{border-color:var(--color-rule);border-radius:var(--radius-none);color:var(--color-muted);font-family:var(--font-mono)}.panel,.timeline-shell,.music-library,.program-assets{max-width:90rem;margin:0 auto;padding:var(--space-5);border:var(--rule) solid var(--color-rule);border-radius:var(--radius-none);background:var(--color-paper);box-shadow:none}.panel p{color:var(--color-muted)}.panel input,.panel select,.panel textarea,.form-field input,.form-field select{min-height:2.75rem;padding:var(--space-2) var(--space-3);border:var(--rule) solid var(--color-rule);border-radius:var(--radius-none);outline:2px solid transparent;outline-offset:1px;background:var(--color-paper);color:var(--color-ink)}.panel textarea{min-height:8rem;resize:vertical}.panel input:focus-visible,.panel select:focus-visible,.panel textarea:focus-visible,.form-field input:focus-visible,.form-field select:focus-visible{outline-color:var(--color-focus)}.panel button,.button{padding:var(--space-2) var(--space-3);border:var(--rule) solid var(--color-ink);background:var(--color-ink);color:var(--color-paper);cursor:pointer;transition:transform .1s var(--ease-out),background-color var(--dur-short) var(--ease-out),color var(--dur-short) var(--ease-out)}@media(hover:hover)and (pointer:fine){.panel button:hover,.button:hover{transform:translateY(-1px);background:var(--color-accent);color:var(--color-accent-ink)}}.panel button:active,.button:active{transform:translateY(1px)}.panel button:disabled,.button:disabled{cursor:not-allowed;opacity:.5}.button--quiet{background:var(--color-paper);color:var(--color-ink);border-color:var(--color-rule)}.button--danger{border-color:var(--color-error);color:var(--color-error);background:var(--color-paper)}.notice,[role=alert]{margin-block:var(--space-3);padding:var(--space-3);border-inline-start:3px solid var(--color-warning);color:var(--color-ink);background:var(--color-paper-2)}.notice--error,[role=alert]{border-color:var(--color-error)}.page-intro{display:grid;gap:var(--space-3);margin-block-end:var(--space-5)}.page-intro p{max-width:70ch}.library-domain-links{display:inline-flex;width:fit-content;border:var(--rule) solid var(--color-ink)}.library-domain-links a{display:inline-flex;align-items:center;justify-content:center;min-width:6.5rem;min-height:2.5rem;padding:var(--space-2) var(--space-3);color:var(--color-ink);text-decoration:none;font-weight:600}.library-domain-links a+a{border-inline-start:var(--rule) solid var(--color-ink)}.library-domain-links a:hover,.library-domain-links a:focus-visible{background:var(--color-paper-2)}.library-domain-links a.is-active{background:var(--color-ink);color:var(--color-paper)}.meta-strip{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);padding-block:var(--space-3);border-block:var(--rule) solid var(--color-rule);color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.timeline-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-block:var(--space-4)}.timeline-actions button{background:var(--color-paper);color:var(--color-ink);border-color:var(--color-rule)}.timeline-grid{display:grid;gap:var(--space-5)}.timeline-day{min-width:0}.timeline-day__head{display:flex;justify-content:space-between;gap:var(--space-3);padding-block-end:var(--space-2);border-block-end:var(--rule) solid var(--color-ink)}.timeline-day__head p{margin:0;color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs)}.timeline-track{position:relative;display:grid;grid-template-columns:3.75rem minmax(0,1fr);min-height:72rem;margin-block-start:var(--space-3);background:repeating-linear-gradient(to bottom,transparent 0 calc(4.166% - 1px),var(--color-rule-2) calc(4.166% - 1px) 4.166%)}.time-scale{grid-column:1;display:grid;grid-template-rows:repeat(24,1fr);color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.time-scale span{transform:translateY(-.5em)}.timeline-canvas{position:relative;grid-column:2;min-width:0;border-inline-start:var(--rule) solid var(--color-rule)}.timeline-item{position:absolute;inset-inline:var(--space-1);display:grid;align-content:start;gap:var(--space-1);min-height:2px;overflow:hidden;padding:var(--space-2);border:var(--rule) solid var(--color-rule);background:var(--color-paper);color:var(--color-ink);text-align:start;cursor:pointer;font-size:var(--text-xs);transition:background-color var(--dur-short) var(--ease-out),transform .1s var(--ease-out)}.timeline-item:hover,.timeline-item:focus-visible{background:var(--color-paper-2)}.timeline-item:active{transform:translateY(1px)}.timeline-item--past{color:var(--color-muted);background:var(--color-paper-2);filter:grayscale(1)}.timeline-item--current{border-color:var(--color-accent)}.timeline-item--locked{background-image:repeating-linear-gradient(135deg,transparent 0 5px,var(--color-paper-2) 5px 6px)}.timeline-item--fixed{border-style:double}.timeline-item__kind,.timeline-item__time{font-family:var(--font-mono);font-size:.625rem}.timeline-item__kind{color:var(--color-muted)}.timeline-item__title{overflow-wrap:anywhere}.timeline-item__lock{color:var(--color-error)}.rotation-detail{position:absolute;inset-inline:var(--space-1);z-index:2;padding:var(--space-3);border:var(--rule) solid var(--color-ink);background:var(--color-paper)}.rotation-detail ul{margin:var(--space-2) 0 0;padding-inline-start:var(--space-4);font-family:var(--font-mono);font-size:var(--text-xs)}.timeline-dialog{width:min(34rem,calc(100% - 2rem));max-height:min(80dvh,40rem);border:var(--rule) solid var(--color-ink);border-radius:var(--radius-none);background:var(--color-paper);color:var(--color-ink);padding:var(--space-5)}.timeline-dialog::backdrop{background:color-mix(in oklch,var(--color-ink) 35%,transparent)}.dialog-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-block-start:var(--space-4)}.listen-page{min-height:100dvh;padding:clamp(var(--space-4),5vw,var(--space-7));background:var(--color-paper)}.listen-frame{width:min(100%,72rem);margin:0 auto}.listen-nav,.listen-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-3);padding-block:var(--space-3);border-block-end:var(--rule) solid var(--color-rule);font-family:var(--font-mono);font-size:var(--text-xs)}.listen-footer{border-block-start:var(--rule) solid var(--color-rule);border-block-end:0;margin-block-start:var(--space-6);color:var(--color-muted)}.listen-brand{color:var(--color-ink);font-family:var(--font-display)}.listen-hero{display:grid;gap:var(--space-5);padding-block:clamp(var(--space-6),8vw,6rem);border-block-end:var(--rule) solid var(--color-rule)}.station-state{display:inline-flex;align-items:center;gap:var(--space-2);width:fit-content;padding:var(--space-2);border:var(--rule) solid var(--color-rule);font-family:var(--font-mono);font-size:var(--text-sm)}.station-state:before{content:"";width:.625rem;height:.625rem;background:var(--color-muted)}.station-state--playing:before{background:var(--color-success)}.station-state--error:before{background:var(--color-error)}.listen-current{display:grid;gap:var(--space-2);max-width:65ch}.listen-current h1{margin:0}.listen-current p{margin:0;color:var(--color-muted)}.listen-controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.listen-controls .button{min-width:9rem}.listen-note{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs)}.listen-timeline{margin-block-start:var(--space-6)}.listen-timeline h2{margin-block-end:var(--space-4)}.public-program-list,.asset-list{display:grid;gap:0;margin:0;padding:0;list-style:none;border-block-start:var(--rule) solid var(--color-rule)}.public-program-list li,.asset-list li,.music-library article{display:grid;grid-template-columns:4rem minmax(0,1fr) auto;gap:var(--space-2);align-items:baseline;padding:var(--space-3) 0;border-block-end:var(--rule) solid var(--color-rule)}.public-program-list time,.public-program-list small,.asset-list span,.music-library article p{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.music-library form{display:grid;gap:var(--space-3);grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto auto;margin-block-end:var(--space-5)}.music-library form label,.music-library article label{display:grid;gap:var(--space-1);color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs)}.music-library article{grid-template-columns:minmax(0,1fr)}.music-library article h3,.music-library article p{margin:0}.music-library article>button{width:fit-content}.music-library input{min-height:2.75rem;padding:var(--space-2) var(--space-3);border:var(--rule) solid var(--color-rule);border-radius:var(--radius-none);outline:2px solid transparent;outline-offset:1px;background:var(--color-paper);color:var(--color-ink)}.music-library input:focus-visible{outline-color:var(--color-focus)}.music-library button,.program-assets button{min-height:2.75rem;padding:var(--space-2) var(--space-3);border:var(--rule) solid var(--color-ink);background:var(--color-ink);color:var(--color-paper);cursor:pointer;transition:transform .1s var(--ease-out),background-color var(--dur-short) var(--ease-out),color var(--dur-short) var(--ease-out)}.music-library .button--quiet{background:var(--color-paper);color:var(--color-ink);border-color:var(--color-rule)}@media(min-width:60rem){.timeline-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.timeline-track{min-height:90rem}}@media(max-width:59.99rem){.app-shell{grid-template-columns:1fr}.sidebar{padding:var(--space-3) var(--space-4);border-inline-end:0;border-block-end:var(--rule) solid var(--color-rule)}.navigation{grid-template-columns:repeat(2,minmax(0,1fr))}.nav-link{padding-inline:var(--space-2)}.nav-link small,.sidebar-footer{display:none}.main-content{padding:var(--space-4)}.topbar{display:grid;gap:var(--space-3)}.timeline-track{min-height:72rem}}@media(max-width:39.99rem){.music-library form{grid-template-columns:minmax(0,1fr)}.public-program-list li{grid-template-columns:3.5rem minmax(0,1fr)}.public-program-list small{grid-column:2}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.main-content:before,.listen-page:before{opacity:.06}}.app-shell{min-height:100dvh}.sidebar{position:sticky;top:0;height:100dvh;color:var(--color-paper);background:var(--color-ink);border-inline-end-color:color-mix(in oklch,var(--color-paper) 18%,transparent)}.sidebar .brand,.sidebar .brand strong,.sidebar .brand div>span,.sidebar-footer,.sidebar-footer button{color:var(--color-paper)}.sidebar .brand-mark{background:transparent;color:var(--color-paper);border:var(--rule) solid color-mix(in oklch,var(--color-paper) 54%,transparent)}.sidebar .navigation{border-block-start-color:color-mix(in oklch,var(--color-paper) 18%,transparent)}.sidebar .navigation__group,.sidebar .nav-link small{color:color-mix(in oklch,var(--color-paper) 58%,transparent)}.sidebar .navigation__group:not(:first-child),.sidebar .nav-link,.sidebar-footer{border-color:color-mix(in oklch,var(--color-paper) 18%,transparent)}.sidebar .nav-link{color:color-mix(in oklch,var(--color-paper) 76%,transparent);padding-inline:var(--space-2);transition:color var(--dur-short) var(--ease-out),background-color var(--dur-short) var(--ease-out),transform .1s var(--ease-out)}.sidebar .nav-link.router-link-active{color:var(--color-paper);background:color-mix(in oklch,var(--color-paper) 12%,transparent);box-shadow:inset 3px 0 var(--color-accent)}@media(hover:hover)and (pointer:fine){.sidebar .nav-link:hover{color:var(--color-paper);background:color-mix(in oklch,var(--color-paper) 8%,transparent);transform:translate(2px)}}.topbar-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:end;gap:var(--space-2)}.runtime-state{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:var(--rule) solid var(--color-rule);font-size:var(--text-xs)}.runtime-state[data-status=playing]{border-color:var(--color-success)}.runtime-state[data-status=error]{border-color:var(--color-error)}.theme-toggle,.menu-toggle{min-height:2.75rem;padding-inline:var(--space-3);border:var(--rule) solid var(--color-rule);background:var(--color-paper);color:var(--color-ink);font-family:var(--font-mono);font-size:var(--text-xs)}.menu-toggle{display:none;margin-inline-start:auto}.music-library .music-row__upload{grid-column:1 / -1}.music-library .music-row__actions>button{min-height:2.5rem}@media(max-width:59.99rem){.sidebar{position:relative;height:auto}.menu-toggle{display:inline-block}.sidebar .navigation{display:none}.sidebar--open .navigation{display:grid}.sidebar .sidebar-footer{display:flex}.music-library .music-row__actions{justify-content:start}}@media(prefers-reduced-motion:reduce){.sidebar .nav-link,.panel button,.button{transform:none!important;transition:none!important}}.app-frame.app-shell{--color-paper: #f7f6f6;--color-paper-2: #eceff1;--color-paper-3: #dfe4e8;--color-ink: #091c32;--color-ink-2: #24364a;--color-muted: #566274;--color-rule: #cbd2d9;--color-rule-2: #dce1e6;--color-accent: #ce2b29;--color-accent-ink: #ffffff;--color-focus: #075fb1;--color-success: #237348;--color-error: #b22222;--color-warning: #875b00;--font-display: ui-sans-serif, "PingFang SC", "Microsoft YaHei", sans-serif;--font-body: ui-sans-serif, "PingFang SC", "Microsoft YaHei", sans-serif;--font-sans: ui-sans-serif, "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono: ui-monospace, "SFMono-Regular", Menlo, monospace;grid-template-columns:14rem minmax(0,1fr);min-height:100dvh;background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body)}.app-shell *,.app-shell *:before,.app-shell *:after{box-sizing:border-box}.app-shell>.rail{position:sticky;top:0;display:flex;flex-direction:column;gap:1.25rem;height:100dvh;min-height:0;padding:1.25rem 1rem 1rem;overflow:hidden;background:var(--color-ink);color:var(--color-paper)}.app-shell .brand{display:flex;align-items:center;gap:.7rem;flex:0 0 auto;padding:0 0 1rem;border-bottom:1px solid rgb(247 246 246 / 24%)}.app-shell .brand-mark{display:grid;width:2.5rem;height:2.5rem;flex:0 0 2.5rem;place-items:center;border:0;background:transparent;color:var(--color-paper)}.app-shell .brand-mark svg,.app-shell .nav-icon{display:block;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}.app-shell .brand-mark svg{display:block;width:2.35rem;height:2.35rem;stroke:none}.app-shell .brand-copy{display:grid;gap:.15rem;min-width:0}.app-shell .brand-copy strong{color:#fff;font-size:1rem;font-weight:700;letter-spacing:.02em}.app-shell .brand-copy span{color:#f7f6f6b3;font-size:.72rem}.app-shell .menu-toggle{display:none;margin-inline-start:auto}.app-shell .navigation{display:grid;flex:1 1 auto;align-content:start;gap:.25rem;min-height:0;overflow-y:auto;border:0}.app-shell .navigation__group{margin:.85rem 0 .25rem;padding:0 .55rem;color:#f7f6f6a3;font-family:var(--font-mono);font-size:.66rem;letter-spacing:.08em}.app-shell .navigation__group:first-child{margin-top:.1rem}.app-shell .navigation__group:not(:first-child){border:0}.app-shell .nav-item{display:grid;grid-template-columns:1.4rem minmax(0,1fr);align-items:center;gap:.65rem;min-height:2.75rem;padding:.5rem .6rem;border:1px solid transparent;color:#f7f6f6d1;text-decoration:none;transition:color .15s ease-out,background-color .15s ease-out,border-color .15s ease-out}.app-shell .nav-icon{width:1.2rem;height:1.2rem;stroke-width:1.65}.app-shell .nav-label{font-size:.9rem;font-weight:600}.app-shell .nav-item:hover{background:#f7f6f614;color:#fff}.app-shell .nav-item:focus-visible{outline:2px solid #fff;outline-offset:2px}.app-shell .nav-item.router-link-active,.app-shell .nav-item--current{border-color:#f7f6f62e;background:#f7f6f61f;box-shadow:inset 3px 0 var(--color-accent);color:#fff}.app-shell .sidebar-footer{display:flex;flex:0 0 auto;align-items:center;flex-wrap:wrap;gap:.5rem .65rem;margin:0;padding:.8rem .2rem 0;border-top:1px solid rgb(247 246 246 / 24%);color:#f7f6f6c7;font-size:.75rem}.app-shell .sidebar-footer a,.app-shell .sidebar-footer button{color:#fff}.app-shell .sidebar-footer button{min-height:auto;padding:0;border:0;background:none;cursor:pointer;text-decoration:underline;text-underline-offset:.18em}.app-shell .status-dot{width:.5rem;height:.5rem;flex:0 0 .5rem;border-radius:50%;background:currentColor}.app-shell .status-authenticated{color:#79d69c}.app-shell .status-anonymous{color:#f3c969}.app-shell .status-unknown{color:#b4c0ce}.app-shell>.content{min-width:0;padding:clamp(1.1rem,2.6vw,2.5rem);background:var(--color-paper)}.app-shell .main-content:before{display:none}.app-shell .mast{display:flex;align-items:center;justify-content:space-between;gap:1.25rem;width:min(100%,100rem);margin:0 auto 1.25rem;padding:0 0 1rem;border-bottom:1px solid var(--color-rule)}.app-shell .mast-copy{display:grid;gap:.2rem}.app-shell .mast h1{margin:0;color:var(--color-ink);font-family:var(--font-display);font-size:clamp(1.45rem,2.2vw,2rem);font-weight:700;letter-spacing:0;line-height:1.2}.app-shell .mast-copy p{margin:0;color:var(--color-muted);font-size:.82rem}.app-shell .topbar-actions{display:flex;align-items:center;gap:.6rem}.app-shell .runtime-state{display:inline-flex;align-items:center;gap:.55rem;min-height:2.5rem;padding:.45rem .7rem;border:1px solid var(--color-rule);background:#fff;color:var(--color-ink);font-family:var(--font-body);font-size:.8rem;font-weight:650;white-space:nowrap}.app-shell .runtime-state .status-dot{color:var(--color-muted)}.app-shell .runtime-state[data-status=playing]{border-color:var(--color-accent)}.app-shell .runtime-state[data-status=playing] .status-dot{color:var(--color-accent)}.app-shell .runtime-state[data-status=error]{border-color:var(--color-error);color:var(--color-error)}.app-shell .runtime-state[data-status=error] .status-dot{color:var(--color-error)}.app-shell .runtime-state[data-status=starting] .status-dot{color:var(--color-warning)}.app-shell button,.app-shell input,.app-shell select,.app-shell textarea{font:inherit}.app-shell button{border-radius:0}.app-shell button:focus-visible,.app-shell a:focus-visible,.app-shell input:focus-visible,.app-shell select:focus-visible,.app-shell textarea:focus-visible,.app-shell summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.app-shell .notice,.app-shell [role=alert]{border:1px solid var(--color-rule);border-radius:0}.app-shell .notice--error,.app-shell [role=alert]{border-color:var(--color-error)}.app-shell .notice--success{border-color:var(--color-success)}.app-shell ::selection{background:var(--color-ink);color:#fff}.app-shell *{scrollbar-color:#7d8997 #e7eaed;scrollbar-width:thin}@media(max-width:59.99rem){.app-frame.app-shell{grid-template-columns:1fr;align-content:start}.app-shell>.rail{position:relative;height:auto;min-height:0;gap:.75rem;overflow:visible;padding:.8rem 1rem}.app-shell .brand{padding:0;border:0}.app-shell .brand-mark{width:2.1rem;height:2.1rem;flex-basis:2.1rem}.app-shell .brand-mark svg{width:1.45rem;height:1.45rem}.app-shell .brand-copy strong{font-size:.9rem}.app-shell .menu-toggle{display:inline-flex;align-items:center;justify-content:center;min-height:2.4rem;padding:.4rem .65rem;border:1px solid rgb(247 246 246 / 48%);background:transparent;color:#fff}.app-shell .navigation{display:none;grid-template-columns:repeat(3,minmax(0,1fr));gap:.25rem}.app-shell .sidebar--open .navigation{display:grid}.app-shell .navigation__group{grid-column:1 / -1;margin:.3rem 0 0}.app-shell .nav-item{min-height:2.45rem}.app-shell .nav-label{font-size:.82rem}.app-shell .sidebar-footer{display:none}.app-shell .sidebar--open .sidebar-footer{display:flex}.app-shell>.content{padding:1rem}.app-shell .mast{margin-bottom:1rem;padding-bottom:.8rem}}@media(max-width:36rem){.app-shell .navigation{grid-template-columns:repeat(2,minmax(0,1fr))}.app-shell .mast{align-items:flex-start}.app-shell .runtime-state{min-height:2.25rem;padding:.35rem .5rem;font-size:.72rem}.app-shell>.content{padding:.8rem}}@media(prefers-reduced-motion:reduce){.app-shell *,.app-shell *:before,.app-shell *:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
