:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}select{box-sizing:border-box;padding:7px 32px 7px 12px;border:1px solid #e5e7eb;border-radius:8px;font-size:13px;font-weight:600;font-family:inherit;color:#374151;background-color:#fff;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;appearance:none;-webkit-appearance:none;cursor:pointer;transition:border-color .15s,box-shadow .15s}select:hover{border-color:#d1d5db}select:focus,select:focus-visible{outline:none;border-color:#818cf8;box-shadow:0 0 0 3px #818cf826}select:disabled{background-color:#f9fafb;color:#9ca3af;cursor:not-allowed}select[multiple]{padding:4px;background-image:none;cursor:default}[class$=__toast],[class*="__toast "]{position:fixed!important;top:88px;right:32px;left:auto!important;max-width:calc(100vw - var(--sidebar-w, 220px) - 64px)!important;margin:0!important;z-index:9000;box-shadow:0 2px 12px #00000014}[class$=__toast]:not([class*=--error]),[class*="__toast "]:not([class*=--error]){background:#ecfdf5!important;border-color:#6ee7b7!important;color:#065f46!important}[class*=__toast--error]{background:#fef2f2!important;border-color:#fca5a5!important;color:#991b1b!important}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}#root{width:100%;min-height:100vh}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(prefers-reduced-motion:no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/inter-cyrillic-ext-300-normal-CgCALhwJ.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-300-normal-RId2JxDB.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/inter-cyrillic-300-normal-BnqRxXuy.woff2) format("woff2"),url(/assets/inter-cyrillic-300-normal-LR1W_oT8.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/inter-greek-ext-300-normal-l2DDyC6M.woff2) format("woff2"),url(/assets/inter-greek-ext-300-normal-DLbbeei1.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/inter-greek-300-normal-DmGD3g_f.woff2) format("woff2"),url(/assets/inter-greek-300-normal-BrhSP0vQ.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/inter-vietnamese-300-normal-Bdr24Bqb.woff2) format("woff2"),url(/assets/inter-vietnamese-300-normal-DDGmYYdT.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/inter-latin-ext-300-normal-CPgO9Ksf.woff2) format("woff2"),url(/assets/inter-latin-ext-300-normal-Dp1L8vcn.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/inter-latin-300-normal-BVlfKGgI.woff2) format("woff2"),url(/assets/inter-latin-300-normal-i8F0SvXL.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-400-normal-obahsSVq.woff2) format("woff2"),url(/assets/inter-cyrillic-400-normal-HOLc17fK.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2) format("woff2"),url(/assets/inter-greek-ext-400-normal-KugGGMne.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-400-normal-B4URO6DV.woff2) format("woff2"),url(/assets/inter-greek-400-normal-q2sYcFCs.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-vietnamese-400-normal-DMkecbls.woff2) format("woff2"),url(/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-ext-400-normal-C1nco2VV.woff2) format("woff2"),url(/assets/inter-latin-ext-400-normal-77YHD8bZ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-500-normal-BasfLYem.woff2) format("woff2"),url(/assets/inter-cyrillic-500-normal-CxZf_p3X.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-ext-500-normal-C4iEst2y.woff2) format("woff2"),url(/assets/inter-greek-ext-500-normal-2j5mBUwD.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-500-normal-BIZE56-Y.woff2) format("woff2"),url(/assets/inter-greek-500-normal-Xzm54t5V.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-vietnamese-500-normal-DOriooB6.woff2) format("woff2"),url(/assets/inter-vietnamese-500-normal-mJboJaSs.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2) format("woff2"),url(/assets/inter-latin-ext-500-normal-BxGbmqWO.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2) format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-600-normal-CWCymEST.woff2) format("woff2"),url(/assets/inter-cyrillic-600-normal-4D_pXhcN.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2) format("woff2"),url(/assets/inter-greek-ext-600-normal-B8X0CLgF.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-600-normal-plRanbMR.woff2) format("woff2"),url(/assets/inter-greek-600-normal-BZpKdvQh.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2) format("woff2"),url(/assets/inter-vietnamese-600-normal-BuLX-rYi.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2) format("woff2"),url(/assets/inter-latin-ext-600-normal-CIVaiw4L.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2) format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-700-normal-CjBOestx.woff2) format("woff2"),url(/assets/inter-cyrillic-700-normal-DrXBdSj3.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2) format("woff2"),url(/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-700-normal-C3JjAnD8.woff2) format("woff2"),url(/assets/inter-greek-700-normal-BUv2fZ6O.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2) format("woff2"),url(/assets/inter-vietnamese-700-normal-BZaoP0fm.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2) format("woff2"),url(/assets/inter-latin-ext-700-normal-TidjK2hL.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2) format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--primary-start: #667eea;--primary-end: #764ba2;--primary-hover: #5a6fd6;--accent-color: #10b981;--accent-glow: rgba(16, 185, 129, .3);--bg-primary: #f8fafc;--bg-secondary: #ffffff;--bg-card: #f1f5f9;--bg-input: #f8fafc;--bg-input-focus: #ffffff;--text-primary: #1e293b;--text-secondary: #475569;--text-muted: #94a3b8;--text-placeholder: #94a3b8;--success: #10b981;--error: #ef4444;--warning: #f59e0b;--border-color: #e2e8f0;--border-focus: rgba(102, 126, 234, .5);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08);--shadow-md: 0 4px 12px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .12);--shadow-glow: 0 0 30px rgba(102, 126, 234, .25);--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--transition-fast: .15s ease;--transition-normal: .3s ease;--transition-slow: .5s ease;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px}.login-container,.login-container *,.login-container *:before,.login-container *:after{box-sizing:border-box}.login-container{display:flex;justify-content:center;align-items:center;height:100vh;width:100%;background:var(--bg-primary);position:relative;overflow:hidden;font-family:var(--font-family);color:var(--text-primary)}.login-container:before{content:"";position:absolute;width:600px;height:600px;border-radius:50%;background:linear-gradient(135deg,#667eea14,#764ba20f);top:-200px;right:-150px;pointer-events:none}.login-container:after{content:"";position:absolute;width:400px;height:400px;border-radius:50%;background:linear-gradient(135deg,#764ba20f,#667eea0a);bottom:-150px;left:-100px;pointer-events:none}.login-panel{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:2rem;position:relative;z-index:1;width:100%}.login-form-container{width:100%;max-width:440px;background:var(--bg-secondary);border-radius:var(--radius-xl);padding:2.5rem;box-shadow:var(--shadow-lg);border:1px solid var(--border-color)}.form-header{text-align:center;margin-bottom:2rem}.form-header .logo{display:inline-flex;align-items:center;justify-content:center;margin-bottom:1.25rem}.form-header .logo svg{filter:drop-shadow(0 4px 12px rgba(102,126,234,.3))}.form-header h2{font-size:1.75rem;font-weight:700;margin-bottom:.375rem;background:var(--primary-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.form-header p{color:var(--text-secondary);font-size:.9375rem;margin:0}.api-error-banner{display:flex;align-items:center;gap:.625rem;padding:.75rem 1rem;margin-bottom:1.25rem;background:#ef444414;border:1px solid rgba(239,68,68,.25);border-radius:var(--radius-md);color:var(--error);font-size:.875rem;font-weight:500;animation:slideIn var(--transition-normal)}.api-error-banner svg{flex-shrink:0}.form-group{margin-bottom:1.25rem}.form-group label{display:block;font-size:.875rem;font-weight:500;color:var(--text-secondary);margin-bottom:.5rem}.input-wrapper{position:relative;display:flex;align-items:center}.input-icon{position:absolute;left:1rem;color:var(--text-muted);pointer-events:none;transition:color var(--transition-fast)}.input-wrapper input{width:100%;padding:.875rem 1rem .875rem 3rem;background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:1rem;transition:all var(--transition-normal);box-sizing:border-box;outline:none;font-family:inherit}.input-wrapper input::placeholder{color:var(--text-placeholder)}.input-wrapper input:focus{background:var(--bg-input-focus);border-color:var(--border-focus);box-shadow:0 0 0 4px #667eea1a}.input-wrapper input:focus+.input-icon,.input-wrapper:focus-within .input-icon{color:var(--primary-start)}.toggle-password{position:absolute;right:1rem;padding:.5rem;color:var(--text-muted);transition:color var(--transition-fast);background:none;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center}.toggle-password:hover{color:var(--text-secondary)}.error-message{display:block;font-size:.8rem;color:var(--error);margin-top:.5rem;min-height:1.2rem;opacity:0;transform:translateY(-5px);transition:all var(--transition-fast)}.error-message.visible{opacity:1;transform:translateY(0)}.input-wrapper.error input{border-color:var(--error)}.form-options{display:flex;justify-content:flex-start;align-items:center;margin-bottom:1.5rem}.remember-me{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.875rem;color:var(--text-secondary)}.remember-me input{display:none}.checkmark{width:18px;height:18px;border:2px solid var(--border-color);border-radius:4px;position:relative;transition:all var(--transition-fast);box-sizing:border-box}.remember-me input:checked+.checkmark{background:var(--primary-gradient);border-color:transparent}.checkmark:after{content:"";position:absolute;top:1px;left:4px;width:5px;height:9px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg) scale(0);transition:transform var(--transition-fast)}.remember-me input:checked+.checkmark:after{transform:rotate(45deg) scale(1.1)}.submit-btn{width:100%;padding:.875rem;background:var(--primary-gradient);color:#fff;font-size:1rem;font-weight:600;border-radius:var(--radius-md);position:relative;overflow:hidden;transition:all var(--transition-normal);box-shadow:var(--shadow-md);border:none;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center}.submit-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity var(--transition-normal)}.submit-btn:hover:before{opacity:1}.submit-btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-glow)}.submit-btn:active{transform:translateY(0)}.submit-btn:disabled{opacity:.7;cursor:not-allowed;transform:none}.btn-text,.btn-loader{display:inline-flex;align-items:center;justify-content:center}.btn-loader.hidden,.btn-text.hidden{display:none}.spinner{animation:rotate 1.5s linear infinite}.spinner-path{stroke:currentColor;stroke-linecap:round;stroke-dasharray:60;stroke-dashoffset:60;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dashoffset:60}50%{stroke-dashoffset:15}to{stroke-dashoffset:60}}.form-message{margin-top:1rem;padding:.875rem;border-radius:var(--radius-md);text-align:center;font-size:.875rem;animation:slideIn var(--transition-normal)}.form-message.hidden{display:none}.form-message.success{background:#00d4aa1a;border:1px solid var(--success);color:var(--success)}.form-message.error{background:#ff6b6b1a;border:1px solid var(--error);color:var(--error)}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.login-footer{margin-top:2rem;color:var(--text-muted);font-size:.8rem;text-align:center}.login-footer p{margin:0}@media(max-width:480px){.login-panel{padding:1rem}.login-form-container{padding:2rem 1.5rem;border-radius:var(--radius-lg)}.form-header h2{font-size:1.5rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.input-wrapper input:focus-visible,.submit-btn:focus-visible,.toggle-password:focus-visible{outline:2px solid var(--primary-start);outline-offset:2px}@media(prefers-contrast:high){:root{--border-color: rgba(255, 255, 255, .3);--text-secondary: rgba(255, 255, 255, .9)}}.title-bar{-webkit-app-region:drag;display:flex;align-items:center;height:44px;padding:0 12px;background:var(--titlebar-bg, #ffffff);border-bottom:1px solid var(--titlebar-border, rgba(0, 0, 0, .06));gap:12px;flex-shrink:0;-webkit-user-select:none;user-select:none;z-index:100}.title-bar__traffic-light-spacer{width:68px;flex-shrink:0}.title-bar__brand{display:flex;align-items:center;gap:8px;flex-shrink:0}.title-bar__logo{width:28px;height:28px;background:linear-gradient(135deg,#7c3aed,#06b6d4);border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.title-bar__logo svg{width:16px;height:16px;color:#fff}.title-bar__app-name{font-size:.85rem;font-weight:700;color:var(--text-primary, #1e1b4b);letter-spacing:-.01em}.title-bar__session-select{-webkit-app-region:no-drag;font-family:Inter,system-ui,sans-serif;font-size:.75rem;font-weight:500;color:var(--text-secondary, #6b7280);background-color:var(--select-bg, rgba(0, 0, 0, .04));border:1px solid var(--select-border, rgba(0, 0, 0, .08));border-radius:6px;padding:3px 26px 3px 8px;cursor:pointer;outline:none;transition:all .2s ease}.title-bar__session-select:hover{background-color:var(--select-bg-hover, rgba(0, 0, 0, .06))}.title-bar__session-select:focus{border-color:var(--accent, #7c3aed)}.school-switcher{-webkit-app-region:no-drag;position:relative}.school-switcher__trigger{display:flex;align-items:center;gap:5px;font-family:Inter,system-ui,sans-serif;font-size:.75rem;font-weight:500;color:var(--text-secondary, #6b7280);background:var(--select-bg, rgba(0, 0, 0, .04));border:1px solid var(--select-border, rgba(0, 0, 0, .08));border-radius:6px;padding:3px 7px;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}.school-switcher__trigger:hover{background:var(--select-bg-hover, rgba(0, 0, 0, .06))}.school-switcher__label{max-width:140px;overflow:hidden;text-overflow:ellipsis}.school-switcher__chevron{flex-shrink:0;transition:transform .15s;opacity:.6}.school-switcher__chevron--open{transform:rotate(180deg)}.school-switcher__dropdown{position:absolute;top:calc(100% + 6px);left:0;min-width:210px;background:#fff;border:1px solid rgba(0,0,0,.1);border-radius:10px;box-shadow:0 8px 24px #0000001f;padding:4px;z-index:500;animation:ts-drop-in .12s ease}@keyframes ts-drop-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.school-switcher__option{display:flex;align-items:center;gap:8px;width:100%;padding:6px 10px;border:none;background:transparent;border-radius:7px;text-align:left;cursor:pointer;font-family:inherit;transition:background .1s}.school-switcher__option:hover{background:#0000000a}.school-switcher__option--active{background:#7c3aed12}.school-switcher__option-name{font-size:.8rem;font-weight:500;color:#1e293b;flex:1}.school-switcher__option-code{font-size:.7rem;color:#9ca3af}.school-switcher__check{flex-shrink:0;color:#7c3aed}.school-switcher__divider{height:1px;background:#00000012;margin:4px 0}.title-bar__search{-webkit-app-region:no-drag;flex:1;max-width:420px;margin:0 auto;position:relative}.title-bar__search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text-muted, #9ca3af);pointer-events:none}.title-bar__search-input{width:100%;font-family:Inter,system-ui,sans-serif;font-size:.8rem;padding:6px 12px 6px 32px;background:var(--search-bg, rgba(0, 0, 0, .04));border:1px solid var(--search-border, rgba(0, 0, 0, .06));border-radius:8px;color:var(--text-primary, #1e1b4b);outline:none;transition:all .2s ease;box-sizing:border-box}.title-bar__search-input::placeholder{color:var(--text-muted, #9ca3af)}.title-bar__search-input:focus{background:var(--search-bg-focus, #ffffff);border-color:var(--accent, #7c3aed);box-shadow:0 0 0 2px #7c3aed1a}.title-bar__controls{-webkit-app-region:no-drag;display:flex;align-items:center;gap:2px;margin-left:auto}.title-bar__btn{width:36px;height:28px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:6px;color:var(--text-secondary, #6b7280);cursor:pointer;transition:all .15s ease}.title-bar__btn:hover{background:var(--btn-hover, rgba(0, 0, 0, .06))}.title-bar__btn--close:hover{background:#ef4444;color:#fff}.action-bar{display:flex;align-items:center;justify-content:space-between;height:44px;padding:0 20px;background:var(--actionbar-bg, #ffffff);border-bottom:1px solid var(--actionbar-border, rgba(0, 0, 0, .05));flex-shrink:0}.action-bar__breadcrumbs{display:flex;align-items:center;gap:2px}.action-bar__crumb{display:flex;align-items:center;gap:2px;font-size:.82rem;color:var(--text-secondary, #6b7280);font-weight:400}.action-bar__crumb--current{color:var(--text-primary, #1e1b4b);font-weight:600}.action-bar__separator{color:var(--text-muted, #d1d5db);flex-shrink:0}.action-bar__actions{-webkit-app-region:no-drag;display:flex;align-items:center;gap:8px}.action-bar__btn{width:34px;height:34px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;border-radius:8px;color:var(--text-secondary, #6b7280);cursor:pointer;transition:all .15s ease}.action-bar__btn:hover{background:var(--btn-hover, rgba(0, 0, 0, .05));color:var(--text-primary, #1e1b4b)}.action-bar__avatar{width:30px;height:30px;border-radius:10px;background:linear-gradient(135deg,#7c3aed,#06b6d4);display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;color:#fff;cursor:pointer;transition:transform .15s ease}.action-bar__avatar:hover{transform:scale(1.05)}.lang-switcher{display:flex;align-items:center;gap:5px;padding:4px 10px;border:1px solid var(--actionbar-border, rgba(0, 0, 0, .1));border-radius:8px;background:transparent;color:var(--text-secondary, #6b7280);font-size:.76rem;font-weight:600;cursor:pointer;transition:all .15s ease;height:30px;letter-spacing:.03em}.lang-switcher:hover{background:var(--btn-hover, rgba(0, 0, 0, .05));color:var(--text-primary, #1e1b4b);border-color:var(--text-secondary, #6b7280)}.lang-switcher__icon{flex-shrink:0;opacity:.7}.lang-switcher__label{line-height:1}.action-bar__session{display:flex;align-items:center;gap:6px;padding:4px 10px 4px 8px;border:1px solid var(--actionbar-border, rgba(0, 0, 0, .1));border-radius:8px;background:transparent;color:var(--text-secondary, #6b7280);height:30px;transition:all .15s ease;position:relative}.action-bar__session:hover{background:var(--btn-hover, rgba(0, 0, 0, .05));border-color:var(--text-secondary, #6b7280);color:var(--text-primary, #1e1b4b)}.action-bar__session-icon{flex-shrink:0;opacity:.7}.action-bar__session-select{border:none;background:transparent;color:inherit;font-size:.76rem;font-weight:600;letter-spacing:.03em;cursor:pointer;outline:none;appearance:none;-webkit-appearance:none;padding-right:2px;font-family:inherit}.action-bar__session-chevron{flex-shrink:0;opacity:.6;pointer-events:none}.sidebar{width:220px;min-width:220px;display:flex;flex-direction:column;background:var(--sidebar-bg, #ffffff);border-right:1px solid var(--sidebar-border, rgba(0, 0, 0, .06));padding:12px 8px;transition:width .25s cubic-bezier(.16,1,.3,1),min-width .25s cubic-bezier(.16,1,.3,1);overflow:hidden;-webkit-user-select:none;user-select:none}.sidebar--collapsed{width:56px;min-width:56px}.sidebar__nav{flex:1;display:flex;flex-direction:column;gap:4px;overflow-y:auto;overflow-x:hidden}.sidebar__nav::-webkit-scrollbar{width:3px}.sidebar__nav::-webkit-scrollbar-thumb{background:#0000001a;border-radius:3px}.sidebar__group{display:flex;flex-direction:column;gap:2px}.sidebar__group+.sidebar__group{margin-top:12px;padding-top:12px;border-top:1px solid var(--sidebar-separator, rgba(0, 0, 0, .06))}.sidebar__group-title{display:flex;align-items:center;justify-content:space-between;width:100%;padding:4px 12px 6px;border:none;background:transparent;cursor:pointer;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary, #6b7280);white-space:nowrap;font-family:inherit;transition:color .15s}.sidebar__group-title:hover{color:var(--text-secondary, #6b7280)}.sidebar__group-chevron{flex-shrink:0;transition:transform .25s ease;transform:rotate(-90deg)}.sidebar__group-title--expanded .sidebar__group-chevron{transform:rotate(0)}.sidebar__group-items{display:grid;grid-template-rows:1fr;transition:grid-template-rows .25s ease;overflow:hidden}.sidebar__group-items--collapsed{grid-template-rows:0fr}.sidebar__group-inner{min-height:0;overflow:hidden;display:flex;flex-direction:column;gap:2px;padding-left:8px}.sidebar__item{display:flex;align-items:center;gap:10px;padding:8px 12px;border:none;background:transparent;border-radius:10px;cursor:pointer;transition:all .15s ease;white-space:nowrap;font-family:Inter,system-ui,sans-serif;width:100%;text-align:left}.sidebar__item:hover{background:var(--nav-hover, rgba(0, 0, 0, .04))}.sidebar__item--active{background:var(--nav-active-bg, rgba(124, 58, 237, .08));color:var(--accent, #7c3aed)}.sidebar__item--active:hover{background:var(--nav-active-bg-hover, rgba(124, 58, 237, .12))}.sidebar__icon{width:20px;height:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--text-secondary, #6b7280)}.sidebar__icon svg{width:20px;height:20px}.sidebar__item--active .sidebar__icon{color:var(--accent, #7c3aed)}.sidebar__label{font-size:.85rem;font-weight:500;color:var(--text-primary, #1e1b4b)}.sidebar__item--active .sidebar__label{color:var(--accent, #7c3aed);font-weight:600}.sidebar__logout{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;border:none;background:transparent;border-radius:10px;cursor:pointer;color:var(--text-muted, #9ca3af);font-size:.875rem;font-weight:500;font-family:inherit;text-align:left;transition:all .15s ease}.sidebar__logout:hover{background:#ef444414;color:#ef4444}.sidebar__toggle{display:flex;align-items:center;justify-content:center;padding:8px;margin-top:8px;border:none;background:transparent;border-radius:10px;cursor:pointer;color:var(--text-muted, #9ca3af);transition:all .15s ease}.sidebar__toggle:hover{background:var(--nav-hover, rgba(0, 0, 0, .04));color:var(--text-secondary, #6b7280)}.sidebar__toggle-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;transition:transform .25s ease}.sidebar__toggle-icon svg{width:20px;height:20px}.sidebar__toggle-icon--flipped{transform:scaleX(-1)}.sidebar--collapsed .sidebar__item{justify-content:center;padding:10px 0}.sidebar--collapsed .sidebar__group-title{display:none}.sidebar--collapsed .sidebar__group+.sidebar__group{margin-top:8px;padding-top:8px}.detail__backdrop{position:fixed;inset:44px 0 0;z-index:110;background:#00000040;animation:detail-fade-in .25s ease-out}@keyframes detail-fade-in{0%{opacity:0}to{opacity:1}}.detail{position:fixed;top:44px;right:0;bottom:0;z-index:120;width:440px;max-width:92vw;display:flex;flex-direction:column;background:var(--card-bg, #ffffff);box-shadow:-8px 0 40px #0000001f;animation:detail-slide-in .3s cubic-bezier(.16,1,.3,1);overflow:hidden;font-family:Inter,system-ui,-apple-system,sans-serif}@keyframes detail-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.detail__header{display:flex;flex-direction:column;align-items:center;padding:20px 24px 24px;text-align:center;border-bottom:1px solid var(--card-border, rgba(0, 0, 0, .06));flex-shrink:0}.detail__header-top{width:100%;display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-bottom:8px}.detail__edit{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border:1px solid rgba(124,58,237,.25);border-radius:8px;background:#7c3aed0f;color:var(--accent, #7c3aed);font-size:.8rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .15s}.detail__edit:hover{background:#7c3aed1f;border-color:#7c3aed66}.detail__close{width:36px;height:36px;padding:0;border:1px solid var(--card-border, rgba(0, 0, 0, .08));border-radius:8px;background:var(--card-bg, rgba(0, 0, 0, .03));color:var(--text-secondary, #6b7280);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.detail__close:hover{background:#0000000f;color:var(--text-primary, #1e1b4b)}.detail__avatar{width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,#7c3aed,#a78bfa);display:flex;align-items:center;justify-content:center;margin-bottom:12px;box-shadow:0 4px 16px #7c3aed40}.detail__avatar-initials{font-size:1.2rem;font-weight:700;color:#fff;letter-spacing:.04em}.detail__avatar-img{width:100%;height:100%;object-fit:cover;border-radius:50%}.detail__name{margin:0 0 6px;font-size:1.2rem;font-weight:700;color:var(--text-primary, #1e1b4b);letter-spacing:-.01em}.detail__badge{display:inline-flex;align-items:center;padding:3px 12px;border-radius:100px;font-size:.72rem;font-weight:600;letter-spacing:.02em;margin-bottom:6px}.detail__badge--active{background:#22c55e1a;color:#15803d}.detail__badge--inactive{background:#6b72801a;color:#4b5563}.detail__badge--graduated{background:#3b82f61a;color:#1d4ed8}.detail__badge--transferred{background:#f59e0b1a;color:#b45309}.detail__email{font-size:.8rem;color:var(--text-secondary, #6b7280);text-decoration:none;transition:color .15s}.detail__email:hover{color:var(--accent, #7c3aed);text-decoration:underline}.detail__body{flex:1;overflow-y:auto;padding:4px 0}.detail__body::-webkit-scrollbar{width:5px}.detail__body::-webkit-scrollbar-thumb{background:#00000014;border-radius:5px}.detail__section{padding:18px 24px;border-bottom:1px solid var(--card-border, rgba(0, 0, 0, .04))}.detail__section:last-child{border-bottom:none}.detail__section-title{margin:0 0 14px;font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary, #6b7280);display:flex;align-items:center;gap:8px}.detail__section-title svg{color:var(--accent, #7c3aed);opacity:.7;flex-shrink:0}.detail__grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 20px}.detail__field{display:flex;flex-direction:column;gap:3px}.detail__field--full{grid-column:1 / -1}.detail__label{font-size:.7rem;font-weight:500;text-transform:capitalize;color:var(--text-muted, #9ca3af);letter-spacing:.02em}.detail__value{font-size:.88rem;color:var(--text-primary, #1e1b4b);font-weight:500;line-height:1.4}.detail__value--mono{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.82rem;letter-spacing:.02em}.detail__value--num{font-variant-numeric:tabular-nums}.detail__link{color:var(--accent, #7c3aed);text-decoration:none;font-weight:500;transition:color .15s}.detail__link:hover{color:var(--accent-hover, #6d28d9);text-decoration:underline}.detail__muted{color:var(--text-muted, #9ca3af);font-style:italic;font-size:.82rem}.detail__empty-meta{margin:0;font-size:.82rem}.detail__school-name{margin:4px 0 0;font-size:.78rem;color:var(--text-secondary, #6b7280)}.detail__school-code{font-size:.78rem;color:var(--text-muted, #9ca3af)}.detail__parent-card{background:var(--surface-secondary, rgba(0, 0, 0, .025));border:1px solid var(--card-border, rgba(0, 0, 0, .06));border-radius:8px;padding:12px 14px;margin-bottom:10px}.detail__parent-card:last-child{margin-bottom:0}.detail__parent-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.detail__parent-name{font-size:.88rem;font-weight:600;color:var(--text-primary, #1e1b4b)}.detail__parent-meta{display:flex;align-items:center;gap:6px}.detail__parent-rel{font-size:.72rem;color:var(--text-secondary, #6b7280);background:#0000000d;padding:2px 8px;border-radius:100px}.detail__parent-primary{font-size:.68rem;font-weight:600;color:#7c3aed;background:#7c3aed14;padding:2px 8px;border-radius:100px;letter-spacing:.02em;text-transform:uppercase}.detail__timestamps{padding:12px 24px;display:flex;gap:16px;border-top:1px solid var(--card-border, rgba(0, 0, 0, .04))}.detail__timestamp{font-size:.72rem;color:var(--text-muted, #9ca3af)}.detail__error{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;gap:12px;text-align:center;color:var(--text-muted, #9ca3af)}.detail__error p{margin:0;font-size:.88rem}.detail__skeleton{background:linear-gradient(90deg,#0000000d 25%,#00000017,#0000000d 75%);background-size:200% 100%;animation:detail-shimmer 1.4s infinite;border-radius:6px}@keyframes detail-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.detail__skeleton--avatar{width:64px;height:64px;border-radius:50%;margin-bottom:12px}.detail__skeleton--name{width:160px;height:20px;margin-bottom:8px}.detail__skeleton--badge{width:72px;height:22px;border-radius:100px}.detail__skeleton--title{width:120px;height:12px;margin-bottom:14px}.detail__skeleton--label{width:70px;height:10px;margin-bottom:4px}.detail__skeleton--value{width:100px;height:14px}.add-student__backdrop{position:fixed;inset:44px 0 0;z-index:110;background:#00000040;animation:add-student-fade-in .25s ease-out}@keyframes add-student-fade-in{0%{opacity:0}to{opacity:1}}.add-student{position:fixed;top:44px;right:0;bottom:0;z-index:120;width:620px;max-width:94vw;display:flex;flex-direction:column;background:var(--card-bg, #ffffff);box-shadow:-8px 0 40px #0000001f;animation:add-student-slide-in .3s cubic-bezier(.16,1,.3,1);overflow:hidden;font-family:Inter,system-ui,-apple-system,sans-serif}@keyframes add-student-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.add-student__header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--card-border, rgba(0, 0, 0, .06));flex-shrink:0}.add-student__title{margin:0;font-size:1.1rem;font-weight:700;color:var(--text-primary, #1e1b4b);letter-spacing:-.01em}.add-student__close{width:36px;height:36px;padding:0;border:1px solid var(--card-border, rgba(0, 0, 0, .08));border-radius:8px;background:var(--card-bg, rgba(0, 0, 0, .03));color:var(--text-secondary, #6b7280);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.add-student__close:hover{background:#0000000f;color:var(--text-primary, #1e1b4b)}.add-student__body{flex:1;overflow-y:auto;display:flex;flex-direction:column}.add-student__body::-webkit-scrollbar{width:5px}.add-student__body::-webkit-scrollbar-thumb{background:#00000014;border-radius:5px}.add-student__section{padding:18px 24px;border-bottom:1px solid var(--card-border, rgba(0, 0, 0, .04))}.add-student__section:last-of-type{border-bottom:none}.add-student__section-title{margin:0 0 16px;font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary, #6b7280);display:flex;align-items:center;gap:8px}.add-student__section-title svg{color:var(--accent, #7c3aed);opacity:.7;flex-shrink:0}.add-student__row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.add-student__field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.add-student__label{font-size:.74rem;font-weight:600;color:var(--text-secondary, #6b7280);letter-spacing:.02em}.add-student__required{color:#ef4444;font-weight:700}.add-student__input{width:100%;padding:8px 12px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.84rem;color:var(--text-primary, #1e1b4b);font-family:inherit;outline:none;transition:border-color .2s,box-shadow .2s;box-sizing:border-box;appearance:none;-webkit-appearance:none}.add-student__input:focus{border-color:var(--accent, #7c3aed);box-shadow:0 0 0 3px #7c3aed14}.add-student__input::placeholder{color:var(--text-muted, #9ca3af)}.add-student__input--error{border-color:#ef4444}.add-student__input--error:focus{border-color:#ef4444;box-shadow:0 0 0 3px #ef444414}select.add-student__input{background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}.add-student__error{font-size:.7rem;color:#ef4444;font-weight:500;margin-top:-2px}.add-student__error-banner{display:flex;align-items:center;gap:8px;padding:10px 16px;margin:0 24px;background:#ef44440f;border:1px solid rgba(239,68,68,.2);border-radius:8px;color:#dc2626;font-size:.8rem;font-weight:500}.add-student__error-banner svg{flex-shrink:0}.add-student__footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:16px 24px;border-top:1px solid var(--card-border, rgba(0, 0, 0, .06));flex-shrink:0;background:var(--card-bg, #ffffff)}.add-student__btn{display:inline-flex;align-items:center;gap:6px;padding:9px 20px;border-radius:8px;font-size:.82rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .15s;border:none}.add-student__btn--cancel{background:none;border:1px solid var(--card-border, rgba(0, 0, 0, .1));color:var(--text-secondary, #6b7280)}.add-student__btn--cancel:hover{background:#00000008;color:var(--text-primary, #1e1b4b)}.add-student__btn--save{background:var(--accent, #7c3aed);color:#fff;box-shadow:0 2px 8px #7c3aed40}.add-student__btn--save:hover{background:var(--accent-hover, #6d28d9);box-shadow:0 4px 14px #7c3aed4d;transform:translateY(-1px)}.add-student__btn--save:disabled{opacity:.7;cursor:not-allowed;transform:none}.add-student__saving{display:inline-flex;gap:4px;padding:0 8px}.add-student__saving-dot{width:6px;height:6px;border-radius:50%;background:#fffc;animation:add-student-bounce 1.2s infinite ease-in-out}.add-student__saving-dot:nth-child(2){animation-delay:.15s}.add-student__saving-dot:nth-child(3){animation-delay:.3s}@keyframes add-student-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.add-student__file-hidden{display:none}.add-student__photo-area{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:18px}.add-student__photo-picker{width:80px;height:80px;border-radius:50%;border:2px dashed var(--input-border, rgba(0, 0, 0, .15));background:var(--card-bg, rgba(0, 0, 0, .02));display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;transition:all .2s;overflow:hidden;padding:0;color:var(--text-muted, #9ca3af)}.add-student__photo-picker:hover{border-color:var(--accent, #7c3aed);background:#7c3aed0a;color:var(--accent, #7c3aed)}.add-student__photo-preview{width:100%;height:100%;object-fit:cover;border-radius:50%}.add-student__photo-text{font-size:.62rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.add-student__photo-info{display:flex;align-items:center;gap:6px}.add-student__photo-name{font-size:.72rem;color:var(--text-secondary, #6b7280);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-student__photo-hint{font-size:.68rem;color:var(--text-muted, #9ca3af)}.add-student__section-hint{margin:-8px 0 14px;font-size:.72rem;color:var(--text-muted, #9ca3af)}.add-student__dropzone{border:1.5px dashed var(--input-border, rgba(0, 0, 0, .15));border-radius:10px;padding:14px;cursor:pointer;transition:all .2s;background:var(--card-bg, rgba(0, 0, 0, .01));min-height:56px;display:flex;align-items:center}.add-student__dropzone:hover{border-color:var(--accent, #7c3aed);background:#7c3aed08}.add-student__dropzone--has-file{border-style:solid;border-color:#7c3aed33;background:#7c3aed05}.add-student__dropzone-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:100%;color:var(--text-muted, #9ca3af)}.add-student__dropzone-empty svg{opacity:.5}.add-student__dropzone-empty span{font-size:.72rem;font-weight:500}.add-student__dropzone-file{display:flex;align-items:center;gap:10px;width:100%}.add-student__dropzone-file svg{color:var(--accent, #7c3aed);flex-shrink:0;opacity:.7}.add-student__dropzone-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.add-student__dropzone-name{font-size:.76rem;font-weight:500;color:var(--text-primary, #1e1b4b);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-student__dropzone-size{font-size:.66rem;color:var(--text-muted, #9ca3af);font-variant-numeric:tabular-nums}.add-student__remove-file{width:22px;height:22px;padding:0;border:none;border-radius:50%;background:#ef444414;color:#ef4444;font-size:.9rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s}.add-student__remove-file:hover{background:#ef444426;transform:scale(1.1)}.add-student__parent-search{margin-bottom:18px;padding:14px 16px;border:1px solid var(--card-border, rgba(0, 0, 0, .06));border-radius:10px;background:#7c3aed05}.add-student__parent-search>.add-student__label{display:flex;align-items:center;gap:6px;margin-bottom:8px;color:var(--accent, #7c3aed);font-weight:600}.add-student__parent-search-row{display:flex;gap:8px;align-items:stretch}.add-student__parent-search-input{flex:1;min-width:0}.add-student__parent-search-input:disabled{background:var(--card-bg, rgba(0, 0, 0, .02));opacity:.7;cursor:not-allowed}.add-student__parent-search-btn{display:inline-flex;align-items:center;gap:5px;padding:8px 16px;border:1px solid var(--accent, #7c3aed);border-radius:8px;background:var(--accent, #7c3aed);color:#fff;font-size:.78rem;font-weight:600;font-family:inherit;cursor:pointer;white-space:nowrap;transition:all .15s}.add-student__parent-search-btn:hover:not(:disabled){background:var(--accent-hover, #6d28d9);box-shadow:0 2px 8px #7c3aed40}.add-student__parent-search-btn:disabled{opacity:.5;cursor:not-allowed}.add-student__parent-search-btn--clear{background:none;border:1px solid rgba(239,68,68,.3);color:#ef4444}.add-student__parent-search-btn--clear:hover{background:#ef44440f;box-shadow:none}.add-student__parent-search-msg{display:flex;align-items:center;gap:5px;margin-top:8px;font-size:.74rem;font-weight:500}.add-student__parent-search-msg--found{color:#059669}.add-student__parent-search-msg--not-found{color:#d97706}.add-student__input[readonly]{background:var(--card-bg, rgba(0, 0, 0, .02));border-style:dashed;cursor:default;opacity:.8}.edit-student__loading{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:60px 0}.edit-student__loading-dot{width:9px;height:9px;border-radius:50%;background:var(--accent, #7c3aed);animation:add-student-bounce 1.2s infinite ease-in-out}.edit-student__loading-dot:nth-child(2){animation-delay:.15s}.edit-student__loading-dot:nth-child(3){animation-delay:.3s}.students{display:flex;flex-direction:column;gap:0;height:100%}.students__toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 0 18px;flex-wrap:wrap}.students__toolbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.students__toolbar-right{display:flex;align-items:center;gap:12px}.students__search-wrapper{position:relative;display:flex;align-items:center}.students__search-icon{position:absolute;left:10px;color:var(--text-muted, #9ca3af);pointer-events:none}.students__search{width:280px;padding:7px 32px 7px 34px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);outline:none;transition:border-color .2s,box-shadow .2s;font-family:inherit}.students__search:focus{border-color:var(--accent, #7c3aed);box-shadow:0 0 0 3px #7c3aed14}.students__search::placeholder{color:var(--text-muted, #9ca3af)}.students__search-clear{position:absolute;right:6px;width:22px;height:22px;padding:0;border:none;border-radius:50%;background:var(--input-border, rgba(0, 0, 0, .08));color:var(--text-secondary, #6b7280);font-size:.85rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.students__search-clear:hover{background:#00000024}.students__filter{padding:7px 28px 7px 10px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);cursor:pointer;outline:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;font-family:inherit;transition:border-color .2s}.students__filter:focus{border-color:var(--accent, #7c3aed)}.students__record-count{font-size:.8rem;color:var(--text-muted, #9ca3af);font-weight:500;white-space:nowrap}.students__add-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border:none;border-radius:8px;background:var(--accent, #7c3aed);color:#fff;font-size:.82rem;font-weight:600;font-family:inherit;cursor:pointer;white-space:nowrap;transition:all .15s}.students__add-btn:hover{background:var(--accent-hover, #6d28d9)}.students__add-btn svg{flex-shrink:0}.students__search-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:none;border-radius:8px;background:var(--accent, #7c3aed);color:#fff;font-size:.82rem;font-weight:600;font-family:inherit;cursor:pointer;white-space:nowrap;transition:background .15s}.students__search-btn:hover{background:var(--accent-hover, #6d28d9)}.students__clear-btn{padding:7px 12px;border:1px solid var(--card-border, rgba(0, 0, 0, .12));border-radius:8px;background:transparent;color:var(--text-secondary, #6b7280);font-size:.82rem;font-family:inherit;cursor:pointer;white-space:nowrap;transition:all .15s}.students__clear-btn:hover{background:#0000000a;color:var(--text-primary, #1e1b4b)}.students__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff)}.students__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:auto}.students__th{position:sticky;top:0;z-index:2;padding:10px 12px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap;-webkit-user-select:none;user-select:none}.students__th--name,.students__th--roll{cursor:pointer;transition:color .15s}.students__th--name:hover,.students__th--roll:hover{color:var(--accent, #7c3aed)}.students__th--roll,.students__th--enroll{text-align:right}.students__th--status{text-align:center}.students__th--actions{width:40px}.students__sort-icon{font-size:.65rem;margin-left:4px;display:inline-block;vertical-align:middle;color:var(--accent, #7c3aed)}.students__sort-icon--inactive{color:var(--text-muted, #9ca3af);opacity:.5}.students__td{padding:5px 12px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.students__td--roll,.students__td--enroll{text-align:right;font-variant-numeric:tabular-nums}.students__td--status,.students__td--actions{text-align:center}.students__row:nth-child(2n)>.students__td{background:var(--row-alt-bg, rgba(0, 0, 0, .015))}.students__row:hover>.students__td{background:var(--row-hover-bg, rgba(124, 58, 237, .03))}.students__name-link{background:none;border:none;padding:0;font:inherit;color:var(--accent, #7c3aed);font-weight:600;cursor:pointer;text-align:left;transition:color .15s}.students__name-link:hover{color:var(--accent-hover, #6d28d9);text-decoration:underline}.students__muted{color:var(--text-muted, #9ca3af);font-style:italic;font-size:.8rem}.students__mono{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.78rem;letter-spacing:.02em;font-variant-numeric:tabular-nums;background:var(--mono-bg, rgba(0, 0, 0, .03));padding:2px 6px;border-radius:4px}.students__badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:100px;font-size:.72rem;font-weight:600;letter-spacing:.02em;white-space:nowrap;transition:transform .15s}.students__badge--active{background:#22c55e1a;color:#15803d}.students__badge--inactive{background:#6b72801a;color:#4b5563}.students__badge--graduated{background:#3b82f61a;color:#1d4ed8}.students__badge--transferred{background:#f59e0b1a;color:#b45309}.students__contact-cell{display:inline-flex;align-items:center;gap:0;flex-wrap:wrap;font-size:.78rem}.students__contact-link{color:var(--accent, #7c3aed);text-decoration:none;font-weight:500;transition:color .15s}.students__contact-link:hover{color:var(--accent-hover, #6d28d9);text-decoration:underline}.students__contact-link--email{font-size:.74rem;word-break:break-all}.students__contact-sep{color:var(--text-muted, #9ca3af);margin:0 2px}.students__expand-btn{width:28px;height:28px;padding:0;border:1px solid transparent;border-radius:6px;background:none;color:var(--text-muted, #9ca3af);font-size:1.1rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s;letter-spacing:.5px}.students__expand-btn:hover{background:var(--row-hover-bg, rgba(124, 58, 237, .06));color:var(--accent, #7c3aed);border-color:#e5e7eb}.students__expand-btn--open{background:#7c3aed14;color:var(--accent, #7c3aed);border-color:#7c3aed26}@keyframes students-slide-down{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.students__loading-cell{padding:48px 0;text-align:center}.students__loader{display:inline-flex;gap:6px}.students__loader-dot{width:8px;height:8px;border-radius:50%;background:var(--accent, #7c3aed);animation:students-bounce 1.2s infinite ease-in-out}.students__loader-dot:nth-child(2){animation-delay:.15s}.students__loader-dot:nth-child(3){animation-delay:.3s}@keyframes students-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.students__empty-cell{padding:60px 0;text-align:center}.students__empty{display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--text-muted, #9ca3af)}.students__empty p{margin:0;font-size:.88rem}.students__pagination{display:flex;align-items:center;justify-content:space-between;padding:14px 0 0;gap:12px;flex-wrap:wrap}.students__pagination-left{display:flex;align-items:center;gap:16px}.students__page-size-label{font-size:.78rem;color:var(--text-secondary, #6b7280);display:flex;align-items:center;gap:6px}.students__page-size{padding:4px 24px 4px 8px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:6px;background-color:var(--card-bg, #ffffff);font-size:.78rem;color:var(--text-primary, #1e1b4b);cursor:pointer;outline:none;font-family:inherit}.students__page-info{font-size:.76rem;color:var(--text-muted, #9ca3af);font-variant-numeric:tabular-nums}.students__pagination-right{display:flex;align-items:center;gap:4px}.students__page-btn{min-width:30px;height:30px;padding:0 6px;border:1px solid #E5E7EB;border-radius:6px;background:var(--card-bg, #ffffff);color:var(--text-secondary, #6b7280);font-size:.78rem;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s;font-family:inherit}.students__page-btn:hover:not(:disabled){background:var(--row-hover-bg, rgba(124, 58, 237, .06));color:var(--accent, #7c3aed);border-color:#7c3aed33}.students__page-btn--active{background:var(--accent, #7c3aed)!important;color:#fff!important;border-color:var(--accent, #7c3aed)!important}.students__page-btn:disabled{opacity:.35;cursor:not-allowed}.students__error-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;margin-bottom:14px;background:#ef44440f;border:1px solid rgba(239,68,68,.2);border-radius:8px;color:#dc2626;font-size:.82rem;font-weight:500;animation:students-slide-down .25s ease-out}.students__error-banner svg{flex-shrink:0}.students__error-dismiss{margin-left:auto;background:none;border:none;color:#dc2626;font-size:1.1rem;cursor:pointer;padding:0 4px;line-height:1;opacity:.6;transition:opacity .15s}.students__error-dismiss:hover{opacity:1}.students__action-overlay{position:fixed;inset:0;z-index:90}.students__action-menu{position:fixed;z-index:91;transform:translate(-100%);min-width:152px;padding:4px;background:#fff;border:1px solid #E5E7EB;border-radius:8px;box-shadow:0 8px 24px #00000024;display:flex;flex-direction:column;gap:2px;animation:students-action-slide .14s ease-out}@keyframes students-action-slide{0%{opacity:0;transform:translate(-100%) translateY(-6px)}to{opacity:1;transform:translate(-100%) translateY(0)}}.students__action-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:none;border-radius:6px;background:none;color:var(--text-primary, #1e1b4b);font-size:.82rem;font-weight:500;font-family:inherit;text-align:left;cursor:pointer;transition:background .13s,color .13s}.students__action-item svg{flex-shrink:0;color:var(--text-muted, #9ca3af);transition:color .13s}.students__action-item:hover{background:var(--row-hover-bg, rgba(124, 58, 237, .07));color:var(--accent, #7c3aed)}.students__action-item:hover svg{color:var(--accent, #7c3aed)}.students__action-item--danger:hover{background:#ef444414;color:#dc2626}.students__action-item--danger:hover svg{color:#dc2626}.students__modal-backdrop{position:fixed;inset:0;background:#00000059;z-index:100;animation:students-fade-in .15s ease-out}@keyframes students-fade-in{0%{opacity:0}to{opacity:1}}.students__modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:101;width:380px;background:#fff;border-radius:12px;padding:24px;box-shadow:0 12px 40px #0000002e;animation:students-slide-down .2s ease-out}.students__modal-title{margin:0 0 8px;font-size:1rem;font-weight:600;color:var(--text-primary, #1e1b4b)}.students__modal-text{margin:0 0 20px;font-size:.85rem;color:var(--text-secondary, #6b7280);line-height:1.5}.students__modal-actions{display:flex;justify-content:flex-end;gap:8px}.students__modal-btn{padding:7px 18px;border-radius:8px;font-size:.82rem;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s}.students__modal-btn--cancel{background:none;border:1px solid #E5E7EB;color:var(--text-secondary, #6b7280)}.students__modal-btn--cancel:hover{background:#f3f4f6}.students__modal-btn--delete{background:#dc2626;border:1px solid #dc2626;color:#fff}.students__modal-btn--delete:hover{background:#b91c1c;border-color:#b91c1c}.create-org{max-width:640px}.create-org__plan-badge{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;background:#667eea14;border:1px solid rgba(102,126,234,.18);border-radius:var(--radius-md, 12px);color:#667eea;font-size:.8125rem;font-weight:600;margin-bottom:28px;letter-spacing:.02em}.create-org__plan-badge svg{flex-shrink:0}.create-org__header{margin-bottom:28px}.create-org__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.create-org__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.create-org__card{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:var(--radius-lg, 16px);padding:28px;box-shadow:0 1px 3px #0000000a,0 1px 2px #00000008}.create-org__form{display:flex;flex-direction:column;gap:20px}.create-org__field{display:flex;flex-direction:column;gap:6px}.create-org__label{font-size:.8125rem;font-weight:500;color:var(--text-secondary, #475569)}.create-org__label--required:after{content:" *";color:var(--error, #ef4444)}.create-org__input-wrap{position:relative;display:flex;align-items:center}.create-org__input-icon{position:absolute;left:12px;color:var(--text-muted, #94a3b8);pointer-events:none;display:flex;transition:color .15s ease}.create-org__input-wrap:focus-within .create-org__input-icon{color:var(--primary-start, #667eea)}.create-org__input{width:100%;padding:10px 12px 10px 40px;background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);color:var(--text-primary, #1e293b);font-size:.9375rem;font-family:inherit;outline:none;transition:all .2s ease;box-sizing:border-box}.create-org__input::placeholder{color:var(--text-placeholder, #94a3b8)}.create-org__input:focus{background:var(--bg-input-focus, #ffffff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.create-org__input--error{border-color:var(--error, #ef4444)!important}.create-org__input--error:focus{box-shadow:0 0 0 3px #ef44441a}.create-org__slug-wrap{display:flex;align-items:center;background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);overflow:hidden;transition:all .2s ease}.create-org__slug-wrap:focus-within{background:var(--bg-input-focus, #ffffff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.create-org__slug-wrap--error{border-color:var(--error, #ef4444)!important}.create-org__slug-wrap--error:focus-within{box-shadow:0 0 0 3px #ef44441a}.create-org__slug-prefix{padding:10px 0 10px 12px;font-size:.875rem;color:var(--text-muted, #94a3b8);white-space:nowrap;-webkit-user-select:none;user-select:none;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.create-org__slug-input{flex:1;padding:10px 12px 10px 2px;border:none;background:transparent;color:var(--text-primary, #1e293b);font-size:.9375rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;outline:none;min-width:0}.create-org__slug-input::placeholder{color:var(--text-placeholder, #94a3b8);font-family:inherit}.create-org__slug-status{display:flex;align-items:center;padding-right:10px}.create-org__slug-status svg{flex-shrink:0}.create-org__slug-status--checking{color:var(--text-muted, #94a3b8);animation:org-pulse 1.2s infinite ease-in-out}.create-org__slug-status--available{color:var(--success, #10b981)}.create-org__slug-status--taken{color:var(--error, #ef4444)}@keyframes org-pulse{0%,to{opacity:.4}50%{opacity:1}}.create-org__helper{font-size:.75rem;color:var(--text-muted, #94a3b8);margin:0}.create-org__error{font-size:.75rem;color:var(--error, #ef4444);margin:0;animation:org-slideIn .2s ease}@keyframes org-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.create-org__row{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:560px){.create-org__row{grid-template-columns:1fr}}.create-org__divider{border:none;border-top:1px solid var(--border-color, #e2e8f0);margin:4px 0}.create-org__actions{display:flex;align-items:center;gap:12px;padding-top:4px}.create-org__submit{padding:10px 28px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.9375rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;justify-content:center;gap:8px;position:relative;overflow:hidden}.create-org__submit:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.create-org__submit:hover:before{opacity:1}.create-org__submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.create-org__submit:active{transform:translateY(0)}.create-org__submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.create-org__spinner{animation:org-rotate 1.2s linear infinite}.create-org__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}@keyframes org-rotate{to{transform:rotate(360deg)}}.create-org__cancel{padding:10px 20px;background:transparent;color:var(--text-secondary, #475569);font-size:.9375rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .2s ease}.create-org__cancel:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.create-org__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:var(--radius-sm, 8px);color:var(--success, #10b981);font-size:.875rem;font-weight:500;animation:org-slideIn .3s ease;width:fit-content;max-width:100%}.create-org__toast svg{flex-shrink:0}.create-org__input:focus-visible,.create-org__slug-input:focus-visible,.create-org__submit:focus-visible,.create-org__cancel:focus-visible{outline:2px solid var(--primary-start, #667eea);outline-offset:2px}.create-org__list-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px}.create-org__list-header .create-org__submit{white-space:nowrap;flex-shrink:0}.create-org__back-btn{display:inline-flex;align-items:center;gap:6px;padding:0;background:none;border:none;color:var(--text-secondary, #6b7280);font-size:.8125rem;font-weight:500;font-family:inherit;cursor:pointer;margin-bottom:20px;transition:color .15s ease}.create-org__back-btn:hover{color:var(--primary-start, #667eea)}.create-org__back-btn svg{flex-shrink:0}.create-org__list-body{min-height:200px}.create-org__loading{display:flex;align-items:center;justify-content:center;padding:64px 0}.create-org__loader{display:flex;gap:6px}.create-org__loader-dot{width:8px;height:8px;border-radius:50%;background:var(--primary-start, #667eea);animation:org-bounce 1.4s ease-in-out infinite both}.create-org__loader-dot:nth-child(1){animation-delay:-.32s}.create-org__loader-dot:nth-child(2){animation-delay:-.16s}@keyframes org-bounce{0%,80%,to{transform:scale(0);opacity:.4}40%{transform:scale(1);opacity:1}}.create-org__empty{display:flex;flex-direction:column;align-items:center;padding:64px 20px;text-align:center}.create-org__empty-icon{color:var(--text-muted, #94a3b8);margin-bottom:16px;opacity:.5}.create-org__empty-title{font-size:1.125rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 6px}.create-org__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0}.create-org__org-list{display:flex;flex-direction:column;gap:12px}.create-org__org-card{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:var(--radius-lg, 16px);padding:20px;box-shadow:0 1px 3px #0000000a,0 1px 2px #00000008;transition:box-shadow .2s ease,border-color .2s ease}.create-org__org-card:hover{border-color:#667eea40;box-shadow:0 4px 12px #0000000f}.create-org__org-card-header{display:flex;align-items:center;gap:12px;margin-bottom:14px}.create-org__org-avatar{width:40px;height:40px;border-radius:var(--radius-sm, 8px);background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:1.125rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.create-org__org-info{display:flex;flex-direction:column;min-width:0;flex:1}.create-org__org-name{font-size:.9375rem;font-weight:600;color:var(--text-primary, #1e293b);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.create-org__org-slug{font-size:.75rem;color:var(--text-muted, #94a3b8);font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.create-org__org-status{padding:3px 10px;border-radius:999px;font-size:.6875rem;font-weight:600;text-transform:capitalize;letter-spacing:.03em;flex-shrink:0}.create-org__org-status--active{background:#10b98114;color:var(--success, #10b981);border:1px solid rgba(16,185,129,.2)}.create-org__org-status--inactive{background:#ef444414;color:var(--error, #ef4444);border:1px solid rgba(239,68,68,.2)}.create-org__org-status--suspended{background:#f59e0b14;color:#f59e0b;border:1px solid rgba(245,158,11,.2)}.create-org__org-details{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:14px;padding-left:52px}.create-org__org-detail{display:flex;align-items:center;gap:5px;font-size:.8125rem;color:var(--text-secondary, #6b7280)}.create-org__org-detail svg{color:var(--text-muted, #94a3b8);flex-shrink:0}.create-org__org-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:12px;padding-left:52px;border-top:1px solid var(--border-color, #e2e8f0)}.create-org__org-meta{font-size:.75rem;color:var(--text-muted, #94a3b8)}.create-org__toast--error{background:#ef444414;border-color:#ef444440;color:var(--error, #ef4444)}.create-org__toast-dismiss{margin-left:auto;padding:2px 6px;background:none;border:none;color:inherit;font-size:.875rem;cursor:pointer;opacity:.6;transition:opacity .15s ease}.create-org__toast-dismiss:hover{opacity:1}.create-org:has(.create-org__list-header){max-width:800px}@media(max-width:560px){.create-org__list-header{flex-direction:column}.create-org__org-details,.create-org__org-footer{padding-left:0}.create-org__org-footer{flex-direction:column;align-items:flex-start;gap:4px}}.acad-sessions{max-width:780px}.acad-sessions__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:28px;gap:16px}.acad-sessions__header-text{flex:1}.acad-sessions__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.acad-sessions__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.acad-sessions__add-btn{padding:9px 22px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden;flex-shrink:0}.acad-sessions__add-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.acad-sessions__add-btn:hover:before{opacity:1}.acad-sessions__add-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.acad-sessions__add-btn:active{transform:translateY(0)}.acad-sessions__table-wrap{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:var(--radius-lg, 16px);overflow:hidden;box-shadow:0 1px 3px #0000000a,0 1px 2px #00000008}.acad-sessions__table{width:100%;border-collapse:collapse;font-size:.875rem}.acad-sessions__table thead{background:var(--bg-input, #f8fafc);border-bottom:1px solid var(--card-border, #e5e7eb)}.acad-sessions__table th{text-align:left;font-size:.75rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.05em;padding:10px 16px}.acad-sessions__table td{padding:12px 16px;color:var(--text-primary, #1e293b);border-bottom:1px solid var(--card-border, #e5e7eb);vertical-align:middle}.acad-sessions__table tbody tr:last-child td{border-bottom:none}.acad-sessions__table tbody tr:nth-child(2n){background:#f8fafc80}.acad-sessions__table tbody tr:hover{background:#667eea08}.acad-sessions__table td.acad-sessions__col-name{font-weight:600;font-variant-numeric:tabular-nums}.acad-sessions__col-actions,.acad-sessions__table th.acad-sessions__col-actions{text-align:right}.acad-sessions__badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:.75rem;font-weight:600;letter-spacing:.02em}.acad-sessions__badge--current{background:#3b82f61a;color:#2563eb}.acad-sessions__badge--active{background:#10b9811a;color:#059669}.acad-sessions__badge--inactive{background:#6b72801a;color:#6b7280}.acad-sessions__edit-btn{padding:6px 14px;background:transparent;color:var(--text-secondary, #475569);font-size:.8125rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .2s ease;display:inline-flex;align-items:center;gap:5px}.acad-sessions__edit-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.acad-sessions__loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:48px 24px;color:var(--text-secondary, #6b7280);font-size:.875rem}.acad-sessions__error-banner{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#ef444414;border:1px solid rgba(239,68,68,.25);border-radius:var(--radius-sm, 8px);color:var(--error, #ef4444);font-size:.875rem;font-weight:500;margin-bottom:20px;animation:acad-slideIn .3s ease}.acad-sessions__error-banner svg{flex-shrink:0}.acad-sessions__empty{padding:56px 24px;text-align:center}.acad-sessions__empty-icon{color:var(--text-muted, #94a3b8);margin-bottom:12px}.acad-sessions__empty-title{font-size:1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 4px}.acad-sessions__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0}.acad-sessions__form-header{display:flex;align-items:center;gap:10px;margin-bottom:28px}.acad-sessions__back-btn{padding:6px;background:transparent;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;color:var(--text-secondary, #475569);display:flex;align-items:center;transition:all .2s ease}.acad-sessions__back-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.acad-sessions__form-title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0;letter-spacing:-.02em}.acad-sessions__card{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:var(--radius-lg, 16px);padding:28px;box-shadow:0 1px 3px #0000000a,0 1px 2px #00000008}.acad-sessions__form{display:flex;flex-direction:column;gap:20px}.acad-sessions__field{display:flex;flex-direction:column;gap:6px}.acad-sessions__label{font-size:.8125rem;font-weight:500;color:var(--text-secondary, #475569)}.acad-sessions__label--required:after{content:" *";color:var(--error, #ef4444)}.acad-sessions__input-wrap{position:relative;display:flex;align-items:center}.acad-sessions__input-icon{position:absolute;left:12px;color:var(--text-muted, #94a3b8);pointer-events:none;display:flex;transition:color .15s ease}.acad-sessions__input-wrap:focus-within .acad-sessions__input-icon{color:var(--primary-start, #667eea)}.acad-sessions__input{width:100%;padding:10px 12px 10px 40px;background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);color:var(--text-primary, #1e293b);font-size:.9375rem;font-family:inherit;outline:none;transition:all .2s ease;box-sizing:border-box}.acad-sessions__input::placeholder{color:var(--text-placeholder, #94a3b8)}.acad-sessions__input:focus{background:var(--bg-input-focus, #ffffff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.acad-sessions__input--error{border-color:var(--error, #ef4444)!important}.acad-sessions__input--error:focus{box-shadow:0 0 0 3px #ef44441a}.acad-sessions__input--date{padding-left:12px}.acad-sessions__row{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:560px){.acad-sessions__row{grid-template-columns:1fr}}.acad-sessions__toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.acad-sessions__toggle-info{display:flex;flex-direction:column;gap:2px}.acad-sessions__toggle-label{font-size:.875rem;font-weight:500;color:var(--text-primary, #1e293b)}.acad-sessions__toggle-desc{font-size:.75rem;color:var(--text-muted, #94a3b8)}.acad-sessions__toggle{position:relative;width:44px;height:24px;flex-shrink:0}.acad-sessions__toggle input{opacity:0;width:0;height:0;position:absolute}.acad-sessions__toggle-track{position:absolute;inset:0;background:var(--border-color, #d1d5db);border-radius:12px;cursor:pointer;transition:background .25s ease}.acad-sessions__toggle-track:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .25s ease;box-shadow:0 1px 3px #00000026}.acad-sessions__toggle input:checked+.acad-sessions__toggle-track{background:#667eea}.acad-sessions__toggle input:checked+.acad-sessions__toggle-track:after{transform:translate(20px)}.acad-sessions__toggle input:focus-visible+.acad-sessions__toggle-track{outline:2px solid var(--primary-start, #667eea);outline-offset:2px}.acad-sessions__warning{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;background:#f59e0b14;border:1px solid rgba(245,158,11,.25);border-radius:var(--radius-sm, 8px);color:#b45309;font-size:.8125rem;font-weight:500;line-height:1.5;animation:acad-slideIn .2s ease}.acad-sessions__warning svg{flex-shrink:0;margin-top:1px}.acad-sessions__helper{font-size:.75rem;color:var(--text-muted, #94a3b8);margin:0}.acad-sessions__error{font-size:.75rem;color:var(--error, #ef4444);margin:0;animation:acad-slideIn .2s ease}@keyframes acad-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.acad-sessions__divider{border:none;border-top:1px solid var(--border-color, #e2e8f0);margin:4px 0}.acad-sessions__actions{display:flex;align-items:center;gap:12px;padding-top:4px}.acad-sessions__submit{padding:10px 28px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.9375rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;justify-content:center;gap:8px;position:relative;overflow:hidden}.acad-sessions__submit:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.acad-sessions__submit:hover:before{opacity:1}.acad-sessions__submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.acad-sessions__submit:active{transform:translateY(0)}.acad-sessions__submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.acad-sessions__spinner{animation:acad-rotate 1.2s linear infinite}.acad-sessions__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}@keyframes acad-rotate{to{transform:rotate(360deg)}}.acad-sessions__cancel{padding:10px 20px;background:transparent;color:var(--text-secondary, #475569);font-size:.9375rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .2s ease}.acad-sessions__cancel:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.acad-sessions__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:var(--radius-sm, 8px);color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:20px;animation:acad-slideIn .3s ease;width:fit-content;max-width:100%}.acad-sessions__toast svg{flex-shrink:0}.acad-sessions__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.acad-sessions__toast-dismiss:hover{opacity:1}.acad-sessions__input:focus-visible,.acad-sessions__submit:focus-visible,.acad-sessions__cancel:focus-visible,.acad-sessions__add-btn:focus-visible,.acad-sessions__edit-btn:focus-visible,.acad-sessions__back-btn:focus-visible{outline:2px solid var(--primary-start, #667eea);outline-offset:2px}.depts{max-width:780px}.depts__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:28px;gap:16px}.depts__header-text{flex:1}.depts__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.depts__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.depts__add-btn{padding:9px 22px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden;flex-shrink:0}.depts__add-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.depts__add-btn:hover:before{opacity:1}.depts__add-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.depts__add-btn:active{transform:translateY(0)}.depts__table-wrap{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:var(--radius-lg, 16px);overflow:hidden;box-shadow:0 1px 3px #0000000a,0 1px 2px #00000008}.depts__table{width:100%;border-collapse:collapse;font-size:.875rem}.depts__table thead{background:var(--bg-input, #f8fafc);border-bottom:1px solid var(--card-border, #e5e7eb)}.depts__table th{text-align:left;font-size:.75rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.05em;padding:10px 16px}.depts__table td{padding:12px 16px;color:var(--text-primary, #1e293b);border-bottom:1px solid var(--card-border, #e5e7eb);vertical-align:middle}.depts__table tbody tr:last-child td{border-bottom:none}.depts__table tbody tr:nth-child(2n){background:#f8fafc80}.depts__table tbody tr:hover{background:#667eea08}.depts__table td.depts__col-name{font-weight:600}.depts__col-actions,.depts__table th.depts__col-actions{text-align:right}.depts__badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:.75rem;font-weight:600;letter-spacing:.02em}.depts__badge--active{background:#10b9811a;color:#059669}.depts__badge--inactive{background:#6b72801a;color:#6b7280}.depts__edit-btn{padding:6px 14px;background:transparent;color:var(--text-secondary, #475569);font-size:.8125rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .2s ease;display:inline-flex;align-items:center;gap:5px}.depts__edit-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.depts__loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:48px 24px;color:var(--text-secondary, #6b7280);font-size:.875rem}.depts__error-banner{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#ef444414;border:1px solid rgba(239,68,68,.25);border-radius:var(--radius-sm, 8px);color:var(--error, #ef4444);font-size:.875rem;font-weight:500;margin-bottom:20px;animation:depts-slideIn .3s ease}.depts__error-banner svg{flex-shrink:0}.depts__empty{padding:56px 24px;text-align:center}.depts__empty-icon{color:var(--text-muted, #94a3b8);margin-bottom:12px}.depts__empty-title{font-size:1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 4px}.depts__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0}.depts__form-header{display:flex;align-items:center;gap:10px;margin-bottom:28px}.depts__back-btn{padding:6px;background:transparent;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;color:var(--text-secondary, #475569);display:flex;align-items:center;transition:all .2s ease}.depts__back-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.depts__form-title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0;letter-spacing:-.02em}.depts__card{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:var(--radius-lg, 16px);padding:28px;box-shadow:0 1px 3px #0000000a,0 1px 2px #00000008}.depts__form{display:flex;flex-direction:column;gap:20px}.depts__field{display:flex;flex-direction:column;gap:6px}.depts__label{font-size:.8125rem;font-weight:500;color:var(--text-secondary, #475569)}.depts__label--required:after{content:" *";color:var(--error, #ef4444)}.depts__input-wrap{position:relative;display:flex;align-items:center}.depts__input-icon{position:absolute;left:12px;color:var(--text-muted, #94a3b8);pointer-events:none;display:flex;transition:color .15s ease}.depts__input-wrap:focus-within .depts__input-icon{color:var(--primary-start, #667eea)}.depts__input{width:100%;padding:10px 12px 10px 40px;background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);color:var(--text-primary, #1e293b);font-size:.9375rem;font-family:inherit;outline:none;transition:all .2s ease;box-sizing:border-box}.depts__input::placeholder{color:var(--text-placeholder, #94a3b8)}.depts__input:focus{background:var(--bg-input-focus, #ffffff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.depts__input--error{border-color:var(--error, #ef4444)!important}.depts__input--error:focus{box-shadow:0 0 0 3px #ef44441a}.depts__toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.depts__toggle-info{display:flex;flex-direction:column;gap:2px}.depts__toggle-label{font-size:.875rem;font-weight:500;color:var(--text-primary, #1e293b)}.depts__toggle-desc{font-size:.75rem;color:var(--text-muted, #94a3b8)}.depts__toggle{position:relative;width:44px;height:24px;flex-shrink:0}.depts__toggle input{opacity:0;width:0;height:0;position:absolute}.depts__toggle-track{position:absolute;inset:0;background:var(--border-color, #d1d5db);border-radius:12px;cursor:pointer;transition:background .25s ease}.depts__toggle-track:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .25s ease;box-shadow:0 1px 3px #00000026}.depts__toggle input:checked+.depts__toggle-track{background:#667eea}.depts__toggle input:checked+.depts__toggle-track:after{transform:translate(20px)}.depts__toggle input:focus-visible+.depts__toggle-track{outline:2px solid var(--primary-start, #667eea);outline-offset:2px}.depts__helper{font-size:.75rem;color:var(--text-muted, #94a3b8);margin:0}.depts__error{font-size:.75rem;color:var(--error, #ef4444);margin:0;animation:depts-slideIn .2s ease}.depts__divider{border:none;border-top:1px solid var(--border-color, #e2e8f0);margin:4px 0}.depts__actions{display:flex;align-items:center;gap:12px;padding-top:4px}.depts__submit{padding:10px 28px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.9375rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;justify-content:center;gap:8px;position:relative;overflow:hidden}.depts__submit:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.depts__submit:hover:before{opacity:1}.depts__submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.depts__submit:active{transform:translateY(0)}.depts__submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.depts__cancel{padding:10px 20px;background:transparent;color:var(--text-secondary, #475569);font-size:.9375rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .2s ease}.depts__cancel:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.depts__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:var(--radius-sm, 8px);color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:20px;animation:depts-slideIn .3s ease;width:fit-content;max-width:100%}.depts__toast svg{flex-shrink:0}.depts__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.depts__toast-dismiss:hover{opacity:1}.depts__spinner{animation:depts-rotate 1.2s linear infinite}.depts__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}@keyframes depts-rotate{to{transform:rotate(360deg)}}@keyframes depts-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.depts__input:focus-visible,.depts__submit:focus-visible,.depts__cancel:focus-visible,.depts__add-btn:focus-visible,.depts__edit-btn:focus-visible,.depts__back-btn:focus-visible{outline:2px solid var(--primary-start, #667eea);outline-offset:2px}.desig{max-width:780px}.desig__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:28px;gap:16px}.desig__header-text{flex:1}.desig__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.desig__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.desig__add-btn{padding:9px 22px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden;flex-shrink:0}.desig__add-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.desig__add-btn:hover:before{opacity:1}.desig__add-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.desig__add-btn:active{transform:translateY(0)}.desig__table-wrap{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:var(--radius-lg, 16px);overflow:hidden;box-shadow:0 1px 3px #0000000a,0 1px 2px #00000008}.desig__table{width:100%;border-collapse:collapse;font-size:.875rem}.desig__table thead{background:var(--bg-input, #f8fafc);border-bottom:1px solid var(--card-border, #e5e7eb)}.desig__table th{text-align:left;font-size:.75rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.05em;padding:10px 16px}.desig__table td{padding:12px 16px;color:var(--text-primary, #1e293b);border-bottom:1px solid var(--card-border, #e5e7eb);vertical-align:middle}.desig__table tbody tr:last-child td{border-bottom:none}.desig__table tbody tr:nth-child(2n){background:#f8fafc80}.desig__table tbody tr:hover{background:#667eea08}.desig__table td.desig__col-name{font-weight:600}.desig__col-actions,.desig__table th.desig__col-actions{text-align:right}.desig__badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:.75rem;font-weight:600;letter-spacing:.02em}.desig__badge--active{background:#10b9811a;color:#059669}.desig__badge--inactive{background:#6b72801a;color:#6b7280}.desig__edit-btn{padding:6px 14px;background:transparent;color:var(--text-secondary, #475569);font-size:.8125rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .2s ease;display:inline-flex;align-items:center;gap:5px}.desig__edit-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.desig__loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:48px 24px;color:var(--text-secondary, #6b7280);font-size:.875rem}.desig__error-banner{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#ef444414;border:1px solid rgba(239,68,68,.25);border-radius:var(--radius-sm, 8px);color:var(--error, #ef4444);font-size:.875rem;font-weight:500;margin-bottom:20px;animation:desig-slideIn .3s ease}.desig__error-banner svg{flex-shrink:0}.desig__empty{padding:56px 24px;text-align:center}.desig__empty-icon{color:var(--text-muted, #94a3b8);margin-bottom:12px}.desig__empty-title{font-size:1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 4px}.desig__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0}.desig__form-header{display:flex;align-items:center;gap:10px;margin-bottom:28px}.desig__back-btn{padding:6px;background:transparent;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;color:var(--text-secondary, #475569);display:flex;align-items:center;transition:all .2s ease}.desig__back-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.desig__form-title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0;letter-spacing:-.02em}.desig__card{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:var(--radius-lg, 16px);padding:28px;box-shadow:0 1px 3px #0000000a,0 1px 2px #00000008}.desig__form{display:flex;flex-direction:column;gap:20px}.desig__field{display:flex;flex-direction:column;gap:6px}.desig__label{font-size:.8125rem;font-weight:500;color:var(--text-secondary, #475569)}.desig__label--required:after{content:" *";color:var(--error, #ef4444)}.desig__input-wrap{position:relative;display:flex;align-items:center}.desig__input-icon{position:absolute;left:12px;color:var(--text-muted, #94a3b8);pointer-events:none;display:flex;transition:color .15s ease}.desig__input-wrap:focus-within .desig__input-icon{color:var(--primary-start, #667eea)}.desig__input{width:100%;padding:10px 12px 10px 40px;background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);color:var(--text-primary, #1e293b);font-size:.9375rem;font-family:inherit;outline:none;transition:all .2s ease;box-sizing:border-box}.desig__input::placeholder{color:var(--text-placeholder, #94a3b8)}.desig__input:focus{background:var(--bg-input-focus, #ffffff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.desig__input--error{border-color:var(--error, #ef4444)!important}.desig__input--error:focus{box-shadow:0 0 0 3px #ef44441a}.desig__toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.desig__toggle-info{display:flex;flex-direction:column;gap:2px}.desig__toggle-label{font-size:.875rem;font-weight:500;color:var(--text-primary, #1e293b)}.desig__toggle-desc{font-size:.75rem;color:var(--text-muted, #94a3b8)}.desig__toggle{position:relative;width:44px;height:24px;flex-shrink:0}.desig__toggle input{opacity:0;width:0;height:0;position:absolute}.desig__toggle-track{position:absolute;inset:0;background:var(--border-color, #d1d5db);border-radius:12px;cursor:pointer;transition:background .25s ease}.desig__toggle-track:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .25s ease;box-shadow:0 1px 3px #00000026}.desig__toggle input:checked+.desig__toggle-track{background:#667eea}.desig__toggle input:checked+.desig__toggle-track:after{transform:translate(20px)}.desig__toggle input:focus-visible+.desig__toggle-track{outline:2px solid var(--primary-start, #667eea);outline-offset:2px}.desig__helper{font-size:.75rem;color:var(--text-muted, #94a3b8);margin:0}.desig__error{font-size:.75rem;color:var(--error, #ef4444);margin:0;animation:desig-slideIn .2s ease}.desig__divider{border:none;border-top:1px solid var(--border-color, #e2e8f0);margin:4px 0}.desig__actions{display:flex;align-items:center;gap:12px;padding-top:4px}.desig__submit{padding:10px 28px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.9375rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;justify-content:center;gap:8px;position:relative;overflow:hidden}.desig__submit:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.desig__submit:hover:before{opacity:1}.desig__submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.desig__submit:active{transform:translateY(0)}.desig__submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.desig__cancel{padding:10px 20px;background:transparent;color:var(--text-secondary, #475569);font-size:.9375rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .2s ease}.desig__cancel:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.desig__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:var(--radius-sm, 8px);color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:20px;animation:desig-slideIn .3s ease;width:fit-content;max-width:100%}.desig__toast svg{flex-shrink:0}.desig__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.desig__toast-dismiss:hover{opacity:1}.desig__spinner{animation:desig-rotate 1.2s linear infinite}.desig__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}@keyframes desig-rotate{to{transform:rotate(360deg)}}@keyframes desig-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.desig__input:focus-visible,.desig__submit:focus-visible,.desig__cancel:focus-visible,.desig__add-btn:focus-visible,.desig__edit-btn:focus-visible,.desig__back-btn:focus-visible{outline:2px solid var(--primary-start, #667eea);outline-offset:2px}.schools{display:flex;flex-direction:column;height:100%;position:relative}.schools__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px;gap:16px}.schools__header-text{flex:1}.schools__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.schools__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.schools__header-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.schools__search-wrap{position:relative;display:flex;align-items:center}.schools__search-icon{position:absolute;left:10px;color:var(--text-muted, #9ca3af);pointer-events:none}.schools__search{width:240px;padding:8px 12px 8px 34px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);outline:none;transition:border-color .2s,box-shadow .2s;font-family:inherit}.schools__search:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.schools__search::placeholder{color:var(--text-muted, #9ca3af)}.schools__add-btn{padding:9px 22px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden}.schools__add-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.schools__add-btn:hover:before{opacity:1}.schools__add-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.schools__add-btn:active{transform:translateY(0)}.schools__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000000a,0 1px 2px #00000008}.schools__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:auto}.schools__th{position:sticky;top:0;z-index:2;padding:10px 12px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap;-webkit-user-select:none;user-select:none}.schools__th--actions{text-align:right;width:80px}.schools__td{padding:8px 12px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.schools__td--name{font-weight:600}.schools__td--code{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.78rem;font-variant-numeric:tabular-nums}.schools__td--actions{text-align:right}.schools__table-row:nth-child(2n)>.schools__td{background:var(--row-alt-bg, rgba(0, 0, 0, .015))}.schools__table-row:hover>.schools__td{background:var(--row-hover-bg, rgba(102, 126, 234, .03))}.schools__table-row:last-child>.schools__td{border-bottom:none}.schools__muted{color:var(--text-muted, #9ca3af);font-style:italic;font-size:.8rem}.schools__badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:100px;font-size:.72rem;font-weight:600;letter-spacing:.02em;white-space:nowrap}.schools__badge--active{background:#22c55e1a;color:#15803d}.schools__badge--inactive{background:#6b72801a;color:#4b5563}.schools__row-btn{padding:5px 12px;background:transparent;color:var(--text-secondary, #475569);font-size:.8rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;cursor:pointer;font-family:inherit;transition:all .2s ease;display:inline-flex;align-items:center;gap:4px}.schools__row-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.schools__row-btn--delete{color:#ef4444;border-color:#ef44444d}.schools__row-btn--delete:hover{background:#ef44440f;border-color:#ef444480}.schools__empty{padding:60px 24px;text-align:center}.schools__empty-icon{color:var(--text-muted, #94a3b8);margin-bottom:12px}.schools__empty-title{font-size:1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 4px}.schools__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0}.schools__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:var(--radius-sm, 8px);color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:16px;animation:schools-slideIn .3s ease;width:fit-content;max-width:100%}.schools__toast svg{flex-shrink:0}.schools__toast--error{background:#ef444414;border-color:#ef444440;color:var(--error, #ef4444)}.schools__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.schools__toast-dismiss:hover{opacity:1}.schools__overlay{position:fixed;inset:0;background:#0f172a59;z-index:90;animation:schools-fadeIn .2s ease}.schools__drawer{position:fixed;right:0;top:0;bottom:0;width:520px;max-width:90vw;background:var(--bg-base, #f3f4f6);z-index:100;display:flex;flex-direction:column;box-shadow:-8px 0 30px #0000001f;animation:schools-slideInRight .3s ease}.schools__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff)}.schools__drawer-title{font-size:1.125rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0;letter-spacing:-.01em}.schools__drawer-close{width:32px;height:32px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.schools__drawer-close:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.schools__drawer-body{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:20px}.schools__card{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:12px;padding:16px;box-shadow:0 1px 3px #0000000a}.schools__card-title{font-size:.8rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border-color, #e2e8f0)}.schools__field{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.schools__field:last-child{margin-bottom:0}.schools__label{font-size:.75rem;font-weight:700;color:var(--text-secondary, #475569)}.schools__label--required:after{content:" *";color:var(--error, #ef4444)}.schools__input{width:100%;padding:8px 12px;background-color:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;color:var(--text-primary, #1e293b);font-size:.875rem;font-family:inherit;outline:none;transition:all .2s ease;box-sizing:border-box}select.schools__input{padding-right:32px}.schools__input::placeholder{color:var(--text-placeholder, #94a3b8)}.schools__input:focus{background-color:var(--bg-input-focus, #ffffff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.schools__input--error{border-color:var(--error, #ef4444)!important}.schools__input--error:focus{box-shadow:0 0 0 3px #ef44441a}.schools__textarea{resize:vertical;min-height:60px}.schools__input-wrap{position:relative;display:flex;align-items:center}.schools__input-status{position:absolute;right:10px;display:flex;align-items:center;pointer-events:none}.schools__input-status--available{color:#10b981}.schools__input-status--taken{color:#ef4444}.schools__input-status--loading{color:var(--text-muted, #94a3b8);animation:schools-spin 1s linear infinite}.schools__row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.schools__error{font-size:.72rem;color:var(--error, #ef4444);margin:0;animation:schools-slideIn .2s ease}.schools__helper{font-size:.72rem;color:var(--text-muted, #94a3b8);margin:0}.schools__tags{display:flex;flex-wrap:wrap;gap:6px}.schools__tag{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;background:#667eea14;border:1px solid rgba(102,126,234,.2);border-radius:100px;font-size:.75rem;font-weight:500;color:#4f46e5;cursor:default}.schools__tag-remove{width:14px;height:14px;padding:0;border:none;border-radius:50%;background:#4f46e526;color:#4f46e5;font-size:.65rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;line-height:1}.schools__tag-remove:hover{background:#4f46e54d}.schools__board-options{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.schools__board-option{padding:4px 12px;border:1px solid var(--border-color, #e2e8f0);border-radius:100px;background:transparent;font-size:.75rem;font-weight:500;color:var(--text-secondary, #475569);cursor:pointer;font-family:inherit;transition:all .15s ease}.schools__board-option:hover{background:#667eea0f;border-color:#667eea4d;color:#4f46e5}.schools__board-option--selected{background:#667eea14;border-color:#667eea4d;color:#4f46e5}.schools__board-entries{display:flex;flex-direction:column;gap:12px;margin-top:12px}.schools__board-entry{background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:8px}.schools__board-entry-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.schools__board-entry-name{font-size:.8rem;font-weight:600;color:#4f46e5}.schools__board-entries--view .schools__board-entry{background:transparent;border-color:var(--border-color, #e2e8f0)}.schools__toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.schools__toggle-info{display:flex;flex-direction:column;gap:2px}.schools__toggle-label{font-size:.875rem;font-weight:500;color:var(--text-primary, #1e293b)}.schools__toggle-desc{font-size:.75rem;color:var(--text-muted, #94a3b8)}.schools__toggle{position:relative;width:44px;height:24px;flex-shrink:0}.schools__toggle input{opacity:0;width:0;height:0;position:absolute}.schools__toggle-track{position:absolute;inset:0;background:var(--border-color, #d1d5db);border-radius:12px;cursor:pointer;transition:background .25s ease}.schools__toggle-track:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .25s ease;box-shadow:0 1px 3px #00000026}.schools__toggle input:checked+.schools__toggle-track{background:#667eea}.schools__toggle input:checked+.schools__toggle-track:after{transform:translate(20px)}.schools__search-dropdown{position:relative}.schools__search-results{position:absolute;top:100%;left:0;right:0;background:var(--card-bg, #ffffff);border:1px solid var(--border-color, #e2e8f0);border-radius:8px;margin-top:4px;max-height:180px;overflow-y:auto;z-index:10;box-shadow:0 4px 12px #0000001a;animation:schools-slideIn .15s ease}.schools__search-option{padding:8px 12px;cursor:pointer;transition:background .12s;border-bottom:1px solid rgba(0,0,0,.04)}.schools__search-option:last-child{border-bottom:none}.schools__search-option:hover{background:#667eea0f}.schools__search-option-name{font-size:.85rem;font-weight:500;color:var(--text-primary, #1e293b)}.schools__search-option-role{font-weight:400;color:var(--text-muted, #94a3b8);font-size:.78rem}.schools__search-option-email{font-size:.72rem;color:var(--text-muted, #94a3b8)}.schools__search-empty{padding:12px;text-align:center;font-size:.8rem;color:var(--text-muted, #94a3b8)}.schools__search-loading{padding:12px;text-align:center;font-size:.8rem;color:var(--text-muted, #94a3b8);display:flex;align-items:center;justify-content:center;gap:8px}.schools__selected-user{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px}.schools__selected-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.7rem;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0}.schools__selected-name{font-size:.85rem;font-weight:500;color:var(--text-primary, #1e293b);flex:1}.schools__selected-clear{width:20px;height:20px;padding:0;border:none;border-radius:50%;background:#0000000f;color:var(--text-secondary, #475569);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.7rem;transition:background .15s}.schools__selected-clear:hover{background:#0000001f}.schools__drawer-footer{display:flex;align-items:center;gap:12px;padding:16px 24px;border-top:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff)}.schools__submit{padding:10px 28px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.9375rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;justify-content:center;gap:8px;position:relative;overflow:hidden}.schools__submit:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.schools__submit:hover:before{opacity:1}.schools__submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.schools__submit:active{transform:translateY(0)}.schools__submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.schools__cancel{padding:10px 20px;background:transparent;color:var(--text-secondary, #475569);font-size:.9375rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .2s ease}.schools__cancel:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.schools__spinner{animation:schools-spin 1.2s linear infinite}.schools__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}.schools__timestamps{padding-top:12px;border-top:1px solid var(--border-color, #e2e8f0);display:flex;flex-direction:column;gap:2px}.schools__timestamp{font-size:.7rem;color:var(--text-muted, #94a3b8)}.schools__confirm-overlay{position:fixed;inset:0;background:#0f172a80;z-index:200;display:flex;align-items:center;justify-content:center;animation:schools-fadeIn .15s ease}.schools__confirm-modal{background:var(--card-bg, #ffffff);border-radius:12px;padding:28px;max-width:400px;width:90%;box-shadow:0 20px 60px #0003;animation:schools-slideIn .2s ease}.schools__confirm-title{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 8px}.schools__confirm-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0 0 20px;line-height:1.6}.schools__confirm-actions{display:flex;gap:10px;justify-content:flex-end}.schools__confirm-delete{padding:8px 20px;border:none;border-radius:8px;background:#ef4444;color:#fff;font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s}.schools__confirm-delete:hover{background:#dc2626}.schools__confirm-cancel{padding:8px 20px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer;transition:all .15s}.schools__confirm-cancel:hover{background:var(--bg-input, #f8fafc)}.schools__loading{padding:60px 0;text-align:center}.schools__loader{display:inline-flex;gap:6px}.schools__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:schools-bounce 1.2s infinite ease-in-out}.schools__loader-dot:nth-child(2){animation-delay:.15s}.schools__loader-dot:nth-child(3){animation-delay:.3s}@keyframes schools-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes schools-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes schools-slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes schools-spin{to{transform:rotate(360deg)}}@keyframes schools-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.schools__name-link{background:none;border:none;padding:0;font:inherit;font-weight:600;color:#4f46e5;cursor:pointer;text-align:left;transition:color .15s}.schools__name-link:hover{color:#667eea;text-decoration:underline}.schools__view-field{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}.schools__view-field:last-child{margin-bottom:0}.schools__view-label{font-size:.72rem;font-weight:600;color:var(--text-muted, #94a3b8);text-transform:uppercase;letter-spacing:.03em}.schools__view-value{font-size:.875rem;color:var(--text-primary, #1e293b);line-height:1.5}.schools__view-value--code{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.82rem}.schools__input:focus-visible,.schools__submit:focus-visible,.schools__cancel:focus-visible,.schools__add-btn:focus-visible,.schools__row-btn:focus-visible,.schools__name-link:focus-visible,.schools__drawer-close:focus-visible{outline:2px solid var(--primary-start, #667eea);outline-offset:2px}.classes{display:flex;flex-direction:column;height:100%;position:relative}.classes__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px;gap:16px}.classes__header-text{flex:1}.classes__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.classes__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.classes__header-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.classes__add-btn{padding:9px 22px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden}.classes__add-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.classes__add-btn:hover:before{opacity:1}.classes__add-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.classes__add-btn:active{transform:translateY(0)}.classes__add-btn--sm{padding:5px 14px;font-size:.78rem;box-shadow:0 2px 8px #667eea33}.classes__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000000a,0 1px 2px #00000008}.classes__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:auto}.classes__th{position:sticky;top:0;z-index:2;padding:10px 12px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap;-webkit-user-select:none;user-select:none}.classes__th--center{text-align:center}.classes__th--actions{text-align:right;width:100px}.classes__td{padding:8px 12px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.classes__td--name{font-weight:600}.classes__td--center{text-align:center;font-variant-numeric:tabular-nums}.classes__td--actions{text-align:right}.classes__class-row{cursor:pointer;transition:background .12s}.classes__class-row:hover>.classes__td{background:var(--row-hover-bg, rgba(102, 126, 234, .03))}.classes__class-row:nth-child(2n)>.classes__td{background:var(--row-alt-bg, rgba(0, 0, 0, .015))}.classes__class-row:nth-child(2n):hover>.classes__td{background:var(--row-hover-bg, rgba(102, 126, 234, .03))}.classes__expand-icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:4px;transition:transform .2s ease,background .15s;color:var(--text-muted, #9ca3af);flex-shrink:0;margin-right:8px;vertical-align:middle}.classes__expand-icon--open{transform:rotate(90deg);color:#667eea}.classes__teacher{display:inline-flex;align-items:center;gap:8px}.classes__teacher-avatar{width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.6rem;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0}.classes__teacher-name{font-size:.82rem}.classes__section-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:22px;padding:0 8px;background:#667eea14;color:#4f46e5;border-radius:100px;font-size:.72rem;font-weight:600;font-variant-numeric:tabular-nums}.classes__badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:100px;font-size:.72rem;font-weight:600;letter-spacing:.02em;white-space:nowrap}.classes__badge--active{background:#22c55e1a;color:#15803d}.classes__badge--inactive{background:#6b72801a;color:#4b5563}.classes__row-btn{padding:4px 10px;background:transparent;color:var(--text-secondary, #475569);font-size:.78rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;cursor:pointer;font-family:inherit;transition:all .2s ease;display:inline-flex;align-items:center;gap:4px}.classes__row-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.classes__row-btn--delete{color:#ef4444;border-color:#ef44444d}.classes__row-btn--delete:hover{background:#ef44440f;border-color:#ef444480}.classes__sections-row .classes__sections-cell{padding:0;border-bottom:1px solid #E5E7EB;background:var(--table-header-bg, #f8f8fb)}.classes__sections-wrap{padding:12px 16px 12px 40px;animation:classes-slideDown .25s ease-out}.classes__sections-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.classes__sections-title{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted, #9ca3af)}.classes__sections-table{width:100%;border-collapse:collapse;font-size:.8rem;background:var(--card-bg, #ffffff);border:1px solid #E5E7EB;border-radius:8px;overflow:hidden}.classes__sections-table th{padding:7px 12px;background:#f8fafccc;color:var(--text-secondary, #6b7280);font-weight:600;font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB}.classes__sections-table th:last-child{text-align:right}.classes__sections-table td{padding:6px 12px;border-bottom:1px solid rgba(229,231,235,.6);color:var(--text-primary, #1e1b4b);vertical-align:middle}.classes__sections-table tr:last-child td{border-bottom:none}.classes__sections-table tr:hover td{background:#667eea05}.classes__metric{display:flex;flex-direction:column;gap:3px;min-width:100px}.classes__metric-text{font-variant-numeric:tabular-nums;font-weight:600;font-size:.82rem}.classes__metric-text--warning{color:#d97706}.classes__metric-text--danger{color:#ef4444}.classes__metric-bar{width:100%;height:4px;background:#0000000f;border-radius:2px;overflow:hidden}.classes__metric-fill{height:100%;border-radius:2px;transition:width .4s ease;background:#10b981}.classes__metric-fill--warning{background:#f59e0b}.classes__metric-fill--danger{background:#ef4444}.classes__muted{color:var(--text-muted, #9ca3af);font-style:italic;font-size:.8rem}.classes__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:var(--radius-sm, 8px);color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:16px;animation:classes-slideIn .3s ease;width:fit-content;max-width:100%}.classes__toast svg{flex-shrink:0}.classes__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.classes__toast-dismiss:hover{opacity:1}.classes__empty{padding:60px 24px;text-align:center}.classes__empty-icon{color:var(--text-muted, #94a3b8);margin-bottom:12px}.classes__empty-title{font-size:1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 4px}.classes__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0}.classes__loading{padding:60px 0;text-align:center}.classes__loader{display:inline-flex;gap:6px}.classes__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:classes-bounce 1.2s infinite ease-in-out}.classes__loader-dot:nth-child(2){animation-delay:.15s}.classes__loader-dot:nth-child(3){animation-delay:.3s}.classes__overlay{position:fixed;inset:0;background:#0f172a59;z-index:90;animation:classes-fadeIn .2s ease}.classes__drawer{position:fixed;right:0;top:0;bottom:0;width:460px;max-width:90vw;background:var(--bg-base, #f3f4f6);z-index:100;display:flex;flex-direction:column;box-shadow:-8px 0 30px #0000001f;animation:classes-slideInRight .3s ease}.classes__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff)}.classes__drawer-title{font-size:1.125rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0;letter-spacing:-.01em}.classes__drawer-close{width:32px;height:32px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.classes__drawer-close:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.classes__drawer-body{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}.classes__card{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:12px;padding:16px;box-shadow:0 1px 3px #0000000a}.classes__card-title{font-size:.8rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border-color, #e2e8f0)}.classes__field{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.classes__field:last-child{margin-bottom:0}.classes__label{font-size:.75rem;font-weight:700;color:var(--text-secondary, #475569)}.classes__label--required:after{content:" *";color:var(--error, #ef4444)}.classes__input{width:100%;padding:8px 12px;background-color:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;color:var(--text-primary, #1e293b);font-size:.875rem;font-family:inherit;outline:none;transition:all .2s ease;box-sizing:border-box}select.classes__input{padding-right:32px}.classes__input::placeholder{color:var(--text-placeholder, #94a3b8)}.classes__input:focus{background-color:var(--bg-input-focus, #ffffff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.classes__input--error{border-color:var(--error, #ef4444)!important}.classes__error{font-size:.72rem;color:var(--error, #ef4444);margin:0;animation:classes-slideIn .2s ease}.classes__helper{font-size:.72rem;color:var(--text-muted, #94a3b8);margin:0}.classes__form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.classes__toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.classes__toggle-info{display:flex;flex-direction:column;gap:2px}.classes__toggle-label{font-size:.875rem;font-weight:500;color:var(--text-primary, #1e293b)}.classes__toggle-desc{font-size:.75rem;color:var(--text-muted, #94a3b8)}.classes__toggle{position:relative;width:44px;height:24px;flex-shrink:0}.classes__toggle input{opacity:0;width:0;height:0;position:absolute}.classes__toggle-track{position:absolute;inset:0;background:var(--border-color, #d1d5db);border-radius:12px;cursor:pointer;transition:background .25s ease}.classes__toggle-track:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .25s ease;box-shadow:0 1px 3px #00000026}.classes__toggle input:checked+.classes__toggle-track{background:#667eea}.classes__toggle input:checked+.classes__toggle-track:after{transform:translate(20px)}.classes__search-dropdown{position:relative}.classes__search-results{position:absolute;top:100%;left:0;right:0;background:var(--card-bg, #ffffff);border:1px solid var(--border-color, #e2e8f0);border-radius:8px;margin-top:4px;max-height:160px;overflow-y:auto;z-index:10;box-shadow:0 4px 12px #0000001a;animation:classes-slideIn .15s ease}.classes__search-option{padding:8px 12px;cursor:pointer;transition:background .12s;border-bottom:1px solid rgba(0,0,0,.04)}.classes__search-option:last-child{border-bottom:none}.classes__search-option:hover{background:#667eea0f}.classes__search-option-name{font-size:.85rem;font-weight:500;color:var(--text-primary, #1e293b)}.classes__search-option-email{font-size:.72rem;color:var(--text-muted, #94a3b8)}.classes__search-empty{padding:12px;text-align:center;font-size:.8rem;color:var(--text-muted, #94a3b8)}.classes__search-loading{padding:12px;text-align:center;font-size:.8rem;color:var(--text-muted, #94a3b8);display:flex;align-items:center;justify-content:center;gap:8px}.classes__selected-user{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px}.classes__selected-avatar{width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.6rem;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0}.classes__selected-name{font-size:.85rem;font-weight:500;color:var(--text-primary, #1e293b);flex:1}.classes__selected-clear{width:20px;height:20px;padding:0;border:none;border-radius:50%;background:#0000000f;color:var(--text-secondary, #475569);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.65rem;transition:background .15s}.classes__selected-clear:hover{background:#0000001f}.classes__timestamps{padding-top:12px;border-top:1px solid var(--border-color, #e2e8f0);display:flex;flex-direction:column;gap:2px}.classes__timestamp{font-size:.7rem;color:var(--text-muted, #94a3b8)}.classes__drawer-footer{display:flex;align-items:center;gap:12px;padding:16px 24px;border-top:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff)}.classes__submit{padding:10px 28px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.9375rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;justify-content:center;gap:8px;position:relative;overflow:hidden}.classes__submit:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.classes__submit:hover:before{opacity:1}.classes__submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.classes__submit:active{transform:translateY(0)}.classes__submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.classes__cancel{padding:10px 20px;background:transparent;color:var(--text-secondary, #475569);font-size:.9375rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .2s ease}.classes__cancel:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.classes__spinner{animation:classes-spin 1.2s linear infinite}.classes__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}.classes__confirm-overlay{position:fixed;inset:0;background:#0f172a80;z-index:200;display:flex;align-items:center;justify-content:center;animation:classes-fadeIn .15s ease}.classes__confirm-modal{background:var(--card-bg, #ffffff);border-radius:12px;padding:28px;max-width:400px;width:90%;box-shadow:0 20px 60px #0003;animation:classes-slideIn .2s ease}.classes__confirm-title{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 8px}.classes__confirm-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0 0 20px;line-height:1.6}.classes__confirm-actions{display:flex;gap:10px;justify-content:flex-end}.classes__confirm-delete{padding:8px 20px;border:none;border-radius:8px;background:#ef4444;color:#fff;font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s}.classes__confirm-delete:hover{background:#dc2626}.classes__confirm-cancel{padding:8px 20px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer;transition:all .15s}.classes__confirm-cancel:hover{background:var(--bg-input, #f8fafc)}.classes__no-sections{padding:16px;text-align:center;font-size:.82rem;color:var(--text-muted, #9ca3af)}@keyframes classes-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes classes-slideDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes classes-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes classes-slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes classes-spin{to{transform:rotate(360deg)}}@keyframes classes-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.classes__input:focus-visible,.classes__submit:focus-visible,.classes__cancel:focus-visible,.classes__add-btn:focus-visible,.classes__row-btn:focus-visible,.classes__drawer-close:focus-visible{outline:2px solid var(--primary-start, #667eea);outline-offset:2px}.subjects{display:flex;flex-direction:column;height:100%;position:relative}.subjects__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px;gap:16px}.subjects__header-text{flex:1}.subjects__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.subjects__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.subjects__header-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.subjects__search-wrap{position:relative;display:flex;align-items:center}.subjects__search-icon{position:absolute;left:10px;color:var(--text-muted, #9ca3af);pointer-events:none}.subjects__search{width:220px;padding:8px 12px 8px 34px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background-color:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);outline:none;transition:border-color .2s,box-shadow .2s;font-family:inherit}select.subjects__search{padding-right:32px}.subjects__search:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.subjects__search::placeholder{color:var(--text-muted, #9ca3af)}.subjects__add-btn{padding:9px 22px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden}.subjects__add-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.subjects__add-btn:hover:before{opacity:1}.subjects__add-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.subjects__add-btn:active{transform:translateY(0)}.subjects__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000000a,0 1px 2px #00000008}.subjects__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:auto}.subjects__th{position:sticky;top:0;z-index:2;padding:10px 14px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap;-webkit-user-select:none;user-select:none}.subjects__th--actions{text-align:right;width:90px}.subjects__td{padding:9px 14px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.subjects__td--name{font-weight:600}.subjects__td--code{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.78rem;font-variant-numeric:tabular-nums}.subjects__td--actions{text-align:right}.subjects__table-row:nth-child(2n)>.subjects__td{background:var(--row-alt-bg, rgba(0, 0, 0, .015))}.subjects__table-row:hover>.subjects__td{background:var(--row-hover-bg, rgba(102, 126, 234, .03))}.subjects__table-row:last-child>.subjects__td{border-bottom:none}.subjects__badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:100px;font-size:.72rem;font-weight:600;letter-spacing:.02em;white-space:nowrap}.subjects__badge--core{background:#3b82f61a;color:#2563eb}.subjects__badge--elective{background:#6b72801a;color:#4b5563}.subjects__badge--active{background:#22c55e1a;color:#15803d}.subjects__badge--inactive{background:#ef444414;color:#dc2626}.subjects__row-btn{padding:4px 10px;background:transparent;color:var(--text-secondary, #475569);font-size:.78rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;cursor:pointer;font-family:inherit;transition:all .2s ease;display:inline-flex;align-items:center;gap:4px}.subjects__row-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.subjects__row-btn--delete{color:#ef4444;border-color:#ef44444d}.subjects__row-btn--delete:hover{background:#ef44440f;border-color:#ef444480}.subjects__muted{color:var(--text-muted, #9ca3af);font-style:italic;font-size:.8rem}.subjects__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:var(--radius-sm, 8px);color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:16px;animation:subj-toast-in .3s ease-out;width:fit-content;max-width:100%}.subjects__toast--error{background:#ef444414;border:1px solid rgba(239,68,68,.25);color:#dc2626}.subjects__toast--exit{animation:subj-toast-out .28s ease-in forwards}.subjects__toast svg{flex-shrink:0}.subjects__toast-msg{flex:1;min-width:0}.subjects__toast-close{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;background:none;border:none;border-radius:4px;cursor:pointer;color:inherit;opacity:.5;transition:opacity .15s;line-height:1}.subjects__toast-close:hover{opacity:1}.subjects__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.subjects__toast-dismiss:hover{opacity:1}.subjects__empty{padding:60px 24px;text-align:center}.subjects__empty-icon{color:var(--text-muted, #94a3b8);margin-bottom:12px}.subjects__empty-title{font-size:1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 4px}.subjects__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0}.subjects__loading{padding:60px 0;text-align:center}.subjects__loader{display:inline-flex;gap:6px}.subjects__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:subj-bounce 1.2s infinite ease-in-out}.subjects__loader-dot:nth-child(2){animation-delay:.15s}.subjects__loader-dot:nth-child(3){animation-delay:.3s}.subjects__overlay{position:fixed;inset:0;background:#0f172a59;z-index:90;animation:subj-fadeIn .2s ease}.subjects__drawer{position:fixed;right:0;top:0;bottom:0;width:440px;max-width:90vw;background:var(--bg-base, #f3f4f6);z-index:100;display:flex;flex-direction:column;box-shadow:-8px 0 30px #0000001f;animation:subj-slideInRight .3s ease}.subjects__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff)}.subjects__drawer-title{font-size:1.125rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0;letter-spacing:-.01em}.subjects__drawer-close{width:32px;height:32px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.subjects__drawer-close:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.subjects__drawer-body{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}.subjects__card{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:12px;padding:16px;box-shadow:0 1px 3px #0000000a}.subjects__card-title{font-size:.8rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border-color, #e2e8f0)}.subjects__field{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.subjects__field:last-child{margin-bottom:0}.subjects__label{font-size:.75rem;font-weight:700;color:var(--text-secondary, #475569)}.subjects__label--required:after{content:" *";color:var(--error, #ef4444)}.subjects__input{width:100%;padding:8px 12px;background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;color:var(--text-primary, #1e293b);font-size:.875rem;font-family:inherit;outline:none;transition:all .2s ease;box-sizing:border-box}.subjects__input::placeholder{color:var(--text-placeholder, #94a3b8)}.subjects__input:focus{background:var(--bg-input-focus, #ffffff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.subjects__input--error{border-color:var(--error, #ef4444)!important}.subjects__form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.subjects__error{font-size:.72rem;color:var(--error, #ef4444);margin:0;animation:subj-slideIn .2s ease}.subjects__toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.subjects__toggle-row:last-child{margin-bottom:0}.subjects__toggle-info{display:flex;flex-direction:column;gap:2px}.subjects__toggle-label{font-size:.875rem;font-weight:500;color:var(--text-primary, #1e293b)}.subjects__toggle-desc{font-size:.75rem;color:var(--text-muted, #94a3b8)}.subjects__toggle{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0;cursor:pointer}.subjects__toggle input{opacity:0;width:100%;height:100%;position:absolute;inset:0;margin:0;cursor:pointer;z-index:1}.subjects__toggle-track{position:absolute;inset:0;background:var(--border-color, #d1d5db);border-radius:12px;cursor:pointer;transition:background .25s ease}.subjects__toggle-track:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .25s ease;box-shadow:0 1px 3px #00000026}.subjects__toggle input:checked+.subjects__toggle-track{background:#667eea}.subjects__toggle input:checked+.subjects__toggle-track:after{transform:translate(20px)}.subjects__timestamps{padding-top:12px;border-top:1px solid var(--border-color, #e2e8f0);display:flex;flex-direction:column;gap:2px}.subjects__timestamp{font-size:.7rem;color:var(--text-muted, #94a3b8)}.subjects__drawer-footer{display:flex;align-items:center;gap:12px;padding:16px 24px;border-top:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff)}.subjects__submit{padding:10px 28px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.9375rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;justify-content:center;gap:8px;position:relative;overflow:hidden}.subjects__submit:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.subjects__submit:hover:before{opacity:1}.subjects__submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.subjects__submit:active{transform:translateY(0)}.subjects__submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.subjects__cancel{padding:10px 20px;background:transparent;color:var(--text-secondary, #475569);font-size:.9375rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .2s ease}.subjects__cancel:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.subjects__spinner{animation:subj-spin 1.2s linear infinite}.subjects__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}.subjects__confirm-overlay{position:fixed;inset:0;background:#0f172a80;z-index:200;display:flex;align-items:center;justify-content:center;animation:subj-fadeIn .15s ease}.subjects__confirm-modal{background:var(--card-bg, #ffffff);border-radius:12px;padding:28px;max-width:400px;width:90%;box-shadow:0 20px 60px #0003;animation:subj-slideIn .2s ease}.subjects__confirm-title{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 8px}.subjects__confirm-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0 0 20px;line-height:1.6}.subjects__confirm-actions{display:flex;gap:10px;justify-content:flex-end}.subjects__confirm-delete{padding:8px 20px;border:none;border-radius:8px;background:#ef4444;color:#fff;font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s}.subjects__confirm-delete:hover{background:#dc2626}.subjects__confirm-cancel{padding:8px 20px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer;transition:all .15s}.subjects__confirm-cancel:hover{background:var(--bg-input, #f8fafc)}@keyframes subj-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes subj-toast-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes subj-toast-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}@keyframes subj-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes subj-slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes subj-spin{to{transform:rotate(360deg)}}@keyframes subj-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.subjects__toggle-cell{display:inline-flex;align-items:center;min-width:44px;height:24px}.subjects__spinner--inline{color:#667eea}.subjects__pagination{display:flex;align-items:center;justify-content:space-between;padding:14px 0 0;gap:12px;flex-wrap:wrap}.subjects__pagination-left{display:flex;align-items:center;gap:16px}.subjects__page-size-label{font-size:.78rem;color:var(--text-secondary, #6b7280);display:flex;align-items:center;gap:6px}.subjects__page-size{padding:4px 24px 4px 8px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:6px;background-color:var(--card-bg, #ffffff);font-size:.78rem;color:var(--text-primary, #1e1b4b);cursor:pointer;outline:none;font-family:inherit}.subjects__page-info{font-size:.76rem;color:var(--text-muted, #9ca3af);font-variant-numeric:tabular-nums}.subjects__pagination-right{display:flex;align-items:center;gap:4px}.subjects__page-btn{min-width:30px;height:30px;padding:0 6px;border:1px solid #E5E7EB;border-radius:6px;background:var(--card-bg, #ffffff);color:var(--text-secondary, #6b7280);font-size:.78rem;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s;font-family:inherit}.subjects__page-btn:hover:not(:disabled){background:var(--row-hover-bg, rgba(102, 126, 234, .06));color:#667eea;border-color:#667eea33}.subjects__page-btn--active{background:#667eea!important;color:#fff!important;border-color:#667eea!important}.subjects__page-btn:disabled{opacity:.35;cursor:not-allowed}.subjects__input:focus-visible,.subjects__submit:focus-visible,.subjects__cancel:focus-visible,.subjects__add-btn:focus-visible,.subjects__row-btn:focus-visible,.subjects__drawer-close:focus-visible,.subjects__page-btn:focus-visible{outline:2px solid var(--primary-start, #667eea);outline-offset:2px}.alloc__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px;gap:16px}.alloc__add-btn{padding:9px 22px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden}.alloc__add-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.alloc__add-btn:active{transform:translateY(0)}.alloc__context{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:10px;margin-bottom:16px;box-shadow:0 1px 3px #0000000a}.alloc__context-label{font-size:.75rem;font-weight:700;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.alloc__context-select{padding:7px 32px 7px 12px;background-color:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.85rem;color:var(--text-primary, #1e293b);font-family:inherit;outline:none;min-width:140px;cursor:pointer;transition:border-color .2s}.alloc__context-select:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.alloc__context-divider{width:1px;height:28px;background:var(--border-color, #e2e8f0);flex-shrink:0}.alloc__context-info{flex:1;font-size:.8rem;color:var(--text-muted, #9ca3af);text-align:right}.alloc__search-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.82rem;font-weight:600;font-family:inherit;border:none;border-radius:6px;cursor:pointer;white-space:nowrap;transition:all .2s ease;box-shadow:0 2px 8px #667eea40;flex-shrink:0}.alloc__search-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 14px #667eea59}.alloc__search-btn:active:not(:disabled){transform:translateY(0)}.alloc__search-btn:disabled{opacity:.45;cursor:not-allowed}.alloc__placeholder{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text-muted, #94a3b8);padding:60px 0}.alloc__placeholder-icon{opacity:.5}.alloc__placeholder-title{font-size:1rem;font-weight:600;color:var(--text-secondary, #6b7280);margin:0}.alloc__placeholder-text{font-size:.875rem;color:var(--text-muted, #9ca3af);margin:0}.alloc__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000000a,0 1px 2px #00000008}.alloc__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:auto}.alloc__th{position:sticky;top:0;z-index:2;padding:10px 14px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap}.alloc__th--actions{text-align:right;width:80px}.alloc__td{padding:6px 14px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.alloc__td--name{font-weight:600}.alloc__td--code{font-family:SF Mono,Fira Code,monospace;font-size:.78rem;color:var(--text-secondary, #6b7280)}.alloc__td--actions{text-align:right}.alloc__table-row:nth-child(2n)>.alloc__td{background:var(--row-alt-bg, rgba(0, 0, 0, .015))}.alloc__table-row:hover>.alloc__td{background:var(--row-hover-bg, rgba(102, 126, 234, .03))}.alloc__table-row:last-child>.alloc__td{border-bottom:none}.alloc__table-row--inactive{opacity:.45;pointer-events:none}.alloc__table-row--inactive>.alloc__td{background:#00000005!important}.alloc__badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:100px;font-size:.72rem;font-weight:600;letter-spacing:.02em;white-space:nowrap}.alloc__badge--mandatory{background:#3b82f61a;color:#2563eb}.alloc__badge--optional{background:#6b72801a;color:#4b5563}.alloc__teacher-cell{position:relative;min-width:200px}.alloc__teacher-display{display:flex;align-items:center;gap:6px;cursor:pointer;padding:4px 6px;border-radius:6px;transition:background .12s}.alloc__teacher-display:hover{background:#667eea0f}.alloc__teacher-avatar{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.55rem;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0}.alloc__teacher-name{font-size:.82rem;color:var(--text-primary, #1e293b)}.alloc__teacher-unassigned{font-size:.82rem;color:var(--text-muted, #9ca3af);font-style:italic;cursor:pointer;padding:4px 6px;border-radius:6px;transition:background .12s}.alloc__teacher-unassigned:hover{background:#667eea0f}.alloc__teacher-input{width:100%;padding:6px 10px;background:var(--card-bg, #fff);border:2px solid rgba(102,126,234,.5);border-radius:6px;font-size:.82rem;color:var(--text-primary, #1e293b);font-family:inherit;outline:none;box-shadow:0 0 0 3px #667eea1a}.alloc__teacher-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--card-bg, #ffffff);border:1px solid var(--border-color, #e2e8f0);border-radius:8px;margin-top:4px;max-height:180px;overflow-y:auto;z-index:20;box-shadow:0 4px 16px #0000001f;animation:alloc-slideIn .15s ease}.alloc__teacher-option{padding:8px 12px;cursor:pointer;transition:background .12s;border-bottom:1px solid rgba(0,0,0,.04)}.alloc__teacher-option:last-child{border-bottom:none}.alloc__teacher-option:hover{background:#667eea0f}.alloc__teacher-option-name{font-size:.82rem;font-weight:500;color:var(--text-primary, #1e293b)}.alloc__teacher-option-email{font-size:.68rem;color:var(--text-muted, #94a3b8)}.alloc__teacher-empty{padding:12px;text-align:center;font-size:.78rem;color:var(--text-muted, #9ca3af)}.alloc__teacher-loading{padding:12px;text-align:center;font-size:.78rem;color:var(--text-muted, #9ca3af);display:flex;align-items:center;justify-content:center;gap:6px}.alloc__row-btn{padding:4px 10px;background:transparent;color:var(--text-secondary, #475569);font-size:.78rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;cursor:pointer;font-family:inherit;transition:all .2s ease;display:inline-flex;align-items:center;gap:4px}.alloc__row-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.alloc__row-btn--delete{color:#ef4444;border-color:#ef44444d}.alloc__row-btn--delete:hover{background:#ef44440f;border-color:#ef444480}.alloc__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:var(--radius-sm, 8px);color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:16px;animation:alloc-slideIn .3s ease;width:fit-content;max-width:100%}.alloc__loading{padding:60px 0;text-align:center}.alloc__loader{display:inline-flex;gap:6px}.alloc__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:alloc-bounce 1.2s infinite ease-in-out}.alloc__loader-dot:nth-child(2){animation-delay:.15s}.alloc__loader-dot:nth-child(3){animation-delay:.3s}.alloc__empty{padding:40px 24px;text-align:center}.alloc__empty-title{font-size:1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 4px}.alloc__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0}.alloc__spinner{animation:alloc-spin 1.2s linear infinite}.alloc__confirm-overlay{position:fixed;inset:0;background:#0f172a80;z-index:200;display:flex;align-items:center;justify-content:center;animation:alloc-fadeIn .15s ease}.alloc__confirm-modal{background:var(--card-bg, #ffffff);border-radius:12px;padding:28px;max-width:400px;width:90%;box-shadow:0 20px 60px #0003;animation:alloc-slideIn .2s ease}.alloc__confirm-title{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 8px}.alloc__confirm-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0 0 20px;line-height:1.6}.alloc__confirm-actions{display:flex;gap:10px;justify-content:flex-end}.alloc__confirm-delete{padding:8px 20px;border:none;border-radius:8px;background:#ef4444;color:#fff;font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s}.alloc__confirm-delete:hover{background:#dc2626}.alloc__confirm-cancel{padding:8px 20px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer}.alloc__add-modal{max-width:440px}.alloc__add-field{margin-bottom:16px}.alloc__add-label{display:block;font-size:.72rem;font-weight:700;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.03em;margin-bottom:6px}.alloc__add-select{width:100%;padding:9px 32px 9px 12px;background-color:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.875rem;color:var(--text-primary, #1e293b);font-family:inherit;outline:none;cursor:pointer;transition:border-color .2s}.alloc__add-select:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.alloc__add-toggle-group{display:flex;gap:8px}.alloc__add-toggle{flex:1;padding:8px 14px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:transparent;font-size:.82rem;font-weight:600;font-family:inherit;cursor:pointer;color:var(--text-secondary, #475569);transition:all .15s}.alloc__add-toggle:hover{border-color:#667eea66;background:#667eea08}.alloc__add-toggle--active.alloc__add-toggle--optional{background:#6b72801a;border-color:#6b728066;color:#4b5563}.alloc__add-toggle--active.alloc__add-toggle--mandatory{background:#3b82f61a;border-color:#3b82f666;color:#2563eb}.alloc__confirm-add{padding:8px 20px;border:none;border-radius:8px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .15s;box-shadow:0 2px 8px #667eea40}.alloc__confirm-add:hover{box-shadow:0 4px 14px #667eea59;transform:translateY(-1px)}@keyframes alloc-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes alloc-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes alloc-spin{to{transform:rotate(360deg)}}@keyframes alloc-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.alloc__inline-select{min-width:140px;padding:5px 8px;font-size:.8rem}.alloc__inline-select:disabled{opacity:.4;cursor:not-allowed;background-color:var(--bg-input, #f8fafc)}.alloc__inline-input{width:64px;padding:5px 8px;background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.8rem;color:var(--text-primary, #1e293b);font-family:inherit;outline:none;text-align:center;transition:border-color .2s}.alloc__inline-input:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.alloc__inline-input:disabled{opacity:.4;cursor:not-allowed}.alloc__context-select:focus-visible,.alloc__inline-select:focus-visible,.alloc__inline-input:focus-visible{outline:2px solid var(--primary-start, #667eea);outline-offset:2px}.tt{display:flex;flex-direction:column;height:100%;position:relative}.tt__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px;gap:16px}.tt__header-text{flex:1}.tt__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.tt__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.tt__header-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.tt__save-btn{padding:9px 24px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden}.tt__save-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s}.tt__save-btn:hover:before{opacity:1}.tt__save-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.tt__save-btn:active{transform:translateY(0)}.tt__save-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.tt__unsaved-badge{padding:2px 8px;border-radius:100px;font-size:.7rem;font-weight:600;background:#f59e0b1f;color:#d97706;letter-spacing:.02em}.tt__context{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:10px;margin-bottom:14px;box-shadow:0 1px 3px #0000000a}.tt__context-label{font-size:.75rem;font-weight:700;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.tt__context-select{padding:7px 32px 7px 12px;background-color:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.85rem;color:var(--text-primary, #1e293b);font-family:inherit;outline:none;min-width:130px;cursor:pointer;transition:border-color .2s}.tt__context-select:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.tt__context-divider{width:1px;height:28px;background:var(--border-color, #e2e8f0);flex-shrink:0}.tt__placeholder{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text-muted, #94a3b8);padding:60px 0}.tt__placeholder-icon{opacity:.5}.tt__placeholder-title{font-size:1rem;font-weight:600;color:var(--text-secondary, #6b7280);margin:0}.tt__placeholder-text{font-size:.875rem;color:var(--text-muted, #9ca3af);margin:0}.tt__loading{flex:1;display:flex;align-items:center;justify-content:center;padding:60px 0}.tt__loader{display:inline-flex;gap:6px}.tt__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:tt-bounce 1.2s infinite ease-in-out}.tt__loader-dot:nth-child(2){animation-delay:.15s}.tt__loader-dot:nth-child(3){animation-delay:.3s}.tt__matrix-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:10px;background:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000000a}.tt__matrix{display:grid;min-width:max-content}.tt__day-header{display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700;color:var(--text-secondary, #475569);padding:8px 14px;background:var(--table-header-bg, #f8f8fb);border-bottom:1px solid #E5E7EB;border-right:1px solid #E5E7EB;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;min-width:90px}.tt__period-header{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 6px;background:var(--table-header-bg, #f8f8fb);border-bottom:1px solid #E5E7EB;border-right:1px solid #E5E7EB;min-width:130px}.tt__period-number{font-size:.78rem;font-weight:700;color:var(--text-primary, #1e293b)}.tt__period-time{font-size:.66rem;color:var(--text-muted, #94a3b8);font-variant-numeric:tabular-nums;font-family:SF Mono,Fira Code,monospace;letter-spacing:.02em;margin-top:1px}.tt__corner{display:flex;align-items:center;justify-content:center;background:var(--table-header-bg, #f8f8fb);border-bottom:1px solid #E5E7EB;border-right:1px solid #E5E7EB;min-width:90px;font-size:.7rem;font-weight:600;color:var(--text-muted, #94a3b8);text-transform:uppercase;letter-spacing:.05em}.tt__slot{position:relative;border-right:1px solid #E5E7EB;border-bottom:1px solid #E5E7EB;min-height:72px;min-width:130px;cursor:pointer;transition:background .12s,box-shadow .12s;display:flex;flex-direction:column;padding:0}.tt__slot:hover{background:#667eea08}.tt__slot--empty{border:2px dashed rgba(0,0,0,.08);border-right:2px dashed rgba(0,0,0,.08);display:flex;align-items:center;justify-content:center;background:#00000003}.tt__slot--empty:hover{border-color:#667eea4d;background:#667eea08}.tt__slot-add{opacity:0;transition:opacity .15s;color:var(--text-muted, #94a3b8)}.tt__slot--empty:hover .tt__slot-add{opacity:1}.tt__slot--filled{padding:6px 8px;background:#fff}.tt__slot--filled:hover{box-shadow:0 2px 8px #00000014}.tt__slot-subject{font-size:.78rem;font-weight:700;color:var(--text-primary, #1e293b);line-height:1.3;margin-bottom:2px}.tt__slot-teacher{font-size:.68rem;color:var(--text-muted, #94a3b8);line-height:1.3;margin-bottom:3px}.tt__slot-room{display:inline-flex;padding:1px 6px;border-radius:4px;font-size:.62rem;font-weight:600;background:#667eea0f;color:#667eea;letter-spacing:.02em;align-self:flex-start}.tt__slot--conflict{border:2px solid #ef4444!important;background:#ef444408!important}.tt__slot-conflict-icon{position:absolute;top:4px;right:4px;color:#ef4444}.tt__tooltip{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:#1e293b;color:#fff;font-size:.7rem;padding:6px 10px;border-radius:6px;white-space:nowrap;z-index:50;box-shadow:0 4px 12px #00000040;animation:tt-fadeIn .15s ease;pointer-events:none}.tt__tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#1e293b}.tt__overlay{position:fixed;inset:0;background:#0f172a59;z-index:90;animation:tt-fadeIn .2s ease;cursor:default;display:flex;justify-content:flex-end}.tt__drawer{position:relative;width:420px;max-width:90vw;height:100%;background:var(--bg-base, #f3f4f6);display:flex;flex-direction:column;box-shadow:-8px 0 30px #0000001f;animation:tt-slideInRight .3s ease}.tt__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff)}.tt__drawer-title{font-size:1.125rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0;letter-spacing:-.01em}.tt__drawer-close{width:32px;height:32px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.tt__drawer-close:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.tt__drawer-body{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}.tt__card{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:12px;padding:16px;box-shadow:0 1px 3px #0000000a}.tt__card-title{font-size:.8rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border-color, #e2e8f0)}.tt__info-row{display:flex;gap:12px;margin-bottom:12px}.tt__info-item{flex:1;display:flex;flex-direction:column;gap:2px}.tt__info-label{font-size:.7rem;font-weight:700;color:var(--text-muted, #94a3b8);text-transform:uppercase;letter-spacing:.04em}.tt__info-value{font-size:.9rem;font-weight:600;color:var(--text-primary, #1e293b)}.tt__field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.tt__field:last-child{margin-bottom:0}.tt__label{font-size:.75rem;font-weight:700;color:var(--text-secondary, #475569)}.tt__input,.tt__select{width:100%;padding:8px 12px;background-color:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;color:var(--text-primary, #1e293b);font-size:.875rem;font-family:inherit;outline:none;transition:all .2s ease;box-sizing:border-box}.tt__select{padding-right:32px}.tt__input::placeholder{color:var(--text-placeholder, #94a3b8)}.tt__input:focus,.tt__select:focus{background-color:var(--bg-input-focus, #fff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.tt__form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.tt__drawer-footer{display:flex;align-items:center;gap:12px;padding:16px 24px;border-top:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff)}.tt__submit{position:relative;padding:10px 28px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.9375rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:8px;overflow:hidden}.tt__submit:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s}.tt__submit:hover:before{opacity:1}.tt__submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.tt__clear-btn{padding:10px 20px;background:transparent;color:#ef4444;font-size:.875rem;font-weight:500;border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .2s ease}.tt__clear-btn:hover{background:#ef44440f;border-color:#ef444480}.tt__cancel{padding:10px 20px;background:transparent;color:var(--text-secondary, #475569);font-size:.9375rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .2s ease;margin-left:auto}.tt__cancel:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.tt__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:var(--radius-sm, 8px);color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:14px;animation:tt-slideIn .3s ease;width:fit-content;max-width:100%}.tt__toast--error{background:#ef444414;border-color:#ef444440;color:#ef4444}.tt__toast svg{flex-shrink:0}.tt__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.tt__toast-dismiss:hover{opacity:1}@keyframes tt-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes tt-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes tt-slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes tt-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.tt__save-btn:focus-visible,.tt__context-select:focus-visible,.tt__slot:focus-visible,.tt__submit:focus-visible,.tt__cancel:focus-visible,.tt__drawer-close:focus-visible{outline:2px solid var(--primary-start, #667eea);outline-offset:2px}.staff{display:flex;flex-direction:column;height:100%;position:relative}.staff__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px;gap:16px}.staff__header-text{flex:1}.staff__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.staff__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.staff__header-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.staff__search-wrap{position:relative;display:flex;align-items:center}.staff__search-icon{position:absolute;left:10px;color:var(--text-muted, #9ca3af);pointer-events:none}.staff__search{width:200px;padding:8px 12px 8px 34px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);outline:none;transition:border-color .2s,box-shadow .2s;font-family:inherit}.staff__search:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.staff__search::placeholder{color:var(--text-muted, #9ca3af)}.staff__add-btn{padding:9px 22px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden}.staff__add-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s}.staff__add-btn:hover:before{opacity:1}.staff__add-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.staff__add-btn:active{transform:translateY(0)}.staff__filters{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:10px;margin-bottom:14px;box-shadow:0 1px 3px #0000000a;flex-wrap:wrap}.staff__filter-label{font-size:.75rem;font-weight:700;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.staff__filter-select{padding:6px 32px 6px 12px;background-color:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.82rem;color:var(--text-primary, #1e293b);font-family:inherit;outline:none;min-width:140px;cursor:pointer;transition:border-color .2s}.staff__filter-select:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.staff__filter-divider{width:1px;height:28px;background:var(--border-color, #e2e8f0);flex-shrink:0}.staff__filter-toggle{display:flex;align-items:center;gap:8px}.staff__filter-toggle-label{font-size:.82rem;font-weight:500;color:var(--text-primary, #1e293b);white-space:nowrap}.staff__mini-toggle{position:relative;width:36px;height:20px;flex-shrink:0}.staff__mini-toggle input{opacity:0;width:0;height:0;position:absolute}.staff__mini-toggle-track{position:absolute;inset:0;background:var(--border-color, #d1d5db);border-radius:10px;cursor:pointer;transition:background .25s ease}.staff__mini-toggle-track:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .25s ease;box-shadow:0 1px 3px #00000026}.staff__mini-toggle input:checked+.staff__mini-toggle-track{background:#667eea}.staff__mini-toggle input:checked+.staff__mini-toggle-track:after{transform:translate(16px)}.staff__filter-count{flex:1;text-align:right;font-size:.78rem;color:var(--text-muted, #9ca3af)}.staff__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000000a,0 1px 2px #00000008}.staff__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:auto}.staff__th{position:sticky;top:0;z-index:2;padding:8px 14px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap}.staff__th--actions{text-align:right;width:90px}.staff__td{padding:6px 14px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.4}.staff__table-row:nth-child(2n)>.staff__td{background:var(--row-alt-bg, rgba(0, 0, 0, .015))}.staff__table-row:hover>.staff__td{background:var(--row-hover-bg, rgba(102, 126, 234, .03))}.staff__table-row:last-child>.staff__td{border-bottom:none}.staff__name-cell{display:flex;align-items:center;gap:10px}.staff__avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.65rem;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0}.staff__name-text{display:flex;flex-direction:column;gap:1px}.staff__name-primary{font-weight:600;color:var(--text-primary, #1e293b)}.staff__name-email{font-size:.7rem;color:var(--text-muted, #94a3b8)}.staff__td--empid{font-family:SF Mono,Fira Code,monospace;font-size:.78rem;font-variant-numeric:tabular-nums}.staff__td--actions{text-align:right}.staff__badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:100px;font-size:.72rem;font-weight:600;letter-spacing:.02em;white-space:nowrap}.staff__badge--teaching{background:#3b82f61a;color:#2563eb}.staff__badge--admin{background:#6b72801a;color:#4b5563}.staff__badge--active{background:#22c55e1a;color:#15803d}.staff__badge--inactive{background:#ef444414;color:#dc2626}.staff__row-btn{padding:4px 10px;background:transparent;color:var(--text-secondary, #475569);font-size:.78rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;cursor:pointer;font-family:inherit;transition:all .2s ease;display:inline-flex;align-items:center;gap:4px}.staff__row-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.staff__row-btn--delete{color:#ef4444;border-color:#ef44444d}.staff__row-btn--delete:hover{background:#ef44440f;border-color:#ef444480}.staff__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:var(--radius-sm, 8px);color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:14px;animation:staff-slideIn .3s ease;width:fit-content;max-width:100%}.staff__toast svg{flex-shrink:0}.staff__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.staff__toast-dismiss:hover{opacity:1}.staff__empty{padding:60px 24px;text-align:center}.staff__empty-icon{color:var(--text-muted, #94a3b8);margin-bottom:12px}.staff__empty-title{font-size:1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 4px}.staff__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0}.staff__loading{padding:60px 0;text-align:center}.staff__loader{display:inline-flex;gap:6px}.staff__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:staff-bounce 1.2s infinite ease-in-out}.staff__loader-dot:nth-child(2){animation-delay:.15s}.staff__loader-dot:nth-child(3){animation-delay:.3s}.staff__overlay{position:fixed;inset:0;background:#0f172a59;z-index:90;animation:staff-fadeIn .2s ease}.staff__drawer{position:fixed;right:0;top:0;bottom:0;width:620px;max-width:94vw;background:var(--bg-base, #f3f4f6);z-index:100;display:flex;flex-direction:column;box-shadow:-8px 0 30px #0000001f;animation:staff-slideInRight .3s ease}.staff__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff)}.staff__drawer-title{font-size:1.125rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0;letter-spacing:-.01em}.staff__drawer-close{width:32px;height:32px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.staff__drawer-close:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.staff__drawer-body{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}.staff__card{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:12px;padding:16px;box-shadow:0 1px 3px #0000000a}.staff__card-title{font-size:.8rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border-color, #e2e8f0)}.staff__field{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.staff__field:last-child{margin-bottom:0}.staff__label{font-size:.75rem;font-weight:700;color:var(--text-secondary, #475569)}.staff__label--required:after{content:" *";color:var(--error, #ef4444)}.staff__input,.staff__select{width:100%;padding:8px 12px;background-color:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;color:var(--text-primary, #1e293b);font-size:.875rem;font-family:inherit;outline:none;transition:all .2s ease;box-sizing:border-box}.staff__select{padding-right:32px}.staff__input::placeholder{color:var(--text-placeholder, #94a3b8)}.staff__input:focus,.staff__select:focus{background-color:var(--bg-input-focus, #fff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.staff__input--error{border-color:var(--error, #ef4444)!important}.staff__form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.staff__error{font-size:.72rem;color:var(--error, #ef4444);margin:0;animation:staff-slideIn .2s ease}.staff__file-hidden{display:none}.staff__photo-area{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:4px}.staff__photo-picker{width:80px;height:80px;border-radius:50%;border:2px dashed var(--border-color, rgba(0, 0, 0, .15));background:var(--bg-base, rgba(0, 0, 0, .02));display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;transition:all .2s;overflow:hidden;padding:0;color:var(--text-muted, #9ca3af)}.staff__photo-picker:hover{border-color:var(--primary-start, #667eea);background:#667eea0a;color:var(--primary-start, #667eea)}.staff__photo-preview{width:100%;height:100%;object-fit:cover;border-radius:50%}.staff__photo-text{font-size:.62rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.staff__photo-info{display:flex;align-items:center;gap:6px}.staff__photo-name{font-size:.72rem;color:var(--text-secondary, #6b7280);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.staff__photo-hint{font-size:.68rem;color:var(--text-muted, #9ca3af)}.staff__photo-remove{width:22px;height:22px;padding:0;border:none;border-radius:50%;background:#ef444414;color:#ef4444;font-size:.9rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.staff__photo-remove:hover{background:#ef44442e}.staff__toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.staff__toggle-row:last-child{margin-bottom:0}.staff__toggle-info{display:flex;flex-direction:column;gap:2px}.staff__toggle-label{font-size:.875rem;font-weight:500;color:var(--text-primary, #1e293b)}.staff__toggle-desc{font-size:.75rem;color:var(--text-muted, #94a3b8)}.staff__toggle{position:relative;width:44px;height:24px;flex-shrink:0}.staff__toggle input{opacity:0;width:0;height:0;position:absolute}.staff__toggle-track{position:absolute;inset:0;background:var(--border-color, #d1d5db);border-radius:12px;cursor:pointer;transition:background .25s ease}.staff__toggle-track:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .25s ease;box-shadow:0 1px 3px #00000026}.staff__toggle input:checked+.staff__toggle-track{background:#667eea}.staff__toggle input:checked+.staff__toggle-track:after{transform:translate(20px)}.staff__conditional{animation:staff-slideIn .25s ease;margin-top:8px}.staff__timestamps{padding-top:12px;border-top:1px solid var(--border-color, #e2e8f0);display:flex;flex-direction:column;gap:2px}.staff__timestamp{font-size:.7rem;color:var(--text-muted, #94a3b8)}.staff__drawer-footer{display:flex;align-items:center;gap:12px;padding:16px 24px;border-top:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff)}.staff__submit{padding:10px 28px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.9375rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:8px;position:relative;overflow:hidden}.staff__submit:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s}.staff__submit:hover:before{opacity:1}.staff__submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.staff__submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.staff__cancel{padding:10px 20px;background:transparent;color:var(--text-secondary, #475569);font-size:.9375rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .2s ease}.staff__cancel:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.staff__spinner{animation:staff-spin 1.2s linear infinite}.staff__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}.staff__confirm-overlay{position:fixed;inset:0;background:#0f172a80;z-index:200;display:flex;align-items:center;justify-content:center;animation:staff-fadeIn .15s ease}.staff__confirm-modal{background:var(--card-bg, #ffffff);border-radius:12px;padding:28px;max-width:400px;width:90%;box-shadow:0 20px 60px #0003;animation:staff-slideIn .2s ease}.staff__confirm-title{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 8px}.staff__confirm-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0 0 20px;line-height:1.6}.staff__confirm-actions{display:flex;gap:10px;justify-content:flex-end}.staff__confirm-delete{padding:8px 20px;border:none;border-radius:8px;background:#ef4444;color:#fff;font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s}.staff__confirm-delete:hover{background:#dc2626}.staff__confirm-cancel{padding:8px 20px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer}@keyframes staff-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes staff-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes staff-slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes staff-spin{to{transform:rotate(360deg)}}@keyframes staff-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.staff__search:focus-visible,.staff__add-btn:focus-visible,.staff__row-btn:focus-visible,.staff__drawer-close:focus-visible,.staff__submit:focus-visible,.staff__cancel:focus-visible,.staff__input:focus-visible,.staff__select:focus-visible,.staff__filter-select:focus-visible{outline:2px solid var(--primary-start, #667eea);outline-offset:2px}.staff__pagination{display:flex;align-items:center;justify-content:center;gap:16px;padding:16px 0 4px}.staff__page-btn{display:flex;align-items:center;gap:4px;padding:6px 14px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:var(--bg-card, #fff);color:var(--text-secondary, #475569);font-size:.8125rem;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s,border-color .15s}.staff__page-btn:hover:not(:disabled){background:var(--bg-hover, #f1f5f9);border-color:var(--primary-start, #667eea);color:var(--primary-start, #667eea)}.staff__page-btn:disabled{opacity:.4;cursor:not-allowed}.staff__page-info{font-size:.8125rem;color:var(--text-secondary, #475569);min-width:100px;text-align:center}.exams{display:flex;flex-direction:column;height:100%;position:relative}.exams__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px;gap:16px}.exams__header-text{flex:1}.exams__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.exams__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.exams__header-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.exams__search-wrap{position:relative;display:flex;align-items:center}.exams__search-icon{position:absolute;left:10px;color:var(--text-muted, #9ca3af);pointer-events:none}.exams__search{width:220px;padding:8px 12px 8px 34px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);outline:none;transition:border-color .2s,box-shadow .2s;font-family:inherit}.exams__search:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.exams__search::placeholder{color:var(--text-muted, #9ca3af)}.exams__add-btn{padding:9px 22px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden}.exams__add-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.exams__add-btn:hover:before{opacity:1}.exams__add-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.exams__add-btn:active{transform:translateY(0)}.exams__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000000a,0 1px 2px #00000008}.exams__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:auto}.exams__th{position:sticky;top:0;z-index:2;padding:10px 14px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap;-webkit-user-select:none;user-select:none}.exams__th--expand{width:36px;padding-right:0}.exams__th--actions{text-align:right;width:90px}.exams__td{padding:9px 14px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.exams__td--expand{padding-right:0;width:36px}.exams__td--name{font-weight:600}.exams__td-meta{display:block;font-size:.72rem;font-weight:400;color:var(--text-muted, #94a3b8);margin-top:1px}.exams__td--date{font-variant-numeric:tabular-nums;font-size:.8rem;color:var(--text-secondary, #475569);white-space:nowrap}.exams__td--actions{text-align:right}.exams__table-row:nth-child(2n)>.exams__td{background:var(--row-alt-bg, rgba(0, 0, 0, .015))}.exams__table-row:hover>.exams__td{background:var(--row-hover-bg, rgba(102, 126, 234, .03))}.exams__table-row:last-child>.exams__td{border-bottom:none}.exams__table-row--expanded>.exams__td{background:#667eea0a;border-bottom-color:#667eea1f}.exams__chevron{transition:transform .2s ease;color:var(--text-muted, #94a3b8);display:block}.exams__chevron--open{transform:rotate(90deg);color:#667eea}.exams__schedule-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:22px;padding:0 6px;border-radius:100px;background:#667eea14;color:#667eea;font-size:.72rem;font-weight:700}.exams__badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:100px;font-size:.72rem;font-weight:600;letter-spacing:.02em;white-space:nowrap}.exams__badge--periodic{background:#3b82f61a;color:#2563eb}.exams__badge--midterm{background:#eab3081f;color:#a16207}.exams__badge--final{background:#9333ea1a;color:#7c3aed}.exams__badge--supplementary{background:#f973161a;color:#c2410c}.exams__badge--active{background:#22c55e1a;color:#15803d}.exams__badge--inactive{background:#6b72801a;color:#4b5563}.exams__row-btn{padding:4px 10px;background:transparent;color:var(--text-secondary, #475569);font-size:.78rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;cursor:pointer;font-family:inherit;transition:all .2s ease;display:inline-flex;align-items:center;gap:4px}.exams__row-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.exams__row-btn--delete{color:#ef4444;border-color:#ef44444d}.exams__row-btn--delete:hover{background:#ef44440f;border-color:#ef444480}.exams__expand-row>.exams__expand-cell{padding:0;border-bottom:2px solid rgba(102,126,234,.15);background:var(--bg-base, #f8f9fb)}.exams__schedules-panel{padding:16px 20px 16px 50px;animation:exams-slideIn .2s ease}.exams__schedules-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.exams__schedules-title{font-size:.82rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0;display:flex;align-items:center;gap:8px}.exams__schedules-title svg{color:#667eea}.exams__schedules-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:18px;padding:0 5px;border-radius:100px;background:#667eea1a;color:#667eea;font-size:.68rem;font-weight:700}.exams__add-schedule-btn{padding:6px 14px;background:var(--card-bg, #ffffff);color:#667eea;font-size:.78rem;font-weight:600;border:1px solid rgba(102,126,234,.3);border-radius:6px;cursor:pointer;font-family:inherit;transition:all .2s ease;display:inline-flex;align-items:center;gap:5px}.exams__add-schedule-btn:hover{background:#667eea0f;border-color:#667eea80;box-shadow:0 2px 8px #667eea1f}.exams__schedules-empty{padding:20px;text-align:center;color:var(--text-muted, #94a3b8);font-size:.82rem;background:var(--card-bg, #ffffff);border:1px dashed var(--border-color, #e2e8f0);border-radius:8px}.exams__schedules-empty p{margin:0}.exams__schedules-loading{display:flex;justify-content:center;gap:6px;padding:24px 0}.exams__schedule-table{width:100%;border-collapse:collapse;font-size:.78rem;background:var(--card-bg, #ffffff);border:1px solid var(--border-color, #e2e8f0);border-radius:8px;overflow:hidden}.exams__sch-th{padding:8px 12px;background:var(--table-header-bg, #f1f2f6);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap}.exams__sch-th--actions{width:70px}.exams__sch-td{padding:7px 12px;border-bottom:1px solid #f0f0f2;color:var(--text-primary, #1e1b4b);vertical-align:middle}.exams__sch-td--subject{font-weight:600}.exams__sch-td--date,.exams__sch-td--time{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--text-secondary, #475569)}.exams__sch-td--actions{text-align:right;white-space:nowrap}.exams__schedule-row:last-child>.exams__sch-td{border-bottom:none}.exams__schedule-row:hover>.exams__sch-td{background:#667eea05}.exams__marks{font-weight:600;font-variant-numeric:tabular-nums;font-size:.78rem}.exams__marks--pass{color:#15803d;font-weight:500}.exams__marks-sep{color:var(--text-muted, #94a3b8);margin:0 2px;font-weight:400}.exams__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:var(--radius-sm, 8px);color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:16px;animation:exams-slideIn .3s ease;width:fit-content;max-width:100%}.exams__toast--error{background:#ef44440f;border-color:#ef444440;color:#ef4444}.exams__toast svg{flex-shrink:0}.exams__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.1rem;cursor:pointer;padding:0 4px;opacity:.6;transition:opacity .15s}.exams__toast-dismiss:hover{opacity:1}.exams__empty{padding:60px 24px;text-align:center}.exams__empty-icon{color:var(--text-muted, #94a3b8);margin-bottom:12px}.exams__empty-title{font-size:1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 4px}.exams__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0}.exams__loading{padding:60px 0;text-align:center}.exams__loader{display:inline-flex;gap:6px}.exams__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:exams-bounce 1.2s infinite ease-in-out}.exams__loader-dot:nth-child(2){animation-delay:.15s}.exams__loader-dot:nth-child(3){animation-delay:.3s}.exams__inline-loader{padding:8px 12px;font-size:.78rem;color:var(--text-muted, #94a3b8);text-align:center}.exams__overlay{position:fixed;inset:0;background:#0f172a59;z-index:90;animation:exams-fadeIn .2s ease}.exams__drawer{position:fixed;right:0;top:0;bottom:0;width:460px;max-width:90vw;background:var(--bg-base, #f3f4f6);z-index:100;display:flex;flex-direction:column;box-shadow:-8px 0 30px #0000001f;animation:exams-slideInRight .3s ease}.exams__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff)}.exams__drawer-title{font-size:1.125rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0;letter-spacing:-.01em}.exams__drawer-subtitle{font-size:.78rem;color:var(--text-muted, #94a3b8);margin:2px 0 0;font-weight:500}.exams__drawer-close{width:32px;height:32px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0}.exams__drawer-close:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.exams__drawer-body{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}.exams__card{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:12px;padding:16px;box-shadow:0 1px 3px #0000000a}.exams__card-title{font-size:.8rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border-color, #e2e8f0)}.exams__field{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.exams__field:last-child{margin-bottom:0}.exams__label{font-size:.75rem;font-weight:700;color:var(--text-secondary, #475569)}.exams__label--required:after{content:" *";color:var(--error, #ef4444)}.exams__input{width:100%;padding:8px 12px;background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;color:var(--text-primary, #1e293b);font-size:.875rem;font-family:inherit;outline:none;transition:all .2s ease;box-sizing:border-box}.exams__input::placeholder{color:var(--text-placeholder, #94a3b8)}.exams__input:focus{background:var(--bg-input-focus, #ffffff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.exams__input--error{border-color:var(--error, #ef4444)!important}.exams__input:disabled{opacity:.5;cursor:not-allowed}.exams__select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}.exams__form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.exams__error{font-size:.72rem;color:var(--error, #ef4444);margin:0;animation:exams-slideIn .2s ease}.exams__hint{font-size:.7rem;color:var(--text-muted, #94a3b8);margin:2px 0 0}.exams__toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.exams__toggle-row:last-child{margin-bottom:0}.exams__toggle-info{display:flex;flex-direction:column;gap:2px}.exams__toggle-label{font-size:.875rem;font-weight:500;color:var(--text-primary, #1e293b)}.exams__toggle-desc{font-size:.75rem;color:var(--text-muted, #94a3b8)}.exams__toggle{position:relative;width:44px;height:24px;flex-shrink:0}.exams__toggle input{opacity:0;width:0;height:0;position:absolute}.exams__toggle-track{position:absolute;inset:0;background:var(--border-color, #d1d5db);border-radius:12px;cursor:pointer;transition:background .25s ease}.exams__toggle-track:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .25s ease;box-shadow:0 1px 3px #00000026}.exams__toggle input:checked+.exams__toggle-track{background:#667eea}.exams__toggle input:checked+.exams__toggle-track:after{transform:translate(20px)}.exams__timestamps{padding-top:12px;border-top:1px solid var(--border-color, #e2e8f0);display:flex;flex-direction:column;gap:2px}.exams__timestamp{font-size:.7rem;color:var(--text-muted, #94a3b8)}.exams__drawer-footer{display:flex;align-items:center;gap:12px;padding:16px 24px;border-top:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff)}.exams__submit{padding:10px 28px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.9375rem;font-weight:600;border:none;border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;justify-content:center;gap:8px;position:relative;overflow:hidden}.exams__submit:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.exams__submit:hover:before{opacity:1}.exams__submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.exams__submit:active{transform:translateY(0)}.exams__submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.exams__cancel{padding:10px 20px;background:transparent;color:var(--text-secondary, #475569);font-size:.9375rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:var(--radius-sm, 8px);cursor:pointer;font-family:inherit;transition:all .2s ease}.exams__cancel:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.exams__spinner{animation:exams-spin 1.2s linear infinite}.exams__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}.exams__confirm-overlay{position:fixed;inset:0;background:#0f172a80;z-index:200;display:flex;align-items:center;justify-content:center;animation:exams-fadeIn .15s ease}.exams__confirm-modal{background:var(--card-bg, #ffffff);border-radius:12px;padding:28px;max-width:400px;width:90%;box-shadow:0 20px 60px #0003;animation:exams-slideIn .2s ease}.exams__confirm-title{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 8px}.exams__confirm-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0 0 20px;line-height:1.6}.exams__confirm-actions{display:flex;gap:10px;justify-content:flex-end}.exams__confirm-delete{padding:8px 20px;border:none;border-radius:8px;background:#ef4444;color:#fff;font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s}.exams__confirm-delete:hover{background:#dc2626}.exams__confirm-cancel{padding:8px 20px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer;transition:all .15s}.exams__confirm-cancel:hover{background:var(--bg-input, #f8fafc)}@keyframes exams-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes exams-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes exams-slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes exams-spin{to{transform:rotate(360deg)}}@keyframes exams-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.exams__input:focus-visible,.exams__submit:focus-visible,.exams__cancel:focus-visible,.exams__add-btn:focus-visible,.exams__row-btn:focus-visible,.exams__drawer-close:focus-visible,.exams__add-schedule-btn:focus-visible,.exams__back-btn:focus-visible{outline:2px solid rgba(102,126,234,.5);outline-offset:2px}.exams__back-btn{width:36px;height:36px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:var(--card-bg, #ffffff);color:var(--text-secondary, #475569);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0}.exams__back-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8);color:#667eea}.exams__row-btn--schedule{color:#667eea;border-color:#667eea4d}.exams__row-btn--schedule:hover{background:#667eea0f;border-color:#667eea80}.sch-editor__filters{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:16px;padding:16px;background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:10px;box-shadow:0 1px 3px #0000000a}.sch-editor__filter-group{display:flex;gap:14px}.sch-editor__filter{display:flex;flex-direction:column;gap:4px;min-width:200px}.sch-editor__filter-info{display:flex;align-items:center;gap:10px;flex-shrink:0}.sch-editor__subject-count{font-size:.78rem;font-weight:600;color:var(--text-secondary, #475569)}.sch-editor__dirty-count{font-size:.72rem;font-weight:600;color:#667eea;background:#667eea14;padding:2px 8px;border-radius:100px}.sch-editor__date-range{display:inline-block;margin-left:8px;font-size:.78rem;color:var(--text-muted, #94a3b8);font-weight:400}.sch-editor__quickfill{display:flex;flex-direction:column;gap:8px;padding:10px 14px;background:#667eea0a;border-bottom:1px solid rgba(102,126,234,.1)}.sch-editor__quickfill-label{display:flex;align-items:center;gap:6px;font-size:.72rem;font-weight:600;color:#667eea;text-transform:uppercase;letter-spacing:.04em}.sch-editor__quickfill-fields{display:flex;flex-wrap:wrap;gap:6px}.sch-editor__qf-group{display:flex;align-items:center;gap:3px}.sch-editor__qf-input{padding:5px 8px;border:1px solid var(--border-color, #e2e8f0);border-radius:5px;background-color:var(--card-bg, #ffffff);color:var(--text-primary, #1e293b);font-size:.75rem;font-family:inherit;outline:none;transition:border-color .15s;min-width:0;width:auto}select.sch-editor__qf-input{padding-right:26px}.sch-editor__qf-input:focus{border-color:#667eea80}.sch-editor__qf-input--narrow{width:64px}.sch-editor__qf-apply{padding:5px 8px;border:1px solid rgba(102,126,234,.25);border-radius:5px;background:#667eea0f;color:#667eea;font-size:.68rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .15s;white-space:nowrap}.sch-editor__qf-apply:hover:not(:disabled){background:#667eea1f;border-color:#667eea66}.sch-editor__qf-apply:disabled{opacity:.4;cursor:not-allowed}.sch-editor__grid-wrap{overflow-x:auto}.sch-editor__table{width:100%;border-collapse:collapse;font-size:.8rem}.sch-editor__th{padding:9px 8px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap;-webkit-user-select:none;user-select:none}.sch-editor__th--subject{min-width:160px;padding-left:14px}.sch-editor__th--narrow{width:80px}.sch-editor__th--status{width:36px}.sch-editor__row{transition:background-color .15s}.sch-editor__row:nth-child(2n){background:#00000003}.sch-editor__row:hover{background:#667eea06}.sch-editor__row--dirty{background:#667eea08!important}.sch-editor__row--error{background:#ef444406!important}.sch-editor__row--saving{opacity:.6;pointer-events:none}.sch-editor__td{padding:6px 4px;border-bottom:1px solid #f0f1f3;vertical-align:top}.sch-editor__td--subject{padding:10px 8px 10px 14px;vertical-align:middle}.sch-editor__td--status{text-align:center;vertical-align:middle}.sch-editor__subject-name{font-weight:600;color:var(--text-primary, #1e293b);font-size:.82rem;line-height:1.3}.sch-editor__subject-code{font-size:.68rem;color:var(--text-muted, #94a3b8);margin-top:1px}.sch-editor__cell-input{width:100%;padding:6px 8px;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--text-primary, #1e293b);font-size:.8rem;font-family:inherit;outline:none;transition:all .15s;box-sizing:border-box}.sch-editor__cell-input:hover{border-color:var(--border-color, #e2e8f0);background:var(--bg-input, #f8fafc)}.sch-editor__cell-input:focus{border-color:#667eea80;background:var(--card-bg, #ffffff);box-shadow:0 0 0 2px #667eea1a}.sch-editor__cell-input--narrow{width:72px}.sch-editor__cell-input--error{border-color:var(--error, #ef4444)!important;background:#ef444408}.sch-editor__cell-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;padding-right:22px;cursor:pointer;min-width:120px}.sch-editor__cell-error{display:block;font-size:.64rem;color:var(--error, #ef4444);margin-top:2px;padding-left:8px}.sch-editor__status-saved{color:#15803d;display:inline-flex}.sch-editor__status-new{color:#667eea;display:inline-flex}.sch-editor__footer{display:flex;align-items:center;justify-content:space-between;padding:14px 0;margin-top:4px;border-top:1px solid var(--border-color, #e2e8f0)}.sch-editor__footer-info{flex:1}.sch-editor__footer-error{font-size:.8rem;color:var(--error, #ef4444);font-weight:500}.sch-editor__footer-actions{display:flex;gap:10px;align-items:center}.marks{display:flex;flex-direction:column;height:100%;position:relative}.marks__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px;gap:16px}.marks__header-text{flex:1}.marks__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.marks__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.marks__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:8px;color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:16px;animation:marks-slideIn .3s ease;width:fit-content;max-width:100%}.marks__toast svg{flex-shrink:0}.marks__toast--error{background:#ef44440f;border-color:#ef444440;color:#ef4444}.marks__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.marks__toast-dismiss:hover{opacity:1}.marks__context-card{background:var(--card-bg, #ffffff);border:1px solid #E5E7EB;border-radius:10px;padding:16px 20px;margin-bottom:16px;box-shadow:0 1px 3px #0000000a}.marks__context-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.marks__context-field{display:flex;flex-direction:column;gap:4px}.marks__context-label{font-size:.72rem;font-weight:700;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em}.marks__context-select{width:100%;padding:8px 32px 8px 10px;background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;color:var(--text-primary, #1e293b);font-size:.82rem;font-family:inherit;outline:none;transition:all .2s ease;box-sizing:border-box;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;cursor:pointer}.marks__context-select:focus{background-color:var(--bg-input-focus, #ffffff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.marks__empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:60px 24px}.marks__empty-icon{color:var(--text-muted, #94a3b8);margin-bottom:16px;opacity:.6}.marks__empty-title{font-size:1.1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 6px}.marks__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0;max-width:380px}.marks__loading{flex:1;display:flex;align-items:center;justify-content:center;padding:60px 0}.marks__loader{display:inline-flex;gap:6px}.marks__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:marks-bounce 1.2s infinite ease-in-out}.marks__loader-dot:nth-child(2){animation-delay:.15s}.marks__loader-dot:nth-child(3){animation-delay:.3s}.marks__stats-bar{display:flex;align-items:center;gap:20px;padding:10px 16px;background:var(--card-bg, #ffffff);border:1px solid #E5E7EB;border-radius:8px;margin-bottom:12px}.marks__stat{display:flex;align-items:baseline;gap:5px}.marks__stat-value{font-size:1.125rem;font-weight:700;color:var(--text-primary, #1e293b);font-variant-numeric:tabular-nums}.marks__stat-label{font-size:.72rem;font-weight:500;color:var(--text-secondary, #6b7280);text-transform:uppercase;letter-spacing:.03em}.marks__stat--pass .marks__stat-value{color:#15803d}.marks__stat--fail .marks__stat-value{color:#dc2626}.marks__stat-spacer{flex:1}.marks__last-saved{font-size:.72rem;color:var(--text-muted, #94a3b8);font-variant-numeric:tabular-nums}.marks__unsaved-dot{width:8px;height:8px;border-radius:50%;background:#f59e0b;flex-shrink:0;animation:marks-pulse 1.5s infinite ease}.marks__grid-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000000a}.marks__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:fixed}.marks__th{position:sticky;top:0;z-index:2;padding:8px 12px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap;-webkit-user-select:none;user-select:none}.marks__th--roll{width:80px;text-align:right}.marks__th--name{width:auto}.marks__th--max,.marks__th--obtained{width:140px;text-align:right}.marks__th--status{width:90px;text-align:center}.marks__max-header{display:flex;align-items:center;gap:8px;justify-content:flex-end}.marks__max-input{width:56px;padding:3px 6px;border:1px solid var(--border-color, #d1d5db);border-radius:4px;font-size:.78rem;font-family:inherit;font-variant-numeric:tabular-nums;text-align:right;color:var(--text-primary, #1e293b);background:var(--card-bg, #ffffff);outline:none;transition:border-color .15s}.marks__max-input:focus{border-color:#667eea80;box-shadow:0 0 0 2px #667eea1a}.marks__td{padding:4px 12px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.marks__td--roll{font-variant-numeric:tabular-nums;text-align:right;font-weight:600;font-size:.8rem;color:var(--text-secondary, #475569)}.marks__td--name{padding-top:6px;padding-bottom:6px}.marks__td--max{font-variant-numeric:tabular-nums;text-align:right;color:var(--text-secondary, #6b7280);font-size:.82rem}.marks__td--obtained{text-align:right;padding-right:12px}.marks__td--status{text-align:center}.marks__row:nth-child(2n)>.marks__td{background:#00000004}.marks__row:hover>.marks__td{background:#667eea08}.marks__row:last-child>.marks__td{border-bottom:none}.marks__student{display:flex;align-items:center;gap:8px}.marks__avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.62rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:.03em}.marks__student-name{font-weight:500;font-size:.82rem}.marks__marks-input{width:72px;padding:5px 8px;border:1px solid var(--border-color, #d1d5db);border-radius:4px;font-size:.875rem;font-family:inherit;font-variant-numeric:tabular-nums;text-align:right;color:var(--text-primary, #1e293b);background:var(--card-bg, #ffffff);outline:none;transition:border-color .15s,box-shadow .15s}.marks__marks-input::placeholder{color:var(--text-muted, #c9cdd4)}.marks__marks-input:focus{border-color:#667eea99;box-shadow:0 0 0 2px #667eea26;background:#fff}.marks__marks-input--error{border-color:#ef4444!important;background:#ef44440a!important}.marks__marks-input--error:focus{box-shadow:0 0 0 2px #ef444426}.marks__marks-input::-webkit-outer-spin-button,.marks__marks-input::-webkit-inner-spin-button,.marks__max-input::-webkit-outer-spin-button,.marks__max-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.marks__marks-input[type=number],.marks__max-input[type=number]{-moz-appearance:textfield;appearance:textfield}.marks__badge{display:inline-flex;align-items:center;justify-content:center;padding:2px 10px;border-radius:100px;font-size:.68rem;font-weight:700;letter-spacing:.02em;white-space:nowrap;min-width:44px}.marks__badge--pass{background:#22c55e1a;color:#15803d}.marks__badge--fail{background:#ef444414;color:#dc2626}.marks__badge--pending{background:transparent;color:var(--text-muted, #c9cdd4);font-size:.82rem}.marks__save-bar{display:flex;align-items:center;gap:16px;padding:12px 16px;background:var(--card-bg, #ffffff);border:1px solid #E5E7EB;border-radius:8px;margin-top:12px;position:sticky;bottom:0;z-index:5;box-shadow:0 -2px 10px #0000000a}.marks__save-btn{padding:9px 24px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:8px;white-space:nowrap;position:relative;overflow:hidden}.marks__save-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.marks__save-btn:hover:before{opacity:1}.marks__save-btn:hover{transform:translateY(-1px);box-shadow:0 6px 20px #667eea59}.marks__save-btn:active{transform:translateY(0)}.marks__save-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.marks__save-hint{font-size:.75rem;color:var(--text-muted, #94a3b8)}.marks__spinner{animation:marks-spin 1.2s linear infinite}.marks__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}@keyframes marks-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes marks-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}@keyframes marks-spin{to{transform:rotate(360deg)}}@keyframes marks-pulse{0%,to{opacity:1}50%{opacity:.4}}.marks__marks-input:focus-visible,.marks__max-input:focus-visible,.marks__save-btn:focus-visible,.marks__context-select:focus-visible{outline:2px solid rgba(102,126,234,.5);outline-offset:2px}.vr{display:flex;flex-direction:column;height:100%;position:relative}.vr__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px;gap:16px}.vr__header-text{flex:1}.vr__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.vr__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.vr__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:8px;font-size:.875rem;font-weight:500;margin-bottom:16px;animation:vr-slideIn .3s ease;width:fit-content;max-width:100%}.vr__toast svg{flex-shrink:0}.vr__toast--error{background:#ef44440f;border:1px solid rgba(239,68,68,.25);color:#ef4444}.vr__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.vr__toast-dismiss:hover{opacity:1}.vr__filter-card{background:var(--card-bg, #ffffff);border:1px solid #E5E7EB;border-radius:10px;padding:16px 20px;margin-bottom:16px;box-shadow:0 1px 3px #0000000a}.vr__filter-grid{display:grid;grid-template-columns:repeat(3,1fr) auto;gap:14px;align-items:end}.vr__filter-field{display:flex;flex-direction:column;gap:4px}.vr__filter-field--action{justify-content:flex-end}.vr__filter-label{font-size:.72rem;font-weight:700;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em}.vr__filter-optional{font-weight:500;text-transform:none;letter-spacing:0;color:var(--text-tertiary, #94a3b8);margin-left:4px}.vr__search-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.82rem;font-weight:600;font-family:inherit;border:none;border-radius:6px;cursor:pointer;box-shadow:0 1px 2px #667eea40;transition:transform .1s ease,box-shadow .15s ease,opacity .15s ease;white-space:nowrap}.vr__search-btn:hover:not(:disabled){box-shadow:0 2px 6px #667eea59;transform:translateY(-1px)}.vr__search-btn:active:not(:disabled){transform:translateY(0)}.vr__search-btn:disabled{opacity:.5;cursor:not-allowed}.vr__filter-select{width:100%;padding:8px 32px 8px 10px;background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;color:var(--text-primary, #1e293b);font-size:.82rem;font-family:inherit;outline:none;transition:all .2s ease;box-sizing:border-box;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;cursor:pointer}.vr__filter-select:focus{background-color:var(--bg-input-focus, #ffffff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.vr__empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:60px 24px}.vr__empty-icon{color:var(--text-muted, #94a3b8);margin-bottom:16px;opacity:.6}.vr__empty-title{font-size:1.1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 6px}.vr__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0;max-width:380px}.vr__loading{flex:1;display:flex;align-items:center;justify-content:center;padding:60px 0}.vr__loader{display:inline-flex;gap:6px}.vr__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:vr-bounce 1.2s infinite ease-in-out}.vr__loader-dot:nth-child(2){animation-delay:.15s}.vr__loader-dot:nth-child(3){animation-delay:.3s}.vr__stats-bar{display:flex;align-items:center;gap:20px;padding:10px 16px;background:var(--card-bg, #ffffff);border:1px solid #E5E7EB;border-radius:8px;margin-bottom:12px}.vr__stat{display:flex;align-items:baseline;gap:5px}.vr__stat-value{font-size:1.125rem;font-weight:700;color:var(--text-primary, #1e293b);font-variant-numeric:tabular-nums}.vr__stat-label{font-size:.72rem;font-weight:500;color:var(--text-secondary, #6b7280);text-transform:uppercase;letter-spacing:.03em}.vr__stat--pass .vr__stat-value{color:#15803d}.vr__stat--fail .vr__stat-value{color:#dc2626}.vr__stat--grace .vr__stat-value{color:#d97706}.vr__stat-spacer{flex:1}.vr__grid-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000000a}.vr__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:fixed}.vr__th{position:sticky;top:0;z-index:2;padding:8px 12px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap;-webkit-user-select:none;user-select:none}.vr__th--rank{width:60px;text-align:center}.vr__th--roll{width:80px;text-align:right}.vr__th--name{width:auto}.vr__th--total,.vr__th--obtained,.vr__th--pct{width:100px;text-align:right}.vr__th--status{width:90px;text-align:center}.vr__td{padding:6px 12px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.vr__td--rank{font-variant-numeric:tabular-nums;text-align:center;font-weight:700;font-size:.82rem;color:var(--text-secondary, #475569)}.vr__td--roll{font-variant-numeric:tabular-nums;text-align:right;font-weight:600;font-size:.8rem;color:var(--text-secondary, #475569)}.vr__td--total,.vr__td--obtained,.vr__td--pct{font-variant-numeric:tabular-nums;text-align:right;font-size:.82rem}.vr__td--pct{font-weight:600}.vr__td--status{text-align:center}.vr__row--pass>.vr__td{background:#22c55e0a}.vr__row--fail>.vr__td{background:#ef44440a}.vr__row--grace>.vr__td{background:#f59e0b0f}.vr__row:hover>.vr__td{background:#667eea0f}.vr__row:last-child>.vr__td{border-bottom:none}.vr__student-btn{display:flex;align-items:center;gap:8px;background:none;border:none;padding:0;cursor:pointer;color:inherit;font-family:inherit;text-align:left}.vr__student-btn:hover .vr__student-name{color:#667eea;text-decoration:underline}.vr__avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.62rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:.03em}.vr__student-name{font-weight:500;font-size:.82rem;transition:color .15s}.vr__badge{display:inline-flex;align-items:center;justify-content:center;padding:2px 10px;border-radius:100px;font-size:.68rem;font-weight:700;letter-spacing:.02em;white-space:nowrap;min-width:44px}.vr__badge--pass{background:#22c55e1a;color:#15803d}.vr__badge--fail{background:#ef444414;color:#dc2626}.vr__badge--grace{background:#f59e0b1a;color:#b45309}.vr__pagination{display:flex;align-items:center;justify-content:space-between;padding:10px 4px;margin-top:8px}.vr__page-info{font-size:.75rem;color:var(--text-secondary, #6b7280);font-variant-numeric:tabular-nums}.vr__page-btns{display:flex;align-items:center;gap:4px}.vr__page-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:var(--card-bg, #ffffff);color:var(--text-secondary, #6b7280);cursor:pointer;transition:all .15s}.vr__page-btn:hover:not(:disabled){background:#667eea0f;border-color:#667eea4d;color:#667eea}.vr__page-btn:disabled{opacity:.35;cursor:not-allowed}.vr__page-num{font-size:.75rem;color:var(--text-primary, #1e293b);font-weight:500;padding:0 8px;font-variant-numeric:tabular-nums}.vr__backdrop{position:fixed;inset:44px 0 0;z-index:110;background:#00000040;animation:vr-fadeIn .25s ease-out}.vr__drawer{position:fixed;top:44px;right:0;bottom:0;z-index:120;width:480px;max-width:94vw;display:flex;flex-direction:column;background:var(--card-bg, #ffffff);box-shadow:-8px 0 40px #0000001f;animation:vr-slideIn .3s cubic-bezier(.16,1,.3,1);overflow:hidden}.vr__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--card-border, rgba(0, 0, 0, .06));flex-shrink:0}.vr__drawer-title{font-size:1.05rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0}.vr__drawer-actions{display:flex;align-items:center;gap:6px}.vr__print-btn{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;font-size:.75rem;font-weight:600;font-family:inherit;color:#667eea;background:#667eea14;border:1px solid rgba(102,126,234,.2);border-radius:6px;cursor:pointer;transition:all .15s;white-space:nowrap}.vr__print-btn:hover{background:#667eea26;border-color:#667eea59}.vr__drawer-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:6px;background:transparent;color:var(--text-secondary, #6b7280);cursor:pointer;transition:all .15s}.vr__drawer-close:hover{background:#0000000d;color:var(--text-primary, #1e293b)}.vr__drawer-body{flex:1;overflow-y:auto;padding:0}.vr__drawer-body::-webkit-scrollbar{width:5px}.vr__drawer-body::-webkit-scrollbar-thumb{background:#00000014;border-radius:5px}.vr__drawer-section{padding:18px 20px;border-bottom:1px solid var(--card-border, rgba(0, 0, 0, .04))}.vr__drawer-section:last-of-type{border-bottom:none}.vr__drawer-section-title{font-size:.72rem;font-weight:700;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;margin:0 0 12px}.vr__drawer-context{display:flex;gap:20px}.vr__drawer-context-item{display:flex;flex-direction:column;gap:2px}.vr__drawer-context-label{font-size:.65rem;font-weight:700;color:var(--text-muted, #94a3b8);text-transform:uppercase;letter-spacing:.05em}.vr__drawer-context-value{font-size:.88rem;font-weight:600;color:var(--text-primary, #1e293b)}.vr__drawer-student{display:flex;align-items:center;gap:12px;margin-bottom:16px}.vr__drawer-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.85rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.vr__drawer-name{font-size:1rem;font-weight:600;color:var(--text-primary, #1e293b)}.vr__drawer-meta{font-size:.78rem;color:var(--text-secondary, #6b7280);margin-top:2px}.vr__drawer-summary{display:grid;grid-template-columns:1fr 1fr;gap:10px}.vr__drawer-summary-item{display:flex;flex-direction:column;gap:2px;padding:10px 12px;background:var(--bg-input, #f8fafc);border-radius:8px;border:1px solid #E5E7EB}.vr__drawer-summary-label{font-size:.68rem;font-weight:600;color:var(--text-secondary, #6b7280);text-transform:uppercase;letter-spacing:.04em}.vr__drawer-summary-value{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);font-variant-numeric:tabular-nums}.vr__drawer-table{width:100%;border-collapse:collapse;font-size:.8rem}.vr__drawer-th{padding:6px 8px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap}.vr__drawer-th--num{text-align:right;width:60px}.vr__drawer-th--status{text-align:center;width:60px}.vr__drawer-td{padding:6px 8px;border-bottom:1px solid #f0f0f0;color:var(--text-primary, #1e1b4b);vertical-align:middle}.vr__drawer-td--num{text-align:right;font-variant-numeric:tabular-nums}.vr__drawer-td--status{text-align:center}.vr__drawer-td--bold{font-weight:700}.vr__drawer-row--pass>.vr__drawer-td{background:#22c55e08}.vr__drawer-row--fail>.vr__drawer-td{background:#ef44440a}.vr__drawer-total-row>.vr__drawer-td{background:var(--table-header-bg, #f8f8fb);border-top:2px solid #E5E7EB;border-bottom:none}.vr__mini-badge{display:inline-flex;align-items:center;justify-content:center;padding:1px 6px;border-radius:100px;font-size:.62rem;font-weight:700;letter-spacing:.02em}.vr__mini-badge--pass{background:#22c55e1a;color:#15803d}.vr__mini-badge--fail{background:#ef444414;color:#dc2626}.vr__mini-badge--pending{color:var(--text-muted, #c9cdd4)}@keyframes vr-slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes vr-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes vr-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.vr__filter-select:focus-visible,.vr__page-btn:focus-visible,.vr__student-btn:focus-visible,.vr__drawer-close:focus-visible{outline:2px solid rgba(102,126,234,.5);outline-offset:2px}.fees{display:flex;flex-direction:column;height:100%;position:relative}.fees__section{flex:1;display:flex;flex-direction:column;min-height:0}.fees__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px;gap:16px}.fees__header-text{flex:1}.fees__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.fees__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.fees__tabs{display:flex;gap:4px;margin-bottom:16px;border-bottom:1px solid var(--border-color, #e2e8f0);padding-bottom:0}.fees__tab{display:inline-flex;align-items:center;gap:7px;padding:10px 18px;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--text-secondary, #6b7280);font-size:.84rem;font-weight:600;font-family:inherit;cursor:pointer;transition:color .2s,border-color .2s;margin-bottom:-1px;white-space:nowrap}.fees__tab:hover{color:var(--text-primary, #1e293b)}.fees__tab--active{color:#667eea;border-bottom-color:#667eea}.fees__tab--active svg{stroke:#667eea}.fees__tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--row-alt-bg, rgba(0, 0, 0, .05));font-size:.7rem;font-weight:700;color:var(--text-secondary, #6b7280);line-height:1}.fees__tab--active .fees__tab-count{background:#667eea1a;color:#667eea}.fees__heads-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-bottom:12px}.fees__header-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.fees__search-wrap{position:relative;display:flex;align-items:center}.fees__search-icon{position:absolute;left:10px;color:var(--text-muted, #9ca3af);pointer-events:none}.fees__search{width:200px;padding:8px 12px 8px 34px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);outline:none;transition:border-color .2s,box-shadow .2s;font-family:inherit}.fees__search:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.fees__search::placeholder{color:var(--text-muted, #9ca3af)}.fees__add-btn{padding:9px 22px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden}.fees__add-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.fees__add-btn:hover:before{opacity:1}.fees__add-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.fees__add-btn:active{transform:translateY(0)}.fees__table-wrap{overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000000a;flex:1;min-height:0}.fees__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:auto}.fees__th{position:sticky;top:0;z-index:2;padding:9px 14px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap;-webkit-user-select:none;user-select:none}.fees__th--actions{text-align:right;width:90px}.fees__td{padding:8px 14px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.fees__td--name{font-weight:600}.fees__td--code{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.78rem;font-variant-numeric:tabular-nums}.fees__td--desc{color:var(--text-secondary, #6b7280);font-size:.8rem;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fees__td--actions{text-align:right}.fees__table-row:nth-child(2n)>.fees__td{background:var(--row-alt-bg, rgba(0, 0, 0, .015))}.fees__table-row:hover>.fees__td{background:var(--row-hover-bg, rgba(102, 126, 234, .03))}.fees__table-row:last-child>.fees__td{border-bottom:none}.fees__badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:100px;font-size:.72rem;font-weight:600;letter-spacing:.02em;white-space:nowrap}.fees__badge--active{background:#22c55e1a;color:#15803d}.fees__badge--inactive{background:#6b72801a;color:#4b5563}.fees__row-btn{padding:4px 10px;background:transparent;color:var(--text-secondary, #475569);font-size:.78rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;cursor:pointer;font-family:inherit;transition:all .2s ease;display:inline-flex;align-items:center;gap:4px}.fees__row-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.fees__row-btn--delete{color:#ef4444;border-color:#ef44444d}.fees__row-btn--delete:hover{background:#ef44440f;border-color:#ef444480}.fees__add-comp-bar{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid #E5E7EB;background:var(--table-header-bg, #f8f8fb)}.fees__add-comp-btn{padding:6px 14px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.78rem;font-weight:600;border:none;border-radius:6px;cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .2s ease;box-shadow:0 2px 8px #667eea33}.fees__add-comp-btn:hover{box-shadow:0 4px 12px #667eea4d}.fees__add-comp-btn:disabled{opacity:.5;cursor:not-allowed}.fees__structure-total{font-size:.8rem;font-weight:600;color:#667eea;font-variant-numeric:tabular-nums;white-space:nowrap;padding:4px 10px;background:#667eea14;border-radius:6px}.fees__class-dot{width:8px;height:8px;border-radius:50%;background:var(--border-color, #d1d5db);flex-shrink:0}.fees__comp-amount-display{font-size:.84rem;font-weight:600;color:var(--text-primary, #1e293b);font-variant-numeric:tabular-nums;white-space:nowrap;cursor:pointer;padding:2px 6px;border-radius:4px;border:1px solid transparent;transition:border-color .15s,background .15s}.fees__comp-amount-display:hover{border-color:var(--border-color, #d1d5db);background:var(--bg-input, #f8fafc)}.fees__builder{display:flex;gap:0;border:1px solid #E5E7EB;border-radius:8px;overflow:hidden;background:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000000a;max-height:480px}.fees__builder-left{width:240px;flex-shrink:0;border-right:1px solid #E5E7EB;display:flex;flex-direction:column;background:var(--table-header-bg, #f8f8fb);overflow-y:auto}.fees__builder-heading{font-size:.74rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;margin:0;padding:12px 14px 8px}.fees__class-list{flex:1;overflow-y:auto}.fees__class-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 14px;background:transparent;border:none;border-left:3px solid transparent;border-bottom:1px solid #E5E7EB;cursor:pointer;font-family:inherit;text-align:left;transition:background .15s,border-color .15s}.fees__class-item:hover{background:#667eea0a}.fees__class-item--active{background:var(--card-bg, #ffffff);border-left-color:#667eea}.fees__class-info{display:flex;flex-direction:column;gap:1px;min-width:0}.fees__class-name{font-size:.84rem;font-weight:600;color:var(--text-primary, #1e293b)}.fees__class-meta{font-size:.7rem;color:var(--text-muted, #94a3b8)}.fees__class-total{font-size:.78rem;font-weight:600;color:var(--text-secondary, #475569);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}.fees__class-item--active .fees__class-total{color:#667eea}.fees__class-count{font-size:.7rem;color:var(--text-muted, #94a3b8)}.fees__builder-right{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.fees__builder-right-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px 6px;border-bottom:1px solid #E5E7EB}.fees__builder-right-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.fees__print-btn{width:32px;height:32px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:transparent;color:var(--text-secondary, #475569);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}.fees__print-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8);color:#667eea}.fees__print-btn:disabled{opacity:.35;cursor:not-allowed}.fees__add-comp-wrap{flex-shrink:0}.fees__add-comp-select{padding:6px 28px 6px 10px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.78rem;font-family:inherit;color:var(--text-secondary, #475569);background:var(--card-bg, #ffffff);cursor:pointer;outline:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.fees__add-comp-select:focus{border-color:#667eea80;box-shadow:0 0 0 2px #667eea1a}.fees__comp-list{flex:1;overflow-y:auto;padding:8px 16px}.fees__comp-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid rgba(0,0,0,.05)}.fees__comp-row:last-child{border-bottom:none}.fees__comp-name{flex:1;font-size:.84rem;font-weight:500;color:var(--text-primary, #1e293b)}.fees__comp-amount-wrap{display:flex;align-items:center;gap:2px}.fees__comp-currency{font-size:.82rem;color:var(--text-muted, #94a3b8);font-weight:500}.fees__comp-amount{width:90px;padding:5px 8px;border:1px solid var(--border-color, #d1d5db);border-radius:4px;font-size:.875rem;font-family:inherit;font-variant-numeric:tabular-nums;text-align:right;color:var(--text-primary, #1e293b);background:var(--card-bg, #ffffff);outline:none;transition:border-color .15s}.fees__comp-amount:focus{border-color:#667eea80;box-shadow:0 0 0 2px #667eea1a}.fees__comp-amount::-webkit-outer-spin-button,.fees__comp-amount::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.fees__comp-amount[type=number]{-moz-appearance:textfield;appearance:textfield}.fees__comp-remove{width:28px;height:28px;padding:0;border:1px solid rgba(239,68,68,.3);border-radius:6px;background:transparent;color:#ef4444;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}.fees__comp-remove:hover{background:#ef44440f;border-color:#ef444480}.fees__comp-empty{padding:30px 16px;text-align:center;color:var(--text-muted, #94a3b8);font-size:.84rem}.fees__comp-footer{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px solid #E5E7EB;background:var(--table-header-bg, #f8f8fb)}.fees__comp-footer-label{font-size:.8rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.03em}.fees__comp-footer-total{font-size:1.125rem;font-weight:700;color:var(--text-primary, #1e293b);font-variant-numeric:tabular-nums}.fees__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:8px;color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:16px;animation:fees-slideIn .3s ease;width:fit-content;max-width:100%}.fees__toast svg{flex-shrink:0}.fees__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.fees__toast-dismiss:hover{opacity:1}.fees__loading{padding:60px 0;text-align:center;flex:1;display:flex;align-items:center;justify-content:center}.fees__loader{display:inline-flex;gap:6px}.fees__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:fees-bounce 1.2s infinite ease-in-out}.fees__loader-dot:nth-child(2){animation-delay:.15s}.fees__loader-dot:nth-child(3){animation-delay:.3s}.fees__overlay{position:fixed;inset:0;background:#0f172a59;z-index:90;animation:fees-fadeIn .2s ease}.fees__drawer{position:fixed;right:0;top:0;bottom:0;width:440px;max-width:90vw;background:var(--bg-base, #f3f4f6);z-index:100;display:flex;flex-direction:column;box-shadow:-8px 0 30px #0000001f;animation:fees-slideInRight .3s ease}.fees__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff)}.fees__drawer-title{font-size:1.125rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0;letter-spacing:-.01em}.fees__drawer-close{width:32px;height:32px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.fees__drawer-close:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.fees__drawer-body{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}.fees__card{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:12px;padding:16px;box-shadow:0 1px 3px #0000000a}.fees__card-title{font-size:.8rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border-color, #e2e8f0)}.fees__field{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.fees__field:last-child{margin-bottom:0}.fees__label{font-size:.75rem;font-weight:700;color:var(--text-secondary, #475569)}.fees__label--required:after{content:" *";color:var(--error, #ef4444)}.fees__input{width:100%;padding:8px 12px;background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;color:var(--text-primary, #1e293b);font-size:.875rem;font-family:inherit;outline:none;transition:all .2s ease;box-sizing:border-box}.fees__input::placeholder{color:var(--text-placeholder, #94a3b8)}.fees__input:focus{background:var(--bg-input-focus, #ffffff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.fees__select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:30px;cursor:pointer}.fees__input--error{border-color:var(--error, #ef4444)!important}.fees__textarea{resize:vertical;min-height:60px}.fees__error{font-size:.72rem;color:var(--error, #ef4444);margin:0;animation:fees-slideIn .2s ease}.fees__toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.fees__toggle-info{display:flex;flex-direction:column;gap:2px}.fees__toggle-label{font-size:.875rem;font-weight:500;color:var(--text-primary, #1e293b)}.fees__toggle-desc{font-size:.75rem;color:var(--text-muted, #94a3b8)}.fees__toggle{position:relative;width:44px;height:24px;flex-shrink:0}.fees__toggle input{opacity:0;width:0;height:0;position:absolute}.fees__toggle-track{position:absolute;inset:0;background:var(--border-color, #d1d5db);border-radius:12px;cursor:pointer;transition:background .25s ease}.fees__toggle-track:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .25s ease;box-shadow:0 1px 3px #00000026}.fees__toggle input:checked+.fees__toggle-track{background:#667eea}.fees__toggle input:checked+.fees__toggle-track:after{transform:translate(20px)}.fees__timestamps{padding-top:12px;border-top:1px solid var(--border-color, #e2e8f0);display:flex;flex-direction:column;gap:2px}.fees__timestamp{font-size:.7rem;color:var(--text-muted, #94a3b8)}.fees__drawer-footer{display:flex;align-items:center;gap:12px;padding:16px 24px;border-top:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff)}.fees__submit{padding:10px 28px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.9375rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;justify-content:center;gap:8px;position:relative;overflow:hidden}.fees__submit:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.fees__submit:hover:before{opacity:1}.fees__submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.fees__submit:active{transform:translateY(0)}.fees__submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.fees__cancel{padding:10px 20px;background:transparent;color:var(--text-secondary, #475569);font-size:.9375rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;cursor:pointer;font-family:inherit;transition:all .2s ease}.fees__cancel:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.fees__spinner{animation:fees-spin 1.2s linear infinite}.fees__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}.fees__confirm-overlay{position:fixed;inset:0;background:#0f172a80;z-index:200;display:flex;align-items:center;justify-content:center;animation:fees-fadeIn .15s ease}.fees__confirm-modal{background:var(--card-bg, #ffffff);border-radius:12px;padding:28px;max-width:400px;width:90%;box-shadow:0 20px 60px #0003;animation:fees-slideIn .2s ease}.fees__confirm-title{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 8px}.fees__confirm-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0 0 20px;line-height:1.6}.fees__confirm-actions{display:flex;gap:10px;justify-content:flex-end}.fees__confirm-delete{padding:8px 20px;border:none;border-radius:8px;background:#ef4444;color:#fff;font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s}.fees__confirm-delete:hover{background:#dc2626}.fees__confirm-cancel{padding:8px 20px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer;transition:all .15s}.fees__confirm-cancel:hover{background:var(--bg-input, #f8fafc)}@keyframes fees-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes fees-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fees-slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes fees-spin{to{transform:rotate(360deg)}}@keyframes fees-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.fees__input:focus-visible,.fees__submit:focus-visible,.fees__cancel:focus-visible,.fees__add-btn:focus-visible,.fees__row-btn:focus-visible,.fees__drawer-close:focus-visible,.fees__comp-amount:focus-visible{outline:2px solid rgba(102,126,234,.5);outline-offset:2px}.sd{display:flex;flex-direction:column;gap:0;height:100%}.sd__error-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;margin-bottom:14px;background:#ef44440f;border:1px solid rgba(239,68,68,.2);border-radius:8px;color:#dc2626;font-size:.82rem;font-weight:500;animation:sd-slideDown .25s ease-out}.sd__error-banner svg{flex-shrink:0}.sd__error-dismiss{margin-left:auto;background:none;border:none;color:#dc2626;font-size:1.1rem;cursor:pointer;padding:0 4px;line-height:1;opacity:.6;transition:opacity .15s}.sd__error-dismiss:hover{opacity:1}.sd__toast{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:8px;color:var(--success, #10b981);font-size:.82rem;font-weight:500;margin-bottom:14px;animation:sd-slideDown .3s ease;width:fit-content;max-width:100%}.sd__toast svg{flex-shrink:0}.sd__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.sd__toast-dismiss:hover{opacity:1}.sd__toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 0 18px;flex-wrap:wrap}.sd__toolbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.sd__toolbar-right{display:flex;align-items:center;gap:12px}.sd__search-wrapper{position:relative;display:flex;align-items:center}.sd__search-icon{position:absolute;left:10px;color:var(--text-muted, #9ca3af);pointer-events:none}.sd__search{width:280px;padding:7px 32px 7px 34px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);outline:none;transition:border-color .2s,box-shadow .2s;font-family:inherit}.sd__search:focus{border-color:var(--accent, #7c3aed);box-shadow:0 0 0 3px #7c3aed14}.sd__search::placeholder{color:var(--text-muted, #9ca3af)}.sd__search-clear{position:absolute;right:6px;width:22px;height:22px;padding:0;border:none;border-radius:50%;background:var(--input-border, rgba(0, 0, 0, .08));color:var(--text-secondary, #6b7280);font-size:.85rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.sd__search-clear:hover{background:#00000024}.sd__filter{padding:7px 28px 7px 10px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);cursor:pointer;outline:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;font-family:inherit;transition:border-color .2s}.sd__filter:focus{border-color:var(--accent, #7c3aed)}.sd__filter:disabled{opacity:.5;cursor:not-allowed}.sd__record-count{font-size:.8rem;color:var(--text-muted, #9ca3af);font-weight:500;white-space:nowrap}.sd__search-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:none;border-radius:8px;background:var(--accent, #7c3aed);color:#fff;font-size:.82rem;font-weight:600;font-family:inherit;cursor:pointer;white-space:nowrap;transition:background .15s}.sd__search-btn:hover{background:var(--accent-hover, #6d28d9)}.sd__clear-btn{padding:7px 12px;border:1px solid var(--card-border, rgba(0, 0, 0, .12));border-radius:8px;background:transparent;color:var(--text-secondary, #6b7280);font-size:.82rem;font-family:inherit;cursor:pointer;white-space:nowrap;transition:all .15s}.sd__clear-btn:hover{background:#0000000a;color:var(--text-primary, #1e1b4b)}.sd__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff)}.sd__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:auto}.sd__th{position:sticky;top:0;z-index:2;padding:10px 12px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap;-webkit-user-select:none;user-select:none}.sd__th--actions{text-align:center;width:100px}.sd__td{padding:5px 12px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.sd__td--name{font-weight:600}.sd__td--actions{text-align:center}.sd__muted{color:var(--text-muted, #9ca3af);font-style:italic;font-size:.8rem}.sd__row:nth-child(2n)>.sd__td{background:var(--row-alt-bg, rgba(0, 0, 0, .015))}.sd__row:hover>.sd__td{background:var(--row-hover-bg, rgba(124, 58, 237, .03))}.sd__discount-select{padding:6px 28px 6px 10px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:6px;font-size:.82rem;font-family:inherit;color:var(--text-primary, #1e1b4b);background:var(--card-bg, #ffffff);outline:none;min-width:160px;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;transition:border-color .2s}.sd__discount-select:focus{border-color:var(--accent, #7c3aed);box-shadow:0 0 0 2px #7c3aed14}.sd__assign-btn{display:inline-flex;align-items:center;gap:4px;padding:6px 14px;border:none;border-radius:6px;font-size:.8rem;font-weight:600;font-family:inherit;color:#fff;background:var(--accent, #7c3aed);cursor:pointer;white-space:nowrap;transition:background .15s,opacity .15s}.sd__assign-btn:hover:not(:disabled){background:var(--accent-hover, #6d28d9)}.sd__assign-btn:disabled{opacity:.45;cursor:not-allowed}.sd__loading-cell{padding:48px 0;text-align:center}.sd__loader{display:inline-flex;gap:6px}.sd__loader-dot{width:8px;height:8px;border-radius:50%;background:var(--accent, #7c3aed);animation:sd-bounce 1.2s infinite ease-in-out}.sd__loader-dot:nth-child(2){animation-delay:.15s}.sd__loader-dot:nth-child(3){animation-delay:.3s}.sd__empty-cell{padding:60px 0;text-align:center}.sd__empty{display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--text-muted, #9ca3af)}.sd__empty p{margin:0;font-size:.88rem}.sd__pagination{display:flex;align-items:center;justify-content:space-between;padding:14px 0 0;gap:12px;flex-wrap:wrap}.sd__pagination-left{display:flex;align-items:center;gap:16px}.sd__page-info{font-size:.76rem;color:var(--text-muted, #9ca3af);font-variant-numeric:tabular-nums}.sd__pagination-right{display:flex;align-items:center;gap:4px}.sd__page-btn{min-width:30px;height:30px;padding:0 6px;border:1px solid #E5E7EB;border-radius:6px;background:var(--card-bg, #ffffff);color:var(--text-secondary, #6b7280);font-size:.78rem;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s;font-family:inherit}.sd__page-btn:hover:not(:disabled){background:var(--row-hover-bg, rgba(124, 58, 237, .06));color:var(--accent, #7c3aed);border-color:#7c3aed33}.sd__page-btn--active{background:var(--accent, #7c3aed)!important;color:#fff!important;border-color:var(--accent, #7c3aed)!important}.sd__page-btn:disabled{opacity:.35;cursor:not-allowed}@keyframes sd-slideDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes sd-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.inv-detail__backdrop{position:fixed;inset:0;background:#00000059;z-index:90;animation:invd-fadeIn .2s ease}.inv-detail{position:fixed;right:0;top:0;bottom:0;width:720px;max-width:94vw;background:var(--bg-base, #f3f4f6);z-index:100;display:flex;flex-direction:column;box-shadow:-8px 0 30px #0000001f;animation:invd-slideInRight .3s ease}.inv-detail__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 24px 16px;border-bottom:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff);flex-wrap:wrap}.inv-detail__header-left{display:flex;align-items:flex-start;gap:12px}.inv-detail__close-btn{width:32px;height:32px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0;margin-top:2px}.inv-detail__close-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.inv-detail__title-row{display:flex;align-items:center;gap:10px}.inv-detail__title{font-size:1.1rem;font-weight:700;color:var(--text-primary, #1e1b4b);margin:0;letter-spacing:-.01em;font-family:SF Mono,Fira Code,Consolas,monospace}.inv-detail__subtitle{font-size:.82rem;color:var(--text-secondary, #6b7280);margin:2px 0 0}.inv-detail__badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:100px;font-size:.72rem;font-weight:600;letter-spacing:.02em;white-space:nowrap}.inv-detail__badge--paid{background:#22c55e1a;color:#15803d}.inv-detail__badge--partial{background:#eab3081f;color:#a16207}.inv-detail__badge--overdue{background:#ef444414;color:#dc2626}.inv-detail__badge--published{background:#3b82f61a;color:#2563eb}.inv-detail__badge--draft,.inv-detail__badge--void{background:#6b72801a;color:#4b5563}.inv-detail__header-right{display:flex;align-items:center;gap:8px}.inv-detail__btn{padding:7px 14px;border-radius:8px;font-size:.82rem;font-weight:600;font-family:inherit;cursor:pointer;white-space:nowrap;transition:all .15s}.inv-detail__btn--secondary{background:transparent;border:1px solid var(--card-border, #E5E7EB);color:var(--text-secondary, #6b7280)}.inv-detail__btn--secondary:hover{background:#0000000a;color:var(--text-primary, #1e1b4b)}.inv-detail__btn--primary{background:var(--accent, #7c3aed);border:none;color:#fff}.inv-detail__btn--primary:hover{background:var(--accent-hover, #6d28d9)}.inv-detail__btn:disabled{opacity:.45;cursor:not-allowed}.inv-detail__body{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}.inv-detail__error-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#ef44440f;border:1px solid rgba(239,68,68,.2);border-radius:8px;color:#dc2626;font-size:.82rem;font-weight:500;animation:invd-slideDown .25s ease-out}.inv-detail__error-banner svg{flex-shrink:0}.inv-detail__error-dismiss{margin-left:auto;background:none;border:none;color:#dc2626;font-size:1.1rem;cursor:pointer;padding:0 4px;line-height:1;opacity:.6;transition:opacity .15s}.inv-detail__error-dismiss:hover{opacity:1}.inv-detail__toast{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:8px;color:var(--success, #10b981);font-size:.82rem;font-weight:500;animation:invd-slideDown .3s ease;width:fit-content;max-width:100%}.inv-detail__toast svg{flex-shrink:0}.inv-detail__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.inv-detail__toast-dismiss:hover{opacity:1}.inv-detail__loading{display:flex;align-items:center;justify-content:center;padding:80px 0}.inv-detail__loader{display:flex;gap:6px}.inv-detail__loader-dot{width:8px;height:8px;border-radius:50%;background:var(--accent, #7c3aed);animation:invd-bounce 1.2s infinite ease-in-out}.inv-detail__loader-dot:nth-child(2){animation-delay:.15s}.inv-detail__loader-dot:nth-child(3){animation-delay:.3s}.inv-detail__empty-state{text-align:center;padding:60px 0;color:var(--text-muted, #9ca3af);font-size:.88rem}.inv-detail__empty-state p{margin:0}.inv-detail__table-wrap{overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff)}.inv-detail__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:auto}.inv-detail__th{position:sticky;top:0;z-index:2;padding:10px 12px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap}.inv-detail__th--amount{text-align:right}.inv-detail__th--actions{text-align:center;width:48px}.inv-detail__td{padding:10px 12px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.inv-detail__td--amount{text-align:right;font-variant-numeric:tabular-nums;font-weight:500;white-space:nowrap}.inv-detail__td--discount{color:#dc2626}.inv-detail__td--net{font-weight:600;color:var(--text-primary, #1e1b4b)}.inv-detail__td--actions{text-align:center}.inv-detail__fee-name{display:block;font-weight:600;color:var(--text-primary, #1e1b4b)}.inv-detail__fee-desc{display:block;font-size:.76rem;color:var(--text-muted, #9ca3af);margin-top:1px}.inv-detail__empty-cell{padding:40px 0;text-align:center;color:var(--text-muted, #9ca3af)}.inv-detail__empty-cell p{margin:0;font-size:.88rem}.inv-detail__row:nth-child(2n)>.inv-detail__td{background:var(--row-alt-bg, rgba(0, 0, 0, .015))}.inv-detail__row:hover>.inv-detail__td{background:var(--row-hover-bg, rgba(124, 58, 237, .03))}.inv-detail__delete-btn{width:28px;height:28px;padding:0;border:1px solid rgba(239,68,68,.3);border-radius:6px;background:none;color:#ef4444;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s}.inv-detail__delete-btn:hover{background:#ef44440f;border-color:#ef444480}.inv-detail__controls{display:flex;align-items:center;gap:10px}.inv-detail__control-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:1px dashed var(--accent, #7c3aed);border-radius:8px;background:transparent;color:var(--accent, #7c3aed);font-size:.82rem;font-weight:600;font-family:inherit;cursor:pointer;white-space:nowrap;transition:all .15s}.inv-detail__control-btn:hover{background:#7c3aed0f}.inv-detail__discounts-section{background:var(--card-bg, #ffffff);border:1px solid #E5E7EB;border-radius:10px;padding:16px}.inv-detail__discounts-title{margin:0 0 12px;font-size:.82rem;font-weight:700;color:var(--text-primary, #1e1b4b);display:flex;align-items:center;gap:7px}.inv-detail__discounts-title svg{color:#d97706}.inv-detail__discount-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;margin-bottom:6px}.inv-detail__discount-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 6px 8px;border:1.5px solid #E5E7EB;border-radius:8px;background:var(--bg-base, #f9fafb);cursor:pointer;transition:all .18s ease;text-align:center;font-family:inherit}.inv-detail__discount-card:hover{border-color:var(--accent, #7c3aed);background:#7c3aed0a;box-shadow:0 2px 8px #7c3aed14}.inv-detail__discount-card--selected{border-color:var(--accent, #7c3aed);background:#7c3aed0f;box-shadow:0 0 0 2px #7c3aed26}.inv-detail__dc-value{font-size:1.15rem;font-weight:800;color:var(--accent, #7c3aed);line-height:1.2}.inv-detail__dc-name{font-size:.72rem;font-weight:600;color:var(--text-primary, #1e1b4b);line-height:1.3;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inv-detail__dc-type{font-size:.65rem;font-weight:500;color:var(--text-muted, #9ca3af);text-transform:uppercase;letter-spacing:.04em}.inv-detail__discount-apply-bar{display:flex;align-items:center;gap:8px;padding:10px 12px;margin-top:10px;background:#7c3aed0a;border:1px solid rgba(124,58,237,.15);border-radius:8px;animation:invd-slideDown .2s ease-out;flex-wrap:wrap}.inv-detail__dab-label{font-size:.78rem;color:var(--text-secondary, #6b7280);white-space:nowrap}.inv-detail__dab-label strong{color:var(--accent, #7c3aed)}.inv-detail__dab-select{flex:1;min-width:120px;padding:5px 26px 5px 8px;border:1px solid #E5E7EB;border-radius:6px;font-size:.78rem;font-family:inherit;background:var(--card-bg, #fff);color:var(--text-primary, #1e1b4b);outline:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;cursor:pointer;transition:border-color .15s}.inv-detail__dab-select:focus{border-color:var(--accent, #7c3aed)}.inv-detail__dab-apply{padding:5px 14px;border:none;border-radius:6px;background:var(--accent, #7c3aed);color:#fff;font-size:.78rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s;white-space:nowrap}.inv-detail__dab-apply:hover{background:var(--accent-hover, #6d28d9)}.inv-detail__dab-apply:disabled{opacity:.45;cursor:not-allowed}.inv-detail__dab-cancel{padding:5px 12px;border:1px solid #E5E7EB;border-radius:6px;background:transparent;color:var(--text-secondary, #6b7280);font-size:.78rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .15s;white-space:nowrap}.inv-detail__dab-cancel:hover{background:#0000000a}.inv-detail__manual-waiver{margin-top:10px}.inv-detail__manual-waiver-toggle{background:none;border:none;padding:0;font-size:.76rem;font-weight:600;font-family:inherit;color:var(--text-muted, #9ca3af);cursor:pointer;transition:color .15s}.inv-detail__manual-waiver-toggle:hover{color:var(--text-secondary, #6b7280)}.inv-detail__manual-waiver-form{display:flex;align-items:center;gap:8px;margin-top:8px;animation:invd-slideDown .2s ease-out;flex-wrap:wrap}.inv-detail__manual-waiver-input{width:100px;padding:5px 8px;border:1px solid #E5E7EB;border-radius:6px;font-size:.78rem;font-family:inherit;color:var(--text-primary, #1e1b4b);outline:none;transition:border-color .15s;-moz-appearance:textfield;appearance:textfield}.inv-detail__manual-waiver-input::-webkit-outer-spin-button,.inv-detail__manual-waiver-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.inv-detail__manual-waiver-input:focus{border-color:var(--accent, #7c3aed)}.inv-detail__discount-tag{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:#ef444412;border-radius:100px;font-size:.78rem;font-weight:600;color:#dc2626;white-space:nowrap}.inv-detail__discount-remove{padding:0;border:none;background:none;color:#dc2626;font-size:.9rem;line-height:1;cursor:pointer;opacity:.5;transition:opacity .15s;font-weight:700}.inv-detail__discount-remove:hover{opacity:1}.inv-detail__no-discount{color:var(--text-muted, #9ca3af)}.inv-detail__summary{display:flex;flex-direction:column;align-items:flex-end;gap:6px;padding:4px 0 0}.inv-detail__summary-row{display:flex;align-items:center;gap:24px;font-size:.84rem;min-width:260px;justify-content:space-between}.inv-detail__summary-label{color:var(--text-secondary, #6b7280);font-weight:500}.inv-detail__summary-value{font-variant-numeric:tabular-nums;font-weight:600;color:var(--text-primary, #1e1b4b)}.inv-detail__summary-value--discount{color:#dc2626}.inv-detail__summary-row--total{padding-top:10px;border-top:2px solid #E5E7EB;margin-top:4px}.inv-detail__summary-value--total{font-size:1.15rem;font-weight:700;color:var(--accent, #7c3aed)}.inv-detail__overlay{position:fixed;inset:0;background:#00000040;z-index:110;animation:invd-fadeIn .15s ease}.inv-detail__modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:440px;max-width:90vw;background:var(--card-bg, #ffffff);border-radius:12px;box-shadow:0 16px 48px #0000002e;z-index:120;padding:24px;animation:invd-scaleIn .2s ease}.inv-detail__modal-title{font-size:1.05rem;font-weight:700;color:var(--text-primary, #1e1b4b);margin:0 0 16px}.inv-detail__modal-text{font-size:.88rem;color:var(--text-secondary, #6b7280);margin:0 0 20px;line-height:1.5}.inv-detail__modal-field{margin-bottom:12px}.inv-detail__modal-label{display:block;font-size:.75rem;font-weight:600;color:var(--text-secondary, #6b7280);margin-bottom:4px}.inv-detail__modal-input{width:100%;padding:8px 12px;border:1px solid #E5E7EB;border-radius:6px;font-size:.84rem;font-family:inherit;color:var(--text-primary, #1e1b4b);background:var(--card-bg, #ffffff);outline:none;box-sizing:border-box;transition:border-color .2s,box-shadow .2s}.inv-detail__modal-input:focus{border-color:var(--accent, #7c3aed);box-shadow:0 0 0 3px #7c3aed14}.inv-detail__modal-select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px;cursor:pointer}.inv-detail__modal-divider{display:flex;align-items:center;gap:12px;margin:14px 0;color:var(--text-muted, #9ca3af);font-size:.76rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.inv-detail__modal-divider:before,.inv-detail__modal-divider:after{content:"";flex:1;height:1px;background:#e5e7eb}.inv-detail__modal-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding-top:8px}.inv-detail__modal-btn{padding:8px 18px;border-radius:8px;font-size:.84rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .15s}.inv-detail__modal-btn--cancel{background:transparent;border:1px solid #E5E7EB;color:var(--text-secondary, #6b7280)}.inv-detail__modal-btn--cancel:hover{background:#0000000a}.inv-detail__modal-btn--confirm{background:var(--accent, #7c3aed);border:none;color:#fff}.inv-detail__modal-btn--confirm:hover{background:var(--accent-hover, #6d28d9)}.inv-detail__modal-btn:disabled{opacity:.45;cursor:not-allowed}.inv-detail__modal-input[type=number]::-webkit-outer-spin-button,.inv-detail__modal-input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.inv-detail__modal-input[type=number]{-moz-appearance:textfield;appearance:textfield}@keyframes invd-slideDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes invd-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes invd-slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes invd-scaleIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.95)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes invd-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.si{display:flex;flex-direction:column;gap:0;height:100%}.si__error-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;margin-bottom:14px;background:#ef44440f;border:1px solid rgba(239,68,68,.2);border-radius:8px;color:#dc2626;font-size:.82rem;font-weight:500;animation:si-slideDown .25s ease-out}.si__error-banner svg{flex-shrink:0}.si__error-dismiss{margin-left:auto;background:none;border:none;color:#dc2626;font-size:1.1rem;cursor:pointer;padding:0 4px;line-height:1;opacity:.6;transition:opacity .15s}.si__error-dismiss:hover{opacity:1}.si__toast{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:8px;color:var(--success, #10b981);font-size:.82rem;font-weight:500;margin-bottom:14px;animation:si-slideDown .3s ease;width:fit-content;max-width:100%}.si__toast svg{flex-shrink:0}.si__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.si__toast-dismiss:hover{opacity:1}.si__toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 0 18px;flex-wrap:wrap}.si__toolbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.si__toolbar-right{display:flex;align-items:center;gap:12px}.si__search-wrapper{position:relative;display:flex;align-items:center}.si__search-icon{position:absolute;left:10px;color:var(--text-muted, #9ca3af);pointer-events:none}.si__search{width:280px;padding:7px 32px 7px 34px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);outline:none;transition:border-color .2s,box-shadow .2s;font-family:inherit}.si__search:focus{border-color:var(--accent, #7c3aed);box-shadow:0 0 0 3px #7c3aed14}.si__search::placeholder{color:var(--text-muted, #9ca3af)}.si__search-clear{position:absolute;right:6px;width:22px;height:22px;padding:0;border:none;border-radius:50%;background:var(--input-border, rgba(0, 0, 0, .08));color:var(--text-secondary, #6b7280);font-size:.85rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.si__search-clear:hover{background:#00000024}.si__filter{padding:7px 28px 7px 10px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);cursor:pointer;outline:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;font-family:inherit;transition:border-color .2s}.si__filter:focus{border-color:var(--accent, #7c3aed)}.si__search-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:none;border-radius:8px;background:var(--accent, #7c3aed);color:#fff;font-size:.82rem;font-weight:600;font-family:inherit;cursor:pointer;white-space:nowrap;transition:background .15s}.si__search-btn:hover{background:var(--accent-hover, #6d28d9)}.si__clear-btn{padding:7px 12px;border:1px solid var(--card-border, rgba(0, 0, 0, .12));border-radius:8px;background:transparent;color:var(--text-secondary, #6b7280);font-size:.82rem;font-family:inherit;cursor:pointer;white-space:nowrap;transition:all .15s}.si__clear-btn:hover{background:#0000000a;color:var(--text-primary, #1e1b4b)}.si__record-count{font-size:.8rem;color:var(--text-muted, #9ca3af);font-weight:500;white-space:nowrap}.si__publish-all-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border:none;border-radius:8px;background:var(--accent, #7c3aed);color:#fff;font-size:.82rem;font-weight:600;font-family:inherit;cursor:pointer;white-space:nowrap;transition:background .15s}.si__publish-all-btn:hover{background:var(--accent-hover, #6d28d9)}.si__publish-all-btn svg{flex-shrink:0}.si__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff)}.si__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:auto}.si__th{position:sticky;top:0;z-index:2;padding:10px 12px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap;-webkit-user-select:none;user-select:none}.si__th--amount{text-align:right}.si__th--center{text-align:center}.si__th--actions{text-align:center;width:90px}.si__td{padding:5px 12px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.si__td--inv{font-weight:600}.si__inv-link{background:none;border:none;color:var(--accent, #7c3aed);font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.78rem;font-weight:600;cursor:pointer;padding:0;text-decoration:none;transition:opacity .15s}.si__inv-link:hover{opacity:.75;text-decoration:underline}.si__td--student{font-weight:500}.si__student-name{display:block;font-weight:500}.si__student-enroll{display:block;font-size:11px;font-weight:400;color:var(--text-muted, #888);font-family:monospace;margin-top:1px}.si__td--date{font-variant-numeric:tabular-nums;font-size:.8rem;color:var(--text-secondary, #475569);white-space:nowrap}.si__td--amount{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}.si__td--center,.si__td--actions{text-align:center}.si__muted{color:var(--text-muted, #9ca3af);font-style:italic;font-size:.8rem}.si__row:nth-child(2n)>.si__td{background:var(--row-alt-bg, rgba(0, 0, 0, .015))}.si__row:hover>.si__td{background:var(--row-hover-bg, rgba(124, 58, 237, .03))}.si__badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:100px;font-size:.72rem;font-weight:600;letter-spacing:.02em;white-space:nowrap}.si__badge--paid{background:#22c55e1a;color:#15803d}.si__badge--partial{background:#eab3081f;color:#a16207}.si__badge--overdue{background:#ef444414;color:#dc2626}.si__badge--published{background:#3b82f61a;color:#2563eb}.si__badge--draft,.si__badge--void{background:#6b72801a;color:#4b5563}.si__row-btn{width:28px;height:28px;padding:0;border:1px solid transparent;border-radius:6px;background:none;color:var(--text-muted, #9ca3af);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s;margin:0 2px}.si__row-btn:hover{background:var(--row-hover-bg, rgba(124, 58, 237, .06));color:var(--accent, #7c3aed);border-color:#e5e7eb}.si__row-btn--publish:hover{color:#2563eb;background:#3b82f60f}.si__loading-cell{padding:48px 0;text-align:center}.si__loader{display:inline-flex;gap:6px}.si__loader-dot{width:8px;height:8px;border-radius:50%;background:var(--accent, #7c3aed);animation:si-bounce 1.2s infinite ease-in-out}.si__loader-dot:nth-child(2){animation-delay:.15s}.si__loader-dot:nth-child(3){animation-delay:.3s}.si__empty-cell{padding:60px 0;text-align:center}.si__empty{display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--text-muted, #9ca3af)}.si__empty p{margin:0;font-size:.88rem}.si__pagination{display:flex;align-items:center;justify-content:space-between;padding:14px 0 0;gap:12px;flex-wrap:wrap}.si__pagination-left{display:flex;align-items:center;gap:16px}.si__page-info{font-size:.76rem;color:var(--text-muted, #9ca3af);font-variant-numeric:tabular-nums}.si__pagination-right{display:flex;align-items:center;gap:4px}.si__page-btn{min-width:30px;height:30px;padding:0 6px;border:1px solid #E5E7EB;border-radius:6px;background:var(--card-bg, #ffffff);color:var(--text-secondary, #6b7280);font-size:.78rem;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s;font-family:inherit}.si__page-btn:hover:not(:disabled){background:var(--row-hover-bg, rgba(124, 58, 237, .06));color:var(--accent, #7c3aed);border-color:#7c3aed33}.si__page-btn--active{background:var(--accent, #7c3aed)!important;color:#fff!important;border-color:var(--accent, #7c3aed)!important}.si__page-btn:disabled{opacity:.35;cursor:not-allowed}.si__modal-backdrop{position:fixed;inset:0;background:#00000059;z-index:90;animation:si-fadeIn .2s ease}.si__modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:440px;max-width:92vw;background:var(--card-bg, #ffffff);border-radius:12px;box-shadow:0 16px 48px #0000002e;z-index:100;padding:24px;animation:si-scaleIn .2s ease}.si__modal-title{font-size:1.05rem;font-weight:700;color:var(--text-primary, #1e1b4b);margin:0 0 8px}.si__modal-text{font-size:.88rem;color:var(--text-secondary, #6b7280);margin:0 0 20px;line-height:1.5}.si__modal-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px}.si__modal-btn{padding:8px 18px;border-radius:8px;font-size:.84rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .15s}.si__modal-btn--cancel{background:transparent;border:1px solid var(--card-border, #E5E7EB);color:var(--text-secondary, #6b7280)}.si__modal-btn--cancel:hover{background:#0000000a}.si__modal-btn--confirm{background:var(--accent, #7c3aed);border:none;color:#fff}.si__modal-btn--confirm:hover{background:var(--accent-hover, #6d28d9)}.si__modal-btn:disabled{opacity:.5;cursor:not-allowed}@keyframes si-slideDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes si-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes si-scaleIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.95)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes si-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.collection{display:flex;flex-direction:column;height:100%;position:relative}.collection__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}.collection__header-text{flex:1}.collection__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.collection__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.collection__toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 0 18px;flex-wrap:wrap}.collection__toolbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.collection__toolbar-right{display:flex;align-items:center;gap:12px}.collection__search-wrapper{position:relative;display:flex;align-items:center}.collection__search-icon-sm{position:absolute;left:10px;color:var(--text-muted, #9ca3af);pointer-events:none}.collection__filter-search{width:280px;padding:7px 32px 7px 34px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);outline:none;transition:border-color .2s,box-shadow .2s;font-family:inherit}.collection__filter-search:focus{border-color:var(--accent, #7c3aed);box-shadow:0 0 0 3px #7c3aed14}.collection__filter-search::placeholder{color:var(--text-muted, #9ca3af)}.collection__filter-search-clear{position:absolute;right:6px;width:22px;height:22px;padding:0;border:none;border-radius:50%;background:var(--input-border, rgba(0, 0, 0, .08));color:var(--text-secondary, #6b7280);font-size:.85rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.collection__filter-search-clear:hover{background:#00000024}.collection__filter{padding:7px 28px 7px 10px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);cursor:pointer;outline:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;font-family:inherit;transition:border-color .2s}.collection__filter:focus{border-color:var(--accent, #7c3aed)}.collection__filter:disabled{opacity:.5;cursor:not-allowed}.collection__search-btn-sm{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:none;border-radius:8px;background:var(--accent, #7c3aed);color:#fff;font-size:.82rem;font-weight:600;font-family:inherit;cursor:pointer;white-space:nowrap;transition:background .15s}.collection__search-btn-sm:hover{background:var(--accent-hover, #6d28d9)}.collection__clear-btn{padding:7px 12px;border:1px solid var(--card-border, rgba(0, 0, 0, .12));border-radius:8px;background:transparent;color:var(--text-secondary, #6b7280);font-size:.82rem;font-family:inherit;cursor:pointer;white-space:nowrap;transition:all .15s}.collection__clear-btn:hover{background:#0000000a;color:var(--text-primary, #1e1b4b)}.collection__record-count{font-size:.8rem;color:var(--text-muted, #9ca3af);font-weight:500;white-space:nowrap}.collection__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:8px;color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:16px;animation:coll-slideIn .3s ease;width:fit-content;max-width:100%}.collection__toast svg{flex-shrink:0}.collection__toast-msg{flex:1}.collection__toast-print{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border:1px solid rgba(16,185,129,.35);border-radius:6px;background:#10b9811f;color:#059669;font-size:.78rem;font-weight:600;font-family:inherit;cursor:pointer;white-space:nowrap;transition:all .15s;flex-shrink:0}.collection__toast-print:hover{background:#10b98133;border-color:#10b98180}.collection__toast-print:active{transform:scale(.96)}.collection__toast-close{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:4px;background:transparent;color:var(--text-muted, #94a3b8);cursor:pointer;flex-shrink:0;transition:all .15s}.collection__toast-close:hover{background:#0000000f;color:var(--text-primary, #1e293b)}.collection__results{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:var(--card-bg, #ffffff);border:1px solid #E5E7EB;border-radius:8px;box-shadow:0 8px 24px #0000001f;z-index:50;max-height:260px;overflow-y:auto;animation:coll-slideIn .15s ease}.collection__result-item{display:flex;flex-direction:column;gap:2px;width:100%;padding:10px 16px;border:none;border-bottom:1px solid rgba(0,0,0,.04);background:transparent;cursor:pointer;font-family:inherit;text-align:left;transition:background .12s}.collection__result-item:last-child{border-bottom:none}.collection__result-item:hover{background:#667eea0a}.collection__result-main{display:flex;align-items:center;gap:10px}.collection__result-inv{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.78rem;font-weight:600;color:#667eea}.collection__result-name{font-size:.84rem;font-weight:600;color:var(--text-primary, #1e293b)}.collection__result-meta{display:flex;align-items:center;gap:12px;padding-left:0}.collection__result-title{font-size:.72rem;color:var(--text-muted, #94a3b8)}.collection__result-balance{font-size:.72rem;font-weight:600;color:#dc2626;font-variant-numeric:tabular-nums}.collection__result-empty{padding:16px;text-align:center;font-size:.82rem;color:var(--text-muted, #94a3b8)}.collection__student-list{margin-bottom:16px;animation:coll-slideIn .2s ease}.collection__student-loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:32px 16px;font-size:.85rem;color:var(--text-secondary, #6b7280)}.collection__student-empty{padding:32px 16px;text-align:center;font-size:.85rem;color:var(--text-muted, #94a3b8)}.collection__student-table-wrap{border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff);overflow:auto;max-height:340px;box-shadow:0 1px 3px #0000000a}.collection__student-table{width:100%;border-collapse:collapse;font-size:.82rem}.collection__student-th{position:sticky;top:0;z-index:2;padding:8px 12px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap}.collection__student-td{padding:8px 12px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle}.collection__student-td--name{font-weight:600}.collection__student-td--enroll{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.76rem;color:#667eea;font-weight:600}.collection__student-row:nth-child(2n)>.collection__student-td{background:#00000004}.collection__student-row:hover>.collection__student-td{background:#667eea08}.collection__student-row:last-child>.collection__student-td{border-bottom:none}.collection__student-status{display:inline-block;padding:1px 8px;border-radius:100px;font-size:.68rem;font-weight:600;text-transform:capitalize}.collection__student-status--active{background:#10b9811a;color:#059669}.collection__student-status--inactive{background:#ef444414;color:#dc2626}.collection__student-status--graduated{background:#667eea14;color:#667eea}.collection__student-status--transferred{background:#f59e0b1a;color:#d97706}.collection__student-name-btn{background:none;border:none;padding:0;font:inherit;font-weight:600;color:#667eea;cursor:pointer;text-align:left;transition:color .15s}.collection__student-name-btn:hover{color:#4f46e5;text-decoration:underline}.collection__invoices{margin-bottom:16px;background:var(--card-bg, #ffffff);border:1px solid #E5E7EB;border-radius:10px;padding:20px;box-shadow:0 1px 3px #0000000a;animation:coll-slideIn .2s ease}.collection__invoices-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}.collection__invoices-title{font-size:1.05rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0}.collection__invoices-meta{display:flex;align-items:center;gap:12px;margin-top:4px;font-size:.78rem;color:var(--text-secondary, #6b7280)}.collection__invoices-loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:32px 16px;font-size:.85rem;color:var(--text-secondary, #6b7280)}.collection__invoices-empty{padding:32px 16px;text-align:center;font-size:.85rem;color:var(--text-muted, #94a3b8)}.collection__invoices-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.collection__inv-card{display:block;width:100%;text-align:left;font-family:inherit;padding:14px;border:1px solid #E5E7EB;border-radius:10px;background:var(--card-bg, #ffffff);cursor:default;transition:all .15s}.collection__inv-card--pending{border-left:3px solid #f59e0b;background:#f59e0b08;cursor:pointer}.collection__inv-card--pending:hover:not(:disabled){border-color:#f59e0b;box-shadow:0 2px 8px #f59e0b1f;transform:translateY(-1px)}.collection__inv-card--paid{opacity:.6}.collection__inv-card:disabled{cursor:default}.collection__inv-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.collection__inv-card-inv{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.76rem;font-weight:600;color:#667eea}.collection__inv-card-status{display:inline-block;padding:1px 8px;border-radius:100px;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em}.collection__inv-card-status--draft{background:#94a3b81f;color:#64748b}.collection__inv-card-status--published{background:#3b82f61a;color:#2563eb}.collection__inv-card-status--partial{background:#f59e0b1a;color:#d97706}.collection__inv-card-status--overdue{background:#ef44441a;color:#dc2626}.collection__inv-card-status--paid{background:#10b9811a;color:#059669}.collection__inv-card-title{font-size:.88rem;font-weight:600;color:var(--text-primary, #1e293b);margin-bottom:10px}.collection__inv-card-row{display:flex;justify-content:space-between;align-items:center;padding:3px 0;font-size:.8rem}.collection__inv-card-label{color:var(--text-secondary, #6b7280)}.collection__inv-card-val{font-weight:600;font-variant-numeric:tabular-nums;color:var(--text-primary, #1e293b)}.collection__inv-card-val--paid{color:#15803d}.collection__inv-card-val--balance{color:#dc2626;font-weight:700}.collection__inv-card-row--balance{margin-top:4px;padding-top:6px;border-top:1px solid #E5E7EB}.collection__inv-card-footer{display:flex;justify-content:space-between;align-items:center;margin-top:8px;padding-top:8px;border-top:1px dashed rgba(0,0,0,.06);font-size:.72rem;color:var(--text-muted, #94a3b8)}.collection__inv-card-action{margin-top:10px;padding:7px 0;text-align:center;font-size:.78rem;font-weight:700;color:#059669;background:#10b98114;border-radius:6px;letter-spacing:.01em}.collection__student-row--active>.collection__student-td{background:#667eea0f}.collection__empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:50px 24px}.collection__empty-icon{color:var(--text-muted, #94a3b8);margin-bottom:16px;opacity:.5}.collection__empty-title{font-size:1.1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 6px}.collection__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0;max-width:380px}.collection__split{display:flex;gap:16px;flex:1;min-height:320px;margin-bottom:16px}.collection__left{flex:1;background:var(--card-bg, #ffffff);border:1px solid #E5E7EB;border-radius:10px;padding:20px;display:flex;flex-direction:column;box-shadow:0 1px 3px #0000000a}.collection__left-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:4px}.collection__inv-title{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.88rem;font-weight:700;color:#667eea;margin:0}.collection__inv-student{font-size:1.1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:4px 0 0}.collection__left-close{width:28px;height:28px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:transparent;color:var(--text-muted, #94a3b8);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}.collection__left-close:hover{background:var(--bg-input, #f8fafc);color:var(--text-primary, #1e293b)}.collection__inv-desc{font-size:.82rem;color:var(--text-secondary, #6b7280);margin:2px 0 16px}.collection__left-section{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary, #475569);margin:0 0 8px}.collection__left-items{flex:1}.collection__item-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid rgba(0,0,0,.04)}.collection__item-row:last-child{border-bottom:none}.collection__item-row--total{border-top:1px solid #E5E7EB;margin-top:4px;padding-top:8px;font-weight:700}.collection__item-name{font-size:.82rem;color:var(--text-primary, #1e293b)}.collection__item-amount{font-size:.82rem;font-variant-numeric:tabular-nums;color:var(--text-primary, #1e293b);font-weight:500}.collection__left-summary{margin-top:16px;padding-top:12px;border-top:1px solid #E5E7EB}.collection__summary-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;font-size:.82rem;color:var(--text-secondary, #6b7280)}.collection__summary-row--balance{margin-top:4px;padding-top:8px;border-top:1px solid #E5E7EB}.collection__summary-val{font-weight:600;font-variant-numeric:tabular-nums}.collection__summary-val--paid{color:#15803d}.collection__summary-val--balance{font-size:1.5rem;font-weight:800;color:#dc2626}.collection__right{width:360px;flex-shrink:0;background:var(--card-bg, #ffffff);border:1px solid #E5E7EB;border-radius:10px;padding:20px;display:flex;flex-direction:column;box-shadow:0 1px 3px #0000000a}.collection__right-title{font-size:.8rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;margin:0 0 16px;padding-bottom:10px;border-bottom:1px solid var(--border-color, #e2e8f0)}.collection__pay-field{margin-bottom:16px}.collection__pay-field--slide{animation:coll-slideDown .2s ease}.collection__pay-label{font-size:.72rem;font-weight:700;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.03em;display:block;margin-bottom:6px}.collection__pay-amount-wrap{display:flex;align-items:center;border:2px solid var(--border-color, #e2e8f0);border-radius:8px;background:var(--card-bg, #ffffff);transition:border-color .15s;overflow:hidden}.collection__pay-amount-wrap:focus-within{border-color:#667eea99;box-shadow:0 0 0 3px #667eea1a}.collection__pay-amount-wrap--error{border-color:#ef4444!important}.collection__pay-amount-wrap--error:focus-within{box-shadow:0 0 0 3px #ef44441a}.collection__pay-currency{padding:0 0 0 14px;font-size:1.5rem;font-weight:700;color:var(--text-muted, #94a3b8)}.collection__pay-amount{flex:1;border:none;outline:none;padding:12px 14px;font-size:1.75rem;font-weight:700;font-family:inherit;font-variant-numeric:tabular-nums;color:var(--text-primary, #1e293b);background:transparent}.collection__pay-amount::-webkit-outer-spin-button,.collection__pay-amount::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.collection__pay-amount[type=number]{-moz-appearance:textfield;appearance:textfield}.collection__pay-error{font-size:.72rem;color:#ef4444;margin:4px 0 0;animation:coll-slideIn .15s ease}.collection__pay-ref{width:100%;padding:9px 12px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.875rem;font-family:inherit;color:var(--text-primary, #1e293b);outline:none;transition:border-color .15s;box-sizing:border-box}.collection__pay-ref:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.collection__pay-ref::placeholder{color:var(--text-placeholder, #94a3b8)}.collection__method-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.collection__method-btn{display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 4px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:var(--card-bg, #ffffff);cursor:pointer;font-family:inherit;transition:all .15s}.collection__method-btn:hover{border-color:#667eea66;background:#667eea08}.collection__method-btn--active{border-color:#667eea;background:#667eea14;box-shadow:0 0 0 2px #667eea26}.collection__method-icon{font-size:1.125rem}.collection__method-label{font-size:.62rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.02em;white-space:nowrap}.collection__collect-btn{margin-top:auto;width:100%;padding:14px 24px;background:linear-gradient(135deg,#10b981,#059669);color:#fff;font-size:1rem;font-weight:700;border:none;border-radius:10px;cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 14px #10b9814d;display:flex;align-items:center;justify-content:center;gap:10px;position:relative;overflow:hidden}.collection__collect-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.15) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.collection__collect-btn:hover:before{opacity:1}.collection__collect-btn:hover{transform:translateY(-2px);box-shadow:0 6px 22px #10b98166}.collection__collect-btn:active{transform:translateY(0)}.collection__collect-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.collection__spinner{animation:coll-spin 1.2s linear infinite}.collection__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}@keyframes coll-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes coll-slideDown{0%{opacity:0;max-height:0}to{opacity:1;max-height:100px}}@keyframes coll-spin{to{transform:rotate(360deg)}}.collection__search-input:focus-visible,.collection__pay-amount:focus-visible,.collection__pay-ref:focus-visible,.collection__collect-btn:focus-visible,.collection__method-btn:focus-visible{outline:2px solid rgba(102,126,234,.5);outline-offset:2px}.fleet{display:flex;flex-direction:column;height:100%;position:relative}.fleet__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px;gap:16px}.fleet__header-text{flex:1}.fleet__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.fleet__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.fleet__header-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.fleet__search-wrap{position:relative;display:flex;align-items:center}.fleet__search-icon{position:absolute;left:10px;color:var(--text-muted, #9ca3af);pointer-events:none}.fleet__search{width:200px;padding:8px 12px 8px 34px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #fff);font-size:.82rem;color:var(--text-primary, #1e1b4b);outline:none;transition:border-color .2s,box-shadow .2s;font-family:inherit}.fleet__search:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.fleet__search::placeholder{color:var(--text-muted, #9ca3af)}.fleet__add-btn{padding:9px 22px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden}.fleet__add-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.fleet__add-btn:hover:before{opacity:1}.fleet__add-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.fleet__add-btn:active{transform:translateY(0)}.fleet__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:8px;color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:16px;animation:fleet-si .3s ease;width:fit-content;max-width:100%}.fleet__toast svg{flex-shrink:0}.fleet__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.fleet__toast-dismiss:hover{opacity:1}.fleet__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #fff);box-shadow:0 1px 3px #0000000a}.fleet__table{width:100%;border-collapse:collapse;font-size:.82rem}.fleet__th{position:sticky;top:0;z-index:2;padding:9px 14px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap;-webkit-user-select:none;user-select:none}.fleet__th--center{text-align:center}.fleet__th--actions{text-align:right;width:100px}.fleet__td{padding:8px 14px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.fleet__td--vno{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.78rem;font-weight:600;color:#667eea;letter-spacing:.02em}.fleet__td--center{text-align:center}.fleet__td--capacity{font-variant-numeric:tabular-nums;font-weight:600}.fleet__td--driver{font-weight:500}.fleet__td--actions{text-align:right}.fleet__row:nth-child(2n)>.fleet__td{background:#00000004}.fleet__row:hover>.fleet__td{background:#667eea08}.fleet__row:last-child>.fleet__td{border-bottom:none}.fleet__compliance{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:6px;font-size:.78rem;font-variant-numeric:tabular-nums;white-space:nowrap}.fleet__compliance--valid{color:var(--text-primary, #1e293b)}.fleet__compliance--warning{background:#eab3081f;color:#a16207;font-weight:600}.fleet__compliance--expired{background:#ef444414;color:#dc2626;font-weight:600}.fleet__status{display:inline-flex;align-items:center;padding:2px 10px;border-radius:100px;font-size:.72rem;font-weight:600;letter-spacing:.02em}.fleet__status--active{background:#22c55e1a;color:#15803d}.fleet__status--maintenance{background:#ef444414;color:#dc2626}.fleet__row-btn{padding:4px 10px;background:transparent;color:var(--text-secondary, #475569);font-size:.78rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;cursor:pointer;font-family:inherit;transition:all .2s ease;display:inline-flex;align-items:center;gap:4px;margin-left:4px}.fleet__row-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.fleet__row-btn--delete{color:#ef4444;border-color:#ef44444d}.fleet__row-btn--delete:hover{background:#ef44440f;border-color:#ef444480}.fleet__loading{padding:60px 0;text-align:center;flex:1;display:flex;align-items:center;justify-content:center}.fleet__loader{display:inline-flex;gap:6px}.fleet__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:fleet-bounce 1.2s infinite ease-in-out}.fleet__loader-dot:nth-child(2){animation-delay:.15s}.fleet__loader-dot:nth-child(3){animation-delay:.3s}.fleet__overlay{position:fixed;inset:0;background:#0f172a59;z-index:90;animation:fleet-fi .2s ease}.fleet__drawer{position:fixed;right:0;top:0;bottom:0;width:480px;max-width:92vw;background:var(--bg-base, #f3f4f6);z-index:100;display:flex;flex-direction:column;box-shadow:-8px 0 30px #0000001f;animation:fleet-sir .3s ease}.fleet__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #fff)}.fleet__drawer-title{font-size:1.125rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0}.fleet__drawer-close{width:32px;height:32px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.fleet__drawer-close:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.fleet__drawer-body{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}.fleet__card{background:var(--card-bg, #fff);border:1px solid var(--card-border, #e5e7eb);border-radius:12px;padding:16px;box-shadow:0 1px 3px #0000000a}.fleet__card-title{font-size:.8rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border-color, #e2e8f0)}.fleet__field{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.fleet__field:last-child{margin-bottom:0}.fleet__form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.fleet__label{font-size:.75rem;font-weight:700;color:var(--text-secondary, #475569)}.fleet__label--required:after{content:" *";color:var(--error, #ef4444)}.fleet__input{width:100%;padding:8px 12px;background-color:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;color:var(--text-primary, #1e293b);font-size:.875rem;font-family:inherit;outline:none;transition:all .2s ease;box-sizing:border-box}select.fleet__input{padding-right:32px}.fleet__input::placeholder{color:var(--text-placeholder, #94a3b8)}.fleet__input:focus{background-color:var(--bg-input-focus, #fff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.fleet__input--error{border-color:var(--error, #ef4444)!important}.fleet__error{font-size:.72rem;color:var(--error, #ef4444);margin:0;animation:fleet-si .2s ease}.fleet__toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.fleet__toggle-info{display:flex;flex-direction:column;gap:2px}.fleet__toggle-label{font-size:.875rem;font-weight:500;color:var(--text-primary, #1e293b)}.fleet__toggle-desc{font-size:.75rem;color:var(--text-muted, #94a3b8)}.fleet__toggle{position:relative;width:44px;height:24px;flex-shrink:0}.fleet__toggle input{opacity:0;width:0;height:0;position:absolute}.fleet__toggle-track{position:absolute;inset:0;background:var(--border-color, #d1d5db);border-radius:12px;cursor:pointer;transition:background .25s ease}.fleet__toggle-track:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .25s ease;box-shadow:0 1px 3px #00000026}.fleet__toggle input:checked+.fleet__toggle-track{background:#667eea}.fleet__toggle input:checked+.fleet__toggle-track:after{transform:translate(20px)}.fleet__timestamps{padding-top:12px;border-top:1px solid var(--border-color, #e2e8f0);display:flex;flex-direction:column;gap:2px}.fleet__timestamp{font-size:.7rem;color:var(--text-muted, #94a3b8)}.fleet__drawer-footer{display:flex;align-items:center;gap:12px;padding:16px 24px;border-top:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #fff)}.fleet__submit{padding:10px 28px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.9375rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;justify-content:center;gap:8px;position:relative;overflow:hidden}.fleet__submit:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.fleet__submit:hover:before{opacity:1}.fleet__submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.fleet__submit:active{transform:translateY(0)}.fleet__submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.fleet__cancel{padding:10px 20px;background:transparent;color:var(--text-secondary, #475569);font-size:.9375rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;cursor:pointer;font-family:inherit;transition:all .2s ease}.fleet__cancel:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.fleet__spinner{animation:fleet-spin 1.2s linear infinite}.fleet__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}.fleet__confirm-overlay{position:fixed;inset:0;background:#0f172a80;z-index:200;display:flex;align-items:center;justify-content:center;animation:fleet-fi .15s ease}.fleet__confirm-modal{background:var(--card-bg, #fff);border-radius:12px;padding:28px;max-width:400px;width:90%;box-shadow:0 20px 60px #0003;animation:fleet-si .2s ease}.fleet__confirm-title{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 8px}.fleet__confirm-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0 0 20px;line-height:1.6}.fleet__confirm-actions{display:flex;gap:10px;justify-content:flex-end}.fleet__confirm-delete{padding:8px 20px;border:none;border-radius:8px;background:#ef4444;color:#fff;font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s}.fleet__confirm-delete:hover{background:#dc2626}.fleet__confirm-cancel{padding:8px 20px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer}.fleet__confirm-cancel:hover{background:var(--bg-input, #f8fafc)}@keyframes fleet-si{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes fleet-fi{0%{opacity:0}to{opacity:1}}@keyframes fleet-sir{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes fleet-spin{to{transform:rotate(360deg)}}@keyframes fleet-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.routes{display:flex;flex-direction:column;height:100%;position:relative}.routes__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px;gap:16px}.routes__header-text{flex:1}.routes__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.routes__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.routes__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:8px;color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:16px;animation:rt-si .3s ease;width:fit-content;max-width:100%}.routes__toast svg{flex-shrink:0}.routes__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.routes__toast-dismiss:hover{opacity:1}.routes__loading{padding:60px 0;text-align:center;flex:1;display:flex;align-items:center;justify-content:center}.routes__loader{display:inline-flex;gap:6px}.routes__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:rt-bounce 1.2s infinite ease-in-out}.routes__loader-dot:nth-child(2){animation-delay:.15s}.routes__loader-dot:nth-child(3){animation-delay:.3s}.routes__split{flex:1;display:flex;gap:0;border:1px solid #E5E7EB;border-radius:8px;overflow:hidden;background:var(--card-bg, #fff);box-shadow:0 1px 3px #0000000a;min-height:340px}.routes__left{width:240px;flex-shrink:0;border-right:1px solid #E5E7EB;display:flex;flex-direction:column;background:var(--table-header-bg, #f8f8fb)}.routes__section-heading{font-size:.74rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;margin:0;padding:12px 14px 8px}.routes__route-list{flex:1;overflow-y:auto}.routes__route-item{display:flex;flex-direction:column;gap:4px;width:100%;padding:10px 14px;background:transparent;border:none;border-bottom:1px solid #E5E7EB;cursor:pointer;font-family:inherit;text-align:left;transition:background .15s}.routes__route-item:hover{background:#667eea0a}.routes__route-item--active{background:var(--card-bg, #fff);border-left:3px solid #667eea}.routes__route-main{display:flex;align-items:center;justify-content:space-between;gap:6px}.routes__route-name{font-size:.84rem;font-weight:600;color:var(--text-primary, #1e293b)}.routes__route-status{font-size:.62rem;font-weight:600;padding:1px 6px;border-radius:100px;background:#6b72801a;color:#4b5563}.routes__route-status--active{background:#22c55e1a;color:#15803d}.routes__route-meta{display:flex;align-items:center;gap:10px}.routes__route-vehicle{font-size:.7rem;color:var(--text-muted, #94a3b8);font-family:SF Mono,Fira Code,Consolas,monospace}.routes__route-stops{font-size:.7rem;color:var(--text-muted, #94a3b8)}.routes__right{flex:1;display:flex;flex-direction:column}.routes__right-header{display:flex;align-items:flex-start;justify-content:space-between;padding:14px 16px 10px;border-bottom:1px solid #E5E7EB;gap:12px}.routes__right-title{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0}.routes__right-desc{font-size:.76rem;color:var(--text-muted, #94a3b8);margin:2px 0 0}.routes__right-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.routes__add-stop-select{padding:6px 28px 6px 10px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.78rem;font-family:inherit;color:var(--text-secondary, #475569);background:var(--card-bg, #fff);cursor:pointer;outline:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.routes__add-stop-select:focus{border-color:#667eea80;box-shadow:0 0 0 2px #667eea1a}.routes__save-btn{padding:7px 18px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.8rem;font-weight:600;border:none;border-radius:6px;cursor:pointer;font-family:inherit;transition:all .2s;box-shadow:0 2px 8px #667eea40;white-space:nowrap}.routes__save-btn:hover{transform:translateY(-1px);box-shadow:0 4px 14px #667eea59}.routes__save-btn:active{transform:translateY(0)}.routes__sequence{flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:8px}.routes__sequence-empty{padding:40px 16px;text-align:center;color:var(--text-muted, #94a3b8);font-size:.84rem}.routes__stop-card{display:flex;align-items:stretch;gap:10px;background:var(--card-bg, #fff);border:1px solid #E5E7EB;border-radius:8px;padding:10px 12px;transition:box-shadow .15s,border-color .15s}.routes__stop-card:hover{border-color:#667eea4d;box-shadow:0 2px 8px #0000000d}.routes__stop-order{display:flex;flex-direction:column;align-items:center;gap:2px;width:24px;flex-shrink:0}.routes__order-btn{width:22px;height:18px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:4px;background:transparent;color:var(--text-secondary, #475569);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .12s}.routes__order-btn:hover:not(:disabled){background:#667eea0f;border-color:#667eea4d;color:#667eea}.routes__order-btn:disabled{opacity:.25;cursor:default}.routes__order-num{font-size:.72rem;font-weight:700;color:var(--text-muted, #94a3b8);line-height:1}.routes__stop-content{flex:1;display:flex;flex-direction:column;gap:6px}.routes__stop-name{font-size:.88rem;font-weight:600;color:var(--text-primary, #1e293b)}.routes__stop-fields{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.routes__stop-field{display:flex;flex-direction:column;gap:2px}.routes__stop-label{font-size:.62rem;font-weight:600;color:var(--text-muted, #94a3b8);text-transform:uppercase;letter-spacing:.03em}.routes__stop-time{padding:4px 6px;border:1px solid var(--border-color, #d1d5db);border-radius:4px;font-size:.8rem;font-family:inherit;font-variant-numeric:tabular-nums;color:var(--text-primary, #1e293b);outline:none;width:100px;transition:border-color .15s}.routes__stop-time:focus{border-color:#667eea80;box-shadow:0 0 0 2px #667eea1a}.routes__stop-fee-wrap{display:flex;align-items:center;gap:2px}.routes__stop-currency{font-size:.78rem;color:var(--text-muted, #94a3b8);font-weight:500}.routes__stop-fee{width:80px;padding:4px 6px;border:1px solid var(--border-color, #d1d5db);border-radius:4px;font-size:.82rem;font-family:inherit;font-variant-numeric:tabular-nums;text-align:right;color:var(--text-primary, #1e293b);outline:none;transition:border-color .15s}.routes__stop-fee:focus{border-color:#667eea80;box-shadow:0 0 0 2px #667eea1a}.routes__stop-fee::-webkit-outer-spin-button,.routes__stop-fee::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.routes__stop-fee[type=number]{-moz-appearance:textfield;appearance:textfield}.routes__stop-remove{width:28px;height:28px;padding:0;border:1px solid rgba(239,68,68,.3);border-radius:6px;background:transparent;color:#ef4444;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0;align-self:center}.routes__stop-remove:hover{background:#ef44440f;border-color:#ef444480}.routes__total-bar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-top:1px solid #E5E7EB;background:var(--table-header-bg, #f8f8fb)}.routes__total-label{font-size:.76rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.03em}.routes__total-fee{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);font-variant-numeric:tabular-nums}@keyframes rt-si{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes rt-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.routes__left-header{display:flex;align-items:center;justify-content:space-between;padding:12px 10px 8px 14px}.routes__left-header .routes__section-heading{padding:0}.routes__new-route-btn{width:26px;height:26px;padding:0;display:flex;align-items:center;justify-content:center;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#475569;cursor:pointer;transition:all .2s;flex-shrink:0}.routes__new-route-btn:hover{background:#667eea14;border-color:#667eea4d;color:#667eea}.routes__new-route-btn--active{background:#667eea1a;border-color:#667eea66;color:#667eea;transform:rotate(45deg)}.routes__create-form{padding:12px 14px;border-bottom:1px solid #E5E7EB;display:flex;flex-direction:column;gap:10px;background:#667eea08;animation:routes-form-in .2s ease}.routes__create-field{display:flex;flex-direction:column;gap:3px}.routes__create-label{font-size:.65rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.03em}.routes__create-req{color:#ef4444}.routes__create-input,.routes__create-select{padding:6px 8px;border:1px solid var(--border-color, #d1d5db);border-radius:5px;font-size:.78rem;font-family:inherit;color:var(--text-primary, #1e293b);background-color:var(--card-bg, #fff);outline:none;transition:border-color .15s,box-shadow .15s;width:100%;box-sizing:border-box}.routes__create-select{padding-right:28px}.routes__create-input::placeholder{color:var(--text-muted, #94a3b8)}.routes__create-input:focus,.routes__create-select:focus{border-color:#667eea80;box-shadow:0 0 0 2px #667eea1a}.routes__create-input--error{border-color:#ef4444}.routes__create-input--error:focus{border-color:#ef4444;box-shadow:0 0 0 2px #ef44441a}.routes__create-error{font-size:.68rem;color:#ef4444;margin:0}.routes__create-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;padding-right:24px;cursor:pointer}.routes__create-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 0}.routes__create-toggle-text{font-size:.72rem;font-weight:500;color:var(--text-secondary, #475569)}.routes__create-toggle{position:relative;display:inline-block;width:34px;height:18px;cursor:pointer;flex-shrink:0}.routes__create-toggle input{opacity:0;width:0;height:0;position:absolute}.routes__create-toggle-track{position:absolute;inset:0;background:#d1d5db;border-radius:999px;transition:background .2s}.routes__create-toggle-track:after{content:"";position:absolute;width:14px;height:14px;left:2px;top:2px;background:#fff;border-radius:50%;transition:transform .2s;box-shadow:0 1px 2px #00000026}.routes__create-toggle input:checked+.routes__create-toggle-track{background:#667eea}.routes__create-toggle input:checked+.routes__create-toggle-track:after{transform:translate(16px)}.routes__create-actions{display:flex;gap:6px;padding-top:2px}.routes__create-submit{flex:1;padding:7px 12px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.74rem;font-weight:600;border:none;border-radius:5px;cursor:pointer;font-family:inherit;transition:all .15s;box-shadow:0 2px 6px #667eea40}.routes__create-submit:hover:not(:disabled){box-shadow:0 4px 10px #667eea59;transform:translateY(-1px)}.routes__create-submit:disabled{opacity:.7;cursor:default}.routes__create-cancel{padding:7px 12px;background:transparent;color:var(--text-secondary, #475569);font-size:.74rem;font-weight:500;border:1px solid var(--border-color, #d1d5db);border-radius:5px;cursor:pointer;font-family:inherit;transition:all .15s}.routes__create-cancel:hover:not(:disabled){background:#00000008;border-color:var(--text-secondary, #94a3b8)}.routes__create-cancel:disabled{opacity:.5;cursor:default}.routes__empty-list{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:36px 16px;text-align:center;color:var(--text-muted, #94a3b8);gap:4px}.routes__empty-list-title{font-size:.82rem;font-weight:600;margin:6px 0 0;color:var(--text-secondary, #475569)}.routes__empty-list-hint{font-size:.72rem;color:var(--text-muted, #94a3b8)}.routes__empty-right{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px;text-align:center;flex:1}.routes__empty-right-icon{color:var(--text-muted, #94a3b8);opacity:.5}.routes__empty-right-title{font-size:.92rem;font-weight:600;color:var(--text-secondary, #475569);margin:14px 0 4px}.routes__empty-right-desc{font-size:.8rem;color:var(--text-muted, #94a3b8);max-width:280px;line-height:1.5}.routes__manage-stops-btn{display:flex;align-items:center;gap:6px;padding:7px 14px;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#475569;font-size:.8rem;font-weight:500;font-family:inherit;cursor:pointer;transition:all .15s;flex-shrink:0}.routes__manage-stops-btn:hover{border-color:#667eea4d;color:#667eea;background:#667eea0a}.routes__manage-stops-btn--active{border-color:#667eea66;color:#667eea;background:#667eea0f}.routes__stops-panel{border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #fff);box-shadow:0 1px 3px #0000000a;margin-bottom:14px;animation:routes-form-in .2s ease;overflow:hidden}.routes__stops-panel-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid #E5E7EB;background:var(--table-header-bg, #f8f8fb)}.routes__stops-panel-title{font-size:.82rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0}.routes__stops-panel-count{font-size:.7rem;font-weight:500;color:var(--text-muted, #94a3b8)}.routes__stops-panel-body{padding:12px 14px;display:flex;flex-direction:column;gap:10px}.routes__stop-create-row{display:flex;align-items:flex-end;gap:8px}.routes__stop-create-field{display:flex;flex-direction:column;gap:3px}.routes__stop-create-field--name{flex:2;min-width:0}.routes__stop-create-field--coord{flex:1;min-width:0}.routes__stop-create-btn{display:flex;align-items:center;gap:4px;padding:6px 14px;height:30px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.74rem;font-weight:600;border:none;border-radius:5px;cursor:pointer;font-family:inherit;transition:all .15s;box-shadow:0 2px 6px #667eea40;white-space:nowrap;flex-shrink:0}.routes__stop-create-btn:hover:not(:disabled){box-shadow:0 4px 10px #667eea59;transform:translateY(-1px)}.routes__stop-create-btn:disabled{opacity:.7;cursor:default}.routes__stop-create-spinner{animation:routes-spin .8s linear infinite}.routes__stops-list{display:flex;flex-wrap:wrap;gap:6px;max-height:160px;overflow-y:auto}.routes__stops-list-item{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border:1px solid #E5E7EB;border-radius:100px;background:var(--table-header-bg, #f8f8fb);font-size:.74rem;color:var(--text-primary, #1e293b);transition:border-color .15s}.routes__stops-list-item:hover{border-color:#667eea4d}.routes__stops-list-icon{color:#667eea;flex-shrink:0;width:12px;height:12px}.routes__stops-list-name{font-weight:600}.routes__stops-list-coords{font-size:.65rem;color:var(--text-muted, #94a3b8);font-variant-numeric:tabular-nums}.routes__stops-list-empty{font-size:.78rem;color:var(--text-muted, #94a3b8);margin:0;text-align:center;padding:8px 0}@keyframes routes-spin{to{transform:rotate(360deg)}}@keyframes routes-form-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.routes__pending-stop{margin:0 16px;padding:14px 16px;border:1.5px solid rgba(102,126,234,.3);border-radius:10px;background:linear-gradient(135deg,#667eea0a,#764ba208);animation:routes-form-in .25s ease;display:flex;flex-direction:column;gap:12px}.routes__pending-stop-header{display:flex;align-items:center;gap:8px}.routes__pending-stop-icon{color:#667eea;flex-shrink:0}.routes__pending-stop-name{font-size:.92rem;font-weight:700;color:var(--text-primary, #1e293b)}.routes__pending-stop-fields{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap}.routes__pending-stop-field{display:flex;flex-direction:column;gap:3px}.routes__pending-stop-actions{display:flex;gap:8px;padding-top:2px}.routes__pending-stop-add{display:flex;align-items:center;gap:5px;padding:7px 18px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.78rem;font-weight:600;border:none;border-radius:6px;cursor:pointer;font-family:inherit;transition:all .15s;box-shadow:0 2px 8px #667eea40;white-space:nowrap}.routes__pending-stop-add:hover:not(:disabled){box-shadow:0 4px 12px #667eea59;transform:translateY(-1px)}.routes__pending-stop-add:disabled{opacity:.7;cursor:default}.routes__pending-stop-cancel{padding:7px 14px;background:transparent;color:var(--text-secondary, #475569);font-size:.78rem;font-weight:500;border:1px solid var(--border-color, #d1d5db);border-radius:6px;cursor:pointer;font-family:inherit;transition:all .15s}.routes__pending-stop-cancel:hover:not(:disabled){background:#00000008;border-color:var(--text-secondary, #94a3b8)}.routes__pending-stop-cancel:disabled{opacity:.5;cursor:default}.alloc{display:flex;flex-direction:column;height:100%;position:relative}.alloc__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px;gap:16px}.alloc__header-text{flex:1}.alloc__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.alloc__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.alloc__header-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.alloc__search-wrap{position:relative;display:flex;align-items:center}.alloc__search-icon{position:absolute;left:10px;color:var(--text-muted, #9ca3af);pointer-events:none}.alloc__search{width:200px;padding:8px 12px 8px 34px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #fff);font-size:.82rem;color:var(--text-primary, #1e1b4b);outline:none;transition:border-color .2s,box-shadow .2s;font-family:inherit}.alloc__search:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.alloc__search::placeholder{color:var(--text-muted, #9ca3af)}.alloc__add-btn{padding:9px 22px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden}.alloc__add-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s}.alloc__add-btn:hover:before{opacity:1}.alloc__add-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.alloc__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:8px;color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:16px;animation:al-si .3s ease;width:fit-content;max-width:100%}.alloc__toast svg{flex-shrink:0}.alloc__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.alloc__toast-dismiss:hover{opacity:1}.alloc__capacity-row{display:flex;gap:12px;margin-bottom:16px;overflow-x:auto;padding-bottom:4px}.alloc__cap-card{flex:0 0 auto;min-width:220px;background:var(--card-bg, #fff);border:1px solid #E5E7EB;border-radius:10px;padding:14px 16px;box-shadow:0 1px 3px #0000000a}.alloc__cap-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.alloc__cap-route{font-size:.8rem;font-weight:600;color:var(--text-primary, #1e293b)}.alloc__cap-vehicle{font-size:.68rem;color:var(--text-muted, #94a3b8);font-family:SF Mono,Fira Code,Consolas,monospace}.alloc__cap-stats{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:6px}.alloc__cap-count{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);font-variant-numeric:tabular-nums}.alloc__cap-count--full{color:#dc2626}.alloc__cap-pct{font-size:.72rem;font-weight:600;color:var(--text-muted, #94a3b8)}.alloc__cap-bar{height:6px;background:#0000000f;border-radius:3px;overflow:hidden}.alloc__cap-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,#667eea,#764ba2);transition:width .4s ease}.alloc__cap-fill--full{background:linear-gradient(90deg,#ef4444,#dc2626)}.alloc__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #fff);box-shadow:0 1px 3px #0000000a}.alloc__table{width:100%;border-collapse:collapse;font-size:.82rem}.alloc__th{position:sticky;top:0;z-index:2;padding:9px 14px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap}.alloc__th--amount{text-align:right}.alloc__th--center{text-align:center}.alloc__td{padding:8px 14px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.alloc__td--student{font-weight:600}.alloc__td--amount{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.alloc__td--date{font-variant-numeric:tabular-nums;font-size:.8rem;color:var(--text-secondary, #475569);white-space:nowrap}.alloc__td--center{text-align:center}.alloc__fee-override{margin-left:4px;color:#a16207;font-size:.72rem}.alloc__row:nth-child(2n)>.alloc__td{background:#00000004}.alloc__row:hover>.alloc__td{background:#667eea08}.alloc__row:last-child>.alloc__td{border-bottom:none}.alloc__badge{display:inline-flex;padding:2px 10px;border-radius:100px;font-size:.72rem;font-weight:600;letter-spacing:.02em}.alloc__badge--active{background:#22c55e1a;color:#15803d}.alloc__badge--inactive{background:#6b72801a;color:#4b5563}.alloc__badge--expired{background:#eab3081f;color:#a16207}.alloc__overlay{position:fixed;inset:0;background:#0f172a59;z-index:90;animation:al-fi .2s ease}.alloc__drawer{position:fixed;right:0;top:0;bottom:0;width:480px;max-width:92vw;background:var(--bg-base, #f3f4f6);z-index:100;display:flex;flex-direction:column;box-shadow:-8px 0 30px #0000001f;animation:al-sir .3s ease}.alloc__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #fff)}.alloc__drawer-title{font-size:1.125rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0}.alloc__drawer-close{width:32px;height:32px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.alloc__drawer-close:hover{background:var(--bg-input, #f8fafc)}.alloc__drawer-body{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}.alloc__card{background:var(--card-bg, #fff);border:1px solid var(--card-border, #e5e7eb);border-radius:12px;padding:16px;box-shadow:0 1px 3px #0000000a}.alloc__card-title{font-size:.8rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border-color, #e2e8f0)}.alloc__field{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.alloc__field:last-child{margin-bottom:0}.alloc__field--slide{animation:al-sd .2s ease}.alloc__form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.alloc__label{font-size:.75rem;font-weight:700;color:var(--text-secondary, #475569)}.alloc__label--required:after{content:" *";color:var(--error, #ef4444)}.alloc__input{width:100%;padding:8px 12px;background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;color:var(--text-primary, #1e293b);font-size:.875rem;font-family:inherit;outline:none;transition:all .2s;box-sizing:border-box}.alloc__input::placeholder{color:var(--text-placeholder, #94a3b8)}.alloc__input:focus{background:var(--bg-input-focus, #fff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.alloc__input--error{border-color:var(--error, #ef4444)!important}.alloc__input:disabled{opacity:.5;cursor:not-allowed}.alloc__select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}.alloc__error{font-size:.72rem;color:var(--error, #ef4444);margin:0;animation:al-si .2s ease}.alloc__fee-display{display:flex;align-items:center;justify-content:space-between;padding:8px 0;margin-bottom:8px}.alloc__fee-label{font-size:.82rem;color:var(--text-secondary, #6b7280)}.alloc__fee-value{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);font-variant-numeric:tabular-nums}.alloc__fee-hint{font-size:.82rem;color:var(--text-muted, #94a3b8);margin:0}.alloc__fee-input-wrap{display:flex;align-items:center;gap:2px}.alloc__fee-currency{font-size:.88rem;color:var(--text-muted, #94a3b8);font-weight:600}.alloc__fee-input{font-variant-numeric:tabular-nums;text-align:right}.alloc__fee-input::-webkit-outer-spin-button,.alloc__fee-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.alloc__fee-input[type=number]{-moz-appearance:textfield;appearance:textfield}.alloc__toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.alloc__toggle-info{display:flex;flex-direction:column;gap:2px}.alloc__toggle-label{font-size:.875rem;font-weight:500;color:var(--text-primary, #1e293b)}.alloc__toggle-desc{font-size:.75rem;color:var(--text-muted, #94a3b8)}.alloc__toggle{position:relative;width:44px;height:24px;flex-shrink:0}.alloc__toggle input{opacity:0;width:0;height:0;position:absolute}.alloc__toggle-track{position:absolute;inset:0;background:var(--border-color, #d1d5db);border-radius:12px;cursor:pointer;transition:background .25s}.alloc__toggle-track:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .25s;box-shadow:0 1px 3px #00000026}.alloc__toggle input:checked+.alloc__toggle-track{background:#667eea}.alloc__toggle input:checked+.alloc__toggle-track:after{transform:translate(20px)}.alloc__drawer-footer{display:flex;align-items:center;gap:12px;padding:16px 24px;border-top:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #fff)}.alloc__submit{padding:10px 28px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.9375rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;font-family:inherit;transition:all .25s;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:8px;position:relative;overflow:hidden}.alloc__submit:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s}.alloc__submit:hover:before{opacity:1}.alloc__submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.alloc__submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.alloc__cancel-btn{padding:10px 20px;background:transparent;color:var(--text-secondary, #475569);font-size:.9375rem;font-weight:500;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;cursor:pointer;font-family:inherit;transition:all .2s}.alloc__cancel-btn:hover{background:var(--bg-input, #f8fafc)}.alloc__spinner{animation:al-spin 1.2s linear infinite}.alloc__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}@keyframes al-si{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes al-fi{0%{opacity:0}to{opacity:1}}@keyframes al-sir{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes al-sd{0%{opacity:0;max-height:0}to{opacity:1;max-height:100px}}@keyframes al-spin{to{transform:rotate(360deg)}}.att{display:flex;flex-direction:column;height:100%;position:relative}.att__header{margin-bottom:14px}.att__header-text{margin-bottom:10px}.att__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.att__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.att__tab-bar{display:flex;gap:0;background:var(--card-bg, #fff);border:1px solid #E5E7EB;border-radius:8px;overflow:hidden;width:fit-content}.att__tab{padding:8px 20px;background:transparent;border:none;font-size:.82rem;font-weight:600;font-family:inherit;color:var(--text-secondary, #6b7280);cursor:pointer;transition:all .15s;border-right:1px solid #E5E7EB}.att__tab:last-child{border-right:none}.att__tab:hover{background:#667eea0a}.att__tab--active{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.att__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:8px;color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:12px;animation:att-si .3s ease}.att__toast svg{flex-shrink:0}.att__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.att__toast-dismiss:hover{opacity:1}.att__gateway{display:flex;align-items:flex-end;gap:12px;margin-bottom:12px;flex-wrap:wrap}.att__gateway-field{display:flex;flex-direction:column;gap:4px}.att__gw-label{font-size:.72rem;font-weight:700;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.03em}.att__gw-input{padding:7px 12px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.82rem;font-family:inherit;color:var(--text-primary, #1e293b);background:var(--card-bg, #fff);outline:none;transition:border-color .15s}.att__gw-input:focus{border-color:#667eea80;box-shadow:0 0 0 2px #667eea1a}.att__gw-select{appearance:none;padding-right:28px;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;cursor:pointer}.att__search-btn{padding:7px 16px;background:var(--primary, #6366f1);color:#fff;border:none;border-radius:6px;font-size:.82rem;font-weight:600;font-family:inherit;cursor:pointer;display:flex;align-items:center;gap:6px;transition:background .15s;align-self:flex-end;white-space:nowrap}.att__search-btn:hover:not(:disabled){background:var(--primary-dark, #4f46e5)}.att__search-btn:disabled{opacity:.5;cursor:not-allowed}.att__mark-all{padding:7px 16px;background:#22c55e1a;color:#15803d;border:1px solid rgba(34,197,94,.3);border-radius:6px;font-size:.82rem;font-weight:600;font-family:inherit;cursor:pointer;display:flex;align-items:center;gap:6px;transition:all .15s;align-self:flex-end;white-space:nowrap}.att__mark-all:hover{background:#22c55e2e}.att__empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:50px 24px}.att__empty-icon{color:var(--text-muted, #94a3b8);margin-bottom:16px;opacity:.5}.att__empty-title{font-size:1.1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 6px}.att__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0;max-width:380px}.att__summary-bar{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}.att__summary-chip{display:flex;align-items:center;gap:5px;padding:4px 10px;border-radius:6px;font-size:.72rem;font-weight:600}.att__summary-chip--present{background:#22c55e1a;color:#15803d}.att__summary-chip--absent{background:#ef444414;color:#dc2626}.att__summary-chip--late{background:#eab3081f;color:#a16207}.att__summary-chip--half_day{background:#3b82f614;color:#2563eb}.att__summary-chip--leave{background:#6b72801a;color:#4b5563}.att__summary-count{font-size:.88rem;font-weight:700;font-variant-numeric:tabular-nums}.att__summary-total{margin-left:auto;font-size:.78rem;font-weight:600;color:var(--text-secondary, #475569)}.att__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #fff);box-shadow:0 1px 3px #0000000a}.att__table{width:100%;border-collapse:collapse;font-size:.82rem}.att__th{position:sticky;top:0;z-index:2;padding:9px 12px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap}.att__th--roll{width:50px;text-align:center}.att__th--status{min-width:280px}.att__th--remarks{min-width:160px}.att__th--center{text-align:center}.att__th--time{width:100px;text-align:center}.att__th--late{width:70px;text-align:right}.att__th--dept{width:100px}.att__td{padding:6px 12px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle}.att__td--roll{text-align:center;font-variant-numeric:tabular-nums;font-weight:600;color:var(--text-muted, #94a3b8);font-size:.78rem}.att__td--name{font-weight:500;display:flex;align-items:center;gap:8px;white-space:nowrap}.att__td--dept{font-size:.78rem;color:var(--text-secondary, #475569)}.att__td--center,.att__td--time{text-align:center}.att__td--remarks{min-width:140px}.att__row:nth-child(2n)>.att__td{background:#00000004}.att__row:hover>.att__td{background:#667eea08}.att__row:last-child>.att__td{border-bottom:none}.att__avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;flex-shrink:0}.att__seg{display:flex;gap:0;border:1px solid #E5E7EB;border-radius:6px;overflow:hidden}.att__seg-btn{padding:4px 8px;background:transparent;border:none;border-right:1px solid #E5E7EB;font-size:.68rem;font-weight:600;font-family:inherit;color:var(--text-muted, #94a3b8);cursor:pointer;transition:all .12s;min-width:28px}.att__seg-btn:last-child{border-right:none}.att__seg-btn:hover{background:#00000008}.att__seg-btn--active.att__seg-btn--present{background:#dcfce7;color:#15803d}.att__seg-btn--active.att__seg-btn--absent{background:#fef2f2;color:#dc2626}.att__seg-btn--active.att__seg-btn--late{background:#fefce8;color:#a16207}.att__seg-btn--active.att__seg-btn--half_day{background:#eff6ff;color:#2563eb}.att__seg-btn--active.att__seg-btn--leave{background:#6b72801a;color:#4b5563}.att__seg-btn--active.att__seg-btn--holiday{background:#eff6ff;color:#2563eb}.att__remarks-input{width:100%;padding:4px 8px;border:1px solid transparent;border-radius:4px;font-size:.78rem;font-family:inherit;color:var(--text-primary, #1e293b);background:transparent;outline:none;transition:border-color .15s;box-sizing:border-box}.att__remarks-input:focus{border-color:#667eea80;background:var(--bg-input, #f8fafc)}.att__remarks-input:disabled{opacity:.3;cursor:default}.att__remarks-input::placeholder{color:var(--text-placeholder, #94a3b8)}.att__time-input{padding:4px 6px;border:1px solid var(--border-color, #d1d5db);border-radius:4px;font-size:.8rem;font-family:inherit;font-variant-numeric:tabular-nums;color:var(--text-primary, #1e293b);outline:none;width:90px;text-align:center;transition:border-color .15s}.att__time-input:focus{border-color:#667eea80;box-shadow:0 0 0 2px #667eea1a}.att__td--late-border{background:#ef44440a!important}.att__td--late-border .att__time-input{border-color:#ef444480}.att__td--late-val{text-align:right;font-variant-numeric:tabular-nums}.att__late-text{font-weight:700;color:#dc2626;font-size:.78rem}.att__status-select{padding:3px 22px 3px 8px;border:1px solid var(--border-color, #e2e8f0);border-radius:100px;font-size:.72rem;font-weight:600;font-family:inherit;outline:none;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center}.att__status-select--present{background-color:#22c55e1a;color:#15803d}.att__status-select--absent{background-color:#ef444414;color:#dc2626}.att__status-select--late{background-color:#eab3081f;color:#a16207}.att__status-select--half_day{background-color:#3b82f614;color:#2563eb}.att__status-select--leave{background-color:#6b72801a;color:#4b5563}.att__status-select--on_duty{background-color:#9333ea14;color:#7c3aed}.att__status-select--holiday{background-color:#3b82f614;color:#2563eb}.att__source{font-size:.7rem;font-weight:600;text-transform:capitalize}.att__source--biometric{color:#667eea}.att__source--manual{color:var(--text-muted, #94a3b8)}.att__save-bar{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:10px 0;border-top:1px solid #E5E7EB;margin-top:8px;animation:att-si .2s ease}.att__save-bar--error{border-top-color:#ef444440}.att__save-hint{font-size:.78rem;color:var(--text-muted, #94a3b8);margin-right:auto}.att__save-hint--error{color:var(--error, #ef4444);font-weight:500}.att__save-btn{padding:9px 24px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;font-family:inherit;transition:all .25s;box-shadow:0 4px 12px #667eea40}.att__save-btn:hover{transform:translateY(-1px);box-shadow:0 6px 18px #667eea59}.att__save-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.att__monthly{display:flex;flex-direction:column;flex:1}.att__monthly-controls{display:flex;gap:8px;margin-bottom:10px}.att__register-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #fff);box-shadow:0 1px 3px #0000000a}.att__register{border-collapse:collapse;font-size:.72rem}.att__reg-th{position:sticky;top:0;z-index:2;padding:6px 4px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;text-align:center;border-bottom:1px solid #E5E7EB;border-right:1px solid rgba(0,0,0,.04);white-space:nowrap}.att__reg-th--roll{width:40px;text-align:center}.att__reg-th--name{min-width:130px;text-align:left;padding-left:10px;position:sticky;left:40px;z-index:3;background:var(--table-header-bg, #f8f8fb)}.att__reg-th--day{width:26px;min-width:26px;font-variant-numeric:tabular-nums}.att__reg-td{padding:4px;text-align:center;border-bottom:1px solid #E5E7EB;border-right:1px solid rgba(0,0,0,.04);font-variant-numeric:tabular-nums;vertical-align:middle}.att__reg-td--roll{font-weight:600;color:var(--text-muted, #94a3b8);width:40px;position:sticky;left:0;z-index:1;background:var(--card-bg, #fff)}.att__reg-td--name{text-align:left;padding-left:10px;font-weight:500;white-space:nowrap;font-size:.76rem;position:sticky;left:40px;z-index:1;background:var(--card-bg, #fff)}.att__reg-td--cell{width:26px;min-width:26px;height:26px;font-size:.62rem;font-weight:700;cursor:default}.att__reg-td--green{background:#22c55e1f;color:#15803d}.att__reg-td--red{background:#ef44441a;color:#dc2626}.att__reg-td--yellow{background:#eab3081f;color:#a16207}.att__reg-td--blue{background:#3b82f614;color:#2563eb}.att__reg-td--gray{background:#6b728014;color:#4b5563}.att__reg-row:hover>.att__reg-td{filter:brightness(.97)}@keyframes att-si{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.att__spinner{animation:att-spin 1.2s linear infinite}@keyframes att-spin{to{transform:rotate(360deg)}}.ecat{display:flex;flex-direction:column;height:100%;position:relative}.ecat__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px;gap:16px}.ecat__header-text{flex:1}.ecat__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.ecat__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.ecat__add-btn{padding:9px 22px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden}.ecat__add-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.ecat__add-btn:hover:before{opacity:1}.ecat__add-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.ecat__add-btn:active{transform:translateY(0)}.ecat__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:8px;color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:16px;animation:ecat-slideIn .3s ease;width:fit-content;max-width:100%}.ecat__toast svg{flex-shrink:0}.ecat__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.ecat__toast-dismiss:hover{opacity:1}.ecat__error-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#ef44440f;border:1px solid rgba(239,68,68,.2);border-radius:8px;color:#dc2626;font-size:.84rem;font-weight:500;margin-bottom:12px;animation:ecat-slideIn .3s ease}.ecat__error-banner svg{flex-shrink:0}.ecat__search-wrap{position:relative;margin-bottom:16px}.ecat__search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--text-muted, #9ca3af);pointer-events:none}.ecat__search-input{width:100%;padding:10px 16px 10px 42px;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #fff);font-size:.875rem;color:var(--text-primary, #1e293b);font-family:inherit;outline:none;transition:border-color .2s,box-shadow .2s}.ecat__search-input:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.ecat__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #fff);box-shadow:0 1px 3px #0000000a}.ecat__table{width:100%;border-collapse:collapse;font-size:.82rem}.ecat__th{position:sticky;top:0;z-index:2;padding:10px 14px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap}.ecat__th--amount{text-align:right}.ecat__th--actions{width:80px;text-align:right}.ecat__td{padding:8px 14px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e293b);vertical-align:middle}.ecat__td--name{font-weight:600}.ecat__td--desc{color:var(--text-secondary, #6b7280);max-width:280px}.ecat__td--amount{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.ecat__td--actions{text-align:right;white-space:nowrap}.ecat__row:nth-child(2n)>.ecat__td{background:#00000004}.ecat__row:hover>.ecat__td{background:#667eea08}.ecat__row:last-child>.ecat__td{border-bottom:none}.ecat__badge{display:inline-flex;padding:2px 10px;border-radius:100px;font-size:.72rem;font-weight:600}.ecat__badge--active{background:#10b9811a;color:#059669}.ecat__badge--inactive{background:#6b72801a;color:#4b5563}.ecat__row-btn{padding:4px 8px;background:transparent;color:var(--text-secondary, #475569);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;cursor:pointer;font-family:inherit;transition:all .15s;display:inline-flex;align-items:center;margin-left:4px}.ecat__row-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.ecat__row-btn--delete{color:#ef4444;border-color:#ef44444d}.ecat__row-btn--delete:hover{background:#ef44440f;border-color:#ef444480}.ecat__loading{padding:60px 0;text-align:center}.ecat__loader{display:inline-flex;gap:6px}.ecat__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:ecat-bounce 1.2s infinite ease-in-out}.ecat__loader-dot:nth-child(2){animation-delay:.15s}.ecat__loader-dot:nth-child(3){animation-delay:.3s}.ecat__empty{padding:40px 24px;text-align:center}.ecat__empty-title{font-size:1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 4px}.ecat__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0}.ecat__drawer-backdrop{position:fixed;inset:0;background:#0f172a66;z-index:99;animation:ecat-fadeIn .15s ease}.ecat__drawer{position:fixed;top:0;right:0;width:420px;height:100vh;background:var(--card-bg, #fff);border-left:1px solid #E5E7EB;z-index:100;transform:translate(100%);transition:transform .25s ease;display:flex;flex-direction:column;box-shadow:-8px 0 30px #00000014}.ecat__drawer--open{transform:translate(0)}.ecat__drawer-inner{display:flex;flex-direction:column;height:100%}.ecat__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid #E5E7EB}.ecat__drawer-title{font-size:1.1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0}.ecat__drawer-close{width:32px;height:32px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:transparent;color:var(--text-muted, #94a3b8);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.ecat__drawer-close:hover{background:var(--bg-input, #f8fafc);color:var(--text-primary, #1e293b)}.ecat__drawer-body{flex:1;overflow-y:auto;padding:20px 24px}.ecat__drawer-card{background:var(--card-bg, #fff);border:1px solid #E5E7EB;border-radius:8px;padding:16px}.ecat__field{margin-bottom:14px}.ecat__field:last-child{margin-bottom:0}.ecat__field--toggle{display:flex;align-items:center;justify-content:space-between}.ecat__label{display:block;font-size:.72rem;font-weight:700;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.03em;margin-bottom:5px}.ecat__input{width:100%;padding:9px 12px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.875rem;font-family:inherit;color:var(--text-primary, #1e293b);outline:none;transition:border-color .15s;box-sizing:border-box}.ecat__input:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.ecat__input--error{border-color:#ef4444!important}.ecat__error{font-size:.72rem;color:#ef4444;margin:4px 0 0}.ecat__textarea{width:100%;padding:9px 12px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.875rem;font-family:inherit;color:var(--text-primary, #1e293b);outline:none;resize:vertical;transition:border-color .15s;box-sizing:border-box}.ecat__textarea:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.ecat__budget-wrap{display:flex;align-items:center;gap:0;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;overflow:hidden;transition:border-color .15s}.ecat__budget-wrap:focus-within{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.ecat__budget-symbol{padding:0 0 0 12px;font-size:.875rem;font-weight:600;color:var(--text-muted, #94a3b8)}.ecat__input--budget{border:none;border-radius:0;font-variant-numeric:tabular-nums}.ecat__input--budget:focus{box-shadow:none}.ecat__toggle{width:42px;height:24px;padding:2px;border:none;border-radius:100px;background:#d1d5db;cursor:pointer;position:relative;transition:background .2s;flex-shrink:0}.ecat__toggle--on{background:#10b981}.ecat__toggle-knob{display:block;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform .2s}.ecat__toggle--on .ecat__toggle-knob{transform:translate(18px)}.ecat__drawer-footer{padding:16px 24px;border-top:1px solid #E5E7EB;display:flex;gap:10px;justify-content:flex-end}.ecat__btn-cancel{padding:9px 20px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer}.ecat__btn-save{padding:9px 24px;border:none;border-radius:8px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .15s;box-shadow:0 2px 8px #667eea40}.ecat__btn-save:hover{box-shadow:0 4px 14px #667eea59;transform:translateY(-1px)}.ecat__overlay{position:fixed;inset:0;background:#0f172a80;z-index:200;display:flex;align-items:center;justify-content:center;animation:ecat-fadeIn .15s ease}.ecat__modal{background:var(--card-bg, #fff);border-radius:12px;padding:28px;max-width:400px;width:90%;box-shadow:0 20px 60px #0003;animation:ecat-slideIn .2s ease}.ecat__modal-title{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 8px}.ecat__modal-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0 0 20px;line-height:1.6}.ecat__modal-actions{display:flex;gap:10px;justify-content:flex-end}.ecat__btn-delete{padding:8px 20px;border:none;border-radius:8px;background:#ef4444;color:#fff;font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s}.ecat__btn-delete:hover{background:#dc2626}@keyframes ecat-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes ecat-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes ecat-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.expl{display:flex;flex-direction:column;height:100%;position:relative}.expl__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px;gap:16px}.expl__header-text{flex:1}.expl__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.expl__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.expl__add-btn{padding:9px 22px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 4px 12px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden}.expl__add-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.expl__add-btn:hover:before{opacity:1}.expl__add-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.expl__add-btn:active{transform:translateY(0)}.expl__toast{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#10b98114;border:1px solid rgba(16,185,129,.25);border-radius:8px;color:var(--success, #10b981);font-size:.875rem;font-weight:500;margin-bottom:16px;animation:expl-slideIn .3s ease;width:fit-content;max-width:100%}.expl__toast svg{flex-shrink:0}.expl__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.expl__toast-dismiss:hover{opacity:1}.expl__error-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#ef44440f;border:1px solid rgba(239,68,68,.2);border-radius:8px;color:#dc2626;font-size:.84rem;font-weight:500;margin-bottom:12px;animation:expl-slideIn .3s ease}.expl__error-banner svg{flex-shrink:0}.expl__summary-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}.expl__summary-card{background:var(--card-bg, #ffffff);border:1px solid #E5E7EB;border-radius:10px;padding:16px 20px;display:flex;flex-direction:column;gap:4px;box-shadow:0 1px 3px #0000000a}.expl__summary-card--warn{border-left:4px solid #f59e0b}.expl__summary-label{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary, #6b7280)}.expl__summary-value{font-size:1.35rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--text-primary, #1e293b);letter-spacing:-.02em}.expl__summary-value--text{font-size:1rem;font-weight:700;font-variant-numeric:normal}.expl__context{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--card-bg, #ffffff);border:1px solid #E5E7EB;border-radius:10px;margin-bottom:16px;box-shadow:0 1px 3px #0000000a}.expl__context-label{font-size:.72rem;font-weight:700;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.expl__context-select{padding:7px 32px 7px 12px;background-color:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.82rem;color:var(--text-primary, #1e293b);font-family:inherit;outline:none;min-width:130px;cursor:pointer;transition:border-color .2s}.expl__context-select:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.expl__context-divider{width:1px;height:28px;background:var(--border-color, #e2e8f0);flex-shrink:0}.expl__context-info{margin-left:auto;font-size:.78rem;color:var(--text-muted, #9ca3af);white-space:nowrap}.expl__search-wrap{position:relative;flex:1;max-width:220px}.expl__search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text-muted, #9ca3af);pointer-events:none}.expl__search-input{width:100%;padding:7px 12px 7px 32px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.82rem;font-family:inherit;color:var(--text-primary, #1e293b);outline:none;transition:border-color .15s;background:var(--bg-input, #f8fafc)}.expl__search-input:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.expl__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000000a}.expl__table{width:100%;border-collapse:collapse;font-size:.78rem}.expl__th{position:sticky;top:0;z-index:2;padding:9px 12px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap}.expl__th--amount{text-align:right}.expl__th--icon{text-align:center;width:40px}.expl__th--actions{width:100px;text-align:right}.expl__td{padding:7px 12px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e293b);vertical-align:middle}.expl__td--date{font-variant-numeric:tabular-nums;font-size:.76rem;white-space:nowrap}.expl__td--voucher{font-family:SF Mono,Fira Code,monospace;font-size:.74rem;color:#667eea;font-weight:600}.expl__td--payee{font-weight:600}.expl__td--cat{color:var(--text-secondary, #6b7280)}.expl__td--amount{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.expl__td--icon{text-align:center}.expl__td--actions{text-align:right;white-space:nowrap}.expl__row:nth-child(2n)>.expl__td{background:#00000004}.expl__row:hover>.expl__td{background:#667eea08}.expl__row:last-child>.expl__td{border-bottom:none}.expl__status{display:inline-flex;padding:2px 10px;border-radius:100px;font-size:.68rem;font-weight:600;white-space:nowrap}.expl__status--paid{background:#10b9811a;color:#059669}.expl__status--pending{background:#f59e0b1a;color:#b45309}.expl__status--rejected{background:#ef44441a;color:#dc2626}.expl__status--void{background:#6b72801a;color:#4b5563}.expl__method-badge{display:inline-block;padding:1px 8px;border-radius:100px;font-size:.68rem;font-weight:600;background:#667eea14;color:#667eea;text-transform:capitalize}.expl__row-btn{padding:4px 6px;background:transparent;color:var(--text-secondary, #475569);border:1px solid var(--border-color, #e2e8f0);border-radius:5px;cursor:pointer;font-family:inherit;transition:all .15s;display:inline-flex;align-items:center;margin-left:3px}.expl__row-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.expl__row-btn--delete{color:#ef4444;border-color:#ef44444d}.expl__row-btn--delete:hover{background:#ef44440f;border-color:#ef444480}.expl__loading{padding:60px 0;text-align:center}.expl__loader{display:inline-flex;gap:6px}.expl__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:expl-bounce 1.2s infinite ease-in-out}.expl__loader-dot:nth-child(2){animation-delay:.15s}.expl__loader-dot:nth-child(3){animation-delay:.3s}.expl__empty{padding:40px 24px;text-align:center}.expl__empty-title{font-size:1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 4px}.expl__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0}.expl__drawer-backdrop{position:fixed;inset:0;background:#0f172a66;z-index:99;animation:expl-fadeIn .15s ease}.expl__drawer{position:fixed;top:0;right:0;width:460px;height:100vh;background:var(--card-bg, #fff);border-left:1px solid #E5E7EB;z-index:100;transform:translate(100%);transition:transform .25s ease;display:flex;flex-direction:column;box-shadow:-8px 0 30px #00000014}.expl__drawer--open{transform:translate(0)}.expl__drawer-inner{display:flex;flex-direction:column;height:100%}.expl__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid #E5E7EB}.expl__drawer-title{font-size:1.1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0}.expl__drawer-close{width:32px;height:32px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:transparent;color:var(--text-muted, #94a3b8);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.expl__drawer-close:hover{background:var(--bg-input, #f8fafc);color:var(--text-primary, #1e293b)}.expl__drawer-body{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}.expl__drawer-card{background:var(--card-bg, #fff);border:1px solid #E5E7EB;border-radius:8px;padding:16px}.expl__card-title{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary, #475569);margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid rgba(0,0,0,.06)}.expl__field{margin-bottom:12px}.expl__field:last-child{margin-bottom:0}.expl__field--slide{animation:expl-slideDown .2s ease}.expl__label{display:block;font-size:.72rem;font-weight:700;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.03em;margin-bottom:5px}.expl__input,.expl__select{width:100%;padding:9px 12px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.875rem;font-family:inherit;color:var(--text-primary, #1e293b);outline:none;transition:border-color .15s;box-sizing:border-box;background-color:var(--card-bg, #fff)}.expl__select{padding-right:32px}.expl__input:focus,.expl__select:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.expl__input--error{border-color:#ef4444!important}.expl__error{font-size:.72rem;color:#ef4444;margin:4px 0 0}.expl__textarea{width:100%;padding:9px 12px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.875rem;font-family:inherit;color:var(--text-primary, #1e293b);outline:none;resize:vertical;transition:border-color .15s;box-sizing:border-box}.expl__textarea:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.expl__amount-wrap{display:flex;align-items:center;border:2px solid var(--border-color, #e2e8f0);border-radius:8px;overflow:hidden;transition:border-color .15s}.expl__amount-wrap:focus-within{border-color:#667eea99;box-shadow:0 0 0 3px #667eea1a}.expl__amount-symbol{padding:0 0 0 14px;font-size:1.25rem;font-weight:700;color:var(--text-muted, #94a3b8)}.expl__amount-input{flex:1;border:none;outline:none;padding:10px 14px;font-size:1.4rem;font-weight:700;font-family:inherit;font-variant-numeric:tabular-nums;color:var(--text-primary, #1e293b);background:transparent}.expl__amount-input::-webkit-outer-spin-button,.expl__amount-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.expl__amount-input[type=number]{-moz-appearance:textfield;appearance:textfield}.expl__method-grid{display:flex;gap:6px}.expl__method-btn{flex:1;padding:8px 10px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:transparent;font-size:.78rem;font-weight:600;font-family:inherit;cursor:pointer;color:var(--text-secondary, #475569);transition:all .15s;text-align:center}.expl__method-btn:hover{border-color:#667eea66;background:#667eea08}.expl__method-btn--active{border-color:#667eea;background:#667eea14;color:#667eea;box-shadow:0 0 0 2px #667eea26}.expl__upload-zone{border:2px dashed #d1d5db;border-radius:8px;padding:24px;text-align:center;color:var(--text-muted, #9ca3af);transition:border-color .2s,background .2s;cursor:pointer}.expl__upload-zone:hover{border-color:#667eea66;background:#667eea05}.expl__upload-text{font-size:.82rem;margin:8px 0 4px;color:var(--text-secondary, #6b7280)}.expl__upload-link{color:#667eea;font-weight:600;text-decoration:underline;cursor:pointer}.expl__upload-hint{font-size:.7rem;color:var(--text-muted, #94a3b8);margin:0}.expl__file-list{margin-top:10px;display:flex;flex-direction:column;gap:4px}.expl__file-item{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--bg-input, #f8fafc);border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.78rem}.expl__file-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary, #1e293b);font-weight:500}.expl__file-size{font-size:.7rem;color:var(--text-muted, #94a3b8);white-space:nowrap}.expl__file-remove{width:20px;height:20px;padding:0;border:none;border-radius:4px;background:transparent;color:var(--text-muted, #94a3b8);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}.expl__file-remove:hover{background:#ef44441a;color:#ef4444}.expl__drawer-footer{padding:16px 24px;border-top:1px solid #E5E7EB;display:flex;gap:10px;justify-content:flex-end}.expl__btn-cancel{padding:9px 20px;border:1px solid var(--border-color, #e2e8f0);border-radius:8px;background:transparent;color:var(--text-secondary, #475569);font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer}.expl__btn-save{padding:9px 24px;border:none;border-radius:8px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .15s;box-shadow:0 2px 8px #667eea40}.expl__btn-save:hover{box-shadow:0 4px 14px #667eea59;transform:translateY(-1px)}.expl__overlay{position:fixed;inset:0;background:#0f172a80;z-index:200;display:flex;align-items:center;justify-content:center;animation:expl-fadeIn .15s ease}.expl__modal{background:var(--card-bg, #fff);border-radius:12px;padding:28px;max-width:400px;width:90%;box-shadow:0 20px 60px #0003;animation:expl-slideIn .2s ease}.expl__modal-title{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 8px}.expl__modal-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0 0 20px;line-height:1.6}.expl__modal-actions{display:flex;gap:10px;justify-content:flex-end}.expl__btn-delete{padding:8px 20px;border:none;border-radius:8px;background:#ef4444;color:#fff;font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s}.expl__btn-delete:hover{background:#dc2626}@keyframes expl-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes expl-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes expl-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}@keyframes expl-slideDown{0%{opacity:0;max-height:0}to{opacity:1;max-height:100px}}.txns{display:flex;flex-direction:column;height:100%;position:relative}.txns__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px;gap:16px}.txns__header-text{flex:1}.txns__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.txns__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.txns__toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}.txns__toolbar-left{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}.txns__toolbar-right{display:flex;align-items:center}.txns__filter-field{display:flex;flex-direction:column;gap:3px}.txns__filter-label{font-size:.65rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.04em}.txns__filter-input{width:180px;padding:8px 12px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;font-family:inherit;color:var(--text-primary, #1e293b);outline:none;transition:border-color .2s,box-shadow .2s}.txns__filter-input::placeholder{color:var(--text-muted, #9ca3af)}.txns__filter-input:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.txns__filter-select{padding:8px 32px 8px 10px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;font-family:inherit;color:var(--text-primary, #1e293b);outline:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;cursor:pointer;transition:border-color .2s}.txns__filter-select:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.txns__filter-actions{display:flex;align-items:center;gap:6px}.txns__search-btn{padding:8px 18px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.82rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 3px 10px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;position:relative;overflow:hidden}.txns__search-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity .25s ease}.txns__search-btn:hover:before{opacity:1}.txns__search-btn:hover{transform:translateY(-1px);box-shadow:0 5px 16px #667eea59}.txns__search-btn:active{transform:translateY(0)}.txns__clear-btn{padding:8px 14px;background:transparent;color:var(--text-secondary, #475569);font-size:.82rem;font-weight:500;border:1px solid var(--border-color, #d1d5db);border-radius:8px;cursor:pointer;font-family:inherit;transition:all .15s}.txns__clear-btn:hover{background:#00000008;border-color:var(--text-secondary, #94a3b8)}.txns__record-count{font-size:.78rem;font-weight:500;color:var(--text-muted, #94a3b8);white-space:nowrap}.txns__error-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#ef44440f;border:1px solid rgba(239,68,68,.2);border-radius:8px;color:#dc2626;font-size:.84rem;font-weight:500;margin-bottom:12px;animation:txns-slideIn .3s ease}.txns__error-banner svg{flex-shrink:0}.txns__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000000a}.txns__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:auto}.txns__th{position:sticky;top:0;z-index:2;padding:9px 14px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap;-webkit-user-select:none;user-select:none}.txns__th--amount{text-align:right}.txns__td{padding:8px 14px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.txns__td--date{font-variant-numeric:tabular-nums;font-size:.8rem;color:var(--text-secondary, #475569);white-space:nowrap}.txns__td--student{font-weight:500}.txns__td--inv{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.78rem;font-weight:600;color:#667eea}.txns__td--amount{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap;color:#15803d}.txns__td--ref{font-size:.8rem;color:var(--text-muted, #94a3b8);font-family:SF Mono,Fira Code,Consolas,monospace}.txns__th--actions,.txns__td--actions{width:44px;padding:6px 8px;text-align:center}.txns__print-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:transparent;border:1px solid #e5e7eb;border-radius:6px;color:#475569;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.txns__print-btn:hover{background:#667eea14;border-color:#c7d2fe;color:#4f46e5}.txns__print-btn:active{background:#667eea29}.txns__method-badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:100px;font-size:.7rem;font-weight:600;letter-spacing:.02em;white-space:nowrap}.txns__method-badge--cash{background:#22c55e1a;color:#15803d}.txns__method-badge--cheque{background:#3b82f61a;color:#2563eb}.txns__method-badge--online{background:#a855f71a;color:#7c3aed}.txns__method-badge--bank_transfer{background:#eab3081f;color:#a16207}.txns__method-badge--pos{background:#6b72801a;color:#4b5563}.txns__row:nth-child(2n)>.txns__td{background:#00000004}.txns__row:hover>.txns__td{background:#667eea08}.txns__row:last-child>.txns__td{border-bottom:none}.txns__pagination{display:flex;align-items:center;justify-content:space-between;padding:10px 4px;margin-top:8px;gap:12px}.txns__pagination-info{font-size:.78rem;color:var(--text-secondary, #6b7280);font-variant-numeric:tabular-nums}.txns__pagination-controls{display:flex;align-items:center;gap:4px}.txns__page-btn{width:32px;height:32px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:var(--card-bg, #fff);color:var(--text-secondary, #475569);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s}.txns__page-btn:hover:not(:disabled){background:#667eea0f;border-color:#667eea4d;color:#667eea}.txns__page-btn:disabled{opacity:.35;cursor:default}.txns__page-num{font-size:.78rem;font-weight:600;color:var(--text-primary, #1e293b);padding:0 8px;font-variant-numeric:tabular-nums}.txns__empty{padding:60px 24px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--text-muted, #94a3b8)}.txns__empty svg{opacity:.4;margin-bottom:8px}.txns__empty-title{font-size:1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0}.txns__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0}.txns__loading{padding:60px 0;text-align:center}.txns__loader{display:inline-flex;gap:6px}.txns__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:txns-bounce 1.2s infinite ease-in-out}.txns__loader-dot:nth-child(2){animation-delay:.15s}.txns__loader-dot:nth-child(3){animation-delay:.3s}@keyframes txns-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes txns-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.gatepass{display:flex;flex-direction:column;gap:0;height:100%;position:relative}.gatepass__toast{position:fixed;top:20px;right:20px;z-index:200;display:flex;align-items:center;gap:10px;padding:12px 18px;background:#ecfdf5;border:1px solid #bbf7d0;border-radius:10px;color:#15803d;font-size:.84rem;font-weight:500;box-shadow:0 8px 24px #0000001a;animation:gatepass-slideIn .3s ease}.gatepass__toast svg{flex-shrink:0}.gatepass__toast-close{margin-left:8px;background:none;border:none;color:#15803d;cursor:pointer;padding:2px;opacity:.6;transition:opacity .15s;display:flex;align-items:center}.gatepass__toast-close:hover{opacity:1}.gatepass__toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 0 18px;flex-wrap:wrap}.gatepass__toolbar-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.gatepass__toolbar-right{display:flex;align-items:center;gap:12px}.gatepass__search-wrapper{position:relative;display:flex;align-items:center}.gatepass__search-icon{position:absolute;left:10px;color:var(--text-muted, #9ca3af);pointer-events:none}.gatepass__search{width:280px;padding:7px 32px 7px 34px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);outline:none;transition:border-color .2s,box-shadow .2s;font-family:inherit}.gatepass__search:focus{border-color:var(--accent, #7c3aed);box-shadow:0 0 0 3px #7c3aed14}.gatepass__search::placeholder{color:var(--text-muted, #9ca3af)}.gatepass__search-clear{position:absolute;right:6px;width:22px;height:22px;padding:0;border:none;border-radius:50%;background:var(--input-border, rgba(0, 0, 0, .08));color:var(--text-secondary, #6b7280);font-size:.85rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.gatepass__search-clear:hover{background:#00000024}.gatepass__filter{padding:7px 28px 7px 10px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);cursor:pointer;outline:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;font-family:inherit;transition:border-color .2s}.gatepass__filter:focus{border-color:var(--accent, #7c3aed)}.gatepass__record-count{font-size:.8rem;color:var(--text-muted, #9ca3af);font-weight:500;white-space:nowrap}.gatepass__search-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:none;border-radius:8px;background:var(--accent, #7c3aed);color:#fff;font-size:.82rem;font-weight:600;font-family:inherit;cursor:pointer;white-space:nowrap;transition:background .15s}.gatepass__search-btn:hover{background:var(--accent-hover, #6d28d9)}.gatepass__clear-btn{padding:7px 12px;border:1px solid var(--card-border, rgba(0, 0, 0, .12));border-radius:8px;background:transparent;color:var(--text-secondary, #6b7280);font-size:.82rem;font-family:inherit;cursor:pointer;white-space:nowrap;transition:all .15s}.gatepass__clear-btn:hover{background:#0000000a;color:var(--text-primary, #1e1b4b)}.gatepass__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff)}.gatepass__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:auto}.gatepass__th{position:sticky;top:0;z-index:2;padding:10px 12px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:600;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap;-webkit-user-select:none;user-select:none}.gatepass__th--name{cursor:pointer;transition:color .15s}.gatepass__th--name:hover{color:var(--accent, #7c3aed)}.gatepass__th--enroll{text-align:right}.gatepass__th--status{text-align:center}.gatepass__th--actions{text-align:center;width:120px}.gatepass__sort-icon{font-size:.65rem;margin-left:4px;display:inline-block;vertical-align:middle;color:var(--accent, #7c3aed)}.gatepass__sort-icon--inactive{color:var(--text-muted, #9ca3af);opacity:.5}.gatepass__td{padding:5px 12px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.gatepass__td--enroll{text-align:right;font-variant-numeric:tabular-nums}.gatepass__td--status,.gatepass__td--actions{text-align:center}.gatepass__student-name{font-weight:600;color:var(--text-primary, #1e1b4b)}.gatepass__row:nth-child(2n)>.gatepass__td{background:var(--row-alt-bg, rgba(0, 0, 0, .015))}.gatepass__row:hover>.gatepass__td{background:var(--row-hover-bg, rgba(124, 58, 237, .03))}.gatepass__muted{color:var(--text-muted, #9ca3af);font-style:italic;font-size:.8rem}.gatepass__mono{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.78rem;letter-spacing:.02em;font-variant-numeric:tabular-nums;background:var(--mono-bg, rgba(0, 0, 0, .03));padding:2px 6px;border-radius:4px}.gatepass__badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:100px;font-size:.72rem;font-weight:600;letter-spacing:.02em;white-space:nowrap}.gatepass__badge--active{background:#22c55e1a;color:#15803d}.gatepass__badge--inactive{background:#6b72801a;color:#4b5563}.gatepass__badge--graduated{background:#3b82f61a;color:#1d4ed8}.gatepass__badge--transferred{background:#f59e0b1a;color:#b45309}.gatepass__issue-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border:none;border-radius:6px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.74rem;font-weight:600;font-family:inherit;cursor:pointer;white-space:nowrap;transition:all .2s ease;box-shadow:0 2px 6px #667eea33;position:relative;overflow:hidden}.gatepass__issue-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.15) 0%,transparent 100%);opacity:0;transition:opacity .2s}.gatepass__issue-btn:hover:before{opacity:1}.gatepass__issue-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #667eea4d}.gatepass__issue-btn:active{transform:translateY(0)}.gatepass__loading-cell{padding:48px 0;text-align:center}.gatepass__loader{display:inline-flex;gap:6px}.gatepass__loader-dot{width:8px;height:8px;border-radius:50%;background:var(--accent, #7c3aed);animation:gatepass-bounce 1.2s infinite ease-in-out}.gatepass__loader-dot:nth-child(2){animation-delay:.15s}.gatepass__loader-dot:nth-child(3){animation-delay:.3s}.gatepass__empty-cell{padding:60px 0;text-align:center}.gatepass__empty{display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--text-muted, #9ca3af)}.gatepass__empty p{margin:0;font-size:.88rem}.gatepass__pagination{display:flex;align-items:center;justify-content:space-between;padding:14px 0 0;gap:12px;flex-wrap:wrap}.gatepass__pagination-left{display:flex;align-items:center;gap:16px}.gatepass__page-size-label{font-size:.78rem;color:var(--text-secondary, #6b7280);display:flex;align-items:center;gap:6px}.gatepass__page-size{padding:4px 24px 4px 8px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:6px;background-color:var(--card-bg, #ffffff);font-size:.78rem;color:var(--text-primary, #1e1b4b);cursor:pointer;outline:none;font-family:inherit}.gatepass__page-info{font-size:.76rem;color:var(--text-muted, #9ca3af);font-variant-numeric:tabular-nums}.gatepass__pagination-right{display:flex;align-items:center;gap:4px}.gatepass__page-btn{min-width:30px;height:30px;padding:0 6px;border:1px solid #E5E7EB;border-radius:6px;background:var(--card-bg, #ffffff);color:var(--text-secondary, #6b7280);font-size:.78rem;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s;font-family:inherit}.gatepass__page-btn:hover:not(:disabled){background:var(--row-hover-bg, rgba(124, 58, 237, .06));color:var(--accent, #7c3aed);border-color:#7c3aed33}.gatepass__page-btn--active{background:var(--accent, #7c3aed)!important;color:#fff!important;border-color:var(--accent, #7c3aed)!important}.gatepass__page-btn:disabled{opacity:.35;cursor:not-allowed}.gatepass__error-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;margin-bottom:14px;background:#ef44440f;border:1px solid rgba(239,68,68,.2);border-radius:8px;color:#dc2626;font-size:.82rem;font-weight:500;animation:gatepass-slideIn .25s ease-out}.gatepass__error-banner svg{flex-shrink:0}.gatepass__error-dismiss{margin-left:auto;background:none;border:none;color:#dc2626;font-size:1.1rem;cursor:pointer;padding:0 4px;line-height:1;opacity:.6;transition:opacity .15s}.gatepass__error-dismiss:hover{opacity:1}.gatepass__modal-backdrop{position:fixed;inset:0;background:#0006;z-index:100;animation:gatepass-fadeIn .15s ease-out}.gatepass__modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:101;width:440px;max-width:94vw;background:#fff;border-radius:14px;box-shadow:0 16px 48px #0003;animation:gatepass-slideIn .25s ease-out;display:flex;flex-direction:column;overflow:hidden}.gatepass__modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 22px 0}.gatepass__modal-title{margin:0;font-size:1.05rem;font-weight:700;color:var(--text-primary, #1e1b4b);letter-spacing:-.01em}.gatepass__modal-close{width:30px;height:30px;border:none;border-radius:8px;background:none;color:var(--text-muted, #9ca3af);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.gatepass__modal-close:hover{background:#0000000d;color:var(--text-primary, #1e1b4b)}.gatepass__modal-student{display:flex;align-items:center;gap:8px;margin:14px 22px 0;padding:10px 14px;background:var(--mono-bg, rgba(124, 58, 237, .04));border:1px solid rgba(124,58,237,.1);border-radius:8px}.gatepass__modal-student-name{font-weight:600;font-size:.88rem;color:var(--text-primary, #1e1b4b)}.gatepass__modal-student-meta{font-size:.78rem;color:var(--text-secondary, #6b7280)}.gatepass__modal-body{padding:18px 22px;display:flex;flex-direction:column;gap:14px}.gatepass__field{display:flex;flex-direction:column;gap:4px}.gatepass__field-label{font-size:.74rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.03em}.gatepass__field-input,.gatepass__field-select,.gatepass__field-textarea{padding:9px 12px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:8px;background-color:var(--card-bg, #ffffff);font-size:.84rem;font-family:inherit;color:var(--text-primary, #1e293b);outline:none;transition:border-color .2s,box-shadow .2s;width:100%;box-sizing:border-box}.gatepass__field-select{padding-right:32px}.gatepass__field-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px;cursor:pointer}.gatepass__field-textarea{resize:vertical;min-height:60px}.gatepass__field-input:focus,.gatepass__field-select:focus,.gatepass__field-textarea:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.gatepass__field-input::placeholder,.gatepass__field-textarea::placeholder{color:var(--text-muted, #9ca3af)}.gatepass__modal-error{display:flex;align-items:center;gap:6px;padding:8px 12px;background:#ef44440f;border:1px solid rgba(239,68,68,.2);border-radius:8px;color:#dc2626;font-size:.82rem;font-weight:500}.gatepass__modal-error svg{flex-shrink:0}.gatepass__modal-actions{display:flex;justify-content:flex-end;gap:8px;padding:0 22px 18px}.gatepass__modal-btn{padding:8px 20px;border-radius:8px;font-size:.84rem;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s;display:inline-flex;align-items:center;gap:6px}.gatepass__modal-btn--cancel{background:none;border:1px solid #E5E7EB;color:var(--text-secondary, #6b7280)}.gatepass__modal-btn--cancel:hover{background:#f3f4f6}.gatepass__modal-btn--submit{background:linear-gradient(135deg,#667eea,#764ba2);border:none;color:#fff;box-shadow:0 3px 10px #667eea40}.gatepass__modal-btn--submit:hover:not(:disabled){box-shadow:0 5px 16px #667eea59;transform:translateY(-1px)}.gatepass__modal-btn--submit:disabled{opacity:.6;cursor:not-allowed}.gatepass__spinner{animation:gatepass-spin .8s linear infinite;stroke:currentColor;stroke-dasharray:40;stroke-dashoffset:10}@keyframes gatepass-slideIn{0%{opacity:0;transform:translate(-50%,-50%) translateY(-8px)}to{opacity:1;transform:translate(-50%,-50%) translateY(0)}}@keyframes gatepass-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes gatepass-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}@keyframes gatepass-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.rpt{display:flex;height:100%;gap:0;border-radius:8px;overflow:hidden;border:1px solid #E5E7EB;background:var(--card-bg, #fff);box-shadow:0 1px 3px #0000000a}.rpt__menu{width:240px;min-width:240px;border-right:1px solid #E5E7EB;overflow-y:auto;background:var(--card-bg, #fff);padding:16px 0}.rpt__menu-title{font-size:1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 12px;padding:0 16px;letter-spacing:-.01em}.rpt__menu-group{margin-bottom:12px}.rpt__menu-group-title{display:block;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted, #94a3b8);padding:6px 16px}.rpt__menu-item{display:flex;flex-direction:column;width:100%;padding:8px 16px;border:none;background:transparent;cursor:pointer;text-align:left;font-family:inherit;transition:background .12s;border-left:3px solid transparent}.rpt__menu-item:hover{background:#667eea0a}.rpt__menu-item--active{background:#667eea0f;border-left-color:#667eea}.rpt__menu-item-name{font-size:.82rem;font-weight:600;color:var(--text-primary, #1e293b)}.rpt__menu-item--active .rpt__menu-item-name{color:#667eea}.rpt__menu-item-desc{font-size:.68rem;color:var(--text-muted, #94a3b8);margin-top:1px;line-height:1.4}.rpt__viewer{flex:1;display:flex;flex-direction:column;overflow:hidden}.rpt__placeholder{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text-muted, #94a3b8)}.rpt__placeholder-icon{opacity:.35}.rpt__placeholder-title{font-size:1rem;font-weight:600;color:var(--text-secondary, #6b7280);margin:0}.rpt__placeholder-text{font-size:.875rem;color:var(--text-muted, #94a3b8);margin:0}.rpt__action-bar{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid #E5E7EB}.rpt__report-title{font-size:1.1rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0}.rpt__action-btns{display:flex;gap:6px}.rpt__action-btn{padding:6px 14px;background:transparent;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.78rem;font-weight:600;font-family:inherit;color:var(--text-secondary, #475569);cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all .15s}.rpt__action-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.rpt__params{display:flex;align-items:flex-end;gap:14px;padding:14px 20px;border-bottom:1px solid #E5E7EB;background:var(--card-bg, #fff)}.rpt__param-field{display:flex;flex-direction:column;gap:4px}.rpt__param-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary, #475569)}.rpt__param-required{color:#ef4444;margin-left:2px}.rpt__param-input,.rpt__param-select{padding:7px 12px;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;font-size:.82rem;font-family:inherit;color:var(--text-primary, #1e293b);outline:none;background-color:var(--bg-input, #f8fafc);min-width:130px;cursor:pointer;transition:border-color .15s}.rpt__param-select{padding-right:32px}.rpt__param-input:focus,.rpt__param-select:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.rpt__generate-btn{padding:8px 22px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:.82rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;font-family:inherit;transition:all .25s ease;box-shadow:0 3px 10px #667eea40;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.rpt__generate-btn:hover{transform:translateY(-1px);box-shadow:0 5px 15px #667eea59}.rpt__generate-btn:disabled{opacity:.7;cursor:not-allowed;transform:none}.rpt__preview{flex:1;overflow:auto;padding:16px 20px}.rpt__table{width:100%;border-collapse:collapse;font-size:.76rem}.rpt__th{position:sticky;top:0;z-index:2;padding:5px 8px;background:var(--table-header-bg, #f8f8fb);color:var(--text-secondary, #6b7280);font-weight:700;font-size:.66rem;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid #E5E7EB;white-space:nowrap}.rpt__th--amount{text-align:right}.rpt__th--check{text-align:center;width:40px}.rpt__td{padding:4px 8px;border-bottom:1px solid #f0f0f0;color:var(--text-primary, #1e293b);vertical-align:middle}.rpt__td--name{font-weight:600}.rpt__td--mono{font-family:SF Mono,Fira Code,monospace;font-size:.72rem;color:#667eea;font-weight:600}.rpt__td--amount{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.rpt__td--time{font-variant-numeric:tabular-nums;color:var(--text-muted, #94a3b8)}.rpt__td--roll{text-align:center;color:var(--text-secondary, #6b7280);width:40px}.rpt__td--check{text-align:center}.rpt__td--danger{color:#dc2626}.rpt__td--total{font-size:.82rem;font-weight:800}.rpt__row:nth-child(2n)>.rpt__td{background:#00000003}.rpt__row:hover>.rpt__td{background:#667eea08}.rpt__total-row>.rpt__td{background:var(--table-header-bg, #f8f8fb)!important;font-weight:700;border-top:2px solid #E5E7EB;border-bottom:none;position:sticky;bottom:0}.rpt__method-tag{display:inline-block;padding:1px 8px;border-radius:100px;font-size:.66rem;font-weight:600;background:#667eea14;color:#667eea}.rpt__link{color:#667eea;text-decoration:none;font-size:.76rem}.rpt__link:hover{text-decoration:underline}.rpt__checkbox{display:inline-block;width:16px;height:16px;border:2px solid #d1d5db;border-radius:3px}.rpt__matrix-wrap{overflow:auto}.rpt__table--matrix .rpt__th--day{width:24px;min-width:24px;text-align:center;padding:4px 2px;font-size:.62rem}.rpt__table--matrix .rpt__th--name-col{min-width:140px}.rpt__table--matrix .rpt__th--agg{width:32px;text-align:center;font-weight:800}.rpt__td--cell{width:28px;min-width:28px;height:28px;text-align:center;font-size:.62rem;font-weight:700;padding:2px!important;vertical-align:middle}.rpt__cell-badge{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;font-size:.6rem;font-weight:700;line-height:1;letter-spacing:-.01em;transition:transform .1s ease}.rpt__cell-badge:hover{transform:scale(1.15)}.rpt__td--agg{text-align:center;font-weight:700;font-variant-numeric:tabular-nums}.rpt__cell--P{color:#059669}.rpt__cell--P .rpt__cell-badge{background:#0596691f;color:#059669}.rpt__cell--A{color:#dc2626}.rpt__cell--A .rpt__cell-badge{background:#dc26261a;color:#dc2626}.rpt__cell--L{color:#d97706}.rpt__cell--L .rpt__cell-badge{background:#d977061a;color:#d97706}.rpt__cell--Lt{color:#ea580c}.rpt__cell--Lt .rpt__cell-badge{background:#ea580c1a;color:#ea580c}.rpt__cell--H{color:#2563eb}.rpt__cell--H .rpt__cell-badge{background:#2563eb1a;color:#2563eb}.rpt__cell--Ho{color:#7c3aed}.rpt__cell--Ho .rpt__cell-badge{background:#7c3aed1a;color:#7c3aed}.rpt__cell---{color:#d1d5db}.rpt__cards-wrap{display:flex;flex-direction:column;gap:20px}.rpt__report-card{border:1px solid #E5E7EB;border-radius:10px;padding:20px;background:var(--card-bg, #fff);page-break-after:always}.rpt__report-card:last-child{page-break-after:auto}.rpt__rc-header{text-align:center;border-bottom:2px solid #1e293b;padding-bottom:10px;margin-bottom:14px}.rpt__rc-school-name{font-size:1.1rem;font-weight:800;color:var(--text-primary, #1e293b);margin:0}.rpt__rc-school-sub{font-size:.78rem;color:var(--text-secondary, #6b7280);margin:4px 0 0}.rpt__rc-info{display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;margin-bottom:14px;padding:10px;background:#00000005;border-radius:6px}.rpt__rc-field{display:flex;flex-direction:column;gap:1px}.rpt__rc-label{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted, #94a3b8)}.rpt__rc-value{font-size:.82rem;font-weight:600;color:var(--text-primary, #1e293b)}.rpt__table--rc{margin-bottom:10px}.rpt__grade{display:inline-flex;padding:1px 8px;border-radius:100px;font-size:.66rem;font-weight:700}.rpt__grade--Ap{background:#10b9811f;color:#059669}.rpt__grade--A{background:#3b82f61a;color:#2563eb}.rpt__grade--B{background:#f59e0b1a;color:#b45309}.rpt__grade--C{background:#6b72801a;color:#4b5563}.rpt__grade--D{background:#ef44441a;color:#dc2626}.rpt__rc-result-bar{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:#00000005;border-radius:6px;font-size:.82rem;color:var(--text-secondary, #475569)}.rpt__rc-result{padding:4px 16px;border-radius:100px;font-size:.78rem;font-weight:700}.rpt__rc-result--pass{background:#10b9811f;color:#059669}.rpt__rc-result--fail{background:#ef44441a;color:#dc2626}.rpt__manifest-header{display:flex;gap:20px;padding:12px 14px;background:#00000005;border-radius:8px;margin-bottom:16px;flex-wrap:wrap}.rpt__manifest-field{display:flex;flex-direction:column;gap:2px}.rpt__manifest-label{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted, #94a3b8)}.rpt__manifest-val{font-size:.82rem;font-weight:600;color:var(--text-primary, #1e293b)}.rpt__stop-group{margin-bottom:16px}.rpt__stop-title{display:flex;align-items:center;gap:12px;padding:8px 12px;background:#667eea0d;border-left:4px solid #667eea;border-radius:0 6px 6px 0;margin-bottom:4px}.rpt__stop-name{font-size:.82rem;font-weight:700;color:var(--text-primary, #1e293b)}.rpt__stop-time{font-size:.72rem;font-weight:600;color:#667eea;font-variant-numeric:tabular-nums}.rpt__stop-count{margin-left:auto;font-size:.68rem;color:var(--text-muted, #94a3b8)}.rpt__loading{padding:60px 0;text-align:center}.rpt__loader{display:inline-flex;gap:6px}.rpt__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:rpt-bounce 1.2s infinite ease-in-out}.rpt__loader-dot:nth-child(2){animation-delay:.15s}.rpt__loader-dot:nth-child(3){animation-delay:.3s}.rpt__spinner{animation:rpt-spin 1.2s linear infinite}.rpt__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}@keyframes rpt-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}@keyframes rpt-spin{to{transform:rotate(360deg)}}.homework{display:flex;flex-direction:column;height:100%;gap:0}.homework__header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 12px;flex-shrink:0}.homework__header-text{display:flex;flex-direction:column;gap:2px}.homework__title{font-size:20px;font-weight:700;color:#111827;margin:0;letter-spacing:-.3px}.homework__subtitle{font-size:13px;color:#6b7280;margin:0}.homework__add-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;border:none;border-radius:8px;background:#4f46e5;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.homework__add-btn:hover{background:#4338ca}.homework__add-btn svg{flex-shrink:0}.homework__filters{display:flex;align-items:flex-end;gap:12px;padding:0 24px 12px;flex-shrink:0}.homework__filter-field{display:flex;flex-direction:column;gap:4px;min-width:180px}.homework__filter-search{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 16px;border:1px solid #4F46E5;border-radius:8px;background:#4f46e5;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s}.homework__filter-search:hover:not(:disabled){background:#4338ca;border-color:#4338ca}.homework__filter-search:disabled{opacity:.6;cursor:not-allowed}.homework__filter-search svg{flex-shrink:0}.homework__filter-clear{height:36px;padding:0 14px;border:1px solid #D1D5DB;border-radius:8px;background:#fff;color:#374151;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s}.homework__filter-clear:hover{background:#f9fafb;border-color:#9ca3af}.homework__toast{position:fixed;top:56px;right:24px;z-index:900;display:flex;align-items:center;gap:8px;padding:10px 18px;border-radius:8px;background:#ecfdf5;color:#065f46;font-size:13px;font-weight:500;border:1px solid #A7F3D0;animation:hw-toast-in .3s ease-out}@keyframes hw-toast-in{0%{opacity:0;transform:translateY(-8px)}}.homework__toast--error{background:#fef2f2;color:#991b1b;border-color:#fecaca}.homework__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.homework__toast-dismiss:hover{opacity:1}.homework__grid-wrap{flex:1;overflow:auto;padding:0 24px 24px}.homework__table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #E5E7EB;border-radius:10px;overflow:hidden}.homework__th{text-align:left;padding:10px 14px;font-size:11px;font-weight:700;color:#6b7280;text-transform:uppercase;letter-spacing:.5px;background:#f9fafb;border-bottom:1px solid #E5E7EB;position:sticky;top:0;z-index:2}.homework__th--actions{text-align:center;width:100px}.homework__row{transition:background .1s}.homework__row:hover{background:#f9fafb}.homework__row:not(:last-child) .homework__td{border-bottom:1px solid #F3F4F6}.homework__td{padding:10px 14px;font-size:13px;color:#374151;vertical-align:middle}.homework__td--title{font-weight:600;color:#111827;max-width:260px}.homework__td--subject{color:#6b7280}.homework__td--due{font-variant-numeric:tabular-nums;white-space:nowrap}.homework__target-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap}.homework__target-badge--broadcast{background:#eff6ff;color:#1e40af;border:1px solid #BFDBFE}.homework__target-badge--section{background:#f3f4f6;color:#374151;border:1px solid #E5E7EB}.homework__completion{display:flex;flex-direction:column;gap:4px;min-width:120px}.homework__completion-text{font-size:12px;font-weight:600;color:#374151;font-variant-numeric:tabular-nums}.homework__progress-bar{width:100%;height:6px;border-radius:3px;background:#f3f4f6;overflow:hidden}.homework__progress-fill{height:100%;border-radius:3px;transition:width .4s ease;background:linear-gradient(90deg,#818cf8,#4f46e5)}.homework__progress-fill--high{background:linear-gradient(90deg,#34d399,#059669)}.homework__eval-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 14px;border:1px solid #E5E7EB;border-radius:6px;background:#fff;color:#4f46e5;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s}.homework__eval-btn:hover{background:#eef2ff;border-color:#c7d2fe}.homework__empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px;text-align:center}.homework__empty-icon{color:#d1d5db;margin-bottom:16px}.homework__empty-title{font-size:16px;font-weight:600;color:#374151;margin:0 0 6px}.homework__empty-text{font-size:13px;color:#9ca3af;margin:0;max-width:320px}.homework__loading{display:flex;align-items:center;justify-content:center;padding:80px 0}.homework__loader{display:flex;gap:6px}.homework__loader-dot{width:8px;height:8px;border-radius:50%;background:#818cf8;animation:hw-bounce .6s ease-in-out infinite alternate}.homework__loader-dot:nth-child(2){animation-delay:.15s}.homework__loader-dot:nth-child(3){animation-delay:.3s}@keyframes hw-bounce{to{opacity:.3;transform:translateY(-6px)}}.homework__drawer-overlay{position:fixed;inset:0;z-index:800;background:#00000040;animation:hw-overlay-in .2s ease-out}@keyframes hw-overlay-in{0%{opacity:0}}.homework__drawer{position:fixed;top:0;right:0;bottom:0;z-index:810;width:440px;max-width:90vw;background:#fff;display:flex;flex-direction:column;box-shadow:-8px 0 30px #0000001f;animation:hw-drawer-slide .25s ease-out}@keyframes hw-drawer-slide{0%{transform:translate(100%)}}.homework__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid #E5E7EB;flex-shrink:0}.homework__drawer-title{font-size:16px;font-weight:700;color:#111827;margin:0}.homework__drawer-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:none;border-radius:6px;background:transparent;color:#6b7280;cursor:pointer;transition:background .15s}.homework__drawer-close:hover{background:#f3f4f6}.homework__drawer-body{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:20px}.homework__drawer-card{background:#fff;border:1px solid #E5E7EB;border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:12px}.homework__drawer-card-title{font-size:12px;font-weight:700;color:#6b7280;text-transform:uppercase;letter-spacing:.5px;margin:0 0 4px}.homework__field{display:flex;flex-direction:column;gap:4px}.homework__label{font-size:12px;font-weight:700;color:#374151}.homework__input,.homework__select,.homework__textarea{width:100%;padding:8px 10px;border:1px solid #D1D5DB;border-radius:6px;font-size:13px;color:#111827;background-color:#fff;transition:border-color .15s;box-sizing:border-box}.homework__select{padding-right:32px}.homework__input:focus,.homework__select:focus,.homework__textarea:focus{outline:none;border-color:#818cf8;box-shadow:0 0 0 3px #818cf826}.homework__textarea{resize:vertical;min-height:80px;font-family:inherit}.homework__field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.homework__broadcast-hint{font-size:11px;color:#6b7280;font-style:italic;margin-top:2px}.homework__drawer-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid #E5E7EB;flex-shrink:0;background:#fafafa}.homework__drawer-cancel{padding:8px 18px;border:1px solid #D1D5DB;border-radius:8px;background:#fff;color:#374151;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.homework__drawer-cancel:hover{background:#f3f4f6}.homework__drawer-save{padding:8px 22px;border:none;border-radius:8px;background:#4f46e5;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.homework__drawer-save:hover{background:#4338ca}.homework__drawer-save:disabled{opacity:.5;cursor:not-allowed}.notice{display:flex;flex-direction:column;height:100%;gap:0}.notice__header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 12px;flex-shrink:0}.notice__header-text{display:flex;flex-direction:column;gap:2px}.notice__title{font-size:20px;font-weight:700;color:#111827;margin:0;letter-spacing:-.3px}.notice__subtitle{font-size:13px;color:#6b7280;margin:0}.notice__add-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;border:none;border-radius:8px;background:#4f46e5;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.notice__add-btn:hover{background:#4338ca}.notice__add-btn svg{flex-shrink:0}.notice__toast{position:fixed;top:56px;right:24px;z-index:900;display:flex;align-items:center;gap:8px;padding:10px 18px;border-radius:8px;background:#ecfdf5;color:#065f46;font-size:13px;font-weight:500;border:1px solid #A7F3D0;animation:notice-toast-in .3s ease-out}@keyframes notice-toast-in{0%{opacity:0;transform:translateY(-8px)}}.notice__toast--error{background:#fef2f2;color:#991b1b;border-color:#fecaca}.notice__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.notice__toast-dismiss:hover{opacity:1}.notice__grid-wrap{flex:1;overflow:auto;padding:0 24px 24px}.notice__table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #E5E7EB;border-radius:10px;overflow:hidden}.notice__th{text-align:left;padding:10px 14px;font-size:11px;font-weight:700;color:#6b7280;text-transform:uppercase;letter-spacing:.5px;background:#f9fafb;border-bottom:1px solid #E5E7EB;position:sticky;top:0;z-index:2}.notice__th--actions{text-align:center;width:120px}.notice__row{transition:background .1s}.notice__row:hover{background:#f9fafb}.notice__row:not(:last-child) .notice__td{border-bottom:1px solid #F3F4F6}.notice__td{padding:10px 14px;font-size:13px;color:#374151;vertical-align:middle}.notice__td--title{font-weight:600;color:#111827;max-width:260px}.notice__td--date{font-variant-numeric:tabular-nums;white-space:nowrap}.notice__badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:6px;font-size:11px;font-weight:700;white-space:nowrap;text-transform:capitalize}.notice__badge--urgent{background:#fee2e2;color:#991b1b;border:1px solid #FECACA;animation:notice-pulse 2s ease-in-out infinite}@keyframes notice-pulse{0%,to{opacity:1}50%{opacity:.7}}.notice__badge--high{background:#fff7ed;color:#9a3412;border:1px solid #FED7AA}.notice__badge--normal{background:#f3f4f6;color:#374151;border:1px solid #E5E7EB}.notice__badge--low{background:#eff6ff;color:#1e40af;border:1px solid #BFDBFE}.notice__badge--general{background:#f3f4f6;color:#374151;border:1px solid #E5E7EB}.notice__badge--academic{background:#eff6ff;color:#1e40af;border:1px solid #BFDBFE}.notice__badge--event{background:#f5f3ff;color:#5b21b6;border:1px solid #DDD6FE}.notice__badge--emergency{background:#fee2e2;color:#991b1b;border:1px solid #FECACA}.notice__badge--holiday{background:#ecfdf5;color:#065f46;border:1px solid #A7F3D0}.notice__badge--scheduled{background:#fff7ed;color:#9a3412;border:1px solid #FED7AA}.notice__badge--active{background:#ecfdf5;color:#065f46;border:1px solid #A7F3D0}.notice__badge--expired{background:#f3f4f6;color:#6b7280;border:1px solid #E5E7EB}.notice__target-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap}.notice__target-badge--school-wide{background:#eff6ff;color:#1e40af;border:1px solid #BFDBFE}.notice__target-badge--targeted{background:#f3f4f6;color:#374151;border:1px solid #E5E7EB}.notice__receipts{font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;color:#374151}.notice__receipts--na{color:#9ca3af;font-weight:400}.notice__action-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border:1px solid #E5E7EB;border-radius:6px;background:#fff;color:#4f46e5;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s}.notice__action-btn:hover{background:#eef2ff;border-color:#c7d2fe}.notice__action-btn--icon{padding:5px 7px;color:#6b7280}.notice__action-btn--icon:hover{color:#4f46e5}.notice__actions-cell{display:flex;gap:6px;align-items:center;justify-content:center}.notice__empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px;text-align:center}.notice__empty-icon{color:#d1d5db;margin-bottom:16px}.notice__empty-title{font-size:16px;font-weight:600;color:#374151;margin:0 0 6px}.notice__empty-text{font-size:13px;color:#9ca3af;margin:0;max-width:320px}.notice__loading{display:flex;align-items:center;justify-content:center;padding:80px 0}.notice__loader{display:flex;gap:6px}.notice__loader-dot{width:8px;height:8px;border-radius:50%;background:#818cf8;animation:notice-bounce .6s ease-in-out infinite alternate}.notice__loader-dot:nth-child(2){animation-delay:.15s}.notice__loader-dot:nth-child(3){animation-delay:.3s}@keyframes notice-bounce{to{opacity:.3;transform:translateY(-6px)}}.notice__drawer-overlay{position:fixed;inset:0;z-index:800;background:#00000040;animation:notice-overlay-in .2s ease-out}@keyframes notice-overlay-in{0%{opacity:0}}.notice__drawer{position:fixed;top:0;right:0;bottom:0;z-index:810;width:480px;max-width:90vw;background:#fff;display:flex;flex-direction:column;box-shadow:-8px 0 30px #0000001f;animation:notice-drawer-slide .25s ease-out}@keyframes notice-drawer-slide{0%{transform:translate(100%)}}.notice__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid #E5E7EB;flex-shrink:0}.notice__drawer-title{font-size:16px;font-weight:700;color:#111827;margin:0}.notice__drawer-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:none;border-radius:6px;background:transparent;color:#6b7280;cursor:pointer;transition:background .15s}.notice__drawer-close:hover{background:#f3f4f6}.notice__drawer-body{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:20px}.notice__drawer-card{background:#fff;border:1px solid #E5E7EB;border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:12px}.notice__drawer-card-title{font-size:12px;font-weight:700;color:#6b7280;text-transform:uppercase;letter-spacing:.5px;margin:0 0 4px}.notice__field{display:flex;flex-direction:column;gap:4px}.notice__label{font-size:12px;font-weight:700;color:#374151}.notice__input,.notice__select,.notice__textarea{width:100%;padding:8px 10px;border:1px solid #D1D5DB;border-radius:6px;font-size:13px;color:#111827;background-color:#fff;transition:border-color .15s;box-sizing:border-box}.notice__select{padding-right:32px}.notice__input:focus,.notice__select:focus,.notice__textarea:focus{outline:none;border-color:#818cf8;box-shadow:0 0 0 3px #818cf826}.notice__textarea{resize:vertical;min-height:100px;font-family:inherit}.notice__field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.notice__toggle-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0}.notice__toggle-info{display:flex;flex-direction:column;gap:2px}.notice__toggle-label{font-size:13px;font-weight:600;color:#111827}.notice__toggle-desc{font-size:11px;color:#6b7280}.notice__toggle{position:relative;width:44px;height:24px;flex-shrink:0}.notice__toggle input{opacity:0;width:0;height:0;position:absolute}.notice__toggle-track{position:absolute;inset:0;background:#d1d5db;border-radius:12px;cursor:pointer;transition:background .2s}.notice__toggle-track:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;box-shadow:0 1px 3px #00000026;transition:transform .2s}.notice__toggle input:checked+.notice__toggle-track{background:#4f46e5}.notice__toggle input:checked+.notice__toggle-track:after{transform:translate(20px)}.notice__toggle input:focus-visible+.notice__toggle-track{box-shadow:0 0 0 3px #4f46e540}.notice__audience-list{display:flex;flex-direction:column;gap:8px;margin-top:8px}.notice__audience-row{display:flex;gap:8px;align-items:flex-end}.notice__audience-row .notice__field{flex:1}.notice__audience-remove{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:1px solid #FECACA;border-radius:6px;background:#fef2f2;color:#991b1b;cursor:pointer;flex-shrink:0;transition:all .15s}.notice__audience-remove:hover{background:#fee2e2}.notice__audience-add{display:inline-flex;align-items:center;gap:4px;padding:6px 14px;border:1px dashed #D1D5DB;border-radius:6px;background:transparent;color:#6b7280;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;align-self:flex-start}.notice__audience-add:hover{border-color:#818cf8;color:#4f46e5}.notice__drawer-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid #E5E7EB;flex-shrink:0;background:#fafafa}.notice__drawer-cancel{padding:8px 18px;border:1px solid #D1D5DB;border-radius:8px;background:#fff;color:#374151;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.notice__drawer-cancel:hover{background:#f3f4f6}.notice__drawer-save{padding:8px 22px;border:none;border-radius:8px;background:#4f46e5;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.notice__drawer-save:hover{background:#4338ca}.notice__drawer-save:disabled{opacity:.5;cursor:not-allowed}.notice__ack-header-bar{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;background:#f9fafb;border-bottom:1px solid #E5E7EB;flex-shrink:0}.notice__ack-stats{display:flex;gap:16px;font-size:12px;font-weight:600}.notice__ack-stat--read{color:#065f46}.notice__ack-stat--pending{color:#d97706}.notice__remind-btn{display:inline-flex;align-items:center;gap:5px;padding:6px 14px;border:1px solid #FED7AA;border-radius:6px;background:#fff7ed;color:#9a3412;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s}.notice__remind-btn:hover{background:#ffedd5}.notice__remind-btn:disabled{opacity:.5;cursor:not-allowed}.notice__ack-search{padding:8px 12px;border:1px solid #E5E7EB;border-radius:6px;font-size:12px;background:#fff;margin:12px 20px;box-sizing:border-box;width:calc(100% - 40px)}.notice__ack-search:focus{outline:none;border-color:#818cf8;box-shadow:0 0 0 3px #818cf826}.notice__ack-list{flex:1;overflow-y:auto;padding:0 20px 20px}.notice__ack-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #F3F4F6}.notice__ack-item:last-child{border-bottom:none}.notice__ack-avatar{width:36px;height:36px;border-radius:50%;background:#eef2ff;color:#4f46e5;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}.notice__ack-info{flex:1;min-width:0}.notice__ack-name{font-size:13px;font-weight:600;color:#111827}.notice__ack-role{font-size:11px;color:#6b7280;text-transform:capitalize}.notice__ack-status{font-size:11px;font-weight:700;padding:3px 10px;border-radius:6px;white-space:nowrap;flex-shrink:0}.notice__ack-status--read{background:#ecfdf5;color:#065f46;border:1px solid #A7F3D0}.notice__ack-status--pending{background:#fff7ed;color:#d97706;border:1px solid #FED7AA}.notice__ack-empty{text-align:center;padding:40px 20px;color:#9ca3af;font-size:13px}.holiday{display:flex;flex-direction:column;height:100%;gap:0}.holiday__header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 12px;flex-shrink:0}.holiday__header-text{display:flex;flex-direction:column;gap:2px}.holiday__title{font-size:20px;font-weight:700;color:#111827;margin:0;letter-spacing:-.3px}.holiday__subtitle{font-size:13px;color:#6b7280;margin:0}.holiday__header-actions{display:flex;align-items:center;gap:10px}.holiday__add-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;border:none;border-radius:8px;background:#4f46e5;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.holiday__add-btn:hover{background:#4338ca}.holiday__add-btn svg{flex-shrink:0}.holiday__view-toggle{display:flex;border:1px solid #E5E7EB;border-radius:8px;overflow:hidden}.holiday__view-btn{display:flex;align-items:center;gap:5px;padding:7px 14px;border:none;background:#fff;color:#6b7280;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;font-family:inherit}.holiday__view-btn:not(:last-child){border-right:1px solid #E5E7EB}.holiday__view-btn--active{background:#4f46e5;color:#fff}.holiday__view-btn:not(.holiday__view-btn--active):hover{background:#f9fafb}.holiday__toast{position:fixed;top:56px;right:24px;z-index:900;display:flex;align-items:center;gap:8px;padding:10px 18px;border-radius:8px;background:#ecfdf5;color:#065f46;font-size:13px;font-weight:500;border:1px solid #A7F3D0;animation:hol-toast-in .3s ease-out}@keyframes hol-toast-in{0%{opacity:0;transform:translateY(-8px)}}.holiday__toast--error{background:#fef2f2;color:#991b1b;border-color:#fecaca}.holiday__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.holiday__toast-dismiss:hover{opacity:1}.holiday__grid-wrap{flex:1;overflow:auto;padding:0 24px 24px}.holiday__table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #E5E7EB;border-radius:10px;overflow:hidden}.holiday__th{text-align:left;padding:10px 14px;font-size:11px;font-weight:700;color:#6b7280;text-transform:uppercase;letter-spacing:.5px;background:#f9fafb;border-bottom:1px solid #E5E7EB;position:sticky;top:0;z-index:2}.holiday__th--actions{text-align:center;width:80px}.holiday__row{transition:background .1s}.holiday__row:hover{background:#f9fafb}.holiday__row:not(:last-child) .holiday__td{border-bottom:1px solid #F3F4F6}.holiday__td{padding:10px 14px;font-size:13px;color:#374151;vertical-align:middle}.holiday__td--name{font-weight:600;color:#111827;max-width:260px}.holiday__td--date{font-variant-numeric:tabular-nums;white-space:nowrap}.holiday__td--duration{font-variant-numeric:tabular-nums;font-weight:600;color:#4f46e5;white-space:nowrap}.holiday__badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:6px;font-size:11px;font-weight:700;white-space:nowrap}.holiday__badge--public{background:#eff6ff;color:#1e40af;border:1px solid #BFDBFE}.holiday__badge--academic_break{background:#ecfdf5;color:#065f46;border:1px solid #A7F3D0}.holiday__badge--restricted{background:#fefce8;color:#854d0e;border:1px solid #FDE68A}.holiday__badge--emergency{background:#fef2f2;color:#991b1b;border:1px solid #FECACA}.holiday__badge--all{background:#f3f4f6;color:#374151;border:1px solid #E5E7EB}.holiday__badge--students_only{background:#f5f3ff;color:#5b21b6;border:1px solid #DDD6FE}.holiday__badge--staff_only{background:#fff7ed;color:#9a3412;border:1px solid #FED7AA}.holiday__action-btn{display:inline-flex;align-items:center;justify-content:center;padding:5px 7px;border:1px solid #E5E7EB;border-radius:6px;background:#fff;color:#6b7280;cursor:pointer;transition:all .15s}.holiday__action-btn:hover{color:#ef4444;border-color:#fecaca;background:#fef2f2}.holiday__empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px;text-align:center}.holiday__empty-icon{color:#d1d5db;margin-bottom:16px}.holiday__empty-title{font-size:16px;font-weight:600;color:#374151;margin:0 0 6px}.holiday__empty-text{font-size:13px;color:#9ca3af;margin:0;max-width:320px}.holiday__loading{display:flex;align-items:center;justify-content:center;padding:80px 0}.holiday__loader{display:flex;gap:6px}.holiday__loader-dot{width:8px;height:8px;border-radius:50%;background:#818cf8;animation:hol-bounce .6s ease-in-out infinite alternate}.holiday__loader-dot:nth-child(2){animation-delay:.15s}.holiday__loader-dot:nth-child(3){animation-delay:.3s}@keyframes hol-bounce{to{opacity:.3;transform:translateY(-6px)}}.holiday__drawer-overlay{position:fixed;inset:0;z-index:800;background:#00000040;animation:hol-overlay-in .2s ease-out}@keyframes hol-overlay-in{0%{opacity:0}}.holiday__drawer{position:fixed;top:0;right:0;bottom:0;z-index:810;width:440px;max-width:90vw;background:#fff;display:flex;flex-direction:column;box-shadow:-8px 0 30px #0000001f;animation:hol-drawer-slide .25s ease-out}@keyframes hol-drawer-slide{0%{transform:translate(100%)}}.holiday__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid #E5E7EB;flex-shrink:0}.holiday__drawer-title{font-size:16px;font-weight:700;color:#111827;margin:0}.holiday__drawer-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:none;border-radius:6px;background:transparent;color:#6b7280;cursor:pointer;transition:background .15s}.holiday__drawer-close:hover{background:#f3f4f6}.holiday__drawer-body{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:20px}.holiday__drawer-card{background:#fff;border:1px solid #E5E7EB;border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:12px}.holiday__drawer-card-title{font-size:12px;font-weight:700;color:#6b7280;text-transform:uppercase;letter-spacing:.5px;margin:0 0 4px}.holiday__field{display:flex;flex-direction:column;gap:4px}.holiday__label{font-size:12px;font-weight:700;color:#374151}.holiday__input,.holiday__select,.holiday__textarea{width:100%;padding:8px 10px;border:1px solid #D1D5DB;border-radius:6px;font-size:13px;color:#111827;background-color:#fff;transition:border-color .15s;box-sizing:border-box}.holiday__select{padding-right:32px}.holiday__input:focus,.holiday__select:focus,.holiday__textarea:focus{outline:none;border-color:#818cf8;box-shadow:0 0 0 3px #818cf826}.holiday__textarea{resize:vertical;min-height:64px;font-family:inherit}.holiday__field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.holiday__segmented{display:flex;border:1px solid #E5E7EB;border-radius:8px;overflow:hidden}.holiday__seg-btn{flex:1;padding:8px 4px;border:none;background:#fff;color:#6b7280;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;font-family:inherit;text-align:center}.holiday__seg-btn:not(:last-child){border-right:1px solid #E5E7EB}.holiday__seg-btn--active{background:#4f46e5;color:#fff}.holiday__seg-btn:not(.holiday__seg-btn--active):hover{background:#f9fafb}.holiday__date-hint{font-size:11px;color:#6b7280;font-style:italic;margin-top:2px}.holiday__drawer-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid #E5E7EB;flex-shrink:0;background:#fafafa}.holiday__drawer-cancel{padding:8px 18px;border:1px solid #D1D5DB;border-radius:8px;background:#fff;color:#374151;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.holiday__drawer-cancel:hover{background:#f3f4f6}.holiday__drawer-save{padding:8px 22px;border:none;border-radius:8px;background:#4f46e5;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.holiday__drawer-save:hover{background:#4338ca}.holiday__drawer-save:disabled{opacity:.5;cursor:not-allowed}.holiday__calendar{flex:1;overflow:auto;padding:0 24px 24px}.holiday__cal-nav{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:16px}.holiday__cal-nav-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:1px solid #E5E7EB;border-radius:6px;background:#fff;color:#374151;cursor:pointer;transition:all .15s}.holiday__cal-nav-btn:hover{background:#f9fafb;border-color:#c7d2fe;color:#4f46e5}.holiday__cal-month{font-size:16px;font-weight:700;color:#111827;min-width:180px;text-align:center}.holiday__cal-grid{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid #E5E7EB;border-radius:10px;overflow:hidden;background:#fff}.holiday__cal-weekday{padding:8px 4px;font-size:11px;font-weight:700;color:#6b7280;text-transform:uppercase;letter-spacing:.5px;text-align:center;background:#f9fafb;border-bottom:1px solid #E5E7EB}.holiday__cal-day{min-height:80px;padding:4px;border-bottom:1px solid #F3F4F6;border-right:1px solid #F3F4F6;position:relative}.holiday__cal-day:nth-child(7n){border-right:none}.holiday__cal-day--empty{background:#fafafa}.holiday__cal-day--today{background:#fefce8}.holiday__cal-day-num{font-size:12px;font-weight:600;color:#374151;font-variant-numeric:tabular-nums;margin-bottom:2px}.holiday__cal-day--today .holiday__cal-day-num{color:#4f46e5;font-weight:700}.holiday__cal-pill{display:block;padding:2px 6px;border-radius:4px;font-size:10px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px;cursor:default}.holiday__cal-pill--public{background:#dbeafe;color:#1e40af}.holiday__cal-pill--academic_break{background:#d1fae5;color:#065f46}.holiday__cal-pill--restricted{background:#fef3c7;color:#854d0e}.holiday__cal-pill--emergency{background:#fee2e2;color:#991b1b}.task-mgmt{display:flex;flex-direction:column;height:100%;gap:0}.task-mgmt__header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 12px;flex-shrink:0}.task-mgmt__header-text{display:flex;flex-direction:column;gap:2px}.task-mgmt__title{font-size:20px;font-weight:700;color:#111827;margin:0;letter-spacing:-.3px}.task-mgmt__subtitle{font-size:13px;color:#6b7280;margin:0}.task-mgmt__header-actions{display:flex;align-items:center;gap:10px}.task-mgmt__add-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;border:none;border-radius:8px;background:#4f46e5;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.task-mgmt__add-btn:hover{background:#4338ca}.task-mgmt__add-btn svg{flex-shrink:0}.task-mgmt__filters{display:flex;align-items:center;gap:10px;padding:0 24px 12px;flex-shrink:0}.task-mgmt__search{position:relative;display:flex;align-items:center}.task-mgmt__search-icon{position:absolute;left:10px;color:#9ca3af;pointer-events:none}.task-mgmt__search-input{padding:7px 28px 7px 30px;border:1px solid #E5E7EB;border-radius:8px;font-size:12px;font-weight:500;color:#374151;background:#fff;width:220px;transition:border-color .15s;font-family:inherit}.task-mgmt__search-input:focus{outline:none;border-color:#818cf8;box-shadow:0 0 0 3px #818cf826}.task-mgmt__search-clear{position:absolute;right:8px;border:none;background:none;color:#9ca3af;font-size:11px;cursor:pointer;padding:2px 4px;line-height:1}.task-mgmt__search-clear:hover{color:#4b5563}.task-mgmt__ss{position:relative}.task-mgmt__ss--block{width:100%}.task-mgmt__ss--block .task-mgmt__ss-trigger{width:100%;min-width:0}.task-mgmt__ss--block .task-mgmt__ss-menu{width:100%}.task-mgmt__ss-trigger{box-sizing:border-box;display:flex;align-items:center;gap:8px;min-width:160px;padding:7px 10px 7px 12px;border:1px solid #E5E7EB;border-radius:8px;font-size:12px;font-weight:600;color:#374151;background:#fff;cursor:pointer;transition:border-color .15s;font-family:inherit}.task-mgmt__ss-trigger:hover{border-color:#d1d5db}.task-mgmt__ss-trigger:focus{outline:none;border-color:#818cf8;box-shadow:0 0 0 3px #818cf826}.task-mgmt__ss-trigger svg{margin-left:auto;color:#9ca3af}.task-mgmt__ss-placeholder{color:#9ca3af;font-weight:500}.task-mgmt__ss-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:50;width:240px;background:#fff;border:1px solid #E5E7EB;border-radius:8px;box-shadow:0 8px 24px #0000001f;overflow:hidden}.task-mgmt__ss-search{width:100%;box-sizing:border-box;padding:8px 12px;border:none;border-bottom:1px solid #F3F4F6;font-size:12px;color:#374151;font-family:inherit}.task-mgmt__ss-search:focus{outline:none;background:#fafafb}.task-mgmt__ss-list{max-height:220px;overflow-y:auto;padding:4px}.task-mgmt__ss-option{display:block;width:100%;text-align:left;padding:7px 8px;border:none;background:none;border-radius:6px;font-size:12px;font-weight:500;color:#374151;cursor:pointer;font-family:inherit}.task-mgmt__ss-option:hover{background:#f3f4f6}.task-mgmt__ss-option--active{background:#eef2ff;color:#4f46e5;font-weight:600}.task-mgmt__ss-empty{padding:12px;text-align:center;font-size:12px;color:#9ca3af}.task-mgmt__toast{position:fixed;top:56px;right:24px;z-index:900;display:flex;align-items:center;gap:8px;padding:10px 18px;border-radius:8px;background:#ecfdf5;color:#065f46;font-size:13px;font-weight:500;border:1px solid #A7F3D0;animation:task-toast-in .3s ease-out}@keyframes task-toast-in{0%{opacity:0;transform:translateY(-8px)}}.task-mgmt__toast--error{background:#fef2f2;color:#991b1b;border-color:#fecaca}.task-mgmt__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.task-mgmt__toast-dismiss:hover{opacity:1}.task-mgmt__grid-wrap{flex:1;overflow:auto;padding:0 24px 24px}.task-mgmt__table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #E5E7EB;border-radius:10px;overflow:hidden}.task-mgmt__th{text-align:left;padding:10px 14px;font-size:11px;font-weight:700;color:#6b7280;text-transform:uppercase;letter-spacing:.5px;background:#f9fafb;border-bottom:1px solid #E5E7EB;position:sticky;top:0;z-index:2}.task-mgmt__th--actions{text-align:center;width:80px}.task-mgmt__row{transition:background .1s}.task-mgmt__row:hover{background:#f9fafb}.task-mgmt__row:not(:last-child) .task-mgmt__td{border-bottom:1px solid #F3F4F6}.task-mgmt__td{padding:10px 14px;font-size:13px;color:#374151;vertical-align:middle}.task-mgmt__td--title{font-weight:600;color:#111827;max-width:260px}.task-mgmt__td--date{font-variant-numeric:tabular-nums;white-space:nowrap}.task-mgmt__td--desc{max-width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#6b7280;font-size:12px}.task-mgmt__badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:6px;font-size:11px;font-weight:700;white-space:nowrap}.task-mgmt__badge--pending{background:#fef3c7;color:#854d0e;border:1px solid #FDE68A}.task-mgmt__badge--in_progress{background:#eff6ff;color:#1e40af;border:1px solid #BFDBFE}.task-mgmt__badge--completed{background:#ecfdf5;color:#065f46;border:1px solid #A7F3D0}.task-mgmt__badge--cancelled{background:#f3f4f6;color:#6b7280;border:1px solid #E5E7EB}.task-mgmt__badge--low{background:#f0fdf4;color:#166534;border:1px solid #BBF7D0}.task-mgmt__badge--medium{background:#fffbeb;color:#92400e;border:1px solid #FDE68A}.task-mgmt__badge--high{background:#fef2f2;color:#991b1b;border:1px solid #FECACA}.task-mgmt__action-btn{display:inline-flex;align-items:center;justify-content:center;padding:5px 7px;border:1px solid #E5E7EB;border-radius:6px;background:#fff;color:#6b7280;cursor:pointer;transition:all .15s}.task-mgmt__action-btn:hover{color:#ef4444;border-color:#fecaca;background:#fef2f2}.task-mgmt__empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px;text-align:center}.task-mgmt__empty-icon{color:#d1d5db;margin-bottom:16px}.task-mgmt__empty-title{font-size:16px;font-weight:600;color:#374151;margin:0 0 6px}.task-mgmt__empty-text{font-size:13px;color:#9ca3af;margin:0;max-width:320px}.task-mgmt__loading{display:flex;align-items:center;justify-content:center;padding:80px 0}.task-mgmt__loader{display:flex;gap:6px}.task-mgmt__loader-dot{width:8px;height:8px;border-radius:50%;background:#818cf8;animation:task-bounce .6s ease-in-out infinite alternate}.task-mgmt__loader-dot:nth-child(2){animation-delay:.15s}.task-mgmt__loader-dot:nth-child(3){animation-delay:.3s}@keyframes task-bounce{to{opacity:.3;transform:translateY(-6px)}}.task-mgmt__drawer-overlay{position:fixed;inset:0;z-index:800;background:#00000040;animation:task-overlay-in .2s ease-out}@keyframes task-overlay-in{0%{opacity:0}}.task-mgmt__drawer{position:fixed;top:0;right:0;bottom:0;z-index:810;width:480px;max-width:90vw;background:#fff;display:flex;flex-direction:column;box-shadow:-8px 0 30px #0000001f;animation:task-drawer-slide .25s ease-out}@keyframes task-drawer-slide{0%{transform:translate(100%)}}.task-mgmt__drawer-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid #E5E7EB;flex-shrink:0}.task-mgmt__drawer-title{font-size:16px;font-weight:700;color:#111827;margin:0}.task-mgmt__drawer-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:none;border-radius:6px;background:transparent;color:#6b7280;cursor:pointer;transition:background .15s}.task-mgmt__drawer-close:hover{background:#f3f4f6}.task-mgmt__drawer-body{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:20px}.task-mgmt__drawer-card{background:#fff;border:1px solid #E5E7EB;border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:12px}.task-mgmt__drawer-card-title{font-size:12px;font-weight:700;color:#6b7280;text-transform:uppercase;letter-spacing:.5px;margin:0 0 4px}.task-mgmt__field{display:flex;flex-direction:column;gap:4px}.task-mgmt__label{font-size:12px;font-weight:700;color:#374151}.task-mgmt__input,.task-mgmt__select,.task-mgmt__textarea{width:100%;padding:8px 10px;border:1px solid #D1D5DB;border-radius:6px;font-size:13px;color:#111827;background:#fff;transition:border-color .15s;box-sizing:border-box;font-family:inherit}.task-mgmt__input:focus,.task-mgmt__select:focus,.task-mgmt__textarea:focus{outline:none;border-color:#818cf8;box-shadow:0 0 0 3px #818cf826}.task-mgmt__textarea{resize:vertical;min-height:80px}.task-mgmt__select{appearance:auto}.task-mgmt__field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.task-mgmt__drawer-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid #E5E7EB;flex-shrink:0;background:#fafafa}.task-mgmt__drawer-cancel{padding:8px 18px;border:1px solid #D1D5DB;border-radius:8px;background:#fff;color:#374151;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.task-mgmt__drawer-cancel:hover{background:#f3f4f6}.task-mgmt__drawer-save{padding:8px 22px;border:none;border-radius:8px;background:#4f46e5;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.task-mgmt__drawer-save:hover{background:#4338ca}.task-mgmt__drawer-save:disabled{opacity:.5;cursor:not-allowed}.task-mgmt__pagination{display:flex;align-items:center;justify-content:center;gap:12px;padding:16px 24px;flex-shrink:0}.task-mgmt__page-btn{padding:6px 14px;border:1px solid #E5E7EB;border-radius:6px;background:#fff;color:#374151;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;font-family:inherit}.task-mgmt__page-btn:hover:not(:disabled){background:#f9fafb;border-color:#c7d2fe;color:#4f46e5}.task-mgmt__page-btn:disabled{opacity:.4;cursor:not-allowed}.task-mgmt__page-info{font-size:12px;color:#6b7280;font-weight:600}.hw-eval{display:flex;flex-direction:column;height:100%;gap:0}.hw-eval__header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px 12px;flex-shrink:0}.hw-eval__header-text{display:flex;flex-direction:column;gap:2px}.hw-eval__title{font-size:20px;font-weight:700;color:#111827;margin:0;letter-spacing:-.3px}.hw-eval__subtitle{font-size:13px;color:#6b7280;margin:0}.hw-eval__back-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border:1px solid #D1D5DB;border-radius:8px;background:#fff;color:#374151;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s}.hw-eval__back-btn:hover{background:#f3f4f6;border-color:#9ca3af}.hw-eval__context{margin:0 24px 16px;padding:14px 18px;background:#fff;border:1px solid #E5E7EB;border-radius:10px;display:flex;gap:32px;flex-wrap:wrap;align-items:center}.hw-eval__context-item{display:flex;flex-direction:column;gap:2px}.hw-eval__context-label{font-size:11px;font-weight:700;color:#9ca3af;text-transform:uppercase;letter-spacing:.4px}.hw-eval__context-value{font-size:13px;font-weight:600;color:#111827}.hw-eval__context-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:5px;font-size:12px;font-weight:600}.hw-eval__context-badge--broadcast{background:#eff6ff;color:#1e40af}.hw-eval__context-badge--section{background:#f3f4f6;color:#374151}.hw-eval__toast{position:fixed;top:56px;right:24px;z-index:900;display:flex;align-items:center;gap:8px;padding:10px 18px;border-radius:8px;background:#ecfdf5;color:#065f46;font-size:13px;font-weight:500;border:1px solid #A7F3D0;animation:hwe-toast-in .3s ease-out}@keyframes hwe-toast-in{0%{opacity:0;transform:translateY(-8px)}}.hw-eval__toast--error{top:56px;background:#fef2f2;color:#991b1b;border-color:#fecaca}.hw-eval__toast-dismiss{margin-left:auto;background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;transition:opacity .15s}.hw-eval__toast-dismiss:hover{opacity:1}.hw-eval__stats-bar{display:flex;align-items:center;gap:16px;padding:8px 24px;flex-shrink:0}.hw-eval__stat{display:flex;flex-direction:column;align-items:center;padding:6px 14px;border-radius:8px;background:#f9fafb;border:1px solid #E5E7EB;min-width:64px}.hw-eval__stat-value{font-size:16px;font-weight:700;color:#111827;font-variant-numeric:tabular-nums}.hw-eval__stat-label{font-size:11px;color:#6b7280}.hw-eval__stat--submitted .hw-eval__stat-value{color:#1d4ed8}.hw-eval__stat--evaluated .hw-eval__stat-value{color:#059669}.hw-eval__stat--pending .hw-eval__stat-value{color:#d97706}.hw-eval__stat-spacer{flex:1}.hw-eval__filter{display:inline-flex;align-items:center;gap:8px}.hw-eval__filter-label{font-size:11px;font-weight:700;color:#6b7280;text-transform:uppercase;letter-spacing:.4px}.hw-eval__filter-select{padding:6px 28px 6px 10px;border:1px solid #D1D5DB;border-radius:6px;font-size:12px;font-weight:600;color:#374151;background:#fff url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 8px center;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;transition:border-color .15s,box-shadow .15s}.hw-eval__filter-select:hover{border-color:#9ca3af}.hw-eval__filter-select:focus{outline:none;border-color:#818cf8;box-shadow:0 0 0 3px #818cf826}.hw-eval__empty-row{text-align:center;color:#9ca3af;font-style:italic;padding:28px 14px}.hw-eval__grid-wrap{flex:1;overflow:auto;padding:0 24px 16px}.hw-eval__table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #E5E7EB;border-radius:10px;overflow:hidden}.hw-eval__th{text-align:left;padding:10px 14px;font-size:11px;font-weight:700;color:#6b7280;text-transform:uppercase;letter-spacing:.5px;background:#f9fafb;border-bottom:1px solid #E5E7EB;position:sticky;top:0;z-index:2}.hw-eval__th--roll{width:64px;text-align:right}.hw-eval__th--marks{width:100px;text-align:right}.hw-eval__th--remarks{min-width:180px}.hw-eval__th--status{width:120px;text-align:center}.hw-eval__th--date{width:110px}.hw-eval__row{transition:background .1s}.hw-eval__row:hover{background:#f9fafb}.hw-eval__row:not(:last-child) .hw-eval__td{border-bottom:1px solid #F3F4F6}.hw-eval__td{padding:8px 14px;font-size:13px;color:#374151;vertical-align:middle}.hw-eval__td--roll{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;color:#6b7280}.hw-eval__td--date{font-variant-numeric:tabular-nums;font-size:12px;color:#6b7280}.hw-eval__status-select{padding:3px 22px 3px 10px;border:1px solid transparent;border-radius:6px;font-size:11px;font-weight:700;text-transform:capitalize;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;transition:filter .15s,box-shadow .15s}.hw-eval__status-select:hover{filter:brightness(.96)}.hw-eval__status-select:focus{outline:none;box-shadow:0 0 0 3px #818cf840}.hw-eval__status-select--pending{background:#fef9c3 url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%2392400E' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 6px center;color:#92400e}.hw-eval__status-select--submitted{background:#dbeafe url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%231E40AF' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 6px center;color:#1e40af}.hw-eval__status-select--evaluated{background:#d1fae5 url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23065F46' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 6px center;color:#065f46}.hw-eval__status-select--late{background:#fee2e2 url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23991B1B' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 6px center;color:#991b1b}.hw-eval__status-select option{color:#111827;background:#fff;font-weight:600}.hw-eval__student{display:flex;align-items:center;gap:10px}.hw-eval__avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#818cf8,#6366f1);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:.3px}.hw-eval__student-name{font-weight:500;color:#111827}.hw-eval__badge{display:inline-block;padding:3px 10px;border-radius:6px;font-size:11px;font-weight:700;text-transform:capitalize;text-align:center;white-space:nowrap}.hw-eval__badge--pending{background:#fef9c3;color:#92400e}.hw-eval__badge--submitted{background:#dbeafe;color:#1e40af}.hw-eval__badge--evaluated{background:#d1fae5;color:#065f46}.hw-eval__badge--late{background:#fee2e2;color:#991b1b}.hw-eval__marks-input{width:70px;padding:5px 8px;border:1px solid #D1D5DB;border-radius:5px;font-size:13px;font-weight:600;text-align:right;color:#111827;font-variant-numeric:tabular-nums;transition:border-color .15s;background:#fff}.hw-eval__marks-input:focus{outline:none;border-color:#818cf8;box-shadow:0 0 0 3px #818cf826}.hw-eval__marks-input--error{border-color:#ef4444;background:#fef2f2}.hw-eval__marks-max{font-size:11px;color:#9ca3af;margin-left:4px;font-variant-numeric:tabular-nums}.hw-eval__remarks-input{width:100%;padding:5px 8px;border:1px solid #D1D5DB;border-radius:5px;font-size:13px;color:#374151;transition:border-color .15s;background:#fff;box-sizing:border-box}.hw-eval__remarks-input:focus{outline:none;border-color:#818cf8;box-shadow:0 0 0 3px #818cf826}.hw-eval__save-bar{display:flex;align-items:center;gap:12px;padding:12px 24px;border-top:1px solid #E5E7EB;background:#fafafa;flex-shrink:0}.hw-eval__save-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 28px;border:none;border-radius:8px;background:#059669;color:#fff;font-size:14px;font-weight:700;cursor:pointer;transition:background .15s}.hw-eval__save-btn:hover{background:#047857}.hw-eval__save-btn:disabled{opacity:.5;cursor:not-allowed}.hw-eval__save-hint{font-size:12px;color:#9ca3af}.hw-eval__spinner{animation:hwe-spin .7s linear infinite;stroke:currentColor;stroke-dasharray:30;stroke-dashoffset:10}@keyframes hwe-spin{to{transform:rotate(360deg)}}.hw-eval__loading{display:flex;align-items:center;justify-content:center;padding:80px 0}.hw-eval__loader{display:flex;gap:6px}.hw-eval__loader-dot{width:8px;height:8px;border-radius:50%;background:#818cf8;animation:hwe-bounce .6s ease-in-out infinite alternate}.hw-eval__loader-dot:nth-child(2){animation-delay:.15s}.hw-eval__loader-dot:nth-child(3){animation-delay:.3s}@keyframes hwe-bounce{to{opacity:.3;transform:translateY(-6px)}}.hw-eval__empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px;text-align:center}.hw-eval__empty-icon{color:#d1d5db;margin-bottom:16px}.hw-eval__empty-title{font-size:16px;font-weight:600;color:#374151;margin:0 0 6px}.hw-eval__empty-text{font-size:13px;color:#9ca3af;margin:0;max-width:320px}.permission-denied{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;height:100%;min-height:300px;color:var(--text-secondary, #6b7280);text-align:center;padding:40px}.permission-denied svg{color:var(--text-tertiary, #9ca3af);opacity:.6}.permission-denied h2{margin:0;font-size:1.25rem;font-weight:600;color:var(--text-primary, #111827)}.permission-denied p{margin:0;font-size:.875rem}.dashboard-layout{display:flex;flex-direction:column;height:100vh;width:100%;overflow:hidden;background:var(--workspace-bg, #f8f9fb);font-family:Inter,system-ui,-apple-system,sans-serif}.dashboard-layout__body{display:flex;flex:1;overflow:hidden}.dashboard-layout__main{flex:1;display:flex;flex-direction:column;overflow:hidden}.dashboard-layout__workspace{flex:1;overflow-y:auto;background:var(--workspace-bg, #f8f9fb)}.dashboard-layout__content{padding:28px 32px;max-width:1400px}.dashboard-layout__workspace::-webkit-scrollbar{width:6px}.dashboard-layout__workspace::-webkit-scrollbar-thumb{background:#00000014;border-radius:6px}.dashboard-layout__workspace::-webkit-scrollbar-thumb:hover{background:#00000024}.welcome-section{margin-bottom:32px}.welcome-section__title{font-size:1.6rem;font-weight:700;color:var(--text-primary, #1e1b4b);margin:0 0 4px;letter-spacing:-.02em}.welcome-section__subtitle{font-size:.95rem;color:var(--text-secondary, #6b7280);margin:0 0 24px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.stat-card{display:flex;align-items:center;gap:16px;padding:20px;background:var(--card-bg, #ffffff);border-radius:16px;border:1px solid var(--card-border, rgba(0, 0, 0, .04));box-shadow:0 1px 3px #0000000a,0 1px 2px #00000008;transition:transform .2s ease,box-shadow .2s ease}.stat-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #00000014}.stat-card__icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-card__icon--purple{background:#7c3aed1a;color:#7c3aed}.stat-card__icon--cyan{background:#06b6d41a;color:#0891b2}.stat-card__icon--green{background:#22c55e1a;color:#16a34a}.stat-card__icon--amber{background:#f59e0b1a;color:#d97706}.stat-card__info{display:flex;flex-direction:column;gap:2px}.stat-card__value{font-size:1.35rem;font-weight:700;color:var(--text-primary, #1e1b4b);letter-spacing:-.02em;font-variant-numeric:tabular-nums}.stat-card__label{font-size:.8rem;color:var(--text-secondary, #6b7280);font-weight:400}.stat-card__spinner{animation:stat-spin .8s linear infinite;color:var(--text-secondary, #6b7280);vertical-align:middle}@keyframes stat-spin{to{transform:rotate(360deg)}}.quick-actions__heading{font-size:1.05rem;font-weight:700;color:var(--text-primary, #1e1b4b);margin:32px 0 14px;letter-spacing:-.01em}.quick-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.quick-action{display:flex;align-items:center;gap:14px;padding:18px 20px;background:var(--card-bg, #ffffff);border-radius:14px;border:1px solid var(--card-border, rgba(0, 0, 0, .05));box-shadow:0 1px 3px #0000000a;cursor:pointer;transition:all .22s ease;text-align:left;font-family:inherit;animation:qa-fade-in .4s ease-out both}.quick-action:nth-child(2){animation-delay:.06s}.quick-action:nth-child(3){animation-delay:.12s}.quick-action:nth-child(4){animation-delay:.18s}@keyframes qa-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.quick-action:hover{transform:translateY(-3px);box-shadow:0 8px 28px #0000001a;border-color:#4f46e526}.quick-action:active{transform:translateY(0)}.quick-action__icon{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:transform .2s ease}.quick-action:hover .quick-action__icon{transform:scale(1.08)}.quick-action__icon--emerald{background:linear-gradient(135deg,#d1fae5,#a7f3d0);color:#059669}.quick-action__icon--violet{background:linear-gradient(135deg,#ede9fe,#ddd6fe);color:#7c3aed}.quick-action__icon--sky{background:linear-gradient(135deg,#e0f2fe,#bae6fd);color:#0284c7}.quick-action__icon--rose{background:linear-gradient(135deg,#fce7f3,#fbcfe8);color:#db2777}.quick-action__body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.quick-action__title{font-size:.875rem;font-weight:650;color:var(--text-primary, #111827)}.quick-action__desc{font-size:.75rem;color:var(--text-secondary, #6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quick-action__arrow{flex-shrink:0;color:#d1d5db;transition:color .2s,transform .2s}.quick-action:hover .quick-action__arrow{color:#4f46e5;transform:translate(3px)}.page-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 20px;text-align:center}.page-placeholder__title{font-size:1.4rem;font-weight:700;color:var(--text-primary, #1e1b4b);margin:0 0 8px}.page-placeholder__text{font-size:.95rem;color:var(--text-muted, #9ca3af);margin:0}
