@font-face{font-family:Geist;src:url(/fonts/Geist-Variable.woff2) format("woff2");font-display:swap}:root{color:#f4efe5;background:#061727;font-family:Geist,Inter,system-ui,sans-serif;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:#061727}button{font:inherit}.app-shell{width:min(100%,880px);min-height:100vh;margin:0 auto;padding:22px clamp(16px,4vw,40px) 28px}.header,.agenda__heading,.lesson{display:flex;align-items:center}.header{justify-content:flex-end}.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:20px;letter-spacing:-.04em}.today-button{display:inline-flex;align-items:center;gap:8px;min-height:42px;padding:0 12px;color:#f4efe5;background:transparent;border:1px solid #26445d;border-radius:12px;cursor:pointer}.today-button svg,.lesson__room svg,.lesson__next svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.hero{padding:clamp(38px,8vw,64px) 0 30px}.eyebrow{margin:0;color:#9aacc0;font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}h1{margin:10px 0 28px;font-size:clamp(42px,10vw,64px);letter-spacing:-.065em;line-height:.95}.week-control{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;padding:6px;background:#0a2136;border:1px solid #1d3b54;border-radius:15px}.week-control p{flex:1;margin:0;color:#c7d2dc;font-size:13px;font-weight:650;text-align:center;text-transform:capitalize}.icon-button{display:grid;flex:0 0 36px;place-items:center;width:36px;height:36px;color:#f4efe5;background:#102f47;border:1px solid #26445d;border-radius:10px;cursor:pointer}.icon-button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;touch-action:pan-y;will-change:transform}.days--slide-next{animation:days-slide-next .26s cubic-bezier(.2,.8,.2,1)}.days--slide-previous{animation:days-slide-previous .26s cubic-bezier(.2,.8,.2,1)}@keyframes days-slide-next{0%{opacity:.55;transform:translate(18px)}to{opacity:1;transform:translate(0)}}@keyframes days-slide-previous{0%{opacity:.55;transform:translate(-18px)}to{opacity:1;transform:translate(0)}}.day{position:relative;display:grid;gap:5px;min-height:76px;padding:9px 3px;color:#8194aa;background:transparent;border:1px solid transparent;border-radius:16px;cursor:pointer}.day span{font-size:11px;font-weight:700;letter-spacing:.07em}.day strong{font-size:19px;font-weight:620;letter-spacing:-.03em;line-height:1}.day--selected{color:#c8ff3d;border-color:#c8ff3d;background:#0b2639}.day--has-absences{color:#ff8d99}.day--has-absences.day--selected{color:#ff8d99;border-color:#ff6676}.day__absence{position:absolute;top:6px;right:5px;display:grid;place-items:center;min-width:17px;height:17px;padding:0 4px;color:#260b10;background:#ff6676;border-radius:99px;font-size:10px;font-weight:800;line-height:1}.tomorrow-digest{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:2px 0 28px;padding:16px;background:linear-gradient(110deg,#123753,#0d293f);border:1px solid #31526d;border-radius:18px}.tomorrow-digest p{margin:0 0 5px;color:#b1c0ce;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.tomorrow-digest h2{margin:0;color:#c8ff3d;font-size:clamp(16px,4.1vw,21px);letter-spacing:-.055em}.tomorrow-digest span{display:block;margin-top:6px;color:#c2d0db;font-size:13px;line-height:1.35}.tomorrow-digest button{flex:0 0 auto;min-height:38px;padding:0 12px;color:#061727;background:#c8ff3d;border:0;border-radius:10px;cursor:pointer;font-size:13px;font-weight:750}.tomorrow-digest--empty h2{color:#f4efe5}.agenda{padding-top:16px}.agenda__heading{justify-content:space-between;gap:16px;margin-bottom:20px}.agenda h2{margin:7px 0 0;font-size:clamp(24px,6vw,34px);line-height:1.05;letter-spacing:-.05em}.live-dot{padding:6px 9px;color:#c8ff3d;border:1px solid #426135;border-radius:99px;font-size:12px;font-weight:650}.lessons{display:grid;gap:10px}.lesson{position:relative;gap:12px;min-height:98px;padding:17px 16px;overflow:hidden;background:#0a2136;border:1px solid #1d3b54;border-radius:18px}.lesson--next{min-height:148px;align-items:flex-start;flex-wrap:wrap;border-color:#c8ff3d;background:#0a2437}.lesson--finished{opacity:.45}.lesson__number{flex:0 0 21px;color:#8397aa;font-size:12px;font-weight:700}.lesson__time{flex:0 0 96px;color:#f4efe5;font-variant-numeric:tabular-nums;font-size:15px;font-weight:650;line-height:1.35}.lesson__info{flex:1 1 150px;min-width:0}.lesson__info h2{margin:0;color:#f4efe5;font-size:15px;line-height:1.25;letter-spacing:-.025em;overflow-wrap:anywhere}.lesson__info p{margin:6px 0 0;color:#9aacc0;font-size:13px;line-height:1.25}.lesson__info .lesson__kind{margin:0 0 6px;color:#718ba3;font-size:11px;font-weight:700;letter-spacing:.045em;text-transform:uppercase}.lesson__info .lesson__teacher{margin-top:6px}.lesson--absent{border-color:#b94555;background:linear-gradient(110deg,#2b1824,#241a29)}.lesson--absent .lesson__number,.lesson--absent .lesson__time{color:#ff9aa4}.attendance-toggle{display:inline-flex;align-items:center;min-height:30px;margin-top:11px;padding:0 10px;color:#ff9aa4;background:transparent;border:1px solid #70404b;border-radius:9px;cursor:pointer;font-size:12px;font-weight:750}.attendance-toggle--selected{color:#260b10;background:#ff6676;border-color:#ff6676}.attendance-toggle:focus-visible,.attendance-reset:focus-visible{outline:2px solid #f4efe5;outline-offset:3px}.attendance-summary{margin-top:28px;padding:18px;background:#0a2136;border:1px solid #1d3b54;border-radius:18px}.attendance-summary__top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.attendance-summary h2{margin:7px 0 0;font-size:22px;letter-spacing:-.04em}.attendance-reset{min-height:34px;padding:0 10px;color:#9aacc0;background:transparent;border:1px solid #31526d;border-radius:9px;cursor:pointer;font-size:12px;font-weight:700}.attendance-reset:disabled{cursor:default;opacity:.45}.attendance-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:18px 0 0}.attendance-stats>div{min-width:0;padding:11px 10px;background:#0d2a42;border-radius:12px}.attendance-stats dt{color:#91a6ba;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.attendance-stats dd{margin:4px 0 0;color:#f4efe5;font-size:21px;font-weight:700;letter-spacing:-.04em}.attendance-stats span{display:block;margin-top:3px;overflow-wrap:anywhere;color:#9aacc0;font-size:11px;line-height:1.25}.mode-switch{display:inline-flex;gap:4px;margin:0 0 20px;padding:4px;background:#0a2136;border:1px solid #1d3b54;border-radius:13px}.mode-switch button,.auth-tabs button,.attendance-filters button{min-height:36px;padding:0 13px;color:#9aacc0;background:transparent;border:0;border-radius:9px;cursor:pointer;font-size:12px;font-weight:750}.mode-switch button.is-active,.auth-tabs button.is-active,.attendance-filters button.is-active{color:#061727;background:#c8ff3d}.hero__hint{margin:-8px 0 0;color:#9aacc0;font-size:14px}.summary-open{display:inline-flex;align-items:center;gap:5px;margin-top:15px;padding:0;color:#c8ff3d;background:transparent;border:0;cursor:pointer;font-size:12px;font-weight:750}.summary-open svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.attendance-view{display:grid;gap:16px}.attendance-view__heading{display:flex;align-items:end;justify-content:space-between;gap:16px}.attendance-view__heading h2{margin:7px 0 0;font-size:clamp(27px,6vw,36px);letter-spacing:-.055em}.sync-pill{display:inline-flex;align-items:center;min-height:28px;padding:0 9px;color:#91a6ba;border:1px solid #31526d;border-radius:99px;font-size:11px;font-weight:700;white-space:nowrap}.sync-pill--synced{color:#c8ff3d;border-color:#426135}.sync-pill--offline,.sync-pill--error{color:#ff9aa4;border-color:#70404b}.auth-card,.account-card{display:flex;flex-direction:column;gap:15px;padding:18px;background:linear-gradient(110deg,#123753,#0d293f);border:1px solid #31526d;border-radius:18px}.auth-card__intro h2,.account-card h2{margin:7px 0 0;color:#f4efe5;font-size:22px;letter-spacing:-.045em}.auth-card__intro p:last-child,.account-card p:last-child{margin:7px 0 0;color:#b3c3d0;font-size:13px;line-height:1.4}.auth-tabs{display:inline-flex;gap:3px;align-self:flex-start;padding:3px;background:#081d30;border-radius:11px}.auth-tabs button{min-height:32px}.auth-form{display:grid;gap:11px}.auth-form label{display:grid;gap:6px;color:#b1c0ce;font-size:12px;font-weight:700}.auth-form input{width:100%;min-height:44px;padding:0 12px;color:#f4efe5;background:#081d30;border:1px solid #31526d;border-radius:10px;outline:none}.auth-form input:focus{border-color:#c8ff3d}.auth-submit,.account-action{min-height:42px;padding:0 14px;color:#061727;background:#c8ff3d;border:0;border-radius:10px;cursor:pointer;font-size:13px;font-weight:800}.auth-submit:disabled,.account-action:disabled{cursor:default;opacity:.55}.auth-error{margin:0;padding:9px 11px;color:#ffb2ba;background:#2b1824;border:1px solid #70404b;border-radius:9px;font-size:12px;line-height:1.35}.account-card{flex-direction:row;align-items:center;justify-content:space-between}.account-action{flex:0 0 auto;color:#f4efe5;background:transparent;border:1px solid #52708a}.attendance-summary--standalone{margin-top:0}.attendance-filters{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin-top:15px}.attendance-filters button{min-height:34px;padding-inline:11px;border:1px solid #31526d}.attendance-filters .attendance-reset{margin-left:auto;color:#9aacc0;background:transparent}.attendance-filters .attendance-reset:disabled{cursor:default;opacity:.45}.attendance-list{display:grid;gap:16px}.attendance-day{display:grid;gap:9px}.attendance-day__heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.attendance-day__heading h3{margin:0;color:#e9e3d9;font-size:17px;letter-spacing:-.025em}.attendance-day__heading span{color:#8194aa;font-size:11px;font-weight:700}.attendance-day__lessons{display:grid;gap:7px}.attendance-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px 11px;padding:12px 13px;background:#0a2136;border:1px solid #1d3b54;border-radius:13px}.attendance-row>div{display:flex;align-items:center;gap:7px;color:#b9c6d1;font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}.attendance-row__number{display:grid;width:21px;height:21px;place-items:center;color:#061727;background:#8194aa;border-radius:7px;font-size:11px;font-weight:800}.attendance-row__time{color:#d9dfe3}.attendance-row h4{min-width:0;margin:0;color:#f4efe5;font-size:13px;line-height:1.3;overflow-wrap:anywhere}.attendance-row p{grid-column:2 / 3;margin:-2px 0 0;color:#91a6ba;font-size:11px;line-height:1.3;overflow-wrap:anywhere}.attendance-status{grid-column:3;grid-row:1 / span 2;min-height:32px;padding:0 9px;color:#9aacc0;background:transparent;border:1px solid #31526d;border-radius:9px;cursor:pointer;font-size:11px;font-weight:800;white-space:nowrap}.attendance-status--absent{color:#260b10;background:#ff6676;border-color:#ff6676}.attendance-row--absent{background:linear-gradient(110deg,#2b1824,#241a29);border-color:#b94555}.attendance-row--absent .attendance-row__number{color:#260b10;background:#ff6676}.attendance-empty{padding-block:28px}.lesson__room{display:inline-flex;align-items:center;gap:5px;align-self:center;color:#a8b8c8;font-size:13px;white-space:nowrap}.lesson__room svg{width:15px;height:15px}.lesson__next{display:flex;width:100%;align-items:center;gap:5px;color:#c8ff3d;font-size:13px;font-weight:650}.lesson__next svg{width:15px;height:15px}.empty{padding:45px 20px;text-align:center}.empty span{color:#c8ff3d;font-size:35px}.empty h2{margin:5px 0 7px;font-size:20px}.empty p{max-width:290px;margin:auto;color:#9aacc0;font-size:14px;line-height:1.45}footer{padding-top:42px;color:#607a91;font-size:12px;text-align:center}.footer-year{display:inline-block;min-width:4ch;text-align:center}.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}.api-status{display:inline-flex;align-items:center;gap:4px;color:#8ba1b5}.api-status svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.retry-button{margin-left:8px;padding:4px 8px;color:#c8ff3d;background:transparent;border:1px solid #426135;border-radius:7px;cursor:pointer;font-size:11px;font-weight:700}button:focus-visible{outline:2px solid #f4efe5;outline-offset:3px}@media(hover:hover){.day:hover,.icon-button:hover,.today-button:hover{border-color:#c8ff3d;color:#c8ff3d}.mode-switch button:hover,.auth-tabs button:hover,.attendance-filters button:hover,.attendance-status:hover,.summary-open:hover{color:#c8ff3d}.mode-switch button.is-active:hover,.auth-tabs button.is-active:hover,.attendance-filters button.is-active:hover,.attendance-status--absent:hover{color:#061727}}@media(prefers-reduced-motion:reduce){.days--slide-next,.days--slide-previous{animation:none}}@media(max-width:480px){.lesson{display:grid;grid-template-columns:20px 1fr auto;align-items:start;gap:8px;min-height:0}.lesson--next{display:grid;min-height:0}.lesson__number{grid-column:1;grid-row:1 / span 2;align-self:center}.lesson__time{grid-column:2;grid-row:1}.lesson__room{grid-column:3;grid-row:1}.lesson__info{grid-column:2 / 4;grid-row:2}.lesson__next{grid-column:2 / 4;grid-row:3}}@media(max-width:480px){.attendance-summary{padding:15px}.attendance-stats{gap:6px}.attendance-stats>div{padding:10px 7px}.attendance-stats dd{font-size:18px}.attendance-view__heading{align-items:start}.attendance-view__heading h2{font-size:28px}.attendance-row{grid-template-columns:auto 1fr}.attendance-row h4{grid-column:1 / -1;grid-row:2}.attendance-row p{grid-column:1 / -1;grid-row:3;margin:-3px 0 0}.attendance-status{grid-column:2;grid-row:1;justify-self:end}.account-card{align-items:flex-start}}@media(max-width:359px){.app-shell{padding-inline:12px}.today-button{padding:0 9px}.today-button span{display:none}.days{gap:2px}.day strong{font-size:18px}.day span{font-size:10px}.lesson{padding:14px 12px}.mode-switch button{padding-inline:10px}}@media(min-width:600px){.app-shell{padding-top:30px;padding-bottom:40px}.lesson{padding:20px}.lesson__time{flex-basis:115px;font-size:16px}.lesson__info h2{font-size:17px}}
