:root{--navy-900: #0d1f3c;--navy-800: #14305c;--navy-700: #1d4076;--navy-100: #e8eef7;--gold-600: #a8801a;--gold-500: #c9a227;--gold-100: #faf3dd;--ok-700: #0f6b47;--ok-100: #e3f5ec;--wait-700: #9a5b06;--wait-100: #fdf1de;--bad-700: #a92222;--bad-100: #fdeaea;--bg: #eef2f7;--surface: #ffffff;--surface-alt: #f7f9fc;--border: #dde4ed;--border-strong: #c3cede;--text: #16202e;--text-muted: #5d6b7f;--radius: 12px;--radius-sm: 8px;--shadow-sm: 0 1px 2px rgba(13, 31, 60, .06), 0 1px 3px rgba(13, 31, 60, .04);--shadow-md: 0 4px 12px rgba(13, 31, 60, .08);--shadow-lg: 0 16px 40px rgba(13, 31, 60, .22);--font-ui: "Segoe UI", "Inter", Roboto, "Helvetica Neue", Arial, sans-serif;--font-num: "Segoe UI", "SF Mono", Consolas, Roboto, Arial, sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}.page{max-width:660px;margin:0 auto;padding:0 16px 56px}.page-wide{max-width:1140px}.site-header{display:flex;align-items:center;gap:16px;background:linear-gradient(135deg,var(--navy-900) 0%,var(--navy-700) 100%);color:#fff;padding:22px 24px;margin:0 -16px 26px;border-bottom:3px solid var(--gold-500);box-shadow:var(--shadow-md)}.site-logo{height:50px;width:auto;max-width:90px;object-fit:contain;flex:0 0 auto}.site-title h1{margin:0;font-size:20px;font-weight:700;letter-spacing:-.01em;line-height:1.2;color:#fff}.site-title p{margin:3px 0 0;font-size:13px;color:#ffffffc7;letter-spacing:.02em}.page>.site-header{justify-content:center;text-align:center}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px 24px;margin-bottom:18px;box-shadow:var(--shadow-sm)}.card h2{margin:0 0 6px;font-size:16px;font-weight:700;color:var(--navy-900);letter-spacing:-.005em}.card h3{margin:0 0 8px;font-size:14.5px;font-weight:700;color:var(--navy-800)}.card-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:4px}.card-head h2{margin:0}.hint{color:var(--text-muted);font-size:13px;line-height:1.55;margin:4px 0 16px}.hint.ok{color:var(--ok-700)}form{display:flex;flex-direction:column;gap:2px}label{font-size:12.5px;font-weight:700;color:var(--navy-800);letter-spacing:.02em;text-transform:uppercase;margin-top:14px;margin-bottom:5px}input,select,textarea{font:inherit;font-size:14.5px;padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);width:100%;transition:border-color .15s,box-shadow .15s}input:hover,select:hover,textarea:hover{border-color:var(--navy-700)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--navy-700);box-shadow:0 0 0 3px #1d407626}input:disabled{background:var(--surface-alt);color:var(--text-muted)}textarea{resize:vertical;font-family:inherit}.form-row{display:flex;gap:12px}.form-row>div{flex:1}button{font:inherit;font-size:14.5px;font-weight:600;padding:11px 18px;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;margin-top:16px;transition:background .15s,border-color .15s,transform .05s}button:active{transform:translateY(1px)}button:focus-visible{outline:3px solid rgba(201,162,39,.55);outline-offset:2px}button[type=submit],button:not(.secondary):not(.link-inline):not(.tab){background:var(--navy-800);color:#fff}button[type=submit]:hover:not(:disabled),button:not(.secondary):not(.link-inline):not(.tab):hover:not(:disabled){background:var(--navy-900)}button:disabled{background:#9fadc1;cursor:not-allowed}button.secondary{background:var(--surface);color:var(--navy-800);border-color:var(--border-strong)}button.secondary:hover{background:var(--navy-100);border-color:var(--navy-700)}button.small{margin-top:0;padding:8px 14px;font-size:13px}.button-link{display:inline-block;background:var(--gold-500);color:var(--navy-900);font-weight:700;text-decoration:none;padding:12px 20px;border-radius:var(--radius-sm);margin:10px 0 4px;box-shadow:var(--shadow-sm);transition:background .15s}.button-link:hover{background:var(--gold-600);color:#fff}.link-inline{background:none;border:none;padding:0;margin:0;font:inherit;font-size:13px;font-weight:600;color:var(--navy-700);text-decoration:underline;text-underline-offset:2px;cursor:pointer}.link-inline:hover{color:var(--navy-900)}.link-inline.danger{color:var(--bad-700)}.btn-group{display:flex;gap:10px;flex-wrap:wrap}.btn-group button{flex:1;min-width:180px}a{color:var(--navy-700)}.error{background:var(--bad-100);color:var(--bad-700);border:1px solid rgba(169,34,34,.25);border-left:4px solid var(--bad-700);border-radius:var(--radius-sm);padding:11px 14px;font-size:13.5px;margin-top:14px}.info-grid{display:grid;grid-template-columns:118px 1fr;row-gap:8px;column-gap:10px;margin:12px 0 20px;font-size:14px}.info-grid dt{color:var(--text-muted);font-weight:600;font-size:12.5px;text-transform:uppercase;letter-spacing:.02em;padding-top:1px}.info-grid dd{margin:0;font-weight:500}.saldo-box{background:linear-gradient(135deg,var(--navy-900) 0%,var(--navy-700) 100%);border-radius:var(--radius);padding:22px 24px;color:#fff;position:relative;overflow:hidden}.saldo-box:after{content:"";position:absolute;left:24px;bottom:0;width:56px;height:3px;background:var(--gold-500)}.saldo-angka{font-family:var(--font-num);font-size:46px;font-weight:700;line-height:1;color:#fff;font-variant-numeric:tabular-nums;margin-right:10px}.saldo-label{font-size:14px;color:#fffc}.saldo-box .hint{margin:14px 0 6px;color:#ffffffb8;font-size:12.5px}.saran-box{background:var(--gold-100);border:1px solid rgba(201,162,39,.4);border-left:4px solid var(--gold-500);border-radius:var(--radius-sm);padding:12px 14px;margin-top:10px}.saran-box .hint{color:#6b5410}.daftar-kecuali{margin:8px 0 0;padding-left:18px;font-size:12.5px;color:#6b5410}.daftar-kecuali li{margin-bottom:2px}.daftar-kecuali .tgl{font-family:var(--font-num);font-variant-numeric:tabular-nums;font-weight:600}.admin-topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;background:linear-gradient(135deg,var(--navy-900) 0%,var(--navy-700) 100%);border-bottom:3px solid var(--gold-500);padding:16px 24px;margin:0 -16px 22px;box-shadow:var(--shadow-md)}.admin-topbar .site-header{background:none;border:none;box-shadow:none;padding:0;margin:0;text-align:left;justify-content:flex-start}.admin-user{display:flex;align-items:center;gap:12px;font-size:13.5px;color:#ffffffd9}.admin-user button.secondary{background:#ffffff1a;color:#fff;border-color:#ffffff59}.admin-user button.secondary:hover{background:#fff3}.tabs{display:flex;gap:2px;margin-bottom:20px;overflow-x:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:5px;box-shadow:var(--shadow-sm)}.tab{margin-top:0;background:transparent;color:var(--text-muted);border-radius:var(--radius-sm);padding:9px 16px;font-size:13.5px;white-space:nowrap;border:none}.tab:hover{background:var(--navy-100);color:var(--navy-900)}.tab.active{background:var(--navy-800);color:#fff}.tab.active:hover{background:var(--navy-900)}.filter-bar{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0;padding:12px;background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-sm)}.filter-bar input,.filter-bar select{width:auto;flex:1;min-width:130px}.filter-inline{display:flex;align-items:center;gap:8px}.filter-inline label{margin:0}.table-wrap{overflow-x:auto;margin-top:12px;border:1px solid var(--border);border-radius:var(--radius-sm)}table{width:100%;border-collapse:collapse;font-size:13.5px}th,td{text-align:left;padding:10px 12px;vertical-align:top}th{background:var(--navy-100);color:var(--navy-900);font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;border-bottom:2px solid var(--border-strong)}td{border-bottom:1px solid var(--border)}tbody tr:last-child td{border-bottom:none}tbody tr:nth-child(2n){background:var(--surface-alt)}tbody tr:hover{background:var(--navy-100)}td .hint{margin:0;font-size:12px}.aksi{white-space:nowrap}.aksi>*{margin-right:12px}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px 3px 8px;border-radius:999px;font-size:11.5px;font-weight:700;letter-spacing:.02em;white-space:nowrap;border:1px solid transparent}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge-ok{background:var(--ok-100);color:var(--ok-700);border-color:#0f6b4740}.badge-wait{background:var(--wait-100);color:var(--wait-700);border-color:#9a5b0640}.badge-off{background:#eef1f5;color:#5d6b7f;border-color:var(--border-strong)}.select-mini{display:block;margin-top:6px;padding:4px 6px;font-size:12px;width:auto}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0d1f3c8c;display:flex;align-items:flex-start;justify-content:center;padding:28px 16px;overflow-y:auto;z-index:50}.modal{background:var(--surface);border-radius:var(--radius);border-top:4px solid var(--gold-500);padding:24px;width:100%;max-width:540px;box-shadow:var(--shadow-lg)}.modal h3{margin:0 0 10px;font-size:17px;color:var(--navy-900)}.hasil-box{margin-top:18px;padding:16px 18px;background:var(--surface-alt);border:1px solid var(--border);border-left:4px solid var(--navy-700);border-radius:var(--radius-sm)}.ok{color:var(--ok-700)}.bad{color:var(--bad-700)}.unduh-template-box{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;background:var(--gold-100);border:1px solid rgba(201,162,39,.4);border-radius:var(--radius-sm);padding:14px 18px;margin:16px 0 20px}.code-block{background:var(--navy-900);color:#dbe6f5;border-radius:var(--radius-sm);padding:12px 14px;font-family:var(--font-num);font-size:12px;line-height:1.6;overflow-x:auto;margin:10px 0;white-space:pre-wrap;word-break:break-word}code{background:var(--navy-100);color:var(--navy-900);padding:1px 6px;border-radius:4px;font-family:var(--font-num);font-size:12.5px}.stat-grid{display:flex;gap:14px;flex-wrap:wrap;margin-top:16px}.stat-box{flex:1;min-width:165px;background:var(--surface);border:1px solid var(--border);border-top:3px solid var(--gold-500);border-radius:var(--radius-sm);padding:16px 18px;display:flex;flex-direction:column;box-shadow:var(--shadow-sm)}.stat-angka{font-family:var(--font-num);font-size:32px;font-weight:700;color:var(--navy-900);line-height:1.1;font-variant-numeric:tabular-nums}.stat-label{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;margin-top:4px}.stat-box .hint{margin:8px 0 0;font-size:12px}.bar-chart{display:flex;flex-direction:column;gap:9px;margin-top:14px}.bar-row{display:flex;align-items:center;gap:12px;font-size:13px}.bar-label{flex:0 0 34%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.bar-track{flex:1;background:var(--navy-100);border-radius:4px;height:20px;overflow:hidden}.bar-fill{background:linear-gradient(90deg,var(--navy-800),var(--navy-700));height:100%;border-radius:4px;min-width:3px;transition:width .4s ease-out}.bar-value{flex:0 0 auto;font-family:var(--font-num);font-variant-numeric:tabular-nums;color:var(--navy-800);font-weight:700;min-width:62px;text-align:right}.logo-box{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:14px}.logo-preview{height:66px;width:auto;max-width:170px;object-fit:contain;border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px;background:var(--surface)}.logo-kosong{height:66px;width:130px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--border-strong);border-radius:var(--radius-sm);color:var(--text-muted);font-size:12px;text-align:center}.logo-box .btn-group{margin:0}.logo-box input[type=file]{padding:8px;font-size:13px}.page-footer{text-align:center;color:var(--text-muted);font-size:12.5px;margin-top:28px;padding-top:18px;border-top:1px solid var(--border)}@media (max-width: 560px){.form-row{flex-direction:column;gap:0}.site-header{flex-direction:column;text-align:center;gap:12px}.admin-topbar{flex-direction:column;align-items:stretch;gap:12px}.admin-topbar .site-header{flex-direction:row;justify-content:center}.admin-user{justify-content:space-between}.bar-label{flex-basis:42%}.saldo-angka{font-size:38px}.card{padding:18px 16px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
