@font-face{font-family:Chivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/chivo-vietnamese-wght-normal.06yvowff11tjg.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/chivo-latin-ext-wght-normal.272-s5ii4t41v.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Chivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(../media/chivo-latin-wght-normal.3qrw7vwqb95ml.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--bg:#f4f4f5;--surface:#fff;--surface-subtle:#fafafa;--surface-strong:#f0f0f2;--ink:#18181b;--muted:#62626b;--faint:#8c8c96;--line:#e4e4e7;--line-strong:#d4d4d8;--accent:#ea580c;--accent-hover:#c2410c;--accent-soft:#fff7ed;--accent-line:#fed7aa;--danger:#dc2626;--success:#047857;--focus:#f97316;--shadow-float:0 16px 40px #18181b1f;--sidebar:232px;--radius-input:7px;--radius-card:10px;--radius-modal:14px;--ease:cubic-bezier(.16, 1, .3, 1)}:root[data-theme=dark]{--bg:#09090b;--surface:#141416;--surface-subtle:#101012;--surface-strong:#202023;--ink:#f4f4f5;--muted:#b4b4bd;--faint:#898992;--line:#2b2b30;--line-strong:#3f3f46;--accent:#fb923c;--accent-hover:#fdba74;--accent-soft:#27160b;--accent-line:#7c2d12;--danger:#f87171;--success:#34d399;--focus:#fb923c}@media (prefers-color-scheme:dark){:root[data-theme=system]{--bg:#09090b;--surface:#141416;--surface-subtle:#101012;--surface-strong:#202023;--ink:#f4f4f5;--muted:#b4b4bd;--faint:#898992;--line:#2b2b30;--line-strong:#3f3f46;--accent:#fb923c;--accent-hover:#fdba74;--accent-soft:#27160b;--accent-line:#7c2d12;--danger:#f87171;--success:#34d399;--focus:#fb923c}}*{box-sizing:border-box}html{background:var(--bg);min-width:320px}body{color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;font-family:Chivo Variable,Chivo,system-ui,sans-serif;font-size:14px;line-height:1.5;overflow-x:clip}button,input,select,textarea{font:inherit;color:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit}svg{stroke-width:1.8px;width:18px;height:18px}h1,h2,h3,p{margin:0}h1{letter-spacing:-.035em;font-size:clamp(1.65rem,3vw,2.25rem);font-weight:650;line-height:1.1}h2{font-size:1rem;font-weight:620;line-height:1.25}code,.tabular,time,input[type=time],input[type=date],input[type=number]{font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.overline{color:var(--faint);letter-spacing:.07em;text-transform:uppercase;font:600 .68rem/1.2 ui-monospace,SFMono-Regular,Menlo,monospace}.muted,.page-description{color:var(--muted)}.page-description{max-width:64ch;margin-top:8px;font-size:.91rem}.stack-sm{gap:10px;display:grid}.page-stack{gap:20px;max-width:1420px;margin:0 auto;display:grid}.page-heading{justify-content:space-between;align-items:end;gap:24px;min-height:64px;display:flex}.page-heading .overline{margin-bottom:7px}.page-heading-actions{align-items:center}.view-frame{min-height:100%}.mobile-only,.mobile-day{display:none}.button{border-radius:var(--radius-input);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:8px 13px;font-size:.82rem;font-weight:590;text-decoration:none;transition:background-color .14s ease-out,border-color .14s ease-out,color .14s ease-out,box-shadow .14s ease-out;display:inline-flex}.button:disabled{opacity:.48;cursor:not-allowed}.button-primary{background:var(--ink);color:var(--surface);border-color:var(--ink)}.button-primary:hover:not(:disabled){background:var(--accent);border-color:var(--accent);color:#fff}.button-secondary{background:var(--surface);border-color:var(--line-strong)}.button-secondary:hover:not(:disabled){background:var(--surface-strong);border-color:var(--faint)}.button-quiet{color:var(--muted);background:0 0}.button-quiet:hover{background:var(--surface-strong);color:var(--ink)}.button-small{min-height:34px;padding:6px 10px}.button-wide{width:100%;min-height:46px}.button-cluster{flex-wrap:wrap;align-items:end;gap:8px;display:flex}.text-button{color:var(--accent);background:0 0;border:0;min-height:36px;padding:6px 0;font-size:.78rem;font-weight:600}.text-button:hover{color:var(--accent-hover)}.icon-button{border-radius:var(--radius-input);width:38px;height:38px;color:var(--muted);background:0 0;border:0;flex:none;place-items:center;display:inline-grid}.icon-button:hover{background:var(--surface-strong);color:var(--ink)}.icon-button.danger:hover{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card)}.panel-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;min-height:62px;padding:14px 16px;display:flex}.panel-header .overline{margin-bottom:5px}.panel-header>svg{color:var(--faint)}.count-badge,.storage-badge,.mini-badge{border:1px solid var(--line);background:var(--surface-subtle);color:var(--muted);border-radius:6px;align-items:center;padding:3px 8px;font-size:.69rem;font-weight:600;display:inline-flex}.storage-badge.connected{color:var(--success);border-color:color-mix(in srgb, var(--success) 30%, var(--line));background:color-mix(in srgb, var(--success) 8%, var(--surface))}.login-shell{background:var(--surface-subtle);align-content:center;place-items:center;gap:18px;min-height:100dvh;padding:24px;display:grid}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-modal);width:min(100%,408px);box-shadow:var(--shadow-float);gap:28px;padding:32px;display:grid}.login-card h1{margin-top:8px;font-size:1.8rem}.login-copy{margin-top:10px}.login-footnote{color:var(--faint);font-size:.75rem}.brand-mark{background:var(--ink);width:52px;height:52px;color:var(--surface);border-radius:11px;place-items:center;font:670 1.1rem/1 ui-monospace,SFMono-Regular,Menlo,monospace;display:grid;position:relative;overflow:hidden}.brand-mark i{background:var(--accent);width:13px;height:13px;position:absolute;bottom:0;right:0}.brand-mark-small{border-radius:8px;width:38px;height:38px;font-size:.82rem}.brand-mark-small i{width:10px;height:10px}.brand-mark-mini{border-radius:7px;width:34px;height:34px;font-size:.75rem}.brand-mark-mini i{width:9px;height:9px}.input-with-icon{position:relative}.input-with-icon svg{color:var(--faint);position:absolute;top:50%;left:12px;translate:0 -50%}.input-with-icon input{padding-left:40px}.form-error{color:var(--danger);font-size:.78rem}.hint-toggle{color:var(--accent);background:0 0;border:0;justify-self:start;padding:0;font-size:.75rem;font-weight:600}.hint-toggle:hover{color:var(--accent-hover);text-decoration:underline}.access-hint{color:var(--muted);margin-top:-3px;font-size:.76rem}.app-shell{grid-template-columns:var(--sidebar) minmax(0, 1fr);min-height:100dvh;display:grid}.sidebar{width:var(--sidebar);background:var(--surface-subtle);border-right:1px solid var(--line);z-index:20;flex-direction:column;padding:16px 12px;display:flex;position:fixed;inset:0 auto 0 0}.sidebar-brand{align-items:center;gap:11px;padding:2px 5px 20px;display:flex}.sidebar-brand div:last-child{min-width:0;display:grid}.sidebar-brand strong{font-size:.82rem;font-weight:630}.sidebar-brand span{color:var(--faint);font-size:.71rem}.side-nav{gap:3px;display:grid}.nav-item{min-height:42px;color:var(--muted);text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:11px;padding:0 11px;font-size:.82rem;transition:color .13s ease-out,background-color .13s ease-out;display:flex}.nav-item svg{color:var(--faint);width:17px;height:17px}.nav-item:hover{background:var(--surface-strong);color:var(--ink)}.nav-item.active{background:var(--surface-strong);color:var(--ink);font-weight:600}.nav-item.active svg{color:var(--accent)}.sidebar-footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;margin-top:auto;padding:12px 4px 0;display:flex}.sync-state{color:var(--faint);align-items:center;gap:7px;font-size:.7rem;display:flex}.sync-state i,.sync-dot i{background:#f59e0b;border-radius:50%;width:7px;height:7px}.sync-state i.ok,.sync-dot i.ok{background:var(--success)}.main-content{grid-column:2;min-width:0;height:100dvh;padding:28px clamp(20px,3vw,42px) 48px;overflow-y:auto}.mobile-header,.bottom-nav{display:none}.inline-alert{border:1px solid color-mix(in srgb, var(--danger) 35%, var(--line));border-radius:var(--radius-input);max-width:1420px;color:var(--danger);background:color-mix(in srgb, var(--danger) 7%, var(--surface));margin:0 auto 16px;padding:10px 12px}.next-class{color:#f8fafc;border-radius:var(--radius-card);background:#1d4ed8;grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);min-height:300px;display:grid;position:relative;overflow:hidden}.next-class.course-orange{background:#c2410c}.next-class.course-rose{background:#be123c}.next-class.course-green{background:#047857}.next-class-main{flex-direction:column;min-width:0;padding:clamp(24px,4vw,44px);display:flex}.status-line{gap:7px;display:flex}.status-badge{width:fit-content;color:inherit;text-transform:capitalize;background:#ffffff24;border:1px solid #ffffff47;border-radius:6px;padding:3px 8px;font-size:.68rem;font-weight:650}.status-badge.live{color:#18181b;background:#fff}.status-badge.changed{color:#9a3412;background:#fff7ed;border-color:#fed7aa}.status-badge.cancelled{color:#b91c1c;background:#fef2f2;border-color:#fecaca}.course-identity{margin-top:auto;padding-top:30px}.course-identity p{opacity:.78;font:650 .82rem/1.2 ui-monospace,SFMono-Regular,Menlo,monospace}.course-identity h2{letter-spacing:-.045em;max-width:16ch;margin-top:7px;font-size:clamp(1.7rem,4vw,3.15rem);line-height:.98}.countdown{opacity:.92;min-height:34px;margin-top:14px;font-size:clamp(1rem,2vw,1.3rem)}.countdown strong{font-weight:520}.class-progress{background:#ffffff38;border-radius:4px;height:4px;margin-top:22px;overflow:hidden}.class-progress>div{border-radius:inherit;background:#fff;height:100%}.next-class-details{background:#00000029;flex-direction:column;justify-content:center;gap:20px;padding:clamp(22px,3vw,34px);display:flex}.detail-row{align-items:flex-start;gap:12px;display:flex}.detail-row>svg{opacity:.75;flex:none;margin-top:3px}.detail-row span{opacity:.82;gap:2px;font-size:.77rem;display:grid}.detail-row strong{opacity:1;font-size:.91rem}.accent-detail{background:#ffffff1c;border-radius:8px;margin:-4px -13px;padding:13px}.weather-strip{border-top:1px solid #fff3;align-items:center;gap:14px;padding-top:18px;font-size:.71rem;display:flex}.weather-strip svg{flex:none}.weather-strip span{display:grid}.weather-strip span:nth-last-child(-n+2){opacity:.72;display:inline}.overview-grid{grid-template-columns:minmax(0,1.45fr) minmax(280px,.55fr);gap:16px;display:grid}.agenda-list,.changes-list,.delivery-list{margin:0;padding:0;list-style:none}.agenda-list li{border-bottom:1px solid var(--line);grid-template-columns:9px minmax(0,1fr) auto;align-items:center;gap:13px;min-height:68px;padding:10px 16px;display:grid}.agenda-list li:last-child{border-bottom:0}.agenda-list li>div{display:grid}.agenda-list strong{font-size:.8rem}.agenda-list span{color:var(--muted);font-size:.7rem}.course-pin{background:#2563eb;border-radius:4px;width:4px;height:32px}.course-pin.course-orange{background:#ea580c}.course-pin.course-rose{background:#e11d48}.course-pin.course-green{background:#059669}.agenda-place{text-align:right}.alert-summary{flex-direction:column;align-items:flex-start;min-height:250px;padding:22px;display:flex}.alert-icon{background:var(--accent-soft);width:42px;height:42px;color:var(--accent);border-radius:9px;place-items:center;margin-bottom:auto;display:grid}.alert-summary .overline{margin-top:26px}.alert-summary h2{margin-top:7px;font-size:1.25rem}.alert-summary p:not(.overline){color:var(--muted);max-width:34ch;margin:8px 0 18px;font-size:.8rem}.schedule-note{border:1px solid var(--accent-line);background:var(--accent-soft);min-height:42px;color:color-mix(in srgb, var(--accent) 75%, var(--ink));border-radius:var(--radius-input);align-items:center;gap:10px;padding:9px 12px;font-size:.78rem;display:flex}.week-board{border:1px solid var(--line);border-radius:var(--radius-card);background:var(--line);grid-template-columns:repeat(5,minmax(170px,1fr));gap:1px;display:grid;overflow:hidden}.day-column{background:var(--surface-subtle);min-width:0}.day-column>header{background:var(--surface);border-bottom:1px solid var(--line);align-content:center;height:58px;padding:10px 12px;font-weight:620;display:grid}.day-column>header small{color:var(--faint);font-size:.66rem;font-weight:450}.day-events{align-content:start;gap:8px;min-height:420px;padding:8px;display:grid}.schedule-event{--event:#2563eb;background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--event);border-radius:8px;min-height:122px;padding:11px;transition:border-color .14s ease-out,box-shadow .14s ease-out}.schedule-event:hover{border-color:color-mix(in srgb, var(--event) 45%, var(--line));box-shadow:0 5px 16px #18181b0f}.schedule-event.course-orange{--event:#ea580c}.schedule-event.course-rose{--event:#e11d48}.schedule-event.course-green{--event:#059669}.event-top{color:var(--muted);justify-content:space-between;align-items:center;gap:6px;font-size:.63rem;display:flex}.schedule-event h2{margin-top:9px;font:650 .82rem/1.1 ui-monospace,SFMono-Regular,Menlo,monospace}.event-course-name{color:var(--muted);min-height:32px;margin-top:4px;font-size:.67rem;line-height:1.25}.schedule-event time{margin-top:12px;font-size:.68rem;display:block}.event-location{color:var(--muted);align-items:center;gap:5px;margin-top:4px;font-size:.68rem;display:flex}.event-location svg{width:12px;height:12px}.no-class{min-height:128px;color:var(--faint);align-content:center;place-items:center;gap:7px;font-size:.71rem;display:grid}.no-class svg{opacity:.45}.schedule-source{justify-content:space-between;align-items:center;gap:20px;padding:18px 20px;display:flex}.schedule-source>div{gap:3px;display:grid}.schedule-source p{color:var(--muted);font-size:.76rem}.schedule-source code{color:var(--ink)}.split-layout{grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr);align-items:start;gap:16px;display:grid}.form-panel{overflow:hidden}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:16px;display:grid}.field{align-content:start;gap:6px;min-width:0;display:grid}.field-span-2{grid-column:1/-1}.field label,.field legend,.stack-sm>label{color:var(--ink);font-size:.75rem;font-weight:590}.field label span{color:var(--faint);float:right;font-weight:450}input,select,textarea{border:1px solid var(--line-strong);border-radius:var(--radius-input);background:var(--surface);width:100%;min-height:40px;padding:9px 10px;font-size:.82rem;transition:border-color .13s ease-out,box-shadow .13s ease-out}textarea{resize:vertical}input:hover,select:hover,textarea:hover{border-color:var(--faint)}.speed-control{grid-template-columns:minmax(0,1fr) 92px;gap:7px;display:grid}input::placeholder,textarea::placeholder{color:var(--faint)}input[type=range]{accent-color:var(--accent);border:0;min-height:28px;padding:0}input[type=checkbox],input[type=radio]{width:auto;min-height:auto;accent-color:var(--accent)}.radio-field{border:0;margin:0;padding:0}.segmented-control{border:1px solid var(--line);background:var(--surface-subtle);border-radius:8px;grid-template-columns:repeat(2,1fr);padding:3px;display:grid}.segmented-control.three{grid-template-columns:repeat(3,1fr)}.segmented-control input{opacity:0;pointer-events:none;position:absolute}.segmented-control span{min-height:34px;color:var(--muted);text-transform:capitalize;cursor:pointer;border-radius:5px;place-items:center;font-size:.76rem;display:grid}.segmented-control input:checked+span{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 3px #18181b17}.segmented-control input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px}.form-feedback{color:var(--success);font-size:.76rem}.field-hint{color:var(--faint);margin:-4px 0 0;font-size:.7rem}.changes-list-panel{overflow:hidden}.changes-list li{border-bottom:1px solid var(--line);grid-template-columns:38px minmax(0,1fr) 38px;gap:11px;padding:15px 13px;display:grid}.changes-list li:last-child{border-bottom:0}.change-icon{width:38px;height:38px;color:var(--danger);background:color-mix(in srgb, var(--danger) 9%, var(--surface));border-radius:8px;place-items:center;display:grid}.change-icon.moved{color:var(--accent);background:var(--accent-soft)}.change-copy{min-width:0}.change-copy>div{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.change-copy>time{color:var(--muted);margin-top:3px;font-size:.7rem;display:block}.change-copy p{color:var(--muted);align-items:center;gap:5px;margin-top:8px;font-size:.7rem;display:flex}.change-copy p svg{width:13px;height:13px}.change-copy p svg:nth-of-type(2){margin-left:7px}.change-copy small{color:var(--faint);margin-top:6px;display:block}.empty-state{text-align:center;color:var(--muted);justify-items:center;padding:60px 24px;display:grid}.empty-state>svg{width:28px;height:28px;color:var(--faint);margin-bottom:12px}.empty-state h2,.empty-state h3{color:var(--ink);margin:0 0 5px}.empty-state p{max-width:40ch;font-size:.8rem}.empty-state.compact{min-height:220px}.compact-empty{color:var(--faint);padding:28px 16px;font-size:.77rem}.ntfy-panel{overflow:hidden}.ntfy-grid{grid-template-columns:1.25fr 1fr 130px auto;align-items:end;gap:14px;padding:16px;display:grid}.rules-panel{overflow:hidden}.master-toggle{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;min-height:70px;padding:12px 16px;display:flex}.master-toggle>div{align-items:center;gap:11px;display:flex}.master-toggle>div>svg{color:var(--accent)}.master-toggle span{display:grid}.master-toggle small{color:var(--muted);font-size:.69rem}.switch{flex:none;display:inline-flex;position:relative}.switch>input{opacity:0;pointer-events:none;position:absolute}.switch>span{background:var(--line-strong);border-radius:12px;width:36px;height:21px;transition:background-color .12s ease-out;position:relative}.switch>span:after{content:"";width:17px;height:17px;transition:transform .14s var(--ease);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0000002e}.switch input:checked+span{background:var(--accent)}.switch input:checked+span:after{transform:translate(15px)}.switch input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px}.rule-list{display:grid}.rule-row{border-bottom:1px solid var(--line);grid-template-columns:38px 34px minmax(150px,1.3fr) minmax(140px,.9fr) 86px 88px 38px;align-items:end;gap:10px;min-height:78px;padding:10px 12px;display:grid}.rule-row:last-child{border-bottom:0}.rule-row>.switch,.rule-kind-icon,.check-row,.rule-row>.icon-button{align-self:center}.rule-kind-icon{background:var(--surface-strong);width:34px;height:34px;color:var(--muted);border-radius:7px;place-items:center;display:grid}.check-row{min-height:38px;color:var(--muted);align-items:center;gap:6px;font-size:.72rem;display:flex}.notification-bottom{grid-template-columns:minmax(260px,.7fr) minmax(360px,1.3fr)}.quiet-grid{grid-template-columns:1fr 1fr;gap:12px;padding:16px;display:grid}.delivery-list li{border-bottom:1px solid var(--line);align-items:center;gap:10px;min-height:52px;padding:9px 15px;display:flex}.delivery-list li:last-child{border-bottom:0}.delivery-list i{background:var(--success);border-radius:50%;flex:none;width:7px;height:7px}.delivery-list i.failed{background:var(--danger)}.delivery-list span{display:grid}.delivery-list strong{font-size:.75rem}.delivery-list small{color:var(--muted);font-size:.67rem}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px;display:grid}.settings-card{overflow:hidden}.settings-title{align-items:center;gap:11px;display:flex}.settings-title>svg{color:var(--accent)}.buffer-list{padding:5px 16px;display:grid}.buffer-list>label{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) 68px 30px;align-items:center;gap:7px;min-height:54px;font-size:.76rem;display:grid}.buffer-list>label:last-child{border-bottom:0}.buffer-list span{justify-content:space-between;gap:8px;display:flex}.buffer-list small{color:var(--faint)}.buffer-list input{text-align:right;min-height:34px;padding:6px 8px}.buffer-list em{color:var(--faint);font-size:.7rem;font-style:normal}.compact-toggle{border:0;min-height:52px;padding:10px 0 0}.state-page{text-align:center;align-content:center;place-items:center;gap:10px;min-height:100dvh;padding:24px;display:grid}.state-page>svg{width:34px;height:34px;color:var(--accent)}.state-page p{color:var(--muted);margin-bottom:8px}.loading-shell{align-content:center;gap:18px;width:min(100%,520px);min-height:100dvh;margin:auto;padding:40px 24px;display:grid}.loading-mark{font:700 1rem ui-monospace,monospace}.skeleton{background:var(--line);border-radius:7px}.skeleton-line{width:42%;height:16px}.skeleton-card{height:220px}@media (max-width:1120px){.ntfy-grid{grid-template-columns:1fr 1fr 120px}.ntfy-grid .button-cluster{grid-column:1/-1}.rule-row{grid-template-columns:38px 34px minmax(160px,1fr) minmax(150px,1fr) 80px 38px}.rule-row .check-row{grid-column:3/4}.rule-row>.icon-button{grid-area:1/6}.week-board{overflow-x:auto}}@media (max-width:820px){:root{--sidebar:0px}body{font-size:15px}.app-shell{padding:calc(54px + env(safe-area-inset-top)) 0 calc(68px + env(safe-area-inset-bottom));display:block}.sidebar{display:none}.mobile-header{height:calc(54px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 16px 0;z-index:30;border-bottom:1px solid var(--line);background:var(--surface);grid-template-columns:34px 1fr 34px;align-items:center;gap:10px;display:grid;position:fixed;inset:0 0 auto}.mobile-header>div:nth-child(2){line-height:1.1;display:grid}.mobile-header strong{font-size:.84rem}.mobile-kicker{color:var(--faint);text-transform:uppercase;letter-spacing:.06em;font-size:.6rem}.sync-dot{place-items:center;display:grid}.bottom-nav{height:calc(64px + env(safe-area-inset-bottom));padding:5px 7px env(safe-area-inset-bottom);z-index:30;border-top:1px solid var(--line);background:var(--surface);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;inset:auto 0 0}.bottom-nav-item{min-width:0;min-height:52px;color:var(--faint);background:0 0;border:0;border-radius:8px;align-content:center;place-items:center;gap:2px;font-size:.58rem;display:grid}.bottom-nav-item svg{width:19px;height:19px}.bottom-nav-item.active{color:var(--accent);background:var(--accent-soft)}.main-content{height:auto;min-height:calc(100dvh - 118px);padding:18px 14px 28px;overflow:visible}.page-stack{gap:14px}.page-heading{align-items:center;min-height:44px}.page-heading-actions{align-items:flex-end}.page-heading-actions .button{min-width:44px}.page-heading-actions .button span{max-width:112px}h1{font-size:1.55rem}.next-class{grid-template-columns:1fr;min-height:0}.next-class-main{min-height:270px}.next-class-details{gap:16px;padding:20px}.course-identity h2{max-width:17ch;font-size:2rem}.weather-strip{flex-wrap:wrap}.overview-grid,.split-layout,.notification-bottom,.settings-grid{grid-template-columns:1fr}.alert-summary{min-height:230px}.mobile-only{display:inline-flex}.desktop-action{display:none}.week-board{background:0 0;border:0;grid-template-columns:1fr;gap:8px;overflow:visible}.day-column{border:1px solid var(--line);border-radius:var(--radius-card);overflow:hidden}.day-column>header{grid-template-columns:1fr auto;align-items:center;height:52px}.day-column>header small{text-align:right}.day-events{min-height:0}.desktop-day{display:none}.mobile-day{display:inline}.schedule-event,.event-course-name{min-height:0}.no-class{min-height:76px}.schedule-source{flex-direction:column;align-items:flex-start}.ntfy-grid{grid-template-columns:1fr}.ntfy-grid .button-cluster{grid-column:auto}.rule-row{grid-template-columns:38px 34px minmax(0,1fr) 38px;align-items:center;padding:14px}.rule-row .rule-label{grid-column:3/4}.rule-row .rule-kind{grid-column:1/3}.rule-row .rule-minutes{grid-column:3/4}.rule-row .check-row{grid-column:1/3;min-height:44px}.rule-row>.icon-button{grid-area:1/4}}@media (max-width:520px){.login-shell{padding:14px}.login-card{padding:24px}.page-heading-actions{align-items:center}.page-heading-actions>div{min-width:0}.page-heading-actions .page-save{flex:none;width:44px;min-width:44px;height:44px;padding:0}.page-heading-actions .page-save>span{display:none}.form-grid{grid-template-columns:1fr}.field-span-2{grid-column:auto}.quiet-grid{grid-template-columns:1fr 1fr}.agenda-list li{grid-template-columns:8px minmax(0,1fr)}.agenda-place{text-align:left;grid-column:2;margin-top:-7px}.changes-list li{grid-template-columns:36px minmax(0,1fr) 38px}.weather-strip span:nth-last-child(-n+2){width:calc(50% - 10px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
