:root,.theme-light{--sheen-accent:#c6e69f1f;--focus-ring-soft:#2f6f1f2e;--focus-ring:#2f6f1f;--glow-accent:#212d1c1c;--card-ink-soft:#7b838b;--card-ink:#242428;--ink-deep:#334058;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--app-canvas:#fbfcf9;--page-bg:var(--app-canvas);--bg-page:#f2f2f7;--bg-page-cool:#e9ebee;--bg-page-blue:#f4f7fb;--bg-page-warm:#f6f6f8;--bg-page-warm-rgb:246 246 248;--bg-page-deep:#f4f6fa;--bg-page-schedule:#c9d5e7;--bg-subtle:#f8f8fa;--bg-cell:#f7f9fc;--bg-surface:#fff;--bg-surface-raised:#fffffff5;--bg-surface-glass:#ffffffdb;--bg-surface-soft:#ffffffc7;--bg-glass:#ffffff9e;--bg-glass-faint:#ffffff6b;--bg-glass-bright:#ffffffeb;--bg-surface-overlay:#f2f2f7db;--bg-nav:#ffffffb8;--overlay-toast:#1e221ee0;--control-bg:#e5e5ea;--control-pressed-bg:#d1d1d6;--control-track:#78788029;--control-track-soft:#7878801f;--control-icon-muted:#8e8e93;--text-primary:#1c1c1e;--text-strong:#101722;--text-secondary:#3a3a3c;--text-tertiary:#34343a;--text-slate:#3e4852;--text-label:#48484a;--text-muted:#636366;--text-faint:#8e8e93;--text-placeholder:#a2a2a7;--text-placeholder-soft:#c7c7cc;--text-cool:#8b95a8;--text-on-accent:#fff;--line:#e8ebe7;--line-strong:#d1d1d6;--line-faint:#3c3c431a;--line-soft:#3c3c431f;--line-medium:#3c3c4329;--line-strong-alpha:#3c3c432e;--line-heavy:#3c3c4347;--edge-highlight:#fffffff0;--edge-highlight-soft:#ffffffb8;--edge-highlight-faint:#ffffff6b;--edge-highlight-strong:#fffffff5;--shadow-sm:0 2px 6px #1c1c1e0f;--shadow-md:0 8px 24px #1c1c1e1a;--shadow-lg:0 16px 36px #1c1c1e1f;--shadow-card:0 10px 30px #1d281917;--shadow-ambient:0 5px 16px #23272d0e;--shadow-popover:0 8px 24px #0000002e;--shadow-color-soft:#1c1c1e0f;--shadow-color:#1c1c1e24;--shadow-color-strong:#0000003d;--scrim:#0003;--scrim-strong:#00000057;--hairline:#00000014;--accent:#72b629;--blue:#08f;--blue-strong:#08f;--blue-link:#007aff;--blue-schedule:#0878e8;--blue-autorun:#0a84ff;--blue-deep:#167fdb;--blue-bright:#1687e8;--blue-ink:#1b2538;--blue-ink-deep:#172033;--blue-slate:#4f6f8f;--blue-slate-soft:#526078;--blue-slate-deep:#4d5972;--blue-soft:#dceeff;--blue-chip:#edf5ff;--blue-count:#edf0f5;--blue-muted:#7b869b;--blue-muted-soft:#7b869a;--blue-slate-muted:#697384;--blue-row:#e9edf4;--blue-tint:#007aff1a;--blue-ring:#007aff7a;--blue-tint-weak:#0088ff17;--blue-tint-strong:#0088ff26;--danger:#ff383c;--danger-strong:#b42318;--danger-deep:#a6232b;--danger-soft:#ff383c17;--danger-tint:#ff383c14;--warning:#ff9f43;--warning-deep:#d86b20;--warning-soft:#fff5df;--success:#34c759;--success-strong:#278b47;--success-deep:#177a3f;--success-tint:#34a8531a;--chart-blue:#1677ff;--chart-amber:#f59e0b;--chart-rose:#e05260;--chart-slate:#64748b;--chart-violet:#8b5cf6;--chart-green:#34a853;--chart-blue-soft:#1677ff17;--chart-grid:#5b698714;--chart-grid-strong:#5b69871a;--chart-grid-soft:#5c698521;--chart-axis:#20304e0a;--chart-line:#5b69871c;--chart-line-soft:#1f304e1a;--chart-line-faint:#1f304e0b;--chart-bar:#1720331a;--metric-danger:#d64552;--metric-rose-soft:#f0445217;--map-ink:#090a0c;--map-tint:#2f3c4c1a;--map-tint-soft:#262a3012;--map-tint-faint:#262a3011;--map-tint-weak:#262a300e;--map-tint-mist:#262a300a;--map-border:#dee2e8e6;--map-border-soft:#e5e8ede6;--map-surface:#f5f7fad1;--schedule-ink:#101722;--schedule-ink-soft:#26343d;--schedule-muted:#26343d94;--ink-deepest:#0f151f}.theme-dark,:root[data-theme=dark]{--sheen-accent:#8ecf3f14;--focus-ring-soft:#a5dd5f3d;--focus-ring:#a5dd5f;--glow-accent:#00000080;--card-ink-soft:#aeaeb2;--card-ink:#f2f2f7;--ink-deep:#d1d1d6;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--app-canvas:#000;--page-bg:var(--app-canvas);--bg-page:#1c1c1e;--bg-page-cool:#1c1c1e;--bg-page-blue:#1c1c1e;--bg-page-warm:#1c1c1e;--bg-page-warm-rgb:28 28 30;--bg-page-deep:#1c1c1e;--bg-page-schedule:#0f141c;--bg-subtle:#2c2c2e;--bg-cell:#232325;--bg-surface:#1c1c1e;--bg-surface-raised:#2c2c2e;--bg-surface-glass:#1c1c1edb;--bg-surface-soft:#2c2c2ec7;--bg-glass:#1c1c1e9e;--bg-glass-faint:#1c1c1e6b;--bg-glass-bright:#2c2c2ee6;--bg-surface-overlay:#1c1c1ee0;--bg-nav:#1c1c1eb8;--overlay-toast:#3a3a3cf0;--control-bg:#2c2c2e;--control-pressed-bg:#3a3a3c;--control-track:#78788052;--control-track-soft:#7878803d;--control-icon-muted:#8e8e93;--text-primary:#f2f2f7;--text-strong:#f2f2f7;--text-secondary:#ebebf5;--text-tertiary:#e5e5ea;--text-slate:#d1d1d6;--text-label:#d1d1d6;--text-muted:#aeaeb2;--text-faint:#98989d;--text-placeholder:#8e8e93;--text-placeholder-soft:#636366;--text-cool:#9aa3b3;--text-on-accent:#fff;--line:#2c2c2e;--line-strong:#3a3a3c;--line-faint:#ffffff14;--line-soft:#ffffff1f;--line-medium:#ffffff29;--line-strong-alpha:#fff3;--line-heavy:#ffffff47;--edge-highlight:#ffffff1f;--edge-highlight-soft:#ffffff14;--edge-highlight-faint:#ffffff0f;--edge-highlight-strong:#ffffff29;--shadow-sm:0 2px 6px #0006;--shadow-md:0 8px 24px #00000080;--shadow-lg:0 16px 36px #00000094;--shadow-card:0 10px 30px #00000080;--shadow-ambient:0 5px 16px #00000073;--shadow-popover:0 10px 28px #0009;--shadow-color-soft:#0000006b;--shadow-color:#00000085;--shadow-color-strong:#0000009e;--scrim:#0000008c;--scrim-strong:#000000ad;--hairline:#ffffff24;--accent:#8ecf3f;--blue:#0a84ff;--blue-strong:#409cff;--blue-link:#0a84ff;--blue-schedule:#409cff;--blue-autorun:#409cff;--blue-deep:#409cff;--blue-bright:#409cff;--blue-ink:#cfe2ff;--blue-ink-deep:#cfe2ff;--blue-slate:#9fb6d1;--blue-slate-soft:#a8b8cc;--blue-slate-deep:#a8b8cc;--blue-soft:#10304d;--blue-chip:#12283d;--blue-count:#232a33;--blue-muted:#9aa8bd;--blue-muted-soft:#9aa8bd;--blue-slate-muted:#9aa3b3;--blue-row:#1b2733;--blue-tint:#0a84ff2e;--blue-ring:#0a84ff99;--blue-tint-weak:#409cff29;--blue-tint-strong:#409cff3d;--danger:#ff453a;--danger-strong:#ff6961;--danger-deep:#ff6961;--danger-soft:#ff453a2e;--danger-tint:#ff453a24;--warning:#ff9f0a;--warning-deep:#ffb340;--warning-soft:#3a2a10;--success:#30d158;--success-strong:#5fdd80;--success-deep:#5fdd80;--success-tint:#30d1582e;--chart-blue:#409cff;--chart-amber:#ffb340;--chart-rose:#ff7b85;--chart-slate:#9aa8bd;--chart-violet:#b39dff;--chart-green:#5fdd80;--chart-blue-soft:#409cff2e;--chart-grid:#ffffff14;--chart-grid-strong:#ffffff1a;--chart-grid-soft:#ffffff1f;--chart-axis:#ffffff0f;--chart-line:#ffffff1f;--chart-line-soft:#ffffff1a;--chart-line-faint:#ffffff0f;--chart-bar:#ffffff1f;--metric-danger:#ff7b85;--metric-rose-soft:#ff7b8529;--map-ink:#f2f2f7;--map-tint:#ffffff1a;--map-tint-soft:#ffffff14;--map-tint-faint:#ffffff12;--map-tint-weak:#ffffff0f;--map-tint-mist:#ffffff0d;--map-border:#ffffff24;--map-border-soft:#ffffff1f;--map-surface:#2c2c2ed1;--schedule-ink:#f2f2f7;--schedule-ink-soft:#d1d1d6;--schedule-muted:#d1d1d6b8;--ink-deepest:#f2f2f7}@media (prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=dark]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--app-canvas:#000;--page-bg:var(--app-canvas);--bg-page:#1c1c1e;--bg-page-cool:#1c1c1e;--bg-page-blue:#1c1c1e;--bg-page-warm:#1c1c1e;--bg-page-warm-rgb:28 28 30;--bg-page-deep:#1c1c1e;--bg-page-schedule:#0f141c;--bg-subtle:#2c2c2e;--bg-cell:#232325;--bg-surface:#1c1c1e;--bg-surface-raised:#2c2c2e;--bg-surface-glass:#1c1c1edb;--bg-surface-soft:#2c2c2ec7;--bg-glass:#1c1c1e9e;--bg-glass-faint:#1c1c1e6b;--bg-glass-bright:#2c2c2ee6;--bg-surface-overlay:#1c1c1ee0;--bg-nav:#1c1c1eb8;--overlay-toast:#3a3a3cf0;--control-bg:#2c2c2e;--control-pressed-bg:#3a3a3c;--control-track:#78788052;--control-track-soft:#7878803d;--control-icon-muted:#8e8e93;--text-primary:#f2f2f7;--text-strong:#f2f2f7;--text-secondary:#ebebf5;--text-tertiary:#e5e5ea;--text-slate:#d1d1d6;--text-label:#d1d1d6;--text-muted:#aeaeb2;--text-faint:#98989d;--text-placeholder:#8e8e93;--text-placeholder-soft:#636366;--text-cool:#9aa3b3;--text-on-accent:#fff;--line:#2c2c2e;--line-strong:#3a3a3c;--line-faint:#ffffff14;--line-soft:#ffffff1f;--line-medium:#ffffff29;--line-strong-alpha:#fff3;--line-heavy:#ffffff47;--edge-highlight:#ffffff1f;--edge-highlight-soft:#ffffff14;--edge-highlight-faint:#ffffff0f;--edge-highlight-strong:#ffffff29;--shadow-sm:0 2px 6px #0006;--shadow-md:0 8px 24px #00000080;--shadow-lg:0 16px 36px #00000094;--shadow-card:0 10px 30px #00000080;--shadow-ambient:0 5px 16px #00000073;--shadow-popover:0 10px 28px #0009;--shadow-color-soft:#0000006b;--shadow-color:#00000085;--shadow-color-strong:#0000009e;--scrim:#0000008c;--scrim-strong:#000000ad;--hairline:#ffffff24;--accent:#8ecf3f;--blue:#0a84ff;--blue-strong:#409cff;--blue-link:#0a84ff;--blue-schedule:#409cff;--blue-autorun:#409cff;--blue-deep:#409cff;--blue-bright:#409cff;--blue-ink:#cfe2ff;--blue-ink-deep:#cfe2ff;--blue-slate:#9fb6d1;--blue-slate-soft:#a8b8cc;--blue-slate-deep:#a8b8cc;--blue-soft:#10304d;--blue-chip:#12283d;--blue-count:#232a33;--blue-muted:#9aa8bd;--blue-muted-soft:#9aa8bd;--blue-slate-muted:#9aa3b3;--blue-row:#1b2733;--blue-tint:#0a84ff2e;--blue-ring:#0a84ff99;--blue-tint-weak:#409cff29;--blue-tint-strong:#409cff3d;--danger:#ff453a;--danger-strong:#ff6961;--danger-deep:#ff6961;--danger-soft:#ff453a2e;--danger-tint:#ff453a24;--warning:#ff9f0a;--warning-deep:#ffb340;--warning-soft:#3a2a10;--success:#30d158;--success-strong:#5fdd80;--success-deep:#5fdd80;--success-tint:#30d1582e;--chart-blue:#409cff;--chart-amber:#ffb340;--chart-rose:#ff7b85;--chart-slate:#9aa8bd;--chart-violet:#b39dff;--chart-green:#5fdd80;--chart-blue-soft:#409cff2e;--chart-grid:#ffffff14;--chart-grid-strong:#ffffff1a;--chart-grid-soft:#ffffff1f;--chart-axis:#ffffff0f;--chart-line:#ffffff1f;--chart-line-soft:#ffffff1a;--chart-line-faint:#ffffff0f;--chart-bar:#ffffff1f;--metric-danger:#ff7b85;--metric-rose-soft:#ff7b8529;--map-ink:#f2f2f7;--map-tint:#ffffff1a;--map-tint-soft:#ffffff14;--map-tint-faint:#ffffff12;--map-tint-weak:#ffffff0f;--map-tint-mist:#ffffff0d;--map-border:#ffffff24;--map-border-soft:#ffffff1f;--map-surface:#2c2c2ed1;--schedule-ink:#f2f2f7;--schedule-ink-soft:#d1d1d6;--schedule-muted:#d1d1d6b8;--sheen-accent:#8ecf3f14;--focus-ring-soft:#a5dd5f3d;--focus-ring:#a5dd5f;--glow-accent:#00000080;--card-ink-soft:#aeaeb2;--card-ink:#f2f2f7;--ink-deep:#d1d1d6;--ink-deepest:#f2f2f7}}html,body{background:var(--page-bg)}.ios-pwa-status-strip{background-color:var(--page-bg)}.theme-dark .surface-card,:root[data-theme=dark] .surface-card{border-color:var(--line-soft)}.app-select{min-width:0;display:block}.app-select__trigger{width:100%;min-width:0;color:inherit;-webkit-tap-highlight-color:transparent;background:0 0;border:0;justify-content:space-between;align-items:center;gap:8px;padding:0;display:flex}.app-select__trigger:disabled{opacity:.55}.app-select__trigger:focus-visible{outline:3px solid var(--blue-ring);outline-offset:2px}.app-select__value{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.app-select__chevron{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;flex:none;width:12px;height:12px}.app-select-popover{z-index:200;color:var(--text-primary);background:var(--bg-surface-raised);border:.5px solid var(--line-strong-alpha);box-shadow:0 14px 38px #1017222e, 0 1px 0 var(--bg-surface-glass) inset;-webkit-backdrop-filter:blur(24px)saturate(150%);backdrop-filter:blur(24px)saturate(150%);transform-origin:top;border-radius:15px;padding:5px;position:fixed;overflow:hidden}.app-select-popover__list{overscroll-behavior:contain;scrollbar-width:none;max-height:min(350px,100dvh - 24px);overflow-y:auto}.app-select-popover__list::-webkit-scrollbar{display:none}.app-select-popover__list>button{width:100%;min-height:44px;color:var(--card-ink);text-align:left;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:11px;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;font-size:15px;font-weight:500;line-height:1.3;display:flex}.app-select-popover__list>button>span{overflow-wrap:anywhere;min-width:0}.app-select-popover__list>button+button{box-shadow:0 -.5px var(--line-soft)}.app-select-popover__list>button:active{background:var(--control-track-soft);transform:none}.app-select-popover__list>button:disabled{opacity:.4}.app-select-popover__list>button.is-selected{color:var(--blue-strong);background:var(--blue-tint-weak);box-shadow:none;font-weight:600}.app-select-popover__list>button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;flex:none;width:18px;height:18px}.app-select-popover-enter-active{transition:opacity .15s}.app-select-popover-leave-active{transition:opacity .11s}.app-select-popover-enter-active,.app-select-popover-leave-active{transition-property:opacity,transform}.app-select-popover-enter-from,.app-select-popover-leave-to{opacity:0;transform:translateY(-4px)scale(.985)}@media (prefers-reduced-motion:reduce){.app-select-popover-enter-active,.app-select-popover-leave-active{transition-duration:1ms}}@media (prefers-reduced-transparency:reduce){.app-select-popover{background:var(--bg-subtle);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-contrast:more){.app-select-popover{border-color:var(--line-soft)}.app-select-popover__list>button+button{box-shadow:0 -1px var(--line-heavy)}}.app-date-time-picker{min-width:0}.app-date-time-picker__trigger{width:100%;min-width:0;min-height:52px;color:var(--library-label,var(--text-primary));font:inherit;text-align:left;background:var(--bg-page);border:1px solid #0000;border-radius:14px;justify-content:space-between;align-items:center;gap:10px;padding:0 14px;font-size:16px;display:flex}.app-date-time-picker__trigger>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.app-date-time-picker__trigger>svg{fill:none;width:16px;height:16px;stroke:var(--text-muted);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;flex:none}.app-date-time-picker__trigger:active:not(:disabled){background:var(--control-bg)}.app-date-time-picker__trigger:focus-visible{border-color:var(--blue-strong);box-shadow:0 0 0 3px var(--blue-tint-strong);outline:0}.app-date-time-picker__trigger:disabled{opacity:.52}.app-date-time-picker__backdrop{z-index:260;padding:max(14px, var(--safe-area-inset-top,env(safe-area-inset-top,0px))) 14px max(14px, var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));background:var(--line-faint);-webkit-backdrop-filter:blur(4px)saturate(110%);backdrop-filter:blur(4px)saturate(110%);place-items:center;display:grid;position:fixed;inset:0}.app-date-time-picker__dialog{width:min(100%,390px);max-height:100%;color:var(--map-ink);background:var(--bg-surface-raised);border:.5px solid var(--edge-highlight);box-shadow:0 34px 90px var(--shadow-color), 0 4px 20px var(--shadow-color-soft), inset 0 1px 0 var(--edge-highlight-strong);border-radius:34px;outline:0;padding:22px 18px 18px;overflow:hidden auto}.app-date-time-picker__calendar-header{justify-content:space-between;align-items:center;gap:12px;min-height:48px;display:flex}.app-date-time-picker__month-label{align-items:center;gap:8px;min-width:0;display:flex}.app-date-time-picker__month-label strong{text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.02em;font-size:21px;font-weight:700;line-height:1.2;overflow:hidden}.app-date-time-picker__month-label>svg{fill:none;width:10px;height:16px;stroke:var(--blue-link);stroke-linecap:round;stroke-linejoin:round;stroke-width:3px}.app-date-time-picker__month-actions{flex:none;align-items:center;gap:6px;display:flex}.app-date-time-picker__month-actions button{width:44px;height:44px;color:var(--blue-link);background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:grid}.app-date-time-picker__month-actions button:active:not(:disabled){background:var(--blue-tint);transform:scale(.94)}.app-date-time-picker__month-actions button:disabled{opacity:.24}.app-date-time-picker__month-actions svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:3px;width:15px;height:24px}.app-date-time-picker__weekdays,.app-date-time-picker__calendar{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.app-date-time-picker__weekdays{margin-top:10px}.app-date-time-picker__weekdays span{color:var(--text-faint);text-align:center;font-size:12px;font-weight:600;line-height:28px}.app-date-time-picker__calendar{gap:3px 0}.app-date-time-picker__calendar button{min-width:0;min-height:43px;color:var(--map-ink);background:0 0;border:0;border-radius:50%;place-items:center;padding:0;font-size:19px;font-weight:480;display:grid;position:relative}.app-date-time-picker__calendar button:before{z-index:-1;content:"";border-radius:50%;width:40px;height:40px;position:absolute}.app-date-time-picker__calendar button.is-today:not(.is-selected):before{box-shadow:inset 0 0 0 1.5px var(--blue-ring)}.app-date-time-picker__calendar button.is-selected{z-index:1;color:var(--text-on-accent);font-weight:700}.app-date-time-picker__calendar button.is-selected:before{background:var(--blue-link);box-shadow:0 5px 14px var(--blue-tint-strong)}.app-date-time-picker__calendar button.is-outside{visibility:hidden}.app-date-time-picker__calendar button:disabled:not(.is-outside){color:var(--text-placeholder-soft)}.app-date-time-picker__time{grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);align-items:center;height:288px;margin:-2px 12px 0;display:grid;position:relative}.app-date-time-picker__wheel-selection{z-index:0;pointer-events:none;background:var(--blue-tint);border-radius:24px;height:48px;position:absolute;top:120px;left:0;right:0}.app-date-time-picker__wheel{z-index:1;overscroll-behavior:contain;scroll-snap-type:y mandatory;scrollbar-width:none;height:288px;padding:120px 0;overflow:hidden auto;-webkit-mask-image:linear-gradient(#0000 0,#0003 20%,#000 40% 60%,#0003 80%,#0000 100%);mask-image:linear-gradient(#0000 0,#0003 20%,#000 40% 60%,#0003 80%,#0000 100%)}.app-date-time-picker__wheel::-webkit-scrollbar{display:none}.app-date-time-picker__wheel button{scroll-snap-align:center;width:100%;height:48px;color:var(--card-ink-soft);font-variant-numeric:tabular-nums;background:0 0;border:0;place-items:center;padding:0;font-size:24px;font-weight:430;display:grid}.app-date-time-picker__wheel button.is-selected{color:var(--map-ink);font-size:30px;font-weight:520}.app-date-time-picker__time-separator{z-index:2;color:var(--map-ink);text-align:center;font-size:29px;font-weight:600}.app-date-time-picker__footer{justify-content:space-between;align-items:center;gap:16px;min-height:64px;margin-top:18px;display:flex}.app-date-time-picker__footer button{min-height:54px;font:inherit;transition:transform .14s var(--ease-out), background-color .14s ease;border:0;font-size:17px;font-weight:650}.app-date-time-picker__footer button:active{transform:scale(.96)}.app-date-time-picker__restore{min-width:116px;color:var(--text-primary);background:var(--bg-glass-bright);box-shadow:inset 0 0 0 .5px var(--line-heavy), 0 2px 8px var(--shadow-color-soft);border-radius:28px;padding:0 24px}.app-date-time-picker__confirm{width:58px;height:58px;color:var(--text-on-accent);background:var(--blue-link);box-shadow:0 8px 20px var(--blue-tint-strong), inset 0 0 0 1px var(--edge-highlight-faint);border-radius:50%;place-items:center;padding:0;display:grid}.app-date-time-picker__confirm svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.6px;width:31px;height:31px}.app-date-time-picker-dialog-enter-active,.app-date-time-picker-dialog-leave-active{transition:opacity .18s}.app-date-time-picker-dialog-enter-active .app-date-time-picker__dialog,.app-date-time-picker-dialog-leave-active .app-date-time-picker__dialog{transition:opacity .18s,transform .28s cubic-bezier(.32,.72,0,1)}.app-date-time-picker-dialog-enter-from,.app-date-time-picker-dialog-leave-to,.app-date-time-picker-dialog-enter-from .app-date-time-picker__dialog,.app-date-time-picker-dialog-leave-to .app-date-time-picker__dialog{opacity:0}.app-date-time-picker-dialog-enter-from .app-date-time-picker__dialog,.app-date-time-picker-dialog-leave-to .app-date-time-picker__dialog{transform:translateY(12px)scale(.96)}@media (height<=620px){.app-date-time-picker__dialog{padding-top:14px;padding-bottom:14px}.app-date-time-picker__calendar button{min-height:38px;font-size:17px}.app-date-time-picker__calendar button:before{width:36px;height:36px}.app-date-time-picker__time{height:240px}.app-date-time-picker__wheel{height:240px;padding-top:96px;padding-bottom:96px}.app-date-time-picker__wheel-selection{top:96px}.app-date-time-picker__footer{margin-top:10px}}@media (prefers-reduced-transparency:reduce){.app-date-time-picker__backdrop{background:var(--line-soft);-webkit-backdrop-filter:none;backdrop-filter:none}.app-date-time-picker__dialog{background:var(--bg-subtle)}}@media (prefers-reduced-motion:reduce){.app-date-time-picker-dialog-enter-active,.app-date-time-picker-dialog-leave-active,.app-date-time-picker-dialog-enter-active .app-date-time-picker__dialog,.app-date-time-picker-dialog-leave-active .app-date-time-picker__dialog,.app-date-time-picker__footer button{transition:none}.app-date-time-picker__footer button:active,.app-date-time-picker__month-actions button:active:not(:disabled){transform:none}}@media (prefers-contrast:more){.app-date-time-picker__dialog{border:1px solid var(--text-primary)}.app-date-time-picker__trigger{border-color:var(--line-heavy)}}.app-shell.app-shell--schedule{height:100dvh;min-height:0;color:var(--schedule-ink);background:var(--bg-page-schedule);overflow:hidden}.app-shell--schedule .app-shell__content{height:100%;min-height:0;padding-bottom:0;overflow:hidden}.schedule-page{--schedule-gutter:22px;height:100dvh;min-height:0;padding-top:calc(4px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));flex-direction:column;display:flex}.schedule-page.page-padding{padding-right:calc(var(--schedule-gutter) + env(safe-area-inset-right,0px));padding-left:calc(var(--schedule-gutter) + env(safe-area-inset-left,0px))}.schedule-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.schedule-header>div:first-child{flex:1;min-width:0}.schedule-date-line{align-items:center;gap:7px;min-width:0;display:flex}.schedule-header h1{text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.5px;margin:0;font-size:clamp(23px,5.5vw,26px);font-weight:500;line-height:1;overflow:hidden}.schedule-current-week{color:var(--schedule-muted);white-space:nowrap;background:var(--edge-highlight-faint);box-shadow:inset 0 0 0 .5px var(--edge-highlight-faint);border-radius:8px;flex:none;padding:4px 7px;font-size:11px;font-weight:650;line-height:1}.schedule-current-week.is-browsing{color:var(--blue-deep);background:var(--blue-soft)}.schedule-header p{flex-wrap:wrap;gap:12px;min-width:0;margin:7px 0 0;font-size:17px;line-height:1.1;display:flex}.schedule-header p strong{font-weight:500}.schedule-week-select{align-items:center;min-width:0;max-width:100%;min-height:44px;margin:-13px 0;display:inline-flex}.schedule-week-select .app-select__trigger{max-width:100%;min-height:44px;color:inherit;appearance:none;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:8px;padding:0 18px 0 0;font-weight:500;line-height:1.1}.schedule-week-select .app-select__trigger:active,.schedule-week-select .app-select__trigger:disabled{opacity:.62}.schedule-week-select .app-select__chevron{stroke-width:1.5px;width:12px;height:12px}.schedule-header__actions{flex:none;align-items:center;gap:4px;display:flex}.schedule-header__actions button{width:44px;height:44px;color:var(--ink-deepest);background:0 0;border:0;border-radius:12px;place-items:center;padding:0;font-size:31px;line-height:1;transition:transform .14s cubic-bezier(.23,1,.32,1);display:grid;position:relative}.schedule-header__actions button:active{transform:scale(.95)}.schedule-header__actions button:disabled{cursor:wait;opacity:.42}.schedule-header__actions svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:26px;height:26px}.schedule-header__actions .round-action,.schedule-header__actions .more-button{letter-spacing:1px;border-radius:50%;font-size:13px}.schedule-header__actions .round-action:before,.schedule-header__actions .more-button:before{pointer-events:none;content:"";border:1.7px solid;border-radius:50%;width:29px;height:29px;position:absolute}.schedule-header__actions .round-action svg{width:20px;height:20px}.schedule-header__actions .round-action.is-syncing svg{animation:.8s linear infinite schedule-sync-spin}.schedule-header__actions .more-button svg{fill:currentColor;stroke:none;width:18px;height:6px;overflow:visible}.schedule-more{display:flex;position:relative}.schedule-more-menu{z-index:20;background:var(--bg-surface-glass);width:min(238px,100vw - 44px);box-shadow:0 18px 44px var(--chart-line-soft), 0 2px 8px var(--chart-line-faint);transform-origin:calc(100% - 22px) 0;-webkit-backdrop-filter:blur(22px)saturate(150%);backdrop-filter:blur(22px)saturate(150%);border:0;border-radius:18px;padding:6px;position:absolute;top:calc(100% + 3px);right:0}.schedule-header__actions .schedule-semester-option{width:100%;height:auto;min-height:58px;color:inherit;font:inherit;text-align:left;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:13px;justify-content:space-between;align-items:center;padding:9px 36px 9px 12px;display:flex;position:relative}.schedule-header__actions .schedule-semester-option:active{background:var(--bg-glass-faint);transform:none}.schedule-semester-option span{flex-direction:column;gap:3px;min-width:0;display:flex}.schedule-semester-option strong{color:var(--schedule-ink);font-size:15px;font-weight:600;line-height:1.2}.schedule-semester-option small{color:var(--schedule-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1.25;overflow:hidden}.schedule-header__actions .schedule-semester-option svg{pointer-events:none;stroke-width:1.6px;width:12px;height:12px;transition:transform .18s var(--ease-out);position:absolute;right:13px}.schedule-header__actions .schedule-semester-option svg.is-open{transform:rotate(90deg)}.schedule-header__actions .schedule-calendar-export-option{border-top:.5px solid var(--map-tint);border-radius:0 0 13px 13px;margin-top:3px}.schedule-display-setting{border-top:.5px solid var(--map-tint);margin-top:3px;padding:11px 12px 9px}.schedule-display-setting__heading,.schedule-display-setting__labels{justify-content:space-between;align-items:center;display:flex}.schedule-display-setting__heading{margin-bottom:7px}.schedule-display-setting__heading strong{color:var(--schedule-ink);font-size:15px;font-weight:600}.schedule-display-setting__heading output{color:var(--blue-schedule);font-variant-numeric:tabular-nums;font-size:12px;font-weight:650}.schedule-display-setting input[type=range]{width:100%;height:24px;accent-color:var(--blue-schedule);margin:0;display:block}.schedule-display-setting__labels{color:var(--schedule-muted);margin-top:-2px;font-size:10px}.schedule-header__actions .schedule-calendar-export-option svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px;width:19px;height:19px;top:50%;transform:translateY(-50%)}.schedule-semester-list{border-top:1px solid var(--map-tint);overscroll-behavior:contain;scrollbar-width:none;gap:2px;max-height:min(52dvh,330px);padding:4px;display:grid;overflow-y:auto}.schedule-semester-list::-webkit-scrollbar{display:none}.schedule-header__actions .schedule-semester-list__item{width:100%;height:auto;min-height:42px;color:var(--schedule-muted);text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:10px;justify-content:space-between;align-items:center;padding:9px 10px;font-size:13px;font-weight:500;line-height:1.25;display:flex}.schedule-header__actions .schedule-semester-list__item>span{overflow-wrap:anywhere;min-width:0}.schedule-header__actions .schedule-semester-list__item:active{background:var(--bg-glass-faint);transform:none}.schedule-header__actions .schedule-semester-list__item.is-selected{color:var(--blue-strong);background:var(--blue-tint-weak);font-weight:600}.schedule-header__actions .schedule-semester-list__item svg{width:16px;height:16px;color:var(--blue-strong);stroke-width:2px;flex:none;position:static}.schedule-more-menu-enter-active,.schedule-more-menu-leave-active{transition:opacity .15s ease, transform .18s var(--ease-out)}.schedule-more-menu-enter-from,.schedule-more-menu-leave-to{opacity:0;transform:translateY(-4px)scale(.94)}.week-strip{margin-top:12px;margin-right:calc(-1 * var(--schedule-gutter) - env(safe-area-inset-right,0px));margin-bottom:8px;margin-left:calc(-1 * var(--schedule-gutter) - env(safe-area-inset-left,0px));grid-template-columns:40px repeat(7,minmax(0,1fr));display:grid}.week-strip__month,.week-strip button{min-width:0;color:var(--card-ink-soft);background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:0;display:flex}.week-strip__month{color:var(--ink-deepest);font-size:13px;font-weight:600}.week-strip__month strong,.week-strip__month span{line-height:1}.week-strip button span{font-size:15px;line-height:1}.week-strip button strong{font-size:14px;font-weight:400;line-height:1}.week-strip button{min-height:44px}.week-strip button.is-active{color:var(--schedule-ink);font-weight:600}.week-strip button.is-active strong{font-weight:600}.schedule-board{min-height:0;margin-right:calc(-1 * var(--schedule-gutter) - env(safe-area-inset-right,0px));margin-left:calc(-1 * var(--schedule-gutter) - env(safe-area-inset-left,0px));overscroll-behavior:contain;scrollbar-width:none;flex:1;position:relative;overflow:hidden auto}.schedule-board::-webkit-scrollbar{display:none}.schedule-board:after{height:max(64px, calc(52px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px))));content:"";display:block}.schedule-semester-loading{z-index:70;background:var(--scrim-strong);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);place-items:center;padding:20px;display:grid;position:fixed;inset:0}.schedule-semester-loading-enter-active,.schedule-semester-loading-leave-active{transition:opacity .16s ease-out}.schedule-semester-loading-enter-active .schedule-semester-loading__content,.schedule-semester-loading-leave-active .schedule-semester-loading__content{transition:transform .22s cubic-bezier(.23,1,.32,1)}.schedule-semester-loading-enter-from,.schedule-semester-loading-leave-to{opacity:0}.schedule-semester-loading-enter-from .schedule-semester-loading__content,.schedule-semester-loading-leave-to .schedule-semester-loading__content{transform:scale(.92)}.schedule-state{z-index:4;color:var(--schedule-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:28px;display:flex;position:absolute;inset:0}.schedule-state strong{color:var(--schedule-ink);font-size:17px}.schedule-state>p{max-width:280px;margin:8px 0 0;font-size:13px;line-height:1.5}.schedule-state button{min-height:36px;color:var(--schedule-ink);background:var(--bg-glass-faint);box-shadow:0 5px 16px var(--chart-grid);border:0;border-radius:18px;margin-top:16px;padding:0 17px;font-weight:600}.schedule-state--error p{color:var(--danger-deep)}.schedule-grid{height:calc(100% * var(--schedule-section-count,12) / 11);grid-template-rows:repeat(11,minmax(0,1fr));grid-template-columns:40px repeat(7,minmax(0,1fr));min-width:0;display:grid}.schedule-grid__time{z-index:1;color:var(--schedule-ink);background:0 0;flex-direction:column;grid-column:1;justify-content:center;align-items:center;display:flex}.schedule-grid__time strong{margin-bottom:3px;font-size:17px;font-weight:500;line-height:1}.schedule-grid__time span{font-size:11px;line-height:1.3}.schedule-grid__cell{min-width:0}.course-block{z-index:2;width:auto;min-width:0;color:var(--schedule-ink-soft);font:inherit;text-align:center;border:2px solid var(--bg-glass);box-shadow:0 0 0 1px var(--edge-highlight-faint);-webkit-tap-highlight-color:transparent;border-radius:7px;grid-template-rows:minmax(0,1fr) auto;justify-content:center;align-items:center;margin:3px 1px;padding:4px 2px;transition:transform .12s ease-out,filter .12s ease-out;display:grid;position:relative;overflow:hidden}.course-block:active{filter:brightness(.96);transform:scale(.97)}.course-block__name,.course-block__time,.course-block__room{max-width:100%;font-size:clamp(11px,3vw,14px);font-weight:600;line-height:1.25}.course-block__time{font-variant-numeric:tabular-nums;white-space:nowrap;justify-content:center;align-self:end;align-items:center;gap:1px;font-size:clamp(9px,2.4vw,11px);line-height:1.2;display:flex}.course-block.has-experiment-time{grid-template-rows:minmax(0,1fr) auto auto}.course-block.has-experiment-time .course-block__name{-webkit-line-clamp:2}.course-block.has-experiment-time .course-block__room{font-size:clamp(10px,2.7vw,12px);line-height:1.15}.course-block__time i{font-style:normal}.course-block__name{overflow-wrap:anywhere;-webkit-line-clamp:4;-webkit-box-orient:vertical;align-self:center;min-height:0;display:-webkit-box;overflow:hidden}.course-block__room{overflow-wrap:anywhere;align-self:end;display:block}.course-block.is-single-section .course-block__name{-webkit-line-clamp:2;font-size:clamp(10px,2.7vw,12px);line-height:1.12}.course-block.is-single-section .course-block__room{text-overflow:ellipsis;white-space:nowrap;font-size:clamp(9px,2.5vw,11px);line-height:1.1;overflow:hidden}.course-block.is-single-section.has-experiment-time{grid-template-rows:minmax(0,1fr) auto}.course-block.is-single-section .course-block__time{display:none}.course-block.has-status{padding-bottom:18px}.course-block--haze-blue,.course-detail-card__swatch--haze-blue,.course-color-setting__preview--haze-blue,.course-color-picker__swatch--haze-blue{background:#7896bc}.course-block--sage,.course-detail-card__swatch--sage,.course-color-setting__preview--sage,.course-color-picker__swatch--sage{background:#819c72}.course-block--terracotta,.course-detail-card__swatch--terracotta,.course-color-setting__preview--terracotta,.course-color-picker__swatch--terracotta{background:#c17a5e}.course-block--mustard,.course-detail-card__swatch--mustard,.course-color-setting__preview--mustard,.course-color-picker__swatch--mustard{background:#c0a04a}.course-block--dusty-purple,.course-detail-card__swatch--dusty-purple,.course-color-setting__preview--dusty-purple,.course-color-picker__swatch--dusty-purple{background:#9a82b4}.course-block--blue-gray,.course-detail-card__swatch--blue-gray,.course-color-setting__preview--blue-gray,.course-color-picker__swatch--blue-gray{background:var(--success-strong)}.course-block--rose-brown,.course-detail-card__swatch--rose-brown,.course-color-setting__preview--rose-brown,.course-color-picker__swatch--rose-brown{background:#b97688}.course-block--caramel,.course-detail-card__swatch--caramel,.course-color-setting__preview--caramel,.course-color-picker__swatch--caramel{background:#ab7e5d}.course-block--seafoam,.course-detail-card__swatch--seafoam,.course-color-setting__preview--seafoam,.course-color-picker__swatch--seafoam{background:var(--success-strong)}.course-block--slate-blue,.course-detail-card__swatch--slate-blue,.course-color-setting__preview--slate-blue,.course-color-picker__swatch--slate-blue{background:#6d79a8}.course-block--muted-coral,.course-detail-card__swatch--muted-coral,.course-color-setting__preview--muted-coral,.course-color-picker__swatch--muted-coral{background:#bd6862}.course-block--olive,.course-detail-card__swatch--olive,.course-color-setting__preview--olive,.course-color-picker__swatch--olive{background:#8d984f}.course-block--lavender-gray,.course-detail-card__swatch--lavender-gray,.course-color-setting__preview--lavender-gray,.course-color-picker__swatch--lavender-gray{background:#8a718f}.course-block--sand,.course-detail-card__swatch--sand,.course-color-setting__preview--sand,.course-color-picker__swatch--sand{background:#a28d70}.course-block--pine,.course-detail-card__swatch--pine,.course-color-setting__preview--pine,.course-color-picker__swatch--pine{background:#6e8870}.course-block.is-muted{z-index:1;opacity:var(--schedule-muted-opacity,.48)}.course-block__status{color:var(--schedule-ink-soft);text-overflow:ellipsis;white-space:nowrap;background:var(--bg-glass-faint);border-radius:4px;font-size:8px;font-weight:600;line-height:12px;position:absolute;bottom:2px;left:3px;right:3px;overflow:hidden}.course-block__status--conflict{color:var(--danger-deep);background:var(--bg-surface-soft)}.course-detail-backdrop{z-index:110;padding-bottom:calc(12px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));background:var(--chart-line);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.course-detail-card{width:min(100% - 24px,456px);max-height:calc(100dvh - 48px - var(--safe-area-inset-top,env(safe-area-inset-top,0px)));color:var(--ink-deepest);background:var(--bg-surface-raised);box-shadow:0 28px 70px var(--chart-line), 0 3px 14px var(--chart-line-faint);-webkit-backdrop-filter:blur(24px)saturate(155%);backdrop-filter:blur(24px)saturate(155%);border-radius:26px;overflow:hidden auto}.course-detail-card:focus{outline:0}.course-detail-card__header{grid-template-columns:14px minmax(0,1fr) 34px;align-items:start;gap:11px;padding:20px 18px 17px;display:grid}.course-detail-card__swatch{width:11px;height:42px;box-shadow:inset 0 0 0 .5px var(--edge-highlight-faint);border-radius:6px;margin-top:2px}.course-detail-card__header p{color:var(--schedule-muted);align-items:center;gap:7px;margin:0 0 5px;font-size:12px;font-weight:600;line-height:1.2;display:flex}.course-detail-card__header p span{color:var(--schedule-muted);background:var(--control-track-soft);border-radius:8px;padding:3px 7px}.course-detail-card__header h2{letter-spacing:-.02em;margin:0;font-size:21px;font-weight:700;line-height:1.25}.course-detail-card__header button{width:34px;height:34px;color:var(--schedule-muted);background:var(--control-track-soft);border:0;border-radius:50%;place-items:center;padding:0;transition:transform .1s ease-out,background-color .1s ease-out;display:grid}.course-detail-card__header button:active{background:var(--control-track);transform:scale(.94)}.course-detail-card__header button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:1.8px;width:16px;height:16px}.course-detail-card__details{background:var(--bg-glass);box-shadow:inset 0 0 0 .5px var(--edge-highlight-soft);border-radius:18px;margin:0 12px 12px;overflow:hidden}.course-detail-card__details div{grid-template-columns:max-content minmax(0,1fr);align-items:center;gap:10px;min-height:48px;padding:11px 14px;display:grid;position:relative}.course-detail-card__details div+div:before{content:"";background:var(--line-medium);height:.5px;position:absolute;top:0;left:14px;right:14px}.course-detail-card__details dt{color:var(--schedule-muted);white-space:nowrap;font-size:13px;font-weight:500}.course-detail-card__details dd{overflow-wrap:anywhere;white-space:pre-line;color:var(--schedule-ink-soft);text-align:right;margin:0;font-size:14px;font-weight:600;line-height:1.4}.course-color-settings{background:var(--bg-glass);box-shadow:inset 0 0 0 .5px var(--edge-highlight-soft);border-radius:18px;margin:0 12px 12px;overflow:hidden}.course-color-setting+.course-color-setting{border-top:.5px solid var(--line-medium)}.course-color-setting__trigger{width:100%;min-height:54px;color:var(--schedule-ink-soft);text-align:left;background:0 0;border:0;grid-template-columns:minmax(0,1fr) 24px 16px;align-items:center;gap:10px;padding:8px 14px;display:grid}.course-color-setting__trigger>span{gap:1px;min-width:0;display:grid}.course-color-setting__trigger strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:650;overflow:hidden}.course-color-setting__trigger small{color:var(--schedule-muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:500;overflow:hidden}.course-color-setting__preview{border:2px solid var(--bg-surface-soft);width:22px;height:22px;box-shadow:0 0 0 .5px var(--map-tint);border-radius:50%;display:block}.course-color-setting__trigger>svg{fill:none;width:16px;height:16px;stroke:var(--map-tint);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;transition:transform .18s}.course-color-setting__trigger[aria-expanded=true]>svg{transform:rotate(180deg)}.course-color-setting__trigger:active:not(:disabled){background:var(--control-track-soft)}.course-color-setting__trigger:disabled{opacity:.56}.course-color-picker{grid-template-columns:repeat(5,minmax(44px,1fr));gap:2px;padding:2px 10px 12px;display:grid}.course-color-picker__option{background:0 0;border:0;border-radius:12px;place-items:center;min-width:0;height:44px;padding:0;display:grid}.course-color-picker__option>span{border:2px solid var(--bg-surface-soft);width:28px;height:28px;box-shadow:0 0 0 .5px var(--map-tint-weak);border-radius:50%;transition:transform .1s ease-out,box-shadow .14s;display:block}.course-color-picker__option:active:not(:disabled)>span{transform:scale(.9)}.course-color-picker__option.is-selected>span{box-shadow:0 0 0 2px var(--edge-highlight), 0 0 0 4px var(--blue-schedule);transform:scale(.92)}.course-color-picker__option:disabled{opacity:.58}.course-color-picker__automatic{min-height:40px;color:var(--schedule-muted);background:var(--control-track-soft);border:0;border-radius:12px;grid-column:1/-1;justify-content:center;align-items:center;gap:6px;margin-top:4px;font-size:13px;font-weight:600;display:flex}.course-color-picker__automatic svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;opacity:0;width:15px;height:15px}.course-color-picker__automatic.is-selected{color:var(--blue-schedule);background:var(--blue-tint-weak)}.course-color-picker__automatic.is-selected svg{opacity:1}.course-color-settings__error{color:var(--danger-deep);margin:-2px 14px 12px;font-size:12px;font-weight:600}.course-detail-card__actions{background:var(--bg-glass);box-shadow:inset 0 0 0 .5px var(--edge-highlight-soft);border-radius:18px;margin:0 12px 12px;padding:8px}.course-detail-card__actions>p{color:var(--schedule-ink-soft);margin:3px 6px 10px;font-size:14px;font-weight:600;line-height:1.4}.course-detail-card__actions>p small{color:var(--schedule-muted);margin-top:2px;font-size:12px;font-weight:500;display:block}.course-detail-card__actions>div{grid-template-columns:1fr 1fr;gap:8px;display:grid}.course-detail-card__actions button{min-height:44px;color:var(--schedule-ink-soft);background:var(--control-track-soft);border:0;border-radius:13px;padding:0 14px;font-size:14px;font-weight:600;transition:transform .1s ease-out,background-color .1s ease-out}.course-detail-card__actions button:active{transform:scale(.98)}.course-detail-card__actions button:disabled{opacity:.5}.course-detail-card__actions button.is-destructive,.course-detail-card__delete{color:var(--danger-deep);background:var(--danger-soft)}.course-detail-card__delete{width:100%}.course-detail-card__edit{width:100%;color:var(--blue-schedule);background:var(--blue-tint-weak)}.course-detail-card__edit+.course-detail-card__edit,.course-detail-card__edit+.course-detail-card__delete,.course-detail-card__delete+.course-detail-card__delete{margin-top:6px}.course-detail-card__actions>p.course-detail-card__remove-error{color:var(--danger-deep);margin-top:8px;margin-bottom:2px;font-size:12px;font-weight:600}.course-detail-sheet-enter-active,.course-detail-sheet-leave-active{transition:opacity .18s}.course-detail-sheet-enter-active .course-detail-card,.course-detail-sheet-leave-active .course-detail-card{transition:opacity .18s,transform .32s cubic-bezier(.32,.72,0,1)}.course-detail-sheet-enter-from,.course-detail-sheet-leave-to,.course-detail-sheet-enter-from .course-detail-card,.course-detail-sheet-leave-to .course-detail-card{opacity:0}.course-detail-sheet-enter-from .course-detail-card,.course-detail-sheet-leave-to .course-detail-card{transform:translateY(18px)scale(.98)}.add-course-sheet-backdrop{z-index:100;background:var(--chart-line);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.add-course-sheet{width:min(100%,480px);max-height:calc(100dvh - var(--safe-area-inset-top,env(safe-area-inset-top,0px)) - 12px);color:var(--schedule-ink);background:var(--bg-surface-raised);box-shadow:0 -20px 60px var(--chart-line-soft), 0 -2px 12px var(--chart-axis);border-radius:24px 24px 0 0;flex-direction:column;display:flex;overflow:hidden}.add-course-sheet__grabber{background:var(--line-heavy);border-radius:3px;flex:none;align-self:center;width:36px;height:5px;margin-top:7px}.add-course-sheet__header{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;min-height:52px;padding:0 6px;display:grid}.add-course-sheet__header h2{text-align:center;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;font-size:17px;font-weight:600;overflow:hidden}.add-course-sheet__header button{min-width:44px;max-width:100%;min-height:44px;color:var(--schedule-muted);text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;border-radius:12px;padding:0 10px;overflow:hidden}.add-course-sheet__header button:first-child{justify-self:start}.add-course-sheet__header button:last-child{justify-self:end}.add-course-sheet__header button.is-primary{color:var(--blue-schedule);font-weight:600}.add-course-sheet__header button:active,.add-course-form__repeat button:active{opacity:.58}.add-course-sheet__header button:disabled{opacity:.42}.add-course-form{padding:4px 16px calc(18px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));overscroll-behavior:contain;overflow-y:auto}.add-course-form__group{background:var(--bg-glass);box-shadow:0 7px 22px var(--shadow-color-soft), inset 0 0 0 .5px var(--bg-nav);border-radius:16px;margin-bottom:14px;overflow:hidden}.add-course-form__group>label{grid-template-columns:minmax(min-content,.34fr) minmax(0,1fr);align-items:center;min-height:52px;padding:4px 12px;display:grid;position:relative}.add-course-form__group>label+label:before{content:"";background:var(--line-medium);height:.5px;position:absolute;top:0;left:12px;right:0}.add-course-form label>span{overflow-wrap:anywhere;min-width:0;font-size:15px;font-weight:500;line-height:1.3}.add-course-form input,.add-course-form .app-select__trigger{width:100%;min-width:0;min-height:44px;color:var(--schedule-ink);text-align:right;box-shadow:none;background:0 0;border:0;border-radius:10px;padding:0}.add-course-form input{outline:0}.add-course-form input::placeholder{color:var(--line-heavy)}.add-course-form input:focus{box-shadow:none;outline:0}.add-course-form .app-select__chevron{color:var(--line-heavy)}.add-course-form__split-row{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.add-course-form__split-row+.add-course-form__split-row,.add-course-form__group>.add-course-form__repeat{position:relative}.add-course-form__split-row+.add-course-form__split-row:before,.add-course-form__group>.add-course-form__repeat:before{content:"";background:var(--line-medium);height:.5px;position:absolute;top:0;left:12px;right:12px}.add-course-form__split-row label{flex-direction:column;gap:2px;min-width:0;min-height:70px;padding:10px 12px 6px;display:flex}.add-course-form__split-row label+label{box-shadow:inset .5px 0 var(--line-medium)}.add-course-form__split-row .app-select__trigger{text-align:left}.add-course-form__repeat{grid-template-columns:repeat(3,1fr);gap:2px;margin:0 10px;padding:9px 0 10px;display:grid}.add-course-form__repeat button{min-width:0;min-height:34px;color:var(--schedule-muted);overflow-wrap:anywhere;background:var(--control-track-soft);border:0;border-radius:9px;padding:0 10px;font-size:13px;font-weight:600;line-height:1.25}.add-course-form__repeat button.is-active{color:var(--schedule-ink);background:var(--edge-highlight);box-shadow:0 2px 7px var(--map-tint), 0 0 0 .5px var(--line-faint)}.add-course-form__error,.add-course-form__note{margin:-3px 4px 0;font-size:12px;line-height:1.4}.add-course-form__error{color:var(--danger-deep);margin-bottom:8px}.add-course-form__note{color:var(--schedule-muted);text-align:center}.calendar-export-sheet__body{padding:4px 16px calc(18px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));gap:14px;display:grid}.calendar-export-sheet__summary{background:var(--bg-glass);min-height:92px;box-shadow:0 7px 22px var(--shadow-color-soft), inset 0 0 0 .5px var(--bg-nav);border-radius:18px;align-items:center;gap:14px;padding:16px;display:flex}.calendar-export-sheet__icon{width:48px;height:48px;color:var(--blue-schedule);background:var(--blue-tint-weak);border-radius:15px;flex:none;place-items:center;display:grid}.calendar-export-sheet__icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.65px;width:27px;height:27px}.calendar-export-sheet__summary>div{min-width:0}.calendar-export-sheet__summary strong{text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:650;line-height:1.3;display:block;overflow:hidden}.calendar-export-sheet__summary p{color:var(--schedule-muted);margin:5px 0 0;font-size:13px;line-height:1.4}.calendar-export-sheet__setting{background:var(--bg-glass);min-height:56px;box-shadow:inset 0 0 0 .5px var(--bg-nav);border-radius:16px;grid-template-columns:minmax(min-content,.42fr) minmax(0,1fr);align-items:center;padding:4px 12px;display:grid}.calendar-export-sheet__setting>span{font-size:15px;font-weight:500}.calendar-export-sheet__setting .app-select__trigger{text-align:right;min-height:44px;box-shadow:none;background:0 0;border:0;padding:0}.calendar-export-sheet__note,.calendar-export-sheet__error{text-align:center;margin:-3px 4px 0;font-size:12px;line-height:1.45}.calendar-export-sheet__note{color:var(--schedule-muted)}.calendar-export-sheet__error{color:var(--danger-deep)}.calendar-export-sheet__submit{width:100%;min-height:50px;color:var(--text-on-accent);background:var(--blue-schedule);box-shadow:0 7px 18px var(--blue-tint-strong);border:0;border-radius:15px;justify-content:center;align-items:center;gap:8px;font-size:16px;font-weight:650;display:flex}.calendar-export-sheet__submit:active{opacity:.72}.calendar-export-sheet__submit:disabled{opacity:.58}.calendar-export-sheet__spinner{border:2px solid var(--edge-highlight-faint);border-top-color:var(--edge-highlight);border-radius:50%;width:17px;height:17px;animation:.7s linear infinite schedule-spin}.add-course-sheet-enter-active,.add-course-sheet-leave-active{transition:opacity .2s}.add-course-sheet-enter-active .add-course-sheet,.add-course-sheet-leave-active .add-course-sheet{transition:transform .36s cubic-bezier(.32,.72,0,1)}.add-course-sheet-enter-from,.add-course-sheet-leave-to{opacity:0}.add-course-sheet-enter-from .add-course-sheet,.add-course-sheet-leave-to .add-course-sheet{transform:translateY(100%)}@keyframes schedule-sync-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.schedule-semester-loading *,.schedule-semester-loading-enter-active,.schedule-semester-loading-leave-active,.schedule-semester-loading-enter-active .schedule-semester-loading__content,.schedule-semester-loading-leave-active .schedule-semester-loading__content{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.schedule-header__actions .round-action.is-syncing svg,.calendar-export-sheet__spinner{animation-duration:1.5s}.schedule-more-menu-enter-active,.schedule-more-menu-leave-active{transition:opacity .12s}.schedule-more-menu-enter-from,.schedule-more-menu-leave-to{transform:none}.add-course-sheet-enter-active,.add-course-sheet-leave-active,.course-detail-sheet-enter-active,.course-detail-sheet-leave-active{transition:opacity .12s}.add-course-sheet-enter-active .add-course-sheet,.add-course-sheet-leave-active .add-course-sheet,.course-detail-sheet-enter-active .course-detail-card,.course-detail-sheet-leave-active .course-detail-card{transition:none}.add-course-sheet-enter-from .add-course-sheet,.add-course-sheet-leave-to .add-course-sheet,.course-detail-sheet-enter-from .course-detail-card,.course-detail-sheet-leave-to .course-detail-card{transform:none}}@media (prefers-reduced-transparency:reduce){.schedule-more-menu{background:var(--blue-soft);-webkit-backdrop-filter:none;backdrop-filter:none}.add-course-sheet-backdrop,.course-detail-backdrop{background:var(--chart-grid-soft);-webkit-backdrop-filter:none;backdrop-filter:none}.add-course-sheet,.course-detail-card{background:var(--blue-soft);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (width<=480px){.course-block__time{flex-direction:column;gap:0;font-size:9px;line-height:1}.course-block__time i{display:none}}@media (width<=380px){.schedule-page{--schedule-gutter:16px}.schedule-header__actions{gap:0}.course-block{margin:2px 1px}}@media (height<=740px){.schedule-page{padding-top:var(--safe-area-inset-top,env(safe-area-inset-top,0px))}.schedule-header p{margin-top:4px;font-size:15px}.week-strip{margin-top:7px;margin-bottom:5px}.course-block strong,.course-block span{font-size:9px}}.app-shell.app-shell--tools{background:var(--bg-page)}.tools-page{padding-top:calc(8px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)))}.tools-announcement-card{width:100%;min-width:0;min-height:82px;color:var(--text-strong);text-align:left;background:var(--bg-glass);border:.5px solid var(--bg-surface-glass);box-shadow:0 .5px 0 var(--hairline), 0 8px 24px var(--map-tint-weak);-webkit-backdrop-filter:blur(22px)saturate(140%);backdrop-filter:blur(22px)saturate(140%);transition:transform .16s var(--ease-out), background-color .16s ease;border-radius:22px;grid-template-columns:42px minmax(0,1fr) 16px;align-items:center;gap:12px;padding:12px 14px;display:grid}.tools-announcement-card:active{background:var(--bg-surface-overlay);transform:scale(.985)}.tools-announcement-card.is-viewed{min-height:58px;box-shadow:0 .5px 0 var(--hairline);border-radius:18px;grid-template-columns:34px minmax(0,1fr) 16px;gap:10px;padding:9px 14px}.tools-announcement-card.is-viewed .tools-announcement-card__icon{width:34px;height:34px;box-shadow:none;border-radius:10px}.tools-announcement-card.is-viewed .tools-announcement-card__icon svg{width:20px;height:20px}.tools-announcement-card__icon{width:42px;height:42px;color:var(--text-on-accent);background:var(--blue-bright);box-shadow:0 5px 14px var(--blue-tint-strong);border-radius:13px;place-items:center;display:grid}.tools-announcement-card__icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.65px;width:25px;height:25px}.tools-announcement-card__copy{gap:1px;min-width:0;display:grid}.tools-announcement-card__copy small{color:var(--text-faint);letter-spacing:.04em;font-size:11px;font-weight:600;line-height:1.25}.tools-announcement-card__copy strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:15px;font-weight:650;line-height:1.35;overflow:hidden}.tools-announcement-card__copy>span{min-width:0;color:var(--card-ink-soft);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.35;display:-webkit-box;overflow:hidden}.tools-announcement-card__chevron{color:var(--text-placeholder);font-size:28px;font-weight:300;line-height:1}.tool-search{background:var(--bg-glass-faint);border:.5px solid var(--bg-surface-soft);height:52px;box-shadow:0 .5px 0 var(--hairline), 0 8px 24px var(--map-tint-weak);-webkit-backdrop-filter:blur(22px)saturate(140%);backdrop-filter:blur(22px)saturate(140%);border-radius:28px;align-items:center;margin-top:12px;padding:0 18px;display:flex}.tool-search>span{border:1.7px solid var(--text-faint);border-radius:50%;width:18px;height:18px;margin-right:14px;position:relative}.tool-search>span:after{content:"";background:var(--text-faint);border-radius:2px;width:7px;height:2px;position:absolute;bottom:-4px;right:-6px;transform:rotate(45deg)}.tool-search input{min-width:0;color:var(--text-strong);background:0 0;border:0;outline:0;flex:1;font-size:16px}.tool-search input::placeholder{color:var(--text-placeholder)}.tool-search:focus-within{border-color:var(--focus-ring);box-shadow:0 0 0 3px var(--focus-ring-soft), 0 8px 24px var(--map-tint-weak)}.tools-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(10px,3vw,12px);margin-top:20px;display:grid}.tools-grid button{width:100%;min-width:0;min-height:clamp(112px,31vw,128px);color:var(--card-ink);background:var(--bg-glass-faint);border:.5px solid var(--bg-surface-soft);box-shadow:0 .5px 0 var(--hairline), 0 12px 30px var(--map-tint-faint);-webkit-backdrop-filter:blur(22px)saturate(140%);backdrop-filter:blur(22px)saturate(140%);border-radius:clamp(20px,5.2vw,22px);flex-direction:column;justify-content:center;align-items:center;gap:clamp(6px,2vw,9px);padding:clamp(12px,3.7vw,16px) 10px clamp(11px,3.2vw,14px);transition:transform .16s,background-color .16s;display:flex}.tools-grid button:not(:disabled):active{background:var(--map-surface);transform:scale(.985)}.tools-grid img{object-fit:contain;width:clamp(54px,15.5vw,66px);height:clamp(54px,15.5vw,66px)}.tools-grid .tool-copy{justify-items:center;gap:2px;width:100%;min-width:0;display:grid}.tools-grid .tool-label{overflow-wrap:anywhere;max-width:100%;font-size:clamp(15px,4vw,17px);font-weight:600;line-height:1.25}@media (width<=380px){.tools-page.page-padding{padding-left:18px;padding-right:18px}}@media (prefers-reduced-transparency:reduce){.tools-announcement-card{background:var(--bg-surface);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-reduced-motion:reduce){.tools-announcement-card{transition:none}.tools-announcement-card:active{transform:none}}body:has(.classroom-page){background:var(--bg-page);min-width:0}.classroom-page{width:100%;max-width:480px;min-height:100dvh;padding-bottom:calc(32px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--text-primary);background:var(--bg-page);margin:0 auto}.classroom-topbar{z-index:20;min-height:calc(60px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));padding:calc(8px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) 22px 8px;background:var(--bg-surface-overlay);-webkit-backdrop-filter:blur(18px)saturate(150%);backdrop-filter:blur(18px)saturate(150%);grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;display:grid;position:sticky;top:0}.classroom-topbar h1{text-align:center;margin:0;font-size:18px;font-weight:600;line-height:1.2}.classroom-icon-button{width:44px;height:44px;color:var(--text-primary);background:var(--bg-surface-glass);box-shadow:0 .5px 1px var(--hairline);transition:transform .14s var(--ease-out);border:0;border-radius:50%;place-items:center;padding:0;display:grid}.classroom-icon-button:active{transform:scale(.96)}.classroom-icon-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:21px;height:21px}.classroom-content{padding:16px 22px 0}.classroom-state{min-height:calc(100dvh - 100px);color:var(--text-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:32px 20px;display:flex}.classroom-state h2{color:var(--text-primary);margin:13px 0 0;font-size:18px;font-weight:600}.classroom-state>p{max-width:290px;margin:10px 0 0;font-size:14px;line-height:1.5}.classroom-button-spinner{border:2px solid var(--control-pressed-bg);border-top-color:var(--text-muted);border-color:var(--edge-highlight-faint);border-top-color:var(--edge-highlight);border-radius:50%;width:17px;height:17px;animation:.72s linear infinite classroom-spin}.classroom-state__icon{width:42px;height:42px;color:var(--danger);background:var(--danger-soft);border-radius:50%;place-items:center;font-size:22px;font-weight:600;display:grid}.classroom-state__empty-mark{width:46px;height:46px;color:var(--text-faint);background:var(--control-bg);border-radius:50%;place-items:center;font-size:24px;display:grid}.classroom-state>button,.classroom-result-state>button{min-height:44px;color:var(--blue-strong);background:var(--edge-highlight);transition:transform .14s var(--ease-out);border:0;border-radius:22px;margin-top:18px;padding:0 20px;font-weight:600}.classroom-state>button:active,.classroom-result-state>button:active{transform:scale(.97)}.classroom-filter-card{background:var(--edge-highlight);box-shadow:0 .5px 1px var(--hairline);border-radius:20px;padding:16px}.classroom-sheet__fields>label,.classroom-sheet__pair>label{display:block}.classroom-sheet__fields label>span:first-child{color:var(--text-muted);margin:0 0 7px 2px;font-size:13px;display:block}.classroom-select-control{display:block}.classroom-select-control .app-select__trigger{width:100%;height:48px;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;background:var(--bg-page);border:0;border-radius:14px;padding:0 38px 0 14px;font-size:15px;font-weight:600;overflow:hidden}.classroom-select-control .app-select__trigger:disabled{color:var(--text-faint);opacity:.72}.classroom-select-control .app-select__chevron{width:12px;height:12px;stroke:var(--text-faint);stroke-width:1.7px}.classroom-weekday-picker,.classroom-section-picker{border:0;min-width:0;margin:16px 0 0;padding:0}.classroom-filter-card>.classroom-section-picker{margin-top:0}.classroom-weekday-picker legend,.classroom-section-picker legend{width:100%;color:var(--text-muted);padding:0 2px;font-size:13px}.classroom-section-picker legend{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.classroom-section-picker legend small{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:400;overflow:hidden}.classroom-weekday-picker>div{grid-template-columns:repeat(8,minmax(0,1fr));gap:8px;margin-top:8px;display:grid}.classroom-weekday-picker button{grid-column:span 2}.classroom-weekday-picker button:nth-child(5){grid-column:2/span 2}.classroom-weekday-picker button,.classroom-section-picker button{min-width:0;height:44px;color:var(--text-muted);background:var(--bg-page);transition:color .14s ease, background-color .14s ease, transform .12s var(--ease-out);border:0;padding:0;font-size:14px;font-weight:600}.classroom-weekday-picker button{border-radius:13px}.classroom-weekday-picker button.is-selected,.classroom-section-picker button.is-selected{color:var(--text-on-accent);background:var(--blue-strong)}.classroom-weekday-picker button:active,.classroom-section-picker button:active{transform:scale(.95)}.classroom-section-picker>div{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:7px;display:grid}.classroom-section-picker button{border-radius:14px}.classroom-advanced-trigger{text-align:left;border:0;border-top:.5px solid var(--line-strong-alpha);background:0 0;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:50px;margin-top:12px;padding:6px 2px;display:flex}.classroom-advanced-trigger>span{min-width:0}.classroom-advanced-trigger strong,.classroom-advanced-trigger small{display:block}.classroom-advanced-trigger strong{font-size:15px;font-weight:600}.classroom-advanced-trigger small{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:12px;font-weight:400;overflow:hidden}.classroom-advanced-trigger>svg{fill:none;width:12px;height:12px;stroke:var(--text-faint);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;flex:none}.classroom-inline-error{color:var(--danger-deep);margin:10px 0 0;font-size:13px;line-height:1.45}.classroom-inline-error button{min-height:32px;color:var(--blue-strong);background:0 0;border:0;padding:0 8px;font-weight:600}.classroom-search-button{width:100%;min-height:46px;color:var(--text-on-accent);background:var(--blue-strong);transition:transform .14s var(--ease-out), opacity .12s ease;border:0;border-radius:14px;justify-content:center;align-items:center;gap:9px;margin-top:8px;font-size:16px;font-weight:600;display:flex}.classroom-search-button:active:not(:disabled){transform:scale(.98)}.classroom-search-button:disabled{opacity:.42}.classroom-results{margin-top:22px}.classroom-results-heading{justify-content:space-between;align-items:flex-start;gap:12px;min-height:44px;padding:0 2px 10px;display:flex}.classroom-results-heading h2{letter-spacing:-.02em;margin:0;font-size:20px;font-weight:600}.classroom-results-heading p{color:var(--text-faint);margin:5px 0 0;font-size:12px;line-height:1.4}.classroom-results-heading__status{justify-content:flex-end;align-items:center;gap:4px;min-height:32px;display:flex}.classroom-results-heading__status span{color:var(--text-faint);white-space:nowrap;font-size:12px}.classroom-result-notice{color:var(--text-muted);margin:-2px 2px 10px;font-size:12px;line-height:1.45}.classroom-result-notice.is-error{color:var(--danger-deep)}.classroom-skeleton-list,.classroom-groups{gap:16px;display:grid}.classroom-skeleton-list{background:var(--edge-highlight);border-radius:22px;overflow:hidden}.classroom-skeleton-list>div{min-height:72px;padding:17px;position:relative}.classroom-skeleton-list>div+div:before{content:"";background:var(--line-soft);height:.5px;position:absolute;top:0;left:17px;right:0}.classroom-skeleton-list span{background:var(--control-bg);border-radius:6px;height:12px;animation:1.1s ease-in-out infinite alternate classroom-skeleton;display:block}.classroom-skeleton-list span:first-child{width:42%}.classroom-skeleton-list span:last-child{width:28%;height:9px;margin-top:9px}.classroom-group>header{justify-content:space-between;align-items:baseline;gap:12px;min-height:34px;padding:0 3px 8px;display:flex}.classroom-group>header h3{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:15px;font-weight:600;overflow:hidden}.classroom-group>header span{color:var(--text-faint);white-space:nowrap;font-size:12px}.classroom-list{background:var(--edge-highlight);box-shadow:0 .5px 1px var(--hairline);border-radius:22px;overflow:hidden}.classroom-row{justify-content:space-between;align-items:center;gap:14px;min-height:72px;padding:14px 17px;display:flex;position:relative}.classroom-row+.classroom-row:before{content:"";background:var(--line-strong-alpha);height:.5px;position:absolute;top:0;left:17px;right:0}.classroom-row>div{min-width:0}.classroom-row h4{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:17px;font-weight:600;line-height:1.25;overflow:hidden}.classroom-row>div>p{color:var(--text-faint);margin:5px 0 0;font-size:13px}.classroom-capacity{color:var(--text-faint);flex:none;align-items:baseline;gap:3px;margin:0;display:flex}.classroom-capacity strong{color:var(--text-primary);font-size:20px;font-weight:600}.classroom-capacity span{font-size:12px}.classroom-result-state{min-height:220px;color:var(--text-muted);text-align:center;background:var(--edge-highlight);border-radius:22px;flex-direction:column;justify-content:center;align-items:center;padding:28px 20px;display:flex}.classroom-result-state--error>span{width:40px;height:40px;color:var(--danger);background:var(--danger-soft);border-radius:50%;place-items:center;font-size:20px;font-weight:600;display:grid}.classroom-result-state h3{color:var(--text-primary);margin:13px 0 0;font-size:17px;font-weight:600}.classroom-result-state p{max-width:290px;margin:8px 0 0;font-size:13px;line-height:1.5}.classroom-result-state__lines{gap:6px;width:48px;display:grid}.classroom-result-state__lines i{background:var(--text-placeholder-soft);border-radius:3px;height:5px;display:block}.classroom-result-state__lines i:nth-child(2){width:72%}.classroom-result-state__lines i:nth-child(3){width:88%}.classroom-sheet-overlay{z-index:100;background:var(--shadow-color);justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.classroom-sheet{width:min(100%,480px);max-height:min(88dvh,760px);padding:8px 22px calc(22px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));background:var(--bg-page);box-shadow:0 -18px 46px var(--shadow-color);border-radius:28px 28px 0 0;outline:0;flex-direction:column;display:flex;overflow:hidden}.classroom-sheet__handle{background:var(--text-placeholder-soft);border-radius:3px;width:36px;height:5px;margin:0 auto 3px}.classroom-sheet>header{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;min-height:52px;display:grid}.classroom-sheet>header h2{text-align:center;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;font-size:17px;font-weight:600;overflow:hidden}.classroom-sheet>header button{min-width:0;max-width:100%;min-height:44px;color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;padding:0 8px;font-size:15px;overflow:hidden}.classroom-sheet>header button:first-child{text-align:left}.classroom-sheet>header button:last-child{text-align:right}.classroom-sheet>header button.is-primary{color:var(--blue-strong);font-weight:600}.classroom-sheet__fields{background:var(--edge-highlight-strong);border-radius:22px;padding:0 17px;overflow:hidden}.classroom-sheet__body{overscroll-behavior:contain;scrollbar-width:none;min-height:0;padding:0 1px 2px;overflow-y:auto}.classroom-sheet__body::-webkit-scrollbar{display:none}.classroom-sheet__section-title{color:var(--text-faint);margin:10px 3px 7px;font-size:12px;font-weight:500}.classroom-sheet__fields>label{padding:12px 0;position:relative}.classroom-sheet__fields>label+label:before{content:"";background:var(--line-strong-alpha);height:.5px;position:absolute;top:0;left:0;right:0}.classroom-sheet__pair{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:12px 0;display:grid;position:relative}.classroom-sheet__pair:before,.classroom-sheet__weekday:before{content:"";background:var(--line-strong-alpha);height:.5px;position:absolute;top:0;left:0;right:0}.classroom-sheet__weekday{margin:0;padding:12px 0 14px;position:relative}.classroom-sheet__weekday>div{margin-top:8px}.classroom-sheet__fields .classroom-select-control .app-select__trigger,.classroom-capacity-input{background:var(--bg-page);height:48px}.classroom-capacity-input{border-radius:14px;align-items:center;padding:0 14px;display:flex}.classroom-capacity-input input{width:100%;height:100%;color:var(--text-primary);background:0 0;border:0;outline:0;padding:0;font-size:15px;font-weight:600}.classroom-capacity-input input::placeholder{color:var(--text-faint)}.classroom-capacity-input small{color:var(--text-faint);font-size:13px}.classroom-sheet__note{color:var(--text-faint);margin:11px 3px 2px;font-size:12px;line-height:1.5}.classroom-sheet-enter-active{transition:opacity .22s var(--ease-out)}.classroom-sheet-leave-active{transition:opacity .16s var(--ease-out)}.classroom-sheet-enter-active .classroom-sheet{transition:transform .24s cubic-bezier(.32,.72,0,1)}.classroom-sheet-leave-active .classroom-sheet{transition:transform .18s cubic-bezier(.32,.72,0,1)}.classroom-sheet-enter-from,.classroom-sheet-leave-to{opacity:0}.classroom-sheet-enter-from .classroom-sheet,.classroom-sheet-leave-to .classroom-sheet{transform:translateY(100%)}@keyframes classroom-spin{to{transform:rotate(360deg)}}@keyframes classroom-skeleton{0%{opacity:.56}to{opacity:1}}@media (width<=370px){.classroom-topbar,.classroom-content{padding-left:16px;padding-right:16px}.classroom-filter-card{padding:16px}.classroom-weekday-picker>div{gap:7px}.classroom-weekday-picker button{font-size:13px}.classroom-sheet{max-height:92dvh;padding-left:16px;padding-right:16px}}@media (prefers-reduced-motion:reduce){.classroom-button-spinner{animation-duration:1.4s}.classroom-skeleton-list span{animation:none}.classroom-icon-button,.classroom-weekday-picker button,.classroom-section-picker button,.classroom-search-button,.classroom-state>button,.classroom-result-state>button{transition:opacity .12s}.classroom-icon-button:active,.classroom-weekday-picker button:active,.classroom-section-picker button:active,.classroom-search-button:active,.classroom-state>button:active,.classroom-result-state>button:active{transform:none}.classroom-sheet-enter-active,.classroom-sheet-leave-active{transition:opacity .12s}.classroom-sheet-enter-active .classroom-sheet,.classroom-sheet-leave-active .classroom-sheet{transition:none}.classroom-sheet-enter-from .classroom-sheet,.classroom-sheet-leave-to .classroom-sheet{transform:none}}@media (prefers-reduced-transparency:reduce){.classroom-topbar{background:var(--bg-page);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-contrast:more){.classroom-filter-card,.classroom-list,.classroom-result-state,.classroom-skeleton-list,.classroom-sheet__fields,.classroom-weekday-picker button,.classroom-section-picker button,.classroom-select-control .app-select__trigger,.classroom-capacity-input{border:1px solid var(--line-soft)}}body:has(.exam-page){background:var(--bg-page);min-width:0}.exam-page{width:100%;max-width:480px;min-height:100dvh;padding-bottom:calc(34px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--text-primary);background:var(--bg-page);margin:0 auto}.exam-topbar{z-index:20;min-height:calc(60px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));padding:calc(8px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) 22px 8px;background:var(--bg-surface-overlay);-webkit-backdrop-filter:blur(18px)saturate(150%);backdrop-filter:blur(18px)saturate(150%);grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;display:grid;position:sticky;top:0}.exam-topbar h1{text-align:center;letter-spacing:-.012em;margin:0;font-size:18px;font-weight:600;line-height:1.2}.exam-icon-button{width:44px;height:44px;color:var(--text-primary);background:var(--bg-surface-glass);box-shadow:0 .5px 1px var(--hairline);transition:transform .14s var(--ease-out), opacity .12s ease;border:0;border-radius:50%;place-items:center;padding:0;display:grid}.exam-icon-button:active:not(:disabled){transform:scale(.96)}.exam-icon-button:disabled{opacity:.54}.exam-icon-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:21px;height:21px}.exam-icon-button svg.is-spinning{animation:.72s linear infinite exam-spin}.exam-content{padding:12px 22px 0}.exam-page-state{min-height:calc(100dvh - 100px);color:var(--text-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:32px 20px;display:flex}.exam-page-state h2,.exam-result-state h3{color:var(--text-primary);margin:13px 0 0;font-size:18px;font-weight:600;line-height:1.3}.exam-page-state>p,.exam-result-state>p{max-width:290px;margin:9px 0 0;font-size:14px;line-height:1.5}.exam-state-icon,.exam-empty-mark{border-radius:50%;place-items:center;width:44px;height:44px;display:grid}.exam-state-icon{color:var(--danger);background:var(--danger-soft);font-size:21px;font-weight:600}.exam-empty-mark{color:var(--text-faint);background:var(--control-bg);font-size:23px}.exam-page-state>button,.exam-result-state>button{min-height:44px;color:var(--blue-strong);background:var(--edge-highlight);transition:transform .14s var(--ease-out);border:0;border-radius:22px;margin-top:18px;padding:0 20px;font-weight:600}.exam-page-state>button:active,.exam-result-state>button:active{transform:scale(.97)}.exam-filter-card{background:var(--edge-highlight);box-shadow:0 .5px 1px var(--hairline);border-radius:20px;padding:16px}.exam-semester-field{display:block}.exam-semester-field>span:first-child{color:var(--text-muted);margin:0 0 7px 2px;font-size:13px;display:block}.exam-select-control{display:block}.exam-select-control .app-select__trigger{width:100%;height:44px;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;background:var(--bg-page);border:0;border-radius:13px;padding:0 14px;font-size:15px;font-weight:600;overflow:hidden}.exam-select-control .app-select__trigger:disabled{color:var(--text-faint);opacity:.72}.exam-select-control .app-select__chevron{width:12px;height:12px;stroke:var(--text-faint);stroke-width:1.7px}.exam-batch-picker{border:0;min-width:0;margin:14px 0 0;padding:0}.exam-batch-picker legend{width:100%;color:var(--text-muted);justify-content:space-between;align-items:baseline;gap:12px;padding:0 2px;font-size:13px;display:flex}.exam-batch-picker legend small{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:400;overflow:hidden}.exam-batch-options,.exam-batch-skeleton{flex-wrap:wrap;gap:7px;margin-top:7px;display:flex}.exam-batch-options button{min-height:44px;color:var(--text-muted);background:var(--bg-page);transition:color .14s ease, background-color .14s ease, transform .12s var(--ease-out);border:0;border-radius:13px;padding:0 14px;font-size:14px;font-weight:600}.exam-batch-options button.is-selected{color:var(--text-on-accent);background:var(--blue-strong)}.exam-batch-options button:active:not(:disabled){transform:scale(.96)}.exam-batch-options button:disabled{opacity:.7}.exam-batch-skeleton span{background:var(--control-bg);border-radius:14px;width:96px;height:44px;animation:1.1s ease-in-out infinite alternate exam-skeleton}.exam-batch-skeleton span:last-child{width:78px}.exam-inline-error,.exam-refresh-error{color:var(--danger-deep);font-size:13px;line-height:1.45}.exam-inline-error{margin:10px 0 0}.exam-inline-error button,.exam-refresh-error button{min-height:32px;color:var(--blue-strong);background:0 0;border:0;padding:0 7px;font-weight:600}.exam-no-batches{min-height:74px;color:var(--text-muted);background:var(--bg-page);border-radius:15px;align-items:center;gap:12px;margin-top:9px;padding:13px 14px;display:flex}.exam-no-batches>span{width:34px;height:34px;color:var(--text-faint);background:var(--control-bg);border-radius:50%;flex:none;place-items:center;display:grid}.exam-no-batches strong{color:var(--text-primary);font-size:14px;font-weight:600}.exam-no-batches p{margin:4px 0 0;font-size:12px;line-height:1.4}.exam-today-card{background:var(--edge-highlight);box-shadow:0 .5px 1px var(--hairline);border-radius:20px;margin-top:16px;padding:14px 16px}.exam-today-card>header{justify-content:space-between;align-items:center;gap:12px;min-height:40px;display:flex}.exam-today-card>header span{color:var(--text-faint);font-size:11px;line-height:1.2;display:block}.exam-today-card>header h2{letter-spacing:-.015em;margin:3px 0 0;font-size:17px;font-weight:600;line-height:1.2}.exam-today-card>header>strong{color:var(--text-faint);white-space:nowrap;font-size:12px;font-weight:500}.exam-today-list{border-top:.5px solid var(--line-medium);margin-top:8px}.exam-today-list article{grid-template-columns:60px minmax(0,1fr);align-items:center;gap:12px;min-height:62px;padding:11px 0;display:grid;position:relative}.exam-today-list article+article:before{content:"";background:var(--line-medium);height:.5px;position:absolute;top:0;left:72px;right:0}.exam-today-time{font-variant-numeric:tabular-nums;background:var(--bg-page);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;min-height:48px;padding:6px 4px;display:flex}.exam-today-time strong{font-size:15px;font-weight:700;line-height:1.1}.exam-today-time span{color:var(--text-faint);margin-top:4px;font-size:10px;line-height:1.1}.exam-today-list h3{margin:0;font-size:15px;font-weight:600;line-height:1.25}.exam-today-list p{color:var(--text-muted);align-items:center;gap:4px;margin:5px 0 0;font-size:12px;line-height:1.3;display:flex}.exam-today-list p svg{fill:none;width:13px;height:13px;stroke:var(--text-faint);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25px;flex:none}.exam-today-empty{background:var(--bg-page);border-radius:14px;align-items:center;gap:11px;min-height:58px;margin-top:8px;padding:10px 12px;display:flex}.exam-today-empty>span{width:32px;height:32px;color:var(--text-muted);background:var(--control-bg);border-radius:50%;flex:none;place-items:center;font-size:15px;font-weight:600;display:grid}.exam-today-empty>span svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:16px;height:16px}.exam-today-empty strong{font-size:14px;font-weight:600}.exam-today-empty p{color:var(--text-faint);margin:3px 0 0;font-size:11px;line-height:1.35}.exam-results{margin-top:20px}.exam-results-heading{justify-content:space-between;align-items:flex-start;gap:12px;min-height:44px;padding:0 2px 9px;display:flex}.exam-results-heading>div{min-width:0}.exam-results-heading h2{letter-spacing:-.02em;margin:0;font-size:20px;font-weight:600;line-height:1.2}.exam-results-heading p{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;margin:5px 0 0;font-size:12px;line-height:1.4;overflow:hidden}.exam-results-heading>span{color:var(--text-faint);white-space:nowrap;flex:none;font-size:12px}.exam-refresh-error{background:var(--danger-tint);border-radius:12px;margin:-2px 2px 10px;padding:10px 12px}.exam-skeleton-list,.exam-list{background:var(--edge-highlight);box-shadow:0 .5px 1px var(--hairline);border-radius:20px;overflow:hidden}.exam-skeleton-list>div{grid-template-columns:62px minmax(0,1fr);gap:12px;min-height:90px;padding:14px 15px;display:grid;position:relative}.exam-skeleton-list>div+div:before{content:"";background:var(--line-soft);height:.5px;position:absolute;top:0;left:89px;right:0}.exam-skeleton-list span{background:var(--control-bg);border-radius:6px;height:12px;animation:1.1s ease-in-out infinite alternate exam-skeleton;display:block}.exam-skeleton-list>div>span{border-radius:12px;height:38px}.exam-skeleton-list div div span:first-child{width:72%}.exam-skeleton-list div div span:last-child{width:48%;height:9px;margin-top:12px}.exam-result-state{min-height:210px;color:var(--text-muted);text-align:center;background:var(--edge-highlight);border-radius:22px;flex-direction:column;justify-content:center;align-items:center;padding:26px 20px;display:flex}.exam-groups{animation:exam-content-in .14s var(--ease-out) both;gap:16px;display:grid}.exam-group>header{justify-content:space-between;align-items:baseline;gap:12px;min-height:30px;padding:0 3px 6px;display:flex}.exam-group>header h3{margin:0;font-size:15px;font-weight:600;line-height:1.25}.exam-group>header span{color:var(--text-faint);white-space:nowrap;font-size:12px}.exam-group--pending>header h3{color:var(--text-muted)}.exam-row{grid-template-columns:64px minmax(0,1fr);align-items:start;gap:12px;min-height:96px;padding:14px 15px;display:grid;position:relative}.exam-row+.exam-row:before{content:"";background:var(--line-strong-alpha);height:.5px;position:absolute;top:0;left:91px;right:0}.exam-time{min-height:52px;color:var(--text-primary);font-variant-numeric:tabular-nums;background:var(--bg-page);border-radius:13px;flex-direction:column;justify-content:center;align-items:center;padding:7px 4px;display:flex}.exam-time strong{letter-spacing:-.015em;font-size:16px;font-weight:700;line-height:1.1}.exam-time span{color:var(--text-faint);margin-top:5px;font-size:11px;line-height:1.1}.exam-time--pending{color:var(--text-muted)}.exam-details{min-width:0}.exam-details h4{color:var(--text-primary);letter-spacing:-.012em;margin:0;font-size:16px;font-weight:600;line-height:1.3}.exam-location{color:var(--text-muted);align-items:flex-start;gap:5px;margin:4px 0 0;font-size:13px;line-height:1.35;display:flex}.exam-location svg{fill:none;width:14px;height:14px;stroke:var(--text-faint);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25px;flex:none;margin-top:1px}.exam-meta{flex-wrap:wrap;gap:5px;margin-top:7px;display:flex}.exam-meta span{min-height:22px;color:var(--text-muted);background:var(--bg-page);border-radius:8px;padding:3px 7px;font-size:11px;line-height:15px}.exam-meta span.is-danger{color:var(--danger-deep);background:var(--danger-soft)}.exam-remark{color:var(--text-muted);background:var(--bg-page);border-radius:10px;margin:8px 0 0;padding:7px 9px;font-size:12px;line-height:1.45}.exam-remark span{color:var(--text-faint);margin-right:6px}.exam-page button:focus-visible,.exam-page .app-select__trigger:focus-visible{outline-color:var(--blue-ring)}@keyframes exam-spin{to{transform:rotate(360deg)}}@keyframes exam-skeleton{0%{opacity:.55}to{opacity:1}}@keyframes exam-content-in{0%{opacity:0}to{opacity:1}}@media (width<=370px){.exam-topbar,.exam-content{padding-left:16px;padding-right:16px}.exam-filter-card{border-radius:20px;padding:14px}.exam-row{grid-template-columns:60px minmax(0,1fr);gap:10px;padding:13px 14px}.exam-row+.exam-row:before{left:84px}.exam-time strong{font-size:15px}}@media (prefers-reduced-motion:reduce){.exam-page *,.exam-page :before,.exam-page :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (prefers-reduced-transparency:reduce){.exam-topbar,.exam-filter-card,.exam-today-card,.exam-list,.exam-result-state,.exam-skeleton-list{background:var(--bg-surface);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-contrast:more){.exam-topbar,.exam-filter-card,.exam-today-card,.exam-list,.exam-result-state,.exam-skeleton-list{background:var(--bg-surface);border:1px solid var(--text-muted)}}.calendar-page{width:100%;max-width:480px;height:100dvh;padding-top:calc(8px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));padding-bottom:calc(10px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--text-primary);background:radial-gradient(circle at 88% 1%, var(--bg-nav), transparent 27%), linear-gradient(180deg, var(--bg-page-cool) 0%, var(--bg-cell) 58%, var(--bg-cell) 100%);flex-direction:column;margin:0 auto;display:flex;overflow:hidden}.calendar-topbar{grid-template-columns:44px 1fr 44px;align-items:center;min-height:48px;display:grid}.calendar-topbar>div{text-align:center;min-width:0}.calendar-topbar h1{letter-spacing:-.2px;margin:0;font-size:18px;font-weight:600;line-height:1.15}.calendar-topbar p{color:var(--text-muted);margin:2px 0 0;font-size:11px;line-height:1.2}.calendar-icon-button{width:44px;height:44px;color:var(--text-tertiary);background:var(--bg-glass);box-shadow:0 .5px 0 var(--hairline), 0 5px 16px var(--shadow-color-soft);-webkit-backdrop-filter:blur(20px)saturate(145%);backdrop-filter:blur(20px)saturate(145%);transition:transform .14s var(--ease-out);border:0;border-radius:50%;place-items:center;padding:0;text-decoration:none;display:grid}.calendar-icon-button:active{transform:scale(.96)}.calendar-icon-button:focus,.calendar-icon-button:focus-visible,.calendar-toolbar button:focus,.calendar-toolbar button:focus-visible,.calendar-toolbar a:focus,.calendar-toolbar a:focus-visible{outline:0}.calendar-icon-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:21px;height:21px}.calendar-viewer{background:var(--bg-glass);width:100%;min-width:0;min-height:0;box-shadow:0 .5px 0 var(--hairline), 0 14px 36px var(--map-tint-soft);-webkit-overflow-scrolling:touch;overscroll-behavior:contain;border-radius:18px;flex:1;margin-top:12px;position:relative;overflow:auto}.calendar-image-stage{background:var(--control-track-soft);place-items:center;min-width:100%;min-height:100%;display:grid}.calendar-image-stage img{background:var(--bg-surface);-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:auto;display:block;box-shadow:0 3px 14px #1e222a14}.calendar-viewer.is-zoomed .calendar-image-stage,.calendar-viewer.is-zoomed .calendar-image-stage img{width:780px;max-width:none}.calendar-state{z-index:2;color:var(--text-muted);text-align:center;background:var(--bg-surface-overlay);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);flex-direction:column;justify-content:center;align-items:center;padding:30px;display:flex;position:absolute;inset:0}.calendar-state>p{max-width:270px;margin:8px 0 0;font-size:13px;line-height:1.5}.calendar-state strong{color:var(--text-tertiary);font-size:16px}.calendar-state button{min-height:38px;color:var(--blue-schedule);background:var(--bg-surface-glass);box-shadow:0 5px 16px var(--shadow-color-soft);border:0;border-radius:19px;margin-top:16px;padding:0 18px;font-weight:600}.calendar-toolbar{background:var(--bg-glass);min-height:54px;box-shadow:0 .5px 0 var(--hairline), 0 9px 24px var(--map-tint-weak);-webkit-backdrop-filter:blur(20px)saturate(145%);backdrop-filter:blur(20px)saturate(145%);border-radius:27px;grid-template-columns:repeat(2,1fr);margin-top:12px;padding:4px;display:grid}.calendar-toolbar button,.calendar-toolbar a{min-width:0;min-height:46px;color:var(--text-tertiary);background:0 0;border:0;border-radius:23px;justify-content:center;align-items:center;gap:7px;padding:0 12px;font-size:13px;font-weight:600;text-decoration:none;display:flex}.calendar-toolbar button[aria-pressed=true]{background:var(--bg-glass-bright);box-shadow:0 2px 8px #1e222a1a}.calendar-toolbar button:active,.calendar-toolbar a:active{background:var(--control-track-soft)}.calendar-toolbar svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;flex:none;width:20px;height:20px}.calendar-source{color:var(--text-faint);text-align:center;margin:8px 0 0;font-size:10px}@media (prefers-reduced-motion:reduce){.calendar-icon-button{transition:none}}@media (prefers-reduced-transparency:reduce){.calendar-icon-button,.calendar-toolbar{background:var(--bg-subtle);-webkit-backdrop-filter:none;backdrop-filter:none}.calendar-state{background:var(--bg-cell);-webkit-backdrop-filter:none;backdrop-filter:none}}.campus-map-page{width:100%;max-width:720px;height:100dvh;padding:calc(8px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) 16px calc(9px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--text-primary);background:radial-gradient(circle at 88% 0%, var(--bg-surface-soft), transparent 28%), var(--bg-page);flex-direction:column;margin:0 auto;display:flex;overflow:hidden}.campus-map-topbar{grid-template-columns:44px 1fr 44px;align-items:center;min-height:48px;display:grid}.campus-map-topbar>div{text-align:center;min-width:0}.campus-map-topbar h1{letter-spacing:-.2px;margin:0;font-size:18px;font-weight:600;line-height:1.15}.campus-map-topbar p{color:var(--text-faint);margin:2px 0 0;font-size:11px;line-height:1.2}.campus-map-icon-button{width:44px;height:44px;color:var(--text-tertiary);background:var(--bg-glass);box-shadow:0 .5px 0 var(--hairline), 0 5px 16px var(--shadow-color-soft);-webkit-backdrop-filter:blur(20px)saturate(145%);backdrop-filter:blur(20px)saturate(145%);transition:transform .14s var(--ease-out);border:0;border-radius:50%;place-items:center;padding:0;text-decoration:none;display:grid}.campus-map-icon-button:active{transform:scale(.96)}.campus-map-icon-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:21px;height:21px}.campus-map-page button:focus-visible,.campus-map-page a:focus-visible{outline-color:var(--blue-ring)}.campus-map-selector{background:var(--control-track-soft);border-radius:24px;grid-template-columns:repeat(2,1fr);min-height:48px;margin-top:10px;padding:4px;display:grid;position:relative}.campus-map-selector__selection{pointer-events:none;background:var(--edge-highlight);width:calc(50% - 4px);box-shadow:0 .5px 0 var(--hairline), 0 3px 10px var(--map-tint-soft);transition:transform .18s var(--ease-out);border-radius:20px;position:absolute;top:4px;bottom:4px;left:4px}.campus-map-selector__selection.is-longquan{transform:translate(100%)}.campus-map-selector button{z-index:1;min-width:0;min-height:40px;color:var(--text-muted);background:0 0;border:0;border-radius:20px;padding:0 12px;font-size:15px;font-weight:600;position:relative}.campus-map-selector button[aria-pressed=true]{color:var(--text-primary)}.campus-map-selector button:active{transform:scale(.98)}.campus-map-viewer{background:var(--control-bg);border:.5px solid var(--line-soft);width:100%;min-width:0;min-height:0;box-shadow:0 .5px 0 var(--hairline), 0 14px 34px var(--map-tint-soft);-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-color:var(--line-heavy) transparent;scrollbar-width:thin;border-radius:22px;flex:1;margin-top:12px;position:relative;overflow:auto}.campus-map-image-stage{isolation:isolate;place-items:center;min-width:100%;min-height:100%;display:grid;position:relative;overflow:hidden}.campus-map-image-backdrop{z-index:-1;filter:blur(28px)saturate(.7);opacity:.13;pointer-events:none;background-position:50%;background-size:cover;position:absolute;inset:-32px;transform:scale(1.08)}.campus-map-image-link{z-index:1;max-width:none;color:inherit;background:var(--bg-surface);box-shadow:0 2px 12px var(--shadow-color-soft);cursor:zoom-in;transition:transform .12s var(--ease-out);text-decoration:none;display:block;position:relative}.campus-map-image-link:active{transform:scale(.995)}.campus-map-image-link img{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:auto;display:block}.campus-map-viewer.is-zoomed .campus-map-image-stage{place-items:start;overflow:visible}.campus-map-viewer.is-zoomed .campus-map-image-backdrop{opacity:.07}.campus-map-state{z-index:2;color:var(--text-muted);text-align:center;background:var(--bg-surface-overlay);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);flex-direction:column;justify-content:center;align-items:center;padding:30px;display:flex;position:absolute;inset:0}.campus-map-state>p{max-width:270px;margin:8px 0 0;font-size:13px;line-height:1.5}.campus-map-state strong{color:var(--text-tertiary);font-size:16px}.campus-map-state button{min-height:40px;color:var(--blue-schedule);background:var(--bg-surface-glass);box-shadow:0 5px 16px var(--shadow-color-soft);border:0;border-radius:20px;margin-top:16px;padding:0 18px;font-weight:600}.campus-map-controls{align-items:stretch;gap:8px;width:100%;max-width:520px;margin-top:10px;margin-left:auto;margin-right:auto;display:flex}.campus-map-zoom{background:var(--bg-glass);width:auto;min-height:52px;box-shadow:0 .5px 0 var(--hairline), 0 8px 22px var(--map-tint-weak);-webkit-backdrop-filter:blur(20px)saturate(145%);backdrop-filter:blur(20px)saturate(145%);border-radius:26px;flex:1;grid-template-columns:44px minmax(0,1fr) 44px;margin:0;padding:4px;display:grid}.campus-map-zoom button{min-width:44px;min-height:44px;color:var(--text-tertiary);background:0 0;border:0;border-radius:22px;place-items:center;padding:0;display:grid}.campus-map-zoom button:active:not(:disabled){background:var(--control-track-soft);transform:scale(.96)}.campus-map-zoom button:disabled{color:var(--text-placeholder-soft)}.campus-map-zoom svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:1.8px;width:21px;height:21px}.campus-map-zoom .campus-map-zoom__value{min-width:0;color:var(--text-tertiary);flex-direction:column;gap:1px;line-height:1.1;display:flex}.campus-map-zoom__value strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.campus-map-zoom__value span{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:500;overflow:hidden}.campus-map-save-button{width:auto;min-width:0;min-height:52px;color:var(--text-tertiary);background:var(--bg-glass);box-shadow:0 .5px 0 var(--hairline), 0 8px 22px var(--map-tint-weak);-webkit-backdrop-filter:blur(20px)saturate(145%);backdrop-filter:blur(20px)saturate(145%);transition:transform .14s var(--ease-out);border:0;border-radius:26px;flex:0 auto;justify-content:center;align-items:center;gap:6px;padding:0 11px;font-size:12px;font-weight:600;display:flex}.campus-map-save-button:active:not(:disabled){transform:scale(.96)}.campus-map-save-button:disabled{color:var(--text-placeholder-soft)}.campus-map-save-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;flex:none;width:19px;height:19px}.campus-map-note{color:var(--text-faint);text-align:center;margin:6px 0 0;font-size:10px;line-height:1.3}@media (prefers-reduced-motion:reduce){.campus-map-icon-button,.campus-map-selector__selection,.campus-map-image-link,.campus-map-save-button{transition:none}.campus-map-viewer{scroll-behavior:auto}}@media (prefers-reduced-transparency:reduce){.campus-map-icon-button,.campus-map-zoom,.campus-map-save-button{background:var(--bg-surface);-webkit-backdrop-filter:none;backdrop-filter:none}.campus-map-state{background:var(--control-bg);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (width<=359px){.campus-map-page{padding-left:12px;padding-right:12px}.campus-map-selector{margin-top:8px}.campus-map-viewer{border-radius:18px;margin-top:8px}.campus-map-controls{gap:6px;margin-top:8px}.campus-map-zoom{grid-template-columns:44px minmax(0,1fr) 44px}.campus-map-save-button{gap:4px;padding:0 8px}}@media (width>=600px) and (width<=899px) and (height>=601px){.campus-map-page{padding-left:20px;padding-right:20px}.campus-map-selector{width:min(100%,520px);margin-left:auto;margin-right:auto}.campus-map-viewer{margin-top:16px}}@media (orientation:landscape) and (height<=600px){.campus-map-page{max-width:900px;padding:calc(7px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) calc(14px + var(--safe-area-inset-right,env(safe-area-inset-right,0px))) calc(7px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px))) calc(14px + var(--safe-area-inset-left,env(safe-area-inset-left,0px)));grid-template-rows:48px 48px 52px minmax(0,1fr);grid-template-columns:minmax(250px,.78fr) minmax(0,1.22fr);gap:9px 12px;display:grid}.campus-map-topbar{grid-area:1/1}.campus-map-selector{grid-area:2/1;margin-top:0}.campus-map-viewer{grid-area:1/2/-1;margin-top:0}.campus-map-controls{grid-area:3/1;width:100%;max-width:none;margin-top:0;margin-left:0;margin-right:0}.campus-map-note{grid-area:4/1;align-self:start;margin:0}}@media (width>=900px) and (height>=601px){.campus-map-page{max-width:1120px;padding:calc(24px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) calc(24px + var(--safe-area-inset-right,env(safe-area-inset-right,0px))) calc(24px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px))) calc(24px + var(--safe-area-inset-left,env(safe-area-inset-left,0px)));grid-template-rows:48px 48px 52px minmax(0,1fr);grid-template-columns:minmax(280px,320px) minmax(0,1fr);gap:12px 20px;display:grid}.campus-map-topbar{grid-area:1/1}.campus-map-selector{grid-area:2/1;width:100%;margin:0}.campus-map-viewer{grid-area:1/2/-1;margin:0}.campus-map-controls{grid-area:3/1;width:100%;max-width:none;margin:0}.campus-map-note{grid-area:4/1;align-self:start;margin:0}}.app-shell.app-shell--profile{--profile-background:var(--bg-page);--profile-label:var(--text-primary);--profile-tertiary-label:var(--text-faint);--profile-control:var(--control-bg);--profile-accent:var(--blue-link);--profile-danger:var(--danger);color:var(--profile-label);background:var(--profile-background)}.app-shell--profile .surface-card{background:var(--edge-highlight);box-shadow:0 .5px 1px var(--hairline);border:0;border-radius:22px;overflow:hidden}.profile-page{padding-top:calc(22px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)))}.profile-hero{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:204px;display:flex}.profile-avatar{cursor:pointer;background:var(--profile-control);border:1px solid var(--bg-glass-bright);width:96px;height:96px;box-shadow:0 0 0 .5px var(--line-soft);border-radius:50%;flex:none;place-items:center;padding:0;display:grid;position:relative;overflow:hidden}.profile-avatar img{object-fit:cover;width:100%;height:100%}.profile-avatar:active{opacity:.82}.profile-avatar__edit{width:28px;height:28px;color:var(--text-primary);background:var(--bg-surface-raised);border:1.5px solid var(--edge-highlight-strong);box-shadow:0 1px 4px var(--shadow-color);border-radius:50%;place-items:center;display:grid;position:absolute;bottom:2px;right:2px}.profile-avatar__edit svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.profile-hero__identity{min-width:0;margin-top:14px}.profile-hero__identity h1{letter-spacing:-.02em;margin:0 0 5px;font-size:28px;font-weight:700;line-height:1.08}.profile-hero__identity p{color:var(--profile-tertiary-label);margin:0;font-size:15px;line-height:1.35}.student-card{min-height:0;margin-top:24px;padding:0}.student-card__rows{width:100%}.student-card__row{grid-template-columns:40px minmax(0,1fr);align-items:center;gap:13px;min-height:68px;padding:9px 18px;display:grid;position:relative}.student-card__row:not(:last-child):after{content:"";background:var(--line-strong-alpha);height:.5px;position:absolute;bottom:0;left:71px;right:0}.student-card__icon{width:36px;height:36px;color:var(--card-ink-soft);background:linear-gradient(180deg, var(--control-pressed-bg), var(--control-bg));box-shadow:inset 0 0 0 .5px var(--line-soft);border-radius:10px;place-items:center;display:grid}.student-card__icon img{width:24px;height:24px}.student-card__icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.65px;width:23px;height:23px}.profile-graduation-icon{filter:grayscale()brightness(0)invert();opacity:.96}.student-card__copy{min-width:0}.student-card h2{margin:0 0 2px;font-size:17px;font-weight:600;line-height:1.25}.student-card p{color:var(--profile-tertiary-label);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:14px;line-height:1.35;overflow:hidden}.student-card .student-card__stacked-detail{text-overflow:clip;white-space:normal;gap:1px;display:grid;overflow:visible}.student-card__stacked-detail span{overflow-wrap:anywhere}.profile-status{min-width:0;min-height:116px;padding:22px}.profile-status--error{flex:1}.profile-status--error p{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.profile-status--error button{min-height:44px;color:var(--profile-accent);font:inherit;transition:transform .14s var(--ease-out);background:0 0;border:0;margin:3px 0 -8px;padding:0 10px 0 0}.profile-status--error button:active{transform:scale(.97)}.profile-menu{margin-top:24px;padding:0}.profile-menu>button{text-align:left;border:0;border-bottom:.5px solid var(--line-medium);background:0 0;grid-template-columns:40px 1fr 18px;align-items:center;gap:13px;width:100%;min-height:64px;padding:0 18px;transition:background-color .12s,opacity .12s;display:grid}.profile-menu>button:active{background:var(--control-track-soft)}.profile-menu>button:last-child{border-bottom:0}.profile-menu>button:disabled{cursor:wait;opacity:.55}.profile-menu img{object-fit:contain;filter:grayscale();opacity:.66;width:34px;height:34px}.profile-menu__leading-icon{width:34px;height:34px;color:var(--text-on-accent);background:linear-gradient(180deg, var(--control-pressed-bg), var(--control-icon-muted));fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.75px;border-radius:10px;padding:7px}.profile-menu span{font-size:17px;font-weight:600}.profile-menu__chevron{width:18px;height:18px;color:var(--profile-tertiary-label);fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px}.profile-menu__row{border-bottom:.5px solid var(--line-medium);grid-template-columns:40px 1fr auto;align-items:center;gap:13px;min-height:64px;padding:0 18px;display:grid}.profile-menu__row span{font-size:17px;font-weight:600}.profile-menu__theme-switch{width:174px;height:32px}.profile-logout{margin-top:24px}.profile-logout button{width:100%;min-height:58px;color:var(--profile-danger);background:0 0;border:0;place-items:center;padding:0 18px;font-size:17px;font-weight:600;transition:background-color .12s,opacity .12s;display:grid}.profile-logout button:active{background:var(--danger-tint)}.profile-logout button:disabled{cursor:wait;opacity:.55}.profile-page button:focus-visible{outline-color:var(--blue-ring)}@media (width<=370px){.profile-avatar{width:88px;height:88px}.profile-hero{min-height:190px}.student-card__row,.profile-menu>button{padding-left:16px;padding-right:16px}.student-card__row:not(:last-child):after{left:69px}}@media (width<=400px) and (height<=800px){.profile-page{padding-top:calc(8px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)))}.profile-hero{min-height:152px}.profile-avatar{width:76px;height:76px}.profile-hero__identity{margin-top:10px}.profile-hero__identity h1{margin-bottom:3px;font-size:24px}.profile-hero__identity p{font-size:13px}.student-card,.profile-menu,.profile-logout{margin-top:14px}.student-card__row{grid-template-columns:36px minmax(0,1fr);gap:11px;min-height:58px;padding:7px 14px}.student-card__row:not(:last-child):after{left:61px}.student-card__icon{border-radius:9px;width:32px;height:32px}.student-card__icon img{width:21px;height:21px}.student-card__icon svg{width:20px;height:20px}.student-card h2{font-size:16px}.student-card p{font-size:13px}.profile-menu>button{grid-template-columns:36px minmax(0,1fr) 16px;gap:11px;min-height:54px;padding:0 14px}.profile-menu img,.profile-menu__leading-icon{width:30px;height:30px}.profile-menu__leading-icon{border-radius:9px;padding:6px}.profile-menu span,.profile-logout button{font-size:16px}.profile-menu__chevron{width:16px;height:16px}.profile-logout button{min-height:50px}}@media (width<=360px){.profile-menu__row{grid-template-columns:40px minmax(0,1fr);row-gap:8px;padding-top:10px;padding-bottom:10px}.profile-menu__theme-switch{grid-column:1/-1;width:100%}}@media (prefers-reduced-transparency:reduce){.app-shell--profile .surface-card{background:var(--bg-surface)}}@media (prefers-reduced-motion:reduce){.profile-status--error button{transition:none}.profile-status--error button:active{transform:none}}.avatar-sheet-backdrop{z-index:100;background:var(--shadow-color);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.avatar-sheet{width:min(100%,480px);max-height:calc(100dvh - var(--safe-area-inset-top,env(safe-area-inset-top,0px)) - 12px);color:var(--text-primary);background:var(--bg-surface-glass);box-shadow:0 -20px 60px var(--shadow-color), 0 -2px 12px var(--shadow-color-soft);border-radius:24px 24px 0 0;flex-direction:column;display:flex;overflow:hidden}.avatar-sheet__grabber{background:var(--line-heavy);border-radius:3px;flex:none;align-self:center;width:36px;height:5px;margin-top:7px}.avatar-sheet__header{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;min-height:52px;padding:0 6px;display:grid}.avatar-sheet__header h2{text-align:center;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;font-size:17px;font-weight:600;overflow:hidden}.avatar-sheet__header button{min-width:44px;min-height:44px;color:var(--blue-link);background:0 0;border:0;border-radius:12px;justify-self:start;padding:0 10px;font-size:16px}.avatar-sheet__header button:active{opacity:.58}.avatar-sheet__header button:disabled{opacity:.42}.avatar-grid{overscroll-behavior:contain;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;padding:8px 20px 4px;display:grid;overflow-y:auto}.avatar-grid__item{aspect-ratio:1;background:var(--control-bg);width:100%;transition:box-shadow .18s var(--ease-out), transform .18s var(--ease-out);border:0;border-radius:50%;outline:0;padding:0;position:relative;overflow:visible}.avatar-grid__item img{object-fit:cover;border-radius:50%;width:100%;height:100%;display:block}.avatar-grid__item.is-active{box-shadow:0 0 0 2px var(--bg-page), 0 0 0 4px var(--blue-link)}.avatar-grid__item:active{opacity:.72}.avatar-grid__item:disabled{opacity:.55}.avatar-grid__check{width:20px;height:20px;color:var(--text-on-accent);background:var(--blue-link);border:2px solid var(--bg-page);box-shadow:0 1px 3px var(--shadow-color);border-radius:50%;place-items:center;display:grid;position:absolute;bottom:9px;right:9px}.avatar-grid__check svg{fill:none;stroke:currentColor;stroke-width:2.6px;stroke-linecap:round;stroke-linejoin:round;width:13px;height:13px}.avatar-upload-button{min-height:46px;color:var(--text-primary);background:var(--bg-surface-soft);box-shadow:0 .5px 1px var(--hairline);border:0;border-radius:14px;justify-content:center;align-items:center;gap:8px;margin:16px 20px 0;font-size:15px;font-weight:600;display:flex}.avatar-upload-button svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.avatar-upload-button:active{opacity:.62}.avatar-upload-button:disabled{opacity:.55}.avatar-sheet__note{margin:10px 20px calc(18px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--text-faint);text-align:center;font-size:12px;line-height:1.4}.avatar-sheet-enter-active,.avatar-sheet-leave-active{transition:opacity .22s var(--ease-out)}.avatar-sheet-enter-active .avatar-sheet,.avatar-sheet-leave-active .avatar-sheet{transition:transform .32s var(--ease-out)}.avatar-sheet-enter-from,.avatar-sheet-leave-to{opacity:0}.avatar-sheet-enter-from .avatar-sheet,.avatar-sheet-leave-to .avatar-sheet{transform:translateY(100%)}.about-page{width:100%;max-width:480px;min-height:100dvh;padding-bottom:calc(28px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--text-primary);background:var(--bg-page);margin:0 auto}.about-topbar{z-index:20;min-height:calc(60px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));padding:calc(8px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) 22px 8px;background:var(--bg-surface-overlay);-webkit-backdrop-filter:blur(18px)saturate(150%);backdrop-filter:blur(18px)saturate(150%);grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;display:grid;position:sticky;top:0}.about-topbar h1{text-align:center;text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:18px;font-weight:600;line-height:1.2;overflow:hidden}.about-back-button{width:44px;height:44px;color:var(--text-primary);background:var(--bg-surface-glass);box-shadow:0 .5px 1px var(--hairline);transition:transform .14s var(--ease-out), opacity .12s ease;border:0;border-radius:50%;place-items:center;padding:0;display:grid}.about-back-button:active{transform:scale(.96)}.about-back-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:21px;height:21px}.about-content{padding:24px 22px 0}.about-hero{text-align:center;flex-direction:column;align-items:center;padding:26px 0 30px;display:flex}.about-hero img{width:92px;height:92px;box-shadow:0 16px 34px var(--shadow-color), 0 0 0 .5px var(--line-faint);border-radius:23px}.about-hero h2{letter-spacing:-.02em;margin:17px 0 0;font-size:25px;font-weight:700;line-height:1.1}.about-hero p{color:var(--text-faint);margin:7px 0 0;font-size:14px;line-height:1.4}.about-card,.about-links{background:var(--edge-highlight);box-shadow:0 .5px 1px var(--hairline);border-radius:22px;overflow:hidden}.about-card{padding:20px}.about-card h2{margin:0;font-size:17px;font-weight:600;line-height:1.25}.about-card p{color:var(--text-label);margin:10px 0 0;font-size:15px;line-height:1.65}.about-card .about-card__note{color:var(--text-faint);margin-top:12px;font-size:13px;line-height:1.55}.about-links{margin-top:16px}.about-links a{min-height:72px;color:inherit;grid-template-columns:40px minmax(0,1fr) 20px;align-items:center;gap:13px;padding:10px 16px;text-decoration:none;transition:background-color .12s;display:grid}.about-links>:not(:first-child){border-top:1px solid var(--line-faint)}.about-links a:active{background:var(--control-track-soft)}.about-links__icon{width:38px;height:38px;color:var(--text-on-accent);background:var(--text-primary);border-radius:11px;place-items:center;display:grid}.about-links__icon svg{fill:currentColor;width:25px;height:25px}.about-links__icon--privacy{background:var(--blue-slate)}.about-links__icon--community{background:var(--blue-strong)}.about-links__icon--community svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.65px}.about-links__icon--privacy svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px}.about-links__copy{flex-direction:column;min-width:0;display:flex}.about-links__copy strong{font-size:17px;font-weight:600;line-height:1.25}.about-links__copy small{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:13px;line-height:1.35;overflow:hidden}.about-links__external{width:19px;height:19px;color:var(--text-faint);fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px}.about-links__chevron{width:19px;height:19px;color:var(--text-faint);fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px}.about-version{color:var(--text-faint);text-align:center;margin:22px 0 0;font-size:12px;line-height:1.4}.about-back-button:focus-visible,.about-links a:focus-visible{outline-color:var(--blue-ring)}@media (width<=370px){.about-content{padding-left:18px;padding-right:18px}.about-hero{padding-top:20px}}@media (prefers-reduced-transparency:reduce){.about-topbar,.about-back-button,.about-card,.about-links{background:var(--bg-surface);-webkit-backdrop-filter:none;backdrop-filter:none}}.privacy-page{width:100%;max-width:480px;min-height:100dvh;padding-bottom:calc(34px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--text-primary);background:var(--bg-page);margin:0 auto}.privacy-topbar{z-index:20;min-height:calc(60px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));padding:calc(8px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) 22px 8px;background:var(--bg-surface-overlay);-webkit-backdrop-filter:blur(18px)saturate(150%);backdrop-filter:blur(18px)saturate(150%);grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;display:grid;position:sticky;top:0}.privacy-topbar h1{text-align:center;text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:18px;font-weight:600;line-height:1.2;overflow:hidden}.privacy-back-button{width:44px;height:44px;color:var(--text-primary);background:var(--bg-surface-glass);box-shadow:0 .5px 1px var(--hairline);transition:transform .14s var(--ease-out);border:0;border-radius:50%;place-items:center;padding:0;display:grid}.privacy-back-button:active{transform:scale(.96)}.privacy-back-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:21px;height:21px}.privacy-content{padding:16px 22px 0}.privacy-introduction{padding:20px 2px 24px}.privacy-eyebrow{color:var(--blue-slate);letter-spacing:.08em;margin:0 0 7px;font-size:13px;font-weight:700}.privacy-introduction h2{letter-spacing:-.025em;margin:0;font-size:clamp(25px,7vw,31px);font-weight:730;line-height:1.18}.privacy-introduction>p:not(.privacy-eyebrow){color:var(--text-muted);margin:12px 0 0;font-size:15px;line-height:1.65}.privacy-dates{color:var(--text-faint);flex-wrap:wrap;gap:5px 14px;margin-top:15px;font-size:12px;line-height:1.4;display:flex}.privacy-notice,.privacy-section{background:var(--edge-highlight);box-shadow:0 .5px 1px var(--hairline);border-radius:22px}.privacy-notice{background:var(--bg-surface-overlay);grid-template-columns:34px minmax(0,1fr);gap:13px;padding:18px;display:grid}.privacy-notice>svg{width:30px;height:30px;color:var(--blue-slate);fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px}.privacy-notice h2,.privacy-section h2{margin:0;font-size:17px;font-weight:650;line-height:1.3}.privacy-notice p,.privacy-section p{color:var(--text-label);margin:8px 0 0;font-size:14px;line-height:1.7}.privacy-section{margin-top:14px;padding:20px}.privacy-section h2{align-items:center;gap:9px;display:flex}.privacy-section h2>span{width:25px;height:25px;color:var(--blue-slate);background:var(--blue-tint);border-radius:8px;flex:none;place-items:center;font-size:12px;font-weight:700;display:grid}.privacy-section a{color:var(--blue-slate);font-weight:550;text-decoration:none}.privacy-data-list{margin:13px 0 0}.privacy-data-list>div{padding:14px 0}.privacy-data-list>div:first-child{padding-top:4px}.privacy-data-list>div+div{border-top:1px solid var(--line-faint)}.privacy-data-list dt{font-size:15px;font-weight:650;line-height:1.4}.privacy-data-list dd{color:var(--text-muted);margin:5px 0 0;font-size:13px;line-height:1.62}.privacy-bullet-list{margin:12px 0 0;padding:0;list-style:none}.privacy-bullet-list li{color:var(--text-label);padding-left:17px;font-size:14px;line-height:1.68;position:relative}.privacy-bullet-list li+li{margin-top:9px}.privacy-bullet-list li:before{content:"";background:var(--blue-slate);border-radius:50%;width:5px;height:5px;position:absolute;top:.72em;left:2px}.privacy-bullet-list strong{color:var(--text-primary);font-weight:650}.privacy-footer{color:var(--text-faint);text-align:center;margin:22px 0 0;font-size:12px;line-height:1.6}.privacy-back-button:focus-visible,.privacy-section a:focus-visible{outline-color:var(--blue-ring)}@media (width<=370px){.privacy-content{padding-left:18px;padding-right:18px}.privacy-section{padding:18px}}@media (prefers-reduced-transparency:reduce){.privacy-topbar,.privacy-back-button,.privacy-notice,.privacy-section{background:var(--bg-surface);-webkit-backdrop-filter:none;backdrop-filter:none}}.feedback-page{width:100%;max-width:480px;min-height:100dvh;padding-bottom:calc(28px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--text-primary);background:var(--bg-page);margin:0 auto}.feedback-topbar{z-index:20;min-height:calc(60px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));padding:calc(8px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) 22px 8px;background:var(--bg-surface-overlay);-webkit-backdrop-filter:blur(18px)saturate(150%);backdrop-filter:blur(18px)saturate(150%);grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;display:grid;position:sticky;top:0}.feedback-topbar h1{text-align:center;margin:0;font-size:18px;font-weight:600}.feedback-back-button{width:44px;height:44px;color:var(--text-primary);background:var(--bg-surface-glass);box-shadow:0 .5px 1px var(--hairline);transition:transform .14s var(--ease-out);border:0;border-radius:50%;place-items:center;padding:0;display:grid}.feedback-back-button:active{transform:scale(.96)}.feedback-back-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:21px;height:21px}.feedback-content{gap:16px;padding:18px 22px 0;display:grid}.feedback-community-note{background:linear-gradient(145deg, var(--blue-soft), var(--edge-highlight));box-shadow:inset 0 0 0 .5px var(--blue-tint);border-radius:22px;grid-template-columns:38px minmax(0,1fr);align-items:start;gap:10px 12px;padding:16px;display:grid}.feedback-community-note__icon{width:38px;height:38px;color:var(--blue-schedule);background:var(--bg-surface-soft);border-radius:12px;place-items:center;display:grid}.feedback-community-note__icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:22px;height:22px}.feedback-community-note strong{color:var(--blue-ink);margin-top:1px;font-size:15px;font-weight:650;display:block}.feedback-community-note p{color:var(--schedule-muted);margin:4px 0 0;font-size:12px;line-height:1.5}.feedback-community-note a{min-height:40px;color:var(--text-on-accent);text-align:center;background:var(--blue-schedule);box-shadow:0 7px 16px var(--blue-tint-strong);border-radius:13px;grid-column:1/-1;padding:10px 13px;font-size:14px;font-weight:600;text-decoration:none}.feedback-community-note a:active{transform:scale(.985)}.feedback-section{background:var(--edge-highlight);box-shadow:0 .5px 1px var(--hairline);border-radius:22px;padding:18px}.feedback-section__heading{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:13px;display:flex}.feedback-section__heading h2{margin:0;font-size:17px;font-weight:600}.feedback-section__heading span{color:var(--text-faint);text-align:right;font-size:12px}.feedback-segment{background:var(--control-track-soft);border-radius:12px;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px;padding:3px;display:grid}.feedback-segment button{min-height:38px;color:var(--text-muted);transition:color .12s ease, background-color .16s var(--ease-out), box-shadow .16s var(--ease-out);background:0 0;border:0;border-radius:9px;padding:0 12px;font-size:15px;font-weight:600}.feedback-segment button.is-selected{color:var(--text-primary);background:var(--edge-highlight-strong);box-shadow:0 1px 3px #0000001f,0 .5px 1px #0000000d}.feedback-description textarea{resize:vertical;width:100%;min-height:156px;color:var(--text-primary);font:inherit;background:var(--bg-page);box-shadow:inset 0 0 0 .5px var(--line-soft);border:0;border-radius:14px;outline:0;padding:13px 14px;font-size:15px;line-height:1.55;transition:box-shadow .14s;display:block}.feedback-description textarea:focus{box-shadow:inset 0 0 0 1.5px var(--blue-ring), 0 0 0 4px var(--blue-tint)}.feedback-description textarea::placeholder{color:var(--text-faint)}.feedback-description p{color:var(--text-faint);margin:10px 2px 0;font-size:12px;line-height:1.5}.feedback-message{margin:-2px 4px 0;font-size:13px;line-height:1.4}.feedback-message.is-error{color:var(--danger-deep)}.feedback-message.is-success{color:var(--success-deep)}.feedback-submit{min-height:52px;color:var(--text-on-accent);background:var(--blue-link);box-shadow:0 9px 20px var(--blue-tint-strong);transition:transform .14s var(--ease-out), opacity .12s ease;border:0;border-radius:16px;justify-content:center;align-items:center;gap:8px;font-size:17px;font-weight:600;display:flex}.feedback-submit:not(:disabled):active{transform:scale(.985)}.feedback-submit:disabled{box-shadow:none;opacity:.38}.feedback-spinner{border:2px solid var(--edge-highlight-faint);border-top-color:var(--edge-highlight);border-radius:50%;width:17px;height:17px;animation:.7s linear infinite feedback-spin}@keyframes feedback-spin{to{transform:rotate(360deg)}}@media (width<=370px){.feedback-topbar,.feedback-content{padding-left:18px;padding-right:18px}.feedback-section{padding:16px}}@media (prefers-reduced-transparency:reduce){.feedback-topbar,.feedback-section,.feedback-community-note{background:var(--bg-surface)}}@media (prefers-reduced-motion:reduce){.feedback-back-button,.feedback-segment button,.feedback-submit{transition:none}}.admin-stats-page{min-width:320px;min-height:100dvh;color:var(--blue-ink-deep);background:radial-gradient(circle at 8% -5%, var(--chart-blue-soft), transparent 30%), radial-gradient(circle at 94% 3%, var(--chart-axis), transparent 28%), var(--bg-page-deep)}.admin-topbar{z-index:30;min-height:calc(68px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));padding:calc(10px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) max(22px, calc((100vw - 1180px) / 2)) 10px;background:var(--map-surface);border-bottom:1px solid var(--chart-grid-strong);-webkit-backdrop-filter:blur(20px)saturate(150%);backdrop-filter:blur(20px)saturate(150%);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.admin-brand{color:inherit;align-items:center;gap:11px;text-decoration:none;display:flex}.admin-brand img{width:38px;height:38px;box-shadow:0 5px 14px var(--shadow-color-soft);border-radius:10px}.admin-brand span{flex-direction:column;display:flex}.admin-brand strong{font-size:15px;font-weight:700;line-height:1.2}.admin-brand small{color:var(--card-ink-soft);margin-top:2px;font-size:11px}.admin-lock-button,.admin-dashboard-actions button{height:40px;color:var(--blue-slate-deep);background:var(--bg-surface-soft);border:1px solid var(--chart-grid-soft);box-shadow:0 3px 10px var(--chart-axis);transition:transform .14s var(--ease-out), background-color .12s ease;border-radius:12px;justify-content:center;align-items:center;gap:7px;padding:0 14px;font-size:13px;font-weight:600;display:flex}.admin-lock-button:active,.admin-dashboard-actions button:active,.admin-token-form button:active{transform:scale(.97)}.admin-lock-button svg,.admin-dashboard-actions button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:18px;height:18px}.admin-unlock{text-align:center;width:min(100% - 40px,460px);margin:0 auto;padding:clamp(64px,10vh,110px) 0 50px}.admin-unlock__mark{width:68px;height:68px;color:var(--chart-blue);background:linear-gradient(145deg, var(--bg-surface), var(--blue-chip));border:1px solid var(--chart-blue-soft);box-shadow:0 18px 40px var(--chart-blue-soft), inset 0 1px 0 var(--bg-glass-bright);border-radius:22px;place-items:center;margin:0 auto 21px;display:grid}.admin-unlock__mark svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:35px;height:35px}.admin-eyebrow{color:var(--chart-blue);letter-spacing:.13em;margin:0;font-size:11px;font-weight:700}.admin-unlock h1,.admin-dashboard-heading h1{color:var(--blue-ink-deep);letter-spacing:-.035em;margin:9px 0 0;font-size:clamp(29px,5vw,38px);font-weight:700;line-height:1.12}.admin-unlock__description{max-width:420px;color:var(--card-ink-soft);margin:14px auto 0;font-size:14px;line-height:1.65}.admin-token-form{text-align:left;background:var(--bg-surface-glass);border:1px solid var(--chart-line);border-radius:22px;margin-top:30px;padding:24px;box-shadow:0 18px 55px #1f304e14}.admin-token-form>label{color:var(--ink-deep);margin:0 0 8px 2px;font-size:12px;font-weight:600;display:block}.admin-token-field{position:relative}.admin-token-field svg{width:20px;height:20px;color:var(--text-cool);fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;position:absolute;top:50%;left:15px;transform:translateY(-50%)}.admin-token-field input{width:100%;height:50px;color:var(--ink-deepest);background:var(--bg-cell);border:1px solid var(--bg-cell);border-radius:14px;outline:0;padding:0 15px 0 46px;font-size:14px;transition:border-color .14s,box-shadow .14s}.admin-token-field input:focus{border-color:var(--blue-ring);box-shadow:0 0 0 4px var(--chart-blue-soft)}.admin-token-field input::placeholder{color:var(--blue-muted)}.admin-token-form button{width:100%;height:49px;color:var(--text-on-accent);background:var(--chart-blue);box-shadow:0 9px 24px var(--blue-tint-strong);transition:transform .14s var(--ease-out), opacity .12s ease;border:0;border-radius:14px;justify-content:center;align-items:center;gap:9px;margin-top:14px;font-size:14px;font-weight:700;display:flex}.admin-token-form button:disabled,.admin-dashboard-actions button:disabled,.admin-dashboard-actions .app-select__trigger:disabled{cursor:default;opacity:.55}.admin-form-error,.admin-dashboard-error{color:var(--danger-deep);font-size:12px;line-height:1.5}.admin-form-error{margin:10px 2px -2px}.admin-button-spinner{border:2px solid var(--edge-highlight-faint);border-top-color:var(--edge-highlight);border-radius:50%;width:17px;height:17px;animation:.65s linear infinite spin}.admin-dashboard{width:min(100% - 44px,1180px);margin:0 auto;padding:28px 0 64px}.admin-tabbar-shell{z-index:29;top:calc(68px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));width:min(100% - 44px,360px);margin:16px auto 0;position:sticky}.admin-tab-navigation{box-shadow:0 14px 34px var(--chart-line-soft), 0 2px 8px #1f304e0d}.admin-tab-navigation .bottom-navigation__item{color:var(--ink-deep)}.admin-tab-navigation .bottom-navigation__item.is-active{color:var(--chart-blue)}.admin-tab-navigation .bottom-navigation__selection{background:var(--chart-blue-soft)}.admin-dashboard-heading{justify-content:space-between;align-items:flex-end;gap:24px;display:flex}.admin-dashboard-heading>div:first-child>p:last-child{color:var(--card-ink-soft);margin:9px 0 0;font-size:13px}.admin-dashboard-actions{align-items:center;gap:9px;display:flex}.admin-dashboard-actions .admin-period-select .app-select__trigger{width:100%;height:44px;color:var(--ink-deep);background:var(--bg-surface-soft);border:1px solid var(--chart-grid-soft);box-shadow:0 3px 10px var(--chart-axis);border-radius:12px;padding:0 13px;font-size:13px;font-weight:600}.admin-dashboard-actions button{width:40px;padding:0}.admin-dashboard-actions svg.is-spinning{animation:.65s linear infinite spin}.admin-device-refresh{width:44px;height:44px;color:var(--blue-slate-deep);background:var(--bg-surface-soft);border:1px solid var(--chart-grid-soft);box-shadow:0 3px 10px var(--chart-axis);border-radius:13px;flex:none;place-items:center;padding:0;display:grid}.admin-device-refresh:active{transform:scale(.97)}.admin-device-refresh:disabled{opacity:.55}.admin-device-refresh svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:19px;height:19px}.admin-device-refresh svg.is-spinning{animation:.65s linear infinite spin}.admin-dashboard-error{background:var(--metric-rose-soft);border:1px solid var(--metric-rose-soft);border-radius:12px;margin:16px 0 -4px;padding:11px 14px}.admin-metric-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:13px;margin-top:28px;display:grid}.admin-metric-card{background:var(--bg-surface-glass);border:1px solid var(--chart-grid-strong);min-width:0;box-shadow:0 8px 24px var(--chart-line-faint);border-radius:18px;padding:17px}.admin-metric-card__icon{width:34px;height:34px;color:var(--metric-color);background:color-mix(in srgb, var(--metric-color) 10%, white);border-radius:11px;place-items:center;display:grid}.admin-metric-card__icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:19px;height:19px}.admin-metric-card>p{color:var(--blue-muted);margin:15px 0 0;font-size:12px}.admin-metric-card>strong{color:var(--blue-ink);letter-spacing:-.035em;text-overflow:ellipsis;white-space:nowrap;margin-top:6px;font-size:clamp(23px,2.4vw,29px);font-weight:700;line-height:1.05;display:block;overflow:hidden}.admin-metric-card>small{color:var(--blue-muted-soft);text-overflow:ellipsis;white-space:nowrap;margin-top:9px;font-size:10px;line-height:1.3;display:block;overflow:hidden}.admin-metric-card--blue{--metric-color:var(--chart-blue)}.admin-metric-card--green{--metric-color:var(--chart-green)}.admin-metric-card--purple{--metric-color:var(--chart-violet)}.admin-metric-card--orange{--metric-color:var(--chart-amber)}.admin-metric-card--slate{--metric-color:var(--chart-slate)}.admin-metric-card--cyan{--metric-color:var(--chart-blue)}.admin-chart-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px;display:grid}.admin-chart-card,.admin-routes-card,.admin-cache-card,.admin-feedback-card,.admin-device-overview,.admin-device-brands{background:var(--bg-surface-glass);border:1px solid var(--chart-grid-strong);box-shadow:0 10px 30px var(--chart-line-faint);border-radius:20px}.admin-cache-card{margin-top:14px;padding:20px}.admin-cache-status{height:26px;color:var(--blue-muted-soft);background:var(--blue-count);border-radius:999px;align-items:center;padding:0 10px;font-size:10px;font-weight:600;display:inline-flex}.admin-cache-status.is-online{color:var(--success-strong);background:var(--success-tint)}.admin-cache-status.is-error{color:var(--metric-danger);background:var(--metric-rose-soft)}.admin-cache-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-top:18px;display:grid}.admin-cache-grid article{background:var(--bg-cell);border:1px solid var(--line-faint);border-radius:14px;min-width:0;padding:14px}.admin-cache-grid span{color:var(--text-cool);font-size:10px;display:block}.admin-cache-grid strong{color:var(--blue-ink);letter-spacing:-.025em;text-overflow:ellipsis;white-space:nowrap;margin-top:7px;font-size:19px;font-weight:700;display:block;overflow:hidden}.admin-cache-detail{color:var(--text-cool);margin:13px 2px 0;font-size:10px}.admin-chart-card{min-width:0;padding:20px 20px 16px}.admin-chart-card:last-child:nth-child(odd){grid-column:1/-1}.admin-card-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.admin-card-heading h2{color:var(--ink-deepest);letter-spacing:-.01em;margin:0;font-size:16px;font-weight:700}.admin-card-heading p{color:var(--text-cool);margin:5px 0 0;font-size:11px}.admin-card-heading>span{color:var(--text-cool);white-space:nowrap;font-size:11px}.admin-chart-legend{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.admin-chart-legend span{color:var(--blue-muted-soft);white-space:nowrap;align-items:center;gap:5px;font-size:10px;display:flex}.admin-chart-legend i{border-radius:50%;width:7px;height:7px}.admin-chart{margin-top:19px}.admin-chart svg{width:100%;height:190px;display:block;overflow:visible}.admin-chart line{stroke:var(--chart-line);stroke-width:1px;vector-effect:non-scaling-stroke}.admin-chart text{fill:var(--blue-muted);font-size:8px}.admin-chart polyline{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.2px;vector-effect:non-scaling-stroke}.admin-chart circle{fill:var(--text-on-accent);stroke:currentColor;stroke-width:2px;vector-effect:non-scaling-stroke}.admin-chart__labels{color:var(--blue-slate-muted);justify-content:space-between;margin-top:7px;padding-left:44px;font-size:9px;display:flex}.admin-routes-card,.admin-feedback-card{margin-top:14px;padding:20px}.admin-device-overview{margin-top:28px;padding:22px}.admin-device-brands{margin-top:14px;padding:22px}.admin-device-coverage{background:var(--blue-row);border-radius:999px;height:5px;margin-top:18px;overflow:hidden}.admin-device-coverage span{background:var(--chart-blue);border-radius:inherit;height:100%;transition:width .18s var(--ease-out);display:block}.admin-device-distribution{grid-template-columns:minmax(170px,.7fr) minmax(300px,1.3fr);align-items:center;gap:34px;margin-top:24px;display:grid}.admin-device-ring{--ios-share:0%;aspect-ratio:1;background:conic-gradient(var(--chart-blue) 0 var(--ios-share), var(--success-strong) var(--ios-share) 100%);width:168px;box-shadow:0 14px 30px var(--chart-line-soft);border-radius:50%;place-items:center;margin:2px auto;display:grid;position:relative}.admin-device-ring:before{aspect-ratio:1;background:var(--bg-surface);border:1px solid var(--chart-grid);content:"";border-radius:50%;width:116px;position:absolute}.admin-device-ring>div{z-index:1;flex-direction:column;align-items:center;display:flex;position:relative}.admin-device-ring strong{color:var(--blue-ink);letter-spacing:-.04em;font-size:31px;line-height:1}.admin-device-ring span{color:var(--blue-muted-soft);margin-top:7px;font-size:10px}.admin-device-platforms{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.admin-device-platforms article{background:var(--bg-cell);border:1px solid var(--chart-grid);border-radius:16px;align-items:center;gap:13px;min-width:0;padding:18px;display:flex}.admin-device-platform-icon{width:42px;height:42px;color:var(--chart-blue);background:var(--chart-blue-soft);border-radius:13px;flex:none;place-items:center;display:grid}.admin-device-platforms article.is-android .admin-device-platform-icon{color:var(--success-deep);background:var(--success-tint)}.admin-device-platform-icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.65px;width:23px;height:23px}.admin-device-platforms article>div{flex-direction:column;min-width:0;display:flex}.admin-device-platforms article>div>span{color:var(--blue-muted);font-size:11px}.admin-device-platforms strong{color:var(--blue-ink);letter-spacing:-.035em;margin-top:5px;font-size:24px;line-height:1.05}.admin-device-platforms small{color:var(--text-cool);margin-top:7px;font-size:10px}.admin-device-empty{padding-top:42px;padding-bottom:34px}.admin-device-brand-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 22px;margin-top:20px;display:grid}.admin-device-brand-list article{min-width:0}.admin-device-brand-list article>header{justify-content:space-between;align-items:center;gap:12px;display:flex}.admin-device-brand-list strong{color:var(--blue-ink);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:650;overflow:hidden}.admin-device-brand-list header span{color:var(--text-cool);white-space:nowrap;font-size:10px}.admin-device-brand-list article>div{background:var(--bg-cell);border-radius:999px;height:6px;margin-top:9px;overflow:hidden}.admin-device-brand-list article>div>span{background:linear-gradient(90deg, var(--chart-blue), var(--blue-strong));border-radius:inherit;height:100%;display:block}.admin-feedback-list{gap:10px;margin-top:17px;display:grid}.admin-feedback-list article{background:var(--bg-cell);border:1px solid var(--chart-grid);border-radius:14px;padding:15px}.admin-feedback-list article>header{justify-content:space-between;align-items:center;gap:14px;display:flex}.admin-feedback-list article>header>div{align-items:center;gap:7px;display:flex}.admin-feedback-type,.admin-feedback-platform{border-radius:6px;align-items:center;height:22px;padding:0 8px;font-size:9px;font-weight:700;display:inline-flex}.admin-feedback-type.is-suggestion{color:var(--chart-blue);background:var(--chart-blue-soft)}.admin-feedback-type.is-bug{color:var(--metric-danger);background:var(--metric-rose-soft)}.admin-feedback-platform{color:var(--card-ink-soft);text-transform:uppercase;background:var(--blue-row)}.admin-feedback-list time{color:var(--text-cool);white-space:nowrap;font-size:10px}.admin-feedback-list article>p{color:var(--ink-deep);overflow-wrap:anywhere;white-space:pre-wrap;margin:11px 0 0;font-size:12px;line-height:1.65}.admin-route-table-wrap{margin-top:17px;overflow-x:auto}.admin-route-table{border-collapse:collapse;width:100%;min-width:900px;font-size:12px}.admin-route-table th{color:var(--text-cool);text-align:right;white-space:nowrap;padding:0 12px 10px;font-size:10px;font-weight:600}.admin-route-table th:first-child,.admin-route-table td:first-child{text-align:left;padding-left:0}.admin-route-table th:last-child,.admin-route-table td:last-child{padding-right:0}.admin-route-table td{color:var(--blue-slate-soft);text-align:right;border-top:1px solid var(--line-faint);white-space:nowrap;padding:12px}.admin-route-table td:first-child{align-items:center;gap:10px;display:flex}.admin-route-table code{color:var(--ink-deep);font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:11px}.admin-route-table .has-errors{color:var(--metric-danger);font-weight:600}.admin-route-table .has-warnings{color:var(--warning-deep);font-weight:600}.admin-method{min-width:46px;height:22px;color:var(--blue-slate-soft);background:var(--blue-count);border-radius:6px;justify-content:center;align-items:center;font-size:9px;font-weight:700;display:inline-flex}.admin-method--get{color:var(--chart-blue);background:var(--chart-blue-soft)}.admin-method--post{color:var(--success-strong);background:var(--success-tint)}.admin-method--delete{color:var(--metric-danger);background:var(--metric-rose-soft)}.admin-empty-state{color:var(--card-ink-soft);text-align:center;padding:50px 20px 42px}.admin-empty-state p{color:var(--ink-deep);margin:0;font-size:14px;font-weight:600}.admin-empty-state span{margin-top:6px;font-size:11px;display:block}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}@media (width<=980px){.admin-metric-grid,.admin-cache-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=760px){.admin-topbar{padding-left:18px;padding-right:18px}.admin-dashboard{width:min(100% - 32px,1180px);padding-top:24px}.admin-tabbar-shell{width:min(100% - 32px,360px)}.admin-dashboard-heading{align-items:flex-start}.admin-chart-grid{grid-template-columns:1fr}.admin-device-distribution{grid-template-columns:1fr;gap:24px}}@media (width<=540px){.admin-lock-button{width:40px;padding:0;font-size:0}.admin-unlock{width:min(100% - 32px,460px);padding-top:48px}.admin-token-form{padding:19px}.admin-dashboard-heading{flex-direction:column;gap:18px}.admin-device-heading{flex-direction:row;align-items:flex-end}.admin-dashboard-actions{width:100%}.admin-dashboard-actions label{flex:1}.admin-dashboard-actions .admin-period-select{width:100%}.admin-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-metric-card{padding:15px}.admin-chart-card,.admin-routes-card,.admin-cache-card,.admin-feedback-card,.admin-device-overview,.admin-device-brands{padding:17px}.admin-card-heading{flex-direction:column;gap:10px}.admin-chart-legend{justify-content:flex-start}.admin-cache-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-device-platforms,.admin-device-brand-list{grid-template-columns:1fr}.admin-chart svg{height:160px}.admin-route-table{min-width:0}.admin-route-table thead{display:none}.admin-route-table tbody{gap:10px;display:grid}.admin-route-table tr{background:var(--bg-cell);border:1px solid var(--chart-grid);border-radius:13px;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px 14px;padding:13px;display:grid}.admin-route-table td{text-align:left;border:0;flex-direction:column;align-items:flex-start;gap:3px;padding:0;display:flex}.admin-route-table td:first-child{flex-direction:row;grid-column:1/-1;align-items:center}.admin-route-table td:not(:first-child):before{color:var(--text-cool);content:attr(data-label);font-size:9px}.admin-feedback-list article>header{align-items:flex-start}}@media (prefers-reduced-transparency:reduce){.admin-topbar,.admin-token-form,.admin-metric-card,.admin-chart-card,.admin-routes-card,.admin-cache-card,.admin-feedback-card,.admin-device-overview,.admin-device-brands{background:var(--bg-surface);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-reduced-motion:reduce){.admin-dashboard-actions svg.is-spinning,.admin-button-spinner{animation-duration:1.2s}}.completion-page{width:100%;max-width:480px;min-height:100dvh;padding-bottom:calc(28px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--text-primary);background:var(--bg-page);margin:0 auto}.completion-topbar{z-index:20;min-height:calc(60px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));padding:calc(8px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) 22px 8px;background:var(--bg-surface-overlay);-webkit-backdrop-filter:blur(18px)saturate(150%);backdrop-filter:blur(18px)saturate(150%);grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;display:grid;position:sticky;top:0}.completion-topbar h1{text-align:center;text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:18px;font-weight:600;line-height:1.2;overflow:hidden}.completion-icon-button{width:44px;height:44px;color:var(--text-primary);background:var(--bg-surface-glass);box-shadow:0 .5px 1px var(--hairline);transition:transform .14s var(--ease-out), opacity .12s ease;border:0;border-radius:50%;place-items:center;padding:0;display:grid}.completion-icon-button:active{transform:scale(.96)}.completion-icon-button:disabled{opacity:.42}.completion-icon-button:focus-visible,.completion-state button:focus-visible{outline-color:var(--blue-ring)}.completion-icon-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:21px;height:21px}.completion-content{padding:16px 22px 0}.completion-state{min-height:calc(100dvh - 100px);color:var(--text-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:32px 20px;display:flex}.completion-state>p{max-width:290px;margin:12px 0 0;font-size:14px;line-height:1.5}.completion-state h2{color:var(--text-primary);margin:13px 0 0;font-size:18px;font-weight:600}.completion-state__icon{width:42px;height:42px;color:var(--danger);background:var(--danger-soft);border-radius:50%;place-items:center;font-size:22px;font-weight:600;display:grid}.completion-state button{min-height:44px;color:var(--blue-strong);background:var(--edge-highlight);transition:transform .14s var(--ease-out);border:0;border-radius:22px;margin-top:18px;padding:0 20px;font-weight:600}.completion-state button:active{transform:scale(.97)}.completion-error{color:var(--danger-deep);background:var(--danger-tint);border-radius:14px;margin:0 0 14px;padding:11px 14px;font-size:13px;line-height:1.45}.completion-summary-card{background:var(--edge-highlight);box-shadow:0 .5px 1px var(--hairline);border-radius:24px;padding:20px}.completion-summary-card__headline{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.completion-summary-card__headline>div>span,.completion-summary-card__metrics span{color:var(--text-faint);font-size:13px}.completion-summary-card__headline p{color:var(--text-muted);margin:6px 0 0;font-size:14px}.completion-summary-card__headline p strong{color:var(--text-primary);font-size:24px;font-weight:600}.completion-summary-card__headline p small{color:var(--text-faint);font-size:13px}.completion-summary-card__headline>strong{color:var(--text-primary);letter-spacing:-.03em;font-size:34px;font-weight:600;line-height:1}.completion-progress{background:var(--control-bg);border-radius:4px;height:8px;margin-top:18px;overflow:hidden}.completion-progress span{background:var(--blue-strong);border-radius:inherit;height:100%;transition:width .22s var(--ease-out);display:block}.completion-summary-card__metrics{border-top:.5px solid var(--line-strong-alpha);grid-template-columns:repeat(2,minmax(0,1fr));margin-top:20px;padding-top:18px;display:grid}.completion-summary-card__metrics article{min-width:0}.completion-summary-card__metrics article+article{border-left:.5px solid var(--line-strong-alpha);padding-left:18px}.completion-summary-card__metrics strong{text-overflow:ellipsis;white-space:nowrap;margin-top:6px;font-size:17px;font-weight:600;line-height:1.3;display:block;overflow:hidden}.completion-summary-card__remark{color:var(--text-muted);border-top:.5px solid var(--line-strong-alpha);margin:16px 0 0;padding-top:14px;font-size:13px;line-height:1.5}.completion-section-heading{justify-content:space-between;align-items:baseline;gap:12px;margin:26px 2px 10px;display:flex}.completion-section-heading h2{letter-spacing:-.02em;margin:0;font-size:20px;font-weight:600}.completion-section-heading span{color:var(--text-faint);font-size:12px}.completion-groups{gap:16px;display:grid}.completion-group{background:var(--edge-highlight);box-shadow:0 .5px 1px var(--hairline);border-radius:22px;overflow:hidden}.completion-group__header{justify-content:space-between;align-items:center;gap:14px;min-height:72px;padding:14px 17px;display:flex}.completion-group__header>div{min-width:0}.completion-group__header h2{margin:0;font-size:16px;font-weight:600;line-height:1.35}.completion-group__header p{color:var(--text-faint);margin:4px 0 0;font-size:12px;line-height:1.35}.completion-status{text-overflow:ellipsis;white-space:nowrap;background:var(--control-track-soft);border-radius:9px;flex:none;max-width:116px;padding:5px 8px;font-size:11px;font-weight:600;line-height:1.2;overflow:hidden}.completion-status--incomplete{color:var(--danger-deep);background:var(--danger-soft)}.completion-status--complete,.completion-status--neutral{color:var(--text-muted)}.completion-course-list{border-top:.5px solid var(--line-strong-alpha)}.completion-course-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;min-height:68px;padding:12px 17px;display:grid;position:relative}.completion-course-row+.completion-course-row:before{content:"";background:var(--line-medium);height:.5px;position:absolute;top:0;left:17px;right:17px}.completion-course-row>div:first-child{min-width:0}.completion-course-row h3{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:15px;font-weight:600;line-height:1.35;overflow:hidden}.completion-course-row p{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;margin:3px 0 0;font-size:11px;line-height:1.35;overflow:hidden}.completion-course-row small{color:var(--text-muted);margin-top:4px;font-size:11px;line-height:1.35;display:block}.completion-course-row__result{flex-direction:column;align-items:flex-end;min-width:48px;display:flex}.completion-course-row__result>strong{font-size:20px;font-weight:600;line-height:1}.completion-course-row__result>span{margin-top:6px;font-size:11px;font-weight:600}.status-text--complete,.status-text--neutral{color:var(--text-muted)}.status-text--incomplete{color:var(--danger-deep)}.completion-group__empty{color:var(--text-faint);text-align:center;border-top:.5px solid var(--line-strong-alpha);margin:0;padding:20px 17px;font-size:13px}.completion-empty{color:var(--text-faint);text-align:center;background:var(--edge-highlight);border-radius:22px;padding:44px 20px}.completion-empty>span{font-size:32px;font-weight:300}.completion-empty h2{color:var(--text-primary);margin:8px 0 5px;font-size:17px;font-weight:600}.completion-empty p{margin:0;font-size:13px}.completion-footnote{color:var(--text-faint);text-align:center;margin:20px 8px 0;font-size:11px;line-height:1.5}@media (width<=370px){.completion-topbar,.completion-content{padding-left:16px;padding-right:16px}.completion-summary-card{padding:18px}.completion-summary-card__headline>strong{font-size:30px}}@media (prefers-reduced-motion:reduce){.completion-icon-button,.completion-state button,.completion-progress span{transition:none}.completion-icon-button:active,.completion-state button:active{transform:none}}@media (prefers-reduced-transparency:reduce){.completion-topbar{background:var(--bg-page);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-contrast:more){.completion-summary-card,.completion-group,.completion-empty{border:1px solid var(--line-soft)}}.glass-segmented{--glass-segmented-count:3;--glass-segmented-index:0;--glass-segmented-offset:0%;--glass-segmented-rim:4px;--glass-segmented-corner:12px;--glass-segmented-thumb-corner:9px;border-radius:var(--glass-segmented-corner);isolation:isolate;padding:0;display:block;position:relative}.glass-segmented__glass{z-index:0;border-radius:var(--glass-segmented-corner);background:var(--control-track-soft);border:1px solid var(--edge-highlight-faint);display:block;position:absolute;inset:0;overflow:hidden}.glass-segmented__glass>*{width:100%;height:100%}.glass-segmented__glass-fill{background:var(--bg-glass-faint);opacity:.55;pointer-events:none;width:100%;height:100%;display:block}.glass-segmented__thumb{z-index:1;top:var(--glass-segmented-rim);left:var(--glass-segmented-rim);width:calc((100% - var(--glass-segmented-rim) * 2) / var(--glass-segmented-count));height:calc(100% - var(--glass-segmented-rim) * 2);pointer-events:none;background:var(--bg-surface);border:1px solid var(--edge-highlight-faint);border-radius:var(--glass-segmented-thumb-corner);box-shadow:0 1px 2px var(--shadow-color-soft), inset 0 1px 0 var(--edge-highlight-soft);transform:translate3d(var(--glass-segmented-offset), 0, 0);will-change:transform;transition:transform .32s cubic-bezier(.22,.9,.24,1.08);position:absolute}.glass-segmented.is-dragging .glass-segmented__thumb{transition:none}.glass-segmented.is-dragging .glass-segmented__option{cursor:grabbing}.glass-segmented__track{z-index:2;grid-template-columns:repeat(var(--glass-segmented-count), minmax(0, 1fr));touch-action:pan-y;cursor:grab;-webkit-user-select:none;user-select:none;grid-template-rows:minmax(0,1fr);height:100%;min-height:0;display:grid;position:relative}.glass-segmented__option{min-width:0;min-height:0;color:var(--text-muted);white-space:nowrap;border-radius:var(--glass-segmented-thumb-corner);background:0 0;border:0;padding:0 10px;font-size:12px;font-weight:600;transition:color .16s}.glass-segmented__option.is-selected{color:var(--text-primary)}.glass-segmented__option:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}@media (prefers-reduced-motion:reduce){.glass-segmented__thumb{transition-duration:.01ms}}.grade-page{padding-bottom:calc(30px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--text-primary);background:radial-gradient(circle at 88% 3%, var(--bg-surface-glass), transparent 27%), linear-gradient(155deg, rgb(var(--bg-page-warm-rgb)) 0%, rgb(var(--bg-page-warm-rgb) / .93) 48%, rgb(var(--bg-page-warm-rgb) / .97) 100%)}.grade-results{padding-top:calc(8px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)))}.grade-topbar{justify-content:space-between;align-items:center;display:flex}.grade-topbar__actions{gap:9px;display:flex}.grade-icon-button{width:44px;height:44px;color:var(--text-tertiary);background:var(--bg-glass);border:.5px solid var(--edge-highlight);box-shadow:0 .5px 0 var(--hairline), 0 5px 16px #23272d0e;-webkit-backdrop-filter:blur(22px)saturate(145%);backdrop-filter:blur(22px)saturate(145%);border-radius:50%;place-items:center;padding:0;transition:transform .14s cubic-bezier(.23,1,.32,1);display:grid}.grade-icon-button:active{transform:scale(.96)}.grade-icon-button:disabled{opacity:.45}.grade-icon-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:21px;height:21px}.grade-icon-button span{letter-spacing:1px;margin-top:-4px;font-size:13px}.semester-select{margin-top:24px;display:block;position:relative}.semester-select>span{color:var(--card-ink-soft);letter-spacing:.4px;margin:0 0 8px 3px;font-size:12px;display:block}.semester-select .app-select__trigger{width:100%;height:52px;color:var(--card-ink);background:var(--bg-nav);border:.5px solid var(--edge-highlight-strong);box-shadow:0 .5px 0 var(--hairline), 0 8px 24px #282b310e;-webkit-backdrop-filter:blur(24px)saturate(150%);backdrop-filter:blur(24px)saturate(150%);border-radius:18px;padding:0 17px;font-size:16px;font-weight:500}.semester-select .app-select__chevron{color:var(--card-ink-soft)}.grade-summary{background:var(--bg-nav);border:.5px solid var(--edge-highlight-strong);box-shadow:0 .5px 0 var(--hairline), 0 12px 32px var(--map-tint-faint);-webkit-backdrop-filter:blur(26px)saturate(155%);backdrop-filter:blur(26px)saturate(155%);border-radius:22px;grid-template-columns:repeat(2,1fr);margin-top:18px;display:grid;overflow:hidden}.grade-summary article{padding:21px 20px 19px;position:relative}.grade-summary article+article:before{content:"";background:var(--line-medium);width:1px;position:absolute;top:20px;bottom:20px;left:0}.grade-summary article>span{color:var(--text-faint);font-size:13px}.grade-summary p{align-items:baseline;gap:5px;margin:7px 0 0;display:flex}.grade-summary strong{color:var(--card-ink);font-size:32px;font-weight:600;line-height:1}.grade-summary small{color:var(--text-faint);font-size:12px}.grade-summary .has-failed strong{color:var(--danger-deep)}.result-error{color:var(--danger-deep);margin:14px 2px 0;font-size:13px;line-height:1.5}.grade-section-heading{justify-content:space-between;align-items:center;margin-top:27px;display:flex}.grade-section-heading h2{letter-spacing:-.3px;margin:0;font-size:20px;font-weight:600}.grade-section-heading span{color:var(--card-ink-soft);font-size:12px}.grade-loading{min-height:100dvh;color:var(--card-ink-soft);flex-direction:column;justify-content:center;align-items:center;display:flex}.grade-loading--inline{min-height:260px}.grade-loading>p{margin:13px 0 0;font-size:13px}.grade-unavailable strong{color:var(--text-slate);font-size:18px}.grade-unavailable p{text-align:center;max-width:280px;line-height:1.5}.grade-unavailable button{min-height:40px;color:var(--text-tertiary);background:var(--bg-nav);border:.5px solid var(--edge-highlight-strong);border-radius:20px;margin-top:18px;padding:0 18px;font-weight:600;box-shadow:0 6px 18px #262a3014}.grade-list{background:var(--bg-nav);border:.5px solid var(--edge-highlight-strong);box-shadow:0 .5px 0 var(--hairline), 0 14px 36px var(--map-tint-faint);-webkit-backdrop-filter:blur(26px)saturate(155%);backdrop-filter:blur(26px)saturate(155%);border-radius:22px;margin-top:14px;overflow:hidden}.grade-row{align-items:center;gap:15px;padding:10px 17px;display:flex;position:relative}.grade-row+.grade-row{border-top:0}.grade-row+.grade-row:before{content:"";background:var(--line-medium);height:.5px;position:absolute;top:0;left:17px;right:17px}.grade-row.is-failed{background:linear-gradient(90deg, var(--danger-soft), transparent 58%)}.grade-row__main{flex:1;min-width:0}.grade-row__main>span{color:var(--text-placeholder);text-overflow:ellipsis;white-space:nowrap;font-size:10px;display:block;overflow:hidden}.grade-row h3{color:var(--card-ink);text-overflow:ellipsis;white-space:nowrap;margin:3px 0 5px;font-size:16px;font-weight:600;overflow:hidden}.grade-row__details{color:var(--card-ink-soft);flex-wrap:wrap;gap:5px 11px;font-size:10px;display:flex}.grade-row>strong{text-align:right;min-width:48px;font-size:29px;font-weight:500;line-height:1}.score--normal{color:var(--card-ink)}.score--failed{color:var(--danger-deep)}.empty-grade{color:var(--card-ink-soft);text-align:center;background:var(--bg-glass);border:.5px solid var(--edge-highlight-strong);box-shadow:0 12px 32px var(--map-tint-weak);-webkit-backdrop-filter:blur(24px)saturate(150%);backdrop-filter:blur(24px)saturate(150%);border-radius:22px;margin-top:14px;padding:52px 20px}.empty-grade>span{font-size:35px;font-weight:300}.empty-grade h2{color:var(--text-slate);margin:8px 0 5px;font-size:18px}.empty-grade p{margin:0;font-size:12px}@media (width<=380px){.grade-results{padding-left:16px;padding-right:16px}.grade-row{padding:9px 14px}.grade-row__details{gap:4px 8px}}.login-page{--ios-danger:var(--danger);--ios-icon-primary:var(--text-primary);--ios-icon-secondary:var(--text-faint);--ios-icon-disabled:var(--text-placeholder-soft);--ios-control-background:var(--control-bg);--ios-control-pressed:var(--control-pressed-bg);--ios-page-background:var(--bg-page);--ios-control-active:var(--text-label);--ios-link:var(--text-muted);--ios-button-primary:var(--bg-subtle);--ios-button-pressed:var(--text-primary);--login-ink:var(--ios-icon-primary);--login-muted:var(--text-muted);--login-line:var(--line-soft);isolation:isolate;width:100%;max-width:480px;min-height:100dvh;color:var(--login-ink);background:linear-gradient(158deg, var(--bg-glass-faint), transparent 46%), var(--ios-page-background);margin:0 auto;position:relative;overflow:hidden}.login-page:before,.login-page:after{z-index:-1;content:"";pointer-events:none;filter:blur(4px);border-radius:50%;position:absolute}.login-page:before{background:radial-gradient(circle at 38% 58%, var(--bg-glass-bright), #e5e5ea2e 52%, transparent 70%);width:340px;height:340px;top:-112px;right:-126px}.login-page:after{filter:blur(12px);background:radial-gradient(circle at 62%,#d1d1d64d,#e5e5ea14 54%,#0000 72%);width:330px;height:330px;bottom:58px;left:-156px}.login-content{z-index:1;padding:calc(52px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) 28px calc(24px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));position:relative}.login-brand{text-align:center;flex-direction:column;align-items:center;display:flex}.login-logo{background:linear-gradient(145deg, var(--edge-highlight), var(--bg-glass));border:1px solid var(--bg-surface-glass);width:68px;height:68px;box-shadow:0 18px 42px #1c1c1e1c, inset 0 1px 0 var(--edge-highlight-strong), inset 0 -1px 0 var(--line-faint);-webkit-backdrop-filter:blur(22px)saturate(145%);backdrop-filter:blur(22px)saturate(145%);border-radius:22px;place-items:center;display:grid}.login-logo-mark{width:40px;height:40px;overflow:visible}.login-logo-cap{fill:var(--ios-icon-primary)}.login-logo-base,.login-logo-tassel{fill:none;stroke:var(--ios-icon-primary);stroke-linecap:round;stroke-linejoin:round;stroke-width:2px}.login-logo-dot{fill:var(--ios-icon-primary)}.login-brand-copy{margin-top:14px}.login-brand h1{letter-spacing:-.01em;margin:0;font-size:32px;font-weight:700;line-height:1.05}.login-panel{background:linear-gradient(145deg, var(--bg-surface-soft), var(--bg-glass-faint));border:1px solid var(--edge-highlight-soft);box-shadow:0 30px 80px var(--shadow-color), 0 5px 18px var(--shadow-color-soft), inset 0 1px 0 var(--bg-glass-bright), inset 0 -1px 0 var(--line-faint);-webkit-backdrop-filter:blur(30px)saturate(145%);backdrop-filter:blur(30px)saturate(145%);border-radius:30px;margin-top:28px;padding:23px 22px 18px}.login-panel-heading{text-align:center;margin-bottom:18px}.login-panel-heading h2{letter-spacing:-.01em;margin:0;font-size:23px;font-weight:700;line-height:1.2}.login-panel-heading p{color:var(--login-muted);margin:6px 0 0;font-size:13px;line-height:1.45}.login-input-group{background:var(--bg-surface-soft);border:1px solid var(--login-line);border-radius:18px;overflow:hidden}.login-field{position:relative}.login-field+.login-field:before{z-index:2;content:"";background:var(--login-line);height:1px;position:absolute;top:0;left:48px;right:14px}.login-field>label{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.login-field:focus-within{z-index:1;background:var(--bg-glass-bright);box-shadow:inset 0 0 0 2px var(--line-heavy)}.login-input{align-items:center;height:58px;padding:0 12px 0 15px;display:flex}.login-input>svg{fill:none;width:21px;height:21px;stroke:var(--ios-icon-secondary);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;flex:none;margin-right:13px}.login-input input{min-width:0;height:100%;color:var(--login-ink);background:0 0;border:0;outline:0;flex:1;font-size:16px}.login-input input::placeholder{color:var(--text-placeholder)}.password-toggle{width:44px;height:44px;color:var(--ios-icon-secondary);transition:background-color .12s ease, transform .12s var(--ease-out);background:0 0;border:0;border-radius:12px;place-items:center;margin-right:-7px;padding:0;display:grid}.password-toggle:active{background:var(--ios-control-background);transform:scale(.96)}.password-toggle svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:22px;height:22px}.password-toggle-slash{opacity:0;transition:opacity .12s}.password-toggle.is-visible .password-toggle-slash{opacity:1}.login-error-slot{min-height:26px;margin:4px 5px 0}.login-error{color:var(--ios-danger);text-align:center;margin:0;font-size:12px;line-height:1.45}.login-error-enter-active{transition:opacity .16s var(--ease-out), transform .16s var(--ease-out)}.login-error-leave-active{transition:opacity .12s var(--ease-out), transform .12s var(--ease-out)}.login-error-enter-from,.login-error-leave-to{opacity:0;transform:translateY(-4px)}.login-submit{width:100%;height:53px;color:var(--text-on-accent);background:var(--ios-button-primary);border:1px solid var(--line-soft);box-shadow:0 14px 28px #1c1c1e33, inset 0 1px 0 #ffffff3b, inset 0 -1px 0 var(--line-soft);transition:background-color .12s ease, transform .12s var(--ease-out), opacity .12s ease;border-radius:999px;margin-top:4px;padding:0 20px;font-size:17px;font-weight:700}.login-submit:not(:disabled):active{background:var(--ios-button-pressed);box-shadow:0 8px 18px var(--shadow-color), inset 0 1px 0 var(--edge-highlight-faint);transform:scale(.98)}.login-submit:disabled{cursor:wait;opacity:.7}.login-submit-state,.login-submit-label,.login-submit-loading{place-items:center;display:grid}.login-submit-label,.login-submit-loading{transition:opacity .12s var(--ease-out), transform .12s var(--ease-out);grid-area:1/1}.login-submit-label.is-hidden{opacity:0;transform:translateY(-3px)}.login-submit-loading{opacity:0;grid-auto-flow:column;gap:8px;transform:translateY(3px)}.login-submit-loading.is-visible{opacity:1;transform:translateY(0)}.login-spinner{fill:none;stroke:currentColor;stroke-dasharray:42 16;stroke-linecap:round;stroke-width:2.5px;width:17px;height:17px;animation:.7s linear infinite login-spin}@keyframes login-spin{to{transform:rotate(360deg)}}.login-help{min-height:44px;color:var(--ios-link);background:0 0;border:0;border-radius:10px;margin:4px auto 0;padding:0 10px;font-size:13px;font-weight:500;display:block}.secure-login-note{min-height:30px;color:var(--login-muted);justify-content:center;align-items:center;margin-top:5px;font-size:12px;display:flex}.secure-login-note svg{fill:none;width:16px;height:16px;stroke:var(--ios-icon-secondary);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px;flex:none;margin-right:6px}.login-privacy-consent{color:var(--login-muted);background:var(--bg-glass-faint);border-radius:14px;grid-template-columns:24px minmax(0,1fr);align-items:start;gap:8px;margin-top:14px;padding:10px 11px;transition:background-color .14s,box-shadow .14s;display:grid}.login-privacy-consent.needs-attention{background:var(--danger-tint);box-shadow:inset 0 0 0 1px #ff383c3d}.login-privacy-check{width:22px;height:22px;color:var(--text-on-accent);background:var(--bg-surface-soft);border:1.5px solid var(--text-faint);transition:background-color .12s ease, border-color .12s ease, transform .12s var(--ease-out);border-radius:7px;place-items:center;margin:0;padding:0;display:grid}.login-privacy-check[aria-checked=true]{background:var(--bg-subtle);border-color:var(--bg-subtle)}.login-privacy-check:active{transform:scale(.92)}.login-privacy-check svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;width:16px;height:16px}.login-privacy-consent p{margin:1px 0 0;font-size:12px;line-height:1.55}.login-privacy-consent p button{color:var(--ios-link);font-size:inherit;font-weight:600;line-height:inherit;background:0 0;border:0;margin:0;padding:0;display:inline}.login-legal{color:var(--login-muted);text-align:center;place-items:center;margin:2px 0 0;font-size:12px;line-height:1.45;display:grid}.login-legal button{min-height:44px;color:var(--ios-link);font-size:inherit;background:0 0;border:0;border-radius:7px;padding:0 2px;font-weight:500}.login-toast{bottom:calc(20px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));white-space:normal;text-align:center;max-width:calc(100% - 36px)}@media (hover:hover) and (pointer:fine){.login-help:hover,.login-privacy-consent p button:hover,.login-legal button:hover{color:var(--ios-icon-primary)}}@media (height<=720px){.login-content{padding-top:calc(26px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));padding-bottom:calc(12px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)))}.login-logo{border-radius:18px;width:55px;height:55px}.login-logo-mark{width:34px;height:34px}.login-brand-copy{margin-top:10px}.login-brand h1{font-size:29px}.login-panel{border-radius:26px;margin-top:27px;padding:18px 20px 12px}.login-panel-heading{margin-bottom:14px}.login-panel-heading h2{font-size:20px}.login-panel-heading p{margin-top:3px;font-size:12px}.login-input{height:52px}.login-error-slot{min-height:26px;margin-top:2px}.login-submit{height:49px;margin-top:4px}.login-help{min-height:44px;margin-top:2px}.secure-login-note{min-height:25px;margin-top:0}.login-legal{margin-top:9px}}@media (width<=360px){.login-content{padding-left:20px;padding-right:20px}.login-panel{padding-left:18px;padding-right:18px}}@media (prefers-reduced-motion:reduce){.login-error-enter-from,.login-error-leave-to,.login-submit-label.is-hidden,.login-submit-loading{transform:none}.login-spinner{animation:none}}@media (prefers-reduced-transparency:reduce){.login-panel,.login-logo,.login-input-group{background:var(--ios-page-background);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-contrast:more){.login-panel,.login-input-group{border-color:var(--line-heavy)}}.pwa-install-promotion{z-index:70;right:max(14px,50vw - 226px);bottom:max(14px, var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));min-height:76px;color:var(--text-primary);background:var(--edge-highlight);border:.5px solid var(--line-medium);box-shadow:0 18px 46px var(--shadow-color), 0 3px 12px var(--shadow-color-soft);-webkit-backdrop-filter:blur(20px)saturate(165%);backdrop-filter:blur(20px)saturate(165%);border-radius:22px;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 14px;display:grid;position:fixed;left:max(14px,50vw - 226px)}.pwa-install-promotion--above-navigation{bottom:calc(84px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)))}.pwa-install-promotion>img{border-radius:12px;width:48px;height:48px}.pwa-install-promotion__copy{gap:3px;min-width:0;display:grid}.pwa-install-promotion__copy strong{font-size:16px;font-weight:600;line-height:1.2}.pwa-install-promotion__copy span{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:1.35;overflow:hidden}.pwa-install-promotion__install{min-width:58px;min-height:44px;color:var(--text-on-accent);background:var(--blue-strong);transition:transform .14s var(--ease-out), opacity .12s ease;border:0;border-radius:22px;padding:0 15px;font-size:15px;font-weight:600}.pwa-install-promotion__install:active{transform:scale(.97)}.pwa-install-promotion__install:disabled{cursor:wait;opacity:.58}.pwa-install-promotion__dismiss{width:44px;height:44px;color:var(--text-muted);background:0 0;border:0;place-items:center;padding:10px;display:grid;position:absolute;top:-9px;right:-9px}.pwa-install-promotion__dismiss:before{z-index:-1;content:"";background:var(--control-bg);width:24px;height:24px;box-shadow:0 1px 4px var(--shadow-color);border-radius:50%;position:absolute}.pwa-install-promotion__dismiss svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:1.8px;width:14px;height:14px}.pwa-install-guide-backdrop{z-index:120;padding-top:var(--safe-area-inset-top,env(safe-area-inset-top,0px));background:var(--scrim-strong);justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.pwa-install-guide{width:100%;max-width:480px;padding:10px 22px calc(18px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--text-primary);background:var(--bg-page);box-shadow:0 -16px 44px var(--shadow-color);border-radius:28px 28px 0 0;outline:none}.pwa-install-guide__handle{background:var(--text-placeholder-soft);border-radius:3px;width:36px;height:5px;margin:0 auto 18px}.pwa-install-guide header{align-items:center;gap:14px;display:flex}.pwa-install-guide header img{border-radius:14px;width:56px;height:56px}.pwa-install-guide header p,.pwa-install-guide header h2{margin:0}.pwa-install-guide header p{color:var(--text-faint);margin-bottom:3px;font-size:13px;line-height:1.3}.pwa-install-guide header h2{letter-spacing:-.02em;font-size:22px;font-weight:700;line-height:1.15}.pwa-install-guide__description{color:var(--text-muted);margin:18px 0 14px;font-size:15px;line-height:1.45}.pwa-install-guide ol{background:var(--edge-highlight);border-radius:22px;margin:0;padding:0;list-style:none;overflow:hidden}.pwa-install-guide li{grid-template-columns:28px minmax(0,1fr);align-items:center;gap:12px;min-height:58px;padding:8px 16px;display:grid;position:relative}.pwa-install-guide li:not(:last-child):after{content:"";background:var(--line-strong-alpha);height:.5px;position:absolute;bottom:0;left:56px;right:0}.pwa-install-guide li>span{width:28px;height:28px;color:var(--text-on-accent);background:var(--blue-strong);border-radius:50%;place-items:center;font-size:14px;font-weight:600;display:grid}.pwa-install-guide li p{margin:0;font-size:16px;line-height:1.35}.pwa-install-guide__actions{gap:10px;margin-top:18px;display:grid}.pwa-install-guide__browser,.pwa-install-guide__done{width:100%;min-height:50px;color:var(--text-on-accent);background:var(--blue-strong);transition:transform .14s var(--ease-out);border:0;border-radius:25px;justify-content:center;align-items:center;gap:6px;font-size:17px;font-weight:600;text-decoration:none;display:flex}.pwa-install-guide__browser svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:18px;height:18px}.pwa-install-guide__done.is-secondary{color:var(--blue-link);background:var(--blue-tint)}.pwa-install-guide__browser:active,.pwa-install-guide__done:active{transform:scale(.97)}.install-promotion-enter-active{transition:opacity .18s var(--ease-out), transform .22s var(--ease-out)}.install-promotion-leave-active{transition:opacity .12s var(--ease-out), transform .16s var(--ease-out)}.install-promotion-enter-from,.install-promotion-leave-to{opacity:0;transform:translateY(12px)}.install-guide-enter-active{transition:opacity .22s var(--ease-out)}.install-guide-leave-active{transition:opacity .16s var(--ease-out)}.install-guide-enter-active .pwa-install-guide{transition:transform .26s var(--ease-out)}.install-guide-leave-active .pwa-install-guide{transition:transform .18s var(--ease-out)}.install-guide-enter-from,.install-guide-leave-to{opacity:0}.install-guide-enter-from .pwa-install-guide,.install-guide-leave-to .pwa-install-guide{transform:translateY(100%)}@media (width<=370px){.pwa-install-promotion{grid-template-columns:44px minmax(0,1fr) auto;gap:10px;padding-left:12px;padding-right:12px;left:10px;right:10px}.pwa-install-promotion>img{width:44px;height:44px}.pwa-install-guide{padding-left:16px;padding-right:16px}}@media (prefers-reduced-transparency:reduce){.pwa-install-promotion{background:var(--bg-surface);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-reduced-motion:reduce){.pwa-install-promotion__install,.pwa-install-guide__browser,.pwa-install-guide__done,.install-promotion-enter-active,.install-promotion-leave-active,.install-guide-enter-active,.install-guide-leave-active,.install-guide-enter-active .pwa-install-guide,.install-guide-leave-active .pwa-install-guide{transition:none}.pwa-install-promotion__install:active,.pwa-install-guide__browser:active,.pwa-install-guide__done:active{transform:none}}.app-announcement-backdrop{z-index:120;padding:calc(22px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) 22px calc(22px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));background:var(--scrim-strong);place-items:center;display:grid;position:fixed;inset:0}.app-announcement-dialog{overscroll-behavior:contain;width:100%;max-width:340px;max-height:100%;color:var(--text-primary);text-align:center;background:var(--bg-surface-raised);box-shadow:0 20px 54px var(--shadow-color);border-radius:24px;outline:none;padding:24px 20px 18px;overflow-y:auto}.app-announcement-dialog__icon{width:52px;height:52px;color:var(--text-on-accent);background:var(--blue-strong);border-radius:15px;place-items:center;margin:0 auto;display:grid}.app-announcement-dialog__icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.65px;width:31px;height:31px}.app-announcement-dialog__eyebrow{color:var(--text-faint);margin:14px 0 3px;font-size:13px;font-weight:500;line-height:1.35}.app-announcement-dialog h2{letter-spacing:-.02em;margin:0;font-size:21px;font-weight:700;line-height:1.2}.app-announcement-dialog__description{color:var(--text-label);margin:12px 2px 0;font-size:15px;line-height:1.55}.app-announcement-dialog__promotion{color:inherit;background:var(--blue-chip);border:.5px solid var(--blue-tint-strong);transition:transform .14s var(--ease-out), opacity .12s ease;border-radius:16px;gap:3px;margin-top:14px;padding:12px;text-decoration:none;display:grid}.app-announcement-dialog__promotion:active{transform:scale(.98)}.app-announcement-dialog__promotion-tag{color:var(--text-muted);letter-spacing:.04em;font-size:11px;font-weight:600;line-height:1.25}.app-announcement-dialog__promotion-headline{color:var(--text-primary);text-wrap:balance;font-size:14px;font-weight:650;line-height:1.4}.app-announcement-dialog__promotion-url{min-width:0;color:var(--text-muted);overflow-wrap:anywhere;justify-content:center;align-items:center;gap:2px;font-size:12px;line-height:1.3;display:flex}.app-announcement-dialog__group{min-height:32px;color:var(--text-muted);background:var(--control-bg);border-radius:16px;align-items:center;margin:14px 0 0;padding:6px 12px;font-size:13px;font-weight:500;line-height:1.3;display:inline-flex}.app-announcement-dialog__actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:20px;display:grid}.app-announcement-dialog__actions button,.app-announcement-dialog__actions a{min-height:48px;transition:transform .14s var(--ease-out), opacity .12s ease;border:0;border-radius:24px;place-items:center;padding:0 12px;font-size:16px;font-weight:600;line-height:1.2;text-decoration:none;display:grid}.app-announcement-dialog__actions button{color:var(--text-secondary);background:var(--control-bg)}.app-announcement-dialog__actions a{color:var(--text-on-accent);background:var(--blue-strong)}.app-announcement-dialog__actions button:active,.app-announcement-dialog__actions a:active{transform:scale(.97)}.app-announcement-enter-active{transition:opacity .22s var(--ease-out)}.app-announcement-leave-active{transition:opacity .15s var(--ease-out)}.app-announcement-enter-active .app-announcement-dialog{transition:transform .24s var(--ease-out), opacity .18s ease}.app-announcement-leave-active .app-announcement-dialog{transition:transform .15s var(--ease-out), opacity .12s ease}.app-announcement-enter-from,.app-announcement-leave-to{opacity:0}.app-announcement-enter-from .app-announcement-dialog,.app-announcement-leave-to .app-announcement-dialog{opacity:0;transform:scale(.96)translateY(8px)}@media (width<=370px){.app-announcement-backdrop{padding-left:16px;padding-right:16px}}@media (prefers-reduced-transparency:reduce){.app-announcement-dialog{background:var(--bg-subtle)}}@media (prefers-reduced-motion:reduce){.app-announcement-dialog__actions button,.app-announcement-dialog__actions a,.app-announcement-dialog__promotion,.app-announcement-enter-active,.app-announcement-leave-active,.app-announcement-enter-active .app-announcement-dialog,.app-announcement-leave-active .app-announcement-dialog{transition:none}.app-announcement-dialog__actions button:active,.app-announcement-dialog__actions a:active,.app-announcement-dialog__promotion:active{transform:none}}.app-update-backdrop{z-index:130;padding-top:var(--safe-area-inset-top,env(safe-area-inset-top,0px));background:var(--scrim);justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.app-update-dialog{width:100%;max-width:480px;padding:10px 22px calc(18px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--text-primary);background:var(--bg-page);box-shadow:0 -16px 44px var(--shadow-color);border-radius:28px 28px 0 0;outline:none}.app-update-dialog__handle{background:var(--text-placeholder-soft);border-radius:3px;width:36px;height:5px;margin:0 auto 18px}.app-update-dialog header{align-items:center;gap:14px;display:flex}.app-update-dialog header img{border-radius:14px;width:56px;height:56px}.app-update-dialog header p,.app-update-dialog header h2{margin:0}.app-update-dialog header p{color:var(--text-faint);margin-bottom:3px;font-size:13px;line-height:1.3}.app-update-dialog header h2{letter-spacing:-.02em;font-size:22px;font-weight:700;line-height:1.15}.app-update-dialog__description{color:var(--text-secondary);white-space:pre-line;margin:18px 0 0;font-size:16px;line-height:1.5}.app-update-dialog__notice{color:var(--text-faint);margin:10px 0 0;font-size:13px;line-height:1.4}.app-update-dialog__notice--error{color:var(--danger-strong);background:var(--danger-tint);border-radius:14px;padding:12px 14px}.app-update-dialog__status{background:var(--bg-nav);border:1px solid var(--line-faint);border-radius:18px;align-items:center;gap:13px;min-height:70px;margin-top:18px;padding:14px;display:flex;position:relative;overflow:hidden}.app-update-dialog__status strong,.app-update-dialog__status span{display:block}.app-update-dialog__status strong{font-size:15px;line-height:1.35}.app-update-dialog__status div>span{color:var(--text-muted);margin-top:3px;font-size:13px;line-height:1.4}.app-update-dialog__status--applying:after{background:linear-gradient(90deg, transparent, var(--blue-strong) 42%, transparent);content:"";height:3px;animation:1.1s linear infinite app-update-progress;position:absolute;bottom:0;left:0;right:0;transform:translate(-100%)}.app-update-dialog__spinner,.app-update-dialog__status-icon{flex:0 0 34px;width:34px;height:34px}.app-update-dialog__spinner{border:3px solid var(--blue-tint);border-top-color:var(--blue-strong);border-radius:50%;animation:.72s linear infinite app-update-spin}.app-update-dialog__status-icon{color:var(--success-deep);background:var(--success-tint);border-radius:50%;place-items:center;display:grid}.app-update-dialog__status-icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.4px;width:22px;height:22px}.app-update-dialog__actions{grid-template-columns:1fr 1fr;gap:12px;margin-top:20px;display:grid}.app-update-dialog__actions--single{grid-template-columns:1fr}.app-update-dialog__actions button,.app-update-dialog__actions a{text-align:center;min-height:50px;transition:transform .14s var(--ease-out);border:0;border-radius:25px;justify-content:center;align-items:center;font-size:17px;font-weight:600;text-decoration:none;display:flex}.app-update-dialog__later{color:var(--text-secondary);background:var(--control-bg)}.app-update-dialog__apply{color:var(--text-on-accent);background:var(--blue-strong);gap:8px}.app-update-dialog__button-spinner{border:2px solid var(--edge-highlight-faint);border-top-color:var(--edge-highlight);border-radius:50%;width:17px;height:17px;animation:.72s linear infinite app-update-spin}.app-update-dialog__actions button:active,.app-update-dialog__actions a:active{transform:scale(.97)}.app-update-dialog__actions button:disabled{opacity:.58}@keyframes app-update-spin{to{transform:rotate(1turn)}}@keyframes app-update-progress{to{transform:translate(100%)}}.app-update-enter-active{transition:opacity .22s var(--ease-out)}.app-update-leave-active{transition:opacity .16s var(--ease-out)}.app-update-enter-active .app-update-dialog{transition:transform .26s var(--ease-out)}.app-update-leave-active .app-update-dialog{transition:transform .18s var(--ease-out)}.app-update-enter-from,.app-update-leave-to{opacity:0}.app-update-enter-from .app-update-dialog,.app-update-leave-to .app-update-dialog{transform:translateY(100%)}@media (width<=370px){.app-update-dialog{padding-left:16px;padding-right:16px}}@media (prefers-reduced-motion:reduce){.app-update-dialog__actions button,.app-update-dialog__actions a,.app-update-dialog__spinner,.app-update-dialog__button-spinner,.app-update-dialog__status--applying:after,.app-update-enter-active,.app-update-leave-active,.app-update-enter-active .app-update-dialog,.app-update-leave-active .app-update-dialog{transition:none;animation:none}.app-update-dialog__actions button:active,.app-update-dialog__actions a:active{transform:none}}.autorun-page{--autorun-bg:var(--bg-page);--autorun-text:var(--card-ink);--autorun-muted:var(--card-ink-soft);--autorun-accent:var(--blue-autorun);--autorun-glass:#e0d9d0db;--autorun-glass-border:#d6cec594;--autorun-shadow:0 16px 36px #4a423a1f;--autorun-card-border:var(--line-strong);width:100%;max-width:480px;min-height:100dvh;padding:calc(20px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) 14px calc(84px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--autorun-text);background:var(--autorun-bg);margin:0 auto}:root[data-theme=dark] .autorun-page,.theme-dark .autorun-page{--autorun-glass:#262420db;--autorun-glass-border:#ffffff1a;--autorun-shadow:0 16px 36px #00000085;--autorun-card-border:#3a3730}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .autorun-page{--autorun-glass:#262420db;--autorun-glass-border:#ffffff1a;--autorun-shadow:0 16px 36px #00000085;--autorun-card-border:#3a3730}}.autorun-page button,.autorun-page input{font:inherit}.autorun-page button{transition:transform .16s var(--ease-out), background-color .16s ease, box-shadow .16s ease;border:0}.autorun-page button:not(:disabled):active{transform:scale(.98)}.autorun-tab-navigation .bottom-navigation__item:not(:disabled):active{transform:none}.autorun-page button:disabled{cursor:default;opacity:.62}.autorun-glass{background:var(--autorun-glass);border:1px solid var(--autorun-glass-border);box-shadow:var(--autorun-shadow);-webkit-backdrop-filter:blur(18px)saturate(140%);backdrop-filter:blur(18px)saturate(140%)}.autorun-bottom-bar{--bottom-navigation-min-gap:0px;z-index:45;bottom:max(var(--bottom-navigation-min-gap), calc(var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)) - 12px));align-items:center;gap:8px;width:min(456px,100% - 24px);display:flex;position:fixed;left:50%;transform:translate(-50%)}html[data-platform=android] .autorun-bottom-bar{--bottom-navigation-min-gap:2px}.autorun-back{width:48px;height:48px;color:var(--text-primary);background:var(--bg-glass);box-shadow:0 10px 28px var(--shadow-color);-webkit-backdrop-filter:blur(20px)saturate(155%);backdrop-filter:blur(20px)saturate(155%);border-radius:50%;flex:0 0 48px;place-items:center;display:grid;border:1px solid var(--bg-surface-soft)!important}.autorun-back svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;width:24px;height:24px}.autorun-tab-navigation{flex:1;min-width:0}.autorun-page.is-run{background:radial-gradient(circle at 88% 4%, var(--blue-tint), transparent 25%), var(--bg-cell);padding-left:22px;padding-right:22px}.autorun-run-header{justify-content:space-between;align-items:flex-end;gap:16px;padding:8px 4px 6px;display:flex}.autorun-run-header h1{letter-spacing:-.02em;margin:0;font-size:30px;font-weight:800;line-height:1.1}.autorun-run-header p{color:var(--autorun-muted);margin:7px 0 0;font-size:13px;line-height:1.4}.autorun-run-refresh{width:42px;height:42px;color:var(--blue-link);background:var(--bg-surface-soft);box-shadow:0 8px 22px var(--shadow-color-soft);border-radius:50%;flex:0 0 42px;place-items:center;display:grid;border:1px solid var(--line-medium)!important}.autorun-run-refresh svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:20px;height:20px}.autorun-header{padding:6px 4px 4px}.autorun-header h1{letter-spacing:-.02em;margin:0;font-size:28px;font-weight:800;line-height:1.1}.autorun-header p{color:var(--autorun-muted);margin:6px 0 0;font-size:13px;line-height:1.4}.autorun-header.is-club{padding-bottom:0}.autorun-content,.autorun-account,.autorun-club{margin-top:12px}.autorun-page.is-run .autorun-content{gap:24px;margin-top:18px;display:grid}.autorun-account,.autorun-club{gap:12px;display:grid}.autorun-overview{background:var(--bg-surface-glass);border:1px solid var(--map-border);box-shadow:0 14px 36px #28354814, inset 0 1px var(--bg-surface-soft);border-radius:26px;padding:18px}.autorun-overview__heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.autorun-overview__heading span,.autorun-run-zone__heading>span{color:var(--text-cool);letter-spacing:.08em;font-size:10px;font-weight:750;line-height:1.2;display:block}.autorun-overview__heading h2,.autorun-run-zone__heading h2{color:var(--blue-ink);letter-spacing:-.02em;margin:4px 0 0;font-size:21px;font-weight:800;line-height:1.15}.autorun-overview__sync{max-width:56%;color:var(--blue-slate-muted);text-align:right;justify-content:flex-end;align-items:flex-start;gap:6px;margin:1px 0 0;font-size:11px;line-height:1.35;display:flex}.autorun-overview__sync i{background:var(--success);width:6px;height:6px;box-shadow:0 0 0 3px var(--success-tint);border-radius:50%;flex:0 0 6px;margin-top:4px}.autorun-overview__sync.is-loading i{background:var(--text-faint);box-shadow:0 0 0 3px var(--control-track-soft)}.autorun-overview__sync.is-empty i{background:var(--warning);box-shadow:0 0 0 3px var(--warning-soft)}.autorun-metrics{background:var(--map-surface);border:1px solid var(--map-border-soft);border-radius:19px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:18px;display:grid;overflow:hidden}.autorun-metric{min-width:0;padding:15px 14px 14px}.autorun-metric+.autorun-metric{border-left:1px solid var(--map-border)}.autorun-metric__heading{grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0;display:grid}.autorun-metric__heading>span{width:34px;height:34px;color:var(--text-on-accent);border-radius:11px;place-items:center;font-size:10px;font-weight:800;display:grid;box-shadow:0 7px 14px #274a701f}.autorun-metric__heading p,.autorun-metric__value{margin:0}.autorun-metric__heading p{color:var(--text-slate);white-space:nowrap;font-size:12px;font-weight:700}.autorun-metric__heading strong{color:var(--blue-slate-muted);font-size:10px;font-weight:750}.autorun-metric__value{color:var(--card-ink);letter-spacing:-.04em;margin-top:13px;font-size:25px;font-weight:850;line-height:1}.autorun-metric__value span{color:var(--blue-slate-muted);letter-spacing:0;font-size:10px;font-weight:650}.autorun-metric__progress{background:var(--line-soft);border-radius:999px;height:6px;margin-top:12px;overflow:hidden}.autorun-metric__progress span{border-radius:inherit;min-width:2px;height:100%;display:block}.autorun-metric--skeleton{align-content:center;gap:12px;min-height:122px;display:grid}.autorun-metric--skeleton>i{background:var(--bg-cell);border-radius:999px;width:72%;height:10px;display:block}.autorun-metric--skeleton>i:nth-child(2){width:48%;height:24px}.autorun-metric--skeleton>i:nth-child(3){width:100%;height:6px}.autorun-overview__empty{background:var(--map-surface);border:1px solid var(--map-border-soft);border-radius:19px;justify-content:space-between;align-items:center;gap:14px;min-height:118px;margin-top:18px;padding:16px;display:flex}.autorun-overview__empty strong{color:var(--text-slate);font-size:14px}.autorun-overview__empty p{color:var(--card-ink-soft);margin:5px 0 0;font-size:11px;line-height:1.4}.autorun-run-zone{justify-items:center;padding:0 0 10px;display:grid}.autorun-run-zone__heading{text-align:center}.autorun-run-zone__heading p{max-width:320px;color:var(--blue-slate-muted);overflow-wrap:anywhere;margin:6px auto 0;font-size:12px;line-height:1.45}.autorun-run-zone.is-success .autorun-run-zone__heading p{color:var(--success-deep)}.autorun-run-zone.is-error .autorun-run-zone__heading p{color:var(--danger-strong)}.autorun-section-heading h2,.autorun-empty h2{margin:0;font-size:20px;font-weight:800}.autorun-section-heading p,.autorun-empty p{color:var(--autorun-muted);margin:6px 0 0;font-size:13px;line-height:1.45}.autorun-secondary,.autorun-primary,.autorun-logout{border-radius:16px;min-height:44px;padding:10px 16px;font-weight:700}.autorun-primary{color:var(--text-on-accent);background:var(--autorun-accent);box-shadow:0 10px 24px var(--blue-tint-strong)}.autorun-secondary{color:var(--autorun-text);background:linear-gradient(145deg, var(--chart-grid), var(--chart-grid));box-shadow:0 8px 18px #4a423a17}.autorun-refresh{width:fit-content}.autorun-run-command{aspect-ratio:1;width:min(226px,68vw);color:var(--blue-ink-deep);text-align:center;background:radial-gradient(circle at 34% 25%, var(--bg-surface-raised), transparent 34%), linear-gradient(145deg, var(--bg-surface) 5%, var(--bg-cell) 72%, var(--blue-soft) 100%);box-shadow:0 0 0 7px var(--edge-highlight-soft), 0 0 0 8px var(--chart-bar), 0 22px 45px #2d435e33, inset 0 2px 1px var(--bg-glass-bright);transition:transform .16s var(--ease-out), box-shadow .16s var(--ease-out), border-color .16s ease;border-radius:50%;align-content:center;place-items:center;gap:7px;margin:12px auto 4px;padding:30px 26px;display:grid;position:relative;transform:translateZ(0);border:2px solid #172033e6!important}.autorun-run-command:before{pointer-events:none;content:"";border:1px solid var(--line-strong-alpha);border-radius:inherit;position:absolute;inset:10px}.autorun-run-command__kicker{color:var(--text-on-accent);letter-spacing:.12em;background:var(--blue-ink-deep);border-radius:999px;padding:4px 9px;font-size:9px;font-weight:800;line-height:1}.autorun-run-command__flag{fill:none;width:52px;height:52px;stroke:var(--blue-schedule);stroke-linecap:round;stroke-linejoin:round;stroke-width:4.5px;margin:1px 0 -1px}.autorun-run-command strong{letter-spacing:-.03em;font-size:25px;font-weight:850;line-height:1.05}.autorun-run-command small{max-width:158px;color:var(--blue-slate-muted);font-size:11px;font-weight:650;line-height:1.4}.autorun-run-command.is-success{border-color:var(--success-deep)!important}.autorun-run-command.is-success .autorun-run-command__kicker{background:var(--success-deep)}.autorun-run-command.is-success .autorun-run-command__flag{stroke:var(--success-deep)}.autorun-run-command.is-error{border-color:var(--danger-strong)!important}.autorun-run-command.is-error .autorun-run-command__kicker{background:var(--danger-strong)}.autorun-run-command.is-error .autorun-run-command__flag{stroke:var(--danger-strong)}.autorun-run-command:not(:disabled):active{box-shadow:0 0 0 7px var(--edge-highlight-soft), 0 0 0 8px var(--chart-bar), 0 12px 25px #2d435e2e, inset 0 2px 1px var(--bg-glass-bright);transform:scale(.96)}@media (hover:hover) and (pointer:fine){.autorun-run-command:not(:disabled):hover{box-shadow:0 0 0 7px var(--bg-surface-soft), 0 0 0 8px var(--chart-bar), 0 27px 52px #2d435e3d, inset 0 2px 1px var(--bg-glass-bright);transform:translateY(-3px)}}.autorun-empty{border-radius:20px;padding:24px}.autorun-empty button{margin-top:14px}.autorun-club-hero{text-align:center;background:linear-gradient(160deg, var(--chart-grid), var(--chart-grid));border:1px solid var(--autorun-card-border);border-radius:16px;padding:13px 16px 8px;overflow:hidden}.autorun-club-hero p{color:var(--card-ink-soft);letter-spacing:.02em;margin:0;font-size:12px}.autorun-truck{width:200px;height:100px;margin:6px auto 0;position:relative}.autorun-truck svg{z-index:1;width:150px;animation:1s linear infinite autorun-truck-bounce;position:absolute;bottom:5px;left:0}.autorun-truck>span{background:var(--card-ink);height:2px;position:absolute;bottom:4px;left:-14px;right:-14px;overflow:hidden}.autorun-truck>span:after{content:"";background:var(--bg-surface);width:48px;height:2px;animation:1.3s linear infinite autorun-road;position:absolute}.autorun-club-progress{background:linear-gradient(160deg, var(--chart-grid), var(--chart-grid));border:1px solid var(--autorun-card-border);border-radius:12px;padding:11px 12px}.autorun-club-progress>div{background:var(--chart-grid);border-radius:999px;height:11px;overflow:hidden}.autorun-club-progress>div span{background:linear-gradient(90deg, var(--warning-soft), var(--warning-deep));border-radius:inherit;height:100%;transition:width .18s var(--ease-out);display:block}.autorun-club-progress p{color:var(--card-ink-soft);justify-content:space-between;margin:8px 0 0;font-size:13px;display:flex}.autorun-club-panel{background:linear-gradient(160deg, var(--chart-grid), var(--chart-grid));border:1px solid var(--autorun-card-border);border-radius:14px;padding:12px}.autorun-sign-main,.autorun-schedule-panel{justify-content:space-between;align-items:center;gap:12px;display:flex}.autorun-sign-main>div,.autorun-schedule-panel>div{min-width:0}.autorun-club-panel h3{color:var(--text-strong);overflow-wrap:anywhere;margin:6px 0 4px;font-size:16px;font-weight:800}.autorun-schedule-panel h3{margin-top:0}.autorun-club-panel p{color:var(--card-ink-soft);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.45}.autorun-sign-badge{max-width:100%;color:var(--text-on-accent);background:#5d8d6a;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:800;display:inline-flex}.autorun-sign-badge.is-signback{background:var(--blue-slate)}.autorun-sign-button{min-width:92px;min-height:44px;color:var(--text-on-accent);background:linear-gradient(135deg, var(--success-strong), #51bf91);border-radius:11px;flex:none;padding:0 14px;font-size:14px;font-weight:800}.autorun-sign-button.is-signback{background:linear-gradient(135deg, var(--blue-slate), #6096c7)}.autorun-sign-detail{color:var(--ink-deepest);grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px;font-size:12px;display:grid}.autorun-sign-detail span{overflow-wrap:anywhere;background:var(--edge-highlight-faint);border-radius:10px;min-height:30px;padding:7px 8px}.autorun-switch{flex:0 0 52px;width:52px;height:32px;position:relative}.autorun-switch.is-saving{opacity:.65}.autorun-switch input{z-index:2;opacity:0;position:absolute;inset:-6px}.autorun-switch span{background:var(--text-placeholder-soft);border-radius:999px;transition:background-color .16s;position:absolute;inset:0}.autorun-switch span:after{content:"";background:var(--bg-surface);width:24px;height:24px;transition:transform .16s var(--ease-out);border-radius:50%;position:absolute;top:4px;left:4px;box-shadow:0 2px 7px #272d3340}.autorun-switch input:checked+span{background:var(--success-strong)}.autorun-switch input:checked+span:after{transform:translate(20px)}.autorun-club-board{background:linear-gradient(160deg, #85b385, var(--chart-grid));border:1px solid var(--autorun-card-border);border-radius:16px;overflow:hidden}.autorun-club-board>header{border-bottom:1px solid var(--chart-grid);justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.autorun-club-board>header h3{color:var(--text-strong);margin:0;font-size:18px}.autorun-club-board>header span{color:var(--card-ink-soft);font-size:13px}.autorun-club-calendar{border-bottom:1px solid var(--chart-grid);grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;padding:10px 8px;display:grid}.autorun-club-calendar button{min-width:0;min-height:44px;color:var(--card-ink-soft);background:0 0;border-radius:10px;place-items:center;gap:1px;padding:3px 1px;font-size:11px;display:grid}.autorun-club-calendar strong{width:25px;height:25px;color:var(--text-label);border-radius:50%;place-items:center;font-size:13px;font-weight:650;display:grid}.autorun-club-calendar button.is-active strong{color:var(--text-on-accent);background:var(--warning)}.autorun-club-empty{color:var(--card-ink-soft);padding:18px 14px;font-size:13px}.autorun-club-list{background:var(--chart-grid);gap:10px;padding:10px;display:grid}.autorun-club-list article{background:linear-gradient(150deg, var(--chart-grid), var(--chart-grid));border:1px solid var(--autorun-card-border);border-radius:12px;gap:6px;padding:12px;display:grid}.autorun-club-list h4,.autorun-club-list p{margin:0}.autorun-club-list h4{color:var(--text-strong);font-size:16px}.autorun-club-list p{color:var(--card-ink-soft);font-size:13px}.autorun-club-list footer{color:var(--card-ink-soft);border-top:1px dashed var(--line-strong-alpha);justify-content:space-between;align-items:center;gap:8px;margin-top:5px;padding-top:8px;font-size:12px;display:flex}.autorun-club-list footer span{overflow-wrap:anywhere;min-width:0}.autorun-club-list footer button{min-width:82px;min-height:40px;color:var(--text-on-accent);border-radius:10px;flex:none;padding:8px 11px;font-size:12px;font-weight:700}.autorun-club-list footer button.is-join{background:linear-gradient(135deg, var(--warning), var(--warning))}.autorun-club-list footer button.is-cancel{background:linear-gradient(135deg, var(--danger), var(--danger))}.autorun-account{margin-top:16px}.autorun-account-card{border-radius:18px;align-items:center;gap:12px;min-height:82px;padding:16px;display:flex}.autorun-account-icon{width:42px;height:42px;color:var(--text-on-accent);background:var(--blue-autorun);border-radius:50%;flex:0 0 42px;place-items:center;font-size:20px;font-weight:800;display:grid}.autorun-account-card strong{font-size:16px}.autorun-account-card p{color:var(--autorun-muted);margin:4px 0 0;font-size:13px}.autorun-logout{width:100%;color:var(--danger);background:var(--bg-surface-glass)}.autorun-toasts{z-index:70;top:calc(70px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));gap:8px;width:min(420px,100% - 36px);display:grid;position:fixed;left:50%;transform:translate(-50%)}.autorun-toasts>div{color:var(--autorun-text);text-align:center;background:var(--bg-surface-raised);border-radius:15px;padding:12px 16px;font-size:14px;font-weight:650;box-shadow:0 12px 28px #0f172a26}.autorun-toasts .success{color:var(--success-deep);border:1px solid var(--success)}.autorun-toasts .error{color:var(--danger-deep);border:1px solid var(--danger)}.autorun-loading,.autorun-login-backdrop{z-index:80;background:var(--scrim);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);place-items:center;padding:20px;display:grid;position:fixed;inset:0}.autorun-login-backdrop{z-index:90}.autorun-login{border-radius:18px;gap:13px;width:min(420px,100%);padding:20px;display:grid}.autorun-login h2,.autorun-login p{margin:0}.autorun-login h2{font-size:21px}.autorun-login>p{color:var(--autorun-muted);font-size:13px;line-height:1.45}.autorun-login label{color:var(--autorun-muted);gap:6px;font-size:12px;display:grid}.autorun-login input{width:100%;min-height:52px;color:var(--autorun-text);background:var(--bg-nav);border:1px solid var(--bg-nav);border-radius:14px;outline:0;padding:12px 14px;font-size:16px}.autorun-login input:focus{border-color:var(--blue-ring);box-shadow:0 0 0 3px var(--blue-tint)}.autorun-login .autorun-login__error{color:var(--danger-deep)}.autorun-login .autorun-login__status{color:var(--card-ink-soft)}.autorun-login__back{min-height:44px;color:var(--card-ink-soft);background:0 0}.autorun-skeleton{position:relative;overflow:hidden}.autorun-skeleton:after{content:"";background:linear-gradient(120deg, transparent, var(--bg-glass-faint), transparent);animation:1.5s infinite autorun-shimmer;position:absolute;inset:0}@keyframes autorun-truck-bounce{50%{transform:translateY(3px)}}@keyframes autorun-road{0%{transform:translate(220px)}to{transform:translate(-60px)}}@keyframes autorun-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media (width>=700px){.autorun-page{max-width:760px}.autorun-bottom-bar{width:min(736px,100% - 32px)}.autorun-run-header,.autorun-page.is-run .autorun-content{width:min(640px,100%);margin-left:auto;margin-right:auto}}@media (width<=350px){.autorun-page{padding-left:10px;padding-right:10px}.autorun-page.is-run{padding-left:16px;padding-right:16px}.autorun-bottom-bar{gap:6px;width:calc(100% - 16px)}.autorun-back{flex-basis:44px;width:44px;height:44px}.autorun-tab-navigation.bottom-navigation--compact{min-height:52px}}@media (prefers-reduced-transparency:reduce){.autorun-glass,.autorun-tab-navigation,.autorun-back{background:var(--bg-surface);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-reduced-motion:reduce){.autorun-page *,.autorun-page :before,.autorun-page :after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.past-exams-page{width:100%;max-width:480px;min-height:100dvh;padding:calc(8px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) 20px calc(28px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--text-primary);background:var(--bg-page);margin:0 auto}.past-exams-topbar{z-index:10;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;min-height:48px;display:grid;position:sticky;top:0}.past-exams-topbar:before{z-index:-1;top:calc(-8px - var(--safe-area-inset-top,env(safe-area-inset-top,0px)));content:"";background:var(--bg-surface-glass);-webkit-backdrop-filter:blur(18px)saturate(145%);backdrop-filter:blur(18px)saturate(145%);position:absolute;bottom:-8px;left:-20px;right:-20px}.past-exams-topbar>div{text-align:center;min-width:0}.past-exams-topbar h1{letter-spacing:-.01em;margin:0;font-size:18px;font-weight:650;line-height:1.15}.past-exams-topbar p{color:var(--text-faint);margin:2px 0 0;font-size:11px;line-height:1.2}.past-exams-icon-button{width:44px;height:44px;color:var(--text-tertiary);background:var(--bg-nav);box-shadow:0 .5px 0 var(--hairline);transition:transform .14s var(--ease-out), background-color .14s ease;border:0;border-radius:50%;place-items:center;padding:0;text-decoration:none;display:grid}.past-exams-icon-button:active{background:var(--control-bg);transform:scale(.96)}.past-exams-icon-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:21px;height:21px}.past-exams-overview{background:var(--edge-highlight);border:.5px solid var(--line-soft);min-height:112px;box-shadow:0 .5px 0 var(--map-tint-mist);border-radius:24px;grid-template-columns:58px minmax(0,1fr) auto;align-items:center;gap:14px;margin-top:16px;padding:18px;display:grid}.past-exams-overview img{object-fit:contain;width:58px;height:58px;display:block}.past-exams-overview>div{min-width:0}.past-exams-overview small,.past-exams-browser>header small{color:var(--text-faint);letter-spacing:.08em;font-size:10px;font-weight:650;line-height:1.2}.past-exams-overview h2{letter-spacing:-.015em;margin:3px 0 0;font-size:20px;font-weight:680;line-height:1.2}.past-exams-overview p{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;margin:5px 0 0;font-size:13px;line-height:1.25;overflow:hidden}.past-exams-overview>span{color:var(--text-muted);background:var(--bg-page);border-radius:10px;align-self:start;padding:5px 8px;font-size:11px;font-weight:600}.past-exams-search{background:var(--edge-highlight);border:.5px solid var(--line-soft);border-radius:16px;align-items:center;gap:10px;min-height:52px;margin-top:14px;padding:0 14px;display:flex}.past-exams-search:focus-within{border-color:var(--blue-ring);box-shadow:0 0 0 3px var(--blue-tint)}.past-exams-search>svg{fill:none;width:20px;height:20px;stroke:var(--text-faint);stroke-linecap:round;stroke-width:1.7px;flex:none}.past-exams-search input{height:50px;color:var(--text-primary);background:0 0;border:0;outline:0;flex:1;padding:0;font-size:15px}.past-exams-search input::placeholder{color:var(--text-faint)}.past-exams-search input::-webkit-search-cancel-button{appearance:none;display:none}.past-exams-search>button{width:32px;height:44px;color:var(--text-faint);background:0 0;border:0;place-items:center;padding:0;display:grid}.past-exams-search>button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:1.8px;width:18px;height:18px}.past-exams-breadcrumbs{scrollbar-width:none;align-items:center;gap:2px;min-height:40px;margin:8px -4px 0;padding:0 4px;display:flex;overflow-x:auto}.past-exams-breadcrumbs::-webkit-scrollbar{display:none}.past-exams-breadcrumbs>span{color:var(--text-placeholder-soft);font-size:19px}.past-exams-breadcrumbs button{min-width:max-content;min-height:36px;color:var(--blue-strong);background:0 0;border:0;border-radius:10px;padding:0 7px;font-size:13px;font-weight:550}.past-exams-breadcrumbs button[aria-current=page]{color:var(--text-muted)}.past-exams-browser{background:var(--edge-highlight);border:.5px solid var(--line-soft);box-shadow:0 .5px 0 var(--map-tint-mist);border-radius:24px;margin-top:2px;overflow:hidden}.past-exams-browser>header{border-bottom:.5px solid var(--line-medium);justify-content:space-between;align-items:center;gap:12px;min-height:66px;padding:13px 18px 11px;display:flex}.past-exams-browser>header h2{margin:2px 0 0;font-size:20px;font-weight:660;line-height:1.2}.past-exams-browser>header>span{color:var(--text-faint);white-space:nowrap;font-size:13px;font-weight:500}.past-exams-list{padding-left:14px}.past-exams-row{width:100%;min-height:68px;color:inherit;font:inherit;text-align:left;background:0 0;border:0;grid-template-columns:42px minmax(0,1fr) 24px;align-items:center;gap:12px;padding:9px 14px 9px 0;text-decoration:none;display:grid;position:relative}.past-exams-row:after{content:"";background:var(--line-medium);height:.5px;position:absolute;bottom:0;left:54px;right:0}.past-exams-row:last-child:after{display:none}.past-exams-row:active{background:var(--control-track-soft)}.past-exams-row--file{grid-template-columns:minmax(0,1fr) 58px;gap:6px}.past-exams-row--file:active{background:0 0}.past-exams-row__open{min-width:0;min-height:50px;color:inherit;border-radius:10px;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:12px;text-decoration:none;display:grid}.past-exams-row__open:active{background:var(--control-track-soft)}.past-exams-download-button{width:58px;min-height:34px;color:var(--blue-link);background:var(--blue-tint);border:0;border-radius:17px;justify-self:end;place-items:center;padding:0;font-family:inherit;font-size:13px;font-weight:600;line-height:1;display:grid}.past-exams-download-button:active{color:var(--text-on-accent);background:var(--blue-link)}.past-exams-download-button:disabled{cursor:wait;opacity:.58}.past-exams-folder-icon,.past-exams-file-icon{border-radius:12px;place-items:center;width:42px;height:42px;display:grid}.past-exams-folder-icon{color:var(--blue-strong);background:var(--blue-tint)}.past-exams-folder-icon svg{width:24px;height:24px;fill:var(--blue-tint-weak);stroke:currentColor;stroke-linejoin:round;stroke-width:1.6px}.past-exams-file-icon{color:var(--text-muted);letter-spacing:-.02em;background:var(--control-bg);font-size:10px;font-weight:750;overflow:hidden}.past-exams-file-icon[data-kind=document]{color:var(--danger-deep);background:#ff3b301a}.past-exams-file-icon[data-kind=slides]{color:var(--warning-deep);background:#ff95001f}.past-exams-file-icon[data-kind=sheet]{color:var(--success-deep);background:#34c7591c}.past-exams-file-icon[data-kind=image]{color:var(--chart-violet);background:#af52de1a}.past-exams-file-icon[data-kind=archive]{color:var(--blue-slate-soft);background:#6373811f}.past-exams-row__copy{gap:4px;min-width:0;display:grid}.past-exams-row__copy strong{overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:15px;font-weight:580;line-height:1.3;display:-webkit-box;overflow:hidden}.past-exams-row__copy small{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1.25;overflow:hidden}.past-exams-row__chevron,.past-exams-row__action{fill:none;width:20px;height:20px;stroke:var(--text-placeholder-soft);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;justify-self:end}.past-exams-row__action{stroke:var(--text-faint)}.past-exams-empty{min-height:230px;color:var(--text-faint);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:32px 24px;display:flex}.past-exams-empty svg{fill:#8e8e9314;stroke:currentColor;stroke-linejoin:round;stroke-width:1.4px;width:42px;height:42px;margin-bottom:12px}.past-exams-empty strong{color:var(--text-muted);font-size:15px}.past-exams-empty p{margin:6px 0 0;font-size:13px}.past-exams-state{min-height:calc(100dvh - 80px);color:var(--text-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:32px 20px;display:flex}.past-exams-state--error strong{color:var(--text-primary);margin-top:12px;font-size:17px}.past-exams-state--error p{max-width:280px;margin:7px 0 0;font-size:13px;line-height:1.5}.past-exams-state--error button{min-height:44px;color:var(--text-on-accent);background:var(--blue-strong);border:0;border-radius:22px;margin-top:18px;padding:0 20px;font-weight:600}.past-exams-state__icon{width:44px;height:44px;color:var(--text-faint);background:var(--control-bg);border-radius:50%;place-items:center;font-size:22px;font-weight:650;display:grid}.past-exams-source{max-width:360px;color:var(--text-faint);text-align:center;margin:16px auto 0;font-size:11px;line-height:1.5}@media (width<=420px){.past-exams-overview{grid-template-columns:58px minmax(0,1fr)}.past-exams-overview>span{display:none}}@media (width<=370px){.past-exams-page{padding-left:16px;padding-right:16px}.past-exams-topbar:before{left:-16px;right:-16px}.past-exams-overview{grid-template-columns:52px minmax(0,1fr);padding:16px}.past-exams-overview img{width:52px;height:52px}}@media (prefers-reduced-motion:reduce){.past-exams-icon-button{transition:none}.past-exams-icon-button:active{transform:none}}@media (prefers-reduced-transparency:reduce){.past-exams-topbar:before{background:var(--bg-page);-webkit-backdrop-filter:none;backdrop-filter:none}}.library-page{--library-accent:var(--blue-strong);--library-danger:var(--danger);--library-label:var(--text-primary);--library-secondary:var(--text-muted);--library-tertiary:var(--text-faint);--library-control:var(--control-bg);--library-separator:var(--line-strong-alpha);width:100%;max-width:480px;min-height:100dvh;color:var(--library-label);background:var(--bg-page);margin:0 auto}.library-topbar{z-index:12;min-height:calc(58px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));padding:var(--safe-area-inset-top,env(safe-area-inset-top,0px)) 10px 0;background:var(--bg-surface-overlay);-webkit-backdrop-filter:blur(18px)saturate(160%);grid-template-columns:48px 1fr 48px;align-items:center;display:grid;position:sticky;top:0}.library-topbar h1{text-align:center;margin:0;font-size:17px;font-weight:650}.library-icon-button{background:0 0;border:0;border-radius:50%;place-items:center;width:44px;height:44px;padding:0;display:grid}.library-icon-button:active:not(:disabled){background:var(--line-faint)}.library-icon-button:disabled{color:var(--text-placeholder-soft)}.library-icon-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;width:22px;height:22px}.library-icon-button svg.is-spinning{animation:.8s linear infinite library-spin}.library-page button:focus-visible,.library-page input:focus-visible,.library-page select:focus-visible,.library-page textarea:focus-visible{outline:3px solid var(--blue-ring);outline-offset:2px}.library-tabs{z-index:11;top:calc(58px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));background:var(--library-control);border-radius:12px;grid-template-columns:repeat(3,1fr);gap:3px;margin:8px 22px 0;padding:3px;display:grid;position:sticky}.library-tabs button{min-height:44px;color:var(--library-secondary);background:0 0;border:0;border-radius:9px;padding:0 8px;font-size:14px;font-weight:600;transition:color .14s,background .14s}.library-tabs button.is-selected{color:var(--library-label);background:var(--edge-highlight-strong);box-shadow:0 1px 3px var(--shadow-color-soft)}.library-content{padding:20px 22px calc(48px + env(safe-area-inset-bottom));gap:24px;display:grid}.library-filter-card,.library-reservation-card,.library-list-message--card{background:var(--edge-highlight);border-radius:24px}.library-filter-card{gap:16px;padding:20px;display:grid}.library-field,.library-modal-field{gap:8px;display:grid}.library-field>span,.library-modal-field>span{color:var(--library-secondary);font-size:13px;font-weight:600}.library-field input,.library-modal-field input,.library-modal-field select,.library-modal-field textarea{width:100%;min-height:52px;color:var(--library-label);background:var(--bg-page);border:1px solid #0000;border-radius:14px;outline:none;padding:0 14px;font-size:16px}.library-modal-field textarea{resize:vertical;min-height:76px;padding-block:13px}.library-field input:focus,.library-modal-field input:focus,.library-modal-field select:focus,.library-modal-field textarea:focus{border-color:var(--library-accent);box-shadow:0 0 0 3px var(--blue-tint-strong)}.library-date-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.library-date-grid .library-field:first-child:last-child,.library-date-grid .library-field:first-child:nth-last-child(3){grid-column:1/-1}.library-filter-note{color:var(--library-tertiary);margin:-2px 0 0;font-size:13px;line-height:1.45}.library-primary-button{width:100%;min-height:52px;color:var(--text-on-accent);background:var(--library-accent);border:0;border-radius:15px;padding:0 18px;font-size:16px;font-weight:650;transition:transform .12s,opacity .12s}.library-primary-button:active:not(:disabled){transform:scale(.98)}.library-primary-button:disabled{opacity:.45}.library-results,.library-reservations{gap:14px;display:grid}.library-results>header{justify-content:space-between;align-items:end;gap:16px;padding:0 2px;display:flex}.library-results>header h2,.library-results>header p,.library-results>header strong{margin:0}.library-results>header h2{letter-spacing:-.01em;font-size:21px;font-weight:680}.library-results>header p{max-width:250px;color:var(--library-tertiary);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:13px;overflow:hidden}.library-results>header strong{color:var(--library-accent);white-space:nowrap;font-size:14px;font-weight:650}.library-view-switch{background:var(--library-control);border-radius:12px;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px;padding:3px;display:grid}.library-view-switch button{min-height:44px;color:var(--library-secondary);background:0 0;border:0;border-radius:9px;padding:0 12px;font-size:14px;font-weight:650;transition:color .14s,background .14s}.library-view-switch button.is-selected{color:var(--library-label);background:var(--bg-surface);box-shadow:0 1px 3px var(--shadow-color-soft)}.library-seat-map{background:var(--bg-surface);box-shadow:0 1px 0 var(--map-tint-mist);border-radius:20px;overflow:hidden}.library-seat-map__toolbar{border-bottom:.5px solid var(--library-separator);justify-content:space-between;align-items:center;gap:12px;min-height:58px;padding:7px 8px 7px 16px;display:flex}.library-seat-map__toolbar p{color:var(--library-secondary);margin:0;font-size:12px;line-height:1.35}.library-seat-map__toolbar>div{background:var(--bg-page);border-radius:12px;flex:none;grid-template-columns:44px 58px 44px;display:grid;overflow:hidden}.library-seat-map__toolbar button{min-width:44px;min-height:44px;color:var(--library-accent);background:0 0;border:0;padding:0;font-size:18px;font-weight:650}.library-seat-map__toolbar button:nth-child(2){border-right:.5px solid var(--library-separator);border-left:.5px solid var(--library-separator);font-size:12px}.library-seat-map__toolbar button:active:not(:disabled){background:var(--line-faint)}.library-seat-map__toolbar button:disabled{color:var(--library-tertiary);opacity:.45}.library-seat-map__viewport{background:var(--bg-subtle);overscroll-behavior:contain;touch-action:pan-x pan-y pinch-zoom;-webkit-overflow-scrolling:touch;min-height:220px;max-height:62dvh;overflow:auto}.library-seat-map__canvas{min-width:100%;transition:width .18s var(--ease-out);line-height:0;position:relative}.library-seat-map__canvas>img{pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:auto;display:block}.library-map-seat{z-index:1;border:2px solid var(--edge-highlight-strong);background:var(--success);width:18px;height:18px;box-shadow:0 1px 3px var(--shadow-color-soft), 0 0 0 1px var(--shadow-color-soft);border-radius:50%;padding:0;transition:transform .12s,filter .12s;position:absolute;transform:translate(-1px,-1px)}.library-map-seat:before{content:"";position:absolute;inset:-8px}.library-map-seat:active:not(:disabled){z-index:2;filter:brightness(.92);transform:translate(-1px,-1px)scale(1.18)}.library-map-seat.is-reserved{background:var(--warning)}.library-map-seat.is-unavailable,.library-map-seat.is-view-only{background:var(--text-faint)}.library-map-seat:disabled{opacity:.82}.library-seat-map__legend{border-top:.5px solid var(--library-separator);flex-wrap:wrap;gap:9px 16px;padding:13px 16px 15px;display:flex}.library-seat-map__legend span{color:var(--library-secondary);align-items:center;gap:6px;font-size:12px;display:inline-flex}.library-seat-map__legend i{background:var(--text-faint);border-radius:50%;width:10px;height:10px}.library-seat-map__legend i.is-available{background:var(--success)}.library-seat-map__legend i.is-reserved{background:var(--warning)}.library-map-loading,.library-map-fallback{color:var(--library-secondary);background:var(--bg-surface-soft);border-radius:14px;margin:0;padding:12px 14px;font-size:13px;line-height:1.45}.library-map-loading{text-align:center}.library-seat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.library-seat-card{text-align:left;background:var(--edge-highlight);border:1px solid #0000;border-radius:20px;min-height:126px;padding:16px;transition:transform .12s,background .12s;display:grid}.library-seat-card:active:not(:disabled){background:var(--bg-subtle);transform:scale(.98)}.library-seat-card:disabled{color:inherit;opacity:.62}.library-seat-card__number{text-overflow:ellipsis;white-space:nowrap;align-self:start;font-size:16px;font-weight:650;line-height:1.25;overflow:hidden}.library-seat-card__location{color:var(--library-secondary);text-overflow:ellipsis;white-space:nowrap;align-self:end;font-size:12px;overflow:hidden}.library-seat-card__status{color:var(--library-accent);place-self:end start;margin-top:6px;font-size:13px;font-weight:650}.library-seat-card.is-reserved .library-seat-card__status,.library-seat-card.is-unavailable .library-seat-card__status{color:var(--library-tertiary)}.library-reservation-card{padding:18px}.library-reservation-card>header{justify-content:space-between;align-items:center;gap:12px;display:flex}.library-reservation-card>header span,.library-reservation-card>header strong{font-size:13px;font-weight:650}.library-reservation-card>header span{color:var(--library-tertiary)}.library-reservation-card>header strong{color:var(--library-accent)}.library-reservation-card>header strong.is-danger,.library-reservation-card footer button.is-danger,.library-action-buttons button.is-danger{color:var(--library-danger)}.library-reservation-card h2{margin:14px 0 5px;font-size:18px;font-weight:680}.library-reservation-card>p{color:var(--library-secondary);margin:0;font-size:14px;line-height:1.4}.library-reservation-card dl{border-top:.5px solid var(--library-separator);grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0 0;padding-top:14px;display:grid}.library-reservation-card dl div{gap:3px;display:grid}.library-reservation-card dt{color:var(--library-tertiary);font-size:12px}.library-reservation-card dd{margin:0;font-size:14px;font-weight:600}.library-reservation-card .library-leave-note,.library-reservation-card .library-auto-renewal-note,.library-reservation-card .library-violation-note{border-radius:12px;margin-top:12px;padding:10px 12px;font-size:13px}.library-reservation-card .library-leave-note{color:var(--text-secondary);background:var(--bg-page)}.library-reservation-card .library-violation-note{color:var(--danger-strong);background:var(--danger-tint)}.library-reservation-card .library-auto-renewal-note.is-active{color:var(--blue-slate);background:var(--blue-tint)}.library-reservation-card .library-auto-renewal-note.is-success{color:var(--success-deep);background:var(--success-tint)}.library-reservation-card .library-auto-renewal-note.is-warning{color:var(--warning-deep);background:var(--warning-soft)}.library-reservation-card footer{border-top:.5px solid var(--library-separator);flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:16px;padding-top:14px;display:flex}.library-reservation-card footer button{min-height:44px;color:var(--library-accent);background:var(--bg-page);border:0;border-radius:12px;padding:0 14px;font-size:14px;font-weight:650}.library-reservation-card footer button.is-auto-renew{color:var(--text-on-accent);background:var(--library-accent)}.library-list-loader,.library-page-state,.library-list-message{text-align:center;place-items:center;min-height:220px;padding:28px 20px;display:grid}.library-page-state{min-height:55dvh}.library-page-state h2,.library-list-message h2,.library-list-message h3,.library-page-state p,.library-list-message p{margin:0}.library-page-state h2,.library-list-message h2,.library-list-message h3{font-size:18px}.library-page-state p,.library-list-message p{max-width:310px;color:var(--library-secondary);font-size:14px;line-height:1.5}.library-page-state>button,.library-list-message>button{min-height:44px;color:var(--library-accent);background:var(--library-control);border:0;border-radius:13px;padding:0 18px;font-weight:650}.library-state-mark,.library-list-message>span{width:44px;height:44px;color:var(--library-tertiary);background:var(--library-control);border-radius:50%;place-items:center;font-size:20px;font-weight:700;display:grid}.library-page-state--error,.library-list-message--error{gap:12px}.library-inline-error{color:var(--danger-strong);margin:0;font-size:13px;line-height:1.4}.library-modal-backdrop{z-index:80;background:var(--scrim-strong);justify-content:center;align-items:flex-end;padding:18px 10px 0;display:flex;position:fixed;inset:0}.library-modal{width:min(100%,480px);max-height:calc(92dvh - env(safe-area-inset-top));padding:8px 22px calc(18px + env(safe-area-inset-bottom));background:var(--bg-surface);border-radius:26px 26px 0 0;gap:16px;display:grid;overflow-y:auto;box-shadow:0 -16px 50px #00000024}.library-modal--compact{padding-bottom:calc(22px + env(safe-area-inset-bottom));gap:12px}.library-modal__handle{background:var(--control-pressed-bg);border-radius:999px;width:36px;height:5px;margin:0 auto 2px}.library-modal>header{justify-content:space-between;align-items:start;gap:16px;display:flex}.library-modal>header span{color:var(--library-tertiary);font-size:13px;font-weight:600}.library-modal h2{letter-spacing:-.01em;margin:4px 0 0;font-size:22px;font-weight:700}.library-modal>header>button{width:44px;height:44px;color:var(--library-secondary);background:var(--library-control);border:0;border-radius:50%;margin:-6px -8px 0 0;font-size:25px}.library-confirm-summary,.library-verification-note{background:var(--bg-page);border-radius:16px;gap:5px;padding:14px;display:grid}.library-confirm-summary p,.library-verification-note p,.library-modal--compact>p{color:var(--library-secondary);margin:0;font-size:14px;line-height:1.45}.library-confirm-summary strong,.library-verification-note strong{font-size:15px}.library-confirm-summary small{color:var(--library-tertiary);font-size:12px}.library-captcha-row{grid-template-columns:minmax(0,1fr) 116px;align-items:end;gap:10px;display:grid}.library-captcha-row>button{height:52px;color:var(--library-accent);background:var(--library-control);border:0;border-radius:14px;place-items:center;padding:4px;font-size:13px;font-weight:650;display:grid;overflow:hidden}.library-captcha-row img{object-fit:contain;width:100%;height:100%}.library-renewal-loading{min-height:56px;color:var(--library-secondary);text-align:center;background:var(--bg-page);border-radius:14px;padding:16px;font-size:14px}.library-modal__footnote{color:var(--library-tertiary);text-align:center;margin:-6px 4px 0;font-size:12px;line-height:1.4}.library-action-buttons{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:6px;display:grid}.library-action-buttons button{background:var(--library-control);border:0;border-radius:14px;min-height:50px;padding:0 12px;font-weight:650}.library-action-buttons button:last-child:not(.is-danger){color:var(--text-on-accent);background:var(--library-accent)}.library-action-buttons button.is-danger{background:var(--danger-soft)}.library-toast{z-index:100;right:50%;bottom:calc(24px + env(safe-area-inset-bottom));max-width:calc(100% - 40px);color:var(--text-on-accent);text-align:center;background:var(--overlay-toast);border-radius:14px;padding:12px 18px;font-size:14px;font-weight:600;position:fixed;transform:translate(50%)}.library-modal-enter-active,.library-modal-leave-active{transition:opacity .22s var(--ease-out)}.library-modal-enter-active .library-modal,.library-modal-leave-active .library-modal{transition:transform .26s var(--ease-out)}.library-modal-enter-from,.library-modal-leave-to{opacity:0}.library-modal-enter-from .library-modal,.library-modal-leave-to .library-modal{transform:translateY(100%)}.library-toast-enter-active{transition:opacity .18s ease, transform .18s var(--ease-out)}.library-toast-leave-active{transition:opacity .12s,transform .12s}.library-toast-enter-from,.library-toast-leave-to{opacity:0;transform:translate(50%,8px)}@keyframes library-spin{to{transform:rotate(360deg)}}@media (width<=370px){.library-tabs{margin-inline:16px}.library-content{padding-inline:16px}.library-filter-card{padding:16px}.library-date-grid,.library-seat-grid{grid-template-columns:1fr}.library-date-grid .library-field:first-child:nth-last-child(3){grid-column:auto}.library-captcha-row{grid-template-columns:minmax(0,1fr) 100px}}@media (prefers-reduced-motion:reduce){.library-icon-button svg.is-spinning{animation:none}.library-modal-enter-active,.library-modal-leave-active,.library-modal-enter-active .library-modal,.library-modal-leave-active .library-modal,.library-toast-enter-active,.library-toast-leave-active,.library-seat-card,.library-seat-map__canvas,.library-map-seat,.library-view-switch button,.library-primary-button{transition-duration:.01ms}}:root[data-theme=dark] .landing-page,.theme-dark .landing-page{--landing-ink:var(--text-primary);--landing-muted:var(--blue-slate-soft)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .landing-page{--landing-ink:var(--text-primary);--landing-muted:var(--blue-slate-soft)}}:root[data-theme=dark] .landing-page img,.theme-dark .landing-page img{filter:brightness(.88)saturate(.94)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .landing-page img{filter:brightness(.88)saturate(.94)}}.landing-page{--landing-blue:var(--blue-autorun);--landing-ink:var(--text-strong);--landing-muted:var(--blue-slate-muted);--landing-line:var(--line-soft);min-height:100vh;color:var(--landing-ink);background:radial-gradient(circle at 80% 10%, #76b5ff33, transparent 29rem), radial-gradient(circle at 15% 34%, #a4dbbf29, transparent 27rem), var(--bg-page-blue);overflow:hidden}.landing-usage-backdrop{z-index:110;background:var(--scrim-strong);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);place-items:center;padding:24px;display:grid;position:fixed;inset:0}.landing-usage-dialog{width:min(100%,520px);color:var(--landing-ink);background:var(--bg-glass-bright);border:1px solid var(--edge-highlight-strong);-webkit-backdrop-filter:blur(24px)saturate(150%);backdrop-filter:blur(24px)saturate(150%);border-radius:32px;padding:38px;position:relative;box-shadow:0 28px 90px #1117223d}.landing-usage-dialog h2{letter-spacing:-.05em;margin:10px 0 0;font-size:clamp(30px,5vw,40px)}.landing-usage-dialog__intro,.landing-usage-dialog__footnote{color:var(--landing-muted);margin:10px 0 0;font-size:14px;line-height:1.6}.landing-usage-dialog__close{width:38px;height:38px;color:var(--blue-slate-soft);cursor:pointer;background:var(--control-track-soft);border:0;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:20px;right:20px}.landing-usage-dialog__close svg,.landing-usage-option__arrow{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:19px;height:19px}.landing-usage-options{gap:12px;margin-top:26px;display:grid}.landing-usage-option{width:100%;min-height:78px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:var(--bg-surface-glass);border:1px solid var(--line-soft);transition:transform .18s var(--ease-out), background-color .18s ease, box-shadow .18s ease;border-radius:21px;grid-template-columns:50px 1fr auto;align-items:center;gap:12px;padding:12px 16px 12px 12px;text-decoration:none;display:grid}.landing-usage-option:hover{background:var(--bg-surface);transform:translateY(-2px);box-shadow:0 12px 28px #3a49621a}.landing-usage-option:active{transform:scale(.985)}.landing-usage-option__icon{width:50px;height:50px;color:var(--landing-blue);background:var(--blue-tint);border-radius:16px;place-items:center;display:grid}.landing-usage-option--orange .landing-usage-option__icon{color:var(--warning-deep);background:var(--warning-soft)}.landing-usage-option--green .landing-usage-option__icon{color:var(--success-strong);background:var(--success-tint)}.landing-usage-option__icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:25px;height:25px}.landing-usage-option__copy{gap:3px;display:grid}.landing-usage-option__copy strong{letter-spacing:-.02em;font-size:17px}.landing-usage-option__copy small{color:var(--landing-muted);font-size:12px;line-height:1.45}.landing-usage-option__arrow{color:var(--blue-slate-muted)}.landing-usage-enter-active,.landing-usage-leave-active{transition:opacity .22s}.landing-usage-enter-active .landing-usage-dialog,.landing-usage-leave-active .landing-usage-dialog{transition:transform .32s var(--ease-out), opacity .22s ease}.landing-usage-enter-from,.landing-usage-leave-to{opacity:0}.landing-usage-enter-from .landing-usage-dialog,.landing-usage-leave-to .landing-usage-dialog{opacity:0;transform:translateY(14px)scale(.97)}.landing-page button,.landing-page a{-webkit-tap-highlight-color:transparent}.landing-nav{z-index:80;top:max(14px, var(--safe-area-inset-top,env(safe-area-inset-top,0px)));background:var(--bg-glass);border:1px solid var(--bg-surface-glass);-webkit-backdrop-filter:blur(24px)saturate(170%);backdrop-filter:blur(24px)saturate(170%);border-radius:24px;grid-template-columns:auto 1fr auto;align-items:center;gap:24px;width:min(1120px,100% - 48px);min-height:64px;margin:0 auto;padding:7px 8px 7px 14px;display:grid;position:fixed;left:24px;right:24px;box-shadow:0 14px 40px #3a49621c}.landing-brand{color:inherit;letter-spacing:-.02em;align-items:center;gap:10px;font-size:17px;font-weight:720;text-decoration:none;display:inline-flex}.landing-brand img{border-radius:12px;width:38px;height:38px;box-shadow:0 5px 14px #1217221f}.landing-nav__links{justify-content:center;align-items:center;gap:6px;display:flex}.landing-nav__links a,.landing-nav__links button{min-height:42px;color:var(--blue-slate-soft);cursor:pointer;background:0 0;border:0;border-radius:16px;padding:0 16px;font-size:14px;font-weight:600;line-height:42px;text-decoration:none;transition:color .16s,background-color .16s}.landing-nav__links a:hover,.landing-nav__links button:hover{color:var(--text-strong);background:var(--control-track-soft)}.landing-nav__open{min-height:48px;color:var(--text-on-accent);cursor:pointer;transition:transform .14s var(--ease-out);background:#151b26;border:0;border-radius:18px;padding:0 20px;font-size:14px;font-weight:680}.landing-nav__open:active,.landing-button:active{transform:scale(.97)}.landing-hero{grid-template-columns:minmax(380px,.8fr) minmax(520px,1.2fr);align-items:center;gap:44px;width:min(1240px,100% - 48px);min-height:820px;margin:0 auto;padding:154px 24px 80px;display:grid}.landing-hero__copy{z-index:4;max-width:560px;position:relative}.landing-eyebrow{color:var(--text-cool);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:13px;font-weight:720;line-height:1.4}.landing-hero h1{letter-spacing:-.065em;margin:20px 0 0;font-size:clamp(54px,5.3vw,74px);font-weight:780;line-height:.98}.landing-hero__line{white-space:nowrap;display:block}.landing-hero__line--accent{color:var(--landing-blue)}.landing-hero__description{max-width:520px;color:var(--blue-slate-soft);margin:28px 0 0;font-size:19px;line-height:1.75}.landing-hero__actions,.landing-final-cta__actions{flex-wrap:wrap;gap:12px;margin-top:34px;display:flex}.landing-button{cursor:pointer;min-height:56px;transition:transform .14s var(--ease-out), opacity .12s ease, box-shadow .18s ease;border:0;border-radius:20px;justify-content:center;align-items:center;gap:8px;padding:0 23px;font-size:16px;font-weight:680;display:inline-flex}.landing-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:20px;height:20px}.landing-button--primary{color:var(--text-on-accent);background:var(--landing-blue);box-shadow:0 12px 24px var(--blue-tint-strong)}.landing-button--primary:hover{box-shadow:0 16px 32px var(--blue-tint-strong)}.landing-button--secondary{color:var(--blue-ink);background:var(--bg-surface-soft);border:1px solid var(--line-soft);box-shadow:0 9px 22px var(--shadow-color-soft);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.landing-button:disabled{cursor:wait;opacity:.58}.landing-hero__note{color:var(--text-cool);margin:20px 0 0;font-size:13px}.landing-hero__item{opacity:0;animation:landing-hero-enter .7s var(--ease-out) forwards;transform:translateY(18px)}.landing-hero__item:nth-child(2){animation-delay:80ms}.landing-hero__item:nth-child(3){animation-delay:.15s}.landing-hero__item:nth-child(4){animation-delay:.22s}.landing-hero__item:nth-child(5){animation-delay:.28s}@keyframes landing-hero-enter{to{opacity:1;transform:translateY(0)}}.landing-hero-stage{--pointer-x:0;--pointer-y:0;perspective:1500px;isolation:isolate;height:660px;position:relative}.landing-orb{z-index:-2;filter:blur(3px);border-radius:50%;position:absolute}.landing-orb--blue{background:radial-gradient(circle at 35% 30%, var(--blue-soft), var(--blue-soft) 45%, #a8d2ff2e 72%);width:450px;height:450px;top:40px;right:15px}.landing-orb--green{background:radial-gradient(circle at 35% 30%, var(--success-tint), var(--success-tint) 48%, #bce7cc14 72%);width:290px;height:290px;bottom:35px;right:190px}.landing-phone{background:var(--bg-page);border:6px solid var(--ink-deepest);box-shadow:0 34px 70px #25324a33, inset 0 0 0 1px var(--edge-highlight-faint);will-change:transform;border-radius:45px;transition:transform .42s cubic-bezier(.2,.8,.2,1);position:absolute;overflow:hidden}.landing-phone img{object-fit:cover;width:100%;height:100%;display:block}.landing-phone__island{z-index:2;background:var(--ink-deepest);border-radius:14px;width:31%;height:23px;position:absolute;top:11px;left:50%;transform:translate(-50%)}.landing-phone--center{z-index:3;width:286px;height:622px;transform:translateX(-50%) rotateY(calc(var(--pointer-x) * 5deg)) rotateX(calc(var(--pointer-y) * -4deg));animation:landing-phone-arrive .9s .16s var(--ease-out) both;top:5px;left:50%}.landing-phone--left,.landing-phone--right{z-index:1;opacity:.94;border-width:5px;border-radius:37px;width:224px;height:486px;top:94px}.landing-phone--left{transform:translateX(calc(var(--pointer-x) * -13px)) rotate(-8deg) rotateY(12deg);animation:landing-left-arrive 1s .25s var(--ease-out) both;left:0}.landing-phone--right{transform:translateX(calc(var(--pointer-x) * 13px)) rotate(8deg) rotateY(-12deg);animation:landing-right-arrive 1s .25s var(--ease-out) both;right:0}@keyframes landing-phone-arrive{0%{opacity:0;transform:translate(-50%)translateY(45px)scale(.94)}}@keyframes landing-left-arrive{0%{opacity:0;transform:translate(-55px,35px)rotate(-12deg)}}@keyframes landing-right-arrive{0%{opacity:0;transform:translate(55px,35px)rotate(12deg)}}.landing-float-card{z-index:6;background:var(--bg-surface-soft);border:1px solid var(--bg-glass-bright);-webkit-backdrop-filter:blur(18px)saturate(160%);backdrop-filter:blur(18px)saturate(160%);border-radius:19px;align-items:center;gap:10px;min-width:184px;padding:12px 14px;animation:4.8s ease-in-out infinite landing-float;display:flex;position:absolute;box-shadow:0 16px 36px #313f5724}.landing-float-card strong,.landing-float-card small{display:block}.landing-float-card strong{font-size:13px}.landing-float-card small{color:var(--text-cool);margin-top:3px;font-size:11px}.landing-float-card__icon{border-radius:12px;flex:none;place-items:center;width:36px;height:36px;display:grid}.landing-float-card__icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:20px;height:20px}.landing-float-card__icon--blue{color:var(--blue-autorun);background:var(--blue-soft)}.landing-float-card__icon--green{color:var(--success-strong);background:var(--success-tint)}.landing-float-card__dot{background:var(--success);width:10px;height:10px;box-shadow:0 0 0 6px var(--success-tint);border-radius:50%}.landing-float-card--schedule{top:8px;left:-35px}.landing-float-card--library{animation-delay:-1.6s;bottom:144px;right:-18px}.landing-float-card--sync{animation-delay:-3.1s;bottom:35px;left:22px}@keyframes landing-float{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.landing-trust{background:var(--bg-nav);border:1px solid var(--bg-surface-glass);width:min(1100px,100% - 48px);box-shadow:0 22px 55px var(--shadow-color-soft);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-radius:30px;grid-template-columns:repeat(3,1fr);margin:0 auto 120px;padding:28px 16px;display:grid}.landing-trust div{text-align:center;gap:6px;padding:0 28px;display:grid}.landing-trust div+div{border-left:1px solid var(--landing-line)}.landing-trust strong{letter-spacing:-.02em;font-size:18px}.landing-trust span{color:var(--text-cool);font-size:13px;line-height:1.5}.landing-section{width:min(1120px,100% - 48px);margin:0 auto;padding:110px 0}.landing-section-heading{max-width:660px;margin-bottom:62px}.landing-section-heading h2,.landing-life__copy h2,.landing-platform__copy h2,.landing-final-cta h2{letter-spacing:-.055em;margin:15px 0 0;font-size:clamp(42px,5vw,66px);font-weight:760;line-height:1.06}.landing-section-heading>p:last-child,.landing-life__copy>p:last-child,.landing-platform__copy>p:last-of-type{max-width:610px;color:var(--landing-muted);margin:23px 0 0;font-size:17px;line-height:1.75}.landing-section-heading--center{text-align:center;margin-left:auto;margin-right:auto}.landing-bento{grid-template-rows:520px 520px;grid-template-columns:1.08fr .92fr;gap:22px;display:grid}.landing-bento-card{background:var(--bg-surface-soft);border:1px solid var(--bg-glass-bright);border-radius:38px;min-width:0;position:relative;overflow:hidden;box-shadow:0 24px 60px #3a496217}.landing-bento-card--large{background:linear-gradient(155deg, var(--blue-soft), var(--bg-surface-soft) 62%);grid-row:1/span 2}.landing-bento-card--grades{background:linear-gradient(150deg, var(--chart-axis), var(--bg-surface-glass))}.landing-bento-card--classroom{background:linear-gradient(150deg, var(--warning-soft), var(--bg-surface-glass))}.landing-bento-card__copy{z-index:3;padding:38px 40px 0;position:relative}.landing-feature-icon{border-radius:15px;place-items:center;width:46px;height:46px;display:grid}.landing-feature-icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.65px;width:24px;height:24px}.landing-feature-icon--blue{color:var(--blue-schedule);background:var(--blue-soft)}.landing-feature-icon--purple{color:var(--chart-violet);background:var(--chart-axis)}.landing-feature-icon--orange{color:var(--warning-deep);background:var(--warning-soft)}.landing-bento-card__copy>p{color:var(--text-cool);margin:19px 0 0;font-size:13px;font-weight:680}.landing-bento-card__copy h3{letter-spacing:-.04em;margin:8px 0 0;font-size:30px;line-height:1.17}.landing-bento-card__copy>span:last-child{max-width:410px;color:var(--text-cool);margin-top:14px;font-size:15px;line-height:1.65;display:block}.landing-bento-card__screen{background:var(--bg-page);border:4px solid var(--text-strong);position:absolute;overflow:hidden;box-shadow:0 26px 55px #303d5433}.landing-bento-card__screen img{object-fit:cover;width:100%;height:100%;display:block}.landing-bento-card__screen--schedule{border-radius:40px;width:74%;height:76%;bottom:-22%;right:-5%;transform:rotate(-4deg)}.landing-bento-card__screen--classroom{border-radius:34px;width:64%;height:106%;bottom:-50%;right:-5%;transform:rotate(5deg)}.landing-dual-preview{gap:14px;display:flex;position:absolute;bottom:-48%;right:-5%;transform:rotate(4deg)}.landing-dual-preview img{object-fit:cover;border:4px solid var(--text-strong);border-radius:31px;width:180px;height:390px;box-shadow:0 22px 45px #303d5429}.landing-showcase{padding-top:150px}.landing-feature-row{grid-template-columns:1.05fr .95fr;align-items:center;gap:80px;min-height:720px;margin-top:80px;display:grid}.landing-feature-row--reverse{grid-template-columns:.95fr 1.05fr}.landing-feature-row--reverse .landing-feature-row__visual{order:2}.landing-feature-row--reverse .landing-feature-row__copy{order:1}.landing-feature-row__visual{border-radius:48px;height:700px;position:relative;overflow:hidden}.landing-feature-row__visual--library{background:linear-gradient(150deg, var(--success-tint), var(--success-tint))}.landing-feature-row__visual--resources{background:linear-gradient(150deg, var(--blue-soft), var(--blue-soft))}.landing-phone--feature{width:294px;height:638px;top:58px;left:50%;transform:translate(-50%)}.landing-availability,.landing-resource-pill{z-index:4;min-height:48px;color:var(--card-ink);background:var(--bg-surface-soft);border:1px solid var(--edge-highlight-strong);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:18px;align-items:center;gap:9px;padding:0 17px;font-size:13px;font-weight:680;display:inline-flex;position:absolute;right:24px;box-shadow:0 12px 28px #31483e26}.landing-availability{top:180px}.landing-availability i{background:var(--success);width:9px;height:9px;box-shadow:0 0 0 5px var(--success-tint);border-radius:50%}.landing-resource-pill{top:148px}.landing-feature-row__copy{max-width:480px}.landing-feature-number{color:#0a84ff42;letter-spacing:-.05em;font-size:68px;font-weight:760;line-height:1}.landing-feature-row__copy .landing-eyebrow{margin-top:28px}.landing-feature-row__copy h3{letter-spacing:-.05em;margin:14px 0 0;font-size:clamp(38px,4vw,54px);line-height:1.08}.landing-feature-row__copy>p:not(.landing-eyebrow){color:var(--landing-muted);margin:24px 0 0;font-size:17px;line-height:1.75}.landing-feature-row__copy ul{gap:13px;margin:28px 0 0;padding:0;list-style:none;display:grid}.landing-feature-row__copy li{color:var(--ink-deepest);padding-left:27px;font-size:15px;position:relative}.landing-feature-row__copy li:before{content:"";background:var(--blue-soft);width:17px;height:17px;box-shadow:inset 0 0 0 5px var(--blue-soft);border:1px solid var(--blue-ring);border-radius:50%;position:absolute;top:.22em;left:0}.landing-life{background:linear-gradient(145deg, #18202d, var(--ink-deepest));border-radius:52px;grid-template-columns:.8fr 1.2fr;align-items:center;gap:50px;width:min(1240px,100% - 48px);min-height:800px;margin:110px auto;padding:90px 80px 0;display:grid;overflow:hidden;box-shadow:0 34px 80px #151f2f38}.landing-life__copy{color:var(--text-on-accent);align-self:center;padding-bottom:90px}.landing-life__copy .landing-eyebrow{color:var(--blue-soft)}.landing-life__copy>p:last-child{color:var(--blue-slate-soft)}.landing-life__visual{align-self:stretch;position:relative}.landing-phone--life{width:274px;height:595px;top:85px}.landing-phone--life-left{z-index:1;left:5%;transform:rotate(-7deg)}.landing-phone--life-right{z-index:2;right:2%;transform:rotate(7deg)}.landing-platform{background:linear-gradient(145deg, var(--blue-chip), var(--blue-soft));border:1px solid var(--bg-glass-bright);border-radius:52px;grid-template-columns:.82fr 1.18fr;align-items:center;gap:44px;width:min(1240px,100% - 48px);min-height:760px;margin:190px auto 100px;padding:78px 0 78px 78px;display:grid;overflow:hidden;box-shadow:0 28px 70px #3a49621f}.landing-platform__copy .landing-button{margin-top:32px}.landing-platform__devices{height:620px;position:relative}.landing-browser-frame{background:var(--bg-surface);border:7px solid #20242d;border-radius:28px;width:680px;height:470px;position:absolute;top:40px;left:5%;overflow:hidden;transform:rotate(2deg);box-shadow:0 30px 65px #26344c38}.landing-browser-frame__bar{background:var(--bg-page-warm);align-items:center;gap:7px;height:40px;padding:0 14px;display:flex}.landing-browser-frame__bar i{background:var(--line-strong);border-radius:50%;width:8px;height:8px}.landing-browser-frame__bar span{width:52%;color:var(--text-cool);text-align:center;text-overflow:ellipsis;white-space:nowrap;background:var(--bg-cell);border-radius:8px;margin-left:15%;padding:4px 10px;font-size:9px;overflow:hidden}.landing-browser-frame>img{object-fit:cover;object-position:top;width:100%;height:calc(100% - 40px)}.landing-tablet-frame{background:var(--bg-surface);border:8px solid var(--ink-deepest);border-radius:34px;width:390px;height:520px;position:absolute;bottom:5px;right:-40px;overflow:hidden;transform:rotate(-5deg);box-shadow:0 28px 60px #26344c33}.landing-tablet-frame img{object-fit:cover;object-position:top;width:100%;height:100%}.landing-final-cta{text-align:center;width:min(960px,100% - 48px);margin:190px auto 130px}.landing-final-cta>img{border-radius:27px;width:86px;height:86px;box-shadow:0 20px 40px #24344e2b}.landing-final-cta .landing-eyebrow{margin-top:24px}.landing-final-cta h2{font-size:clamp(44px,6vw,72px)}.landing-final-cta__actions{justify-content:center}.landing-final-cta>p:last-child{max-width:550px;color:var(--text-cool);margin:28px auto 0;font-size:12px;line-height:1.7}.landing-footer{width:min(1120px,100% - 48px);min-height:120px;padding:28px 0 max(28px, env(safe-area-inset-bottom,0px));border-top:1px solid var(--landing-line);grid-template-columns:auto 1fr auto;align-items:center;gap:25px;margin:0 auto;display:grid}.landing-footer>p{color:var(--text-cool);font-size:13px}.landing-footer>div{flex-wrap:wrap;justify-content:flex-end;gap:22px;display:flex}.landing-footer>div a{color:var(--blue-slate-soft);font-size:13px;font-weight:580;text-decoration:none}.landing-footer>div a:hover{color:var(--landing-blue)}.landing-reveal{opacity:0;transition:opacity .7s var(--ease-out), transform .8s var(--ease-out);transform:translateY(36px)}.landing-reveal.is-visible{opacity:1;transform:translateY(0)}@media (width<=1050px){.landing-hero{grid-template-columns:.85fr 1.15fr;gap:10px;min-height:760px}.landing-hero-stage{transform-origin:50%;transform:scale(.88)}.landing-feature-row{gap:45px}.landing-life{padding-left:50px;padding-right:40px}.landing-phone--life{width:245px;height:532px}.landing-platform{padding-left:55px}}@media (width<=820px){.landing-nav{width:calc(100% - 32px);left:16px;right:16px}.landing-nav__links{display:none}.landing-nav{grid-template-columns:1fr auto}.landing-hero{text-align:center;grid-template-columns:1fr;width:min(100%,680px);min-height:auto;padding:138px 22px 60px}.landing-hero__copy{margin:0 auto}.landing-hero__description{margin-left:auto;margin-right:auto}.landing-hero__actions{justify-content:center}.landing-hero-stage{width:min(100%,650px);margin:10px auto 0;transform:scale(.9)}.landing-trust{grid-template-columns:1fr;margin-bottom:70px}.landing-trust div{padding:19px 20px}.landing-trust div+div{border-top:1px solid var(--landing-line);border-left:0}.landing-section{padding:80px 0}.landing-bento{grid-template-rows:760px 520px 520px;grid-template-columns:1fr}.landing-bento-card--large{grid-row:auto}.landing-feature-row,.landing-feature-row--reverse{grid-template-columns:1fr;gap:48px}.landing-feature-row--reverse .landing-feature-row__visual,.landing-feature-row--reverse .landing-feature-row__copy{order:initial}.landing-feature-row__visual{width:min(100%,580px);margin:0 auto}.landing-feature-row__copy{text-align:center;max-width:620px;margin:0 auto}.landing-feature-row__copy ul{text-align:left;display:inline-grid}.landing-life{text-align:center;grid-template-columns:1fr;min-height:1040px;padding:72px 40px 0}.landing-life__copy{max-width:620px;margin:0 auto;padding-bottom:0}.landing-life__copy>p:last-child{margin-left:auto;margin-right:auto}.landing-life__visual{width:min(100%,620px);min-height:630px;margin:0 auto}.landing-platform{text-align:center;grid-template-columns:1fr;min-height:1050px;padding:72px 40px 0}.landing-platform__copy{max-width:640px;margin:0 auto}.landing-platform__copy>p:last-of-type{margin-left:auto;margin-right:auto}.landing-platform__devices{width:min(100%,650px);margin:0 auto}.landing-footer{text-align:center;grid-template-columns:1fr;justify-items:center}.landing-footer>div{justify-content:center}}@media (width<=560px){.landing-nav{border-radius:21px;min-height:58px;padding-left:11px}.landing-brand{font-size:15px}.landing-brand img{border-radius:10px;width:34px;height:34px}.landing-nav__open{border-radius:15px;min-height:44px;padding:0 15px}.landing-hero{padding-left:18px;padding-right:18px}.landing-hero h1{font-size:clamp(46px,14vw,64px)}.landing-hero__line{white-space:normal}.landing-hero__line--accent{letter-spacing:-.07em;white-space:nowrap;font-size:43px}.landing-hero__description{font-size:16px;line-height:1.7}.landing-hero__actions{grid-template-columns:1fr;display:grid}.landing-button{width:100%}.landing-hero-stage{height:550px;margin-top:0;transform:none}.landing-phone--center{border-width:5px;border-radius:38px;width:230px;height:500px;top:22px}.landing-phone--left,.landing-phone--right{border-width:4px;border-radius:29px;width:164px;height:356px;top:100px}.landing-phone--left{left:-62px}.landing-phone--right{right:-62px}.landing-float-card{min-width:155px;padding:10px}.landing-float-card--schedule{top:12px;left:-5px}.landing-float-card--library{bottom:75px;right:-7px}.landing-float-card--sync{display:none}.landing-trust,.landing-section,.landing-life,.landing-platform,.landing-final-cta,.landing-footer{width:calc(100% - 32px)}.landing-section-heading h2,.landing-life__copy h2,.landing-platform__copy h2,.landing-final-cta h2{font-size:40px}.landing-section-heading{margin-bottom:42px}.landing-bento{grid-template-rows:650px 500px 500px}.landing-bento-card{border-radius:30px}.landing-bento-card__copy{padding:28px 26px 0}.landing-bento-card__copy h3{font-size:25px}.landing-bento-card__screen--schedule{width:82%;height:70%}.landing-dual-preview{right:-22%}.landing-feature-row{min-height:0;margin-top:70px}.landing-feature-row__visual{border-radius:36px;height:610px}.landing-phone--feature{border-width:5px;border-radius:39px;width:252px;height:547px;top:42px}.landing-feature-number{font-size:56px}.landing-feature-row__copy h3{font-size:39px}.landing-life{border-radius:38px;min-height:920px;margin-top:80px;padding:60px 20px 0}.landing-life__visual{min-height:540px}.landing-phone--life{border-width:5px;border-radius:35px;width:210px;height:456px;top:68px}.landing-phone--life-left{left:-5%}.landing-phone--life-right{right:-5%}.landing-platform{border-radius:38px;min-height:900px;margin-top:110px;padding:60px 20px 0}.landing-platform__devices{height:500px}.landing-browser-frame{border-width:5px;width:540px;height:380px;top:60px;left:-20%}.landing-tablet-frame{border-width:6px;width:280px;height:390px;right:-65px}.landing-final-cta{margin-top:120px}.landing-final-cta__actions{display:grid}.landing-usage-backdrop{align-items:end;padding:14px}.landing-usage-dialog{border-radius:28px;padding:30px 18px 20px}.landing-usage-dialog h2{font-size:30px}.landing-usage-option{border-radius:18px;grid-template-columns:44px 1fr auto;gap:10px;min-height:72px}.landing-usage-option__icon{border-radius:14px;width:44px;height:44px}.landing-usage-option__copy strong{font-size:16px}.landing-usage-option__copy small{font-size:11px}}@media (hover:hover) and (pointer:fine){.landing-bento-card,.landing-feature-row__visual{transition:transform .3s var(--ease-out), box-shadow .3s var(--ease-out)}.landing-bento-card:hover,.landing-feature-row__visual:hover{transform:translateY(-5px);box-shadow:0 30px 72px #3a496224}}@media (prefers-reduced-transparency:reduce){.landing-nav,.landing-trust,.landing-button--secondary,.landing-float-card,.landing-availability,.landing-resource-pill,.landing-usage-dialog,.landing-usage-option{background:var(--bg-surface);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-reduced-motion:reduce){.landing-page *{scroll-behavior:auto!important}.landing-hero__item,.landing-phone--center,.landing-phone--left,.landing-phone--right,.landing-float-card,.landing-reveal{opacity:1;transition:none;animation:none}.landing-reveal{transform:none}.landing-phone--center{transform:translate(-50%)}.landing-phone--left{transform:rotate(-8deg)}.landing-phone--right{transform:rotate(8deg)}}.ratings-page{width:100%;max-width:480px;min-height:100dvh;padding-bottom:calc(32px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--text-primary);background:var(--bg-page);margin:0 auto}.ratings-page--with-action{padding-bottom:calc(104px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)))}.ratings-page--with-composer{padding-bottom:calc(106px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)))}.ratings-topbar,.ratings-home-header{z-index:20;min-height:calc(64px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));padding:calc(8px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) 18px 8px;background:var(--bg-surface-overlay);-webkit-backdrop-filter:blur(18px)saturate(150%);backdrop-filter:blur(18px)saturate(150%);grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:8px;display:grid;position:sticky;top:0}.ratings-topbar>div:not(.ratings-topbar__action){text-align:center;min-width:0}.ratings-topbar h1,.ratings-home-header h1{margin:0;font-size:18px;font-weight:650;line-height:1.2}.ratings-topbar p{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;margin:2px 0 0;font-size:11px;overflow:hidden}.ratings-topbar__action{justify-content:flex-end;min-width:44px;display:flex}.ratings-icon-button{width:44px;height:44px;color:var(--text-primary);background:var(--bg-surface-glass);box-shadow:0 .5px 1px var(--hairline);transition:transform .14s var(--ease-out), background-color .14s ease;border:0;border-radius:50%;place-items:center;padding:0;text-decoration:none;display:grid}.ratings-icon-button:active{background:var(--control-bg);transform:scale(.96)}.ratings-icon-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:21px;height:21px}.ratings-home-header{background:var(--bg-page);-webkit-backdrop-filter:none;backdrop-filter:none;align-items:center;position:relative}.ratings-home-header>div{text-align:center;min-width:0}.ratings-home-header small{color:var(--text-faint);letter-spacing:.08em;margin-bottom:1px;font-size:10px;font-weight:650;display:block}.ratings-home-intro{color:var(--text-on-accent);background:var(--blue-deep);box-shadow:0 10px 28px var(--blue-tint-strong);border-radius:24px;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:16px;margin:8px 18px 14px;padding:20px;display:grid}.ratings-home-intro>div>span{width:38px;height:38px;color:var(--blue-deep);background:var(--bg-surface);border-radius:12px;place-items:center;margin-bottom:20px;font-size:23px;display:grid}.ratings-home-intro h2{margin:0;font-size:21px;line-height:1.2}.ratings-home-intro p{color:var(--bg-surface-soft);margin:7px 0 0;font-size:13px;line-height:1.45}.ratings-home-intro>a{min-height:40px;color:var(--blue-deep);white-space:nowrap;background:var(--bg-surface);border-radius:20px;align-content:center;padding:0 14px;font-size:14px;font-weight:650;text-decoration:none}.ratings-search{background:var(--bg-glass-bright);border:.5px solid var(--line-faint);border-radius:15px;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:8px;height:48px;margin:0 18px 20px;padding:0 13px;display:grid}.ratings-search--inset{margin-top:16px}.ratings-search svg{fill:none;width:20px;height:20px;stroke:var(--text-faint);stroke-linecap:round;stroke-width:1.8px}.ratings-search input{width:100%;height:100%;color:var(--text-primary);background:0 0;border:0;outline:0;padding:0;font-size:15px}.ratings-search input::placeholder{color:var(--text-faint)}.ratings-search button{width:30px;height:30px;color:var(--text-faint);background:0 0;border:0;padding:0;font-size:20px;line-height:1}.ratings-section{gap:12px;padding:0 18px;display:grid}.ratings-section--inset{padding-top:4px}.ratings-section-heading{justify-content:space-between;align-items:flex-end;gap:14px;min-width:0;display:flex}.ratings-section-heading--stacked{flex-direction:column;align-items:stretch}.ratings-section-heading>div:first-child{min-width:0}.ratings-section-heading small{color:var(--text-faint);letter-spacing:.05em;font-size:11px;font-weight:650}.ratings-section-heading h2{text-overflow:ellipsis;white-space:nowrap;margin:2px 0 0;font-size:21px;line-height:1.2;overflow:hidden}.ratings-segment{background:var(--control-track-soft);border-radius:11px;grid-template-columns:repeat(2,minmax(0,1fr));min-width:126px;padding:3px;display:grid}.ratings-segment--four{grid-template-columns:repeat(4,minmax(0,1fr));width:100%}.ratings-segment button{min-height:32px;color:var(--text-muted);background:0 0;border:0;border-radius:8px;padding:0 10px;font-size:13px;font-weight:600}.ratings-segment button.is-active{color:var(--text-primary);background:var(--bg-surface);box-shadow:0 1px 3px var(--shadow-color-soft)}.rating-board-list,.rating-item-list{gap:12px;display:grid}.rating-board-card,.rating-item-card{min-width:0;color:var(--text-primary);background:var(--edge-highlight);border:.5px solid var(--line-faint);transition:transform .14s var(--ease-out), background-color .14s ease;border-radius:20px;align-items:center;gap:12px;padding:13px;text-decoration:none;display:grid;box-shadow:0 2px 12px #1c1c1e09}.rating-board-card{grid-template-columns:82px minmax(0,1fr) auto}.rating-item-card{grid-template-columns:76px minmax(0,1fr) auto}.rating-board-card:active,.rating-item-card:active{background:var(--bg-subtle);transform:scale(.985)}.rating-image{width:100%;min-width:0;height:100%;color:var(--text-placeholder);background:var(--control-bg);border-radius:inherit;place-items:center;display:grid;position:relative;overflow:hidden}.rating-image img{object-fit:cover;width:100%;height:100%}.rating-image.is-clickable{cursor:zoom-in}.rating-image-preview-backdrop{z-index:220;background:#000000d1;place-items:center;padding:28px;display:grid;position:fixed;inset:0}.rating-image-preview{object-fit:contain;border-radius:14px;width:min(92vw,900px);max-height:86vh;display:block;box-shadow:0 20px 70px #00000059}.rating-image-preview-close{top:max(14px, var(--safe-area-inset-top,env(safe-area-inset-top,0px)));right:max(14px, var(--safe-area-inset-right,env(safe-area-inset-right,0px)));width:40px;height:40px;color:var(--text-on-accent);background:#00000061;border:0;border-radius:50%;font-size:30px;line-height:1;position:absolute}.rating-image-preview-enter-active,.rating-image-preview-leave-active{transition:opacity .16s}.rating-image-preview-enter-from,.rating-image-preview-leave-to{opacity:0}.rating-image svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;width:44%;max-width:38px}.rating-board-card>.rating-image{border-radius:16px;width:82px;height:82px}.rating-item-card>.rating-image{border-radius:15px;width:76px;height:76px}.rating-board-card__body,.rating-item-card__body{gap:5px;min-width:0;display:grid}.rating-board-card__body>strong,.rating-item-card__body>strong{text-overflow:ellipsis;white-space:nowrap;font-size:17px;line-height:1.25;overflow:hidden}.rating-board-card__body>span,.rating-item-card__body>span{color:var(--text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;line-height:1.4;display:-webkit-box;overflow:hidden}.rating-board-card__body>small,.rating-item-card__body>small{min-width:0;color:var(--text-faint);align-items:center;gap:5px;font-size:11px;display:flex}.rating-avatar{width:25px;height:25px;color:var(--text-on-accent);border-radius:50%;flex:none;place-items:center;font-size:12px;font-weight:700;display:inline-grid}.rating-board-card__body .rating-avatar{width:19px;height:19px;font-size:9px}.rating-board-card__meta{justify-items:end;gap:1px;display:grid}.rating-board-card__meta b{color:var(--blue-bright);font-size:22px;line-height:1}.rating-board-card__meta small,.rating-board-card__meta em,.rating-item-card__score small{color:var(--text-faint);white-space:nowrap;font-size:10px;font-style:normal}.rating-board-card__meta em{margin-top:8px}.rating-item-card__score{justify-items:end;gap:1px;display:grid}.rating-item-card__score>span{color:var(--blue-slate-soft);font-size:17px}.rating-item-card__stars{letter-spacing:1px;white-space:nowrap;max-width:102px;overflow:hidden}.rating-item-card__score b{color:var(--blue-bright);font-size:29px;line-height:1}.rating-item-card__score.is-empty b{max-width:58px;color:var(--text-faint);text-align:right;font-size:11px}.ratings-state{min-height:220px;color:var(--text-faint);text-align:center;background:var(--bg-nav);border-radius:20px;align-content:center;place-items:center;gap:9px;padding:36px 24px;display:grid}.ratings-state>svg{fill:none;width:42px;height:42px;stroke:var(--text-placeholder);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.45px;margin-bottom:5px}.ratings-state strong{color:var(--text-secondary);font-size:16px}.ratings-state p{max-width:290px;margin:0;font-size:13px;line-height:1.5}.ratings-state button,.ratings-load-more{min-height:40px;color:var(--blue-bright);background:var(--blue-soft);border:0;border-radius:20px;margin-top:8px;padding:0 17px;font-size:14px;font-weight:650}.ratings-load-more{width:100%;margin:2px 0 0}.ratings-spinner{border:2px solid var(--blue-tint-strong);border-top-color:var(--blue-bright);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite ratings-spin;display:inline-block}.rating-board-hero{background:linear-gradient(180deg, var(--blue-soft) 0%, var(--bg-cell) 42%, var(--bg-surface) 78%);box-shadow:inset 0 -1px 0 var(--line-faint);border-radius:0 0 26px 26px;grid-template-columns:96px minmax(0,1fr);align-items:start;gap:15px;margin:0 0 14px;padding:22px 18px 16px;display:grid;position:relative;overflow:hidden}.rating-board-hero:before{content:"";filter:blur(22px);pointer-events:none;background:radial-gradient(circle,#167fdb38,#0000 68%);height:190px;position:absolute;top:-90px;left:28%;right:-30px}.rating-board-hero>*{position:relative}.rating-board-hero>.rating-image{border-radius:18px;width:96px;height:112px}.rating-board-hero__copy{min-width:0}.rating-board-hero__copy>small,.rating-item-hero>div>a{color:var(--blue-bright);font-size:11px;font-weight:650;text-decoration:none}.rating-board-hero__copy h1,.rating-item-hero h1{letter-spacing:-.02em;overflow-wrap:anywhere;margin:3px 0 7px;font-size:23px;line-height:1.18}.rating-board-hero__copy p,.rating-item-hero p{color:var(--text-muted);margin:0;font-size:13px;line-height:1.48}.rating-board-hero__copy>span,.rating-item-hero>div>span{color:var(--text-faint);align-items:center;gap:7px;margin-top:12px;font-size:11px;display:flex}.rating-report-link{min-height:30px;color:var(--text-faint);text-align:left;background:0 0;border:0;margin-top:8px;padding:0;font-size:11px}.rating-board-hero dl{border-top:.5px solid var(--line-medium);grid-column:1/-1;grid-template-columns:repeat(2,1fr);margin:2px 0 0;padding:13px 0 0;display:grid}.rating-board-hero dl>div{text-align:center}.rating-board-hero dl>div+div{border-left:.5px solid var(--line-medium)}.rating-board-hero dt{font-size:18px;font-weight:700}.rating-board-hero dd{color:var(--text-faint);margin:2px 0 0;font-size:11px}.ratings-bottom-action{z-index:30;right:max(12px,50vw - 228px);bottom:max(10px, var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));background:var(--bg-nav);border:.5px solid var(--bg-glass-bright);min-height:64px;box-shadow:0 14px 32px var(--shadow-color), 0 2px 8px var(--shadow-color-soft);-webkit-backdrop-filter:blur(18px)saturate(150%);backdrop-filter:blur(18px)saturate(150%);border-radius:34px;justify-content:center;align-items:flex-start;padding:7px;display:flex;position:fixed;left:max(12px,50vw - 228px)}.ratings-bottom-action>a{width:100%;min-height:48px;color:var(--blue-bright);background:var(--edge-highlight-faint);border-radius:27px;justify-content:center;align-items:center;gap:8px;font-size:17px;font-weight:650;text-decoration:none;display:flex}.ratings-bottom-action svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:2px;width:20px;height:20px}.rating-editor{gap:14px;padding:10px 18px 0;display:grid}.rating-editor>section{background:var(--edge-highlight-strong);border-radius:22px;gap:16px;padding:18px;display:grid}.rating-editor>section>header{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.rating-editor h2{margin:0;font-size:17px}.rating-editor header>span,.rating-editor label>small{color:var(--text-faint);font-size:11px}.rating-editor label:not(.rating-image-picker){gap:8px;display:grid;position:relative}.rating-editor label>span{font-size:13px;font-weight:600}.rating-editor label>small{position:absolute;bottom:8px;right:10px}.rating-editor input[type=text],.rating-editor textarea{width:100%;color:var(--text-primary);background:var(--bg-page);box-shadow:inset 0 0 0 .5px var(--line-faint);border:0;border-radius:13px;outline:0;padding:12px 13px;font-size:15px;line-height:1.45}.rating-editor input[type=text]{padding-right:54px}.rating-editor textarea{resize:vertical;min-height:130px;padding-bottom:28px}.rating-editor input:focus,.rating-editor textarea:focus{box-shadow:inset 0 0 0 1.5px var(--blue-ring), 0 0 0 4px var(--blue-tint-weak)}.rating-image-picker{min-height:164px;color:var(--text-muted);background:var(--bg-page);border:1px dashed var(--line-heavy);border-radius:16px;place-items:center;display:grid;position:relative;overflow:hidden}.rating-image-picker input{opacity:0;width:1px;height:1px;position:absolute}.rating-image-picker img{object-fit:cover;width:100%;height:220px}.rating-image-picker>span{align-items:center;gap:7px;font-size:14px;display:flex}.rating-image-picker svg{fill:none;width:22px;height:22px;stroke:var(--blue-bright);stroke-linecap:round;stroke-width:1.8px}.rating-editor section>p{color:var(--text-faint);margin:-6px 2px 0;font-size:11px;line-height:1.45}.rating-editor .is-error,.ratings-form-error,.ratings-inline-error,.rating-action-card>p{color:var(--danger-deep)}.ratings-form-error,.ratings-inline-error{background:var(--danger-tint);border-radius:12px;margin:0;padding:11px 13px;font-size:13px;line-height:1.4}.ratings-primary-button{min-height:52px;color:var(--text-on-accent);background:var(--blue-bright);border:0;border-radius:17px;justify-content:center;align-items:center;gap:8px;font-size:16px;font-weight:650;display:flex}.ratings-primary-button:disabled{color:var(--text-faint);background:var(--control-bg)}.rating-item-hero{background:linear-gradient(180deg, var(--blue-soft) 0%, var(--bg-cell) 44%, var(--bg-surface) 80%);box-shadow:inset 0 -1px 0 var(--line-faint);border-radius:0 0 26px 26px;grid-template-columns:112px minmax(0,1fr);gap:16px;margin:0 0 14px;padding:20px 18px 18px;display:grid;position:relative;overflow:hidden}.rating-item-hero:before{content:"";filter:blur(24px);pointer-events:none;background:radial-gradient(circle,#ed89534d,#0000 68%);height:190px;position:absolute;top:-96px;left:32%;right:-20px}.rating-item-hero>*{position:relative}.rating-item-hero>.rating-image{border-radius:18px;width:112px;height:138px}.ratings-detail-content{gap:14px;padding:0 18px;display:grid}.rating-summary-card,.rating-action-card,.rating-comments{background:var(--edge-highlight-strong);border-radius:22px;padding:18px}.rating-summary-card{grid-template-columns:104px minmax(0,1fr);align-items:center;gap:18px;display:grid}.rating-summary-card__score{justify-items:start;display:grid}.rating-summary-card__score strong{color:var(--blue-bright);font-size:30px;line-height:1}.rating-summary-card__score>span,.rating-summary-card__score small{color:var(--text-faint);margin-top:4px;font-size:11px}.rating-summary-card__score em{color:var(--warning-deep);background:var(--warning-soft);border-radius:7px;margin-top:9px;padding:4px 7px;font-size:10px;font-style:normal}.rating-distribution{gap:5px;display:grid}.rating-distribution__row{color:var(--text-faint);grid-template-columns:28px minmax(0,1fr) 31px;align-items:center;gap:7px;font-size:10px;display:grid}.rating-distribution__row i{background:var(--control-bg);border-radius:3px;height:5px;overflow:hidden}.rating-distribution__row b{background:var(--blue-bright);border-radius:inherit;height:100%;display:block}.rating-distribution__row small{text-align:right}.rating-action-card>header{justify-content:space-between;align-items:end;gap:12px;display:flex}.rating-action-card header small{color:var(--text-faint);font-size:11px}.rating-action-card h2{margin:2px 0 0;font-size:18px}.rating-action-card header>strong{color:var(--blue-bright);font-size:24px}.star-rating{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin:16px 0;display:grid}.star-rating button{min-height:48px;color:var(--text-placeholder-soft);background:var(--bg-page);border:0;border-radius:13px;place-items:center;padding:0;display:grid}.star-rating button.is-active{color:var(--warning);background:var(--warning-soft)}.star-rating svg{fill:currentColor;width:27px;height:27px}.rating-action-card>p{margin:-5px 0 12px;font-size:12px}.rating-action-card>div:last-child{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.rating-action-card>div:last-child>button{min-height:44px;color:var(--text-on-accent);background:var(--blue-bright);border:0;border-radius:14px;font-size:14px;font-weight:650}.rating-action-card>div:last-child>button:only-child{grid-column:1/-1}.rating-action-card>div:last-child>button.is-secondary{color:var(--text-muted);background:var(--control-bg)}.rating-action-card button:disabled{opacity:.5}.rating-comments{gap:14px;display:grid}.rating-comment-list{display:grid}.rating-comment{border-bottom:.5px solid var(--line-medium);grid-template-columns:36px minmax(0,1fr);gap:10px;padding:16px 0;display:grid}.rating-comment:first-child{padding-top:4px}.rating-comment>.rating-avatar{width:36px;height:36px}.rating-comment>div,.rating-replies article>div{min-width:0}.rating-comment header{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.rating-comment header strong,.rating-replies strong{font-size:13px}.rating-comment header span{color:var(--blue-bright);background:var(--blue-soft);border-radius:5px;padding:3px 6px;font-size:9px}.rating-comment p,.rating-replies p{white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0 8px;font-size:14px;line-height:1.5}.rating-comment footer,.rating-replies footer{align-items:center;gap:12px;display:flex}.rating-comment time,.rating-replies time{color:var(--text-faint);font-size:10px}.rating-comment footer button,.rating-replies footer button,.rating-comment__replies-button{color:var(--text-muted);background:0 0;border:0;padding:0;font-size:11px;font-weight:600}.rating-comment__replies-button{min-height:34px;color:var(--blue-bright);margin-top:6px}.rating-replies{background:var(--bg-page);border-radius:12px;gap:2px;margin-top:5px;padding:3px 10px;display:grid}.rating-replies article{grid-template-columns:28px minmax(0,1fr);gap:8px;padding:10px 0;display:grid}.rating-replies article+article{border-top:.5px solid var(--line-soft)}.rating-replies .rating-avatar{width:28px;height:28px;font-size:10px}.rating-replies p{margin:4px 0 6px;font-size:12px}.rating-comment-composer{z-index:30;padding:9px max(18px, calc((100vw - 480px) / 2 + 18px)) calc(9px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));background:var(--bg-surface-raised);border-top:.5px solid var(--line-soft);-webkit-backdrop-filter:blur(18px)saturate(150%);backdrop-filter:blur(18px)saturate(150%);gap:5px;display:grid;position:fixed;bottom:0;left:0;right:0}.rating-comment-composer>div:last-child{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px;display:grid}.rating-comment-composer textarea{resize:none;width:100%;min-height:44px;max-height:100px;color:var(--text-primary);background:var(--bg-surface);border:0;border-radius:15px;outline:0;padding:11px 13px;font-size:14px;line-height:1.45}.rating-comment-composer>div:last-child>button{min-width:60px;min-height:44px;color:var(--text-on-accent);background:var(--blue-bright);border:0;border-radius:14px;padding:0 13px;font-size:13px;font-weight:650}.rating-comment-composer button:disabled{color:var(--text-faint);background:var(--control-bg)}.rating-comment-composer__reply{color:var(--text-muted);justify-content:space-between;align-items:center;padding:0 4px;font-size:11px;display:flex}.rating-comment-composer__reply button{width:28px;height:24px;color:var(--text-faint);background:0 0;border:0;padding:0;font-size:18px}.ratings-mine-tabs{background:var(--control-track-soft);border-radius:13px;grid-template-columns:repeat(4,minmax(0,1fr));margin:8px 18px 18px;padding:3px;display:grid}.ratings-mine-tabs button{min-height:38px;color:var(--text-muted);background:0 0;border:0;border-radius:10px;padding:0 5px;font-size:13px;font-weight:600}.ratings-mine-tabs button.is-active{color:var(--text-primary);background:var(--bg-surface);box-shadow:0 1px 3px var(--shadow-color-soft)}.rating-mine-comment{width:100%;min-height:76px;color:var(--text-primary);text-align:left;background:var(--bg-surface);border:0;border-radius:18px;gap:7px;padding:15px;display:grid}.rating-mine-comment span{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:14px;line-height:1.45;display:-webkit-box;overflow:hidden}.rating-mine-comment small{color:var(--text-faint);font-size:11px}.rating-admin-toolbar{gap:8px;margin:8px 18px 14px;display:grid}.ratings-segment--three{grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.rating-admin-toolbar p{color:var(--text-faint);margin:0 2px;font-size:11px;line-height:1.4}.rating-admin-banner{color:var(--success-deep);background:var(--success-tint);border-radius:13px;margin:0 18px 12px;padding:11px 13px;font-size:13px;line-height:1.4}.rating-admin-banner.is-error{color:var(--danger-deep);background:var(--danger-soft)}.rating-admin-list{gap:12px;display:grid}.rating-admin-card{background:var(--edge-highlight-strong);border:.5px solid var(--line-faint);border-radius:20px;gap:12px;padding:16px;display:grid}.rating-admin-card>header,.rating-admin-card>footer,.rating-admin-content>div{justify-content:space-between;align-items:center;gap:10px;display:flex}.rating-admin-card>header>div{gap:2px;display:grid}.rating-admin-card>header span{color:var(--blue-bright);font-size:11px;font-weight:700}.rating-admin-card>header strong{font-size:16px}.rating-admin-card>header time,.rating-admin-content small{color:var(--text-faint);white-space:nowrap;font-size:11px}.rating-admin-card__reason{color:var(--text-secondary);margin:0;font-size:14px;line-height:1.55}.rating-admin-card>code{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.rating-admin-secondary,.rating-admin-card>footer button,.rating-admin-content>button{border:0;border-radius:13px;min-height:40px;padding:0 15px;font-size:13px;font-weight:650}.rating-admin-secondary{color:var(--blue-deep);background:var(--blue-chip)}.rating-admin-content{background:var(--bg-page);border-radius:15px;gap:10px;padding:14px;display:grid}.rating-admin-content>div>span{color:var(--success-deep);background:var(--success-tint);border-radius:999px;padding:3px 8px;font-size:10px;font-weight:700}.rating-admin-content>div>span.is-hidden,.rating-admin-content>div>span.is-deleted{color:var(--warning-deep);background:var(--warning-soft)}.rating-admin-content>strong{overflow-wrap:anywhere;font-size:15px;line-height:1.4}.rating-admin-content>p{color:var(--text-muted);margin:-4px 0 0;font-size:12px;line-height:1.5}.rating-admin-content label{gap:6px;display:grid}.rating-admin-content label>span{color:var(--text-muted);font-size:11px;font-weight:650}.rating-admin-content input{width:100%;min-height:42px;color:var(--text-primary);background:var(--bg-surface);box-shadow:inset 0 0 0 .5px var(--line-medium);border:0;border-radius:11px;outline:0;padding:0 12px}.rating-admin-content input:focus{box-shadow:inset 0 0 0 1.5px var(--blue-ring), 0 0 0 4px var(--blue-tint-weak)}.rating-admin-primary,.rating-admin-card>footer button.is-primary{color:var(--text-on-accent);background:var(--blue-bright)}.rating-admin-danger{color:var(--text-on-accent);background:var(--danger-deep)}.rating-admin-card>footer{justify-content:flex-end;padding-top:2px}.rating-admin-card>footer button{color:var(--text-muted);background:var(--bg-subtle)}.rating-admin-card button:disabled{cursor:default;opacity:.55}.rating-report-backdrop{z-index:100;background:var(--scrim-strong);justify-content:center;align-items:flex-end;padding:16px;display:flex;position:fixed;inset:0}.rating-report-dialog{width:min(100%,480px);padding:14px 18px calc(20px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));background:var(--bg-page);box-shadow:0 20px 60px var(--shadow-color-strong);border-radius:24px;position:relative}.rating-report-dialog header{grid-template-columns:60px minmax(0,1fr) 60px;align-items:center;display:grid}.rating-report-dialog h2{text-align:center;margin:0;font-size:17px}.rating-report-dialog header button{min-height:40px;color:var(--blue-bright);background:0 0;border:0;padding:0;font-size:14px;font-weight:600}.rating-report-dialog header button:first-child{text-align:left}.rating-report-dialog header button:last-child{text-align:right}.rating-report-dialog header button:disabled{color:var(--text-placeholder)}.rating-report-dialog>p{color:var(--text-muted);margin:8px 0 12px;font-size:12px;line-height:1.45}.rating-report-dialog textarea{resize:vertical;width:100%;min-height:120px;color:var(--text-primary);background:var(--bg-surface);border:0;border-radius:15px;outline:0;padding:13px;font-size:14px;line-height:1.5;display:block}.rating-report-dialog>small{color:var(--text-faint);text-align:right;margin-top:6px;font-size:10px;display:block}.rating-report-dialog>p.is-error{color:var(--danger-deep)}.ratings-toast{z-index:110;bottom:calc(92px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));max-width:calc(100% - 40px);color:var(--text-on-accent);background:var(--overlay-toast);border-radius:18px;padding:10px 15px;font-size:13px;position:fixed;left:50%;transform:translate(-50%)}.ratings-sheet-enter-active,.ratings-sheet-leave-active{transition:opacity .18s}.ratings-sheet-enter-active .rating-report-dialog,.ratings-sheet-leave-active .rating-report-dialog{transition:transform .22s var(--ease-out)}.ratings-sheet-enter-from,.ratings-sheet-leave-to{opacity:0}.ratings-sheet-enter-from .rating-report-dialog,.ratings-sheet-leave-to .rating-report-dialog{transform:translateY(24px)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}@keyframes ratings-spin{to{transform:rotate(360deg)}}@media (width<=370px){.ratings-home-intro,.rating-board-hero,.rating-item-hero,.ratings-search,.ratings-mine-tabs{margin-left:16px;margin-right:16px}.ratings-section,.ratings-detail-content,.rating-editor{padding-left:16px;padding-right:16px}.rating-board-card{grid-template-columns:72px minmax(0,1fr)}.rating-board-card>.rating-image{width:72px;height:76px}.rating-board-card__meta{display:none}.rating-item-card{grid-template-columns:66px minmax(0,1fr) auto;gap:9px}.rating-item-card>.rating-image{width:66px;height:70px}.rating-item-hero{grid-template-columns:90px minmax(0,1fr)}.rating-item-hero>.rating-image{width:90px;height:118px}.rating-summary-card{grid-template-columns:86px minmax(0,1fr);gap:10px}}@media (prefers-reduced-transparency:reduce){.ratings-topbar,.ratings-bottom-action,.rating-comment-composer{background:var(--bg-page);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-reduced-motion:reduce){.ratings-icon-button,.rating-board-card,.rating-item-card{transition:none}.ratings-spinner{animation-duration:1.8s}.ratings-sheet-enter-active,.ratings-sheet-leave-active,.ratings-sheet-enter-active .rating-report-dialog,.ratings-sheet-leave-active .rating-report-dialog{transition:none}}:root{color:var(--text-primary);background:var(--app-canvas);font-synthesis:none;text-rendering:optimizelegibility;--ease-out:cubic-bezier(.23, 1, .32, 1);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans SC,Noto Sans CJK SC,PingFang SC,Microsoft YaHei,sans-serif}.ios-pwa-status-strip{display:none}html[data-ios-top-scrim=true] .ios-pwa-status-strip{z-index:2147483647;pointer-events:none;color:#0000;background-color:var(--app-canvas);-webkit-background-clip:text;background-clip:text;height:11px;display:block;position:fixed;top:0;left:0;right:0}*{box-sizing:border-box}html,body,#app{touch-action:pan-y}html{background:var(--app-canvas);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--app-canvas);overscroll-behavior-x:none;min-width:320px;min-height:100dvh;margin:0}[role=dialog],[role=listbox],.classroom-sheet-overlay,.course-detail-backdrop,.add-course-sheet-backdrop,.pwa-install-guide-backdrop,.app-announcement-backdrop,.app-update-backdrop,.library-modal-backdrop{touch-action:pan-y}button,input,select,textarea{font:inherit;min-width:0}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}#app{min-height:100dvh}.app-shell,.grade-page{width:100%;max-width:480px;min-height:100dvh;margin:0 auto;position:relative}.app-shell{background:radial-gradient(circle at 93% 0%, var(--sheen-accent), transparent 25%), var(--app-canvas)}.app-shell__content{min-height:100vh;padding-bottom:calc(84px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)))}.page-padding{padding-left:22px;padding-right:22px}.surface-card{background:var(--bg-surface);border:1px solid var(--line);box-shadow:var(--shadow-card);border-radius:24px}.bottom-navigation{--bottom-navigation-outer-radius:32px;--bottom-navigation-inner-radius:26px;--bottom-navigation-min-gap:0px;z-index:50;bottom:max(var(--bottom-navigation-min-gap), calc(var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)) - 12px));border-radius:var(--bottom-navigation-outer-radius);width:calc(100% - 40px);max-width:396px;height:64px;box-shadow:0 16px 36px var(--shadow-color), 0 3px 9px var(--shadow-color-soft);position:fixed;left:50%;overflow:hidden;transform:translate(-50%)}.bottom-navigation__glass{z-index:1;border-radius:var(--bottom-navigation-outer-radius);width:100%;height:100%;position:absolute!important;top:50%!important;left:50%!important}.bottom-navigation__glass>.glass{width:100%;height:100%;min-height:100%;overflow:hidden;border-radius:inherit!important;padding:0!important;display:block!important}.bottom-navigation__glass>.glass>.glass__warp{border-radius:inherit}.bottom-navigation__glass>.glass>div:last-child{width:100%;height:100%}.bottom-navigation__content{z-index:2;grid-template-columns:repeat(var(--navigation-item-count,3), 1fr);border-radius:var(--bottom-navigation-outer-radius);isolation:isolate;min-height:64px;padding:5px;display:grid;position:absolute;inset:0;overflow:hidden}html[data-platform=android] .bottom-navigation{--bottom-navigation-min-gap:2px}.bottom-navigation__item{z-index:2;min-width:0;color:color-mix(in srgb, var(--text-primary) 76%, transparent);font:inherit;cursor:pointer;appearance:none;border-radius:var(--bottom-navigation-inner-radius);background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:0;font-size:12px;font-weight:600;line-height:1.15;text-decoration:none;display:flex;position:relative}.bottom-navigation__item>span:last-child{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.bottom-navigation__selection{z-index:1;width:calc((100% - 10px) / var(--navigation-item-count,3));pointer-events:none;background:linear-gradient(180deg, var(--bg-glass-faint), var(--edge-highlight-faint)), var(--control-track);border:1px solid var(--edge-highlight-faint);border-radius:var(--bottom-navigation-inner-radius);box-shadow:inset 0 1px 0 var(--edge-highlight-faint), 0 4px 12px var(--shadow-color-soft);transform:translate3d(calc(var(--active-index) * 100%), 0, 0);will-change:transform;transition:transform .42s cubic-bezier(.22,.9,.24,1.08);position:absolute;top:5px;bottom:5px;left:5px}.bottom-navigation__selection:after{content:"";border-radius:inherit;box-shadow:inset 0 0 0 .5px var(--hairline);position:absolute;inset:0}.bottom-navigation__icon{--nav-icon-size:125%;--nav-icon-offset-y:.5px;width:25px;height:25px;color:inherit;-webkit-mask:var(--nav-icon) center calc(50% + var(--nav-icon-offset-y)) / var(--nav-icon-size) no-repeat;-webkit-mask:var(--nav-icon) center calc(50% + var(--nav-icon-offset-y)) / var(--nav-icon-size) no-repeat;mask:var(--nav-icon) center calc(50% + var(--nav-icon-offset-y)) / var(--nav-icon-size) no-repeat;background:currentColor;flex:none;display:block}.bottom-navigation__icon--tools{--nav-icon-size:150%}.bottom-navigation__icon--profile{--nav-icon-size:117%;--nav-icon-offset-y:0px}.bottom-navigation__icon--campus-run,.bottom-navigation__icon--club{--nav-icon-size:100%;--nav-icon-offset-y:0px}.bottom-navigation__item.is-active{color:var(--blue-link);box-shadow:none;background:0 0}.bottom-navigation__item:not(.is-active) .bottom-navigation__icon{opacity:.9}.bottom-navigation--inline{width:100%;max-width:none;height:56px;position:relative;inset:auto;transform:none}.bottom-navigation--compact{--bottom-navigation-outer-radius:28px;--bottom-navigation-inner-radius:23px;height:56px}.bottom-navigation--compact .bottom-navigation__item{gap:2px;font-size:11px}.bottom-navigation--compact .bottom-navigation__icon{width:22px;height:22px}.bottom-navigation__item:focus-visible{outline-color:var(--blue-ring);outline-offset:-3px}.bottom-navigation__item:focus-visible:not(.is-active){background:var(--blue-tint)}@media (prefers-reduced-motion:reduce){.bottom-navigation__selection{transition:none}.bottom-navigation__item:active{transform:none}}@media (prefers-reduced-transparency:reduce){.bottom-navigation{background:0 0}.bottom-navigation__glass{display:block!important}.bottom-navigation__glass>.glass{background:var(--bg-surface);box-shadow:0 8px 24px var(--shadow-color)!important}.bottom-navigation__glass>.glass>.glass__warp{display:none}.bottom-navigation__content{background:var(--bg-surface);border:1px solid var(--line-soft);box-shadow:0 8px 24px var(--shadow-color)}}@media (prefers-contrast:more){.bottom-navigation{background:0 0}.bottom-navigation__glass{display:block!important}.bottom-navigation__glass>.glass{background:var(--bg-surface);box-shadow:0 8px 24px var(--shadow-color)!important}.bottom-navigation__glass>.glass>.glass__warp{display:none}.bottom-navigation__content{background:var(--bg-surface);border:1px solid var(--line-soft)}.bottom-navigation__selection{background:var(--control-bg);border:1px solid var(--line-soft)}.bottom-navigation__item.is-active{color:var(--blue-deep)}}@media (width<=400px) and (height<=800px){.app-shell__content{padding-bottom:calc(76px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)))}.bottom-navigation{--bottom-navigation-outer-radius:32px;--bottom-navigation-inner-radius:26px;height:64px}.bottom-navigation__content{min-height:64px;padding:5px}.bottom-navigation__item{font-size:11px}.bottom-navigation__icon{width:22px;height:22px}}.toast-message{z-index:80;bottom:calc(80px + var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));color:var(--text-on-accent);white-space:nowrap;background:var(--overlay-toast);box-shadow:0 8px 24px var(--shadow-color-strong);border-radius:24px;padding:11px 18px;font-size:14px;position:fixed;left:50%;transform:translate(-50%)}.toast-enter-active{transition:opacity .18s var(--ease-out), transform .18s var(--ease-out)}.toast-leave-active{transition:opacity .12s var(--ease-out), transform .12s var(--ease-out)}.toast-enter-from,.toast-leave-to{opacity:0;transform:translate(-50%,8px)}.empty-message{color:var(--text-faint);text-align:center;padding:40px 0}@media (width>=560px){.app-shell,.grade-page{box-shadow:0 0 50px var(--glow-accent)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}.login-submit,.password-toggle{transition:opacity .12s!important}.login-submit:active,.password-toggle:active{transform:none!important}.password-toggle-slash,.login-error-enter-active,.login-error-leave-active,.login-submit-label,.login-submit-loading,.login-page .toast-enter-active,.login-page .toast-leave-active{transition:opacity .12s!important}.login-page .toast-enter-from,.login-page .toast-leave-to{transform:translate(-50%)}}@media (orientation:landscape) and (height<=600px){html,body,#app{min-width:0;min-height:100dvh}.app-shell,.grade-page{max-width:none;margin:0}.app-shell__content{min-height:100dvh;padding-right:calc(72px + max(8px, var(--safe-area-inset-right,env(safe-area-inset-right,0px))));padding-bottom:max(8px, var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)))}.app-shell--schedule .app-shell__content{height:100%;padding-bottom:0}.app-shell .page-padding{padding-right:16px;padding-left:max(16px, var(--safe-area-inset-left,env(safe-area-inset-left,0px)))}.bottom-navigation:not(.bottom-navigation--inline){--bottom-navigation-outer-radius:30px;--bottom-navigation-inner-radius:24px;top:50%;right:max(8px, var(--safe-area-inset-right,env(safe-area-inset-right,0px)));width:64px;max-width:none;height:174px;bottom:auto;left:auto;transform:translateY(-50%)}.bottom-navigation:not(.bottom-navigation--inline) .bottom-navigation__content{grid-template-columns:1fr;grid-auto-rows:54px;min-height:174px}.bottom-navigation:not(.bottom-navigation--inline) .bottom-navigation__item{gap:1px;min-height:54px;font-size:10px}.bottom-navigation:not(.bottom-navigation--inline) .bottom-navigation__icon{width:22px;height:22px}.bottom-navigation:not(.bottom-navigation--inline) .bottom-navigation__selection{width:auto;height:50px;transform:translateY(calc(var(--active-index) * 54px));inset:7px 5px auto}.app-shell .toast-message{bottom:max(10px, var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));max-width:calc(100vw - 108px - var(--safe-area-inset-left,env(safe-area-inset-left,0px)) - var(--safe-area-inset-right,env(safe-area-inset-right,0px)))}.schedule-page{--schedule-gutter:16px;padding-top:var(--safe-area-inset-top,env(safe-area-inset-top,0px))}.schedule-page.page-padding{padding-right:var(--schedule-gutter);padding-left:max(var(--schedule-gutter), var(--safe-area-inset-left,env(safe-area-inset-left,0px)))}.schedule-header h1{font-size:21px}.schedule-header p{flex-wrap:nowrap;gap:8px;margin-top:2px;font-size:14px}.schedule-header__actions{gap:0}.week-strip{margin-top:3px;margin-right:calc(-1 * var(--schedule-gutter));margin-bottom:2px;margin-left:calc(-1 * max(var(--schedule-gutter), var(--safe-area-inset-left,env(safe-area-inset-left,0px))))}.week-strip__month,.week-strip button{gap:2px}.week-strip button{min-height:34px}.week-strip button span{font-size:12px}.week-strip button strong,.week-strip__month{font-size:11px}.schedule-board{margin-right:calc(-1 * var(--schedule-gutter));margin-left:calc(-1 * max(var(--schedule-gutter), var(--safe-area-inset-left,env(safe-area-inset-left,0px))))}.schedule-board:after{height:0}.schedule-more-menu{max-height:calc(100dvh - 8px - var(--safe-area-inset-top,env(safe-area-inset-top,0px)) - var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));overflow-y:auto}.tools-page{padding-top:max(8px, var(--safe-area-inset-top,env(safe-area-inset-top,0px)))}.tools-announcement-card{border-radius:18px;grid-template-columns:34px minmax(0,1fr) 14px;gap:10px;min-height:62px;padding:8px 12px}.tools-announcement-card__icon,.tools-announcement-card.is-viewed .tools-announcement-card__icon{border-radius:10px;width:34px;height:34px}.tools-announcement-card__icon svg,.tools-announcement-card.is-viewed .tools-announcement-card__icon svg{width:20px;height:20px}.tools-announcement-card__copy>span{-webkit-line-clamp:1}.tool-search{height:44px;margin-top:8px}.tools-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:10px}.tools-grid button{border-radius:18px;gap:4px;min-height:88px;padding:8px}.tools-grid img{width:46px;height:46px}.tools-grid .tool-label{font-size:14px}.profile-page{padding-top:max(8px, var(--safe-area-inset-top,env(safe-area-inset-top,0px)));grid-template-rows:auto auto 1fr;grid-template-columns:minmax(176px,.72fr) minmax(320px,1.28fr);align-content:start;gap:12px 16px;display:grid}.profile-hero{grid-row:1/span 2;min-height:204px}.profile-avatar{width:78px;height:78px}.profile-hero__identity{margin-top:10px}.profile-hero__identity h1{margin-bottom:3px;font-size:24px}.profile-hero__identity p{font-size:13px}.student-card,.profile-menu,.profile-logout{margin-top:0}.student-card{grid-column:2}.student-card__row{grid-template-columns:34px minmax(0,1fr);gap:10px;min-height:54px;padding:6px 13px}.student-card__row:not(:last-child):after{left:57px}.student-card__icon{border-radius:9px;width:30px;height:30px}.student-card__icon img,.student-card__icon svg{width:20px;height:20px}.student-card h2{font-size:15px}.student-card p{font-size:12px}.profile-menu{grid-column:2;grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.profile-menu>button{grid-template-columns:32px minmax(0,1fr) 15px;gap:9px;min-height:52px;padding:0 13px}.profile-menu>button:nth-child(odd){border-right:.5px solid var(--line-medium)}.profile-menu>button:nth-last-child(-n+2){border-bottom:0}.profile-menu img,.profile-menu__leading-icon{width:28px;height:28px}.profile-menu__leading-icon{border-radius:8px;padding:6px}.profile-menu span,.profile-logout button{font-size:14px}.profile-logout{grid-area:3/1;align-self:start}.profile-logout button{min-height:48px}.classroom-page,.exam-page,.calendar-page,.library-page,.past-exams-page,.about-page,.privacy-page,.feedback-page,.completion-page,.login-page{max-width:none;margin:0}.classroom-topbar,.exam-topbar,.about-topbar,.privacy-topbar,.feedback-topbar,.completion-topbar{min-height:calc(52px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));padding:calc(4px + var(--safe-area-inset-top,env(safe-area-inset-top,0px))) max(16px, var(--safe-area-inset-right,env(safe-area-inset-right,0px))) 4px max(16px, var(--safe-area-inset-left,env(safe-area-inset-left,0px)))}.classroom-content,.exam-content,.about-content,.privacy-content,.feedback-content,.completion-content{width:100%;max-width:760px;padding-right:max(16px, var(--safe-area-inset-right,env(safe-area-inset-right,0px)));padding-left:max(16px, var(--safe-area-inset-left,env(safe-area-inset-left,0px)));margin-left:auto;margin-right:auto}.grade-results.page-padding,.grade-loading.page-padding,.calendar-page.page-padding,.past-exams-page{padding-right:max(16px, var(--safe-area-inset-right,env(safe-area-inset-right,0px)));padding-left:max(16px, var(--safe-area-inset-left,env(safe-area-inset-left,0px)))}.library-topbar{min-height:calc(52px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));padding:var(--safe-area-inset-top,env(safe-area-inset-top,0px)) max(10px, var(--safe-area-inset-right,env(safe-area-inset-right,0px))) 0 max(10px, var(--safe-area-inset-left,env(safe-area-inset-left,0px)))}.library-tabs{top:calc(52px + var(--safe-area-inset-top,env(safe-area-inset-top,0px)));margin-right:max(16px, var(--safe-area-inset-right,env(safe-area-inset-right,0px)));margin-left:max(16px, var(--safe-area-inset-left,env(safe-area-inset-left,0px)))}.library-content{padding-right:max(16px, var(--safe-area-inset-right,env(safe-area-inset-right,0px)));padding-left:max(16px, var(--safe-area-inset-left,env(safe-area-inset-left,0px)))}.login-page{min-height:100dvh;overflow-y:auto}.login-content{min-height:100dvh;padding:max(10px, var(--safe-area-inset-top,env(safe-area-inset-top,0px))) max(20px, var(--safe-area-inset-right,env(safe-area-inset-right,0px))) max(10px, var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px))) max(20px, var(--safe-area-inset-left,env(safe-area-inset-left,0px)));grid-template-rows:auto auto auto;grid-template-columns:minmax(148px,.55fr) minmax(360px,1.45fr);align-content:center;align-items:center;gap:5px 28px;display:grid}.login-brand{grid-area:1/1/span 3}.login-logo{width:64px;height:64px}.login-brand-copy{margin-top:10px}.login-brand h1{font-size:28px}.login-panel{border-radius:24px;grid-column:2;margin-top:0;padding:14px 16px 9px}.login-panel-heading{margin-bottom:9px}.login-panel-heading h2{font-size:20px}.login-panel-heading p{margin-top:2px}.login-input-group{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.login-field+.login-field:before{width:1px;height:auto;inset:8px auto 8px 0}.login-input{height:48px}.login-error-slot{min-height:20px;margin-top:2px}.login-submit{height:46px;margin-top:2px}.login-help{min-height:36px;margin-top:0}.secure-login-note{min-height:24px;margin-top:0}.login-privacy-consent{grid-column:2;margin-top:0;padding:7px 10px}.login-privacy-consent p{line-height:1.4}.login-legal{grid-column:2;min-height:32px;margin:-2px 0 0}.login-legal button{min-height:32px}.app-announcement-backdrop{padding:max(10px, var(--safe-area-inset-top,env(safe-area-inset-top,0px))) max(16px, var(--safe-area-inset-right,env(safe-area-inset-right,0px))) max(10px, var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px))) max(16px, var(--safe-area-inset-left,env(safe-area-inset-left,0px)))}.app-announcement-dialog{max-width:520px;max-height:calc(100dvh - var(--safe-area-inset-top,env(safe-area-inset-top,0px)) - var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)) - 20px);padding:16px 18px 14px;overflow-y:auto}.app-announcement-dialog__icon{width:44px;height:44px}.app-announcement-dialog__eyebrow{margin-top:8px}.app-announcement-dialog__description{margin-top:7px;line-height:1.42}.app-announcement-dialog__group{margin-top:9px}.app-announcement-dialog__actions{margin-top:12px}.pwa-install-guide-backdrop,.app-update-backdrop{padding:max(8px, var(--safe-area-inset-top,env(safe-area-inset-top,0px))) max(12px, var(--safe-area-inset-right,env(safe-area-inset-right,0px))) max(8px, var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px))) max(12px, var(--safe-area-inset-left,env(safe-area-inset-left,0px)));align-items:center}.pwa-install-guide,.app-update-dialog{max-width:620px;max-height:calc(100dvh - var(--safe-area-inset-top,env(safe-area-inset-top,0px)) - var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)) - 16px);border-radius:24px;padding:10px 20px 14px;overflow-y:auto}.pwa-install-promotion--above-navigation{right:calc(84px + max(8px, var(--safe-area-inset-right,env(safe-area-inset-right,0px))));bottom:max(10px, var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));left:max(14px, var(--safe-area-inset-left,env(safe-area-inset-left,0px)))}}@media (width>=768px){body{background:var(--chart-grid)}.app-shell,.grade-page{width:100%;max-width:none;box-shadow:none;margin:0}.app-shell__content{min-height:100dvh;padding-right:max(28px, var(--safe-area-inset-right,env(safe-area-inset-right,0px)));padding-bottom:max(32px, var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));padding-left:calc(104px + max(0px, var(--safe-area-inset-left,env(safe-area-inset-left,0px))))}.app-shell--schedule .app-shell__content{height:100%;padding-bottom:0}.app-shell .page-padding{padding-left:32px;padding-right:32px}.bottom-navigation:not(.bottom-navigation--inline){--bottom-navigation-outer-radius:30px;--bottom-navigation-inner-radius:24px;top:50%;bottom:auto;right:auto;left:max(18px, var(--safe-area-inset-left,env(safe-area-inset-left,0px)));width:72px;max-width:none;height:210px;transform:translateY(-50%)}.bottom-navigation:not(.bottom-navigation--inline) .bottom-navigation__content{grid-template-columns:1fr;grid-auto-rows:66px;min-height:210px}.bottom-navigation:not(.bottom-navigation--inline) .bottom-navigation__item{gap:3px;min-height:66px;font-size:11px}.bottom-navigation:not(.bottom-navigation--inline) .bottom-navigation__icon{width:24px;height:24px}.bottom-navigation:not(.bottom-navigation--inline) .bottom-navigation__selection{width:auto;height:62px;transform:translateY(calc(var(--active-index) * 66px));inset:8px 6px auto}.app-shell .toast-message{max-width:min(520px,100vw - 152px);left:calc(50% + 52px)}.schedule-page,.tools-page,.profile-page{width:100%;margin-left:auto;margin-right:auto}.schedule-page{--schedule-gutter:32px;max-width:1280px;padding-top:max(14px, var(--safe-area-inset-top,env(safe-area-inset-top,0px)))}.schedule-page.page-padding{padding-right:var(--schedule-gutter);padding-left:var(--schedule-gutter)}.schedule-header h1{font-size:28px}.schedule-header p{margin-top:8px;font-size:17px}.week-strip{margin-top:12px;margin-right:calc(-1 * var(--schedule-gutter));margin-left:calc(-1 * var(--schedule-gutter))}.schedule-board{margin-right:calc(-1 * var(--schedule-gutter));margin-left:calc(-1 * var(--schedule-gutter))}.tools-page{max-width:1040px;padding-top:max(28px, var(--safe-area-inset-top,env(safe-area-inset-top,0px)))}.tools-announcement-card{min-height:72px;padding:11px 16px}.tool-search{margin-top:16px}.tools-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:22px}.tools-grid button{border-radius:24px;gap:8px;min-height:132px;padding:17px 12px 15px}.tools-grid img{width:62px;height:62px}.tools-grid .tool-label{font-size:16px}.profile-page{max-width:680px;padding-top:max(36px, var(--safe-area-inset-top,env(safe-area-inset-top,0px)))}.profile-hero{min-height:220px}.profile-avatar{width:100px;height:100px}.student-card,.profile-menu,.profile-logout{margin-top:20px}.profile-menu{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.profile-menu>button:nth-child(odd){border-right:.5px solid var(--line-medium)}.profile-menu>button:nth-last-child(-n+2){border-bottom:0}.profile-logout{margin-bottom:20px}.classroom-page,.exam-page,.calendar-page,.library-page,.past-exams-page,.about-page,.privacy-page,.feedback-page,.completion-page{max-width:960px;margin-left:auto;margin-right:auto}.about-page,.privacy-page,.feedback-page,.completion-page{max-width:820px}.classroom-content,.exam-content,.about-content,.privacy-content,.feedback-content,.completion-content,.library-content,.past-exams-page,.calendar-page.page-padding,.grade-results.page-padding,.grade-loading.page-padding{padding-left:32px;padding-right:32px}.login-page{width:100%;max-width:none;margin:0}.login-content{width:min(100%,620px);min-height:100dvh;padding:max(40px, var(--safe-area-inset-top,env(safe-area-inset-top,0px))) 40px max(32px, var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px)));margin:0 auto}.login-logo{border-radius:24px;width:76px;height:76px}.login-logo-mark{width:44px;height:44px}.login-brand h1{letter-spacing:-.025em;font-size:36px}.login-panel{width:100%;margin-top:28px}.app-announcement-dialog{max-width:480px}.pwa-install-guide,.app-update-dialog{max-width:620px}}@media (width>=900px){.profile-page{grid-template-rows:auto auto 1fr;grid-template-columns:minmax(230px,.78fr) minmax(390px,1.22fr);align-content:start;gap:20px 28px;max-width:1040px;display:grid}.profile-hero{grid-row:1/span 2;min-height:250px}.profile-avatar{width:108px;height:108px}.student-card,.profile-menu,.profile-logout{margin-top:0}.student-card,.profile-menu{grid-column:2}.profile-logout{grid-area:3/1;align-self:start}.login-content{grid-template-rows:auto auto auto;grid-template-columns:minmax(220px,.72fr) minmax(420px,1.28fr);align-content:center;align-items:center;gap:10px 56px;width:min(100%,980px);padding-left:44px;padding-right:44px;display:grid}.login-brand{grid-area:1/1/span 3}.login-logo{border-radius:26px;width:82px;height:82px}.login-logo-mark{width:48px;height:48px}.login-brand h1{font-size:38px}.login-panel{grid-column:2;margin-top:0}.login-privacy-consent,.login-legal{grid-column:2}}@media (width>=1180px){.app-shell__content{padding-left:124px;padding-right:44px}.bottom-navigation:not(.bottom-navigation--inline){width:78px;left:28px}.app-shell .page-padding{padding-left:40px;padding-right:40px}.tools-page,.profile-page{max-width:1180px}.tools-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.profile-page{grid-template-columns:minmax(280px,.75fr) minmax(560px,1.25fr);gap:24px 36px}.classroom-page,.exam-page,.calendar-page,.library-page,.past-exams-page{max-width:1080px}}@media (width>=768px) and (hover:hover) and (pointer:fine){.bottom-navigation:not(.bottom-navigation--inline) .bottom-navigation__item:not(.is-active):hover{background:var(--blue-tint)}.tools-announcement-card:hover,.tools-grid button:not(:disabled):hover,.profile-menu>button:not(:disabled):hover,.profile-logout button:not(:disabled):hover{background-color:var(--bg-glass-bright)}}
