*{box-sizing:border-box}html,body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:#f4f6f8;color:#1d2733}a{text-decoration:none;color:inherit}.muted{color:#6c7885}.hint{font-size:13px;color:#6c7885;margin:-5px 0 15px}.login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#eef3f8,#f8fafc)}.login-shell{width:min(900px,92vw);display:grid;grid-template-columns:1fr 1fr;background:#fff;border-radius:20px;overflow:hidden;box-shadow:0 20px 55px rgba(27,42,58,.14)}.brand-panel{padding:54px;background:#203a52;color:#fff;display:flex;flex-direction:column;justify-content:center}.brand-panel h1{font-size:34px;margin:18px 0 6px}.brand-panel p{font-size:18px;line-height:1.5;margin:0 0 25px;color:#d8e3ed}.brand-panel span{font-size:14px;color:#b9c9d8}.brand-photo-wrap{display:flex;justify-content:center;align-items:flex-end;margin-bottom:14px}.brand-photo{max-width:260px;width:100%;height:auto;display:block;filter:drop-shadow(0 8px 24px rgba(0,0,0,.22))}.brand-contact{margin-top:12px;font-size:14px;color:#d8e3ed;font-weight:600;letter-spacing:.02em}.brand-mark{width:72px;height:72px;border-radius:18px;display:grid;place-items:center;background:#fff;color:#203a52;font-weight:800;font-size:27px}.brand-mark.small{width:40px;height:40px;border-radius:10px;font-size:15px}.login-card{padding:50px;background:#fff}.login-card.standalone{width:min(500px,92vw);border-radius:18px;box-shadow:0 18px 50px rgba(27,42,58,.13)}.login-card h2{margin-top:0;font-size:27px}.login-card label{display:block;font-weight:600;font-size:14px;margin:20px 0 8px}.login-card input{width:100%;margin-top:8px;padding:13px 14px;border:1px solid #cfd7df;border-radius:9px;font-size:15px;outline:none}.login-card input:focus{border-color:#466c8e;box-shadow:0 0 0 3px rgba(70,108,142,.12)}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:9px;padding:10px 15px;font-weight:700;cursor:pointer}.btn.primary{background:#203a52;color:#fff}.btn.light{background:#eef3f7;color:#203a52}.btn.full{width:100%;padding:13px;margin-top:15px}.login-foot{text-align:center;margin-top:25px;color:#98a3ae;font-size:12px}.alert{padding:12px 14px;border-radius:9px;margin:16px 0;font-size:14px}.alert.error{background:#fff0f0;color:#9c2d2d}.alert.warning{background:#fff7df;color:#755800}.alert.success{background:#eaf8ef;color:#24643b}.app-shell{min-height:100vh;display:flex}.sidebar{width:245px;background:#203a52;color:#eaf1f7;padding:18px 14px;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:#56748d #203a52}.sidebar-brand{display:flex;gap:11px;align-items:center;padding:7px 7px 22px}.sidebar-brand small{display:block;color:#aac0d2;margin-top:3px}.sidebar nav{display:flex;flex-direction:column;gap:5px}.sidebar nav a,.nav-section{padding:10px 12px;border-radius:8px;font-size:14px}.sidebar nav a:hover,.sidebar nav a.active{background:#31516d}.sidebar nav a.disabled{opacity:.36;cursor:not-allowed}.nav-section{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:#8da9be;margin-top:12px}.main-area{margin-left:245px;width:calc(100% - 245px)}.topbar{height:70px;background:#fff;border-bottom:1px solid #e2e7ec;padding:0 26px;display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;z-index:2}.topbar small{display:block;color:#7b8792;margin-top:3px}.user-box{display:flex;align-items:center;gap:18px;text-align:right}.content{padding:27px;max-width:1500px;margin:auto}.page-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:22px}.page-head h1{margin:0 0 6px;font-size:28px}.page-head p{margin:0;color:#6d7884}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.stat-card,.panel{background:#fff;border:1px solid #e2e7ec;border-radius:13px;box-shadow:0 5px 15px rgba(27,42,58,.04)}.stat-card{padding:20px}.stat-card span{display:block;color:#78838d;font-size:13px}.stat-card strong{display:block;font-size:32px;margin-top:8px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}.panel{padding:20px}.panel h2{font-size:17px;margin:0 0 16px}.status-row{display:flex;justify-content:space-between;gap:18px;padding:11px 0;border-bottom:1px solid #edf0f3}.status-row:last-child{border-bottom:0}.ok{color:#2f7a4b}.status-row code{font-size:12px;word-break:break-all;color:#41576c}.detail-list{margin:0}.detail-list div{display:grid;grid-template-columns:145px 1fr;padding:9px 0;border-bottom:1px solid #edf0f3}.detail-list dt{color:#74808b}.detail-list dd{margin:0;font-weight:600}.badge{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:700}.badge.success{background:#e5f6eb;color:#267044}.badge.danger{background:#fde8e8;color:#a33232}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:11px 12px;border-bottom:1px solid #edf0f3}th{color:#697682;font-size:12px;text-transform:uppercase;letter-spacing:.04em;background:#fafbfc}@media(max-width:900px){.login-shell{grid-template-columns:1fr}.brand-panel{display:none}.sidebar{display:none}.main-area{margin-left:0;width:100%}.stats-grid,.grid-2{grid-template-columns:1fr 1fr}.topbar{padding:0 14px}.content{padding:17px}}@media(max-width:620px){.stats-grid,.grid-2{grid-template-columns:1fr}.topbar>div:first-child{display:none}.user-box{margin-left:auto}.login-card{padding:30px}}

