:root{--primary:#4338ca;--primary-hover:#3730a3;--indigo-soft:#eeedff;--canvas:#f6f7fb;--surface:#fff;--text:#202b40;--muted:#657187;--border:#e5e8f0;--green:#16734d;--green-soft:#eaf7ef;--amber:#946000;--amber-soft:#fff6e3;--red:#bc3542;--red-soft:#fff0f1;--radius:12px;--shadow:0 2px 5px #202b4005;--space:24px;--font:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--text);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;color:inherit}button:disabled{cursor:not-allowed;opacity:.55}a{color:var(--primary);text-decoration:none}:focus-visible{outline:3px solid #818cf8;outline-offset:3px}[hidden]{display:none!important}h1,h2,h3,p{margin:0}.icon{width:20px;height:20px;flex:none;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.skip{position:fixed;top:-60px;left:20px;z-index:100;background:white;padding:12px}.skip:focus{top:10px}.layout{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100dvh}#sidebar{height:100dvh;position:sticky;top:0;background:white;border-right:1px solid var(--border);display:flex;flex-direction:column;padding:26px 16px 14px;z-index:40}.logo{display:flex;align-items:center;gap:11px;padding:0 12px 24px;color:var(--text);font-size:20px;font-weight:750;letter-spacing:-.6px}.brandmark{display:grid;place-items:center;background:var(--primary);width:37px;height:39px;color:white;border-radius:11px;font-size:25px;font-weight:650;flex:none}.logo small{display:block;font-size:11px;letter-spacing:.15px;font-weight:450;color:var(--muted);margin-top:1px}nav{overflow-y:auto;min-height:0;padding:0 2px 16px;flex:1}.nav-label{font-size:10px;font-weight:700;color:#748096;letter-spacing:1.25px;padding:17px 12px 6px}.nav-label:first-child{padding-top:0}.navbtn{position:relative;display:flex;align-items:center;gap:11px;min-height:40px;padding:9px 12px;border-radius:7px;color:#566176;font-size:13px;font-weight:550;margin:2px 0}.navbtn:hover{background:#f6f7fb;color:var(--text)}.navbtn.active{background:var(--indigo-soft);color:var(--primary)}.navbtn.active:before{content:"";position:absolute;width:3px;height:17px;background:var(--primary);left:-2px;border-radius:3px}.navbtn .icon{width:18px;height:18px}.sidebar-bottom{border-top:1px solid var(--border);padding-top:14px}.profile{display:flex;align-items:center;gap:10px;padding:0 10px 12px}.profile strong{font-size:12px;font-weight:650}.profile small{display:block;color:var(--muted);font-size:11px}.avatar{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:var(--indigo-soft);color:var(--primary);font-size:11px;font-weight:700;flex:none}.logout{display:flex;align-items:center;gap:10px;background:none;border:0;border-radius:7px;padding:10px 12px;width:100%;color:var(--muted);font-size:12px;min-height:40px}.logout:hover{background:var(--red-soft);color:var(--red)}.logout span{display:flex}#main{min-width:0}.topbar{height:84px;border-bottom:1px solid var(--border);background:white;display:flex;align-items:center;gap:18px;padding:0 32px}.header-copy{min-width:0;flex:1}h1{font-size:20px;font-weight:680;letter-spacing:-.5px}.topbar p{font-size:12px;color:var(--muted);margin-top:3px}.header-date{font-size:12px;color:var(--muted)}.icon-button{display:inline-flex;justify-content:center;align-items:center;min-width:44px;height:44px;border:1px solid var(--border);background:white;border-radius:8px}#menu,.drawer-close{display:none}#content{max-width:1600px;margin:auto;padding:28px 32px;min-height:calc(100dvh - 136px)}.app-footer{display:flex;justify-content:space-between;max-width:1600px;margin:auto;padding:0 32px 20px;color:var(--muted);font-size:11px}.page-intro{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.page-intro h2{font-size:17px;font-weight:650;letter-spacing:-.25px}.page-intro p{font-size:12px;color:var(--muted);margin-top:4px}.eyebrow{display:block;font-size:10px;letter-spacing:1.4px;font-weight:700;color:var(--primary);margin-bottom:8px}.button-group{display:flex;gap:8px;flex-wrap:wrap}.primary,.secondary,.quiet,.whatsapp{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:9px 14px;border-radius:8px;font-size:12px;font-weight:600;border:1px solid transparent;white-space:nowrap}.primary{background:var(--primary);color:white}.primary:hover{background:var(--primary-hover)}.secondary{background:white;border-color:var(--border);color:var(--text)}.secondary:hover{background:#f7f8fc;border-color:#cdd2df}.quiet{background:transparent;color:var(--primary)}.quiet:hover{background:var(--indigo-soft)}.primary .icon,.secondary .icon,.quiet .icon,.whatsapp .icon{width:16px;height:16px}.whatsapp{color:var(--green);background:var(--green-soft);border-color:#cce8d6}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.card,.panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.card{padding:18px 20px;min-width:0}.kpi-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.kpi-top small{font-size:12px;font-weight:550;color:var(--muted)}.icon-tile{display:grid;place-items:center;background:var(--indigo-soft);color:var(--primary);width:34px;height:34px;border-radius:9px;flex:none}.icon-tile.good{color:var(--green);background:var(--green-soft)}.icon-tile.warn{color:var(--amber);background:var(--amber-soft)}.icon-tile.danger{color:var(--red);background:var(--red-soft)}.card strong{display:block;font-size:27px;line-height:1.3;letter-spacing:-.8px;margin:10px 0 7px;font-weight:680;overflow-wrap:anywhere}.currency{font-size:13px;letter-spacing:0;color:var(--muted);font-weight:500}.kpi-foot{font-size:11px;color:var(--muted);display:flex;justify-content:space-between;align-items:center;gap:8px}.kpi-foot a{font-weight:550}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:20px;margin-top:22px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:19px 20px;border-bottom:1px solid var(--border)}.panel-head h2,.panel-head h3{font-size:14px;font-weight:650}.panel-head p{font-size:11px;color:var(--muted);margin-top:3px}.panel-body{padding:20px}.finance-amounts{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px}.finance-amounts small{display:block;color:var(--muted);font-size:12px}.finance-amounts strong{display:block;font-size:23px;margin-top:5px;letter-spacing:-.4px}.insight{margin-top:18px;padding:12px;background:var(--canvas);border-radius:8px;font-size:12px;color:var(--muted)}.attendance-overview{display:flex;align-items:center;gap:16px;margin-bottom:20px}.attendance-number{font-size:38px;letter-spacing:-1px;color:var(--red);line-height:1}.attendance-overview strong{font-size:13px}.attendance-overview p{font-size:12px;color:var(--muted);margin-top:3px}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.quick-link{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--border);border-radius:9px;color:var(--text);font-size:12px;font-weight:600;min-height:64px;background:white;text-align:left}.quick-link:hover{border-color:#c5bffc;background:#fafaff}.quick-link>.icon{margin-left:auto;width:15px;color:var(--muted)}.quick-link .icon-tile{width:30px;height:30px}.quick-link small{display:block;font-weight:400;font-size:11px;color:var(--muted);margin-top:2px}.toolbar{display:flex;align-items:center;gap:10px;padding:15px 20px;border-bottom:1px solid var(--border);flex-wrap:wrap}.search-field{position:relative;flex:1;max-width:360px;min-width:180px}.search-field>.icon{position:absolute;left:12px;top:11px;width:17px;height:17px;color:var(--muted)}.search-field input{padding-left:37px;width:100%}.toolbar select{max-width:190px}.result-count{font-size:11px;color:var(--muted);margin-left:auto}input,select,textarea{min-height:40px;border:1px solid #dce1eb;border-radius:7px;padding:9px 11px;background:white;color:var(--text);min-width:0}input::placeholder,textarea::placeholder{color:#788398}input:hover,select:hover,textarea:hover{border-color:#b9c1d1}.table-wrap{overflow-x:auto;border-radius:0 0 var(--radius) var(--radius)}table{width:100%;border-collapse:collapse;font-size:12px;white-space:nowrap}th{font-size:10px;text-transform:uppercase;letter-spacing:.6px;text-align:left;background:#fafbfe;color:#69758b;font-weight:650}th,td{padding:15px 20px;border-bottom:1px solid #edf0f5}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fafaff}td{max-width:280px;overflow:hidden;text-overflow:ellipsis}td:first-child{font-weight:550}td .secondary,td .whatsapp{min-height:36px;padding:7px 10px}.person{display:flex;align-items:center;gap:10px}.person .avatar{background:#f0f2f8;color:#64708b;width:30px;height:30px;font-size:10px}.numeric{font-variant-numeric:tabular-nums}.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border-radius:6px;font-size:10px;font-weight:600;background:#eff2f7;color:#5e6a80;white-space:nowrap}.badge:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.good{background:var(--green-soft);color:var(--green)}.warn{background:var(--amber-soft);color:var(--amber)}.danger{background:var(--red-soft);color:var(--red)}.info{background:var(--indigo-soft);color:var(--primary)}.empty{padding:42px 20px;text-align:center;color:var(--muted)}.empty .icon-tile{margin:0 auto 14px;width:42px;height:42px}.empty h3{font-size:14px;color:var(--text);margin-bottom:5px}.empty p{font-size:12px;max-width:390px;margin:0 auto 16px}.empty.compact{padding:22px 12px}.empty.compact p{margin-bottom:0}.skeleton{height:14px;background:#edf0f6;border-radius:4px;margin-bottom:14px;animation:pulse 1.2s ease-in-out infinite alternate}.skeleton:nth-child(2){width:65%}.skeleton:nth-child(3){width:85%}@keyframes pulse{to{opacity:.4}}.summary-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:20px}.summary-strip .card strong{font-size:22px}.summary-strip small{color:var(--muted)}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:15px 0;border-bottom:1px solid var(--border);font-size:12px;overflow-wrap:anywhere}.setting-row:last-child{border:0}.muted{color:var(--muted)}.attendance-list{display:grid;gap:12px;padding:18px}.attendance-record{display:flex;align-items:center;gap:16px;border:1px solid var(--border);border-radius:9px;padding:16px}.attendance-record .record-main{flex:1;min-width:0}.record-main strong{font-size:13px}.record-main p{font-size:12px;color:var(--muted);margin-top:4px}.attendance-toggle{display:flex;gap:6px;flex-wrap:wrap}.attendance-toggle button{min-height:44px;min-width:92px;border:1px solid var(--border);border-radius:7px;background:white;font-size:12px;font-weight:600}.attendance-toggle button[aria-pressed="true"].present{background:var(--green-soft);border-color:#81c69d;color:var(--green)}.attendance-toggle button[aria-pressed="true"].absent{background:var(--red-soft);border-color:#e6a0a6;color:var(--red)}.help{font-size:11px;color:var(--muted);line-height:1.6}.notice{padding:12px 16px;border:1px solid #e4defb;border-radius:8px;background:#f6f4ff;color:#615387;font-size:12px;margin-bottom:18px}.modal{position:fixed;inset:0;background:#17213d66;display:grid;place-items:center;padding:24px;z-index:60}.modalbox{background:white;border-radius:14px;width:min(620px,100%);max-height:calc(100dvh - 48px);overflow:auto;box-shadow:0 24px 80px #14203b33}.modal-head{padding:22px 24px 18px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;border-bottom:1px solid var(--border)}.modal-head h2{font-size:18px;letter-spacing:-.4px}.modal-head p{color:var(--muted);font-size:12px;margin-top:4px}.modal-head .icon-button{height:36px;min-width:36px}.form-body{padding:22px 24px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:18px 16px}.formgrid label{display:block;font-size:12px;font-weight:550}.formgrid input,.formgrid select,.formgrid textarea{display:block;width:100%;margin-top:6px}.formgrid .help{display:block;margin-top:5px;font-weight:400}.required{color:var(--primary)}.full-width{grid-column:1/-1}.field-wrap{position:relative}.field-wrap input{padding-right:50px}.field-wrap>span{position:absolute;right:12px;top:11px;color:var(--muted);font-size:12px}.formgrid input:user-invalid,.formgrid select:user-invalid{border-color:var(--red);background:#fffafb}.actions{padding:16px 24px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;background:#fbfcfe;position:sticky;bottom:0}.inline-error{padding:12px;border-radius:7px;border:1px solid #efc7cb;background:var(--red-soft);color:var(--red);font-size:12px;margin-bottom:16px}.detail-list{margin:0}.detail-list div{display:grid;grid-template-columns:140px 1fr;padding:12px 0;border-bottom:1px solid var(--border);gap:14px}.detail-list dt{color:var(--muted);font-size:12px}.detail-list dd{margin:0;font-size:13px;overflow-wrap:anywhere}#toast{position:fixed;bottom:24px;right:24px;background:#24304a;color:white;border-radius:10px;padding:14px 18px;box-shadow:0 8px 30px #16213b22;z-index:80;max-width:calc(100vw - 32px);font-size:13px}.backdrop{position:fixed;inset:0;background:#17213d66;border:0;z-index:35}.login-body{min-height:100dvh;display:grid;place-items:center;padding:32px 20px;background:#f5f6fb}.login-wrap{width:min(420px,100%)}.login-logo{justify-content:center;padding:0 0 28px}.login-card{padding:32px;background:white;border:1px solid var(--border);border-radius:14px;box-shadow:0 8px 32px #25345b06}.login-card h1{font-size:23px;line-height:1.35;margin-bottom:10px}.login-card>p{font-size:13px;line-height:1.7;color:var(--muted);margin-bottom:26px}.login-card label{display:block;font-size:12px;font-weight:600;margin:18px 0 7px}.login-card input{width:100%;height:46px}.password-field{position:relative}.password-field input{padding-right:78px}.password-field button{position:absolute;right:4px;top:4px;height:38px;padding:0 9px;border:0;background:transparent;color:var(--muted);font-size:11px}.login-submit{width:100%;margin-top:24px;height:46px;justify-content:space-between}.login-note{text-align:center;border-top:1px solid var(--border);margin-top:25px;padding-top:20px;font-size:11px;color:var(--muted)}.login-footer{text-align:center;font-size:11px;color:var(--muted);margin-top:24px}.body-locked{overflow:hidden}
@media(min-width:1700px){.cards{grid-template-columns:repeat(6,minmax(0,1fr))}.card{padding:18px 16px}.kpi-top small{font-size:11px}.card strong{font-size:25px}}
@media(max-width:1199px){.layout{grid-template-columns:minmax(0,1fr)}#sidebar{position:fixed;left:0;top:0;width:260px;transform:translateX(-100%);transition:transform .2s ease}#sidebar.open{transform:translateX(0)}#menu{display:flex}.drawer-close{display:flex;position:absolute;right:8px;top:19px;border:0;background:transparent;font-size:23px;min-width:32px;width:32px}.logo{padding-left:6px}.navbtn{min-height:44px}.header-date{display:none}}
@media(max-width:767px){.topbar{height:78px;padding:0 16px;gap:12px}h1{font-size:18px}.topbar p{font-size:11px}.topbar>.avatar{width:30px;height:30px}#content{padding:22px 16px;min-height:calc(100dvh - 130px)}.app-footer{padding:0 16px 20px}.page-intro{align-items:flex-start;flex-direction:column;gap:12px;margin-bottom:18px}.page-intro .button-group{width:100%}.page-intro h2{font-size:16px}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.card{padding:14px}.kpi-top{align-items:flex-start}.kpi-top small{font-size:11px}.icon-tile{width:28px;height:28px;border-radius:7px}.icon-tile .icon{width:16px;height:16px}.card strong{font-size:23px;margin:11px 0 6px}.kpi-foot{font-size:10px;flex-wrap:wrap;gap:3px}.dashboard-grid{grid-template-columns:1fr;gap:16px;margin-top:16px}.panel-head{padding:16px}.panel-body{padding:16px}.quick-grid{gap:8px}.quick-link{padding:12px;gap:9px}.toolbar{padding:12px;gap:8px}.search-field{max-width:none;flex-basis:100%}.toolbar select{flex:1;max-width:none}.result-count{font-size:10px}th,td{padding:14px 16px}.summary-strip{gap:8px}.summary-strip .card{padding:12px}.summary-strip .card strong{font-size:18px}.summary-strip small{font-size:10px}.settings-grid{grid-template-columns:1fr}.attendance-list{padding:12px}.attendance-record{align-items:flex-start;flex-wrap:wrap;padding:14px;gap:12px}.attendance-record .record-main{flex-basis:calc(100% - 48px)}.attendance-record .attendance-toggle{width:100%}.attendance-toggle button{flex:1}.modal{padding:0;align-items:end}.modalbox{width:100%;max-height:100dvh;border-radius:14px 14px 0 0}.modal-head{padding:20px}.form-body{padding:20px}.formgrid{grid-template-columns:1fr;gap:16px}.actions{padding:16px 20px;padding-bottom:max(16px,env(safe-area-inset-bottom))}.actions button{flex:1;min-height:44px}.primary,.secondary,.quiet,.whatsapp,input,select{min-height:44px}.login-card{padding:26px}.login-card h1{font-size:22px}.detail-list div{grid-template-columns:110px 1fr}}
@media(max-width:359px){.cards{grid-template-columns:1fr}.card{padding:16px}.card strong{font-size:27px}.kpi-foot{flex-wrap:nowrap}.quick-grid{grid-template-columns:1fr}.summary-strip{grid-template-columns:1fr}.summary-strip .card{display:flex;align-items:center;justify-content:space-between;gap:12px}.summary-strip .card strong{margin:0}.header-copy h1{font-size:16px}.topbar>.avatar{display:none}.login-body{padding:24px 12px}.login-card{padding:22px}.login-card h1{font-size:20px}.finance-amounts strong{font-size:20px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
