*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0d0f14;--surface: #161b24;--surface2: #1e2533;--border: #2a3347;--gradient-yellow: linear-gradient(92.73deg, #FFC100 0%, #FF8A00 100%);--gradient-blue: linear-gradient(92.73deg, #1366DF 0%, #00C6D8 100%);--success: #22c55e;--danger: #f43f5e;--text: #e8edf5;--muted: #6b7a99;--font-body: "DM Sans", sans-serif;--font-display: "Syne", sans-serif;--radius: 10px;--shadow: 0 4px 24px rgba(0,0,0,.4)}body{font-family:var(--font-body);background:var(--bg);color:var(--text);min-height:100vh;line-height:1.6}.header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 2rem;height:64px;background:var(--gradient-blue);position:sticky;top:0;z-index:100}.header-brand{display:flex;align-items:center;gap:10px;justify-self:start}.brand-icon{font-size:1.5rem;color:#fff}.brand-name{font-family:var(--font-display);font-size:1.3rem;font-weight:800;letter-spacing:-.02em;color:#fff}.brand-name em{font-style:normal;color:#ffc100}.header-nav{display:flex;gap:8px;justify-self:center}.nav-btn{padding:8px 20px;border-radius:6px;border:1px solid rgba(255,255,255,.3);background:transparent;color:#ffffffb3;font-family:var(--font-body);font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s}.nav-btn:hover{color:#fff;background:#ffffff26;border-color:#ffffff80}.nav-btn.active{color:#fff;background:#ffffff40;border-color:#fff}.main-content{max-width:1100px;margin:0 auto;padding:2.5rem 1.5rem}.page-header{margin-bottom:2rem}.page-title{font-family:var(--font-display);font-size:2rem;font-weight:800;letter-spacing:-.03em;background:var(--gradient-blue);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.page-subtitle{color:var(--muted);font-size:.9rem;margin-top:4px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;margin-bottom:1.5rem;box-shadow:var(--shadow)}.card-title{font-family:var(--font-display);font-size:1rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:1.25rem}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:.8rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.form-group input,.form-group select{background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:10px 14px;color:var(--text);font-family:var(--font-body);font-size:.9rem;outline:none;transition:border-color .2s}.form-group input:focus,.form-group select:focus{border-color:#1366df;box-shadow:0 0 0 3px #1366df26}.form-group select option{background:var(--surface2)}.form-footer{margin-top:1.25rem;display:flex;gap:10px;align-items:center}.btn{padding:10px 24px;border-radius:6px;border:none;font-family:var(--font-body);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:6px}.btn-primary{background:var(--gradient-yellow);color:#1a1a1a}.btn-primary:hover{opacity:.9;transform:translateY(-1px);box-shadow:0 4px 15px #ffc10066}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.btn-danger{background:transparent;color:var(--danger);border:1px solid rgba(244,63,94,.3);padding:6px 14px;font-size:.8rem}.btn-danger:hover{background:#f43f5e1a}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}thead tr{border-bottom:1px solid var(--border)}th{padding:10px 16px;text-align:left;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}tbody tr{border-bottom:1px solid rgba(42,51,71,.5);transition:background .15s}tbody tr:hover{background:var(--surface2)}td{padding:12px 16px;color:var(--text)}.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:.75rem;font-weight:600}.badge-present{background:#22c55e26;color:var(--success)}.badge-absent{background:#f43f5e26;color:var(--danger)}.badge-dept{background:linear-gradient(92.73deg,#1366df33,#00c6d833);color:#00c6d8;border:1px solid rgba(0,198,216,.3)}.alert{padding:12px 16px;border-radius:6px;font-size:.875rem;font-weight:500;display:flex;align-items:center;gap:8px}.alert-success{background:#22c55e1f;color:var(--success);border:1px solid rgba(34,197,94,.2)}.alert-error{background:#f43f5e1f;color:var(--danger);border:1px solid rgba(244,63,94,.2)}.loader-wrap{display:flex;justify-content:center;padding:3rem}.spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:#ffc100;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:3rem;color:var(--muted)}.empty-icon{font-size:2.5rem;margin-bottom:.75rem}.empty-text{font-size:.95rem}.stats-strip{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.stat-card{flex:1;min-width:140px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem}.stat-value{font-family:var(--font-display);font-size:2rem;font-weight:800;background:var(--gradient-blue);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.stat-label{font-size:.8rem;color:var(--muted);margin-top:2px;text-transform:uppercase;letter-spacing:.05em}.charts-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem}.chart-card{min-height:320px}.search-bar{display:flex;gap:10px;margin-bottom:1.25rem;flex-wrap:wrap}.search-input{flex:1;min-width:200px;background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:10px 14px;color:var(--text);font-family:var(--font-body);font-size:.9rem;outline:none;transition:border-color .2s}.search-input:focus{border-color:#1366df;box-shadow:0 0 0 3px #1366df26}.filter-select{background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:10px 14px;color:var(--text);font-family:var(--font-body);font-size:.9rem;outline:none;cursor:pointer;transition:border-color .2s;min-width:150px}.filter-select:focus{border-color:#1366df}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:999;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-box{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:2rem;width:100%;max-width:480px;box-shadow:0 20px 60px #0009;animation:slideUp .2s ease}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.modal-title{font-family:var(--font-display);font-size:1.3rem;font-weight:800;background:linear-gradient(92.73deg,#1366df,#00c6d8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.modal-subtitle{color:var(--muted);font-size:.85rem;margin-bottom:1.5rem}.modal-close{background:transparent;border:none;color:var(--muted);font-size:1.1rem;cursor:pointer;padding:4px 8px;border-radius:4px;transition:all .2s}.modal-close:hover{color:var(--text);background:var(--surface2)}.btn-edit{padding:6px 14px;border-radius:6px;border:1px solid rgba(19,102,223,.3);background:transparent;color:#1366df;font-family:var(--font-body);font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-edit:hover{background:#1366df1a}.view-toggle{display:flex;gap:4px;background:var(--surface2);padding:4px;border-radius:8px;border:1px solid var(--border)}.toggle-btn{padding:6px 16px;border-radius:6px;border:none;background:transparent;color:var(--muted);font-family:var(--font-body);font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s}.toggle-btn:hover{color:var(--text)}.toggle-btn.active{background:linear-gradient(92.73deg,#1366df,#00c6d8);color:#fff}.btn-export{padding:8px 18px;border-radius:6px;border:1px solid rgba(255,193,0,.4);background:transparent;color:#ffc100;font-family:var(--font-body);font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:6px}.btn-export:hover{background:#ffc1001a;border-color:#ffc100}.btn-export:disabled{opacity:.4;cursor:not-allowed}.app-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#0f172a}.app-spinner{width:40px;height:40px;border:3px solid rgba(255,255,255,.1);border-top-color:#3b82f6;border-radius:50%;animation:spin .8s linear infinite}.header-user{display:flex;align-items:center;gap:.75rem;justify-self:end}.header-user-name{font-size:.85rem;color:#ffffffb3}.nav-btn-logout{color:#f87171!important;border-color:#f8717140!important}.nav-btn-logout:hover{background:#f871711a!important;border-color:#f8717180!important}.auth-page{min-height:100vh;background:linear-gradient(135deg,#0f172a,#1e3a5f,#0f172a);display:flex;align-items:center;justify-content:center;padding:2rem;position:relative;overflow:hidden}.auth-glow{position:absolute;width:400px;height:400px;border-radius:50%;filter:blur(100px);pointer-events:none}.auth-glow-left{top:-100px;left:-100px;background:#3b82f61f}.auth-glow-right{bottom:-100px;right:-100px;background:#6366f11f}.auth-container{position:relative;width:100%;max-width:420px;display:flex;flex-direction:column;align-items:center}.auth-logo{display:flex;align-items:center;gap:.5rem;font-size:1.5rem;font-weight:800;color:#fff;margin-bottom:.25rem}.auth-subtitle{color:#fff6;font-size:.875rem;margin-bottom:1.5rem}.auth-card{width:100%;background:#ffffff0d;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);border-radius:1.25rem;padding:2rem}.auth-title{color:#fff;font-size:1.25rem;font-weight:700;margin-bottom:1.5rem}.auth-error{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#fca5a5;font-size:.85rem;padding:.75rem 1rem;border-radius:.75rem;margin-bottom:1rem}.auth-form{display:flex;flex-direction:column;gap:1rem}.form-group{display:flex;flex-direction:column;gap:.375rem}.form-group label{font-size:.85rem;font-weight:500;color:#fff9}.form-group input{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);color:#fff;border-radius:.75rem;padding:.75rem 1rem;font-size:.875rem;outline:none;width:100%;box-sizing:border-box;transition:border-color .15s,box-shadow .15s}.form-group input::placeholder{color:#ffffff40}.form-group input:focus{border-color:#3b82f699;box-shadow:0 0 0 3px #3b82f626}.auth-btn{background:linear-gradient(92.73deg,#1366df,#00c6d8);color:#fff;font-weight:700;font-size:.9rem;padding:.85rem;border-radius:.75rem;border:none;cursor:pointer;margin-top:.5rem;transition:opacity .15s,transform .1s;box-shadow:0 2px 14px #1366df59}.auth-btn:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.auth-btn:disabled{opacity:.5;cursor:not-allowed}.auth-switch{text-align:center;color:#ffffff59;font-size:.85rem;margin-top:1.25rem;margin-bottom:0}.auth-link{background:none;border:none;cursor:pointer;color:#60a5fa;font-weight:500;font-size:.85rem;padding:0;transition:color .15s}.auth-link:hover{color:#93c5fd}.auth-back{background:none;border:none;cursor:pointer;color:#ffffff4d;font-size:.8rem;margin-top:1rem;transition:color .15s}.auth-back:hover{color:#fff9}.landing{min-height:100vh;background:#eff6ff;color:#111827}.landing-nav{position:fixed;top:0;left:0;right:0;z-index:50;background:#eff6ffe0;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid rgba(19,102,223,.1)}.landing-nav-inner{max-width:1200px;margin:0 auto;padding:0 1.5rem;height:4rem;display:flex;align-items:center;justify-content:space-between}.landing-brand{display:flex;align-items:center;gap:.5rem;font-weight:800;font-size:1.2rem;color:#111827}.landing-nav-actions{display:flex;align-items:center;gap:.75rem}.lbtn{border:none;cursor:pointer;font-family:inherit;font-weight:600;border-radius:.75rem;transition:all .15s}.lbtn-primary{background:linear-gradient(92.73deg,#1366df,#00c6d8);color:#fff;padding:.6rem 1.25rem;font-size:.875rem;box-shadow:0 2px 14px #1366df59}.lbtn-primary:hover{opacity:.92;transform:translateY(-1px);box-shadow:0 4px 22px #1366df73}.lbtn-ghost{background:none;color:#374151;padding:.6rem 1rem;font-size:.875rem;border:1px solid #e5e7eb;border-radius:.75rem}.lbtn-ghost:hover{background:#e5e7eb;color:#111827}.lbtn-outline{background:transparent;color:#111827;border:1.5px solid #d1d5db;padding:.85rem 2rem}.lbtn-outline:hover{background:#e5e7eb}.lbtn-white{background:#fff;color:#1366df;font-weight:700;padding:.6rem 1.25rem;font-size:.875rem;border-radius:.75rem;box-shadow:0 2px 12px #0000001f}.lbtn-white:hover{transform:translateY(-1px);box-shadow:0 4px 20px #0000002e}.lbtn-lg{padding:.9rem 2.5rem!important;font-size:1rem!important;border-radius:1rem!important}.l-hero{padding:9rem 1.5rem 5rem;text-align:center;position:relative;overflow:hidden}.l-hero-glow{position:absolute;top:0;left:50%;transform:translate(-50%);width:700px;height:400px;pointer-events:none;background:radial-gradient(ellipse,rgba(19,102,223,.1) 0%,transparent 70%)}.l-hero-content{position:relative;max-width:800px;margin:0 auto}.l-badge{display:inline-flex;align-items:center;gap:.5rem;background:#1366df14;border:1px solid rgba(19,102,223,.2);color:#1366df;font-size:.75rem;font-weight:600;padding:.4rem 1rem;border-radius:9999px;text-transform:uppercase;letter-spacing:.05em;margin-bottom:2rem}.l-badge-dot{width:6px;height:6px;border-radius:50%;background:linear-gradient(92.73deg,#ffc100,#ff8a00);animation:lp-pulse 2s infinite}@keyframes lp-pulse{0%,to{opacity:1}50%{opacity:.4}}.l-title{font-size:clamp(2.5rem,6vw,4.5rem);font-weight:900;line-height:1.05;letter-spacing:-.03em;margin-bottom:1.5rem;color:#111827}.l-title-accent{background:linear-gradient(92.73deg,#1366df,#00c6d8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.l-title-accent-yellow{background:linear-gradient(92.73deg,#ffc100,#ff8a00);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.l-desc{color:#6b7280;font-size:1.1rem;max-width:560px;margin:0 auto 2.5rem;line-height:1.7}.l-hero-btns{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.l-stats{display:grid;grid-template-columns:repeat(3,1fr);max-width:560px;margin:4rem auto 0;background:#fffc;border:1px solid rgba(19,102,223,.12);border-radius:1rem;overflow:hidden;box-shadow:0 4px 20px #1366df14}.l-stat{padding:1.5rem;display:flex;flex-direction:column;align-items:center;gap:.25rem;border-right:1px solid rgba(19,102,223,.1)}.l-stat:last-child{border-right:none}.l-stat-val{font-size:1.75rem;font-weight:900;color:#111827}.l-stat-lbl{font-size:.75rem;color:#9ca3af}.l-section{padding:5rem 1.5rem;max-width:1200px;margin:0 auto}.l-section-alt{background:#fff;max-width:100%;padding:5rem 1.5rem;border-top:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb}.l-section-alt .l-steps{max-width:1200px;margin:0 auto}.l-section-title{text-align:center;font-size:2.25rem;font-weight:900;margin-bottom:.75rem;color:#111827}.l-section-sub{text-align:center;color:#6b7280;font-size:1rem;margin-bottom:3rem}.l-features{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.25rem}.l-feature-card{background:#fff;border:1px solid #e5e7eb;border-radius:1.25rem;padding:1.75rem;transition:transform .2s,box-shadow .2s,border-color .2s}.l-feature-card:hover{transform:translateY(-3px);box-shadow:0 8px 30px #1366df1a;border-color:#1366df40}.l-feature-icon{font-size:2rem;display:block;margin-bottom:1rem}.l-feature-title{font-size:1rem;font-weight:700;margin-bottom:.5rem;color:#111827}.l-feature-desc{color:#6b7280;font-size:.875rem;line-height:1.6}.l-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.25rem}.l-step-card{background:#fff;border:1px solid #e5e7eb;border-radius:1.25rem;padding:1.75rem;transition:transform .2s,box-shadow .2s}.l-step-card:hover{transform:translateY(-2px);box-shadow:0 8px 30px #1366df1a}.l-step-num{width:2.5rem;height:2.5rem;background:linear-gradient(92.73deg,#1366df,#00c6d8);border:none;border-radius:.75rem;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:900;color:#fff;margin-bottom:1rem;box-shadow:0 4px 14px #1366df4d}.l-step-title{font-size:1rem;font-weight:700;margin-bottom:.5rem;color:#111827}.l-step-desc{color:#6b7280;font-size:.875rem;line-height:1.6}.l-stack{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.l-stack-card{background:#fff;border:1px solid #e5e7eb;border-radius:1.25rem;padding:1.25rem;display:flex;align-items:center;gap:1rem;transition:border-color .15s,box-shadow .15s}.l-stack-card:hover{border-color:#1366df4d;box-shadow:0 4px 16px #1366df14}.l-stack-icon{font-size:1.75rem}.l-stack-name{font-weight:600;font-size:.9rem;color:#111827;margin-bottom:.2rem}.l-stack-desc{color:#9ca3af;font-size:.8rem}.l-cta{text-align:center;padding:5rem 1.5rem;background:linear-gradient(92.73deg,#1366df,#00c6d8);position:relative;overflow:hidden}.l-cta:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at top,rgba(255,255,255,.12) 0%,transparent 60%);pointer-events:none}.l-cta-title{font-size:2.5rem;font-weight:900;margin-bottom:1rem;color:#fff;position:relative}.l-cta-desc{color:#ffffffd9;font-size:1rem;margin-bottom:2rem;position:relative;max-width:480px;margin-left:auto;margin-right:auto;line-height:1.65}.l-cta-btns{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;position:relative}.l-cta .lbtn-outline{background:transparent;border-color:#ffffff80;color:#fff}.l-cta .lbtn-outline:hover{background:#ffffff26}.l-footer{display:flex;justify-content:space-between;align-items:center;padding:1.5rem 3rem;border-top:1px solid #e5e7eb;color:#9ca3af;font-size:.8rem;flex-wrap:wrap;gap:.5rem;background:#fff}@media(max-width:768px){.charts-row{grid-template-columns:1fr}.l-hero{padding:7rem 1.5rem 3rem}.l-title{font-size:clamp(2rem,8vw,3rem)}.l-stats{max-width:100%}.l-section,.l-section-alt{padding:3rem 1.5rem}.l-cta{padding:3.5rem 1.5rem}.l-cta-title{font-size:1.875rem}.l-footer{padding:1.25rem 1.5rem;flex-direction:column;text-align:center}}@media(max-width:600px){.header{grid-template-columns:1fr 1fr;grid-template-rows:auto auto;height:auto;padding:.75rem 1rem;gap:.5rem}.header-brand{grid-column:1;grid-row:1;justify-self:start}.header-user{grid-column:2;grid-row:1;justify-self:end}.header-nav{grid-column:1 / -1;grid-row:2;justify-self:center}.header-user-name{display:none}.main-content{padding:1.5rem 1rem}.form-grid{grid-template-columns:1fr}.page-title{font-size:1.5rem}}.l-footer{display:flex;justify-content:center;align-items:center;gap:1.5rem;padding:1.5rem 3rem;border-top:1px solid #e5e7eb;color:#9ca3af;font-size:.8rem;flex-wrap:wrap;background:#fff}