/* Stage 3A additions */
.page-toolbar{display:flex;justify-content:flex-end;gap:10px;align-items:center;margin:-8px 0 16px}.page-toolbar .badge{margin-left:6px}.btn.small{padding:7px 10px;font-size:12px}.badge.info{background:#e8f1fb;color:#315f88}.badge.warning{background:#fff4d8;color:#876100}.badge.muted-badge,.muted-badge{background:#edf0f3;color:#687480}.table-sub{font-size:12px;color:#7b8792;margin-top:4px}.form-panel{max-width:1050px}.form-grid{display:grid;gap:16px}.form-grid.two{grid-template-columns:1fr 1fr}.form-grid label,.field-group{font-size:13px;font-weight:700;color:#44515e}.form-grid input,.form-grid select,.form-grid textarea{width:100%;margin-top:7px;border:1px solid #ccd5dd;border-radius:9px;padding:11px 12px;font:inherit;font-weight:400;color:#1d2733;background:#fff;outline:none}.form-grid textarea{resize:vertical;min-height:90px}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus{border-color:#466c8e;box-shadow:0 0 0 3px rgba(70,108,142,.12)}.form-grid input[readonly]{background:#f3f5f7;color:#6f7a85}.form-grid small,.field-group small{display:block;font-size:11px;font-weight:400;color:#7b8792;margin-top:5px}.span-2{grid-column:span 2}.field-group{margin-top:22px}.field-label{display:block;margin-bottom:10px}.check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.check-card{display:flex;gap:10px;align-items:flex-start;border:1px solid #dde4ea;border-radius:9px;padding:11px 12px;background:#fafbfd;cursor:pointer}.check-card input{margin-top:3px}.check-card strong{display:block;color:#273644;font-size:13px}.check-card small{display:block}.switch-row{display:flex;gap:10px;align-items:center;margin-top:18px;font-size:14px;font-weight:700;color:#33414e}.switch-row input{width:17px;height:17px}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px;padding-top:18px;border-top:1px solid #edf0f3}.permission-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.permission-row{display:flex;gap:10px;align-items:flex-start;border:1px solid #dde4ea;border-radius:9px;padding:11px;background:#fff}.permission-row input{margin-top:3px}.permission-row span{display:block;min-width:0}.permission-row strong{display:block;font-size:13px;color:#253645}.permission-row code{display:block;font-size:11px;color:#466c8e;margin-top:3px}.permission-row small{font-size:11px;color:#7b8792;margin-top:3px}.alert.info{background:#e8f1fb;color:#315f88}
@media(max-width:900px){.form-grid.two,.check-grid,.permission-list{grid-template-columns:1fr}.span-2{grid-column:span 1}.page-toolbar{justify-content:flex-start;flex-wrap:wrap}}

/* Stage 3B additions */
.code-chip{display:inline-flex;align-items:center;padding:4px 7px;border-radius:6px;background:#eef3f7;color:#31516d;font-family:Consolas,Monaco,monospace;font-size:12px}.mini-note{font-size:12px;color:#75818d;line-height:1.45}.compact-list{margin:0;padding-left:18px;color:#566473;font-size:13px;line-height:1.65}.inline-fields{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.inline-fields>label{min-width:160px;flex:1}.preview-box{margin-top:16px;padding:14px;border:1px dashed #9db0c0;border-radius:9px;background:#f8fbfd}.preview-box strong{display:block;margin-bottom:6px}.preview-number{font-family:Consolas,Monaco,monospace;font-size:15px;color:#203a52;word-break:break-word}.template-editor{font-family:Consolas,Monaco,monospace;min-height:220px!important}.phase-badge{display:inline-flex;padding:4px 7px;border-radius:6px;background:#f0f3f6;color:#52606d;font-size:11px;font-weight:700}.badge.primary{background:#e7edf5;color:#284f70}.badge.dark{background:#dde3e8;color:#34414c}.stats-grid.six{grid-template-columns:repeat(6,1fr)}
@media(max-width:1200px){.stats-grid.six{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.stats-grid.six{grid-template-columns:1fr}.inline-fields{display:block}.inline-fields>label{display:block;margin-bottom:12px}}
.inline-search{display:flex;gap:8px;align-items:center}.inline-search input{min-width:260px;border:1px solid #ccd5dd;border-radius:9px;padding:9px 11px;font:inherit;outline:none}.inline-search input:focus{border-color:#466c8e;box-shadow:0 0 0 3px rgba(70,108,142,.12)}
@media(max-width:700px){.inline-search{width:100%}.inline-search input{min-width:0;flex:1}}

/* Stage 4A - DPA */
.stat-money{font-size:23px!important;line-height:1.25}.stat-stage{font-size:26px!important}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.table-link{font-weight:700;color:#274f70}.table-link:hover{text-decoration:underline}.filter-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.filter-bar input,.filter-bar select{border:1px solid #ccd5dd;border-radius:9px;padding:9px 11px;font:inherit;background:#fff;outline:none}.filter-bar input{min-width:310px}.filter-bar input:focus,.filter-bar select:focus{border-color:#466c8e;box-shadow:0 0 0 3px rgba(70,108,142,.12)}.dpa-toolbar{justify-content:space-between}.dpa-form{max-width:none}.section-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin:30px 0 14px;border-top:1px solid #edf0f3;padding-top:22px}.section-heading h2{margin:0 0 4px}.section-heading p{margin:0}.dpa-item-card{border:1px solid #dce4eb;background:#fbfcfd;border-radius:12px;padding:18px;margin-bottom:14px}.dpa-item-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.danger-outline{background:#fff1f1;color:#9c2d2d;border:1px solid #efcaca}.dpa-total-box{margin:18px 0 0 auto;max-width:420px;background:#203a52;color:#fff;border-radius:12px;padding:16px 20px;display:flex;align-items:center;justify-content:space-between;gap:18px}.dpa-total-box span{color:#cbd8e3}.dpa-total-box strong{font-size:22px}.dpa-summary-grid{display:grid;grid-template-columns:2fr 1fr;gap:18px;margin-bottom:18px}.detail-list.wide div{grid-template-columns:170px 1fr}.budget-hero{display:flex;flex-direction:column;justify-content:center;min-height:260px;background:linear-gradient(145deg,#203a52,#315b7c);color:#fff}.budget-hero>span{font-size:14px;color:#c6d6e4}.budget-hero>strong{font-size:30px;margin:12px 0}.budget-hero>small{color:#d7e3ec}.budget-note{margin-top:22px;padding-top:16px;border-top:1px solid rgba(255,255,255,.18);font-size:13px;color:#dbe5ed;line-height:1.5}.file-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.file-card{display:grid;grid-template-columns:58px 1fr auto;gap:13px;align-items:center;border:1px solid #dde4ea;border-radius:11px;padding:13px;background:#fafbfd}.file-icon{width:50px;height:50px;border-radius:9px;background:#e7eef5;color:#2b5576;display:grid;place-items:center;font-weight:800;font-size:12px}.file-info{min-width:0}.file-info strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-info small{display:block;color:#7b8792;font-size:11px;margin:4px 0 6px}.file-actions{display:flex;gap:6px}.empty-state{grid-column:1/-1;padding:25px;text-align:center;border:1px dashed #ccd5dd;border-radius:10px;color:#78838d}.timeline{position:relative;margin-left:7px}.timeline-item{display:grid;grid-template-columns:18px 1fr;gap:10px;padding:0 0 20px}.timeline-dot{width:10px;height:10px;border-radius:50%;background:#315b7c;margin-top:5px;box-shadow:0 0 0 4px #e7eef5}.timeline-item strong{font-size:13px}.timeline-item p{margin:4px 0;color:#53616e;font-size:13px}.timeline-item small{color:#89949e;font-size:11px}.upload-dpa-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:18px}.upload-dpa-head h2{margin:5px 0}.upload-dpa-head p{margin:0;color:#6f7a85}.security-chip{padding:8px 11px;border-radius:999px;background:#e8f5ed;color:#287044;font-weight:700;font-size:12px}.upload-zone{border:2px dashed #a9b9c7;border-radius:13px;padding:28px;display:flex;flex-direction:column;align-items:center;text-align:center;background:#f9fbfc}.upload-zone input{margin-bottom:12px;max-width:100%}.upload-zone span{font-size:12px;color:#7e8993;margin-top:4px}.preview-panel{padding:10px}.dpa-pdf-preview{width:100%;height:calc(100vh - 180px);min-height:650px;border:0;border-radius:8px;background:#e9edf1}.image-preview-wrap{text-align:center;background:#e9edf1;border-radius:8px;padding:14px;min-height:500px}.image-preview-wrap img{max-width:100%;height:auto;max-height:calc(100vh - 210px);object-fit:contain}.dpa-stats{grid-template-columns:repeat(4,1fr)}
@media(max-width:1100px){.dpa-summary-grid{grid-template-columns:1fr}.file-grid{grid-template-columns:1fr}.filter-bar input{min-width:220px}}
@media(max-width:700px){.dpa-toolbar,.section-heading,.upload-dpa-head{display:block}.dpa-toolbar>.btn,.section-heading>.btn{margin-top:10px}.filter-bar{display:grid;grid-template-columns:1fr 1fr;width:100%}.filter-bar input{min-width:0;grid-column:1/-1}.file-card{grid-template-columns:48px 1fr}.file-actions{grid-column:1/-1;justify-content:flex-end}.dpa-total-box{max-width:none}.detail-list.wide div{grid-template-columns:1fr}.detail-list.wide dt{margin-bottom:4px}}

/* Stage 4B additions */
.ai-file-options{display:grid;gap:10px;margin:14px 0}.ai-file-option{display:flex;gap:12px;align-items:flex-start;border:1px solid #dce4eb;border-radius:10px;padding:13px;background:#fafbfd;cursor:pointer}.ai-file-option input{margin-top:4px}.ai-file-option strong{display:block}.ai-file-option small{display:block;color:#7b8792;margin-top:4px}.compact-switch{margin:0}.dpa-actions{flex-wrap:wrap}.budget-hero>span,.budget-hero>strong,.budget-hero>small{display:block}.file-info strong{margin-bottom:2px}.file-info small{line-height:1.5}.ai-review-help{font-size:12px;color:#6f7a85}.btn[disabled]{opacity:.5;cursor:not-allowed}.badge.warning{background:#fff4d8;color:#876100}.badge.info{background:#e8f1fb;color:#315f88}

/* Stage 4B hotfix: sidebar dapat discroll agar menu Administrasi selalu dapat diakses */
.sidebar nav{padding-bottom:32px}
.sidebar::-webkit-scrollbar{width:8px}
.sidebar::-webkit-scrollbar-track{background:#203a52}
.sidebar::-webkit-scrollbar-thumb{background:#56748d;border-radius:8px;border:2px solid #203a52}
.sidebar::-webkit-scrollbar-thumb:hover{background:#6c8aa3}
