:root{color-scheme:light;--bg:#f2f2f7;--surface:#ffffff;--fill:#f2f2f7;--fill-strong:#e5e5ea;--ink:#1c1c1e;--ink-soft:#636366;--ink-faint:#8e8e93;--line:rgba(60,60,67,0.16);--band:var(--bg);--shadow-1:0 1px 2px rgba(0,0,0,0.06),0 1px 1px rgba(0,0,0,0.04);--shadow-2:0 8px 24px rgba(0,0,0,0.1),0 2px 6px rgba(0,0,0,0.06);--danger:#c62828;--success:#1b7f3b;--fs-caption:0.8125rem;--fs-small:0.875rem;--fs-body:1rem;--fs-lead:1.125rem;--fs-title:1.375rem;--fs-large:2rem;--radius-card:16px;--radius-btn:12px;--radius-field:12px;--space:8px;--sidebar-w:272px;--ease:cubic-bezier(0.2,0.8,0.2,1)}@media not all{:root{--bg:#000000;--surface:#1c1c1e;--fill:#2c2c2e;--fill-strong:#3a3a3c;--ink:#f2f2f7;--ink-soft:#aeaeb2;--ink-faint:#8e8e93;--line:rgba(235,235,245,0.18);--shadow-1:0 0 0 1px rgba(255,255,255,0.04);--shadow-2:0 12px 32px rgba(0,0,0,0.6);--danger:#ff6b6b;--success:#4cd079}}.app,.dash-page,body{--primary-tint:color-mix(in srgb,var(--primary) 14%,var(--surface));--accent-tint:color-mix(in srgb,var(--accent) 14%,var(--surface));--highlight-tint:color-mix(in srgb,var(--highlight) 16%,var(--surface));--accent-ink:color-mix(in srgb,var(--accent) 80%,var(--ink));--highlight-ink:color-mix(in srgb,var(--highlight) 80%,var(--ink))}html{font-size:93.75%}body{background:var(--bg);color:var(--ink);font-size:var(--fs-body);line-height:1.55;letter-spacing:-.003em}h1,h2,h3{letter-spacing:-.01em;line-height:1.25}:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 55%,transparent);outline-offset:2px;border-radius:8px}.muted{color:var(--ink-soft)}.app{min-height:100vh;background:var(--bg)}.sidebar{position:fixed;inset:0 auto 0 0;z-index:40;width:var(--sidebar-w);background:var(--surface);-webkit-border-end:1px solid var(--line);border-inline-end:1px solid var(--line);overflow-y:auto;transition:transform .28s var(--ease)}.sidebar,.sidebar-brand{display:flex;flex-direction:column}.sidebar-brand{position:relative;gap:6px;padding:20px 20px 16px}.sidebar-brand img{width:100%;height:auto;max-height:64px;object-fit:contain;object-position:left center}.sidebar-brand .inst-title{font-size:var(--fs-lead);font-weight:700;line-height:1.3}.sidebar-brand .powered{font-size:var(--fs-caption);color:var(--ink-faint)}.sidebar-nav{display:flex;flex-direction:column;gap:18px;padding:4px 12px 24px}.nav-group-label{margin:0 8px 6px;font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint)}.nav-item{display:flex;align-items:center;gap:12px;min-height:44px;padding:0 12px;border-radius:10px;color:var(--ink);font-size:var(--fs-body);font-weight:500;transition:background .15s var(--ease),color .15s var(--ease)}.nav-item svg{flex:none;color:var(--ink-soft)}.nav-item:hover{background:var(--fill)}.nav-item[aria-current=page]{background:var(--primary-tint);color:var(--primary-deep);font-weight:600}.nav-item[aria-current=page] svg{color:var(--primary)}@media not all{.nav-item[aria-current=page]{color:color-mix(in srgb,var(--primary) 60%,white)}}.app-main{-webkit-margin-start:var(--sidebar-w);margin-inline-start:var(--sidebar-w);min-width:0}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:12px;min-height:56px;padding:0 24px;background:color-mix(in srgb,var(--bg) 78%,transparent);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--line)}.topbar-title{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:var(--ink-soft)}.content{width:100%;max-width:1120px;margin:0 auto;padding:24px 24px 80px}.icon-btn{display:inline-grid;place-items:center;width:44px;height:44px;border:0;border-radius:12px;background:transparent;color:var(--ink)}.icon-btn:hover{background:var(--fill)}.menu-btn,.sidebar-close{display:none}.scrim{position:fixed;inset:0;z-index:35;border:0;background:rgba(0,0,0,.4);animation:fade-in .2s var(--ease)}@keyframes fade-in{0%{opacity:0}}@media (max-width:960px){.sidebar{transform:translateX(-102%);box-shadow:var(--shadow-2)}[dir=rtl] .sidebar{transform:translateX(102%)}.sidebar[data-open=true]{transform:none}.app-main{-webkit-margin-start:0;margin-inline-start:0}.menu-btn,.sidebar-close{display:inline-grid}.sidebar-close{position:absolute;top:8px;inset-inline-end:8px}.topbar{padding:0 8px 0 4px}.content{padding:16px 16px 72px}}.avatar{display:grid;place-items:center;width:36px;height:36px;border:0;border-radius:50%;background:var(--primary);color:#fff;font-weight:700}.account-menu{border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-2)}.account-item{min-height:44px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:8px 0 20px}.content>h1,.page-head h1{margin:0;font-size:var(--fs-large);font-weight:700;letter-spacing:-.02em}.content>h1{margin:8px 0 4px}.content h2{font-size:var(--fs-title);font-weight:700}.content h3,.subhead{font-size:var(--fs-body);font-weight:600;color:var(--ink-soft);margin:20px 0 8px}.back-link{display:inline-flex;align-items:center;min-height:44px;color:var(--primary);font-weight:500}.back-link:hover{text-decoration:underline}.row-link{color:var(--primary);font-weight:600}.row-link:hover{text-decoration:underline}.card,.details-card,.form-card,.panel,.stat{background:var(--surface);border:0;border-radius:var(--radius-card);box-shadow:var(--shadow-1)}.panel{padding:20px;margin-bottom:20px}.panel h2{margin:0 0 12px;font-size:var(--fs-title)}.form-card{padding:8px 20px 20px}.form-card fieldset{border:0;padding:0;margin:16px 0 0}.form-card legend{padding:0;margin-bottom:12px;font-size:var(--fs-small);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint)}.alert{background:color-mix(in srgb,var(--danger) 12%,var(--surface));color:var(--danger)}.alert,.viewer-note{padding:12px 16px;border-radius:var(--radius-field)}.viewer-note{background:var(--highlight-tint);color:var(--highlight-ink);font-size:var(--fs-small)}.stat-grid,.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));grid-gap:12px;gap:12px;margin-bottom:24px}.stat{padding:16px 18px}.stat-row .stat strong,.stat-value{font-size:var(--fs-large);font-weight:700;letter-spacing:-.02em;line-height:1.2}.stat-label,.stat-row .stat>.muted:first-child{font-size:var(--fs-small);color:var(--ink-soft)}.stat-hint{color:var(--ink-faint);font-size:var(--fs-caption)}.stat-icon{border-radius:10px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 20px;border:0;border-radius:var(--radius-btn);font-size:var(--fs-body);font-weight:600;line-height:1;transition:transform .12s var(--ease),background .15s var(--ease),filter .15s var(--ease)}.btn:active:not(:disabled){transform:scale(.97)}.btn-primary{background:var(--primary);color:#fff;box-shadow:none}.btn-primary:hover:not(:disabled){background:var(--primary);filter:brightness(1.08)}.btn-outline{background:var(--primary-tint);color:var(--primary-deep);border:0}.btn-outline:hover:not(:disabled){background:color-mix(in srgb,var(--primary) 22%,var(--surface))}@media not all{.btn-outline{color:color-mix(in srgb,var(--primary) 55%,white)}}.btn-danger,.btn-outline.btn-danger{background:color-mix(in srgb,var(--danger) 12%,var(--surface));color:var(--danger)}.btn-sm{min-height:36px;padding:0 14px;font-size:var(--fs-small)}@media (pointer:coarse){.btn-sm{min-height:44px}}.btn:disabled{opacity:.45;cursor:not-allowed}.field label,.filter-field label{display:block;margin-bottom:6px;font-size:var(--fs-small);font-weight:500;color:var(--ink-soft)}.class-edit input,.class-edit select,.field input,.field select,.field textarea,.filter-field input,.filter-field select,.inline-form input,.inline-form select,.money-input,input[type=date],input[type=month],input[type=password],input[type=search],input[type=tel],input[type=text],select,textarea{width:100%;min-height:44px;padding:0 14px;border:1px solid transparent;border-radius:var(--radius-field);background:var(--fill);color:var(--ink);font-size:var(--fs-body);transition:border-color .15s var(--ease),background .15s var(--ease),box-shadow .15s var(--ease)}.money-input{width:120px}.class-edit{flex-wrap:wrap}.class-edit>*{flex:1 1 120px;width:auto}.class-edit input:first-child{flex:2 1 160px;min-width:140px}.class-edit input:nth-child(2){flex:1 1 90px;min-width:80px}.class-edit .money-input{flex:0 0 130px}.class-edit button{flex:0 0 auto}input:hover:not(:disabled),select:hover:not(:disabled){background:var(--fill-strong)}input:focus,select:focus,textarea:focus{outline:none;background:var(--surface);border-color:var(--primary);box-shadow:0 0 0 4px color-mix(in srgb,var(--primary) 22%,transparent)}input:disabled,select:disabled{opacity:.55}input[type=checkbox],input[type=radio]{width:22px;min-height:22px;height:22px;padding:0;accent-color:var(--primary)}.field-error{color:var(--danger)}.field-error,.field-ok{margin:6px 0 0;font-size:var(--fs-small)}.field-ok{color:var(--success)}.field-hint{margin:6px 0 0;font-size:var(--fs-caption);color:var(--ink-faint)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:16px;gap:16px}.inline-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}.inline-form .field{min-width:160px;flex:1 1 180px}.filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:16px}.filter-field{min-width:150px}.filter-grow{flex:1 1 240px}details.inst-edit{margin-top:8px}details.inst-edit>summary{display:inline-flex;align-items:center;min-height:36px;padding:0 12px;border-radius:10px;color:var(--primary);font-weight:600;cursor:pointer;list-style:none}details.inst-edit>summary::-webkit-details-marker{display:none}details.inst-edit>summary:hover,details.inst-edit[open]>summary{background:var(--primary-tint)}details.inst-edit>form{margin-top:10px}.tabs{flex-wrap:wrap;gap:2px;margin:0 0 20px;padding:3px;border:0;border-radius:12px;background:var(--fill-strong);max-width:100%}.tabs,.tabs a{display:inline-flex}.tabs a{align-items:center;min-height:38px;padding:0 16px;border:0;border-radius:9px;color:var(--ink);font-size:var(--fs-small);font-weight:500;transition:background .18s var(--ease),box-shadow .18s var(--ease)}.tabs a:hover{background:color-mix(in srgb,var(--surface) 40%,transparent)}.tabs a[aria-current=page]{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.14)}.data-table{width:100%;border-collapse:collapse;font-size:var(--fs-body)}.data-table th{padding:10px 14px;text-align:start;font-size:var(--fs-caption);font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-faint);background:transparent}.data-table td,.data-table th{border-bottom:1px solid var(--line)}.data-table td{padding:14px;vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:0}.data-table tbody tr{transition:background .12s var(--ease)}.data-table tbody tr:hover{background:color-mix(in srgb,var(--ink) 3%,transparent)}.data-table tfoot th{text-transform:none;font-size:var(--fs-body);color:var(--ink)}.panel>.data-table{margin-top:4px}.pager{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:16px;color:var(--ink-soft)}.pager a{display:inline-grid;place-items:center;min-width:44px;min-height:44px;border-radius:12px;background:var(--primary-tint);color:var(--primary-deep);font-weight:600}.class-list,.comment-list,.history,.staff-list{list-style:none;margin:0;padding:0}.class-row,.history li,.staff-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;min-height:52px;padding:10px 0;border-bottom:1px solid var(--line)}.class-list>li:last-child,.history>li:last-child,.staff-list>li:last-child{border-bottom:0}.staff-row{justify-content:space-between}.staff-who{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}.details{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:16px 24px;gap:16px 24px;margin:0}.details dt{font-size:var(--fs-caption);color:var(--ink-faint)}.details dd{margin:2px 0 0;font-weight:500}.tally{display:flex;flex-wrap:wrap;gap:8px}.badge{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;font-size:var(--fs-caption);font-weight:600;line-height:1;white-space:nowrap}.badge-primary{background:var(--primary-tint);color:var(--primary-deep)}.badge-accent{background:var(--accent-tint);color:var(--accent-ink)}.badge-highlight{background:var(--highlight-tint);color:var(--highlight-ink)}.badge-muted{background:var(--fill-strong);color:var(--ink-soft)}@media not all{.badge-primary{color:color-mix(in srgb,var(--primary) 55%,white)}}.feature-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:12px;gap:12px}.card{padding:18px}.card-link{display:flex;flex-direction:column;transition:transform .16s var(--ease),box-shadow .16s var(--ease)}.card-link:hover{transform:translateY(-2px);box-shadow:var(--shadow-2)}.card h3{margin:12px 0 4px;font-size:var(--fs-lead);color:var(--ink)}.card p{margin:0 0 12px;color:var(--ink-soft)}.card p,.open-link{font-size:var(--fs-small)}.open-link{margin-top:auto;color:var(--primary);font-weight:600}.icon-tile{display:grid;place-items:center;width:44px;height:44px;border-radius:12px}.dash-date{margin:0 0 4px;color:var(--ink-soft)}.dash-note{color:var(--ink-faint);font-size:var(--fs-small)}.receipt{background:#fff;color:#1c1c1e;border:0;box-shadow:var(--shadow-2)}.receipt .muted,.receipt dt{color:#636366}.receipt .data-table td,.receipt .data-table th{color:#1c1c1e}.dash-page{background:var(--bg)}.dash-header{background:color-mix(in srgb,var(--surface) 82%,transparent);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--line)}.dash-nav{padding-bottom:12px}.dash-nav a{min-height:44px;border-radius:10px}.dash-nav a[aria-current=page]{background:var(--primary-tint);color:var(--primary-deep)}.dash-body{padding-top:24px;padding-bottom:80px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media (max-width:720px){.page-head{flex-wrap:wrap;align-items:flex-start}.content>h1,.page-head h1{font-size:1.75rem}.panel{padding:16px}.tabs{display:flex;overflow-x:auto;flex-wrap:nowrap}.tabs a{flex:none}.data-table tr{padding:10px 0}.data-table td{padding:6px 4px}.class-edit{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);flex-basis:100%}.class-edit>*{width:100%;min-width:0}.class-edit button,.class-edit input:first-child{grid-column:1/-1}}@media print{.scrim,.sidebar,.topbar{display:none!important}.app-main{margin:0!important}.content{padding:0;max-width:none}body{background:#fff}.panel,.receipt{box-shadow:none}}.filters input,.filters select{background:var(--surface);border-color:var(--line);box-shadow:var(--shadow-1)}.filters input:hover:not(:disabled),.filters select:hover:not(:disabled){background:var(--surface);border-color:color-mix(in srgb,var(--ink) 30%,transparent)}.filter-field{flex:1 1 150px;max-width:260px}.filter-grow{max-width:none}.arabic-name{margin:2px 0 0;font-family:var(--font-arabic),"Amiri",serif;font-size:1.35rem;color:var(--ink)}.guardian-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;padding:10px 0;border-bottom:1px solid var(--line)}.staff-list>.guardian-row:last-child{border-bottom:0}.file-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;min-height:48px;padding:8px 0;border-bottom:1px solid var(--line)}.staff-list>.file-row:last-child{border-bottom:0}.student-photo{display:grid;place-items:center;width:96px;height:96px;border-radius:50%;background:var(--primary-tint);color:var(--primary-deep);font-size:2.25rem;font-weight:700;overflow:hidden;flex:none}.student-photo img{width:100%;height:100%;object-fit:cover}.profile-head{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.print-sheet{max-width:800px;margin:0 auto 24px;padding:28px 32px;background:#fff;color:#111;border-radius:var(--radius-card);box-shadow:var(--shadow-2);page-break-after:always;break-after:page}.print-sheet .muted,.print-sheet .receipt-head p{color:#444}.form-top{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.form-meta{flex:1 1;display:grid;grid-template-columns:repeat(2,1fr);grid-gap:8px 16px;gap:8px 16px}.photo-box{display:grid;place-items:center;width:110px;height:130px;border:1.5px dashed #777;color:#666;font-size:.8rem;text-align:center;flex:none}.form-section{margin:20px 0 8px;font-size:1rem;border-bottom:1.5px solid #111;padding-bottom:4px;color:#111}.form-grid-print{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:12px 24px;gap:12px 24px}.form-line{display:flex;flex-direction:column;gap:2px;min-width:0}.form-line--wide{grid-column:1/-1}.form-line-label{font-size:.78rem;color:#555}.form-line-value{min-height:1.9rem;border-bottom:1px solid #888;padding:2px 2px 3px;font-weight:600;overflow-wrap:anywhere}.form-declaration{margin:22px 0 6px;font-size:.9rem;color:#222}.form-signs{display:flex;justify-content:space-between;gap:32px;margin-top:46px}.form-signs>div{flex:1 1;display:flex;flex-direction:column;gap:6px;font-size:.85rem;text-align:center}.sign-rule{border-top:1px solid #111}.form-office{margin-top:26px;padding:12px 14px;border:1px solid #999;border-radius:8px}.form-office strong{display:block;margin-bottom:8px;font-size:.85rem}@media print{.print-sheet{box-shadow:none;border-radius:0;margin:0;padding:0;max-width:none}.head-links{display:none}}.register-scroll{overflow-x:auto;margin:8px -4px;padding:0 4px 8px}.register{border-collapse:separate;border-spacing:0;font-size:var(--fs-small);min-width:100%}.register td,.register th{padding:6px 4px;min-width:30px;text-align:center;border-bottom:1px solid var(--line);white-space:nowrap}.register th{font-size:var(--fs-caption);color:var(--ink-soft);font-weight:600}.register .sticky-col{position:-webkit-sticky;position:sticky;left:0;z-index:1;background:var(--surface);text-align:start;min-width:44px}.register .sticky-name{left:44px;min-width:140px;font-weight:600;box-shadow:1px 0 0 var(--line)}.mark{font-weight:700}.mark-p{color:var(--success)}.mark-l{color:var(--highlight)}.mark-a{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent)}.mark-v{color:var(--accent)}.register .holiday{background:var(--fill)}.legend{display:flex;flex-wrap:wrap;gap:8px 20px;margin:12px 0 4px;padding:0;list-style:none;font-size:var(--fs-small);color:var(--ink-soft)}.legend .mark{display:inline-grid;place-items:center;min-width:22px;height:22px;border-radius:6px;background:var(--fill)}@media print{@page{size:A4 portrait;margin:10mm}.register-scroll{overflow:visible}.register .sticky-col{position:static}.report-sheet .register-scroll{overflow:visible}.tabulation{font-size:11px}.tabulation td,.tabulation th{padding:4px 6px}}.meter{display:inline-block;width:110px;height:8px;background:var(--fill-strong);overflow:hidden}.meter,.meter>span{border-radius:999px}.meter>span{display:block;height:100%;background:var(--primary)}.yesno{display:inline-flex;gap:4px}.yesno button{min-width:52px;min-height:40px;padding:0 12px;border:0;border-radius:10px;background:var(--fill);color:var(--ink);font-weight:600}.yesno button.on.yes{background:var(--primary);color:#fff}.yesno button.on.no{background:var(--danger);color:#fff}.check-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:6px 16px;gap:6px 16px}.field-wide{grid-column:1/-1;width:100%;border:0;padding:0;margin:0}.field-wide legend{font-size:var(--fs-small);color:var(--ink-soft);margin-bottom:6px}.fill-table td,.fill-table th{vertical-align:middle}.todo-list{list-style:none;margin:0;padding:0}.todo-list li{display:flex;align-items:center;gap:12px;min-height:52px;padding:8px 0;border-bottom:1px solid var(--line)}.todo-list li:last-child{border-bottom:0}.todo-list li>span:nth-child(2){flex:1 1}.todo-count{display:inline-grid;place-items:center;min-width:34px;height:34px;padding:0 8px;border-radius:999px;background:var(--highlight-tint);color:var(--highlight-ink);font-weight:700}.notice-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:8px 16px}.notice-head h2{margin:0}.notice-badges{display:flex;flex-wrap:wrap;gap:6px}.notice-body{white-space:pre-wrap;margin:10px 0}.notice-pinned{-webkit-border-start:4px solid var(--highlight);border-inline-start:4px solid var(--highlight)}.site-address{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px}.site-address p{margin:0 0 6px}.site-url{font-weight:700;overflow-wrap:anywhere}.site-address-actions{display:flex;flex-wrap:wrap;gap:8px}.enq-phone{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin:8px 0 0;font-weight:700}.notice-form{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:14px 16px;gap:14px 16px;align-items:end;padding-top:8px}.notice-form .field{min-width:0;margin:0}.notice-form textarea{min-height:200px;line-height:1.7}.nf-group{margin:8px 0 -4px;padding-top:12px;border-top:1px solid var(--line);font-size:var(--fs-small);font-weight:700;color:var(--ink-soft)}.nf-check{min-height:44px;align-self:end}.nf-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding-top:4px}.nf-actions .field-error,.nf-actions .field-ok{margin:0}@media (min-width:760px){.notice-form{grid-template-columns:repeat(6,minmax(0,1fr))}.notice-form>*{grid-column:span 2}.notice-form>.nf-span-3{grid-column:span 3}.notice-form>.nf-span-4{grid-column:span 4}.notice-form>.nf-span-6{grid-column:1/-1}}textarea{width:100%;min-height:110px;padding:12px 14px;resize:vertical}.print-logo{display:block;margin:0 auto 8px;max-height:72px;width:auto;height:auto}.certificate{padding-block:32px}.certificate-title{text-align:center;font-size:1.5rem;margin:28px 0 20px}.certificate-body{font-size:1.1rem;line-height:2;text-align:justify;margin:0 0 32px}.certificate-date{margin:0 0 56px}.page-loading{display:grid;grid-gap:16px;gap:16px}.skeleton{background:linear-gradient(90deg,var(--fill) 25%,var(--fill-strong) 50%,var(--fill) 75%);background-size:200% 100%;border-radius:var(--radius-card);animation:skeleton-shimmer 1.2s ease-in-out infinite}.skeleton-title{height:32px;width:min(280px,60%)}.skeleton-card{height:120px}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}.syllabus-subject-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px}.syllabus-progress{display:inline-flex;align-items:center;gap:10px}.syllabus-topics{list-style:none;margin:12px 0;padding:0;display:grid;grid-gap:4px;gap:4px}.syllabus-topic{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:8px 4px;border-bottom:1px solid var(--line)}.syllabus-topic .check{min-height:44px;flex:1 1 260px;font-size:var(--fs-body)}.syllabus-topic.is-done .check span{color:var(--ink-soft);text-decoration:line-through}.syllabus-edit{flex-basis:100%}.record{display:grid;grid-gap:6px;gap:6px}.record-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.record-head h3{margin:0}.record-meta{margin:0;font-size:.9rem}.record-text{margin:0;white-space:pre-wrap}.record-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}.inst-switcher{max-width:280px;min-height:36px;padding:0 32px 0 12px;border:1px solid var(--line);border-radius:10px;background-color:var(--surface);font-size:var(--fs-small)}.link-btn{padding:0;border:0;background:none;color:var(--primary);font:inherit;font-size:var(--fs-small);font-weight:600;cursor:pointer}.link-btn:hover{text-decoration:underline}.data-table .row-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.data-table .row-actions form{margin:0}.data-table .row-panel>td{padding:16px 18px 20px;background:var(--fill)}.live-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px}.live-head h2{flex:1 1;margin:0}.live-dot{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-small);color:var(--ink-soft)}.live-dot:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--ink-faint)}.live-dot.is-live:before{background:#16a34a;box-shadow:0 0 0 3px color-mix(in srgb,#16a34a 25%,transparent)}.live-list{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}.live-list li{display:flex;flex-direction:column;gap:2px;padding:10px 14px;border-bottom:1px solid var(--line);-webkit-border-start:3px solid transparent;border-inline-start:3px solid transparent}.live-list li.is-failed{background:color-mix(in srgb,#dc2626 8%,var(--surface));border-inline-start-color:#dc2626}.live-meta{font-size:var(--fs-caption);color:var(--ink-faint);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.live-what{font-size:var(--fs-small)}.perm-grid{margin:12px 0 16px;border:1px solid var(--line);border-radius:var(--radius-field);background:var(--surface)}.perm-row{display:grid;grid-template-columns:minmax(160px,220px) 1fr;grid-gap:8px 16px;gap:8px 16px;padding:12px 14px;border-bottom:1px solid var(--line)}.perm-row:last-child{border-bottom:0}.perm-row-head{display:flex;flex-direction:column;align-items:flex-start;gap:4px;font-size:var(--fs-small)}.perm-row-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:6px 16px;gap:6px 16px;font-size:var(--fs-small)}@media (max-width:720px){.inst-switcher{max-width:150px}.perm-row{grid-template-columns:1fr}}.roll-input{width:4.5rem;min-height:34px;padding:0 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font:inherit;text-align:center}.sidebar-nav--tight{gap:2px}.nav-item--folder{width:100%;border:0;background:none;text-align:start;font:inherit;cursor:pointer}.nav-item--folder>span:nth-child(2){flex:1 1}.nav-item--folder[aria-current=true]{color:var(--primary-deep);font-weight:600}.nav-chevron{color:var(--ink-faint)}.nav-sub{display:flex;flex-direction:column;margin:0 0 4px;-webkit-padding-start:32px;padding-inline-start:32px}.nav-sub-item{display:block;padding:7px 12px;border-radius:8px;color:var(--ink-soft);font-size:var(--fs-small)}.nav-sub-item:hover{background:var(--fill)}.nav-sub-item[aria-current=page]{background:var(--primary-tint);color:var(--primary-deep);font-weight:600}.att-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px 20px;margin-bottom:20px;border-bottom:1px solid var(--line)}.att-head h1{margin:0;padding:0 20px 10px 0;border-right:1px solid var(--line);font-size:1.5rem}.att-tabs{display:flex;gap:4px}.att-tabs a{padding:10px 16px 12px;border-bottom:2px solid transparent;margin-bottom:-1px;color:var(--ink-soft);font-weight:500}.att-tabs a:hover{color:var(--ink)}.att-tabs a[aria-current=page]{color:var(--primary);border-bottom-color:var(--primary)}.att-print{margin-left:auto}.att-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:16px;gap:16px;margin-bottom:20px}.att-filters .field{margin:0}.att-filters input,.att-filters select{background-color:var(--surface);border-color:var(--line-strong,var(--line))}.att-filters input:hover:not(:disabled),.att-filters select:hover:not(:disabled){background-color:var(--surface);border-color:var(--ink-faint)}.att-filters select:disabled{opacity:.6}.att-filters .field-label{display:block;margin-bottom:6px;font-size:var(--fs-small);font-weight:500;color:var(--ink-soft)}.att-fixed{min-height:44px;margin:0;font-weight:600}.att-fixed,.att-month{display:flex;align-items:center}.att-month{gap:6px}.att-month input{flex:1 1;min-width:0}.att-month .btn{flex:none;min-width:40px;min-height:44px;justify-content:center}.att-panel{padding:0;overflow:hidden}.att-panel>.muted,.att-panel>.viewer-note{margin:12px 20px 0}.att-roll-head{align-items:center;justify-content:space-between;flex-wrap:wrap;padding:14px 20px;color:var(--ink-soft)}.att-roll-all,.att-roll-head{display:flex;gap:8px}.att-roll{margin:0;padding:0;list-style:none}.att-roll li{border-top:1px solid var(--line)}.att-roll fieldset{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;min-width:0;margin:0;padding:10px 20px;border:0}.att-student{float:left;display:flex;flex-direction:column;gap:2px;padding:0}.att-meta{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:var(--fs-small);font-weight:400;color:var(--ink-soft)}.att-meta b{color:var(--ink);font-weight:600}.att-meta code{font-size:.85em}.att-marks{display:flex;gap:6px;margin-left:auto}.att-mark{position:relative}.att-mark input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.att-mark span{display:grid;place-items:center;width:54px;height:54px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink-soft);font-weight:700}.att-mark input:focus-visible+span{outline:3px solid color-mix(in srgb,var(--primary) 45%,transparent);outline-offset:1px}.att-present input:checked+span{color:var(--success);border-color:transparent;background:color-mix(in srgb,var(--success) 12%,transparent)}.att-absent input:checked+span{color:var(--danger);border-color:transparent;background:color-mix(in srgb,var(--danger) 12%,transparent)}.att-late input:checked+span{color:var(--highlight);border-color:transparent;background:color-mix(in srgb,var(--highlight) 14%,transparent)}.att-leave input:checked+span{color:var(--accent);border-color:transparent;background:color-mix(in srgb,var(--accent) 12%,transparent)}.att-roll fieldset:disabled .att-mark span{opacity:.5}.att-roll fieldset:disabled .att-mark input:checked+span{opacity:1}.att-submit{position:-webkit-sticky;position:sticky;bottom:0;padding:12px 20px;background:var(--surface);border-top:1px solid var(--line)}.att-submit .btn{width:100%;justify-content:center}.register .sticky-name:first-child{left:0;min-width:220px;white-space:normal}.reg-day,.reg-taken,.reg-wd,.register .sticky-name strong{display:block}.reg-day{color:var(--ink);font-size:var(--fs-small)}.reg-wd{font-weight:400}.reg-taken{min-height:1.2em;color:var(--success)}.register td.mark{min-width:38px}.register td.mark-l,.register td.mark-p,.register td.mark-v{background:color-mix(in srgb,currentColor 10%,transparent)}.print-only{display:none}@media (max-width:720px){.att-head h1{border-right:0;padding-right:0}.att-filters{grid-template-columns:minmax(0,1fr);gap:12px}.att-tabs a{padding:8px 10px 10px}.att-roll fieldset,.att-roll-head,.att-submit{padding-left:14px;padding-right:14px}.att-marks{width:100%}.att-mark{flex:1 1}.att-mark span{width:auto;height:46px}.register .sticky-name:first-child{min-width:150px}}@media print{.att-filters,.att-head{display:none}.print-only{display:block}}.sidebar-switch,.topbar-logo{display:none}@media (max-width:960px){.topbar-switch{display:none}.sidebar-switch{position:relative;display:flex;align-items:center;margin:0 12px 12px}.sidebar-switch svg{position:absolute;inset-inline-start:12px;color:var(--ink-soft);pointer-events:none}.sidebar-switch .inst-switcher{width:100%;max-width:none;min-height:44px;-webkit-padding-start:40px;padding-inline-start:40px}.topbar-logo{display:block;width:32px;height:32px;border-radius:8px;object-fit:contain;flex:none}.topbar-title{color:var(--ink)}}.imp-banner{position:fixed;inset:0 0 auto 0;z-index:70;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 16px;padding:8px 16px;background:var(--danger);color:#fff;font-size:var(--fs-small);font-weight:600;text-align:center}.imp-banner .btn{background:#fff;color:var(--danger);border:0}body:has(.imp-banner){padding-top:var(--imp-h,0)}body:has(.imp-banner) .topbar{top:var(--imp-h,0)}body:has(.imp-banner) .sidebar{top:var(--imp-h,0)}.fee-summary{margin:16px 0;padding:16px 20px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.fee-summary h3{margin:0 0 8px;font-size:var(--fs-lead,1.05rem)}.fee-summary ul{margin:0;padding:0;list-style:none}.fee-summary li{gap:12px;padding:6px 0;border-bottom:1px dashed var(--line)}.fee-summary li,.fee-totals{display:flex;justify-content:space-between}.fee-totals{flex-wrap:wrap;gap:8px 20px;margin-top:10px;font-size:var(--fs-small)}.fee-totals strong{-webkit-margin-start:6px;margin-inline-start:6px;font-size:1.1rem;color:var(--primary)}.fee-other{margin:14px 0 4px}.fee-minus{color:var(--success)}.discount-row{display:flex;gap:8px}.discount-row select{flex:0 0 72px}.discount-row input{flex:1 1;min-width:0}.sm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:14px;gap:14px;margin:18px 0 0;padding:0;list-style:none}.sm-card{display:flex;flex-direction:column;gap:8px;min-width:0;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.sm-thumb{display:grid;place-items:center;aspect-ratio:4/3;overflow:hidden;border-radius:8px;background:var(--fill-strong)}.sm-thumb img{width:100%;height:100%;object-fit:cover}.sm-caption{display:flex;gap:6px}.sm-caption input{flex:1 1;min-width:0}.sm-title{margin:0;font-weight:600;overflow-wrap:anywhere}.sm-controls{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.sm-stories{display:grid;grid-gap:14px;gap:14px;margin:18px 0 0;padding:0;list-style:none}.sm-story{display:flex;flex-direction:column;gap:10px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.sm-story-head{display:flex;align-items:center;gap:12px}.sm-story-head p{margin:2px 0 0}.sm-avatar{display:grid;place-items:center;flex:none;width:52px;height:52px;overflow:hidden;border-radius:50%;background:var(--primary);color:#fff;font-weight:700}.sm-avatar img{width:100%;height:100%;object-fit:cover}.sm-story-text{margin:0;white-space:pre-wrap}.app-online{-webkit-margin-start:6px;margin-inline-start:6px}.notice-form textarea.site-area{min-height:0}.site-hint{margin:4px 0 0;font-size:var(--fs-caption)}.site-principal-avatar{width:72px;height:72px}.sm-cover{align-self:flex-start}.sm-post-meta{margin:0;color:var(--ink-soft);font-size:var(--fs-small)}.site-slug-row{display:flex;align-items:stretch;overflow:hidden;border-radius:var(--radius-field);background:var(--fill)}.site-slug-prefix{display:flex;align-items:center;padding:0 4px 0 14px;color:var(--ink-soft);font-size:var(--fs-small);white-space:nowrap}.site-slug-row input{flex:1 1;min-width:0;padding-left:2px;background:transparent}.link-button{padding:0;border:0;background:none;color:var(--primary);font:inherit;text-decoration:underline;cursor:pointer}.inst-delete{display:grid;grid-gap:8px;gap:8px;max-width:420px;padding:12px;border:1px solid color-mix(in srgb,var(--danger) 40%,transparent);border-radius:var(--radius-card);background:color-mix(in srgb,var(--danger) 6%,var(--surface))}.inst-delete p{margin:0}.inst-delete-actions{display:flex;flex-wrap:wrap;gap:8px}