:root{--bg:#f4f7fb;--panel:#fff;--text:#172033;--muted:#6b7280;--line:#e5e7eb;--primary:#1f5fbf;--danger:#b42318;--ok:#067647;--warn:#b54708}*{box-sizing:border-box}body{margin:0;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--primary);text-decoration:none}.app{display:flex;min-height:100vh}.sidebar{width:250px;background:#14213d;color:#fff;padding:22px 16px;position:fixed;left:0;top:0;bottom:0;overflow:auto}.brand{font-size:24px;font-weight:700;margin:0 8px 4px}.brand small{display:block;font-size:12px;font-weight:400;color:#cbd5e1;margin-top:6px}.nav{margin-top:28px}.nav a{display:block;color:#e5e7eb;padding:11px 12px;border-radius:8px;margin:4px 0}.nav a:hover,.nav a.active{background:#1e335c;color:#fff}.main{margin-left:250px;flex:1;padding:28px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.topbar h1{margin:0;font-size:25px}.muted{color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px;box-shadow:0 2px 10px rgba(15,23,42,.04)}.metric .label{font-size:13px;color:var(--muted)}.metric .value{font-size:28px;font-weight:700;margin-top:8px}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:11px;border-bottom:1px solid var(--line);text-align:left;font-size:14px}.table th{background:#f8fafc}.btn{display:inline-block;border:0;border-radius:8px;padding:10px 14px;background:#e5e7eb;color:#111827;cursor:pointer;font-size:14px}.btn-primary{background:var(--primary);color:#fff}.btn-danger{background:var(--danger);color:#fff}.badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:12px;background:#eef2ff}.badge-ok{background:#ecfdf3;color:var(--ok)}.badge-bad{background:#fef3f2;color:var(--danger)}.alert{padding:12px 14px;border-radius:8px;margin-bottom:16px}.alert-success{background:#ecfdf3;color:var(--ok)}.alert-danger{background:#fef3f2;color:var(--danger)}.form-group{margin-bottom:14px}.form-group label{display:block;margin-bottom:6px;font-weight:600;font-size:14px}.input,.select{width:100%;padding:10px 11px;border:1px solid #cbd5e1;border-radius:8px;background:#fff}.row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.login-page{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:100%;max-width:420px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:28px}.login-card h1{margin-top:0}.section-title{display:flex;justify-content:space-between;align-items:center;margin:24px 0 12px}.section-title h2{font-size:18px;margin:0}.footer{color:var(--muted);font-size:12px;margin-top:28px}@media(max-width:900px){.sidebar{position:static;width:100%}.app{display:block}.main{margin-left:0}.grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.grid,.row{grid-template-columns:1fr}.main{padding:18px}}

/* SITS v1.1.0 - Pelaporan EPerpus */
.report-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}.report-tabs a{padding:9px 12px;border-radius:8px;background:#fff;border:1px solid var(--line);color:#334155;font-size:13px}.report-tabs a:hover,.report-tabs a.active{background:#1f5fbf;color:#fff;border-color:#1f5fbf}.report-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin:4px 0 16px}.report-head h2{margin:0 0 5px;font-size:20px}.report-head p{margin:0}.actions{display:flex;gap:8px;flex-wrap:wrap}.filter-bar{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr)) auto;gap:12px;align-items:end;margin-bottom:16px}.filter-bar label{display:block;font-weight:600;font-size:12px;margin-bottom:5px}.filter-bar .filter-action{display:flex;gap:8px;align-items:center}.filter-short{grid-template-columns:minmax(160px,260px) auto;justify-content:start}.filter-collection{grid-template-columns:2fr 1fr auto}.filter-bar .wide{grid-column:span 2}.metrics-5{grid-template-columns:repeat(5,minmax(0,1fr))}.value-small{font-size:21px!important}.report-table{margin-top:16px}.report-table .table{min-width:1100px}.badge-warn{background:#fff7ed;color:#b54708}.empty{text-align:center!important;color:var(--muted);padding:20px!important}.total-row th{background:#eef2ff}.note{font-size:12px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}.three-col{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.three-col h3{margin-top:0}.compact th,.compact td{padding:8px}.mini-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.mini-stats div{border:1px solid var(--line);border-radius:9px;padding:12px;background:#f8fafc}.mini-stats span{display:block;font-size:12px;color:var(--muted)}.mini-stats strong{display:block;font-size:22px;margin-top:5px}.stock-header{margin-bottom:16px}.stock-header p{margin-bottom:0}@media(max-width:1200px){.metrics-5{grid-template-columns:repeat(3,1fr)}.three-col{grid-template-columns:1fr}.two-col{grid-template-columns:1fr}}@media(max-width:900px){.filter-bar,.filter-short,.filter-collection{grid-template-columns:1fr 1fr}.filter-bar .wide{grid-column:span 2}.metrics-5{grid-template-columns:repeat(2,1fr)}.report-head{display:block}.actions{margin-top:10px}}@media(max-width:560px){.filter-bar,.filter-short,.filter-collection,.metrics-5,.mini-stats{grid-template-columns:1fr}.filter-bar .wide{grid-column:auto}.report-tabs{display:grid;grid-template-columns:1fr 1fr}}

/* SITS v1.2.0 - Dashboard Terpadu, Master Siswa, Generic Reporting */
.nav-label{font-size:10px;font-weight:700;letter-spacing:.09em;color:#8290aa;margin:18px 12px 6px}.source-name{font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--primary);margin-bottom:6px;text-transform:uppercase}.filter-card{margin-top:14px}.filter-master{grid-template-columns:2fr 1fr 1fr auto}.generic-filter{grid-template-columns:repeat(5,minmax(130px,1fr)) auto}.actions-cell{white-space:nowrap}.info-card{margin-top:16px;background:#f8fafc}.info-card code,.alert code{background:#eef2ff;padding:2px 5px;border-radius:5px}.pager{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:14px}.source-metric{border-top:3px solid #dbeafe}@media(max-width:1200px){.generic-filter{grid-template-columns:repeat(3,1fr)}}@media(max-width:900px){.filter-master,.generic-filter{grid-template-columns:1fr 1fr}.actions-cell{white-space:normal}}@media(max-width:560px){.filter-master,.generic-filter{grid-template-columns:1fr}.pager{justify-content:flex-start;flex-wrap:wrap}}

/* SITS v1.4.0 - Pusat Laporan, Hak Akses, Profil Terpadu */
.report-center-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.report-source-card h3{margin:4px 0 8px}.source-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.check{display:inline-flex;gap:7px;align-items:center;cursor:pointer}.check input{width:17px;height:17px}.profile-identity{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:16px}.profile-identity h2{margin:4px 0;font-size:25px}.profile-identity h3{margin:5px 0 8px;font-size:19px}@media(max-width:1100px){.report-center-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.report-center-grid{grid-template-columns:1fr}.profile-identity{display:block}.profile-identity .actions{margin-top:12px}}

/* SITS v1.5.0 - Wizard Integrasi & Auto-Mapping */
.wizard-metrics{margin-bottom:16px}.wizard-table{min-width:1450px}.wizard-table td{vertical-align:top}.wizard-table .wizard-entity{margin-top:8px;min-width:160px}.wizard-table .wizard-entity .input{padding:7px 8px;font-size:12px}.wizard-table input[type=checkbox],.wizard-table input[type=radio]{width:17px;height:17px}.wizard-mapped{background:#f8fafc;color:#64748b}.wizard-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.wizard-table-wrap{margin-top:16px}.wizard-step{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.wizard-step span{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border-radius:999px;background:#eef2ff;font-size:12px}.wizard-step .done{background:#ecfdf3;color:var(--ok)}

/* SITS v1.7.1 - Laporan Absensi lebih sederhana mengikuti aplikasi sumber */
.abs-main-tabs{margin-bottom:12px}.abs-simple-report{max-width:1500px;margin:0 auto}.abs-simple-title{text-align:center;margin:8px 0 14px}.abs-simple-title h2{font-size:25px;margin:0 0 2px;text-transform:uppercase}.abs-simple-title h3{font-size:22px;margin:0 0 2px}.abs-simple-title>div{font-size:19px;font-weight:700}.abs-inline-filter{display:flex;justify-content:center;align-items:end;gap:9px;flex-wrap:wrap;margin:14px 0}.abs-inline-filter label{font-weight:700;font-size:13px}.abs-inline-filter select,.abs-inline-filter input{display:block;margin-top:4px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;padding:8px 9px;min-width:110px}.abs-month-nav{display:flex;justify-content:center;gap:6px;margin:12px 0 16px}.abs-month-nav a{padding:8px 14px;border:1px solid #cbd5e1;border-radius:7px;background:#fff;color:#334155;font-size:13px;font-weight:700}.abs-month-nav a.active{background:var(--primary);border-color:var(--primary);color:#fff}.abs-stat-row{display:grid;grid-template-columns:repeat(4,minmax(130px,205px));justify-content:center;gap:18px;margin:20px 0}.abs-stat{border-radius:12px;padding:15px;text-align:center;border:1px solid transparent}.abs-stat strong{display:block;font-size:22px}.abs-stat span{display:block;font-size:16px;font-weight:700;margin-top:2px}.abs-stat.hadir{background:#e8f5df;color:#3f7d22}.abs-stat.izin{background:#e5f2ff;color:#1762b2}.abs-stat.sakit{background:#fff7dd;color:#d65d00}.abs-stat.alpa{background:#fdebee;color:#cc1f2f}.abs-meta-note{text-align:center;color:#64748b;font-size:12px;margin:-8px 0 12px}.abs-clean-table{padding:0;border-radius:8px;box-shadow:none}.abs-clean-table .table{min-width:760px}.abs-clean-table .table th,.abs-clean-table .table td{padding:9px 10px}.abs-clean-table .table th{text-align:center;font-weight:700;background:#f3f4f6}.abs-clean-table .table td:not(:nth-child(2)):not(:nth-child(3)){text-align:center}.abs-predicate{display:inline-block;border-radius:6px;padding:4px 7px;font-weight:700}.abs-predicate.good{background:#dbeafe;color:#1762b2}.abs-predicate.fair{background:#fff4bf;color:#d97706}.abs-predicate.poor{background:#ffedd5;color:#ea580c}.abs-predicate.neutral{background:#f1f5f9;color:#64748b}.abs-bottom-actions{text-align:right;margin-top:8px}.abs-matrix-wrap{padding:0;border-radius:4px;box-shadow:none}.abs-matrix{border-collapse:collapse;width:max-content;min-width:100%;font-size:11px}.abs-matrix th,.abs-matrix td{border:1px solid #9ca3af;padding:4px 5px;text-align:center;white-space:nowrap}.abs-matrix th{background:#f3f4f6;font-weight:700}.abs-matrix .name{min-width:245px;text-align:left}.abs-matrix .day{min-width:25px;padding-left:3px;padding-right:3px}.abs-matrix .sunday{color:#ef4444}.abs-matrix .off-dot{color:#ef4444;font-size:15px}.abs-matrix .hadir-dot{color:#111827;font-size:15px}.abs-matrix .status-s{color:#d97706}.abs-matrix .status-i{color:#1d4ed8}.abs-matrix .status-a{color:#dc2626}.abs-chart-card{padding:16px}.abs-chart-legend{display:flex;justify-content:center;gap:24px;flex-wrap:wrap;color:#64748b;font-size:13px}.abs-chart-legend span{display:flex;align-items:center;gap:6px}.abs-chart-legend i{display:inline-block;width:26px;border-top:4px solid}.abs-chart{width:100%;height:auto;display:block;margin-top:8px}.abs-chart-totals{display:flex;gap:28px;flex-wrap:wrap;padding:8px 0 2px;font-size:16px}.abs-chart-totals .h{color:#11851b}.abs-chart-totals .s{color:#d97706}.abs-chart-totals .i{color:#1d4ed8}.abs-chart-totals .a{color:#dc2626}@media(max-width:900px){.abs-stat-row{grid-template-columns:repeat(2,minmax(130px,1fr))}.abs-simple-title h2{font-size:21px}.abs-simple-title h3{font-size:18px}}@media(max-width:560px){.abs-stat-row{grid-template-columns:1fr 1fr;gap:8px}.abs-inline-filter{justify-content:flex-start}.abs-month-nav{justify-content:flex-start;overflow:auto}.abs-chart-totals{gap:10px;font-size:13px}}
@media print{.sidebar,.topbar,.report-tabs,.no-print,.abs-month-nav,.footer{display:none!important}.main{margin-left:0!important;padding:8px!important}.abs-simple-report{max-width:none}.card{box-shadow:none}.abs-clean-table,.abs-matrix-wrap{border:0}.abs-simple-title{margin-top:0}body{background:#fff}.abs-matrix{font-size:9px}.abs-matrix th,.abs-matrix td{padding:2px 3px}}
