@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-greek-wght-normal-DL7QRZyv.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-vietnamese-wght-normal-usUDDRr7.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:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.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:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-wght-normal-DHIcAJRg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,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}:root{font-family:Manrope,Segoe UI Variable,Segoe UI,Arial,sans-serif;color:var(--ink);background:var(--canvas);font-synthesis:none;text-rendering:optimizeLegibility;--brand-deep: #0b2465;--brand-blue: #0f3289;--brand-forest: #143211;--brand-sage: #5d755d;--brand-clay: #ac4302;--brand-sand: #ebdece;--brand-milk: #fffaf4;--canvas: var(--tg-theme-bg-color, #f5f7fb);--surface: var(--tg-theme-section-bg-color, #ffffff);--surface-soft: var(--tg-theme-secondary-bg-color, #eef2f7);--ink: var(--tg-theme-text-color, #14203a);--muted: var(--tg-theme-hint-color, #667188);--link: var(--tg-theme-link-color, #0f3289);--action: var(--tg-theme-button-color, #0b2465);--action-text: var(--tg-theme-button-text-color, #ffffff);--danger: var(--tg-theme-destructive-text-color, #b33a35);--line: color-mix(in srgb, var(--ink) 12%, transparent);--line-strong: color-mix(in srgb, var(--ink) 20%, transparent);--shadow-soft: 0 12px 32px color-mix(in srgb, var(--brand-deep) 10%, transparent);--radius-sm: 11px;--radius-md: 17px;--radius-lg: 24px;--content-width: 700px}*{box-sizing:border-box}html{min-width:320px;min-height:100%;background:var(--canvas);scroll-behavior:smooth}body{min-width:320px;min-height:100vh;margin:0;background:radial-gradient(circle at 90% 0%,color-mix(in srgb,var(--brand-sand) 32%,transparent),transparent 28rem),var(--canvas);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}a{color:var(--link)}:focus-visible{outline:3px solid color-mix(in srgb,var(--link) 38%,transparent);outline-offset:2px}h1,h2,h3,p,blockquote{margin-top:0}h1,h2,h3,.brand-name,.ticket__count strong{font-family:Manrope,Trebuchet MS,Segoe UI,sans-serif;letter-spacing:-.035em}h1{font-size:clamp(1.95rem,8vw,3.25rem);line-height:1.04}h2{font-size:1.27rem;line-height:1.18}h3{font-size:1.05rem;line-height:1.28}.app-shell{width:min(100%,var(--content-width));min-height:100vh;margin:0 auto;position:relative}.app-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:max(14px,env(safe-area-inset-top)) 20px 12px}.brand-lockup{display:flex;align-items:center;gap:10px;min-width:0}.brand-lockup>span:last-child{display:grid}.brand-lockup small{color:var(--muted);font-size:.68rem;letter-spacing:.035em;line-height:1.2}.brand-mark{display:grid;flex:0 0 auto;width:38px;height:38px;place-items:center;border-radius:13px 13px 4px;background:var(--brand-deep);color:#fff;font-family:Georgia,serif;font-size:1rem;font-style:italic;font-weight:700;letter-spacing:-.1em;box-shadow:inset -6px -5px color-mix(in srgb,var(--brand-blue) 45%,transparent)}.brand-name{font-size:1rem;line-height:1.1}.avatar{display:inline-grid;flex:0 0 auto;width:38px;height:38px;place-items:center;border:1px solid color-mix(in srgb,var(--brand-blue) 18%,transparent);border-radius:50%;background:color-mix(in srgb,var(--brand-sand) 60%,var(--surface));color:var(--brand-deep);font-size:.86rem;font-weight:800}.avatar--small{width:34px;height:34px;font-size:.76rem}.avatar--large{width:62px;height:62px;font-size:1.25rem}.role-switcher{display:flex;gap:4px;margin:0 16px;padding:4px;overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--surface) 78%,transparent);scrollbar-width:none}.role-switcher::-webkit-scrollbar,.week-strip::-webkit-scrollbar{display:none}.role-switcher__item{flex:1 0 auto;min-height:36px;padding:7px 12px;border:0;border-radius:10px;background:transparent;color:var(--muted);cursor:pointer;font-size:.76rem;font-weight:700}.role-switcher__item.is-active{background:var(--surface);box-shadow:0 2px 8px color-mix(in srgb,var(--brand-deep) 9%,transparent);color:var(--ink)}.app-content{padding-bottom:calc(88px + env(safe-area-inset-bottom))}.page{width:100%;padding:24px 18px 42px;animation:page-in .28s ease-out both}.page--centered{display:grid;min-height:100vh;align-content:center;justify-items:center;padding:28px;text-align:center}.eyebrow{margin-bottom:7px;color:var(--brand-clay);font-size:.68rem;font-weight:800;letter-spacing:.09em;line-height:1.3;text-transform:uppercase}.section-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px}.section-header h2{margin:0;font-size:clamp(1.7rem,7vw,2.35rem)}.today-intro{padding:8px 4px 25px}.today-intro h1{max-width:12ch;margin-bottom:14px;color:var(--brand-deep)}[data-telegram-scheme=dark] .today-intro h1{color:var(--ink)}.today-intro>p:last-child{max-width:34rem;margin-bottom:0;color:var(--muted);font-size:.95rem;line-height:1.55}.route{padding:22px 16px 8px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-soft)}.route__heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 4px 17px;border-bottom:1px solid var(--line)}.route__heading h2{margin:0;font-size:1.04rem}.route__heading>span{color:var(--muted);font-size:.72rem}.route__list{margin:0;padding:12px 0 0;list-style:none}.route-step{display:grid;grid-template-columns:44px 34px minmax(0,1fr);gap:0 8px;min-height:132px;position:relative}.route-step:not(:last-child):after{content:"";width:2px;position:absolute;z-index:0;top:37px;bottom:-1px;left:60px;background:var(--brand-sand)}.route-step--done:not(:last-child):after{background:var(--brand-sage)}.route-step__time{padding-top:9px;color:var(--muted);font-size:.68rem;font-variant-numeric:tabular-nums;font-weight:700;text-align:right}.route-step__marker{display:grid;z-index:1;width:34px;height:34px;place-items:center;border:4px solid var(--surface);border-radius:50%;background:var(--brand-sand);color:var(--brand-deep)}.route-step--attention .route-step__marker{background:var(--brand-clay);color:#fff}.route-step--current .route-step__marker{background:var(--brand-deep);color:#fff;box-shadow:0 0 0 5px color-mix(in srgb,var(--brand-blue) 12%,transparent)}.route-step--done .route-step__marker{background:var(--brand-sage);color:#fff}.route-step__card{min-width:0;padding:5px 4px 25px 5px}.route-step__card .eyebrow{margin-bottom:4px;color:var(--muted);font-size:.6rem}.route-step__card h3{margin-bottom:5px;color:var(--ink)}.route-step__card>p:not(.eyebrow){margin-bottom:9px;color:var(--muted);font-size:.78rem;line-height:1.42}.text-button{display:inline-flex;align-items:center;gap:5px;min-height:30px;padding:0;border:0;background:transparent;color:var(--link);cursor:pointer;font-size:.78rem;font-weight:800;text-decoration:none}.timezone-note{display:flex;align-items:center;justify-content:center;gap:6px;margin:16px 0 0;color:var(--muted);font-size:.68rem}.bottom-nav{display:grid;grid-template-columns:repeat(5,1fr);width:min(100%,var(--content-width));min-height:67px;padding:7px 6px calc(6px + env(safe-area-inset-bottom));position:fixed;z-index:20;right:0;bottom:0;left:0;margin:0 auto;border-top:1px solid var(--line);background:color-mix(in srgb,var(--surface) 93%,transparent);box-shadow:0 -8px 30px color-mix(in srgb,var(--brand-deep) 7%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.bottom-nav__item{display:grid;gap:3px;justify-items:center;min-width:0;min-height:48px;padding:4px 1px;border:0;border-radius:12px;background:transparent;color:var(--muted);cursor:pointer;font-size:clamp(.55rem,2.25vw,.68rem);font-weight:650}.bottom-nav__item.is-active{color:var(--brand-blue)}[data-telegram-scheme=dark] .bottom-nav__item.is-active{color:var(--tg-theme-accent-text-color, #8aa9ff)}.bottom-nav__item.is-active svg{filter:drop-shadow(0 3px 5px color-mix(in srgb,var(--brand-blue) 22%,transparent));stroke-width:2.2}.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:46px;padding:11px 17px;border:1px solid transparent;border-radius:13px;cursor:pointer;font-size:.84rem;font-weight:800;line-height:1.1;transition:transform .12s ease,opacity .12s ease,background .12s ease}.button:active:not(:disabled){transform:translateY(1px) scale(.99)}.button:disabled{cursor:not-allowed;opacity:.52}.button--primary{background:var(--action);color:var(--action-text);box-shadow:0 8px 18px color-mix(in srgb,var(--action) 18%,transparent)}.button--secondary{border-color:color-mix(in srgb,var(--brand-blue) 25%,transparent);background:color-mix(in srgb,var(--brand-blue) 7%,var(--surface));color:var(--link)}.button--quiet{border-color:var(--line);background:var(--surface);color:var(--ink)}.button--compact{min-height:38px;padding:8px 11px;border-radius:11px;font-size:.75rem}.button--full{width:100%}.icon-button{display:inline-grid;flex:0 0 auto;width:38px;height:38px;place-items:center;padding:0;border:0;border-radius:50%;background:var(--surface-soft);color:var(--ink);cursor:pointer}.icon-button--bordered{border:1px solid var(--line);background:transparent}.week-strip{display:flex;gap:7px;margin:0 -18px 25px;padding:0 18px 5px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}.week-day{display:grid;flex:0 0 49px;gap:4px;min-height:65px;padding:8px 5px;place-items:center;scroll-snap-align:start;border:1px solid var(--line);border-radius:15px;background:var(--surface);color:var(--muted);cursor:pointer}.week-day span{font-size:.65rem;text-transform:capitalize}.week-day strong{color:var(--ink);font-size:1rem}.week-day.is-active{border-color:var(--brand-deep);background:var(--brand-deep);color:#d9e2ff;box-shadow:0 8px 18px color-mix(in srgb,var(--brand-deep) 22%,transparent)}.week-day.is-active strong{color:#fff}.schedule-day__title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px;padding:0 3px}.schedule-day__title h2{margin:0;text-transform:capitalize}.schedule-day__title span{color:var(--muted);font-size:.72rem}.lesson-list,.stack,.balance-list,.certificate-list,.period-list,.attendance-history{display:grid;gap:12px}.lesson-card{display:grid;grid-template-columns:57px minmax(0,1fr);overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}.lesson-card.is-cancelled{opacity:.62}.lesson-card__time{display:flex;align-items:center;flex-direction:column;gap:3px;padding:18px 6px;border-right:1px solid var(--line);background:color-mix(in srgb,var(--brand-sand) 22%,var(--surface));font-variant-numeric:tabular-nums}.lesson-card__time strong{font-size:.82rem}.lesson-card__time span{color:var(--muted);font-size:.66rem}.lesson-card__body{min-width:0;padding:16px}.lesson-card__heading{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.lesson-card__heading small{color:var(--muted);font-size:.65rem}.lesson-card__heading h3{margin:3px 0 6px}.lesson-card__body>p{margin-bottom:11px;color:var(--muted);font-size:.75rem}.format-dot{display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:var(--brand-blue)}.format-dot--pair{background:var(--brand-clay)}.format-dot--individual{background:var(--brand-sage)}.lesson-card__meta{display:flex;flex-wrap:wrap;gap:7px 13px;margin-bottom:9px}.meta-check{display:inline-flex;align-items:center;gap:4px;color:var(--muted);font-size:.67rem}.meta-check.is-done{color:var(--brand-sage)}.status{display:inline-flex;align-items:center;width:fit-content;min-height:24px;padding:4px 8px;border-radius:999px;background:var(--surface-soft);color:var(--muted);font-size:.63rem;font-weight:800;line-height:1.1;white-space:nowrap}.status--success,.status--present{background:color-mix(in srgb,var(--brand-sage) 14%,var(--surface));color:var(--brand-forest)}.status--warning,.status--attention,.status--absent{background:color-mix(in srgb,var(--brand-clay) 13%,var(--surface));color:var(--brand-clay)}.status--planned,.status--illness{background:color-mix(in srgb,var(--brand-blue) 10%,var(--surface));color:var(--brand-blue)}.status--neutral,.status--muted,.status--unmarked{background:var(--surface-soft);color:var(--muted)}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:18px;padding:4px;border-radius:14px;background:var(--surface-soft)}.segmented button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;border:0;border-radius:10px;background:transparent;color:var(--muted);cursor:pointer;font-size:.78rem;font-weight:800}.segmented button.is-active{background:var(--surface);color:var(--ink);box-shadow:0 2px 8px color-mix(in srgb,var(--brand-deep) 8%,transparent)}.count-badge{display:inline-grid;min-width:22px;height:22px;padding:0 6px;place-items:center;border-radius:999px;background:var(--brand-clay);color:#fff;font-size:.66rem;font-weight:800}.homework-card,.review-card,.attendance-board,.profile-card{padding:18px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}.homework-card__top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.homework-card__top .eyebrow{margin-bottom:3px;color:var(--muted);font-size:.59rem}.homework-card__top h3{margin:0;font-size:.82rem}.homework-card__body,.review-card__answer{margin-bottom:13px;font-size:.88rem;line-height:1.55}.attachment-list{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 14px}.attachment{display:inline-flex;align-items:center;gap:6px;max-width:100%;min-height:34px;padding:6px 9px;border:1px solid var(--line);border-radius:9px;background:var(--surface-soft);color:var(--ink);font-size:.69rem;text-decoration:none}.attachment span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment small{color:var(--muted)}.teacher-comment{margin:15px 0;padding:11px 13px;border-left:3px solid var(--brand-clay);border-radius:0 9px 9px 0;background:color-mix(in srgb,var(--brand-clay) 7%,var(--surface));color:var(--muted);font-size:.75rem;line-height:1.45}.teacher-comment strong{color:var(--ink)}.review-card__top{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;margin-bottom:13px}.review-card__top h3,.review-card__top p{margin:0}.review-card__top p,.review-card__top time{color:var(--muted);font-size:.65rem}.history-section,.content-section{margin-top:28px}.history-section>h2{margin-bottom:10px;font-size:.9rem}.history-row,.attendance-history__row,.balance-row,.period-row,.profile-strip{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;min-height:60px;padding:10px 12px;border-bottom:1px solid var(--line)}.history-row__icon,.attendance-dot{display:grid;width:34px;height:34px;place-items:center;border-radius:50%;background:color-mix(in srgb,var(--brand-sage) 14%,var(--surface));color:var(--brand-forest)}.history-row div,.attendance-history__row div,.balance-row div,.period-row div,.profile-strip div{display:grid;gap:3px;min-width:0}.history-row strong,.attendance-history__row strong,.balance-row strong,.period-row strong,.profile-strip strong{font-size:.78rem}.history-row span,.attendance-history__row div span,.balance-row small,.period-row small,.profile-strip small{color:var(--muted);font-size:.65rem}.lesson-select{display:grid;gap:6px;margin-bottom:13px;color:var(--muted);font-size:.67rem;font-weight:700}.lesson-select select,.field input,.field select,.field textarea{width:100%;min-height:46px;padding:10px 12px;border:1px solid var(--line-strong);border-radius:11px;outline:0;background:var(--surface);color:var(--ink)}.field textarea{resize:vertical}.lesson-select select:focus,.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--link);box-shadow:0 0 0 3px color-mix(in srgb,var(--link) 12%,transparent)}.attendance-board__header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:13px;border-bottom:1px solid var(--line)}.attendance-board__header .eyebrow{margin-bottom:3px;color:var(--muted)}.attendance-board__header h2{margin:0}.attendance-hint{margin:14px 0;color:var(--muted);font-size:.68rem;line-height:1.45}.student-list{display:grid;margin:0 -5px}.student-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;min-height:56px;padding:8px 5px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;cursor:pointer}.student-row:disabled{cursor:default}.student-row__name{display:grid;gap:2px}.student-row__name strong{font-size:.8rem}.student-row__name small{color:var(--muted);font-size:.62rem}.attendance-toggle{display:inline-flex;min-width:70px;min-height:31px;align-items:center;justify-content:center;padding:5px 9px;border:1px solid var(--line);border-radius:999px;background:var(--surface-soft);color:var(--muted);font-size:.64rem;font-weight:800}.attendance-toggle--present{border-color:color-mix(in srgb,var(--brand-sage) 35%,transparent);background:color-mix(in srgb,var(--brand-sage) 14%,var(--surface));color:var(--brand-forest)}.attendance-toggle--absent{border-color:color-mix(in srgb,var(--brand-clay) 35%,transparent);background:color-mix(in srgb,var(--brand-clay) 12%,var(--surface));color:var(--brand-clay)}.attendance-toggle--planned,.attendance-toggle--illness{border-color:color-mix(in srgb,var(--brand-blue) 28%,transparent);background:color-mix(in srgb,var(--brand-blue) 9%,var(--surface));color:var(--brand-blue)}.attendance-actions{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;margin-top:17px}.ticket{display:grid;grid-template-columns:minmax(0,1fr) 74px;min-height:145px;overflow:hidden;position:relative;margin-bottom:15px;border-radius:20px;background:var(--brand-deep);color:#fff;box-shadow:0 16px 35px color-mix(in srgb,var(--brand-deep) 25%,transparent)}.ticket:before,.ticket:after{content:"";width:22px;height:22px;position:absolute;z-index:2;right:63px;border-radius:50%;background:var(--canvas)}.ticket:before{top:-11px}.ticket:after{bottom:-11px}.ticket__main{display:grid;align-content:space-between;padding:21px;background:linear-gradient(125deg,transparent 50%,color-mix(in srgb,var(--brand-blue) 55%,transparent)),var(--brand-deep)}.ticket__main .eyebrow{color:#cbd8ff}.ticket__count{display:flex;align-items:flex-end;gap:10px}.ticket__count strong{font-size:3.25rem;line-height:.82}.ticket__count span{font-size:.66rem;line-height:1.25}.ticket__stub{display:flex;align-items:center;flex-direction:column;justify-content:space-between;padding:21px 8px;border-left:1px dashed rgba(255,255,255,.45);background:color-mix(in srgb,var(--brand-blue) 72%,var(--brand-deep))}.ticket__stub span{font-family:Georgia,serif;font-size:1.05rem;font-style:italic;font-weight:700}.ticket__stub small{color:#cad6f7;font-size:.58rem;writing-mode:vertical-rl}.quick-actions{display:grid;gap:8px;margin-bottom:27px}.quick-actions button,.certificate-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:11px;align-items:center;min-height:64px;padding:10px 13px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);text-align:left;cursor:pointer}.quick-actions button>span:nth-child(2),.certificate-row>span:nth-child(2){display:grid;gap:3px;min-width:0}.quick-actions strong,.certificate-row strong{font-size:.78rem}.quick-actions small,.certificate-row small{overflow:hidden;color:var(--muted);font-size:.64rem;text-overflow:ellipsis;white-space:nowrap}.quick-actions__icon,.period-badge,.certificate-row__icon{display:grid;width:34px;height:34px;place-items:center;border-radius:11px;font-weight:900}.quick-actions__icon--blue,.period-badge--absence{background:color-mix(in srgb,var(--brand-blue) 12%,var(--surface));color:var(--brand-blue)}.quick-actions__icon--sage,.period-badge--illness,.certificate-row__icon{background:color-mix(in srgb,var(--brand-sage) 14%,var(--surface));color:var(--brand-forest)}.subsection-title{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px}.subsection-title .eyebrow{margin-bottom:3px;color:var(--muted)}.subsection-title h2{margin:0;font-size:1rem}.balance-list,.certificate-list,.period-list{overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}.balance-list,.certificate-list,.period-list{gap:0}.balance-row:last-child,.period-row:last-child{border-bottom:0}.balance-row{grid-template-columns:auto minmax(0,1fr) auto auto}.balance-number{min-width:28px;color:var(--brand-deep);font-size:1.25rem;font-weight:800;text-align:center}.balance-number.is-low{color:var(--brand-clay)}.certificate-row{border:0;border-bottom:1px solid var(--line);border-radius:0}.certificate-row:last-child{border-bottom:0}.period-row{grid-template-columns:auto minmax(0,1fr) auto}.profile-strip{margin-top:28px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}.profile-card{display:flex;align-items:center;gap:15px;margin-bottom:14px}.profile-card h2,.profile-card p{margin:0}.profile-card p{margin-top:5px;color:var(--muted);font-size:.76rem}.notice{padding:11px 13px;border:1px solid color-mix(in srgb,var(--brand-blue) 18%,transparent);border-radius:11px;background:color-mix(in srgb,var(--brand-blue) 6%,var(--surface));color:var(--muted);font-size:.7rem;line-height:1.45}.notice--warning{border-color:color-mix(in srgb,var(--brand-clay) 22%,transparent);background:color-mix(in srgb,var(--brand-clay) 7%,var(--surface))}.notice--success{border-color:color-mix(in srgb,var(--brand-sage) 22%,transparent);background:color-mix(in srgb,var(--brand-sage) 7%,var(--surface))}.empty-state{display:grid;max-width:370px;min-height:190px;margin:10px auto;padding:28px 20px;place-items:center;align-content:center;text-align:center}.empty-state__icon,.error-state__icon{display:grid;width:48px;height:48px;margin-bottom:13px;place-items:center;border-radius:50%;background:color-mix(in srgb,var(--brand-sand) 55%,var(--surface));color:var(--brand-deep)}.empty-state h3{margin-bottom:7px}.empty-state p{margin-bottom:14px;color:var(--muted);font-size:.76rem;line-height:1.5}.error-state{display:grid;max-width:410px;justify-items:center}.error-state h1{margin-bottom:12px;font-size:clamp(1.45rem,6vw,2rem)}.error-state>p:not(.eyebrow){margin-bottom:22px;color:var(--muted);font-size:.8rem;line-height:1.55}.brand-lockup--loading{margin-bottom:35px}.brand-lockup--loading .brand-mark{width:50px;height:50px;font-size:1.2rem}.brand-lockup--loading .brand-name{font-size:1.4rem}.spinner{display:inline-flex;align-items:center;justify-content:center;gap:9px;color:var(--muted);font-size:.75rem}.spinner__ring{width:18px;height:18px;border:2px solid var(--line-strong);border-top-color:var(--brand-blue);border-radius:50%;animation:spin .8s linear infinite}.sheet{width:min(100%,var(--content-width));max-width:none;max-height:min(90vh,760px);margin:auto auto 0;padding:0;overflow:visible;border:0;border-radius:24px 24px 0 0;background:transparent;color:var(--ink)}.sheet::backdrop{background:#040c1c7a;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.sheet[open]{animation:sheet-in .22s ease-out both}.sheet__panel{max-height:min(90vh,760px);padding:9px 18px calc(20px + env(safe-area-inset-bottom));overflow-y:auto;border-radius:24px 24px 0 0;background:var(--surface);box-shadow:0 -15px 55px #040c1c33}.sheet__handle{display:block;width:38px;height:4px;margin:0 auto 8px;border-radius:999px;background:var(--line-strong)}.sheet__header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:8px 0 17px}.sheet__header h2{margin-bottom:4px}.sheet__header p{margin:0;color:var(--muted);font-size:.7rem}.form{display:grid;gap:14px}.field{display:grid;gap:6px;color:var(--muted);font-size:.69rem;font-weight:700}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.file-field{display:flex;align-items:center;gap:9px;min-height:48px;padding:10px 13px;position:relative;overflow:hidden;border:1px dashed color-mix(in srgb,var(--brand-blue) 35%,transparent);border-radius:11px;background:color-mix(in srgb,var(--brand-blue) 5%,var(--surface));color:var(--link);cursor:pointer;font-size:.75rem;font-weight:800}.file-field input{position:absolute;inset:0;opacity:0;cursor:pointer}.form-actions{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;margin-top:5px}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0;padding:0;border:0}.choice-grid legend{grid-column:1 / -1;margin-bottom:1px;color:var(--muted);font-size:.69rem;font-weight:700}.choice-grid label{position:relative}.choice-grid input{position:absolute;opacity:0}.choice-grid label span{display:flex;align-items:center;justify-content:center;gap:6px;min-height:47px;padding:8px;border:1px solid var(--line);border-radius:11px;color:var(--muted);cursor:pointer;font-size:.69rem;font-weight:800;text-align:center}.choice-grid input:checked+span{border-color:var(--brand-blue);background:color-mix(in srgb,var(--brand-blue) 8%,var(--surface));color:var(--brand-blue)}.certificate-preview{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:13px;border-radius:12px;background:var(--surface-soft)}.certificate-preview div{display:grid;gap:3px}.certificate-preview strong{font-size:.75rem}.certificate-preview span{color:var(--muted);font-size:.63rem}.toast{display:flex;align-items:center;gap:9px;width:calc(100% - 32px);max-width:480px;min-height:50px;padding:11px 14px;position:fixed;z-index:60;right:0;bottom:calc(80px + env(safe-area-inset-bottom));left:0;margin:0 auto;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:0 12px 35px #050d1e38;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);font-size:.74rem;font-weight:700;animation:toast-in .2s ease-out both}.toast--success svg{color:var(--brand-sage)}.toast--error svg{color:var(--danger)}@keyframes page-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@keyframes sheet-in{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:720px){body{padding-bottom:24px}.app-shell{min-height:calc(100vh - 24px);box-shadow:0 0 60px color-mix(in srgb,var(--brand-deep) 8%,transparent)}.page{padding-right:34px;padding-left:34px}.role-switcher{margin-right:32px;margin-left:32px}.week-strip{margin-right:-34px;margin-left:-34px;padding-right:34px;padding-left:34px}.bottom-nav{bottom:12px;border:1px solid var(--line);border-radius:18px}.app-content{padding-bottom:94px}.sheet{margin-bottom:12px;border-radius:24px}.sheet__panel{border-radius:24px}}@media(max-width:370px){.page{padding-right:14px;padding-left:14px}.section-header{align-items:flex-start;flex-direction:column}.section-header .button{align-self:flex-start}.route{padding-right:10px;padding-left:10px}.route-step{grid-template-columns:40px 32px minmax(0,1fr);gap:0 5px}.route-step:not(:last-child):after{left:55px}.lesson-card{grid-template-columns:52px minmax(0,1fr)}.lesson-card__body{padding:13px}.attendance-actions,.form-actions,.choice-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
