@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Lexend Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/lexend-vietnamese-wght-normal-RvljkFvg.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Lexend Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/lexend-latin-ext-wght-normal-B6JQhE1e.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Lexend Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/lexend-latin-wght-normal-ci0D1wrL.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink:#0b0b0f;--ink-2:#16161d;--ink-3:#24242e;--amber:#fdb52b;--amber-600:#e39a0e;--amber-50:#fff6e0;--bg:#f6f5f2;--surface:#fff;--surface-2:#faf9f6;--border:#e7e5e0;--text:#16161d;--muted:#6b6b76;--green:#15803d;--green-bg:#e7f6ec;--red:#dc2626;--red-bg:#fdecec;--orange:#c2410c;--orange-bg:#fff0e3;--blue:#2563eb;--blue-bg:#e8effd;--gray-bg:#f0efeb;--radius:14px;--radius-sm:10px;--shadow:0 1px 2px #1010180a, 0 4px 16px #1010180d;--font:"Inter Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--font-display:"Lexend Variable", var(--font);--sidebar:264px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.5}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;margin:0;line-height:1.25}h1{font-size:1.6rem;font-weight:600}h2{font-size:1.05rem;font-weight:600}h3{font-size:1rem;font-weight:600}p{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}:focus-visible{outline:3px solid var(--amber);outline-offset:2px;border-radius:6px}.muted{color:var(--muted)}.small{font-size:.8rem}.right{text-align:right}.center{text-align:center}.nowrap{white-space:nowrap}.c-green{color:var(--green)}.c-red{color:var(--red)}.c-orange{color:var(--orange)}.logo{align-items:center;gap:12px;display:flex}.logo--stacked{flex-direction:column;align-items:flex-start;gap:16px}.logo__text{flex-direction:column;min-width:0;display:flex}.logo__name{font-family:var(--font-display);letter-spacing:.01em;color:var(--amber);font-size:1.25rem;font-weight:700;line-height:1.1}.logo--stacked .logo__name{font-size:2.2rem}.logo__sub{color:#ffffffb3;white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.logo--stacked .logo__sub{letter-spacing:.08em;text-transform:uppercase;font-size:.95rem}.logo--dark .logo__name{color:var(--ink)}.logo--dark .logo__sub{color:var(--muted)}.btn{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);white-space:nowrap;justify-content:center;align-items:center;gap:8px;padding:9px 16px;font-size:.9rem;font-weight:600;transition:background .15s,border-color .15s,transform 50ms;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2);border-color:#cfccc4}.btn:active:not(:disabled){transform:translateY(1px)}.btn--primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn--primary:hover:not(:disabled){background:var(--ink-3);border-color:var(--ink-3)}.btn--ghost{background:0 0}.btn--danger{background:var(--red);border-color:var(--red);color:#fff}.btn--danger:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.btn--sm{border-radius:8px;padding:6px 11px;font-size:.82rem}.btn--lg{padding:13px 22px;font-size:1rem}.btn--block{width:100%}.link-btn{color:var(--amber-600);background:0 0;border:0;align-items:center;gap:4px;padding:0;font-size:.875rem;font-weight:600;display:inline-flex}.link-btn:hover{text-decoration:underline}.icon-btn{width:36px;height:36px;color:inherit;background:0 0;border:0;border-radius:10px;flex:none;place-items:center;display:inline-grid}.icon-btn:hover:not(:disabled){background:#7f7f7f1f}.icon-btn--danger:hover:not(:disabled){background:var(--red-bg);color:var(--red)}.input{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);width:100%;font:inherit;color:var(--text);padding:9px 12px;font-size:.92rem;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--amber-600);outline:none;box-shadow:0 0 0 3px #fdb52b40}.input:disabled{background:var(--gray-bg);color:var(--muted)}select.input{padding-right:30px}textarea.input{resize:vertical}.input--sm{padding:5px 8px;font-size:.8rem}.input--otp{letter-spacing:.5em;text-align:center;font-size:1.4rem;font-family:var(--font-display)}.input-prefix{align-items:stretch;display:flex}.input-prefix>span{background:var(--gray-bg);border:1px solid var(--border);border-radius:var(--radius-sm) 0 0 var(--radius-sm);color:var(--muted);border-right:0;place-items:center;padding:0 12px;font-weight:600;display:grid}.input-prefix .input{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.field{flex-direction:column;gap:6px;display:flex}.field--full{grid-column:1/-1}.field__label{color:var(--ink-3);font-size:.82rem;font-weight:600}.field__hint{color:var(--muted);font-size:.75rem}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;display:grid}.form-section{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);border-bottom:1px solid var(--border);grid-column:1/-1;margin-top:6px;padding-bottom:6px;font-size:.8rem}.check{align-items:center;gap:8px;padding:8px 0;font-size:.9rem;display:inline-flex}.check input{width:18px;height:18px;accent-color:var(--ink)}.check--row{margin-top:12px}.alert{border-radius:var(--radius-sm);padding:10px 14px;font-size:.875rem}.alert--error{background:var(--red-bg);color:var(--red)}.badge{white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:3px 9px;font-size:.75rem;font-weight:600;line-height:1.4;display:inline-flex}.badge--gray{background:var(--gray-bg);color:var(--muted)}.badge--green{background:var(--green-bg);color:var(--green)}.badge--red{background:var(--red-bg);color:var(--red)}.badge--orange{background:var(--orange-bg);color:var(--orange)}.badge--amber{background:var(--amber-50);color:#9a5b00}.badge--blue{background:var(--blue-bg);color:var(--blue)}.avatar{color:var(--ink);font-weight:700;font-family:var(--font-display);border-radius:50%;flex:none;place-items:center;display:inline-grid}.progress{background:var(--gray-bg);border-radius:99px;height:8px;overflow:hidden}.progress__bar{background:var(--amber);border-radius:99px;height:100%}.progress__bar--green{background:var(--green)}.shell{min-height:100vh;display:flex}.sidebar{width:var(--sidebar);z-index:40;background:var(--ink);color:#fff;flex-direction:column;padding:20px 14px;display:flex;position:fixed;inset:0 auto 0 0}.sidebar__brand{justify-content:space-between;align-items:center;padding:0 6px 18px;display:flex}.sidebar__close{color:#fff;display:none}.sidebar__role{letter-spacing:.12em;text-transform:uppercase;color:#ffffff73;padding:8px 10px;font-size:.7rem}.sidebar__nav{flex-direction:column;flex:1;gap:2px;display:flex;overflow-y:auto}.navlink{color:#ffffffb8;border-radius:10px;align-items:center;gap:12px;padding:10px 12px;font-size:.92rem;font-weight:500;display:flex}.navlink:hover{color:#fff;background:#ffffff0f}.navlink--active{background:var(--amber);color:var(--ink);font-weight:600}.navlink--active:hover{background:var(--amber);color:var(--ink)}.navlink__count{background:var(--red);color:#fff;border-radius:99px;margin-left:auto;padding:1px 7px;font-size:.7rem;font-weight:700}.sidebar__user{border-top:1px solid #ffffff14;align-items:center;gap:10px;margin-top:12px;padding:12px 8px 0;display:flex}.sidebar__user-text{flex-direction:column;flex:1;min-width:0;display:flex}.sidebar__user-text strong{font-size:.875rem}.sidebar__user-text span{color:#ffffff8c;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;overflow:hidden}.sidebar__user .icon-btn{color:#ffffffb3}.sidebar-backdrop{display:none}.main{margin-left:var(--sidebar);flex-direction:column;flex:1;min-width:0;display:flex}.topbar{z-index:20;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);background:#f6f5f2e0;align-items:center;gap:12px;padding:12px 28px;display:flex;position:sticky;top:0}.topbar__menu{display:none}.topbar__title{flex-direction:column;flex:1;min-width:0;display:flex}.topbar__title strong{font-family:var(--font-display);font-weight:600}.topbar__title span{font-size:.78rem}.child-switch{width:auto;max-width:220px;font-weight:600}.bell{background:var(--surface);border:1px solid var(--border);position:relative}.bell__dot{background:var(--red);color:#fff;border-radius:9px;place-items:center;min-width:18px;height:18px;padding:0 4px;font-size:.65rem;font-weight:700;display:grid;position:absolute;top:-4px;right:-4px}.content{flex-direction:column;gap:20px;width:100%;max-width:1280px;padding:24px 28px 48px;display:flex}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.page-header p{max-width:70ch;margin-top:4px}.page-header__actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0}.card__head{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex}.card__actions{align-items:center;gap:8px;display:flex}.card__body{padding:18px}.card>div:not(.card__head){overflow-x:auto}.card__foot{border-top:1px solid var(--border);padding:12px 18px;font-size:.8rem}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.stats-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:20px;display:grid}.grid-2--wide-left{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:20px;display:grid}.stack{flex-direction:column;gap:20px;display:flex}.cards-grid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:16px;display:grid}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);align-items:flex-start;gap:14px;padding:16px 18px;display:flex}.stat__icon{background:var(--amber-50);color:#9a5b00;border-radius:12px;flex:none;place-items:center;width:42px;height:42px;display:grid}.stat--green .stat__icon{background:var(--green-bg);color:var(--green)}.stat--red .stat__icon{background:var(--red-bg);color:var(--red)}.stat--blue .stat__icon{background:var(--blue-bg);color:var(--blue)}.stat--gray .stat__icon{background:var(--gray-bg);color:var(--muted)}.stat>div:last-child{min-width:0}.stat__value{overflow-wrap:anywhere;font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:600;line-height:1.2}.stat__label{color:var(--muted);font-size:.82rem;font-weight:500}.stat__hint{color:var(--muted);margin-top:2px;font-size:.75rem}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:.88rem}.table th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--surface-2);border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 14px;font-size:.72rem;font-weight:600}.table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:11px 14px}.table tbody tr:last-child td{border-bottom:0}.table tbody tr:hover td{background:var(--surface-2)}.table th.right,.table td.right{text-align:right}.table th.center,.table td.center{text-align:center}.person{align-items:center;gap:10px;display:flex}.person>div{flex-direction:column;display:flex}.simple-list{margin:0;padding:0;list-style:none}.simple-list li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;font-size:.9rem;display:flex}.simple-list li:last-child{border-bottom:0}.simple-list li>span{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.simple-list--stack li{flex-direction:column;align-items:flex-start;gap:2px}.tabs{border-bottom:1px solid var(--border);scrollbar-width:none;flex:none;gap:4px;display:flex;overflow:auto hidden}.tab{color:var(--muted);white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:8px;margin-bottom:-1px;padding:10px 14px;font-size:.9rem;font-weight:600;display:inline-flex}.tab:hover{color:var(--text)}.tab--active{color:var(--ink);border-bottom-color:var(--amber)}.tab__count{background:var(--gray-bg);color:var(--muted);border-radius:99px;padding:1px 7px;font-size:.72rem}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.toolbar>select.input{width:auto}.toolbar--inline{gap:10px}.search{flex:1;min-width:220px;position:relative}.search svg{color:var(--muted);position:absolute;top:50%;left:12px;transform:translateY(-50%)}.search .input{padding-left:36px}.date-stepper{align-items:center;gap:4px;display:flex}.date-stepper .input{width:auto}.month-label{text-align:center;min-width:130px;font-family:var(--font-display);font-weight:600}.chips{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.chip{background:var(--surface);border:1px solid var(--border);border-radius:99px;padding:6px 12px;font-size:.85rem}.modal-backdrop{z-index:100;background:#0b0b0f8c;place-items:center;padding:16px;animation:.15s fade;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border-radius:18px;flex-direction:column;width:100%;max-width:520px;max-height:calc(100vh - 32px);animation:.18s pop;display:flex;box-shadow:0 24px 60px #00000040}.modal--wide{max-width:820px}.modal__head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal__body{padding:20px;overflow-y:auto}.modal__foot{border-top:1px solid var(--border);justify-content:flex-end;gap:10px;padding:14px 20px;display:flex}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(8px)scale(.98)}}.empty{text-align:center;color:var(--muted);flex-direction:column;align-items:center;gap:8px;padding:40px 20px;display:flex}.empty h3{color:var(--text)}.toasts{z-index:200;flex-direction:column;gap:10px;width:min(380px,100vw - 32px);display:flex;position:fixed;bottom:20px;right:20px}.toast{background:var(--ink);color:#fff;border-radius:14px;align-items:flex-start;gap:12px;padding:14px;animation:.2s pop;display:flex;box-shadow:0 12px 32px #00000040}.toast>svg{color:#4ade80;flex:none;margin-top:1px}.toast--error>svg{color:#f87171}.toast--alert{border-left:4px solid var(--amber)}.toast--alert>svg{color:var(--amber)}.toast__text{flex-direction:column;flex:1;font-size:.875rem;display:flex}.toast__text span{color:#ffffffc7}.toast .icon-btn{color:#fff9;width:28px;height:28px}.login{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);min-height:100vh;display:grid}.login__brand{background:var(--ink);color:#fff;flex-direction:column;justify-content:center;gap:24px;padding:56px 64px;display:flex;position:relative;overflow:hidden}.login__brand:after{content:"";pointer-events:none;background:radial-gradient(circle,#fdb52b38,#0000 65%);border-radius:50%;width:420px;height:420px;position:absolute;bottom:-120px;right:-120px}.login__brand h1{max-width:14ch;margin-top:16px;font-size:clamp(2rem,3.4vw,2.9rem);font-weight:600}.login__brand>p{color:#ffffffb8;max-width:46ch;font-size:1.05rem}.login__features{flex-direction:column;gap:14px;margin:8px 0 0;padding:0;list-style:none;display:flex}.login__features li{color:#ffffffd9;align-items:center;gap:12px;display:flex}.login__features svg{color:var(--amber);flex:none}.login__by{color:#fff6;letter-spacing:.06em;font-size:.8rem;position:absolute;bottom:28px;left:64px}.login__panel{place-items:center;padding:40px 24px;display:grid}.login__form{flex-direction:column;gap:16px;width:100%;max-width:400px;display:flex}.login__form h2{font-size:1.6rem}.login__form>.muted{margin-top:-12px}.login__mobile-logo{display:none}.role-picker{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.role-picker__btn{border:1.5px solid var(--border);background:var(--surface);color:var(--muted);border-radius:12px;flex-direction:column;align-items:center;gap:6px;padding:14px 6px;font-size:.85rem;font-weight:600;display:flex}.role-picker__btn:hover{color:var(--text);border-color:#cfccc4}.role-picker__btn.is-active{border-color:var(--ink);background:var(--ink);color:#fff}.role-picker__btn.is-active svg{color:var(--amber)}.demo-box{background:var(--amber-50);border:1px dashed #f3c76a;border-radius:12px;gap:12px;padding:14px;font-size:.85rem;display:flex}.demo-box>svg{color:#9a5b00;flex:none;margin-top:2px}.demo-box>div{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.period-list{flex-direction:column;gap:10px;display:flex}.period-card{border:1px solid var(--border);background:var(--surface);border-radius:12px;align-items:center;gap:16px;padding:14px 16px;transition:border-color .15s,box-shadow .15s;display:flex}.period-card:hover{box-shadow:var(--shadow);border-color:#cfccc4}.period-card--pending{border-left:4px solid var(--red)}.period-card--done{border-left:4px solid var(--green)}.period-card--upcoming{border-left:4px solid var(--border)}.period-card--live{border-color:var(--amber);box-shadow:0 0 0 3px #fdb52b33}.period-card__no{background:var(--gray-bg);border-radius:10px;flex-direction:column;flex:none;align-items:center;width:54px;padding:6px 0;display:flex}.period-card__no span{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:.62rem}.period-card__no strong{font-family:var(--font-display);font-size:1.35rem;line-height:1.1}.period-card__main{flex:1;min-width:0}.period-card__title{font-size:1rem;font-weight:600}.period-card__time{color:var(--muted);align-items:center;gap:6px;margin-top:2px;font-size:.82rem;display:flex}.period-card__status{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.mini-counts{gap:8px;font-size:.8rem;font-weight:700;display:flex}.dots{gap:4px;display:inline-flex}.dot{background:var(--gray-bg);width:22px;height:22px;color:var(--muted);border-radius:6px;place-items:center;font-size:.7rem;font-weight:700;display:inline-grid}.dot--P{background:var(--green-bg);color:var(--green)}.dot--A{background:var(--red-bg);color:var(--red)}.dot--L{background:var(--orange-bg);color:var(--orange)}.mark{flex-direction:column;gap:16px;padding-bottom:80px;display:flex}.back-link{color:var(--muted);align-items:center;gap:4px;width:fit-content;font-size:.9rem;font-weight:600;display:inline-flex}.back-link:hover{color:var(--text)}.mark__head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.mark__summary{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.sum{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;align-items:center;padding:12px;display:flex}.sum strong{font-family:var(--font-display);font-size:1.6rem;line-height:1.1}.sum span{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:600}.sum--green strong{color:var(--green)}.sum--red strong{color:var(--red)}.sum--orange strong{color:var(--orange)}.roll{margin:0;padding:0;list-style:none}.roll__row{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:10px 16px;transition:background .15s;display:flex}.roll__row:last-child{border-bottom:0}.roll__row--A{background:#fff7f7}.roll__row--L{background:#fffaf3}.roll__no{text-align:right;width:26px;color:var(--muted);font-variant-numeric:tabular-nums;font-size:.85rem;font-weight:600}.roll__name{flex:1;min-width:0;font-weight:500}.roll__empty{text-align:center;padding:20px}.seg{background:var(--gray-bg);border-radius:11px;gap:2px;padding:3px;display:inline-flex}.seg__btn{color:var(--muted);background:0 0;border:0;border-radius:8px;min-width:44px;min-height:36px;padding:7px 12px;font-size:.82rem;font-weight:600}.seg__btn:hover{color:var(--text)}.seg__btn.is-on{color:#fff;box-shadow:0 1px 3px #00000026}.seg__btn--P.is-on{background:var(--green)}.seg__btn--A.is-on{background:var(--red)}.seg__btn--L.is-on{background:#ea7a0c}.seg__short{display:none}.mark__footer{left:var(--sidebar);z-index:30;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--border);background:#fffffff2;justify-content:space-between;align-items:center;gap:16px;padding:12px 28px;display:flex;position:fixed;bottom:0;right:0}.mark__footer .muted{font-size:.85rem}.ann-list{flex-direction:column;gap:12px;display:flex}.ann .card__body{flex-direction:column;gap:8px;display:flex}.ann__meta{flex-wrap:wrap;align-items:center;gap:10px;font-size:.8rem;display:flex}.ann p{color:#3a3a44}.child-hero{border-radius:var(--radius);background:var(--ink);color:#fff;flex-wrap:wrap;align-items:center;gap:16px;padding:20px 22px;display:flex}.child-hero h1{font-size:1.4rem}.child-hero p{color:#ffffffb3;font-size:.9rem}.child-hero__today{flex-direction:column;align-items:flex-end;gap:4px;margin-left:auto;display:flex}.child-hero__label{text-transform:uppercase;letter-spacing:.1em;color:#ffffff8c;font-size:.72rem}.banner{border-radius:var(--radius);background:var(--amber-50);border:1px solid #f6d48e;align-items:center;gap:14px;padding:14px 18px;display:flex}.banner>svg{color:#9a5b00;flex:none}.banner>div{flex-direction:column;flex:1;font-size:.9rem;display:flex}.banner--info{background:var(--blue-bg);border-color:#c8d8fb}.banner--info>svg{color:var(--blue)}.live-title{align-items:center;gap:10px;display:inline-flex}.live-dot{background:var(--green);border-radius:50%;width:9px;height:9px;animation:1.8s infinite pulse;box-shadow:0 0 #15803d80}@keyframes pulse{70%{box-shadow:0 0 0 8px #15803d00}to{box-shadow:0 0 #15803d00}}.timeline{margin:0;padding:0;list-style:none;position:relative}.timeline__item{align-items:center;gap:14px;padding:9px 0;display:flex;position:relative}.timeline__item:not(:last-child):after{content:"";background:var(--border);width:2px;position:absolute;top:40px;bottom:-10px;left:15px}.timeline__dot{background:var(--gray-bg);width:32px;height:32px;color:var(--muted);border:2px solid var(--surface);z-index:1;border-radius:50%;flex:none;place-items:center;font-size:.8rem;font-weight:700;display:grid}.timeline__item--P .timeline__dot{background:var(--green);color:#fff}.timeline__item--A .timeline__dot{background:var(--red);color:#fff}.timeline__item--L .timeline__dot{color:#fff;background:#ea7a0c}.timeline__body{flex-direction:column;flex:1;min-width:0;display:flex}.timeline__body strong{font-size:.92rem}.timeline__body span{align-items:center;gap:4px;font-size:.78rem;display:inline-flex}.notes{margin:0;padding:0;list-style:none}.note{border-bottom:1px solid var(--border);gap:12px;padding:12px 0;display:flex;position:relative}.note:last-child{border-bottom:0}.notes--full .note{cursor:pointer;padding:14px 18px}.notes--full .note--unread{background:#fffcf3}.note>div{flex-direction:column;flex:1;min-width:0;font-size:.875rem;display:flex}.note--unread strong{font-weight:700}.note__icon{background:var(--gray-bg);width:34px;height:34px;color:var(--muted);border-radius:10px;flex:none;place-items:center;display:grid}.note__icon--attendance{background:var(--orange-bg);color:var(--orange)}.note--absent .note__icon{background:var(--red-bg);color:var(--red)}.note__icon--fee{background:var(--green-bg);color:var(--green)}.note__icon--announcement{background:var(--amber-50);color:#9a5b00}.note__time{color:var(--muted);margin-top:2px;font-size:.75rem}.note__unread-dot{background:var(--amber-600);border-radius:50%;flex:none;width:9px;height:9px;margin-top:6px}.cal{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.cal__wd{text-align:center;text-transform:uppercase;color:var(--muted);padding-bottom:4px;font-size:.72rem;font-weight:600}.cal__day{aspect-ratio:1;border:1px solid var(--border);background:var(--surface);border-radius:10px;place-items:center;font-size:.9rem;font-weight:600;display:grid}.cal__day:hover:not(:disabled){border-color:var(--ink)}.cal__day:disabled{opacity:.35}.cal__day--green{background:var(--green-bg);color:var(--green);border-color:#bfe5cb}.cal__day--orange{background:var(--orange-bg);color:var(--orange);border-color:#f8cfaa}.cal__day--red{background:var(--red-bg);color:var(--red);border-color:#f6c1c1}.cal__day--off{background:var(--gray-bg);color:var(--muted);border-color:#0000}.cal__day.is-today{box-shadow:inset 0 0 0 2px var(--amber)}.cal__day.is-selected{outline:2px solid var(--ink);outline-offset:1px}.cal__legend{color:var(--muted);flex-wrap:wrap;gap:14px;margin-top:14px;font-size:.8rem;display:flex}.cal__legend span{align-items:center;gap:6px;display:inline-flex}.sw{border-radius:4px;width:12px;height:12px;display:inline-block}.sw--green{background:var(--green-bg);border:1px solid var(--green)}.sw--orange{background:var(--orange-bg);border:1px solid var(--orange)}.sw--red{background:var(--red-bg);border:1px solid var(--red)}.sw--off{background:var(--gray-bg);border:1px solid var(--border)}.month-stats{border-top:1px solid var(--border);grid-template-columns:repeat(4,1fr);gap:8px;margin-top:16px;padding-top:16px;display:grid}.month-stats div{text-align:center;flex-direction:column;align-items:center;display:flex}.month-stats strong{font-family:var(--font-display);font-size:1.3rem}.month-stats span{color:var(--muted);font-size:.75rem}.tick{background:var(--gray-bg);width:24px;height:24px;color:var(--muted);border-radius:7px;place-items:center;font-weight:700;display:inline-grid}.tick--done{background:var(--green-bg);color:var(--green)}.bars{align-items:flex-end;gap:10px;height:180px;padding-bottom:6px;display:flex}.bars__col{flex-direction:column;flex:1;align-items:center;gap:6px;height:100%;display:flex}.bars__val{font-variant-numeric:tabular-nums;font-size:.75rem;font-weight:700}.bars__track{background:var(--gray-bg);border-radius:8px;flex:1;align-items:flex-end;width:100%;max-width:36px;display:flex;overflow:hidden}.bars__fill{background:var(--amber);border-radius:8px 8px 0 0;width:100%;transition:height .4s}.bars__label{color:var(--muted);font-size:.75rem}.fee-mini{flex-direction:column;gap:10px;display:flex}.fee-mini>div:not(.progress){justify-content:space-between;align-items:center;display:flex}.fee-mini span{align-items:center;gap:4px;display:inline-flex}.teacher-card .card__body{flex-direction:column;gap:14px;display:flex}.teacher-card__top{align-items:center;gap:12px;display:flex}.teacher-card__meta{color:var(--muted);flex-direction:column;gap:6px;font-size:.85rem;display:flex}.teacher-card__meta span{overflow-wrap:anywhere;align-items:center;gap:8px;display:inline-flex}.teacher-card__tags{flex-wrap:wrap;gap:6px;display:flex}.teacher-card__actions{border-top:1px solid var(--border);gap:6px;padding-top:12px;display:flex}.tt td{vertical-align:top}.tt__period{white-space:nowrap;flex-direction:column;display:flex}.tt__cell{min-width:140px}.tt__subject{margin-bottom:4px;font-size:.85rem;font-weight:600;display:block}.tt__cell--clash{background:var(--red-bg)}.tt__cell--clash .tt__subject{color:var(--red)}.matrix th a{color:var(--ink);flex-direction:column;align-items:center;display:inline-flex}.matrix th a:hover{color:var(--amber-600)}.matrix__sub{text-transform:none;letter-spacing:0;color:var(--muted);font-size:.65rem;font-weight:500}.cell{background:var(--gray-bg);width:28px;height:28px;color:var(--muted);border-radius:8px;place-items:center;font-size:.8rem;font-weight:700;display:inline-grid}.cell--sm{border-radius:6px;width:22px;height:22px;font-size:.7rem}.cell--P{background:var(--green-bg);color:var(--green)}.cell--A{background:var(--red-bg);color:var(--red)}.cell--L,.cell--partial{background:var(--orange-bg);color:var(--orange)}.register th,.register td{padding:8px 4px}.register th:first-child,.register td:first-child{padding-left:14px}.register__off{background:var(--gray-bg)}.sticky-col{background:var(--surface);z-index:1;box-shadow:1px 0 0 var(--border);position:sticky;left:0}.table th.sticky-col{background:var(--surface-2)}.items{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.items__row{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr) auto;gap:8px;width:100%;display:grid}.totals-box,.invoice__totals{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:6px;padding:14px;font-size:.9rem;display:flex}.totals-box>div,.invoice__totals>div{font-variant-numeric:tabular-nums;justify-content:space-between;display:flex}.totals-box__grand,.invoice__grand{border-top:1px solid var(--border);padding-top:6px;font-size:1rem;font-weight:700}.pay-info{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;flex-direction:column;padding:12px;display:flex}.radio-list{flex-direction:column;gap:8px;display:flex}.radio{border:1.5px solid var(--border);cursor:pointer;border-radius:12px;align-items:flex-start;gap:12px;padding:12px;display:flex}.radio.is-on{border-color:var(--ink);background:var(--surface-2)}.radio input{accent-color:var(--ink);width:16px;height:16px;margin-top:3px}.radio>div{flex-direction:column;font-size:.9rem;display:flex}.periods-edit{grid-template-columns:repeat(auto-fill,minmax(min(280px,100%),1fr));gap:10px 24px;display:grid}.periods-edit__row{align-items:center;gap:10px;display:flex}.periods-edit__row strong{flex:none;width:72px;font-size:.9rem}.periods-edit__row .input{flex:1;width:auto}.invoice{flex-direction:column;gap:18px;display:flex}.invoice__head{border-bottom:2px solid var(--ink);flex-wrap:wrap;justify-content:space-between;gap:16px;padding-bottom:16px;display:flex}.invoice__school{gap:12px;display:flex}.invoice__school>div,.invoice__no{color:var(--muted);flex-direction:column;font-size:.8rem;display:flex}.invoice__school strong{font-family:var(--font-display);color:var(--text);font-size:1.1rem}.invoice__no{align-items:flex-end;gap:4px}.invoice__no strong{color:var(--text);font-size:1rem}.invoice__parties{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.invoice__parties>div{flex-direction:column;font-size:.85rem;display:flex}.invoice__parties .muted{text-transform:uppercase;letter-spacing:.08em;font-size:.7rem}.invoice__items{border:1px solid var(--border);border-radius:10px;overflow:hidden}.invoice__totals{align-self:flex-end;width:min(320px,100%)}.invoice__pays{flex-direction:column;gap:4px;font-size:.85rem;display:flex}.invoice__pays>div{color:var(--muted);justify-content:space-between;display:flex}.invoice__note{font-size:.75rem}.invoice>.btn{align-self:flex-start}@media (width<=1100px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stats-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}.hide-md{display:none}}@media (width<=900px){.sidebar{transition:transform .25s;transform:translate(-100%);box-shadow:0 0 40px #0000004d}.sidebar--open{transform:none}.sidebar__close{display:inline-grid}.sidebar-backdrop{z-index:35;background:#0b0b0f73;display:block;position:fixed;inset:0}.main{margin-left:0}.topbar{padding:10px 16px}.topbar__menu{display:inline-grid}.content{gap:16px;padding:16px 16px 40px}.grid-2,.grid-2--wide-left,.grid-3{grid-template-columns:minmax(0,1fr)}.mark__footer{padding:10px 16px;left:0}.login{grid-template-columns:1fr}.login__brand{display:none}.login__mobile-logo{margin-bottom:8px;display:block}}@media (width<=640px){h1{font-size:1.35rem}.stats-grid,.stats-grid--3{grid-template-columns:minmax(0,1fr);gap:10px}.stats-grid--3 .stat,.stats-grid .stat{padding:12px 14px}.hide-sm{display:none}.form-grid{grid-template-columns:minmax(0,1fr)}.seg__long{display:none}.seg__short{display:inline}.roll__row{gap:10px;padding:10px 12px}.roll__row .avatar,.mark__footer .muted{display:none}.mark__footer .btn{width:100%}.period-card{flex-wrap:wrap}.period-card__status{justify-content:space-between;width:100%}.child-switch{max-width:140px}.topbar__title span{display:none}.invoice__parties{grid-template-columns:minmax(0,1fr)}.items__row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.month-stats{grid-template-columns:repeat(2,1fr);row-gap:14px}.child-hero__today{align-items:flex-start;margin-left:0}.date-stepper .input{max-width:150px}.search{flex-basis:100%;min-width:0}.table td,.table th{padding:10px}}@media print{body *{visibility:hidden}#printable,#printable *{visibility:visible}#printable{padding:24px;position:absolute;inset:0}.no-print{display:none!important}}
