table,[class*=stat-value],[class*=stat-number],[class*=-count],.tt-time-cell,.badge,.pagination-info{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Material Symbols Rounded;font-style:normal;font-weight:400;font-display:block;src:url(/fonts/material-symbols-subset.woff2)format("woff2")}.material-symbols-rounded{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;direction:ltr;font-family:Material Symbols Rounded;font-size:24px;font-style:normal;font-weight:400;line-height:1;display:inline-block}:root{--background:#f5f7fa;--foreground:#0f172a;--card:#fff;--card-foreground:#0f172a;--card-border:#e2e8f0;--popover:#fff;--popover-foreground:#0f172a;--primary:#003d7a;--primary-hover:#00629e;--primary-foreground:#fff;--chrome-from:#17518c;--chrome-to:#0e3560;--primary-light:#003d7a1a;--secondary:#f3f4f6;--secondary-hover:#e5e7eb;--secondary-foreground:#003d7a;--muted:#f1f5f9;--muted-hover:#e2e8f0;--muted-foreground:#64748b;--accent:#f97316;--accent-hover:#ea580c;--accent-foreground:#fff;--accent-light:#f973161a;--success:#10b981;--success-hover:#059669;--success-foreground:#fff;--success-light:#10b9811a;--warning:#f59e0b;--warning-hover:#d97706;--warning-foreground:#fff;--warning-light:#f59e0b1a;--destructive:#ef4444;--destructive-hover:#dc2626;--destructive-foreground:#fff;--destructive-light:#ef44441a;--danger:#dc2626;--info:#0284c7;--info-hover:#0369a1;--info-foreground:#fff;--info-light:#0284c71a;--border:#e2e8f0;--border-hover:#cbd5e1;--input:#e2e8f0;--ring:#003d7a;--ring-offset:#fff;--radius:.75rem;--radius-sm:.5rem;--radius-md:.75rem;--radius-lg:1rem;--radius-xl:1.5rem;--portal-accent:#003d7a;--portal-accent-light:#003d7a1a;--sidebar-w:264px;--sidebar-w-collapsed:72px;--sidebar:#003d7a;--sidebar-foreground:#fffc;--sidebar-primary:#f97316;--sidebar-primary-foreground:#fff;--sidebar-accent:#00629e;--sidebar-accent-foreground:#fff;--sidebar-border:#ffffff1a;--sidebar-ring:#f97316;--sidebar-background:#ffffff0d;--sidebar-avatar-background:linear-gradient(135deg, #f97316 0%, #ea580c 100%);--scrim:#ffffffa6;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -1px #0000000f;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -2px #0000000d;--shadow-xl:0 20px 25px -5px #0000001a, 0 10px 10px -5px #0000000a;--font-family:"Inter", "Segoe UI", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono:"Fira Code", "Consolas", "Monaco", monospace;--font-xs:.75rem;--font-sm:.875rem;--font-base:1rem;--font-lg:1.125rem;--font-xl:1.25rem;--font-2xl:1.5rem;--font-3xl:1.875rem;--font-4xl:2.25rem;--transition-fast:.15s ease;--transition-base:.2s ease;--transition-slow:.3s ease;--hover-lift:-2px;--hover-scale:1.08;--hover-transition:var(--transition-fast);--hover-shadow:var(--shadow-md);--focus-ring:0 0 0 3px var(--primary-light);--focus-ring-width:2px;--z-dropdown:1000;--z-sticky:1020;--z-fixed:1030;--z-modal-backdrop:1040;--z-modal:1050;--z-popover:1060;--z-tooltip:1070;--z-toast:1080;--z-skip-link:1090;--bp-sm:480px;--bp-md:768px;--bp-lg:1024px;--bp-xl:1280px;--bp-2xl:1536px;--touch-min:44px;--row-height:68px;--page-size-default:5;--card-padding:1.25rem;--card-radius:1rem;--card-shadow:0 2px 8px #00000014;--toolbar-padding:.75rem 1rem;--toolbar-radius:14px;--toolbar-shadow:0 2px 8px #0000000f;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--content-bg:#edf0f4;--surface-2:#f8fafc;--surface-3:#eef2f7;--subtle-foreground:#94a3b8;--primary-surface:#003d7a14;--success-surface:#10b9811f;--success-text:#047857;--warning-surface:#f59e0b1f;--warning-text:#92400e;--destructive-surface:#ef44441f;--destructive-text:#b91c1c;--info-surface:#0284c71a;--info-text:#075985;--space-7:2.5rem;--space-8:3rem;--space-9:4rem;--text-stat:2rem;--text-display:1.5rem;--text-title:1.125rem;--text-body:.9375rem;--text-sm:.8125rem;--text-caption:.75rem;--leading-tight:1.25;--leading-normal:1.55;--radius-full:999px;--icon-xs:16px;--icon-sm:18px;--icon-md:20px;--icon-lg:24px;--icon-xl:28px;--scrollbar-track:transparent;--scrollbar-track-border:transparent;--scrollbar-thumb:#c7d2e0;--scrollbar-thumb-border:transparent;--scrollbar-thumb-hover:#a9b8cc}:root[data-portal]{--card:#fff;--card-border:var(--border);--input:var(--border);--primary-foreground:#fff;--ring:var(--primary);--secondary-foreground:var(--primary);--foreground:#101828;--card-foreground:#101828;--muted-foreground:#56657c;--subtle-foreground:#7a8798;--accent:#f97316;--accent-hover:#ea580c;--accent-surface:#ffe3c7;--accent-text:#9a4a06;--warning:#f97316;--warning-surface:#ffe3c7;--warning-text:#9a4a06;--warning-light:#ffe3c7;--info:#0e8fa8;--info-surface:#c8eaf1;--info-text:#0a5c6e;--info-light:#c8eaf1;--success:#0f9d63;--success-surface:#c8efdd;--success-text:#07704a;--success-light:#c8efdd;--destructive:#cf3f3f;--destructive-hover:#b02f2f;--destructive-surface:#fbd9d9;--destructive-text:#a12626;--destructive-light:#fbd9d9;--danger:#cf3f3f;--shadow-xs:0 1px 2px #1028480a;--shadow-sm:0 1px 3px #1028480f, 0 1px 2px #1028480a;--shadow-md:0 4px 12px #10284812;--shadow-lg:0 12px 28px #10284817;--shadow-xl:0 20px 40px #1028481a;--card-shadow:var(--shadow-sm);--radius-sm:6px;--radius:10px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--card-radius:14px;--toolbar-radius:10px;--card-padding:var(--space-5)}:root[data-portal=student]{--primary:#047857;--primary-hover:#205e44;--primary-surface:#d4e8dd;--primary-text:#1a5e43;--primary-light:#e4f1ea;--background:#e9f0ec;--content-bg:#e9f0ec;--surface-2:#f4f8f6;--surface-3:#e2ece7;--border:#c3d5cd;--border-hover:#a8c0b5;--secondary:#edf3f1;--secondary-hover:#e1ebe7;--muted:#f1f6f4;--muted-hover:#e8f0ec;--scrollbar-thumb:#cbdbd4;--scrollbar-thumb-hover:#acc1b7;--portal-accent:#047857;--portal-accent-light:#e4f1ea}:root[data-portal=teacher]{--primary:#0e7490;--primary-hover:#1d5d6e;--primary-surface:#d2e6ed;--primary-text:#185d6f;--primary-light:#e3eff4;--background:#e9f0f2;--content-bg:#e9f0f2;--surface-2:#f4f7f9;--surface-3:#e2ebef;--border:#c3d3da;--border-hover:#a8bdc6;--secondary:#edf3f5;--secondary-hover:#e1eaee;--muted:#f1f6f8;--muted-hover:#e8eff2;--scrollbar-thumb:#cbdae0;--scrollbar-thumb-hover:#acbfc7;--portal-accent:#0e7490;--portal-accent-light:#e3eff4}:root[data-portal=dos]{--primary:#1657a0;--primary-hover:#114576;--primary-surface:#d3e4f8;--primary-text:#0f4478;--primary-light:#e4eefb;--background:#e9eff6;--content-bg:#e9eff6;--surface-2:#f4f7fb;--surface-3:#e2eaf4;--border:#c4d1e3;--border-hover:#a9bbd2;--secondary:#eef2f8;--secondary-hover:#e2e9f3;--muted:#f2f5fa;--muted-hover:#e8eef6;--scrollbar-thumb:#ccd8e8;--scrollbar-thumb-hover:#adbdd2;--portal-accent:#1657a0;--portal-accent-light:#e4eefb}:root[data-portal=admin]{--primary:#4f46e5;--primary-hover:#3841ad;--primary-surface:#d9e1ff;--primary-text:#393eb0;--primary-light:#e8ecff;--background:#eaeefc;--content-bg:#eaeefc;--surface-2:#f5f6fe;--surface-3:#e4e8fc;--border:#c8cdf1;--border-hover:#aeb6e4;--secondary:#eff1fc;--secondary-hover:#e4e7fb;--muted:#f3f4fe;--muted-hover:#eaecfc;--scrollbar-thumb:#cfd5f4;--scrollbar-thumb-hover:#b1b9e2;--portal-accent:#4f46e5;--portal-accent-light:#e8ecff}:root[data-portal=parent]{--primary:#5b21b6;--primary-hover:#3f2286;--primary-surface:#e1ddff;--primary-text:#401e88;--primary-light:#edeaff;--background:#eeedfa;--content-bg:#eeedfa;--surface-2:#f7f6fd;--surface-3:#e9e7f9;--border:#d1cbeb;--border-hover:#bab3dd;--secondary:#f2f0fb;--secondary-hover:#e9e6f7;--muted:#f6f3fc;--muted-hover:#eeebfa;--scrollbar-thumb:#d7d2f0;--scrollbar-thumb-hover:#bcb5dc;--portal-accent:#5b21b6;--portal-accent-light:#edeaff}:root[data-portal=matron]{--primary:#a21caf;--primary-hover:#7a298b;--primary-surface:#f4d7f9;--primary-text:#7c248b;--primary-light:#f9e6fa;--background:#f5eaf6;--content-bg:#f5eaf6;--surface-2:#fbf4fb;--surface-3:#f2e3f4;--border:#e1c5e1;--border-hover:#ceacd1;--secondary:#f8eef7;--secondary-hover:#f2e3f2;--muted:#faf2f9;--muted-hover:#f5e9f6;--scrollbar-thumb:#e6cee7;--scrollbar-thumb-hover:#cfafd1;--portal-accent:#a21caf;--portal-accent-light:#f9e6fa}:root[data-portal=discipline]{--primary:#475569;--primary-hover:#36414f;--primary-surface:#dee2e8;--primary-text:#35414f;--primary-light:#eaedf1;--background:#edeef0;--content-bg:#edeef0;--surface-2:#f6f7f8;--surface-3:#e7e9ec;--border:#cdd0d5;--border-hover:#b5bac0;--secondary:#f1f2f3;--secondary-hover:#e7e8eb;--muted:#f4f5f6;--muted-hover:#ecedf0;--scrollbar-thumb:#d4d7dc;--scrollbar-thumb-hover:#b8bcc2;--portal-accent:#475569;--portal-accent-light:#eaedf1}:root[data-portal=library]{--primary:#a1621b;--primary-hover:#834f14;--primary-surface:#f6e6d0;--primary-text:#7a4a13;--primary-light:#fbf2e6;--background:#faf5ee;--content-bg:#faf5ee;--surface-2:#fffaf3;--surface-3:#f3e9db;--border:#e4d7c4;--border-hover:#d2c0a6;--secondary:#f7f1e8;--secondary-hover:#efe6d8;--muted:#f8f3ec;--muted-hover:#f0e8dc;--scrollbar-thumb:#ddcfba;--scrollbar-thumb-hover:#c6b498;--portal-accent:#a1621b;--portal-accent-light:#fbf2e6}:root[data-portal=finance]{--primary:#14715a;--primary-hover:#0f5a48;--primary-surface:#d3ece4;--primary-text:#0e5644;--primary-light:#e9f6f1;--background:#eef5f2;--content-bg:#eef5f2;--surface-2:#f7fbf9;--surface-3:#e3efea;--border:#c8ded6;--border-hover:#a9c8bd;--secondary:#eff5f3;--secondary-hover:#e3edea;--muted:#f2f7f5;--muted-hover:#e8f1ee;--scrollbar-thumb:#c4dbd3;--scrollbar-thumb-hover:#a2c2b6;--portal-accent:#14715a;--portal-accent-light:#e9f6f1}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;width:100%;height:100%;overflow-x:hidden}body{font-family:var(--font-family);min-height:100vh;color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(#f1faff 0%,#cbe4ff 100%);width:100%;line-height:1.6;position:relative;overflow:hidden auto}h1,h2,h3,h4,h5,h6{color:var(--card-foreground);word-wrap:break-word;overflow-wrap:break-word;font-weight:700;line-height:1.2}h1{font-size:var(--text-display)}h2,h3{font-size:var(--text-title)}h4{font-size:var(--text-body)}h5{font-size:var(--text-sm)}h6{font-size:var(--text-caption)}p{margin-bottom:0}a{color:inherit;transition:var(--transition-base);text-decoration:none}a:hover{color:var(--primary)}.container{width:100%;max-width:1280px;margin:0 auto;padding:0 1.5rem}img,video,iframe,embed,object{max-width:100%;height:auto}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--muted)}::-webkit-scrollbar-thumb{background:var(--muted-foreground);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--primary)}::selection{background-color:var(--primary);color:var(--primary-foreground)}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=1023px){html,body{width:100%;position:relative;overflow-x:hidden}body>*{max-width:100vw;overflow-x:hidden}table{max-width:100%}pre,code{word-wrap:break-word;max-width:100%;overflow-x:auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (prefers-contrast:high){:root{--border:#000;--muted:#e0e0e0}}@media print{body{color:#000;background:#fff}a{text-decoration:underline}.no-print{display:none!important}}.skip-link{z-index:var(--z-skip-link);background:var(--primary,#2563eb);color:#fff;border-radius:0 0 8px;padding:.65rem 1.1rem;font-weight:600;text-decoration:none;transition:top .15s;position:absolute;top:-100%;left:0}.skip-link:focus{outline-offset:-4px;outline:2px solid #fff;top:0}.route-fallback{justify-content:center;align-items:center;min-height:60vh;display:flex}.route-fallback-spinner{border:3px solid var(--muted,#e2e8f0);border-top-color:var(--primary,#2563eb);border-radius:50%;width:38px;height:38px;animation:.7s linear infinite route-spin}@keyframes route-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.route-fallback-spinner{animation-duration:2s}}.stat-card:hover,.metric-card:hover,.activity-card:hover,.class-detail-card:hover,.leader-card:hover,.house-card:hover,.behavior-card:hover,.ann-item:hover{transform:translateY(var(--hover-lift));box-shadow:var(--hover-shadow);border-color:var(--border-hover);transition:transform var(--hover-transition), box-shadow var(--hover-transition), border-color var(--hover-transition)}.calendar-day:hover{background:var(--muted-hover);transform:translateY(var(--hover-lift));transition:background var(--hover-transition), transform var(--hover-transition)}a:focus-visible,button:focus-visible,[role=button]:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:not([tabindex="-1"]):focus-visible{outline:var(--focus-ring-width) solid var(--primary);outline-offset:2px;border-radius:var(--radius-sm)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.stat-card:hover,.metric-card:hover,.activity-card:hover,.class-detail-card:hover,.leader-card:hover,.house-card:hover,.behavior-card:hover,.ann-item:hover,.calendar-day:hover{transform:none}}@media (width<=768px){input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea{font-size:16px!important}}:root[data-portal] body{background:var(--background);font-size:var(--text-body);line-height:var(--leading-normal)}[data-portal] .sidebar{background:linear-gradient(180deg, var(--chrome-from) 0%, var(--chrome-to) 100%);box-shadow:none;border-right:none}[data-portal] .sidebar-nav-item.active,[data-portal] .sidebar.collapsed .sidebar-nav-item.active{color:#fff;box-shadow:none;background-color:#ffffff24}[data-portal] .sidebar-nav-item.active:before{background:var(--accent);border-radius:0 2px 2px 0}[data-portal] .sidebar-nav-item:hover:not(.active){color:#fff;background-color:#ffffff17;transform:none}[data-portal] .sidebar.collapsed .sidebar-nav-item:hover{transform:none}[data-portal] .dashboard-header{background:var(--chrome-from);box-shadow:none;border-bottom:1px solid #ffffff1a;min-height:68px}[data-portal] .dashboard-header-title h1{color:#fff;font-size:var(--text-display);letter-spacing:-.015em;font-weight:700}[data-portal] .dashboard-header-title p{color:#ffffffb8;font-size:var(--text-caption)}[data-portal] .header-user{border-left:1px solid #ffffff2e}[data-portal] .header-user-name{color:#fff}[data-portal] .header-user-role{color:#ffffffb8}[data-portal] .header-user-av.dos-av{box-shadow:none;background:#ffffff2e;border-color:#ffffff61}[data-portal] .date-display{color:#ffffffd9;background:#ffffff1f;border-color:#ffffff29}[data-portal] .notification-btn,[data-portal] .mobile-menu-btn{color:#ffffffe0;background:#ffffff1f;border-color:#ffffff29}[data-portal] .notification-btn:hover,[data-portal] .mobile-menu-btn:hover{color:#fff;background:#ffffff38;border-color:#ffffff4d;transform:none}[data-portal] .notification-badge{border-color:var(--chrome-from)}[data-portal] .search-box{background-color:#ffffff1f;border-color:#ffffff2e}[data-portal] .search-box:focus-within{box-shadow:none;background-color:#fff3;border-color:#ffffff73}[data-portal] .search-box svg{color:#ffffffa6}[data-portal] .search-box:focus-within svg{color:#ffffffe6}[data-portal] .search-box input{color:#fff}[data-portal] .search-box input::placeholder{color:#ffffffb3}[data-portal] .dashboard-content{padding:var(--space-6);gap:0}[data-portal] .dc-inner{box-shadow:none;gap:var(--space-5);background:0 0;border:none;padding:0}@media (width<=767px){[data-portal] .dashboard-content{padding:var(--space-4)}[data-portal] .dc-inner{gap:var(--space-4);padding:0}}[data-portal] .welcome-banner{background:var(--primary-surface);color:var(--foreground);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);margin-bottom:0}[data-portal] .welcome-banner:before{display:none}[data-portal] .welcome-banner h2,[data-portal] .welcome-banner h3{color:var(--foreground);font-size:var(--text-title)}[data-portal] .welcome-banner p{color:var(--muted-foreground)}[data-portal] .welcome-banner-greeting{font-size:var(--text-title);color:var(--foreground);font-weight:600}[data-portal] .welcome-banner-role,[data-portal] .welcome-banner-extra{color:var(--muted-foreground);opacity:1;font-size:var(--text-sm)}[data-portal] .welcome-banner-badge{background:var(--card);border:1px solid var(--border);color:var(--primary);border-radius:var(--radius-full);font-size:var(--text-caption)}[data-portal] .welcome-banner-icon{color:var(--primary);opacity:.45}[data-portal] .card,[data-portal] .toolbar-card,[data-portal] .overview-panel{background:var(--card);border:1px solid var(--border);border-radius:var(--card-radius);box-shadow:var(--shadow-sm)}[data-portal] .card:hover{box-shadow:var(--shadow-sm)}[data-portal] .card-header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border)}[data-portal] .card-content{padding:var(--space-5)}[data-portal] .overview-panel{margin-bottom:0}[data-portal] .overview-panel-header{background:var(--surface-2);padding:var(--space-3) var(--space-5)}[data-portal] .overview-panel-body{padding:var(--space-5);gap:var(--space-4);background:var(--surface-2)}[data-portal] .overview-panel-body>.card{box-shadow:none;border-color:var(--border)}[data-portal] .card-title,[data-portal] .overview-panel-title{font-size:var(--text-body);font-weight:700;line-height:var(--leading-tight);letter-spacing:-.01em;color:var(--foreground);margin-bottom:0}[data-portal] .section-label-sm,[data-portal] .form-label,[data-portal] .teacher-modal-section-label{font-size:var(--text-caption);color:var(--muted-foreground);letter-spacing:.01em;font-weight:600}[data-portal] .u-muted,[data-portal] .settings-info-text,[data-portal] .empty-note{color:var(--muted-foreground);font-size:var(--text-sm)}[data-portal] .portal-stat-grid{gap:var(--space-4);margin-bottom:0}[data-portal] .portal-stat-card{background:var(--card);border:1px solid var(--border);border-radius:var(--card-radius);box-shadow:var(--shadow-xs);padding:var(--space-5);gap:var(--space-4)}[data-portal] .portal-stat-card:hover{box-shadow:var(--shadow-sm);border-color:var(--border-hover)}[data-portal] .portal-stat-icon{border-radius:var(--radius-md);background:var(--primary-surface);width:42px;height:42px;color:var(--primary)}[data-portal] .portal-stat-icon .material-symbols-rounded{font-size:var(--icon-lg)}[data-portal] .portal-stat-icon.success{background:var(--success-surface);color:var(--success-text)}[data-portal] .portal-stat-icon.warning{background:var(--warning-surface);color:var(--warning-text)}[data-portal] .portal-stat-icon.red{background:var(--destructive-surface);color:var(--destructive-text)}[data-portal] .portal-stat-icon.info{background:var(--info-surface);color:var(--info-text)}[data-portal] .portal-stat-value{font-size:var(--text-stat);letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--foreground);font-weight:700;line-height:1.1}[data-portal] .portal-stat-label{font-size:var(--text-caption);color:var(--muted-foreground);font-weight:500}[data-portal] .portal-stat-trend{font-size:var(--text-caption);margin-top:var(--space-1)}[data-portal] .portal-stat-trend.positive{color:var(--success-text)}[data-portal] .portal-stat-trend.negative{color:var(--destructive-text)}[data-portal] .btn{font-size:var(--text-sm);border-radius:var(--radius);padding:.55rem var(--space-4);min-height:40px;transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);font-weight:500}[data-portal] .btn-sm{font-size:var(--text-caption);padding:.35rem var(--space-3);min-height:32px}[data-portal] .btn-primary{background-color:var(--primary);color:var(--primary-foreground);box-shadow:var(--shadow-xs)}[data-portal] .btn-primary:hover:not(:disabled){background-color:var(--primary-hover);box-shadow:var(--shadow-sm)}[data-portal] .btn-secondary{background-color:var(--secondary);color:var(--secondary-foreground);box-shadow:none}[data-portal] .btn-secondary:hover:not(:disabled){background-color:var(--secondary-hover)}[data-portal] .btn-outline{background-color:var(--card);border:1px solid var(--input);color:var(--foreground);box-shadow:none}[data-portal] .btn-outline:hover:not(:disabled){background-color:var(--surface-3);border-color:var(--border-hover)}[data-portal] .btn-danger,[data-portal] .btn-destructive{background-color:var(--destructive);color:#fff}[data-portal] .btn-danger:hover:not(:disabled),[data-portal] .btn-destructive:hover:not(:disabled){background-color:var(--destructive-hover)}[data-portal] .btn:disabled,[data-portal] .btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;box-shadow:none}[data-portal] .btn-icon-clean{color:var(--muted-foreground);border-radius:var(--radius-sm)}[data-portal] .btn-icon-clean:hover{color:var(--primary);background:var(--primary-surface)}[data-portal] .form-input,[data-portal] .form-control,[data-portal] .form-select,[data-portal] .input{font-size:var(--text-sm);border:1px solid var(--input);border-radius:var(--radius);background-color:var(--card);min-height:40px}[data-portal] .form-input:hover:not(:disabled),[data-portal] .form-control:hover:not(:disabled),[data-portal] .form-select:hover:not(:disabled){border-color:var(--border-hover)}[data-portal] .form-input:focus,[data-portal] .form-control:focus,[data-portal] .form-select:focus,[data-portal] .input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}[data-portal] .form-group{gap:var(--space-2)}[data-portal] .dos-inv-th,[data-portal] .dos-preview-th,[data-portal] .pinv-th,[data-portal] .data-table th{background:var(--surface-2);color:var(--muted-foreground);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);font-weight:700}[data-portal] .dos-inv-td,[data-portal] .dos-preview-td,[data-portal] .pinv-td,[data-portal] .data-table td{font-size:var(--text-sm);color:var(--foreground);border-bottom:1px solid var(--border)}[data-portal] .data-table tbody tr:hover td{background:var(--surface-2)}[data-portal] .badge{font-size:var(--text-caption);border-radius:var(--radius-sm);border:none;padding:.2rem .5rem;font-weight:600}[data-portal] .badge-primary{background:var(--primary-surface);color:var(--primary)}[data-portal] .badge-secondary{background:var(--surface-3);color:var(--muted-foreground)}[data-portal] .badge-success,[data-portal] .badge-published{background:var(--success-surface);color:var(--success-text)}[data-portal] .badge-warning{background:var(--warning-surface);color:var(--warning-text)}[data-portal] .badge-danger,[data-portal] .badge-destructive{background:var(--destructive-surface);color:var(--destructive-text)}[data-portal] .badge-info{background:var(--info-surface);color:var(--info-text)}[data-portal] .dos-danger-text,[data-portal] .u-danger{color:var(--destructive-text)}[data-portal] .empty-state,[data-portal] .es-empty{background:var(--card);border:1px dashed var(--border-hover);border-radius:var(--card-radius);padding:var(--space-7) var(--space-5);color:var(--muted-foreground)}[data-portal] .empty-state .material-symbols-rounded{color:var(--subtle-foreground)}[data-portal] .icon-sm,[data-portal] .btn .material-symbols-rounded{font-size:var(--icon-sm)}[data-portal] .dashboard-content::-webkit-scrollbar{width:10px}[data-portal] .dashboard-content::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border:3px solid var(--background);border-radius:var(--radius-full)}[data-portal] .dashboard-content::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}[data-portal] .portal-login-left{background:linear-gradient(145deg, var(--chrome-to) 0%, var(--chrome-from) 55%, var(--primary) 100%)}[data-portal] .portal-login-left:after{background:radial-gradient(circle, color-mix(in srgb, var(--primary) 55%, transparent) 0%, transparent 70%)}.u-flex{display:flex}.u-col{flex-direction:column}.u-items-center{align-items:center}.u-items-start{align-items:flex-start}.u-wrap{flex-wrap:wrap}.u-row{align-items:center;gap:.75rem;display:flex}.u-row-sm{align-items:center;gap:.5rem;display:flex}.u-row-between{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.u-stack{flex-direction:column;gap:.85rem;display:flex}.u-stack-sm{flex-direction:column;gap:.75rem;display:flex}.u-stack-1{flex-direction:column;gap:1rem;display:flex}.u-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;display:grid}.u-grid-sm{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.85rem;display:grid}.u-grid-2{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.u-gap-sm{gap:.75rem}.u-justify-end{justify-content:flex-end}.u-justify-between{justify-content:space-between}.u-ml-auto{margin-left:auto}.u-relative{position:relative}.u-shrink-0{flex-shrink:0}.u-flex-1{flex:1}.u-flex-min{flex:1;min-width:0}.u-full{width:100%}.u-nowrap{white-space:nowrap}.u-hidden{display:none}.u-mt{margin-top:1rem}.u-mt-xs{margin-top:.3rem}.u-mt-sm{margin-top:.5rem}.u-mb{margin-bottom:1rem}.u-mb-0{margin-bottom:0}.u-mb-xs{margin-bottom:.4rem}.u-mb-sm{margin-bottom:.75rem}.u-mb-lg{margin-bottom:1.25rem}.u-m-0{margin:0}.u-pad{padding:2rem}.u-pad-lg{padding:2.5rem}.u-pad-xl{padding:3rem}.u-p-0{padding:0}.u-pt-xs{padding-top:.25rem}.u-self-start{align-self:flex-start}.u-muted{color:var(--muted-foreground)}.u-strong{font-weight:600}.u-bold{font-weight:700}.u-sm,.u-xs{font-size:var(--text-sm)}.u-lg{font-size:var(--text-title)}.u-xl{font-size:var(--text-display)}.u-danger{color:var(--danger,#dc2626)}.u-center-text{text-align:center}.u-text-right{text-align:right}.u-capitalize{text-transform:capitalize}.u-label{font-size:var(--text-sm);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.03em}.u-chip{font-size:var(--text-sm);border-radius:999px;padding:.28rem .7rem;font-weight:600;display:inline-block}.u-chip--primary{background:var(--primary-light);color:var(--primary)}.u-chip--success{color:var(--success,#16a34a);background:#16a34a1f}.u-chip--warn{color:#d97706;background:#d9770624}.u-chip--danger{color:var(--danger,#dc2626);background:#dc26261f}.u-banner{padding:1rem 1.25rem}.u-banner--warn{--u-accent:#d97706}.u-banner--danger{--u-accent:var(--danger,#dc2626)}.u-banner--primary{--u-accent:var(--primary)}.u-banner-icon{color:var(--u-accent);font-size:var(--icon-lg)}.u-meter{background:var(--muted,#00000014);border-radius:999px;height:8px;overflow:hidden}.u-meter-fill{background:var(--primary);border-radius:999px;height:100%;transition:width .3s}.u-meter-fill.warn{background:#d97706}.u-meter-fill.full{background:var(--danger,#dc2626)}.u-meter-fill.unlimited{background:var(--primary-light)}.u-icon-sm{font-size:var(--icon-sm)}.u-empty-icon{margin-bottom:.5rem;font-size:2.2rem;display:block}.u-pointer{cursor:pointer}.u-fs-1,.u-fs-095{font-size:var(--text-body)}.u-fs-085{font-size:var(--text-sm)}.u-fs-075,.u-fs-068{font-size:var(--text-caption)}.u-fs-15{font-size:var(--text-display)}.u-fw-400{font-weight:400}.u-mb-05{margin-bottom:.5rem}.u-mb-025{margin-bottom:.25rem}.u-mt-075{margin-top:.75rem}.u-gap-025{gap:.25rem}.u-gap-035{gap:.35rem}.u-gap-125{gap:1.25rem}.u-success{color:var(--success)}.u-destructive{color:var(--destructive)}.u-min-h-60{min-height:60px}.u-col-span-full{grid-column:1/-1}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.u-gap-05{gap:.5rem}.u-gap-1{gap:1rem}.u-w-auto{width:auto}.u-col-span-all{grid-column:1/-1}.u-bg-accent{background:var(--accent)}.u-empty-icon-lg{margin-bottom:.75rem;font-size:2.5rem;display:block}:focus-visible{border-radius:inherit;outline:2px solid var(--ring,#1657a0)!important;outline-offset:2px!important}.sidebar :focus-visible,.login-page :focus-visible,.dashboard-header :focus-visible{outline-color:#fff!important}:focus:not(:focus-visible){outline:none}.landing-page{color:#0f172a;background:#fff;min-height:100vh;font-family:inherit;overflow-x:hidden}.landing-nav{z-index:100;-webkit-backdrop-filter:blur(16px);background:#ffffffe0;border-bottom:1px solid #00000012;justify-content:space-between;align-items:center;height:64px;padding:0 3rem;display:flex;position:sticky;top:0}.landing-nav-brand{align-items:center;gap:.75rem;text-decoration:none;display:flex}.landing-nav-logo{background:linear-gradient(135deg,#003d7a 0%,#005a8f 100%);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;display:flex;overflow:hidden}.landing-nav-logo img{object-fit:contain;width:26px;height:26px}.landing-nav-name{font-size:var(--text-title);color:#0f172a;letter-spacing:-.01em;font-weight:800}.landing-nav-name span{color:#f97316}.landing-nav-right{align-items:center;gap:2rem;display:flex}.landing-nav-links{gap:1.75rem;display:flex}.landing-nav-links a{font-size:var(--text-sm);color:#64748b;font-weight:500;text-decoration:none;transition:color .15s}.landing-nav-links a:hover{color:#0f172a}.landing-nav-signin{color:#fff;border-radius:var(--radius-sm);font-size:var(--text-sm);background:linear-gradient(135deg,#003d7a 0%,#005a8f 100%);align-items:center;gap:.375rem;padding:.5rem 1.25rem;font-weight:600;text-decoration:none;transition:opacity .15s,box-shadow .15s;display:inline-flex;box-shadow:0 4px 12px #003d7a47}.landing-nav-signin .material-symbols-rounded{font-size:var(--icon-sm)}.landing-nav-signin:hover{opacity:.9;box-shadow:0 6px 20px #003d7a61}.landing-hero{color:#fff;flex-direction:column;justify-content:center;min-height:92vh;padding:6.5rem 3rem 5.5rem;display:flex;position:relative;overflow:hidden}.hero-bg-image{background-image:url(/backgroundimage.jpg);background-position:50% 30%;background-repeat:no-repeat;background-size:cover;position:absolute;inset:0}.hero-bg-overlay{background:linear-gradient(110deg,#000a19e0 0%,#001e41d1 45%,#00326499 100%);position:absolute;inset:0}.hero-grid{pointer-events:none;background-image:linear-gradient(#ffffff06 1px,#0000 1px),linear-gradient(90deg,#ffffff06 1px,#0000 1px);background-size:48px 48px;position:absolute;inset:0}.hero-scroll-hint{color:#fff6;z-index:3;animation:2s infinite bounce;position:absolute;bottom:2rem;left:50%;transform:translate(-50%)}.hero-scroll-hint .material-symbols-rounded{font-size:var(--icon-xl)}@keyframes bounce{0%,to{transform:translate(-50%)translateY(0)}50%{transform:translate(-50%)translateY(6px)}}.hero-inner{z-index:2;grid-template-columns:1fr 1fr;align-items:center;gap:5rem;max-width:1200px;margin:0 auto;display:grid;position:relative}.hero-content{flex-direction:column;gap:0;display:flex}.hero-badge{color:#fb923c;font-size:var(--text-caption);letter-spacing:.05em;text-transform:uppercase;background:#f973161f;border:1px solid #f973164d;border-radius:999px;align-items:center;gap:.5rem;width:fit-content;margin-bottom:1.75rem;padding:.375rem .875rem;font-weight:700;display:inline-flex}.hero-badge .material-symbols-rounded{font-size:var(--icon-sm)}.hero-title{letter-spacing:-.04em;margin-bottom:1.5rem;font-size:clamp(2.5rem,4.5vw,3.75rem);font-weight:900;line-height:1.08}.hero-title .accent{background:linear-gradient(90deg,#f97316 0%,#fb923c 50%,#fbbf24 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.hero-subtitle{font-size:var(--text-title);color:#ffffffa6;max-width:480px;margin-bottom:2.5rem;line-height:1.75}.hero-actions{align-items:center;gap:1rem;margin-bottom:3.5rem;display:flex}.hero-cta{color:#fff;font-size:var(--text-body);background:linear-gradient(135deg,#f97316 0%,#fb923c 100%);border-radius:.625rem;align-items:center;gap:.5rem;padding:.875rem 1.875rem;font-weight:700;text-decoration:none;transition:opacity .15s,transform .15s,box-shadow .15s;display:inline-flex;box-shadow:0 6px 28px #f9731673}.hero-cta .material-symbols-rounded{font-size:var(--icon-sm)}.hero-cta:hover{opacity:.92;transform:translateY(var(--hover-lift));box-shadow:0 10px 34px #f9731680}.hero-cta:active{transform:scale(.97)}.hero-secondary{font-size:var(--text-sm);color:#ffffffa6;border-bottom:1px solid #ffffff40;padding-bottom:1px;font-weight:600;text-decoration:none;transition:color .15s,border-color .15s}.hero-secondary:hover{color:#fff;border-color:#ffffff8c}.hero-visual{justify-content:center;display:flex;position:relative}.hero-mockup{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff0d;border:1px solid #ffffff1f;border-radius:1.25rem;width:100%;max-width:420px;overflow:hidden;box-shadow:0 25px 60px #00000059,inset 0 0 0 1px #ffffff0f}.mockup-bar{background:#00000040;border-bottom:1px solid #ffffff14;align-items:center;gap:.75rem;padding:.6rem .875rem;display:flex}.mockup-dots{gap:.35rem;display:flex}.mockup-dots span{background:#fff3;border-radius:50%;width:10px;height:10px}.mockup-dots span:first-child{background:#ef4444}.mockup-dots span:nth-child(2){background:#f59e0b}.mockup-dots span:nth-child(3){background:#22c55e}.mockup-url{font-size:var(--text-caption);color:#ffffff59;font-family:monospace}.mockup-body{flex-direction:column;gap:1rem;padding:1.25rem;display:flex}.mockup-header{align-items:center;gap:.75rem;display:flex}.mockup-avatar{width:38px;height:38px;font-size:var(--text-caption);color:#fff;background:linear-gradient(135deg,#0d9488,#0891b2);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:flex}.mockup-name{font-size:var(--text-sm);color:#fff;font-weight:700}.mockup-role{font-size:var(--text-caption);color:#ffffff73;margin-top:.1rem}.mockup-stat-row{grid-template-columns:repeat(3,1fr);gap:.5rem;display:grid}.mockup-stat-card{text-align:center;background:#ffffff0d;border:1px solid #ffffff14;border-radius:.625rem;flex-direction:column;align-items:center;gap:.25rem;padding:.75rem .5rem;display:flex}.mockup-stat-card .material-symbols-rounded{font-size:var(--icon-sm);color:var(--mc,#f97316)}.msc-val{font-size:var(--text-body);color:#fff;font-weight:800;line-height:1}.msc-lbl{font-size:var(--text-caption);color:#fff6;text-transform:uppercase;letter-spacing:.04em}.mockup-notif-label{font-size:var(--text-caption);color:#ffffff59;text-transform:uppercase;letter-spacing:.06em;font-weight:600}.mockup-notifs{flex-direction:column;gap:.5rem;display:flex}.mockup-notif{border-radius:var(--radius-sm);background:#ffffff0a;border:1px solid #ffffff12;align-items:center;gap:.625rem;padding:.5rem .625rem;display:flex}.mockup-notif-icon{border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.mockup-notif-icon .material-symbols-rounded{font-size:var(--icon-sm)}.mockup-notif-text{font-size:var(--text-caption);color:#ffffffbf;flex:1;line-height:1.4}.mockup-notif-time{font-size:var(--text-caption);color:#ffffff4d;flex-shrink:0}.hero-mockup-glow{pointer-events:none;z-index:-1;background:radial-gradient(circle,#4f46e540 0%,#0000 65%);border-radius:50%;width:320px;height:320px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.landing-section{padding:5.5rem 3rem}.landing-section.alt{background:#f8fafc}.section-label{font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.1em;color:#f97316;margin-bottom:.625rem;font-weight:700}.section-title{color:#0f172a;letter-spacing:-.03em;margin-bottom:.75rem;font-size:clamp(1.75rem,3.5vw,2.375rem);font-weight:800;line-height:1.15}.section-subtitle{font-size:var(--text-body);color:#64748b;max-width:560px;margin-bottom:3rem;line-height:1.7}.section-header{text-align:center;margin-bottom:3rem}.section-header .section-subtitle{margin-left:auto;margin-right:auto}.portals-grid{grid-template-columns:repeat(3,1fr);gap:1.5rem;max-width:1100px;margin:0 auto;display:grid}.portal-card{border-radius:var(--radius-lg);color:inherit;background:#fff;border:1px solid #e2e8f0;flex-direction:column;gap:1rem;padding:1.75rem;text-decoration:none;transition:box-shadow .25s,border-color .25s,transform .2s;display:flex;position:relative;overflow:hidden}.portal-card-top-bar{background:var(--card-gradient,linear-gradient(135deg, #003d7a, #005a8f));opacity:0;height:3px;transition:opacity .25s;position:absolute;top:0;left:0;right:0}.portal-card:hover .portal-card-top-bar{opacity:1}.portal-card:hover{border-color:var(--card-border,#003d7a33);transform:translateY(var(--hover-lift));box-shadow:0 12px 40px #0000001a}.portal-card-icon{background:var(--card-bg,#003d7a1a);width:50px;height:50px;color:var(--card-color,#003d7a);font-size:var(--icon-lg);border-radius:13px;justify-content:center;align-items:center;transition:background .25s,transform .2s;display:flex}.portal-card:hover .portal-card-icon{background:var(--card-gradient,linear-gradient(135deg, #003d7a, #005a8f));color:#fff;transform:scale(var(--hover-scale))}.portal-card-title{font-size:var(--text-body);color:#0f172a;margin-bottom:.25rem;font-weight:700}.portal-card-desc{font-size:var(--text-sm);color:#64748b;line-height:1.6}.portal-card-features{flex-wrap:wrap;gap:.375rem;margin-top:auto;padding-top:.5rem;display:flex}.portal-card-feature{font-size:var(--text-caption);background:var(--card-bg,#003d7a12);color:var(--card-color,#003d7a);border:1px solid var(--card-border,#003d7a26);border-radius:999px;padding:.2rem .6rem;font-weight:500}.features-grid{grid-template-columns:repeat(3,1fr);gap:2.5rem 3rem;max-width:1100px;margin:0 auto;display:grid}.feature-item{flex-direction:column;gap:.75rem;display:flex}.feature-icon{border-radius:var(--radius);color:#003d7a;width:46px;height:46px;font-size:var(--icon-md);background:linear-gradient(135deg,#003d7a14,#003d7a0d);border:1px solid #003d7a1a;justify-content:center;align-items:center;display:flex}.feature-title{font-size:var(--text-body);color:#0f172a;font-weight:700}.feature-desc{font-size:var(--text-sm);color:#64748b;line-height:1.65}.about-grid{grid-template-columns:repeat(3,1fr);gap:2rem;max-width:1100px;margin:0 auto 3.5rem;display:grid}.about-card{border-radius:var(--radius-lg);background:#fff;border:1px solid #e2e8f0;flex-direction:column;gap:.875rem;padding:2rem 1.75rem;transition:box-shadow .2s,transform .2s;display:flex}.about-card:hover{transform:translateY(var(--hover-lift));box-shadow:0 10px 36px #003d7a17}.about-card-icon{color:#003d7a;width:50px;height:50px;font-size:var(--icon-lg);background:linear-gradient(135deg,#003d7a17,#003d7a0d);border:1px solid #003d7a1f;border-radius:13px;justify-content:center;align-items:center;display:flex}.about-card-title{font-size:var(--text-body);color:#0f172a;font-weight:700}.about-card-desc{font-size:var(--text-sm);color:#64748b;line-height:1.65}.about-photo-strip{background-image:url(/backgroundimage.jpg);background-position:50% 40%;background-size:cover;border-radius:1.25rem;max-width:1100px;height:240px;margin:0 auto;position:relative;overflow:hidden}.about-photo-overlay{background:linear-gradient(90deg,#000f28e0 0%,#001e46a6 60%,#0000 100%);position:absolute;inset:0}.about-photo-content{z-index:2;flex-direction:column;justify-content:center;max-width:680px;height:100%;padding:2.5rem 3rem;display:flex;position:relative}.about-quote{font-size:var(--text-title);color:#ffffffeb;margin:0 0 .875rem;padding-left:1.25rem;font-style:italic;font-weight:500;line-height:1.65}.about-quote-source{font-size:var(--text-sm);color:#ffffff80;letter-spacing:.04em;padding-left:1.25rem;font-weight:600}.contact-split{grid-template-columns:1fr 1.1fr;align-items:start;gap:5rem;max-width:1100px;margin:0 auto;display:grid}.contact-items{flex-direction:column;gap:1.25rem;display:flex}.contact-item{align-items:flex-start;gap:1rem;display:flex}.contact-item-icon{color:#003d7a;width:44px;height:44px;font-size:var(--icon-sm);background:linear-gradient(135deg,#003d7a1a,#003d7a0d);border:1px solid #003d7a1f;border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.contact-item-label{font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.08em;color:#94a3b8;margin-bottom:.2rem;font-weight:700}.contact-item-value{font-size:var(--text-body);color:#1e293b;font-weight:500;line-height:1.4}.contact-form-card{background:#fff;border:1px solid #e2e8f0;border-radius:1.25rem;flex-direction:column;gap:1.25rem;padding:2.25rem;display:flex;box-shadow:0 8px 32px #003d7a12}.contact-form-title{font-size:var(--text-title);color:#0f172a;font-weight:700}.contact-form-group{flex-direction:column;gap:.4rem;display:flex}.contact-form-label{font-size:var(--text-sm);color:#475569;font-weight:600}.contact-form-input{border-radius:var(--radius-sm);font-size:var(--text-sm);color:#0f172a;resize:none;box-sizing:border-box;background:#f8fafc;border:1px solid #e2e8f0;outline:none;width:100%;padding:.625rem .875rem;font-family:inherit;transition:border-color .15s,box-shadow .15s}.contact-form-input:focus{background:#fff;border-color:#003d7a;box-shadow:0 0 0 3px #003d7a14}.contact-form-input::placeholder{color:#94a3b8}.contact-form-btn{color:#fff;font-size:var(--text-body);cursor:pointer;background:linear-gradient(135deg,#003d7a 0%,#005a8f 100%);border:none;border-radius:.625rem;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-family:inherit;font-weight:600;transition:opacity .15s,transform .15s,box-shadow .15s;display:inline-flex;box-shadow:0 4px 14px #003d7a4d}.contact-form-btn .material-symbols-rounded{font-size:var(--icon-sm)}.contact-form-btn:hover{opacity:.9;transform:translateY(var(--hover-lift));box-shadow:0 6px 20px #003d7a61}.boarding-split{grid-template-columns:1fr 1fr;align-items:center;gap:5rem;max-width:1100px;margin:0 auto;display:grid}.boarding-visual{border-radius:var(--radius-xl);color:#fff;background:linear-gradient(145deg,#00112b 0%,#002e5e 50%,#003d7a 100%);flex-direction:column;gap:1.5rem;padding:2.5rem;display:flex;position:relative;overflow:hidden;box-shadow:0 24px 64px #003d7a4d}.boarding-visual-glow{pointer-events:none;background:radial-gradient(circle,#f9731624 0%,#0000 65%);border-radius:50%;width:350px;height:350px;position:absolute;top:-100px;right:-100px}.boarding-visual-badge{font-size:var(--text-sm);color:#ffffffe6;align-items:center;gap:.5rem;font-weight:700;display:inline-flex}.boarding-visual-badge .material-symbols-rounded{font-size:var(--icon-sm);color:#fb923c}.boarding-visual-desc{font-size:var(--text-sm);color:#fff9;line-height:1.7}.boarding-pill-row{flex-wrap:wrap;gap:.5rem;display:flex}.boarding-pill{color:#fffc;font-size:var(--text-caption);background:#ffffff12;border:1px solid #ffffff24;border-radius:999px;padding:.3rem .75rem;font-weight:500}.boarding-list{flex-direction:column;gap:1rem;margin:0;padding:0;list-style:none;display:flex}.boarding-list li{font-size:var(--text-body);color:#334155;align-items:flex-start;gap:.75rem;line-height:1.55;display:flex}.boarding-list-icon{color:#003d7a;width:22px;height:22px;font-size:var(--icon-sm);background:linear-gradient(135deg,#003d7a1a,#003d7a0f);border:1px solid #003d7a26;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-top:.15rem;display:flex}.landing-cta-strip{text-align:center;color:#fff;background:linear-gradient(145deg,#00112b 0%,#002e5e 45%,#003d7a 80%,#004f99 100%);padding:6rem 3rem;position:relative;overflow:hidden}.cta-strip-inner{z-index:2;max-width:600px;margin:0 auto;position:relative}.cta-strip-orb{pointer-events:none;background:radial-gradient(circle,#f9731626 0%,#0000 65%);border-radius:50%;width:500px;height:500px;position:absolute;top:-220px;right:-100px}.cta-strip-orb-2{background:radial-gradient(circle,#4f46e52e 0%,#0000 65%);width:400px;height:400px;inset:auto auto -180px -80px}.cta-strip-title{letter-spacing:-.04em;margin-bottom:1rem;font-size:clamp(2rem,4.5vw,3rem);font-weight:900;line-height:1.1}.cta-strip-subtitle{font-size:var(--text-body);color:#ffffff9e;margin-bottom:2.75rem;line-height:1.7}.cta-strip-btn{color:#fff;border-radius:var(--radius);font-size:var(--text-body);background:linear-gradient(135deg,#f97316 0%,#fb923c 100%);align-items:center;gap:.5rem;padding:1rem 2.375rem;font-weight:700;text-decoration:none;transition:opacity .15s,transform .15s,box-shadow .15s;display:inline-flex;box-shadow:0 8px 30px #f9731673}.cta-strip-btn .material-symbols-rounded{font-size:var(--icon-sm)}.cta-strip-btn:hover{opacity:.92;transform:translateY(var(--hover-lift));box-shadow:0 12px 36px #f973168c}.landing-footer{color:#ffffff73;font-size:var(--text-sm);background:#000d1e;border-top:1px solid #ffffff0f}.footer-inner{grid-template-columns:1.8fr 1fr 1fr 1fr;gap:3.5rem;max-width:1200px;margin:0 auto;padding:4rem 3rem 3rem;display:grid}.footer-brand-col{flex-direction:column;gap:1.25rem;display:flex}.footer-brand{align-items:center;gap:.75rem;display:flex}.footer-brand-name{font-size:var(--text-title);color:#fff;letter-spacing:-.01em;font-weight:800}.footer-brand-name span{color:#f97316}.footer-brand-desc{font-size:var(--text-sm);color:#ffffff73;max-width:280px;line-height:1.7}.footer-contact{flex-direction:column;gap:.625rem;display:flex}.footer-contact-item{font-size:var(--text-sm);color:#ffffff80;align-items:flex-start;gap:.5rem;line-height:1.5;display:flex}.footer-contact-item .material-symbols-rounded{font-size:var(--icon-sm);color:#f97316;flex-shrink:0;margin-top:.1rem}.footer-col{flex-direction:column;gap:1rem;display:flex}.footer-col-title{font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.1em;color:#ffffffe6;margin-bottom:.25rem;font-weight:700}.footer-col-list{flex-direction:column;gap:.625rem;margin:0;padding:0;list-style:none;display:flex}.footer-col-list a{font-size:var(--text-sm);color:#ffffff73;align-items:center;gap:.25rem;text-decoration:none;transition:color .15s;display:inline-flex}.footer-col-list a:hover{color:#fb923c}.footer-bottom{border-top:1px solid #ffffff12;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;max-width:100%;padding:1.25rem 3rem;display:flex}.footer-bottom span{font-size:var(--text-sm);color:#ffffff4d}.footer-bottom-links{gap:1.5rem;display:flex}.footer-bottom-links a{font-size:var(--text-sm);color:#ffffff4d;text-decoration:none;transition:color .15s}.footer-bottom-links a:hover{color:#f97316}@media (width<=1024px){.hero-inner{text-align:center;grid-template-columns:1fr;gap:3rem}.hero-content{align-items:center}.hero-stats{justify-content:center}.hero-subtitle{max-width:100%}.hero-visual{display:none}.portals-grid,.features-grid{grid-template-columns:repeat(2,1fr)}.boarding-split{grid-template-columns:1fr;gap:3rem}.about-grid{grid-template-columns:1fr}.contact-split{grid-template-columns:1fr;gap:3rem}.footer-inner{grid-template-columns:1fr 1fr;gap:2.5rem;padding:3rem 2rem 2.5rem}.footer-brand-col{grid-column:1/-1}}@media (width<=768px){.landing-nav{padding:0 1.5rem}.landing-nav-links{display:none}.footer-inner{grid-template-columns:1fr 1fr}}@media (width<=640px){.landing-hero{padding:4.5rem 1.5rem 4rem}.hero-stats{flex-wrap:wrap;justify-content:center;gap:1.75rem}.landing-section{padding:4rem 1.5rem}.portals-grid,.features-grid{grid-template-columns:1fr}.landing-cta-strip{padding:4.5rem 1.5rem}.footer-inner{grid-template-columns:1fr;gap:2rem;padding:2.5rem 1.5rem 2rem}.footer-brand-col{grid-column:auto}.footer-bottom{text-align:center;flex-direction:column;align-items:center;gap:.75rem;padding:1.25rem 1.5rem}}.cta-strip-label{color:#fb923c;margin-bottom:1rem}.lp-sub-mb-175{margin-bottom:1.75rem}.lp-sub-mb-2{margin-bottom:2rem}.login-page{--login-from:#1d5fa8;--login-to:#0e3560;background:linear-gradient(135deg, var(--login-from) 0%, var(--login-to) 100%);justify-content:center;align-items:center;min-height:100vh;padding:2rem 1rem;animation:15s infinite gradientShift;display:flex;position:relative;overflow:hidden}@keyframes gradientShift{0%,to{background-position:0%}50%{background-position:100%}}.login-page:before,.login-page:after{content:"";pointer-events:none;border-radius:50%;position:absolute}.login-page:before{background:radial-gradient(circle,#f973162e 0%,#0000 70%);width:520px;height:520px;top:-160px;right:-140px}.login-page:after{background:radial-gradient(circle,#ffffff24 0%,#0000 70%);width:460px;height:460px;bottom:-150px;left:-120px}.login-card{z-index:1;-webkit-backdrop-filter:blur(20px)saturate(180%);background:#ffffff26;border:1px solid #ffffff40;border-radius:16px;width:100%;max-width:360px;padding:1.5rem;transition:transform .3s,box-shadow .3s;animation:.6s ease-out cardFadeIn;position:relative;box-shadow:0 8px 32px #0000004d,0 2px 8px #0003,inset 0 1px #fff3}.login-card:hover{transform:translateY(-4px);box-shadow:0 12px 48px #00000059,0 4px 16px #00000040,inset 0 1px #fff3}@keyframes cardFadeIn{0%{opacity:0;transform:translateY(20px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}.login-lang{justify-content:center;margin-bottom:1rem;display:flex}.login-card .lang-select{color:#fff;background:#ffffff24;border-color:#fff3}.login-card .lang-select:hover:not(:disabled){background:#fff3}.login-card .lang-select option{color:#fff;background:#14406e}.login-card .lang-select-icon,.login-card .lang-select-caret{color:#ffffffb3}.login-welcome{flex-direction:column;align-items:center;gap:.5rem;margin-bottom:.25rem;display:flex}.login-welcome-icon{color:#fff;background:linear-gradient(135deg,#ffffff40 0%,#ffffff26 100%);border:2px solid #ffffff4d;border-radius:12px;justify-content:center;align-items:center;width:48px;height:48px;animation:2s ease-in-out infinite iconPulse;display:flex;overflow:hidden;box-shadow:0 4px 12px #0003}@keyframes iconPulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.login-welcome-icon .material-symbols-rounded{filter:drop-shadow(0 2px 4px #0000004d);font-size:1.5rem}.login-welcome-icon img{object-fit:contain;width:100%;height:100%;padding:6px}.login-heading{color:#fff;text-align:center;letter-spacing:-.015em;margin:0;font-size:1.35rem;font-weight:800}.login-subheading{font-size:var(--text-sm);color:#ffffffb8;text-align:center;margin:0 0 1.25rem}.school-brand-name{font-size:var(--text-body);color:#fff;margin:0;font-weight:700}.school-brand-sub{font-size:var(--text-caption);color:#fff9;margin:0}.school-brand-warn{font-size:var(--text-caption);color:#ffd9a0;margin:.35rem 0 0}.login-error{color:#fff;font-size:var(--text-sm);background:#cf3f3f38;border:1px solid #ffffff38;border-radius:10px;align-items:center;gap:.5rem;margin-bottom:1rem;padding:.7rem .9rem;display:flex}.login-error .material-symbols-rounded{font-size:var(--icon-sm)}.form-group{margin-bottom:.75rem}.login-card .form-label{font-size:var(--text-sm);color:#ffffffd9;text-transform:none;letter-spacing:normal;margin-bottom:.45rem;font-weight:600;display:block}.input-wrap{align-items:center;display:flex;position:relative}.input-icon{font-size:var(--icon-sm);color:#fff9;pointer-events:none;position:absolute;left:.85rem}.login-card .form-input{color:#fff;width:100%;font-size:var(--text-body);background:#ffffff1f;border:1.5px solid #fff3;border-radius:12px;padding:.75rem 1rem .75rem 2.5rem;font-family:inherit;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 8px #0000001a}.login-card .form-input::placeholder{color:#ffffff80}.login-card .form-input:hover{background:#ffffff2e;border-color:#ffffff4d;transform:translateY(-1px);box-shadow:0 4px 12px #00000026}.login-card .form-input:focus{background:#ffffff38;border-color:#fff9;outline:none;transform:translateY(-1px);box-shadow:0 0 0 3px #ffffff26,0 6px 12px #0003}.login-card .form-input:-webkit-autofill{-webkit-text-fill-color:#fff;caret-color:#fff;-webkit-box-shadow:inset 0 0 0 1000px #1d4a7aeb}.login-card .form-input:-webkit-autofill:hover{-webkit-text-fill-color:#fff;caret-color:#fff;-webkit-box-shadow:inset 0 0 0 1000px #1d4a7aeb}.login-card .form-input:-webkit-autofill:focus{-webkit-text-fill-color:#fff;caret-color:#fff;-webkit-box-shadow:inset 0 0 0 1000px #1d4a7aeb}.pw-toggle{color:#fff9;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:.3rem;display:flex;position:absolute;right:.6rem}.pw-toggle:hover{color:#fff}.pw-toggle .material-symbols-rounded{font-size:var(--icon-sm)}.form-options{justify-content:space-between;align-items:center;margin-top:1rem;margin-bottom:1.5rem;display:flex}.remember-label{font-size:var(--text-sm);color:#fffc;cursor:pointer;align-items:center;gap:.5rem;display:inline-flex}.remember-label input{accent-color:#fff;cursor:pointer;width:16px;height:16px}.forgot-link{font-size:var(--text-sm);color:#ffffffd9;cursor:pointer;background:0 0;border:none;padding:0;font-weight:600;text-decoration:none}.forgot-link:hover{color:#fff;text-decoration:underline}.login-btn{width:100%;font-size:var(--text-body);color:#fff;cursor:pointer;background:linear-gradient(135deg,#2b7fd4 0%,#6d5ae0 100%);border:none;border-radius:12px;justify-content:center;align-items:center;gap:.5rem;padding:.85rem 1rem;font-weight:700;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;position:relative;overflow:hidden;box-shadow:0 6px 20px #2b7fd459,0 2px 8px #0003}.login-btn:before{content:"";background:linear-gradient(90deg,#0000,#fff3,#0000);width:100%;height:100%;transition:left .5s;position:absolute;top:0;left:-100%}.login-btn:hover:not(:disabled){filter:brightness(1.1);transform:translateY(-2px);box-shadow:0 10px 28px #2b7fd473,0 4px 12px #00000040}.login-btn:hover:not(:disabled):before{left:100%}.login-btn:active:not(:disabled){transform:translateY(0);box-shadow:0 4px 16px #2b7fd44d,0 1px 4px #0003}.login-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.btn-spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite login-spin}@keyframes login-spin{to{transform:rotate(360deg)}}.form-divider{font-size:var(--text-caption);color:#ffffff8c;align-items:center;gap:.75rem;margin:1.5rem 0 1rem;display:flex}.form-divider:before,.form-divider:after{content:"";background:#fff3;flex:1;height:1px}.login-help{font-size:var(--text-sm);color:#fffc;background:#ffffff1a;border-radius:10px;align-items:center;gap:.6rem;padding:.75rem .9rem;display:flex}.login-help-icon{color:#ffffffb3;font-size:var(--icon-sm)}.login-footer{text-align:center;font-size:var(--text-caption);color:#fff9;margin-top:1.5rem}.login-footer a{color:#ffffffd9;font-weight:600}.portal-login-badge{font-size:var(--text-caption);color:#fff;background:#ffffff29;border:1px solid #ffffff38;border-radius:999px;align-items:center;gap:.5rem;padding:.3rem .85rem .3rem .4rem;font-weight:600;display:inline-flex}.portal-login-badge-icon{background:#ffffff38;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;display:flex}.portal-login-badge-icon .material-symbols-rounded{font-size:.95rem}.portal-login-info{flex-direction:column;gap:.5rem;margin-top:1.25rem;display:flex}.portal-login-info-row{font-size:var(--text-caption);color:#ffffffb3;align-items:center;gap:.6rem;display:flex}.portal-login-info-row .material-symbols-rounded{font-size:var(--icon-sm);color:#ffffff8c}.portal-login-back{font-size:var(--text-sm);color:#ffffffbf;align-items:center;gap:.35rem;font-weight:600;text-decoration:none;transition:color .15s;display:inline-flex}.portal-login-back:hover{color:#fff}.portal-login-back .material-symbols-rounded{font-size:var(--icon-sm)}.portal-login-back{margin-bottom:.85rem}.portal-login-error-visible{display:flex!important}.portal-login-contact-row,.lg-contact-row{background:var(--muted);border-radius:var(--radius-sm);align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.portal-forgot-link{color:#ffffffd9}.portal-forgot-link:hover{color:#fff}.lg-forgot-intro{margin-bottom:1rem;line-height:1.6}.lg-contact-icon{color:var(--primary)}.lg-contact-label{font-weight:600;font-size:var(--text-sm)}.lg-contact-value{font-size:var(--text-sm)}.lg-mt-0{margin-top:0}.lg-back-link{margin-top:.75rem}.lg-line16{line-height:1.6}.lg-modal-err{color:var(--danger);margin-bottom:.75rem}@media (width<=480px){.login-page{padding:1rem .75rem}.login-card{border-radius:16px;padding:2rem 1.25rem}.login-heading{font-size:1.4rem}}.pub-page{background:var(--bg,#fff);min-height:100vh;color:var(--text,#1a1a1a);flex-direction:column;display:flex}.pub-nav{border-bottom:1px solid var(--border,#e5e7eb);background:var(--bg,#fff);z-index:10;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 2rem;display:flex;position:sticky;top:0}.pub-nav-brand{color:inherit;align-items:center;gap:.6rem;text-decoration:none;display:flex}.pub-nav-logo img{width:auto;height:34px;display:block}.pub-nav-name{font-weight:700;font-size:var(--text-title);white-space:nowrap}.pub-nav-name span{color:var(--primary,#003d7a)}.pub-nav-right{align-items:center;gap:1.5rem;display:flex}.pub-nav-links{gap:1.4rem;display:flex}.pub-nav-links a{color:var(--text-muted,#4b5563);font-size:var(--text-body);white-space:nowrap;text-decoration:none}.pub-nav-links a:hover{color:var(--primary,#003d7a)}.pub-nav-signin{border-radius:var(--radius-sm);background:var(--primary,#003d7a);color:#fff;font-weight:600;font-size:var(--text-body);white-space:nowrap;align-items:center;gap:.4rem;padding:.55rem 1.1rem;text-decoration:none;display:inline-flex}.pub-header{text-align:center;max-width:760px;margin:0 auto;padding:3.5rem 2rem 2rem}.pub-header-title{margin:0 0 .75rem;font-size:clamp(1.9rem,4vw,2.6rem);line-height:1.15}.pub-header-sub{color:var(--text-muted,#4b5563);font-size:var(--text-title);margin:0;line-height:1.6}.pub-main{flex:1;width:100%;max-width:1080px;margin:0 auto;padding:1rem 2rem 4rem}.pub-prose{max-width:760px;margin:0 auto;line-height:1.7}.pub-prose h2{font-size:var(--text-title);margin:2.25rem 0 .6rem}.pub-prose h3{font-size:var(--text-title);margin:1.5rem 0 .4rem}.pub-prose p,.pub-prose li{color:var(--text-muted,#374151)}.pub-prose ul{padding-left:1.25rem}.pub-prose li{margin-bottom:.4rem}.pub-updated{font-size:var(--text-body);color:var(--text-muted,#6b7280);padding-left:.75rem}.pub-plans{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.25rem;margin:1rem 0 2.5rem;display:grid}.pub-plan{border:1px solid var(--border,#e5e7eb);border-radius:var(--radius);flex-direction:column;padding:1.6rem;display:flex}.pub-plan--featured{border-color:var(--primary,#003d7a);border-width:2px}.pub-plan-badge{font-size:var(--text-caption);letter-spacing:.04em;text-transform:uppercase;color:var(--primary,#003d7a);background:#003d7a14;border-radius:999px;align-self:flex-start;margin-bottom:.75rem;padding:.25rem .6rem;font-weight:700}.pub-plan-name{font-size:var(--text-title);margin:0 0 .3rem}.pub-plan-for{color:var(--text-muted,#6b7280);font-size:var(--text-body);min-height:2.6em;margin:0 0 1.1rem}.pub-plan-limits{border-top:1px solid var(--border,#e5e7eb);border-bottom:1px solid var(--border,#e5e7eb);gap:1.5rem;margin-bottom:1.1rem;padding:.9rem 0;display:flex}.pub-plan-limit-value{font-size:var(--text-display);font-weight:700;display:block}.pub-plan-limit-label{font-size:var(--text-sm);color:var(--text-muted,#6b7280)}.pub-plan-features{flex:1;margin:0 0 1.4rem;padding:0;list-style:none}.pub-plan-features li{font-size:var(--text-body);color:var(--text-muted,#374151);align-items:flex-start;gap:.5rem;margin-bottom:.5rem;display:flex}.pub-plan-features .material-symbols-rounded{font-size:var(--icon-sm);color:var(--primary,#003d7a);flex-shrink:0}.pub-plan-cta{text-align:center;border-radius:var(--radius-sm);border:1px solid var(--primary,#003d7a);color:var(--primary,#003d7a);padding:.7rem 1rem;font-weight:600;text-decoration:none;display:block}.pub-plan-cta--solid{background:var(--primary,#003d7a);color:#fff}.pub-find-form{flex-direction:column;gap:.6rem;max-width:420px;margin:0 0 2rem;display:flex}.pub-find-form label{font-weight:600;font-size:var(--text-body)}.pub-find-form input{border:1px solid var(--border,#d1d5db);border-radius:var(--radius-sm);font-size:var(--text-body);background:var(--bg,#fff);color:var(--text,#1a1a1a);padding:.7rem .9rem;font-family:inherit}.pub-find-form input:focus{outline:2px solid var(--primary,#003d7a);outline-offset:1px;border-color:#0000}.pub-find-form button{border:1px solid var(--primary,#003d7a);cursor:pointer;font-size:var(--text-body);font-family:inherit}.pub-find-form button:disabled{opacity:.6;cursor:default}.pub-find-note{font-size:var(--text-sm);color:var(--text-muted,#6b7280);margin:.3rem 0 0;line-height:1.55}.pub-find-error{color:var(--danger,#b42318);font-size:var(--text-body);margin:0}.pub-find-done{border:1px solid var(--border,#e5e7eb);border-radius:10px;max-width:520px;margin-bottom:2rem;padding:1.5rem}.pub-find-done .material-symbols-rounded{color:var(--primary,#003d7a);margin-bottom:.5rem;font-size:2rem;display:block}.pub-find-done>p:first-of-type{margin-top:0;font-weight:600}.pub-find-done .pub-plan-cta{margin-top:1rem;display:inline-block}.school-brand{text-align:center;margin-bottom:1.25rem}.school-brand-name{font-size:var(--text-display);margin:0;font-weight:700;line-height:1.25}.school-brand-sub{font-size:var(--text-sm);color:var(--text-muted,#6b7280);letter-spacing:.02em;margin:.2rem 0 0}.school-brand-warn{border-radius:var(--radius-sm);max-width:380px;color:var(--danger,#b42318);font-size:var(--text-sm);background:#b4231814;margin:.6rem auto 0;padding:.5rem .75rem;line-height:1.5}.pub-contact-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.25rem;margin-bottom:2rem;display:grid}.pub-contact-card{border:1px solid var(--border,#e5e7eb);border-radius:var(--radius);padding:1.4rem}.pub-contact-card .material-symbols-rounded{color:var(--primary,#003d7a);margin-bottom:.5rem;display:block}.pub-contact-card h3{font-size:var(--text-title);margin:0 0 .35rem}.pub-contact-card p,.pub-contact-card a{color:var(--text-muted,#4b5563);font-size:var(--text-body);margin:0;line-height:1.6;text-decoration:none}.pub-contact-card a:hover{color:var(--primary,#003d7a);text-decoration:underline}.pub-values{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.25rem;margin:1.5rem 0 2rem;display:grid}.pub-value{border:1px solid var(--border,#e5e7eb);border-radius:var(--radius);padding:1.4rem}.pub-value .material-symbols-rounded{color:var(--primary,#003d7a);margin-bottom:.5rem;display:block}.pub-value h3{font-size:var(--text-body);margin:0 0 .4rem}.pub-value p{color:var(--text-muted,#4b5563);font-size:var(--text-body);margin:0;line-height:1.6}.pub-footer{border-top:1px solid var(--border,#e5e7eb);background:var(--bg-alt,#f9fafb);padding:2.5rem 2rem 1.25rem}.pub-footer-inner{grid-template-columns:2fr 1fr 1fr 1fr;gap:2rem;max-width:1080px;margin:0 auto;display:grid}.pub-footer-col{flex-direction:column;gap:.5rem;display:flex}.pub-footer-heading{font-weight:700;font-size:var(--text-body);margin-bottom:.3rem}.pub-footer-desc{color:var(--text-muted,#6b7280);font-size:var(--text-body);max-width:34ch;margin:0;line-height:1.6}.pub-footer-col a{color:var(--text-muted,#4b5563);font-size:var(--text-body);text-decoration:none}.pub-footer-col a:hover{color:var(--primary,#003d7a)}.pub-footer-base{border-top:1px solid var(--border,#e5e7eb);max-width:1080px;font-size:var(--text-sm);color:var(--text-muted,#6b7280);flex-wrap:wrap;justify-content:space-between;gap:1rem;margin:2rem auto 0;padding-top:1.25rem;display:flex}@media (width<=860px){.pub-footer-inner{grid-template-columns:1fr 1fr}}@media (width<=640px){.pub-nav{flex-wrap:wrap;padding:.85rem 1rem}.pub-nav-links{display:none}.pub-header{padding:2.25rem 1rem 1.25rem}.pub-main{padding:1rem 1rem 3rem}.pub-footer-inner{grid-template-columns:1fr}}.not-found-page{background:var(--card);justify-content:center;align-items:center;width:100%;min-height:100vh;display:flex;position:relative;overflow:hidden}.not-found-grid{background-image:linear-gradient(to right, var(--muted) 1px, transparent 1px), linear-gradient(to bottom, var(--muted) 1px, transparent 1px);background-size:80px 80px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle,#0009 0%,#0000 65%);mask-image:radial-gradient(circle,#0009 0%,#0000 65%)}.not-found-content{z-index:1;text-align:center;flex-direction:column;align-items:center;max-width:32rem;padding:2rem;display:flex;position:relative}.not-found-icon{border-radius:var(--radius-md);border:1px solid var(--border);background:var(--card);justify-content:center;align-items:center;width:3.5rem;height:3.5rem;margin-bottom:1.5rem;display:flex}.not-found-icon .material-symbols-rounded{font-size:var(--icon-lg);color:var(--foreground)}.not-found-title{color:var(--foreground);margin:0 0 1rem;font-size:2.75rem;font-weight:800;line-height:1.1}.not-found-subtitle{font-size:var(--text-title);color:var(--muted-foreground);margin:0 0 2rem;line-height:1.6}.not-found-actions{align-items:center;gap:.75rem;display:flex}.not-found-btn{border-radius:var(--radius-md);font-weight:600;font-size:var(--text-body);cursor:pointer;border:none;align-items:center;gap:.5rem;padding:.7rem 1.5rem;text-decoration:none;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.not-found-btn .material-symbols-rounded{font-size:var(--icon-sm)}.not-found-btn-outline{background:var(--card);border:1px solid var(--border);color:var(--foreground)}.not-found-btn-outline:hover{background:var(--muted);border-color:var(--border-hover)}.not-found-btn-primary{background:var(--primary);color:var(--primary-foreground)}.not-found-btn-primary:hover{background:var(--primary-hover)}.platform-portal{--portal-accent:var(--primary);--portal-accent-light:var(--primary-light)}.platform-login{background:var(--background);justify-content:center;align-items:center;min-height:100vh;padding:1.5rem;display:flex}.platform-login.is-top{align-items:flex-start;padding:2.5rem 1.5rem}.platform-login-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:400px;box-shadow:var(--card-shadow);padding:2rem}.platform-login-card.is-wide{max-width:560px}.platform-login-brand{align-items:center;gap:.8rem;margin-bottom:1.5rem;display:flex}.platform-login-brand img{border-radius:var(--radius);object-fit:contain;width:46px;height:46px}.platform-login-brand h1{font-size:var(--text-title);color:var(--foreground);font-weight:700}.platform-login-brand p{font-size:var(--text-sm);color:var(--muted-foreground)}.platform-login-note{font-size:var(--text-caption);color:var(--muted-foreground);margin-top:1rem;line-height:1.5}.platform-login-error{color:#dc2626;border-radius:var(--radius-sm);font-size:var(--text-sm);background:#ef444414;border:1px solid #ef444440;align-items:center;gap:.5rem;margin-bottom:1rem;padding:.65rem .8rem;display:flex}.platform-login-error .material-symbols-rounded{font-size:var(--icon-sm)}.platform-pw-wrap{position:relative}.platform-pw-wrap .form-input{padding-right:2.4rem}.platform-pw-toggle{color:var(--muted-foreground);cursor:pointer;background:0 0;border:none;display:inline-flex;position:absolute;top:50%;right:.4rem;transform:translateY(-50%)}.platform-portal .sidebar-brand-tagline{color:var(--primary);font-weight:600}.platform-panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.platform-panel-head h2{font-size:var(--text-title);color:var(--foreground);font-weight:700}.platform-section-title{font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.04em;color:var(--muted-foreground);margin:1.5rem 0 .75rem;font-weight:700}.platform-section-title:first-child{margin-top:0}.platform-panel-head .platform-section-title{margin:0}.platform-muted{color:var(--muted-foreground)}.platform-strong{color:var(--foreground);font-weight:600}.platform-muted code{background:var(--muted,#f1f5f9);border-radius:5px;padding:.1rem .35rem}.platform-cards{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:.5rem;display:grid}.portal-stat-card.clickable{cursor:pointer}.portal-stat-card.clickable:hover{border-color:var(--primary)}.platform-stat-hint{font-size:var(--text-caption);color:var(--muted-foreground);margin-top:.15rem}.platform-col-action{text-align:right;white-space:nowrap}.platform-col-action .btn+.btn{margin-left:.4rem}.platform-form>.btn{margin-top:.85rem}.platform-chip{font-size:var(--text-caption);text-transform:capitalize;border-radius:999px;padding:.15rem .6rem;font-weight:600;display:inline-block}.platform-chip-ok{background:var(--success-light);color:var(--success)}.platform-chip-info{background:var(--primary-light);color:var(--primary)}.platform-chip-warn{color:#b45309;background:#f59e0b26}.platform-chip-bad{color:#dc2626;background:#ef44441f}.platform-form{background:var(--muted,#f8fafc);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:1.25rem;padding:1rem}.platform-form-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.85rem;display:grid}.platform-form-grid label{font-size:var(--text-sm);color:var(--foreground);flex-direction:column;gap:.3rem;font-weight:600;display:flex}.platform-tickets{grid-template-columns:minmax(260px,350px) 1fr;align-items:start;gap:1.25rem;display:grid}@media (width<=860px){.platform-tickets{grid-template-columns:1fr}}.platform-ticket-list{max-height:72vh;overflow-y:auto}.platform-ticket-row{text-align:left;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;width:100%;margin-bottom:.5rem;padding:.7rem .8rem;display:block}.platform-ticket-row:hover{border-color:var(--border-hover)}.platform-ticket-row.is-active{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.platform-ticket-row-top{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.35rem;display:flex}.platform-ticket-row-sub{font-size:var(--text-sm);align-items:center;gap:.5rem;display:flex}.platform-thread{flex-direction:column;gap:.6rem;margin:1rem 0;display:flex}.platform-msg{border-radius:var(--radius-sm);max-width:85%;padding:.65rem .85rem}.platform-msg-who{font-size:var(--text-caption);color:var(--muted-foreground);margin-bottom:.2rem;font-weight:600}.platform-msg-body{white-space:pre-wrap;font-size:var(--text-body);color:var(--foreground)}.platform-msg-school{background:var(--muted,#f1f5f9);align-self:flex-start}.platform-msg-operator{background:var(--primary-light);align-self:flex-end}.platform-reply-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-top:.5rem;display:flex}.platform-status-actions{flex-wrap:wrap;gap:.4rem;display:flex}.platform-input-sm{max-width:180px}.pf-row{align-items:center;gap:.75rem;display:flex}.pf-row-between{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.pf-stack{flex-direction:column;gap:.85rem;display:flex}.pf-grid{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.85rem;display:grid}.pf-mt{margin-top:1rem}.pf-mb{margin-bottom:1rem}.pf-right{margin-left:auto}.pf-full{width:100%}.pf-nowrap{white-space:nowrap}.pf-capitalize{text-transform:capitalize}.pf-pre{white-space:pre-wrap}.pf-subtle{font-size:var(--text-sm)}.pf-hint{font-size:var(--text-caption);color:var(--muted-foreground)}.pf-clickable{cursor:pointer}.pf-ml{margin-left:.4rem}.pf-tight{margin-top:-.5rem}.pf-form-submit{margin-top:.85rem}.pf-field{flex-direction:column;gap:.2rem;display:flex}.pf-field-label{font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.03em;color:var(--muted-foreground)}.pf-field-value{color:var(--foreground);font-weight:600}.pf-list-row{border-bottom:1px solid var(--border);justify-content:space-between;gap:.5rem;padding:.45rem 0;display:flex}.pf-list-row:last-child{border-bottom:none}.pf-callout{background:var(--success-light);color:var(--success);border-radius:var(--radius-sm);border:1px solid #10b9814d;padding:.7rem .85rem}.pf-health-comp .card-content{align-items:center;gap:.75rem;display:flex}.pf-health-icon{font-size:var(--icon-xl)}.pf-health-icon.ok{color:var(--success)}.pf-health-icon.bad{color:var(--destructive,#dc2626)}.pf-metric-value{font-size:var(--text-display);color:var(--foreground);font-weight:700}.pf-metric-value.warn{color:#b45309}.pf-metric-value.bad{color:var(--destructive,#dc2626)}.pf-metric-label{font-size:var(--text-sm);color:var(--muted-foreground)}.platform-linkish{cursor:pointer;color:var(--primary);font-weight:600;font:inherit;text-align:left;background:0 0;border:none;padding:0}.platform-linkish:hover{text-decoration:underline}.btn.platform-danger{color:#dc2626;background:0 0;border:1px solid #ef444473}.btn.platform-danger:hover:not(:disabled){background:#ef444414}.platform-ticket-detail{flex-direction:column;min-height:0;display:flex}.pf-mono{letter-spacing:.08em;word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}:root{--admin:#4f46e5;--admin-light:#4f46e51a;--admin-hover:#4338ca}.admin-portal{--portal-accent:var(--primary);--portal-accent-light:var(--primary-light)}.admin-av{background:var(--admin);color:#fff}.sidebar-link.active{background:var(--admin-light);color:var(--admin)}.sidebar-link.active .sidebar-icon{color:var(--admin)}.portal-stat-icon{background:var(--admin-light);color:var(--admin)}.adm-cell{align-items:center;gap:.625rem;display:flex}.adm-av{background:var(--admin-light);width:34px;height:34px;color:var(--admin);font-size:var(--text-sm);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:flex}.adm-av.dos{color:#003d7a;background:#003d7a1f}.adm-av.teacher{background:var(--teacher-light,#14b8a61f);color:var(--teacher,#0d9488)}.adm-av.matron{color:#db2777;background:#ec48991f}.adm-av.dis{color:#dc2626;background:#ef44441f}.adm-av.support{color:#4b5563;background:#6b72801f}.adm-name{font-weight:600;font-size:var(--text-sm)}.adm-sub{font-size:var(--text-caption);color:var(--muted-foreground)}.adm-badge{font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.03em;border-radius:10px;padding:2px 8px;font-weight:700}.adm-badge.active{background:var(--success-light,#16a34a1a);color:var(--success,#16a34a)}.adm-badge.inactive{background:var(--muted);color:var(--muted-foreground)}.adm-badge.pending{color:#ca8a04;background:#eab3081a}.adm-badge.fulltime{background:var(--admin-light);color:var(--admin)}.adm-badge.parttime{color:#ea580c;background:#f973161a}.adm-badge.paid{background:var(--success-light,#16a34a1a);color:var(--success,#16a34a)}.adm-badge.partial{color:#ca8a04;background:#eab3081a}.adm-badge.overdue{background:var(--destructive-light);color:var(--destructive)}.adm-badge.admin{background:var(--admin-light);color:var(--admin)}.adm-role-chip{font-size:var(--text-caption);border-radius:var(--radius-sm);background:var(--muted);color:var(--muted-foreground);margin-bottom:.2rem;margin-right:.25rem;padding:1px 7px;font-weight:600;display:inline-block}.adm-btn{font-size:var(--text-caption);border:1px solid var(--border);background:var(--card);color:var(--foreground);cursor:pointer;border-radius:6px;align-items:center;gap:.25rem;margin-right:.25rem;padding:.25rem .625rem;font-weight:600;transition:all .15s;display:inline-flex}.adm-btn:hover{background:var(--muted)}.adm-btn.danger{border-color:var(--destructive);color:var(--destructive)}.adm-btn.danger:hover{background:var(--destructive-light)}.adm-btn .material-symbols-rounded{font-size:var(--icon-sm)}.adm-finance-grid{grid-template-columns:1fr 340px;align-items:start;gap:1.25rem;display:grid}.adm-progress-row{align-items:center;gap:.75rem;margin-bottom:.875rem;display:flex}.adm-progress-label{font-size:var(--text-sm);width:100px;color:var(--foreground);flex-shrink:0;font-weight:600}.adm-progress-bar{background:var(--muted);border-radius:4px;flex:1;height:8px;overflow:hidden}.adm-progress-fill{background:var(--admin);border-radius:4px;height:100%;transition:width .3s}.adm-progress-value{font-size:var(--text-sm);color:var(--admin);text-align:right;flex-shrink:0;width:36px;font-weight:700}.adm-report-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem;display:grid}.adm-report-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;flex-direction:column;gap:.625rem;padding:1.25rem;transition:box-shadow .15s;display:flex}.adm-report-card:hover{box-shadow:0 2px 10px #00000014}.adm-report-icon{background:var(--admin-light);width:42px;height:42px;color:var(--admin);border-radius:10px;justify-content:center;align-items:center;display:flex}.adm-report-icon.success{background:var(--success-light,#16a34a1a);color:var(--success,#16a34a)}.adm-report-icon.warning{color:#ca8a04;background:#eab3081a}.adm-report-icon.danger{background:var(--destructive-light);color:var(--destructive)}.adm-report-title{font-size:var(--text-body);color:var(--foreground);font-weight:700}.adm-report-desc{font-size:var(--text-sm);color:var(--muted-foreground);line-height:1.5}.adm-report-meta{font-size:var(--text-caption);color:var(--muted-foreground);border-top:1px solid var(--border);align-items:center;gap:.3rem;margin-top:auto;padding-top:.5rem;display:flex}.adm-settings-grid{grid-template-columns:220px 1fr;align-items:start;gap:1.25rem;display:grid}.adm-settings-nav{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.adm-settings-nav-item{font-size:var(--text-sm);color:var(--muted-foreground);cursor:pointer;text-align:left;border:none;border-bottom:1px solid var(--border);background:0 0;align-items:center;gap:.625rem;width:100%;padding:.75rem 1rem;font-weight:500;transition:all .15s;display:flex}.adm-settings-nav-item:last-child{border-bottom:none}.adm-settings-nav-item:hover{background:var(--muted);color:var(--foreground)}.adm-settings-nav-item.active{background:var(--admin-light);color:var(--admin);font-weight:600}.adm-settings-nav-item .material-symbols-rounded{font-size:var(--icon-sm)}.task-item{align-items:flex-start;gap:.625rem;padding:.625rem 0;display:flex}.task-item+.task-item{border-top:1px solid var(--border)}.task-item.done{opacity:.5}.task-toggle-btn{border:2px solid var(--border);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;min-width:20px;height:20px;margin-top:1px;padding:0;transition:all .15s;display:flex}.task-toggle-btn.done{border-color:var(--success);background:var(--success)}.task-toggle-btn .material-symbols-rounded{font-size:var(--icon-sm);color:#fff}.task-body{flex:1;min-width:0}.task-text{font-size:var(--text-sm);margin:0}.task-text.done{text-decoration:line-through}.task-due{font-size:var(--text-caption);color:var(--muted-foreground);margin:2px 0 0}.task-dismiss{cursor:pointer;color:var(--muted-foreground);background:0 0;border:none;flex-shrink:0;padding:2px;display:flex}.task-dismiss .material-symbols-rounded{font-size:var(--icon-sm)}.tasks-empty{text-align:center;color:var(--muted-foreground);font-size:var(--text-sm);padding:1rem 0}.badge-pending-count{background:var(--destructive-light);color:var(--destructive)}.filter-chips{flex-wrap:wrap;gap:.375rem;margin-bottom:.875rem;display:flex}.quick-actions-section{border-top:1px solid var(--border);margin-top:1.5rem;padding-top:1rem}.quick-actions-label{font-size:var(--text-sm);margin-bottom:.5rem;font-weight:700}.quick-actions-btns{flex-direction:column;gap:.5rem;display:flex}.btn-left{justify-content:flex-start}.td-empty{text-align:center;color:var(--muted-foreground);padding:2rem}.section-heading{font-size:var(--text-body);margin-bottom:.875rem;font-weight:700}.adm-report-btn{min-width:90px;margin-left:auto;padding:.2rem .75rem!important}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.icon-spin{font-size:var(--icon-sm);animation:1s linear infinite spin;display:inline-flex}.icon-success{font-size:var(--icon-sm);color:var(--success)}.icon-sm-btn{font-size:var(--icon-sm)}.file-list-item{align-items:center;gap:.75rem;padding:.625rem 0;display:flex}.file-list-item+.file-list-item{border-top:1px solid var(--border)}.file-list-icon{color:var(--admin);font-size:var(--icon-lg);flex-shrink:0}.file-list-body{flex:1;min-width:0}.file-list-name{font-size:var(--text-sm);font-weight:600}.file-list-meta{font-size:var(--text-caption);color:var(--muted-foreground)}.settings-form{flex-direction:column;gap:1rem;display:flex}.calendar-term-row{grid-template-columns:clamp(80px,15%,100px) 1fr 1fr;align-items:center;gap:.75rem;display:grid}.calendar-term-label{font-weight:700;font-size:var(--text-sm)}.form-group-0{margin:0!important}.settings-save-row{padding-top:.75rem}.btn-saved{color:var(--success)!important;border-color:var(--success)!important}.coming-soon{text-align:center;color:var(--muted-foreground);padding:2rem}.coming-soon-icon{margin-bottom:.5rem;font-size:2.5rem;display:block}.coming-soon-title{margin:0;font-weight:600}.coming-soon-desc{font-size:var(--text-sm);margin:.25rem 0 0}.modal-confirm{padding:1.5rem}.modal-confirm-title{font-size:var(--text-title);margin:0 0 .5rem}.modal-confirm-desc{color:var(--muted-foreground);font-size:var(--text-sm);margin:0 0 1.25rem}.modal-confirm-actions{justify-content:flex-end;gap:.625rem;display:flex}.btn-destructive{background:var(--destructive)!important;border-color:var(--destructive)!important}.fw-600{font-weight:600}.input-140{width:140px}.select-xs{font-size:var(--text-caption)!important}@media (width<=900px){.adm-finance-grid,.adm-settings-grid{grid-template-columns:1fr}}.chart-tooltip{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-sm);padding:.5rem .875rem;box-shadow:0 4px 12px #0000001a}.chart-tooltip-label{color:var(--foreground);margin-bottom:2px;font-weight:700}.chart-legend-row{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.chart-legend-item{font-size:var(--text-caption);color:var(--muted-foreground);align-items:center;gap:.35rem;display:flex}.chart-legend-dot-sq{border-radius:2px;flex-shrink:0;width:10px;height:10px;display:inline-block}.adm-student-modal{width:95vw;max-width:600px}.adm-student-av{width:40px;height:40px;font-size:var(--text-body);flex-shrink:0}.adm-student-sub{font-size:var(--text-sm);color:var(--muted-foreground);margin:0}.adm-student-body{flex-direction:column;gap:1.25rem;display:flex}.adm-modal-label{font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.05em;color:var(--muted-foreground);margin-bottom:.6rem;font-weight:700}.adm-profile-grid{grid-template-columns:1fr 1fr;gap:.4rem 1.5rem;display:grid}.adm-profile-row{align-items:baseline;gap:.4rem;display:flex}.adm-profile-key{color:var(--muted-foreground);font-size:var(--text-sm);flex-shrink:0;width:80px}.adm-profile-val{font-weight:600;font-size:var(--text-sm)}.att-bar{margin-bottom:.6rem}.att-bar-head{font-size:var(--text-sm);justify-content:space-between;margin-bottom:.2rem;display:flex}.att-bar-track{background:var(--border);border-radius:999px;height:6px}.att-bar-fill{border-radius:999px;height:100%}.adm-result-list{flex-direction:column;display:flex}.adm-result-row{border-bottom:1px solid var(--border);align-items:center;gap:.5rem;padding:.4rem 0;display:flex}.adm-result-name{font-size:var(--text-sm);flex:1;font-weight:500}.adm-result-score{font-size:var(--text-sm);color:var(--muted-foreground);text-align:right;min-width:44px}.adm-result-grade{font-weight:700;font-size:var(--text-sm);text-align:right;min-width:26px}.adm-result-more{font-size:var(--text-caption);color:var(--muted-foreground);margin-top:.4rem}.adm-invite-success{text-align:center;padding:2rem 1rem}.adm-invite-success-icon{color:var(--success,#16a34a);font-size:2.5rem}.adm-invite-success-title{margin-top:.75rem;font-weight:600}.adm-invite-success-note{font-size:var(--text-sm);color:var(--muted-foreground)}.adm-kv-row{gap:.5rem;display:flex}.adm-kv-key{width:100px;color:var(--muted-foreground);font-size:var(--text-sm);flex-shrink:0}.adm-kv-val{font-weight:500;font-size:var(--text-sm)}.adm-count-badge{background:var(--warning,#f59e0b);color:#fff;font-size:var(--text-caption);border-radius:999px;margin-left:.35rem;padding:0 .4rem;font-weight:700}.adm-sent-cell,.adm-cell-sub{font-size:var(--text-sm);color:var(--muted-foreground)}.adm-check-col{width:36px}.adm-ann-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);gap:1rem;padding:1rem 1.25rem;display:flex}.adm-ann-icon{border-radius:var(--radius-sm);background:var(--cat-badge,var(--muted));flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;margin-top:2px;display:flex}.adm-ann-icon .material-symbols-rounded{color:var(--cat-text,var(--muted-foreground));font-size:var(--icon-sm)}.adm-ann-body{flex:1;min-width:0}.adm-ann-meta{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.3rem;display:flex}.adm-ann-cat{font-size:var(--text-caption);letter-spacing:.05em;text-transform:uppercase;background:var(--cat-badge,var(--muted));color:var(--cat-text,var(--muted-foreground));border-radius:4px;padding:.1rem .45rem;font-weight:700}.adm-ann-time{font-size:var(--text-caption);color:var(--muted-foreground)}.adm-ann-title{font-size:var(--text-body);color:var(--foreground);margin:0 0 .3rem;font-weight:700}.adm-ann-text{font-size:var(--text-sm);color:var(--muted-foreground);white-space:pre-wrap;margin:0 0 .75rem;line-height:1.55}.adm-ann-actions{flex-wrap:wrap;gap:.5rem;display:flex}.adm-eyebrow{font-size:var(--text-sm);color:var(--muted-foreground);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.4rem;font-weight:600}.adm-chip-row{flex-wrap:wrap;gap:.4rem;display:flex}.adm-tab-count{font-size:var(--text-caption);background:var(--muted);color:var(--muted-foreground);border-radius:10px;margin-left:.3rem;padding:.05rem .35rem;font-weight:700}.adm-tab-count.on{color:#fff;background:#ffffff40}.adm-set-note{color:var(--muted-foreground)}.adm-set-hint{color:var(--muted-foreground);font-size:var(--text-sm);margin-top:.5rem}.adm-set-count{font-size:var(--text-sm);color:var(--muted-foreground)}.adm-editblock{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--background);margin-top:.75rem;padding:.875rem 1rem}.adm-editblock-pad{padding:1rem}.adm-editblock-head{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.adm-editblock-title,.adm-type-title{font-weight:700;font-size:var(--text-body)}.adm-icon-muted{color:var(--muted-foreground)}.adm-icon-danger,.adm-danger{color:var(--danger)}.adm-spacer{flex:1}.adm-struct-stats{flex-wrap:wrap;gap:1rem;margin-bottom:1.25rem;display:flex}.adm-struct-stat{flex:1;min-width:120px}.adm-lesson-row{background:var(--card);border:1px solid var(--border);border-radius:.375rem;align-items:center;gap:.5rem;margin-bottom:.375rem;padding:.4rem .6rem;display:flex}.adm-lesson-name{font-size:var(--text-sm);flex:1;font-weight:500}.adm-lesson-code{font-size:var(--text-caption);background:var(--primary);color:#fff;border-radius:.25rem;padding:.1rem .45rem;font-weight:600}.adm-lesson-empty{color:var(--muted-foreground);font-size:var(--text-sm);margin-bottom:.5rem}.adm-lesson-add{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}.adm-input-grow{flex:1}.adm-input-lesson{min-width:9rem;font-size:var(--text-sm);flex:2}.adm-input-code{min-width:5rem;font-size:var(--text-sm);flex:1}.adm-input-stream{max-width:14rem;font-size:var(--text-sm);flex:1}.adm-input-year{width:7rem}.adm-inline-err{color:var(--danger);font-size:var(--text-sm);margin-top:.25rem}.adm-room-icon{font-size:var(--icon-sm);color:var(--muted-foreground)}.adm-ro-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.75rem;margin-bottom:1rem;display:grid}.adm-ro-panel{border:1px solid var(--border);border-radius:10px;margin-bottom:1rem;padding:1rem}.adm-ro-sumrow{border-bottom:1px solid var(--border);font-size:var(--text-sm);justify-content:space-between;padding:.3rem 0;display:flex}.adm-ro-warn{color:var(--warning,#d97706);font-size:var(--text-sm);margin-top:.75rem}.adm-ro-warn-icon{font-size:var(--icon-sm);vertical-align:middle}.adm-ro-danger{font-size:var(--text-sm);color:#dc2626;margin-bottom:.75rem}.adm-ro-err{font-size:var(--text-sm);color:#dc2626}.adm-ro-done{text-align:center;padding:1.5rem 0}.adm-ro-done-icon{color:var(--success);font-size:2.5rem}.adm-ro-done-title{font-weight:700;font-size:var(--text-title);margin:.5rem 0}.adm-soon-tag{font-size:var(--text-caption);color:var(--muted-foreground);margin-left:auto;font-weight:400}.adm-chart-loading{height:200px;color:var(--muted-foreground);font-size:var(--text-sm);justify-content:center;align-items:center;display:flex}.adm-chart-nodata{color:var(--muted-foreground);font-size:var(--text-sm)}.adm-dist-row{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.adm-dist-legend{flex-direction:column;flex:1;gap:.5rem;display:flex}.adm-dist-item{font-size:var(--text-sm);align-items:center;gap:.5rem;display:flex}.adm-dist-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.adm-dist-name{color:var(--foreground);flex:1}.adm-search-input{max-width:260px}.adm-audit-note{color:var(--muted-foreground);padding:1.5rem 0}.adm-pager{justify-content:flex-end;align-items:center;gap:.5rem;margin-top:.75rem;display:flex}.adm-pager-info{font-size:var(--text-sm);color:var(--muted-foreground)}.adm-dash-note{color:var(--muted-foreground);padding:1rem 0}.adm-legend-mt{margin-top:.75rem}.adm-btn.primary{color:var(--primary);border-color:var(--primary)}.adm-title-grid{grid-template-columns:1fr auto;gap:.75rem;display:grid}.toolbar-card{align-items:center;gap:var(--space-3);padding:var(--toolbar-padding);background:var(--card);border:1px solid var(--border);border-radius:var(--toolbar-radius);box-shadow:var(--toolbar-shadow);flex-wrap:wrap;display:flex}.toolbar-spacer{flex:1}.toolbar-card .filter-tabs-bar,.toolbar-card .filter-tabs-bar--spaced{margin-bottom:0}.search-bar{align-items:center;gap:var(--space-2);min-width:200px;min-height:var(--touch-min);padding:0 var(--space-4);background:var(--muted);border-radius:var(--radius);transition:background var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast);border:1px solid #0000;flex:1;display:flex}.search-bar:hover{background:var(--muted-hover,var(--muted))}.search-bar:focus-within{background:var(--card);border-color:var(--border-hover,var(--border));box-shadow:var(--shadow-sm)}.search-bar:has(.search-bar-input:focus-visible){border-color:var(--foreground);box-shadow:0 0 0 3px var(--muted)}.search-bar-icon{font-size:var(--icon-md);color:var(--muted-foreground);flex-shrink:0}.search-bar-input{min-width:0;font-family:inherit;font-size:var(--text-body);color:var(--foreground);background:0 0;border:none;flex:1;padding:.7rem 0}.search-bar-input:focus,.search-bar-input:focus-visible{outline:none}.search-bar-input::placeholder{color:var(--muted-foreground)}.search-bar-input::-webkit-search-cancel-button{appearance:none}.search-bar-clear{border-radius:var(--radius-full);width:26px;height:26px;color:var(--muted-foreground);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.search-bar-clear:hover{background:var(--surface-3,var(--muted));color:var(--foreground)}.search-bar-clear .material-symbols-rounded{font-size:var(--icon-sm)}.dt-container{background:var(--card);border:1px solid var(--border);border-radius:var(--card-radius);box-shadow:var(--card-shadow);overflow:hidden}.dt-header{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border);flex-wrap:wrap;display:flex}.dt-title{align-items:center;gap:var(--space-2);font-weight:700;font-size:var(--text-body);color:var(--foreground);margin:0;display:inline-flex}.dt-title .material-symbols-rounded{font-size:var(--icon-md);color:var(--portal-accent,var(--muted-foreground));flex-shrink:0;line-height:1}.dt-table th.dt-num,.dt-table td.dt-num{text-align:right;font-variant-numeric:tabular-nums}.dt-count{font-size:var(--text-caption);color:var(--muted-foreground)}.dt-header-right{align-items:center;gap:var(--space-2);display:flex}.dt-body{-webkit-overflow-scrolling:touch;overflow-x:auto}.dt-body-pad{padding:var(--space-4)}.dt-empty{justify-content:center;align-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-4);color:var(--muted-foreground);text-align:center;flex-direction:column;display:flex}.dt-empty .material-symbols-rounded{opacity:.35;font-size:2.5rem}.dt-empty-title{font-weight:600;font-size:var(--text-body);color:var(--foreground)}.dt-empty-desc{font-size:var(--text-sm)}.dt-table{border-collapse:collapse;width:100%;min-width:480px}.dt-table th{text-align:left;font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.04em;color:var(--muted-foreground);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);white-space:nowrap;background:var(--muted);font-weight:700}.dt-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);vertical-align:middle;font-size:var(--text-sm);color:var(--foreground)}.dt-table tbody tr:last-child td{border-bottom:none}.dt-table tbody tr:hover{background:var(--muted);transition:background var(--transition-fast)}.dt-footer{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border-top:1px solid var(--border);flex-wrap:wrap;display:flex}.dt-page-info{font-size:var(--text-sm);color:var(--muted-foreground)}.dt-pagination{align-items:center;gap:var(--space-1);display:flex}.dt-page-btn{min-width:32px;height:32px;padding:0 var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);color:var(--foreground);font-size:var(--text-sm);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);justify-content:center;align-items:center;font-weight:500;display:flex}.dt-page-btn:hover:not(:disabled){background:var(--muted);border-color:var(--border-hover)}.dt-page-btn.active{background:var(--primary);border-color:var(--primary);color:var(--primary-foreground);font-weight:700}.dt-page-btn:disabled{opacity:.4;cursor:not-allowed}.dt-page-btn .material-symbols-rounded{font-size:var(--icon-sm)}.dt-cell-user{align-items:center;gap:var(--space-3);display:flex}.dt-avatar{width:36px;height:36px;font-weight:700;font-size:var(--text-sm);color:#fff;background:var(--primary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.dt-name{font-weight:600;font-size:var(--text-sm);color:var(--foreground)}.dt-sub{font-size:var(--text-caption);color:var(--muted-foreground);margin-top:1px}.dt-status{align-items:center;gap:var(--space-1);font-size:var(--text-sm);font-weight:600;display:inline-flex}.dt-status-dot{border-radius:50%;width:7px;height:7px;display:inline-block}.dt-badge{font-size:var(--text-caption);border-radius:999px;padding:2px 10px;font-weight:700;display:inline-block}.dt-badge-success{background:var(--success-light);color:var(--success)}.dt-badge-warning{background:var(--warning-light);color:var(--warning)}.dt-badge-danger{background:var(--destructive-light);color:var(--destructive)}.dt-badge-info{background:var(--info-light);color:var(--info)}.dt-badge-muted{background:var(--muted);color:var(--muted-foreground)}.dt-chip{font-size:var(--text-caption);border-radius:var(--radius-sm);background:var(--primary-light);color:var(--primary);margin-right:var(--space-1);padding:2px 8px;font-weight:600;display:inline-block}.dt-actions{gap:var(--space-2);display:flex}.grade-A{background:var(--success-light);color:var(--success)}.grade-B{background:var(--info-light);color:var(--info)}.grade-C{background:var(--warning-light);color:var(--warning)}.grade-D{color:#b45309;background:#f59e0b26}.grade-F{background:var(--destructive-light);color:var(--destructive)}@media (width<=640px){.dt-header{padding:var(--space-3) var(--space-4)}.dt-footer{padding:var(--space-2) var(--space-4)}.dt-table th,.dt-table td,.toolbar-card{padding:var(--space-2) var(--space-3)}}.data-table-wrap{overflow-x:auto}.data-table-wrap.framed,.data-table-wrap.raised{border-radius:var(--radius-lg);overflow:hidden}.data-table-wrap.framed{border:1px solid var(--border)}.data-table-wrap.raised{background:var(--card);box-shadow:var(--shadow-sm)}.data-table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.data-table th{text-align:left;font-weight:700;font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.04em;color:var(--muted-foreground);white-space:nowrap;padding:.75rem 1rem}.data-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:.85rem 1rem}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover td{background:var(--muted)}.reset-password-page{background:var(--background);justify-content:center;align-items:center;width:100%;min-height:100vh;padding:2rem 1rem;display:flex}.reset-password-card{text-align:center;flex-direction:column;align-items:center;width:100%;max-width:360px;display:flex}.reset-password-icon{border-radius:var(--radius-md);border:1px solid var(--border);background:var(--card);justify-content:center;align-items:center;width:3rem;height:3rem;margin-bottom:1.25rem;display:flex}.reset-password-icon .material-symbols-rounded{font-size:var(--icon-md);color:var(--foreground)}.reset-password-title{font-size:var(--text-title);color:var(--foreground);margin:0 0 .5rem;font-weight:700}.reset-password-subtitle{font-size:var(--text-sm);color:var(--muted-foreground);margin:0 0 1.5rem;line-height:1.5}.reset-password-error{background:var(--destructive-light);width:100%;color:var(--destructive);border-radius:var(--radius-sm);font-size:var(--text-sm);text-align:left;margin:0 0 1rem;padding:.6rem .8rem}.reset-password-card form{width:100%}.reset-password-field{text-align:left;margin-bottom:1rem}.reset-password-label{font-size:var(--text-sm);color:var(--foreground);margin-bottom:.35rem;font-weight:600;display:block}.reset-password-input-wrap{align-items:center;display:flex;position:relative}.reset-password-input-wrap input{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);width:100%;color:var(--foreground);font-size:var(--text-body);padding:.6rem 2.5rem .6rem .85rem}.reset-password-input-wrap input:focus{border-color:var(--primary);outline:none}.reset-password-toggle{cursor:pointer;color:var(--muted-foreground);background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:absolute;right:.6rem}.reset-password-toggle .material-symbols-rounded{font-size:var(--icon-sm)}.reset-password-rules{flex-direction:column;gap:.4rem;margin:0 0 1.25rem;padding:0;list-style:none;display:flex}.reset-password-rules li{font-size:var(--text-sm);color:var(--muted-foreground);align-items:center;gap:.5rem;display:flex}.reset-password-rules li .material-symbols-rounded{font-size:var(--icon-sm);color:var(--border-hover)}.reset-password-rules li.reset-password-rule-met{color:var(--foreground)}.reset-password-rules li.reset-password-rule-met .material-symbols-rounded{color:var(--success)}.reset-password-submit{border-radius:var(--radius-sm);background:var(--primary);width:100%;color:var(--primary-foreground);font-weight:600;font-size:var(--text-body);cursor:pointer;border:none;padding:.7rem;transition:background .15s}.reset-password-submit:hover:not(:disabled){background:var(--primary-hover)}.reset-password-submit:disabled{background:var(--muted);color:var(--muted-foreground);cursor:not-allowed}.reset-password-back{font-size:var(--text-sm);color:var(--muted-foreground);align-items:center;gap:.4rem;margin-top:1.25rem;text-decoration:none;display:inline-flex}.reset-password-back:hover{color:var(--foreground)}.reset-password-back .material-symbols-rounded{font-size:var(--icon-sm)}.sgn-page{background:var(--background);justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.sgn-wrap{width:100%;max-width:480px}.sgn-wrap-center{text-align:center;width:100%;max-width:480px}.sgn-primary{color:var(--primary)}.sgn-link{color:var(--primary);font-weight:600}.sgn-break{word-break:break-all}.sgn-btn{justify-content:center;width:100%}.sgn-success-icon{color:var(--success);font-size:4rem}.sgn-success-title{font-size:var(--text-display);margin-top:.5rem;font-weight:700}.sgn-success-sub{color:var(--muted);margin-top:.5rem}.sgn-detail-card{text-align:left;margin-top:1.5rem;padding:1.5rem}.sgn-detail-label{margin-bottom:.35rem}.sgn-detail-link{color:var(--primary);word-break:break-all;font-weight:600}.sgn-note{color:var(--muted);font-size:var(--text-sm);margin-top:1rem}.sgn-header{text-align:center;margin-bottom:2rem}.sgn-header-icon{color:var(--primary);font-size:2.5rem}.sgn-header-title{font-size:var(--text-display);margin-top:.5rem;font-weight:700}.sgn-header-sub{color:var(--muted);font-size:var(--text-body);margin-top:.25rem}.sgn-card{padding:1.75rem}.sgn-preview{font-size:var(--text-sm);color:var(--muted);margin-top:.35rem}.sgn-error{color:var(--danger);font-size:var(--text-sm);margin:0 0 .75rem}.sgn-submitting{color:var(--muted);font-size:var(--text-sm);text-align:center;margin-top:.75rem}.sgn-signin{text-align:center;color:var(--muted);font-size:var(--text-sm);margin-top:1rem}.sgn-help{font-size:var(--text-sm);color:var(--muted)}.sgn-field-err{font-size:var(--text-sm);color:var(--danger)}.reg-center{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;min-height:100vh;padding:2rem;display:flex}.reg-icon-danger{color:var(--danger);font-size:3rem}.reg-icon-success{color:var(--success);font-size:4rem}.reg-msg{color:var(--muted);max-width:24rem}.reg-msg-sm{color:var(--muted);font-size:var(--text-sm)}.reg-page{background:var(--background);justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.reg-wrap{width:100%;max-width:440px}.reg-header{text-align:center;margin-bottom:2rem}.reg-header-icon{color:var(--primary);font-size:2.5rem}.reg-title{font-size:var(--text-display);margin-top:.5rem;font-weight:700}.reg-sub{color:var(--muted);font-size:var(--text-body);margin-top:.25rem}.reg-card{padding:1.75rem}.reg-hr{border-color:var(--border);margin:1rem 0}.reg-error{color:var(--danger);font-size:var(--text-sm);margin-bottom:.75rem}.reg-note{text-align:center;color:var(--muted);font-size:var(--text-sm);margin-top:1rem}
