/* =====================================================================
   V60 — Card window controls + modular BOQ layout
   ===================================================================== */

/* ---------- Window controls (macOS-style) on module cards ---------- */
/* V73 CRITICAL FIX: never animate layout properties on a modal.
   Animating width/height/max-height forced a full relayout of the entire
   card subtree on every frame; with a large BOQ table or long detail text
   that pegged the renderer and Chrome reported "Page Unresponsive"
   (RESULT_CODE_HUNG) — which is why closing appeared to freeze the site. */
.modal-dialog{transition:none!important}
.card-window-bar{display:flex;align-items:center;gap:12px;padding:10px 15px;
  background:linear-gradient(180deg,#fbfdff,#eef4fb);
  border-bottom:1px solid rgba(9,40,86,.08);
  border-top-left-radius:inherit;border-top-right-radius:inherit;
  /* V73: sticky inside a resizing card forced per-frame sticky recalculation. */
  position:relative;z-index:80}
/* V67 — keep controls above any progress/updating content so they never hang */
.card-window-controls{display:flex;align-items:center;gap:8px;position:relative;z-index:81;pointer-events:auto}
.win-dot{pointer-events:auto}
/* V64 — control side by OS: macOS left, Windows right */
.card-window-bar.os-mac{justify-content:flex-start}
.card-window-bar.os-win{justify-content:space-between}
.card-window-bar.os-win .card-window-label{order:1}
.card-window-bar.os-win .card-window-controls{order:2}
.card-window-bar.os-win .win-min{order:1}
.card-window-bar.os-win .win-max{order:2}
.card-window-bar.os-win .win-close{order:3}
.win-dot{width:13px;height:13px;border-radius:50%;border:0;cursor:pointer;padding:0;
  display:grid;place-items:center;transition:filter .15s ease}
.win-dot:hover{filter:brightness(.92)}
.win-close{background:#ff5f57}
.win-min{background:#febc2e}
.win-max{background:#28c840}
.win-dot i{font-size:7px;color:rgba(0,0,0,.55);opacity:0;transition:opacity .12s ease}
.card-window-controls:hover .win-dot i{opacity:1}
.card-window-label{font-size:11px;font-weight:800;color:#0b2f66;letter-spacing:.01em;white-space:nowrap}
/* V72: the app's native close button stays VISIBLE and functional.
   Hiding it and replacing it with custom close logic is what broke closing. */
.has-window-controls>.modal-close{z-index:90}

/* Full-screen expand */
.modal.win-fullscreen .modal-dialog{width:100vw!important;max-width:100vw!important;
  height:100vh!important;max-height:100vh!important;margin:0!important;border-radius:0!important;
  top:0!important;left:0!important;right:auto!important;bottom:auto!important;transform:none!important}
.modal.win-fullscreen .analysis-modal-body,
.modal.win-fullscreen #modalContent,
.modal.win-fullscreen #officialFocusedContent{max-height:calc(100vh - 130px);overflow:auto}

/* Minimize to a floating title bar (page stays usable behind it) */
.modal.win-minimized{pointer-events:none}
.modal.win-minimized .modal-backdrop{opacity:0!important;pointer-events:none!important}
.modal.win-minimized .modal-dialog{pointer-events:auto;position:fixed!important;right:18px!important;
  bottom:18px!important;top:auto!important;left:auto!important;
  width:300px!important;max-width:300px!important;min-width:0!important;
  height:46px!important;min-height:0!important;max-height:46px!important;
  overflow:hidden!important;margin:0!important;border-radius:13px!important;transform:none!important;
  box-shadow:0 18px 44px rgba(4,20,45,.34)!important}
.modal.win-minimized .modal-dialog>*:not(.card-window-bar){display:none!important}
.modal.win-minimized .card-window-label{cursor:pointer}
.modal.win-minimized .card-window-bar{border-bottom:0}

.dark .card-window-bar{background:linear-gradient(180deg,#0f2a52,#0b2143);border-bottom-color:rgba(255,255,255,.08)}
.dark .card-window-label{color:#dbe8fb}

/* ---------- Modular BOQ: dedicated price + Freight/Transport/Install ---------- */
.boq-price-section{margin:14px 0;padding:18px 20px;border-radius:18px;
  background:linear-gradient(135deg,#071f48,#0f4a91);color:#fff;
  box-shadow:0 16px 40px rgba(11,47,102,.18)}
.boq-price-head{display:flex;align-items:center;gap:11px;margin-bottom:13px}
.boq-price-head .boq-price-ico{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;
  background:rgba(255,255,255,.12);color:#fff;font-size:15px}
.boq-price-head .section-kicker{color:#a9c7ef;display:block}
.boq-price-head h3{margin:2px 0 0;font:800 15px "Plus Jakarta Sans",sans-serif}
.boq-price-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:13px}
.boq-price-cell{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);
  border-radius:14px;padding:13px 15px}
.boq-price-cell span{display:block;font-size:9px;font-weight:800;letter-spacing:.05em;
  text-transform:uppercase;color:#cfe0f6;margin-bottom:6px}
.boq-price-cell strong{font:800 23px "Plus Jakarta Sans",sans-serif;color:#fff;line-height:1.08}
.boq-price-cell.is-missing strong{font-size:13px;color:#ffd7a1}
.boq-price-status{margin-top:13px;display:inline-flex;align-items:center;gap:8px;font-size:10px;
  font-weight:800;color:#ffe0b3;background:rgba(255,255,255,.09);padding:8px 13px;border-radius:999px}
.boq-price-status.ok{color:#c9f7dc}

.boq-fti-section{margin:16px 0}
.boq-fti-title{display:flex;align-items:baseline;gap:10px;margin-bottom:11px}
.boq-fti-title .section-kicker{color:#6a7d94}
.boq-fti-title h3{margin:0;font:800 13px "Plus Jakarta Sans",sans-serif;color:#0b2f66}
.boq-fti-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.boq-fti-card{background:#fff;border:1px solid var(--line,#e6ecf3);border-radius:15px;padding:14px 16px;
  box-shadow:0 8px 22px rgba(17,52,97,.05)}
.boq-fti-card>header{display:flex;align-items:center;gap:9px;margin-bottom:10px}
.boq-fti-card>header i{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;
  background:#eef4fc;color:#1769d2;font-size:13px}
.boq-fti-card>header h4{margin:0;font:800 12px "Plus Jakarta Sans",sans-serif;color:#0b2f66}
.boq-fti-card ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:7px}
.boq-fti-card li{font-size:10.5px;line-height:1.55;color:#33475f}
.boq-fti-card li strong{color:#0b2f66}
.boq-fti-card li em{color:#5a6b80;font-style:italic}
.boq-fti-empty{display:flex;align-items:center;gap:8px;font-size:9.5px;font-weight:700;color:#8090a3;
  background:#f4f7fb;border:1px dashed #d6e0ec;border-radius:10px;padding:9px 11px}
.boq-fti-empty i{color:#9aa8ba}
@media(max-width:760px){.boq-fti-grid{grid-template-columns:1fr}}

/* =====================================================================
   V76 — Mandatory extraction panel, commercial schedule, fold toggles
   ===================================================================== */
.boq-comp-score{margin-left:auto;font-size:9px;font-weight:800;color:#0b3b83;background:#eef4fc;
  border:1px solid #d5e3f5;border-radius:999px;padding:4px 10px}
.boq-fti-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.boq-compliance{margin:18px 0}
.boq-comp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(275px,1fr));gap:14px}
.boq-comp-card{background:#fff;border:1px solid var(--line,#e6ecf3);border-radius:15px;padding:14px 16px;
  box-shadow:0 8px 22px rgba(17,52,97,.05)}
.boq-comp-card>header{display:flex;align-items:center;gap:9px;margin-bottom:11px}
.boq-comp-card>header i{width:29px;height:29px;border-radius:9px;display:grid;place-items:center;
  background:#eef4fc;color:#1769d2;font-size:12px}
.boq-comp-card>header h4{margin:0;font:800 11.5px "Plus Jakarta Sans",sans-serif;color:#0b2f66}
.boq-comp-card ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.boq-comp-card li{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;
  padding-bottom:7px;border-bottom:1px dashed #eef2f7}
.boq-comp-card li:last-child{border-bottom:0;padding-bottom:0}
.boq-comp-card li span{font-size:9.5px;font-weight:700;color:#6a7d94;flex:0 0 46%}
.boq-comp-card li b{font-size:10px;font-weight:800;color:#0b2f66;text-align:right;flex:1;line-height:1.45}
.boq-comp-card li.is-found b{color:#08734b}
.boq-comp-card li.is-missing b{color:#a3b0c0;font-weight:700}

.boq-crs{margin:18px 0}
.boq-crs-note{font-size:10px;color:#8a5a12;background:#fff7e9;border:1px solid #f2dfb8;
  border-radius:10px;padding:10px 12px;margin:0 0 12px}
.boq-crs-note i{margin-right:7px;color:#c98a1f}

/* Fold / Read more */
.boq-fti-card li.is-foldable .fold-full{display:none}
.boq-fti-card li.is-foldable.is-open .fold-full{display:inline}
.boq-fti-card li.is-foldable.is-open .fold-short{display:none}
.fold-toggle{display:inline-block;margin-left:6px;border:0;background:none;padding:0;cursor:pointer;
  color:#1769d2;font-size:9.5px;font-weight:800;text-decoration:underline}
.fold-toggle:hover{color:#0b3b83}

.dark .boq-comp-card,.dark .boq-fti-card{background:#0f2748;border-color:#22406a}
.dark .boq-comp-card>header h4,.dark .boq-comp-card li b{color:#dbe8fb}
@media(max-width:760px){
  .boq-comp-grid{grid-template-columns:1fr}
  .boq-comp-card li{flex-direction:column;gap:3px}
  .boq-comp-card li b{text-align:left}
}

/* ---------- V77: risk intelligence panel + contract action button ---------- */
.analysis-action.contract{border-color:#e0d5f5}
.analysis-action.contract i{color:#6b3fd4}
.risk-panel{margin:14px 0 18px;padding:16px 18px;border-radius:16px;background:#fff6f5;border:1px solid #f6d5d1}
.risk-head{display:flex;align-items:center;gap:11px;margin-bottom:11px}
.risk-head .risk-ico{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:#fee5e3;color:#b42318;font-size:14px}
.risk-head .section-kicker{color:#a12a1e;display:block}
.risk-head h3{margin:2px 0 0;font:800 13px "Plus Jakarta Sans",sans-serif;color:#8f2c1f}
.risk-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:9px}
.risk-list li{display:flex;align-items:center;gap:9px;background:#fff;border:1px solid #f0cfc9;border-radius:11px;
  padding:10px 12px;font-size:10.5px;font-weight:800;color:#8f2c1f}
.risk-dot{width:9px;height:9px;border-radius:50%;background:#e5484d;box-shadow:0 0 0 4px rgba(229,72,77,.16);flex:0 0 9px}
.dark .risk-panel{background:#3a1b1b;border-color:#5c2a2a}
.dark .risk-list li{background:#2a1414;border-color:#5c2a2a;color:#ffd7d1}

/* =====================================================================
   V79 — Larger, more legible action-button labels at the SAME button size
   ---------------------------------------------------------------------
   Applies to: Open Official EPADS Notice · BIDDING / BOQ Pricing &
   Submission · Contract, Technical & Risks · Generate Tender Summary.
   Font goes 7.7px -> 10.5px; height stays 37px and padding is trimmed
   slightly so the buttons keep their existing footprint.
   ===================================================================== */
.proc-analysis-actions .analysis-action{
  font-size:10.5px!important;
  letter-spacing:.005em;
  line-height:1.15;
  min-height:37px!important;
  padding:7px 11px!important;
  gap:8px!important;
}
.proc-analysis-actions .analysis-action i{font-size:12px!important}
.proc-analysis-actions .analysis-action span{font-size:inherit!important;font-weight:800}
/* the ready/PDF chips stay proportionally small so they don't grow the button */
.proc-analysis-actions .analysis-action .ai-ready-chip{font-size:8px!important;padding:3px 7px!important}

/* Keep the row tidy when the larger text needs to wrap on narrow screens */
.proc-analysis-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
@media(max-width:900px){
  .proc-analysis-actions .analysis-action{font-size:10px!important;padding:7px 10px!important}
}
@media(max-width:560px){
  .proc-analysis-actions .analysis-action{white-space:normal!important;text-align:left}
}

/* =====================================================================
   V80 — Full-screen toggle · blue close (X) · larger notice text
   ===================================================================== */

/* Blue themed close button (was neutral grey) */
.modal .modal-close{
  background:#eef4fc!important;
  color:#1769d2!important;
  border:1px solid #cfe0f6!important;
  transition:background .16s ease,color .16s ease}
.modal .modal-close:hover{background:#1769d2!important;color:#fff!important;border-color:#1769d2!important}
.dark .modal .modal-close{background:#12325c!important;color:#8cc3ff!important;border-color:#22406a!important}

/* Full-screen toggle sits just left of the close button */
.fs-toggle{
  position:absolute;right:58px;top:15px;width:35px;height:35px;border-radius:50%;
  border:1px solid #cfe0f6;background:#eef4fc;color:#1769d2;cursor:pointer;z-index:6;
  display:grid;place-items:center;font-size:12px;
  transition:background .16s ease,color .16s ease}
.fs-toggle:hover{background:#1769d2;color:#fff;border-color:#1769d2}
.dark .fs-toggle{background:#12325c;color:#8cc3ff;border-color:#22406a}

/* Full-screen state — no layout transitions (kept from the V73 fix) */
.modal.is-fullscreen .modal-dialog{
  width:100vw!important;max-width:100vw!important;
  height:100vh!important;max-height:100vh!important;
  margin:0!important;border-radius:0!important;transform:none!important}
.modal.is-fullscreen{padding:0!important}
.modal.is-fullscreen .modal-dialog>*{max-width:1280px;margin-left:auto;margin-right:auto}
.modal.is-fullscreen .analysis-modal-body,
.modal.is-fullscreen #modalContent,
.modal.is-fullscreen #officialFocusedContent,
.modal.is-fullscreen #contractRiskBody{max-height:calc(100vh - 108px);overflow:auto}
@media(max-width:560px){.fs-toggle{right:54px;width:32px;height:32px}}

/* "PROCUREMENT NOTICE" heading — 5% larger */
.focused-official-head h2,
.focused-official-title,
.detail-hero h2{font-size:1.05em!important}
.modal .section-kicker{font-size:1.05em!important}

/* ---------- V82: zoom + full-screen control cluster (blue theme) ---------- */
.card-tools{position:absolute;right:58px;top:15px;z-index:7;display:flex;align-items:center;gap:5px;
  background:#eef4fc;border:1px solid #cfe0f6;border-radius:999px;padding:3px 5px;
  box-shadow:0 6px 16px rgba(17,52,97,.08)}
.ct-btn{width:27px;height:27px;border:0;border-radius:50%;background:transparent;color:#1769d2;
  cursor:pointer;display:grid;place-items:center;font-size:11px;padding:0;
  transition:background .15s ease,color .15s ease}
.ct-btn:hover{background:#1769d2;color:#fff}
.ct-btn.zoom-level{width:auto;min-width:42px;border-radius:999px;font-size:9.5px;font-weight:800;
  background:#fff;border:1px solid #d5e3f5}
.ct-btn.zoom-level:hover{background:#1769d2;color:#fff;border-color:#1769d2}
.card-tools.is-zoomed .zoom-level{background:#1769d2;color:#fff;border-color:#1769d2}
.ct-btn.fs-toggle{background:#fff;border:1px solid #d5e3f5}
.dark .card-tools{background:#12325c;border-color:#22406a}
.dark .ct-btn{color:#8cc3ff}
.dark .ct-btn.zoom-level,.dark .ct-btn.fs-toggle{background:#0f2748;border-color:#22406a;color:#8cc3ff}
@media(max-width:760px){
  .card-tools{right:52px;top:12px;gap:3px;padding:2px 4px}
  .ct-btn{width:24px;height:24px;font-size:10px}
  .ct-btn.zoom-level{min-width:38px;font-size:9px}
}
/* zoomed content keeps comfortable rhythm */
.modal [style*="font-size"] .boq-comp-card li,
.modal [style*="font-size"] .boq-fti-card li{line-height:1.6}
