:root{--bg: oklch(.985 .006 80);--surf: oklch(.998 .003 80);--surf-2: oklch(.965 .008 80);--surf-3: oklch(.945 .009 80);--border: oklch(.905 .008 80);--border-strong: oklch(.84 .01 80);--text: oklch(.26 .012 70);--muted: oklch(.55 .012 70);--faint: oklch(.7 .01 70);--c-primary: oklch(.55 .135 255);--c-primary-ink: oklch(.45 .14 255);--c-primary-weak: oklch(.95 .035 255);--c-credit: oklch(.6 .13 158);--c-debt: oklch(.62 .16 28);--c-amber: oklch(.76 .11 75);--c-muted: oklch(.7 .01 70);--tint-l: .965;--ev-stripe: oklch(.48 .008 70 / .22);--ev-stripe-alt: oklch(.48 .008 70 / .04);--r-sm: 9px;--r: 13px;--r-lg: 18px;--r-xl: 24px;--sh-sm: 0 1px 2px oklch(.4 .02 70 / .06), 0 1px 3px oklch(.4 .02 70 / .05);--sh: 0 2px 6px oklch(.4 .02 70 / .06), 0 8px 24px oklch(.4 .02 70 / .07);--sh-lg: 0 8px 30px oklch(.3 .02 70 / .12), 0 2px 8px oklch(.3 .02 70 / .08);--ff: "Hanken Grotesk", system-ui, sans-serif}[data-theme=dark]{--bg: oklch(.19 .012 75);--surf: oklch(.235 .013 75);--surf-2: oklch(.275 .014 75);--surf-3: oklch(.31 .015 75);--border: oklch(.33 .014 75);--border-strong: oklch(.42 .016 75);--text: oklch(.95 .006 80);--muted: oklch(.72 .012 80);--faint: oklch(.55 .012 80);--c-primary: oklch(.68 .13 255);--c-primary-ink: oklch(.8 .12 255);--c-primary-weak: oklch(.33 .06 255);--c-credit: oklch(.72 .13 158);--c-debt: oklch(.72 .15 30);--c-amber: oklch(.82 .1 75);--tint-l: .34;--ev-stripe: oklch(.78 .008 80 / .28);--ev-stripe-alt: oklch(.78 .008 80 / .07);--sh-sm: 0 1px 2px oklch(0 0 0 / .3);--sh: 0 4px 14px oklch(0 0 0 / .32);--sh-lg: 0 12px 40px oklch(0 0 0 / .5)}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:var(--ff);background:var(--bg);color:var(--text);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;font-feature-settings:"tnum" 0}#root{height:100%}h1,h2,h3,h4{margin:0;font-weight:650;letter-spacing:-.01em}button{font-family:inherit;cursor:pointer}svg{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.tnum,.ev__time,.wg__hour,.ft__t,.ag__time,.student-balance__net,.student-card__balance,.stat__big,.drawer__price{font-variant-numeric:tabular-nums}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:var(--r-sm);padding:10px 16px;font-size:14px;font-weight:600;color:var(--text);background:var(--surf-2);transition:.16s ease}.btn:hover{transform:translateY(-1px)}.btn{white-space:nowrap}.btn--sm{padding:7px 12px;font-size:13px}.btn--block{width:100%;padding:12px}.btn--primary{background:var(--c-primary);color:#fff;box-shadow:var(--sh-sm)}.btn--primary:hover{background:var(--c-primary-ink)}.btn--ghost{background:transparent;border-color:var(--border)}.btn--soft{background:var(--c-primary-weak);color:var(--c-primary-ink)}.btn--google{width:100%;background:var(--surf);border-color:var(--border-strong);padding:12px}.btn--google svg{stroke:none}.btn.is-loading{opacity:.8}.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--r-sm);border:1px solid transparent;background:transparent;color:var(--muted);font-size:18px;transition:.15s}.iconbtn:hover{background:var(--surf-2);color:var(--text)}.iconbtn--round{border-radius:50%;border:1px solid var(--border)}.iconbtn--dense{width:30px;height:30px;font-size:17px;flex:none}.top__link{border:none;background:none;font:inherit;font-size:12px;font-weight:650;color:var(--c-primary);padding:4px 6px;flex:none;white-space:nowrap}.top__fab{min-width:34px;padding-left:10px;padding-right:10px}.link{background:none;border:none;color:var(--c-primary);font:inherit;font-size:13px;font-weight:600;padding:0}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.dot--primary{background:var(--c-primary)}.dot--credit{background:var(--c-credit)}.dot--debt{background:var(--c-debt)}.dot--amber{background:var(--c-amber)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:11px;color:#fff;font-size:13px;font-weight:700;flex:none;letter-spacing:.02em}.avatar--sm{width:30px;height:30px;border-radius:9px;font-size:11px}.avatar--lg{width:52px;height:52px;border-radius:15px;font-size:17px}.spinner{width:15px;height:15px;border:2px solid #fff6;border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.logo{display:inline-flex}.logo__mark{width:28px;height:28px;border-radius:9px;background:var(--c-primary);position:relative;display:inline-block}.logo__mark:before{content:"";position:absolute;inset:8px 8px auto 8px;height:3px;border-radius:2px;background:#fff;box-shadow:0 5px #fff9,0 10px #fff6}.logo__copy{display:flex;flex-direction:column;gap:1px;line-height:1.08;min-width:0}.logo__word{font-weight:700;letter-spacing:-.02em;font-size:16px}.logo__tagline{color:var(--muted);font-size:10.5px;font-weight:600;letter-spacing:.01em;white-space:nowrap}.login{position:relative;display:grid;grid-template-columns:minmax(0,3fr) minmax(320px,1fr);min-height:100%;overflow:hidden;background:radial-gradient(circle at 18% 14%,oklch(.67 .11 255 / .45),transparent 32%),radial-gradient(circle at 76% 20%,oklch(.76 .11 75 / .16),transparent 28%),radial-gradient(circle at 82% 78%,oklch(.55 .135 255 / .22),transparent 34%),radial-gradient(circle at 44% 95%,oklch(.6 .13 258 / .18),transparent 32%),linear-gradient(135deg,#043264,#021435 62%,#001327);background:radial-gradient(circle at 18% 14%,oklch(.67 .11 255 / .45),transparent 32%),radial-gradient(circle at 76% 20%,oklch(.76 .11 75 / .16),transparent 28%),radial-gradient(circle at 82% 78%,oklch(.55 .135 255 / .22),transparent 34%),radial-gradient(circle at 44% 95%,oklch(.6 .13 258 / .18),transparent 32%),linear-gradient(135deg,#043264,#021435 62%,color(xyz 0.006 0.006 0.021))}.login:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 76% 50%,oklch(.998 .003 80 / .12),transparent 22%),radial-gradient(circle at 8% 88%,oklch(.18 .055 245 / .22),transparent 34%);pointer-events:none}.login__aside{position:relative;overflow:visible;padding:44px 56px 44px 64px;display:flex;flex-direction:column;gap:30px;color:#fff}.login__aside:after{content:"";position:absolute;inset:auto -18% -24% 42%;height:42%;background:#3472be29;filter:blur(54px);transform:rotate(-8deg)}.login__glow{position:absolute;border-radius:999px;pointer-events:none}.login__glow--a{width:210px;height:210px;top:11%;right:10%;background:#daa75d21;filter:blur(32px)}.login__glow--b{width:260px;height:260px;left:-90px;bottom:20%;background:#3472be3d;filter:blur(42px)}.login__brand,.login__content,.login__decor{position:relative;z-index:1}.login__brand,.login__mobile-brand{display:flex;align-items:center;gap:10px}.login__aside .logo__mark{background:#fff}.login__aside .logo__mark:before{background:var(--c-primary);box-shadow:0 5px color-mix(in oklch,var(--c-primary),white 0%),0 10px color-mix(in oklch,var(--c-primary),transparent 35%)}.login__aside .logo__tagline,.login__mobile-brand .logo__tagline{color:#edebe7b8}.login__content{margin:auto 0;display:flex;flex-direction:column;gap:26px;max-width:900px}.login__pitch{max-width:780px}.login__title{font-size:clamp(33px,3vw,43px);line-height:1.04;font-weight:680;text-wrap:balance;letter-spacing:-.032em}.login__title--mobile{display:none}.login__pitch p{font-size:16.5px;line-height:1.55;opacity:.86;margin:17px 0 0;max-width:620px}.login__chips{display:flex;flex-wrap:wrap;gap:9px}.chip{display:inline-flex;align-items:center;gap:7px;padding:8px 12px;font-size:13px;font-weight:600;border-radius:99px;color:#fcfaf6;background:#ffffff24;border:1px solid oklch(1 0 0 / .17);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.login__features{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;max-width:900px}.login-feature{min-height:118px;padding:16px;border:1px solid oklch(1 0 0 / .15);border-radius:var(--r-lg);background:#ffffff1a;box-shadow:0 12px 34px #0000001a}.login-feature__icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;margin-bottom:12px;border-radius:var(--r);color:#fff;background:#ffffff24;border:1px solid oklch(1 0 0 / .16)}.login-feature strong{display:block;font-size:14.5px;line-height:1.2}.login-feature span span{display:block;margin-top:6px;font-size:12.5px;line-height:1.35;color:#edebe7c7}.login__decor{display:flex;gap:14px;flex-wrap:wrap;margin-top:auto;padding-left:min(10vw,140px)}.decor-card{display:flex;align-items:center;gap:12px;min-width:236px;background:#ffffff21;border:1px solid oklch(1 0 0 / .2);border-radius:var(--r-lg);padding:13px 14px;font-size:13px;box-shadow:0 18px 46px #00000029;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.decor-card__time{font-weight:750;font-variant-numeric:tabular-nums}.decor-card__main{display:flex;flex-direction:column;min-width:0;line-height:1.18}.decor-card__main strong{font-size:14px}.decor-card__main span{margin-top:3px;color:#edebe7b8}.decor-card__balance{margin-left:auto;padding:5px 8px;border-radius:99px;font-weight:700;font-size:12px;white-space:nowrap;font-variant-numeric:tabular-nums}.decor-card__balance--credit{color:#c7f5d9;background:#21976133}.decor-card__balance--debt{color:#ffe3de;color:oklch(.94 .07 28);background:#d5584d33}.decor-card--a{transform:rotate(-1.5deg)}.decor-card--b{transform:rotate(1.5deg) translateY(10px)}.login__main{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:56px 10px}.login__mobile-brand,.login__mobile-chips{display:none}.login__card{position:relative;isolation:isolate;width:100%;max-width:340px;padding:28px;border-radius:var(--r-xl);background:linear-gradient(180deg,#fffefc,#fcfaf6);border:1px solid oklch(1 0 0 / .7);box-shadow:0 34px 80px #00071752,0 10px 26px #0013242e,inset 0 1px #ffffffe6;box-shadow:0 34px 80px #00071752,0 10px 26px oklch(.18 .055 245 / .18),inset 0 1px #ffffffe6;transform:translateY(-4px)}.login__card:before{content:"";position:absolute;top:-18px;right:-18px;bottom:-18px;left:-18px;z-index:-1;border-radius:32px;background:radial-gradient(circle at 50% 0%,oklch(1 0 0 / .36),transparent 62%);filter:blur(14px);opacity:.86;pointer-events:none}.login__head{margin-bottom:24px}.login__head h2{font-size:25px;line-height:1.15;font-weight:680}.login__head p{color:var(--muted);margin:7px 0 0}.login__sep{display:flex;align-items:center;gap:12px;color:var(--faint);font-size:12px;margin:18px 0}.login__sep:before,.login__sep:after{content:"";height:1px;flex:1;background:var(--border)}.login__alert{margin:0 0 12px;padding:10px 12px;border-radius:var(--r);color:#822c25;background:#ffece8;background:oklch(.96 .035 28);border:1px solid oklch(.82 .08 28);font-size:13px;line-height:1.35}.login__form{display:flex;flex-direction:column;gap:14px}.field{position:relative;display:flex;flex-direction:column;gap:6px}.field__label{font-size:13px;font-weight:600;color:var(--muted)}.field input:not(.student-drawer__avatar-input){min-height:48px;font:inherit;padding:11px 13px;border-radius:var(--r);border:1px solid var(--border-strong);background:var(--surf);color:var(--text);transition:.15s}.field input:not(.student-drawer__avatar-input):focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--c-primary);box-shadow:0 0 0 4px #3472be24}.field__control{font:inherit;padding:11px 13px;border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--surf);color:var(--text);transition:.15s;width:100%}.field__control--area{resize:vertical;min-height:72px}.field__hint{font-size:12px;color:var(--muted);margin-top:4px}.field__aux{position:absolute;right:0;top:0;border:0;background:none;padding:0;font:inherit;font-size:12px;font-weight:650;color:var(--c-primary);text-decoration:none}.field__aux:focus-visible,.login__foot a:focus-visible{outline:3px solid oklch(.55 .135 255 / .2);outline-offset:3px;border-radius:6px}.login .btn{min-height:48px;border-radius:var(--r)}.login .btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.login .btn:focus-visible{outline:none;border-color:var(--c-primary);box-shadow:0 0 0 4px #3472be24}.login__foot{text-align:center;color:var(--muted);font-size:14px;margin-top:22px}.login__foot a,.field__aux{color:var(--c-primary)}[data-theme=dark] .login__card{background:linear-gradient(180deg,#26211a,#1b1611);border-color:#ffffff1f;box-shadow:0 34px 80px #0000006b,0 10px 26px #00000042,inset 0 1px #ffffff14}[data-theme=dark] .login__card:before{background:radial-gradient(circle at 50% 0%,oklch(.68 .13 255 / .24),transparent 62%);opacity:.72}[data-theme=dark] .login__sep:before,[data-theme=dark] .login__sep:after{background:#ffffff1f}[data-theme=dark] .login .btn--google{background:#2c2720;border-color:#ffffff24;color:var(--text)}[data-theme=dark] .login .btn--google:hover{background:#352f28}[data-theme=dark] .login .field input:not(.student-drawer__avatar-input){background:#2c2720;border-color:#ffffff24}[data-theme=dark] .login .field input:not(.student-drawer__avatar-input):focus{border-color:var(--c-primary);box-shadow:0 0 0 4px #5e9ae733}[data-theme=dark] .login__alert{color:#ffd2cb;color:oklch(.9 .055 28);background:#482520;border-color:#924239}.app{display:grid;grid-template-columns:244px 1fr;height:100%;min-height:0}.app__main{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.page{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.app__content{flex:1;display:grid;grid-template-columns:1fr 312px;grid-template-rows:minmax(0,1fr);min-height:0;overflow:hidden}.board{flex:1;min-height:0;overflow:auto;padding:22px 24px 24px}.app__content>.board{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.app__content>.board:has(.wg){padding:0}.app__content>.board:has(.ft),.app__content>.board:has(.ag){overflow:auto}.side{display:flex;flex-direction:column;gap:8px;padding:20px 14px;border-right:1px solid var(--border);background:var(--surf)}.side__brand{display:flex;align-items:flex-start;gap:10px;padding:6px 8px 18px}.side__brand .logo{padding-top:1px}.side__brand .logo__tagline{max-width:170px;overflow:hidden;text-overflow:ellipsis}.side__nav{display:flex;flex-direction:column;gap:3px}.side__item{display:flex;align-items:center;gap:12px;padding:10px 12px;border:none;background:none;border-radius:var(--r-sm);color:var(--muted);font:inherit;font-weight:550;font-size:14.5px;text-align:left;transition:.14s}.side__item:hover{background:var(--surf-2);color:var(--text)}.side__item.is-active{background:var(--c-primary-weak);color:var(--c-primary-ink);font-weight:650}.side__item.is-active svg{stroke:var(--c-primary)}.side__badge{margin-left:auto;background:var(--c-debt);color:#fff;font-size:11px;font-weight:700;padding:1px 7px;border-radius:99px}.side__user{margin-top:auto;display:flex;align-items:center;gap:10px;padding:12px 8px 4px;border-top:1px solid var(--border)}.side__user-txt{display:flex;flex-direction:column;line-height:1.25;min-width:0}.side__user-txt strong{font-size:13.5px}.side__user-txt span{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 24px;border-bottom:1px solid var(--border);background:var(--surf);flex-wrap:wrap;flex-shrink:0}.top__l{display:flex;align-items:center;gap:22px}.top__title{font-size:21px}.weeknav{display:flex;align-items:center;gap:8px}.weeknav__range{display:flex;align-items:center;gap:2px}.weeknav__label{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.top__r{display:flex;align-items:center;gap:12px}.seg{display:inline-flex;background:var(--surf-2);border-radius:var(--r-sm);padding:3px;gap:2px;flex-wrap:wrap}.seg__btn{border:none;background:none;padding:7px 13px;border-radius:7px;font:inherit;font-size:13px;font-weight:600;color:var(--muted);transition:.14s}.seg__btn:hover{color:var(--text)}.seg__btn.is-active{background:var(--surf);color:var(--text);box-shadow:var(--sh-sm)}.seg--variant .seg__btn.is-active{color:var(--c-primary-ink)}.ev__time,.ag__time strong,.ft__t{font-weight:700}.ev-type{color:var(--faint);flex:none;opacity:.85}.ev{--ev-hue: 250;position:relative;text-align:left;color:var(--text);border-radius:var(--r-sm);border:1px solid oklch(.87 .03 var(--ev-hue));background:oklch(.97 .025 var(--ev-hue));padding:5px 8px 5px 10px;box-sizing:border-box}.ev:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:3px 0 0 3px;background:oklch(.54 .13 var(--ev-hue));z-index:2}.ev>*{position:relative;z-index:2}.ev--completed{background:oklch(.955 .038 var(--ev-hue));border-color:oklch(.84 .045 var(--ev-hue))}.ev--completed.ev--paid{background:oklch(.97 .022 var(--ev-hue));border-color:oklch(.88 .03 var(--ev-hue))}.ev--completed.ev--paid:before{background:oklch(.7 .085 var(--ev-hue))}.ev--no-show{isolation:isolate;color:var(--text);background:oklch(.963 .02 var(--ev-hue));border-color:oklch(.86 .026 var(--ev-hue))}.ev--no-show:before{background:oklch(.62 .09 var(--ev-hue))}.ev--cancelled{isolation:isolate;color:var(--muted);background:oklch(.972 .006 var(--ev-hue));border-color:oklch(.92 .008 var(--ev-hue));border-style:dashed}.ev--cancelled:before{background:oklch(.82 .035 var(--ev-hue))}.ev--cancelled:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;z-index:1;background:repeating-linear-gradient(180deg,var(--ev-stripe-alt) 0,var(--ev-stripe-alt) 9px,var(--ev-stripe) 9px,var(--ev-stripe) 13px)}.ev--no-show:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;z-index:1;background:repeating-linear-gradient(45deg,var(--ev-stripe-alt) 0,var(--ev-stripe-alt) 9px,var(--ev-stripe) 9px,var(--ev-stripe) 13px)}.ev--cancelled .ev__name,.ev--cancelled .ft__card-name,.ev--cancelled .ag__name{text-decoration:line-through;opacity:.82}.ev--cancelled .ev__time,.ev--cancelled .ev__hint,.ev--cancelled .ft__card-sub,.ev--cancelled .ev-meta{color:var(--faint)}.ev__mark{position:absolute;top:5px;right:5px;display:flex;align-items:center;justify-content:center;line-height:0;pointer-events:none}.ev__mark--ok{color:var(--c-credit)}.ev__mark--debt{color:var(--c-debt)}.ev__notes{position:absolute;bottom:4px;right:5px;display:flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:6px;background:#ffe3be;background:oklch(.93 .07 75);color:#894d00;color:oklch(.48 .15 62);border:1px solid oklch(.82 .1 72);box-shadow:0 1px #48372314;line-height:0;pointer-events:none;z-index:2}[data-theme=dark] .ev__notes{background:#593b11;color:#f5c984;border-color:#845922}.ev--has-notes .ev__hint{padding-right:20px}.ev--completed .ev__head,.ev--completed .ft__card-head,.ev--completed .ag__head{padding-right:14px}.ev__head{display:flex;align-items:center;gap:4px;min-width:0;padding-right:6px}.ev__name{font-size:12px;font-weight:650;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}.ev__time{font-size:10.5px;color:var(--muted);line-height:1.2}.ev__hint{font-size:10px;color:var(--faint);line-height:1.2;margin-top:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ev-meta{margin:0;font-size:12px;line-height:1.35;color:var(--muted)}.ev-meta__warn{color:var(--c-debt);font-weight:600}.ev-meta__ok{color:var(--faint)}.ev-meta__sep{opacity:.45}.wg{--wg-gutter: var(--wg-gutter-size, 56px);display:flex;flex-direction:column;flex:1;min-height:0;min-width:720px}.wg__scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable}.wg__head{display:grid;grid-template-columns:var(--wg-gutter) repeat(var(--wg-cols, 7),minmax(0,1fr));flex-shrink:0;position:sticky;top:0;z-index:3;background:var(--bg);padding-bottom:6px}.wg__day{text-align:center;padding:6px 4px;border-radius:var(--r-sm);display:flex;flex-direction:column;gap:1px;min-width:0}.wg__dow{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.wg__date{font-size:18px;font-weight:650;font-variant-numeric:tabular-nums}.wg__day.is-today{background:var(--c-primary-weak);color:var(--c-primary-ink)}.wg__body{display:grid;grid-template-columns:var(--wg-gutter) repeat(var(--wg-cols, 7),minmax(0,1fr));position:relative}.wg__gutter--rows .wg__hour{font-size:11px;color:var(--faint);text-align:right;padding-right:8px;position:relative}.wg__hour span{position:relative;top:0;transform:translateY(-50%);line-height:1}.wg__col{position:relative;border-left:1px solid var(--border)}.wg__col.is-today{background:oklch(var(--tint-l) .02 255)}.wg__slot{display:block;width:100%;border:none;border-top:1px solid var(--border);padding:0;margin:0;background:none;cursor:pointer;border-radius:0}.wg__slot:hover{background:oklch(var(--tint-l) .03 255)}.wg__slot:focus-visible{outline:2px solid var(--c-primary);outline-offset:-2px;z-index:1}.wg .ev{position:absolute;left:3px;right:3px;display:flex;flex-direction:column;gap:1px;overflow:hidden;transition:box-shadow .14s,transform .14s;z-index:2;touch-action:none;cursor:grab}.wg .ev:hover{box-shadow:var(--sh);transform:translateY(-1px);z-index:4}.wg .ev:active{cursor:grabbing}.wg .ev.ev--cols{box-sizing:border-box}.wg .ev.ev--cols-div{border-right:2px solid var(--border)}.ev--ghost{z-index:5;box-shadow:var(--sh-lg);border-style:dashed;border-width:2px;opacity:.92;pointer-events:none}.wg--dragging{-webkit-user-select:none;user-select:none}.wg--dragging .wg__slot{pointer-events:none}.wg--dragging .ev:not(.ev--ghost){cursor:grabbing}.wg .ev--tight{padding:4px 7px 4px 9px;gap:0}.wg .ev--tight .ev__name{font-size:11px}.wg .ev--tight .ev__time{font-size:10px}.wg .ev--tight .ev__head{padding-right:4px}.ft{max-width:720px}.ft__strip{display:flex;gap:8px;overflow-x:auto;padding-bottom:14px}.ft__pill{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:58px;padding:10px 6px;border-radius:var(--r);border:1px solid var(--border);background:var(--surf);color:var(--muted);transition:.14s;position:relative}.ft__pill:hover{border-color:var(--border-strong)}.ft__pill.is-active{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.ft__pill-dow{font-size:11px;font-weight:600;text-transform:uppercase}.ft__pill-date{font-size:18px;font-weight:700}.ft__pill-count{font-size:11px;font-weight:700;background:var(--c-primary-weak);color:var(--c-primary-ink);border-radius:99px;min-width:17px;height:17px;display:inline-flex;align-items:center;justify-content:center}.ft__pill.is-active .ft__pill-count{background:#ffffff30;color:#fff}.ft__pill-count--empty{background:none;color:var(--faint)}.ft__head{display:flex;align-items:baseline;gap:12px;margin:8px 0 18px}.ft__head h3{font-size:20px;white-space:nowrap}.ft__sub{color:var(--muted);font-size:14px}.ft__rail{display:flex;flex-direction:column;gap:12px}.ft__row{display:grid;grid-template-columns:64px 1fr;gap:14px;align-items:stretch;position:relative}.ft__row:before{content:"";position:absolute;left:64px;top:-12px;bottom:0;width:1px;background:var(--border)}.ft__row:first-child:before{top:8px}.ft__row:last-child:before{bottom:auto;height:16px}.ft__axis{display:flex;flex-direction:column;align-items:flex-end;padding-top:14px}.ft__t{font-size:14px}.ft__dur{font-size:11px;color:var(--faint)}.ft__card{display:flex;align-items:center;gap:13px;padding:12px 14px 12px 12px;border-radius:var(--r-lg);box-shadow:var(--sh-sm);transition:box-shadow .15s,transform .15s;width:100%}.ft__card:hover{box-shadow:var(--sh);transform:translateY(-1px)}.ft__card-main{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.ft__card-head{display:flex;align-items:center;gap:6px;min-width:0}.ft__card-name{font-size:16px;font-weight:650;line-height:1.2}.ft__card-sub{font-size:13px;color:var(--muted)}.ft__card-side{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.ft__join{font-size:12px;font-weight:650;color:var(--c-primary);background:var(--c-primary-weak);padding:4px 10px;border-radius:99px}.ft__empty{text-align:center;padding:50px 20px;color:var(--muted)}.ft__empty-art{width:90px;height:90px;margin:0 auto 16px;border-radius:24px;background:repeating-linear-gradient(45deg,var(--surf-2),var(--surf-2) 8px,var(--surf-3) 8px,var(--surf-3) 16px)}.ft__empty p{margin:0 0 14px}.ag{max-width:640px;display:flex;flex-direction:column;gap:26px}.ag__date{display:flex;align-items:center;gap:12px;margin-bottom:12px}.ag__num{font-size:22px;font-weight:700;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border-radius:12px;background:var(--surf-2)}.ag__num.is-today{background:var(--c-primary);color:#fff}.ag__dow{font-size:14px;font-weight:600;color:var(--text)}.ag__line{flex:1;height:1px;background:var(--border)}.ag__count{font-size:12px;color:var(--muted);font-weight:600}.ag__cards{display:flex;flex-direction:column;gap:10px}.ag__card{display:flex;align-items:center;gap:14px;padding:12px 14px 12px 12px;border-radius:var(--r-lg);box-shadow:var(--sh-sm);transition:box-shadow .15s,transform .15s;width:100%}.ag__card:hover{box-shadow:var(--sh);transform:translateY(-1px)}.ag__time{display:flex;flex-direction:column;align-items:center;min-width:44px}.ag__time strong{font-size:15px}.ag__time span{font-size:11.5px;color:var(--faint)}.ag__main{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}.ag__head{display:flex;align-items:center;gap:6px;min-width:0}.ag__name{font-size:15px;font-weight:650;line-height:1.2}.rail{border-left:1px solid var(--border);background:var(--surf);padding:20px 18px;display:flex;flex-direction:column;gap:16px;overflow:auto;min-height:0}.rail__card{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px}.rail__card h4{font-size:14px;color:var(--muted);font-weight:600}.rail__card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.rail__stats .stat{margin:10px 0 14px}.stat{display:flex;flex-direction:column}.stat__big{font-size:34px;font-weight:700;line-height:1;letter-spacing:-.02em}.stat__unit{font-size:18px;font-weight:600;color:var(--muted)}.stat__lbl{font-size:12.5px;color:var(--muted);margin-top:4px}.rail__split{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding-top:12px;border-top:1px solid var(--border)}.stat--sm .stat__big{font-size:24px}.rail__student{display:flex;align-items:center;gap:10px;margin-bottom:14px;cursor:pointer}.rail__student-txt{display:flex;flex-direction:column;line-height:1.3}.rail__student-txt strong{font-size:14px}.rail__student-txt span{font-size:12.5px;color:var(--c-debt)}.student-balance{display:flex;flex-direction:column;gap:4px;background:var(--surf-2);border-radius:var(--r);padding:14px 16px}.student-balance--compact{padding:0;background:none}.student-balance__net{margin:0;font-size:22px;font-weight:700;line-height:1.15;letter-spacing:-.02em}.student-balance--compact .student-balance__net{font-size:18px}.student-balance__net--credit{color:var(--c-credit)}.student-balance__net--debt{color:var(--c-debt)}.student-balance__net--even{color:var(--text)}.student-balance__secondary{margin:0;font-size:12px;color:var(--muted);font-weight:600}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c140c6b;z-index:40}.drawer{position:fixed;top:0;right:0;bottom:0;width:400px;max-width:92vw;background:var(--surf);border-left:1px solid var(--border);box-shadow:var(--sh-lg);z-index:41;padding:22px;overflow:auto;display:flex;flex-direction:column;gap:20px;opacity:1;animation:slidein .28s cubic-bezier(.2,.8,.2,1)}@keyframes slidein{0%{transform:translate(36px)}}.drawer__head{display:flex;align-items:center;gap:13px}.drawer__head-txt{flex:1;min-width:0}.drawer__head-txt h3{font-size:19px}.drawer__sub{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:6px;margin-top:2px}.drawer__time{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--surf-2);border-radius:var(--r);padding:13px 14px}.drawer__k{font-size:12px;color:var(--muted);font-weight:600;display:block;margin-bottom:5px}.drawer__v{font-size:14px;font-weight:550}.drawer__row{display:flex;flex-direction:column}.drawer__row .seg{margin-top:2px}.drawer__row--pay{flex-direction:row;align-items:center;justify-content:space-between}.drawer__price{font-size:17px;font-weight:700}.drawer__note p{margin:4px 0 0;font-size:14px;color:var(--text);background:var(--surf-2);padding:12px 14px;border-radius:var(--r);line-height:1.5}.drawer__balance{display:flex;flex-direction:column;gap:6px}.drawer__form{display:flex;flex-direction:column;gap:16px}.drawer__actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.drawer__hint{font-size:14px;color:var(--muted);line-height:1.5}.drawer__error{margin:0;font-size:13px;color:var(--c-debt);font-weight:600}.field--recurrence{gap:10px;padding:14px;border-radius:var(--r);background:var(--surf-2)}.recurrence-toggle{display:flex;align-items:center;gap:10px;cursor:pointer;font-weight:600}.recurrence-toggle--inline{font-weight:500}.recurrence-toggle input{width:16px;height:16px;accent-color:var(--c-primary)}.recurrence-toggle__label{font-size:14px}.recurrence-panel{display:flex;flex-direction:column;gap:14px;margin-top:4px}.recurrence-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.recurrence-row__label{font-size:13px;font-weight:600;color:var(--muted);min-width:72px}.recurrence-row__control{flex:1;min-width:140px}.recurrence-row__suffix{font-size:14px;color:var(--text)}.recurrence-row--on{margin:0}.schedule-days{display:flex;flex-direction:column;gap:10px}.schedule-days__row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.schedule-days__btn{width:100%;min-width:0;height:40px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-sm);font:inherit;font-size:clamp(11px,3.2vw,13px);font-weight:700;cursor:pointer;transition:background .14s,border-color .14s,color .14s,box-shadow .14s,opacity .14s}.schedule-days__btn:disabled{opacity:.55;cursor:not-allowed}.schedule-days__label{line-height:1}.schedule-days__btn.is-on{background:var(--c-primary);border:1px solid var(--c-primary);color:#fff;box-shadow:var(--sh-sm)}.schedule-days__btn.is-on:focus,.schedule-days__btn.is-on:focus-visible{outline:none;background:var(--c-primary);border-color:var(--c-primary);color:#fff}.schedule-days__btn.is-on:focus-visible{box-shadow:var(--sh-sm),0 0 0 3px #3472be47}@media(hover:hover)and (pointer:fine){.schedule-days__btn.is-on:hover:not(:disabled){background:var(--c-primary-ink);border-color:var(--c-primary-ink)}}.schedule-days__btn.is-off{background:var(--surf-2);border:1.5px dashed var(--border-strong);color:var(--faint)}.schedule-days__btn.is-off .schedule-days__label{text-decoration:line-through;text-decoration-color:color-mix(in oklch,var(--faint),transparent 25%)}.schedule-days__btn.is-off:focus,.schedule-days__btn.is-off:focus-visible{outline:none;background:var(--surf-2);border:1.5px dashed var(--border-strong);color:var(--faint)}.schedule-days__btn.is-off:focus .schedule-days__label,.schedule-days__btn.is-off:focus-visible .schedule-days__label{text-decoration:line-through}@media(hover:hover)and (pointer:fine){.schedule-days__btn.is-off:hover:not(:disabled){border-style:solid;border-color:color-mix(in oklch,var(--c-primary) 45%,var(--border));color:var(--muted);background:var(--surf)}.schedule-days__btn.is-off:hover:not(:disabled) .schedule-days__label{text-decoration:none}}.recurrence-days{display:flex;gap:6px;flex-wrap:wrap}.recurrence-days__btn{width:36px;height:36px;border:1px solid var(--border);border-radius:8px;background:var(--surf);font:inherit;font-size:13px;font-weight:700;color:var(--muted);cursor:pointer;transition:.14s}.recurrence-days__btn:hover{color:var(--text);border-color:color-mix(in oklch,var(--c-primary) 40%,var(--border))}.recurrence-days__btn.is-active{background:color-mix(in oklch,var(--c-primary) 18%,var(--surf));border-color:var(--c-primary);color:var(--c-primary-ink, var(--text));box-shadow:var(--sh-sm)}.recurrence-end{display:flex;flex-direction:column;gap:8px}.recurrence-end__date{max-width:180px}.ev-recur{flex-shrink:0;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;opacity:.75}.drawer__row--series{gap:6px}.drawer__series{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:var(--muted)}.recur-list{display:flex;flex-direction:column;gap:20px}.recur-list__title{margin:0 0 10px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.recur-row{display:flex;flex-direction:column;gap:12px;padding:14px;border:1px solid var(--border);border-radius:var(--r);background:var(--surf-2)}.recur-row--paused{opacity:.72}.recur-row__main{display:flex;align-items:flex-start;gap:12px}.recur-row__txt{display:flex;flex-direction:column;gap:3px;min-width:0}.recur-row__txt strong{font-size:15px}.recur-row__txt span{font-size:13px;color:var(--muted)}.recur-row__meta{font-size:12px!important}.recur-row__actions{display:flex;flex-wrap:wrap;gap:8px}.load-error{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 16px 0;padding:10px 14px;border-radius:10px;background:color-mix(in oklch,var(--c-debt) 12%,var(--surface));border:1px solid color-mix(in oklch,var(--c-debt) 35%,transparent)}.load-error p{margin:0;font-size:13px;font-weight:600;color:var(--c-debt)}.drawer--wide{width:440px}.drawer.drawer--student{width:min(440px,92vw);padding:0;gap:0;display:block;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.student-drawer__hero{--student-hue: 250;position:sticky;top:0;z-index:3;display:flex;align-items:flex-start;gap:14px;padding:20px 18px 18px;border-bottom:1px solid var(--border);background:linear-gradient(165deg,color-mix(in oklch,oklch(.72 .11 var(--student-hue)),var(--surf) 78%) 0%,var(--surf) 58%)}.student-drawer__avatar{flex-shrink:0;box-shadow:var(--sh-sm)}.student-drawer__hero-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}.student-drawer__name{width:100%;border:none;background:transparent;font:inherit;font-size:20px;font-weight:700;letter-spacing:-.02em;line-height:1.2;color:var(--text);padding:0}.student-drawer__name::placeholder{color:color-mix(in oklch,var(--muted),transparent 20%)}.student-drawer__name:focus{outline:none;box-shadow:0 2px 0 0 var(--c-primary)}.seg--student-kind{width:100%}.seg--student-kind .seg__btn{flex:1;font-size:12.5px;padding:7px 10px}.student-drawer__close{flex-shrink:0;margin:-4px -6px 0 0}.student-drawer__form{display:block}.student-drawer__scroll{padding:16px 18px 12px;display:flex;flex-direction:column;gap:12px;min-width:0}.student-drawer__footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px 18px calc(14px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border);background:var(--surf)}.student-drawer__footer-end{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.drawer--student .seg--balance-kind,.drawer--student .seg--student-kind{min-width:0;width:100%;box-sizing:border-box}.drawer--student .drawer-panel .seg{max-width:100%}.student-drawer__error{margin:0}.drawer-panel{background:var(--surf);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-sm);overflow:hidden;min-width:0;flex-shrink:0}.drawer-panel__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--border);background:var(--surf-2);border-radius:calc(var(--r-lg) - 1px) calc(var(--r-lg) - 1px) 0 0}.drawer-panel--balance .drawer-panel__body .student-balance{background:var(--surf-2);border:1px solid var(--border)}.drawer-panel__title{margin:0;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.drawer-panel__body{padding:14px;display:flex;flex-direction:column;gap:12px;min-width:0}.drawer-panel__hint{margin:0;font-size:13px;line-height:1.45;color:var(--muted)}.drawer-panel__grid{display:grid;gap:12px;min-width:0}.drawer-panel__grid--2,.drawer--student .drawer-panel__grid--2{grid-template-columns:1fr}.drawer-panel__grid .field{margin:0;min-width:0}.drawer--student .field__control{box-sizing:border-box;max-width:100%}.student-drawer__hue-row{display:flex;align-items:center;gap:12px}.student-drawer__hue-row .student-drawer__avatar-edit{position:relative;flex-shrink:0;overflow:hidden;align-items:stretch;justify-content:stretch}.student-drawer__hue-row .student-drawer__avatar-input{box-sizing:border-box;display:block;width:100%;min-width:0;height:100%;margin:0;padding:0 2px;border:none;border-radius:inherit;background:transparent;color:#fff;font-size:inherit;font-weight:inherit;line-height:inherit;letter-spacing:inherit;text-align:center;text-transform:uppercase;outline:none;box-shadow:none;transition:none}.student-drawer__hue-row .student-drawer__avatar-input::placeholder{color:#fff;opacity:.72}.student-drawer__hue-row .student-drawer__avatar-input:focus,.student-drawer__hue-row .student-drawer__avatar-input:focus-visible{border:none;outline:none;box-shadow:inset 0 0 0 2px #fff9}.student-drawer__hue-row .field__control--hue{flex:1;min-width:0}.drawer-spoiler{background:var(--surf);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-sm);overflow:hidden;min-width:0;flex-shrink:0}.drawer-spoiler__summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:var(--surf-2);cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none}.drawer-spoiler__summary::-webkit-details-marker{display:none}.drawer-spoiler__title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.drawer-spoiler[open] .drawer-spoiler__title{color:var(--text)}.drawer-spoiler__summary:after{content:"▾";font-size:11px;opacity:.6;transition:transform .15s;flex-shrink:0}.drawer-spoiler[open] .drawer-spoiler__summary:after{transform:rotate(180deg)}.drawer-spoiler__body{padding:14px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:12px;min-width:0}.balance-manual--panel{margin:0;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surf-2);overflow:hidden}.balance-manual--panel .balance-manual__body{padding:0 12px 12px}.balance-manual--panel[open] .balance-manual__summary{border-radius:calc(var(--r-sm) - 1px) calc(var(--r-sm) - 1px) 0 0}.student-drawer-lessons{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}.student-drawer-lesson{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;background:var(--surf-2);border:1px solid var(--border);border-radius:var(--r-sm)}.student-drawer-lesson__main{display:flex;flex-direction:column;gap:6px;min-width:0}.student-drawer-lesson__when{font-size:13px;font-weight:600;color:var(--text)}.student-drawer-lesson__pay{font-size:12px;font-weight:600;color:var(--muted);flex-shrink:0}.student-drawer-lesson__pay--ok{color:var(--c-credit)}.drawer__section{display:flex;flex-direction:column;gap:12px;padding-top:4px;border-top:1px solid var(--border)}.drawer__section:first-of-type{border-top:none;padding-top:0}.drawer__section-title{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0}.drawer__section-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.drawer__actions--spread{justify-content:space-between;align-items:center}.drawer__actions-end{display:flex;gap:10px}.field--row{flex-direction:row;align-items:center;gap:10px}.field--row .field__label{margin:0}.field--inline{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field__control--hue{padding:0;accent-color:var(--c-primary)}.btn--danger{color:var(--c-debt)}.btn--danger:hover{background:color-mix(in oklch,var(--c-debt),transparent 90%)}.confirm .btn--danger{background:var(--c-debt);color:#fff;border-color:transparent;box-shadow:var(--sh-sm)}.confirm .btn--danger:hover{background:#c13d34;color:#fff}.confirm .btn--danger .spinner{border-color:#fff6;border-top-color:#fff}.confirm-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:20px;animation:confirm-in .2s ease}.confirm-layer__scrim{position:absolute;top:0;right:0;bottom:0;left:0;border:none;padding:0;background:#110a038c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);cursor:pointer}.confirm{position:relative;width:min(400px,100%);padding:24px 24px 20px;background:var(--surf);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-lg);text-align:center;animation:confirm-pop .28s cubic-bezier(.2,.8,.2,1)}.confirm__icon{width:52px;height:52px;margin:0 auto 14px;display:grid;place-items:center;border-radius:50%;background:var(--surf-2);color:var(--muted)}.confirm--danger .confirm__icon{background:color-mix(in oklch,var(--c-debt) 14%,var(--surf));color:var(--c-debt)}.confirm__title{font-size:18px;margin:0 0 8px}.confirm__desc{margin:0 0 22px;font-size:14px;line-height:1.55;color:var(--muted)}.confirm__balance{margin:-10px 0 20px;padding:12px 14px;text-align:left;border-radius:var(--r);background:var(--surf-2);border:1px solid var(--border)}.confirm__balance-note,.confirm__balance-hint{margin:0 0 10px;font-size:13px;line-height:1.5;color:var(--muted)}.confirm__balance-hint{margin-bottom:0}.confirm__balance-opt{display:flex;align-items:flex-start;gap:10px;font-size:14px;line-height:1.45;cursor:pointer}.confirm__balance-opt input{margin-top:3px;flex-shrink:0}.confirm__balance-opt--spaced{margin-top:10px}.confirm__actions{display:flex;justify-content:center;gap:10px}.confirm__actions .btn{min-width:112px}@keyframes confirm-in{0%{opacity:0}to{opacity:1}}@keyframes confirm-pop{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.replenish{width:min(420px,100%);text-align:left;padding:22px 22px 18px}.replenish__head{margin-bottom:14px;text-align:center}.replenish__title{font-size:18px;margin:0 0 4px}.replenish__student{margin:0;font-size:14px;color:var(--muted)}.replenish__balance{margin-bottom:14px;padding:10px 12px;border-radius:var(--r);background:var(--surf-2);border:1px solid var(--border)}.replenish__kind{margin-bottom:12px}.replenish__kind .seg--balance-kind{width:100%}.replenish__kind .seg--balance-kind .seg__btn{flex:1}.replenish__field{margin:0}.replenish__input{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.replenish__presets{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.replenish__preset{padding:6px 12px;border:1px solid var(--border);border-radius:999px;background:var(--surf-2);font:inherit;font-size:13px;cursor:pointer;transition:.12s}.replenish__preset:hover{border-color:var(--c-primary)}.replenish__preset.is-active{background:color-mix(in oklch,var(--c-primary),transparent 88%);border-color:var(--c-primary);color:var(--c-primary);font-weight:600}.replenish__preview{margin:12px 0 0;font-size:13px;line-height:1.5;color:var(--muted)}.replenish__preview strong{color:var(--text)}.replenish__preview-sub{display:block;margin-top:2px;font-size:12px}.replenish__hint{margin:10px 0 0;font-size:12.5px;line-height:1.45;color:var(--muted)}.replenish__error{margin:10px 0 0;font-size:13px;color:var(--c-debt);font-weight:600}.replenish__actions{margin-top:18px;justify-content:flex-end}.replenish-layer{z-index:60}.replenish__received{margin-top:12px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surf-2);padding:0 12px}.replenish__received-summary{cursor:pointer;font-size:13px;color:var(--muted);padding:10px 0;list-style:none}.replenish__received-summary::-webkit-details-marker{display:none}.replenish__received[open] .replenish__received-summary{color:var(--text)}.replenish__received-field{margin:0 0 12px}.student-drawer-tax-opt{display:flex;align-items:flex-start;gap:10px;margin-top:12px;font-size:14px;line-height:1.4;cursor:pointer}.student-drawer-tax-opt input{accent-color:var(--c-primary);margin-top:2px}.balance-manual{margin-top:4px;border:1px solid var(--border);border-radius:var(--r);background:var(--surf-2)}.balance-manual__summary{padding:10px 14px;font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none}.balance-manual__summary::-webkit-details-marker{display:none}.balance-manual__summary:after{content:"▾";float:right;font-size:11px;opacity:.6;transition:transform .15s}.balance-manual[open] .balance-manual__summary:after{transform:rotate(180deg)}.balance-manual[open] .balance-manual__summary{color:var(--text)}.balance-manual__body{padding:0 14px 14px;border-top:1px solid var(--border)}.balance-manual__hint{margin:10px 0 12px}.students-board{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:24px 28px 36px}.students-page{width:100%;max-width:720px;margin:0 auto;display:flex;flex-direction:column;gap:16px;padding-bottom:4px}.students-toolbar{padding:12px 14px;background:var(--surf);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-sm)}.students-toolbar__row{display:flex;align-items:stretch;gap:8px}.students-toolbar__search{flex:1;min-width:0;box-sizing:border-box;font:inherit;font-size:14px;padding:9px 11px;border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surf);color:var(--text);transition:border-color .15s,box-shadow .15s}.students-toolbar__add{flex-shrink:0;width:44px;min-width:44px;padding:0;font-size:22px;font-weight:600;line-height:1}.students-toolbar__search::placeholder{color:var(--muted)}.students-toolbar__search:focus{outline:none;border-color:var(--c-primary);box-shadow:0 0 0 3px var(--c-primary-weak)}.students-page__foot{margin-top:8px;padding-top:4px}.ornamental-divider{display:flex;align-items:center;gap:10px;width:100%;color:color-mix(in oklch,var(--muted),var(--border-strong) 45%);margin:0 0 16px}.ornamental-divider__rule{flex:1;height:1px;min-width:16px;background:linear-gradient(to right,transparent 0%,color-mix(in oklch,var(--border-strong),var(--muted) 40%) 18%,color-mix(in oklch,var(--border-strong),var(--muted) 40%) 100%)}.ornamental-divider__rule--r{background:linear-gradient(to left,transparent 0%,color-mix(in oklch,var(--border-strong),var(--muted) 40%) 18%,color-mix(in oklch,var(--border-strong),var(--muted) 40%) 100%)}.ornamental-divider__ornament{display:block;width:76px;height:40px;flex-shrink:0}.students-page__count{margin:0;text-align:center;font-size:13px;color:var(--muted);font-weight:600;letter-spacing:.02em}.students-feed{min-width:0}.students-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;min-height:200px;padding:48px 20px;color:var(--muted);text-align:center}.students-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.student-card{display:flex;flex-direction:row;align-items:center;gap:10px;padding:12px 12px 12px 14px;background:var(--surf);border:1px solid var(--border);border-radius:var(--r);transition:box-shadow .14s,transform .14s}.student-card:hover{box-shadow:var(--sh);transform:translateY(-1px)}.student-card__open{flex:1;min-width:0;border:none;background:none;font:inherit;text-align:left;padding:0;cursor:pointer}.student-card__settings{flex-shrink:0;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surf-2);color:var(--muted);cursor:pointer;transition:background .14s,border-color .14s,color .14s}.student-card__settings:hover{background:var(--surf);border-color:var(--border-strong);color:var(--text)}.student-card__settings svg{display:block}.student-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.student-card__who{display:inline-flex;align-items:center;gap:10px;min-width:0;flex:1}.student-card__txt{display:flex;flex-direction:column;gap:2px;min-width:0}.student-card__name{font-size:15px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-card__meta{font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-card__balance{font-size:15px;font-weight:700;flex-shrink:0}.student-card__balance--credit{color:var(--c-credit)}.student-card__balance--debt{color:var(--c-debt)}.seg--academic-units,.seg--balance-kind{width:100%}.seg--academic-units .seg__btn,.seg--balance-kind .seg__btn{flex:1}.settings-board{flex:1;overflow:auto;padding:20px clamp(16px,2.5vw,32px) 28px;display:flex;flex-direction:column;gap:16px;width:100%}.settings-board__error{margin:0;max-width:1280px;font-size:13px;color:var(--c-debt);font-weight:600}.settings-board__ok{margin:0;max-width:1280px;font-size:13px;color:var(--c-credit);font-weight:600}.settings-grid{display:grid;gap:16px;grid-template-columns:1fr;width:100%;max-width:1280px;align-items:stretch}.settings-version{width:100%;max-width:1280px;margin-top:8px;padding-bottom:8px}.settings-version__divider{margin:8px 0 14px}.settings-version__btn{display:flex;flex-direction:column;align-items:center;gap:3px;width:100%;border:none;background:none;font:inherit;cursor:pointer;padding:4px 8px 0;color:var(--muted);transition:color .14s}.settings-version__btn:hover{color:var(--text)}.settings-version__btn:focus-visible{outline:2px solid var(--c-primary);outline-offset:4px;border-radius:var(--r-sm)}.settings-version__name{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}.settings-version__btn:hover .settings-version__name{color:var(--muted)}.settings-version__meta{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}.changelog-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:20px 16px}.changelog-layer__scrim{position:absolute;top:0;right:0;bottom:0;left:0;border:none;background:#1c140c6b;cursor:pointer}.changelog{position:relative;width:min(440px,100%);max-height:min(78dvh,640px);display:flex;flex-direction:column;background:var(--surf);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-lg);overflow:hidden}.changelog__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 16px 12px 18px;border-bottom:1px solid var(--border);flex-shrink:0}.changelog__title{margin:0;font-size:18px}.changelog__close{flex:none;margin:-4px -6px 0 0}.changelog__body{overflow-y:auto;padding:14px 18px 18px;display:flex;flex-direction:column;gap:18px}.changelog__release{display:flex;flex-direction:column;gap:8px}.changelog__release-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px 10px}.changelog__version{margin:0;font-size:15px;font-weight:700}.changelog__date{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}.changelog__badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:99px;background:var(--c-primary-weak);color:var(--c-primary-ink)}.changelog__release--current .changelog__version{color:var(--c-primary-ink)}.changelog__list{margin:0;padding:0 0 0 18px;display:flex;flex-direction:column;gap:6px;font-size:14px;line-height:1.4;color:var(--text)}.changelog__list li::marker{color:var(--c-primary)}@media(min-width:640px){.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1024px){.settings-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.archive-page__back{display:inline-block;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:6px;text-decoration:none}.archive-page__back:hover{color:var(--text)}.top__sub{font-size:14px;color:var(--muted);margin:6px 0 0;line-height:1.45;max-width:36rem}.archive-board{flex:1;overflow:auto;padding:16px 24px 28px}.archive-board__hint{color:var(--muted);font-size:14px}.archive-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;max-width:480px}.archive-row{display:flex;align-items:center;gap:12px;width:100%;padding:14px 16px;border:1px solid var(--border);border-radius:var(--r);background:var(--surf);text-align:left;font:inherit;cursor:pointer;transition:box-shadow .16s,transform .16s}.archive-row:hover{box-shadow:var(--sh);transform:translateY(-1px)}.archive-row__txt{display:flex;flex-direction:column;gap:2px;min-width:0}.archive-row__name{font-size:15px}.archive-row__meta{font-size:13px;color:var(--muted)}.student-drawer__scroll{border:none;margin:0;padding:0;min-width:0}.student-drawer-payments{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.settings-card{display:flex;flex-direction:column;min-height:0;min-width:0;background:var(--surf);border:1px solid var(--border);border-radius:var(--r);padding:20px 22px;box-shadow:var(--sh)}.settings-card__head{display:flex;align-items:center;gap:12px;margin-bottom:10px}.settings-card__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--r-sm);background:color-mix(in oklch,var(--c-primary),transparent 88%);color:var(--c-primary)}.settings-card__head .settings-card__title{font-size:17px;margin:0;line-height:1.25}.settings-card__icon--muted{background:color-mix(in oklch,var(--muted),transparent 82%);color:var(--muted)}.settings-card--muted{border-style:dashed;background:color-mix(in oklch,var(--surf-2),var(--surf) 55%);box-shadow:none}.settings-card__badge{margin:auto 0 0;align-self:flex-start;padding:5px 12px;border-radius:99px;font-size:12px;font-weight:700;letter-spacing:.02em;color:var(--muted);background:var(--surf-2);border:1px solid var(--border)}.settings-card__desc{flex:1;font-size:14px;color:var(--muted);line-height:1.5;margin:0 0 14px}.settings-card__hint{font-size:13px;font-weight:600;margin:0 0 14px;color:var(--text)}.settings-card__seg{width:100%;margin-top:auto}.settings-card__seg .seg--balance-kind{width:100%}.settings-card__seg .seg--balance-kind .seg__btn{flex:1}.settings-card__foot{margin-top:auto;padding-top:4px}.settings-presets{display:flex;flex-wrap:wrap;width:100%;margin:0}.settings-card .settings-presets{margin-top:auto}.settings-presets .seg__btn{flex:1 1 calc(33.333% - 3px);min-width:4.25rem}.settings-custom{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;margin-top:12px;width:100%}.settings-custom .field{flex:1;min-width:120px;margin:0}.toggle{display:inline-flex;align-items:center;gap:9px;border:1px solid var(--border-strong);background:var(--surf-2);border-radius:99px;padding:5px 13px 5px 6px;font:inherit;font-size:13px;font-weight:600;color:var(--muted);transition:.16s}.toggle__knob{width:16px;height:16px;border-radius:50%;background:var(--c-debt);transition:.16s}.toggle.is-on{background:color-mix(in oklch,var(--c-credit),transparent 85%);border-color:color-mix(in oklch,var(--c-credit),transparent 50%);color:var(--c-credit)}.toggle.is-on .toggle__knob{background:var(--c-credit)}.toggle--disabled{opacity:.72;cursor:not-allowed;pointer-events:none}.drawer__pay-hint{display:block;font-size:12px;color:var(--muted);margin-top:4px;max-width:220px;line-height:1.35}.payments-board{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:24px 28px 36px}.pay-journal-page{width:100%;max-width:1040px;margin:0 auto;display:flex;flex-direction:column;gap:16px;padding-bottom:4px}.pay-toolbar{display:flex;flex-direction:column;gap:14px;padding:14px 16px;background:var(--surf);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-sm)}.pay-toolbar__fields{display:flex;flex-direction:column;gap:14px}.pay-toolbar__field{display:flex;flex-direction:column;gap:8px;min-width:0}.pay-toolbar__lbl{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;line-height:1.2}.pay-toolbar__field--period .period-picker{width:100%;min-width:0}.pay-toolbar__bar{display:flex;flex-direction:column;align-items:stretch;gap:10px;padding-top:2px;border-top:1px solid var(--border)}.pay-toolbar__range{margin:0;font-size:13px;color:var(--muted);font-weight:600;line-height:1.4}.pay-toolbar__replenish{align-self:stretch}@media(min-width:720px){.pay-toolbar{padding:18px 20px;gap:12px}.pay-toolbar__fields{flex-direction:row;align-items:flex-start;gap:20px 24px}.pay-toolbar__field--student{flex:0 1 280px;width:min(300px,100%)}.pay-toolbar__field--period{flex:1;min-width:0}.pay-toolbar__bar{flex-direction:row;align-items:center;justify-content:space-between;gap:16px;padding-top:12px}.pay-toolbar__replenish{align-self:center;flex-shrink:0}}.picker{position:relative;width:100%}.picker__trigger{width:100%;display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surf);font:inherit;text-align:left;cursor:pointer;transition:border-color .15s,box-shadow .15s}.picker__trigger:hover{border-color:color-mix(in oklch,var(--c-primary),var(--border) 70%)}.picker--open .picker__trigger{border-color:var(--c-primary);box-shadow:0 0 0 3px var(--c-primary-weak)}.picker-avatar svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}.picker__value{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.picker__name{font-size:14.5px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.picker__hint{font-size:12px;color:var(--muted)}.picker__chev{color:var(--muted);font-size:12px;margin-left:4px;transition:transform .15s}.picker--open .picker__chev{transform:rotate(180deg)}.picker__panel{position:absolute;z-index:40;top:calc(100% + 6px);left:0;right:0;background:var(--surf);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--sh);overflow:hidden}.picker__search{padding:8px;border-bottom:1px solid var(--border)}.picker__search-input{padding:9px 11px;font-size:14px}.picker__list{list-style:none;margin:0;padding:6px;max-height:280px;overflow:auto}.picker__item{width:100%;display:flex;align-items:center;gap:10px;padding:9px 10px;border:none;border-radius:var(--r-sm);background:none;font:inherit;text-align:left;cursor:pointer;transition:background .12s}.picker__item:hover{background:var(--surf-2)}.picker__item.is-active{background:var(--c-primary-weak)}.picker__item-name{font-size:14px;font-weight:600}.picker__empty{padding:12px 10px;font-size:13px;color:var(--muted)}.period-picker{display:flex;flex-direction:column;gap:10px;min-width:0;width:100%}.seg--period{width:100%;flex-wrap:wrap}.seg--period .seg__btn{flex:1;min-width:0;white-space:nowrap}.period-picker__custom{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.period-picker__date{display:flex;align-items:center;gap:8px;flex:1;min-width:140px}.period-picker__date-lbl{font-size:13px;font-weight:600;color:var(--muted);flex:none}.period-picker__input{padding:9px 11px;font-size:14px;min-width:0}.period-picker__dash{color:var(--muted);font-weight:600}.pay-summary{display:flex;flex-wrap:wrap;align-items:center;gap:20px 28px;padding:16px 20px;background:var(--surf);border:1px solid var(--border);border-radius:var(--r-lg)}.pay-summary__stats{display:flex;flex-wrap:wrap;gap:20px 28px;flex:1;min-width:0}.pay-summary__stat{display:flex;flex-direction:column;gap:4px;min-width:72px}.pay-summary__stat-lbl{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.pay-summary__stat-val{font-size:18px;font-weight:700;letter-spacing:-.02em}.pay-summary__stat-val--muted{font-size:16px;color:var(--text);font-weight:650}.pay-summary__mixed-hint{margin:0;font-size:13px;line-height:1.4;color:var(--muted);max-width:28rem}.pay-journal-error{color:var(--c-debt);font-size:14px;margin:0;padding:0 4px}.pay-journal-empty{color:var(--muted);font-size:15px;margin:0;padding:48px 20px;text-align:center}.pay-journal-feed{min-width:0}.pay-journal-list{display:none}.pay-entry{padding:14px 16px;background:var(--surf);border:1px solid var(--border);border-radius:var(--r)}.pay-entry__head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}.pay-entry__when{font-size:13px;color:var(--muted);line-height:1.35;flex:1;min-width:0}.pay-entry__student{display:inline-flex;align-items:center;gap:10px;margin-bottom:12px;min-width:0;max-width:100%}.pay-entry__student-name{font-size:14px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pay-entry__amounts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0}.pay-entry__amount{display:flex;flex-direction:column;gap:3px;padding:10px;background:var(--surf-2);border-radius:var(--r-sm);min-width:0}.pay-entry__amount dt{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.pay-entry__amount dd{margin:0;font-size:14px;font-weight:650;overflow:hidden;text-overflow:ellipsis}.pay-entry__amount--net dd{font-weight:700}.pay-journal-table-wrap{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surf);overflow:auto;box-shadow:var(--sh-sm)}.pay-journal-table{width:100%;border-collapse:collapse;font-size:14px;table-layout:fixed}.pay-journal-table th,.pay-journal-table td{padding:13px 16px;text-align:left;border-bottom:1px solid var(--border);vertical-align:middle}.pay-journal-table th{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:var(--surf-2);position:sticky;top:0;z-index:1}.pay-journal-table th:nth-child(1),.pay-journal-table td:nth-child(1){width:148px}.pay-journal-table__num{text-align:right;white-space:nowrap}.pay-journal-table tbody tr{transition:background .12s}.pay-journal-table tbody tr:hover{background:color-mix(in oklch,var(--surf-2),transparent 40%)}.pay-journal-table tbody tr:last-child td{border-bottom:none}.pay-journal-table__when{color:var(--muted);font-size:13px;white-space:nowrap}.pay-journal-table__delta{color:var(--text);font-weight:600}.pay-journal-table__net{font-weight:700;color:var(--text)}.pay-op{display:inline-block;font-size:13px;font-weight:650;padding:4px 10px;border-radius:99px;line-height:1.2}.pay-op--credit{color:var(--c-credit);background:color-mix(in oklch,var(--c-credit),transparent 88%)}.pay-op--debt{color:var(--c-debt);background:color-mix(in oklch,var(--c-debt),transparent 88%)}.pay-op--neutral{color:var(--muted);background:var(--surf-2)}.pay-op--manual{color:var(--c-primary-ink);background:var(--c-primary-weak)}.tax-journal-page{display:flex;flex-direction:column;gap:16px;min-width:0}.tax-journal-feed{min-width:0}.tax-summary-inline{margin:0;font-size:13px;color:var(--muted);font-weight:550}.month-picker{display:flex;align-items:center;gap:6px;min-width:0}.month-picker__nav{flex-shrink:0;width:36px;height:36px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surf);color:var(--text);font-size:18px;line-height:1;cursor:pointer}.month-picker__nav:hover{background:var(--surf-2)}.month-picker__field{position:relative;flex:1;min-width:0}.month-picker__input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;width:100%;height:100%;cursor:pointer}.month-picker__label{display:block;padding:8px 14px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surf);font-size:14px;font-weight:600;text-align:center;white-space:nowrap;pointer-events:none}.month-picker__sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.tax-journal-table-wrap{overflow:auto;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surf);box-shadow:var(--sh-sm)}.tax-journal-table{width:100%;border-collapse:collapse;font-size:14px;table-layout:fixed;min-width:720px}.tax-journal-table th,.tax-journal-table td{padding:12px 14px;border-bottom:1px solid var(--border);vertical-align:middle;text-align:left}.tax-journal-table th{font-size:12px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;background:var(--surf-2);position:sticky;top:0;z-index:1}.tax-journal-table__num{text-align:right;white-space:nowrap}.tax-journal-table__num--err{color:var(--c-debt);font-size:12px;font-weight:550}.tax-journal-table__when{color:var(--muted);font-size:13px;white-space:nowrap;width:148px}.tax-journal-table__tax{width:108px}.tax-journal-table__comment{min-width:180px}.tax-journal-table tbody tr{transition:background .12s}.tax-journal-table tbody tr:hover{background:color-mix(in oklch,var(--surf-2),transparent 40%)}.tax-journal-table tbody tr:last-child td{border-bottom:none}.tax-journal-table__row--saving{opacity:.65}.tax-check{display:inline-flex;align-items:center;gap:8px;font-size:13px;cursor:pointer;white-space:nowrap}.tax-check input{accent-color:var(--c-primary)}.tax-comment-input{width:100%;min-width:0;font-size:14px}.tax-date-btn{border:none;background:none;padding:0;font:inherit;font-size:13px;color:var(--text);cursor:pointer;text-decoration:underline dotted transparent}.tax-date-btn:hover:not(:disabled){text-decoration-color:var(--c-primary);color:var(--c-primary)}.tax-date-btn:disabled{opacity:.6;cursor:wait}.tax-date-input{font-size:13px;max-width:148px}.analytics-board{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:24px 28px 36px}.analytics-page{width:100%;max-width:1120px;margin:0 auto;display:flex;flex-direction:column;gap:16px;padding-bottom:4px}.analytics-toolbar__meta{margin:0;font-size:13px;color:var(--muted);font-weight:550}.analytics-page__body{min-width:0}.analytics-page__loading{color:var(--muted);font-size:15px;margin:0;padding:48px 20px;text-align:center}.analytics-kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.analytics-kpi{display:flex;flex-direction:column;gap:6px;padding:16px 18px;background:var(--surf);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-sm);min-width:0;position:relative;overflow:hidden}.analytics-kpi:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--border-strong);opacity:.55}.analytics-kpi--primary:before{background:var(--c-primary);opacity:1}.analytics-kpi--credit:before{background:var(--c-credit);opacity:1}.analytics-kpi--debt:before{background:var(--c-debt);opacity:1}.analytics-kpi--amber:before{background:var(--c-amber);opacity:1}.analytics-kpi__lbl{font-size:11px;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.analytics-kpi__val{font-size:28px;font-weight:600;letter-spacing:-.03em;line-height:1}.analytics-kpi__hint{font-size:12.5px;font-weight:400;color:var(--muted);line-height:1.35}.analytics-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.analytics-panel{display:flex;flex-direction:column;gap:16px;padding:18px 20px;background:var(--surf);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-sm);min-width:0}.analytics-panel__head{display:flex;flex-direction:column;gap:4px}.analytics-panel__title{margin:0;font-size:15px;font-weight:500;letter-spacing:-.01em;color:var(--text)}.analytics-panel__sub{margin:0;font-size:13px;font-weight:400;color:var(--muted)}.analytics-panel__empty{margin:0;padding:24px 8px;text-align:center;color:var(--muted);font-size:14px}.analytics-bars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.analytics-bars__row{display:grid;grid-template-columns:52px 1fr auto;align-items:center;gap:10px}.analytics-bars__lbl{font-size:12px;font-weight:400;color:var(--muted)}.analytics-bars__track{height:10px;border-radius:99px;background:var(--surf-2);overflow:hidden}.analytics-bars__fill{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--c-primary),color-mix(in oklch,var(--c-primary),white 18%));min-width:4px;transition:width .35s ease}.analytics-income__total{margin:0}.analytics-income-list{list-style:none;margin:0;padding:12px 0 0;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px}.analytics-income-list__row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:14px}.analytics-income-list__lbl{color:var(--muted);font-weight:400}.analytics-income-list__val{font-weight:500;color:var(--text);flex-shrink:0}.analytics-bars__val{font-size:14px;font-weight:500;white-space:nowrap;display:flex;align-items:baseline;gap:4px}.analytics-bars__unit,.analytics-bars__secondary{font-size:11px;font-weight:600;color:var(--muted)}.analytics-stack{display:flex;height:12px;border-radius:99px;overflow:hidden;background:var(--surf-2)}.analytics-stack__seg{min-width:2px}.analytics-stack__seg--primary{background:var(--c-primary)}.analytics-stack__seg--credit{background:var(--c-credit)}.analytics-stack__seg--debt{background:var(--c-debt)}.analytics-stack__seg--muted{background:var(--faint)}.analytics-legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.analytics-legend__item{display:grid;grid-template-columns:12px 1fr auto;align-items:center;gap:10px}.analytics-legend__dot{width:10px;height:10px;border-radius:99px}.analytics-legend__dot--primary{background:var(--c-primary)}.analytics-legend__dot--credit{background:var(--c-credit)}.analytics-legend__dot--debt{background:var(--c-debt)}.analytics-legend__dot--muted{background:var(--faint)}.analytics-legend__lbl{font-size:13.5px;font-weight:600}.analytics-legend__val{font-size:14px;font-weight:700;display:flex;align-items:baseline;gap:8px}.analytics-legend__pct{font-size:12px;font-weight:650;color:var(--muted)}.analytics-finance{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.analytics-finance__card{padding:14px 16px;border-radius:var(--r);background:var(--surf-2);border:1px solid color-mix(in oklch,var(--border),transparent 30%)}.analytics-finance__head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.analytics-finance__cur{font-size:13px;font-weight:800;letter-spacing:.06em;color:var(--c-primary-ink)}.analytics-finance__count{font-size:12px;color:var(--muted);font-weight:600}.analytics-finance__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0}.analytics-finance__item{display:flex;flex-direction:column;gap:4px;min-width:0}.analytics-finance__item dt{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.analytics-finance__item dd{margin:0}.analytics-finance__val{font-size:15px;font-weight:700}.analytics-finance__val--credit{color:var(--c-credit)}.analytics-finance__val--debt{color:var(--c-debt)}.analytics-rank-wrap{border:1px solid var(--border);border-radius:var(--r);overflow:auto;background:var(--surf-2)}.analytics-rank{width:100%;border-collapse:collapse;font-size:14px}.analytics-rank th,.analytics-rank td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--border)}.analytics-rank th{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:color-mix(in oklch,var(--surf-2),var(--surf) 40%)}.analytics-rank tbody tr:last-child td{border-bottom:none}.analytics-rank tbody tr:hover{background:color-mix(in oklch,var(--surf),transparent 50%)}.analytics-rank__num{text-align:right;white-space:nowrap}.analytics-rank__student{display:inline-flex;align-items:center;gap:10px;min-width:0}.analytics-rank__avatar{flex:none}.analytics-rank__name{display:inline-flex;align-items:center;gap:8px;font-weight:650;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.analytics-rank__pos{font-size:11px;font-weight:800;color:var(--muted);width:18px;flex:none}@media(max-width:1180px){.analytics-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:880px){.analytics-board{padding:12px 16px var(--botnav-clearance)}.analytics-page{gap:12px}.analytics-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.analytics-kpi{padding:14px 16px}.analytics-kpi__val{font-size:24px}.analytics-grid{grid-template-columns:1fr;gap:12px}.analytics-bars__row{grid-template-columns:40px 1fr auto;gap:8px}.analytics-finance__grid{grid-template-columns:1fr;gap:12px}.analytics-toolbar__meta{width:100%}.pay-toolbar__bar{flex-wrap:wrap}}.botnav{position:fixed;bottom:0;left:0;right:0;z-index:30;display:grid;grid-template-columns:repeat(var(--botnav-cols, 6),minmax(0,1fr));gap:0;background:var(--surf);border-top:1px solid var(--border);padding:6px 2px calc(6px + env(safe-area-inset-bottom))}.botnav__item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;max-width:100%;border:none;background:none;color:var(--muted);font:inherit;font-size:clamp(8.5px,2.35vw,10.5px);font-weight:600;line-height:1.1;padding:4px 1px;border-radius:8px;text-decoration:none;text-align:center;overflow:hidden;-webkit-tap-highlight-color:transparent}.botnav__item svg{flex:none;width:clamp(17px,4.8vw,20px);height:clamp(17px,4.8vw,20px)}.botnav__item span{display:block;width:100%;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.botnav__item.is-active{color:var(--c-primary)}.app--mobile{grid-template-columns:1fr;height:100dvh;max-height:100dvh;--botnav-clearance: calc(35px + clamp(17px, 4.8vw, 20px) + env(safe-area-inset-bottom, 0px)) }.app--mobile .app__main,.app--mobile .page{overflow-x:hidden}.app--mobile .app__content{grid-template-columns:1fr}.app--mobile .board{padding:16px 16px var(--botnav-clearance)}.app--mobile .students-board,.app--mobile .payments-board,.app--mobile .analytics-board,.app--mobile .settings-board{padding-bottom:var(--botnav-clearance)}.app--mobile .app__content>.board:has(.wg){padding:0;overflow-x:hidden}.app--mobile .page:has(.wg){padding-bottom:var(--botnav-clearance);box-sizing:border-box}.app--mobile .wg{min-height:0}.app--mobile .wg__scroll{flex:1;min-height:0}.app--mobile .wg{--wg-gutter-size: 26px;min-width:0;width:100%}.app--mobile .wg__head{padding-bottom:4px}.app--mobile .wg__day{padding:4px 1px;gap:0}.app--mobile .wg__dow{font-size:9px;letter-spacing:0}.app--mobile .wg__date{font-size:13px;font-weight:700;line-height:1.1}.app--mobile .wg__gutter--rows .wg__hour{font-size:10px;padding-right:3px;font-weight:600}.app--mobile .wg .ev{left:1px;right:1px;padding:4px 3px 3px 5px;gap:2px;border-radius:5px;overflow:hidden}.app--mobile .wg .ev:before{width:2px}.app--mobile .wg .ev .ev__hint{display:none}.app--mobile .wg .ev .ev__head{flex-wrap:wrap;align-items:center;gap:2px;padding-right:12px;justify-content:flex-start}.app--mobile .wg .ev .ev__name{flex:1 1 auto;min-width:0;font-size:10px;font-weight:650;line-height:1.2;text-align:left;white-space:normal;word-break:break-word;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.app--mobile .wg .ev .ev__head svg,.app--mobile .wg .ev .ev__head .ev-type{flex:none;width:10px;height:10px}.app--mobile .wg .ev .ev__time{font-size:9px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app--mobile .wg .ev--tight .ev__name{-webkit-line-clamp:2}.app--mobile .wg .ev--tight .ev__time{display:block}.app--mobile .wg .ev .ev__mark{top:3px;right:3px}.app--mobile .wg .ev .ev__mark svg{width:9px;height:9px}.app--mobile .wg .ev .ev__notes{bottom:3px;right:3px;width:14px;height:14px;border-radius:4px}.app--mobile .wg .ev .ev__notes svg{width:8px;height:8px}.app--mobile .wg .ev--completed .ev__head{padding-right:12px}.app--mobile .wg .ev--has-notes .ev__time{padding-right:16px}.top--schedule{flex-direction:column;align-items:stretch;gap:6px;padding:8px 12px}.top--schedule .top__row--toolbar{display:flex;align-items:center;gap:8px;min-width:0}.top--schedule .weeknav--compact{flex:1;min-width:0;display:flex;align-items:center;gap:2px}.top--schedule .weeknav--compact .weeknav__label{flex:1;min-width:0;text-align:center;font-size:13px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top--schedule .top__actions{display:flex;align-items:center;gap:4px;flex:none}.top--schedule .seg--variant{width:100%}.top--schedule .seg--variant .seg__btn{flex:1;padding:6px 4px;font-size:11px}.app--mobile .top:not(.top--schedule){display:none}.app--mobile .ft{max-width:none}.app--mobile .ft__strip{display:grid;grid-template-columns:repeat(var(--ft-cols, 7),minmax(0,1fr));gap:4px;overflow-x:visible;padding-bottom:10px}.app--mobile .ft__pill{min-width:0;width:100%;padding:8px 2px}.app--mobile .ft__pill-dow{font-size:10px}.app--mobile .ft__pill-date{font-size:15px}.app--mobile .ft__pill-count{min-width:15px;height:15px;font-size:10px}.app--mobile .ft__head{flex-wrap:wrap;gap:4px 10px;margin:4px 0 14px}.app--mobile .ft__head h3{font-size:17px;white-space:normal}.app--mobile .ft__row{grid-template-columns:52px 1fr;gap:10px}.app--mobile .ft__card{gap:10px;padding:10px 12px 10px 10px}.app--mobile .ft__card-side{display:none}@media(max-width:1180px){.app__content{grid-template-columns:1fr 270px}}@media(max-width:880px){.top:not(.top--schedule){padding:12px 16px}.top__title{font-size:19px}.payments-board,.students-board{padding:12px 16px var(--botnav-clearance)}.pay-journal-page,.students-page{gap:12px;max-width:none;padding-bottom:8px}.students-empty{padding:32px 16px;min-height:160px}.seg--period .seg__btn{flex:1 1 calc(33.333% - 4px);min-width:calc(33.333% - 4px);padding-left:6px;padding-right:6px;font-size:12px}.period-picker__custom{flex-direction:column;align-items:stretch}.period-picker__date{min-width:0}.period-picker__dash{display:none}.pay-summary{flex-direction:column;align-items:stretch;padding:14px 16px;gap:14px}.pay-summary__stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.pay-summary__stat{min-width:0}.pay-journal-list{display:flex;flex-direction:column;gap:8px;list-style:none;margin:0;padding:0}.pay-journal-table-wrap{display:none}.pay-journal-empty{padding:32px 16px}}@media(max-width:900px){.login{display:flex;flex-direction:column;min-height:100dvh;overflow-x:hidden;overflow-y:auto;background:radial-gradient(circle at 24% 6%,oklch(.67 .11 255 / .46),transparent 34%),radial-gradient(circle at 92% 28%,oklch(.76 .11 75 / .16),transparent 28%),radial-gradient(circle at 78% 78%,oklch(.55 .135 255 / .2),transparent 36%),linear-gradient(155deg,#043264,#021435 58%,#001327);background:radial-gradient(circle at 24% 6%,oklch(.67 .11 255 / .46),transparent 34%),radial-gradient(circle at 92% 28%,oklch(.76 .11 75 / .16),transparent 28%),radial-gradient(circle at 78% 78%,oklch(.55 .135 255 / .2),transparent 36%),linear-gradient(155deg,#043264,#021435 58%,color(xyz 0.006 0.006 0.021))}.login:before{background:radial-gradient(circle at 50% 42%,oklch(.998 .003 80 / .1),transparent 28%),radial-gradient(circle at 8% 92%,oklch(.18 .055 245 / .22),transparent 34%)}.login__aside{display:flex;overflow:visible;flex:none;width:100%;max-width:460px;margin:0 auto;padding:22px 20px 12px;gap:18px;min-height:auto}.login__aside:after{inset:auto -34% -18% 18%;height:180px;filter:blur(44px)}.login__glow--a{width:170px;height:170px;top:4%;right:-48px;filter:blur(30px)}.login__glow--b{width:210px;height:210px;left:-104px;bottom:18%;filter:blur(36px)}.login__brand{align-items:flex-start}.login__brand .logo{padding-top:1px}.login__content{margin:0;gap:18px;max-width:none}.login__pitch{max-width:none}.login__title--desktop{display:none}.login__title--mobile{display:block;font-size:clamp(27px,8vw,34px);line-height:1.04;letter-spacing:-.035em}.login__pitch p{max-width:24rem;margin-top:12px;font-size:14.5px;line-height:1.45}.login__chips{flex-wrap:wrap;gap:8px;margin:0;padding:0;overflow:visible}.chip{flex:0 1 auto;min-height:36px;padding:7px 10px;font-size:12.5px}.login__features{display:grid;grid-template-columns:1fr;gap:9px;max-width:none;margin:0;padding:0;overflow:visible}.login-feature:nth-child(n+4){display:none}.login-feature{display:grid;grid-template-columns:34px 1fr;gap:11px;min-height:auto;padding:12px;align-items:start}.login-feature__icon{width:34px;height:34px;margin-bottom:0}.login-feature strong{font-size:14px}.login-feature span span{margin-top:4px;font-size:12.5px;line-height:1.32}.login__decor{display:grid;grid-template-columns:1fr;gap:9px;margin:0;padding:0;overflow:visible}.decor-card{width:100%;min-width:0;min-height:62px;padding:12px}.decor-card--a,.decor-card--b{transform:none}.login__main{flex:none;justify-content:flex-start;width:100%;max-width:460px;margin:0 auto;min-height:auto;padding:10px 20px 28px;overflow:visible}.login__mobile-brand{display:none}.login__mobile-brand .logo__mark{background:#fff}.login__mobile-brand .logo__mark:before{background:var(--c-primary);box-shadow:0 5px color-mix(in oklch,var(--c-primary),white 0%),0 10px color-mix(in oklch,var(--c-primary),transparent 35%)}.login__card{max-width:none;padding:24px;transform:none;box-shadow:0 24px 60px #00071747,0 8px 22px #00132429,inset 0 1px #ffffffd1;box-shadow:0 24px 60px #00071747,0 8px 22px oklch(.18 .055 245 / .16),inset 0 1px #ffffffd1}.login__card:before{top:-12px;right:-12px;bottom:-12px;left:-12px;border-radius:28px;filter:blur(12px)}.login__head{margin-bottom:22px}.login__head h2{font-size:23px}.login__head p{font-size:14px}.login .btn,.field input:not(.student-drawer__avatar-input){min-height:48px}.login__mobile-chips{display:none}.login__mobile-chips::-webkit-scrollbar{display:none}.mobile-chip{flex:0 0 auto;min-height:44px;display:inline-flex;align-items:center;padding:0 13px;border-radius:99px;color:#fff;background:#ffffff24;border:1px solid oklch(1 0 0 / .18);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:13px;font-weight:650}}@media(max-width:420px){.login__aside{padding:20px 16px 8px}.login__main{padding:10px 16px 24px}.login__card{padding:22px;border-radius:var(--r-lg)}.login__head h2{font-size:23px}}
