/* Page layout: top bar, the three columns (reports | results | lower-carbon and pricing), cards, popup, debug.
   Colours come from the variables at the top of css/base.css. */

/* ---------- navigation bar (stays at the top while scrolling) ---------- */
.topbar{position:sticky;top:0;z-index:40;background:#1a0d0d;color:#f3e7e4;border-bottom:1px solid #3a1d1d;box-shadow:0 2px 8px rgba(0,0,0,.25)}
.topwrap{max-width:1640px;margin:0 auto;padding:8px 16px 4px;display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}
.topbar .brand{font-weight:800;letter-spacing:.2px;font-size:16px;margin-right:4px;white-space:nowrap}
body:not(.has-results) .topbar .brand{display:none}
.topbar .openbtn{min-height:38px;padding:8px 14px;display:inline-flex;align-items:center;white-space:nowrap}
.topbar .linkrow{flex:1 1 280px;margin:0;gap:6px;flex-wrap:nowrap}
.topbar .linkrow input{min-height:38px;background:#2a1515;color:#fff;border:1px solid #5a2c2c}
.topbar .linkrow input::placeholder{color:#c9aaa4}
.topbar .linkrow button{min-height:38px;padding:6px 14px}
.topbar .tb{display:flex;align-items:center;gap:6px;margin:0;font-size:14px;white-space:nowrap}
.topbar select{min-height:38px;background:#2a1515;color:#fff;border:1px solid #5a2c2c;border-radius:8px;padding:6px 10px;max-width:220px}
.topbar .muted{color:#cdb3ad}
.topbar .tblink{color:#f0c9c4}
.navstatus{max-width:1640px;margin:0 auto;padding:0 16px 6px}
.navstatus .progress{height:3px;margin:2px 0 4px;background:rgba(255,255,255,.08)}
.statusrow{display:flex;flex-wrap:wrap;gap:4px 16px;min-height:18px}
.statusrow #status{color:#f3e7e4}
.statusrow span:empty{display:none}
.topbar .setpick{margin:4px 0 0}
.topbar .setpick button{min-height:32px;padding:4px 12px;font-size:13px;background:transparent;color:#f3e7e4;border:1px solid #6d3a3a}
.topbar .setpick button.on{background:var(--accent);border-color:var(--accent)}
body.has-results header{display:none}
.emptystate{text-align:center;border:2px dashed var(--line);padding:46px 24px}
.emptystate p{max-width:720px;margin:8px auto 0;color:var(--muted)}
body.has-results .emptystate{display:none}
body.dragging::after{content:"Drop the drawings to read them";position:fixed;inset:12px;border:3px dashed var(--accent);border-radius:16px;background:rgba(20,10,10,.55);color:#fff;font:600 22px system-ui,sans-serif;display:flex;align-items:center;justify-content:center;z-index:60;pointer-events:none}

/* ---------- three columns (they scroll with the page; nothing else moves) ---------- */
.app{max-width:1180px;margin:0 auto;padding:0 16px}
.app > main{max-width:none;margin:0;padding:14px 0 60px;min-width:0}
body:not(.has-results) .sidebar{display:none}
body.has-results .app{max-width:1640px;display:grid;grid-template-columns:230px minmax(0,1fr) 330px;gap:16px;align-items:start}
.sidebar{padding:14px 0 40px}
.sidebar section{margin:0 0 12px;padding:14px}
.sidebar h2{font-size:16px}
.sbox{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px;margin:0 0 12px}
.sbox h3{margin:0 0 8px}
.sbox select{width:100%;max-width:none;margin:4px 0 8px}
.sbtns{display:flex;flex-wrap:wrap;gap:6px}
.sbtns.col{flex-direction:column}
.sbtns.col > *{width:100%;text-align:left;min-height:38px;padding:8px 12px}
.lbtn{background:transparent!important;color:var(--ink)!important;border:1px solid var(--line);display:inline-flex;align-items:center}
.snav{list-style:none;margin:0;padding:0}
.snav li a{display:block;padding:5px 8px;border-radius:6px;color:var(--ink);text-decoration:none;font-size:14px}
.snav li a:hover{background:rgba(127,127,127,.12)}
.small-btn{min-height:32px;padding:4px 10px;font-size:12px}
section{scroll-margin-top:110px;margin:12px 0;padding:16px}
main > section:first-of-type{margin-top:0}

@media (max-width:1280px){
  body.has-results .app{grid-template-columns:minmax(0,1fr) 320px}
  body.has-results #leftbar{grid-column:1 / -1;padding:12px 0 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
  body.has-results #leftbar .sbox{margin:0}
  body.has-results #leftbar .sbtns.col{flex-direction:row}
  body.has-results #leftbar .sbtns.col > *{width:auto}
  body.has-results #leftbar nav{display:none}
}
@media (max-width:900px){
  body.has-results .app{display:flex;flex-direction:column;align-items:stretch}
  body.has-results #mainCol{order:1} body.has-results #rightbar{order:2} body.has-results #leftbar{order:3}
  .sidebar{padding:8px 0}
  body.has-results #leftbar{display:block}
  .topbar .brand{display:none}
  .topbar{position:static}
  .topbar .tb span{display:none}
  .topbar select{max-width:150px}
}

/* ---------- top row: carbon label + issues ---------- */
.toprow{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}
.toprow > section{margin:0}
.toprow{margin:12px 0}
.toprow .clabel{max-width:none}
#gapList .flag.more{display:none}
#gapList.showall .flag.more{display:block}
.morebtn{margin-top:6px}
@media (max-width:1100px){ .toprow{grid-template-columns:1fr} }

/* ---------- lower the carbon (middle) ---------- */
.improvegrid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:18px}
.improvegrid h3{margin-top:0}
@media (max-width:1100px){ .improvegrid{grid-template-columns:1fr} }
.subgrid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
.chg{display:flex;gap:8px;align-items:flex-start;justify-content:space-between;border-bottom:1px solid var(--line);padding:6px 0;font-size:14px}
.chg .d{white-space:nowrap;font-weight:700}
.chg .d.down{color:var(--good)} .chg .d.up{color:var(--bad)}
.ba{margin:10px 0}
.ba .row{display:grid;grid-template-columns:90px 1fr 70px;gap:8px;align-items:center;font-size:13px;margin:4px 0}
.ba .track{background:rgba(127,127,127,.15);border-radius:4px;height:14px;overflow:hidden;position:relative}
.ba .fill{height:100%;background:var(--accent);-webkit-print-color-adjust:exact;print-color-adjust:exact}
.ba .fill.now{background:var(--good)}
.ba .mark{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink)}
.projgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px 14px}
.projgrid label{display:flex;flex-direction:column;font-size:12px;color:var(--muted);gap:2px}
.projgrid input{font:inherit;font-size:14px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:6px 8px}
.projgrid input.found{border-color:var(--m)}
.projgrid .derived{font-size:14px;color:var(--ink);padding:6px 0}

/* ---------- right sidebar cards ---------- */
.cards{display:grid;gap:8px}
.card{border:1px solid var(--line);border-radius:8px;padding:10px;background:var(--panel)}
.chead{display:flex;gap:8px;align-items:baseline;margin-bottom:2px}
.rank{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;border-radius:11px;background:var(--accent);color:var(--accent-ink);font-size:12px;font-weight:700;flex:none}
.cnums{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px;margin:6px 0}
.card .small-btn{margin-top:4px}
.pcard .prow{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;justify-content:space-between;margin-top:4px}
.pcard input[type=number]{width:84px}
#costKpis{grid-template-columns:1fr}
.sug{display:block;border-left:4px solid var(--line);padding:6px 10px;margin:6px 0;font-size:14px}
.sug.ok{border-color:var(--good);background:rgba(95,191,127,.08)}
.sug.bad{border-color:var(--bad);background:rgba(239,107,107,.08)}
.sug .small-btn{display:block;margin-top:4px}
.sug.ranked{display:flex;gap:8px;align-items:flex-start}
.srow{border-top:1px solid var(--line);padding:8px 0}
.srow:first-child{border-top:0}
.shead{display:flex;justify-content:space-between;gap:8px}
.sctl{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:4px 0;font-size:13px}
.sctl select{flex:1 1 160px;max-width:none}
.sctl input[type=number]{width:76px}
.srow label select{margin-left:4px}
.warnline{color:var(--warn);margin-top:4px}
.print-only{display:none}

/* ---------- import review popup ---------- */
.pop{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:4vh 16px;overflow-y:auto}
.pop.hidden{display:none}
.popbox{background:var(--panel);color:var(--ink);border-radius:12px;max-width:720px;width:100%;padding:20px;box-shadow:0 10px 40px rgba(0,0,0,.4)}
.popissues{}
.popfields{display:grid;gap:6px;margin:6px 0 12px}
.pf{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;font-size:14px;border-bottom:1px solid var(--line);padding:4px 0}
.pfin{white-space:nowrap}
.popbtns{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:14px;position:sticky;bottom:-20px;background:var(--panel);padding:10px 0}
body.popopen{overflow:hidden}
@media (max-width:600px){ .pf{grid-template-columns:1fr auto} .pf .lab{display:none} }

/* ---------- debug panel ---------- */
.debug{max-width:1640px;margin:0 auto 20px;border:2px dashed var(--i);border-radius:10px;background:var(--panel);padding:16px}
.dbtns{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.dtabs{display:flex;flex-wrap:wrap;gap:4px;margin:10px 0}
.dtabs button{min-height:34px;padding:4px 12px;background:transparent;color:var(--ink);border:1px solid var(--line)}
.dtabs button.on{background:var(--i);color:#fff;border-color:var(--i)}
.dlog{max-height:420px;overflow:auto;font-size:12px;background:rgba(127,127,127,.08);padding:10px;border-radius:8px;white-space:pre-wrap}
.dlog .bad{color:var(--bad)} .dlog .time{color:var(--i)}
.dtable{max-height:520px;overflow:auto}
.dtable textarea{width:100%;min-width:320px;font:12px/1.4 ui-monospace,monospace}
.dtable pre{font-size:11px;white-space:pre-wrap;max-width:600px}

/* ---------- print: one column in report order, sidebars' tables included ---------- */
@media print{
  .topbar,.sidebar.left,.pop,.debug,.screen-only,.emptystate,#suggest{display:none!important}
  .print-only{display:block}
  .app,body.has-results .app{display:flex!important;flex-direction:column;max-width:none;padding:0}
  .app > main,.sidebar.right,.toprow{display:contents!important}
  #printHead{order:0} #project{order:1} #summary{order:2} #results{order:3} #improve{order:4} #subs{order:5} #cost{order:6} #rules{order:7} #options{order:8}
  #labelSec{order:9} #gaps{order:10} #boq{order:11} #fdn{order:12} #geo{order:13} #sheets{order:14} #method{order:15}
  .improvegrid{display:block}
  #gapList .flag.more{display:block}
  .morebtn,.chg button{display:none!important}
  .projgrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 12px}
  .projgrid input{border:0;padding:0;font-size:11px}
  .projgrid .derived{font-size:11px;padding:0}
  .projgrid label:has(input:placeholder-shown){display:none}
  body.labelOnly main > #topRow{display:contents!important}
  body.labelOnly #gaps,body.labelOnly .sidebar.right{display:none!important}
}
#drop.hover{border-color:var(--accent)}
.rulelist{margin:6px 0 0 18px;padding:0}
#costCards{display:block}
.prow2{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line);font-size:12px}
.prow2 .pn{line-height:1.3}
.prow2 .pp{display:flex;align-items:center;gap:3px;white-space:nowrap}
.prow2 input[type=number]{width:72px;padding:4px}
.sidebar .kpi{padding:10px}
.sidebar .kpi .v{font-size:20px}
