:root{
  --bg:#f5f7fb;--surface:#fff;--surface-2:#eef2f7;--text:#172033;--muted:#6c768a;
  --brand:#1b2a41;--brand-2:#31445f;--accent:#c89b5b;--success:#26865d;--warning:#c37a22;
  --danger:#b94b55;--info:#3c6ea8;--border:#e2e7ef;--shadow:0 20px 55px rgba(29,42,65,.11);
  --radius:22px;--radius-sm:14px;
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.grow{flex:1}.muted{color:var(--muted)}.eyebrow{margin:0 0 5px;font-size:11px;font-weight:800;letter-spacing:.14em;color:var(--muted)}
.auth-screen{min-height:100vh;display:grid;place-items:center;padding:26px;background:radial-gradient(circle at 15% 10%,#fff7eb 0,transparent 30%),linear-gradient(145deg,#eef2f7,#f8fafc 45%,#edf1f6)}
.auth-card{width:min(100%,470px);background:rgba(255,255,255,.95);border:1px solid rgba(255,255,255,.7);box-shadow:var(--shadow);border-radius:30px;padding:30px}.auth-card h1{margin:4px 0 8px;font-size:31px;line-height:1.08}.brand-mark{width:58px;height:58px;border-radius:18px;display:grid;place-items:center;background:linear-gradient(145deg,var(--brand),var(--brand-2));color:#fff;font-weight:900;letter-spacing:.04em;box-shadow:0 10px 22px rgba(27,42,65,.18);margin-bottom:18px}.brand-mark.small{width:43px;height:43px;border-radius:13px;margin:0;font-size:14px}.segmented{display:grid;grid-template-columns:1fr 1fr;background:var(--surface-2);padding:5px;border-radius:15px;margin:24px 0 20px}.segment{border:0;background:transparent;padding:10px;border-radius:11px;color:var(--muted);font-weight:750}.segment.active{background:white;color:var(--text);box-shadow:0 5px 14px rgba(29,42,65,.08)}
.stack{display:grid;gap:14px}label{display:grid;gap:7px;font-size:13px;font-weight:750;color:#344057}input,select,textarea{width:100%;border:1px solid var(--border);border-radius:13px;background:#fff;padding:12px 13px;color:var(--text);outline:none;transition:.2s}input:focus,select:focus,textarea:focus{border-color:#8fa0b5;box-shadow:0 0 0 3px rgba(49,68,95,.08)}textarea{min-height:90px;resize:vertical}.hint{font-size:12px;color:var(--muted);margin:-4px 0 0}.demo-box{margin-top:20px;border-radius:15px;background:#f7f2e9;padding:13px 15px;display:grid;gap:3px;font-size:12px;color:#66573f}.demo-box strong{font-size:12px}
.btn{border:0;border-radius:13px;padding:11px 15px;font-weight:800;transition:.18s;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--brand);color:#fff;box-shadow:0 8px 18px rgba(27,42,65,.15)}.btn.secondary{background:#e9eef5;color:var(--brand)}.btn.success{background:#e5f4ed;color:#1d7651}.btn.warning{background:#fff2df;color:#a55f15}.btn.danger{background:#fbe9eb;color:#a43c47}.btn.ghost{background:transparent;color:var(--muted)}.btn.full{width:100%}.btn.small{padding:7px 10px;border-radius:10px;font-size:12px}.icon-btn{width:36px;height:36px;border:0;border-radius:12px;background:var(--surface-2);display:grid;place-items:center;color:var(--text)}
.app-shell{min-height:100vh}.sidebar{position:fixed;left:0;top:0;bottom:0;width:248px;background:#fff;border-right:1px solid var(--border);padding:22px 16px;display:flex;flex-direction:column;z-index:20}.sidebar-brand{display:flex;gap:11px;align-items:center;padding:0 7px 20px}.sidebar-brand div:last-child{display:grid}.sidebar-brand strong{font-size:17px}.sidebar-brand span{font-size:11px;color:var(--muted)}.nav-list{display:grid;gap:5px}.nav-item{width:100%;border:0;background:transparent;border-radius:13px;padding:11px 12px;text-align:left;color:#566176;font-weight:700;display:flex;gap:10px;align-items:center}.nav-item.active,.nav-item:hover{background:#eef2f7;color:var(--brand)}.nav-icon{width:22px;text-align:center}.sidebar-user{margin-top:auto;padding:11px;background:#f7f9fc;border:1px solid var(--border);border-radius:16px;display:flex;gap:10px;align-items:center}.avatar,.avatar-btn{width:38px;height:38px;border-radius:13px;border:0;background:var(--brand);color:#fff;display:grid;place-items:center;font-weight:900}.sidebar-user .grow{display:grid;min-width:0}.sidebar-user strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user span{font-size:10px;color:var(--muted)}
.main{margin-left:248px;min-height:100vh}.topbar{height:86px;padding:19px 28px;display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;background:rgba(245,247,251,.9);backdrop-filter:blur(14px);z-index:10;border-bottom:1px solid rgba(226,231,239,.7)}.topbar h2{margin:0;font-size:24px}.top-actions{display:flex;gap:10px;align-items:center}.badge{display:inline-flex;padding:8px 11px;border-radius:999px;background:#fff;border:1px solid var(--border);font-size:11px;font-weight:800;color:#5a667b}.page-content{padding:24px 28px 80px;max-width:1500px;margin:auto}.bottom-nav{display:none}
.grid{display:grid;gap:16px}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:0 8px 24px rgba(34,48,73,.04)}.stat-card{display:flex;align-items:center;gap:13px}.stat-icon{width:45px;height:45px;border-radius:15px;display:grid;place-items:center;background:#eef2f7;font-size:19px}.stat-card strong{font-size:25px;line-height:1}.stat-card span{font-size:12px;color:var(--muted)}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:24px 0 12px}.section-head h3{margin:0;font-size:17px}.section-head p{margin:3px 0 0;font-size:12px;color:var(--muted)}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.search{min-width:240px;background:#fff}.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:17px;background:#fff}table{border-collapse:collapse;width:100%;min-width:760px}th,td{padding:12px 14px;border-bottom:1px solid #eef1f5;text-align:left;font-size:12px;vertical-align:middle}th{font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:#7a8496;background:#f8fafc;position:sticky;top:0}tr:last-child td{border-bottom:0}.status{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:850}.status.active,.status.hadir{background:#e5f4ed;color:#20704e}.status.inactive,.status.berhenti,.status.alpa{background:#fbe9eb;color:#9e3e48}.status.izin{background:#e7effb;color:#35679f}.status.sakit,.status.pending{background:#fff2df;color:#a45f17}.status.lulus{background:#efe9fb;color:#6a50a0}.status.terlambat{background:#fff0e9;color:#b75a2f}.empty{padding:32px;text-align:center;color:var(--muted)}.empty .big{font-size:34px;margin-bottom:8px}.notice{border-radius:16px;padding:13px 15px;background:#fff8ea;border:1px solid #f0dfbd;color:#775c2f;font-size:12px}.notice.info{background:#edf4fc;border-color:#d8e7f7;color:#3d6085}.notice.success{background:#ecf8f2;border-color:#d7efe3;color:#2f6d51}.hero{background:linear-gradient(135deg,var(--brand),#354c6c);color:#fff;border-radius:28px;padding:23px;display:grid;grid-template-columns:1.4fr .6fr;gap:20px;overflow:hidden;position:relative}.hero:after{content:"";position:absolute;width:220px;height:220px;border-radius:50%;background:rgba(255,255,255,.06);right:-55px;top:-90px}.hero p{color:#cfd8e5}.hero h2{font-size:28px;margin:7px 0}.hero .btn{background:#fff;color:var(--brand);width:max-content}.schedule-card{display:flex;gap:14px;align-items:center;padding:14px;border-radius:17px;border:1px solid var(--border);background:#fff}.schedule-time{width:94px;flex:0 0 auto}.schedule-time strong{font-size:15px}.schedule-time span{display:block;color:var(--muted);font-size:10px;margin-top:3px}.schedule-info{flex:1}.schedule-info h4{margin:0 0 3px}.schedule-info p{margin:0;color:var(--muted);font-size:11px}.photo-preview{width:100%;max-height:260px;object-fit:cover;border-radius:16px;border:1px solid var(--border);margin-top:10px}.attendance-row{display:grid;grid-template-columns:1fr 155px 1fr;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #edf0f4}.attendance-row:last-child{border-bottom:0}.attendance-name strong{display:block;font-size:13px}.attendance-name span{font-size:10px;color:var(--muted)}.summary-pills{display:flex;gap:7px;flex-wrap:wrap}.pill{padding:7px 9px;border-radius:10px;background:#f2f4f8;font-size:10px;font-weight:850}.modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:18px}.modal-backdrop{position:absolute;inset:0;background:rgba(21,30,45,.48);backdrop-filter:blur(5px)}.modal-panel{position:relative;width:min(100%,700px);max-height:92vh;overflow:auto;background:#fff;border-radius:25px;box-shadow:0 30px 80px rgba(17,27,42,.28)}.modal-head{position:sticky;top:0;background:#fff;padding:18px 20px 13px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;z-index:2}.modal-head h3{margin:0}.modal-body{padding:18px 20px 24px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.form-grid .full{grid-column:1/-1}.divider{height:1px;background:var(--border);margin:16px 0}.toast{position:fixed;right:20px;bottom:20px;background:#1f2937;color:#fff;padding:11px 15px;border-radius:12px;font-size:12px;font-weight:750;opacity:0;transform:translateY(10px);pointer-events:none;transition:.25s;z-index:200}.toast.show{opacity:1;transform:translateY(0)}
@media(max-width:1100px){.grid.cols-4{grid-template-columns:repeat(2,1fr)}.grid.cols-3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.sidebar{display:none}.main{margin-left:0}.topbar{height:74px;padding:14px 16px}.topbar h2{font-size:20px}.page-content{padding:16px 14px 92px}.bottom-nav{position:fixed;display:grid;grid-template-columns:repeat(4,1fr);left:10px;right:10px;bottom:10px;background:rgba(255,255,255,.96);border:1px solid var(--border);border-radius:19px;padding:7px;z-index:30;box-shadow:0 16px 40px rgba(29,42,65,.16);backdrop-filter:blur(14px)}.bottom-item{border:0;background:transparent;border-radius:13px;padding:6px 3px;color:#7b8597;display:grid;gap:2px;place-items:center;font-size:9px;font-weight:750}.bottom-item .nav-icon{font-size:17px}.bottom-item.active{background:#eef2f7;color:var(--brand)}.badge{display:none}.hero{grid-template-columns:1fr}.hero .hero-side{display:none}.grid.cols-4,.grid.cols-3,.grid.cols-2{grid-template-columns:1fr}.section-head{align-items:flex-start;flex-direction:column}.toolbar{width:100%}.toolbar .search{min-width:0;flex:1}.attendance-row{grid-template-columns:1fr 125px}.attendance-row .attendance-note{grid-column:1/-1}.modal{padding:0;align-items:end}.modal-panel{width:100%;border-radius:25px 25px 0 0;max-height:94vh}.form-grid{grid-template-columns:1fr}.top-actions .avatar-btn{width:36px;height:36px}.auth-card{padding:24px 20px;border-radius:25px}.auth-card h1{font-size:27px}}
.notice.warning{background:#fff6e7;border-color:#f2d9a4;color:#7b561d}.link-btn{border:0;background:transparent;color:inherit;font-weight:900;text-decoration:underline;padding:0 3px}.danger-text{color:#a43c47;font-weight:800;font-size:10px}.mapping-list{display:grid;gap:9px}.mapping-row{display:grid;grid-template-columns:minmax(150px,.8fr) 1.5fr;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid #eef1f5}.mapping-row span{display:grid;gap:2px}.mapping-row small{color:var(--muted);font-weight:600}.presence-card{margin-top:16px;background:#fff;border:1px solid var(--border);border-radius:18px;padding:14px 16px;display:flex;justify-content:space-between;align-items:center;gap:12px}.presence-card.done{background:#f4fbf7;border-color:#d8ecdf}.presence-card div{display:grid;gap:3px}.presence-card span{font-size:11px;color:var(--muted)}.presence-card .status{color:#20704e}.attendance-toolbar{position:sticky;top:68px;z-index:1;background:#fff;padding:12px 0;display:flex;gap:10px;align-items:center;justify-content:space-between;border-bottom:1px solid #eef1f5}.log-row{padding:9px 0;border-bottom:1px solid #eef1f5;display:grid;gap:3px}.log-row span{font-size:10px;color:var(--muted)}
@media(max-width:820px){.mapping-row{grid-template-columns:1fr}.attendance-toolbar{top:61px;align-items:flex-start;flex-direction:column}}
