@import "https://fonts.googleapis.com/css2?family=Caveat:wght@400;700&display=swap";@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap";@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap";@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap";@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--spacing:.25rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base,components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.border{border-style:var(--tw-border-style);border-width:1px}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root{--t-dark:#0d5c73;--t-darker:#0a4a5c;--t-primary:#0d7390;--t-hover:#0a5568;--t-50:#e8f6fb;--t-100:#c5e9f3;--t-200:#9dd6eb;--t-text:#7ec8e3;--t-border:#3aa8c7;--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width<=1024px){:root{font-size:16px}}@media (width<=480px){:root{font-size:15px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}#social .button-icon{filter:invert()brightness(2)}}#root{text-align:left;box-sizing:border-box;flex-direction:column;width:100%;max-width:100%;min-height:100svh;margin:0;display:flex}body{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;overscroll-behavior-y:contain;margin:0}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}:root,:root[data-theme=minimal]{--theme-bg:#f8fafc;--theme-surface:#fff;--theme-surface-hover:#f1f5f9;--theme-border:#e2e8f0;--theme-border-light:#f1f5f9;--theme-text:#0f172a;--theme-text-secondary:#64748b;--theme-text-muted:#94a3b8;--theme-shadow:0 1px 3px #0000000a;--theme-shadow-md:0 4px 16px #0000000f;--theme-header-bg:#fff;--theme-header-border:#e2e8f0;--theme-sidebar-bg:#fff;--theme-sidebar-border:#e2e8f0;--theme-card-bg:#fff;--theme-card-border:#e2e8f0;--theme-input-bg:#f8fafc;--theme-input-border:#e2e8f0;--theme-accent:#6366f1;--theme-accent-light:#eef2ff}:root[data-theme=classic]{--theme-bg:#0f172a;--theme-surface:#1e293b;--theme-surface-hover:#334155;--theme-border:#334155;--theme-border-light:#1e293b;--theme-text:#f1f5f9;--theme-text-secondary:#94a3b8;--theme-text-muted:#64748b;--theme-shadow:0 1px 3px #0003;--theme-shadow-md:0 4px 16px #0000004d;--theme-header-bg:#1e293b;--theme-header-border:#334155;--theme-sidebar-bg:#1e293b;--theme-sidebar-border:#334155;--theme-card-bg:#1e293b;--theme-card-border:#334155;--theme-input-bg:#0f172a;--theme-input-border:#334155;--theme-accent:#818cf8;--theme-accent-light:#1e1b4b}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}.login-page{min-height:100dvh;padding:1.5rem;padding-top:calc(1.5rem + env(safe-area-inset-top));padding-bottom:calc(1.5rem + env(safe-area-inset-bottom));background:linear-gradient(135deg,#eef2ff 0%,#f1f5f9 50%,#ede9fe 100%);justify-content:center;align-items:center;font-family:Segoe UI,system-ui,-apple-system,sans-serif;display:flex;position:relative;overflow:hidden}.login-page:before{content:"";pointer-events:none;background-image:linear-gradient(#6366f112 1px,#0000 1px),linear-gradient(90deg,#6366f112 1px,#0000 1px);background-size:44px 44px;position:absolute;inset:0}.login-bg{pointer-events:none;position:absolute;inset:0;overflow:hidden}.bg-shape{filter:blur(90px);opacity:.35;border-radius:50%;position:absolute}.shape-1{background:radial-gradient(circle,#6366f1,#0000 70%);width:520px;height:520px;animation:14s ease-in-out infinite alternate drift;top:-140px;left:-120px}.shape-2{background:radial-gradient(circle,#8b5cf6,#0000 70%);width:420px;height:420px;animation:18s ease-in-out infinite alternate-reverse drift;bottom:-100px;right:-80px}.shape-3{background:radial-gradient(circle,#0ea5e9,#0000 70%);width:320px;height:320px;animation:22s ease-in-out infinite alternate drift;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes drift{0%{transform:translate(0)scale(1)}to{transform:translate(28px,-22px)scale(1.09)}}.login-container{z-index:1;border-radius:22px;width:100%;max-width:1100px;min-height:640px;display:flex;position:relative;overflow:hidden;box-shadow:0 0 0 1px #ffffff0f,0 30px 70px #0009,0 0 100px #6366f11a}.login-left{background:radial-gradient(80% 60% at 20% 10%,#4338ca 0%,#0000 55%),radial-gradient(70% 50% at 85% 80%,#7c3aed 0%,#0000 55%),radial-gradient(60% 40% at 55%,#0d7390 0%,#0000 50%),linear-gradient(170deg,#1e1b4b 0%,#312e81 35%,#1e1b4b 100%);flex-direction:column;flex:1.15;display:flex;position:relative;overflow:hidden}.login-left:before{content:"";filter:blur(50px);background:conic-gradient(from 200deg,#6366f159 0deg,#8b5cf647 90deg,#10b98126 180deg,#3b82f640 270deg,#6366f159 360deg);border-radius:50%;width:600px;height:350px;animation:12s ease-in-out infinite alternate auroraShift;position:absolute;top:-80px;left:-80px}.login-left:after{content:"";filter:blur(45px);background:conic-gradient(from 30deg at 30% 70%,#ec489940 0deg,#8b5cf64d 120deg,#3b82f633 240deg,#ec489940 360deg);border-radius:50%;width:460px;height:300px;animation:16s ease-in-out infinite alternate-reverse auroraShift;position:absolute;bottom:-80px;right:-80px}@keyframes auroraShift{0%{opacity:.8;transform:translate(0)scale(1)}50%{opacity:1;transform:translate(20px,-15px)scale(1.08)}to{opacity:.7;transform:translate(-10px,20px)scale(.95)}}.login-left .ll-inner:after{content:"";pointer-events:none;opacity:.45;background-image:radial-gradient(circle,#ffffff2e 1px,#0000 1px),radial-gradient(circle,#ffffff1a 1px,#0000 1px);background-position:0 0,9px 9px;background-size:38px 38px,19px 19px;animation:20s linear infinite dotsFloat;position:absolute;inset:0}@keyframes dotsFloat{0%{background-position:0 0,9px 9px}to{background-position:0 -38px,9px -29px}}.ll-inner{z-index:1;flex-direction:column;gap:2rem;height:100%;padding:3rem 3rem 0;display:flex;position:relative}.ll-brand{text-align:center;flex-direction:column;align-items:center;gap:0;display:inline-flex}.ll-logo-wrap{background:0 0;border:none;border-radius:0;flex-shrink:0;justify-content:center;align-items:flex-end;width:59%;height:auto;margin-bottom:0;padding:0;line-height:0;display:flex;overflow:hidden}.ll-logo{object-fit:contain;filter:drop-shadow(0 2px 8px #0000004d);width:90%;max-width:100%;height:auto;display:block}.ll-brand-text{flex-direction:column;align-items:center;gap:.2rem;width:fit-content;display:flex}.ll-title{color:#fff;letter-spacing:.1px;text-align:center;text-shadow:0 2px 8px #00000040;white-space:nowrap;margin:0;font-size:1.15rem;font-weight:400;line-height:1.3}.ll-sub{color:#ffffffad;margin:0;font-size:.82rem;font-weight:400;line-height:1.45}.ll-tagline{color:#ffffffd9;text-align:center;letter-spacing:.3px;margin:.5rem 0 0;font-family:Caveat,cursive;font-size:1.3rem;font-weight:700;line-height:1.4}.ll-feat{flex-direction:column;gap:1rem;display:flex}.ll-feat-header{align-items:center;gap:.65rem;display:flex}.ll-feat-line{background:linear-gradient(90deg,#0000,#ffffff26,#0000);flex:1;height:1px}.ll-feat-badge{color:#fff;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff1a;border:1px solid #fff3;border-radius:999px;align-items:center;gap:.38rem;padding:.28rem .85rem;font-size:.58rem;font-weight:800;display:inline-flex}.ll-feat-badge svg{opacity:.85;color:#fff;flex-shrink:0}.ll-feat-grid{grid-template-columns:repeat(2,1fr);gap:.65rem .5rem;display:grid}.ll-feat-item{cursor:default;border:1px solid #ffffff12;border-left:2.5px solid var(--fc,#6366f1cc);background:#ffffff0b;border-radius:10px;flex-direction:row;align-items:center;gap:.7rem;padding:.55rem .75rem;transition:background .22s,border-color .22s,transform .2s,box-shadow .22s;animation:.45s cubic-bezier(.34,1.56,.64,1) both featPop;display:flex}.ll-feat-item:hover{border-color:#ffffff24;border-left-color:var(--fc,#6366f1e6);background:#ffffff17;transform:translate(3px);box-shadow:0 4px 16px #00000040,0 0 0 1px #ffffff0d}@keyframes featPop{0%{opacity:0;transform:translateY(12px)scale(.75)}to{opacity:1;transform:translateY(0)scale(1)}}.ll-feat-orb{width:32px;height:32px;color:var(--fc,#a78bfa);background:color-mix(in srgb, var(--fc,#818cf8) 14%, #0f0e2a99);border:1px solid color-mix(in srgb, var(--fc,#818cf8) 25%, #ffffff14);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;transition:transform .22s cubic-bezier(.34,1.56,.64,1),box-shadow .22s;display:flex;position:relative;overflow:visible}.ll-feat-orb-gloss{display:none}.ll-feat-orb-ring{border:1.5px solid var(--fc,#6366f180);opacity:0;pointer-events:none;border-radius:13px;transition:opacity .25s,transform .25s;position:absolute;inset:-5px;transform:scale(.85)}.ll-feat-item:hover .ll-feat-orb{box-shadow:0 0 12px color-mix(in srgb, var(--fc,#818cf8) 40%, transparent);transform:scale(1.12)}.ll-feat-item:hover .ll-feat-orb-ring{opacity:.5;animation:1.8s ease-in-out infinite orbPulse;transform:scale(1)}@keyframes orbPulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:.12;transform:scale(1.28)}}.ll-feat-dot{display:none}.ll-feat-name{color:#ffffffe0;text-align:left;letter-spacing:.01em;flex:1;font-size:.67rem;font-weight:600;line-height:1.3;transition:color .2s}.ll-feat-item:hover .ll-feat-name{color:var(--fc,#c7d2fe)}.ll-stats{background:#0000002e;border-top:1px solid #ffffff26;margin-top:auto;display:flex}.ll-stat{border-right:1px solid #ffffff1f;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;padding:.9rem .5rem;display:flex}.ll-stat:last-child{border-right:none}.ll-stat-value{color:#fff;font-size:1.15rem;font-weight:800;line-height:1}.ll-stat-label{color:#fff9;text-transform:uppercase;letter-spacing:.05em;font-size:.65rem;font-weight:600}.login-right{background:#fff;flex-direction:column;flex:1;justify-content:flex-start;align-items:center;min-height:640px;padding:2.5rem 2.5rem 0;display:flex;position:relative}.login-card{flex-direction:column;flex:1;width:100%;max-width:400px;display:flex}.login-header{text-align:center;margin-bottom:1.5rem}.login-role-icon{color:#fff;background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:16px;justify-content:center;align-items:center;width:64px;height:64px;margin:0 auto 1rem;transition:transform .25s;display:flex;box-shadow:0 8px 24px #4f46e561}.login-role-icon:hover{transform:scale(1.06)}.login-header h2{color:#0f172a;letter-spacing:-.4px;margin:0 0 .3rem;font-size:1.55rem;font-weight:800}.login-header p{color:#64748b;margin:0;font-size:.85rem}.login-form{flex-direction:column;flex:1;gap:1rem;display:flex}.alert{border-radius:10px;align-items:center;gap:.6rem;padding:.75rem 1rem;font-size:.85rem;font-weight:500;display:flex}.alert-error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca}.role-selector{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:12px;grid-template-columns:repeat(5,1fr);gap:.15rem;padding:.25rem;display:grid}.role-btn{color:#64748b;cursor:pointer;white-space:nowrap;background:0 0;border:1.5px solid #0000;border-radius:9px;flex-direction:column;justify-content:center;align-items:center;gap:5px;padding:.7rem .15rem;font-family:inherit;font-size:.82rem;font-weight:600;transition:all .18s;display:flex}.role-btn svg{width:22px;height:22px}.role-btn:hover{color:#4f46e5;background:#fffc;border-color:#4f46e533}.role-btn-active{color:#4f46e5;background:#fff;border-color:#c7d2fe;box-shadow:0 2px 8px #4f46e526}.role-btn svg{flex-shrink:0}.form-group{flex-direction:column;gap:.4rem;display:flex}.form-group label{color:#374151;letter-spacing:.6px;text-transform:uppercase;font-size:.75rem;font-weight:700}.input-wrapper{align-items:center;display:flex;position:relative}.input-icon{color:#94a3b8;pointer-events:none;align-items:center;transition:color .2s;display:flex;position:absolute;left:.85rem}.input-wrapper:focus-within .input-icon{color:#4f46e5}.input-wrapper input{color:#0f172a;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;outline:none;width:100%;padding:.8rem .9rem .8rem 2.7rem;font-family:inherit;font-size:max(.9rem,16px);transition:border-color .2s,box-shadow .2s,background .2s}.input-wrapper input::placeholder{color:#cbd5e1}.input-wrapper input:focus{background:#fff;border-color:#4f46e5;box-shadow:0 0 0 3px #4f46e51a}.input-wrapper input:disabled{opacity:.5;cursor:not-allowed}.toggle-password{cursor:pointer;color:#94a3b8;background:0 0;border:none;border-radius:4px;align-items:center;padding:.2rem;line-height:1;transition:color .2s;display:flex;position:absolute;right:.8rem}.toggle-password:hover{color:#4f46e5}.btn-login{color:#fff;letter-spacing:.3px;cursor:pointer;background:linear-gradient(135deg,#4f46e5 0%,#6d28d9 100%);border:none;border-radius:10px;justify-content:center;align-items:center;gap:.55rem;width:100%;margin-top:.25rem;padding:.88rem 1.5rem;font-family:inherit;font-size:.93rem;font-weight:700;transition:transform .2s,box-shadow .2s,opacity .2s;display:flex;position:relative;overflow:hidden}.btn-login:after{content:"";background:linear-gradient(105deg,#0000 38%,#ffffff24 50%,#0000 62%);transition:transform .5s;position:absolute;inset:0;transform:translate(-100%)}.btn-login:hover:not(:disabled):after{transform:translate(100%)}.btn-login:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 28px #4f46e573}.btn-login:active:not(:disabled){transform:translateY(0);box-shadow:0 4px 12px #4f46e54d}.btn-login:disabled{opacity:.6;cursor:not-allowed}.spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;flex-shrink:0;width:16px;height:16px;animation:.65s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.login-footer{text-align:center;border-top:1px solid #f1f5f9;margin-top:1.25rem;padding-top:1rem}.login-footer p{color:#94a3b8;margin:0;font-size:.78rem;line-height:1.6}.login-footer strong{color:#4f46e5;font-weight:600}.login-right-footer{background:radial-gradient(80% 120% at 20%,#4338ca 0%,#0000 65%),radial-gradient(70% 120% at 80%,#7c3aed 0%,#0000 65%),linear-gradient(135deg,#1e1b4b 0%,#312e81 50%,#1e1b4b 100%);border-top:1px solid #ffffff14;flex-shrink:0;justify-content:center;align-items:center;width:calc(100% + 5rem);height:40px;margin-bottom:0;margin-left:-2.5rem;margin-right:-2.5rem;padding:0 2.5rem;display:flex}.login-right-footer a{text-decoration:none}.login-right-footer p{color:#fff;white-space:nowrap;align-items:center;gap:.4rem;margin:0;font-size:.78rem;display:flex}.footer-logo{opacity:.95;vertical-align:middle;width:auto;height:26px;display:inline-block}.ll-mobile-header{display:none}@media (width<=860px){.ll-mobile-header{width:100%;padding:calc(1.1rem + env(safe-area-inset-top,0px)) 1.5rem 1rem;text-align:center;background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 100%);border-radius:16px 16px 0 0;flex-direction:row;justify-content:center;align-items:center;gap:.5rem;display:flex;box-shadow:0 2px 12px #0000002e}.ll-mobile-logo{object-fit:contain;filter:drop-shadow(0 1px 4px #0000004d);flex-shrink:0;width:auto;height:38px}.ll-mobile-title{color:#fff;letter-spacing:.01em;text-shadow:0 1px 4px #0003;white-space:nowrap;font-size:1.1rem;font-weight:700;line-height:1.3}.login-container{max-width:520px;min-height:unset;flex-direction:column}.login-left{display:none}.login-right{flex:1;width:100%;min-height:auto;padding:2rem 2rem 0}.login-right-footer{width:calc(100% + 4rem);height:38px;margin-left:-2rem;margin-right:-2rem;padding:0 2rem}.login-right-footer .ll-logo{object-fit:contain;filter:drop-shadow(0 2px 8px #0000004d);width:90%;max-width:100%;height:auto;display:block}.role-selector{gap:.15rem;padding:.25rem}.role-btn{gap:5px;padding:.7rem .15rem;font-size:.82rem}.role-btn svg{width:22px;height:22px}}@media (width<=480px){.login-page{padding:0}.login-container{border-radius:0;max-width:100%;min-height:100dvh}.login-left{display:none}.ll-mobile-header{padding:calc(.75rem + env(safe-area-inset-top,0px)) 1.25rem .75rem;border-radius:0}.ll-mobile-logo{height:32px}.ll-mobile-title{font-size:.95rem;font-weight:400}.ll-inner{gap:1rem;padding:1.25rem 1.25rem 0}.ll-title{font-size:.95rem}.role-selector{grid-template-columns:repeat(5,1fr);gap:.15rem;padding:.25rem}.role-btn{gap:5px;padding:.7rem .15rem;font-size:.82rem}.role-btn svg{width:22px;height:22px}.login-right{padding:1.5rem 1.25rem 0}.login-right-footer{width:calc(100% + 2.5rem);height:36px;margin-left:-1.25rem;margin-right:-1.25rem;padding:0 1.25rem}.login-right-footer .ll-logo{object-fit:contain;filter:drop-shadow(0 2px 8px #0000004d);width:90%;max-width:100%;height:auto;display:block}.footer-logo{height:20px}}*{box-sizing:border-box;margin:0;padding:0}.dashboard-wrapper{background:linear-gradient(135deg,#0f0c29 0%,#302b63 50%,#24243e 100%);height:100dvh;font-family:Inter,Segoe UI,Tahoma,Geneva,Verdana,sans-serif;overflow:hidden}.dashboard-body{height:calc(100dvh - 76px);margin-top:44px;overflow:hidden auto}.dashboard-body::-webkit-scrollbar{width:5px}.dashboard-body::-webkit-scrollbar-track{background:0 0}.dashboard-body::-webkit-scrollbar-thumb{background:#fff3;border-radius:999px}.dashboard-body::-webkit-scrollbar-thumb:hover{background:#ffffff59}.dashboard-body{scrollbar-width:thin;scrollbar-color:#fff3 transparent}.school-branding h5{color:#fff;letter-spacing:-.5px;margin:0;font-size:.7rem;font-weight:450;line-height:1.2}.dashboard-header-section{padding:0;padding-top:env(safe-area-inset-top);z-index:100;background:linear-gradient(160deg,#4f46e5 0%,#6d28d9 60%,#7c3aed 100%);min-height:54px;position:fixed;top:0;left:0;right:0;overflow:visible}@media (width<=768px){.dashboard-header-section{height:auto;min-height:54px;overflow:visible}}.dashboard-header-section:before{content:"";pointer-events:none;background:radial-gradient(circle,#ffffff1f 0%,#0000 70%);border-radius:50%;width:500px;height:500px;position:absolute;top:-200px;right:-100px}.header-inner{z-index:1;justify-content:space-between;align-items:center;padding:0 1rem;display:flex;position:relative;top:-2px}.header-brand{align-items:center;gap:.05rem;display:flex}.header-logo-img{object-fit:contain;filter:drop-shadow(0 2px 6px #00000040);flex-shrink:0;width:42px;height:42px}.header-brand-text{flex-direction:column;gap:.1rem;display:flex}.header-brand-name{color:#fff;letter-spacing:-.5px;text-shadow:0 2px 8px #0003;font-size:2rem;font-weight:800;line-height:1}.header-brand-sub{color:#ffffffe0;letter-spacing:.4px;font-size:.78rem;font-weight:600;line-height:1}.btn-hamburger{cursor:pointer;background:#ffffff2e;border:1.5px solid #ffffff59;border-radius:12px;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:4px;width:44px;height:44px;padding:0;transition:background .2s,border-color .2s;display:flex}.btn-hamburger:hover{background:#ffffff47;border-color:#ffffff8c}.btn-hamburger span{background:#fff;border-radius:2px;width:20px;height:2.5px;display:block}.btn-menu-toggle,.btn-logout-desktop{display:none!important}.drawer-signout:hover{background:#fee2e2;border-color:#f87171}.drawer-overlay{z-index:200;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a8c;animation:.2s fadeOverlay;position:fixed;inset:0}@keyframes fadeOverlay{0%{opacity:0}to{opacity:1}}.side-drawer{z-index:300;background:linear-gradient(135deg,#1e1b4b 0%,#312e81 50%,#3730a3 100%);flex-direction:column;width:268px;height:100vh;transition:transform .32s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;left:0;overflow:hidden;transform:translate(-100%);box-shadow:12px 0 48px #0f172a33}.side-drawer.open{transform:translate(0)}.drawer-header{background:linear-gradient(135deg,#1e1b4b 0%,#312e81 50%,#3730a3 100%);flex-shrink:0;justify-content:space-between;align-items:center;padding:.85rem 1rem;display:flex}.drawer-header-brand{align-items:center;gap:.6rem;display:flex}.drawer-logo{object-fit:contain;background:#ffffff2e;border-radius:7px;flex-shrink:0;width:30px;height:30px;padding:3px}.drawer-header-text{flex-direction:column;gap:2px;display:flex}.drawer-app-name{color:#fff;letter-spacing:.1px;font-size:.88rem;font-weight:800;line-height:1}.drawer-app-sub{color:#ffffffa6;letter-spacing:.3px;font-size:.62rem;font-weight:500;line-height:1}.drawer-close{color:#fff;cursor:pointer;background:#ffffff1f;border:1px solid #fff3;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;transition:background .2s;display:flex}.drawer-close:hover{background:#ffffff47}.drawer-profile{background:#ffffff08;border-bottom:1px solid #ffffff0f;flex-shrink:0;align-items:center;gap:.75rem;padding:.9rem 1rem;display:flex}.drawer-avatar{color:#fff;background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:42px;min-width:42px;height:42px;font-size:.95rem;font-weight:700;display:flex;overflow:hidden;box-shadow:0 2px 8px #4f46e559}.drawer-avatar img{object-fit:cover;width:100%;height:100%}.drawer-profile-info{flex-direction:column;gap:2px;min-width:0;display:flex}.drawer-profile-name{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;font-weight:700;line-height:1.2;overflow:hidden}.drawer-profile-meta{color:#c7d2fe;font-size:.72rem;font-weight:600;line-height:1.2}.drawer-profile-id{color:#e0e7ff;font-size:.65rem;font-weight:500;line-height:1.2}.drawer-section-label{color:#ffffff8c;letter-spacing:1.2px;text-transform:uppercase;margin:0;padding:.85rem 1rem .25rem;font-size:.6rem;font-weight:700}.drawer-menu{flex-direction:column;gap:1px;margin:0;padding:0 .5rem;list-style:none;display:flex}.drawer-item{color:#e0e7ff;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:.7rem;width:100%;padding:.6rem .75rem;font-size:.855rem;font-weight:500;transition:background .15s,color .15s,transform .15s;display:flex;position:relative}.drawer-item:hover{color:#fff;background:#ffffff14;transform:translate(3px)}.drawer-item.active{color:#fff;background:#6366f147;font-weight:700}.drawer-item.active .drawer-icon{color:#fff}.drawer-icon{width:22px;color:inherit;flex-shrink:0;justify-content:center;align-items:center;display:flex}.drawer-item-label{flex:1}.drawer-active-pill{background:#4f46e5;border-radius:50%;flex-shrink:0;width:5px;height:5px}.drawer-spacer{flex:1}.drawer-footer{border-top:1px solid #f1f5f9;flex-shrink:0;padding:.6rem .5rem .85rem}.drawer-signout{color:#e11d48;cursor:pointer;text-align:left;background:#fff1f2;border:1.5px solid #fecdd3;border-radius:8px;align-items:center;gap:.7rem;width:100%;padding:.6rem .75rem;font-size:.855rem;font-weight:600;transition:background .2s,transform .15s;display:flex}.drawer-signout:hover{background:#ffe4e6;border-color:#fda4af;transform:translate(3px)}.drawer-signout svg{color:#e11d48;flex-shrink:0}.profile-card{-webkit-backdrop-filter:blur(20px);background:#ffffff14;border:1px solid #ffffff2e;border-radius:18px;flex-wrap:nowrap;justify-content:space-between;align-items:flex-start;gap:2.2rem;margin:.8rem 1rem;padding:1.6rem 2rem;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;position:relative;overflow:visible;box-shadow:0 8px 32px #0000004d,inset 0 1px #ffffff26}.profile-card:before{content:"";pointer-events:none;background:radial-gradient(circle at 20%,#6366f105 0%,#0000 50%);border-radius:0;position:absolute;inset:0}.profile-card-left{z-index:1;flex:1;align-items:flex-start;gap:1.6rem;min-width:0;display:flex;position:relative}.profile-avatar{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border:1px solid #fff9;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:90px;min-width:90px;height:90px;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 24px #667eea59,0 0 0 1px #ffffff80}.profile-avatar img{object-fit:cover;width:100%;height:100%}.profile-initials{color:#fff;letter-spacing:-.3px;text-shadow:0 2px 4px #0003;font-size:1.8rem;font-weight:800;line-height:1}.profile-info{flex:1;min-width:0}.profile-name{color:#f1f5f9;white-space:normal;text-overflow:clip;letter-spacing:-.4px;text-align:left;margin:0 0 1.2rem;font-size:1.35rem;font-weight:800;line-height:1.3;overflow:visible}.profile-detail{border-bottom:1px solid #e2e8f080;justify-content:space-between;align-items:center;gap:1rem;padding-bottom:.8rem;display:flex}.profile-label{color:#ffffff73;text-transform:uppercase;letter-spacing:.6px;text-align:left;flex-shrink:0;min-width:fit-content;font-size:.75rem;font-weight:700;line-height:1}.profile-value{color:#e2e8f0;word-break:break-word;text-align:right;flex:1;font-size:.95rem;font-weight:600;line-height:1.4}.profile-stats{z-index:1;flex-shrink:0;justify-content:flex-end;align-items:flex-start;gap:1.8rem;display:flex;position:relative}.profile-stat-label{color:#fff9;text-transform:uppercase;letter-spacing:.5px;text-align:center;font-size:.7rem;font-weight:700;line-height:1}@media (width<=1024px){.profile-card{gap:1.5rem;padding:1.5rem 2rem}.profile-details-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem 1.5rem}.profile-detail{padding-bottom:.7rem}.profile-stats{gap:1.2rem}}@media (width<=768px){.profile-card{flex-wrap:wrap;align-items:flex-start;gap:1.2rem;margin:.6rem .8rem;padding:1.3rem 1.5rem}.profile-card-left{flex:100%;gap:1.2rem;width:100%}.profile-avatar{width:75px;min-width:75px;height:75px;box-shadow:0 6px 20px #667eea59,0 0 0 1px #fff6}.profile-initials{font-size:1.4rem}.profile-name{margin-bottom:.8rem;font-size:1.2rem}.profile-details-grid{grid-template-columns:repeat(2,1fr);gap:.9rem 1.2rem}.profile-detail{padding-bottom:.6rem}.profile-label{font-size:.7rem}.profile-value{font-size:.9rem}.profile-stats{flex:100%;justify-content:flex-start;gap:.9rem;width:100%}.profile-stat-item{min-width:90px;padding:.8rem 1rem}.profile-stat-value{font-size:1.5rem}}@media (width<=480px){.profile-card{flex-direction:column;align-items:stretch;gap:.8rem;margin:.5rem;padding:1rem}.profile-card-left{gap:1rem;width:100%}.profile-avatar{width:70px;min-width:70px;height:44px}.profile-initials{font-size:1.2rem}.profile-name{margin-bottom:.6rem;font-size:1rem}.profile-details-grid{grid-template-columns:1fr;gap:.7rem 1rem}.profile-detail{flex-direction:column;align-items:flex-start;padding-bottom:.5rem}.profile-label{font-size:.65rem}.profile-value{text-align:left;font-size:.85rem}.profile-stats{justify-content:space-between;gap:.7rem;width:100%}.profile-stat-item{flex:1;min-width:auto;padding:.7rem .9rem}.profile-stat-value{font-size:1.3rem}.profile-stat-label{font-size:.6rem}}.profile-details-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.2rem 1.8rem;display:grid}.profile-detail{flex-direction:column;gap:.3rem;display:flex}.profile-label{color:#94a3b8;text-transform:uppercase;letter-spacing:.6px;font-size:.75rem;font-weight:700;line-height:1}.profile-value{color:#1e293b;word-break:break-word;font-size:.95rem;font-weight:600;line-height:1.4}.profile-stats{z-index:1;flex-shrink:0;align-items:center;gap:1.8rem;display:flex;position:relative}.profile-stat-item{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffb3;border:1px solid #94a3b826;border-radius:12px;flex-direction:column;align-items:center;gap:.4rem;min-width:100px;padding:1rem 1.4rem;transition:all .2s;display:flex}.profile-stat-item:hover{background:#fffffff2;border-color:#94a3b84d;box-shadow:0 6px 16px #00000014}.profile-stat-value{letter-spacing:-.5px;font-size:1.75rem;font-weight:900;line-height:1}.profile-stat-label{color:#fff9;text-transform:uppercase;letter-spacing:.5px;font-size:.7rem;font-weight:700;line-height:1}@media (width<=1024px){.profile-card{gap:1.5rem;padding:1.5rem 2rem}.profile-details-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem 1.5rem}.profile-stats{gap:1.2rem}}@media (width<=768px){.profile-card{align-items:center;gap:1.2rem;margin:.6rem .8rem;padding:1.3rem 1.5rem}.profile-card-left{gap:1.2rem;width:100%}.profile-avatar{width:70px;min-width:70px;height:44px;box-shadow:0 6px 20px #667eea59,0 0 0 2px #fffc}.profile-initials{font-size:1.3rem}.profile-name{margin-bottom:.8rem;font-size:1.2rem}.profile-details-grid{grid-template-columns:repeat(2,1fr);gap:.9rem 1.2rem}.profile-label{font-size:.7rem}.profile-value{font-size:.9rem}.profile-stats{gap:.9rem}.profile-stat-item{min-width:90px;padding:.8rem 1rem}.profile-stat-value{font-size:1.5rem}}@media (width<=480px){.profile-card{flex-direction:column;align-items:stretch;gap:.8rem;margin:.5rem;padding:1rem}.profile-card-left{gap:1rem;width:100%}.profile-avatar{width:64px;min-width:64px;height:64px}.profile-initials{font-size:1.15rem}.profile-name{margin-bottom:.6rem;font-size:1rem}.profile-details-grid{grid-template-columns:1fr;gap:.7rem 1rem}.profile-label{font-size:.65rem}.profile-value{font-size:.85rem}.profile-stats{justify-content:space-around;gap:.7rem;width:100%}.profile-stat-item{flex:1;min-width:auto;padding:.7rem .9rem}.profile-stat-value{font-size:1.3rem}.profile-stat-label{font-size:.6rem}}.profile-stat-item{flex-direction:column;align-items:center;gap:.15rem;display:flex}.profile-stat-value{font-size:1.25rem;font-weight:800;line-height:1}.profile-stat-label{color:#ffffff80;text-transform:uppercase;letter-spacing:.4px;font-size:.68rem;font-weight:600}@media (width<=480px){.profile-card{gap:.75rem;padding:.9rem 1rem}.profile-avatar{width:46px;height:46px}.profile-initials{font-size:1rem}.profile-name{font-size:.95rem}.profile-stats{gap:.9rem}.profile-stat-value{font-size:1.05rem}}.tab-navigation{-webkit-backdrop-filter:blur(16px);z-index:50;-webkit-overflow-scrolling:touch;scrollbar-width:none;background:#ffffff12;border-bottom:1px solid #ffffff1a;gap:.4rem;padding:.65rem 1.2rem;display:flex;position:sticky;top:0;overflow-x:auto;box-shadow:0 4px 16px #0003}.tab-navigation::-webkit-scrollbar{display:none}.tab-btn{color:#ffffffa6;cursor:pointer;white-space:nowrap;letter-spacing:.2px;background:#ffffff14;border:1px solid #ffffff1f;border-radius:50px;flex-shrink:0;align-items:center;gap:.4rem;padding:.5rem 1.1rem;font-family:Inter,inherit;font-size:.84rem;font-weight:600;transition:all .2s;display:flex}.tab-btn:hover{color:#fff;background:#ffffff26;border-color:#ffffff40}.tab-btn.active{color:#fff;background:linear-gradient(135deg,#6366f1 0%,#7c3aed 100%);border-color:#0000;box-shadow:0 4px 16px #6366f180}.tab-btn.active:after{display:none}.dashboard-content{max-width:1400px;margin:0 auto;padding:1.25rem 1.5rem 2rem}.tab-content{animation:.3s fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.alert{border-radius:10px;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;padding:1.2rem 1.5rem;display:flex}.alert-icon{flex-shrink:0;margin-top:.2rem;font-size:1.3rem}.alert strong{margin-bottom:.3rem;font-size:.95rem;display:block}.alert p{margin:0;font-size:.9rem;line-height:1.5}.alert-warning{color:#92400e;background:#fef3c7;border:1px solid #fcd34d}.alert-info{color:#0c4a6e;background:#c5e9f3;border:1px solid #7ec8e3}.dashboard-section{background:#fff;border-radius:12px;margin-bottom:2rem;padding:2rem;transition:box-shadow .3s;box-shadow:0 4px 12px #00000014}.dashboard-section:hover{box-shadow:0 6px 16px #0000001f}.section-title{border-bottom:2px solid #e2e8f0;align-items:center;gap:.5rem;margin-bottom:1.5rem;padding-bottom:1rem;display:flex}.section-title h3{color:#1f2937;margin:0;font-size:1.3rem;font-weight:700}.announcements-list{flex-direction:column;gap:1rem;display:flex}.announcement-item{background:#f0f9ff;border-left:4px solid #3b82f6;border-radius:10px;padding:1.2rem;transition:all .3s}.announcement-item:hover{transform:translate(4px);box-shadow:0 4px 8px #3b82f626}.announcement-item.priority-high{background:#fef2f2;border-left-color:#ef4444}.announcement-item.priority-high:hover{box-shadow:0 4px 8px #ef444426}.announcement-item.priority-medium{background:#fffbf0;border-left-color:#f59e0b}.announcement-item.priority-medium:hover{box-shadow:0 4px 8px #f59e0b26}.announcement-item.priority-low{background:#f0fdf4;border-left-color:#10b981}.announcement-item.priority-low:hover{box-shadow:0 4px 8px #10b98126}.announcement-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.announcement-header h4{color:#1f2937;margin:0;font-size:1rem;font-weight:700}.badge-priority{text-transform:uppercase;letter-spacing:.5px;border-radius:20px;padding:.3rem .8rem;font-size:.7rem;font-weight:700;display:inline-block}.badge-priority.high{color:#991b1b;background:#fee2e2}.badge-priority.medium{color:#92400e;background:#fef3c7}.badge-priority.low{color:#166534;background:#dcfce7}.announcement-item p{color:#4b5563;margin:.7rem 0 0;font-size:.95rem;line-height:1.6}.announcement-date{color:#9ca3af;margin-top:.7rem;font-size:.68rem;display:block}.empty-message{text-align:center;color:#9ca3af;padding:2rem 1rem;font-style:italic}.assignments-list{flex-direction:column;gap:1rem;display:flex}.assignment-item{background:#f9fafb;border:1.5px solid #e5e7eb;border-radius:10px;justify-content:space-between;align-items:center;padding:1.2rem;transition:all .3s;display:flex}.assignment-item:hover{border-color:#667eea;box-shadow:0 4px 12px #667eea1a}.assignment-item.status-pending{background:#fef3c7;border-color:#fcd34d}.assignment-item.status-submitted{background:#c5e9f3;border-color:#7ec8e3}.assignment-item.status-graded{background:#dcfce7;border-color:#86efac}.assignment-info h4{color:#1f2937;margin:0;font-size:1rem;font-weight:700}.subject-name{color:#667eea;margin:.3rem 0 0;font-size:.85rem;font-weight:600}.assignment-meta{align-items:center;gap:1.5rem;display:flex}.status-badge{text-transform:uppercase;letter-spacing:.5px;border-radius:20px;padding:.4rem 1rem;font-size:.68rem;font-weight:700;display:inline-block}.status-badge.pending{color:#854d0e;background:#fef08a}.status-badge.submitted{color:#0c4a6e;background:#9dd6eb}.status-badge.graded{color:#166534;background:#bbf7d0}.status-badge.pass{color:#166534;background:#dcfce7}.status-badge.fail{color:#991b1b;background:#fee2e2}.due-date{color:#6b7280;white-space:nowrap;font-size:.9rem}.subjects-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1.5rem;display:grid}.subject-card{color:#fff;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:10px;padding:1.5rem;transition:all .3s;box-shadow:0 4px 12px #667eea33}.subject-card:hover{transform:translateY(-5px);box-shadow:0 8px 20px #667eea4d}.subject-card h4{margin:0 0 .8rem;font-size:1.1rem;font-weight:700}.teacher-name{opacity:.95;margin:.5rem 0;font-size:.9rem}.credits{opacity:.85;margin:.5rem 0 0;font-size:.85rem}.grades-table-wrapper{overflow-x:auto}.grades-table{border-collapse:collapse;width:100%;font-size:.95rem}.grades-table thead{background:#f3f4f6;border-bottom:2px solid #e5e7eb}.grades-table th{text-align:left;color:#374151;text-transform:uppercase;letter-spacing:.3px;padding:1rem;font-size:.85rem;font-weight:700}.grades-table td{color:#4b5563;border-bottom:1px solid #e5e7eb;padding:1rem}.grades-table tbody tr:hover{background:#f9fafb}.subject-name{color:#1f2937;font-weight:600}.marks{text-align:center;color:#667eea;font-weight:600}.percentage{text-align:center;font-weight:700}.grade-badge{color:#fff;text-align:center;border-radius:6px;min-width:40px;padding:.4rem .8rem;font-weight:700;display:inline-block}.attendance-overview{grid-template-columns:200px 1fr;align-items:center;gap:3rem;display:grid}.attendance-stat{text-align:center}.stat-circle{color:#fff;border-radius:50%;justify-content:center;align-items:center;width:150px;height:150px;margin:0 auto 1rem;font-size:2.5rem;font-weight:700;display:flex;box-shadow:0 8px 20px #00000026}.attendance-stat h4{color:#1f2937;margin:0;font-size:1.1rem;font-weight:700}.attendance-status{margin-top:.5rem;font-size:.95rem;font-weight:600}.attendance-details{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1rem;display:grid}.detail-card{text-align:center;border:2px solid #e5e7eb;border-radius:10px;padding:1.2rem;transition:all .3s}.detail-card:hover{border-color:currentColor;transform:translateY(-3px)}.detail-card.present{background:#f0fdf4;border-color:#10b981}.detail-card.absent{background:#fef2f2;border-color:#ef4444}.detail-card.leave{background:#fffbf0;border-color:#f59e0b}.detail-card.total{background:#f0f4ff;border-color:#667eea}.detail-card h5{color:#6b7280;text-transform:uppercase;letter-spacing:.3px;margin:0 0 .5rem;font-size:.85rem;font-weight:700}.detail-number{color:#1f2937;margin:0;font-size:1.8rem;font-weight:700}.detail-subtitle{color:#9ca3af;margin-top:.3rem;font-size:.68rem;display:block}.fee-card{background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;margin-bottom:1.5rem;padding:1.8rem}.fee-row{border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:.9rem 0;display:flex}.fee-row:last-child{border-bottom:none}.fee-label{color:#6b7280;font-size:.95rem;font-weight:600}.fee-value{color:#1f2937;font-size:1rem;font-weight:700}.payment-section{background:#f0f9ff;border:1px solid #9dd6eb;border-radius:10px;margin-top:1.5rem;padding:1.5rem}.payment-section h4{color:#0c4a6e;margin:0 0 .8rem;font-size:1rem;font-weight:700}.payment-section p{color:#0c4a6e;margin:0 0 1rem;font-size:.95rem}.contact-info{background:#fff;border-radius:8px;margin-top:1rem;padding:1rem}.contact-info p{color:#1f2937;margin:.5rem 0;font-size:.9rem}.loading-container,.error-container,.empty-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:500px;display:flex}.spinner-circle{border:4px solid #e5e7eb;border-top-color:#667eea;border-radius:50%;width:50px;height:32px;margin-bottom:1rem;animation:.8s linear infinite spin}.loading-container p,.error-container p,.empty-state p{color:#6b7280;font-size:1.1rem}.error-text{color:#dc2626;margin-bottom:1rem;font-size:1.1rem}.btn-retry{color:#fff;cursor:pointer;background:#667eea;border:none;border-radius:8px;margin-top:1rem;padding:.75rem 1.5rem;font-size:.95rem;font-weight:600;transition:all .3s}.btn-retry:hover{background:#5568d3;transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.dashboard-footer{width:100%;min-height:32px;padding:4px 1.5rem 0;padding-bottom:env(safe-area-inset-bottom);z-index:99;text-align:center;background:linear-gradient(160deg,#4f46e5 0%,#6d28d9 60%,#7c3aed 100%);border-top:1px solid #ffffff26;justify-content:center;align-items:flex-start;gap:.6rem;display:flex;position:fixed;bottom:0;left:0;right:0}.dashboard-footer a{justify-content:center;align-items:center;text-decoration:none;display:flex}.dashboard-footer p{color:#fff;white-space:nowrap;align-items:center;gap:.4rem;margin:0;font-size:.68rem;display:flex}.dashboard-footer .footer-logo{opacity:.95;width:auto;height:18px;display:inline-block}@media (width<=1024px){.profile-card{text-align:center;flex-direction:column;gap:1.5rem}.quick-stats{flex-direction:column;gap:1rem}.attendance-overview{grid-template-columns:1fr}.grades-table{font-size:.85rem}.grades-table th,.grades-table td{padding:.8rem .5rem}}@media (width<=768px){.btn-menu-toggle{display:flex}.tab-navigation{display:none}.dashboard-content{padding:1rem}.header-top{flex-direction:row;align-items:center;gap:.75rem;padding:.85rem 1rem}.header-left{flex:1}.logo-section{justify-content:flex-start;width:auto}.dashboard-section{margin-bottom:1.5rem;padding:1.5rem}.section-title h3{font-size:1.1rem}.subjects-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1rem}.attendance-details{grid-template-columns:repeat(2,1fr);gap:.75rem}.detail-card{padding:.9rem}.detail-number{font-size:1.4rem}.assignment-item{flex-direction:column;align-items:flex-start;gap:1rem}.assignment-meta{flex-direction:column;align-items:flex-start;gap:.75rem;width:100%}.profile-card{gap:1rem}.quick-stats{flex-direction:row;gap:1rem;width:100%}}@media (width<=480px){.dashboard-body{height:calc(100vh - 76px);margin-top:44px}.dashboard-body::-webkit-scrollbar{width:5px}.dashboard-body::-webkit-scrollbar-track{background:0 0}.dashboard-body::-webkit-scrollbar-thumb{background:#fff3;border-radius:999px}.dashboard-body::-webkit-scrollbar-thumb:hover{background:#ffffff59}.dashboard-body{scrollbar-width:thin;scrollbar-color:#fff3 transparent}.header-top{padding:.7rem .85rem}.logo-section h1{font-size:1.1rem}.logo-img{width:40px;height:40px}.tab-navigation{display:none}.btn-menu-toggle{display:flex}.dashboard-section{padding:1rem}.section-title h3{font-size:1rem}.subjects-grid{grid-template-columns:1fr}.stat-circle{width:120px;height:120px;font-size:2rem}.attendance-details{grid-template-columns:1fr}.detail-card{padding:.75rem}.grades-table{font-size:.68rem}.grades-table th,.grades-table td{padding:.5rem}.announcement-item,.assignment-item{padding:1rem}.dashboard-footer{min-height:32px;padding:0 1.5rem;padding-bottom:env(safe-area-inset-bottom)}.dashboard-footer p{font-size:.75rem}.dashboard-footer .footer-logo{height:24px}}.db-alert{border-radius:8px;align-items:flex-start;gap:.65rem;margin-bottom:.75rem;padding:.75rem 1rem;font-size:.82rem;line-height:1.5;display:flex}.db-alert svg{flex-shrink:0;margin-top:2px}.db-alert strong{margin-bottom:2px;font-weight:600;display:block}.db-alert p{opacity:.85;margin:0}.db-alert-warning{color:#fde68a;background:#f59e0b26;border:1px solid #f59e0b4d}.db-alert-info{color:#7ec8e3;background:#3b82f626;border:1px solid #3b82f64d}.db-stats-row{grid-template-columns:repeat(4,1fr);gap:.65rem;margin-bottom:.75rem;display:grid}.db-stat-card{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffff14;border:1px solid #ffffff24;border-radius:14px;align-items:center;gap:.75rem;padding:.85rem 1rem;transition:transform .18s,box-shadow .18s;display:flex;position:relative;overflow:hidden;box-shadow:0 4px 16px #0003}.db-stat-card:before{content:"";background:linear-gradient(90deg,#6366f1,#7c3aed);border-radius:14px 14px 0 0;height:3px;position:absolute;top:0;left:0;right:0}.db-stat-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px #00000059}.db-stat-icon{border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;display:flex}.db-stat-info{flex-direction:column;display:flex}.db-stat-value{color:#f1f5f9;font-size:1.15rem;font-weight:800;line-height:1.2}.db-stat-label{color:#ffffff8c;margin-top:2px;font-size:.72rem;font-weight:500}.db-overview-grid{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.db-card{-webkit-backdrop-filter:blur(16px);background:#ffffff12;border:1px solid #ffffff1f;border-radius:16px;margin-bottom:.75rem;transition:box-shadow .2s,transform .2s;overflow:hidden;box-shadow:0 8px 32px #00000040}.db-card:hover{box-shadow:0 12px 40px #00000059}.db-card-header{background:linear-gradient(135deg,#6366f133 0%,#7c3aed26 100%);border-bottom:1px solid #ffffff14;align-items:center;gap:.5rem;padding:.75rem 1rem;display:flex}.db-card-header h3{color:#e2e8f0;letter-spacing:.1px;margin:0;font-size:.85rem;font-weight:700}.db-card-header svg{color:#a5b4fc;flex-shrink:0}.db-empty{text-align:center;color:#ffffff59;padding:1.5rem 1rem;font-size:.82rem}.db-ann-list{padding:.5rem 0}.db-ann-item{border-bottom:1px solid #ffffff0f;padding:.65rem 1rem;transition:background .15s}.db-ann-item:last-child{border-bottom:none}.db-ann-item:hover{background:#ffffff0f}.db-ann-header{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:4px;display:flex}.db-ann-title{color:#e2e8f0;font-size:.82rem;font-weight:600}.db-ann-body{color:#fff9;margin:0 0 4px;font-size:.78rem;line-height:1.45}.db-ann-date{color:#ffffff59;font-size:.72rem}.db-badge{text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-radius:999px;padding:2px 7px;font-size:.66rem;font-weight:700}.db-badge-high{color:#b91c1c;background:#fee2e2}.db-badge-medium{color:#b45309;background:#fef3c7}.db-badge-low{color:#15803d;background:#dcfce7}.db-ann-high{border-left:3px solid #ef4444}.db-ann-medium{border-left:3px solid #f59e0b}.db-ann-low{border-left:3px solid #10b981}.db-assign-list{padding:.25rem 0}.db-assign-item{border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:center;gap:.5rem;padding:.6rem 1rem;display:flex}.db-assign-item:last-child{border-bottom:none}.db-assign-left{flex-direction:column;gap:2px;min-width:0;display:flex}.db-assign-right{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:3px;display:flex}.db-assign-title{color:#e2e8f0;white-space:nowrap;text-overflow:ellipsis;font-size:.82rem;font-weight:600;overflow:hidden}.db-assign-subject{color:#ffffff80;font-size:.74rem}.db-assign-due{color:#ffffff59;font-size:.72rem}.db-status{text-transform:capitalize;border-radius:999px;padding:2px 8px;font-size:.68rem;font-weight:700}.db-status-pending{color:#b45309;background:#fef3c7}.db-status-submitted{color:#0a5568;background:#c5e9f3}.db-status-graded{color:#15803d;background:#dcfce7}.db-subjects-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.6rem;padding:.75rem;display:grid}.db-subject-card{text-align:center;background:#ffffff12;border:1px solid #ffffff1a;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:.85rem .75rem;transition:box-shadow .15s,transform .15s;display:flex}.db-subject-card:hover{transform:translateY(-1px);box-shadow:0 8px 24px #6366f14d}.db-subject-icon{color:#a5b4fc;background:#6366f140;border-radius:9px;justify-content:center;align-items:center;width:36px;height:36px;margin-bottom:4px;display:flex}.db-subject-name{color:#e2e8f0;font-size:.8rem;font-weight:600;line-height:1.3}.db-subject-code{color:#a5b4fc;background:#6366f133;border-radius:999px;padding:1px 7px;font-size:.7rem;font-weight:600}.db-subject-teacher{color:#ffffff73;font-size:.72rem}.db-subject-credits{color:#ffffff4d;font-size:.7rem}.db-table-wrap{padding:0 0 .25rem;overflow-x:auto}.db-table{border-collapse:collapse;width:100%;font-size:.8rem}.db-table thead tr{background:#6366f126}.db-table th{text-align:left;color:#fff9;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;border-bottom:1px solid #ffffff14;padding:.6rem .9rem;font-size:.72rem;font-weight:700}.db-table td{color:#cbd5e1;vertical-align:middle;border-bottom:1px solid #ffffff0d;padding:.55rem .9rem}.db-table tbody tr:nth-child(2n) td{background:#ffffff08}.db-table tbody tr:last-child td{border-bottom:none}.db-table tbody tr:hover td{background:#6366f11f}.db-td-subject{color:#e2e8f0;font-weight:700}.db-td-muted{color:#ffffff73;font-size:.77rem}.db-td-center{text-align:center}.db-grade-chip{color:#fff;letter-spacing:.04em;border-radius:6px;padding:2px 9px;font-size:.73rem;font-weight:700;display:inline-block}.db-result-chip{border-radius:999px;padding:2px 9px;font-size:.72rem;font-weight:700;display:inline-block}.db-pass{color:#15803d;background:#dcfce7}.db-fail{color:#b91c1c;background:#fee2e2}.db-att-layout{flex-wrap:wrap;align-items:flex-start;gap:1.25rem;padding:1rem;display:flex}.db-att-circle-wrap{flex-direction:column;flex-shrink:0;align-items:center;gap:.75rem;display:flex}.db-att-circle{background:conic-gradient(var(--color,#10b981) calc(var(--pct,0) * 1%), #e5e7eb 0%);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;width:110px;height:110px;display:flex;position:relative}.db-att-circle:before{content:"";background:#0f0c29d9;border-radius:50%;position:absolute;inset:12px}.db-att-pct{z-index:1;font-size:1.15rem;font-weight:800;line-height:1.1;position:relative}.db-att-lbl{color:#ffffff8c;z-index:1;text-transform:uppercase;letter-spacing:.04em;font-size:.68rem;font-weight:600;position:relative}.db-att-bar-wrap{width:110px}.db-att-bar-track{background:#e5e7eb;border-radius:999px;height:6px;margin-bottom:4px;overflow:hidden}.db-att-bar-fill{border-radius:999px;height:100%;transition:width .4s}.db-att-bar-label{color:#fff6;text-align:center;font-size:.7rem;display:block}.db-att-cards{flex:1;grid-template-columns:repeat(2,1fr);gap:.55rem;min-width:200px;display:grid}.db-att-card{text-align:center;background:#ffffff12;border:1px solid #ffffff1a;border-radius:10px;flex-direction:column;align-items:center;padding:.65rem .5rem;display:flex}.db-att-card-value{font-size:1.4rem;font-weight:800;line-height:1.1}.db-att-card-label{color:#ffffffb3;margin-top:2px;font-size:.73rem;font-weight:600}.db-att-card-sub{color:#ffffff59;font-size:.68rem}.db-fee-banner{border-radius:10px;align-items:center;gap:.75rem;margin:.75rem;padding:.85rem 1rem;font-size:.83rem;display:flex}.db-fee-banner strong{font-weight:700;display:block}.db-fee-banner p{opacity:.85;margin:2px 0 0;font-size:.77rem}.db-fee-banner-icon{border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.db-fee-paid{color:#6ee7b7;background:#10b98126;border:1px solid #10b9814d}.db-fee-paid .db-fee-banner-icon{color:#fff;background:#16a34a}.db-fee-pending{color:#fde047;background:#eab30826;border:1px solid #eab3084d}.db-fee-pending .db-fee-banner-icon{color:#fff;background:#ca8a04}.db-fee-overdue{color:#fca5a5;background:#ef444426;border:1px solid #ef44444d}.db-fee-overdue .db-fee-banner-icon{color:#fff;background:#dc2626}.db-fee-progress{padding:0 .75rem .75rem}.db-fee-progress-bar{background:#ffffff1a;border-radius:999px;height:8px;margin-bottom:6px;overflow:hidden}.db-fee-progress-fill{background:linear-gradient(90deg,#10b981,#34d399);border-radius:999px;height:100%;transition:width .5s}.db-fee-progress-labels{color:#ffffff73;justify-content:space-between;font-size:.75rem;display:flex}.db-fee-rows{border-top:1px solid #f1f5f9}.db-fee-row{border-bottom:1px solid #ffffff0d;justify-content:space-between;align-items:center;padding:.6rem 1rem;font-size:.82rem;display:flex}.db-fee-row:last-child{border-bottom:none}.db-fee-row-label{color:#ffffff80;font-weight:500}.db-fee-row-value{font-weight:700}.db-fee-contact{color:#ffffff73;background:#ffffff0d;border-radius:8px;align-items:center;gap:.4rem;margin:.5rem .75rem .75rem;padding:.65rem 1rem;font-size:.78rem;display:flex}.db-fee-contact p{align-items:center;gap:.35rem;margin:0;display:flex}@media (width<=768px){.db-stats-row{grid-template-columns:repeat(2,1fr)}.db-overview-grid{grid-template-columns:1fr}.db-att-layout{flex-direction:column;align-items:center}.db-att-circle-wrap{flex-direction:row;align-items:center;gap:1rem}.db-att-bar-wrap{width:140px}}@media (width<=480px){.db-stats-row{grid-template-columns:repeat(2,1fr);gap:.5rem}.db-stat-card{gap:.5rem;padding:.6rem .7rem}.db-stat-value{font-size:.95rem}.db-subjects-grid{grid-template-columns:repeat(2,1fr)}.db-att-circle-wrap{flex-direction:column}}.sfp-wrap{position:relative}.sfp-center{justify-content:center;align-items:center;min-height:180px;display:flex}.sfp-spinner{border:4px solid #ddd6fe;border-top-color:#7c3aed;border-radius:50%;width:34px;height:34px;animation:.7s linear infinite sfp-spin}@keyframes sfp-spin{to{transform:rotate(360deg)}}.sfp-summary-row{flex-wrap:wrap;gap:.65rem;margin-bottom:.85rem;display:flex}.sfp-card{border-radius:10px;flex-direction:column;flex:120px;gap:.18rem;padding:.6rem .9rem;display:flex}.sfp-card-lbl{text-transform:uppercase;letter-spacing:.04em;opacity:.75;font-size:.7rem;font-weight:600}.sfp-card-val{font-size:1.05rem;font-weight:700}.sfp-card-blue{color:#4c1d95;background:#ede9fe}.sfp-card-green{color:#14532d;background:#dcfce7}.sfp-card-purple{color:#6b21a8;background:#f3e8ff}.sfp-progress-wrap{margin-bottom:1rem}.sfp-progress-track{background:#e5e7eb;border-radius:999px;height:8px;margin-bottom:.3rem;overflow:hidden}.sfp-progress-fill{background:linear-gradient(90deg,#7c3aed,#10b981);border-radius:999px;height:100%;transition:width .5s}.sfp-progress-label{color:#6b7280;font-size:.75rem}.sfp-section-title{color:#4c1d95;text-transform:uppercase;letter-spacing:.04em;align-items:center;margin:.5rem 0 .45rem;font-size:.82rem;font-weight:700;display:flex}.sfp-qtr{border:1px solid #e5e7eb;border-radius:9px;margin-bottom:.55rem;overflow:hidden}.sfp-qtr-paid{border-color:#86efac}.sfp-qtr-header{background:#f5f3ff;flex-wrap:wrap;align-items:center;gap:.65rem;padding:.52rem .9rem;display:flex}.sfp-qtr-paid .sfp-qtr-header{background:#f0fdf4}.sfp-qtr-name{color:#4c1d95;flex:1;font-size:.82rem;font-weight:700}.sfp-qtr-paid .sfp-qtr-name{color:#166534}.sfp-qtr-total{color:#1e1b4b;font-size:.85rem;font-weight:700}.sfp-qtr-rows{padding:.3rem .9rem .3rem 1.5rem}.sfp-qtr-row{color:#374151;border-bottom:1px solid #f3f4f6;justify-content:space-between;padding:.22rem 0;font-size:.79rem;display:flex}.sfp-qtr-row:last-child{border-bottom:none}.sfp-pay-btn{color:#fff;cursor:pointer;white-space:nowrap;background:#7c3aed;border:none;border-radius:7px;padding:.32rem .75rem;font-size:.78rem;font-weight:700;transition:background .2s}.sfp-pay-btn:hover:not(:disabled){background:#6d28d9}.sfp-pay-btn:disabled{opacity:.55;cursor:not-allowed}.sfp-badge{white-space:nowrap;border-radius:9999px;align-items:center;gap:.25rem;padding:.15rem .55rem;font-size:.7rem;font-weight:700;display:inline-flex}.sfp-badge-green{color:#166534;background:#dcfce7;border:1px solid #86efac}.sfp-badge-yellow{color:#92400e;background:#fef3c7;border:1px solid #fcd34d}.sfp-badge-red{color:#991b1b;background:#fee2e2;border:1px solid #fca5a5}.sfp-receipt{border:1px solid #e5e7eb;border-radius:9px;margin-bottom:.5rem;overflow:hidden}.sfp-receipt-cancelled{opacity:.6;border-style:dashed}.sfp-receipt-header{background:#faf8ff;flex-wrap:wrap;align-items:center;gap:.65rem;padding:.52rem .9rem;display:flex}.sfp-receipt-no{color:#5b21b6;font-size:.82rem;font-weight:700}.sfp-receipt-date{color:#6b7280;font-size:.78rem}.sfp-receipt-mode{color:#4c1d95;background:#ddd6fe;border-radius:5px;padding:.1rem .42rem;font-size:.74rem}.sfp-receipt-amt{color:#166534;margin-left:auto;font-weight:700}.sfp-receipt-remark{color:#6b7280;background:#fafafa;border-top:1px solid #f3f4f6;padding:.3rem .9rem;font-size:.76rem}.sfp-empty{text-align:center;color:#9ca3af;padding:1.5rem;font-size:.83rem;font-style:italic}.sfp-btn{cursor:pointer;border:none;border-radius:7px;padding:.45rem 1rem;font-size:.83rem;font-weight:600;transition:opacity .2s,transform .1s}.sfp-btn:active{transform:scale(.97)}.sfp-btn:disabled{opacity:.6;cursor:not-allowed}.sfp-btn-primary{color:#fff;background:#7c3aed}.sfp-btn-primary:hover:not(:disabled){background:#6d28d9}.sfp-btn-secondary{color:#5b21b6;background:#ede9fe}.sfp-btn-secondary:hover:not(:disabled){background:#ddd6fe}.sfp-btn-sm{border-radius:6px;padding:.28rem .65rem;font-size:.74rem}.sfp-overlay{z-index:2000;background:#1e143c80;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.sfp-modal{background:#fff;border-radius:12px;width:100%;max-width:540px;overflow:hidden;box-shadow:0 20px 60px #6d28d933}.sfp-modal-header{color:#fff;background:linear-gradient(135deg,#7c3aed,#6d28d9);justify-content:space-between;align-items:center;padding:.85rem 1.15rem;font-size:.95rem;font-weight:700;display:flex}.sfp-modal-close{color:#fff;cursor:pointer;background:#ffffff2e;border:none;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:.9rem;display:flex}.sfp-modal-close:hover{background:#ffffff52}.sfp-modal-body{padding:1rem 1.15rem}.sfp-modal-grid{grid-template-columns:1fr 1fr;gap:.45rem;margin-bottom:.75rem;font-size:.81rem;display:grid}.sfp-modal-grid>div{flex-direction:column;gap:.08rem;display:flex}.sfp-ml{color:#374151;text-transform:uppercase;letter-spacing:.04em;font-size:.72rem;font-weight:600}.sfp-modal-sub-title{color:#5b21b6;margin-bottom:.35rem;font-size:.78rem;font-weight:700}.sfp-table{border-collapse:collapse;width:100%;font-size:.79rem}.sfp-table th{color:#5b21b6;text-align:left;background:#f5f3ff;border-bottom:2px solid #ddd6fe;padding:.38rem .6rem;font-weight:700}.sfp-table td{color:#374151;border-bottom:1px solid #f3f4f6;padding:.32rem .6rem}.sfp-modal-footer{border-top:1px solid #ede9fe;justify-content:flex-end;gap:.5rem;padding:.65rem 1.15rem;display:flex}.sfp-toast{color:#fff;z-index:2100;white-space:nowrap;background:#1e1b4b;border-radius:8px;padding:.55rem 1.1rem;font-size:.83rem;position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);box-shadow:0 4px 18px #00000040}@media (width<=600px){.sfp-summary-row{flex-direction:column}.sfp-modal-grid{grid-template-columns:1fr}.sfp-receipt-header{flex-wrap:wrap}}.rd-shell{background:linear-gradient(135deg,#f5f7fa 0%,#c3cfe2 100%);height:100dvh;font-family:Inter,Segoe UI,system-ui,sans-serif;overflow:hidden}.rd-shell .dashboard-header-section{background:linear-gradient(135deg,#1e1b4b 0%,#312e81 50%,#3730a3 100%);border-bottom:1px solid #ffffff14;box-shadow:0 2px 16px #1e1b4b73}.rd-shell .school-branding{flex-direction:column;justify-content:center;align-items:center;gap:.15rem;padding:0;display:inline-flex}.rd-shell .school-branding img{display:block}.rd-shell .school-branding h5{color:#e0e7ff;letter-spacing:.05em;white-space:nowrap;text-transform:uppercase;text-align:center;margin:0;font-size:.508rem;font-weight:500;line-height:1.1}.rd-shell .btn-hamburger span{background:#e0e7ff}.rd-shell .dashboard-footer{background:linear-gradient(135deg,#1e1b4b 0%,#312e81 50%,#3730a3 100%);border-top:1px solid #ffffff14;align-items:flex-start;padding-top:10px;box-shadow:0 -2px 16px #1e1b4b73}.rd-shell .dashboard-footer a,.rd-shell .dashboard-footer p{color:#e0e7ff}.rd-shell .dashboard-footer .footer-logo{filter:brightness(0)invert()opacity(.85)}.rd-shell .side-drawer{background:#1e1b4b}.rd-shell .drawer-header{background:linear-gradient(135deg,#1e1b4b 0%,#312e81 50%,#3730a3 100%);border-bottom:1px solid #ffffff14}.rd-shell .drawer-profile{background:#ffffff0d;border-bottom:1px solid #ffffff14}.rd-shell .drawer-profile-name{color:#e0e7ff}.rd-shell .drawer-profile-meta{color:#a5b4fc}.rd-shell .drawer-profile-id{color:#6366f1}.rd-shell .drawer-section-label{color:#a5b4fc8c;font-size:.486rem}.rd-shell .drawer-item{color:#e0e7ff;font-size:.693rem}.rd-shell .drawer-item:hover{color:#fff;background:#ffffff1a}.rd-shell .drawer-item.active{color:#fff;background:#ffffff2e}.rd-shell .drawer-item.active .drawer-icon{color:#fff}.rd-shell .drawer-active-pill{background:#fff}.rd-shell .drawer-footer{border-top:1px solid #ffffff14}.rd-header{padding:0;padding-top:env(safe-area-inset-top);z-index:100;background:linear-gradient(160deg,#4f46e5 0%,#6d28d9 60%,#7c3aed 100%);min-height:54px;position:fixed;top:0;left:0;right:0;overflow:hidden}.rd-header:before{content:"";pointer-events:none;background:radial-gradient(circle,#ffffff1f 0%,#0000 70%);border-radius:50%;width:500px;height:500px;position:absolute;top:-200px;right:-100px}.rd-header-inner{z-index:1;justify-content:space-between;align-items:center;height:100%;padding:0 1.2rem;display:flex;position:relative}.rd-header-left{align-items:center;gap:.65rem;display:flex}.rd-logo{object-fit:contain;filter:drop-shadow(0 2px 6px #00000040);width:auto;height:32px}.rd-app-name{color:#fff;letter-spacing:-.5px;margin:0;font-size:.907rem;font-weight:450;line-height:1.2}.rd-role-badge{text-transform:uppercase;letter-spacing:.06em;color:#fff;background:#fff3;border:1px solid #ffffff4d;border-radius:999px;padding:2px 9px;font-size:.842rem;font-weight:700}.rd-header-right{align-items:center;gap:.75rem;display:flex}.rd-user-info{text-align:right}.rd-user-name{color:#fff;font-size:.842rem;font-weight:600}.rd-user-role{color:#ffffffb3;font-size:.713rem}.rd-avatar{color:#fff;background:#ffffff40;border:1.5px solid #fff6;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:.972rem;font-weight:700;display:flex}.rd-logout-btn{color:#fff;cursor:pointer;background:#ffffff26;border:1.5px solid #ffffff4d;border-radius:8px;align-items:center;gap:5px;padding:5px 12px;font-family:inherit;font-size:.799rem;font-weight:600;transition:background .18s,border-color .18s;display:flex}.rd-logout-btn:hover{background:#ffffff47;border-color:#ffffff80}.rd-body{height:calc(100dvh - 86px);margin-top:54px;padding:1.25rem 1.5rem 1.5rem;overflow:hidden auto}.rd-page-title{margin-bottom:1.5rem}.rd-page-title h1{color:#0f172a;letter-spacing:-.3px;margin:0 0 4px;font-size:1.566rem;font-weight:800}.rd-page-title p{color:#475569;margin:0;font-size:.95rem}.rd-kpi-row{grid-template-columns:repeat(4,1fr);gap:.85rem;margin-bottom:1.1rem;display:grid}.rd-kpi-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;align-items:center;gap:1rem;padding:1.1rem 1.25rem;transition:box-shadow .2s,transform .2s;display:flex;box-shadow:0 2px 8px #0000000d}.rd-kpi-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000001a}.rd-kpi-icon{border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.rd-kpi-icon svg{display:block}.rd-kpi-info{flex-direction:column;min-width:0;display:flex}.rd-kpi-value{color:#0f172a;font-size:1.674rem;font-weight:800;line-height:1.1}.rd-kpi-label{color:#475569;margin-top:3px;font-size:.842rem;font-weight:600}.rd-kpi-trend{align-items:center;gap:2px;margin-top:4px;font-size:.778rem;font-weight:600;display:flex}.rd-kpi-trend.up{color:#10b981}.rd-kpi-trend.down{color:#ef4444}.rd-kpi-trend.neu{color:#94a3b8}.rd-charts-row{grid-template-columns:1.3fr 1fr;gap:.85rem;margin-bottom:1.1rem;display:grid}.rd-chart-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:1.25rem 1.4rem;box-shadow:0 2px 8px #0000000d}.rd-chart-header{justify-content:space-between;align-items:center;margin-bottom:1.1rem;display:flex}.rd-chart-header h3{color:#0f172a;margin:0;font-size:1.015rem;font-weight:700}.rd-chart-badge{color:#475569;background:#f1f5f9;border-radius:999px;padding:3px 10px;font-size:.778rem;font-weight:600}.rd-bar-chart{width:100%;overflow:visible}.rd-bar-group text{fill:#94a3b8;font-family:inherit;font-size:9.7px}.rd-bar-rect{rx:4;transition:opacity .2s}.rd-bar-rect:hover{opacity:.8}.rd-bar-value{fill:#64748b;font-family:inherit;font-size:9.7px}.rd-donut-wrap{align-items:center;gap:1rem;display:flex}.rd-donut-svg{flex-shrink:0;overflow:visible}.rd-donut-legend{flex-direction:column;gap:.45rem;display:flex}.rd-donut-item{color:#374151;align-items:center;gap:.5rem;font-size:.821rem;display:flex}.rd-donut-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.rd-donut-pct{color:#0f172a;margin-left:auto;padding-left:.75rem;font-weight:700}.rd-line-chart{width:100%;overflow:visible}.rd-line-axis text{fill:#94a3b8;font-family:inherit;font-size:9.7px}.rd-line-grid{stroke:#f1f5f9;stroke-width:1px}.rd-line-path{fill:none;stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round}.rd-line-area{opacity:.12}.rd-line-dot{r:3.5}.rd-table-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;margin-bottom:1rem;overflow:hidden;box-shadow:0 2px 6px #0000000a}.rd-table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.rd-table-header{background:#f8fafc;border-bottom:2px solid #f1f5f9;justify-content:space-between;align-items:center;padding:1rem 1.3rem;display:flex}.rd-table-header h3{color:#0f172a;margin:0;font-size:1.026rem;font-weight:700}.rd-table{border-collapse:collapse;width:100%;font-size:.896rem}.rd-table th{text-align:left;color:#475569;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;background:#f8fafc;border-bottom:2px solid #e8ecf0;padding:.65rem 1.1rem;font-size:.788rem;font-weight:700}.rd-table td{color:#374151;vertical-align:middle;border-bottom:1px solid #f1f5f9;padding:.7rem 1.1rem;line-height:1.45}.rd-table tbody tr:last-child td{border-bottom:none}.rd-table tbody tr:hover td{background:#f8fafc}.rd-table td:first-child{color:#0f172a;font-weight:600}.rd-chip{letter-spacing:.03em;border-radius:999px;align-items:center;padding:2px 9px;font-size:.734rem;font-weight:700;display:inline-flex}.rd-chip-green{color:#15803d;background:#dcfce7}.rd-chip-red{color:#b91c1c;background:#fee2e2}.rd-chip-yellow{color:#854d0e;background:#fef9c3}.rd-chip-blue{color:#0a5568;background:#c5e9f3}.rd-chip-purple{color:#6d28d9;background:#ede9fe}.rd-chip-gray{color:#475569;background:#f1f5f9}.rd-footer{width:100%;min-height:32px;padding:0 1.5rem;padding-bottom:env(safe-area-inset-bottom);z-index:99;background:linear-gradient(160deg,#4f46e5 0%,#6d28d9 60%,#7c3aed 100%);border-top:1px solid #ffffff26;justify-content:center;align-items:center;gap:.6rem;display:flex;position:fixed;bottom:0;left:0;right:0}.rd-footer a{align-items:center;text-decoration:none;display:flex}.rd-footer p{color:#fff;white-space:nowrap;align-items:center;gap:.4rem;margin:0;font-size:.734rem;display:flex}.rd-footer .footer-logo{opacity:.95;width:auto;height:18px;display:inline-block}.role-student .rd-role-badge{color:#4f46e5;background:#ede9fe}.role-student .rd-avatar{background:linear-gradient(135deg,#4f46e5,#7c3aed)}.role-parent .rd-role-badge{color:#0f766e;background:#ccfbf1}.role-parent .rd-avatar{background:linear-gradient(135deg,#0d9488,#0f766e)}.role-teacher .rd-role-badge{color:#0a5568;background:#c5e9f3}.role-teacher .rd-avatar{background:linear-gradient(135deg,#0d7390,#0a5568)}.role-management .rd-role-badge{color:#be123c;background:#ffe4e6}.role-management .rd-avatar{background:linear-gradient(135deg,#e11d48,#be123c)}.role-management .dashboard-header-section{background:linear-gradient(135deg,#1e1b4b 0%,#312e81 50%,#3730a3 100%);border-bottom:1px solid #ffffff14}.role-management .school-branding{flex-direction:column;justify-content:center;align-items:center;gap:.15rem;padding:0;display:inline-flex}.role-management .school-branding h5{color:#e0e7ff;letter-spacing:.04em;white-space:nowrap;text-transform:uppercase;text-align:center;margin:0;font-size:.454rem;font-weight:400;line-height:1.1}.role-management .btn-hamburger span{background:#e0e7ff}.role-management .sp-header-name{color:#e0e7ff}.role-management .dashboard-footer{background:linear-gradient(135deg,#1e1b4b 0%,#312e81 50%,#3730a3 100%);border-top:1px solid #ffffff14}.role-management .dashboard-footer a,.role-management .dashboard-footer p{color:#e0e7ff}.role-management .dashboard-footer .footer-logo{filter:brightness(0)invert()opacity(.85)}.role-management .sp-sidebar{background:#1e1b4b;border-right:1px solid #ffffff12}.role-management .sp-sidebar-profile{background:linear-gradient(135deg,#1e1b4b 0%,#312e81 100%);border-bottom:1px solid #ffffff14}.role-management .sp-sidebar-name{color:#e0e7ff}.role-management .sp-sidebar-role{color:#a5b4fc}.role-management .sp-sidebar-avatar{color:#fff;background:linear-gradient(135deg,#e11d48,#be123c)}.role-management .sp-sidebar-close{color:#a5b4fc}.role-management .sp-nav-group-label{color:#a5b4fc80}.role-management .sp-nav-item{color:#e0e7ff}.role-management .sp-nav-item:hover{color:#fff;background:#ffffff14}.role-management .sp-nav-item .sp-nav-icon{opacity:.75}.role-management .sp-nav-item:hover .sp-nav-icon{opacity:1}.role-management .sp-nav-active{border-left:3px solid #a5b4fc;color:#fff!important;background:#ffffff24!important}.role-management .sp-nav-signout{color:#fca5a5!important}.role-management .sp-nav-signout:hover{background:#dc262626!important}.sp-nav-active-first:first-of-type{color:#fff;background:#ffffff24;border-left:3px solid #a5b4fc}.role-employee .rd-role-badge{color:#b45309;background:#fef3c7}.role-employee .rd-avatar{background:linear-gradient(135deg,#d97706,#b45309)}@media (width<=900px){.rd-kpi-row{grid-template-columns:repeat(2,1fr)}.rd-charts-row{grid-template-columns:1fr}}@media (width<=540px){.rd-kpi-row{grid-template-columns:repeat(2,1fr);gap:.6rem}.rd-body{padding:.9rem .9rem 1rem}.rd-header{padding:0 .9rem}.rd-user-info{display:none}}.sp-layout{height:calc(100dvh - 86px);margin-top:54px;margin-left:0;margin-right:0;padding:0;display:flex;overflow:hidden}.sp-sidebar{scrollbar-width:thin;scrollbar-color:#ffffff1f transparent;background:#0f0e2a;border-right:1px solid #ffffff0d;flex-direction:column;flex-shrink:0;width:235px;min-width:235px;margin:0;padding:0;display:flex;overflow:hidden auto}.sp-sidebar::-webkit-scrollbar{width:3px}.sp-sidebar::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:4px}.sp-sidebar-profile{background:#ffffff08;border-bottom:1px solid #ffffff0f;flex-shrink:0;align-items:center;gap:.7rem;padding:1rem .9rem .85rem;display:flex}.sp-sidebar-avatar{color:#fff;background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:.842rem;font-weight:800;display:flex;box-shadow:0 0 0 2px #6366f173}.sp-sidebar-user-info{flex:1;min-width:0}.sp-sidebar-name{color:#e0e7ff;white-space:nowrap;text-overflow:ellipsis;font-size:1.102rem;font-weight:700;display:block;overflow:hidden}.sp-sidebar-username{color:#a5b4fc;white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-size:.734rem;display:block;overflow:hidden}.sp-sidebar-role{color:#818cf8;margin-top:1px;font-size:.907rem;display:block}.sp-sidebar-close{cursor:pointer;color:#6366f1;background:0 0;border:none;flex-shrink:0;padding:2px;display:none}.sp-nav{flex:1;padding:.6rem .6rem 1.2rem}.sp-nav-group{margin-bottom:.5rem}.sp-nav-group-label{letter-spacing:.08em;color:#a5b4fc8c;text-transform:uppercase;margin:0;padding:.7rem .5rem .25rem;font-size:.682rem;font-weight:800}.sp-nav-item{cursor:pointer;color:#e0e7ff;text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:.65rem;width:100%;margin-bottom:2px;padding:.55rem .7rem;font-family:inherit;font-size:.725rem;font-weight:500;transition:background .15s,color .15s;display:flex}.sp-nav-item:hover{color:#fff;background:#ffffff14}.sp-nav-active{font-weight:700;box-shadow:inset 2px 0 #6366f1;color:#fff!important;background:linear-gradient(90deg,#6366f147,#6366f11a)!important}.sp-nav-icon{opacity:.75;flex-shrink:0;align-items:center;display:flex}.sp-nav-active .sp-nav-icon{opacity:1}.sp-nav-signout{margin-top:.25rem;color:#fca5a5!important}.sp-nav-signout:hover{color:#fca5a5!important;background:#ef44441f!important}.sp-main{background:#f0f2f7;flex:1;min-width:0;padding:1.5rem 1.75rem 2rem;overflow:hidden auto}.sp-section{max-width:1060px}.sp-section-title{border-bottom:1px solid #e2e8f0;align-items:center;gap:.75rem;margin-bottom:1.25rem;padding-bottom:.85rem;display:flex}.sp-section-title-icon{color:#fff;background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex;box-shadow:0 2px 8px #4f46e559}.sp-section-title-text{flex-direction:column;gap:3px;display:flex}.sp-section-title h2{color:#0f172a;letter-spacing:-.01em;margin:0;font-size:1.242rem;font-weight:800}.sp-section-title p{color:#475569;margin:0;font-size:.886rem}.sp-loading{flex-direction:column;justify-content:center;align-items:center;gap:1rem;height:70%;display:flex}@keyframes sp-spin{to{transform:rotate(360deg)}}.sp-loading p{color:#64748b;letter-spacing:.02em;font-size:.886rem;font-weight:500}.sp-profile-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;flex-wrap:wrap;align-items:center;gap:1.2rem;margin-bottom:1rem;padding:1.2rem 1.4rem;display:flex;box-shadow:0 2px 8px #0000000d}.sp-profile-avatar-lg{color:#fff;background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:56px;height:56px;font-size:1.188rem;font-weight:800;display:flex}.sp-profile-details{flex:1;min-width:0}.sp-profile-details h2{color:#0f172a;margin:0 0 .4rem;font-size:1.188rem;font-weight:800}.sp-profile-meta-grid{flex-wrap:wrap;gap:.3rem 1.4rem;display:flex}.sp-profile-meta-grid span{color:#475569;font-size:.821rem}.sp-profile-meta-grid b{color:#0f172a}.sp-profile-kpis{gap:1.2rem;display:flex}.sp-profile-kpi{flex-direction:column;align-items:center;gap:2px;display:flex}.sp-profile-kpi span{font-size:1.242rem;font-weight:800}.spc-hero{background:#fff;border:1px solid #e2e8f0;border-radius:16px;margin-bottom:1.1rem;overflow:hidden;box-shadow:0 2px 12px #0f0e2a0f}.spc-hero-banner{background:0 0;border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:center;padding:.7rem 1.4rem;display:flex;position:relative;overflow:hidden}.spc-hero-banner:before{content:"";pointer-events:none;background:#4f46e50a;border-radius:50%;width:160px;height:160px;position:absolute;top:-80px;right:-40px}.spc-hero-banner:after{content:"";pointer-events:none;background:#6366f108;border-radius:50%;width:120px;height:120px;position:absolute;bottom:-60px;right:100px}.spc-hero-left{z-index:1;flex:1;align-items:center;gap:.9rem;min-width:0;display:flex;position:relative}.spc-hero-avatar-wrap{flex-shrink:0;position:relative}.spc-hero-avatar{color:#fff;letter-spacing:-.02em;background:linear-gradient(135deg,#4f46e5,#7c3aed);border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;font-size:1.026rem;font-weight:900;display:flex;box-shadow:0 2px 8px #4f46e54d}.spc-hero-identity{flex-direction:column;gap:.25rem;min-width:0;display:flex}.spc-hero-label-row{align-items:center;gap:.4rem;display:flex}.spc-hero-portal-label{letter-spacing:.08em;color:#64748b;text-transform:uppercase;font-size:.691rem;font-weight:700}.spc-hero-year-badge{color:#16a34a;letter-spacing:.04em;background:#f0fdf4;border:1px solid #dcfce7;border-radius:999px;align-items:center;padding:.15rem .5rem;font-size:.691rem;font-weight:700;display:inline-flex}.spc-hero-name{color:#0f172a;letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:1.134rem;font-weight:800;line-height:1.1;overflow:hidden}.spc-hero-tags{flex-wrap:wrap;gap:.25rem;margin-top:.15rem;display:flex}.spc-tag{letter-spacing:.04em;border:1px solid;border-radius:999px;align-items:center;padding:.15rem .45rem;font-size:.616rem;font-weight:700;display:inline-flex}.spc-tag-white{color:#0f172a;background:#f8fafc;border-color:#e2e8f0}.spc-tag-indigo{color:#4338ca;background:#f0f4ff;border-color:#e0e7ff}.spc-tag-teal{color:#16a34a;background:#f0fdf4;border-color:#dcfce7}.spc-hero-banner-right{z-index:1;flex-direction:column;flex-shrink:0;gap:.4rem;display:flex;position:relative}.spc-hero-badge-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;align-items:center;gap:.5rem;padding:.4rem .7rem;transition:all .2s;display:flex}.spc-hero-badge-card:hover{background:#f0f4ff;border-color:#e0e7ff;transform:translateY(-1px)}.spc-hero-badge-icon{color:#4f46e5;background:linear-gradient(135deg,#e0e7ff,#ede9fe);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.spc-hero-badge-content{flex-direction:column;gap:0;display:flex}.spc-hero-badge-lbl{color:#64748b;text-transform:uppercase;letter-spacing:.06em;font-size:.67rem;font-weight:700}.spc-hero-badge-val{color:#0f172a;letter-spacing:.02em;font-size:.778rem;font-weight:800}.spc-profile-body{border-bottom:1px solid #f1f5f9;gap:0;display:flex}.spc-profile-col{flex-direction:column;flex:1;min-width:0;padding:.3rem 0 .5rem;display:flex}.spc-profile-divider{background:#f1f5f9;flex-shrink:0;width:1px;margin:.5rem 0}.spc-col-heading{color:#64748b;text-transform:uppercase;letter-spacing:.07em;align-items:center;gap:.4rem;padding:.6rem 1.1rem .4rem;font-size:.724rem;font-weight:800;display:flex}.spc-prow{align-items:flex-start;gap:.65rem;padding:.55rem 1.1rem;transition:background .14s;display:flex}.spc-prow:hover{background:#fafbff}.spc-prow-icon{border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;margin-top:1px;display:flex}.spc-prow-icon--blue{color:#0d7390;background:#c5e9f3}.spc-prow-icon--violet{color:#7c3aed;background:#ede9fe}.spc-prow-icon--teal{color:#0d9488;background:#ccfbf1}.spc-prow-icon--orange{color:#ea580c;background:#ffedd5}.spc-prow-icon--indigo{color:#4338ca;background:#e0e7ff}.spc-prow-icon--pink{color:#db2777;background:#fce7f3}.spc-prow-icon--rose{color:#e11d48;background:#ffe4e6}.spc-prow-icon--green{color:#16a34a;background:#dcfce7}.spc-prow-icon--cyan{color:#0891b2;background:#cffafe}.spc-prow-icon--amber{color:#d97706;background:#fef3c7}.spc-prow-content{flex-direction:column;gap:2px;min-width:0;display:flex}.spc-prow-label{color:#64748b;text-transform:uppercase;letter-spacing:.06em;font-size:.842rem;font-weight:700}.spc-prow-value{color:#0f172a;white-space:nowrap;text-overflow:ellipsis;font-size:.907rem;font-weight:600;line-height:1.4;overflow:hidden}.spc-kpi-strip{background:#fafbff;align-items:stretch;display:flex}.spc-kpi{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;padding:.85rem .5rem;transition:background .15s;display:flex}.spc-kpi:hover{background:#f1f5f9}.spc-kpi-icon{border-radius:8px;justify-content:center;align-items:center;width:28px;height:28px;margin-bottom:2px;display:flex}.spc-kpi-val{font-size:1.188rem;font-weight:800;line-height:1}.spc-kpi-lbl{color:#64748b;text-transform:uppercase;letter-spacing:.06em;font-size:.691rem;font-weight:700}.spc-kpi-divider{background:#e2e8f0;flex-shrink:0;align-self:stretch;width:1px;margin:.45rem 0}.spc-quick-row{grid-template-columns:1fr 1fr;gap:1.25rem;display:grid}.spc-card{background:#fff;border:1px solid #e8ecf0;border-radius:16px;transition:box-shadow .2s;overflow:hidden;box-shadow:0 2px 12px #0000000d}.spc-card:hover{box-shadow:0 6px 24px #00000017}.spc-card-hd{background:#f8fafc;border-bottom:1px solid #e8ecf0;align-items:center;gap:.65rem;padding:1rem 1.2rem .9rem;display:flex}.spc-card-icon{border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;display:flex}.spc-card-title{color:#0f172a;flex:1;margin:0;font-size:.972rem;font-weight:700}.spc-badge{color:#7c3aed;background:#ede9fe;border-radius:999px;padding:.2rem .6rem;font-size:.734rem;font-weight:700}.spc-badge-orange{color:#d97706;background:#fef3c7}.spc-empty{color:#cbd5e1;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;padding:2.5rem 1rem;font-size:.842rem;display:flex}.spc-ann-item{border-bottom:1px solid #f1f5f9;padding:.85rem 1.2rem;transition:background .15s}.spc-ann-item:last-child{border-bottom:none}.spc-ann-item:hover{background:#fafbff}.spc-ann-row{justify-content:space-between;align-items:flex-start;gap:.5rem;margin-bottom:.35rem;display:flex}.spc-ann-title{color:#0f172a;flex:1;min-width:0;font-size:1.102rem;font-weight:700;line-height:1.4}.spc-ann-body{color:#475569;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 .35rem;font-size:.842rem;line-height:1.6;display:-webkit-box;overflow:hidden}.spc-ann-date{color:#64748b;font-size:.907rem;font-weight:500}.spc-assign-item{border-bottom:1px solid #f8fafc;justify-content:space-between;align-items:center;gap:.75rem;padding:.7rem 1.1rem;transition:background .15s;display:flex}.spc-assign-item:last-child{border-bottom:none}.spc-assign-item:hover{background:#fafbff}.spc-assign-left{flex-direction:column;gap:2px;min-width:0;display:flex}.spc-assign-title{color:#0f172a;white-space:nowrap;text-overflow:ellipsis;font-size:.907rem;font-weight:600;overflow:hidden}.spc-assign-sub{color:#64748b;font-size:.788rem}.spc-assign-right{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:3px;display:flex}.spc-assign-due{color:#64748b;font-size:.907rem;font-weight:500}@media (width<=900px){.spc-hero-banner{border-bottom:1px solid #f1f5f9;padding:.6rem 1.2rem}.spc-hero-left{gap:.75rem}.spc-hero-banner-right{flex-direction:row;gap:.4rem}.spc-hero-badge-card{padding:.35rem .6rem}.spc-profile-body{flex-direction:column}.spc-profile-divider{width:auto;height:1px;margin:0 1rem}.spc-quick-row{grid-template-columns:1fr}}@media (width<=540px){.spc-hero-banner{padding:.55rem .9rem}.spc-hero-left{gap:.7rem}.spc-hero-avatar{width:40px;height:40px;font-size:1.102rem}.spc-hero-name{font-size:1.102rem}.spc-hero-portal-label{font-size:.562rem}.spc-hero-year-badge{padding:.1rem .3rem;font-size:.562rem}.spc-hero-tags{gap:.2rem}.spc-tag{padding:.12rem .35rem;font-size:.583rem}.spc-hero-banner-right{display:none}.spc-kpi-val{font-size:1.296rem}.spc-prow{padding:.5rem 1rem}}.sp-profile-kpi label{color:#94a3b8;font-size:.734rem;font-weight:500}.sp-card{background:#fff;border:1px solid #e8ecf0;border-radius:16px;margin-bottom:1rem;transition:box-shadow .2s;overflow:hidden;box-shadow:0 2px 12px #0000000d}.sp-card:hover{box-shadow:0 6px 24px #00000017}.sp-card-header{background:#f8fafc;border-bottom:1px solid #e8ecf0;align-items:center;gap:.65rem;padding:.95rem 1.3rem;display:flex}.sp-card-header h3{color:#0f172a;margin:0;font-size:.994rem;font-weight:700}.sp-card-header svg{color:#4f46e5;flex-shrink:0}.sp-ann-list{padding:.5rem 0}.sp-ann-item{border-bottom:1px solid #f1f5f9;padding:.75rem 1.2rem}.sp-ann-item:last-child{border-bottom:none}.sp-ann-row{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:4px;display:flex}.sp-ann-title{color:#0f172a;font-size:.907rem;font-weight:600}.sp-ann-body{color:#475569;margin:0 0 4px;font-size:.853rem;line-height:1.5}.sp-ann-date{color:#64748b;font-size:.767rem}.sp-assign-item{border-bottom:1px solid #f8fafc;justify-content:space-between;align-items:center;padding:.6rem 1.1rem;display:flex}.sp-assign-item:last-child{border-bottom:none}.sp-assign-left{flex-direction:column;gap:2px;display:flex}.sp-assign-title{color:#0f172a;font-size:.853rem;font-weight:600}.sp-assign-sub{color:#94a3b8;font-size:.907rem}.sp-assign-right{flex-direction:column;align-items:flex-end;gap:3px;display:flex}.sp-assign-due{color:#94a3b8;font-size:.734rem}.sp-hw-list{padding:.4rem 0}.sp-hw-item{border-bottom:1px solid #f8fafc;justify-content:space-between;align-items:center;gap:.5rem;padding:.65rem 1.1rem;display:flex}.sp-hw-item:last-child{border-bottom:none}.sp-hw-left{flex-direction:column;gap:2px;display:flex}.sp-hw-title{color:#0f172a;font-size:.907rem;font-weight:600}.sp-hw-subject{color:#64748b;font-size:.799rem}.sp-hw-right{flex-direction:column;align-items:flex-end;gap:3px;display:flex}.sp-hw-due{color:#64748b;font-size:.778rem}.sp-att-summary{grid-template-columns:repeat(4,1fr);gap:.65rem;padding:1rem 1.1rem .75rem;display:grid}.sp-att-tile{border-radius:10px;flex-direction:column;gap:3px;padding:.8rem .9rem;display:flex}.sp-att-tile-val{font-size:1.62rem;font-weight:800;line-height:1}.sp-att-tile-lbl{color:inherit;opacity:.8;font-size:.821rem;font-weight:600}.sp-att-bar-wrap{padding:0 1.1rem 1rem}.sp-att-bar-track{background:#f1f5f9;border-radius:999px;height:8px;margin-bottom:5px;overflow:hidden}.sp-att-bar-fill{border-radius:999px;height:100%;transition:width .4s}.sp-att-bar-pct{font-size:.821rem;font-weight:700}.sp-alert{border-radius:8px;align-items:center;gap:.5rem;margin:0 1.1rem 1rem;padding:.7rem 1rem;font-size:.842rem;display:flex}.sp-alert-warn{color:#854d0e;background:#fef9c3}.sp-att-mark-card{background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 100%);border-radius:14px;margin-bottom:18px;padding:0;overflow:hidden;box-shadow:0 4px 20px #4f46e540}.sp-att-mark-header{border-bottom:1px solid #ffffff26;align-items:center;gap:12px;padding:16px 20px 12px;display:flex}.sp-att-mark-icon{color:#fff;background:#fff3;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;display:flex}.sp-att-mark-title{color:#fff;margin:0 0 2px;font-size:.972rem;font-weight:700}.sp-att-mark-sub{color:#ffffffbf;margin:0;font-size:.788rem}.sp-att-mark-body{background:#fff;padding:16px 20px}.sp-att-mark-status-row{gap:8px;margin-bottom:14px;display:flex}.sp-att-status-btn{color:#64748b;cursor:pointer;background:#f8fafc;border:2px solid #e2e8f0;border-radius:9px;flex:1;justify-content:center;align-items:center;gap:6px;padding:9px 10px;font-size:.778rem;font-weight:600;transition:all .15s;display:flex}.sp-att-status-btn:hover{border-color:#94a3b8}.sp-att-status-active{font-weight:700}.sp-att-status-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.sp-att-mark-row{grid-template-columns:auto 1fr;align-items:end;gap:10px;margin-bottom:14px;display:grid}.sp-att-mark-field{flex-direction:column;gap:4px;display:flex}.sp-att-mark-field label{color:#64748b;text-transform:uppercase;letter-spacing:.4px;font-size:.778rem;font-weight:600}.sp-att-msg{border-radius:7px;margin-bottom:12px;padding:9px 12px;font-size:.778rem;font-weight:600}.sp-att-msg-ok{color:#15803d;background:#dcfce7}.sp-att-msg-err{color:#b91c1c;background:#fee2e2}.sp-att-mark-submit{color:#fff;cursor:pointer;letter-spacing:.02em;border:none;border-radius:9px;width:100%;padding:11px;font-family:inherit;font-size:1.102rem;font-weight:700;transition:opacity .15s,transform .15s}.sp-att-mark-submit:hover:not(:disabled){opacity:.88;transform:translateY(-1px)}.sp-att-mark-submit:disabled{opacity:.5;cursor:not-allowed}.sp-att-today-done{background:#fff;border:1px solid #e2e8f0;border-radius:12px;align-items:center;gap:12px;margin-bottom:16px;padding:14px 18px;display:flex;box-shadow:0 1px 4px #0000000d}.sp-att-today-icon{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.sp-att-today-label{color:#94a3b8;text-transform:uppercase;letter-spacing:.4px;font-size:.778rem;font-weight:600;display:block}.sp-att-today-status{font-size:1.026rem;font-weight:800;display:block}.sp-absent-alert{background:#fff1f2;border:2px solid #fca5a5;border-radius:12px;align-items:flex-start;gap:14px;margin-bottom:16px;padding:16px 18px;animation:2s ease-in-out 3 sp-alert-pulse;display:flex}@keyframes sp-alert-pulse{0%,to{box-shadow:0 0 #ef444400}50%{box-shadow:0 0 0 6px #ef44441f}}.sp-absent-alert-icon{background:#fee2e2;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;display:flex}.sp-absent-alert-body{flex-direction:column;gap:4px;display:flex}.sp-absent-alert-title{color:#991b1b;font-size:.994rem;font-weight:700}.sp-absent-alert-title strong{color:#b91c1c}.sp-absent-alert-sub{color:#b91c1c;font-size:.972rem}.sp-absent-count-badge{color:#b91c1c;background:#fee2e2;border-radius:10px;margin-left:auto;padding:2px 8px;font-size:.778rem;font-weight:800}.sp-absent-list{flex-direction:column;gap:6px;padding:0 1.1rem 1rem;display:flex}.sp-absent-list-row{background:#fff5f5;border:1px solid #fecaca;border-radius:8px;align-items:center;gap:10px;padding:8px 12px;display:flex}.sp-absent-list-date{flex-direction:column;min-width:42px;display:flex}.sp-absent-day{color:#1e293b;font-size:.886rem;font-weight:800}.sp-absent-weekday{color:#94a3b8;font-size:.734rem}.sp-absent-list-pill{color:#b91c1c;background:#fee2e2;border:1.5px solid #fca5a5;border-radius:14px;align-items:center;gap:4px;padding:3px 10px;font-size:.788rem;font-weight:700;display:inline-flex}.sp-absent-list-remark{color:#64748b;margin-left:auto;font-size:.788rem}.sp-att-no-record{text-align:center;color:#94a3b8;background:#f8fafc;border:1.5px dashed #cbd5e1;border-radius:12px;flex-direction:column;align-items:center;gap:10px;margin-bottom:16px;padding:36px 24px;display:flex}.sp-att-no-record p{color:#64748b;margin:0;font-size:.886rem;line-height:1.6}.sp-att-no-record small{color:#94a3b8}.drawer-item-active{font-weight:700;color:#4f46e5!important;background:#6366f11a!important}.role-teacher .sp-sidebar{border-right-color:#ede9fe}.role-teacher .sp-sidebar-avatar{background:linear-gradient(135deg,#4f46e5,#7c3aed)}.sp-teacher-primary-badge{letter-spacing:.04em;text-transform:uppercase;color:#fff;background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:10px;flex-shrink:0;margin-left:auto;padding:2px 7px;font-size:.626rem;font-weight:800;line-height:1.4}.sp-sidebar-bottom{border-top:1px solid #ffffff0f;flex-shrink:0;margin-top:auto;padding:.5rem .6rem 1rem}.sp-att-monthly-card .sp-att-month-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;padding:14px 1.1rem 1rem;display:grid}.sp-att-month-tile{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;flex-direction:column;gap:8px;padding:12px;display:flex}.sp-att-month-header{justify-content:space-between;align-items:center;display:flex}.sp-att-month-name{color:#1e293b;font-size:.94rem;font-weight:700}.sp-att-month-pct{font-size:.896rem;font-weight:700}.sp-att-month-bar-track{background:#e2e8f0;border-radius:99px;height:5px;overflow:hidden}.sp-att-month-bar-fill{border-radius:99px;height:100%;transition:width .4s}.sp-att-month-stats{flex-wrap:wrap;gap:6px;font-size:.734rem;display:flex}.sp-att-ms-p{color:#15803d;font-weight:600}.sp-att-ms-a{color:#b91c1c;font-weight:600}.sp-att-ms-l{color:#854d0e;font-weight:600}.sp-att-cal-grid{flex-wrap:wrap;gap:8px;padding:12px 1.1rem .75rem;display:flex}.sp-att-cal-dot{cursor:default;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;width:44px;height:44px;transition:transform .15s;display:flex}.sp-att-cal-dot:hover{transform:scale(1.1)}.sp-att-cal-day{font-size:.778rem;font-weight:700;line-height:1}.sp-att-cal-mon{opacity:.75;font-size:.778rem;font-weight:500}.sp-att-cal-legend{gap:14px;padding:4px 1.1rem 12px;font-size:.788rem;font-weight:500;display:flex}.sp-admission-grid{grid-template-columns:1fr 1fr;gap:0;padding:.3rem 0;display:grid}.sp-admission-row{border-bottom:1px solid #f8fafc;flex-direction:column;gap:2px;padding:.6rem 1.1rem;display:flex}.sp-admission-row:nth-child(odd){border-right:1px solid #f8fafc}.sp-admission-label{color:#94a3b8;text-transform:uppercase;letter-spacing:.04em;font-size:.734rem;font-weight:600}.sp-admission-value{color:#0f172a;font-size:.886rem;font-weight:600}.sp-fee-banner{border-bottom:1px solid #f1f5f9;padding:.75rem 1.1rem;font-size:.886rem;font-weight:600}.sp-fee-paid{color:#15803d;background:#dcfce7}.sp-fee-pending{color:#854d0e;background:#fef9c3}.sp-fee-overdue{color:#b91c1c;background:#fee2e2}.sp-fee-rows{padding:.5rem 0}.sp-fee-row{color:#374151;border-bottom:1px solid #f8fafc;justify-content:space-between;padding:.55rem 1.1rem;font-size:.778rem;display:flex}.sp-fee-row:last-child{border-bottom:none}.sp-pay-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#4f46e5,#7c3aed);border:none;border-radius:8px;align-items:center;gap:.4rem;margin:.5rem 1.1rem 1rem;padding:.55rem 1.2rem;font-family:inherit;font-size:.778rem;font-weight:700;transition:opacity .2s;display:inline-flex}.sp-pay-btn:hover{opacity:.88}.fee-error-bar{color:#be123c;background:#fff1f2;border:1px solid #fecaca;border-left:4px solid #e11d48;border-radius:8px;align-items:center;gap:.6rem;margin-bottom:1rem;padding:.8rem 1rem;font-size:.886rem;font-weight:600;display:flex}.fee-page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1.25rem;display:flex}.fee-page-title-block{align-items:center;gap:.75rem;display:flex}.fee-page-icon-wrap{color:#fff;background:linear-gradient(135deg,#1e3a8a,#0a5568);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex;box-shadow:0 2px 8px #1d4ed84d}.fee-page-title{color:#0f172a;letter-spacing:-.01em;margin:0;font-size:1.188rem;font-weight:800}.fee-page-sub{color:#64748b;margin:.15rem 0 0;font-size:.821rem}.fee-page-sub strong{color:#1e3a8a}.fee-pay-cta{color:#fff;cursor:pointer;letter-spacing:.02em;background:#1e3a8a;border:none;border-radius:8px;align-items:center;gap:.45rem;padding:.55rem 1.25rem;font-family:inherit;font-size:.778rem;font-weight:700;transition:background .18s,transform .15s,box-shadow .15s;display:inline-flex;box-shadow:0 2px 8px #1e3a8a59}.fee-pay-cta:hover{background:#0a5568;transform:translateY(-1px);box-shadow:0 4px 14px #1d4ed859}.fee-pay-cta:active{transform:translateY(0)}.fee-pay-cta-lg{border-radius:9px;padding:.65rem 1.8rem;font-size:1.102rem}.fee-metrics-row{grid-template-columns:repeat(4,1fr);gap:.85rem;margin-bottom:1rem;display:grid}@media (width<=900px){.fee-metrics-row{grid-template-columns:repeat(2,1fr)}}@media (width<=480px){.fee-metrics-row{grid-template-columns:1fr 1fr}}.fee-metric{background:#fff;border:1px solid #e2e8f0;border-radius:12px;align-items:center;gap:.85rem;padding:.9rem 1rem;transition:box-shadow .2s;display:flex;box-shadow:0 1px 3px #0000000f}.fee-metric:hover{box-shadow:0 4px 12px #00000014}.fee-metric-navy{border-top:3px solid #1e3a8a}.fee-metric-teal{border-top:3px solid #0d9488}.fee-metric-rose{border-top:3px solid #e11d48}.fee-metric-green{border-top:3px solid #16a34a}.fee-metric-violet{border-top:3px solid #7c3aed}.fee-metric-icon-wrap{border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.fee-mic-navy{color:#0a5568;background:#e8f6fb}.fee-mic-teal{color:#0d9488;background:#f0fdfa}.fee-mic-rose{color:#e11d48;background:#fff1f2}.fee-mic-green{color:#16a34a;background:#f0fdf4}.fee-mic-violet{color:#7c3aed;background:#faf5ff}.fee-metric-body{flex-direction:column;gap:2px;min-width:0;display:flex}.fee-metric-val{color:#0f172a;font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;font-size:1.102rem;font-weight:800;line-height:1.25;overflow:hidden}.fee-metric-denom{color:#64748b;font-size:.842rem;font-weight:600}.fee-metric-lbl{color:#475569;text-transform:uppercase;letter-spacing:.04em;font-size:.778rem;font-weight:600}.fee-progress-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;margin-bottom:1.1rem;padding:.85rem 1.1rem;box-shadow:0 1px 3px #0000000d}.fee-progress-meta{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.fee-progress-label{color:#475569;text-transform:uppercase;letter-spacing:.05em;font-size:.799rem;font-weight:700}.fee-progress-pct{font-variant-numeric:tabular-nums;font-size:1.102rem;font-weight:800}.fee-progress-track{background:#f1f5f9;border-radius:99px;height:8px;overflow:hidden}.fee-progress-fill{border-radius:99px;height:100%;transition:width .7s cubic-bezier(.4,0,.2,1)}.fee-progress-legend{color:#64748b;gap:1.25rem;margin-top:.55rem;font-size:.907rem;font-weight:600;display:flex}.fee-legend-dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:4px;display:inline-block}.fee-body-grid{grid-template-columns:1fr;align-items:start;gap:1.1rem;display:grid}.fee-student-strip{background:linear-gradient(135deg,#1e3a8a,#0a5568);border-radius:10px;align-items:center;gap:.75rem;margin-bottom:.85rem;padding:.75rem 1rem;display:flex}.fee-strip-avatar{color:#fff;background:#ffffff2e;border:2px solid #ffffff61;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:1.026rem;font-weight:800;display:flex}.fee-strip-info{flex:1;min-width:0}.fee-strip-name{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:.972rem;font-weight:700;display:block;overflow:hidden}.fee-strip-meta{color:#ffffffd1;margin-top:2px;font-size:.799rem;display:block}.fee-strip-badge{color:#ffffffe6;white-space:nowrap;background:#ffffff29;border:1px solid #ffffff47;border-radius:6px;flex-shrink:0;padding:3px 8px;font-size:.734rem;font-weight:700}.fee-section-label{color:#334155;text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:.5rem;margin-bottom:.7rem;font-size:.821rem;font-weight:700;display:flex}.fee-empty-state{color:#94a3b8;text-align:center;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px;flex-direction:column;align-items:center;gap:.55rem;padding:2.5rem 1rem;font-size:.886rem;display:flex}.fee-empty-state p{margin:0}.fee-empty-state strong{color:#475569}.fee-instalments{flex-direction:column;gap:.55rem;display:flex}.fee-inst-card{background:#fff;border:1px solid #e2e8f0;border-radius:11px;transition:box-shadow .2s;overflow:hidden;box-shadow:0 1px 3px #0000000d}.fee-inst-card:hover{box-shadow:0 3px 12px #00000017}.fee-inst-paid{border-color:#d1fae5}.fee-inst-due{border-color:#fde8ea}.fee-inst-head{cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:.6rem;width:100%;padding:.8rem 1rem;font-family:inherit;display:flex}.fee-inst-head:hover{background:#fafafa}.fee-inst-left{flex:1;align-items:center;gap:.6rem;min-width:0;display:flex}.fee-inst-stripe{border-radius:3px;flex-shrink:0;width:4px;height:34px}.fee-inst-meta{min-width:0}.fee-inst-name{color:#0f172a;font-size:.972rem;font-weight:700;display:block}.fee-inst-date{color:#475569;margin-top:3px;font-size:.799rem;display:block}.fee-inst-date-due{color:#e11d48;font-weight:600}.fee-inst-right{flex-shrink:0;align-items:center;gap:.6rem;display:flex}.fee-inst-amount{color:#0f172a;font-variant-numeric:tabular-nums;font-family:Courier New,Courier,monospace;font-size:.972rem;font-weight:800}.fee-status-chip{letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;border-radius:99px;align-items:center;gap:.3rem;padding:.22rem .6rem;font-size:.713rem;font-weight:800;display:inline-flex}.fee-status-paid{color:#065f46;background:#d1fae5}.fee-status-due{color:#991b1b;background:#fee2e2}.fee-inst-body{padding:0 1rem .9rem}.fee-breakdown-table{border-collapse:collapse;width:100%;font-size:.832rem}.fee-breakdown-table thead th{color:#475569;text-align:left;text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid #e8ecf0;padding:.5rem .75rem;font-size:.778rem;font-weight:700}.fee-col-amt{text-align:right!important}.fee-breakdown-table tbody td{color:#334155;border-bottom:1px solid #f1f5f9;padding:.48rem .75rem;font-size:.886rem}.fee-breakdown-table tbody tr:last-child td{border-bottom:none}.fee-td-amt{color:#0f172a;font-variant-numeric:tabular-nums;font-family:Courier New,Courier,monospace;font-weight:700}.fee-breakdown-table tfoot .fee-tfoot-row td{color:#0f172a;border-top:2px solid #e2e8f0;padding:.5rem .6rem;font-size:.778rem;font-weight:800}.fee-tfoot-amt{font-variant-numeric:tabular-nums;font-family:Courier New,Courier,monospace}.fee-cta-bar{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;justify-content:space-between;align-items:center;margin-top:.75rem;padding:.9rem 1.1rem;display:flex}.fee-cta-info{flex-direction:column;gap:1px;display:flex}.fee-cta-info-label{color:#64748b;text-transform:uppercase;letter-spacing:.05em;font-size:.734rem;font-weight:700}.fee-cta-info-val{color:#e11d48;font-variant-numeric:tabular-nums;font-family:Courier New,Courier,monospace;font-size:1.134rem;font-weight:900}.fee-right-col{position:sticky;top:.75rem}.fee-profile-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;overflow:hidden;box-shadow:0 2px 12px #00000012}.fee-profile-head{background:linear-gradient(135deg,#0f2460,#1e3a8a);align-items:center;gap:.8rem;padding:1.1rem 1rem;display:flex}.fee-profile-avatar{color:#fff;background:#ffffff2e;border:2px solid #ffffff59;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:46px;height:46px;font-size:1.242rem;font-weight:800;display:flex}.fee-profile-identity{flex:1;min-width:0}.fee-profile-name{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:.95rem;font-weight:800;display:block;overflow:hidden}.fee-profile-ay{color:#ffffffa6;margin-top:2px;font-size:.745rem;display:block}.fee-profile-cleared-badge{color:#fff;letter-spacing:.05em;background:#16a34a;border-radius:99px;flex-shrink:0;align-items:center;gap:.25rem;padding:.22rem .65rem;font-size:.842rem;font-weight:800;display:inline-flex}.fee-profile-divider{background:#f1f5f9;height:1px}.fee-profile-fields{margin:0;padding:.25rem 0;list-style:none}.fee-profile-field{border-bottom:1px solid #f8fafc;align-items:flex-start;gap:.5rem;padding:.52rem 1rem;display:flex}.fee-profile-field:last-child{border-bottom:none}.fee-profile-field-icon{color:#64748b;flex-shrink:0;margin-top:2px}.fee-profile-field-label{color:#94a3b8;flex-shrink:0;width:78px;font-size:.745rem;font-weight:600;line-height:1.5}.fee-profile-field-val{color:#1e293b;word-break:break-word;font-size:.821rem;font-weight:600;line-height:1.5}.fee-profile-summary{background:#f8fafc;border-top:1px solid #f1f5f9;align-items:stretch;display:flex}.fee-ps-item{flex-direction:column;flex:1;align-items:center;gap:2px;padding:.65rem .5rem;display:flex}.fee-ps-divider{background:#e2e8f0;align-self:stretch;width:1px}.fee-ps-lbl{color:#94a3b8;text-transform:uppercase;letter-spacing:.05em;font-size:.67rem;font-weight:700}.fee-ps-val{color:#0f172a;font-variant-numeric:tabular-nums;font-family:Courier New,Courier,monospace;font-size:.842rem;font-weight:800}.fee-ps-paid{color:#065f46}.fee-ps-due{color:#991b1b}.sp-subjects-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.7rem;padding:1rem 1.1rem;display:grid}.sp-subject-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;flex-direction:column;gap:3px;padding:.85rem .9rem;display:flex}.sp-subject-icon{color:#4f46e5;margin-bottom:4px}.sp-subject-name{color:#0f172a;font-size:.778rem;font-weight:700}.sp-subject-code{color:#6366f1;font-size:.734rem;font-weight:600}.sp-subject-teacher{color:#64748b;font-size:.907rem}.sp-leave-form{flex-direction:column;gap:.9rem;padding:1.25rem 1.4rem 1.5rem;display:flex}.sp-form-row{flex-direction:column;gap:5px;display:flex}.sp-form-row label{color:#374151;letter-spacing:.04em;text-transform:uppercase;font-size:.778rem;font-weight:700}.sp-input{color:#0f172a;box-sizing:border-box;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:9px;outline:none;width:100%;padding:.52rem .85rem;font-family:inherit;font-size:.886rem;transition:border-color .18s,box-shadow .18s}.sp-input:focus{background:#fff;border-color:#6366f1;box-shadow:0 0 0 3px #6366f11f}.sp-textarea{color:#0f172a;resize:vertical;box-sizing:border-box;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:9px;outline:none;width:100%;min-height:90px;padding:.52rem .85rem;font-family:inherit;font-size:.886rem;transition:border-color .18s,box-shadow .18s}.sp-textarea:focus{background:#fff;border-color:#6366f1;box-shadow:0 0 0 3px #6366f11f}.sp-submit-btn{color:#fff;cursor:pointer;letter-spacing:.03em;background:linear-gradient(135deg,#4f46e5,#7c3aed);border:none;border-radius:9px;align-self:flex-start;padding:.6rem 1.4rem;font-family:inherit;font-size:.886rem;font-weight:700;transition:opacity .2s,transform .15s,box-shadow .2s;box-shadow:0 3px 10px #4f46e54d}.sp-submit-btn:hover{opacity:.92;transform:translateY(-1px);box-shadow:0 5px 16px #4f46e561}.sp-submit-btn:active{opacity:1;transform:translateY(0)}.sp-placeholder{text-align:center;background:#fff;border:1px solid #e2e8f0;border-radius:16px;flex-direction:column;align-items:center;gap:.75rem;padding:3.5rem 2rem;display:flex;box-shadow:0 2px 10px #0000000a}.sp-placeholder-icon{color:#6366f1;background:linear-gradient(135deg,#ede9fe,#c5e9f3);border-radius:18px;justify-content:center;align-items:center;width:64px;height:64px;margin-bottom:.25rem;display:flex}.sp-placeholder h3{color:#1e293b;margin:0;font-size:1.134rem;font-weight:700}.sp-placeholder p{color:#64748b;max-width:340px;margin:0;font-size:.896rem;line-height:1.65}.role-student .drawer-overlay{z-index:299}.btn-hamburger{display:none!important}.sp-sidebar-close{display:none}.fee-layout-select{display:inline-flex}.sp-header-right{z-index:200;flex-shrink:0;align-items:center;gap:.35rem;min-width:0;display:flex;position:relative;overflow:visible}.notif-bell-btn{cursor:pointer;color:#fff;background:#ffffff26;border:1.5px solid #ffffff59;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;transition:background .2s,border-color .2s;display:flex;position:relative}.notif-bell-btn:hover{background:#ffffff47;border-color:#ffffff8c}.notif-bell-badge{color:#fff;background:#ef4444;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 3px;font-size:.626rem;font-weight:800;line-height:1;animation:1.5s infinite notifPulse;display:flex;position:absolute;top:-4px;right:-4px}@keyframes notifPulse{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}.sp-header-name{color:#e0e7ff;white-space:nowrap;text-overflow:ellipsis;max-width:160px;font-size:.842rem;font-weight:700;overflow:hidden}.sp-header-username{color:#a5b4fc;white-space:nowrap;text-overflow:ellipsis;background:#ffffff1a;border:1px solid #fff3;border-radius:999px;max-width:150px;padding:.18rem .6rem;font-size:.778rem;font-weight:600;overflow:hidden}.sp-header-signout{color:#fff;cursor:pointer;white-space:nowrap;background:#ffffff26;border:1.5px solid #ffffff4d;border-radius:8px;align-items:center;gap:.35rem;padding:5px 12px;font-family:inherit;font-size:.799rem;font-weight:600;transition:background .18s,border-color .18s;display:flex}.sp-header-signout:hover{background:#ffffff47;border-color:#ffffff80}@media (width<=480px){.sp-header-name,.sp-header-username,.sp-header-signout span{display:none}.sp-header-signout{padding:5px 8px}.notif-bell-btn{width:32px;height:32px}.notif-bell-btn svg{width:16px;height:16px}.notif-bell-badge{min-width:12px;height:12px;font-size:.486rem;top:-2px;right:-2px}.btn-hamburger{width:32px;height:32px}.btn-hamburger span{width:14px;height:2px}.sp-header-right{gap:.3rem}}@media (width<=768px){.btn-hamburger{flex-shrink:0;display:flex!important}.fee-layout-select{display:none!important}.notif-bell-btn{width:36px;height:36px}.notif-bell-btn svg{width:18px;height:18px}.notif-bell-badge{min-width:14px;height:14px;font-size:.778rem;top:-3px;right:-3px}.btn-hamburger{gap:3px;width:36px;height:36px}.btn-hamburger span{width:16px;height:2px}.sp-header-right{gap:.3rem}.sp-sidebar{z-index:300;width:260px;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);position:fixed;top:0;bottom:0;left:0;transform:translate(-100%);box-shadow:4px 0 24px #00000059}.sp-sidebar-open{transform:translate(0)}.sp-sidebar-close{display:flex}.sp-layout{height:calc(100dvh - 86px)}.sp-main{padding:.9rem}.sp-kpi-row{grid-template-columns:repeat(2,1fr)}.sp-overview-grid{grid-template-columns:1fr}.sp-att-summary{grid-template-columns:repeat(2,1fr)}.sp-admission-grid{grid-template-columns:1fr}.sp-profile-kpis{gap:.75rem}}.rd-ay-wrap{color:#fff;background:#ffffff1f;border:1px solid #ffffff40;border-radius:6px;align-items:center;padding:.28rem .55rem;display:flex}.rd-ay-select{color:inherit;cursor:pointer;background:0 0;border:none;outline:none;min-width:140px;max-width:220px;font-size:.821rem;font-weight:600}.rd-ay-select option{color:#fff;background:#1e3a8a}.role-management .rd-ay-wrap{color:#fff;background:#ffffff1f;border:1px solid #ffffff40;border-radius:6px;align-items:center;padding:.28rem .55rem;display:flex}.role-management .rd-ay-select{color:#fff}.role-management .rd-ay-select option{color:#1e3a8a;background:#fff}@media (width<=480px){.sp-kpi-row{grid-template-columns:repeat(2,1fr);gap:.5rem}.rd-kpi-card{padding:.85rem 1rem}.rd-kpi-value{font-size:1.296rem}.rd-kpi-label{font-size:.778rem}.rd-kpi-icon{width:40px;height:40px}.rd-page-title h1{font-size:1.296rem}.rd-page-title p{font-size:.778rem}.rd-chart-card{padding:1rem 1.1rem}.rd-chart-header h3{font-size:1.102rem}.rd-table{font-size:.972rem}.rd-table th{padding:.5rem .8rem;font-size:.734rem}.rd-table td{padding:.55rem .8rem}.sp-logout-btn,.rd-logout-btn,.sp-nav-item,.sp-pay-btn,.fee-pay-cta,.sp-submit-btn{min-height:44px}.sp-school-branding h5{font-size:.562rem}.rd-app-name{font-size:.842rem}.rd-role-badge{font-size:.778rem}}@media (width<=768px){.rd-shell .dashboard-header-section img,.role-student .dashboard-header-section img,.role-management .dashboard-header-section img{height:30px!important}.rd-shell .header-inner,.role-student .header-inner,.role-management .header-inner{justify-content:flex-start;gap:.5rem;padding:0 .25rem}.rd-shell .school-branding h5,.role-student .school-branding h5,.role-management .school-branding h5{letter-spacing:.05em;white-space:nowrap;text-transform:uppercase;text-align:center;margin:0;font-size:.486rem;font-weight:500;line-height:1.1;display:block}.rd-shell .school-branding,.role-student .school-branding,.role-management .school-branding{flex-direction:column;align-items:center;gap:.15rem;display:inline-flex}.rd-shell .sp-header-signout{display:none}.rd-ay-wrap{padding:.25rem .45rem}.rd-ay-select{min-width:110px;max-width:160px;font-size:.778rem}}@media (width<=480px){.rd-ay-wrap{padding:.2rem .4rem}.rd-shell .dashboard-header-section img,.role-student .dashboard-header-section img,.role-management .dashboard-header-section img{height:26px!important}.rd-shell .school-branding h5,.role-student .school-branding h5,.role-management .school-branding h5{white-space:nowrap;text-align:center;margin:0;font-size:.432rem;font-weight:500;line-height:1.1}.rd-ay-select{min-width:100px;max-width:140px;font-size:.778rem}}[data-theme=minimal] .rd-shell{background:var(--theme-bg)}[data-theme=minimal] .rd-shell .dashboard-header-section,[data-theme=minimal] .role-management .dashboard-header-section{background:var(--theme-header-bg);border-bottom:1px solid var(--theme-header-border);box-shadow:var(--theme-shadow)}[data-theme=minimal] .rd-shell .school-branding h5,[data-theme=minimal] .role-management .school-branding h5{color:var(--theme-text-secondary)}[data-theme=minimal] .rd-shell .btn-hamburger span{background:var(--theme-text)}[data-theme=minimal] .rd-shell .sp-header-name,[data-theme=minimal] .role-management .sp-header-name{color:var(--theme-text)}[data-theme=minimal] .rd-shell .sp-header-signout,[data-theme=minimal] .role-management .sp-header-signout{color:var(--theme-text-secondary);border-color:var(--theme-border)}[data-theme=minimal] .rd-shell .sp-header-signout:hover,[data-theme=minimal] .role-management .sp-header-signout:hover{background:var(--theme-surface-hover);color:var(--theme-text)}[data-theme=minimal] .rd-shell .dashboard-footer{background:var(--theme-surface);border-top:1px solid var(--theme-border);box-shadow:var(--theme-shadow)}[data-theme=minimal] .rd-shell .dashboard-footer a,[data-theme=minimal] .rd-shell .dashboard-footer p{color:var(--theme-text-secondary)}[data-theme=minimal] .rd-shell .dashboard-footer .footer-logo{filter:none}[data-theme=minimal] .rd-shell .side-drawer{background:var(--theme-surface)}[data-theme=minimal] .rd-shell .drawer-header{background:var(--theme-surface);border-bottom:1px solid var(--theme-border)}[data-theme=minimal] .rd-shell .drawer-profile{background:var(--theme-surface-hover);border-bottom:1px solid var(--theme-border)}[data-theme=minimal] .rd-shell .drawer-profile-name{color:var(--theme-text)}[data-theme=minimal] .rd-shell .drawer-profile-meta{color:var(--theme-text-secondary)}[data-theme=minimal] .rd-shell .drawer-profile-id{color:var(--theme-accent)}[data-theme=minimal] .rd-shell .drawer-section-label{color:var(--theme-text-muted)}[data-theme=minimal] .rd-shell .drawer-item{color:var(--theme-text)}[data-theme=minimal] .rd-shell .drawer-item:hover{background:var(--theme-surface-hover);color:var(--theme-text)}[data-theme=minimal] .rd-shell .drawer-item.active{background:var(--theme-accent-light);color:var(--theme-accent)}[data-theme=minimal] .rd-shell .drawer-item.active .drawer-icon{color:var(--theme-accent)}[data-theme=minimal] .rd-shell .drawer-active-pill{background:var(--theme-accent)}[data-theme=minimal] .rd-shell .drawer-footer{border-top:1px solid var(--theme-border)}[data-theme=minimal] .sp-sidebar{background:var(--theme-sidebar-bg);border-right:1px solid var(--theme-sidebar-border)}[data-theme=minimal] .sp-sidebar::-webkit-scrollbar-thumb{background:#0000001a}[data-theme=minimal] .sp-sidebar-profile{border-bottom:1px solid var(--theme-border-light);background:0 0}[data-theme=minimal] .sp-sidebar-avatar{background:linear-gradient(135deg,#6366f1,#818cf8);box-shadow:0 0 0 2px #6366f133}[data-theme=minimal] .sp-sidebar-name{color:var(--theme-text)}[data-theme=minimal] .sp-sidebar-username{color:var(--theme-text-secondary)}[data-theme=minimal] .sp-sidebar-role{color:var(--theme-accent)}[data-theme=minimal] .sp-sidebar-close{color:var(--theme-text-secondary)}[data-theme=minimal] .sp-nav-group-label{color:var(--theme-text-muted)}[data-theme=minimal] .sp-nav-item{color:var(--theme-text-secondary)}[data-theme=minimal] .sp-nav-item:hover{background:var(--theme-surface-hover);color:var(--theme-text)}[data-theme=minimal] .sp-nav-active{box-shadow:inset 2px 0 0 var(--theme-accent);font-weight:600;background:var(--theme-accent-light)!important;color:var(--theme-accent)!important}[data-theme=minimal] .sp-nav-signout{color:#ef4444!important}[data-theme=minimal] .sp-nav-signout:hover{background:#fef2f2!important}[data-theme=minimal] .sp-main{background:var(--theme-bg)}[data-theme=minimal] .rd-ay-wrap{background:var(--theme-surface);border-color:var(--theme-border)}[data-theme=minimal] .rd-ay-select{color:var(--theme-text)}[data-theme=minimal] .notif-bell-btn{color:var(--theme-text-secondary)}[data-theme=minimal] .rd-chart-card,[data-theme=minimal] .rd-kpi-card{background:var(--theme-card-bg);border-color:var(--theme-card-border);box-shadow:var(--theme-shadow)}[data-theme=minimal] .sp-section-title{color:var(--theme-text)}[data-theme=minimal] .sp-section-subtitle{color:var(--theme-text-secondary)}[data-theme=minimal] .mod-page-header{background:var(--theme-surface);border-color:var(--theme-border);box-shadow:var(--theme-shadow)}[data-theme=minimal] .mod-page-title{color:var(--theme-text)}[data-theme=classic] .rd-shell{background:linear-gradient(135deg,#f5f7fa 0%,#c3cfe2 100%)}[data-theme=classic] .sp-sidebar{background:#0f0e2a;border-right:1px solid #ffffff0d}[data-theme=classic] .sp-main{background:#f0f2f7}:root{--navy-950:#020817;--navy-900:#0a1628;--navy-800:#0f1f3d;--navy-700:#162545;--navy-600:#1e3055;--blue-600:#0d7390;--blue-500:#3b82f6;--blue-400:#60a5fa;--blue-300:#7ec8e3;--teal-600:#0d9488;--teal-500:#14b8a6;--teal-400:#2dd4bf;--emerald-500:#10b981;--emerald-400:#34d399;--amber-500:#f59e0b;--amber-400:#fbbf24;--rose-500:#f43f5e;--rose-400:#fb7185;--violet-500:#8b5cf6;--violet-400:#a78bfa;--card-bg:#0f1f3d;--card-border:#ffffff0e;--text-primary:#f0f6ff;--text-secondary:#94aac8;--text-muted:#4e6180;--ease:cubic-bezier(.22, 1, .36, 1);--dur:.22s}.fd-root{background:var(--navy-950);min-height:100dvh;color:var(--text-primary);-webkit-font-smoothing:antialiased;background-image:radial-gradient(80% 50% at 50% -10%,#0d739024 0%,#0000 70%),radial-gradient(60% 40% at 90% 90%,#0d948812 0%,#0000 60%);font-family:Inter,Segoe UI,system-ui,sans-serif}.fd-header{z-index:50;-webkit-backdrop-filter:blur(20px)saturate(160%);padding:0 2rem;padding-top:env(safe-area-inset-top);background:#020817d9;border-bottom:1px solid #ffffff0d;justify-content:space-between;align-items:center;min-height:56px;display:flex;position:sticky;top:0;box-shadow:0 1px #ffffff08,0 4px 32px #00000073}.fd-header-left{align-items:center;gap:.75rem;display:flex}.fd-header-left h1{color:var(--text-primary);letter-spacing:-.02em;font-size:.92rem;font-weight:700}.fd-header-left p{color:var(--text-muted);margin-top:1px;font-size:.68rem}.fd-header-right{align-items:center;gap:.5rem;display:flex}.fd-header-badge{color:var(--blue-300);letter-spacing:.03em;background:#0d73901f;border:1px solid #0d739040;border-radius:999px;align-items:center;gap:.35rem;padding:.25rem .75rem;font-size:.68rem;font-weight:700;display:inline-flex}.fd-header-badge:before{content:"";background:var(--teal-400);width:5px;height:5px;box-shadow:0 0 8px var(--teal-400);border-radius:50%;animation:2.2s ease-in-out infinite fd-pulse}@keyframes fd-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.8)}}.fd-back-btn{color:var(--text-secondary);cursor:pointer;transition:all var(--dur) var(--ease);background:#ffffff0a;border:1px solid #ffffff14;border-radius:7px;align-items:center;gap:.35rem;padding:.32rem .75rem;font-size:.7rem;font-weight:600;display:inline-flex}.fd-back-btn:hover{color:var(--blue-300);background:#0d739024;border-color:#0d739052}.fd-content{flex-direction:column;gap:1.25rem;max-width:1600px;margin:0 auto;padding:1.25rem 2rem 2rem;display:flex}.fd-health-strip{background:var(--card-bg);border:1px solid var(--card-border);border-radius:14px;padding:1rem 1.25rem;box-shadow:0 2px 12px #0000004d,inset 0 1px #ffffff08}.fd-health-header{justify-content:space-between;align-items:center;margin-bottom:.65rem;display:flex}.fd-health-title{color:#c8d6e5;text-transform:uppercase;letter-spacing:.08em;font-size:.72rem;font-weight:800}.fd-health-rate{letter-spacing:-.03em;margin-left:.6rem;font-size:1.4rem;font-weight:800}.fd-health-legend{color:#c8d6e5;gap:1rem;font-size:.66rem;font-weight:700;display:flex}.fd-health-legend span{align-items:center;gap:.35rem;display:flex}.fd-health-legend i{border-radius:2px;width:8px;height:8px;display:inline-block}.fd-health-bar{background:#ffffff0f;border-radius:999px;height:10px;margin-bottom:.75rem;position:relative;overflow:hidden}.fd-health-fill{height:100%;transition:width .8s var(--ease);border-radius:999px;position:absolute;top:0}.fd-health-fill.collected{background:linear-gradient(90deg,#059669,#10b981);left:0;box-shadow:0 0 12px #10b9814d}.fd-health-fill.fines{background:linear-gradient(90deg,#d97706,#f59e0b);min-width:2px}.fd-health-stats{align-items:center;gap:0;display:flex}.fd-hs-item{text-align:center;flex:1}.fd-hs-label{color:#c8d6e5;text-transform:uppercase;letter-spacing:.06em;margin-bottom:.15rem;font-size:.6rem;font-weight:800;display:block}.fd-hs-value{font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:1rem;font-weight:800}.fd-hs-divider{background:#ffffff0f;width:1px;height:28px;margin:0 .5rem}.fd-kpi-row{grid-template-columns:repeat(4,1fr);gap:.875rem;display:grid}.fd-filters{background:var(--card-bg);border:1px solid var(--card-border);border-radius:14px;padding:0;overflow:hidden;box-shadow:0 2px 12px #00000040,inset 0 1px #ffffff08}.fd-filters-header{-webkit-user-select:none;user-select:none;border-bottom:1px solid #ffffff0a;justify-content:space-between;align-items:center;padding:.7rem 1.1rem;display:flex}.fd-filters-header:hover{background:#ffffff04}.fd-filter-label{color:#c8d6e5;text-transform:uppercase;letter-spacing:.08em;font-size:.66rem;font-weight:800}.fd-filter-count{width:18px;height:18px;color:var(--blue-400);background:#0d739033;border-radius:50%;justify-content:center;align-items:center;font-size:.6rem;font-weight:800;display:inline-flex}.fd-filters-body{padding:.8rem 1.1rem 1rem}.fd-filter-row{flex-wrap:wrap;align-items:flex-start;gap:.8rem 1.8rem;display:flex}.fd-filter-group{flex-direction:column;gap:.3rem;display:flex}.fd-filter-group>label{color:#c8d6e5;text-transform:uppercase;letter-spacing:.08em;font-size:.58rem;font-weight:800}.fd-toggle-row{flex-wrap:wrap;gap:.22rem;display:flex}.fd-toggle{color:var(--text-muted);cursor:pointer;transition:all var(--dur) var(--ease);background:#ffffff06;border:1px solid #ffffff0f;border-radius:6px;padding:.25rem .6rem;font-size:.66rem;font-weight:600}.fd-toggle:hover:not(.active){color:var(--text-secondary);background:#ffffff0f}.fd-toggle.active{color:var(--blue-300);background:#0d73902e;border-color:#0d739066}.fd-toggle[data-status=paid].active{color:var(--teal-400);background:#0d948826;border-color:#0d948859}.fd-toggle[data-status=outstanding].active{color:var(--rose-400);background:#f43f5e26;border-color:#f43f5e59}.fd-toggle[data-status=fine].active{color:var(--amber-400);background:#f59e0b26;border-color:#f59e0b59}.fd-reset-btn{color:var(--rose-400);cursor:pointer;transition:all var(--dur);background:#f43f5e0d;border:1px solid #f43f5e33;border-radius:5px;padding:.22rem .6rem;font-size:.62rem;font-weight:700}.fd-reset-btn:hover{background:#f43f5e1f;border-color:#f43f5e59}.fd-search{color:var(--text-secondary);width:100%;max-width:240px;transition:border-color var(--dur), box-shadow var(--dur);background:#ffffff08;border:1px solid #ffffff12;border-radius:8px;outline:none;padding:.35rem .8rem;font-family:inherit;font-size:.72rem}.fd-search:focus{border-color:#0d739073;box-shadow:0 0 0 3px #0d739014}.fd-search::placeholder{color:var(--text-muted)}.fd-chart-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.fd-chart-wide{grid-column:span 2}.fd-chart-card{background:var(--card-bg);border:1px solid var(--card-border);transition:transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur);border-radius:16px;flex-direction:column;padding:1.1rem 1.2rem 1rem;display:flex;position:relative;overflow:hidden;box-shadow:0 2px 12px #0000004d,inset 0 1px #ffffff08}.fd-chart-card:before{content:"";background:var(--card-accent,linear-gradient(90deg, var(--blue-600) 0%, var(--teal-600) 100%));border-radius:16px 16px 0 0;height:2px;position:absolute;top:0;left:0;right:0}.fd-chart-card:after{content:"";background:var(--card-glow,#0d739008);filter:blur(40px);pointer-events:none;border-radius:50%;width:160px;height:160px;position:absolute;bottom:-50px;right:-50px}.fd-chart-card:hover{border-color:#ffffff14;transform:translateY(-3px);box-shadow:0 16px 48px #00000073,inset 0 1px #ffffff0a}.fd-chart-card-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.5rem;margin-bottom:.75rem;display:flex}.fd-chart-title{color:var(--text-primary);letter-spacing:-.02em;font-size:.82rem;font-weight:700}.fd-chart-subtitle{color:#c8d6e5;margin-top:.15rem;font-size:.64rem;font-weight:600}.fd-pie-legend{justify-content:center;gap:1rem;margin-top:.5rem;display:flex}.fd-pie-legend-item{color:#c8d6e5;align-items:center;gap:.35rem;font-size:.7rem;display:flex}.fd-pie-legend-item span{border-radius:2px;width:8px;height:8px;display:inline-block}.fd-pie-legend-item strong{color:var(--text-primary);font-weight:700}.fd-q-legend{flex-wrap:wrap;gap:.35rem;display:flex}.fd-q-pill{color:var(--pill-color,#6366f1);background:#6366f11f;border:1px solid #6366f14d;border-radius:6px;align-items:center;gap:.3rem;padding:.2rem .5rem;font-size:.64rem;font-weight:700;display:flex}.fd-q-pill span{border-radius:2px;width:7px;height:7px;display:inline-block}.fd-out-badges{gap:.4rem;display:flex}.fd-out-badge{letter-spacing:.03em;border-radius:6px;padding:.2rem .6rem;font-size:.6rem;font-weight:700}.fd-out-badge[data-type=critical]{color:#ef4444;background:#ef44441f;border:1px solid #ef444440}.fd-out-badge[data-type=cleared]{color:#10b981;background:#10b9811f;border:1px solid #10b98140}.fd-out-legend{color:#c8d6e5;border-top:1px solid #ffffff0f;gap:1.2rem;margin-top:.75rem;padding-top:.6rem;font-size:.66rem;font-weight:700;display:flex}.fd-out-legend span{align-items:center;gap:.35rem;display:flex}.fd-out-legend i{border-radius:2px;width:8px;height:8px;display:inline-block}.fd-section-label{color:#c8d6e5;text-transform:uppercase;letter-spacing:.1em;align-items:center;gap:.6rem;margin-top:.25rem;font-size:.62rem;font-weight:800;display:flex}.fd-section-label:after{content:"";background:#ffffff14;flex:1;height:1px}.fd-progress-cards{grid-template-columns:repeat(4,1fr);gap:.875rem;display:grid}.fd-progress-card{background:var(--card-bg);border:1px solid var(--card-border);transition:transform var(--dur) var(--ease), box-shadow var(--dur);border-radius:14px;padding:1rem 1.1rem;box-shadow:0 2px 12px #00000040,inset 0 1px #ffffff08}.fd-progress-card:hover{transform:translateY(-2px);box-shadow:0 8px 28px #0006}.fd-progress-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.fd-progress-cls{color:var(--text-primary);font-size:.78rem;font-weight:700}.fd-progress-students{color:#c8d6e5;font-size:.58rem;font-weight:700}.fd-progress-amounts{align-items:baseline;gap:.35rem;margin-bottom:.45rem;display:flex}.fd-progress-amounts span:first-child{color:var(--text-primary);font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:1rem;font-weight:800}.fd-progress-of{color:#c8d6e5;font-size:.6rem;font-weight:700}.fd-progress-bar-bg{background:#ffffff0d;border-radius:999px;height:6px;margin-bottom:.4rem;overflow:hidden}.fd-progress-bar-fill{height:100%;transition:width .7s var(--ease);border-radius:999px}.fd-progress-footer{justify-content:space-between;align-items:center;display:flex}.fd-progress-pct{font-variant-numeric:tabular-nums;font-size:.72rem;font-weight:800}.fd-progress-status{color:#c8d6e5;font-size:.58rem;font-weight:700}.fd-insights{grid-template-columns:repeat(4,1fr);gap:.875rem;display:grid}.fd-insight-card{background:var(--card-bg);border:1px solid var(--card-border);border-left:3px solid var(--ins-color,var(--blue-500));transition:transform var(--dur) var(--ease), box-shadow var(--dur);border-radius:14px;padding:1rem 1.1rem;position:relative;overflow:hidden;box-shadow:0 2px 12px #00000040}.fd-insight-card:before{content:"";pointer-events:none;background:linear-gradient(135deg,#ffffff03 0%,#0000 55%);position:absolute;inset:0}.fd-insight-card:hover{transform:translateY(-2px);box-shadow:0 8px 32px #0006}.fd-insight-red{border-left-color:var(--rose-500)}.fd-insight-green{border-left-color:var(--teal-500)}.fd-insight-amber{border-left-color:var(--amber-500)}.fd-insight-blue{border-left-color:var(--blue-500)}.fd-insight-icon{color:var(--text-muted);margin-bottom:.5rem;display:block}.fd-insight-red .fd-insight-icon{color:var(--rose-400)}.fd-insight-green .fd-insight-icon{color:var(--teal-400)}.fd-insight-amber .fd-insight-icon{color:var(--amber-400)}.fd-insight-blue .fd-insight-icon{color:var(--blue-400)}.ic-tag{text-transform:uppercase;letter-spacing:.1em;margin-bottom:.3rem;font-size:.55rem;font-weight:800;display:block}.fd-insight-red .ic-tag{color:var(--rose-400)}.fd-insight-green .ic-tag{color:var(--teal-400)}.fd-insight-amber .ic-tag{color:var(--amber-400)}.fd-insight-blue .ic-tag{color:var(--blue-400)}.ic-title{color:#e2e8f0;margin-bottom:.2rem;font-size:.7rem;font-weight:700;line-height:1.3}.ic-value{letter-spacing:-.04em;font-variant-numeric:tabular-nums;color:var(--text-primary);font-size:1.3rem;font-weight:800;line-height:1.1}.fd-insight-red .ic-value{color:var(--rose-400)}.fd-insight-green .ic-value{color:var(--teal-400)}.fd-insight-amber .ic-value{color:var(--amber-400)}.fd-insight-blue .ic-value{color:var(--blue-400)}.ic-sub{color:#c8d6e5;margin-top:.15rem;font-size:.6rem}.fd-tooltip{color:var(--text-secondary);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#081024f5;border:1px solid #ffffff14;border-radius:12px;min-width:160px;padding:.7rem 1rem;font-size:.74rem;box-shadow:0 12px 40px #000000a6}.fd-tt-label{color:var(--text-primary);border-bottom:1px solid #ffffff0f;margin-bottom:.4rem;padding-bottom:.35rem;font-size:.78rem;font-weight:700}.fd-tooltip-row{align-items:center;gap:.4rem;margin-bottom:.2rem;display:flex}.fd-tooltip-dot{border-radius:3px;flex-shrink:0;width:8px;height:8px}@media (width<=1400px){.fd-kpi-row{grid-template-columns:repeat(2,1fr)}}@media (width<=1100px){.fd-insights,.fd-progress-cards{grid-template-columns:repeat(2,1fr)}}@media (width<=860px){.fd-content{padding:1rem 1rem 1.5rem}.fd-header{padding:0 1rem}.fd-chart-grid{grid-template-columns:1fr}.fd-chart-wide{grid-column:span 1}.fd-kpi-row{grid-template-columns:repeat(2,1fr)}.fd-insights{grid-template-columns:1fr 1fr}.fd-header-left p{display:none}}@media (width<=540px){.fd-kpi-row{grid-template-columns:1fr 1fr;gap:.6rem}.fd-progress-cards,.fd-insights{grid-template-columns:1fr}.fd-health-stats{flex-wrap:wrap;gap:.5rem}.fd-hs-divider{display:none}.fd-hs-item{min-width:45%}}.fd-embedded{min-height:unset;color:#1a202c;background:#fff}.fd-embedded .fd-content{gap:1.5rem;padding-top:2.5rem}.fd-embedded .fd-health-strip{box-shadow:none;background:#fff;border:1px solid #edf2f7;border-radius:10px;padding:.9rem 1.4rem}.fd-embedded .fd-health-header{margin-bottom:.5rem}.fd-embedded .fd-health-title{color:#718096;letter-spacing:.06em;font-size:.72rem;font-weight:700}.fd-embedded .fd-health-rate{color:#1a202c;font-size:1.4rem;font-weight:800}.fd-embedded .fd-health-legend{color:#718096;font-size:.72rem;font-weight:600}.fd-embedded .fd-health-legend i{border-radius:2px}.fd-embedded .fd-health-bar{background:#edf2f7;border-radius:3px;height:6px;margin-bottom:.6rem;overflow:hidden}.fd-embedded .fd-health-fill.collected{background:#48bb78;border-radius:3px}.fd-embedded .fd-health-fill.fines{background:#ed8936;border-radius:0 3px 3px 0}.fd-embedded .fd-hs-label{color:#718096;letter-spacing:.04em;font-size:.62rem;font-weight:600}.fd-embedded .fd-hs-value{color:#1a202c;font-size:1rem;font-weight:700}.fd-embedded .fd-hs-divider{background:#edf2f7;height:20px}.fd-embedded .fd-kpi-row{grid-template-columns:repeat(2,1fr);gap:.75rem;display:grid}.fd-embedded .fd-insight-card{box-shadow:none;background:#fff;border:1px solid #edf2f7;border-left:3px solid #cbd5e0;border-radius:10px;padding:.9rem 1rem;transition:background .15s}.fd-embedded .fd-insight-card:hover{background:#f7fafc}.fd-embedded .fd-insight-red{border-left-color:#fc8181}.fd-embedded .fd-insight-green{border-left-color:#68d391}.fd-embedded .fd-insight-amber{border-left-color:#f6ad55}.fd-embedded .fd-insight-blue{border-left-color:#63b3ed}.fd-embedded .fd-insight-red .fd-insight-icon{color:#e53e3e}.fd-embedded .fd-insight-green .fd-insight-icon{color:#38a169}.fd-embedded .fd-insight-amber .fd-insight-icon{color:#dd6b20}.fd-embedded .fd-insight-blue .fd-insight-icon{color:#3182ce}.fd-embedded .ic-tag{letter-spacing:.04em;text-transform:uppercase;color:#a0aec0;margin-bottom:.2rem;font-size:.58rem;font-weight:600}.fd-embedded .fd-insight-red .ic-tag,.fd-embedded .fd-insight-green .ic-tag,.fd-embedded .fd-insight-amber .ic-tag,.fd-embedded .fd-insight-blue .ic-tag{color:#a0aec0}.fd-embedded .ic-title{color:#718096;margin-bottom:.15rem;font-size:.72rem;font-weight:500}.fd-embedded .ic-sub{color:#a0aec0;font-size:.62rem;font-weight:500}.fd-embedded .fd-insight-red .ic-value{color:#e53e3e;font-size:1.3rem}.fd-embedded .fd-insight-green .ic-value{color:#38a169;font-size:1.3rem}.fd-embedded .fd-insight-amber .ic-value{color:#dd6b20;font-size:1.3rem}.fd-embedded .fd-insight-blue .ic-value{color:#3182ce;font-size:1.3rem}.fd-embedded .fd-filters{box-shadow:none;background:#fff;border:1px solid #edf2f7;border-radius:10px}.fd-embedded .fd-filters-header{border-bottom-color:#edf2f7;padding:.75rem 1.2rem}.fd-embedded .fd-filters-header:hover{background:#f7fafc}.fd-embedded .fd-filter-label{color:#4a5568;letter-spacing:.06em;font-size:.72rem;font-weight:700}.fd-embedded .fd-filter-group>label{color:#718096;font-size:.64rem;font-weight:600}.fd-embedded .fd-toggle{color:#718096;background:#f7fafc;border-color:#e2e8f0;border-radius:6px;padding:.3rem .7rem;font-size:.72rem;font-weight:600;transition:all .15s}.fd-embedded .fd-toggle:hover:not(.active){color:#4a5568;background:#edf2f7;border-color:#cbd5e0}.fd-embedded .fd-toggle.active{color:#fff;background:#4a5568;border-color:#4a5568;box-shadow:0 1px 3px #4a556833}.fd-embedded .fd-toggle[data-status=paid].active{background:#38a169;border-color:#38a169;box-shadow:0 1px 3px #38a16933}.fd-embedded .fd-toggle[data-status=outstanding].active{background:#e53e3e;border-color:#e53e3e;box-shadow:0 1px 3px #e53e3e33}.fd-embedded .fd-toggle[data-status=fine].active{background:#dd6b20;border-color:#dd6b20;box-shadow:0 1px 3px #dd6b2033}.fd-embedded .fd-reset-btn{color:#e53e3e;background:0 0;border-color:#fed7d7;border-radius:6px;font-size:.68rem}.fd-embedded .fd-reset-btn:hover{background:#fff5f5}.fd-embedded .fd-search{color:#2d3748;background:#f7fafc;border-color:#e2e8f0;border-radius:8px;padding:.4rem .9rem;font-size:.78rem}.fd-embedded .fd-search::placeholder{color:#a0aec0}.fd-embedded .fd-search:focus{background:#fff;border-color:#a0aec0;box-shadow:0 0 0 2px #a0aec01f}.fd-embedded .fd-filter-count{color:#4a5568;background:#edf2f7;font-size:.62rem;font-weight:700}.fd-embedded .fd-chart-card{box-shadow:none;background:#fff;border:1px solid #edf2f7;border-radius:10px;transition:background .15s}.fd-embedded .fd-chart-card:before{opacity:.5;background:linear-gradient(90deg,#63b3ed,#68d391,#f6ad55,#fc8181);border-radius:10px 10px 0 0;height:2px}.fd-embedded .fd-chart-card:after{display:none}.fd-embedded .fd-chart-card:hover{background:#f7fafc;transform:none}.fd-embedded .fd-chart-title{color:#2d3748;font-size:.92rem;font-weight:700}.fd-embedded .fd-chart-subtitle{color:#a0aec0;font-size:.7rem;font-weight:500}.fd-embedded .fd-q-pill{color:#4a5568;background:#f7fafc;border-color:#e2e8f0;border-radius:6px;font-size:.7rem;font-weight:600}.fd-embedded .fd-pie-legend-item{color:#718096;font-size:.76rem;font-weight:600}.fd-embedded .fd-pie-legend-item strong{color:#2d3748;font-weight:700}.fd-embedded .fd-out-badge[data-type=critical]{color:#c53030;background:#fff5f5;border-color:#fed7d7;border-radius:6px;font-size:.66rem;font-weight:600}.fd-embedded .fd-out-badge[data-type=cleared]{color:#276749;background:#f0fff4;border-color:#c6f6d5;border-radius:6px;font-size:.66rem;font-weight:600}.fd-embedded .fd-out-legend{color:#a0aec0;border-top-color:#edf2f7;font-size:.72rem;font-weight:600}.fd-embedded .fd-tooltip{color:#4a5568;background:#fff;border:1px solid #e2e8f0;border-radius:10px;font-size:.8rem;box-shadow:0 4px 16px #00000014}.fd-embedded .fd-tt-label{color:#2d3748;border-bottom-color:#edf2f7;font-size:.84rem;font-weight:700}.fd-embedded .fd-tooltip-dot{border-radius:2px}.fd-embedded .fd-section-label{color:#718096;letter-spacing:.08em;text-transform:uppercase;font-size:.66rem;font-weight:700}.fd-embedded .fd-section-label:after{background:#edf2f7;height:1px}.fd-embedded .fd-insights{grid-template-columns:repeat(2,1fr);gap:.75rem;display:grid}.fd-embedded .fd-progress-card{box-shadow:none;background:#fff;border:1px solid #edf2f7;border-radius:10px;transition:background .15s}.fd-embedded .fd-progress-card:hover{background:#f7fafc}.fd-embedded .fd-progress-cls{color:#2d3748;font-size:.78rem;font-weight:700}.fd-embedded .fd-progress-students{color:#a0aec0;font-size:.64rem;font-weight:600}.fd-embedded .fd-progress-amounts span:first-child{color:#2d3748;font-size:1rem;font-weight:800}.fd-embedded .fd-progress-of{color:#a0aec0;font-size:.66rem;font-weight:600}.fd-embedded .fd-progress-bar-bg{background:#edf2f7;border-radius:3px;height:6px;overflow:hidden}.fd-embedded .fd-progress-bar-fill{box-shadow:none;background:linear-gradient(90deg,#4a5568,#718096);border-radius:3px}.fd-embedded .fd-progress-pct{font-size:.78rem;font-weight:700}.fd-embedded .fd-progress-status{color:#a0aec0;font-size:.64rem;font-weight:600}@media (width<=640px){.fd-embedded .fd-content{padding:2rem .75rem 1.5rem}.fd-embedded .fd-kpi-row,.fd-embedded .fd-insights{gap:.5rem}.fd-embedded .fd-chart-grid{grid-template-columns:1fr}.fd-embedded .fd-chart-wide{grid-column:span 1}.fd-embedded .fd-progress-cards{grid-template-columns:1fr 1fr;gap:.5rem}.fd-embedded .fd-health-strip{padding:.8rem 1rem}.fd-embedded .fd-health-rate{font-size:1.3rem}.fd-embedded .fd-insight-card{padding:.75rem .85rem}.fd-embedded .ic-value{font-size:1.1rem}.fd-embedded .fd-chart-card{padding:.9rem 1rem}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}.fd2-root{color:#1e293b;-webkit-font-smoothing:antialiased;background:#f8fafc;min-height:100dvh;font-family:Inter,Segoe UI,system-ui,sans-serif}.fd2-topbar{z-index:50;padding:0 1.5rem;padding-top:env(safe-area-inset-top);background:#fff;border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;min-height:56px;display:flex;position:sticky;top:0;box-shadow:0 1px 3px #0000000a}.fd2-topbar-left{align-items:center;gap:.75rem;display:flex}.fd2-topbar-title{color:#0f172a;letter-spacing:-.02em;font-size:1.05rem;font-weight:800}.fd2-topbar-sub{color:#94a3b8;margin-top:1px;font-size:.72rem}.fd2-topbar-right{align-items:center;gap:.5rem;display:flex}.fd2-back-btn{color:#64748b;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;transition:all .15s;display:inline-flex}.fd2-back-btn:hover{color:#1e293b;background:#f1f5f9;border-color:#cbd5e1}.fd2-sidebar-toggle{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:.4rem;padding:.4rem .85rem;font-family:inherit;font-size:.78rem;font-weight:600;transition:all .15s;display:inline-flex}.fd2-sidebar-toggle:hover{background:#f1f5f9;border-color:#cbd5e1}.fd2-filter-count{color:#fff;background:#6366f1;border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:.62rem;font-weight:700;display:inline-flex}.fd2-layout{min-height:calc(100vh - 56px);display:flex}.fd2-sidebar{background:#fff;border-right:1px solid #e2e8f0;width:240px;min-width:240px;padding:1.25rem 1rem;transition:width .22s,min-width .22s,opacity .22s,padding .22s;overflow-y:auto}.fd2-sidebar:not(.fd2-sidebar-open){opacity:0;width:0;min-width:0;padding:0;overflow:hidden}.fd2-sidebar-header{border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.75rem;display:flex}.fd2-sidebar-header h3{color:#0f172a;font-size:.82rem;font-weight:700}.fd2-reset-btn{color:#ef4444;cursor:pointer;background:#fff;border:1px solid #fecaca;border-radius:6px;padding:.2rem .6rem;font-family:inherit;font-size:.68rem;font-weight:600;transition:all .15s}.fd2-reset-btn:hover{background:#fef2f2;border-color:#fca5a5}.fd2-filter-section{margin-bottom:1.1rem}.fd2-filter-label{color:#94a3b8;text-transform:uppercase;letter-spacing:.06em;margin-bottom:.45rem;font-size:.66rem;font-weight:700;display:block}.fd2-search-wrap{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:.5rem;padding:.4rem .7rem;transition:border-color .15s;display:flex}.fd2-search-wrap:focus-within{border-color:#6366f1;box-shadow:0 0 0 3px #6366f114}.fd2-search{color:#1e293b;background:0 0;border:none;outline:none;width:100%;font-family:inherit;font-size:.78rem}.fd2-search::placeholder{color:#94a3b8}.fd2-chip-row{flex-wrap:wrap;gap:.3rem;display:flex}.fd2-chip-col{flex-direction:column;gap:.3rem;display:flex}.fd2-chip{color:#64748b;cursor:pointer;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;padding:.32rem .7rem;font-family:inherit;font-size:.72rem;font-weight:600;transition:all .15s}.fd2-chip:hover:not(.fd2-chip-active){background:#f1f5f9;border-color:#cbd5e1}.fd2-chip-active{color:#fff;background:#1e293b;border-color:#1e293b}.fd2-chip-full{align-items:center;gap:.4rem;width:100%;display:flex}.fd2-status-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.fd2-main{flex-direction:column;flex:1;gap:1.25rem;padding:1.5rem;display:flex;overflow-y:auto}.fd2-kpi-grid{grid-template-columns:repeat(5,1fr);gap:.85rem;display:grid}.fd2-kpi-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;align-items:flex-start;gap:.75rem;padding:1rem 1.1rem;transition:box-shadow .15s,transform .15s;display:flex}.fd2-kpi-card:hover{transform:translateY(-1px);box-shadow:0 4px 16px #0000000f}.fd2-kpi-icon{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.fd2-kpi-body{flex-direction:column;min-width:0;display:flex}.fd2-kpi-label{color:#94a3b8;text-transform:uppercase;letter-spacing:.04em;font-size:.66rem;font-weight:600}.fd2-kpi-value{color:#0f172a;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:.15rem;font-size:1.15rem;font-weight:800;line-height:1.1}.fd2-kpi-sub{color:#94a3b8;margin-top:.2rem;font-size:.65rem}.fd2-kpi-mini-bar{background:#f1f5f9;border-radius:999px;height:4px;margin-top:.35rem;overflow:hidden}.fd2-kpi-mini-fill{border-radius:999px;height:100%;transition:width .6s}.fd2-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:1.25rem 1.35rem;transition:box-shadow .15s;box-shadow:0 1px 3px #00000008}.fd2-card:hover{box-shadow:0 4px 16px #0000000f}.fd2-card-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.fd2-card-header h3{color:#0f172a;letter-spacing:-.01em;font-size:.9rem;font-weight:700}.fd2-card-badge{color:#64748b;background:#f1f5f9;border-radius:999px;align-items:center;gap:.25rem;padding:.2rem .65rem;font-size:.68rem;font-weight:600;display:inline-flex}.fd2-card-badge-red{color:#ef4444;background:#fef2f2}.fd2-charts-2col{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.fd2-legend-row{align-items:center;gap:.8rem;display:flex}.fd2-legend-item{color:#64748b;align-items:center;gap:.3rem;font-size:.72rem;font-weight:600;display:flex}.fd2-legend-dot{border-radius:3px;flex-shrink:0;width:8px;height:8px}.fd2-insights-row{grid-template-columns:repeat(4,1fr);gap:.85rem;display:grid}.fd2-insight{background:#fff;border:1px solid #e2e8f0;border-radius:12px;align-items:flex-start;gap:.65rem;padding:.9rem 1rem;transition:box-shadow .15s;display:flex}.fd2-insight:hover{box-shadow:0 4px 16px #0000000f}.fd2-insight-icon{flex-shrink:0;font-size:1.4rem;line-height:1}.fd2-insight-label{text-transform:uppercase;letter-spacing:.06em;color:#94a3b8;font-size:.62rem;font-weight:700;display:block}.fd2-insight-value{color:#0f172a;margin-top:.1rem;font-size:1rem;font-weight:800;display:block}.fd2-insight-sub{color:#94a3b8;margin-top:.1rem;font-size:.65rem;display:block}.fd2-insight-red .fd2-insight-value{color:#ef4444}.fd2-insight-green .fd2-insight-value{color:#10b981}.fd2-insight-amber .fd2-insight-value{color:#f59e0b}.fd2-insight-blue .fd2-insight-value{color:#6366f1}.fd2-progress-grid{grid-template-columns:repeat(4,1fr);gap:1rem;display:grid}.fd2-progress-item{flex-direction:column;gap:.3rem;display:flex}.fd2-progress-head{justify-content:space-between;align-items:center;display:flex}.fd2-progress-cls{color:#0f172a;font-size:.8rem;font-weight:700}.fd2-progress-pct{font-size:.85rem;font-weight:800}.fd2-progress-track{background:#f1f5f9;border-radius:999px;height:6px;overflow:hidden}.fd2-progress-fill{border-radius:999px;height:100%;transition:width .6s}.fd2-progress-sub{font-size:.66rem;font-weight:600}.fd2-tooltip{background:#fff;border:1px solid #e2e8f0;border-radius:10px;min-width:160px;padding:.75rem 1rem;box-shadow:0 4px 20px #00000014}.fd2-tt-label{color:#0f172a;border-bottom:1px solid #f1f5f9;margin-bottom:.4rem;padding-bottom:.35rem;font-size:.82rem;font-weight:700}.fd2-embedded,.fd2-embedded .fd2-root{min-height:unset;background:0 0}.fd2-embedded .fd2-layout{min-height:unset}.fd2-embedded .fd2-main{padding:0}@media (width<=1200px){.fd2-kpi-grid{grid-template-columns:repeat(3,1fr)}.fd2-insights-row,.fd2-progress-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=900px){.fd2-charts-2col{grid-template-columns:1fr}.fd2-sidebar{top:56px;top:calc(56px + env(safe-area-inset-top));z-index:40;position:fixed;bottom:0;left:0;box-shadow:4px 0 20px #00000014}.fd2-sidebar:not(.fd2-sidebar-open){box-shadow:none}}@media (width<=700px){.fd2-kpi-grid{grid-template-columns:repeat(2,1fr)}.fd2-insights-row,.fd2-progress-grid{grid-template-columns:1fr}.fd2-main{padding:1rem}}@media (width<=480px){.fd2-kpi-grid{grid-template-columns:1fr}.fd2-topbar{padding:0 1rem}}.fd2-embedded-filters{background:#fff;border:1px solid #e2e8f0;border-radius:12px;margin-bottom:1.25rem;padding:1rem 1.25rem;box-shadow:0 1px 3px #0000000a}.fd2-embedded-filters-row{flex-wrap:wrap;align-items:flex-end;gap:1rem;display:flex}.fd2-embedded-filter-item{flex-direction:column;gap:.35rem;min-width:0;display:flex}.fd2-embedded-filter-item .fd2-search-wrap{min-width:200px}.fd2-embedded-filter-item .fd2-chip-row{flex-wrap:nowrap}.fd2-embedded-filter-item .fd2-filter-label{margin-bottom:0}.fd2-embedded-filter-item .fd2-reset-btn{align-self:flex-end;height:32px}.attd{background:#f5f7fa;min-height:100dvh;padding:24px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.attd-embedded{min-height:unset;background:0 0;padding:0}.attd-page-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.attd-page-title{color:#1e293b;margin:0 0 4px;font-size:1.5rem;font-weight:700}.attd-page-sub{color:#64748b;margin:0;font-size:.85rem}.attd-tabs{background:#e2e8f0;border-radius:10px;gap:4px;width:fit-content;margin-bottom:20px;padding:4px;display:flex}.attd-tab{color:#64748b;cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:6px;padding:8px 18px;font-size:.83rem;font-weight:500;transition:all .2s;display:flex}.attd-tab-active{color:#4f46e5;background:#fff;box-shadow:0 1px 4px #0000001a}.attd-tab:hover:not(.attd-tab-active){background:#ffffff80}.attd-filters{background:#fff;border:1px solid #e2e8f0;border-radius:12px;margin-bottom:16px;padding:16px 20px;box-shadow:0 1px 3px #0000000d}.attd-filter-row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.attd-filter-group{flex-direction:column;flex:1;gap:4px;min-width:130px;display:flex}.attd-filter-group label{color:#64748b;text-transform:uppercase;letter-spacing:.4px;font-size:.72rem;font-weight:600}.attd-input{color:#1e293b;box-sizing:border-box;background:#f8fafc;border:1px solid #e2e8f0;border-radius:7px;outline:none;width:100%;padding:8px 10px;font-size:.83rem;transition:border .15s,box-shadow .15s}.attd-input:focus{background:#fff;border-color:#6366f1;box-shadow:0 0 0 2px #6366f11f}.attd-filter-search{min-width:180px}.attd-filter-action{flex:none;min-width:90px;max-width:110px}.attd-search-wrap{align-items:center;display:flex;position:relative}.attd-search-wrap svg{color:#94a3b8;pointer-events:none;position:absolute;left:9px}.attd-search-input{padding-left:28px!important}.attd-summary-row{flex-wrap:wrap;gap:12px;margin-bottom:16px;display:flex}.attd-sum-chip{border-radius:10px;flex-direction:column;flex:1;align-items:center;min-width:110px;padding:12px 22px;display:flex}.attd-sum-total{background:#ede9fe}.attd-sum-present{background:#dcfce7}.attd-sum-absent{background:#fee2e2}.attd-sum-leave{background:#fef9c3}.attd-sum-val{color:#1e293b;font-size:1.5rem;font-weight:700}.attd-sum-lbl{color:#64748b;margin-top:2px;font-size:.72rem;font-weight:500}.attd-table-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden;box-shadow:0 1px 4px #0000000f}.attd-table-meta{color:#64748b;background:#f8fafc;border-bottom:1px solid #f1f5f9;padding:12px 18px;font-size:.8rem}.attd-table-scroll{overflow-x:auto}.attd-table{border-collapse:collapse;width:100%;font-size:.82rem}.attd-table thead tr{background:#f8fafc;border-bottom:2px solid #e2e8f0}.attd-table thead th{text-align:left;color:#64748b;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;padding:10px 12px;font-size:.72rem;font-weight:700}.attd-tr:hover{background:#f8fafc}.attd-table td{color:#334155;vertical-align:middle;border-bottom:1px solid #f1f5f9;padding:10px 12px}.attd-td-num{color:#94a3b8;font-size:.75rem}.attd-td-date{white-space:nowrap}.attd-date-badge{color:#5b21b6;background:#ede9fe;border-radius:5px;padding:3px 8px;font-size:.77rem;font-weight:600}.attd-student-cell{align-items:center;gap:8px;display:flex}.attd-avatar{color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:.75rem;font-weight:700;display:flex}.attd-student-name{color:#1e293b;font-size:.82rem;font-weight:600;display:block}.attd-student-id{color:#94a3b8;font-size:.72rem}.attd-td-remark{white-space:nowrap;text-overflow:ellipsis;color:#94a3b8;max-width:140px;font-size:.78rem;overflow:hidden}.attd-status-badge{white-space:nowrap;border-radius:20px;padding:3px 10px;font-size:.75rem;font-weight:600;display:inline-block}.attd-action-btns{gap:6px;display:flex}.attd-action-btn{cursor:pointer;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;transition:all .15s;display:flex}.attd-edit-btn:hover{color:#6366f1;background:#ede9fe;border-color:#6366f1}.attd-del-btn:hover{color:#ef4444;background:#fee2e2;border-color:#ef4444}.attd-empty-row{text-align:center;color:#94a3b8;font-size:.9rem;padding:40px!important}.attd-pagination{border-top:1px solid #f1f5f9;justify-content:center;align-items:center;gap:14px;padding:14px;display:flex}.attd-page-btn{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:7px;padding:6px 14px;font-size:.82rem;transition:all .15s}.attd-page-btn:hover:not(:disabled){color:#6366f1;background:#ede9fe;border-color:#6366f1}.attd-page-btn:disabled{opacity:.4;cursor:not-allowed}.attd-page-info{color:#64748b;font-size:.82rem}.attd-error{color:#b91c1c;background:#fee2e2;border-radius:8px;margin-bottom:14px;padding:12px 16px;font-size:.85rem}.attd-spinner-wrap{color:#94a3b8;flex-direction:column;align-items:center;gap:10px;padding:60px 20px;font-size:.85rem;display:flex}.attd-spinner{border:3px solid #e2e8f0;border-top-color:#6366f1;border-radius:50%;width:32px;height:32px;animation:.7s linear infinite attd-spin}@keyframes attd-spin{to{transform:rotate(360deg)}}.attd-analytics{flex-direction:column;gap:20px;display:flex}.attd-kpi-row{flex-wrap:wrap;gap:14px;display:flex}.attd-kpi{border-radius:12px;flex-direction:column;flex:1;align-items:center;gap:4px;min-width:120px;padding:18px 16px;display:flex}.attd-kpi-blue{background:#c5e9f3}.attd-kpi-green{background:#dcfce7}.attd-kpi-red{background:#fee2e2}.attd-kpi-yellow{background:#fef9c3}.attd-kpi-purple{background:#ede9fe}.attd-kpi-val{color:#1e293b;font-size:1.8rem;font-weight:800}.attd-kpi-lbl{color:#64748b;text-align:center;font-size:.75rem;font-weight:500}.attd-overall-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:20px 24px;box-shadow:0 1px 4px #0000000f}.attd-overall-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.attd-overall-header h3{color:#1e293b;margin:0;font-size:.95rem;font-weight:700}.attd-overall-pct{font-size:1.8rem;font-weight:800}.attd-overall-track{background:#e2e8f0;border-radius:10px;height:10px;margin-bottom:10px;overflow:hidden}.attd-overall-fill{border-radius:10px;height:100%;transition:width .5s}.attd-overall-legend{flex-wrap:wrap;gap:18px;font-size:.78rem;display:flex}.attd-monthly-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:20px 24px;box-shadow:0 1px 4px #0000000f}.attd-monthly-card h3{color:#1e293b;margin:0 0 16px;font-size:.95rem;font-weight:700}.attd-monthly-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;display:grid}.attd-month-tile{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;flex-direction:column;gap:8px;padding:14px;display:flex}.attd-month-header{justify-content:space-between;align-items:center;gap:4px;display:flex}.attd-month-name{color:#1e293b;font-size:.85rem;font-weight:700}.attd-month-year{color:#94a3b8;font-size:.72rem}.attd-month-pct{font-size:.82rem;font-weight:700}.attd-month-stats{flex-wrap:wrap;gap:8px;font-size:.72rem;display:flex}.attd-month-p{color:#15803d;font-weight:600}.attd-month-a{color:#b91c1c;font-weight:600}.attd-month-l{color:#854d0e;font-weight:600}.attd-month-w{color:#6366f1;font-weight:600}.attd-empty-analytics{color:#94a3b8;flex-direction:column;align-items:center;gap:12px;padding:60px;font-size:.9rem;display:flex}.att-modal-backdrop{z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a73;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.att-modal{background:#fff;border-radius:16px;flex-direction:column;width:100%;max-width:520px;display:flex;overflow:hidden;box-shadow:0 20px 60px #00000040}.att-modal-sm{max-width:380px}.att-modal-header{color:#fff;background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 100%);border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:flex-start;padding:20px 24px 16px;display:flex}.att-modal-header h3{margin:0 0 3px;font-size:1rem;font-weight:700}.att-modal-header p{opacity:.8;margin:0;font-size:.8rem}.att-modal-close{color:#fff;cursor:pointer;background:#ffffff26;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:1.1rem;line-height:1;display:flex}.att-modal-close:hover{background:#ffffff4d}.att-modal-body{flex-direction:column;gap:16px;padding:20px 24px;display:flex}.att-modal-footer{background:#f8fafc;border-top:1px solid #f1f5f9;justify-content:flex-end;gap:10px;padding:14px 24px;display:flex}.att-edit-info-row{flex-wrap:wrap;gap:8px;display:flex}.att-edit-chip{color:#475569;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:20px;padding:3px 10px;font-size:.75rem}.att-edit-field{flex-direction:column;gap:5px;display:flex}.att-edit-field label{color:#475569;font-size:.75rem;font-weight:600}.att-edit-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.att-textarea{resize:vertical;font-family:inherit}.att-status-selector{gap:8px;display:flex}.att-status-btn{color:#64748b;cursor:pointer;background:#f8fafc;border:2px solid #e2e8f0;border-radius:8px;flex:1;padding:8px 12px;font-size:.83rem;font-weight:600;transition:all .15s}.att-status-btn:hover{border-color:#94a3b8}.att-btn{cursor:pointer;border:1.5px solid #0000;border-radius:8px;align-items:center;gap:6px;padding:9px 18px;font-size:.83rem;font-weight:600;transition:all .15s;display:inline-flex}.att-btn-primary{color:#fff;background:linear-gradient(135deg,#6366f1,#7c3aed);border-color:#0000}.att-btn-primary:hover{opacity:.9;transform:translateY(-1px);box-shadow:0 4px 12px #6366f159}.att-btn-ghost{color:#475569;background:0 0;border-color:#e2e8f0}.att-btn-ghost:hover{background:#f1f5f9}.att-btn-danger{color:#fff;background:#ef4444;border-color:#0000}.att-btn-danger:hover{background:#dc2626}.att-btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important}@media (width<=768px){.attd{padding:14px}.attd-filter-group{min-width:120px}.attd-kpi-val{font-size:1.3rem}.att-edit-row{grid-template-columns:1fr}.attd-table{font-size:.75rem}.attd-table td,.attd-table th{padding:8px}}@media (width<=480px){.attd{padding:10px}.attd-page-title{font-size:1.2rem}.attd-page-sub{font-size:.78rem}.attd-tabs{-webkit-overflow-scrolling:touch;width:100%;overflow-x:auto}.attd-tab{flex-shrink:0;padding:7px 12px;font-size:.76rem}.attd-filters{padding:12px 14px}.attd-filter-group{min-width:100px}.attd-input{padding:7px 8px;font-size:.78rem}.attd-summary-row{gap:8px}.attd-sum-chip{min-width:80px;padding:8px 14px}.attd-sum-val{font-size:1.15rem}.attd-sum-lbl{font-size:.65rem}.attd-kpi-row{gap:8px}.attd-kpi{min-width:90px;padding:12px 10px}.attd-kpi-val{font-size:1.1rem}.attd-kpi-lbl{font-size:.68rem}.attd-table{font-size:.7rem}.attd-table td,.attd-table th{padding:6px}.attd-status-badge{padding:2px 8px;font-size:.68rem}.attd-action-btn{width:32px;height:32px}.attd-btn{min-height:44px;padding:8px 14px}.attd-monthly-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.att-modal{border-radius:12px}.att-modal-header{padding:14px 16px 12px}.att-modal-body{padding:14px 16px}.att-modal-footer{padding:10px 16px}.attd-overall-card,.attd-monthly-card{padding:14px 16px}}:root{--ta-green:#22c55e;--ta-red:#ef4444;--ta-amber:#f59e0b;--ta-indigo:#6366f1;--ta-slate:#64748b;--ta-border:#e9ecef;--ta-bg:#f6f8fb;--ta-white:#fff;--ta-text:#1a202c;--ta-muted:#94a3b8}.ta-root{background:var(--ta-bg);min-height:100dvh;color:var(--ta-text);padding:24px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.ta-embedded{min-height:unset;background:0 0;padding:0}.ta-page-header{align-items:center;gap:12px;margin-bottom:24px;display:flex}.ta-page-icon{background:var(--ta-indigo);color:#fff;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.ta-page-title{color:var(--ta-text);margin:0 0 2px;font-size:1.4rem;font-weight:700}.ta-page-sub{color:var(--ta-muted);margin:0;font-size:.82rem}.ta-card{background:var(--ta-white);border:1px solid var(--ta-border);border-radius:14px;box-shadow:0 1px 6px #0000000d}.ta-selector-card{background:var(--ta-white);border:1px solid var(--ta-border);border-radius:14px;margin-bottom:20px;overflow:hidden;box-shadow:0 1px 6px #0000000d}.ta-selector-header{background:var(--ta-indigo);color:#fff;align-items:center;gap:8px;padding:14px 20px;font-size:.84rem;font-weight:600;display:flex}.ta-selector-icon{opacity:.85;flex-shrink:0}.ta-selector-body{padding:18px 20px 20px}.ta-sel-row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.ta-sel-group{flex-direction:column;flex:1;gap:5px;min-width:136px;display:flex}.ta-sel-narrow{flex:none;min-width:100px;max-width:120px}.ta-sel-action{flex:none;min-width:112px;max-width:130px}.ta-sel-group label{color:var(--ta-slate);text-transform:uppercase;letter-spacing:.5px;font-size:.69rem;font-weight:700}.ta-input{border:1.5px solid var(--ta-border);color:var(--ta-text);box-sizing:border-box;background:#fafbfc;border-radius:8px;outline:none;width:100%;padding:8px 11px;font-family:inherit;font-size:.83rem;transition:border .15s,box-shadow .15s}.ta-input:focus{border-color:var(--ta-indigo);background:#fff;box-shadow:0 0 0 3px #6366f11f}.ta-input:disabled{opacity:.45;cursor:not-allowed}.ta-btn{cursor:pointer;white-space:nowrap;border:none;border-radius:8px;align-items:center;gap:6px;padding:9px 16px;font-family:inherit;font-size:.83rem;font-weight:600;transition:opacity .15s,transform .15s;display:inline-flex}.ta-btn-primary{background:var(--ta-indigo);color:#fff;justify-content:center;width:100%}.ta-btn-primary:hover:not(:disabled){opacity:.88;transform:translateY(-1px)}.ta-btn-primary:disabled{opacity:.4;cursor:not-allowed;transform:none}.ta-btn-save{color:#fff;background:#16a34a;border-radius:10px;padding:11px 28px;font-size:.88rem}.ta-btn-save:hover:not(:disabled){opacity:.88;transform:translateY(-1px)}.ta-btn-save:disabled{opacity:.4;cursor:not-allowed;transform:none}.ta-error{color:#dc2626;background:#fef2f2;border:1px solid #fecaca;border-radius:10px;margin-bottom:16px;padding:12px 16px;font-size:.83rem;font-weight:600}.ta-stats-row{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px;display:grid}.ta-stat-card{background:var(--ta-white);border:1px solid var(--ta-border);border-radius:12px;align-items:center;gap:12px;padding:14px 16px;display:flex;box-shadow:0 1px 4px #0000000a}.ta-stat-card-icon{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.ta-stat-card-icon.total{color:#7c3aed;background:#ede9fe}.ta-stat-card-icon.present{color:#16a34a;background:#dcfce7}.ta-stat-card-icon.absent{color:#dc2626;background:#fee2e2}.ta-stat-card-icon.leave{color:#d97706;background:#fef3c7}.ta-stat-card-value{color:var(--ta-text);font-size:1.45rem;font-weight:800;line-height:1}.ta-stat-card-label{color:var(--ta-muted);text-transform:uppercase;letter-spacing:.4px;margin-top:3px;font-size:.7rem;font-weight:600}.ta-stat-card-pct{margin-top:2px;font-size:.71rem;font-weight:700}.ta-stat-card-pct.good{color:#16a34a}.ta-stat-card-pct.bad{color:#dc2626}.ta-stat-card-pct.warn{color:#d97706}.ta-roster-panel{background:var(--ta-white);border:1px solid var(--ta-border);border-radius:16px;margin-bottom:18px;overflow:hidden;box-shadow:0 2px 10px #0000000f}.ta-roster-header{border-bottom:1px solid var(--ta-border);background:#fafbfc;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;display:flex}.ta-roster-title-block{flex-direction:column;gap:6px;display:flex}.ta-roster-title{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ta-class-badge{background:var(--ta-indigo);color:#fff;border-radius:20px;align-items:center;gap:5px;padding:4px 12px;font-size:.83rem;font-weight:700;display:inline-flex}.ta-date-badge{color:var(--ta-slate);border:1px solid var(--ta-border);background:#f1f5f9;border-radius:20px;align-items:center;gap:5px;padding:4px 12px;font-size:.76rem;font-weight:600;display:inline-flex}.ta-saved-badge{color:#15803d;background:#dcfce7;border:1px solid #86efac;border-radius:20px;align-items:center;gap:4px;padding:3px 10px;font-size:.71rem;font-weight:700;display:inline-flex}.ta-quick-actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.ta-quick-label{color:var(--ta-muted);white-space:nowrap;font-size:.71rem;font-weight:700}.ta-quick-btn{cursor:pointer;border:1.5px solid;border-radius:20px;padding:5px 13px;font-family:inherit;font-size:.74rem;font-weight:700;transition:transform .12s}.ta-quick-btn:hover{transform:scale(1.05)}.ta-progress-wrap{padding:0}.ta-progress-track{background:#f1f5f9;height:4px;display:flex;overflow:hidden}.ta-progress-present{background:var(--ta-green);height:100%;transition:width .5s}.ta-progress-leave{background:var(--ta-amber);height:100%;transition:width .5s}.ta-progress-absent{background:var(--ta-red);height:100%;transition:width .5s}.ta-list-head{border-bottom:1px solid var(--ta-border);background:#f4f6fb;align-items:center;gap:12px;padding:10px 28px;display:flex}.ta-list-head span{color:var(--ta-muted);text-transform:uppercase;letter-spacing:.55px;font-size:.66rem;font-weight:700}.ta-lh-gr{flex-shrink:0;width:60px}.ta-lh-av{flex-shrink:0;width:38px}.ta-lh-name{flex:1}.ta-lh-act{text-align:center;flex-shrink:0;width:220px}.ta-student-list{flex-direction:column;gap:6px;padding:14px 14px 10px;display:flex}.ta-student-row{background:#fff;border:1.5px solid #0000;border-radius:12px;align-items:center;gap:12px;padding:10px 14px;transition:box-shadow .15s,transform .12s,border-color .15s;display:flex;box-shadow:0 1px 4px #0000000d}.ta-student-row:hover{transform:translateY(-1px);box-shadow:0 4px 16px #0000001a}.ta-row-present{background:linear-gradient(135deg,#f0fff4 0%,#fff 60%);border-color:#86efac}.ta-row-absent{background:linear-gradient(135deg,#fff5f5 0%,#fff 60%);border-color:#fca5a5}.ta-row-leave{background:linear-gradient(135deg,#fffbeb 0%,#fff 60%);border-color:#fde68a}.ta-roll{flex-shrink:0;align-items:center;width:60px;display:flex}.ta-roll-no{color:var(--ta-slate);letter-spacing:.2px;text-overflow:ellipsis;white-space:nowrap;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;max-width:56px;padding:3px 8px;font-size:.68rem;font-weight:800;display:inline-block;overflow:hidden}.ta-avatar{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;font-size:.73rem;font-weight:800;display:flex;box-shadow:0 2px 6px #00000026}.ta-row-present .ta-avatar{outline-offset:2px;outline:2px solid #86efac}.ta-row-absent .ta-avatar{outline-offset:2px;outline:2px solid #fca5a5}.ta-row-leave .ta-avatar{outline-offset:2px;outline:2px solid #fde68a}.ta-student-info{flex:1;min-width:0}.ta-student-name{color:var(--ta-text);white-space:nowrap;text-overflow:ellipsis;font-size:.86rem;font-weight:700;display:block;overflow:hidden}.ta-student-id{color:var(--ta-muted);font-size:.69rem;font-weight:500}.ta-toggle{flex-shrink:0;gap:3px;display:flex}.ta-toggle-btn{border:1.5px solid var(--ta-border);color:var(--ta-slate);cursor:pointer;background:#f8fafc;border-radius:20px;align-items:center;gap:4px;padding:5px 12px;font-family:inherit;font-size:.73rem;font-weight:600;transition:all .13s;display:inline-flex}.ta-toggle-btn:hover{color:var(--ta-indigo);background:#eef2ff;border-color:#a5b4fc}.ta-toggle-active{font-weight:700;box-shadow:0 2px 8px #0000001f}.ta-remark-input{background:#fffdf0;border:1.5px solid #fde68a;border-radius:8px;outline:none;flex:180px;min-width:150px;padding:6px 10px;font-family:inherit;font-size:.79rem;transition:border .15s}.ta-remark-input:focus{border-color:var(--ta-amber);background:#fff;box-shadow:0 0 0 3px #f59e0b1f}.ta-submit-bar{z-index:10;background:var(--ta-white);border:1px solid var(--ta-border);padding:15px 20px;padding-bottom:calc(15px + env(safe-area-inset-bottom));border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;transition:border-color .2s,box-shadow .2s;display:flex;position:sticky;bottom:0;box-shadow:0 -2px 16px #00000014}.ta-submit-bar--dirty{border-color:#f59e0b;box-shadow:0 -2px 20px #f59e0b2e,0 2px 10px #0000000f}.ta-submit-summary{flex-direction:column;gap:4px;display:flex}.ta-submit-count{color:var(--ta-text);font-size:.85rem;font-weight:600}.ta-submit-note{color:#d97706;align-items:center;gap:4px;font-size:.72rem;font-weight:600;display:inline-flex}.ta-submit-unsaved{color:#b45309;background:#fef3c7;border:1px solid #fde68a;border-radius:20px;align-items:center;gap:5px;padding:4px 10px;font-size:.75rem;font-weight:700;animation:1.8s ease-in-out infinite ta-pulse;display:inline-flex}@keyframes ta-pulse{0%,to{opacity:1}50%{opacity:.65}}.ta-save-msg{border-radius:10px;align-items:center;gap:8px;margin-bottom:14px;padding:12px 16px;font-size:.83rem;font-weight:600;display:flex}.ta-save-ok{color:#15803d;background:#f0fdf4;border:1px solid #bbf7d0}.ta-save-err{color:#dc2626;background:#fef2f2;border:1px solid #fecaca}.ta-spin{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;flex-shrink:0;width:13px;height:13px;animation:.65s linear infinite ta-spin}@keyframes ta-spin{to{transform:rotate(360deg)}}.ta-empty{text-align:center;background:var(--ta-white);border:1.5px dashed var(--ta-border);border-radius:14px;padding:64px 24px}.ta-empty-icon{color:#7c3aed;background:#ede9fe;border-radius:50%;justify-content:center;align-items:center;width:80px;height:80px;margin:0 auto 16px;display:flex}.ta-empty h3{color:#334155;margin:0 0 8px;font-size:1rem;font-weight:700}.ta-empty p{color:var(--ta-muted);max-width:320px;margin:0 auto;font-size:.82rem;line-height:1.6}@media (width<=860px){.ta-stats-row{grid-template-columns:repeat(2,1fr)}}@media (width<=600px){.ta-root{padding:12px}.ta-selector-body{padding:14px}.ta-stats-row{grid-template-columns:repeat(2,1fr);gap:8px}.ta-student-row{gap:9px;padding:10px 14px}.ta-roster-header{padding:13px 14px}.ta-list-head{padding:8px 14px}.ta-lh-act{width:auto}.ta-toggle-btn span{display:none}}@media (width<=480px){.ta-root{padding:8px}.ta-page-title{font-size:1.15rem}.ta-page-sub{font-size:.75rem}.ta-page-icon{width:36px;height:36px}.ta-selector-header{padding:10px 14px}.ta-selector-body{padding:10px 12px}.ta-sel-row{gap:8px}.ta-sel-group{min-width:110px}.ta-input{padding:7px 9px;font-size:.78rem}.ta-btn{min-height:44px;padding:8px 14px}.ta-btn-save{padding:10px 20px;font-size:.82rem}.ta-stat-card{padding:10px 12px}.ta-stat-card-value{font-size:1.2rem}.ta-stat-card-label{font-size:.64rem}.ta-student-row{gap:8px;padding:8px 10px}.ta-student-name{font-size:.8rem}.ta-student-id{font-size:.64rem}.ta-avatar{width:32px;height:32px;font-size:.68rem}.ta-toggle-btn{min-height:36px;padding:4px 10px;font-size:.68rem}.ta-remark-input{min-width:120px;padding:5px 8px;font-size:.74rem}.ta-submit-bar{border-radius:10px;padding:12px 14px}.ta-submit-count{font-size:.78rem}.ta-class-badge{padding:3px 10px;font-size:.76rem}.ta-date-badge{padding:3px 10px;font-size:.7rem}.ta-quick-btn{min-height:36px;padding:4px 10px;font-size:.68rem}}.tr-shell{box-sizing:border-box;background:#f8fafc;min-height:100%;padding:24px 28px}.tr-embedded{padding:20px 24px}.tr-page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:1.4rem;display:flex}.tr-page-title-block{align-items:center;gap:12px;display:flex}.tr-page-icon{color:#fff;background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;display:flex}.tr-page-title{color:#1e293b;margin:0;font-size:1.25rem;font-weight:800}.tr-page-sub{color:#64748b;margin:2px 0 0;font-size:.8rem}.tr-filter-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;margin-bottom:1.2rem;padding:18px 20px;box-shadow:0 2px 8px #0000000a}.tr-filters{flex-wrap:wrap;gap:14px;display:flex}.tr-filter-group{flex-direction:column;flex:150px;gap:5px;min-width:150px;display:flex}.tr-filter-label{color:#64748b;text-transform:uppercase;letter-spacing:.04em;font-size:.72rem;font-weight:700}.tr-select{color:#1e293b;cursor:pointer;background:#f8fafc;border:1px solid #cbd5e1;border-radius:8px;outline:none;padding:7px 10px;font-size:.85rem;transition:border-color .15s}.tr-select:focus{background:#fff;border-color:#6366f1}.tr-select:disabled{opacity:.5;cursor:not-allowed}.tr-msg{border-radius:10px;margin-bottom:1rem;padding:10px 16px;font-size:.84rem;font-weight:600}.tr-msg-ok{color:#15803d;background:#dcfce7;border:1px solid #86efac}.tr-msg-err{color:#b91c1c;background:#fee2e2;border:1px solid #fca5a5}.tr-loading{color:#64748b;flex-direction:column;align-items:center;gap:12px;padding:60px 20px;font-size:.85rem;display:flex}.tr-spinner{border:3px solid #e2e8f0;border-top-color:#6366f1;border-radius:50%;width:32px;height:32px;animation:.75s linear infinite tr-spin}@keyframes tr-spin{to{transform:rotate(360deg)}}.tr-empty-state{color:#94a3b8;text-align:center;flex-direction:column;align-items:center;gap:12px;padding:60px 20px;font-size:.85rem;display:flex}.tr-table-wrap{background:#fff;border:1px solid #e2e8f0;border-radius:14px;overflow:hidden;box-shadow:0 2px 8px #0000000d}.tr-table-header-row{color:#fff;background:linear-gradient(135deg,#4f46e5,#7c3aed);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:12px 18px;display:flex}.tr-table-subtitle{font-size:.84rem;font-weight:700}.tr-table-note{opacity:.85;font-size:.72rem}.tr-table-scroll{overflow-x:auto}.tr-table{border-collapse:collapse;width:100%;font-size:.82rem}.tr-table thead th{color:#475569;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;text-align:center;background:#f1f5f9;border-bottom:2px solid #e2e8f0;padding:10px 8px;font-size:.74rem;font-weight:700}.tr-th-fixed{text-align:left!important}.tr-th-roll{min-width:70px}.tr-th-name{min-width:180px}.tr-th-total{color:#4f46e5!important;background:#ede9fe!important}.tr-th-out100{color:#1d4ed8!important;background:#dbeafe!important}.tr-th-grade{color:#15803d!important;background:#dcfce7!important}.tr-table tbody td{vertical-align:middle;text-align:center;border-bottom:1px solid #f1f5f9;padding:6px 7px}.tr-table tbody tr:hover{background:#f8fafc}.tr-row-dirty{background:#fefce8!important}.tr-td-roll{text-align:left;color:#6366f1;padding-left:14px;font-size:.8rem;font-weight:700}.tr-td-name{text-align:left;color:#1e293b;white-space:nowrap;min-width:180px;padding-left:10px;font-weight:600}.tr-td-total{color:#4f46e5;background:#f5f3ff;font-weight:700}.tr-td-out100{color:#1d4ed8;font-weight:800;background:#eff6ff!important}.tr-cell-input{text-align:center;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:6px;outline:none;width:58px;padding:4px 6px;font-size:.82rem;transition:border-color .15s,box-shadow .15s}.tr-cell-input:focus{border-color:#6366f1;box-shadow:0 0 0 2px #6366f12e}.tr-cell-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.tr-cell-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.tr-cell-input[type=number]{-moz-appearance:textfield}.tr-grade-chip{letter-spacing:.03em;border-radius:999px;padding:2px 9px;font-size:.76rem;font-weight:800;display:inline-block}.tr-grade-A{color:#15803d;background:#dcfce7}.tr-grade-B{color:#1d4ed8;background:#dbeafe}.tr-grade-C{color:#854d0e;background:#fef9c3}.tr-grade-D{color:#9a3412;background:#fed7aa}.tr-grade-E{color:#b91c1c;background:#fee2e2}.tr-save-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#4f46e5,#7c3aed);border:none;border-radius:10px;padding:9px 22px;font-size:.85rem;font-weight:700;transition:opacity .15s}.tr-save-btn:disabled{opacity:.5;cursor:not-allowed}.tr-bottom-bar{background:#f8fafc;border-top:1px solid #e2e8f0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:12px 18px;display:flex}.tr-bottom-info{color:#64748b;font-size:.82rem}@media (width<=768px){.tr-shell{padding:14px 12px}.tr-filter-group{flex:140px}.tr-page-header{flex-direction:column;align-items:flex-start}}@media (width<=480px){.tr-shell{padding:10px 8px}.tr-filter-card{padding:12px 14px}.tr-filters{gap:10px}.tr-filter-group{min-width:120px}.tr-select{padding:6px 8px;font-size:.78rem}.tr-table{font-size:.75rem}.tr-table thead th{padding:8px 6px;font-size:.68rem}.tr-table tbody td{padding:5px}.tr-cell-input{width:48px;padding:3px 4px;font-size:.75rem}.tr-page-title{font-size:1.05rem}.tr-save-btn{min-height:44px;padding:8px 16px;font-size:.8rem}.tr-bottom-bar{padding:10px 12px}.tr-grade-chip{padding:2px 7px;font-size:.7rem}}.sp-root{color:#1e2532;background:#f5f6fa;flex-direction:column;height:100%;min-height:0;font-family:Inter,Segoe UI,system-ui,sans-serif;font-size:13px;display:flex}.sp-header{padding:0 20px;padding-top:env(safe-area-inset-top);background:#fff;border-bottom:1px solid #e4e7ef;flex-shrink:0;align-items:center;gap:12px;min-height:56px;display:flex;box-shadow:0 1px 4px #0000000a}.sp-back-btn{color:#5a6375;cursor:pointer;background:#f8f9fc;border:1px solid #d1d5e0;border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;transition:all .15s;display:flex}.sp-back-btn:hover{color:#4f46e5;background:#eef0f8;border-color:#4f46e5}.sp-step-badge{color:#4f46e5;letter-spacing:.6px;white-space:nowrap;background:#eef0fb;border-radius:20px;flex-shrink:0;padding:3px 8px;font-size:10px;font-weight:700}.sp-title{color:#1e2532;white-space:nowrap;flex-shrink:0;font-size:14px;font-weight:700}.sp-title-year{color:#4f46e5;font-weight:800}.sp-divider{background:#e4e7ef;flex-shrink:0;width:1px;height:22px}.sp-year-group{flex-shrink:0;align-items:center;gap:8px;display:flex}.sp-year-label{color:#9aa3b5;text-transform:uppercase;letter-spacing:.5px;font-size:10px;font-weight:700}.sp-year-select{appearance:none;color:#374151;cursor:pointer;background:#f8f9fc url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%239aa3b5' stroke-width='2'%3E%3Cpath stroke-linecap='round' d='M19 9l-7 7-7-7'/%3E%3C/svg%3E") right 6px center/13px no-repeat;border:1.5px solid #d1d5e0;border-radius:7px;height:30px;padding:0 24px 0 8px;font-family:inherit;font-size:12px;font-weight:600;transition:border-color .15s}.sp-year-select:focus{border-color:#4f46e5;outline:none;box-shadow:0 0 0 3px #4f46e51f}.sp-year-select.to-year{color:#065f46;background-color:#f0fdf9;border-color:#6ee7b7}.sp-year-select.conflict{color:#b91c1c;background-color:#fff5f5;border-color:#fca5a5}.sp-arrow-icon{color:#c5cad8;flex-shrink:0;font-size:15px}.sp-spacer{flex:1}.sp-search-wrap{background:#f5f6fa;border:1.5px solid #e4e7ef;border-radius:8px;align-items:center;gap:7px;min-width:200px;height:32px;padding:0 10px;transition:border-color .15s,box-shadow .15s;display:flex}.sp-search-wrap:focus-within{background:#fff;border-color:#4f46e5;box-shadow:0 0 0 3px #4f46e51a}.sp-search-icon{color:#9aa3b5;flex-shrink:0;width:14px;height:14px}.sp-search-input{color:#374151;background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:12px}.sp-search-input::placeholder{color:#b4bac8}.sp-search-clear{cursor:pointer;color:#b4bac8;background:0 0;border:none;padding:0;font-size:11px;line-height:1}.sp-search-clear:hover{color:#5a6375}.sp-chips{flex-shrink:0;align-items:center;gap:6px;display:flex}.sp-chip{white-space:nowrap;border-radius:20px;align-items:center;gap:4px;padding:4px 10px;font-size:11px;font-weight:600;display:flex}.sp-chip-total{color:#5a6375;background:#f0f1f5}.sp-chip-sel{color:#059669;background:#ecfdf5;border:1px solid #a7f3d0}.sp-chip-excl{color:#dc2626;background:#fff5f5;border:1px solid #fecaca}.sp-chip-n{font-size:13px;font-weight:800}.sp-count-badge{color:#fff;text-align:center;background:linear-gradient(135deg,#4f46e5,#6d28d9);border-radius:10px;flex-shrink:0;min-width:58px;padding:5px 12px;box-shadow:0 2px 6px #4f46e559}.sp-count-badge-n{font-size:18px;font-weight:900;line-height:1}.sp-count-badge-lbl{letter-spacing:.9px;opacity:.7;margin-top:1px;font-size:8.5px;font-weight:700}.sp-tabs{scrollbar-width:none;background:#fff;border-bottom:1px solid #e4e7ef;flex-shrink:0;display:flex;overflow-x:auto}.sp-tabs::-webkit-scrollbar{display:none}.sp-tab{color:#7a8399;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;flex-shrink:0;align-items:center;gap:5px;padding:9px 14px;font-family:inherit;font-size:12px;font-weight:500;transition:color .15s;display:flex}.sp-tab:hover{color:#374151}.sp-tab.active{color:#4f46e5;border-bottom-color:#4f46e5;font-weight:700}.sp-tab-count{color:#7a8399;background:#f0f1f5;border-radius:20px;padding:1px 6px;font-size:10px;font-weight:700}.sp-tab.active .sp-tab-count{color:#4f46e5;background:#eef0fb}.sp-alert{border-radius:8px;flex-shrink:0;align-items:center;gap:8px;margin:10px 16px;padding:9px 14px;font-size:12px;font-weight:600;display:flex}.sp-alert-ok{color:#065f46;background:#ecfdf5;border:1px solid #a7f3d0}.sp-alert-err{color:#991b1b;background:#fff5f5;border:1px solid #fecaca}.sp-loading{color:#7a8399;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;font-size:13px;display:flex}.sp-spinner{border:3px solid #e4e7ef;border-top-color:#4f46e5;border-radius:50%;width:32px;height:32px;animation:.7s linear infinite sp-spin}.sp-table-wrap{-webkit-overflow-scrolling:touch;flex:1;min-height:0;overflow:auto}.sp-table{border-collapse:collapse;width:100%;font-size:12px}.sp-table thead th{z-index:10;text-transform:uppercase;letter-spacing:.45px;white-space:nowrap;color:#6b7280;text-align:left;background:#f0f1f6;border-bottom:2px solid #d1d5e0;padding:8px 10px;font-size:10.5px;font-weight:700;position:sticky;top:0}.sp-table thead th.center{text-align:center}.sp-table thead th.chk-col{text-align:center;width:40px}.sp-th-group{color:#4338ca!important;text-align:center!important;background:#eef0fb!important;border-left:2px solid #c7d2fe!important;font-size:11px!important}.sp-th-sub{color:#6d28d9!important;text-align:center!important;background:#f5f3ff!important;border-left:1px solid #ddd6fe!important}.sp-table tbody tr{border-bottom:1px solid #edf0f7;transition:background .12s}.sp-table tbody tr:nth-child(2n){background:#fafbfd}.sp-table tbody tr:nth-child(odd){background:#fff}.sp-table tbody tr:hover{background:#f0f1fb}.sp-table tbody tr.excluded{opacity:.45}.sp-table td{vertical-align:middle;white-space:nowrap;padding:7px 10px}.sp-table td.center{text-align:center}.sp-td-promote{text-align:center;background:#eef0fb59;border-left:1px solid #ddd6fe}.sp-student-cell{align-items:center;gap:9px;display:flex}.sp-avatar{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:10px;font-weight:800;display:flex;box-shadow:0 1px 3px #00000026}.sp-student-name{color:#1e2532;font-size:12.5px;font-weight:600;line-height:1.25}.sp-student-no{color:#9aa3b5;margin-top:1px;font-size:10px}.sp-badge{border-radius:5px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.sp-badge-std{color:#3730a3;background:#eef0fb}.sp-badge-batch{color:#374151;background:#f0f1f5}.sp-badge-new{color:#854d0e;background:#fef9c3;border-radius:20px}.sp-badge-reg{color:#065f46;background:#d1fae5;border-radius:20px}.sp-select{color:#374151;cursor:pointer;background:#fff;border:1.5px solid #d1d5e0;border-radius:6px;width:100%;max-width:68px;height:26px;padding:0 4px;font-family:inherit;font-size:11px;font-weight:700;transition:border-color .15s,background .15s}.sp-select:focus{border-color:#4f46e5;outline:none;box-shadow:0 0 0 2px #4f46e526}.sp-select:disabled{opacity:.4;cursor:not-allowed}.sp-select.changed-indigo{color:#3730a3;background:#eef0fb;border-color:#818cf8}.sp-select.changed-amber{color:#78350f;background:#fffbeb;border-color:#fbbf24}.sp-dot{border-radius:50%;width:5px;height:5px;margin:2px auto 0;display:block}.sp-dot-indigo{background:#4f46e5}.sp-dot-amber{background:#f59e0b}.sp-sr{color:#b4bac8;font-variant-numeric:tabular-nums;font-size:11px}.sp-empty{text-align:center;color:#9aa3b5;padding:60px 20px;font-size:13px}.sp-footer{padding:10px 20px;padding-bottom:calc(10px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid #e4e7ef;flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;display:flex;box-shadow:0 -1px 4px #0000000a}.sp-footer-note{color:#9aa3b5;font-size:12px}.sp-footer-note strong{color:#374151}.sp-footer-note .hl{color:#4f46e5;font-weight:800}.sp-footer-ok{color:#059669;font-weight:600}.sp-footer-actions{align-items:center;gap:8px;display:flex}.sp-btn-cancel{color:#5a6375;cursor:pointer;background:#fff;border:1.5px solid #d1d5e0;border-radius:8px;height:34px;padding:0 16px;font-family:inherit;font-size:12px;font-weight:600;transition:all .15s}.sp-btn-cancel:hover{background:#f5f6fa;border-color:#b4bac8}.sp-btn-proceed{color:#fff;cursor:pointer;background:linear-gradient(135deg,#4f46e5,#6d28d9);border:none;border-radius:8px;align-items:center;gap:7px;height:34px;padding:0 20px;font-family:inherit;font-size:12px;font-weight:700;transition:all .15s;display:inline-flex;box-shadow:0 2px 6px #4f46e559}.sp-btn-proceed:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 4px 12px #4f46e566}.sp-btn-proceed:active:not(:disabled){transform:translateY(0)}.sp-btn-proceed:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.sp-btn-spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:13px;height:13px;animation:.65s linear infinite sp-spin;display:inline-block}.sp-conflict-warn{color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:6px;flex-shrink:0;padding:3px 8px;font-size:11px;font-weight:600}@media (width<=900px){.sp-header{flex-wrap:wrap;gap:8px;height:auto;min-height:56px;padding:8px 16px}.sp-search-wrap{flex:1;min-width:160px}.sp-chips{flex-wrap:wrap}}@media (width<=768px){.sp-header{gap:6px;padding:8px 12px}.sp-title{font-size:13px}.sp-year-group{flex-wrap:wrap;gap:6px}.sp-search-wrap{min-width:140px}.sp-count-badge{min-width:48px;padding:4px 8px}.sp-count-badge-n{font-size:16px}.sp-table{font-size:11px}.sp-table td{padding:6px 8px}.sp-table thead th{padding:7px 8px;font-size:10px}.sp-footer{flex-direction:column;align-items:stretch;gap:8px;padding:10px 12px}.sp-footer-actions{justify-content:stretch}.sp-footer-actions .sp-btn-cancel,.sp-footer-actions .sp-btn-proceed{flex:1}}@media (width<=480px){.sp-header{padding:6px 10px}.sp-title{font-size:12px}.sp-step-badge{padding:2px 6px;font-size:9px}.sp-divider{display:none}.sp-year-group{gap:4px}.sp-year-label{font-size:9px}.sp-year-select{height:28px;padding:0 20px 0 6px;font-size:11px}.sp-arrow-icon{font-size:13px}.sp-search-wrap{min-width:120px}.sp-chips{gap:4px}.sp-chip{padding:3px 8px;font-size:10px}.sp-tab{padding:8px 10px;font-size:11px}.sp-table{font-size:10.5px}.sp-table td{padding:5px 6px}.sp-table thead th{letter-spacing:.3px;padding:6px;font-size:9.5px}.sp-student-name{font-size:11.5px}.sp-student-no{font-size:9px}.sp-avatar{width:24px;height:24px;font-size:9px}.sp-select{max-width:58px;height:24px;font-size:10px}.sp-badge{padding:2px 6px;font-size:10px}.sp-alert{margin:8px 10px;padding:8px 10px;font-size:11px}.sp-footer{padding:8px 10px}.sp-footer-note{font-size:11px}.sp-btn-cancel{height:32px;padding:0 12px;font-size:11px}.sp-btn-proceed{height:32px;padding:0 14px;font-size:11px}}.ea-shell{color:#1e293b;background:#f5f7fa;flex-direction:column;min-height:100%;font-family:Segoe UI,system-ui,sans-serif;font-size:13.5px;display:flex}.ea-header{background:#fff;border-bottom:1.5px solid #e2e8f0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 24px;display:flex}.ea-header-left{color:#0a5568;align-items:center;gap:10px;display:flex}.ea-header-left h2{color:#1e293b;margin:0;font-size:1.05rem;font-weight:700}.ea-header-right{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.ea-tabs{border:1.5px solid #e2e8f0;border-radius:6px;display:flex;overflow:hidden}.ea-tab{color:#64748b;cursor:pointer;background:#fff;border:none;padding:6px 14px;font-size:12.5px;font-weight:500;transition:background .15s,color .15s}.ea-tab:not(:last-child){border-right:1.5px solid #e2e8f0}.ea-tab:hover{color:#1e293b;background:#f1f5f9}.ea-tab-active{color:#fff!important;background:#0a5568!important}.ea-body{flex-direction:column;flex:1;gap:14px;padding:20px 24px;display:flex}.ea-controls{background:#fff;border:1.5px solid #e2e8f0;border-radius:8px;flex-wrap:wrap;align-items:flex-end;gap:12px;padding:14px 16px;display:flex}.ea-control-group{flex-direction:column;gap:4px;display:flex}.ea-control-group label{text-transform:uppercase;letter-spacing:.04em;color:#64748b;font-size:11px;font-weight:600}.ea-input,.ea-select{color:#1e293b;background:#fff;border:1.5px solid #cbd5e1;border-radius:6px;outline:none;min-width:140px;padding:6px 10px;font-size:13px}.ea-input:focus,.ea-select:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.ea-bulk-btns{align-self:flex-end;gap:8px;display:flex}.ea-btn{cursor:pointer;border:none;border-radius:6px;padding:7px 16px;font-size:12.5px;font-weight:600;transition:opacity .15s,transform .1s}.ea-btn:hover{opacity:.88}.ea-btn:active{transform:scale(.97)}.ea-btn:disabled{opacity:.55;cursor:not-allowed}.ea-btn-primary{color:#fff;background:#0a5568}.ea-btn-green{color:#fff;background:#22c55e}.ea-btn-red{color:#fff;background:#ef4444}.ea-btn-sm{color:#334155;background:#f1f5f9;border:1.5px solid #e2e8f0;padding:5px 12px;font-size:12px}.ea-stats{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ea-stat-chip{border-radius:20px;padding:4px 12px;font-size:12.5px;font-weight:500}.ea-chip-total{color:#334155;background:#f1f5f9}.ea-chip-present{color:#166534;background:#dcfce7}.ea-chip-absent{color:#991b1b;background:#fee2e2}.ea-chip-leave{color:#854d0e;background:#fef9c3}.ea-badge-saved{color:#0a5568;background:#c5e9f3;border-radius:20px;padding:4px 12px;font-size:12px;font-weight:600}.ea-alert{border-radius:6px;padding:10px 16px;font-size:13px;font-weight:500}.ea-alert-ok{color:#166534;background:#dcfce7}.ea-alert-err{color:#991b1b;background:#fee2e2}.ea-loading,.ea-empty{text-align:center;color:#94a3b8;padding:40px;font-size:13.5px}.ea-table-wrap{background:#fff;border:1.5px solid #e2e8f0;border-radius:8px;overflow-x:auto}.ea-table{border-collapse:collapse;width:100%;font-size:13px}.ea-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:#64748b;white-space:nowrap;background:#f8fafc;border-bottom:1.5px solid #e2e8f0;padding:10px 12px;font-size:11px;font-weight:700}.ea-table td{vertical-align:middle;border-bottom:1px solid #f1f5f9;padding:9px 12px}.ea-table tbody tr:hover{background:#f8fafc}.ea-table tbody tr:last-child td{border-bottom:none}.ea-td-num{color:#94a3b8;text-align:center;width:38px;font-size:12px}.ea-td-name{white-space:nowrap;align-items:center;gap:8px;display:flex}.ea-avatar{object-fit:cover;border-radius:50%;width:28px;height:28px}.ea-avatar-placeholder{color:#0a5568;background:#c5e9f3;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:12px;font-weight:700;display:flex}.ea-status-select{cursor:pointer;border:1.5px solid #cbd5e1;border-radius:5px;outline:none;padding:4px 8px;font-size:12.5px;font-weight:600}.ea-s-present{color:#166534;background:#dcfce7;border-color:#86efac}.ea-s-absent{color:#991b1b;background:#fee2e2;border-color:#fca5a5}.ea-s-leave{color:#854d0e;background:#fef9c3;border-color:#fde047}.ea-s-holiday{color:#5b21b6;background:#ede9fe;border-color:#c4b5fd}.ea-status-badge{border-radius:12px;padding:2px 10px;font-size:11.5px;font-weight:600;display:inline-block}.ea-remark-input{border:1.5px solid #e2e8f0;border-radius:5px;outline:none;width:140px;padding:4px 8px;font-size:12.5px}.ea-remark-input:focus{border-color:#3b82f6}.ea-td-actions{white-space:nowrap}.ea-btn-icon{cursor:pointer;background:0 0;border:none;border-radius:4px;padding:3px 6px;font-size:14px;transition:background .12s}.ea-btn-icon:hover{background:#f1f5f9}.ea-icon-edit{color:#0d7390}.ea-icon-del{color:#ef4444}.ea-icon-save{color:#16a34a}.ea-icon-cancel{color:#64748b}.ea-footer{justify-content:flex-end;padding:4px 0;display:flex}.ea-hist-meta{color:#64748b;font-size:12.5px}.ea-pagination{color:#334155;justify-content:center;align-items:center;gap:12px;padding:8px 0;font-size:13px;display:flex}@media (width<=700px){.ea-header{flex-direction:column;align-items:flex-start}.ea-controls{flex-direction:column}.ea-table th,.ea-table td{padding:7px 8px;font-size:12px}}@media (width<=480px){.ea-shell{font-size:12.5px}.ea-header{padding:10px 14px}.ea-body{gap:10px;padding:14px}.ea-controls{padding:10px 12px}.ea-input,.ea-select{min-width:120px;font-size:12px}.ea-table{font-size:11.5px}.ea-table th,.ea-table td{padding:6px}.ea-btn{min-height:44px;padding:6px 12px}.ea-stat-chip{padding:3px 10px;font-size:11.5px}.ea-remark-input{width:110px;font-size:11.5px}.ea-tab{padding:5px 10px;font-size:11.5px}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.85;transform:scale(1.25)}}.mod-root{-webkit-font-smoothing:antialiased;color:#1e293b;background:#f5f7fa;min-height:100%;font-family:Inter,Segoe UI,system-ui,sans-serif}.mod-page-header{background:linear-gradient(135deg,#0d5c73 0%,#0a4a5c 100%);border-bottom:3px solid #0d7390;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.6rem 2rem 1.4rem;display:flex}.mod-page-title{color:#fff;letter-spacing:-.02em;align-items:center;gap:.5rem;margin:0 0 .3rem;font-size:1.4rem;font-weight:800;display:flex}.mod-page-subtitle{color:#94b8d8;margin:0;font-size:.78rem;font-weight:500}.mod-page-actions{flex-wrap:wrap;align-items:center;gap:.55rem;display:flex}.mod-btn{cursor:pointer;letter-spacing:.01em;white-space:nowrap;border:none;border-radius:9px;align-items:center;gap:.38rem;padding:.5rem 1.1rem;font-size:.78rem;font-weight:700;transition:all .18s;display:inline-flex}.mod-btn-primary{color:#fff;background:linear-gradient(135deg,#0d7390,#0a5568);box-shadow:0 3px 14px #0d739059}.mod-btn-primary:hover{background:linear-gradient(135deg,#0a5568,#0a5568);transform:translateY(-1px);box-shadow:0 6px 20px #0d739066}.mod-btn-success{color:#fff;background:linear-gradient(135deg,#059669,#047857);box-shadow:0 3px 12px #0596694d}.mod-btn-success:hover{background:linear-gradient(135deg,#047857,#065f46);transform:translateY(-1px)}.mod-btn-danger{color:#fff;background:linear-gradient(135deg,#dc2626,#b91c1c);box-shadow:0 3px 12px #dc26264d}.mod-btn-danger:hover{background:linear-gradient(135deg,#b91c1c,#991b1b);transform:translateY(-1px)}.mod-btn-outline{color:#475569;background:#fff;border:1.5px solid #e2e8f0}.mod-btn-outline:hover{color:#0d7390;background:#e8f6fb;border-color:#0d7390}.mod-btn-ghost{color:#fff;background:#ffffff1a;border:1px solid #ffffff2e}.mod-btn-ghost:hover{background:#ffffff2e}.mod-btn-amber{color:#fff;background:linear-gradient(135deg,#d97706,#b45309);box-shadow:0 3px 12px #d977064d}.mod-btn-amber:hover{transform:translateY(-1px)}.mod-btn-sm{padding:.32rem .75rem;font-size:.72rem}.mod-btn-xs{border-radius:6px;padding:.22rem .6rem;font-size:.67rem}.mod-btn svg{flex-shrink:0}.mod-body{flex-direction:column;gap:1.4rem;padding:1.5rem 2rem 2.5rem;display:flex}.mod-kpi-strip{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;display:grid}.mod-kpi-card{background:#fff;border:1px solid #e8edf5;border-radius:14px;align-items:center;gap:.85rem;padding:1.1rem 1.3rem;transition:transform .18s,box-shadow .18s;display:flex;position:relative;overflow:hidden;box-shadow:0 2px 10px #0f172a0d}.mod-kpi-card:before{content:"";background:var(--kpi-color,#0d7390);border-radius:14px 14px 0 0;height:3px;position:absolute;top:0;left:0;right:0}.mod-kpi-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px #0f172a17}.mod-kpi-icon{background:var(--kpi-bg,#e8f6fb);width:44px;height:44px;color:var(--kpi-color,#0d7390);border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.mod-kpi-value{color:#0f172a;letter-spacing:-.03em;font-size:1.5rem;font-weight:800;line-height:1;display:block}.mod-kpi-label{color:#64748b;text-transform:uppercase;letter-spacing:.07em;margin-top:.25rem;font-size:.67rem;font-weight:600;display:block}.mod-card{background:#fff;border:1px solid #e8edf5;border-radius:14px;overflow:hidden;box-shadow:0 2px 10px #0f172a0d}.mod-card-header{border-bottom:1px solid #f1f5f9;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;padding:1rem 1.5rem .9rem;display:flex}.mod-card-title{color:#1e293b;align-items:center;gap:.4rem;margin:0;font-size:.93rem;font-weight:800;display:flex}.mod-card-body{padding:1.2rem 1.5rem}.mod-table-wrap{overflow-x:auto}.mod-table-scroll-top{background:#f1f5f9;border-radius:6px;height:16px;margin-bottom:.4rem;overflow:auto hidden}.mod-table-scroll-top::-webkit-scrollbar{height:8px}.mod-table-scroll-top::-webkit-scrollbar-thumb{background:#94a3b8;border-radius:999px}.mod-table-scroll-top::-webkit-scrollbar-track{background:#e2e8f0;border-radius:999px}.mod-table{border-collapse:collapse;width:100%;font-size:.82rem}.mod-table th{color:#64748b;text-transform:uppercase;letter-spacing:.07em;text-align:left;white-space:nowrap;background:#f8fafc;border-bottom:2px solid #e8edf5;padding:.75rem 1rem;font-size:.7rem;font-weight:700}.mod-table td{color:#334155;vertical-align:middle;border-bottom:1px solid #f1f5f9;padding:.78rem 1rem}.mod-table tbody tr:hover{background:#f8fbff}.mod-table tbody tr:last-child td{border-bottom:none}.mod-table td.strong{color:#0f172a;font-weight:700}.mod-badge{letter-spacing:.04em;white-space:nowrap;border-radius:999px;align-items:center;gap:.25rem;padding:.2rem .65rem;font-size:.67rem;font-weight:700;display:inline-flex}.mod-badge-pending{color:#b45309;background:#fef3c7;border:1px solid #fde68a}.mod-badge-approved{color:#065f46;background:#d1fae5;border:1px solid #a7f3d0}.mod-badge-rejected{color:#991b1b;background:#fee2e2;border:1px solid #fecaca}.mod-badge-active{color:#0a5568;background:#c5e9f3;border:1px solid #9dd6eb}.mod-badge-draft{color:#64748b;background:#f1f5f9;border:1px solid #e2e8f0}.mod-badge-published{color:#059669;background:#ecfdf5;border:1px solid #a7f3d0}.mod-badge-expired{color:#94a3b8;background:#f1f5f9;border:1px solid #e2e8f0}.mod-badge-high{color:#991b1b;background:#fee2e2;border:1px solid #fecaca}.mod-badge-medium{color:#854d0e;background:#fef9c3;border:1px solid #fde68a}.mod-badge-low{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0}.mod-badge-submitted{color:#5b21b6;background:#ede9fe;border:1px solid #ddd6fe}.mod-badge-graded{color:#065f46;background:#ecfdf5;border:1px solid #a7f3d0}.mod-modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0f172a8c;justify-content:center;align-items:center;padding:1rem;animation:.18s modFadeIn;display:flex;position:fixed;inset:0}@keyframes modFadeIn{0%{opacity:0}to{opacity:1}}.mod-modal{background:#fff;border-radius:18px;width:100%;max-width:540px;animation:.2s modSlideUp;overflow:hidden;box-shadow:0 24px 80px #0f172a38}.mod-modal-lg{max-width:760px}.mod-modal-xl{max-width:1000px}@keyframes modSlideUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.mod-modal-header{background:linear-gradient(135deg,#0d5c73,#0a4a5c);justify-content:space-between;align-items:center;padding:1.1rem 1.5rem;display:flex}.mod-modal-header h3{color:#fff;align-items:center;gap:.4rem;margin:0;font-size:1rem;font-weight:700;display:flex}.mod-modal-close{color:#fff;cursor:pointer;background:#ffffff1a;border:none;border-radius:8px;padding:.3rem .5rem;font-size:1.1rem;line-height:1;transition:background .15s}.mod-modal-close:hover{background:#fff3}.mod-modal-body{padding:1.5rem}.mod-modal-footer{border-top:1px solid #f1f5f9;justify-content:flex-end;gap:.6rem;padding:1rem 1.5rem;display:flex}.mod-form-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.mod-form-grid-3{grid-template-columns:1fr 1fr 1fr}.mod-form-full{grid-column:1/-1}.mod-form-group{flex-direction:column;gap:.35rem;display:flex}.mod-form-label{color:#475569;text-transform:uppercase;letter-spacing:.05em;font-size:.72rem;font-weight:700}.mod-form-input,.mod-form-select,.mod-form-textarea{color:#1e293b;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:9px;outline:none;padding:.55rem .85rem;font-family:inherit;font-size:.83rem;transition:border-color .18s,box-shadow .18s}.mod-form-input:focus,.mod-form-select:focus,.mod-form-textarea:focus{background:#fff;border-color:#0d7390;box-shadow:0 0 0 3px #0d73901a}.mod-form-textarea{resize:vertical;min-height:90px}.mod-filters{background:#fff;border:1px solid #e8edf5;border-radius:12px;flex-wrap:wrap;align-items:center;gap:.6rem;padding:.9rem 1.3rem;display:flex}.mod-filter-select{color:#334155;cursor:pointer;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:8px;outline:none;padding:.42rem .8rem;font-family:inherit;font-size:.78rem;transition:border-color .18s}.mod-filter-select:focus{border-color:#0d7390}.mod-search-input{color:#334155;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:8px;outline:none;width:100%;max-width:200px;padding:.42rem .85rem;font-family:inherit;font-size:.78rem;transition:border-color .18s}.mod-search-input:focus{border-color:#0d7390}.mod-filter-sep{margin-left:auto}.mod-empty{color:#94a3b8;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.8rem;padding:4rem 2rem;display:flex}.mod-empty svg{opacity:.35}.mod-empty h4{color:#64748b;margin:0;font-size:1rem;font-weight:700}.mod-empty p{max-width:320px;margin:0;font-size:.82rem;line-height:1.6}.mod-alert{border-radius:11px;align-items:flex-start;gap:.75rem;padding:.9rem 1.2rem;font-size:.82rem;font-weight:500;line-height:1.5;display:flex}.mod-alert-info{color:#0a5568;background:#e8f6fb;border:1px solid #9dd6eb}.mod-alert-success{color:#14532d;background:#f0fdf4;border:1px solid #bbf7d0}.mod-alert-warning{color:#92400e;background:#fffbeb;border:1px solid #fde68a}.mod-alert-danger{color:#7f1d1d;background:#fef2f2;border:1px solid #fecaca}.mod-timeline{margin:0;padding:0;list-style:none;position:relative}.mod-timeline:before{content:"";background:#e2e8f0;width:2px;position:absolute;top:0;bottom:0;left:16px}.mod-tl-item{gap:1rem;padding-bottom:1.2rem;display:flex;position:relative}.mod-tl-dot{z-index:1;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:.85rem;display:flex}.mod-tl-content{flex:1}.mod-tl-title{color:#1e293b;font-size:.82rem;font-weight:700}.mod-tl-sub{color:#94a3b8;margin-top:.18rem;font-size:.73rem}.mod-tt-grid{overflow-x:auto}.mod-tt-table{border-collapse:collapse;width:100%;min-width:700px}.mod-tt-table th{color:#7ec8e3;text-transform:uppercase;letter-spacing:.07em;text-align:center;background:linear-gradient(135deg,#0d5c73,#0a4a5c);border:1px solid #ffffff12;padding:.65rem .85rem;font-size:.69rem;font-weight:700}.mod-tt-table td{vertical-align:top;border:1px solid #e8edf5;padding:0}.mod-tt-period-label{color:#64748b;text-transform:uppercase;letter-spacing:.05em;text-align:center;background:#f8fafc;border-right:2px solid #e2e8f0;min-width:80px;padding:.6rem .8rem;font-size:.68rem;font-weight:700}.mod-tt-cell{cursor:pointer;flex-direction:column;justify-content:center;gap:.15rem;min-height:64px;padding:.5rem .7rem;transition:background .15s;display:flex}.mod-tt-cell:hover{background:#f0f7ff}.mod-tt-cell-subject{color:#1e293b;font-size:.78rem;font-weight:700}.mod-tt-cell-teacher{color:#64748b;font-size:.67rem}.mod-tt-cell-room{color:#94a3b8;font-size:.62rem}.mod-tt-cell-empty{opacity:.35;color:#94a3b8;text-align:center;justify-content:center;font-size:.67rem}.mod-tt-break{background:linear-gradient(90deg,#fef9c3 0%,#fff7ed 100%)}.mod-tt-break .mod-tt-cell-subject{color:#b45309}.mod-notif-wrap{display:inline-flex;position:relative}.mod-notif-btn{color:#fff;cursor:pointer;background:#ffffff14;border:1.5px solid #ffffff24;border-radius:10px;justify-content:center;align-items:center;width:38px;height:38px;transition:background .18s;display:flex;position:relative}.mod-notif-btn:hover{background:#ffffff29}.mod-notif-badge{color:#fff;background:#ef4444;border:2px solid #0a4a5c;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:.6rem;font-weight:800;animation:2s infinite modPulse;display:flex;position:absolute;top:-5px;right:-5px}@keyframes modPulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.mod-notif-panel{z-index:500;background:#fff;border:1px solid #e2e8f0;border-radius:16px;width:340px;animation:.18s modSlideUp;position:absolute;top:calc(100% + 10px);right:0;overflow:hidden;box-shadow:0 16px 56px #0f172a2e}.mod-notif-panel-header{background:linear-gradient(135deg,#0d5c73,#0a4a5c);justify-content:space-between;align-items:center;padding:.9rem 1.2rem;display:flex}.mod-notif-panel-header h4{color:#fff;margin:0;font-size:.85rem;font-weight:700}.mod-notif-panel-header span{color:#7ec8e3;font-size:.67rem}.mod-notif-list{max-height:320px;overflow-y:auto}.mod-notif-item{cursor:default;border-bottom:1px solid #f1f5f9;gap:.75rem;padding:.85rem 1.1rem;transition:background .15s;display:flex}.mod-notif-item:last-child{border-bottom:none}.mod-notif-item:hover{background:#f8fbff}.mod-notif-item.unread{background:#f0f6ff}.mod-notif-dot{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:1rem;display:flex}.mod-notif-title{color:#1e293b;font-size:.78rem;font-weight:700}.mod-notif-sub{color:#94a3b8;margin-top:.12rem;font-size:.69rem}.mod-notif-time{color:#cbd5e1;margin-top:.2rem;font-size:.63rem}.mod-notif-panel-footer{text-align:center;border-top:1px solid #f1f5f9;padding:.65rem 1.1rem}.mod-notif-panel-footer button{color:#0d7390;cursor:pointer;background:0 0;border:none;font-size:.75rem;font-weight:700}.mod-notif-panel-footer button:hover{text-decoration:underline}.mod-tabs{border-bottom:2px solid #e8edf5;gap:.25rem;margin-bottom:1.2rem;display:flex}.mod-tab{color:#64748b;cursor:pointer;background:0 0;border:none;border-bottom:2.5px solid #0000;border-radius:8px 8px 0 0;align-items:center;gap:.35rem;margin-bottom:-2px;padding:.55rem 1.1rem;font-size:.8rem;font-weight:700;transition:all .18s;display:flex}.mod-tab:hover{color:#1e293b;background:#f8fafc}.mod-tab.active{color:#0d7390;background:#e8f6fb;border-bottom-color:#0d7390}.mod-tab-count{color:#64748b;background:#e2e8f0;border-radius:999px;padding:.1rem .42rem;font-size:.62rem;font-weight:800}.mod-tab.active .mod-tab-count{color:#0a5568;background:#9dd6eb}.mod-progress-bar-bg{background:#e8edf5;border-radius:999px;height:8px;overflow:hidden}.mod-progress-bar-fill{background:linear-gradient(90deg,#0d7390,#06b6d4);border-radius:999px;height:100%;transition:width .8s}.mod-color-blue{color:#0d7390}.mod-color-green{color:#059669}.mod-color-amber{color:#d97706}.mod-color-red{color:#dc2626}.mod-color-violet{color:#7c3aed}.mod-color-teal{color:#0d9488}@media (width<=768px){.mod-body{padding:1rem 1rem 2rem}.mod-page-header{padding:1.1rem 1rem}.mod-form-grid,.mod-form-grid-3{grid-template-columns:1fr}.mod-kpi-strip{grid-template-columns:repeat(2,1fr)}.mod-notif-panel{width:290px}}@media (width<=480px){.mod-body{padding:.75rem .75rem 1.5rem}.mod-page-header{padding:.9rem .75rem}.mod-page-title{font-size:1.15rem}.mod-page-subtitle{font-size:.72rem}.mod-kpi-strip{grid-template-columns:1fr 1fr;gap:.6rem}.mod-kpi-card{padding:.85rem 1rem}.mod-kpi-value{font-size:1.2rem}.mod-kpi-label{font-size:.62rem}.mod-kpi-icon{width:36px;height:36px}.mod-card-header{padding:.85rem 1rem}.mod-card-body{padding:.9rem 1rem}.mod-card-title{font-size:.85rem}.mod-table{font-size:.75rem}.mod-table th{padding:.6rem .75rem;font-size:.65rem}.mod-table td{padding:.6rem .75rem}.mod-badge{padding:.18rem .5rem;font-size:.62rem}.mod-btn{min-height:44px;padding:.45rem .9rem}.mod-btn-sm{min-height:36px;padding:.3rem .65rem}.mod-btn-xs{min-height:32px;padding:.2rem .5rem}.mod-tab{padding:.45rem .85rem;font-size:.75rem}.mod-search-input{min-width:140px}.mod-filter-select{padding:.38rem .7rem;font-size:.72rem}.mod-notif-panel{width:260px;right:-10px}.mod-modal{border-radius:14px}.mod-modal-body{padding:1rem}.mod-modal-header{padding:.9rem 1rem}.mod-alert{padding:.75rem 1rem;font-size:.78rem}.mod-empty{padding:2.5rem 1rem}}.ffd-root{padding-bottom:2rem}.ffd-tabbar{border-bottom:2px solid #e2e8f0;flex-wrap:wrap;gap:4px;margin:0 1.5rem 1.5rem;display:flex}.ffd-tab-btn{cursor:pointer;color:#64748b;background:0 0;border:none;border-bottom:3px solid #0000;border-radius:8px 8px 0 0;align-items:center;gap:7px;margin-bottom:-2px;padding:10px 20px;font-family:inherit;font-size:.83rem;font-weight:600;transition:color .18s,background .18s,border-color .18s;display:flex}.ffd-tab-btn:hover{color:#4f46e5;background:#f0f0ff}.ffd-tab-btn.active{color:#4f46e5;background:#f5f3ff;border-bottom-color:#4f46e5}.ffd-tab-icon{font-size:1rem}.ffd-tab-content{padding:0 1.5rem}.ffd-kpi-row{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:1.25rem;display:grid}@media (width<=900px){.ffd-kpi-row{grid-template-columns:repeat(2,1fr)}}@media (width<=480px){.ffd-kpi-row{grid-template-columns:1fr}}.ffd-sec-title{color:#64748b;text-transform:uppercase;letter-spacing:.07em;border-bottom:1.5px solid #f1f5f9;margin-bottom:12px;padding-bottom:8px;font-size:.75rem;font-weight:700}.ffd-grid2{grid-template-columns:1fr 1fr;gap:14px;display:grid}.ffd-grid3{grid-template-columns:1fr 1fr 1fr;gap:14px;display:grid}.ffd-grid2-outer{grid-template-columns:1fr 1fr;gap:14px;margin-bottom:1rem;display:grid}@media (width<=700px){.ffd-grid2,.ffd-grid3,.ffd-grid2-outer{grid-template-columns:1fr}}.ffd-tab-content .mod-card{margin-bottom:1.1rem;padding:1.15rem 1.25rem}@media (width<=600px){.ffd-tabbar{margin:0 .75rem 1rem}.ffd-tab-btn{padding:8px 12px;font-size:.78rem}.ffd-tab-content{padding:0 .75rem}}.cm-tabbar{border-bottom:1.5px solid var(--color-border-tertiary,#e2e8f0);flex-wrap:wrap;gap:4px;margin-bottom:1.5rem;display:flex}.cm-tab-btn{cursor:pointer;color:#64748b;white-space:nowrap;background:0 0;border:none;border-bottom:2.5px solid #0000;align-items:center;gap:6px;margin-bottom:-1.5px;padding:10px 20px;font-size:13px;font-weight:500;transition:color .15s;display:flex}.cm-tab-btn:hover{color:#1e293b}.cm-tab-btn.active{color:#1e293b;border-bottom-color:#3b82f6}.cm-tab-icon{font-size:16px}.cm-schema-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.cm-entity-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:14px 16px}.cm-entity-header{color:#1e293b;align-items:center;gap:8px;margin-bottom:10px;font-size:13px;font-weight:600;display:flex}.cm-entity-sub{color:#475569;border-top:1px solid #f1f5f9;margin:12px 0 8px;padding-top:10px;font-size:12px;font-weight:600}.cm-field-row{border-bottom:.5px solid #f1f5f9;align-items:center;gap:6px;padding:4px 0;font-size:11.5px;display:flex}.cm-field-row:last-child{border-bottom:none}.cm-field-name{color:#1e293b;min-width:140px;font-weight:500}.cm-field-type{color:#0d7390;min-width:90px;font-family:Fira Mono,monospace;font-size:10.5px}.cm-field-note{color:#94a3b8;flex:1;font-size:10.5px}.cm-badge{white-space:nowrap;border-radius:20px;padding:2px 7px;font-size:9.5px;font-weight:600}.cm-badge-pk{color:#0a5568;background:#c5e9f3}.cm-badge-fk{color:#166534;background:#dcfce7}.cm-badge-uni{color:#9d174d;background:#fce7f3}.cm-badge-idx{color:#92400e;background:#fef3c7}.cm-badge-master{color:#6b21a8;background:#f3e8ff}.cm-badge-files{color:#0369a1;background:#e0f2fe}.cm-rel-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;margin-top:14px;padding:14px 16px}.cm-rel-line{color:#475569;border-bottom:.5px solid #f1f5f9;align-items:center;gap:8px;padding:4px 0;font-size:12px;display:flex}.cm-rel-line:last-child{border-bottom:none}.cm-rel-from{color:#16a34a;font-weight:600}.cm-rel-arrow{color:#94a3b8}.cm-rel-to{color:#1e293b;font-weight:500}.cm-rel-note{color:#94a3b8;font-size:11px}.cm-form-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:20px 22px}.cm-form-section{margin-bottom:1.4rem}.cm-form-section-title{color:#64748b;text-transform:uppercase;letter-spacing:.07em;border-bottom:1px solid #f1f5f9;margin-bottom:10px;padding-bottom:6px;font-size:11px;font-weight:600}.cm-form-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.cm-form-grid-3{grid-template-columns:1fr 1fr 1fr;gap:12px;display:grid}.cm-form-full{grid-column:1/-1}.cm-form-label{color:#64748b;margin-bottom:4px;font-size:11.5px;font-weight:500;display:block}.cm-form-input,.cm-form-select,.cm-form-textarea{color:#1e293b;background:#fff;border:1px solid #cbd5e1;border-radius:7px;outline:none;width:100%;padding:7px 10px;font-size:13px;transition:border-color .15s}.cm-form-input:focus,.cm-form-select:focus,.cm-form-textarea:focus{border-color:#3b82f6}.cm-form-textarea{resize:vertical;height:72px}.cm-doc-section{margin-bottom:1.2rem}.cm-doc-section-title{color:#64748b;text-transform:uppercase;letter-spacing:.07em;border-bottom:1px solid #f1f5f9;margin-bottom:10px;padding-bottom:6px;font-size:11px;font-weight:600}.cm-doc-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.cm-doc-item{cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:10px;padding:9px 12px;font-size:12px;transition:background .12s;display:flex}.cm-doc-item:hover{background:#f8fafc}.cm-doc-item.checked{background:#f0fdf4;border-color:#86efac}.cm-doc-check{border:1.5px solid #cbd5e1;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;font-size:10px;transition:all .12s;display:flex}.cm-doc-item.checked .cm-doc-check{color:#fff;background:#16a34a;border-color:#16a34a}.cm-doc-label{color:#1e293b;flex:1}.cm-doc-pill{border-radius:20px;padding:2px 8px;font-size:10px;font-weight:600}.cm-doc-req{color:#991b1b;background:#fee2e2}.cm-doc-opt{color:#166534;background:#dcfce7}.cm-doc-gen{color:#0a5568;background:#c5e9f3}.cm-doc-footer{color:#64748b;justify-content:space-between;align-items:center;margin-top:14px;font-size:12px;display:flex}.cm-records-toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.cm-records-toolbar input,.cm-records-toolbar select{color:#1e293b;background:#fff;border:1px solid #cbd5e1;border-radius:7px;outline:none;padding:7px 10px;font-size:12.5px}.cm-records-toolbar input{flex:1;min-width:160px}.cm-records-count{color:#64748b;white-space:nowrap;margin-left:auto;font-size:12px}.cm-table-wrap{overflow-x:auto}.cm-table{border-collapse:collapse;width:100%;font-size:12.5px}.cm-table th{text-align:left;color:#64748b;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;background:#f8fafc;border-bottom:1px solid #e2e8f0;padding:9px 12px;font-size:11px;font-weight:600}.cm-table td{color:#1e293b;white-space:nowrap;border-bottom:.5px solid #f1f5f9;padding:9px 12px}.cm-table tr:hover td{background:#f8fafc}.cm-table .cm-act-btn{cursor:pointer;background:0 0;border:none;border-radius:5px;padding:2px 5px;font-size:15px;transition:background .12s}.cm-table .cm-act-btn:hover{background:#e2e8f0}.cm-sql-wrap{color:#94a3b8;background:#0f172a;border-radius:10px;padding:18px 20px;font-family:Fira Mono,Cascadia Code,monospace;font-size:11.5px;line-height:1.8;overflow-x:auto}.cm-sql-kw{color:#60a5fa;font-weight:600}.cm-sql-type{color:#f472b6}.cm-sql-cmt{color:#475569}.cm-sql-str{color:#34d399}.cm-profile-grid{grid-template-columns:1fr 1fr;gap:10px;margin-top:12px;display:grid}.cm-profile-row{font-size:12.5px}.cm-profile-label{color:#64748b;margin-bottom:2px;font-size:11px}.cm-profile-val{color:#1e293b;font-weight:500}.cm-pill{border-radius:20px;padding:3px 10px;font-size:11px;font-weight:600}.cm-pill-active{color:#166534;background:#dcfce7}.cm-pill-inactive{color:#991b1b;background:#fee2e2}.cm-pill-graduated{color:#0a5568;background:#c5e9f3}.cm-success-toast{color:#166534;background:#f0fdf4;border:1px solid #86efac;border-radius:8px;align-items:center;gap:8px;margin-top:12px;padding:10px 14px;font-size:13px;animation:.3s cmToastIn;display:flex}@keyframes cmToastIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@media (width<=700px){.cm-schema-grid,.cm-form-grid,.cm-form-grid-3,.cm-doc-grid,.cm-profile-grid{grid-template-columns:1fr}.cm-tab-btn{padding:8px 12px;font-size:12px}}@media (width<=480px){.cm-tabbar{gap:2px}.cm-tab-btn{padding:7px 10px;font-size:11px}.cm-tab-icon{font-size:14px}.cm-entity-card{padding:10px 12px}.cm-entity-header{font-size:12px}.cm-field-row{gap:4px;font-size:10.5px}.cm-field-name{min-width:110px}.cm-form-card{padding:14px 16px}.cm-form-label{font-size:10.5px}.cm-form-input,.cm-form-select,.cm-form-textarea{padding:6px 8px;font-size:12px}.cm-table{font-size:11.5px}.cm-table th,.cm-table td{padding:7px 8px}.cm-badge{font-size:8.5px}.cm-doc-item{padding:7px 10px;font-size:11px}.cm-records-toolbar input,.cm-records-toolbar select{padding:6px 8px;font-size:11.5px}}.adm-root{color:#1e293b;background:#f8fafc;min-height:100%;padding:24px 28px;font-family:Inter,Segoe UI,sans-serif;font-size:.875rem}.adm-page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:20px;display:flex}.adm-page-title{color:#1e293b;margin:0 0 4px;font-size:1.25rem;font-weight:800}.adm-page-sub{color:#64748b;margin:0;font-size:.8rem}.adm-msg{border-radius:10px;align-items:center;gap:10px;margin-bottom:16px;padding:10px 16px;font-size:.82rem;font-weight:600;display:flex}.adm-msg-ok{color:#15803d;background:#dcfce7;border:1px solid #bbf7d0}.adm-msg-err{color:#b91c1c;background:#fee2e2;border:1px solid #fecaca}.adm-msg-close{cursor:pointer;color:inherit;background:0 0;border:none;margin-left:auto;font-size:.9rem}.adm-tabs{background:#e2e8f0;border-radius:10px;gap:4px;width:fit-content;margin-bottom:20px;padding:4px;display:flex}.adm-tab{cursor:pointer;color:#64748b;background:0 0;border:none;border-radius:8px;padding:7px 20px;font-size:.83rem;font-weight:600;transition:all .15s}.adm-tab:hover{color:#1e293b;background:#f1f5f9}.adm-tab-active{color:#7c3aed;background:#fff;box-shadow:0 1px 4px #0000001a}.adm-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:20px;box-shadow:0 2px 8px #0000000d}.adm-filters{flex-wrap:wrap;align-items:flex-end;gap:14px;margin-bottom:18px;display:flex}.adm-filter-group{flex-direction:column;gap:4px;display:flex}.adm-filter-sel{min-width:160px}.adm-table-wrap{overflow-x:auto}.adm-table{border-collapse:collapse;width:100%;font-size:.8rem}.adm-table th{text-transform:uppercase;letter-spacing:.04em;color:#64748b;white-space:nowrap;text-align:left;background:#f8fafc;border-bottom:2px solid #e2e8f0;padding:9px 12px;font-size:.72rem;font-weight:700}.adm-table td{color:#334155;vertical-align:middle;border-bottom:1px solid #f1f5f9;padding:9px 12px}.adm-table tr:last-child td{border-bottom:none}.adm-table tr:hover td{background:#f8fafc}.adm-badge{letter-spacing:.03em;white-space:nowrap;border-radius:20px;padding:2px 10px;font-size:.72rem;font-weight:700;display:inline-block}.adm-action-row{flex-wrap:wrap;gap:4px;display:flex}.adm-act-btn{cursor:pointer;background:0 0;border:1px solid #e2e8f0;border-radius:6px;padding:3px 7px;font-size:.82rem;transition:background .15s,transform .1s}.adm-act-btn:hover{background:#f1f5f9;transform:scale(1.1)}.adm-act-accept:hover{background:#dcfce7;border-color:#86efac}.adm-act-hold:hover{background:#fef9c3;border-color:#fde047}.adm-act-reject:hover,.adm-act-del:hover{background:#fee2e2;border-color:#fca5a5}.adm-uid{color:#94a3b8;font-family:monospace;font-size:.72rem}.adm-empty{text-align:center;color:#94a3b8;flex-direction:column;align-items:center;gap:10px;padding:48px 16px;font-size:.85rem;display:flex}.adm-loading{text-align:center;color:#64748b;padding:32px;font-size:.85rem}.adm-form-card{padding:24px}.adm-form-title{color:#1e293b;margin-bottom:16px;font-size:1rem;font-weight:800}.adm-steps{flex-wrap:wrap;gap:6px;margin-bottom:20px;display:flex}.adm-step{cursor:pointer;color:#64748b;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:20px;padding:6px 14px;font-size:.75rem;font-weight:600;transition:all .15s}.adm-step:hover{background:#e2e8f0}.adm-step-active{color:#fff;background:#7c3aed;border-color:#7c3aed}.adm-step-done{color:#15803d;background:#dcfce7;border-color:#86efac}.adm-section-hdr{text-transform:uppercase;letter-spacing:.06em;color:#94a3b8;border-bottom:1px solid #f1f5f9;grid-column:1/-1;margin-bottom:2px;padding:10px 0 4px;font-size:.72rem;font-weight:800}.adm-form-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px 16px;margin-bottom:20px;display:grid}.adm-field{flex-direction:column;gap:4px;display:flex}.adm-field-span2{grid-column:span 2}.adm-label{color:#64748b;letter-spacing:.03em;font-size:.72rem;font-weight:700}.adm-req{color:#ef4444}.adm-input{color:#1e293b;box-sizing:border-box;background:#fff;border:1px solid #e2e8f0;border-radius:8px;outline:none;width:100%;padding:8px 10px;font-size:.82rem;transition:border-color .15s,box-shadow .15s}.adm-input:focus{border-color:#7c3aed;box-shadow:0 0 0 3px #4f46e51a}.adm-input[readonly],.adm-input:disabled{color:#94a3b8;cursor:not-allowed;background:#f8fafc}.adm-textarea{resize:vertical;min-height:72px}.adm-form-nav{border-top:1px solid #f1f5f9;flex-wrap:wrap;align-items:center;gap:10px;padding-top:8px;display:flex}.adm-btn{cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:8px 18px;font-size:.82rem;font-weight:700;transition:opacity .15s,transform .1s}.adm-btn:active{transform:scale(.97)}.adm-btn:disabled{opacity:.5;cursor:not-allowed}.adm-btn-primary{color:#fff;background:#7c3aed}.adm-btn-primary:hover{background:#6d28d9}.adm-btn-secondary{color:#6d28d9;background:#f5f3ff}.adm-btn-secondary:hover{background:#c7d2fe}.adm-btn-outline{color:#475569;background:#fff;border:1px solid #e2e8f0}.adm-btn-outline:hover{background:#f8fafc}.adm-btn-accept{color:#fff;background:#16a34a}.adm-btn-accept:hover{background:#15803d}.adm-btn-hold{color:#fff;background:#ca8a04}.adm-btn-hold:hover{background:#a16207}.adm-btn-reject{color:#fff;background:#dc2626}.adm-btn-reject:hover{background:#b91c1c}.adm-overlay{z-index:900;background:#0f172a80;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.adm-modal{background:#fff;border-radius:16px;flex-direction:column;width:100%;max-width:620px;max-height:88vh;display:flex;overflow:hidden;box-shadow:0 24px 64px #00000038}.adm-modal-sm{max-width:440px}.adm-modal-wide{max-width:860px}.adm-detail-sections{flex-direction:column;gap:20px;display:flex}.adm-detail-section{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:14px 16px}.adm-detail-section-title{text-transform:uppercase;letter-spacing:.06em;color:#7c3aed;margin-bottom:10px;font-size:.75rem;font-weight:800}.adm-act-view{color:#7c3aed;background:#f5f3ff;border:1px solid #c4b5fd}.adm-act-view:hover{background:#ddd6fe}.adm-modal-header{background:#f8fafc;border-bottom:1px solid #e2e8f0;flex-shrink:0;align-items:center;gap:10px;padding:16px 20px;display:flex}.adm-modal-header h3{color:#1e293b;flex:1;margin:0;font-size:.95rem;font-weight:800}.adm-modal-close{cursor:pointer;color:#64748b;background:0 0;border:none;padding:4px;font-size:1rem}.adm-modal-close:hover{color:#1e293b}.adm-modal-body{flex:1;padding:18px 20px;overflow-y:auto}.adm-modal-student{color:#7c3aed;margin:0 0 14px;font-size:.85rem;font-weight:700}.adm-modal-footer{background:#f8fafc;border-top:1px solid #e2e8f0;flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:8px;padding:14px 20px;display:flex}.adm-detail-grid{grid-template-columns:1fr 1fr;gap:10px 16px;display:grid}.adm-detail-row{flex-direction:column;gap:2px;display:flex}.adm-detail-lbl{text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;font-size:.68rem;font-weight:700}.adm-detail-val{color:#1e293b;word-break:break-all;font-size:.82rem;font-weight:600}.adm-info-box{color:#7c3aed;background:#f5f3ff;border:1px solid #ddd6fe;border-radius:8px;margin-top:12px;padding:10px 14px;font-size:.78rem;line-height:1.55}@media (width<=600px){.adm-root{padding:16px}.adm-form-grid{grid-template-columns:1fr}.adm-field-span2{grid-column:span 1}.adm-detail-grid{grid-template-columns:1fr}.adm-tabs{width:100%}.adm-tab{text-align:center;flex:1}}.adm-upload-row{align-items:center;gap:8px;display:flex}.adm-upload-input{flex:1;padding:5px 8px;font-size:.8rem}.adm-upload-spin{color:#8b5cf6;white-space:nowrap;font-size:.78rem}.adm-doc-link{color:#8b5cf6;word-break:break-all;margin-top:4px;font-size:.78rem;text-decoration:none;display:inline-block}.adm-doc-link:hover{text-decoration:underline}.adm-upload-err{color:#b91c1c;margin-top:3px;font-size:.75rem;display:block}.adm-col-action{width:96px;min-width:96px;padding:0 8px 0 12px!important}.adm-col-idx{color:#94a3b8;text-align:center;font-variant-numeric:tabular-nums;width:38px;min-width:38px;font-size:.72rem}.adm-enrolled-table thead tr{background:linear-gradient(#f5f3ff 0%,#e8edfb 100%);border-bottom:2px solid #c7d2fe}.adm-enrolled-table thead th{color:#6d28d9;letter-spacing:.08em;text-transform:uppercase;font-size:.67rem}.adm-enrolled-table thead th.adm-col-action{color:#0000}.adm-enrolled-row{transition:background .12s}.adm-enrolled-row:hover>td,.adm-enrolled-row:hover>td:first-child{background:#f5f3ff}.adm-detail-btn{color:#fff;cursor:pointer;letter-spacing:.025em;white-space:nowrap;background:linear-gradient(135deg,#7c3aed 0%,#a78bfa 100%);border:none;border-radius:6px;align-items:center;gap:5px;padding:5px 11px;font-family:inherit;font-size:.73rem;font-weight:700;transition:transform .13s,box-shadow .13s,background .13s;display:inline-flex;box-shadow:0 2px 6px #4f46e54d,inset 0 1px #ffffff26}.adm-detail-btn:hover{background:linear-gradient(135deg,#6d28d9 0%,#7c3aed 100%);transform:translateY(-1px);box-shadow:0 4px 14px #4f46e566,inset 0 1px #ffffff26}.adm-detail-btn:active{transform:translateY(0);box-shadow:0 1px 4px #4f46e547}.adm-detail-btn-icon{opacity:.85;font-size:1rem;line-height:1}.adm-detail-btn-label{line-height:1}.adm-student-cell{flex-direction:column;gap:2px;display:flex}.adm-student-name{color:#1e293b;font-size:.84rem;font-weight:700;line-height:1.3}.adm-student-meta{color:#94a3b8;font-size:.69rem;font-weight:500}.adm-email-cell{text-overflow:ellipsis;white-space:nowrap;color:#475569;max-width:180px;font-size:.78rem;overflow:hidden}.adm-adm-id{color:#6d28d9;font-variant-numeric:tabular-nums;white-space:nowrap;background:#f5f3ff;border:1px solid #c4b5fd;border-radius:20px;justify-content:center;align-items:center;padding:2px 10px;font-size:.71rem;font-weight:700;display:inline-flex}.adm-col-ops{min-width:200px}.adm-apps-table thead tr{background:linear-gradient(#f5f3ff 0%,#e8edfb 100%);border-bottom:2px solid #c7d2fe}.adm-apps-table thead th{color:#6d28d9;letter-spacing:.08em;text-transform:uppercase;font-size:.67rem}.adm-apps-table thead th.adm-col-action{color:#0000}.adm-apps-row{transition:background .12s}.adm-apps-row:hover>td,.adm-apps-row:hover>td:first-child{background:#f5f3ff}.adm-ops-row{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.adm-op-btn{cursor:pointer;letter-spacing:.02em;white-space:nowrap;border:1px solid #0000;border-radius:6px;align-items:center;gap:4px;padding:4px 9px;font-family:inherit;font-size:.71rem;font-weight:700;transition:background .13s,box-shadow .13s,transform .1s;display:inline-flex}.adm-op-btn:active{transform:scale(.96)}.adm-op-edit{color:#6d28d9;background:#f5f3ff;border-color:#c7d2fe}.adm-op-edit:hover{background:#c7d2fe;box-shadow:0 2px 6px #4338ca2e}.adm-op-hold{color:#a16207;background:#fef9c3;border-color:#fde68a}.adm-op-hold:hover{background:#fde68a;box-shadow:0 2px 6px #a162072e}.adm-op-accept{color:#15803d;background:#dcfce7;border-color:#86efac}.adm-op-accept:hover{background:#bbf7d0;box-shadow:0 2px 6px #15803d2e}.adm-op-reject{color:#b91c1c;background:#fee2e2;border-color:#fca5a5}.adm-op-reject:hover{background:#fecaca;box-shadow:0 2px 6px #b91c1c2e}.adm-op-del{color:#be123c;background:#fff1f2;border-color:#fda4af;padding:4px 8px}.adm-op-del:hover{background:#ffe4e6;box-shadow:0 2px 6px #be123c2e}:root{--sl-indigo-50:#e8f6fb;--sl-indigo-100:#c5e9f3;--sl-indigo-200:#9dd6eb;--sl-indigo-600:#0d7390;--sl-indigo-700:#0a5568;--sl-violet-600:#0d7390;--sl-slate-50:#f8fafc;--sl-slate-100:#f1f5f9;--sl-slate-200:#e2e8f0;--sl-slate-400:#94a3b8;--sl-slate-500:#64748b;--sl-slate-700:#334155;--sl-slate-900:#1e293b;--sl-font:"Inter", "Segoe UI", sans-serif;--sl-radius:14px}.sl-root{background:var(--sl-slate-50);min-height:100%;font-family:var(--sl-font);color:var(--sl-slate-900);padding:24px 28px;font-size:.875rem}.sl-page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:20px;display:flex}.sl-page-title{color:var(--sl-slate-900);margin:0 0 4px;font-size:1.25rem;font-weight:800}.sl-page-sub{color:var(--sl-slate-500);margin:0;font-size:.8rem}.sl-header-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sl-msg{border-radius:10px;align-items:center;gap:10px;margin-bottom:16px;padding:10px 16px;font-size:.82rem;font-weight:600;display:flex}.sl-msg-ok{color:#15803d;background:#dcfce7;border:1px solid #bbf7d0}.sl-msg-err{color:#b91c1c;background:#fee2e2;border:1px solid #fecaca}.sl-msg-close{cursor:pointer;color:inherit;background:0 0;border:none;margin-left:auto;font-size:.9rem}.sl-card{border:1px solid var(--sl-slate-200);border-radius:var(--sl-radius);background:#fff;padding:20px;box-shadow:0 2px 8px #0000000d}.sl-filters{flex-wrap:wrap;align-items:flex-end;gap:14px;margin-bottom:18px;display:flex}.sl-filter-group{flex-direction:column;gap:4px;display:flex}.sl-label{color:var(--sl-slate-500);letter-spacing:.03em;font-size:.72rem;font-weight:700}.sl-input{border:1px solid var(--sl-slate-200);color:var(--sl-slate-900);box-sizing:border-box;background:#fff;border-radius:8px;outline:none;width:100%;min-width:150px;padding:7px 10px;font-size:.82rem;transition:border-color .15s,box-shadow .15s}.sl-input:focus{border-color:var(--sl-indigo-600);box-shadow:0 0 0 3px #0d73901f}.sl-input[readonly],.sl-input:disabled{background:var(--sl-slate-50);color:var(--sl-slate-400);cursor:not-allowed}.sl-textarea{resize:vertical;min-height:68px}.sl-req{color:#ef4444}.sl-btn{cursor:pointer;white-space:nowrap;font-size:.82rem;font-weight:700;font-family:var(--sl-font);border:none;border-radius:8px;padding:8px 18px;transition:opacity .15s,transform .1s}.sl-btn:active{transform:scale(.97)}.sl-btn:disabled{opacity:.5;cursor:not-allowed}.sl-btn-primary{background:var(--sl-indigo-600);color:#fff}.sl-btn-primary:hover{background:var(--sl-indigo-700)}.sl-btn-outline{color:var(--sl-slate-700);border:1px solid var(--sl-slate-200);background:#fff}.sl-btn-outline:hover{background:var(--sl-slate-50)}.sl-btn-save{color:#fff;background:#16a34a}.sl-btn-save:hover{background:#15803d}.sl-table-wrap{overflow-x:auto}.sl-table{border-collapse:collapse;width:100%;font-size:.8rem}.sl-table th{background:linear-gradient(180deg, var(--sl-indigo-50) 0%, #c5e9f3 100%);text-transform:uppercase;letter-spacing:.08em;color:var(--sl-indigo-700);border-bottom:2px solid var(--sl-indigo-200);white-space:nowrap;text-align:left;padding:9px 12px;font-size:.67rem;font-weight:700}.sl-table td{border-bottom:1px solid var(--sl-slate-100);color:var(--sl-slate-700);vertical-align:middle;padding:9px 12px}.sl-table tr:last-child td{border-bottom:none}.sl-col-menu{width:80px;min-width:80px;padding:0 8px 0 12px!important}.sl-col-menu.sl-table th{color:#0000}.sl-col-idx{text-align:center;width:38px;min-width:38px;color:var(--sl-slate-400);font-variant-numeric:tabular-nums;font-size:.72rem}.sl-student-row{transition:background .12s}.sl-student-row:hover>td{background:#e8f6fb}.sl-student-row:hover>td:first-child{background:#c5e9f3}.sl-menu-wrap{display:inline-block;position:relative}.sl-menu-btn{background:linear-gradient(135deg, var(--sl-indigo-600) 0%, var(--sl-violet-600) 100%);color:#fff;cursor:pointer;letter-spacing:.025em;white-space:nowrap;font-size:.72rem;font-weight:700;font-family:var(--sl-font);border:none;border-radius:6px;align-items:center;gap:4px;padding:5px 10px;transition:transform .13s,box-shadow .13s;display:inline-flex;box-shadow:0 2px 6px #0d73904d,inset 0 1px #ffffff26}.sl-menu-btn:hover{background:linear-gradient(135deg, var(--sl-indigo-700) 0%, #0d7390 100%);transform:translateY(-1px);box-shadow:0 4px 14px #0d739066,inset 0 1px #ffffff26}.sl-menu-btn:active{transform:translateY(0)}.sl-menu-caret{opacity:.8;font-size:.6rem}.sl-dropdown{border:1px solid var(--sl-slate-200);z-index:200;background:#fff;border-radius:10px;min-width:210px;animation:.12s sl-drop-in;position:absolute;top:calc(100% + 4px);left:0;overflow:hidden;box-shadow:0 8px 28px #00000024}@keyframes sl-drop-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.sl-dropdown-item{color:var(--sl-slate-700);cursor:pointer;text-align:left;width:100%;font-size:.78rem;font-weight:600;font-family:var(--sl-font);background:0 0;border:none;align-items:center;gap:8px;padding:9px 14px;transition:background .1s;display:flex}.sl-dropdown-item:hover{color:var(--sl-indigo-700);background:#e8f6fb}.sl-dropdown-divider{background:var(--sl-slate-100);height:1px;margin:2px 0}.sl-dropdown-item-icon{text-align:center;flex-shrink:0;width:18px;font-size:.9rem}.sl-student-cell{flex-direction:column;gap:2px;display:flex}.sl-student-name{color:var(--sl-slate-900);font-size:.84rem;font-weight:700;line-height:1.3}.sl-student-meta{color:var(--sl-slate-400);font-size:.69rem;font-weight:500}.sl-avatar{object-fit:cover;border:2px solid var(--sl-indigo-200);border-radius:50%;width:32px;height:32px}.sl-avatar-placeholder{background:var(--sl-indigo-100);width:32px;height:32px;color:var(--sl-indigo-700);border:2px solid var(--sl-indigo-200);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.8rem;font-weight:800;display:inline-flex}.sl-chip{white-space:nowrap;border-radius:20px;align-items:center;padding:2px 9px;font-size:.7rem;font-weight:700;display:inline-flex}.sl-chip-std{background:var(--sl-indigo-100);color:var(--sl-indigo-700);border:1px solid var(--sl-indigo-200)}.sl-chip-grno{color:#0a5568;background:#e8f6fb;border:1px solid #9dd6eb}.sl-chip-lcno{color:#a16207;background:#fef9c3;border:1px solid #fde68a}.sl-chip-appno{color:#065f46;background:#d1fae5;border:1px solid #6ee7b7}.sl-empty{text-align:center;color:var(--sl-slate-400);flex-direction:column;align-items:center;gap:10px;padding:48px 16px;font-size:.85rem;display:flex}.sl-loading{text-align:center;color:var(--sl-slate-500);padding:32px;font-size:.85rem}.sl-overlay{z-index:900;background:#0f172a85;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.sl-modal{background:#fff;border-radius:16px;flex-direction:column;width:100%;max-width:860px;max-height:90vh;display:flex;overflow:hidden;box-shadow:0 24px 64px #00000038}.sl-modal-sm{max-width:500px}.sl-modal-header{border-bottom:1px solid var(--sl-slate-200);background:var(--sl-slate-50);flex-shrink:0;align-items:center;gap:10px;padding:16px 22px;display:flex}.sl-modal-header h3{color:var(--sl-slate-900);flex:1;margin:0;font-size:.98rem;font-weight:800}.sl-modal-close{cursor:pointer;color:var(--sl-slate-500);background:0 0;border:none;padding:4px;font-size:1rem;line-height:1}.sl-modal-close:hover{color:var(--sl-slate-900)}.sl-gr-tabs{border-bottom:2px solid var(--sl-slate-200);background:var(--sl-slate-50);flex-shrink:0;gap:0;display:flex}.sl-gr-tab{cursor:pointer;color:var(--sl-slate-500);font-size:.8rem;font-weight:700;font-family:var(--sl-font);background:0 0;border:none;border-bottom:3px solid #0000;margin-bottom:-2px;padding:10px 22px;transition:color .15s,border-color .15s}.sl-gr-tab:hover{color:var(--sl-slate-900)}.sl-gr-tab-active{color:var(--sl-indigo-600);border-bottom-color:var(--sl-indigo-600)}.sl-modal-body{flex:1;padding:20px 22px;overflow-y:auto}.sl-modal-footer{border-top:1px solid var(--sl-slate-200);background:var(--sl-slate-50);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:8px;padding:14px 22px;display:flex}.sl-form-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px 16px;margin-bottom:18px;display:grid}.sl-field{flex-direction:column;gap:4px;display:flex}.sl-field-span2{grid-column:span 2}.sl-field-full{grid-column:1/-1}.sl-section-hdr{text-transform:uppercase;letter-spacing:.07em;color:var(--sl-indigo-600);border-bottom:1px solid var(--sl-indigo-100);grid-column:1/-1;margin-bottom:2px;padding:10px 0 4px;font-size:.7rem;font-weight:800}.sl-photo-block{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:18px;display:flex}.sl-photo-preview{object-fit:cover;border:2px solid var(--sl-slate-200);background:var(--sl-slate-100);border-radius:8px;width:100px;height:120px}.sl-photo-placeholder{color:#0d7390;background:#e8f6fb;border:2px dashed #9dd6eb;border-radius:8px;justify-content:center;align-items:center;width:100px;height:120px;font-size:2rem;display:flex}.sl-toast{background:var(--sl-slate-900);color:#fff;z-index:1000;border-radius:10px;padding:10px 20px;font-size:.82rem;font-weight:600;animation:.2s sl-toast-in;position:fixed;bottom:28px;right:28px;box-shadow:0 8px 24px #00000038}@keyframes sl-toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (width<=640px){.sl-root{padding:14px}.sl-form-grid{grid-template-columns:1fr}.sl-field-span2{grid-column:span 1}.sl-modal{max-width:100%}}.fc-overlay{z-index:1200;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1e143c8c;justify-content:center;align-items:flex-start;padding:1rem;display:flex;position:fixed;inset:0;overflow-y:auto}.fc-modal{background:#fff;border-radius:12px;flex-direction:column;width:100%;max-width:1100px;display:flex;position:relative;overflow:hidden;box-shadow:0 20px 60px #6d28d933}.fc-modal.fc-modal-embedded{max-width:100%;box-shadow:none;border-radius:0}.fc-center{justify-content:center;align-items:center;min-height:200px;display:flex}.fc-header{color:#fff;background:linear-gradient(135deg,#7c3aed 0%,#6d28d9 100%);justify-content:space-between;align-items:center;padding:1rem 1.5rem;display:flex}.fc-title{color:#fff;margin:0;font-size:1.2rem;font-weight:700}.fc-subtitle{color:#ddd6fe;margin:.15rem 0 0;font-size:.8rem}.fc-close{color:#fff;cursor:pointer;background:#ffffff26;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:1rem;transition:background .2s;display:flex}.fc-close:hover{background:#ffffff4d}.fc-summary-strip{background:#faf8ff;border-bottom:1px solid #e9e4f8;display:flex}.fc-strip-cell{border-right:1px solid #e9e4f8;flex-direction:column;flex:1;gap:.1rem;padding:.6rem 1rem;display:flex}.fc-strip-cell:last-child{border-right:none}.fc-strip-label{text-transform:uppercase;letter-spacing:.05em;color:#7c3aed;font-size:.68rem;font-weight:600}.fc-strip-val{color:#1e1b4b;font-size:1rem;font-weight:700}.fc-strip-val.fc-val-red{color:#b91c1c}.fc-strip-val.fc-val-green{color:#166534}.fc-body{display:flex}.fc-left{border-right:1px solid #ede9fe;flex-direction:column;flex:0 0 65%;display:flex}.fc-left-scroll{flex:1;padding:.75rem 1rem 0;overflow-y:auto}.fc-quarter-group{border:1px solid #e5e7eb;border-radius:8px;margin-bottom:.5rem;overflow:hidden}.fc-quarter-header{background:#f5f3ff;border-bottom:1px solid #ede9fe;align-items:center;gap:.75rem;padding:.55rem .85rem;display:flex}.fc-qtr-checkbox{accent-color:#7c3aed;cursor:pointer;flex-shrink:0;width:16px;height:16px}.fc-qtr-label{color:#4c1d95;text-transform:uppercase;letter-spacing:.04em;flex:1;font-size:.82rem;font-weight:700}.fc-qtr-total{color:#1e1b4b;font-size:.85rem;font-weight:700}.fc-qtr-fine{color:#b91c1c;font-size:.78rem;font-weight:600}.fc-paid-badge{color:#166534;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;background:#dcfce7;border:1px solid #86efac;border-radius:9999px;align-items:center;gap:.3rem;padding:.18rem .65rem;font-size:.72rem;font-weight:700;transition:background .15s;display:inline-flex}.fc-paid-badge:hover{background:#bbf7d0}.fc-fee-row{color:#374151;border-bottom:1px solid #f3f4f6;align-items:center;padding:.38rem .85rem .38rem 2.5rem;font-size:.82rem;display:flex}.fc-fee-row:last-child{border-bottom:none}.fc-fee-row-name{flex:1}.fc-fee-row-amt{font-variant-numeric:tabular-nums;color:#1e1b4b;text-align:right;min-width:80px;font-weight:600}.fc-quarter-group.fc-paid .fc-quarter-header{background:#f0fdf4}.fc-quarter-group.fc-paid .fc-qtr-label{color:#166534}.fc-quarter-group.fc-paid .fc-fee-row{color:#6b7280}.fc-pay-footer{background:#faf8ff;border-top:2px solid #ede9fe;padding:.75rem 1rem}.fc-paying-label{color:#374151;margin-bottom:.4rem;font-size:.82rem}.fc-paying-label strong{color:#7c3aed;font-size:.95rem}.fc-paying-quarters{color:#6b7280;font-size:.75rem}.fc-pay-btn{color:#fff;cursor:pointer;background:#e85c2a;border:none;border-radius:8px;width:100%;margin-top:.5rem;padding:.62rem;font-size:.95rem;font-weight:700;transition:background .2s;display:block}.fc-pay-btn:hover:not(:disabled){background:#c94e1f}.fc-pay-btn:disabled{opacity:.5;cursor:not-allowed}.fc-pay-form{background:#fff;border-top:1px solid #ede9fe;padding:.75rem 1rem}.fc-pay-form-title{color:#4c1d95;margin-bottom:.55rem;font-size:.82rem;font-weight:700}.fc-pay-grid{grid-template-columns:1fr 1fr;gap:.6rem;display:grid}.fc-pay-grid label{color:#374151;flex-direction:column;gap:.2rem;font-size:.78rem;font-weight:600;display:flex}.fc-pay-grid input,.fc-pay-grid select,.fc-pay-grid textarea{color:#111827;background:#fafafa;border:1.5px solid #ddd6fe;border-radius:6px;padding:.4rem .6rem;font-size:.82rem;transition:border-color .2s}.fc-pay-grid input:focus,.fc-pay-grid select:focus,.fc-pay-grid textarea:focus{background:#fff;border-color:#7c3aed;outline:none}.fc-pay-full{grid-column:1/-1}.fc-pay-form-btns{justify-content:flex-end;gap:.5rem;margin-top:.6rem;display:flex}.fc-right{flex-direction:column;flex:0 0 35%;gap:.75rem;padding:1rem;display:flex;overflow-y:auto}.fc-student-card{border:1px solid #ede9fe;border-radius:8px;overflow:hidden}.fc-student-card-header{color:#fff;text-transform:uppercase;letter-spacing:.04em;background:linear-gradient(135deg,#7c3aed 0%,#6d28d9 100%);padding:.48rem .85rem;font-size:.76rem;font-weight:700}.fc-student-fields{flex-direction:column;gap:.32rem;padding:.5rem .85rem;display:flex}.fc-student-field{grid-template-columns:130px 1fr;align-items:baseline;font-size:.8rem;display:grid}.fc-field-label{color:#374151;font-weight:600}.fc-field-val{color:#1e1b4b;word-break:break-word;font-weight:500}.fc-con-badge{border-radius:6px;align-items:center;gap:.3rem;padding:.28rem .75rem;font-size:.78rem;font-weight:700;display:inline-flex}.fc-con-badge-rte{color:#92400e;background:#fef3c7;border:1px solid #fcd34d}.fc-con-badge-ews{color:#0a5568;background:#c5e9f3;border:1px solid #93c5fd}.fc-con-badge-other{color:#6b21a8;background:#f3e8ff;border:1px solid #d8b4fe}.fc-tabs-section{border-top:2px solid #ede9fe}.fc-tabs{background:#faf8ff;border-bottom:1px solid #ede9fe;flex-wrap:wrap;gap:0;padding:0 1.5rem;display:flex}.fc-sub-title{color:#fff;background:linear-gradient(135deg,#7c3aed 0%,#6d28d9 100%);justify-content:space-between;align-items:center;margin:0;padding:.9rem 1.2rem;font-size:.97rem;font-weight:700;display:flex}.fc-receipt-modal{max-width:780px;max-height:90vh}.fc-copies-label{color:#e0e7ef;align-items:center;gap:.4rem;font-size:.8rem;display:flex}.fc-copies-select{color:#fff;background:#1e3a5f;border:1px solid #94a3b8;border-radius:5px;padding:.2rem .4rem;font-size:.8rem}.fc-print-area{max-height:calc(90vh - 130px);padding:1rem 1.4rem;overflow-y:auto}.fc-receipt-copy{color:#111;padding:.5rem 0;font-family:Times New Roman,Times,serif;font-size:.87rem}.fc-receipt-copy-border{border-bottom:2px dashed #94a3b8;margin-bottom:1.2rem;padding-bottom:1.2rem}.fc-rp-school{text-align:center;margin-bottom:.2rem}.fc-rp-school-name{text-transform:uppercase;font-size:1.2rem;font-weight:700}.fc-rp-school-addr{color:#444;font-size:.8rem}.fc-rp-title{text-align:center;letter-spacing:1px;margin:.3rem 0;font-size:1rem;font-weight:700;text-decoration:underline}.fc-rp-copy-label{text-align:right;color:#666;margin-bottom:.2rem;font-size:.75rem;font-style:italic}.fc-rp-meta{gap:1.5rem;margin:.6rem 0;display:flex}.fc-rp-meta-col{flex:1}.fc-rp-row{gap:.5rem;margin-bottom:.18rem;font-size:.82rem;display:flex}.fc-rp-lbl{color:#333;min-width:110px;font-weight:600}.fc-rp-val{color:#111}.fc-rp-table{border-collapse:collapse;width:100%;margin:.6rem 0;font-size:.82rem}.fc-rp-table th,.fc-rp-table td{text-align:left;border:1px solid #aaa;padding:.28rem .45rem}.fc-rp-table th{background:#f0f4f8;font-weight:700}.fc-rp-total-row td{background:#f8fafc;font-weight:600}.fc-rp-remark{color:#555;margin-top:.35rem;font-size:.8rem}.fc-rp-sigs{text-align:center;justify-content:space-between;margin-top:1.4rem;padding-top:.5rem;font-size:.8rem;display:flex}.fc-rp-sig{flex:1}.fc-rp-sig-line{border-top:1px solid #333;width:80%;margin:0 auto .25rem}@media print{.fc-no-print{display:none!important}.fc-receipt-copy-border{page-break-after:always}}.fc-receipt-view{padding:.9rem 1.2rem}.fc-receipt-view-grid{grid-template-columns:1fr 1fr;gap:.32rem;margin-bottom:.75rem;font-size:.8rem;display:grid}.fc-receipt-view-lbl{color:#374151;font-weight:600}.fc-receipt-view-val{color:#1e1b4b}@keyframes fc-spin{to{transform:rotate(360deg)}}@media (width<=768px){.fc-body{flex-direction:column}.fc-left{border-bottom:1px solid #ede9fe;border-right:none;flex:none}.fc-right{flex:none}.fc-pay-grid,.fc-form-grid{grid-template-columns:1fr}.fc-strip-cell{padding:.5rem .6rem}.fc-tab{padding:.4rem .65rem;font-size:.78rem}}.fc-summary-row{flex-wrap:wrap;gap:.75rem;padding:1rem 1.5rem 0;display:flex}.fc-card{border-radius:10px;flex-direction:column;flex:130px;gap:.2rem;padding:.7rem 1rem;display:flex}.fc-card-label{text-transform:uppercase;letter-spacing:.04em;font-size:.72rem;font-weight:600}.fc-card-val{font-size:1.1rem;font-weight:700}.fc-card-blue{color:#4c1d95;background:#ede9fe}.fc-card-green{color:#14532d;background:#dcfce7}.fc-card-purple{color:#6b21a8;background:#f3e8ff}.fc-card-orange{color:#9a3412;background:#fff7ed}.fc-card-red{color:#991b1b;background:#fee2e2}.fc-actions-bar{gap:.5rem;padding:.75rem 1.5rem 0;display:flex}.fc-tabs{border-bottom:2px solid #ede9fe;flex-wrap:wrap;gap:0;padding:.75rem 1.5rem 0;display:flex}.fc-tab{cursor:pointer;color:#6b7280;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;padding:.5rem 1rem;font-size:.85rem;font-weight:500;transition:color .2s,border-color .2s}.fc-tab:hover{color:#7c3aed}.fc-tab-active{color:#7c3aed;border-bottom-color:#7c3aed;font-weight:700}.fc-tab-body{min-height:220px;padding:1rem 1.5rem 1.5rem;overflow-x:auto}.fc-tab-toolbar{gap:.5rem;margin-bottom:.75rem;display:flex}.fc-table{border-collapse:collapse;width:100%;font-size:.83rem}.fc-table th{color:#5b21b6;text-align:left;white-space:nowrap;background:#f5f3ff;border-bottom:2px solid #ddd6fe;padding:.55rem .75rem;font-weight:700}.fc-table td{color:#374151;vertical-align:middle;border-bottom:1px solid #f3f4f6;padding:.45rem .75rem}.fc-table tbody tr:hover{background:#faf5ff}.fc-table-sm{margin-top:.5rem}.fc-table-sm th,.fc-table-sm td{padding:.3rem .6rem;font-size:.78rem}.fc-num{font-variant-numeric:tabular-nums;text-align:right!important}.fc-empty{text-align:center;color:#9ca3af;padding:2rem;font-style:italic}.fc-badge{color:#5b21b6;background:#ede9fe;border-radius:9999px;padding:.15rem .55rem;font-size:.72rem;font-weight:600;display:inline-block}.fc-badge-green{color:#166534;background:#dcfce7}.fc-badge-purple{color:#7e22ce;background:#f3e8ff}.fc-badge-red{color:#991b1b;background:#fee2e2}.fc-receipt-card{border:1px solid #e5e7eb;border-radius:10px;margin-bottom:.75rem;overflow:hidden}.fc-receipt-bounced{background:#fff5f5;border-color:#fca5a5}.fc-receipt-header{background:#f5f3ff;flex-wrap:wrap;align-items:center;gap:1rem;padding:.65rem 1rem;display:flex}.fc-receipt-no{color:#5b21b6;font-weight:700}.fc-receipt-date{color:#6b7280;font-size:.82rem}.fc-receipt-mode{color:#4c1d95;background:#ddd6fe;border-radius:6px;padding:.1rem .5rem;font-size:.78rem}.fc-receipt-amt{color:#166534;margin-left:auto;font-size:1rem;font-weight:700}.fc-receipt-remark{color:#6b7280;padding:.4rem 1rem;font-size:.8rem}.fc-receipt-footer{background:#fafafa;border-top:1px solid #f3f4f6;justify-content:flex-end;gap:.5rem;padding:.5rem 1rem;display:flex}.fc-btn{cursor:pointer;border:none;border-radius:8px;padding:.55rem 1.2rem;font-size:.87rem;font-weight:600;transition:opacity .2s,transform .1s}.fc-btn:active{transform:scale(.97)}.fc-btn:disabled{opacity:.6;cursor:not-allowed}.fc-btn-primary{color:#fff;background:#7c3aed}.fc-btn-primary:hover:not(:disabled){background:#6d28d9}.fc-btn-secondary{color:#5b21b6;background:#ede9fe}.fc-btn-secondary:hover:not(:disabled){background:#ddd6fe}.fc-btn-warn{color:#92400e;background:#fef3c7;border:1px solid #fcd34d}.fc-btn-warn:hover:not(:disabled){background:#fde68a}.fc-btn-sm{border-radius:6px;padding:.35rem .8rem;font-size:.78rem}.fc-sub-overlay{z-index:1300;background:#1e143c73;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.fc-sub-modal{background:#fff;border-radius:12px;width:100%;max-width:520px;overflow:hidden;box-shadow:0 20px 50px #6d28d940}.fc-sub-title{color:#fff;background:linear-gradient(135deg,#7c3aed 0%,#6d28d9 100%);margin:0;padding:1rem 1.25rem;font-size:1rem;font-weight:700}.fc-form-grid{grid-template-columns:1fr 1fr;gap:.75rem;padding:1rem 1.25rem;display:grid}.fc-full{grid-column:1/-1}.fc-form-grid label{color:#374151;flex-direction:column;gap:.25rem;font-size:.8rem;font-weight:600;display:flex}.fc-form-grid input,.fc-form-grid select,.fc-form-grid textarea{color:#111827;background:#fafafa;border:1.5px solid #ddd6fe;border-radius:7px;padding:.45rem .65rem;font-size:.85rem;transition:border-color .2s}.fc-form-grid input:focus,.fc-form-grid select:focus,.fc-form-grid textarea:focus{background:#fff;border-color:#7c3aed;outline:none}.fc-sub-footer{border-top:1px solid #ede9fe;justify-content:flex-end;gap:.5rem;padding:.75rem 1.25rem;display:flex}.fc-spinner{border:4px solid #ddd6fe;border-top-color:#7c3aed;border-radius:50%;width:36px;height:36px;animation:.7s linear infinite fc-spin}.fc-toast{color:#fff;z-index:1400;white-space:nowrap;background:#1e1b4b;border-radius:8px;padding:.6rem 1.2rem;font-size:.85rem;position:absolute;bottom:1.2rem;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #00000040}@media (width<=640px){.fc-form-grid{grid-template-columns:1fr}.fc-summary-row{gap:.5rem}.fc-card{flex:100%}.fc-tabs{gap:0}.fc-tab{padding:.4rem .65rem;font-size:.78rem}}.fm-wrap{background:#f8fafc;min-height:100%;padding:1.25rem 1.5rem;font-family:inherit}.fm-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1.25rem;display:flex}.fm-toolbar-left{align-items:center;gap:.75rem;display:flex}.fm-toolbar-right{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.fm-title{color:#0f172a;margin:0;font-size:1.3rem;font-weight:800}.fm-select{color:#334155;cursor:pointer;background:#fff;border:1.5px solid #e2e8f0;border-radius:8px;padding:.4rem .75rem;font-size:.82rem;font-weight:600}.fm-select:focus{border-color:#6366f1;outline:none;box-shadow:0 0 0 3px #6366f114}.fm-search{color:#334155;background:#fff;border:1.5px solid #e2e8f0;border-radius:8px;width:100%;max-width:200px;padding:.4rem .75rem;font-size:.82rem}.fm-search::placeholder{color:#94a3b8}.fm-search:focus{border-color:#6366f1;outline:none}.fm-stats{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem;margin-bottom:1.25rem;display:grid}.fm-stat{text-align:center;background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:.75rem 1rem}.fm-stat-value{color:#0f172a;font-size:1.2rem;font-weight:800}.fm-stat-label{color:#64748b;margin-top:.1rem;font-size:.7rem}.fm-table-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;margin-bottom:1.25rem;overflow:hidden}.fm-table-wrap{overflow-x:auto}.fm-table{border-collapse:collapse;width:100%;font-size:.85rem}.fm-table thead tr:first-child th{text-align:center;color:#1e293b;text-transform:uppercase;letter-spacing:.03em;background:#e2e8f0;border-bottom:1px solid #cbd5e1;border-right:1px solid #cbd5e1;padding:.6rem .85rem;font-size:.78rem;font-weight:800}.fm-table thead tr:first-child th:last-child{border-right:none}.fm-table thead tr:nth-child(2) th{text-align:center;color:#64748b;background:#f1f5f9;border-bottom:2px solid #cbd5e1;border-right:1px solid #e2e8f0;padding:.4rem .85rem;font-size:.7rem;font-weight:600}.fm-table thead tr:nth-child(2) th:last-child{border-right:none}.fm-th-fees{min-width:220px;text-align:left!important;font-size:.85rem!important}.fm-th-class{min-width:60px;text-align:center!important}.fm-th-quarter{min-width:100px}.fm-th-year{min-width:110px;color:#1e40af!important;background:#dbeafe!important}.fm-th-actions{min-width:90px;background:#f1f5f9!important}.fm-table tbody td{vertical-align:middle;border-bottom:1px solid #f1f5f9;border-right:1px solid #f1f5f9;padding:.6rem .85rem}.fm-table tbody td:last-child{border-right:none}.fm-table tbody tr:hover td{background:#f8fafc}.fm-td-class{text-align:center;color:#475569;background:#f8fafc;font-size:.82rem;font-weight:700}.fm-td-fee{color:#1e293b;font-weight:500}.fm-td-fee-desc{color:#64748b;margin-top:1px;font-size:.72rem;font-weight:400;display:block}.fm-td-amount{text-align:right;font-variant-numeric:tabular-nums;color:#334155;font-weight:500}.fm-td-year{text-align:right;font-variant-numeric:tabular-nums;color:#1e40af;background:#eff6ff;font-weight:700}.fm-td-actions{text-align:center;white-space:nowrap}.fm-tr-total td{color:#1e293b;text-transform:uppercase;background:#e2e8f0;border-top:2px solid #94a3b8;padding:.65rem .85rem;font-size:.88rem;font-weight:800}.fm-tr-total .fm-td-amount{color:#1e293b}.fm-tr-total .fm-td-year{color:#1e40af;background:#dbeafe}.fm-tr-due td{color:#854d0e;background:#fefce8;border-top:1px solid #fde047;padding:.55rem .85rem;font-size:.78rem}.fm-due-label{font-weight:700}.fm-due-date{color:#a16207;font-weight:600}.fm-empty{text-align:center;color:#94a3b8;background:#fff;border:1.5px dashed #e2e8f0;border-radius:12px;padding:2.5rem 1rem;font-size:.88rem}.fm-center{justify-content:center;align-items:center;padding:3rem;display:flex}.fm-spinner{border:3px solid #e2e8f0;border-top-color:#6366f1;border-radius:50%;width:32px;height:32px;animation:.7s linear infinite fm-spin}@keyframes fm-spin{to{transform:rotate(360deg)}}.fm-btn{cursor:pointer;white-space:nowrap;border:none;border-radius:8px;align-items:center;gap:.3rem;padding:.45rem 1rem;font-family:inherit;font-size:.82rem;font-weight:600;transition:all .12s;display:inline-flex}.fm-btn:active{transform:scale(.97)}.fm-btn:disabled{opacity:.5;cursor:not-allowed}.fm-btn-primary{color:#fff;background:#4f46e5}.fm-btn-primary:hover:not(:disabled){background:#4338ca}.fm-btn-secondary{color:#475569;background:#f1f5f9;border:1px solid #e2e8f0}.fm-btn-secondary:hover:not(:disabled){background:#e2e8f0}.fm-btn-danger{color:#dc2626;background:#fef2f2;border:1px solid #fecaca}.fm-btn-danger:hover:not(:disabled){background:#fee2e2}.fm-btn-sm{border-radius:5px;margin-left:.15rem;padding:.2rem .45rem;font-size:.68rem}.fm-overlay{z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.fm-modal{background:#fff;border-radius:14px;flex-direction:column;width:680px;max-width:95vw;max-height:90vh;animation:.2s ease-out fm-in;display:flex;overflow-y:auto;box-shadow:0 20px 60px #0003}@keyframes fm-in{0%{opacity:0;transform:scale(.96)translateY(-8px)}to{opacity:1;transform:scale(1)translateY(0)}}.fm-modal-header{color:#fff;background:#0f172a;border-radius:14px 14px 0 0;justify-content:space-between;align-items:center;padding:1rem 1.25rem;display:flex}.fm-modal-header span{font-size:.95rem;font-weight:700}.fm-close{color:#fff;cursor:pointer;background:#ffffff1f;border:1px solid #fff3;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:.85rem;display:flex}.fm-close:hover{background:#ffffff40}.fm-form-grid{grid-template-columns:1fr 1fr;gap:.75rem 1rem;padding:1.25rem;display:grid}.fm-form-grid label{color:#475569;flex-direction:column;gap:.25rem;font-size:.76rem;font-weight:600;display:flex}.fm-form-grid input,.fm-form-grid select{color:#1e293b;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:8px;padding:.45rem .7rem;font-family:inherit;font-size:.82rem}.fm-form-grid input:focus,.fm-form-grid select:focus{background:#fff;border-color:#6366f1;outline:none;box-shadow:0 0 0 3px #6366f114}.fm-full{grid-column:span 2}.fm-req{color:#dc2626;margin-left:2px}.fm-field-group{flex-direction:column;gap:4px;display:flex}.fm-field-label{color:#475569;font-size:.72rem;font-weight:700}.fm-field-hint{color:#94a3b8;margin-left:4px;font-size:.66rem;font-weight:400}.fm-stutype-checkboxes{background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:8px;flex-wrap:wrap;gap:4px 10px;padding:8px 10px;display:flex}.fm-stutype-check-item{color:#1e293b;cursor:pointer;border-radius:4px;align-items:center;gap:5px;padding:2px 6px;font-size:.8rem;font-weight:500;display:flex}.fm-stutype-check-item:hover{background:#eef2ff}.fm-stutype-check-item input[type=checkbox]{accent-color:#4f46e5;cursor:pointer;width:14px;height:14px}.fm-modal-footer{background:#fafbfc;border-top:1px solid #f1f5f9;border-radius:0 0 14px 14px;justify-content:flex-end;gap:.5rem;padding:1rem 1.25rem;display:flex}.fm-toast{color:#fff;z-index:9999;white-space:nowrap;background:#0f172a;border-radius:40px;padding:.6rem 1.5rem;font-size:.82rem;font-weight:600;animation:.25s ease-out fm-toast-in;position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);box-shadow:0 6px 20px #00000040}@keyframes fm-toast-in{0%{opacity:0;transform:translate(-50%)translateY(12px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@media (width<=768px){.fm-wrap{padding:.75rem}.fm-toolbar{flex-direction:column;align-items:stretch}.fm-toolbar-left,.fm-toolbar-right{flex-direction:column}.fm-search{width:100%}.fm-stats{grid-template-columns:repeat(2,1fr)}.fm-form-grid{grid-template-columns:1fr}.fm-full{grid-column:span 1}}@media (width<=480px){.fm-wrap{padding:.5rem}.fm-title{font-size:1.1rem}.fm-stats{grid-template-columns:1fr}.fm-stat{padding:.6rem .85rem}.fm-stat-value{font-size:1rem}.fm-table{font-size:.75rem}.fm-table thead tr:first-child th{padding:.5rem .65rem;font-size:.7rem}.fm-table thead tr:nth-child(2) th{padding:.35rem .65rem;font-size:.65rem}.fm-table tbody td{padding:.5rem .65rem}.fm-th-fees{min-width:160px}.fm-btn{min-height:44px;padding:.4rem .8rem}.fm-btn-sm{min-height:32px;padding:.2rem .4rem}.fm-modal{border-radius:12px}.fm-modal-header{padding:.85rem 1rem}.fm-form-grid{gap:.6rem .8rem;padding:.9rem}.fm-select,.fm-search{padding:.35rem .6rem;font-size:.78rem}}.st-root{padding:.5rem;font-family:inherit}.st-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.8rem;margin-bottom:1.2rem;display:flex}.st-header-left{align-items:center;gap:.8rem;display:flex}.st-header-actions{gap:.5rem;display:flex}.st-title{color:#1e293b;margin:0;font-size:1.3rem;font-weight:800}.st-subtitle{color:#64748b;margin:0;font-size:.78rem}.st-stats-row{grid-template-columns:repeat(5,1fr);gap:.8rem;margin-bottom:1.2rem;display:grid}.st-stat-card{text-align:center;background:#fff;border:1px solid #e8edf5;border-radius:10px;padding:1rem}.st-stat-value{font-size:1.6rem;font-weight:800}.st-stat-label{color:#64748b;margin-top:.2rem;font-size:.72rem}.st-filters{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:1rem;display:flex}.st-search{border:1.5px solid #e2e8f0;border-radius:8px;outline:none;flex:1;min-width:200px;padding:.5rem .85rem;font-family:inherit;font-size:.82rem}.st-search:focus{border-color:#0d7390}.st-select{background:#fff;border:1.5px solid #e2e8f0;border-radius:8px;outline:none;padding:.5rem .85rem;font-family:inherit;font-size:.82rem}.st-table-wrap{background:#fff;border:1px solid #e8edf5;border-radius:12px;overflow-x:auto}.st-table{border-collapse:collapse;width:100%;font-size:.82rem}.st-table th{text-align:left;color:#475569;text-transform:uppercase;letter-spacing:.03em;background:#f8fafc;border-bottom:2px solid #e8edf5;padding:.7rem .8rem;font-size:.72rem;font-weight:700}.st-table td{vertical-align:middle;border-bottom:1px solid #f1f5f9;padding:.7rem .8rem}.st-row{cursor:pointer;transition:background .12s}.st-row:hover{background:#f8fafc}.st-empty{text-align:center;color:#94a3b8;padding:2rem!important}.st-id{color:#0d7390;white-space:nowrap;font-weight:700}.st-title-cell{max-width:280px}.st-title-text{color:#1e293b;text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.st-module{color:#64748b;background:#f1f5f9;border-radius:4px;margin-top:.15rem;padding:.1rem .4rem;font-size:.65rem;display:inline-block}.st-user{color:#475569;font-size:.78rem}.st-date{color:#94a3b8;white-space:nowrap;font-size:.72rem}.st-badge{white-space:nowrap;border-radius:6px;padding:.15rem .55rem;font-size:.68rem;font-weight:700;display:inline-block}.st-pagination{justify-content:center;align-items:center;gap:1rem;margin-top:1rem;display:flex}.st-page-info{color:#64748b;font-size:.78rem}.st-btn{cursor:pointer;border:none;border-radius:8px;padding:.45rem 1rem;font-family:inherit;font-size:.82rem;font-weight:600;transition:all .12s}.st-btn-primary{color:#fff;background:#0d7390}.st-btn-primary:hover{background:#0a5c73}.st-btn-primary:disabled{opacity:.5;cursor:not-allowed}.st-btn-ghost{color:#475569;background:0 0;border:1px solid #e2e8f0}.st-btn-ghost:hover{background:#f1f5f9}.st-form{background:#fff;border:1px solid #e8edf5;border-radius:12px;max-width:800px;padding:1.5rem}.st-form-group{margin-bottom:1rem}.st-form-group label{color:#1e293b;margin-bottom:.35rem;font-size:.78rem;font-weight:700;display:block}.st-form-row{grid-template-columns:1fr 1fr 1fr;gap:1rem;display:grid}.st-input{box-sizing:border-box;border:1.5px solid #e2e8f0;border-radius:8px;outline:none;width:100%;padding:.55rem .85rem;font-family:inherit;font-size:.82rem}.st-input:focus{border-color:#0d7390}.st-textarea{resize:vertical;min-height:60px}.st-code{background:#f8fafc;font-family:Cascadia Code,Fira Code,monospace;font-size:.78rem}.st-char-count{color:#94a3b8;text-align:right;margin-top:.2rem;font-size:.68rem}.st-files{flex-wrap:wrap;gap:.4rem;margin-top:.5rem;display:flex}.st-file-chip{color:#0a5568;background:#e8f6fb;border-radius:6px;align-items:center;gap:.3rem;padding:.2rem .6rem;font-size:.72rem;display:flex}.st-file-chip button{cursor:pointer;color:#0a5568;background:0 0;border:none;font-weight:700}.st-detail-layout{gap:1.2rem;display:flex}.st-detail-left{flex:1;min-width:0}.st-detail-right{flex-shrink:0;width:300px}.st-section{background:#fff;border:1px solid #e8edf5;border-radius:12px;margin-bottom:1rem;padding:1.2rem}.st-section h3{color:#1e293b;margin:0 0 .8rem;font-size:.88rem;font-weight:700}.st-content{color:#475569;font-size:.85rem;line-height:1.6}.st-code-block{color:#e2e8f0;white-space:pre-wrap;background:#1e293b;border-radius:8px;margin:0;padding:1rem;font-family:Cascadia Code,Fira Code,monospace;font-size:.78rem;overflow-x:auto}.st-attachments{flex-wrap:wrap;gap:.5rem;display:flex}.st-attachment{color:#1e293b;background:#f8fafc;border:1px solid #e8edf5;border-radius:8px;align-items:center;gap:.4rem;padding:.5rem .8rem;font-size:.78rem;text-decoration:none;display:flex}.st-attachment span{color:#94a3b8;font-size:.65rem}.st-timeline{padding-left:1.5rem;position:relative}.st-timeline:before{content:"";background:#e8edf5;width:2px;position:absolute;top:0;bottom:0;left:6px}.st-timeline-item{margin-bottom:1rem;position:relative}.st-timeline-dot{background:#0d7390;border:2px solid #fff;border-radius:50%;width:12px;height:12px;position:absolute;top:4px;left:-1.5rem;box-shadow:0 0 0 2px #e8edf5}.st-timeline-content{background:#f8fafc;border-radius:8px;padding:.6rem .8rem}.st-timeline-action{color:#1e293b;font-size:.78rem;font-weight:700}.st-timeline-change{color:#475569;margin-top:.15rem;font-size:.75rem}.st-timeline-details{color:#64748b;margin-top:.15rem;font-size:.72rem}.st-timeline-meta{color:#94a3b8;margin-top:.3rem;font-size:.68rem}.st-comments{flex-direction:column;gap:.8rem;margin-bottom:1rem;display:flex}.st-comment{background:#f8fafc;border-radius:10px;padding:.8rem}.st-comment-internal{background:#fef9c3;border:1px solid #fde68a}.st-comment-header{align-items:center;gap:.5rem;margin-bottom:.4rem;font-size:.78rem;display:flex}.st-comment-role{color:#94a3b8;font-size:.65rem}.st-comment-time{color:#94a3b8;margin-left:auto;font-size:.65rem}.st-comment-body{color:#475569;font-size:.82rem;line-height:1.5}.st-add-comment{margin-top:.5rem}.st-comment-actions{justify-content:space-between;align-items:center;margin-top:.5rem;display:flex}.st-checkbox{cursor:pointer;align-items:center;gap:.4rem;font-size:.78rem;display:flex}.st-meta-card{background:#fff;border:1px solid #e8edf5;border-radius:12px;margin-bottom:1rem;padding:1rem}.st-meta-card h3{color:#1e293b;margin:0 0 .6rem;font-size:.82rem;font-weight:700}.st-meta-row{border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:center;padding:.4rem 0;font-size:.78rem;display:flex}.st-meta-row:last-child{border-bottom:none}.st-meta-row>span:first-child{color:#64748b}.st-meta-row>span:last-child{color:#1e293b;font-weight:600}.st-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (width<=900px){.st-stats-row{grid-template-columns:repeat(3,1fr)}.st-form-row{grid-template-columns:1fr}.st-detail-layout{flex-direction:column}.st-detail-right{width:100%}}@media (width<=480px){.st-root{padding:.25rem}.st-stats-row{grid-template-columns:repeat(2,1fr)}.st-stat-card{padding:.75rem}.st-stat-value{font-size:1.2rem}.st-search{min-width:140px}.st-table{font-size:.75rem}.st-table th,.st-table td{padding:.5rem .6rem}.st-form{padding:1rem}.st-title{font-size:1.1rem}.st-btn{min-height:44px;padding:.4rem .85rem}.st-title-cell{max-width:180px}}.lf-root{max-width:1400px;margin:0 auto;padding:1rem 1.5rem;font-family:inherit}.lf-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.8rem;margin-bottom:1rem;display:flex}.lf-header-left h1{color:#1e293b;margin:0;font-size:1.4rem;font-weight:800}.lf-header-left p{color:#64748b;margin:.2rem 0 0;font-size:.8rem}.lf-header-actions{flex-wrap:wrap;gap:.5rem;display:flex}.lf-tabs{border-bottom:2px solid #e2e8f0;gap:0;margin-bottom:1.2rem;display:flex}.lf-tab{cursor:pointer;color:#64748b;text-transform:capitalize;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;padding:.6rem 1.2rem;font-size:.85rem;font-weight:500;transition:all .15s}.lf-tab:hover{color:#0d7390}.lf-tab--active{color:#0d7390;border-bottom-color:#0d7390;font-weight:700}.lf-msg{border-radius:8px;justify-content:space-between;align-items:center;margin-bottom:1rem;padding:.6rem 1rem;font-size:.82rem;font-weight:600;display:flex}.lf-msg--ok{color:#15803d;background:#dcfce7}.lf-msg--err{color:#b91c1c;background:#fee2e2}.lf-msg button{cursor:pointer;color:inherit;background:0 0;border:none;font-size:1rem}.lf-stats{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.8rem;margin-bottom:1.5rem;display:grid}.lf-stat{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:1rem 1.2rem}.lf-stat-value{font-size:1.4rem;font-weight:800}.lf-stat-label{color:#64748b;margin-top:.15rem;font-size:.72rem}.lf-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;margin-bottom:1rem;padding:1.2rem}.lf-card h3{color:#1e293b;margin:0 0 .8rem;font-size:.88rem;font-weight:700}.lf-grid-2{grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem;display:grid}.lf-grid-3{grid-template-columns:1fr 1fr 1fr;gap:1rem;display:grid}.lf-list-item{border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:center;padding:.5rem 0;font-size:.82rem;display:flex}.lf-list-item:last-child{border-bottom:none}.lf-list-item span:last-child{font-weight:700}.lf-table-wrap{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow-x:auto}.lf-table{border-collapse:collapse;width:100%;font-size:.82rem}.lf-table th{text-align:left;color:#475569;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;background:#f8fafc;border-bottom:2px solid #e2e8f0;padding:.65rem .8rem;font-size:.72rem;font-weight:700}.lf-table td{vertical-align:middle;border-bottom:1px solid #f1f5f9;padding:.65rem .8rem}.lf-table tr:last-child td{border-bottom:none}.lf-table tr:hover td{background:#f8fafc}.lf-empty{text-align:center;color:#94a3b8;padding:2.5rem 1rem}.lf-badge{white-space:nowrap;border-radius:6px;padding:.15rem .55rem;font-size:.7rem;font-weight:700;display:inline-block}.lf-badge--active{color:#15803d;background:#dcfce7}.lf-badge--inactive{color:#b91c1c;background:#fee2e2}.lf-badge--paid{color:#15803d;background:#dcfce7}.lf-badge--waived{color:#d97706;background:#fffbeb}.lf-badge--pending{color:#b91c1c;background:#fee2e2}.lf-badge--overdue{color:#dc2626;background:#fef2f2}.lf-badge--partial,.lf-badge--type{color:#2563eb;background:#eff6ff}.lf-btn{cursor:pointer;border:none;border-radius:8px;padding:.45rem 1rem;font-family:inherit;font-size:.82rem;font-weight:600;transition:all .12s}.lf-btn--primary{color:#fff;background:#0d7390}.lf-btn--primary:hover{background:#0a5c73}.lf-btn--primary:disabled{opacity:.5;cursor:not-allowed}.lf-btn--ghost{color:#475569;background:0 0;border:1px solid #e2e8f0}.lf-btn--ghost:hover{background:#f1f5f9}.lf-btn--sm{padding:.25rem .6rem;font-size:.72rem}.lf-btn--danger{color:#ef4444}.lf-btn--warn{color:#d97706}.lf-filters{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:1rem;display:flex}.lf-select{background:#fff;border:1.5px solid #e2e8f0;border-radius:8px;outline:none;padding:.5rem .85rem;font-family:inherit;font-size:.82rem}.lf-select:focus{border-color:#0d7390}.lf-pagination{justify-content:center;align-items:center;gap:1rem;margin-top:1rem;display:flex}.lf-page-info{color:#64748b;font-size:.78rem}.lf-modal-overlay{z-index:1000;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lf-modal{background:#fff;border-radius:12px;width:90%;max-width:500px;max-height:90vh;overflow-y:auto}.lf-modal-header{border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;padding:1rem 1.2rem;display:flex}.lf-modal-header h3{margin:0;font-size:1rem;font-weight:700}.lf-modal-close{cursor:pointer;color:#64748b;background:0 0;border:none;font-size:1.2rem}.lf-modal-body{padding:1.2rem}.lf-modal-footer{border-top:1px solid #e2e8f0;justify-content:flex-end;gap:.5rem;padding:1rem 1.2rem;display:flex}.lf-form-group{margin-bottom:1rem}.lf-form-group label{color:#1e293b;margin-bottom:.3rem;font-size:.78rem;font-weight:700;display:block}.lf-input{box-sizing:border-box;border:1.5px solid #e2e8f0;border-radius:8px;outline:none;width:100%;padding:.5rem .85rem;font-family:inherit;font-size:.82rem}.lf-input:focus{border-color:#0d7390}.lf-form-row{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.lf-overdue-warn{color:#f59e0b;font-weight:700}.lf-overdue-danger{color:#ef4444;font-weight:700}.lf-amount{font-weight:700}.lf-amount-waived{color:#d97706}@media (width<=900px){.lf-grid-2{grid-template-columns:1fr}.lf-stats{grid-template-columns:repeat(2,1fr)}.lf-header{flex-direction:column;align-items:flex-start}}@media (width<=480px){.lf-root{padding:.75rem}.lf-stats,.lf-grid-3{grid-template-columns:1fr}.lf-tabs{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;overflow-x:auto}.lf-tab{flex-shrink:0;padding:.5rem .9rem;font-size:.78rem}.lf-form-row{grid-template-columns:1fr}.lf-table{font-size:.75rem}.lf-table th,.lf-table td{padding:.5rem .6rem}.lf-header-left h1{font-size:1.15rem}.lf-btn{min-height:44px;padding:.4rem .85rem}}.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;top:0;left:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:0 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{-webkit-transform-origin:0 0;width:1600px;height:1600px}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{width:auto;padding:0;max-width:none!important;max-height:none!important}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:#33b5e566}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{box-sizing:border-box;z-index:800;width:0;height:0}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{z-index:800;pointer-events:visiblePainted;pointer-events:auto;position:relative}.leaflet-top,.leaflet-bottom{z-index:1000;pointer-events:none;position:absolute}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{outline-offset:1px;background:#ddd}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{background:#ffffff80;border:2px dotted #38f}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:.75rem;line-height:1.5}.leaflet-bar{border-radius:4px;box-shadow:0 1px 5px #000000a6}.leaflet-bar a{text-align:center;color:#000;background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;text-decoration:none;display:block}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom:none;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.leaflet-bar a.leaflet-disabled{cursor:default;color:#bbb;background-color:#f4f4f4}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{text-indent:1px;font:700 18px Lucida Console,Monaco,monospace}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{background:#fff;border-radius:5px;box-shadow:0 1px 5px #0006}.leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{color:#333;background:#fff;padding:6px 10px 6px 6px}.leaflet-control-layers-scrollbar{padding-right:5px;overflow:hidden scroll}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{font-size:1.08333em;display:block}.leaflet-control-layers-separator{border-top:1px solid #ddd;height:0;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)}.leaflet-container .leaflet-control-attribution{background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{color:#333;padding:0 5px;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{width:1em;height:.6669em;vertical-align:baseline!important;display:inline!important}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{white-space:nowrap;box-sizing:border-box;text-shadow:1px 1px #fff;background:#fffc;border:2px solid #777;border-top:none;padding:2px 5px 1px;line-height:1.1}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{background-clip:padding-box;border:2px solid #0003}.leaflet-popup{text-align:center;margin-bottom:20px;position:absolute}.leaflet-popup-content-wrapper{text-align:left;border-radius:12px;padding:1px}.leaflet-popup-content{min-height:1px;margin:13px 24px 13px 20px;font-size:1.08333em;line-height:1.3}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{pointer-events:none;width:40px;height:20px;margin-top:-1px;margin-left:-20px;position:absolute;left:50%;overflow:hidden}.leaflet-popup-tip{pointer-events:auto;width:17px;height:17px;margin:-10px auto 0;padding:1px;transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{color:#333;background:#fff;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{text-align:center;color:#757575;background:0 0;border:none;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;text-decoration:none;position:absolute;top:0;right:0}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";width:24px;filter:progid:DXImageTransform.Microsoft.Matrix(M11=.707107, M12=.707107, M21=-.707107, M22=.707107);margin:0 auto}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{color:#222;white-space:nowrap;-webkit-user-select:none;user-select:none;pointer-events:none;background-color:#fff;border:1px solid #fff;border-radius:3px;padding:6px;position:absolute;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{pointer-events:none;content:"";background:0 0;border:6px solid #0000;position:absolute}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{margin-left:-6px;left:50%}.leaflet-tooltip-top:before{border-top-color:#fff;margin-bottom:-12px;bottom:0}.leaflet-tooltip-bottom:before{border-bottom-color:#fff;margin-top:-12px;margin-left:-6px;top:0}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{margin-top:-6px;top:50%}.leaflet-tooltip-left:before{border-left-color:#fff;margin-right:-12px;right:0}.leaflet-tooltip-right:before{border-right-color:#fff;margin-left:-12px;left:0}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.td-fleet-grid{grid-template-rows:600px;grid-template-columns:1fr 340px;gap:16px;display:grid}.td-map{border-radius:12px;height:600px;overflow:hidden;box-shadow:0 1px 4px #0000001a}.td-sidebar{flex-direction:column;gap:12px;display:flex;overflow-y:auto}.td-card{background:#fff;border-radius:10px;padding:16px;box-shadow:0 1px 3px #0000000f}.td-card-title{color:#475569;margin:0;font-size:14px;font-weight:600}.td-fleet-stats{grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:10px;display:grid}.td-stat-item{text-align:center;background:#f8fafc;border-radius:8px;padding:8px}.td-stat-value{font-size:22px;font-weight:700}.td-stat-label{color:#94a3b8;font-size:11px}.td-vehicle-info{color:#475569;margin-top:10px;font-size:13px;line-height:1.8}.td-status-badge{border-radius:10px;padding:2px 8px;font-size:11px;font-weight:600}.td-trip-card{cursor:pointer;border:1px solid #e2e8f0;border-radius:8px;margin-bottom:6px;padding:10px}.td-trip-header{justify-content:space-between;align-items:center;display:flex}.td-trip-type-badge{border-radius:6px;padding:1px 6px;font-size:10px}.td-trip-meta{color:#64748b;margin-top:4px;font-size:12px}.td-trip-time{color:#94a3b8;margin-top:2px;font-size:11px}.td-entity-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;display:grid}.td-entity-card{background:#fff;border-radius:10px;padding:16px;box-shadow:0 1px 3px #0000000f}.td-entity-header{justify-content:space-between;align-items:center;display:flex}.td-entity-title{font-size:15px;font-weight:600}.td-entity-subtitle{color:#64748b;font-size:12px}.td-entity-actions{gap:6px;display:flex}.td-entity-detail{color:#64748b;margin-top:4px;font-size:12px}.td-form-grid{grid-template-columns:1fr 1fr 1fr;gap:12px;display:grid}.td-form-grid-2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.td-input{box-sizing:border-box;border:1px solid #e2e8f0;border-radius:6px;width:100%;padding:8px 12px;font-size:13px}.td-btn{cursor:pointer;border:none;border-radius:6px;min-height:44px;padding:8px 16px;font-size:13px;font-weight:600}.td-btn-primary{color:#fff;background:#3b82f6}.td-btn-secondary{color:#475569;background:#f1f5f9}.td-btn-small{cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:6px;min-height:36px;padding:4px 10px;font-size:12px}.td-btn-danger{color:#fff;background:#ef4444}.td-btn-success{color:#fff;background:#22c55e}.td-alert-grid{grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:12px;display:grid}.td-alert-card{background:#fff;border-left:4px solid #ef4444;border-radius:10px;padding:16px;box-shadow:0 1px 3px #0000000f}.td-alert-resolved{opacity:.7;border-left-color:#22c55e}.td-tabs{-webkit-overflow-scrolling:touch;gap:4px;margin-bottom:16px;display:flex;overflow-x:auto}.td-tab{cursor:pointer;color:#64748b;white-space:nowrap;background:0 0;border:none;border-radius:8px;min-height:44px;padding:8px 16px;font-size:13px;font-weight:600}.td-tab-active{color:#fff;background:#3b82f6}.td-section-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.td-section-title{margin:0;font-size:18px;font-weight:600}.td-empty{color:#94a3b8;text-align:center;padding:20px;font-size:13px}@media (width<=900px){.td-fleet-grid{grid-template-rows:400px auto;grid-template-columns:1fr}.td-map{height:400px}.td-form-grid{grid-template-columns:1fr 1fr}.td-alert-grid{grid-template-columns:1fr}}@media (width<=600px){.td-fleet-grid{grid-template-rows:300px auto}.td-map{height:300px}.td-form-grid,.td-form-grid-2,.td-entity-grid{grid-template-columns:1fr}.td-fleet-stats{grid-template-columns:1fr 1fr 1fr;gap:4px}.td-stat-item{padding:6px}.td-stat-value{font-size:18px}.td-tabs{gap:2px}.td-tab{padding:6px 12px;font-size:12px}}@media (width<=480px){.td-fleet-grid{grid-template-rows:250px auto}.td-map{height:250px}.td-card,.td-entity-card{padding:12px}.td-section-title{font-size:16px}.td-btn{min-height:44px;font-size:14px}.td-btn-small{min-height:40px;font-size:13px}.td-input{padding:10px 12px;font-size:14px}}.dtv-container{grid-template-columns:1fr 340px;gap:16px;padding:16px;display:grid}.dtv-main,.dtv-sidebar{flex-direction:column;gap:12px;display:flex}.dtv-card{background:#fff;border-radius:10px;padding:16px;box-shadow:0 1px 3px #0000000f}.dtv-card-accent{border-left:4px solid #3b82f6}.dtv-card-title{color:#64748b;text-transform:uppercase;letter-spacing:.5px;margin:0;font-size:13px;font-weight:600}.dtv-card-value{color:#1e293b;margin:6px 0 0;font-size:18px;font-weight:700}.dtv-card-meta{color:#94a3b8;margin:4px 0 0;font-size:12px}.dtv-trip-controls{gap:8px;margin-top:12px;display:flex}.dtv-btn{cursor:pointer;border:none;border-radius:8px;flex:1;min-height:44px;padding:10px 16px;font-size:13px;font-weight:600}.dtv-btn-primary{color:#fff;background:#3b82f6}.dtv-btn-warning{color:#fff;background:#f59e0b}.dtv-btn-danger{color:#fff;background:#ef4444}.dtv-btn-success{color:#fff;background:#22c55e}.dtv-btn:disabled{opacity:.6;cursor:not-allowed}.dtv-sos-btn{color:#fff;cursor:pointer;letter-spacing:1px;background:#ef4444;border:none;border-radius:10px;width:100%;min-height:48px;padding:14px 24px;font-size:16px;font-weight:700}.dtv-stop-list{max-height:calc(100vh - 400px);overflow-y:auto}.dtv-stop-item{border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:10px;margin-bottom:6px;padding:10px 12px;display:flex}.dtv-stop-current{background:#eff6ff;border-color:#3b82f6}.dtv-stop-completed{background:#f0fdf4;border-color:#22c55e}.dtv-stop-number{color:#94a3b8;background:#e2e8f0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:flex}.dtv-stop-number-current{color:#fff;background:#3b82f6}.dtv-stop-number-completed{color:#fff;background:#22c55e}.dtv-stop-info{flex:1;min-width:0}.dtv-stop-name{color:#1e293b;font-size:13px;font-weight:600}.dtv-stop-name-completed{color:#16a34a}.dtv-stop-landmark{color:#94a3b8;margin-top:2px;font-size:11px}.dtv-stop-time{color:#64748b;flex-shrink:0;font-size:11px}.dtv-gps-status{border:1px solid #e2e8f0;border-radius:8px;margin-top:12px;padding:10px}.dtv-gps-active{background:#f0fdf4;border-color:#bbf7d0}.dtv-gps-indicator{align-items:center;gap:8px;display:flex}.dtv-gps-dot{background:#94a3b8;border-radius:50%;width:8px;height:8px}.dtv-gps-dot-active{background:#22c55e}.dtv-gps-label{font-size:13px;font-weight:600}.dtv-gps-time{color:#64748b;margin-top:4px;font-size:11px}.dtv-loading{text-align:center;color:#94a3b8;padding:60px;font-size:15px}@media (width<=900px){.dtv-container{grid-template-columns:1fr;padding:12px}.dtv-sidebar{order:-1}}@media (width<=600px){.dtv-container{gap:12px;padding:8px}.dtv-card{padding:12px}.dtv-trip-controls{flex-direction:column}.dtv-stop-list{max-height:300px}}@media (width<=480px){.dtv-btn{min-height:48px;font-size:14px}.dtv-sos-btn{min-height:52px;font-size:18px}.dtv-stop-item{padding:12px}.dtv-stop-number{width:28px;height:28px;font-size:13px}}.lc-page{background:var(--bg,#0f172a);min-height:100vh;color:var(--text,#e2e8f0);padding-bottom:env(safe-area-inset-bottom)}.lc-header{background:var(--bg,#0f172a);z-index:10;border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;padding:1rem 1.25rem;display:flex;position:sticky;top:0}.lc-header-left{align-items:center;gap:.6rem;display:flex}.lc-header-left h1{margin:0;font-size:1.2rem;font-weight:700}.lc-header-left .lc-icon{font-size:1.3rem}.lc-btn-schedule{color:#fff;cursor:pointer;white-space:nowrap;background:#3b82f6;border:none;border-radius:8px;padding:.5rem 1rem;font-size:.85rem;font-weight:600}.lc-tabs{-webkit-overflow-scrolling:touch;scrollbar-width:none;border-bottom:1px solid #ffffff1a;gap:0;padding:0 1rem;display:flex;overflow-x:auto}.lc-tabs::-webkit-scrollbar{display:none}.lc-tab{color:#94a3b8;cursor:pointer;text-transform:capitalize;white-space:nowrap;background:0 0;border:none;border-bottom:3px solid #0000;flex-shrink:0;padding:.7rem .9rem;font-size:.82rem;font-weight:600}.lc-tab-active{color:#3b82f6;border-bottom-color:#3b82f6}.lc-main{max-width:1200px;margin:0 auto;padding:1rem 1.25rem}.lc-filters{flex-wrap:wrap;gap:.4rem;margin-bottom:1rem;display:flex}.lc-filter-pill{color:#94a3b8;cursor:pointer;background:#ffffff14;border:none;border-radius:20px;padding:.35rem .85rem;font-size:.78rem;font-weight:500}.lc-filter-pill-active{color:#fff;background:#3b82f6}.lc-card{cursor:pointer;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:12px;padding:1rem;transition:all .2s}.lc-card-selected{border-width:2px;border-color:#3b82f6}.lc-card-header{justify-content:space-between;align-items:flex-start;gap:.5rem;display:flex}.lc-card-title{margin:0;font-size:.95rem;font-weight:600;line-height:1.3}.lc-card-subtitle{color:#94a3b8;margin:.25rem 0 0;font-size:.8rem;line-height:1.3}.lc-status-badge{color:#fff;text-transform:uppercase;white-space:nowrap;border-radius:12px;flex-shrink:0;padding:.15rem .6rem;font-size:.7rem;font-weight:600}.lc-card-meta{color:#cbd5e1;flex-wrap:wrap;gap:1rem;margin-top:.6rem;font-size:.8rem;display:flex}.lc-card-meta span{white-space:nowrap}.lc-card-actions{flex-wrap:wrap;gap:.4rem;margin-top:.6rem;display:flex}.lc-btn{cursor:pointer;white-space:nowrap;border:none;border-radius:6px;padding:.4rem .75rem;font-size:.78rem;font-weight:600}.lc-btn-start{color:#fff;background:#22c55e}.lc-btn-join{color:#fff;background:#3b82f6}.lc-btn-end,.lc-btn-cancel{color:#fff;background:#ef4444}.lc-detail{background:#ffffff0d;border:1px solid #ffffff1a;border-radius:12px;margin-top:1rem;padding:1rem}.lc-detail-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.lc-detail-title{margin:0;font-size:1.1rem}.lc-detail-subtitle{color:#94a3b8;margin:.3rem 0 0;font-size:.85rem}.lc-detail-actions{flex-wrap:wrap;gap:.4rem;display:flex}.lc-section-title{margin-top:1rem;font-size:.95rem;font-weight:600}.lc-table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.lc-table{border-collapse:collapse;width:100%;min-width:480px;font-size:.82rem}.lc-table th{text-align:left;color:#94a3b8;white-space:nowrap;padding:.45rem .5rem;font-size:.75rem;font-weight:600}.lc-table td{white-space:nowrap;padding:.45rem .5rem}.lc-table tr{border-bottom:1px solid #ffffff0d}.lc-att-select{color:#e2e8f0;background:#ffffff1a;border:1px solid #fff3;border-radius:4px;padding:.2rem .4rem;font-size:.78rem}.lc-form{max-width:600px}.lc-form h2{margin-bottom:.75rem;font-size:1rem;font-weight:600}.lc-form-grid{gap:.7rem;display:grid}.lc-form-row{grid-template-columns:1fr 1fr;gap:.7rem;display:grid}.lc-label{color:#94a3b8;flex-direction:column;gap:.25rem;font-size:.82rem;display:flex}.lc-input{color:#e2e8f0;box-sizing:border-box;-webkit-appearance:none;background:#ffffff14;border:1px solid #ffffff26;border-radius:8px;outline:none;width:100%;padding:.55rem .7rem;font-size:.88rem}.lc-textarea{resize:vertical;min-height:70px}.lc-checkbox-row{flex-wrap:wrap;align-items:center;gap:.8rem;display:flex}.lc-checkbox-label{cursor:pointer;align-items:center;gap:.35rem;font-size:.85rem;display:flex}.lc-btn-submit{color:#fff;cursor:pointer;background:#3b82f6;border:none;border-radius:8px;width:100%;margin-top:.4rem;padding:.65rem;font-size:.9rem;font-weight:600}.lc-btn-submit:disabled{cursor:not-allowed;background:#475569}.lc-report-grid{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.75rem;display:grid}.lc-stat-card{text-align:center;background:#ffffff0d;border-radius:8px;padding:.85rem}.lc-stat-value{font-size:1.3rem;font-weight:700}.lc-stat-label{color:#94a3b8;margin-top:.2rem;font-size:.75rem}.lc-link{color:#3b82f6;align-items:center;gap:.4rem;margin-top:.35rem;font-size:.85rem;text-decoration:none;display:flex}.lc-pagination{justify-content:center;align-items:center;gap:.5rem;margin-top:1.25rem;display:flex}.lc-page-btn{color:#e2e8f0;cursor:pointer;background:#ffffff1a;border:none;border-radius:6px;padding:.35rem .7rem;font-size:.82rem}.lc-page-btn:disabled{opacity:.5;cursor:not-allowed}.lc-page-info{color:#94a3b8;padding:.35rem .7rem;font-size:.82rem}.lc-settings-card{background:#ffffff0d;border:1px solid #ffffff1a;border-radius:12px;max-width:500px;padding:1.25rem}.lc-settings-card h4{margin:0 0 .4rem;font-size:.88rem;font-weight:600}.lc-settings-card ul{color:#94a3b8;margin:0;padding-left:1.25rem;font-size:.82rem}.lc-settings-card code{background:#ffffff1a;border-radius:3px;padding:.1rem .3rem;font-size:.78rem}.lc-empty{color:#94a3b8;text-align:center;padding:2rem 1rem;font-size:.9rem}@keyframes lc-pulse{0%,to{opacity:1}50%{opacity:.4}}.lc-live-dot{background:#22c55e;border-radius:50%;width:8px;height:8px;animation:1.5s infinite lc-pulse;display:inline-block}@media (width<=480px){.lc-header{padding:.75rem 1rem}.lc-header-left h1{font-size:1.05rem}.lc-btn-schedule{padding:.4rem .75rem;font-size:.78rem}.lc-tabs{padding:0 .5rem}.lc-tab{padding:.6rem .65rem;font-size:.75rem}.lc-main{padding:.75rem 1rem}.lc-card{padding:.85rem}.lc-card-title{font-size:.88rem}.lc-card-subtitle{font-size:.75rem}.lc-card-meta{gap:.6rem;font-size:.75rem}.lc-card-meta span{width:100%;display:block}.lc-detail{padding:.85rem}.lc-detail-title{font-size:1rem}.lc-form-row{grid-template-columns:1fr}.lc-input{padding:.5rem .65rem;font-size:1rem}.lc-report-grid{grid-template-columns:repeat(2,1fr);gap:.5rem}.lc-stat-value{font-size:1.1rem}.lc-stat-label{font-size:.7rem}.lc-table{min-width:360px;font-size:.78rem}.lc-table th,.lc-table td{padding:.35rem .4rem}}@media (width<=380px){.lc-header-left h1{font-size:.95rem}.lc-btn-schedule{padding:.35rem .6rem;font-size:.72rem}.lc-tab{padding:.5rem;font-size:.7rem}.lc-card-meta span{font-size:.72rem}}*,:before,:after{box-sizing:border-box}.cp-page{min-height:100dvh;padding:1.5rem;padding-top:calc(1.5rem + env(safe-area-inset-top));padding-bottom:calc(1.5rem + env(safe-area-inset-bottom));background:linear-gradient(135deg,#1a1a2e 0%,#0f3460 50%,#16213e 100%);justify-content:center;align-items:center;font-family:Segoe UI,system-ui,-apple-system,sans-serif;display:flex;position:relative;overflow:hidden}.cp-bg{pointer-events:none;position:absolute;inset:0;overflow:hidden}.cp-bg-shape{filter:blur(80px);opacity:.15;border-radius:50%;position:absolute}.cp-shape-1{background:radial-gradient(circle,#6366f1,#0000 70%);width:400px;height:400px;animation:10s ease-in-out infinite alternate cp-drift;top:-100px;left:-80px}.cp-shape-2{background:radial-gradient(circle,#8b5cf6,#0000 70%);width:350px;height:350px;animation:14s ease-in-out infinite alternate-reverse cp-drift;bottom:-80px;right:-60px}@keyframes cp-drift{0%{transform:translate(0)}to{transform:translate(30px,20px)}}.cp-card{z-index:1;background:#fffffff2;border-radius:20px;width:100%;max-width:440px;padding:2.5rem 2rem;position:relative;box-shadow:0 20px 60px #0006,0 0 0 1px #ffffff1a}.cp-header{text-align:center;margin-bottom:1.5rem}.cp-icon{margin-bottom:.75rem;font-size:2.8rem;line-height:1}.cp-title{color:#1e1b4b;margin:0 0 .4rem;font-size:1.6rem;font-weight:700}.cp-subtitle{color:#6b7280;margin:0;font-size:.875rem;line-height:1.5}.cp-alert{color:#92400e;background:#fef3c7;border:1px solid #f59e0b;border-radius:10px;align-items:flex-start;gap:.6rem;margin-bottom:1.5rem;padding:.75rem 1rem;font-size:.83rem;line-height:1.45;display:flex}.cp-alert-icon{flex-shrink:0;font-size:1rem}.cp-form{flex-direction:column;gap:1.1rem;display:flex}.cp-field{flex-direction:column;gap:.4rem;display:flex}.cp-label{color:#374151;text-transform:uppercase;letter-spacing:.04em;font-size:.82rem;font-weight:600}.cp-input-wrap{align-items:center;display:flex;position:relative}.cp-input{color:#1f2937;background:#f9fafb;border:1.5px solid #d1d5db;border-radius:10px;outline:none;width:100%;padding:.75rem 2.8rem .75rem 1rem;font-size:.95rem;transition:border-color .2s,box-shadow .2s}.cp-input:focus{background:#fff;border-color:#6366f1;box-shadow:0 0 0 3px #6366f11f}.cp-eye{cursor:pointer;opacity:.6;background:0 0;border:none;padding:0;font-size:1rem;line-height:1;transition:opacity .15s;position:absolute;right:.75rem}.cp-eye:hover{opacity:1}.cp-strength{align-items:center;gap:.6rem;margin-top:.3rem;display:flex}.cp-strength-bar{flex:1;gap:4px;display:flex}.cp-strength-seg{border-radius:2px;flex:1;height:4px;transition:background .3s}.cp-strength-label{text-align:right;min-width:3rem;font-size:.75rem;font-weight:600}.cp-mismatch{color:#ef4444;margin:0;font-size:.78rem}.cp-msg{border-radius:10px;padding:.7rem 1rem;font-size:.85rem;font-weight:500;line-height:1.4}.cp-msg-error{color:#dc2626;background:#fef2f2;border:1px solid #fecaca}.cp-msg-success{color:#16a34a;background:#f0fdf4;border:1px solid #bbf7d0}.cp-btn-primary{color:#fff;cursor:pointer;background:linear-gradient(135deg,#6366f1 0%,#8b5cf6 100%);border:none;border-radius:12px;justify-content:center;align-items:center;gap:.5rem;width:100%;margin-top:.4rem;padding:.85rem;font-size:1rem;font-weight:600;transition:opacity .2s,transform .15s,box-shadow .2s;display:flex;box-shadow:0 4px 14px #6366f159}.cp-btn-primary:hover:not(:disabled){opacity:.92;transform:translateY(-1px);box-shadow:0 6px 18px #6366f173}.cp-btn-primary:disabled{opacity:.65;cursor:not-allowed;transform:none}.cp-spinner{border:2.5px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.7s linear infinite cp-spin}@keyframes cp-spin{to{transform:rotate(360deg)}}.cp-secondary-actions{flex-wrap:wrap;gap:.75rem;display:flex}.cp-btn-secondary,.cp-btn-skip,.cp-btn-logout{cursor:pointer;border:1.5px solid;border-radius:10px;flex:1;padding:.7rem 1rem;font-size:.875rem;font-weight:500;transition:background .15s,color .15s}.cp-btn-secondary{color:#374151;background:#f3f4f6;border-color:#d1d5db}.cp-btn-secondary:hover{background:#e5e7eb}.cp-btn-skip{color:#0d7390;background:#e8f6fb;border-color:#9dd6eb}.cp-btn-skip:hover{background:#c5e9f3}.cp-btn-logout{color:#dc2626;background:#fef2f2;border-color:#fecaca}.cp-btn-logout:hover{background:#fee2e2}@media (width<=480px){.cp-card{border-radius:16px;padding:2rem 1.25rem}.cp-title{font-size:1.35rem}.cp-secondary-actions{flex-direction:column}}.ptv-container{grid-template-columns:1fr 340px;gap:16px;padding:16px;display:grid}.ptv-map-section{flex-direction:column;gap:12px;display:flex}.ptv-map{border-radius:12px;height:500px;overflow:hidden;box-shadow:0 1px 4px #0000001a}.ptv-sidebar{flex-direction:column;gap:12px;display:flex}.ptv-card{background:#fff;border-radius:10px;padding:16px;box-shadow:0 1px 3px #0000000f}.ptv-card-title{color:#475569;margin:0 0 12px;font-size:14px;font-weight:600}.ptv-vehicle-header{justify-content:space-between;align-items:center;display:flex}.ptv-vehicle-reg{color:#1e293b;font-size:15px;font-weight:600}.ptv-status-badge{border-radius:10px;padding:2px 8px;font-size:11px;font-weight:600}.ptv-vehicle-details{color:#475569;margin-top:10px;font-size:13px;line-height:1.8}.ptv-trip-status{text-align:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:12px}.ptv-trip-status-text{color:#1e293b;font-size:14px;font-weight:600}.ptv-eta-list{flex-direction:column;gap:8px;display:flex}.ptv-eta-item{background:#f8fafc;border-radius:8px;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.ptv-eta-stop-name{color:#1e293b;font-size:13px;font-weight:500}.ptv-eta-time{color:#3b82f6;font-size:13px;font-weight:600}.ptv-eta-distance{color:#94a3b8;font-size:11px}.ptv-tabs{gap:4px;margin-bottom:12px;display:flex}.ptv-tab{cursor:pointer;color:#64748b;background:0 0;border:none;border-radius:8px;flex:1;min-height:44px;padding:8px 16px;font-size:13px;font-weight:600}.ptv-tab-active{color:#fff;background:#3b82f6}.ptv-history-list{flex-direction:column;gap:8px;max-height:400px;display:flex;overflow-y:auto}.ptv-history-item{border:1px solid #e2e8f0;border-radius:8px;padding:10px 12px}.ptv-history-header{justify-content:space-between;align-items:center;display:flex}.ptv-history-reg{font-size:13px;font-weight:600}.ptv-history-type{border-radius:6px;padding:1px 6px;font-size:10px}.ptv-history-meta{color:#64748b;margin-top:4px;font-size:12px}.ptv-history-time{color:#94a3b8;margin-top:2px;font-size:11px}.ptv-empty{color:#94a3b8;text-align:center;padding:20px;font-size:13px}.ptv-no-trip{text-align:center;color:#94a3b8;padding:40px 20px}.ptv-no-trip-icon{margin-bottom:12px;font-size:48px}.ptv-no-trip-text{font-size:15px;font-weight:500}.ptv-loading{text-align:center;color:#94a3b8;padding:60px;font-size:15px}@media (width<=900px){.ptv-container{grid-template-columns:1fr;padding:12px}.ptv-map{height:350px}}@media (width<=600px){.ptv-container{gap:12px;padding:8px}.ptv-map{height:280px}.ptv-card{padding:12px}.ptv-tabs{gap:2px}.ptv-tab{padding:6px 12px;font-size:12px}}@media (width<=480px){.ptv-map{height:220px}.ptv-tab{min-height:44px}.ptv-eta-item{padding:10px 12px}.ptv-history-item{padding:12px}}
