: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}@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(./inter-cyrillic-ext-300-normal-CgCALhwJ.woff2) format("woff2"),url(./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(./inter-cyrillic-300-normal-BnqRxXuy.woff2) format("woff2"),url(./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(./inter-greek-ext-300-normal-l2DDyC6M.woff2) format("woff2"),url(./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(./inter-greek-300-normal-DmGD3g_f.woff2) format("woff2"),url(./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(./inter-vietnamese-300-normal-Bdr24Bqb.woff2) format("woff2"),url(./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(./inter-latin-ext-300-normal-CPgO9Ksf.woff2) format("woff2"),url(./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(./inter-latin-300-normal-BVlfKGgI.woff2) format("woff2"),url(./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(./inter-cyrillic-ext-400-normal-BQZuk6qB.woff2) format("woff2"),url(./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(./inter-cyrillic-400-normal-obahsSVq.woff2) format("woff2"),url(./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(./inter-greek-ext-400-normal-DGGRlc-M.woff2) format("woff2"),url(./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(./inter-greek-400-normal-B4URO6DV.woff2) format("woff2"),url(./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(./inter-vietnamese-400-normal-DMkecbls.woff2) format("woff2"),url(./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(./inter-latin-ext-400-normal-C1nco2VV.woff2) format("woff2"),url(./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(./inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(./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(./inter-cyrillic-ext-500-normal-B0yAr1jD.woff2) format("woff2"),url(./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(./inter-cyrillic-500-normal-BasfLYem.woff2) format("woff2"),url(./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(./inter-greek-ext-500-normal-C4iEst2y.woff2) format("woff2"),url(./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(./inter-greek-500-normal-BIZE56-Y.woff2) format("woff2"),url(./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(./inter-vietnamese-500-normal-DOriooB6.woff2) format("woff2"),url(./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(./inter-latin-ext-500-normal-CV4jyFjo.woff2) format("woff2"),url(./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(./inter-latin-500-normal-Cerq10X2.woff2) format("woff2"),url(./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(./inter-cyrillic-ext-600-normal-Dfes3d0z.woff2) format("woff2"),url(./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(./inter-cyrillic-600-normal-CWCymEST.woff2) format("woff2"),url(./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(./inter-greek-ext-600-normal-DRtmH8MT.woff2) format("woff2"),url(./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(./inter-greek-600-normal-plRanbMR.woff2) format("woff2"),url(./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(./inter-vietnamese-600-normal-Cc8MFFhd.woff2) format("woff2"),url(./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(./inter-latin-ext-600-normal-D2bJ5OIk.woff2) format("woff2"),url(./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(./inter-latin-600-normal-LgqL8muc.woff2) format("woff2"),url(./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(./inter-cyrillic-ext-700-normal-BjwYoWNd.woff2) format("woff2"),url(./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(./inter-cyrillic-700-normal-CjBOestx.woff2) format("woff2"),url(./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(./inter-greek-ext-700-normal-qfdV9bQt.woff2) format("woff2"),url(./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(./inter-greek-700-normal-C3JjAnD8.woff2) format("woff2"),url(./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(./inter-vietnamese-700-normal-DlLaEgI2.woff2) format("woff2"),url(./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(./inter-latin-ext-700-normal-Ca8adRJv.woff2) format("woff2"),url(./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(./inter-latin-700-normal-Yt3aPRUw.woff2) format("woff2"),url(./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}.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__context-switcher{-webkit-app-region:no-drag}.title-bar__context-switcher select{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 8px;cursor:pointer;outline:none;transition:all .2s ease}.title-bar__context-switcher select:hover{background:var(--select-bg-hover, rgba(0, 0, 0, .06))}.title-bar__context-switcher select:focus{border-color:var(--accent, #7c3aed)}.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}.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{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted, #9ca3af);padding:4px 12px 6px;white-space:nowrap}.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__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}.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{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)}.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;justify-content:flex-end;margin-bottom:8px}.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}.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__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)}.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__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}.students__meta-row .students__meta-cell{padding:0;border-bottom:1px solid #E5E7EB;background:var(--table-header-bg, #f8f8fb)}.students__meta-content{padding:12px 20px 14px;animation:students-slide-down .2s ease-out}@keyframes students-slide-down{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.students__meta-label{display:block;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted, #9ca3af);margin-bottom:6px}.students__meta-json{margin:0;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.76rem;color:var(--text-secondary, #6b7280);background:var(--card-bg, #ffffff);border:1px solid #E5E7EB;border-radius:8px;padding:10px 14px;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.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 8px;border:1px solid var(--input-border, rgba(0, 0, 0, .12));border-radius:6px;background: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}.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}.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}.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__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}.acad-sessions__toast svg{flex-shrink:0}.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}.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}.schools__toast svg{flex-shrink:0}.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: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}.schools__input::placeholder{color:var(--text-placeholder, #94a3b8)}.schools__input:focus{background: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__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-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__input:focus-visible,.schools__submit:focus-visible,.schools__cancel:focus-visible,.schools__add-btn:focus-visible,.schools__row-btn: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}.classes__toast svg{flex-shrink:0}.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: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}.classes__input::placeholder{color:var(--text-placeholder, #94a3b8)}.classes__input:focus{background: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:var(--card-bg, #ffffff);font-size:.82rem;color:var(--text-primary, #1e1b4b);outline:none;transition:border-color .2s,box-shadow .2s;font-family:inherit}.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-slideIn .3s ease}.subjects__toast svg{flex-shrink:0}.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;width:44px;height:24px;flex-shrink:0}.subjects__toggle input{opacity:0;width:0;height:0;position:absolute}.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-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__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{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 12px;background: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__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}.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 12px;background: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__context-select:focus-visible,.alloc__add-btn:focus-visible,.alloc__row-btn:focus-visible,.alloc__teacher-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 12px;background: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}.tt__drawer{position:fixed;right:0;top:0;bottom:0;width:420px;max-width:90vw;background:var(--bg-base, #f3f4f6);z-index:100;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: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__input::placeholder{color:var(--text-placeholder, #94a3b8)}.tt__input:focus,.tt__select:focus{background: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{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}.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}.tt__toast svg{flex-shrink:0}@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 12px;background: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}.staff__toast svg{flex-shrink:0}.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:460px;max-width:90vw;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: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__input::placeholder{color:var(--text-placeholder, #94a3b8)}.staff__input:focus,.staff__select:focus{background: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__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}.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--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--name{font-weight:600}.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__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__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}.exams__toast svg{flex-shrink:0}.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__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:440px;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-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}.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__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__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{outline:2px solid rgba(102,126,234,.5);outline-offset:2px}.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}.marks__toast svg{flex-shrink:0}.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}.fees{display:flex;flex-direction:column;height:100%;position:relative}.fees__section{margin-bottom:20px}.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__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;max-height:260px}.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__builder{flex:1;display:flex;gap:0;border:1px solid #E5E7EB;border-radius:8px;overflow:hidden;background:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000000a;min-height:240px}.fees__builder-left{width:220px;flex-shrink:0;border-right:1px solid #E5E7EB;display:flex;flex-direction:column;background:var(--table-header-bg, #f8f8fb)}.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-bottom:1px solid #E5E7EB;cursor:pointer;font-family:inherit;text-align:left;transition:background .15s}.fees__class-item:hover{background:#667eea0a}.fees__class-item--active{background:var(--card-bg, #ffffff);border-left:3px solid #667eea}.fees__class-name{font-size:.84rem;font-weight:600;color:var(--text-primary, #1e293b)}.fees__class-count{font-size:.7rem;color:var(--text-muted, #94a3b8)}.fees__builder-right{flex:1;display:flex;flex-direction:column}.fees__builder-right-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px 6px;border-bottom:1px solid #E5E7EB}.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}.fees__toast svg{flex-shrink:0}.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__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}.invoices{display:flex;flex-direction:column;height:100%;position:relative}.invoices__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px;gap:16px}.invoices__header-text{flex:1}.invoices__title{font-size:1.5rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0 0 4px;letter-spacing:-.02em}.invoices__subtitle{font-size:.9rem;color:var(--text-secondary, #6b7280);margin:0}.invoices__header-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.invoices__filter{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}.invoices__filter:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.invoices__search-wrap{position:relative;display:flex;align-items:center}.invoices__search-icon{position:absolute;left:10px;color:var(--text-muted, #9ca3af);pointer-events:none}.invoices__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}.invoices__search:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.invoices__search::placeholder{color:var(--text-muted, #9ca3af)}.invoices__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}.invoices__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}.invoices__add-btn:hover:before{opacity:1}.invoices__add-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.invoices__add-btn:active{transform:translateY(0)}.invoices__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:inv-slideIn .3s ease}.invoices__toast svg{flex-shrink:0}.invoices__table-wrap{flex:1;overflow:auto;border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff);box-shadow:0 1px 3px #0000000a}.invoices__table{width:100%;border-collapse:collapse;font-size:.82rem;table-layout:auto}.invoices__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}.invoices__th--amount{text-align:right}.invoices__th--center{text-align:center}.invoices__th--actions{text-align:center;width:60px}.invoices__td{padding:8px 14px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle;line-height:1.5}.invoices__td--inv{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.78rem;font-weight:600;color:#667eea}.invoices__td--date{font-variant-numeric:tabular-nums;font-size:.8rem;color:var(--text-secondary, #475569);white-space:nowrap}.invoices__td--student{font-weight:500}.invoices__td--title{color:var(--text-secondary, #475569);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.invoices__td--amount{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}.invoices__td--balance{color:var(--text-primary, #1e293b)}.invoices__td--center,.invoices__td--actions{text-align:center}.invoices__row:nth-child(2n)>.invoices__td{background:#00000004}.invoices__row:hover>.invoices__td{background:#667eea08}.invoices__row:last-child>.invoices__td{border-bottom:none}.invoices__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}.invoices__badge--paid{background:#22c55e1a;color:#15803d}.invoices__badge--partial{background:#eab3081f;color:#a16207}.invoices__badge--overdue{background:#ef444414;color:#dc2626}.invoices__badge--published{background:#3b82f61a;color:#2563eb}.invoices__badge--draft,.invoices__badge--void{background:#6b72801a;color:#4b5563}.invoices__row-btn{width:28px;height:28px;padding:0;border:1px solid var(--border-color, #e2e8f0);border-radius:6px;background:transparent;color:var(--text-secondary, #475569);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .2s ease}.invoices__row-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.invoices__empty{padding:60px 24px;text-align:center}.invoices__empty-title{font-size:1rem;font-weight:600;color:var(--text-primary, #1e293b);margin:0 0 4px}.invoices__empty-text{font-size:.875rem;color:var(--text-secondary, #6b7280);margin:0}.invoices__loading{padding:60px 0;text-align:center}.invoices__loader{display:inline-flex;gap:6px}.invoices__loader-dot{width:8px;height:8px;border-radius:50%;background:#667eea;animation:inv-bounce 1.2s infinite ease-in-out}.invoices__loader-dot:nth-child(2){animation-delay:.15s}.invoices__loader-dot:nth-child(3){animation-delay:.3s}.invoices__overlay{position:fixed;inset:0;background:#0f172a59;z-index:90;animation:inv-fadeIn .2s ease}.invoices__drawer{position:fixed;right:0;top:0;bottom:0;width:520px;max-width:92vw;background:var(--bg-base, #f3f4f6);z-index:100;display:flex;flex-direction:column;box-shadow:-8px 0 30px #0000001f;animation:inv-slideInRight .3s ease}.invoices__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)}.invoices__drawer-title{font-size:1.125rem;font-weight:700;color:var(--text-primary, #1e293b);margin:0;letter-spacing:-.01em}.invoices__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}.invoices__drawer-close:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.invoices__drawer-body{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}.invoices__card{background:var(--card-bg, #ffffff);border:1px solid var(--card-border, #e5e7eb);border-radius:12px;padding:16px;box-shadow:0 1px 3px #0000000a}.invoices__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)}.invoices__card-title-row{display:flex;align-items:center;justify-content:space-between;padding-bottom:10px;margin-bottom:8px;border-bottom:1px solid var(--border-color, #e2e8f0)}.invoices__add-line-btn{padding:4px 12px;border:1px dashed #667eea;border-radius:6px;background:transparent;color:#667eea;font-size:.76rem;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s}.invoices__add-line-btn:hover{background:#667eea0f}.invoices__field{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.invoices__field:last-child{margin-bottom:0}.invoices__form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.invoices__label{font-size:.75rem;font-weight:700;color:var(--text-secondary, #475569)}.invoices__label--required:after{content:" *";color:var(--error, #ef4444)}.invoices__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}.invoices__input::placeholder{color:var(--text-placeholder, #94a3b8)}.invoices__input:focus{background:var(--bg-input-focus, #ffffff);border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a}.invoices__input--error{border-color:var(--error, #ef4444)!important}.invoices__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}.invoices__error{font-size:.72rem;color:var(--error, #ef4444);margin:0;animation:inv-slideIn .2s ease}.invoices__line-items{display:flex;flex-direction:column;gap:8px}.invoices__line-row{display:flex;align-items:flex-start;gap:8px;padding:8px 0;border-bottom:1px solid rgba(0,0,0,.04)}.invoices__line-row:last-child{border-bottom:none}.invoices__line-num{width:20px;height:28px;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;color:var(--text-muted, #94a3b8);flex-shrink:0;padding-top:2px}.invoices__line-fields{flex:1;display:flex;flex-wrap:wrap;gap:6px;align-items:center}.invoices__line-select{flex:1;min-width:120px;padding:5px 24px 5px 8px;border:1px solid var(--border-color, #e2e8f0);border-radius:4px;font-size:.78rem;font-family:inherit;color:var(--text-primary, #1e293b);background:var(--card-bg, #ffffff);outline:none;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}.invoices__line-desc{flex:1;min-width:100px;padding:5px 8px;border:1px solid var(--border-color, #e2e8f0);border-radius:4px;font-size:.78rem;font-family:inherit;color:var(--text-primary, #1e293b);outline:none}.invoices__line-desc::placeholder{color:var(--text-placeholder, #94a3b8)}.invoices__line-desc:focus,.invoices__line-select:focus{border-color:#667eea80}.invoices__line-opt{display:flex;align-items:center;gap:3px;font-size:.7rem;color:var(--text-muted, #94a3b8);cursor:pointer;white-space:nowrap;flex-shrink:0}.invoices__line-opt input{width:14px;height:14px;accent-color:#667eea}.invoices__line-amount-wrap{display:flex;align-items:center;gap:2px;flex-shrink:0}.invoices__line-currency{font-size:.78rem;color:var(--text-muted, #94a3b8);font-weight:500}.invoices__line-amount{width:80px;padding:5px 8px;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);background:var(--card-bg, #ffffff);outline:none;transition:border-color .15s}.invoices__line-amount:focus{border-color:#667eea80;box-shadow:0 0 0 2px #667eea1a}.invoices__line-amount::-webkit-outer-spin-button,.invoices__line-amount::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.invoices__line-amount[type=number]{-moz-appearance:textfield;appearance:textfield}.invoices__line-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;margin-top:1px}.invoices__line-remove:hover{background:#ef44440f;border-color:#ef444480}.invoices__drawer-footer{padding:14px 24px;border-top:1px solid var(--border-color, #e2e8f0);background:var(--card-bg, #ffffff)}.invoices__drawer-total{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--border-color, #e2e8f0)}.invoices__drawer-total-label{font-size:.8rem;font-weight:600;color:var(--text-secondary, #475569);text-transform:uppercase;letter-spacing:.03em}.invoices__drawer-total-value{font-size:1.25rem;font-weight:700;color:var(--text-primary, #1e293b);font-variant-numeric:tabular-nums}.invoices__drawer-actions{display:flex;align-items:center;gap:12px}.invoices__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}.invoices__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}.invoices__submit:hover:before{opacity:1}.invoices__submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea59}.invoices__submit:active{transform:translateY(0)}.invoices__submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.invoices__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 ease}.invoices__cancel-btn:hover{background:var(--bg-input, #f8fafc);border-color:var(--text-muted, #94a3b8)}.invoices__spinner{animation:inv-spin 1.2s linear infinite}.invoices__spinner circle{stroke:currentColor;stroke-linecap:round;stroke-dasharray:50;stroke-dashoffset:35}@keyframes inv-slideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes inv-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes inv-slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes inv-spin{to{transform:rotate(360deg)}}@keyframes inv-bounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.invoices__input:focus-visible,.invoices__submit:focus-visible,.invoices__cancel-btn:focus-visible,.invoices__add-btn:focus-visible,.invoices__row-btn:focus-visible,.invoices__drawer-close:focus-visible,.invoices__line-amount:focus-visible{outline:2px solid rgba(102,126,234,.5);outline-offset:2px}.invoices__row-btn--danger{color:#ef4444;border-color:#ef44444d}.invoices__row-btn--danger:hover{background:#ef44440f;border-color:#ef444480}.invoices__td--actions{display:flex;gap:4px;justify-content:center}.invoices__view-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 20px}.invoices__view-field{display:flex;flex-direction:column;gap:2px}.invoices__view-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted, #94a3b8)}.invoices__view-value{font-size:.875rem;font-weight:600;color:var(--text-primary, #1e293b)}.invoices__view-value--mono{font-family:SF Mono,Fira Code,monospace;color:#667eea}.invoices__view-table{width:100%;border-collapse:collapse;font-size:.78rem}.invoices__view-th{padding:5px 8px;background:#00000006;font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary, #6b7280);text-align:left;border-bottom:1px solid var(--border-color, #e2e8f0)}.invoices__view-th--amount{text-align:right}.invoices__view-td{padding:5px 8px;border-bottom:1px solid rgba(0,0,0,.04);color:var(--text-primary, #1e293b)}.invoices__view-td--amount{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.invoices__view-summary{display:flex;flex-direction:column;gap:6px}.invoices__view-summary-row{display:flex;justify-content:space-between;font-size:.82rem;color:var(--text-secondary, #475569)}.invoices__view-summary-row--balance{padding-top:8px;border-top:1px solid var(--border-color, #e2e8f0);font-weight:700;color:var(--text-primary, #1e293b)}.invoices__view-summary-val{font-weight:700;font-variant-numeric:tabular-nums}.invoices__view-summary-val--green{color:#059669}.invoices__view-summary-val--red{color:#dc2626}.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__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}.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__search-card{position:relative;margin-bottom:16px}.collection__search-wrap{position:relative;display:flex;align-items:center}.collection__search-icon{position:absolute;left:14px;color:var(--text-muted, #9ca3af);pointer-events:none}.collection__search-input{width:100%;padding:12px 16px 12px 44px;border:1px solid #E5E7EB;border-radius:10px;background:var(--card-bg, #ffffff);font-size:.92rem;color:var(--text-primary, #1e293b);outline:none;transition:border-color .2s,box-shadow .2s;font-family:inherit;box-shadow:0 1px 3px #0000000a}.collection__search-input:focus{border-color:#667eea80;box-shadow:0 0 0 3px #667eea1a,0 2px 6px #0000000f}.collection__search-input::placeholder{color:var(--text-muted, #9ca3af)}.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__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}.collection__history{margin-top:auto}.collection__history-heading{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary, #475569);margin:0 0 8px}.collection__history-wrap{border:1px solid #E5E7EB;border-radius:8px;background:var(--card-bg, #ffffff);overflow:auto;max-height:200px;box-shadow:0 1px 3px #0000000a}.collection__history-table{width:100%;border-collapse:collapse;font-size:.78rem}.collection__hist-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__hist-th--amount{text-align:right}.collection__hist-td{padding:7px 12px;border-bottom:1px solid #E5E7EB;color:var(--text-primary, #1e1b4b);vertical-align:middle}.collection__hist-td--inv{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.74rem;color:#667eea;font-weight:600}.collection__hist-td--amount{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.collection__hist-td--ref{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.74rem;color:var(--text-secondary, #475569)}.collection__hist-td--date{font-variant-numeric:tabular-nums;font-size:.74rem;color:var(--text-secondary, #475569);white-space:nowrap}.collection__hist-method{display:inline-block;padding:1px 8px;border-radius:100px;font-size:.68rem;font-weight:600;background:#667eea14;color:#667eea;text-transform:capitalize}.collection__hist-row:nth-child(2n)>.collection__hist-td{background:#00000004}.collection__hist-row:hover>.collection__hist-td{background:#667eea08}.collection__hist-row:last-child>.collection__hist-td{border-bottom:none}.collection__hist-th--action,.collection__hist-td--action{width:40px;text-align:center;padding-left:4px;padding-right:4px}.collection__print-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text-muted, #94a3b8);cursor:pointer;transition:all .15s;opacity:.5}.collection__hist-row:hover .collection__print-btn{opacity:1}.collection__print-btn:hover{background:#667eea14;border-color:#667eea33;color:#667eea;opacity:1}.collection__print-btn:active{transform:scale(.92)}@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}.fleet__toast svg{flex-shrink:0}.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: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}.fleet__input::placeholder{color:var(--text-placeholder, #94a3b8)}.fleet__input:focus{background: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}.routes__toast svg{flex-shrink:0}.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}}.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}.alloc__toast svg{flex-shrink:0}.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__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__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__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-hint{font-size:.78rem;color:var(--text-muted, #94a3b8);margin-right:auto}.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)}}.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}.ecat__toast 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}.expl__toast 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 12px;background: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:var(--card-bg, #fff)}.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__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}}.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-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:var(--bg-input, #f8fafc);min-width:130px;cursor:pointer;transition:border-color .15s}.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:24px;min-width:24px;height:24px;text-align:center;font-size:.66rem;font-weight:700;padding:2px!important}.rpt__td--agg{text-align:center;font-weight:700;font-variant-numeric:tabular-nums}.rpt__cell--P{color:#059669}.rpt__cell--A{color:#dc2626}.rpt__cell--L{color:#d97706}.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)}}.tasks{display:flex;flex-direction:column;height:100%;font-family:Inter,system-ui,-apple-system,sans-serif;position:relative}.tasks__toast{position:fixed;top:56px;right:24px;z-index:900;display:flex;align-items:center;gap:8px;padding:10px 18px;background:#065f46;color:#fff;font-size:13px;font-weight:500;border-radius:8px;box-shadow:0 4px 16px #00000026;animation:tasks-toast-in .3s ease}@keyframes tasks-toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.tasks__header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px 16px}.tasks__title{font-size:20px;font-weight:700;color:#111827;margin:0}.tasks__subtitle{font-size:13px;color:#6b7280;margin:2px 0 0}.tasks__header-actions{display:flex;align-items:center;gap:12px}.tasks__role-switch{display:flex;background:#f3f4f6;border-radius:8px;padding:3px;gap:2px}.tasks__role-btn{padding:6px 14px;border:none;border-radius:6px;font-size:12px;font-weight:600;color:#6b7280;background:transparent;cursor:pointer;transition:all .15s ease}.tasks__role-btn--active{background:#fff;color:#111827;box-shadow:0 1px 3px #00000014}.tasks__add-btn{display:flex;align-items:center;gap:6px;padding:8px 16px;border:none;border-radius:8px;background:#4f46e5;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.tasks__add-btn:hover{background:#4338ca}.tasks__workspace{display:flex;flex:1;margin:0 24px 24px;border:1px solid #e5e7eb;border-radius:12px;background:#fff;overflow:hidden;min-height:0}.tasks__left{width:35%;min-width:280px;max-width:400px;display:flex;flex-direction:column;border-right:1px solid #e5e7eb;background:#fff}.tasks__tabs{display:flex;gap:0;padding:12px 16px 0;border-bottom:1px solid #e5e7eb}.tasks__tab{padding:8px 14px;border:none;background:none;font-size:12.5px;font-weight:600;color:#9ca3af;cursor:pointer;position:relative;transition:color .15s}.tasks__tab--active{color:#4f46e5}.tasks__tab--active:after{content:"";position:absolute;bottom:-1px;left:8px;right:8px;height:2px;background:#4f46e5;border-radius:1px}.tasks__search-wrap{position:relative;padding:12px 16px 8px}.tasks__search-icon{position:absolute;left:28px;top:50%;transform:translateY(-50%);color:#9ca3af;pointer-events:none}.tasks__search{width:100%;padding:7px 12px 7px 34px;border:1px solid #e5e7eb;border-radius:8px;font-size:13px;color:#374151;background:#f9fafb;outline:none;transition:border-color .15s;box-sizing:border-box}.tasks__search:focus{border-color:#a5b4fc;background:#fff}.tasks__list{flex:1;overflow-y:auto;padding:8px}.tasks__card{display:flex;align-items:flex-start;gap:10px;width:100%;padding:12px;border:1px solid transparent;border-left:3px solid transparent;border-radius:8px;background:none;cursor:pointer;text-align:left;transition:all .12s ease;margin-bottom:4px}.tasks__card:hover{background:#f9fafb}.tasks__card--selected{background:#eef2ff;border-color:#c7d2fe;border-left-color:#4f46e5}.tasks__card--overdue{border-left-color:#ef4444;background:#fef2f2}.tasks__card--overdue.tasks__card--selected{background:#fef2f2;border-color:#fecaca;border-left-color:#ef4444}.tasks__card-dot{flex-shrink:0;width:8px;height:8px;border-radius:50%;margin-top:5px}.tasks__card-dot--pending{background:#f59e0b}.tasks__card-dot--in_progress{background:#3b82f6}.tasks__card-dot--completed{background:#10b981}.tasks__card-dot--cancelled{background:#9ca3af}.tasks__card-body{flex:1;min-width:0}.tasks__card-title{display:block;font-size:13px;font-weight:600;color:#1f2937;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tasks__card-meta{display:block;font-size:11.5px;color:#9ca3af;margin-top:3px}.tasks__list-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 16px;color:#9ca3af;text-align:center}.tasks__list-empty p{font-size:13px;margin-top:8px}.tasks__loading{display:flex;justify-content:center;padding:48px 16px;gap:6px}.tasks__loader-dot{width:8px;height:8px;background:#d1d5db;border-radius:50%;animation:tasks-dot-pulse .6s ease-in-out infinite alternate}.tasks__loader-dot:nth-child(2){animation-delay:.15s}.tasks__loader-dot:nth-child(3){animation-delay:.3s}@keyframes tasks-dot-pulse{0%{opacity:.4;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.tasks__right{flex:1;display:flex;flex-direction:column;overflow-y:auto;background:#fff}.tasks__empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#d1d5db;padding:48px;text-align:center}.tasks__empty-state h3{color:#9ca3af;font-size:16px;margin:16px 0 4px;font-weight:600}.tasks__empty-state p{color:#9ca3af;font-size:13px;margin:0}.tasks__detail{flex:1;display:flex;flex-direction:column;padding:24px 28px}.tasks__detail-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.tasks__detail-title{font-size:18px;font-weight:700;color:#111827;margin:0;line-height:1.35}.tasks__badge{flex-shrink:0;display:inline-flex;align-items:center;padding:4px 12px;border-radius:20px;font-size:11.5px;font-weight:600;letter-spacing:.02em;white-space:nowrap}.tasks__badge--pending{background:#fef3c7;color:#92400e}.tasks__badge--in_progress{background:#dbeafe;color:#1e40af}.tasks__badge--completed{background:#d1fae5;color:#065f46}.tasks__badge--cancelled{background:#f3f4f6;color:#6b7280}.tasks__detail-meta{display:flex;align-items:center;gap:16px;padding:16px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;margin-bottom:20px;flex-wrap:wrap}.tasks__meta-person{display:flex;align-items:center;gap:10px}.tasks__avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#818cf8,#6366f1);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}.tasks__avatar--assignee{background:linear-gradient(135deg,#34d399,#10b981)}.tasks__meta-info{display:flex;flex-direction:column}.tasks__meta-role{font-size:10.5px;color:#9ca3af;font-weight:500;text-transform:uppercase;letter-spacing:.04em}.tasks__meta-name{font-size:13px;font-weight:600;color:#1f2937}.tasks__meta-arrow{color:#d1d5db;flex-shrink:0}.tasks__meta-date{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:#6b7280}.tasks__meta-date--overdue{color:#ef4444;font-weight:600}.tasks__detail-body{flex:1;margin-bottom:20px}.tasks__detail-desc{font-size:14px;line-height:1.7;color:#374151;margin:0;white-space:pre-wrap}.tasks__completed-box{background:#f9fafb;border:1px solid #e5e7eb;border-left:3px solid #10b981;border-radius:8px;padding:14px 16px;margin-bottom:20px}.tasks__completed-header{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:#065f46;margin-bottom:8px}.tasks__completed-comment{font-size:13px;color:#4b5563;line-height:1.5;margin:0}.tasks__status-update{background:#fafafb;border:1px solid #e5e7eb;border-radius:12px;padding:0;margin-bottom:20px;animation:tasks-slide-in .25s ease;overflow:hidden}@keyframes tasks-slide-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.tasks__status-update-header{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid #e5e7eb;background:#fff}.tasks__status-update-icon{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#eef2ff,#e0e7ff);color:#4f46e5;display:flex;align-items:center;justify-content:center;flex-shrink:0}.tasks__status-update-title{font-size:14px;font-weight:700;color:#111827;margin:0}.tasks__status-update-subtitle{font-size:12px;color:#6b7280;margin:2px 0 0}.tasks__comment-box{display:flex;align-items:flex-start;gap:12px;padding:16px 18px}.tasks__comment-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#818cf8,#6366f1);color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0;margin-top:2px}.tasks__comment-input-wrap{flex:1;min-width:0;border:1px solid #d1d5db;border-radius:10px;background:#fff;overflow:hidden;transition:border-color .15s,box-shadow .15s}.tasks__comment-input-wrap:focus-within{border-color:#a5b4fc;box-shadow:0 0 0 3px #6366f11a}.tasks__comment-textarea{display:block;width:100%;padding:12px 14px;border:none;outline:none;font-family:inherit;font-size:13.5px;line-height:1.55;color:#1f2937;background:transparent;resize:vertical;min-height:88px;box-sizing:border-box}.tasks__comment-textarea::placeholder{color:#9ca3af}.tasks__comment-footer{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-top:1px solid #f3f4f6;background:#fafafa}.tasks__comment-hint{font-size:11.5px;color:#9ca3af;font-style:italic}.tasks__comment-btns{display:flex;gap:8px}.tasks__submit--blue{background:#3b82f6}.tasks__submit--blue:hover:not(:disabled){background:#2563eb}.tasks__timestamps{display:flex;gap:20px;padding-top:16px;border-top:1px solid #f3f4f6;margin-top:auto}.tasks__timestamps span{font-size:11px;color:#9ca3af}.tasks__action-bar{display:flex;align-items:center;gap:10px;padding:16px 0;border-top:1px solid #f3f4f6;margin-top:auto;flex-wrap:wrap}.tasks__action-group{display:flex;align-items:center;gap:8px}.tasks__action-label{font-size:12px;font-weight:600;color:#6b7280}.tasks__btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:1px solid #e5e7eb;border-radius:8px;font-size:12.5px;font-weight:600;cursor:pointer;transition:all .15s;background:#fff;color:#374151}.tasks__btn:hover{background:#f9fafb}.tasks__btn--primary{background:#3b82f6;border-color:#3b82f6;color:#fff}.tasks__btn--primary:hover{background:#2563eb;border-color:#2563eb}.tasks__btn--success{background:#10b981;border-color:#10b981;color:#fff}.tasks__btn--success:hover{background:#059669;border-color:#059669}.tasks__btn--edit{background:#fff;color:#4f46e5;border-color:#c7d2fe}.tasks__btn--edit:hover{background:#eef2ff}.tasks__btn--danger{background:#fff;color:#ef4444;border-color:#fecaca}.tasks__btn--danger:hover{background:#fef2f2}.tasks__form-pane{flex:1;display:flex;flex-direction:column}.tasks__form-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid #f3f4f6}.tasks__form-title{font-size:16px;font-weight:700;color:#111827;margin:0}.tasks__form-close{background:none;border:none;color:#9ca3af;cursor:pointer;padding:4px;border-radius:6px;transition:all .12s}.tasks__form-close:hover{color:#374151;background:#f3f4f6}.tasks__form-body{flex:1;padding:20px 24px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.tasks__form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.tasks__field{display:flex;flex-direction:column;gap:4px}.tasks__label{font-size:12px;font-weight:700;color:#374151}.tasks__label--required:after{content:" *";color:#ef4444}.tasks__input,.tasks__select,.tasks__textarea{padding:8px 12px;border:1px solid #e5e7eb;border-radius:8px;font-size:13px;color:#1f2937;background:#fff;outline:none;transition:border-color .15s;font-family:inherit}.tasks__input:focus,.tasks__select:focus,.tasks__textarea:focus{border-color:#a5b4fc;box-shadow:0 0 0 3px #6366f114}.tasks__input--error{border-color:#ef4444}.tasks__textarea{resize:vertical;min-height:80px;line-height:1.5}.tasks__select{cursor:pointer}.tasks__select--status{padding:6px 10px;font-size:12px;font-weight:600}.tasks__error{font-size:11.5px;color:#ef4444;margin:0}.tasks__form-footer{display:flex;gap:8px;padding:16px 24px;border-top:1px solid #e5e7eb;background:#fafafa}.tasks__submit{display:inline-flex;align-items:center;gap:6px;padding:9px 20px;border:none;border-radius:8px;background:#4f46e5;color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}.tasks__submit:hover:not(:disabled){background:#4338ca}.tasks__submit:disabled{opacity:.6;cursor:not-allowed}.tasks__cancel{padding:9px 16px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;color:#6b7280;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s}.tasks__cancel:hover:not(:disabled){background:#f9fafb}.tasks__spinner{animation:tasks-spin .8s linear infinite;stroke:currentColor}@keyframes tasks-spin{to{transform:rotate(360deg)}}.tasks__confirm-overlay{position:fixed;inset:0;z-index:800;display:flex;align-items:center;justify-content:center;background:#00000059;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:tasks-fade-in .15s ease}@keyframes tasks-fade-in{0%{opacity:0}to{opacity:1}}.tasks__confirm-modal{background:#fff;border-radius:14px;padding:28px 28px 20px;width:380px;box-shadow:0 20px 40px #00000026}.tasks__confirm-title{font-size:16px;font-weight:700;color:#111827;margin:0 0 8px}.tasks__confirm-text{font-size:13px;color:#6b7280;line-height:1.55;margin:0 0 20px}.tasks__confirm-actions{display:flex;gap:8px;justify-content:flex-end}.tasks__confirm-cancel{padding:8px 16px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;color:#6b7280;font-size:13px;font-weight:600;cursor:pointer}.tasks__confirm-cancel:hover{background:#f9fafb}.tasks__confirm-delete{padding:8px 16px;border:none;border-radius:8px;background:#ef4444;color:#fff;font-size:13px;font-weight:600;cursor:pointer}.tasks__confirm-delete:hover{background:#dc2626}.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}.demo-banner{display:flex;align-items:center;gap:8px;padding:10px 32px;background:linear-gradient(135deg,#fef3c7,#fde68a);border-bottom:1px solid #fbbf24;font-size:13px;font-weight:500;color:#92400e}.demo-banner__icon{flex-shrink:0;color:#d97706}.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}.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}
