@import"https://fonts.googleapis.com/css2?family=Caprasimo:wght@400&family=Figtree:wght@400;600;700&display=swap";:root{--color-bg: #f5ead8;--color-surface: #ebddc5;--color-text: #201e1d;--color-accent: #c67139;--color-accent-2: #7a8a5e;--color-divider: color-mix(in srgb, #201e1d 16%, transparent);--color-neutral-100: #f9f4ed;--color-neutral-200: #eee7db;--color-neutral-300: #dcd3c4;--color-neutral-400: #c0b6a5;--color-neutral-500: #a19786;--color-neutral-600: #82796a;--color-neutral-700: #645c50;--color-neutral-800: #474238;--color-neutral-900: #2e2b25;--color-accent-100: #fff2eb;--color-accent-200: #ffe1d0;--color-accent-300: #ffc6a5;--color-accent-400: #f6a06b;--color-accent-500: #d67f48;--color-accent-600: #b2622d;--color-accent-700: #8c491a;--color-accent-800: #643312;--color-accent-900: #402310;--color-accent-2-100: #f0fae1;--color-accent-2-200: #e1eecc;--color-accent-2-300: #ccdbb2;--color-accent-2-400: #aebf92;--color-accent-2-500: #8fa073;--color-accent-2-600: #728157;--color-accent-2-700: #56633f;--color-accent-2-800: #3d472b;--color-accent-2-900: #272e1b;--font-heading: "Caprasimo", system-ui, sans-serif;--font-heading-weight: 400;--font-body: "Figtree", system-ui, sans-serif;--space-1: 4.4px;--space-2: 8.8px;--space-3: 13.2px;--space-4: 17.6px;--space-6: 26.4px;--space-8: 35.2px;--radius-sm: 8px;--radius-md: 16px;--radius-lg: 28px;--shadow-sm: 0 1px 2px color-mix(in srgb, #2e2b25 14%, transparent);--shadow-md: 0 3px 10px color-mix(in srgb, #2e2b25 16%, transparent);--shadow-lg: 0 12px 32px color-mix(in srgb, #2e2b25 22%, transparent)}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body)}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:var(--font-heading-weight)}.washed{filter:saturate(.6) contrast(.85) brightness(1.1) opacity(.94)}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-size:15px;line-height:1.55;font-weight:400}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:var(--font-heading-weight);line-height:1.12;letter-spacing:-.015em;margin:0 0 var(--space-2)}h1{font-size:42px}h2{font-size:32px}h3{font-size:25px}h4{font-size:20px}h5{font-size:16px}h6{font-size:13px}h6{letter-spacing:.08em;text-transform:uppercase}p{margin:0 0 var(--space-3)}a{color:var(--color-accent);text-underline-offset:3px}img{display:block;max-width:100%}figure{margin:0}figcaption{font-size:11px;margin-top:var(--space-1);color:color-mix(in srgb,var(--color-text) 55%,transparent)}.text-muted{color:color-mix(in srgb,var(--color-text) 55%,transparent)}:focus{outline:none}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}::selection{background:color-mix(in srgb,var(--color-accent) 30%,transparent)}.hr{height:1px;border:0;margin:var(--space-4) 0;background:var(--color-divider)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;text-decoration:none;font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:14px;line-height:1.2;color:var(--color-text);background:transparent;border:1px solid transparent;padding:var(--space-2) calc(var(--space-3) * 1.2);border-radius:var(--radius-md)}.btn svg{display:block}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--color-accent);color:var(--color-bg)}.btn-primary:hover{background:var(--color-accent-600)}.btn-primary:active{background:var(--color-accent-700)}.btn-secondary{border-color:var(--color-divider)}.btn-secondary:hover{background:color-mix(in srgb,var(--color-text) 7%,transparent)}.btn-secondary:active{background:color-mix(in srgb,var(--color-text) 14%,transparent)}.btn-ghost{color:var(--color-accent);padding-inline:var(--space-1)}.btn-ghost:hover{background:color-mix(in srgb,var(--color-accent) 10%,transparent)}.btn-ghost:active{background:color-mix(in srgb,var(--color-accent) 18%,transparent)}.btn-icon{width:36px;height:36px;padding:0}.btn-block{width:100%;margin-top:var(--space-2)}.field>label{display:block;font-size:12px;margin-bottom:5px;color:color-mix(in srgb,var(--color-text) 70%,transparent)}.input{width:100%;min-height:36px;padding:6px 10px;font:inherit;font-size:14px;color:var(--color-text);caret-color:var(--color-accent);background:var(--color-surface);border:1px solid var(--color-divider);border-radius:var(--radius-md)}.input:hover{border-color:color-mix(in srgb,var(--color-text) 45%,transparent)}.input:focus-visible{border-color:var(--color-accent);outline-offset:0}textarea.input{min-height:90px;resize:vertical}.radio{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:14px}.radio input,.seg-opt input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.radio .dot{width:16px;height:16px;flex:none;border-radius:50%;border:1.5px solid var(--color-divider)}.radio:hover .dot{border-color:var(--color-accent)}.radio input:checked+.dot{border-color:var(--color-accent);background:var(--color-accent);box-shadow:inset 0 0 0 4px var(--color-bg)}.radio input:focus-visible+.dot{outline:2px solid var(--color-accent);outline-offset:2px}.seg{display:inline-flex;overflow:hidden;border:1px solid var(--color-divider);border-radius:var(--radius-md)}.seg-opt{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;font-size:13px;cursor:pointer}.seg-opt+.seg-opt{border-left:1px solid var(--color-divider)}.seg-opt:has(input:checked){background:var(--color-accent);color:var(--color-bg)}.seg-opt:not(:has(input:checked)):hover{background:color-mix(in srgb,var(--color-text) 7%,transparent)}.seg-opt:has(input:focus-visible){outline:2px solid var(--color-accent);outline-offset:-2px}.card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-surface)}.card-kicker{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent)}.card-title{font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:17px;line-height:1.2}.card-body{margin:0;font-size:13px;opacity:.8;flex:1}.card-meta{display:flex;align-items:center;gap:6px;font-size:11px;color:color-mix(in srgb,var(--color-text) 50%,transparent)}.elev-sm{box-shadow:var(--shadow-sm)}.elev-md{box-shadow:var(--shadow-md)}.elev-lg{box-shadow:var(--shadow-lg)}.tag{display:inline-flex;align-items:center;font-size:11px;letter-spacing:.02em;padding:3px 10px;border-radius:calc(var(--radius-md) * .75)}.tag-accent{background:var(--color-accent-100);color:var(--color-accent-800)}.tag-accent-2{background:var(--color-accent-2-100);color:var(--color-accent-2-800)}.tag-neutral{background:var(--color-neutral-100);color:var(--color-neutral-800)}.tag-outline{border:1px solid var(--color-accent);color:var(--color-accent)}.nav{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:none}.nav-brand{font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:18px;margin-right:auto}.nav a{color:inherit;text-decoration:none;font-size:14px}.nav a:hover,.nav a[aria-current=page]{color:var(--color-accent)}.table{width:100%;border-collapse:collapse;font-size:14px}.table th{text-align:left;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb,var(--color-text) 60%,transparent);padding:var(--space-2);border-bottom:1px solid var(--color-divider)}.table td{padding:var(--space-2);border-bottom:1px solid color-mix(in srgb,var(--color-text) 8%,transparent)}.table tbody tr:hover{background:color-mix(in srgb,var(--color-text) 4%,transparent)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:var(--space-4);background:color-mix(in srgb,var(--color-neutral-900) 50%,transparent)}.dialog{width:min(440px,100%);display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-lg)}.dialog-title{font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:20px}.dialog-body{font-size:14px;opacity:.85}.dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2)}.card,.dialog{border-radius:calc(var(--radius-lg) * 1.15)}.btn,.tag,.seg,.input{border-radius:999px}.input{padding-inline:14px}html{-webkit-text-size-adjust:100%}button,input,textarea,select{font-family:var(--font-body)}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-thumb{background:var(--color-neutral-300);border-radius:999px}.school-GTK{--school-color: var(--color-accent-600);--school-panel: var(--color-accent-200);--school-tint: var(--color-accent-100);--school-badge-bg: var(--color-accent-600);--school-badge-fg: var(--color-neutral-100)}.school-EMK{--school-color: var(--color-accent-2-600);--school-panel: var(--color-accent-2-200);--school-tint: var(--color-accent-2-100);--school-badge-bg: var(--color-accent-2-700);--school-badge-fg: var(--color-neutral-100)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app{min-height:100vh;padding:clamp(14px,3vw,34px) clamp(12px,4vw,54px) 84px;max-width:1280px;margin:0 auto}.title-row{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}.title-row h1{font-size:clamp(30px,5vw,44px);line-height:1.05;margin:0;letter-spacing:-.02em}.title-row .date{font-size:15px;color:var(--color-neutral-700)}.school-cards{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0 22px}.school-card{flex:1 1 240px;display:flex;align-items:center;gap:14px;border-radius:26px;padding:14px 18px;background:var(--school-panel);min-height:74px}.school-card .circle{width:46px;height:46px;border-radius:999px;flex:0 0 auto;display:grid;place-items:center;font-family:var(--font-heading);font-size:14px;background:var(--school-badge-bg);color:var(--school-badge-fg)}.school-card .name{font-weight:700;font-size:14.5px}.school-card .detail{font-size:12.5px;color:var(--color-neutral-800)}.tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;margin-bottom:14px;scrollbar-width:thin}.tab{flex:0 0 auto;border:1px solid var(--color-divider);border-radius:999px;padding:9px 18px;min-height:40px;font-size:14px;font-weight:600;cursor:pointer;background:var(--color-surface);color:var(--color-neutral-900)}.tab:hover{filter:brightness(.97)}.tab[aria-selected=true]{background:var(--color-neutral-900);color:var(--color-neutral-100)}.tab.settings{margin-left:auto;background:transparent}.filter-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:26px}.filter-label{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-neutral-700);margin-right:4px}.filter-pill{border:1px solid var(--color-divider);border-radius:999px;padding:6px 15px;min-height:40px;font-size:13px;font-weight:600;cursor:pointer;background:transparent;color:var(--color-neutral-800)}.filter-pill:hover{filter:brightness(.97)}.filter-pill.all{--tone: var(--color-neutral-800)}.filter-pill.school-GTK,.filter-pill.school-EMK{--tone: var(--school-badge-bg)}.filter-pill[aria-pressed=true]{background:var(--tone);border-color:var(--tone);color:var(--color-neutral-100)}.footer{margin:44px 0 0;font-size:12.5px;color:var(--color-neutral-600)}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:clamp(16px,2vw,26px);align-items:start}.grid-2.min340{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:clamp(16px,2vw,28px)}.grid-2.min320{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:clamp(16px,2vw,28px)}.grid-2.min280{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:clamp(16px,2vw,28px)}@media(max-width:380px){.grid-2,.grid-2.min340,.grid-2.min320,.grid-2.min280{grid-template-columns:1fr}}.stack{display:flex;flex-direction:column;gap:16px}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:14px}h2.h{font-size:25px;margin:0}h2.h.tight{margin-bottom:4px}.subtle{font-size:13px;color:var(--color-neutral-700)}.subtle.small{font-size:12.5px}.panel{background:var(--color-surface);border-radius:32px;padding:clamp(18px,2vw,24px)}.panel>h2.h:first-child{margin-bottom:14px}.panel>h2.h.tight:first-child{margin-bottom:4px}.empty{margin:0;font-size:14px;color:var(--color-neutral-700)}.dot{width:9px;height:9px;border-radius:999px;flex:0 0 auto;background:var(--course)}.dot.school{background:var(--school-color)}.badge{display:inline-flex;align-items:center;font-size:10.5px;font-weight:700;letter-spacing:.07em;padding:2px 8px;border-radius:999px;background:var(--school-badge-bg);color:var(--school-badge-fg);line-height:1.5}.badge.tiny{font-size:10px;padding:1px 7px}.item-title-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.item-title{font-weight:600;font-size:15px}.item-meta{font-size:12.5px;color:var(--color-neutral-700)}.skeleton{background:var(--color-neutral-200);border-radius:22px}.day-panel{border-radius:30px;padding:16px 18px 18px;background:var(--school-panel)}.day-panel-head{display:flex;align-items:center;gap:9px;margin-bottom:12px}.day-panel-name{font-family:var(--font-heading);font-size:15px}.class-list{display:flex;flex-direction:column;gap:9px}.class-row{display:flex;align-items:center;gap:12px;background:var(--color-bg);border-radius:22px;padding:11px 14px;flex-wrap:wrap;border-left:5px solid var(--course)}.class-row .main{flex:1 1 150px;min-width:0}.class-row .title{font-weight:600;font-size:15px;line-height:1.25}.class-row .meta{font-size:12.5px;color:var(--color-neutral-700)}.class-row .actions{display:flex;gap:6px;flex:0 0 auto}.att-btn{border:1px solid var(--color-divider);border-radius:999px;padding:0 14px;min-height:40px;font-size:13px;font-weight:600;cursor:pointer;background:transparent;color:var(--color-neutral-800)}.att-btn:hover{filter:brightness(.97)}.att-btn.attended[aria-pressed=true]{background:var(--color-accent-600);border-color:var(--color-accent-600);color:var(--color-neutral-100)}.att-btn.missed[aria-pressed=true]{background:var(--color-neutral-800);border-color:var(--color-neutral-800);color:var(--color-neutral-100)}.overlap{margin-top:16px;background:var(--color-accent-300);border-radius:24px;padding:14px 18px}.overlap .t{font-weight:700;font-size:14px;margin-bottom:3px}.overlap .b{font-size:13.5px;color:var(--color-neutral-900)}.due-list{display:flex;flex-direction:column;gap:11px}.due-item{display:flex;align-items:center;gap:13px}.countdown{flex:0 0 auto;width:58px;height:58px;border-radius:999px;display:grid;place-items:center;text-align:center;line-height:1.05;background:var(--color-accent-2-600);color:var(--color-neutral-100)}.countdown.urgent{background:var(--color-accent-600)}.countdown.past{background:var(--color-neutral-300);color:var(--color-neutral-800)}.countdown.small{width:56px;height:56px}.countdown .n{font-family:var(--font-heading);font-size:19px}.countdown.small .n{font-size:18px}.countdown .u{font-size:9.5px;letter-spacing:.08em;text-transform:uppercase}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px}.stat{background:var(--color-surface);border-radius:26px;padding:16px 18px}.stat .n{font-family:var(--font-heading);font-size:30px;line-height:1}.stat .l{font-size:12.5px;color:var(--color-neutral-700)}.warn{background:var(--color-accent-200);border-radius:26px;padding:16px 20px}.warn .t{font-weight:700;font-size:14px;margin-bottom:4px}.warn .b{font-size:13.5px;color:var(--color-neutral-800)}.week-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:18px}.pill-btn{border:1px solid var(--color-divider);background:var(--color-surface);border-radius:999px;min-height:42px;padding:0 18px;font-size:14px;font-weight:600;cursor:pointer;color:var(--color-text)}.pill-btn:hover{filter:brightness(.97)}.week-label{font-family:var(--font-heading);font-size:20px;margin-left:6px}.week-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:14px;align-items:start}.day-col{background:var(--color-surface);border-radius:28px;padding:16px 16px 18px;min-height:150px}.day-col.today{background:var(--color-accent-200)}.day-col-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:12px}.day-col-head .n{font-family:var(--font-heading);font-size:18px}.day-col-head .d{font-size:12.5px;color:var(--color-neutral-700)}.block-list{display:flex;flex-direction:column;gap:8px}.block{border-left:5px solid var(--course);border-radius:16px;background:var(--school-tint);padding:9px 11px}.block .l1{display:flex;align-items:center;gap:7px}.block .time{font-size:12px;font-weight:700;color:var(--color-neutral-800)}.block .name{font-size:13.5px;font-weight:600;line-height:1.25;margin-top:2px}.block .m{font-size:11.5px;color:var(--color-neutral-700)}.free{font-size:13px;color:var(--color-neutral-600)}.input-pill{width:100%;border:1px solid var(--color-divider);background:var(--color-bg);border-radius:999px;min-height:44px;padding:0 16px;font-size:14px;color:var(--color-text);caret-color:var(--color-accent)}.input-pill.surface{background:var(--color-surface)}.input-pill:hover{border-color:color-mix(in srgb,var(--color-text) 45%,transparent)}.input-pill:focus-visible{border-color:var(--color-accent);outline-offset:0}select.input-pill{padding-right:36px;-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.input-area{width:100%;border:1px solid var(--color-divider);background:var(--color-bg);border-radius:22px;padding:12px 16px;font-size:14px;resize:vertical;color:var(--color-text);caret-color:var(--color-accent);line-height:1.5}.input-area:focus-visible{border-color:var(--color-accent);outline-offset:0}.form-stack{display:flex;flex-direction:column;gap:12px}.form-row{display:flex;gap:10px;flex-wrap:wrap}.btn.big{min-height:46px;font-size:15px}.btn.big.wide{padding-inline:26px}.btn-secondary.big,.btn-ghost.big{padding-inline:22px}.outline-btn{border:1px solid var(--color-divider);background:transparent;border-radius:999px;min-height:40px;padding:0 14px;font-size:13px;cursor:pointer;color:var(--color-text)}.outline-btn:hover{background:color-mix(in srgb,var(--color-text) 7%,transparent)}.link-btn{border:none;background:transparent;font-size:12.5px;cursor:pointer;color:var(--color-neutral-700);min-height:40px;padding:0 6px;border-radius:999px}.link-btn:hover{color:var(--color-neutral-900)}.groups{display:flex;flex-direction:column;gap:22px}.group-head{display:flex;align-items:baseline;gap:10px;margin-bottom:10px;flex-wrap:wrap}.group-head .n{font-family:var(--font-heading);font-size:16px}.group-head .s{font-size:12.5px;color:var(--color-neutral-700);flex:1 1 auto}.course-cards{display:flex;flex-direction:column;gap:10px}.course-card{background:var(--school-panel);border-radius:26px;padding:14px 18px}.course-card .row{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.course-card .name{font-weight:600;font-size:14.5px;flex:1 1 auto}.course-card .pct{font-family:var(--font-heading);font-size:17px;color:var(--color-neutral-900)}.course-card .pct.low{color:var(--color-accent-700)}.bar{height:9px;border-radius:999px;background:var(--color-neutral-200);overflow:hidden;margin:10px 0 8px}.bar>div{height:100%;border-radius:999px;background:var(--course)}.course-card .detail{font-size:12.5px;color:var(--color-neutral-700)}.dl-list{display:flex;flex-direction:column;gap:12px}.dl-item{display:flex;align-items:center;gap:14px;background:var(--school-panel);border-radius:26px;padding:14px 18px;flex-wrap:wrap}.dl-item .main{flex:1 1 160px;min-width:0}.dl-item .item-title{font-size:15.5px}.notes-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:16px}.search{border:1px solid var(--color-divider);background:var(--color-surface);border-radius:999px;min-height:40px;padding:0 16px;font-size:13.5px;flex:1 1 140px;color:var(--color-text)}.note-list{display:flex;flex-direction:column;gap:12px}.note{background:var(--school-panel);border-radius:26px;padding:16px 20px}.note-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:6px}.note-head .c{font-size:12.5px;font-weight:600}.note-head .d{font-size:12px;color:var(--color-neutral-700);flex:1 1 auto}.note .t{font-family:var(--font-heading);font-size:18px;margin-bottom:6px}.note .b{font-size:14px;white-space:pre-wrap;color:var(--color-neutral-900);overflow-wrap:anywhere}.tasks{max-width:760px}.task-add{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}.task-add .input-pill{width:auto;min-width:0;min-height:46px}.task-add input.input-pill{flex:2 1 200px;padding:0 18px;font-size:14.5px}.task-add select.input-pill{flex:1 1 150px}.task-add input.input-pill.due{flex:1 1 140px;padding:0 14px;font-size:14px}.calendar-feed{gap:8px}.task-list{display:flex;flex-direction:column;gap:10px}.task{display:flex;align-items:center;gap:14px;background:var(--school-panel);border-radius:24px;padding:13px 18px}.check{position:relative;flex:0 0 auto;width:28px;height:28px;padding:0;border-radius:999px;cursor:pointer;border:2px solid var(--school-badge-bg);background:transparent;color:var(--color-neutral-100);font-size:14px;line-height:1;display:grid;place-items:center}.check:after{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:999px}.check[aria-checked=true]{background:var(--school-badge-bg)}.task .main{flex:1 1 auto;min-width:0}.task .t{font-size:15px;font-weight:600;color:var(--color-neutral-900);overflow-wrap:anywhere}.task.done .t{text-decoration:line-through;color:var(--color-neutral-600)}.task .c{font-size:12.5px;color:var(--color-neutral-700)}.focus-grid{max-width:900px}.timer{background:var(--color-surface);border-radius:32px;padding:clamp(22px,3vw,34px);text-align:center}.phase{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--color-accent-700);margin-bottom:10px}.clock{font-family:var(--font-heading);font-size:clamp(56px,12vw,84px);line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.timer-actions{display:flex;gap:10px;justify-content:center;margin-top:22px;flex-wrap:wrap}.focus-stat{border-radius:28px;padding:20px 24px}.focus-stat.today{background:var(--color-accent-2-200)}.focus-stat.term{background:var(--color-surface)}.focus-stat .n{font-family:var(--font-heading);font-size:34px;line-height:1}.focus-stat .l{font-size:13px;color:var(--color-neutral-700)}.focus-stat.today .l{color:var(--color-neutral-800)}.hint{margin:0;font-size:13.5px;color:var(--color-neutral-700)}.login{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(420px,100%);background:var(--color-surface);border-radius:32px;padding:clamp(24px,4vw,36px);display:flex;flex-direction:column;gap:12px}.login-card h1{font-size:clamp(30px,5vw,40px);margin:0;letter-spacing:-.02em}.login-sub{margin:0 0 6px;font-size:14px;color:var(--color-neutral-700)}.login-error{margin:0;font-size:13.5px;color:var(--color-accent-700)}.dialog-backdrop{z-index:40}.dialog .field{display:flex;flex-direction:column}.dialog .field>label{color:var(--color-neutral-700)}.toast{position:fixed;left:50%;bottom:18px;transform:translate(-50%);z-index:50;max-width:calc(100% - 24px);display:flex;align-items:center;gap:12px;background:var(--color-neutral-900);color:var(--color-neutral-100);border-radius:999px;padding:10px 18px;font-size:13.5px;box-shadow:var(--shadow-md)}.toast-btn{border:1px solid color-mix(in srgb,var(--color-neutral-100) 40%,transparent);background:transparent;color:inherit;border-radius:999px;min-height:32px;padding:0 12px;font-size:13px;font-weight:600;cursor:pointer}.title-tools{display:flex;align-items:center;gap:10px;margin-left:auto}.semester-chip{font-size:12.5px;color:var(--color-neutral-700);border:1px solid var(--color-divider);border-radius:999px;padding:3px 10px}.banner{background:var(--color-accent-200);border-radius:22px;padding:12px 18px;font-size:13.5px;margin:0 0 16px}.strong{font-weight:600}h3.h.small{font-size:18px;margin:0 0 10px}h3.h.small .count{font-family:var(--font-body);font-size:12.5px;font-weight:600;color:var(--color-neutral-700);margin-left:6px}.app.mobile{padding:12px 14px 96px}.app.mobile .title-row h1{font-size:26px}.app.mobile .title-row .date{font-size:13px}.app.mobile .title-row{margin-bottom:8px;gap:10px}.app.mobile .semester-chip{display:none}.filter-row.compact{margin-bottom:14px;gap:6px}.filter-row.compact .filter-label{display:none}.filter-row.compact .filter-pill{padding:4px 12px;min-height:36px}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;gap:4px;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:var(--color-surface);border-top:1px solid var(--color-divider)}.bottom-tab{flex:1 1 0;min-height:46px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--color-neutral-900);font-size:14px;font-weight:600;cursor:pointer}.bottom-tab[aria-current=page]{background:var(--color-neutral-900);color:var(--color-neutral-100)}.more-list{display:flex;flex-direction:column;gap:8px}.more-item{min-height:46px;border:1px solid var(--color-divider);border-radius:999px;background:var(--color-bg);font-size:15px;font-weight:600;cursor:pointer;text-align:left;padding:0 18px;color:var(--color-text)}.more-item[aria-current=page]{background:var(--color-neutral-900);color:var(--color-neutral-100)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;padding:16px;background:color-mix(in srgb,var(--color-neutral-900) 50%,transparent)}.modal-backdrop.drawer{place-items:end center;padding:0}.modal{width:min(520px,100%);max-height:calc(100vh - 32px);overflow:auto;background:var(--color-surface);border-radius:32px;box-shadow:var(--shadow-lg);padding:clamp(18px,3vw,26px);outline:none}.modal.wide{width:min(760px,100%)}.modal.drawer{width:100%;max-height:80vh;border-radius:28px 28px 0 0;padding-bottom:calc(18px + env(safe-area-inset-bottom))}.modal-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}.modal-title{font-size:24px;margin:0;flex:1 1 auto}.icon-btn{width:40px;height:40px;border-radius:999px;border:1px solid var(--color-divider);background:transparent;font-size:22px;line-height:1;cursor:pointer;color:var(--color-neutral-800)}.icon-btn:hover{background:color-mix(in srgb,var(--color-text) 7%,transparent)}@media(max-width:767px){.modal-backdrop:not(.drawer){place-items:end center;padding:0}.modal-backdrop:not(.drawer) .modal{width:100%;max-height:92vh;border-radius:28px 28px 0 0;padding-bottom:calc(18px + env(safe-area-inset-bottom))}}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field>label{font-size:12.5px;font-weight:600;color:var(--color-neutral-800);margin:0}.field.inline>label{font-size:11.5px}.field-hint{font-size:12px;color:var(--color-neutral-700)}.field-error{font-size:12.5px;color:var(--color-accent-700);font-weight:600}.input-pill[aria-invalid=true],.input-area[aria-invalid=true]{border-color:var(--color-accent-700)}.input-pill.small{min-height:40px;font-size:13.5px}.input-pill:disabled{opacity:.55}.checkbox-row{display:inline-flex;align-items:center;gap:8px;font-size:14px;min-height:40px;cursor:pointer}.checkbox-row input{width:18px;height:18px;accent-color:var(--color-accent)}.checkbox-grid{display:flex;flex-wrap:wrap;gap:4px 18px}.fieldset{border:1px solid var(--color-divider);border-radius:22px;padding:10px 16px 14px;margin:0;display:flex;flex-direction:column;gap:8px}.fieldset>legend{font-size:12.5px;font-weight:700;padding:0 6px;color:var(--color-neutral-800)}.input-file{font-size:13px}.btn-danger{background:var(--color-accent-700);color:var(--color-neutral-100)}.btn-danger:hover{background:var(--color-accent-800)}.toolbar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:18px}.toolbar .btn{margin-left:auto}.view-toggle{display:flex;gap:6px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;font-size:11px;font-weight:700;letter-spacing:.03em;padding:2px 9px;border-radius:999px;line-height:1.6;white-space:nowrap}.chip.neutral{background:var(--color-neutral-200);color:var(--color-neutral-800)}.chip.accent{background:var(--color-accent-200);color:var(--color-accent-800)}.chip.sage{background:var(--color-accent-2-200);color:var(--color-accent-2-800)}.chip.warn{background:var(--color-accent-300);color:var(--color-accent-900)}.chip.danger{background:var(--color-accent-700);color:var(--color-neutral-100)}.chip.muted{background:var(--color-neutral-300);color:var(--color-neutral-800)}.chip-btn{border:1px solid var(--color-divider);background:transparent;border-radius:999px;padding:1px 9px;font-size:11.5px;font-weight:600;cursor:pointer;color:var(--color-neutral-800)}.chip-btn:hover{background:color-mix(in srgb,var(--color-text) 7%,transparent)}.chip-btn.test{background:var(--color-accent-200);border-color:var(--color-accent-400);color:var(--color-accent-900);font-weight:700}.block .test-line{display:inline-flex;align-items:center;gap:5px;margin-top:3px;font-size:11.5px;font-weight:700;color:var(--color-accent-900)}.link-title{border:none;background:transparent;padding:0;font:inherit;font-weight:600;color:inherit;cursor:pointer;text-align:left;text-decoration:underline transparent;text-underline-offset:3px}.link-title:hover{text-decoration-color:currentColor}.link-btn.strong{color:var(--color-accent-700);font-weight:600;min-height:32px}.plain-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:13.5px}.save-status{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--color-neutral-700);flex-wrap:wrap}.save-dot{width:8px;height:8px;border-radius:999px;background:var(--color-accent-2-600)}.save-status.saving .save-dot,.save-status.retrying .save-dot{background:var(--color-accent-500)}.save-status.offline .save-dot{background:var(--color-neutral-500)}.save-status.failed{color:var(--color-accent-800)}.save-status.failed .save-dot{background:var(--color-accent-700)}.save-failed{flex-basis:100%;display:flex;flex-direction:column;gap:6px}.save-failed-item{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--color-accent-200);border-radius:16px;padding:6px 12px;color:var(--color-neutral-900)}.save-failed-item .toast-btn{border-color:var(--color-accent-700);color:var(--color-accent-800)}.notices{position:fixed;left:50%;bottom:18px;transform:translate(-50%);z-index:50;display:flex;flex-direction:column;gap:8px;width:min(520px,calc(100% - 24px))}.app.mobile~.notices,.mobile .notices{bottom:84px}.toast{position:static;transform:none;max-width:100%}.next-up{background:var(--school-panel, var(--color-surface));border-radius:26px;padding:16px 20px}.next-label{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-neutral-700);margin-bottom:4px}.next-title{font-family:var(--font-heading);font-size:22px;line-height:1.15}.next-meta{font-size:13.5px;color:var(--color-neutral-800);margin-top:4px}.agenda{display:flex;flex-direction:column;gap:9px}.class-row.cancelled .title{text-decoration:line-through;color:var(--color-neutral-600)}.class-row.live{outline:2px solid var(--color-accent-400)}.class-row .title{display:flex;align-items:center;gap:8px;flex-wrap:wrap;overflow-wrap:anywhere}.att-btn:disabled{opacity:.45;cursor:not-allowed}.att-btn.clear{padding:0 12px;font-size:16px;line-height:1}.task.compact{padding:10px 14px;background:var(--color-bg)}.empty-state{display:flex;flex-direction:column;gap:10px}.empty-actions{display:flex;gap:8px;flex-wrap:wrap}.assessment-card{display:flex;align-items:center;gap:14px;background:var(--school-panel);border-radius:26px;padding:14px 18px;flex-wrap:wrap}.assessment-card.muted{opacity:.75}.assessment-card .main{flex:1 1 180px;min-width:0}.assessment-title{font-size:15.5px;display:block;margin:2px 0;overflow-wrap:anywhere}.countdown.tbc{background:var(--color-neutral-300);color:var(--color-neutral-800)}.prep-select{flex:0 0 auto}.prep-select select{min-height:40px;padding:0 14px;font-size:13px;width:auto}.test-group{margin-bottom:22px}.detail{display:flex;flex-direction:column;gap:16px}.detail-head{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}.detail-actions{display:flex;gap:8px;flex-wrap:wrap}.when-row{display:flex;align-items:center;gap:14px}.note.inset{background:var(--color-bg);padding:12px 16px}.note-body{white-space:pre-wrap;font-size:14px}.rule-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px}.rules-row{align-items:flex-end;padding:10px 0;border-top:1px solid var(--color-divider)}.rules-row:first-of-type{border-top:none}.rules-name{flex:1 1 140px;font-weight:600;align-self:center}.course-card .name.link-title{flex:1 1 auto}.weekday-row{display:flex;gap:6px;margin:10px 0 14px}.weekday{flex:1 1 0;min-height:52px;border:1px solid var(--color-divider);border-radius:18px;background:var(--color-surface);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer;position:relative;color:var(--color-neutral-900)}.weekday .wd{font-size:12px;font-weight:600}.weekday .wn{font-family:var(--font-heading);font-size:16px}.weekday.today{background:var(--color-accent-200)}.weekday[aria-pressed=true]{background:var(--color-neutral-900);color:var(--color-neutral-100)}.weekday .wdot{position:absolute;bottom:6px;width:5px;height:5px;border-radius:999px;background:currentColor}.weekday.wide{flex:0 0 auto;padding:0 12px}.day-col.tall{min-height:300px}.block{display:block;width:100%;text-align:left;border:none;font:inherit;color:inherit;cursor:pointer;overflow:hidden}.block .name{overflow-wrap:anywhere}.block.assessment{background:var(--color-accent-100);outline:1px dashed var(--course)}.block.cancelled .name{text-decoration:line-through;color:var(--color-neutral-600)}.block .l1{flex-wrap:wrap}.time-grid{display:grid;grid-template-columns:52px repeat(5,minmax(0,1fr));gap:8px;overflow-x:auto}.time-gutter{position:relative;margin-top:40px}.time-gutter .hour{position:absolute;right:6px;transform:translateY(-50%);font-size:11px;color:var(--color-neutral-600)}.time-col{min-width:0;background:var(--color-surface);border-radius:20px;padding:10px 6px}.time-col.today{background:var(--color-accent-200)}.time-col .day-col-head{padding:0 6px;min-height:30px}.time-body{position:relative}.hour-line{position:absolute;left:0;right:0;border-top:1px solid color-mix(in srgb,var(--color-text) 8%,transparent)}.time-body .block{padding:5px 8px;border-radius:12px;font-size:12px}.time-body .block .name{font-size:12.5px;line-height:1.2}.time-body .block .m,.time-body .block .l1 .badge{font-size:10.5px}.time-body .block .l1{gap:5px}.semester-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:14px}.restore-preview{display:flex;flex-direction:column;gap:10px;background:var(--color-bg);border-radius:18px;padding:12px 14px}.restore-preview .table{font-size:13px}.calendar-feed .subtle{margin:0}.calendar-feed .input-pill{font-size:12.5px}
