:root{--app-font-size: 15px;--brand-50: #eef2ff;--brand-100: #e0e7ff;--brand-300: #a5b4fc;--brand-500: #6366f1;--brand-600: #4f46e5;--brand-700: #4338ca;--chart-1: #4f46e5;--chart-2: #16a34a;--chart-ok: #0d9488;--chart-warn: #f59e0b;--chart-bad: #e11d48;--chart-grid: #e8edf5;--success: #16a34a;--success-bg: #dcfce7;--warning: #d97706;--warning-bg: #fef3c7;--danger: #dc2626;--danger-bg: #fee2e2;--info: #0284c7;--info-bg: #e0f2fe;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.5rem;--sp-6: 2rem;--sp-7: 3rem;--radius-sm: .375rem;--radius: .625rem;--radius-lg: 1rem;--radius-full: 999px;--font-sans: "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--font-mono: "Consolas", "SF Mono", Menlo, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--text-3xl: 2.25rem;--sidebar-width: 16rem;--topbar-height: 3.75rem;--tap-target: 2.75rem;--container-max: 90rem;--transition: .16s ease;color-scheme:light}:root,:root[data-theme=light]{--bg: #f4f6fb;--bg-elevated: #ffffff;--bg-sunken: #eef1f7;--bg-hover: #f1f3f9;--bg-sidebar: #ffffff;--bg-overlay: rgba(15, 23, 42, .45);--text: #0f172a;--text-muted: #64748b;--text-faint: #94a3b8;--text-inverse: #ffffff;--border: #e2e8f0;--border-strong: #cbd5e1;--accent: var(--brand-600);--accent-hover: var(--brand-700);--accent-soft: var(--brand-50);--accent-text: #ffffff;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow: 0 2px 8px rgba(15, 23, 42, .07);--shadow-lg: 0 12px 32px rgba(15, 23, 42, .14);color-scheme:light}:root[data-theme=dark]{--bg: #0b1120;--bg-elevated: #151d2e;--bg-sunken: #1c2537;--bg-hover: #1f2940;--bg-sidebar: #111827;--bg-overlay: rgba(0, 0, 0, .6);--text: #e8eefc;--text-muted: #94a3b8;--text-faint: #64748b;--text-inverse: #0b1120;--border: #263149;--border-strong: #35425e;--accent: var(--brand-500);--accent-hover: var(--brand-300);--accent-soft: rgba(99, 102, 241, .16);--accent-text: #ffffff;--chart-1: #6366f1;--chart-2: #16a34a;--chart-ok: #0d9488;--chart-warn: #d97706;--chart-bad: #e11d48;--chart-grid: #22304a;--success: #4ade80;--success-bg: rgba(74, 222, 128, .15);--warning: #fbbf24;--warning-bg: rgba(251, 191, 36, .15);--danger: #f87171;--danger-bg: rgba(248, 113, 113, .15);--info: #38bdf8;--info-bg: rgba(56, 189, 248, .15);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 2px 10px rgba(0, 0, 0, .45);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .6);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{font-size:var(--app-font-size);-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);line-height:1.55;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;transition:background var(--transition),color var(--transition);overflow-x:hidden}h1,h2,h3,h4,h5,h6{margin:0 0 var(--sp-3);font-weight:650;line-height:1.25;color:var(--text)}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}p{margin:0 0 var(--sp-3)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.scroll-locked,.scroll-locked body,.scroll-locked .app-main{overflow:hidden}img,svg,video{max-width:100%;height:auto;display:block}.icon{display:inline-block;vertical-align:-.15em;flex-shrink:0}hr{border:0;border-top:1px solid var(--border);margin:var(--sp-4) 0}code{font-family:var(--font-mono);font-size:.9em;background:var(--bg-sunken);padding:.1em .35em;border-radius:var(--radius-sm)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}::-webkit-scrollbar{width:.6rem;height:.6rem}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.container{width:100%;max-width:var(--container-max);margin-inline:auto;padding-inline:var(--sp-4)}.stack{display:flex;flex-direction:column;gap:var(--sp-4)}.stack-sm{display:flex;flex-direction:column;gap:var(--sp-2)}.row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap}.grow{flex:1 1 auto;min-width:0}.text-muted{color:var(--text-muted)}.text-faint{color:var(--text-faint)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.text-lg{font-size:var(--text-lg)}.text-right{text-align:right}.text-center{text-align:center}.font-medium{font-weight:600}.nowrap{white-space:nowrap}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mt-3{margin-top:var(--sp-3)}.mt-4{margin-top:var(--sp-4)}.mb-4{margin-bottom:var(--sp-4)}.ms-2{margin-inline-start:var(--sp-2)}.w-full{width:100%}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media print{.no-print{display:none!important}body{background:#fff;color:#000}.app-main{padding:0!important}}.app-shell{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden;background:var(--bg)}.topbar{flex-shrink:0;z-index:60;display:flex;align-items:center;gap:var(--sp-2);height:var(--topbar-height);padding:0 var(--sp-3);background:var(--bg-elevated);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm)}.topbar-brand{display:flex;align-items:center;gap:var(--sp-2);font-weight:700;font-size:var(--text-base);color:var(--text);text-decoration:none;min-width:0}.topbar-brand:hover{text-decoration:none}.brand-mark{display:grid;place-items:center;width:2rem;height:2rem;flex-shrink:0;border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-text);font-weight:800;font-size:var(--text-sm)}.brand-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-spacer{flex:1 1 auto}.topbar-actions{display:flex;align-items:center;gap:var(--sp-1)}.icon-btn{display:grid;place-items:center;width:var(--tap-target);height:var(--tap-target);border:0;border-radius:var(--radius);background:transparent;color:var(--text-muted);font-size:var(--text-lg);cursor:pointer;transition:background var(--transition),color var(--transition);-webkit-tap-highlight-color:transparent}.icon-btn:hover{background:var(--bg-hover);color:var(--text)}.menu-toggle{display:grid}.user-menu{position:relative}.user-trigger{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--tap-target);padding:var(--sp-1) var(--sp-2);border:0;border-radius:var(--radius);background:transparent;color:var(--text);font-family:inherit;cursor:pointer}.user-trigger:hover{background:var(--bg-hover)}.avatar{display:grid;place-items:center;width:2rem;height:2rem;flex-shrink:0;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-weight:700;font-size:var(--text-sm)}.user-name{display:none;font-size:var(--text-sm);font-weight:600}.dropdown{position:absolute;top:calc(100% + var(--sp-2));right:0;min-width:13rem;padding:var(--sp-2);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:70;animation:popIn .14s ease}.dropdown-header{padding:var(--sp-2);border-bottom:1px solid var(--border);margin-bottom:var(--sp-2)}.dropdown-item{display:flex;align-items:center;gap:var(--sp-2);width:100%;min-height:var(--tap-target);padding:var(--sp-2);border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text);font-family:inherit;font-size:var(--text-sm);text-align:left;text-decoration:none;cursor:pointer}.dropdown-item:hover{background:var(--bg-hover);text-decoration:none}.dropdown-item.danger{color:var(--danger)}.app-body{display:flex;flex:1 1 auto;min-height:0}.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:90;width:var(--sidebar-width);max-width:85vw;display:flex;flex-direction:column;background:var(--bg-sidebar);border-right:1px solid var(--border);transform:translate(-100%);transition:transform .22s ease;overflow-y:auto;overscroll-behavior:contain}.sidebar.open{transform:translate(0);box-shadow:var(--shadow-lg)}.sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);height:var(--topbar-height);padding:0 var(--sp-3);border-bottom:1px solid var(--border);flex-shrink:0}.sidebar-nav{padding:var(--sp-3) var(--sp-2);flex:1 1 auto}.nav-section-title{padding:var(--sp-3) var(--sp-3) var(--sp-1);font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint)}.nav-item{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--tap-target);padding:var(--sp-2) var(--sp-3);margin-bottom:2px;border-radius:var(--radius);color:var(--text-muted);font-size:var(--text-sm);font-weight:550;text-decoration:none;transition:background var(--transition),color var(--transition)}.nav-item:hover{background:var(--bg-hover);color:var(--text);text-decoration:none}.nav-item.active{background:var(--accent-soft);color:var(--accent);font-weight:650}.nav-icon{display:grid;place-items:center;width:1.25rem;flex-shrink:0;opacity:.9}.nav-item.active .nav-icon{opacity:1}.nav-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-section{margin-bottom:2px}.nav-group{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:var(--tap-target);padding:var(--sp-2) var(--sp-3);border:0;border-radius:var(--radius);background:none;color:var(--text-muted);font-size:var(--text-sm);font-weight:650;font-family:inherit;text-align:left;cursor:pointer;transition:background var(--transition),color var(--transition)}.nav-group:hover{background:var(--bg-hover);color:var(--text)}.nav-group.is-open{color:var(--text)}.nav-group.has-active{color:var(--accent)}.nav-group-caret{margin-left:auto;flex-shrink:0;opacity:.6;transition:transform var(--transition)}.nav-group.is-open .nav-group-caret{transform:rotate(180deg)}.nav-group-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0}.nav-group-body{margin:2px 0 var(--sp-2) var(--sp-4);padding-left:var(--sp-2);border-left:1px solid var(--border)}.nav-subtitle{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2);border:0;border-radius:var(--radius);background:none;font-size:.68rem;font-weight:700;font-family:inherit;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);text-align:left;cursor:pointer;transition:background var(--transition),color var(--transition)}.nav-subtitle:hover{background:var(--bg-hover);color:var(--text-muted)}.nav-subtitle.is-open{color:var(--text-muted)}.nav-subtitle.has-active{color:var(--accent)}.nav-subtitle.is-open .nav-group-caret{transform:rotate(180deg)}.nav-sub-body{margin-left:var(--sp-2)}.nav-group-body .nav-item{padding-left:var(--sp-2);padding-right:var(--sp-2);font-weight:500}.sidebar-footer{padding:var(--sp-3);border-top:1px solid var(--border);flex-shrink:0}.sidebar-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:var(--bg-overlay);border:0;animation:fadeIn .15s ease}.app-main{flex:1 1 auto;min-width:0;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:var(--sp-4) var(--sp-3);padding-bottom:var(--sp-7)}@media (min-width: 1024px){.sidebar{position:relative;flex:0 0 var(--sidebar-width);height:auto;transform:none;max-width:none;box-shadow:none}.sidebar-overlay,.menu-toggle,.sidebar-header .icon-btn.close-btn{display:none}.topbar{padding:0 var(--sp-5)}.user-name{display:block}.app-main{padding:var(--sp-5)}}@media (min-width: 640px) and (max-width: 1023px){.app-main{padding:var(--sp-5) var(--sp-4)}}.auth-page{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:var(--sp-4);background:radial-gradient(circle at 15% 15%,var(--accent-soft),transparent 45%),radial-gradient(circle at 85% 85%,var(--accent-soft),transparent 45%),var(--bg)}.auth-card{width:100%;max-width:25rem;padding:var(--sp-5);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.auth-logo{display:grid;place-items:center;width:3.25rem;height:3.25rem;margin:0 auto var(--sp-3);border-radius:var(--radius-lg);background:var(--accent);color:var(--accent-text);font-size:var(--text-xl);font-weight:800}.auth-title{text-align:center;margin-bottom:var(--sp-1)}.auth-subtitle{text-align:center;color:var(--text-muted);font-size:var(--text-sm);margin-bottom:var(--sp-5)}.auth-footer{margin-top:var(--sp-4);padding-top:var(--sp-4);border-top:1px solid var(--border);text-align:center;font-size:var(--text-xs);color:var(--text-muted)}.auth-controls{position:fixed;top:var(--sp-3);right:var(--sp-3);display:flex;gap:var(--sp-1);z-index:10}.font-control{position:relative}.font-panel{position:absolute;top:calc(100% + var(--sp-2));right:0;width:15rem;padding:var(--sp-4);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:70;animation:popIn .14s ease}.font-slider{width:100%;height:var(--tap-target);accent-color:var(--accent);cursor:pointer}.font-stepper{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);margin-top:var(--sp-2)}.font-value{font-variant-numeric:tabular-nums;font-weight:700;font-size:var(--text-base);min-width:3.5rem;text-align:center}.font-preview{margin-top:var(--sp-3);padding:var(--sp-3);background:var(--bg-sunken);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--text-muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--tap-target);padding:var(--sp-2) var(--sp-4);border:1px solid transparent;border-radius:var(--radius);background:var(--accent);color:var(--accent-text);font-family:inherit;font-size:var(--text-sm);font-weight:600;line-height:1.2;cursor:pointer;white-space:nowrap;transition:background var(--transition),border-color var(--transition),transform var(--transition),opacity var(--transition);-webkit-tap-highlight-color:transparent}.btn:hover:not(:disabled){background:var(--accent-hover)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-secondary{background:var(--bg-elevated);color:var(--text);border-color:var(--border-strong)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover)}.btn-ghost{background:transparent;color:var(--text-muted);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(.92);background:var(--danger)}.btn-success{background:var(--success);color:#fff}.btn-success:hover:not(:disabled){filter:brightness(.92);background:var(--success)}.btn-sm{min-height:2.25rem;padding:var(--sp-1) var(--sp-3);font-size:var(--text-xs)}.btn-block{width:100%}.btn-icon{padding:var(--sp-2);min-width:var(--tap-target)}.btn-group{display:flex;gap:var(--sp-2);flex-wrap:wrap}.action-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);width:2.25rem;height:2.25rem;padding:0;flex-shrink:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);color:var(--text-muted);text-decoration:none;cursor:pointer;transition:background var(--transition),color var(--transition),border-color var(--transition);-webkit-tap-highlight-color:transparent}.action-btn:hover{background:var(--bg-hover);border-color:currentColor;text-decoration:none}.action-btn:disabled{opacity:.45;cursor:not-allowed}.action-btn.action-info{color:var(--info)}.action-btn.action-accent{color:var(--accent)}.action-btn.action-warning{color:var(--warning)}.action-btn.action-success{color:var(--success)}.action-btn.action-danger{color:var(--danger)}.action-btn.action-info:hover{background:var(--info-bg)}.action-btn.action-accent:hover{background:var(--accent-soft)}.action-btn.action-warning:hover{background:var(--warning-bg)}.action-btn.action-success:hover{background:var(--success-bg)}.action-btn.action-danger:hover{background:var(--danger-bg)}.action-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.col-actions .btn-group{flex-wrap:nowrap;justify-content:flex-end}@media (max-width: 767px){.action-btn{width:var(--tap-target);height:var(--tap-target)}}.form-group{display:flex;flex-direction:column;gap:var(--sp-1);margin-bottom:var(--sp-4)}.form-label{font-size:var(--text-sm);font-weight:600;color:var(--text)}.form-label .required{color:var(--danger);margin-left:.15em}.form-control{width:100%;min-height:var(--tap-target);padding:var(--sp-2) var(--sp-3);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-elevated);color:var(--text);font-family:inherit;font-size:var(--text-base);transition:border-color var(--transition),box-shadow var(--transition);-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-control::placeholder{color:var(--text-faint)}.form-control:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.form-control:disabled{background:var(--bg-sunken);cursor:not-allowed;opacity:.7}.form-control.is-invalid{border-color:var(--danger)}textarea.form-control{min-height:6rem;resize:vertical;line-height:1.5}select.form-control{background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 1.1rem) 55%,calc(100% - .75rem) 55%;background-size:.35rem .35rem,.35rem .35rem;background-repeat:no-repeat;padding-right:var(--sp-6)}.form-error{font-size:var(--text-xs);color:var(--danger)}.form-hint{font-size:var(--text-xs);color:var(--text-muted)}.computed-field{display:flex;align-items:center;min-height:var(--tap-target);padding:var(--sp-2) var(--sp-3);border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--bg-sunken);font-size:var(--text-sm)}.form-check{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--tap-target);cursor:pointer;-webkit-user-select:none;user-select:none}.form-check input[type=checkbox],.form-check input[type=radio]{width:1.15rem;height:1.15rem;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.form-grid{display:grid;grid-template-columns:1fr;gap:0 var(--sp-4)}.form-grid .span-2{grid-column:1 / -1}@media (min-width: 640px){.form-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1200px){.form-grid{grid-template-columns:repeat(3,1fr)}}.form-page{max-width:78rem;margin-inline:auto}.form-page .page-header{margin-bottom:var(--sp-4)}.form-page .stack{gap:var(--sp-3)}.form-page .card-header{padding:var(--sp-3) var(--sp-4);background:var(--bg-sunken)}.form-page .card-body{padding:var(--sp-4)}.form-page .card-title{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-base)}.form-page .card-title:before{content:"";width:3px;height:1.1em;flex-shrink:0;background:var(--accent);border-radius:2px}.form-page .form-group{margin-bottom:var(--sp-3)}.form-page .form-label{font-size:var(--text-xs)}.form-page .form-hint,.form-page .form-error{line-height:1.35}.form-page .alert{margin-bottom:var(--sp-3)}.form-page .card-body>p:first-child{margin-bottom:var(--sp-3)}.form-page .card-body>.form-grid:last-child .form-group:last-child,.form-page .card-body>.form-grid>.form-group:nth-last-child(-n+1){margin-bottom:0}@media (min-width: 768px){.form-page{display:flex;flex-direction:column;height:100%;min-height:0}.form-page>.page-header,.form-page>.alert{flex-shrink:0}.form-body{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}.form-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-gutter:stable;padding-right:var(--sp-2)}.form-scroll>*{flex-shrink:0}.form-page .form-actions{position:static;flex-shrink:0;margin-top:var(--sp-3)}.app-main:has(>.form-page){padding-bottom:var(--sp-4)}}.form-actions{position:sticky;bottom:var(--sp-3);z-index:30;display:flex;gap:var(--sp-2);align-items:center;padding:var(--sp-3) var(--sp-4);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.form-actions .btn{flex:0 0 auto}.form-actions .form-actions-note{flex:1 1 auto;font-size:var(--text-xs);color:var(--text-muted)}@media (max-width: 639px){.form-actions{bottom:0;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.form-actions .btn{flex:1 1 auto}.form-actions .form-actions-note{display:none}}@media (pointer: fine){.form-control{min-height:2.5rem}.form-page .form-group{margin-bottom:var(--sp-2)}.form-page .card-body{padding:var(--sp-3) var(--sp-4)}}.datepicker{position:relative;width:100%}.datepicker-field{position:relative;display:flex;align-items:center}.datepicker-input{padding-right:var(--sp-7);font-variant-numeric:tabular-nums}.datepicker-trigger{position:absolute;right:var(--sp-1);display:grid;place-items:center;width:2.25rem;height:2.25rem;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);font-size:var(--text-base);cursor:pointer;transition:background var(--transition)}.datepicker-trigger:hover:not(:disabled){background:var(--bg-hover)}.datepicker-trigger:disabled{opacity:.5;cursor:not-allowed}.datepicker-popup{position:fixed;z-index:2500;width:19rem;max-width:calc(100vw - 1rem);padding:var(--sp-3);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:popIn .14s ease}.datepicker-header{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3)}.datepicker-nav{display:grid;place-items:center;width:2.25rem;height:2.25rem;flex-shrink:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text);font-size:var(--text-lg);line-height:1;cursor:pointer;transition:background var(--transition),border-color var(--transition)}.datepicker-nav:hover{background:var(--bg-hover);border-color:var(--border-strong)}.datepicker-selects{display:flex;gap:var(--sp-1);flex:1 1 auto;min-width:0}.datepicker-select{flex:1 1 auto;min-width:0;height:2.25rem;padding:0 var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-sunken);color:var(--text);font-family:inherit;font-size:var(--text-sm);font-weight:600;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:center}.datepicker-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.datepicker-select option{background:var(--bg-elevated);color:var(--text)}.datepicker-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:var(--sp-1)}.datepicker-weekdays span{text-align:center;font-size:var(--text-xs);font-weight:700;color:var(--text-faint);padding:var(--sp-1) 0}.datepicker-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.datepicker-day{display:grid;place-items:center;aspect-ratio:1 / 1;min-height:2.25rem;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text);font-family:inherit;font-size:var(--text-sm);font-variant-numeric:tabular-nums;cursor:pointer;transition:background var(--transition),color var(--transition);-webkit-tap-highlight-color:transparent}.datepicker-day:hover:not(:disabled){background:var(--bg-hover)}.datepicker-day.outside{color:var(--text-faint)}.datepicker-day.today{border-color:var(--accent);font-weight:700;color:var(--accent)}.datepicker-day.selected{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:700}.datepicker-day.selected:hover{background:var(--accent-hover)}.datepicker-day.disabled,.datepicker-day:disabled{opacity:.3;cursor:not-allowed;text-decoration:line-through}.datepicker-footer{display:flex;justify-content:space-between;gap:var(--sp-2);margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border)}.datepicker-action{flex:1 1 auto;min-height:2.25rem;padding:0 var(--sp-3);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-muted);font-family:inherit;font-size:var(--text-sm);font-weight:600;cursor:pointer;transition:background var(--transition),color var(--transition)}.datepicker-action:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.datepicker-action.primary{background:var(--accent-soft);border-color:transparent;color:var(--accent)}.datepicker-action.primary:hover:not(:disabled){background:var(--accent-soft);filter:brightness(1.1)}.datepicker-action:disabled{opacity:.5;cursor:not-allowed}@media (max-width: 767px){.datepicker-popup{width:20.5rem;padding:var(--sp-4)}.datepicker-day{min-height:2.5rem;font-size:var(--text-base)}.datepicker-action,.datepicker-nav,.datepicker-select{min-height:var(--tap-target);height:var(--tap-target)}}.lookup-trigger{display:flex;align-items:center;gap:var(--sp-2);width:100%;min-height:var(--tap-target);padding:var(--sp-2) var(--sp-3);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-elevated);color:var(--text);font-family:inherit;font-size:var(--text-base);text-align:left;cursor:pointer;transition:border-color var(--transition),box-shadow var(--transition)}.lookup-trigger:hover:not(:disabled){border-color:var(--accent)}.lookup-trigger:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.lookup-trigger:disabled{background:var(--bg-sunken);cursor:not-allowed;opacity:.7}.lookup-trigger.is-invalid{border-color:var(--danger)}.lookup-value{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lookup-placeholder{flex:1 1 auto;color:var(--text-faint)}.lookup-caret{flex-shrink:0;color:var(--text-muted)}.lookup-clear{display:grid;place-items:center;width:1.25rem;height:1.25rem;flex-shrink:0;border-radius:50%;background:var(--bg-sunken);color:var(--text-muted);font-size:var(--text-sm);line-height:1;cursor:pointer}.lookup-clear:hover{background:var(--danger-bg);color:var(--danger)}.lookup-add{display:flex;gap:var(--sp-2);align-items:stretch;margin-top:var(--sp-2);padding-bottom:var(--sp-3);border-bottom:1px solid var(--border)}.lookup-add .form-control{flex:1 1 auto;min-width:0}.lookup-add .btn{flex:0 0 auto}.lookup-list{display:flex;flex-direction:column;gap:2px;max-height:20rem;overflow-y:auto;margin-top:var(--sp-2)}.lookup-option{display:flex;align-items:center;gap:var(--sp-2);border-radius:var(--radius-sm)}.lookup-option:hover{background:var(--bg-hover)}.lookup-option.selected{background:var(--accent-soft)}.lookup-option.editing{padding:var(--sp-1);gap:var(--sp-2)}.lookup-option.editing .form-control{flex:1 1 auto;min-width:0}.lookup-option .btn-group{flex-wrap:nowrap;flex-shrink:0;padding-right:var(--sp-1)}.lookup-option-pick{display:flex;align-items:center;gap:var(--sp-2);flex:1 1 auto;min-width:0;min-height:var(--tap-target);padding:var(--sp-2) var(--sp-3);border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text);font-family:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer}.lookup-option.selected .lookup-option-pick{color:var(--accent);font-weight:650}.lookup-check{display:grid;place-items:center;width:1rem;height:1rem;flex-shrink:0;color:var(--accent)}.lookup-add.multi{flex-wrap:wrap}.lookup-add.multi .form-control{min-width:5rem}.lookup-add.multi .btn{flex:0 0 auto}.lookup-edit-fields{display:flex;gap:var(--sp-2);flex:1 1 auto;min-width:0}.lookup-edit-fields .form-control{flex:1 1 0;min-width:0}.lookup-edit-fields.multi{flex-wrap:wrap}.lookup-edit-fields.multi .form-control{min-width:5rem}.lookup-option.editing{flex-wrap:wrap}.lookup-option-sub{display:block;margin-top:1px;color:var(--text-muted);font-size:var(--text-xs);font-weight:400}.picker-table{display:flex;flex-direction:column;max-height:24rem;overflow-y:auto;margin-top:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius)}.picker-head,.picker-filters,.picker-row{display:grid;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3)}.picker-sticky{position:sticky;top:0;z-index:2;background:var(--bg-sunken);border-bottom:1px solid var(--border)}.picker-head{padding-bottom:var(--sp-1)}.picker-filters{padding-top:0}.picker-th{display:flex;align-items:center;gap:var(--sp-1);min-width:0;padding:var(--sp-1) 0;border:0;background:transparent;color:var(--text-muted);font-family:inherit;font-size:var(--text-xs);font-weight:650;text-transform:uppercase;letter-spacing:.03em;text-align:left;cursor:pointer;transition:color var(--transition)}.picker-th:hover{color:var(--text)}.picker-th.sorted{color:var(--accent)}.picker-th.num{justify-content:flex-end}.picker-th-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-filter{width:100%;min-width:0;min-height:1.85rem;padding:2px var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text);font-family:inherit;font-size:var(--text-xs)}.picker-filter::placeholder{color:var(--text-faint)}.picker-filter:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.picker-row{width:100%;min-height:var(--tap-target);border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);font-family:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer;transition:background var(--transition)}.picker-row:last-child{border-bottom:0}.picker-row:hover{background:var(--bg-hover)}.picker-row.selected{background:var(--accent-soft)}.picker-row.selected .picker-key{color:var(--accent)}.picker-check{display:grid;place-items:center;width:100%;color:var(--accent)}.picker-cell{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-cell.num{text-align:right;font-variant-numeric:tabular-nums}.picker-key{font-weight:650}.picker-note{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-2);font-size:var(--text-xs);color:var(--text-muted)}.picker-clear{display:inline-flex;align-items:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-muted);font-family:inherit;font-size:var(--text-xs);cursor:pointer}.picker-clear:hover{background:var(--bg-hover);color:var(--danger)}@media (min-width: 640px){.picker-head,.picker-filters,.picker-row{grid-template-columns:var(--picker-cols, 1rem repeat(auto-fit, minmax(0, 1fr)))}}@media (max-width: 639px){.picker-head,.picker-filters{display:none}.picker-row{grid-template-columns:1rem minmax(0,1fr) auto;row-gap:1px;padding:var(--sp-2)}.picker-row>:nth-child(1){grid-column:1;grid-row:1}.picker-row>:nth-child(2){grid-column:2;grid-row:1}.picker-row>:nth-child(3){grid-column:2;grid-row:2}.picker-row>:nth-child(4){grid-column:2;grid-row:3}.picker-row>:nth-child(5){grid-column:2;grid-row:4}.picker-row>:nth-child(6){grid-column:2;grid-row:5}.picker-row>:last-child{grid-column:3;grid-row:1}.picker-row>:nth-child(n+3){font-size:var(--text-xs);color:var(--text-muted)}}.field-group{border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-4);margin-bottom:var(--sp-4);background:var(--bg-sunken)}.field-group:last-child{margin-bottom:0}.field-group-title{display:flex;align-items:center;gap:var(--sp-2);margin:0 0 var(--sp-4);font-size:var(--text-sm);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.field-group-title:after{content:"";flex:1 1 auto;height:1px;background:var(--border)}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;padding:var(--sp-4);border-bottom:1px solid var(--border)}.card-title{margin:0;font-size:var(--text-lg);font-weight:650}.card-body{padding:var(--sp-4)}.card-footer{padding:var(--sp-4);border-top:1px solid var(--border);background:var(--bg-sunken)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:var(--sp-3)}.stat-card{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.stat-icon{display:grid;place-items:center;width:2.75rem;height:2.75rem;flex-shrink:0;border-radius:var(--radius);background:var(--accent-soft);color:var(--accent);font-size:var(--text-lg)}.stat-value{font-size:var(--text-xl);font-weight:700;line-height:1.15}.stat-label{font-size:var(--text-xs);color:var(--text-muted)}.badge{display:inline-flex;align-items:center;gap:.3em;padding:.2em .65em;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;line-height:1.6;white-space:nowrap;background:var(--bg-sunken);color:var(--text-muted)}.badge-success{background:var(--success-bg);color:var(--success)}.badge-warning{background:var(--warning-bg);color:var(--warning)}.badge-danger{background:var(--danger-bg);color:var(--danger)}.badge-info{background:var(--info-bg);color:var(--info)}.badge-accent{background:var(--accent-soft);color:var(--accent)}.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.data-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.data-table thead th{position:sticky;top:0;z-index:1;padding:var(--sp-3);text-align:left;font-weight:650;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);background:var(--bg-sunken);border-bottom:1px solid var(--border);white-space:nowrap}.data-table tbody td{padding:var(--sp-3);border-bottom:1px solid var(--border);vertical-align:middle;color:var(--text)}.data-table tbody tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:var(--bg-hover)}.data-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.data-table th.sortable:hover{color:var(--text)}.sort-arrow{margin-left:.25em;opacity:.7;vertical-align:-.15em}.col-actions{width:1%;white-space:nowrap;text-align:right}.list-page>.page-header,.list-page>.filter-bar,.list-page>.alert{flex-shrink:0}@media (min-width: 768px){.list-page{display:flex;flex-direction:column;height:100%;min-height:0}.app-main:has(>.list-page){padding-bottom:var(--sp-4)}.list-scroll{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elevated);overflow:hidden}.list-scroll>.table-wrap{flex:1 1 auto;min-height:0;overflow:auto}.list-scroll>.empty-state{flex:1 1 auto;justify-content:center;overflow-y:auto}.list-footer{flex-shrink:0;padding-top:var(--sp-2)}.list-footer .pagination{padding-top:var(--sp-2)}}.data-cards{display:flex;flex-direction:column;gap:var(--sp-3)}.data-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--sp-4)}.data-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-3);padding-bottom:var(--sp-3);border-bottom:1px solid var(--border)}.data-card-title{font-weight:650;font-size:var(--text-base);overflow-wrap:anywhere}.data-card-subtitle{font-size:var(--text-xs);color:var(--text-muted)}.data-card-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-1) 0}.data-card-label{font-size:var(--text-xs);color:var(--text-muted);flex-shrink:0}.data-card-value{font-size:var(--text-sm);text-align:right;overflow-wrap:anywhere;min-width:0}.data-card-actions{display:flex;gap:var(--sp-2);margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border);flex-wrap:nowrap}.data-card-actions .btn{flex:1 1 auto}.data-card-actions .action-btn{flex:0 0 auto}.picker-form{padding:var(--sp-2) 0}.picker-toolbar{padding:var(--sp-2) var(--sp-1);border-bottom:1px solid var(--border);margin-top:var(--sp-2)}.picker-check input[type=checkbox]{width:1.15rem;height:1.15rem;flex-shrink:0;accent-color:var(--accent);cursor:pointer}.enrollment-students{display:flex;flex-direction:column;gap:var(--sp-1)}.enrollment-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated)}.enrollment-row:hover{border-color:var(--border-strong)}.enrollment-index{flex-shrink:0;width:1.75rem;text-align:center;font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--text-faint)}.enrollment-student{display:flex;flex-direction:column;flex:1 1 auto;min-width:0}.enrollment-name{font-size:var(--text-sm);font-weight:600;overflow-wrap:anywhere}.enrollment-meta{font-size:var(--text-xs);color:var(--text-muted);overflow-wrap:anywhere}.enrollment-roll{flex:0 0 6rem}.enrollment-roll .form-control{text-align:center;font-variant-numeric:tabular-nums}@media (max-width: 639px){.enrollment-row{flex-wrap:wrap}.enrollment-student{flex:1 1 100%;order:1}.enrollment-index{order:0}.enrollment-roll{flex:1 1 auto;order:2}}.month-cal-year{flex:1 1 auto;text-align:center;font-weight:700;font-size:var(--text-lg);font-variant-numeric:tabular-nums}.month-cal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2);margin-top:var(--sp-3)}@media (min-width: 480px){.month-cal-grid{grid-template-columns:repeat(4,1fr)}}.month-cal-cell{display:grid;place-items:center;min-height:2.75rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);color:var(--text);font-family:inherit;font-size:var(--text-sm);cursor:pointer;transition:background var(--transition),color var(--transition),border-color var(--transition);-webkit-tap-highlight-color:transparent}.month-cal-cell:hover{background:var(--bg-hover);border-color:var(--border-strong)}.month-cal-cell.is-now:not(.selected){border-color:var(--accent);color:var(--accent);font-weight:650}.month-cal-cell.selected{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:650}.month-cal-actions{display:flex;justify-content:flex-end;margin-top:var(--sp-2)}.month-cal-actions.is-split{justify-content:space-between}.month-cal-link{border:0;background:transparent;color:var(--accent);font-family:inherit;font-size:var(--text-xs);font-weight:600;padding:var(--sp-1) var(--sp-2);cursor:pointer}.month-cal-link:hover{text-decoration:underline}.month-cal-selected{display:flex;flex-wrap:wrap;gap:var(--sp-1);margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border)}.month-cal-chip{display:inline-flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);border:1px solid var(--accent);border-radius:var(--radius-full);background:var(--accent-soft);color:var(--accent);font-family:inherit;font-size:var(--text-xs);font-weight:600;cursor:pointer}.month-cal-chip:hover{background:var(--danger-bg);border-color:var(--danger);color:var(--danger)}.qr-box{display:inline-grid;place-items:center;flex-shrink:0;background:#fff;border-radius:2px}.qr-box svg{width:100%;height:100%;display:block}.portal-share{display:flex;align-items:flex-start;gap:var(--sp-4);flex-wrap:wrap}.student-qr{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3)}.student-qr .portal-link{width:100%}.portal-link{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.portal-link code{flex:1 1 14rem;min-width:0;overflow-wrap:anywhere;font-size:var(--text-xs)}.portal-page{min-height:100vh;min-height:100dvh;padding:var(--sp-4) var(--sp-3) var(--sp-7);background:var(--bg-sunken)}.portal-card{max-width:34rem;margin-inline:auto}.portal-head{padding:var(--sp-4);margin-bottom:var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elevated);text-align:center}.portal-school{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.portal-name{margin:var(--sp-2) 0 var(--sp-1);font-size:var(--text-xl)}.portal-meta{font-size:var(--text-sm);color:var(--text-muted)}.portal-balance{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-4);margin-bottom:var(--sp-4);border-radius:var(--radius-lg)}.portal-balance.due{background:var(--danger-bg);color:var(--danger)}.portal-balance.clear{background:var(--success-bg);color:var(--success)}.portal-balance-label{font-size:var(--text-sm);font-weight:600}.portal-balance-value{font-size:var(--text-2xl);font-weight:800}.portal-section{margin:var(--sp-5) 0 var(--sp-3);font-size:var(--text-base)}.portal-vouchers{display:flex;flex-direction:column;gap:var(--sp-3)}.portal-lines{display:flex;flex-direction:column;gap:var(--sp-1);margin-top:var(--sp-3);font-size:var(--text-sm)}.portal-payable{padding-top:var(--sp-2);margin-top:var(--sp-1);border-top:1px solid var(--border);font-size:var(--text-base)}.portal-dates{margin-top:var(--sp-3);font-size:var(--text-xs);color:var(--text-muted)}.portal-foot{margin-top:var(--sp-5);text-align:center;font-size:var(--text-xs);color:var(--text-faint)}.portal-child{padding:var(--sp-4);margin-bottom:var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elevated)}.portal-child-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-3)}.portal-child-name{margin:0 0 var(--sp-1);font-size:var(--text-lg)}.portal-child-balance{display:flex;flex-direction:column;align-items:flex-end;gap:2px;padding:var(--sp-2) var(--sp-3);border-radius:var(--radius);white-space:nowrap}.portal-child-balance.due{background:var(--danger-bg);color:var(--danger)}.portal-child-balance.clear{background:var(--success-bg);color:var(--success)}.portal-child-balance strong{font-size:var(--text-lg)}.recovery-summary{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;padding:var(--sp-3);margin-bottom:var(--sp-3);border-radius:var(--radius);background:var(--bg-sunken)}.recovery-due{display:flex;flex-direction:column;align-items:flex-end;gap:2px;padding:var(--sp-2) var(--sp-3);border-radius:var(--radius);white-space:nowrap}.recovery-due.due{background:var(--danger-bg);color:var(--danger)}.recovery-due.clear{background:var(--success-bg);color:var(--success)}.recovery-due strong{font-size:var(--text-xl)}.recovery-lines{display:flex;flex-direction:column;gap:var(--sp-1);margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border);font-size:var(--text-sm)}.recovery-after{padding-top:var(--sp-2);margin-top:var(--sp-1);border-top:1px dashed var(--border-strong);font-size:var(--text-base)}.voucher-totals{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-4);flex-wrap:wrap;padding:var(--sp-2) var(--sp-3);margin-bottom:var(--sp-3);border-radius:var(--radius);background:var(--bg-sunken);font-size:var(--text-sm)}@media (min-width: 768px){.report-page{display:flex;flex-direction:column;height:100%;min-height:0}.report-page>*{flex-shrink:0}.app-main:has(>.report-page){padding-bottom:var(--sp-4)}.report-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-gutter:stable}.report-scroll>*{flex-shrink:0}.report-page>.empty-state{flex:1 1 auto;justify-content:center}}.report-page>.filter-bar .form-group{flex:1 1 16rem;min-width:0;margin-bottom:0}.report-page>.filter-bar .form-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.report-table{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elevated);overflow:hidden}.report-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;padding:var(--sp-2) var(--sp-3);margin-bottom:var(--sp-3);border-radius:var(--radius);background:var(--bg-sunken);font-size:var(--text-sm)}.report-who{display:flex;flex-direction:column;gap:1px;min-width:0}.report-who-name{font-weight:650;overflow-wrap:anywhere}.report-who-meta{font-size:var(--text-xs);color:var(--text-muted);overflow-wrap:anywhere}.report-figures{display:flex;align-items:center;gap:var(--sp-4);flex-wrap:wrap}.report-figure{display:flex;flex-direction:column;align-items:flex-end;gap:1px;white-space:nowrap}.report-figure>span{font-size:var(--text-xs);color:var(--text-muted)}.report-figure>strong{font-variant-numeric:tabular-nums}.report-figure.is-closing{padding:var(--sp-1) var(--sp-3);border-radius:var(--radius)}.report-figure.is-closing.due{background:var(--danger-bg);color:var(--danger)}.report-figure.is-closing.clear{background:var(--success-bg);color:var(--success)}.report-figure.is-closing>strong{font-size:var(--text-lg)}.report-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border);font-size:var(--text-sm)}.report-foot-figures{display:flex;align-items:center;gap:var(--sp-4);flex-wrap:wrap;font-variant-numeric:tabular-nums}.report-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-1);flex:1 1 auto;min-height:16rem;padding:var(--sp-6) var(--sp-4);text-align:center;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elevated)}.report-loading-bar{position:relative;width:min(18rem,70%);height:3px;margin-top:var(--sp-3);overflow:hidden;border-radius:var(--radius-full);background:var(--bg-sunken)}.report-loading-bar:after{content:"";position:absolute;inset-block:0;width:40%;border-radius:var(--radius-full);background:var(--accent);animation:report-loading-slide 1.1s ease-in-out infinite}@keyframes report-loading-slide{0%{left:-40%}to{left:100%}}@media (prefers-reduced-motion: reduce){.report-loading-bar:after{animation:none;left:0;width:100%;opacity:.5}}.data-table tbody tr.ledger-bf td{background:var(--bg-sunken);font-style:italic;color:var(--text-muted)}@media (max-width: 767px){.report-bar,.report-foot{align-items:flex-start}.report-figures{gap:var(--sp-3)}.report-table{border:0;background:none}}.mode-switch{display:grid;grid-template-columns:1fr;gap:var(--sp-2)}@media (min-width: 640px){.mode-switch{grid-template-columns:1fr 1fr}}.mode-option{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-1);padding:var(--sp-3) var(--sp-4);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-elevated);color:var(--text-muted);font-family:inherit;text-align:left;cursor:pointer;transition:border-color var(--transition),background var(--transition),color var(--transition)}.mode-option:hover{background:var(--bg-hover)}.mode-option.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.mode-option-title{font-size:var(--text-sm);font-weight:650}.mode-option-note{font-size:var(--text-xs);color:var(--text-muted);font-weight:400}.fee-rows{display:flex;flex-direction:column;gap:var(--sp-1)}.fee-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated)}.fee-row:hover{border-color:var(--border-strong)}.fee-index{flex-shrink:0;width:1.75rem;text-align:center;font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--text-faint)}.fee-student{display:flex;flex-direction:column;flex:1 1 10rem;min-width:0}.fee-name{font-size:var(--text-sm);font-weight:600;overflow-wrap:anywhere}.fee-meta{font-size:var(--text-xs);color:var(--text-muted);overflow-wrap:anywhere}.fee-amount{flex:0 0 8rem}.fee-amount .form-control{text-align:right;font-variant-numeric:tabular-nums}.fee-remarks{flex:1 1 9rem;min-width:0}.fee-result{display:flex;align-items:center;justify-content:flex-end;flex:0 0 7.5rem;font-size:var(--text-xs);white-space:nowrap}.seg-toggle{display:inline-flex;flex-shrink:0;border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden}.seg-btn{min-height:2.25rem;padding:var(--sp-1) var(--sp-3);border:0;background:var(--bg-elevated);color:var(--text-muted);font-family:inherit;font-size:var(--text-xs);font-weight:600;cursor:pointer;transition:background var(--transition),color var(--transition);-webkit-tap-highlight-color:transparent}.seg-btn+.seg-btn{border-left:1px solid var(--border-strong)}.seg-btn:hover{background:var(--bg-hover)}.seg-btn.seg-danger.active{background:var(--danger);color:#fff}.seg-btn.seg-success.active{background:var(--success);color:#fff}.seg-btn.seg-accent.active{background:var(--accent);color:var(--accent-text)}.seg-btn.seg-info.active{background:var(--info);color:#fff}.seg-btn.active:hover{filter:brightness(.94)}@media (max-width: 767px){.fee-row{flex-wrap:wrap}.fee-index{order:0}.fee-student{flex:1 1 100%;order:1}.seg-toggle{order:2}.fee-amount{flex:1 1 6rem;order:3}.fee-result{flex:0 0 auto;order:4}.fee-remarks{flex:1 1 100%;order:5}.seg-btn{min-height:var(--tap-target);flex:1 1 auto}}.import-progress{padding:var(--sp-2) 0}.import-counts{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2);margin:var(--sp-4) 0}.import-count{display:flex;flex-direction:column;align-items:center;padding:var(--sp-2);background:var(--bg-sunken);border-radius:var(--radius)}.import-count-value{font-size:var(--text-lg);font-weight:700;font-variant-numeric:tabular-nums}.import-count-label{font-size:var(--text-xs);color:var(--text-muted)}.import-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-2)}@media (min-width: 640px){.import-summary{grid-template-columns:repeat(4,1fr)}}.import-stat{display:flex;flex-direction:column;align-items:center;padding:var(--sp-3) var(--sp-2);background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--radius)}.import-stat-value{font-size:var(--text-xl);font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}.import-stat-label{font-size:var(--text-xs);color:var(--text-muted)}.import-stat.success{background:var(--success-bg);border-color:transparent}.import-stat.success .import-stat-value{color:var(--success)}.import-stat.info{background:var(--info-bg);border-color:transparent}.import-stat.info .import-stat-value{color:var(--info)}.import-stat.danger{background:var(--danger-bg);border-color:transparent}.import-stat.danger .import-stat-value{color:var(--danger)}.import-reasons{display:flex;flex-direction:column;gap:var(--sp-1);max-height:18rem;overflow-y:auto}.import-reason{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.import-reason-head{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-3);border:0;background:var(--bg-elevated);color:var(--text);font-family:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer}.import-reason-head:hover{background:var(--bg-hover)}.import-reason-head .badge{flex-shrink:0}.import-reason-rows{padding:var(--sp-2) var(--sp-3);background:var(--bg-sunken);border-top:1px solid var(--border);font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.pagination{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-4) 0 0}.pagination-info{font-size:var(--text-xs);color:var(--text-muted)}.page-btn{min-width:var(--tap-target);min-height:var(--tap-target);padding:0 var(--sp-2);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-elevated);color:var(--text);font-size:var(--text-sm);cursor:pointer;transition:background var(--transition)}.page-btn:hover:not(:disabled){background:var(--bg-hover)}.page-btn:disabled{opacity:.45;cursor:not-allowed}.page-btn.active{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:650}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:flex-end;justify-content:center;background:var(--bg-overlay);padding:0;animation:fadeIn .15s ease}.modal{width:100%;max-height:92vh;display:flex;flex-direction:column;background:var(--bg-elevated);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:var(--shadow-lg);animation:slideUp .2s ease}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-4);border-bottom:1px solid var(--border);flex-shrink:0}.modal-title{margin:0;font-size:var(--text-lg);font-weight:650}.modal-body{padding:var(--sp-4);overflow-y:auto;flex:1 1 auto}.modal-footer{display:flex;gap:var(--sp-2);padding:var(--sp-4);border-top:1px solid var(--border);flex-shrink:0}.modal-footer .btn{flex:1 1 auto}@media (min-width: 640px){.modal-overlay{align-items:center;padding:var(--sp-4)}.modal{max-width:34rem;border-radius:var(--radius-lg);animation:popIn .18s ease}.modal-lg{max-width:52rem}.modal-footer{justify-content:flex-end}.modal-footer .btn{flex:0 0 auto}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes popIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.toast-container{position:fixed;left:var(--sp-3);right:var(--sp-3);bottom:var(--sp-3);z-index:2000;display:flex;flex-direction:column;gap:var(--sp-2);pointer-events:none}.toast{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius);border-left:4px solid var(--accent);background:var(--bg-elevated);box-shadow:var(--shadow-lg);font-size:var(--text-sm);pointer-events:auto;animation:slideUp .18s ease}.toast-success{border-left-color:var(--success)}.toast-error{border-left-color:var(--danger)}.toast-warning{border-left-color:var(--warning)}.toast-close{margin-left:auto;background:none;border:0;color:var(--text-faint);cursor:pointer;font-size:var(--text-lg);line-height:1}@media (min-width: 640px){.toast-container{left:auto;right:var(--sp-4);bottom:var(--sp-4);max-width:24rem;width:100%}}.empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);padding:var(--sp-7) var(--sp-4);text-align:center;color:var(--text-muted)}.empty-icon{display:grid;place-items:center;color:var(--text-faint);opacity:.75}.spinner{width:1.5rem;height:1.5rem;border:2.5px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.spinner-lg{width:2.5rem;height:2.5rem;border-width:3px}.spinner-center{margin:var(--sp-7) auto}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--bg-sunken) 25%,var(--bg-hover) 50%,var(--bg-sunken) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--radius-sm);height:1rem}@keyframes shimmer{to{background-position:-200% 0}}.alert{display:flex;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius);font-size:var(--text-sm);margin-bottom:var(--sp-4);background:var(--bg-sunken);color:var(--text);border-left:4px solid var(--border-strong)}.error-list{margin:var(--sp-2) 0 0;padding-left:var(--sp-4)}.error-list li{margin-top:2px}.alert-success{background:var(--success-bg);color:var(--success);border-left-color:var(--success)}.alert-danger{background:var(--danger-bg);color:var(--danger);border-left-color:var(--danger)}.alert-warning{background:var(--warning-bg);color:var(--warning);border-left-color:var(--warning)}.alert-info{background:var(--info-bg);color:var(--info);border-left-color:var(--info)}.filter-bar{display:grid;grid-template-columns:1fr;gap:var(--sp-2);margin-bottom:var(--sp-4)}@media (min-width: 640px){.filter-bar{display:flex;flex-wrap:wrap;align-items:center}.filter-bar .form-control{width:auto;min-width:9rem}.filter-bar .search-input{flex:1 1 14rem;min-width:0}.filter-bar .datepicker{flex:0 0 auto;width:10rem}.filter-bar .datepicker .form-control{width:100%;min-width:0}.filter-bar .form-group{margin-bottom:0}}@media (min-width: 640px){.filter-bar .filter-lg{flex:0 0 16rem;min-width:16rem}.filter-bar .filter-break{flex:1 1 100%;min-width:0}.filter-bar .filter-end{margin-left:auto}}.check-inline{display:inline-flex;align-items:center;gap:var(--sp-2);white-space:nowrap;font-size:var(--text-sm);color:var(--text-muted);cursor:pointer}.check-inline input{margin:0;cursor:pointer}.page-header{display:flex;flex-direction:column;gap:var(--sp-3);margin-bottom:var(--sp-5)}.page-title{margin:0;font-size:var(--text-xl);font-weight:700}.page-subtitle{margin:0;font-size:var(--text-sm);color:var(--text-muted)}.page-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap}.page-actions .btn{flex:1 1 auto}@media (min-width: 768px){.page-header{flex-direction:row;align-items:center;justify-content:space-between}.page-title{font-size:var(--text-2xl)}.page-actions .btn{flex:0 0 auto}}.attendance-list{display:flex;flex-direction:column;gap:var(--sp-3)}.attendance-card{padding:var(--sp-3) var(--sp-4);background:var(--bg-elevated);border:1px solid var(--border);border-left:4px solid var(--border);border-radius:var(--radius);transition:border-color var(--transition)}.attendance-card.status-present{border-left-color:var(--success)}.attendance-card.status-absent{border-left-color:var(--danger)}.attendance-card.status-late{border-left-color:var(--warning)}.attendance-card.status-leave{border-left-color:var(--info)}.attendance-name{font-weight:650;overflow-wrap:anywhere}.attendance-meta{font-size:var(--text-xs);color:var(--text-muted)}.status-toggle{display:flex;gap:var(--sp-2);margin-top:var(--sp-3);flex-wrap:wrap}.status-btn{flex:1 1 4rem;min-height:var(--tap-target);padding:var(--sp-1) var(--sp-2);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-elevated);color:var(--text-muted);font-family:inherit;font-size:var(--text-xs);font-weight:600;cursor:pointer;transition:all var(--transition)}.status-btn:hover{background:var(--bg-hover)}.status-btn.active.present{background:var(--success);border-color:var(--success);color:#fff}.status-btn.active.absent{background:var(--danger);border-color:var(--danger);color:#fff}.status-btn.active.late{background:var(--warning);border-color:var(--warning);color:#fff}.status-btn.active.leave{background:var(--info);border-color:var(--info);color:#fff}.timetable-day{margin-bottom:var(--sp-4)}.timetable-day-title{font-size:var(--text-sm);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin-bottom:var(--sp-2)}.period-card{display:flex;gap:var(--sp-3);padding:var(--sp-3);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:var(--sp-2)}.period-time{flex-shrink:0;width:5.5rem;font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums}.period-subject{font-weight:650;overflow-wrap:anywhere}.period-meta{font-size:var(--text-xs);color:var(--text-muted)}.progress{height:.5rem;background:var(--bg-sunken);border-radius:var(--radius-full);overflow:hidden}.progress-bar{height:100%;background:var(--accent);border-radius:var(--radius-full);transition:width .4s ease}.progress-bar.success{background:var(--success)}.progress-bar.warning{background:var(--warning)}.progress-bar.danger{background:var(--danger)}.printable{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-5)}.print-header{text-align:center;border-bottom:2px solid var(--border-strong);padding-bottom:var(--sp-4);margin-bottom:var(--sp-4)}.print-school{font-size:var(--text-xl);font-weight:700}.print-meta{display:grid;grid-template-columns:1fr;gap:var(--sp-2);margin-bottom:var(--sp-4)}@media (min-width: 640px){.print-meta{grid-template-columns:1fr 1fr}}.print-row{display:flex;gap:var(--sp-2);font-size:var(--text-sm)}.print-row strong{min-width:7rem;color:var(--text-muted);font-weight:600}@media print{.printable{border:0;box-shadow:none;padding:0}}.datepicker-popup.month-popup{width:17rem;max-width:calc(100vw - 1rem)}.chart{position:relative}.chart-svg{display:block;width:100%;height:auto;overflow:visible}.chart-grid{stroke:var(--chart-grid);stroke-width:1}.chart-tick{fill:var(--text-muted);font-size:10px;font-family:inherit;font-variant-numeric:tabular-nums}.chart-line{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.chart-crosshair{stroke:var(--border-strong);stroke-width:1;stroke-dasharray:3 3}.chart-dot{stroke:var(--bg-elevated);stroke-width:2}.chart-legend{display:flex;gap:var(--sp-4);flex-wrap:wrap;margin-bottom:var(--sp-3);font-size:var(--text-xs);color:var(--text-muted)}.chart-key{display:inline-flex;align-items:center;gap:var(--sp-2)}.chart-swatch{width:.75rem;height:.75rem;border-radius:3px;flex-shrink:0}.chart-tip{position:absolute;top:var(--sp-5);transform:translate(-50%);min-width:9rem;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);box-shadow:var(--shadow-lg);font-size:var(--text-xs);pointer-events:none;z-index:5}.chart-tip-title{font-weight:650;margin-bottom:var(--sp-1)}.chart-tip-row{display:flex;align-items:center;gap:var(--sp-2);color:var(--text-muted)}.chart-tip-row strong{margin-left:auto;color:var(--text);font-variant-numeric:tabular-nums}.chart-donut{display:flex;align-items:center;gap:var(--sp-5);flex-wrap:wrap}.chart-donut-ring{position:relative;flex-shrink:0}.chart-donut-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.chart-donut-track{fill:none;stroke:var(--bg-sunken)}.chart-donut-seg{fill:none;stroke-linecap:butt;transition:stroke-width var(--transition);cursor:pointer}.chart-donut-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;pointer-events:none}.chart-donut-value{font-size:var(--text-lg);font-weight:700;font-variant-numeric:tabular-nums}.chart-donut-label{font-size:var(--text-xs);color:var(--text-muted)}.chart-donut-keys{flex:1 1 10rem;display:flex;flex-direction:column;gap:var(--sp-2);margin:0;padding:0;list-style:none;min-width:0}.chart-donut-key{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);border-radius:var(--radius);font-size:var(--text-sm);cursor:pointer}.chart-donut-key.is-hover{background:var(--bg-hover)}.chart-donut-key-name{color:var(--text-muted);overflow-wrap:anywhere}.chart-donut-key-val{margin-left:auto;font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap}.chart-donut-key-val small{margin-left:var(--sp-2);color:var(--text-faint);font-weight:400}.chart-donut-empty{display:grid;place-items:center;min-height:10rem}.chart-meter{display:flex;flex-direction:column;gap:var(--sp-2)}.chart-meter-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3)}.chart-meter-value{font-size:var(--text-xl);font-weight:700;font-variant-numeric:tabular-nums}.chart-meter-of{font-size:var(--text-xs);color:var(--text-muted)}.chart-meter-track{height:.5rem;border-radius:var(--radius-full);background:var(--bg-sunken);overflow:hidden}.chart-meter-fill{height:100%;border-radius:var(--radius-full);background:var(--chart-2);transition:width var(--transition)}.chart-bars{display:flex;flex-direction:column;gap:var(--sp-3)}.chart-bar-row{display:flex;align-items:center;gap:var(--sp-3)}.chart-bar-name{flex:0 0 6rem;font-size:var(--text-sm);overflow-wrap:anywhere}.chart-bar-track{flex:1 1 auto;height:.5rem;border-radius:var(--radius-full);background:var(--bg-sunken);overflow:hidden}.chart-bar-fill{height:100%;border-radius:var(--radius-full);background:var(--chart-1)}.chart-bar-val{flex:0 0 3rem;text-align:right;font-size:var(--text-sm);font-weight:650;font-variant-numeric:tabular-nums}.dash-page{display:flex;flex-direction:column;gap:var(--sp-4)}.dash-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:var(--sp-3)}.dash-kpi{position:relative;display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);border-radius:var(--radius-lg);overflow:hidden;color:#fff;text-decoration:none;box-shadow:var(--shadow-sm);transition:transform var(--transition),box-shadow var(--transition)}a.dash-kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);text-decoration:none;color:#fff}.dash-kpi:after{content:"";position:absolute;right:-1.5rem;top:-1.5rem;width:7rem;height:7rem;border-radius:50%;background:#ffffff1f;pointer-events:none}.dash-kpi:before{content:"";position:absolute;right:1.5rem;bottom:-2.5rem;width:5rem;height:5rem;border-radius:50%;background:#ffffff14;pointer-events:none}.dash-kpi-icon{display:grid;place-items:center;flex-shrink:0;width:2.75rem;height:2.75rem;border-radius:var(--radius);background:#fff3;z-index:1}.dash-kpi-body{min-width:0;z-index:1}.dash-kpi-label{display:block;font-size:var(--text-xs);font-weight:650;letter-spacing:.05em;text-transform:uppercase;opacity:.9;overflow-wrap:anywhere}.dash-kpi-value{display:block;font-size:var(--text-2xl);font-weight:700;line-height:1.15;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.dash-kpi-note{display:inline-block;margin-top:2px;font-size:var(--text-xs);opacity:.85}.dash-kpi-note.is-urgent{padding:0 .4em;border-radius:var(--radius);background:#ffffff38;opacity:1;font-weight:650}.dash-kpi.g-blue{background:linear-gradient(135deg,#2563eb,#1d4ed8)}.dash-kpi.g-purple{background:linear-gradient(135deg,#9333ea,#7e22ce)}.dash-kpi.g-amber{background:linear-gradient(135deg,#b45309,#92400e)}.dash-kpi.g-green{background:linear-gradient(135deg,#047857,#065f46)}.dash-kpi.g-teal{background:linear-gradient(135deg,#0f766e,#115e59)}.dash-kpi.g-red{background:linear-gradient(135deg,#dc2626,#b91c1c)}.dash-kpi.g-orange{background:linear-gradient(135deg,#c2410c,#9a3412)}.dash-kpi.g-indigo{background:linear-gradient(135deg,#4f46e5,#4338ca)}.dash-panel{min-width:0;border-radius:var(--radius-lg);background:var(--bg-elevated);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.dash-panel-head{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border)}.dash-panel-title{display:flex;align-items:center;gap:var(--sp-2);margin:0;font-size:var(--text-base);font-weight:650}.dash-panel-title:before{content:"";width:3px;height:1.1em;flex-shrink:0;border-radius:2px;background:var(--accent)}.dash-panel-title small{font-size:var(--text-xs);font-weight:400;color:var(--text-muted)}.dash-panel-body{padding:var(--sp-4)}.dash-panel-head+.dash-panel-body{padding-top:var(--sp-4)}.dash-more{margin-left:auto;font-size:var(--text-xs);color:var(--accent);white-space:nowrap}.dash-duo{display:grid;grid-template-columns:1fr;gap:var(--sp-3)}@media (min-width: 1000px){.dash-duo{grid-template-columns:1fr 1fr}.dash-duo.is-wide-left{grid-template-columns:1.6fr 1fr}}.dash-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.dash-table th{padding:var(--sp-2) var(--sp-4);text-align:left;font-size:var(--text-xs);font-weight:650;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--bg-sunken);white-space:nowrap}.dash-table td{padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--border);vertical-align:middle}.dash-table tbody tr:hover{background:var(--bg-hover)}.dash-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.dash-table-wrap{overflow-x:auto}.dash-stack{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0}.promo-list{display:flex;flex-direction:column;gap:var(--sp-1);max-height:26rem;overflow-y:auto}.promo-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);cursor:pointer}.promo-row:hover{border-color:var(--border-strong)}.promo-row input[type=checkbox]{width:1.15rem;height:1.15rem;flex-shrink:0;accent-color:var(--accent);cursor:pointer}.promo-row.is-blocked{cursor:default;background:var(--bg-sunken);opacity:.75}.promo-row.is-blocked:hover{border-color:var(--border)}.promo-row.is-blocked input[type=checkbox]{cursor:default}.promo-roll{flex-shrink:0;width:2.25rem;text-align:center;font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--text-faint)}.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1)}.timeline-row{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-2);border-radius:var(--radius-sm)}.timeline-row:hover{background:var(--bg-hover)}.timeline-dot{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border-radius:50%;background:var(--bg-sunken);color:var(--text-muted)}.timeline-dot.tone-accent{background:var(--accent-soft);color:var(--accent)}.timeline-dot.tone-info{background:var(--info-bg);color:var(--info)}.timeline-dot.tone-success{background:var(--success-bg);color:var(--success)}.timeline-dot.tone-warning{background:var(--warning-bg);color:var(--warning)}.timeline-dot.tone-danger{background:var(--danger-bg);color:var(--danger)}.timeline-when{flex-shrink:0;width:6rem;font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--text-faint);padding-top:.15rem}.timeline-detail{display:block;font-size:var(--text-xs);color:var(--text-muted)}@media (max-width: 640px){.timeline-row{flex-wrap:wrap}.timeline-when{width:auto;order:3;padding-left:2.4rem}}.report-cell-note{display:block;font-size:var(--text-xs);color:var(--text-muted);margin-top:1px}.activity-table .col-date{width:7rem;white-space:nowrap}.activity-table .col-kind{width:11rem}.activity-table .col-ref{width:11rem;color:var(--text-muted);font-size:var(--text-xs)}.activity-table .col-amount{width:8rem;text-align:right;font-variant-numeric:tabular-nums}.activity-what{font-weight:550}.activity-year>th{background:var(--bg-sunken);font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;color:var(--text-muted);padding:var(--sp-1) var(--sp-3);text-align:left}.activity-year-count{float:right;font-weight:500;text-transform:none;letter-spacing:0}.activity-table tfoot td{border-top:1px solid var(--border-strong);font-weight:600;padding-top:var(--sp-2);padding-bottom:var(--sp-2)}.activity-table tfoot tr:last-child td{border-top:none;padding-top:0}.attend-list{display:flex;flex-direction:column;gap:var(--sp-1)}.attend-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated)}.attend-row:hover{border-color:var(--border-strong)}.attend-roll{flex-shrink:0;width:2.25rem;text-align:center;font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--text-faint)}.attend-btn{min-width:2.5rem;font-weight:650;font-variant-numeric:tabular-nums}.attend-btn.is-present.active{background:var(--success-bg);color:var(--success)}.attend-btn.is-absent.active{background:var(--danger-bg);color:var(--danger)}.attend-btn.is-leave.active{background:var(--warning-bg);color:var(--warning)}.attend-btn.is-late.active{background:var(--info-bg);color:var(--info)}@media (max-width: 640px){.attend-row{flex-wrap:wrap}.attend-row .seg-toggle{width:100%}.attend-btn{flex:1 1 0}}.attend-board{display:grid;grid-template-columns:1fr;gap:var(--sp-2)}@media (min-width: 640px){.attend-board{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.attend-board{grid-template-columns:repeat(3,1fr)}}.attend-card{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);text-align:left;font:inherit;color:inherit;cursor:pointer}.attend-card:hover{border-color:var(--border-strong)}.attend-card.is-pending{border-style:dashed;background:var(--bg-sunken)}.attend-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}.attend-card-name{font-weight:650}.attend-card-foot{display:flex;flex-wrap:wrap;gap:var(--sp-2);font-size:var(--text-xs)}.attend-day{display:flex;align-items:center;gap:var(--sp-2);min-width:0}.attend-day-label{font-size:var(--text-xs);color:var(--text-muted)}.attend-day-bar{width:8rem}.attend-day-pct{font-variant-numeric:tabular-nums}.attend-leave-note{display:block;font-size:var(--text-xs);color:var(--warning);margin-top:1px}.season-grid{display:grid;grid-template-columns:1fr;gap:var(--sp-3)}@media (min-width: 900px){.season-grid{grid-template-columns:1fr 1fr}}.season-box{padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken)}.slot-scroll{overflow-x:auto}.slot-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.slot-table th,.slot-table td{padding:var(--sp-1) var(--sp-2);text-align:left;vertical-align:middle}.slot-table thead th{font-size:var(--text-xs);font-weight:650;color:var(--text-muted);border-bottom:1px solid var(--border);white-space:nowrap}.slot-col-season{text-align:center!important}.slot-now{color:var(--success);font-weight:650}.slot-table tbody tr{border-bottom:1px solid var(--border)}.slot-nonclass{background:var(--bg-sunken)}.slot-col-name{min-width:9rem}.slot-col-kind{min-width:8rem}.slot-col-move,.slot-col-act{width:1%;white-space:nowrap}.slot-move{display:flex;flex-direction:column;gap:1px}.slot-table input[type=time]{min-width:6.5rem}.tt-fill{display:block;min-width:9rem}.tt-fill .progress{margin-bottom:2px}.tt-days .seg-btn{position:relative}.tt-day-dot{position:absolute;top:3px;right:4px;width:5px;height:5px;border-radius:50%;background:var(--accent)}.seg-btn.active .tt-day-dot{background:currentColor}.tt-copy{max-width:11rem}.tt-rows{display:flex;flex-direction:column;gap:var(--sp-1)}.tt-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated)}.tt-row:hover{border-color:var(--border-strong)}.tt-row-break{background:var(--bg-sunken);justify-content:space-between}.tt-row-off{opacity:.6}.tt-slot{flex:0 0 8.5rem;display:flex;flex-direction:column;line-height:1.25}.tt-time{font-size:var(--text-xs);color:var(--text-faint);font-variant-numeric:tabular-nums}.tt-pick{flex:1 1 10rem;min-width:0}.tt-pick .form-group{margin-bottom:0}.tt-pick-room{flex:0 1 9rem}@media (max-width: 720px){.tt-row{flex-wrap:wrap}.tt-slot,.tt-pick{flex:1 1 100%}}.tt-grid{width:100%;border-collapse:collapse;font-size:var(--text-sm);background:var(--bg-elevated)}.tt-grid th,.tt-grid td{border:1px solid var(--border);padding:var(--sp-2);vertical-align:top;text-align:center}.tt-grid thead th{background:var(--bg-sunken);font-size:var(--text-xs);font-weight:650;color:var(--text-muted);white-space:nowrap}.tt-grid-slot{text-align:left!important;background:var(--bg-sunken);white-space:nowrap}.tt-grid-name{display:block;font-weight:650}.tt-grid-time{display:block;font-size:var(--text-xs);color:var(--text-faint);font-variant-numeric:tabular-nums}.tt-grid-break td{background:var(--bg-sunken);font-weight:650;color:var(--text-muted);letter-spacing:.04em}.tt-grid-empty{color:var(--text-faint)}.tt-cell-subject{display:block;font-weight:650}.tt-cell-teacher{display:block;font-size:var(--text-xs);color:var(--text-muted)}.tt-cell-room{display:block;font-size:var(--text-xs);color:var(--text-faint)}.slot-sub{display:block;font-weight:500;color:var(--text-faint);text-transform:none;letter-spacing:0}.slot-mins{min-width:4.5rem;text-align:center;font-variant-numeric:tabular-nums}.slot-col-last{min-width:9rem}.slot-col-clock{min-width:8.5rem;white-space:nowrap}.tt-clock{font-variant-numeric:tabular-nums;color:var(--accent)}.tt-clock-grid td,.tt-clock-grid th{padding:var(--sp-1) var(--sp-2)}.tt-clock-grid td{font-variant-numeric:tabular-nums;font-size:var(--text-xs)}.tt-offdays{display:grid;grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr));gap:var(--sp-2)}.tt-offday{display:flex;flex-direction:column;gap:1px;padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated)}.tt-offday.is-shut{background:var(--bg-sunken);opacity:.7}.tt-offday-note{font-size:var(--text-xs);color:var(--text-faint);font-variant-numeric:tabular-nums;padding-left:1.6rem}.seg-btn.is-off{opacity:.45;text-decoration:line-through}.tt-daybar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);flex-wrap:wrap;padding-bottom:var(--sp-3);margin-bottom:var(--sp-3);border-bottom:1px solid var(--border)}.tt-daytime{font-variant-numeric:tabular-nums}@media (max-width: 639px){.tt-daybar{flex-direction:column;align-items:stretch}.tt-daybar .tt-days{justify-content:space-between}}.tt-timings{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-3)}.tt-timing{display:flex;flex-direction:column;padding:var(--sp-1) var(--sp-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken);line-height:1.3}.tt-timing-day{font-size:var(--text-xs);color:var(--text-muted);font-weight:650}.tt-timing-range{font-size:var(--text-sm);font-variant-numeric:tabular-nums}.tt-cell-time{display:block;font-size:var(--text-xs);color:var(--accent);font-variant-numeric:tabular-nums}.edu-rows{display:flex;flex-direction:column;gap:var(--sp-3)}.edu-row{padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken)}.edu-row .form-group{margin-bottom:0}.edu-row-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-2)}.edu-no{display:grid;place-items:center;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--bg-elevated);border:1px solid var(--border);font-size:var(--text-xs);font-weight:650;color:var(--text-muted)}.edu-chips{display:flex;flex-wrap:wrap;gap:var(--sp-1);max-width:34rem}.edu-chip{display:flex;flex-direction:column;padding:2px var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken);line-height:1.3}.edu-chip-level{font-size:var(--text-xs);font-weight:650}.edu-chip-degree{font-size:var(--text-xs);color:var(--text-muted)}.edu-chip-meta{font-size:.68rem;color:var(--text-faint);font-variant-numeric:tabular-nums}.pay-rows{display:flex;flex-direction:column;gap:var(--sp-2)}.pay-row{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated)}.pay-row:hover{border-color:var(--border-strong)}.pay-row.is-dup{border-color:var(--warning);background:var(--warning-bg)}.pay-pick{flex:1 1 12rem;min-width:0}.pay-pick .form-group{margin-bottom:0}.pay-amount{flex:0 1 9rem}.pay-amount .form-control{text-align:right;font-variant-numeric:tabular-nums}.pay-remarks{flex:1 1 10rem;min-width:0}@media (max-width: 720px){.pay-row{flex-wrap:wrap}.pay-pick,.pay-amount,.pay-remarks{flex:1 1 100%}}.pay-total{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);margin-top:var(--sp-3);padding:var(--sp-3);border-top:2px solid var(--border-strong);font-size:var(--text-sm);color:var(--text-muted)}.pay-total strong{font-size:var(--text-lg);color:var(--text);font-variant-numeric:tabular-nums}.pay-chips{display:flex;flex-wrap:wrap;gap:var(--sp-1);max-width:32rem}.pay-chip{display:flex;flex-direction:column;padding:2px var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken);line-height:1.3}.pay-chip-name{font-size:.68rem;color:var(--text-muted)}.pay-chip-amount{font-size:var(--text-xs);font-weight:650;font-variant-numeric:tabular-nums}.pay-gross{font-variant-numeric:tabular-nums}.attend-btn.is-half_day.active{background:var(--accent-soft);color:var(--accent)}.pay-deduct{color:var(--danger);font-variant-numeric:tabular-nums;white-space:nowrap}.pay-unpaid{color:var(--warning)}.card-body.card-flush{padding:0}.card-body.card-flush .data-table thead th{border-radius:0}.att-chips{display:flex;flex-wrap:wrap;gap:3px}.att-chip{padding:1px var(--sp-2);border-radius:var(--radius);font-size:var(--text-xs);font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap}.att-chip b{font-weight:650}.att-chip.is-present{background:var(--success-bg);color:var(--success)}.att-chip.is-absent{background:var(--danger-bg);color:var(--danger)}.att-chip.is-leave{background:var(--warning-bg);color:var(--warning)}.att-chip.is-half{background:var(--accent-soft);color:var(--accent)}.att-chip.is-late{background:var(--info-bg);color:var(--info)}.att-desig{display:block;font-size:var(--text-xs);color:var(--text-muted)}.paper-scroll{overflow-x:auto}.paper-rows{display:flex;flex-direction:column;gap:var(--sp-1);min-width:61rem;padding:var(--sp-2)}.paper-row{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated)}.paper-row:hover{border-color:var(--border-strong)}.paper-row.paper-head{padding-top:0;padding-bottom:var(--sp-1);border:0;background:none;font-size:var(--text-xs);font-weight:650;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.paper-row.paper-head:hover{border-color:transparent}.paper-row.is-dragging{opacity:.45}.paper-row.is-over{border-color:var(--accent);box-shadow:inset 0 2px 0 var(--accent)}.paper-grip{flex:0 0 1.6rem;display:flex;align-items:center;justify-content:center;padding-top:var(--sp-2);color:var(--text-faint);cursor:grab;touch-action:none}.paper-grip:active{cursor:grabbing}.paper-head .paper-grip{padding-top:0}.paper-no{flex:0 0 1.6rem;padding-top:var(--sp-2);font-size:var(--text-xs);color:var(--text-faint);font-variant-numeric:tabular-nums}.paper-head .paper-no{padding-top:0}.paper-where,.paper-subject,.paper-day{padding-top:var(--sp-2);min-width:0;font-size:var(--text-sm)}.paper-head .paper-where,.paper-head .paper-subject,.paper-head .paper-day{padding-top:0}.paper-where{flex:0 0 8rem}.paper-subject{flex:1 1 9rem;font-weight:600}.paper-day{flex:0 0 5.5rem;color:var(--text-muted)}.paper-marks{flex:0 0 5rem}.paper-marks .form-control{text-align:right;font-variant-numeric:tabular-nums}.paper-date{flex:0 0 9rem}.paper-time{flex:0 0 6.5rem}.paper-act{flex:0 0 7rem;display:flex;align-items:center;gap:2px;padding-top:var(--sp-1)}.subject-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));gap:var(--sp-1) var(--sp-3);margin-top:var(--sp-2)}.form-check.is-used{opacity:.55;cursor:not-allowed}.exam-bar{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken);font-size:var(--text-sm)}.exam-bar-facts{display:flex;gap:var(--sp-4);flex-wrap:wrap;font-variant-numeric:tabular-nums}.exam-fact-label{display:block;font-size:var(--text-xs);color:var(--text-faint);text-transform:uppercase;letter-spacing:.03em}.exam-block{margin-bottom:var(--sp-4);break-inside:avoid;page-break-inside:avoid}.exam-block-title{margin:0 0 var(--sp-2);padding-bottom:var(--sp-1);border-bottom:2px solid var(--border-strong);font-size:var(--text-base)}.exam-sheet{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.exam-sheet th,.exam-sheet td{padding:var(--sp-2);border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.exam-sheet thead th{background:var(--bg-sunken);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted)}.exam-col-no{width:2.5rem;color:var(--text-faint)}.exam-col-date,.exam-col-day,.exam-col-time{width:8rem;white-space:nowrap}.exam-col-marks{width:6rem;text-align:right;font-variant-numeric:tabular-nums}.exam-sheet .exam-col-marks{text-align:right}.exam-subject{font-weight:600}.exam-tba{color:var(--text-faint);font-style:italic}.print-foot{display:none}.slip{padding:var(--sp-4);margin-bottom:var(--sp-4);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-elevated);break-inside:avoid;page-break-inside:avoid}.slip-title{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;margin:var(--sp-2) 0 var(--sp-3);padding-top:var(--sp-2);border-top:2px solid var(--border-strong);font-size:var(--text-sm);font-weight:700;text-transform:uppercase;letter-spacing:.04em}.slip-exam{font-weight:600;text-transform:none;letter-spacing:0}.slip-body{display:flex;align-items:flex-start;gap:var(--sp-4);flex-wrap:wrap;margin-bottom:var(--sp-3)}.slip-roll{flex:0 0 auto;min-width:7rem;padding:var(--sp-2) var(--sp-3);border:2px solid var(--border-strong);border-radius:var(--radius);text-align:center}.slip-roll-label{display:block;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.slip-roll-value{display:block;font-size:var(--text-2xl);font-weight:700;line-height:1.3;font-variant-numeric:tabular-nums}.slip-roll-blank{display:inline-block;width:4rem;border-bottom:1px dashed var(--text-faint)}.slip-facts{flex:1 1 16rem;display:grid;grid-template-columns:auto 1fr;gap:2px var(--sp-3);margin:0;font-size:var(--text-sm)}.slip-facts dt{color:var(--text-muted)}.slip-facts dd{margin:0;font-weight:600;overflow-wrap:anywhere}.slip-papers{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.slip-papers th,.slip-papers td{padding:var(--sp-1) var(--sp-2);border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.slip-papers thead th{background:var(--bg-sunken);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted)}.slip-none,.slip-note{margin:var(--sp-2) 0 0;font-size:var(--text-sm);color:var(--text-muted)}.slip-sign{display:flex;justify-content:space-between;gap:var(--sp-4);margin-top:var(--sp-5);font-size:var(--text-xs);color:var(--text-muted)}.slip-sign span{flex:0 1 12rem;padding-top:var(--sp-1);border-top:1px solid var(--border-strong);text-align:center}.slip-foot{display:flex;justify-content:space-between;gap:var(--sp-3);margin-top:var(--sp-2);font-size:.68rem;color:var(--text-faint)}.grade-scroll{overflow-x:auto}.grade-rows{display:flex;flex-direction:column;gap:var(--sp-1);min-width:34rem;padding:var(--sp-2)}.grade-row{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated)}.grade-row:hover{border-color:var(--border-strong)}.grade-row.grade-head{padding-top:0;padding-bottom:var(--sp-1);border:0;background:none;font-size:var(--text-xs);font-weight:650;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.grade-row.grade-head:hover{border-color:transparent}.grade-pct{flex:0 0 7rem}.grade-pct .form-control{text-align:center;font-variant-numeric:tabular-nums}.grade-name{flex:0 0 6rem}.grade-name .form-control{text-align:center;font-weight:650}.grade-remarks{flex:1 1 12rem;min-width:0}.grade-act{flex:0 0 2.5rem;display:flex;align-items:center;padding-top:2px}.grade-hint{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:var(--sp-3);margin:var(--sp-3) 0}.grade-hint>div{padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken)}.grade-hint p{margin-top:var(--sp-1)}.mark-scroll{overflow-x:auto}.mark-rows{display:flex;flex-direction:column;gap:var(--sp-1);min-width:52rem;padding:var(--sp-2)}.mark-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated)}.mark-row:hover{border-color:var(--border-strong)}.mark-row.is-absent{background:var(--bg-sunken);opacity:.75}.mark-row.mark-head{padding-top:0;padding-bottom:var(--sp-1);border:0;background:none;font-size:var(--text-xs);font-weight:650;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.mark-row.mark-head:hover{border-color:transparent}.mark-roll{flex:0 0 3rem;font-variant-numeric:tabular-nums;color:var(--text-muted)}.mark-name{flex:1 1 11rem;min-width:0;font-weight:600}.mark-total{flex:0 0 4rem;text-align:center;font-variant-numeric:tabular-nums;color:var(--text-muted)}.mark-obt{flex:0 0 7rem}.mark-obt .form-control{text-align:center;font-variant-numeric:tabular-nums;font-weight:650}.mark-pct{flex:0 0 4.5rem;text-align:right;font-variant-numeric:tabular-nums}.mark-grade{flex:0 0 6rem;line-height:1.25}.mark-absent{flex:0 0 4rem;display:flex;justify-content:center}.mark-absent .form-check{margin:0}.mark-remarks{flex:1 1 9rem;min-width:0}.mark-stats{display:flex;gap:var(--sp-5);flex-wrap:wrap;font-size:var(--text-sm);font-variant-numeric:tabular-nums}.res-progress{min-width:9rem}.res-progress-top{display:flex;align-items:baseline;gap:var(--sp-2);margin-bottom:3px;font-variant-numeric:tabular-nums}.result-sheet{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.result-sheet th,.result-sheet td{padding:var(--sp-1) var(--sp-2);border-bottom:1px solid var(--border);border-right:1px solid var(--border);text-align:center;vertical-align:middle;white-space:nowrap}.result-sheet th:last-child,.result-sheet td:last-child{border-right:0}.result-sheet thead th{position:sticky;top:0;z-index:2;background:var(--bg-sunken);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted)}.result-sheet .res-roll,.result-sheet .res-name{position:sticky;z-index:1;background:var(--bg-elevated);text-align:left}.result-sheet .res-roll{left:0;width:3.5rem}.result-sheet .res-name{left:3.5rem;min-width:12rem}.result-sheet thead .res-roll,.result-sheet thead .res-name{z-index:3;background:var(--bg-sunken)}.result-sheet .res-roll{font-variant-numeric:tabular-nums;color:var(--text-muted)}.res-sub-name{display:block;font-weight:650}.res-sub-max{display:block;font-size:.65rem;font-weight:400;color:var(--text-faint)}.result-sheet .res-sub,.result-sheet .res-num{font-variant-numeric:tabular-nums}.result-sheet .res-num{text-align:right}.res-of{font-size:var(--text-xs);color:var(--text-faint)}.result-sheet .res-grade{line-height:1.25}.res-blank{color:var(--text-faint)}.res-absent{color:var(--danger);font-weight:650}.result-sheet tr.is-pending,.result-sheet tr.is-pending .res-roll,.result-sheet tr.is-pending .res-name{background:var(--bg-sunken)}.card-sheet{display:flex;flex-direction:column;gap:4mm;padding:5mm;margin:0 auto;background:#fff;color:#000;border:1px solid var(--border);border-radius:var(--radius)}.card-sheet.sheet-a4{width:210mm;min-height:297mm}.card-sheet.sheet-a5{width:148mm;min-height:210mm}@media screen and (max-width: 1000px){.card-sheet{width:100%;min-width:0;min-height:0}}.card-sheet.sheet-a5 .result-card{font-size:8.5pt}.card-sheet.sheet-a4 .result-card{font-size:11.5pt}.result-card{padding:1.4em;border:1px dashed #999;border-radius:1.5mm;font-size:8.5pt;line-height:1.35;break-inside:avoid;page-break-inside:avoid}.result-card .print-header-img{display:block;width:100%;height:auto;max-height:8.5em;object-fit:contain;object-position:center;margin:0 auto .4em}.result-card .print-head-school{flex-direction:column;align-items:center;gap:.15em;text-align:center}.result-card .print-head-name{font-size:1.5em}.result-card .print-head-sub{font-size:.82em}.rcard-title{display:flex;align-items:baseline;justify-content:space-between;gap:1em;flex-wrap:wrap;margin:.5em 0 .7em;padding-top:.5em;border-top:1.5px solid #000;font-size:.94em;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.rcard-exam{font-weight:600;text-transform:none;letter-spacing:0}.rcard-facts{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:.2em 1em;margin:0 0 .7em}.rcard-facts dt{color:#444;white-space:nowrap}.rcard-facts dd{margin:0;font-weight:600;overflow-wrap:anywhere}.rcard-marks{width:100%;border-collapse:collapse}.rcard-marks th,.rcard-marks td{padding:.35em .7em;border-bottom:1px solid #ccc;text-align:left;vertical-align:top}.rcard-marks thead th{background:#eee;border-bottom:1px solid #000;font-size:.82em;text-transform:uppercase;letter-spacing:.03em;color:#333}.rcard-marks .res-num,.rcard-marks thead .res-num{text-align:right}.rcard-marks .res-grade,.rcard-marks thead .res-grade{text-align:center}.result-card .att-desig{display:inline;margin-left:.5em;color:#666;font-size:.82em}.rcard-marks tfoot th{border-top:1.5px solid #000;border-bottom:0;background:none;font-size:1em;text-transform:none;letter-spacing:0;color:#000;font-variant-numeric:tabular-nums}.rcard-verdict{display:flex;gap:2em;flex-wrap:wrap;margin-top:.7em;padding:.5em .9em;border:1px solid #000;border-radius:1mm}.rcard-verdict strong{font-size:1.12em}.rcard-verdict .exam-fact-label{color:#555}.rcard-pending{margin-top:.7em;padding:.5em .9em;border:1px dashed #000;border-radius:1mm;font-style:italic}.rcard-note{margin:.7em 0 0;color:#444}.rcard-sign{display:flex;justify-content:space-between;gap:1em;margin-top:2.8em;font-size:.82em;color:#333}.rcard-sign span{flex:0 1 12em;padding-top:.35em;border-top:1px solid #000;text-align:center}.rcard-foot{display:flex;justify-content:space-between;gap:1em;margin-top:.5em;font-size:.76em;color:#666}.bill-scroll{overflow-x:auto}.due-rows{display:flex;flex-direction:column;gap:var(--sp-1);min-width:26rem;padding:var(--sp-2)}.due-row{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated)}.due-row:hover{border-color:var(--border-strong)}.due-row.due-head{padding-top:0;padding-bottom:var(--sp-1);border:0;background:none;font-size:var(--text-xs);font-weight:650;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.due-row.due-head:hover{border-color:transparent}.due-no{flex:0 0 1.6rem;padding-top:var(--sp-2);font-size:var(--text-xs);color:var(--text-faint);font-variant-numeric:tabular-nums}.due-head .due-no{padding-top:0}.due-item{display:flex;flex-direction:column;gap:2px;flex:1 1 14rem;min-width:0}.due-item .form-group{margin-bottom:0}.due-num{flex:0 0 9rem}.due-num .form-control,.due-head .due-num{text-align:right}.due-act,.due-head .due-act{flex:0 0 var(--tap-target)}.bill-rows{display:flex;flex-direction:column;gap:var(--sp-1);min-width:52rem;padding:var(--sp-2)}.bill-row{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated)}.bill-row:hover{border-color:var(--border-strong)}.bill-row.bill-head{padding-top:0;padding-bottom:var(--sp-1);border:0;background:none;font-size:var(--text-xs);font-weight:650;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.bill-row.bill-head:hover{border-color:transparent}.bill-no{flex:0 0 1.6rem;padding-top:var(--sp-2);font-size:var(--text-xs);color:var(--text-faint);font-variant-numeric:tabular-nums}.bill-head .bill-no{padding-top:0}.bill-item{flex:1 1 14rem;min-width:0}.bill-item .form-group{margin-bottom:0}.bill-uom{flex:0 0 5rem;padding-top:var(--sp-2);font-size:var(--text-sm);color:var(--text-muted)}.bill-head .bill-uom{padding-top:0}.bill-num{flex:0 0 6.5rem}.bill-num .form-control{text-align:right;font-variant-numeric:tabular-nums}.bill-amount{padding-top:var(--sp-2);text-align:right;font-weight:650;font-variant-numeric:tabular-nums}.bill-head .bill-amount{padding-top:0;font-weight:650}.bill-act{flex:0 0 2.5rem;display:flex;align-items:center;padding-top:var(--sp-1)}.bill-net{font-size:var(--text-xl);font-variant-numeric:tabular-nums}@page{margin:6mm}.print-toolbar{display:flex;align-items:flex-end;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-4);padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elevated)}.print-toolbar .form-group{margin-bottom:0;min-width:11rem}.print-sheets{display:flex;flex-direction:column;gap:var(--sp-4)}.voucher-sheet{display:grid;grid-template-columns:repeat(var(--copies, 3),1fr);gap:4mm;padding:4mm;background:#fff;color:#000;border:1px solid var(--border);border-radius:var(--radius)}.voucher-sheet.sheet-a4{--copies: 3;width:285mm;min-height:198mm}.voucher-sheet.sheet-a5{--copies: 2;width:198mm;min-height:136mm}@media screen and (max-width: 1200px){.print-sheets{overflow-x:auto}}.voucher-copy{display:flex;flex-direction:column;padding:0;border:1px solid #000;border-radius:1.5mm;overflow:hidden;font-size:8.5pt;line-height:1.3}.vc-band{padding:2mm 3mm 2.5mm;background:#f0f0f0;border-bottom:1px solid #000;text-align:center}.vc-copy-name{display:inline-block;padding:.3mm 3mm;margin-bottom:1.5mm;border-radius:4mm;background:#000;color:#fff;font-size:6.5pt;font-weight:700;text-transform:uppercase;letter-spacing:.12em}.vc-school{font-size:12pt;font-weight:800;line-height:1.15}.vc-sub{font-size:6.8pt;color:#333;margin-top:.5mm}.vc-title{display:flex;align-items:baseline;justify-content:space-between;gap:2mm;padding:1.2mm 3mm;border-bottom:1px solid #000;font-size:8pt;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.vc-ref{font-weight:600;letter-spacing:0;text-transform:none;font-variant-numeric:tabular-nums}.vc-info{display:grid;grid-template-columns:auto 1fr;gap:.6mm 2.5mm;margin:0;padding:2mm 3mm;border-bottom:1px dashed #999}.vc-info dt{font-size:6.8pt;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#555;white-space:nowrap;align-self:center}.vc-info dd{margin:0;font-weight:600}.vc-lines{width:100%;border-collapse:collapse}.vc-lines th{padding:1mm 3mm;background:#f7f7f7;border-bottom:1px solid #000;font-size:6.8pt;font-weight:700;text-transform:uppercase;letter-spacing:.06em;text-align:left;color:#333}.vc-lines td{padding:1.1mm 3mm;border-bottom:1px dotted #ccc}.vc-lines .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.vc-students .sn{width:1%;padding-right:1mm;color:#666;font-variant-numeric:tabular-nums}.vc-students td small{color:#666;font-size:6.2pt}.vc-students tfoot td{padding:.9mm 3mm;border-bottom:0;font-weight:700}.vc-students tfoot tr:first-child td{border-top:1px solid #000;padding-top:1.2mm}.vc-students tfoot tr+tr td{font-weight:600}.vc-spacer{flex:1 1 auto;min-height:4mm}.vc-totals{border-top:1px solid #000}.vc-total-row{display:flex;align-items:baseline;justify-content:space-between;gap:2mm;padding:1.4mm 3mm;font-size:9pt;font-weight:700}.vc-total-row small{font-weight:500;font-size:6.8pt;color:#444}.vc-total-row strong{font-size:11pt;font-variant-numeric:tabular-nums}.vc-total-row.late{border-top:1px dotted #999;background:#fafafa;font-weight:600}.vc-total-row.late strong{font-size:9.5pt}.vc-words{padding:1mm 3mm 1.5mm;border-top:1px dotted #999;font-size:6.8pt;font-style:italic;color:#333}.vc-foot{padding:1.5mm 3mm 2mm;border-top:1px solid #000}.vc-foot-top{display:flex;align-items:flex-start;gap:2mm}.vc-issue{font-size:6.8pt;color:#444}.vc-qr{display:flex;flex-direction:column;align-items:center;gap:.5mm;flex-shrink:0;text-align:center}.vc-qr span{font-size:5.5pt;color:#666;line-height:1.1}.vc-note{margin-top:.8mm;font-size:6.2pt;color:#555;line-height:1.25}.vc-sign{display:flex;justify-content:space-between;gap:4mm;margin-top:7mm;font-size:6.8pt}.vc-sign span{flex:1 1 0;padding-top:.8mm;border-top:1px solid #000;text-align:center;color:#444}.receipt-sheet{display:grid;grid-template-columns:1fr 1fr;gap:4mm;width:285mm;padding:4mm;background:#fff;color:#000;border:1px solid var(--border);border-radius:var(--radius)}@media screen and (max-width: 1200px){.receipt-sheet{width:auto;grid-template-columns:1fr}}.receipt-copy{display:flex;flex-direction:column;min-height:130mm;border:1px solid #000;border-radius:1.5mm;overflow:hidden;font-size:9pt;line-height:1.35}.receipt-copy.is-cancelled{opacity:.75}.rc-band{padding:2mm 3mm 2.5mm;background:#f0f0f0;border-bottom:1px solid #000;text-align:center}.rc-copy-name{display:inline-block;padding:.3mm 3mm;margin-bottom:1.5mm;border-radius:4mm;background:#000;color:#fff;font-size:6.5pt;font-weight:700;text-transform:uppercase;letter-spacing:.12em}.rc-school{font-size:12.5pt;font-weight:800;line-height:1.15}.rc-sub{font-size:7pt;color:#333;margin-top:.5mm}.rc-title{display:flex;align-items:baseline;justify-content:space-between;gap:2mm;padding:1.2mm 3mm;border-bottom:1px solid #000;font-size:8.5pt;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.rc-ref{font-weight:600;letter-spacing:0;text-transform:none;font-variant-numeric:tabular-nums}.rc-void{padding:1mm 3mm;background:#000;color:#fff;font-size:9pt;font-weight:800;letter-spacing:.3em;text-align:center}.rc-info{display:grid;grid-template-columns:auto 1fr;gap:.7mm 2.5mm;margin:0;padding:2mm 3mm;border-bottom:1px dashed #999}.rc-info dt{font-size:7pt;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#555;white-space:nowrap;align-self:center}.rc-info dd{margin:0;font-weight:600}.rc-lines{width:100%;border-collapse:collapse}.rc-lines th{padding:1mm 3mm;background:#f7f7f7;border-bottom:1px solid #000;font-size:7pt;font-weight:700;text-transform:uppercase;letter-spacing:.06em;text-align:left;color:#333}.rc-lines td{padding:1.2mm 3mm;border-bottom:1px dotted #ccc}.rc-lines td small{color:#666;font-size:6.5pt}.rc-lines td small.rc-line-heads{display:block;color:#555}.rc-lines .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.rc-lines .sn{width:6mm;color:#666;text-align:right;font-variant-numeric:tabular-nums}.rc-spacer{flex:1 1 auto;min-height:4mm}.rc-totals{border-top:1px solid #000}.rc-total-row{display:flex;align-items:baseline;justify-content:space-between;gap:2mm;padding:1.4mm 3mm;font-size:9.5pt;font-weight:700}.rc-total-row strong{font-size:12pt;font-variant-numeric:tabular-nums}.rc-total-row.small{border-top:1px dotted #999;background:#fafafa;font-size:8pt;font-weight:600}.rc-total-row.small strong{font-size:9.5pt}.rc-words{padding:1mm 3mm 1.5mm;border-top:1px dotted #999;font-size:7pt;font-style:italic;color:#333}.rc-note{padding:0 3mm 1.5mm;font-size:7pt;color:#555}.rc-sign{display:flex;justify-content:space-between;gap:4mm;margin:7mm 3mm 2.5mm;font-size:7pt}.rc-sign span{flex:1 1 0;padding-top:.8mm;border-top:1px solid #000;text-align:center;color:#444}.jv-sheet{width:190mm;padding:4mm;background:#fff;color:#000;border:1px solid var(--border);border-radius:var(--radius)}@media screen and (max-width: 900px){.jv-sheet{width:auto}}.jv-copy{min-height:0}.jv-copy .table-scroll{padding:0 3mm}.jv-table{font-size:8.5pt}.jv-table th,.jv-table td{padding:1.2mm 2mm}.jv-table tfoot td{border-top:1px solid #000;background:#f0f0f0}@media print{.print-page{padding:0}.receipt-sheet,.jv-sheet{width:auto;padding:0;border:0;border-radius:0}.receipt-copy{break-inside:avoid;page-break-inside:avoid}.jv-copy{break-inside:auto;page-break-inside:auto}.print-sheets{gap:0;overflow:visible}.voucher-sheet{width:auto;min-height:0;border:0;border-radius:0;padding:0;break-after:page;page-break-after:always}.voucher-sheet:last-child{break-after:auto;page-break-after:auto}.voucher-copy{break-inside:avoid;page-break-inside:avoid}}.print-head{display:none}@media print{.topbar,.sidebar,.sidebar-overlay{display:none!important}.app-shell,.app-body,.app-main,.report-page,.report-scroll{display:block!important;height:auto!important;max-height:none!important;min-height:0!important;overflow:visible!important}.report-page>.page-header,.report-page>.filter-bar,.report-page>.report-bar,.report-page .col-actions{display:none!important}.print-head{display:block!important}.report-table{border:0!important;border-radius:0!important;background:none!important}.report-page .data-table thead{display:table-header-group}.report-page .data-table thead th{position:static!important;background:#eee!important;color:#000!important;border-bottom:1px solid #000;-webkit-print-color-adjust:exact;print-color-adjust:exact}.report-page .data-table td,.report-page .data-table th{padding:1.5mm 2mm}.report-page .data-table tr{break-inside:avoid;page-break-inside:avoid}.activity-year>th{background:#f4f4f4!important;color:#000!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.activity-year{break-after:avoid;page-break-after:avoid}.activity-table tfoot{break-inside:avoid;page-break-inside:avoid}.activity-table tfoot td{border-top:1px solid #000}.report-foot{break-inside:avoid;page-break-inside:avoid;border-top:1px solid #000}.report-scroll>.card{break-inside:avoid;page-break-inside:avoid}.exam-bar{display:none!important}.exam-block-title{border-bottom:1.5px solid #000;break-after:avoid;page-break-after:avoid}.exam-sheet thead th{background:#eee!important;color:#000!important;border-bottom:1px solid #000;-webkit-print-color-adjust:exact;print-color-adjust:exact}.exam-sheet th,.exam-sheet td{padding:1.5mm 2mm;border-bottom:1px solid #bbb}.exam-sheet tr{break-inside:avoid;page-break-inside:avoid}.print-foot{display:flex!important;justify-content:space-between;margin-top:8mm;padding-top:2mm;border-top:1px solid #000;font-size:.75rem;color:#222}.slip{height:132mm;box-sizing:border-box;padding:4mm 5mm;margin:0 0 3mm;border:1px dashed #666;border-radius:0;background:none!important;overflow:hidden}.slip:nth-of-type(2n){page-break-after:always;break-after:page}.slip:last-of-type{page-break-after:auto;break-after:auto}.slip-title{border-top-color:#000}.slip-roll{border-color:#000}.slip-papers thead th{background:#eee!important;color:#000!important;border-bottom:1px solid #000;-webkit-print-color-adjust:exact;print-color-adjust:exact}.slip-papers th,.slip-papers td{padding:1mm 2mm;border-bottom:1px solid #bbb}.slip-papers tr{break-inside:avoid;page-break-inside:avoid}.slip-sign span{border-top-color:#000}.report-page:has(.slip) .print-head,.report-page:has(.slip) .print-foot{display:none!important}.result-sheet .res-roll,.result-sheet .res-name,.result-sheet thead th{position:static!important;background:none!important}.result-sheet thead th{background:#eee!important;color:#000!important;border-bottom:1px solid #000;-webkit-print-color-adjust:exact;print-color-adjust:exact}.result-sheet thead{display:table-header-group}.result-sheet th,.result-sheet td{padding:1mm 1.5mm;border:1px solid #999;font-size:.72rem}.result-sheet tr{break-inside:avoid;page-break-inside:avoid}.result-sheet tr.is-pending,.result-sheet tr.is-pending .res-roll,.result-sheet tr.is-pending .res-name{background:none!important}.card-sheet{width:auto!important;min-width:0;min-height:0;margin:0;padding:0;border:0;border-radius:0;gap:5mm;page-break-after:always;break-after:page}.card-sheet:last-of-type{page-break-after:auto;break-after:auto}.result-card{-webkit-print-color-adjust:exact;print-color-adjust:exact}.rcard-marks thead th{background:#eee!important;color:#000!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.report-page:has(.card-sheet) .print-head,.report-page:has(.card-sheet) .print-foot{display:none!important}.paper-a5 .result-sheet th,.paper-a5 .result-sheet td{font-size:.62rem;padding:.7mm 1mm}}.print-head-school{display:flex;align-items:baseline;gap:var(--sp-2);flex-wrap:wrap}.print-head-name{font-size:1.3rem;font-weight:700}.print-head-sub{font-size:.8rem;color:#444}.print-head-title{margin:2mm 0 1mm;padding-top:1.5mm;border-top:2px solid #000;font-size:1.05rem;font-weight:700}.print-head-line{display:flex;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;margin:0 0 2mm;font-size:.8rem;color:#222}@media print{.print-header-img{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.settings-preview{padding:var(--sp-4);border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--bg-sunken)}.settings-preview .receipt-copy{max-width:26rem;margin:0 auto;background:#fff;color:#000}.print-header-img{display:block;width:100%;height:auto;max-width:100%;margin:0 auto}@media print{.tt-grid{width:100%!important;background:none!important;font-size:9pt}.tt-grid th,.tt-grid td{border:1px solid #000!important;padding:1.5mm 1mm!important;color:#000!important}.tt-grid thead th,.tt-grid-slot,.tt-grid-break td{background:#eee!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.tt-grid thead{display:table-header-group}.tt-grid tr{break-inside:avoid;page-break-inside:avoid}.tt-cell-teacher,.tt-cell-room,.tt-grid-time{color:#333!important}}@media print{.tt-timings{display:none!important}.tt-cell-time{color:#333!important;font-size:7.5pt}}
