/* Mitra Manajemen Konstruksi — shared interface and wording system.
   Loaded after the individual module stylesheets to align the whole application. */
:root {
  --ui-primary: #2b62cc;
  --ui-primary-hover: #224fa9;
  --ui-accent: #f28a2e;
  --ui-navy: #142b4a;
  --ui-text: #243449;
  --ui-muted: #718096;
  --ui-line: #e2e8f0;
  --ui-surface: #ffffff;
  --ui-canvas: #f5f7fb;
  --ui-radius: 12px;
  --ui-control-radius: 8px;
  --ui-shadow: 0 3px 12px rgba(20, 43, 74, .045);
  font-family: Inter, "Segoe UI", Arial, sans-serif;
  color: var(--ui-text);
}

html, body { background: var(--ui-canvas); color: var(--ui-text); font-family: Inter, "Segoe UI", Arial, sans-serif; font-size: 13px; }
body, button, input, select, textarea { font-family: Inter, "Segoe UI", Arial, sans-serif; }
button, input, select, textarea { font-size: 13px; }
button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, a:focus-visible {
  outline: 3px solid rgba(43, 98, 204, .18); outline-offset: 1px;
}

/* Shared typography */
.page-heading h1, .heading h1, .ahsp-title h1, .login-panel h2,
.modal-header h2, .modalhead h3, .report-preview-modal-header h2 {
  font-family: Inter, "Segoe UI", Arial, sans-serif !important;
  color: #1b314c !important;
  letter-spacing: -.35px;
}
.page-heading h1, .heading h1 { font-size: 24px; line-height: 1.3; font-weight: 750; }
.page-heading p, .heading p { color: #718096; font-size: 12px; line-height: 1.65; }
.page-kicker, .eyebrow { color: var(--ui-accent); font-size: 10px; font-weight: 800; letter-spacing: 1.4px; }
.panel-header h3, .panelhead h3, .panelhead h4, .panel-header h4 { font-family: inherit !important; color: #273b54; font-weight: 700; }
.panel-header p, .panelhead p { color: #7b899b; line-height: 1.55; }

/* Common surface language */
.panel, .stat, .card, .kpi-card, .panelhead, .panel-header,
.report-document-panel, .ahsp-panel {
  border-color: var(--ui-line) !important;
  border-radius: var(--ui-radius) !important;
  box-shadow: var(--ui-shadow) !important;
}
.panel-header, .panelhead { padding: 15px 18px; border-bottom-color: #e8edf4 !important; }
.panel-body, .panelbody { padding: 17px 18px; }
.table-toolbar, .toolbar { background: #fff; border-bottom-color: #e8edf4; }
.table-footer { color: #7b899b; font-size: 11px; border-top-color: #e8edf4; }

/* Consistent controls and actions */
.btn, .table-action, .page-num, .icon-btn, .ahsp-iconbtn, .report-preview-btn,
.side-action, .link-btn, .nav button, .nav-item {
  transition: color .15s ease, background .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.btn, .btn.small, .btn.sm {
  min-height: 35px; padding: 8px 12px; border-radius: var(--ui-control-radius);
  border-color: #d6e0ec; color: #43566d; font-size: 12px; font-weight: 650;
  box-shadow: none;
}
.btn:hover { transform: none; box-shadow: 0 3px 10px rgba(25, 50, 83, .07); border-color: #b8c9df; }
.btn.primary, .btn.primary:hover, .btn.ahsp-add, .btn.ahsp-add:hover {
  color: #fff !important; background: var(--ui-primary) !important; border-color: var(--ui-primary) !important;
}
.btn.primary:hover, .btn.ahsp-add:hover { background: var(--ui-primary-hover) !important; border-color: var(--ui-primary-hover) !important; }
.btn.orange { background: var(--ui-accent) !important; border-color: var(--ui-accent) !important; color: #fff !important; }
.btn.danger, .table-action.danger { color: #c43f49; }
.table-action { border-radius: 7px; padding: 6px 9px; min-height: 29px; font-size: 11px; border-color: #dce5ef; }
.table-action:hover { background: #f4f7fc; border-color: #bacbe0; }
.icon-btn, .modal-close, .xbtn { border-radius: 8px; }

/* Same field geometry for CRUD forms, filters, Studio and dialogs */
input:not([type="checkbox"]):not([type="radio"]), select, textarea {
  border-color: #d6e0ec; border-radius: var(--ui-control-radius); color: #263b54; background: #fff;
}
input:not([type="checkbox"]):not([type="radio"]), select { min-height: 36px; }
textarea { line-height: 1.55; }
input:not([type="checkbox"]):not([type="radio"]):focus, select:focus, textarea:focus,
.field:focus, .field input:focus, .field select:focus, .field textarea:focus {
  border-color: #8aaee8; box-shadow: 0 0 0 3px rgba(43, 98, 204, .11); outline: 0;
}
label, .field label, .form-grid label, .formgrid label { color: #52657c; font-size: 11px; font-weight: 650; }
.form-hint, .formhint, .notice, .tiny { line-height: 1.6; }
.form-hint, .formhint { color: #77879b; font-size: 11px; }
.form-error { color: #bd3440; font-size: 11px; line-height: 1.5; }

/* Tables across operational modules and the RAB Studio */
.data-table th, .ahsp-table th, .rab-table th, .schedule-table th,
#page-wbs table:not(.report-document-table) th, .content table:not(.report-document-table) th {
  background: #f3f6fa !important; color: #5c6f86 !important;
  border-bottom-color: #e3eaf2 !important; font-size: 10px !important;
  font-weight: 750 !important; letter-spacing: .35px !important; padding: 11px 13px !important;
}
.data-table td, .ahsp-table td, .rab-table td, .schedule-table td,
#page-wbs table:not(.report-document-table) td, .content table:not(.report-document-table) td {
  color: #364b63; border-bottom-color: #e9eef4; font-size: 12px; padding: 10px 13px;
}
.data-table tbody tr:hover, .ahsp-table tbody tr:hover, .rab-table tbody tr:hover { background: #f8fbff; }
.data-table .cell-strong, .cell-strong { color: #263c56; font-weight: 700; }
.cell-sub { color: #8190a3; font-size: 10px; }
.table-scroll, .tablewrap, .table-wrap { border-radius: 0 0 var(--ui-radius) var(--ui-radius); }

/* Status tags and empty/loading states */
.badge, .tag, .role-tag { border-radius: 999px; font-size: 10px; font-weight: 700; padding: 5px 9px; }
.badge { background: #eef2f7; color: #617289; }
.badge.success, .tag.green, .tag.success { background: #e8f7ef !important; color: #16784f !important; }
.badge.warning, .tag.orange, .tag.warning { background: #fff3df !important; color: #a96617 !important; }
.badge.danger, .tag.red, .tag.danger { background: #fff0f0 !important; color: #b93642 !important; }
.badge.blue, .tag.blue { background: #eaf1ff !important; color: #2b5caf !important; }
.table-empty, .empty-state, .empty {
  color: #718096; font-size: 12px; line-height: 1.65;
}
.empty-state { padding: 38px 20px; }
.empty-state h3 { color: #293e57; font-size: 15px; font-weight: 700; }
.empty-state p { color: #76869a; max-width: 560px; margin-left: auto; margin-right: auto; }

/* Unified navigation and project context */
.sidebar, .app .sidebar { background: var(--ui-navy) !important; }
.nav-section, .navlabel { color: #91a8c4; font-size: 9px; font-weight: 800; letter-spacing: 1.35px; }
.nav-item, .nav button { min-height: 38px; border-radius: 8px; font-size: 12px; font-weight: 550; }
.nav-item.active { border-left-color: var(--ui-accent); }
.topbar { border-bottom-color: var(--ui-line); }
.global-project-picker select, #activeProjectSelect, .report-project-picker select { border-color: #d6e0ec; border-radius: var(--ui-control-radius); font: 600 12px Inter, "Segoe UI", Arial, sans-serif; }
.active-project-bar { border-color: var(--ui-line); border-radius: var(--ui-radius); box-shadow: var(--ui-shadow); }
.active-project-info strong { color: #536a84; font-size: 10px; letter-spacing: 1px; }

/* Standardize AHSP and Studio controls against the main application */
.ahsp-title h1 { font-size: 24px !important; font-weight: 750 !important; }
.ahsp-title p, .ahsp-sync { color: #718096; font-size: 12px; }
.ahsp-appicon { border-radius: 12px; box-shadow: none; background: var(--ui-primary); }
.ahsp-add-grid label, .ahsp-meta-label { color: #52657c; font-size: 11px; }
.ahsp-component-add, .ahsp-summary-card, .ahsp-editor-summary { border-radius: 10px; }
.ahsp-count { border-radius: 999px; font-size: 10px; }
.ahsp-iconbtn { color: var(--ui-primary); }
.ahsp-iconbtn.delete { color: #c43f49; }

/* Small, consistent print/export settings while preserving print-sheet typography */
.print-export-title h2 { font-family: inherit; color: #1b314c; font-size: 18px; }
.print-export-title p, .print-export-title small { font-size: 11px; color: #718096; }
.print-export-group-heading { background: var(--ui-navy); font-size: 10px; }
.print-export-doc-name b { font-size: 11px; }
.print-export-doc-name small, .print-export-doc-meta, .print-export-page-count { font-size: 9px; }
.print-settings-section h4 { font-size: 10px; color: #536980; }
.print-radio-row, .print-toggle-row { font-size: 11px; }
.print-field-label, .print-margin-grid label { font-size: 10px; }
.print-field-label input, .print-field-label select, .print-margin-grid input { font-size: 11px; }
.report-document-name b { font-size: 12px; }
.report-document-name span, .report-document-status { font-size: 10px; }
.report-project-picker { font-size: 12px; }
.report-center-intro { font-size: 12px; }

@media (max-width: 720px) {
  .page-heading h1, .heading h1, .ahsp-title h1 { font-size: 21px !important; }
  .page-content, .content { padding-left: 14px !important; padding-right: 14px !important; }
  .page-heading, .heading { gap: 12px; }
  .heading-actions { width: 100%; }
  .btn { min-height: 36px; }
  .ahsp-searchrow { gap: 10px; margin-bottom: 18px; }
  .ahsp-search input { width: 100%; height: 42px; }
}

/* Portfolio-wide S-curve on the executive dashboard */
.dashboard-curve-panel { margin-bottom: 17px; }
.dashboard-curve-chart { width: 100%; overflow: hidden; }
.dashboard-curve-chart svg { display: block; width: 100%; height: auto; min-height: 190px; }
.curve-legend { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin: 0 0 10px; color: #65778d; font-size: 11px; }
.curve-legend span { display: inline-flex; align-items: center; gap: 7px; }
.curve-legend i { display: inline-block; width: 19px; height: 3px; border-radius: 3px; }
.curve-legend-planned { background: #5b83d7; }
.curve-legend-actual { background: #259b77; }
.curve-legend .curve-coverage { margin-left: auto; color: #8a98a9; font-size: 10px; }
.curve-empty { padding: 28px 18px 30px; text-align: center; color: #77879a; }
.curve-empty-icon { width: 42px; height: 42px; display: grid; place-items: center; margin: 0 auto 10px; border-radius: 12px; background: #edf3ff; color: #5478c1; font-size: 24px; }
.curve-empty b { display: block; color: #354b64; font-size: 13px; }
.curve-empty p { max-width: 520px; margin: 7px auto 0; font-size: 11px; line-height: 1.7; }
@media (max-width: 620px) {
  .dashboard-curve-chart svg { min-height: 150px; }
  .curve-legend { gap: 10px; }
  .curve-legend .curve-coverage { flex-basis: 100%; margin-left: 0; }
}

/* Integrated workflow / end-to-end material traceability */
.workflow-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;padding:18px 20px}
.workflow-toolbar>div:first-child{display:flex;flex-direction:column;gap:7px;min-width:240px}
.workflow-toolbar label{font-size:12px;font-weight:700;color:var(--text-muted,#64748b)}
.workflow-toolbar select{min-width:260px;max-width:100%;padding:10px 12px;border:1px solid var(--border,#dbe3ec);border-radius:9px;background:var(--surface,#fff);color:var(--text,#172033)}
.workflow-note{max-width:650px;font-size:12px;line-height:1.6;color:var(--text-muted,#64748b)}
.workflow-kpis{grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:18px}
.workflow-flow-panel{overflow:hidden}
.workflow-flow{display:flex;align-items:stretch;gap:8px;overflow-x:auto;padding:4px 0 12px}
.workflow-flow-step{flex:1 0 124px;min-width:124px;display:flex;flex-direction:column;gap:7px;padding:12px;border:1px solid var(--border,#dbe3ec);border-radius:11px;background:var(--surface,#fff)}
.workflow-flow-step>span{width:25px;height:25px;display:grid;place-items:center;border-radius:50%;background:#e8eefb;color:#244a89;font-weight:800;font-size:12px}
.workflow-flow-step>b{font-size:12px;color:var(--text,#172033)}
.workflow-flow-step>small{font-size:11px;line-height:1.4;color:var(--text-muted,#64748b)}
.workflow-flow-arrow{align-self:center;font-style:normal;color:#8da0b8;font-size:18px;flex:0 0 auto}
.workflow-table-scroll{max-height:68vh;overflow:auto}
.workflow-table{min-width:1560px;border-collapse:separate;border-spacing:0}
.workflow-table th{position:sticky;top:0;z-index:2;background:var(--surface-soft,#f7f9fc);white-space:nowrap}
.workflow-table td{vertical-align:top;max-width:245px}
.workflow-table td:first-child{min-width:200px;max-width:280px}
.workflow-table td:nth-child(2){min-width:175px}
.workflow-table td:nth-child(10){min-width:235px;max-width:310px}
.workflow-table .cell-sub{font-size:11px;line-height:1.5;color:var(--text-muted,#64748b);margin-top:4px;overflow-wrap:anywhere}
.workflow-actions{display:flex;flex-direction:column;align-items:stretch;gap:6px;min-width:190px}
.workflow-actions .btn{white-space:normal;line-height:1.3;text-align:left;justify-content:flex-start;min-height:29px;padding:6px 9px}
.workflow-unmapped{color:#a65c00;font-weight:700}
.workflow-table .badge{white-space:normal;line-height:1.35}
@media(max-width:1100px){.workflow-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.workflow-toolbar{align-items:stretch}.workflow-toolbar>div:first-child{width:100%}.workflow-toolbar select{width:100%}}
@media(max-width:560px){.workflow-kpis{grid-template-columns:1fr}.workflow-flow-step{flex-basis:145px}.workflow-actions{min-width:170px}}


/* System test center */
.test-kpis{margin:16px 0;}
.test-toolbar{padding:16px;margin-bottom:16px;}
.test-results-table{min-width:900px;}
.test-results-table td{vertical-align:top;max-width:430px;white-space:normal;}
.test-results-table code{font-size:11px;overflow-wrap:anywhere;white-space:normal;color:var(--muted,#64748b);}
.test-status{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:4px 9px;font-size:11px;font-weight:800;letter-spacing:.04em;white-space:nowrap;}
.test-status.pass{color:#166534;background:#dcfce7;}
.test-status.fail{color:#991b1b;background:#fee2e2;}
.test-status.warn{color:#92400e;background:#fef3c7;}
.test-status.skip{color:#475569;background:#e2e8f0;}
#run-system-tests:disabled{opacity:.65;cursor:wait;}
@media(max-width:760px){.test-toolbar .form-grid{grid-template-columns:1fr;}.test-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}.test-results-table td{max-width:240px;}}

/* Progres Realisasi: item rows follow the RAB/WBS hierarchy and keep wide field sets readable. */
.progress-realization-scroll{max-height:72vh;overflow:auto;}
.progress-realization-table{min-width:1780px;border-collapse:separate;border-spacing:0;}
.progress-realization-table th{position:sticky;top:0;z-index:2;background:var(--surface-soft,#f3f6fa);white-space:nowrap;font-size:10px;}
.progress-realization-table td{vertical-align:middle;white-space:nowrap;}
.progress-realization-table td:nth-child(2){min-width:280px;max-width:460px;white-space:normal;}
.progress-realization-table td.numeric{text-align:right;font-variant-numeric:tabular-nums;}
.progress-realization-table .progress-realization-group td{background:#e8f2df;color:#29452b;font-weight:800;border-top:1px solid #cfdfc3;}
.progress-realization-table .progress-realization-subgroup td{background:#f5f8fb;color:#354b64;font-weight:700;border-top:1px solid #e1e8ef;}
.progress-realization-table .progress-realization-item-row td{background:#fff;}
.progress-realization-table .rab-item-title{padding-left:20px;}
@media(max-width:720px){.progress-realization-scroll{max-height:65vh}.progress-realization-table{min-width:1650px}}

/* Progres Realisasi: editable inputs and print-preview integration */
.progress-realization-table .progress-date-input{min-width:132px;width:132px;padding:8px;border:1px solid var(--border,#d7e0ec);border-radius:8px;background:var(--surface,#fff);color:var(--text,#22364f);font:inherit;font-size:12px;}
.progress-realization-table .progress-realization-input{min-width:100px;width:100px;padding:8px;border:1px solid var(--border,#d7e0ec);border-radius:8px;background:var(--surface,#fff);color:var(--text,#22364f);font:inherit;font-size:12px;}
.progress-realization-table .progress-realization-input:focus,.progress-realization-table .progress-date-input:focus{outline:2px solid var(--primary-soft,#dce8ff);border-color:var(--primary,#2b61d1);}
body.report-print-mode .progress-print-modal-header,body.report-print-mode .progress-print-settings,body.report-print-mode .progress-print-actions{display:none!important;}
body.report-print-mode .progress-print-preview-sheet{display:block!important;max-width:none!important;width:100%!important;min-height:0!important;margin:0!important;padding:8mm!important;border:0!important;border-radius:0!important;box-shadow:none!important;break-after:auto!important;background:#fff!important;color:#111!important;}

/* Progres Terakhir: PDF print/export settings match RAB/BOQ Schedule workflow */
.progress-print-settings-modal .progress-print-summary-sheet{padding:22px;background:#fff;border:1px solid #e3eaf4;border-radius:10px;color:#2b4059}
.progress-print-settings-modal .progress-print-summary-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:10px;background:#fff1df;color:#c86d08;font-weight:900;font-size:12px;margin-bottom:14px}
.progress-print-settings-modal .progress-print-summary-sheet h3{font-size:17px;line-height:1.4;margin:0 0 6px;color:#203956}
.progress-print-settings-modal .progress-print-summary-sheet>p{font-size:11px;color:#71839a;margin:0 0 15px}
.progress-print-settings-modal .progress-print-summary-sheet>div:not(.progress-print-summary-icon){display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid #edf1f6;font-size:10px}
.progress-print-settings-modal .progress-print-summary-sheet>div span{color:#7b8ba0}
.progress-print-settings-modal .progress-print-summary-sheet>div b{text-align:right;color:#31465e}
.progress-print-preview-modal{max-width:1040px!important;width:min(1040px,calc(100vw - 28px))!important}
.progress-print-preview-scroll{background:#edf2f8;overflow:auto;max-height:calc(92vh - 150px)}
.progress-print-sheet{font-family:Arial,Helvetica,sans-serif;color:#26374d;background:#fff}
.progress-print-sheet .progress-print-content{position:relative;z-index:1}
.progress-print-sheet .progress-print-logo{width:34px;height:34px;object-fit:contain;border-radius:5px}
.progress-print-sheet .progress-print-title-block{padding:12px 0 15px;border-bottom:2px solid #eb8a24;margin-bottom:16px}
.progress-print-sheet .progress-print-eyebrow{font-size:8px;font-weight:800;letter-spacing:1.4px;color:#e57b1a;margin-bottom:5px}
.progress-print-sheet .progress-print-title-block h1{font-size:23px;line-height:1.25;margin:0 0 5px;color:#183555}
.progress-print-sheet .progress-print-title-block p{font-size:10px;color:#76859a;margin:0}
.progress-print-sheet .progress-print-meta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px;border:1px solid #e3eaf2;border-radius:8px;margin-bottom:20px;padding:8px 14px}
.progress-print-sheet .progress-print-meta-grid>div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid #edf1f5;font-size:9px}
.progress-print-sheet .progress-print-meta-grid>div:nth-last-child(-n+2){border-bottom:0}
.progress-print-sheet .progress-print-meta-grid span{color:#7a8ba0}.progress-print-sheet .progress-print-meta-grid b{text-align:right;color:#2b4059}
.progress-print-sheet h2{font-size:12px;margin:17px 0 8px;color:#244463}
.progress-print-sheet .progress-print-table{width:100%;border-collapse:collapse;font-size:10px;table-layout:fixed}
.progress-print-sheet .progress-print-table th,.progress-print-sheet .progress-print-table td{padding:9px 10px;border:1px solid #dfe6ef;text-align:left;vertical-align:top;overflow-wrap:anywhere}
.progress-print-sheet .progress-print-table th{width:34%;background:#f3f6fa;color:#536b84;font-weight:700}
.progress-print-sheet .progress-print-table td{color:#243c56}
.progress-print-sheet .progress-print-notes{min-height:40px;border:1px solid #dfe6ef;border-radius:6px;padding:10px;font-size:10px;line-height:1.6;overflow-wrap:anywhere}
.progress-print-sheet .progress-print-signature-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:24px;break-inside:avoid}
.progress-print-sheet .progress-print-signature-grid>div{border:1px solid #2f4156;min-height:104px;display:flex;flex-direction:column;text-align:center;font-size:9px}
.progress-print-sheet .progress-print-signature-grid>div>b{padding:7px;border-bottom:1px solid #2f4156;background:#f6f8fb}
.progress-print-sheet .progress-print-sign-space{flex:1;min-height:48px}
.progress-print-sheet .progress-print-signature-grid span{padding:6px;border-top:1px solid #2f4156;min-height:23px}
.progress-print-sheet .progress-print-page-number:after{content:counter(page)}
@media(max-width:760px){.progress-print-settings-modal .print-export-content{grid-template-columns:minmax(0,1fr)}.progress-print-settings-modal .progress-print-summary{min-height:220px}.progress-print-sheet .progress-print-meta-grid{grid-template-columns:1fr}.progress-print-sheet .progress-print-meta-grid>div:nth-last-child(-n+2){border-bottom:1px solid #edf1f5}.progress-print-sheet .progress-print-signature-grid{gap:10px}}
@media print{body.report-print-mode .progress-print-sheet{width:100%!important;max-width:none!important;min-height:0!important;margin:0!important;padding:0!important;border:0!important;box-shadow:none!important;border-radius:0!important;break-after:auto!important}body.report-print-mode .progress-print-sheet .progress-print-watermark{position:fixed!important;top:40%!important;display:block!important}body.report-print-mode .progress-print-sheet .progress-print-signature-grid,body.report-print-mode .progress-print-sheet .progress-print-table tr{break-inside:avoid;page-break-inside:avoid}}

/* Progres Realisasi: per-item input workflow and compact calculation summary. */
.progress-realization-table{min-width:2050px;}
.progress-realization-table th:last-child,.progress-realization-table .progress-realization-item-row td:last-child{position:sticky;right:0;z-index:1;background:var(--surface,#fff);box-shadow:-5px 0 8px rgba(15,35,60,.05);}
.progress-realization-table th:last-child{z-index:3;background:var(--surface-soft,#f3f6fa);}
.progress-realization-table td:last-child .btn{white-space:nowrap;}
.progress-item-input-modal{max-width:900px!important;width:min(900px,calc(100vw - 28px))!important;}
.progress-item-input-modal .modal-body{max-height:min(70vh,760px);overflow:auto;}
.progress-item-select-row{margin:0 0 16px;padding:12px 14px;border:1px solid var(--border,#d7e0ec);border-radius:10px;background:var(--surface-soft,#f7f9fc);}.progress-item-select-row .form-field{width:100%;}.progress-item-select-row select{width:100%;min-height:42px;background:var(--surface,#fff);}.progress-item-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:22px;}
.progress-item-summary-grid>div{display:flex;flex-direction:column;gap:6px;padding:13px;border:1px solid var(--border,#d7e0ec);border-radius:10px;background:var(--surface-soft,#f7f9fc);min-width:0;}
.progress-item-summary-grid span{font-size:11px;color:var(--muted,#64748b);}
.progress-item-summary-grid b{font-size:14px;color:var(--text,#22364f);overflow-wrap:anywhere;}
.progress-item-form-section{padding:16px 0;border-top:1px solid var(--border,#d7e0ec);}
.progress-item-form-section h3{font-size:14px;margin:0 0 13px;color:var(--text,#22364f);}
.progress-item-input-modal .form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;}
.progress-item-input-modal .form-field{display:flex;flex-direction:column;gap:6px;min-width:0;}
.progress-item-input-modal .form-field>span{font-size:12px;font-weight:700;color:var(--text,#22364f);}
.progress-item-input-modal .form-field small{font-size:11px;color:var(--muted,#64748b);line-height:1.4;}
.progress-item-input-modal input[readonly]{background:var(--surface-soft,#f3f6fa);font-weight:650;}
@media(max-width:680px){.progress-item-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.progress-item-input-modal .form-grid{grid-template-columns:1fr;}.progress-item-input-modal .modal-body{max-height:65vh;}}

/* Dashboard rekapitulasi: row-level detail/export actions and global reset warning. */
.progress-recap-table{min-width:940px;}
.progress-recap-table th:last-child{min-width:150px;}
.progress-recap-table .table-actions{display:flex;flex-wrap:wrap;gap:6px;}
.progress-recap-view-modal{max-width:1120px!important;width:min(1120px,calc(100vw - 28px))!important;}
.progress-recap-view-modal .modal-body{max-height:min(70vh,780px);overflow:auto;}
.progress-clear-all-modal{max-width:620px!important;width:min(620px,calc(100vw - 28px))!important;}
.progress-clear-all-modal .modal-body{max-height:70vh;overflow:auto;}
.progress-clear-all-modal .alert.warning{padding:14px;border:1px solid #f1c77d;border-radius:10px;background:#fff8eb;color:#814b0c;margin-bottom:16px;}
.progress-clear-all-modal .alert.warning p{margin:7px 0 0;line-height:1.6;}
.progress-clear-all-modal .form-field{display:flex;flex-direction:column;gap:7px;margin:14px 0;}
.progress-clear-all-modal .input{width:100%;}
.progress-print-sheet .progress-print-recap-items th{width:auto;background:#f3f6fa;color:#536b84;}
.progress-print-sheet .progress-print-recap-items th,.progress-print-sheet .progress-print-recap-items td{font-size:8px;padding:6px;}
/* Edit Progres from the dated/project recap */
.progress-recap-edit-modal{max-width:min(96vw,1500px)}
.progress-recap-edit-scroll{max-height:58vh;overflow:auto}
.progress-recap-edit-table{min-width:1320px}
.progress-recap-edit-table th{white-space:nowrap}
.progress-recap-edit-table td{vertical-align:middle}
.progress-recap-edit-table .progress-recap-edit-date{min-width:138px;width:145px}
.progress-recap-edit-table .progress-recap-edit-realization{min-width:88px;width:96px}
.progress-recap-edit-table td:first-child{min-width:210px;max-width:300px;white-space:normal}


/* Multi-item progress entry: Apply stages an item; Save commits the batch atomically. */
.progress-item-staged-panel{margin:14px 0;padding:12px 14px;border:1px solid #cfe0f7;border-radius:10px;background:#f5f9ff;color:#27415f}
.progress-item-staged-panel>b{display:block;font-size:12px;font-weight:800;margin-bottom:5px}
.progress-item-staged-panel p{margin:0;font-size:12px;line-height:1.6;color:#60758e;overflow-wrap:anywhere}
.progress-item-form-status{margin-top:8px;color:#1a6d45;font-size:12px;font-weight:650;line-height:1.5}
.progress-realization-export-settings-modal .progress-print-summary-sheet{max-height:70vh;overflow:auto}
.progress-realization-export-column-list{margin:12px 0 16px 18px;padding:0;color:#526b86;font-size:11px;line-height:1.7;columns:2;column-gap:22px}
.progress-realization-export-column-list li{break-inside:avoid;padding-left:2px}
.progress-realization-export-sheet .progress-print-title-block{margin-bottom:10px}
.progress-realization-export-sheet .progress-print-meta-grid{margin-bottom:12px}
.progress-realization-export-table-wrap{width:100%;overflow:visible}
.progress-realization-export-sheet .progress-realization-export-table{width:100%;table-layout:auto;font-size:7px;}
.progress-realization-export-sheet .progress-realization-export-table th,.progress-realization-export-sheet .progress-realization-export-table td{width:auto!important;padding:4px 5px;border:1px solid #dfe6ef;overflow-wrap:anywhere;white-space:normal;}
.progress-realization-export-sheet .progress-realization-export-table th{background:#f3f6fa;color:#304b68;font-weight:750}
.progress-realization-export-sheet .progress-realization-export-table td:nth-child(n+4){text-align:right;font-variant-numeric:tabular-nums}
.progress-realization-export-note{margin-top:10px;color:#667a92;font-size:8px;font-style:italic}
.progress-realization-export-preview-scroll{overflow:auto}
@media(max-width:760px){.progress-realization-export-column-list{columns:1}.progress-realization-export-settings-modal .print-export-content{grid-template-columns:minmax(0,1fr)}}
@media print{body.report-print-mode .progress-realization-export-sheet .progress-realization-export-table tr{break-inside:avoid;page-break-inside:avoid}body.report-print-mode .progress-realization-export-table-wrap{overflow:visible!important}}

/* Preserve RAB/WBS hierarchy in the Progres Realisasi document export. */
.progress-realization-export-sheet .progress-realization-export-table .progress-realization-export-group-main td{background:#e8f2df!important;color:#29452b!important;font-weight:800!important;border-top:1px solid #cfdfc3!important;border-bottom:1px solid #cfdfc3!important;text-align:left!important;}
.progress-realization-export-sheet .progress-realization-export-table .progress-realization-export-group-sub td{background:#f5f8fb!important;color:#354b64!important;font-weight:700!important;border-top:1px solid #e1e8ef!important;text-align:left!important;}
.progress-realization-export-main-title{display:inline-block;font-weight:800;letter-spacing:.15px;}
.progress-realization-export-sub-title{display:inline-block;padding-left:10px;font-weight:700;}
.progress-realization-export-item-title{display:inline-block;padding-left:28px;text-align:left;}
@media print{body.report-print-mode .progress-realization-export-table .progress-realization-export-group-main,body.report-print-mode .progress-realization-export-table .progress-realization-export-group-sub{break-after:avoid;page-break-after:avoid;}}
.progress-realization-export-sheet .progress-realization-export-table .progress-realization-export-group-work td{background:#f8fafc!important;color:#3e5873!important;font-weight:650!important;border-top:1px solid #e4eaf1!important;text-align:left!important;}
.progress-realization-export-work-title{display:inline-block;padding-left:18px;font-weight:650;}
@media print{body.report-print-mode .progress-realization-export-table .progress-realization-export-group-work{break-after:avoid;page-break-after:avoid;}}

/* Progres Proyek shares planning fields with the RAB/BOQ Jadwal Pekerjaan table. */
.progress-realization-table{min-width:2480px}
.progress-realization-table .progress-schedule-status,.progress-dashboard-schedule-table .progress-schedule-status{display:inline-flex;align-items:center;white-space:nowrap;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:750;border:1px solid #dbe4ef;background:#f5f7fa;color:#5e6d80}
.progress-realization-table .progress-schedule-status.success,.progress-dashboard-schedule-table .progress-schedule-status.success{background:#e8f6ed;color:#1d7542;border-color:#bde4ca}
.progress-realization-table .progress-schedule-status.info,.progress-dashboard-schedule-table .progress-schedule-status.info{background:#e9f2ff;color:#235bb6;border-color:#c7dcff}
.progress-realization-table .progress-schedule-status.warning,.progress-dashboard-schedule-table .progress-schedule-status.warning{background:#fff4df;color:#93610b;border-color:#f2ddb0}
.progress-realization-table .progress-schedule-status.danger,.progress-dashboard-schedule-table .progress-schedule-status.danger{background:#fff0f0;color:#b02d2d;border-color:#f2c8c8}
.progress-realization-table .progress-schedule-priority,.progress-dashboard-schedule-table .progress-schedule-priority{font-size:10px;font-weight:750;white-space:nowrap}
.progress-realization-table .priority-low{color:#62748a}.progress-realization-table .priority-normal{color:#365779}.progress-realization-table .priority-high{color:#ad6a12}.progress-realization-table .priority-urgent{color:#b52b2b}
.progress-dashboard-schedule-table{min-width:1500px}
.progress-dashboard-schedule-table th{white-space:nowrap}
