@font-face{font-family:GeistSans;src:url(/_next/static/media/0b78ff376f6b9734-s.p.woff2) format("woff2");font-display:swap;font-weight:100 900}@font-face{font-family:GeistSans Fallback;src:local("Arial");ascent-override:94.56%;descent-override:27.76%;line-gap-override:0.00%;size-adjust:106.28%}.__className_8adcd2{font-family:GeistSans,GeistSans Fallback}.__variable_8adcd2{--font-geist-sans:"GeistSans","GeistSans Fallback"}@font-face{font-family:GeistMono;src:url(/_next/static/media/723e11e5093b8e80.p.woff2) format("woff2");font-display:swap;font-weight:100 900}.__className_46451f{font-family:GeistMono,ui-monospace,SFMono-Regular,Roboto Mono,Menlo,Monaco,Liberation Mono,DejaVu Sans Mono,Courier New,monospace}.__variable_46451f{--font-geist-mono:"GeistMono",ui-monospace,SFMono-Regular,Roboto Mono,Menlo,Monaco,Liberation Mono,DejaVu Sans Mono,Courier New,monospace}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_next/static/media/bricolage-grotesque-vietnamese-wght-normal.96a5d80f.woff2) format("woff2-variations");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_next/static/media/bricolage-grotesque-latin-ext-wght-normal.232ded7b.woff2) format("woff2-variations");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_next/static/media/bricolage-grotesque-latin-wght-normal.3e340e57.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--spacing:.25rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.relative{position:relative}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.hidden{display:none}.table{display:table}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root{--ink:#172033;--muted:#687084;--line:#e6e8ed;--paper:#f6f7f9;--surface:#fff;--surface-soft:#fbfbfc;--navy:#153d82;--blue:#2267d8;--blue-soft:#edf4ff;--red:#e84d57;--chip:#edf1f7;--chip-ink:#34415a;--track:#eaecf0;--shadow:0 14px 42px #14234414;--button-border:#d5d9e1;--time:#50586a;--timeline:#dfe3e9;--dot:#b2bac8;--next-grad-a:#fff;--next-grad-b:#f5f7fb;--next-grad-c:#eef2f8;--toast-dismiss:#f1f3f7}html[data-theme=dark]{--ink:#e8edf7;--muted:#a4b0c6;--line:#2f3b52;--paper:#0b1220;--surface:#151e30;--surface-soft:#111a2a;--navy:#9ec0ff;--blue:#7aafff;--blue-soft:#1a2740;--red:#ff7a82;--chip:#243247;--chip-ink:#d0dae9;--track:#1a2436;--shadow:0 14px 42px #0000006b;--button-border:#3a4963;--time:#b4bfd3;--timeline:#3a4963;--dot:#7b8aa3;--next-grad-a:#1c283c;--next-grad-b:#151e30;--next-grad-c:#101826;--toast-dismiss:#243247}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--font-geist-sans),Arial,Helvetica,sans-serif;margin:0;transition:background-color .25s,color .25s}a,button{font:inherit}button{color:inherit}.app-shell{min-height:100vh}.content{max-width:1120px;padding:56px 24px calc(96px + env(safe-area-inset-bottom,0px));margin:0 auto}.day-progress{z-index:40;background:0 0;border:0;height:4px;padding:0;position:sticky;top:0}.day-progress-track{background:0 0;position:absolute;inset:0;overflow:hidden}.day-progress-fill{background:linear-gradient(90deg,var(--navy),var(--blue));height:100%;transition:width .7s cubic-bezier(.22,1,.36,1)}.day-progress-label{z-index:1;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:5px 9px;position:absolute;top:12px;right:16px}@supports (color:color-mix(in lab,red,red)){.day-progress-label{background:color-mix(in srgb,var(--surface) 92%,var(--paper))}}.day-progress-label{box-shadow:var(--shadow);color:var(--ink);font-family:var(--font-geist-mono),monospace;letter-spacing:-.01em;white-space:nowrap;font-size:11px;font-weight:750;animation:label-in .35s both}.date-heading{justify-content:space-between;align-items:end;gap:24px;margin-bottom:26px;display:flex}.date-heading-copy{min-width:0}.person-name{color:var(--blue);letter-spacing:.08em;text-transform:uppercase;margin:0 0 8px;font-size:13px;font-weight:800;animation:rise-in .45s cubic-bezier(.22,1,.36,1) both}.heading-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.week-badge{background:var(--blue-soft);color:var(--navy);letter-spacing:.04em;border-radius:999px;align-items:center;margin:10px 0 0;padding:5px 10px;font-size:11px;font-weight:800;display:inline-flex}h1{letter-spacing:-.05em;margin:0;font-size:clamp(33px,5vw,48px);line-height:1.05}h1,h2,h3{font-family:"Bricolage Grotesque Variable",var(--font-geist-sans),sans-serif}.today-button{border:1px solid var(--button-border);background:var(--surface);cursor:pointer;border-radius:10px;align-items:center;gap:8px;padding:10px 17px;font-weight:700;transition:border-color .18s,color .18s,transform .18s,box-shadow .18s,background .18s;display:inline-flex}.today-button:hover{border-color:var(--blue);color:var(--blue);transform:translateY(-1px)}.now-grid{grid-template-columns:1.25fr 1fr;gap:16px;display:grid}.period-card{min-height:190px;box-shadow:var(--shadow);border-radius:20px;padding:23px 25px;animation:card-in .55s cubic-bezier(.22,1,.36,1) both;position:relative;overflow:hidden}.next-card{background:linear-gradient(155deg,var(--next-grad-a) 0,var(--next-grad-b) 52%,var(--next-grad-c) 100%);border:1px solid var(--line);transition:background .55s,border-color .55s,box-shadow .55s;animation-delay:80ms}.next-card.tinted{background:linear-gradient(155deg,var(--subject) 0,var(--subject) 48%,var(--subject) 100%)}@supports (color:color-mix(in lab,red,red)){.next-card.tinted{background:linear-gradient(155deg,color-mix(in srgb,var(--subject) 14%,var(--surface)) 0,color-mix(in srgb,var(--subject) 7%,var(--next-grad-b)) 48%,color-mix(in srgb,var(--subject) 11%,var(--next-grad-c)) 100%)}}.next-card.tinted{border-color:var(--subject)}@supports (color:color-mix(in lab,red,red)){.next-card.tinted{border-color:color-mix(in srgb,var(--subject) 28%,var(--line))}}.next-card.tinted{box-shadow:0 14px 42px var(--subject)}@supports (color:color-mix(in lab,red,red)){.next-card.tinted{box-shadow:0 14px 42px color-mix(in srgb,var(--subject) 14%,#1423440f)}}.current-card{background:linear-gradient(155deg,var(--subject,var(--navy)) 0,var(--subject,var(--navy)) 48%,var(--navy) 100%);padding-bottom:28px}@supports (color:color-mix(in lab,red,red)){.current-card{background:linear-gradient(155deg,color-mix(in srgb,var(--subject,var(--navy)) 78%,#06101f) 0,color-mix(in srgb,var(--subject,var(--navy)) 52%,#0a1a3a) 48%,color-mix(in srgb,var(--navy) 62%,#071428) 100%)}}.current-card{color:#fff;transition:background .55s}html[data-theme=dark] .current-card{background:linear-gradient(155deg,var(--subject,#60a5fa) 0,var(--subject,#3b82f6) 48%,#182f4e 100%)}@supports (color:color-mix(in lab,red,red)){html[data-theme=dark] .current-card{background:linear-gradient(155deg,color-mix(in srgb,var(--subject,#60a5fa) 62%,#050d18) 0,color-mix(in srgb,var(--subject,#3b82f6) 44%,#0a1528) 48%,#182f4e 100%)}}html[data-theme=dark] .next-card.tinted{background:linear-gradient(155deg,var(--subject) 0,var(--subject) 48%,var(--subject) 100%)}@supports (color:color-mix(in lab,red,red)){html[data-theme=dark] .next-card.tinted{background:linear-gradient(155deg,color-mix(in srgb,var(--subject) 22%,var(--surface)) 0,color-mix(in srgb,var(--subject) 12%,var(--next-grad-b)) 48%,color-mix(in srgb,var(--subject) 16%,var(--next-grad-c)) 100%)}}html[data-theme=dark] .next-card.tinted{border-color:var(--subject)}@supports (color:color-mix(in lab,red,red)){html[data-theme=dark] .next-card.tinted{border-color:color-mix(in srgb,var(--subject) 36%,var(--line))}}html[data-theme=dark] .next-card.tinted{box-shadow:0 14px 42px var(--subject)}@supports (color:color-mix(in lab,red,red)){html[data-theme=dark] .next-card.tinted{box-shadow:0 14px 42px color-mix(in srgb,var(--subject) 18%,#00000059)}}.current-card.tinted{box-shadow:0 14px 42px var(--subject,var(--navy)),inset 0 1px 0 #ffffff24}@supports (color:color-mix(in lab,red,red)){.current-card.tinted{box-shadow:0 14px 42px color-mix(in srgb,var(--subject,var(--navy)) 28%,#1423441f),inset 0 1px 0 #ffffff24}}.current-card .card-label,.current-card .period-card-body p,.current-card .period-kicker,.current-card time{color:#ffffffeb}.current-card .period-card-body p,.current-card .period-kicker{opacity:.78}.current-card .live-dot{background:#fff;animation:live-pulse 1.8s ease-in-out infinite;box-shadow:0 0 0 5px #ffffff2e}.period-progress{background:#ffffff24;height:5px;position:absolute;bottom:0;left:0;right:0}.period-progress-fill{background:linear-gradient(90deg,#fffffff2,#ffffff8c);height:100%;transition:width .85s cubic-bezier(.22,1,.36,1)}.subject-swap{animation:subject-pop .4s cubic-bezier(.22,1,.36,1) both}.card-label{letter-spacing:.08em;text-transform:capitalize;opacity:.78;align-items:center;gap:8px;margin:0;font-size:12px;font-weight:800;display:flex}.today-context{letter-spacing:.06em;opacity:.65;margin-left:auto;font-size:9px}.today-context+.arrow{margin-left:4px}.live-dot{background:#ff6a72;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 5px #ff6a7224}.arrow{margin-left:auto;font-size:18px}.period-card-body{justify-content:space-between;align-items:end;gap:16px;margin-top:49px;display:flex}.period-card h2{letter-spacing:-.035em;margin:0 0 7px;font-size:clamp(23px,3vw,31px)}.period-card-body p{opacity:.68;margin:0;font-size:14px}.period-card-body .period-kicker{letter-spacing:.08em;text-transform:capitalize;opacity:.62;margin:0 0 5px;font-size:10px;font-weight:800}.period-card time{font-family:var(--font-geist-mono),monospace;flex:none;align-items:center;gap:6px;font-size:13px;font-weight:700;display:inline-flex}.period-time{flex-direction:column;flex:none;align-items:flex-end;gap:9px;display:flex}.countdown{font-family:var(--font-geist-mono),monospace;letter-spacing:-.01em;font-variant-numeric:tabular-nums;background:#ffffff1a;border:1px solid #ffffff29;border-radius:8px;padding:6px 9px;font-size:11px;font-weight:750}.next-period-list{margin-top:49px}.next-period-list.double{margin-top:19px}.next-period-row{justify-content:space-between;align-items:end;gap:16px;display:flex}.next-period-row+.next-period-row{border-top:1px solid var(--line);margin-top:13px;padding-top:13px}.next-period-row h2{letter-spacing:-.035em;margin:0 0 6px;font-size:clamp(21px,2.6vw,27px)}.next-period-list.double h2{font-size:20px}.next-period-row p{color:var(--muted);margin:0;font-size:12px}.next-period-row .period-kicker{color:var(--subject,var(--blue));letter-spacing:.08em;text-transform:capitalize;margin-bottom:4px;font-size:9px;font-weight:800}.schedule-controls{justify-content:flex-end;margin:22px 0 10px;display:flex}.week-switcher{border:1px solid var(--line);background:var(--surface);border-radius:12px;grid-template-columns:1fr 1fr;padding:4px;display:inline-grid}.week-switcher button{min-width:84px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:8px 13px;font-size:12px;font-weight:750}.week-switcher button:hover{color:var(--blue)}.week-switcher button.active{background:var(--navy);color:#fff;box-shadow:0 3px 10px #153d822e}html[data-theme=dark] .week-switcher button.active{background:var(--blue)}@supports (color:color-mix(in lab,red,red)){html[data-theme=dark] .week-switcher button.active{background:color-mix(in srgb,var(--blue) 55%,#1e3a6e)}}html[data-theme=dark] .week-switcher button.active{color:#fff;box-shadow:0 3px 12px #00000059}.week-strip{background:var(--track);border-radius:16px;grid-template-columns:repeat(5,1fr);gap:6px;margin:0 0 54px;padding:7px;display:grid}.day-button{cursor:pointer;background:0 0;border:0;border-radius:11px;justify-content:center;align-items:center;gap:9px;padding:12px 8px;display:flex}.day-button span{color:var(--muted);text-transform:capitalize;font-size:12px;font-weight:700}.day-button:hover{background:var(--surface)}@supports (color:color-mix(in lab,red,red)){.day-button:hover{background:color-mix(in srgb,var(--surface) 70%,transparent)}}.day-button.selected{background:var(--surface);box-shadow:var(--shadow)}.day-button.selected span{color:var(--blue)}.schedule-section{width:100%}.schedule-list{border:1px solid var(--line);background:var(--surface);border-radius:18px;overflow:hidden}.extras-panel{border:1px solid var(--blue);margin:22px 0 0;padding:18px}@supports (color:color-mix(in lab,red,red)){.extras-panel{border:1px solid color-mix(in srgb,var(--blue) 18%,var(--line))}}.extras-panel{background:linear-gradient(155deg,var(--blue) 0,var(--surface) 48%,var(--surface-soft) 100%);border-radius:18px}@supports (color:color-mix(in lab,red,red)){.extras-panel{background:linear-gradient(155deg,color-mix(in srgb,var(--blue) 8%,var(--surface)) 0,var(--surface) 48%,var(--surface-soft) 100%)}}.extras-panel{box-shadow:var(--shadow);animation:card-in .55s cubic-bezier(.22,1,.36,1) both}.extras-heading{align-items:center;gap:10px;margin-bottom:14px;display:flex}.extras-heading>svg{color:var(--blue);flex-shrink:0}.extras-heading h2{letter-spacing:-.02em;margin:0;font-size:16px}.extras-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}@media (min-width:720px){.extras-list{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}}.extras-card{border:1px solid var(--subject,var(--blue));justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}@supports (color:color-mix(in lab,red,red)){.extras-card{border:1px solid color-mix(in srgb,var(--subject,var(--blue)) 22%,var(--line))}}.extras-card{background:linear-gradient(135deg,var(--subject,var(--blue)) 0,var(--surface) 100%);border-radius:14px}@supports (color:color-mix(in lab,red,red)){.extras-card{background:linear-gradient(135deg,color-mix(in srgb,var(--subject,var(--blue)) 12%,var(--surface)) 0,var(--surface) 100%)}}.extras-card.live{box-shadow:inset 3px 0 0 var(--subject,var(--blue))}.extras-card-main{align-items:center;gap:12px;min-width:0;display:flex}.extras-icon-wrap{background:var(--subject,var(--blue));border-radius:11px;flex-shrink:0;place-items:center;width:36px;height:36px;display:grid}@supports (color:color-mix(in lab,red,red)){.extras-icon-wrap{background:color-mix(in srgb,var(--subject,var(--blue)) 16%,var(--surface))}}.extras-icon-wrap,.extras-kind{color:var(--subject,var(--blue))}.extras-kind{letter-spacing:.04em;text-transform:none;margin-bottom:4px;font-size:10px;font-weight:800;display:inline-block}.extras-card-copy h3{letter-spacing:-.02em;margin:0;font-size:15px}.extras-card-meta{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:6px;display:flex}.extras-card-meta time{color:var(--time);font-family:var(--font-geist-mono),monospace;white-space:nowrap;font-size:11px;font-weight:700}.extras-live-tag,.extras-soon-tag{letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:3px 7px;font-size:10px;font-weight:800}.extras-live-tag{background:var(--red);color:#fff}.extras-soon-tag{background:var(--subject,var(--blue))}@supports (color:color-mix(in lab,red,red)){.extras-soon-tag{background:color-mix(in srgb,var(--subject,var(--blue)) 16%,var(--chip))}}.extras-soon-tag{color:var(--subject,var(--blue))}.extra-alongside{font-weight:650;opacity:.9!important;margin-top:8px!important;font-size:12px!important}.subject-icon{vertical-align:-.15em;opacity:.92;flex-shrink:0;margin-right:.35em;display:inline-block}.lesson-heading h3,.next-period-row h2,.period-card h2{align-items:center;gap:0;display:inline-flex}.next-period-row h2 .subject-icon,.period-card h2 .subject-icon{margin-right:.4em}.lesson-heading h3 .subject-icon{color:var(--subject,var(--blue));opacity:.88}html[data-theme=dark] .extras-panel{background:linear-gradient(155deg,var(--blue) 0,var(--surface) 52%,var(--surface-soft) 100%)}@supports (color:color-mix(in lab,red,red)){html[data-theme=dark] .extras-panel{background:linear-gradient(155deg,color-mix(in srgb,var(--blue) 14%,var(--surface)) 0,var(--surface) 52%,var(--surface-soft) 100%)}}.schedule-item{border-bottom:1px solid var(--line);min-height:76px;animation:row-in .45s cubic-bezier(.22,1,.36,1) both;animation-delay:calc(var(--row-i,0) * 28ms);grid-template-columns:42px 1fr auto;align-items:center;padding:0 20px 0 0;display:grid;position:relative}.schedule-item:last-child{border-bottom:0}.schedule-item.break{background:var(--surface-soft)}.schedule-item.transition{min-height:28px;color:var(--muted);background:0 0}.schedule-item.marker{background:var(--track);min-height:52px}.schedule-item.active{background:var(--subject,var(--blue))}@supports (color:color-mix(in lab,red,red)){.schedule-item.active{background:color-mix(in srgb,var(--subject,var(--blue)) 10%,var(--surface))}}.schedule-item.active{animation:row-in .45s cubic-bezier(.22,1,.36,1) both,active-glow 2.4s ease-in-out infinite}.timeline{place-items:center;height:100%;display:grid;position:relative}.timeline:before{content:"";background:var(--timeline);width:1px;height:100%;position:absolute;left:50%}.timeline-dot{background:var(--dot);border:2px solid var(--surface);width:9px;height:9px;box-shadow:0 0 0 1px var(--dot);z-index:1;border-radius:50%}.class .timeline-dot{background:var(--subject,var(--blue));box-shadow:0 0 0 1px var(--subject,var(--blue))}.has-subject{background:var(--subject)}@supports (color:color-mix(in lab,red,red)){.has-subject{background:color-mix(in srgb,var(--subject) 9%,var(--surface))}}.has-subject .slot-label{color:var(--subject)}.has-subject .room-chip{background:var(--subject)}@supports (color:color-mix(in lab,red,red)){.has-subject .room-chip{background:color-mix(in srgb,var(--subject) 16%,var(--surface))}}.has-subject .room-chip{color:var(--subject)}@supports (color:color-mix(in lab,red,red)){.has-subject .room-chip{color:color-mix(in srgb,var(--subject) 48%,var(--ink))}}html[data-theme=dark] .has-subject{background:var(--subject)}@supports (color:color-mix(in lab,red,red)){html[data-theme=dark] .has-subject{background:color-mix(in srgb,var(--subject) 14%,var(--surface))}}html[data-theme=dark] .has-subject .room-chip{background:var(--subject)}@supports (color:color-mix(in lab,red,red)){html[data-theme=dark] .has-subject .room-chip{background:color-mix(in srgb,var(--subject) 22%,var(--surface))}}html[data-theme=dark] .has-subject .room-chip{color:var(--subject)}@supports (color:color-mix(in lab,red,red)){html[data-theme=dark] .has-subject .room-chip{color:color-mix(in srgb,var(--subject) 35%,var(--ink))}}.active .timeline-dot{background:var(--red);border:0;width:12px;height:12px;box-shadow:0 0 0 4px #e84d5726}.schedule-copy{justify-content:space-between;align-items:center;gap:22px;padding:14px 0;display:flex}.schedule-copy h3{margin:0;font-size:15px}.schedule-copy p{color:var(--muted);margin:4px 0 0;font-size:12px}.schedule-copy time{color:var(--time);font-family:var(--font-geist-mono),monospace;white-space:nowrap;font-size:12px;font-weight:600}.transition .schedule-copy{padding:3px 0}.transition .schedule-copy h3{letter-spacing:.02em;opacity:.72;font-size:11px;font-style:normal;font-weight:650}.transition .schedule-copy time{opacity:.7;font-size:10px}.transition .timeline-dot{background:var(--dot);width:5px;height:5px;box-shadow:none;border:0}.movement-arrow{color:var(--blue);opacity:.7;margin-right:6px;display:inline-block}.active-tag{background:var(--red);color:#fff;text-transform:capitalize;letter-spacing:.06em;border-radius:999px;margin-left:12px;padding:5px 8px;font-size:10px;font-weight:800;animation:tag-pop .45s cubic-bezier(.22,1,.36,1) both}.lesson-copy{min-width:0}.lesson-heading{align-items:baseline;gap:10px;display:flex}.slot-label{min-width:56px;color:var(--blue);letter-spacing:.05em;text-transform:capitalize}.room-chip,.slot-label{font-size:10px;font-weight:800}.room-chip{background:var(--chip);color:var(--chip-ink);border-radius:6px;align-items:center;gap:3px;margin-right:8px;padding:3px 7px;display:inline-flex}.break .slot-label,.marker .slot-label,.transition .slot-label{display:none}.empty-schedule{text-align:center;min-height:220px;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;padding:46px 24px;display:flex}.empty-schedule svg{color:var(--blue);margin-bottom:12px}.empty-schedule h3{color:var(--ink);margin:0;font-size:20px}.empty-schedule p{margin:7px 0 0;font-size:13px}.off-day-banner{border-bottom:1px solid var(--line);background:var(--surface-soft);color:var(--muted);align-items:center;gap:14px;padding:22px 24px;display:flex}.off-day-banner svg{color:var(--blue);flex-shrink:0}.off-day-banner h3{color:var(--ink);margin:0;font-size:18px}.off-day-banner p{margin:4px 0 0;font-size:13px}.fyi-label{border-bottom:1px solid var(--line);background:var(--paper);color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin:0;padding:10px 20px;font-size:11px;font-weight:800}.home-index{max-width:560px}.home-heading{margin-bottom:28px}.home-logo{width:56px;height:56px;margin:0 0 18px;animation:logo-float 3.5s ease-in-out infinite,rise-in .5s cubic-bezier(.22,1,.36,1) both;display:block}.home-kicker{color:var(--blue);letter-spacing:.08em;text-transform:uppercase;margin:0 0 10px;font-size:12px;font-weight:800}.home-search{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:14px;align-items:center;gap:12px;padding:14px 16px;transition:border-color .2s,box-shadow .2s,transform .2s;display:flex}.home-search:focus-within{border-color:var(--blue)}@supports (color:color-mix(in lab,red,red)){.home-search:focus-within{border-color:color-mix(in srgb,var(--blue) 40%,var(--line))}}.home-search:focus-within{transform:translateY(-1px);box-shadow:0 14px 34px #2267d81f}.home-search svg{color:var(--muted);flex-shrink:0}.home-search input{width:100%;color:var(--ink);background:0 0;border:0;outline:0;font-size:16px;font-weight:600}.home-search input::placeholder{color:#9aa3b5;font-weight:500}.home-list{gap:10px;margin:22px 0 0;padding:0;list-style:none;display:grid}.home-list>li{animation:row-in .45s cubic-bezier(.22,1,.36,1) both;animation-delay:calc(80ms + var(--row-i,0) * 55ms)}.home-card{border:1px solid var(--line);background:var(--surface);color:inherit;border-radius:16px;align-items:center;gap:14px;padding:16px 18px;text-decoration:none;transition:border-color .2s,box-shadow .2s,transform .22s cubic-bezier(.22,1,.36,1);display:flex}.home-card:hover{border-color:var(--avatar,var(--blue))}@supports (color:color-mix(in lab,red,red)){.home-card:hover{border-color:color-mix(in srgb,var(--avatar,var(--blue)) 35%,var(--line))}}.home-card:hover{box-shadow:0 14px 32px var(--avatar,var(--blue))}@supports (color:color-mix(in lab,red,red)){.home-card:hover{box-shadow:0 14px 32px color-mix(in srgb,var(--avatar,var(--blue)) 16%,#1423440f)}}.home-card:hover{transform:translateY(-2px)}.home-card:hover .home-card-chevron{opacity:1;transform:translate(3px)}.home-avatar{background:var(--avatar,var(--blue));border-radius:14px;flex-shrink:0;place-items:center;width:44px;height:44px;display:grid}@supports (color:color-mix(in lab,red,red)){.home-avatar{background:color-mix(in srgb,var(--avatar,var(--blue)) 16%,var(--surface))}}.home-avatar{color:var(--avatar,var(--blue));font-family:"Bricolage Grotesque Variable",var(--font-geist-sans),sans-serif;letter-spacing:-.02em;font-size:18px;font-weight:800}.home-card-copy{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.home-card-name{font-family:"Bricolage Grotesque Variable",var(--font-geist-sans),sans-serif;letter-spacing:-.03em;font-size:22px;font-weight:700}.home-card-path{color:var(--muted);font-family:var(--font-geist-mono),monospace;font-size:12px;font-weight:600}.home-card-chevron{color:var(--avatar,var(--blue));opacity:.55;font-size:18px;transition:transform .22s,opacity .22s}.home-empty{color:var(--muted);text-align:center;padding:28px 8px;font-size:14px}.settings-footer{border-top:1px solid var(--line);justify-content:center;margin-top:48px;padding-top:22px;display:flex}.settings-footer-link{color:var(--muted);font:inherit;letter-spacing:.02em;cursor:pointer;background:0 0;border:0;border-radius:10px;align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:700;text-decoration:none;transition:color .18s,background .18s;display:inline-flex}.settings-footer-link:hover{color:var(--blue);background:var(--blue)}@supports (color:color-mix(in lab,red,red)){.settings-footer-link:hover{background:color-mix(in srgb,var(--blue) 8%,transparent)}}.settings-overlay{z-index:60;padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0b122075;place-items:end center;animation:toast-in .22s both;display:grid;position:fixed;inset:0}.settings-dialog{border:1px solid var(--line);background:linear-gradient(165deg,var(--surface) 0,var(--surface) 48%,var(--surface-soft) 100%);border-radius:22px 22px 18px 18px;width:min(440px,100%);max-height:min(86vh,720px);padding:18px 16px 16px;overflow:auto}@supports (color:color-mix(in lab,red,red)){.settings-dialog{background:linear-gradient(165deg,color-mix(in srgb,var(--surface) 90%,var(--blue-soft)) 0,var(--surface) 48%,var(--surface-soft) 100%)}}.settings-dialog{box-shadow:var(--shadow);animation:card-in .32s cubic-bezier(.22,1,.36,1) both}.settings-dialog-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;padding:2px 4px 8px;display:flex}.settings-dialog-head h2{letter-spacing:-.03em;margin:0;font-size:22px}.settings-close{border:1px solid var(--line);background:var(--surface);width:36px;height:36px;color:var(--muted);cursor:pointer;border-radius:10px;place-items:center;display:grid}.settings-close:hover{color:var(--ink);border-color:var(--blue)}.settings-card{border:1px solid var(--line);background:var(--surface);border-radius:16px;margin-bottom:12px;padding:16px}@supports (color:color-mix(in lab,red,red)){.settings-card{background:color-mix(in srgb,var(--surface) 88%,var(--paper))}}.settings-card:last-child{margin-bottom:0}.settings-card-copy h3{letter-spacing:-.02em;margin:0 0 6px;font-size:16px}.settings-card-copy p{color:var(--muted);margin:0 0 14px;font-size:13px;line-height:1.45}.settings-segment{border:1px solid var(--line);background:var(--track);border-radius:12px;grid-template-columns:1fr 1fr;gap:6px;padding:5px;display:grid}.settings-segment-theme{grid-template-columns:1fr 1fr 1fr}.settings-segment button{min-height:42px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:9px;justify-content:center;align-items:center;gap:8px;font-size:13px;font-weight:750;display:inline-flex}@media (max-width:420px){.settings-segment-theme button{flex-direction:column;gap:4px;min-height:52px;font-size:11px}}.settings-segment button:hover{color:var(--blue)}.settings-segment button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.settings-action{justify-content:center;width:100%}.settings-action:disabled{opacity:.55;cursor:not-allowed}.settings-meta{color:var(--muted);margin:10px 0 0;font-size:12px}.home-lede{color:var(--muted);max-width:28ch;margin:12px 0 0;font-size:15px;line-height:1.45}.toast-stack{z-index:55;pointer-events:none;gap:10px;width:min(360px,100vw - 32px);display:grid;position:fixed;bottom:16px;left:16px}.toast{pointer-events:auto;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:16px;align-items:start;gap:12px;padding:14px 14px 14px 16px;animation:toast-in .35s cubic-bezier(.22,1,.36,1) both;display:flex}.toast-copy{flex:1;min-width:0}.toast-title{color:var(--ink);margin:0;font-size:13px;font-weight:800}.toast-body{color:var(--muted);margin:4px 0 0;font-size:12px;line-height:1.35}.toast-dismiss{background:var(--toast-dismiss);width:28px;height:28px;color:var(--muted);cursor:pointer;border:0;border-radius:8px;flex-shrink:0;place-items:center;display:grid}.toast-dismiss:hover{color:var(--ink)}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:none}}.print-timetable{display:none}@media (max-width:720px){.content{padding:32px 16px calc(80px + env(safe-area-inset-bottom,0px))}.day-progress{height:4px;padding:0}.day-progress-label{padding:4px 8px;font-size:10px;top:10px;right:12px}.date-heading{flex-direction:column;align-items:flex-start;gap:14px;margin-bottom:20px}.heading-actions{width:100%}.heading-actions .today-button{justify-content:center;width:100%}.person-name{margin-bottom:6px}.date-heading h1{font-size:clamp(26px,7vw,34px);line-height:1.15}.now-grid{grid-template-columns:1fr;gap:12px}.period-card{border-radius:18px;min-height:150px;padding:20px 18px}.period-card-body{flex-direction:column;align-items:flex-start;gap:14px;margin-top:28px}.period-time{align-items:flex-start;width:100%}.countdown{align-self:flex-start}.next-period-list{margin-top:28px}.next-period-list.double{margin-top:16px}.week-strip{gap:4px;margin-bottom:36px;padding:5px}.day-button{gap:0;padding:10px 4px}.day-button span{font-size:11px}.schedule-copy{flex-direction:column;align-items:flex-start;gap:5px}.schedule-item{grid-template-columns:36px 1fr auto;min-height:82px;padding-right:12px}.schedule-item.transition{min-height:26px}.marker{min-height:54px}.active-tag{margin-left:8px}.settings-footer{margin-top:36px;padding-top:18px}.extras-panel{margin-top:18px;padding:16px}.extras-card{flex-direction:column;align-items:flex-start;gap:10px}.extras-card-meta{flex-flow:wrap;align-items:flex-start}.settings-overlay{place-items:end stretch;padding:0}.settings-dialog{width:100%;max-height:min(90vh,760px);padding:18px 16px calc(18px + env(safe-area-inset-bottom,0px));border-radius:22px 22px 0 0}.settings-card{padding:16px}.toast-stack{left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));width:auto}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes card-in{0%{opacity:0;transform:translateY(16px)scale(.985)}to{opacity:1;transform:none}}@keyframes row-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes subject-pop{0%{opacity:0;filter:blur(2px);transform:translateY(6px)}to{opacity:1;filter:none;transform:none}}@keyframes countdown-tick{0%{transform:scale(1.04)}to{transform:none}}@keyframes live-pulse{0%,to{box-shadow:0 0 0 5px #ffffff29}50%{box-shadow:0 0 0 9px #ffffff14}}@keyframes active-glow{0%,to{box-shadow:inset 3px 0 0 color-mix(in srgb,var(--subject,var(--blue)) 55%,transparent)}50%{box-shadow:inset 3px 0 0 color-mix(in srgb,var(--subject,var(--blue)) 90%,transparent)}}@keyframes tag-pop{0%{opacity:0;transform:scale(.82)}to{opacity:1;transform:none}}@keyframes label-in{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:none}}@keyframes label-in-inside{0%{opacity:0;transform:translateY(-50%)translate(-4px)}to{opacity:1;transform:translateY(-50%)}}@keyframes progress-sheen{0%,to{background-position:0}50%{background-position:100%}}@keyframes logo-float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.dev-fab{color:#fff;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;background:#111827;border:1px solid #1f2937;border-radius:999px;padding:10px 14px;font-weight:800;bottom:18px;right:18px;box-shadow:0 12px 30px #00000040}.dev-fab,.dev-panel{z-index:60;font-size:12px;position:fixed}.dev-panel{color:#e5e7eb;background:#0b1220;border:1px solid #1f2937;border-radius:18px;width:min(340px,100vw - 32px);max-height:min(78vh,720px);padding:14px;bottom:16px;right:16px;overflow:auto;box-shadow:0 24px 60px #00000059}.dev-panel-header{justify-content:space-between;align-items:start;gap:12px;margin-bottom:12px;display:flex}.dev-panel-header h2{color:#fff;letter-spacing:-.03em;margin:0;font-size:18px}.dev-kicker{color:#93c5fd;letter-spacing:.08em;text-transform:uppercase;margin:0 0 4px;font-size:10px;font-weight:800}.dev-icon-button{color:#fff;cursor:pointer;background:#1f2937;border:0;border-radius:8px;width:28px;height:28px;font-size:18px;line-height:1}.dev-section+.dev-section{border-top:1px solid #1f2937;margin-top:14px;padding-top:14px}.dev-section h3{color:#93c5fd;letter-spacing:.06em;text-transform:uppercase;margin:0 0 8px;font-size:11px;font-weight:800}.dev-button{color:#fff;cursor:pointer;background:#2563eb;border:0;border-radius:10px;width:100%;padding:9px 12px;font-size:12px;font-weight:750}.dev-button.ghost{color:#e5e7eb;background:#1f2937}.dev-button.tiny{width:auto;padding:5px 8px;font-size:10px}.dev-button.tiny.ghost{background:#1f2937}.dev-button-stack{gap:8px;margin:10px 0;display:grid}.dev-notify-row{color:#e5e7eb;background:#111827;border-radius:12px;gap:6px;padding:8px;display:grid}.dev-notify-actions{flex-wrap:wrap;gap:6px;display:flex}.dev-note{color:#94a3b8;margin:8px 0 0;font-size:11px;line-height:1.35}.dev-slider{color:#cbd5e1;gap:6px;margin-bottom:8px;display:grid}.dev-slider input{width:100%}.dev-select{color:#fff;background:#111827;border:1px solid #334155;border-radius:10px;width:100%;padding:8px 10px}.dev-anim-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.dev-anim-list li{background:#111827;border-radius:12px;grid-template-columns:1fr auto;align-items:center;gap:10px;padding:8px;display:grid}.dev-anim-meta{gap:2px;min-width:0;display:grid}.dev-anim-meta strong{color:#fff;font-size:11px}.dev-anim-meta span{color:#94a3b8;font-size:10px}.dev-anim-stage{align-items:center;gap:8px;display:flex}.dev-anim-swatch{background:#38bdf8;border-radius:8px;width:28px;height:28px;display:inline-block}.dev-anim-rise{animation:rise-in .45s cubic-bezier(.22,1,.36,1) both}.dev-anim-card{animation:card-in .55s cubic-bezier(.22,1,.36,1) both}.dev-anim-row{animation:row-in .45s cubic-bezier(.22,1,.36,1) both}.dev-anim-subject{animation:subject-pop .4s cubic-bezier(.22,1,.36,1) both}.dev-anim-pulse{background:#fff;border-radius:50%;animation:live-pulse 1.8s ease-in-out infinite}.dev-anim-glow{background:#14284a;animation:active-glow 2.4s ease-in-out infinite;box-shadow:inset 3px 0 #2267d8}.dev-anim-tag{background:#e84d57;animation:tag-pop .45s cubic-bezier(.22,1,.36,1) both}.dev-anim-label{animation:label-in .35s both}.dev-anim-float{animation:logo-float 3.5s ease-in-out infinite}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.dev-anim-swatch{animation-duration:.45s!important;animation-iteration-count:infinite!important}}@media print{@page{size:A4 landscape;margin:8mm}body,html{color:#000;background:#fff;height:auto}.day-progress,.screen-only{display:none!important}.app-shell{min-height:0}.print-timetable{break-inside:avoid;page-break-inside:avoid;display:block}.print-timetable>h1{letter-spacing:-.03em;margin:0 0 6px;font-size:14pt}.print-header{align-items:center;gap:8px;margin:0 0 6px;display:flex}.print-header img{flex-shrink:0;width:22pt;height:22pt}.print-header h1{letter-spacing:-.03em;margin:0;font-size:14pt}.print-week{break-inside:avoid;page-break-inside:avoid}.print-week+.print-week{margin-top:8px}.print-week h2{letter-spacing:-.02em;margin:0 0 4px;font-size:10pt}.print-week table{border-collapse:collapse;table-layout:fixed;width:100%}.print-week td,.print-week th{vertical-align:top;border:1px solid #bbb;padding:3px 5px;font-size:7.5pt;line-height:1.2}.print-week thead th{text-align:center;background:#f0f0f0;font-size:8pt;font-weight:700}.print-week tbody th{text-align:left;white-space:nowrap;background:#f7f7f7;width:44px;font-size:7.5pt;font-weight:700}.print-week td strong{letter-spacing:-.01em;font-size:8pt;font-weight:700;display:block}.print-week td span{color:#444;margin-top:1px;font-size:6.5pt;display:block}.print-week td.print-cell{background:var(--subject)}@supports (color:color-mix(in lab,red,red)){.print-week td.print-cell{background:color-mix(in srgb,var(--subject) 14%,white)}}.print-week td.print-cell{border-color:var(--subject)}@supports (color:color-mix(in lab,red,red)){.print-week td.print-cell{border-color:color-mix(in srgb,var(--subject) 35%,#bbb)}}.print-week td.print-cell{box-shadow:inset 3pt 0 0 var(--subject)}.print-week td.print-cell strong{color:var(--subject)}@supports (color:color-mix(in lab,red,red)){.print-week td.print-cell strong{color:color-mix(in srgb,var(--subject) 72%,#111)}}.print-week td.print-cell span{color:var(--subject)}@supports (color:color-mix(in lab,red,red)){.print-week td.print-cell span{color:color-mix(in srgb,var(--subject) 40%,#444)}}}