:root{--bg:#f4f7fb;--panel:#fff;--ink:#152033;--muted:#667085;--line:#e4e8ef;--primary:#176b55;--primary2:#0e4f3f;--accent:#e8f5f0;--danger:#b42318;--warning:#b54708;--blue:#175cd3;--shadow:0 8px 24px rgba(16,24,40,.06)}*{box-sizing:border-box}html,body{margin:0;font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg)}a{color:inherit;text-decoration:none}.app-shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:#102c27;color:#d9ebe5;padding:18px 14px;display:flex;flex-direction:column}.brand{display:flex;gap:10px;align-items:center;padding:4px 8px 18px}.brand-mark{width:42px;height:42px;border-radius:12px;background:#e9b949;color:#1b2b27;display:grid;place-items:center;font-weight:800}.brand strong{display:block;font-size:14px}.brand small{font-size:11px;color:#9fc2b8}.sidebar nav{display:flex;flex-direction:column;gap:4px;overflow:auto}.sidebar nav a{padding:10px 12px;border-radius:9px;font-size:13px}.sidebar nav a:hover,.sidebar nav a.active{background:#1e4b41;color:white}.nav-sep{font-size:10px;letter-spacing:.12em;color:#80a89d;padding:16px 12px 5px}.sidebar-foot{margin-top:auto;padding:12px;color:#80a89d}.main-area{min-width:0}.topbar{height:68px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:20}.menu-btn{display:none;border:0;background:transparent;font-size:22px}.user-chip{display:flex;align-items:center;gap:9px;font-size:12px}.user-chip span{font-weight:700}.user-chip small{color:var(--muted)}.user-chip a{padding:6px 9px;border:1px solid var(--line);border-radius:7px}.content-area{padding:24px;max-width:1500px;margin:auto}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:var(--panel);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow);padding:18px}.card h2,.card h3{margin:0 0 14px}.stat .label{font-size:12px;color:var(--muted)}.stat .value{font-size:25px;font-weight:800;margin-top:7px}.stat .sub{font-size:11px;color:var(--muted);margin-top:4px}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:15px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid transparent;border-radius:9px;padding:9px 13px;font-size:12px;font-weight:700;cursor:pointer;background:var(--primary);color:white}.btn:hover{background:var(--primary2)}.btn.secondary{background:white;color:var(--ink);border-color:var(--line)}.btn.danger{background:#fff;color:var(--danger);border-color:#fecdca}.btn.warning{background:#fff7ed;color:var(--warning);border-color:#fed7aa}.btn.blue{background:var(--blue)}.btn.small{padding:6px 9px;font-size:11px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px}table{width:100%;border-collapse:collapse;font-size:12px;background:white}th{background:#f8fafc;text-align:left;color:#475467;font-size:11px;white-space:nowrap}th,td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top}tr:last-child td{border-bottom:0}.text-right{text-align:right}.muted{color:var(--muted)}.badge{display:inline-block;padding:3px 8px;border-radius:999px;font-size:10px;font-weight:800;background:#eef2f6;color:#475467}.badge.ok{background:#ecfdf3;color:#027a48}.badge.warn{background:#fffaeb;color:#b54708}.badge.bad{background:#fef3f2;color:#b42318}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}.field label{font-size:12px;font-weight:700}.field input,.field select,.field textarea{width:100%;border:1px solid #d0d5dd;border-radius:8px;padding:9px 10px;background:white;font:inherit;font-size:13px}.field textarea{min-height:86px}.field .hint{font-size:11px;color:var(--muted)}.alert{border-radius:9px;padding:11px 13px;margin-bottom:14px;font-size:13px}.alert.success{background:#ecfdf3;color:#027a48}.alert.error{background:#fef3f2;color:#b42318}.alert.warning{background:#fffaeb;color:#b54708}.kpi-line{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px dashed var(--line);font-size:12px}.kpi-line:last-child{border:0}.section-title{display:flex;justify-content:space-between;align-items:center;margin:4px 0 12px}.section-title h2{font-size:18px;margin:0}.auth-shell{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#0f3d33,#176b55 60%,#d4a72c)}.login-card{width:min(430px,92vw);background:white;border-radius:18px;padding:28px;box-shadow:0 24px 70px rgba(0,0,0,.25)}.login-card h1{margin:0 0 4px}.login-card p{color:var(--muted);font-size:13px;margin:0 0 20px}.login-logo{width:54px;height:54px;border-radius:15px;background:#176b55;color:white;display:grid;place-items:center;font-weight:900;margin-bottom:16px}.notice{background:#f8fafc;border:1px solid var(--line);border-left:4px solid var(--blue);padding:12px;border-radius:8px;font-size:12px}.money{font-variant-numeric:tabular-nums;font-weight:700}.right{margin-left:auto}.inline{display:inline}.empty{padding:28px;text-align:center;color:var(--muted);font-size:13px}.progress{height:8px;background:#eef2f6;border-radius:999px;overflow:hidden}.progress span{display:block;height:100%;background:var(--primary)}@media(max-width:1000px){.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.app-shell{display:block}.sidebar{position:fixed;left:-270px;z-index:50;width:250px;transition:.2s}.menu-open .sidebar{left:0}.menu-btn{display:inline-block}.content-area{padding:14px}.topbar{padding:0 14px}.user-chip small{display:none}.grid-4,.grid-3,.grid-2,.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.auth-shell{padding:15px}}

/* v0.1.1 - Sinkron Data Pusat */
.sync-hero{display:flex;align-items:center;justify-content:space-between;gap:22px;margin-bottom:18px;padding:24px;border-radius:18px;background:linear-gradient(135deg,#0f3d33,#176b55 62%,#1f7a63);color:#fff;box-shadow:0 14px 34px rgba(23,107,85,.18)}
.sync-hero h1{font-size:28px;line-height:1.15;margin:4px 0 8px}.sync-hero p{margin:0;max-width:760px;color:#dff4ec;font-size:13px;line-height:1.6}.eyebrow{font-size:10px;letter-spacing:.16em;font-weight:900;color:#a7ead5}.sync-primary{background:#f4c95d;color:#20312c;padding:12px 17px;font-size:13px;white-space:nowrap;box-shadow:0 8px 18px rgba(0,0,0,.12)}.sync-primary:hover{background:#ffd86f}.wrap-anywhere{overflow-wrap:anywhere;word-break:break-word;max-width:70%}.class-sync-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.class-sync-list>div{display:flex;justify-content:space-between;gap:12px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:#fbfcfd;font-size:12px}.class-sync-list strong{color:var(--primary)}.sync-rule{display:flex;gap:11px;align-items:flex-start;padding:10px 0;border-bottom:1px dashed var(--line)}.sync-rule:last-child{border-bottom:0}.sync-rule div{display:flex;flex-direction:column;gap:2px}.sync-rule small{color:var(--muted);font-size:11px;line-height:1.45}.status-dot{width:10px;height:10px;border-radius:50%;margin-top:4px;flex:0 0 auto}.status-dot.active{background:#12b76a}.status-dot.transfer{background:#f79009}.status-dot.graduate{background:#6172f3}.status-dot.inactive{background:#98a2b3}.sync-link{background:#e8f5f0!important;color:#0e4f3f!important;border-color:#b7e2d2!important}.sync-link:hover{background:#d7efe6!important}.sync-mini{margin-top:12px;padding:11px 12px;border-radius:9px;background:#f8fafc;border:1px solid var(--line);display:grid;grid-template-columns:auto 1fr;gap:3px 12px;font-size:11px}.sync-mini span{color:var(--muted)}.sync-mini strong{text-align:right}.sync-mini small{grid-column:1/-1;color:var(--muted);text-align:right}@media(max-width:760px){.sync-hero{align-items:flex-start;flex-direction:column;padding:19px}.sync-hero form,.sync-primary{width:100%}.class-sync-list{grid-template-columns:1fr}.wrap-anywhere{max-width:58%}}

/* v0.1.2 - student search, class assignment, RKAM/LPJ */
.student-picker{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fbfcfe}.picker-title{display:block;font-size:12px;font-weight:800;margin-bottom:8px}.student-filter-grid{display:grid;grid-template-columns:220px 1fr;gap:9px}.student-filter-grid select,.student-filter-grid input{width:100%;border:1px solid #d0d5dd;border-radius:9px;padding:10px;font:inherit;background:#fff}.student-selected{margin:10px 0 8px;padding:9px 11px;border-radius:8px;background:#edf8f5;color:#0e4f3f;font-size:12px}.student-results{border:1px solid var(--line);border-radius:9px;max-height:300px;overflow:auto;background:#fff}.student-result{width:100%;border:0;border-bottom:1px solid var(--line);background:#fff;padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;cursor:pointer}.student-result:last-child{border-bottom:0}.student-result:hover,.student-result.picked{background:#effaf6}.student-result-main{display:flex;flex-direction:column;gap:2px}.student-result-main small{color:var(--muted)}.student-class-badge{font-size:10px;font-weight:800;padding:4px 8px;border-radius:999px;background:#eef4ff;color:#3448a3;white-space:nowrap}.class-check-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;max-height:190px;overflow:auto;padding:10px;border:1px solid var(--line);border-radius:9px;background:#fbfcfd}.class-check-grid label{font-size:12px;padding:5px 7px;border-radius:7px;background:#fff;border:1px solid var(--line)}.class-check-grid.large{grid-template-columns:repeat(4,minmax(0,1fr));max-height:none}.budget-header td{font-weight:800;background:#eaf0fb;color:#20345a}.budget-total td{font-weight:900;background:#e4f0dd}.budget-unmapped td{background:#fff4e5;color:#9a5b00}.report-title{text-align:center}.report-title h2,.report-title h3,.report-title p{margin:4px 0}.report-title strong{letter-spacing:.08em}.hint{font-size:11px;color:var(--muted)}
@media(max-width:760px){.student-filter-grid{grid-template-columns:1fr}.class-check-grid,.class-check-grid.large{grid-template-columns:1fr 1fr}.student-result{align-items:flex-start}.student-class-badge{white-space:normal}}

/* v0.1.4 - payment finder, budget import, branding */
.student-result[hidden],.student-empty[hidden]{display:none!important}.student-results-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:9px 2px 7px;font-size:11px}.student-result-count{font-size:12px}.compact-field{gap:4px}.compact-field label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.student-selected{display:flex;align-items:center;gap:10px;min-height:48px}.student-selected-icon{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#dcebe6;font-weight:900}.student-selected-text{display:flex;flex-direction:column;gap:2px}.student-selected-text small{color:#527268}.student-selected:not(.muted){border:1px solid #a9ddca;background:#eaf9f3}.student-selected:not(.muted) .student-selected-icon{background:#12b76a;color:#fff}.student-empty{padding:22px;text-align:center;color:var(--muted);font-size:12px}.payment-layout{display:grid;grid-template-columns:minmax(520px,1.2fr) minmax(360px,.8fr);gap:16px;align-items:start}.payment-student-card,.payment-detail-card{min-width:0}.selected-payment-student{padding:13px 14px;border:1px dashed #cdd5df;border-radius:10px;background:#f8fafc;display:flex;flex-direction:column;gap:3px;color:var(--muted)}.selected-payment-student strong{color:var(--ink);font-size:15px}.selected-payment-student small{font-size:11px}.selected-payment-student.ready{background:#ecfdf3;border-color:#abefc6;color:#027a48}.payment-actions{position:sticky;bottom:10px;background:#fff;padding-top:8px}.btn:disabled{opacity:.45;cursor:not-allowed}.branding-preview{display:flex;gap:14px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:12px;background:#fbfcfd}.brand-preview-box{width:86px;height:86px;display:grid;place-items:center;border-radius:16px;background:#fff;border:1px solid var(--line);overflow:hidden;font-weight:900;font-size:24px}.brand-preview-box img{max-width:100%;max-height:100%;object-fit:contain}.brand-logo-img{width:44px;height:44px;border-radius:11px;background:#fff;display:grid;place-items:center;overflow:hidden;flex:0 0 auto}.brand-logo-img img{max-width:100%;max-height:100%;object-fit:contain}.login-logo-img{width:72px;height:72px;border-radius:16px;background:#fff;display:grid;place-items:center;overflow:hidden;margin-bottom:16px;border:1px solid var(--line)}.login-logo-img img{max-width:100%;max-height:100%;object-fit:contain}.branding-use-list{display:grid;gap:9px}.branding-use-list>div{padding:12px;border:1px solid var(--line);border-radius:10px;background:#fbfcfd;display:flex;justify-content:space-between;gap:18px}.branding-use-list span{color:var(--muted);font-size:12px;text-align:right}.import-column-list{display:flex;flex-wrap:wrap;gap:7px}.import-column-list span{padding:7px 9px;border-radius:8px;background:#eef4ff;color:#3448a3;font-size:11px;font-weight:700}.import-stats .stat{padding:12px;border:1px solid var(--line);border-radius:10px;background:#fbfcfd}.import-preview-table{max-height:520px}.row-error td{background:#fff7f6}.import-preview-table th{position:sticky;top:0;z-index:2}.brand small{max-width:165px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
@media(max-width:1100px){.payment-layout{grid-template-columns:1fr}.payment-actions{position:static}}@media(max-width:760px){.branding-use-list>div{flex-direction:column;gap:3px}.branding-use-list span{text-align:left}}

/* v0.1.4.1 - robust mobile student picker */
.student-result{position:relative}
.student-radio{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}
.student-result-side{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.student-pick-indicator{font-size:10px;font-weight:800;color:var(--primary);border:1px solid #b7e2d2;background:#f2fbf7;padding:4px 8px;border-radius:999px;white-space:nowrap}
.student-result.picked,.student-result:has(.student-radio:checked){background:#e8f8f2;box-shadow:inset 4px 0 0 #12b76a}
.student-result.picked .student-pick-indicator,.student-result:has(.student-radio:checked) .student-pick-indicator{background:#12b76a;color:#fff;border-color:#12b76a}
.student-result:focus-within{outline:3px solid rgba(23,92,211,.18);outline-offset:-2px}
.student-picker.picker-error{border-color:#f04438;box-shadow:0 0 0 4px rgba(240,68,56,.12)}
@media(max-width:760px){
  .student-results{max-height:42vh}
  .student-result{padding:12px 10px;min-height:64px}
  .student-result-main strong{font-size:14px;line-height:1.25}
  .student-result-main small{font-size:11px;line-height:1.3}
  .student-result-side{flex-direction:column;align-items:flex-end;gap:5px}
  .student-pick-indicator{font-size:9px;padding:3px 7px}
  .payment-detail-card{scroll-margin-top:82px}
}

/* v0.2.0 RC4 - target infaq, beasiswa, settlement detail */
.target-panel{margin-top:12px;padding:14px;border:1px solid #b7e2d2;border-radius:12px;background:#f1fbf7}.target-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.target-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.target-grid>div{padding:9px 10px;border:1px solid #d8eee6;border-radius:9px;background:#fff;display:flex;flex-direction:column;gap:2px}.target-grid span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.target-grid strong{font-size:12px;overflow-wrap:anywhere}.settlement-mini-list{display:grid;gap:2px;margin-top:5px}.settlement-mini-list span{display:block;font-size:10px;color:var(--muted);line-height:1.35}.badge.warning,.btn.warning{background:#fff4e5;color:#9a5b00;border-color:#fedf89}
@media(max-width:760px){.target-grid{grid-template-columns:1fr 1fr}.target-grid>div{padding:8px}.settlement-mini-list{max-width:210px}}


/* v0.2.0 RC7 - committee settings and BKU/document polish */
.settings-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:16px;background:linear-gradient(135deg,#ffffff,#f2fbf7);border-color:#cfe9df}.settings-hero h2{font-size:24px;margin:4px 0 6px}.committee-person-card{display:grid;gap:12px}.person-head{display:flex;align-items:center;gap:12px;margin-bottom:2px}.person-head h2{margin:0}.person-avatar{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:#dff5ed;color:#176b55;font-weight:900;font-size:18px}.person-avatar.treasurer{background:#eef4ff;color:#3448a3}.signature-preview{display:grid;grid-template-columns:1fr 1fr;gap:80px;margin-top:20px;padding:22px;border:1px dashed #cdd5df;border-radius:12px;background:#fbfcfd}.signature-preview>div{display:flex;flex-direction:column;gap:4px;min-height:140px}.signature-preview>div:last-child{text-align:right}.signature-preview span{font-size:12px;color:var(--muted)}.signature-preview strong{font-size:13px}.signature-preview b{font-size:13px}.signature-space{height:55px}.report-signatures{margin-top:0;border:0;background:#fff}.bku-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:16px;padding:14px 16px}.bku-toolbar .toolbar{margin-bottom:0}.bku-filter{align-items:flex-end}.bku-table-wrap{border-radius:12px}.bku-table{table-layout:fixed}.bku-table .c-no{width:54px}.bku-table .c-date{width:110px}.bku-table .c-desc{width:auto}.bku-table .c-code{width:150px}.bku-table .c-money{width:135px}.bku-code{display:inline-flex;max-width:100%;padding:4px 7px;border-radius:7px;background:#f2f4f7;color:#344054;font:700 11px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow-wrap:anywhere;word-break:break-word;line-height:1.2}.bku-code.rkam{background:#eef4ff;color:#3448a3}.bku-code.incidental{background:#fff4e5;color:#9a5b00;border:1px solid #fedf89}.bku-code.income{background:#ecfdf3;color:#027a48}.money-negative{color:#b42318!important;background:#fff7f6}.stat-danger{border-color:#fecdca}.stat-danger .value{color:#b42318}.signatory-card{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fbfcfd;margin-bottom:10px}.signatory-card span,.signatory-card small{font-size:11px;color:var(--muted)}.signatory-card strong{font-size:14px}.document-note{padding:10px 12px;background:#f8fafc;border-radius:9px;border-left:4px solid #176b55;font-size:12px;color:#475467}
@media(max-width:900px){.bku-toolbar{align-items:stretch;flex-direction:column}.bku-table{min-width:980px}.signature-preview{gap:30px}}
@media(max-width:760px){.settings-hero{align-items:flex-start;flex-direction:column}.signature-preview{grid-template-columns:1fr;gap:18px}.signature-preview>div:last-child{text-align:left}.signature-space{height:38px}.bku-toolbar .toolbar{width:100%}.bku-toolbar .btn{flex:1}.bku-table-wrap{overflow-x:auto}}
/* v0.2.0 Stable - final report polish */
.lpj-table{table-layout:fixed;width:100%}.lpj-table .lpj-code{width:11%}.lpj-table .lpj-desc{width:57%}.lpj-table .lpj-money{width:16%}.lpj-code-cell{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:700;white-space:nowrap}.lpj-desc-cell{overflow-wrap:anywhere;line-height:1.35}.lpj-desc-cell.level-2{padding-left:18px}.lpj-desc-cell.level-3,.lpj-desc-cell.level-4{padding-left:32px}.summary-table{max-width:100%;table-layout:fixed}.summary-table th:first-child,.summary-table td:first-child{width:62%}.summary-table th:not(:first-child),.summary-table td:not(:first-child){width:19%}.opening-source{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);margin-top:5px}.opening-source.ok{color:#027a48}.opening-source.warn{color:#b54708}
