[hidden]{display:none!important}
html,body{margin:0}
img{max-width:100%}
:root{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
/* Layout: brand bar · pipeline rail | opportunity sheet (grouped rows, inline cells) · detail drawer on the right */
:root{
  --bg:#ffffff; --bg-sub:#f6f8fb; --wash:#e8eef3; --fg:#142636; --fg-2:#3d5366; --muted:#5b6b7a;
  --line:#d8e2ea; --line-2:#eef2f6; --hover:#f3f7fa; --sel:#e3edf6;
  --navy:#004779; --navy-ink:#003359; --btn:#004779; --btn-hover:#003a63; --on-btn:#ffffff;
  --teal:#00acb8; --teal-ink:#00737c;
  --late:#b91c1c; --ok:#166534; --ok-bg:#e7f6ec; --bad-bg:#fdecec;
  --s-lead-bg:#eef2f6; --s-lead:#3d5366; --s-qual-bg:#e0f4f6; --s-qual:#00616a; --s-prop-bg:#e3edf6; --s-prop:#004779;
  --s-neg-bg:#fdf1df; --s-neg:#8a4b00; --s-won-bg:#e7f6ec; --s-won:#166534; --s-lost-bg:#fdecec; --s-lost:#b91c1c;
  --p-ES:#004779; --p-EN:#00a2ad; --p-VC:#6b4c9a; --p-ER:#b7791f; --p-TI:#3d5366;
  --shadow:0 8px 40px rgba(0,51,89,.18); --bar-total:#b9cfe0;
  --f-display:"Bebas Neue", "Oswald", Impact, sans-serif;
  --f-body:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --f-mono:"Space Mono", ui-monospace, Menlo, monospace;
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --bg:#0e1822; --bg-sub:#132230; --wash:#1a2c3c; --fg:#e6eef5; --fg-2:#b6c6d4; --muted:#8fa2b3;
  --line:#253a4c; --line-2:#1b2d3d; --hover:#16283a; --sel:#1c3550;
  --navy:#4a90c8; --navy-ink:#cfe3f3; --btn:#1d6aa6; --btn-hover:#2479bd; --on-btn:#ffffff;
  --teal:#22c3cf; --teal-ink:#5fd4dc;
  --late:#f2837a; --ok:#7ed9a0; --ok-bg:#163526; --bad-bg:#3a1c1c;
  --s-lead-bg:#223445; --s-lead:#c3d1dd; --s-qual-bg:#11393d; --s-qual:#6fdde4; --s-prop-bg:#173452; --s-prop:#9cc8ee;
  --s-neg-bg:#3b2a12; --s-neg:#f3c27e; --s-won-bg:#163526; --s-won:#7ed9a0; --s-lost-bg:#3a1c1c; --s-lost:#f2a39b;
  --p-ES:#4a90c8; --p-EN:#22c3cf; --p-VC:#a58ad0; --p-ER:#e0a650; --p-TI:#8fa2b3;
  --shadow:0 8px 40px rgba(0,0,0,.5); --bar-total:#2c4b66; color-scheme:dark;
}}
:root[data-theme="dark"]{
  --bg:#0e1822; --bg-sub:#132230; --wash:#1a2c3c; --fg:#e6eef5; --fg-2:#b6c6d4; --muted:#8fa2b3;
  --line:#253a4c; --line-2:#1b2d3d; --hover:#16283a; --sel:#1c3550;
  --navy:#4a90c8; --navy-ink:#cfe3f3; --btn:#1d6aa6; --btn-hover:#2479bd; --on-btn:#ffffff;
  --teal:#22c3cf; --teal-ink:#5fd4dc;
  --late:#f2837a; --ok:#7ed9a0; --ok-bg:#163526; --bad-bg:#3a1c1c;
  --s-lead-bg:#223445; --s-lead:#c3d1dd; --s-qual-bg:#11393d; --s-qual:#6fdde4; --s-prop-bg:#173452; --s-prop:#9cc8ee;
  --s-neg-bg:#3b2a12; --s-neg:#f3c27e; --s-won-bg:#163526; --s-won:#7ed9a0; --s-lost-bg:#3a1c1c; --s-lost:#f2a39b;
  --p-ES:#4a90c8; --p-EN:#22c3cf; --p-VC:#a58ad0; --p-ER:#e0a650; --p-TI:#8fa2b3;
  --shadow:0 8px 40px rgba(0,0,0,.5); --bar-total:#2c4b66; color-scheme:dark;
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--fg);font:14px/1.45 var(--f-body)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
.app{min-height:100vh;display:flex;flex-direction:column;border-top:2.5px solid var(--navy)}
.top{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;padding-block:8px;padding-inline:16px;border-bottom:1px solid var(--line);position:sticky;top:env(safe-area-inset-top,0px);background:var(--bg);z-index:20}
.brand{font:400 26px/1 var(--f-display);letter-spacing:2px;color:var(--navy)}
.brand span{color:var(--teal)}
.search{flex:1 1 220px;max-width:520px;display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:6px;padding-inline:10px;height:36px;color:var(--muted);background:var(--bg)}
.search input{border:0;outline:0;background:transparent;flex:1;min-width:0;color:var(--fg)}
.grow{flex:1 1 0}
.btn{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:0 12px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--fg);font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .15s ease-out}
.btn:hover{background:var(--hover)}
.btn.primary{background:var(--btn);border-color:var(--btn);color:var(--on-btn);font-weight:600}
.btn.primary:hover{background:var(--btn-hover)}
.btn.danger{color:var(--late)}
.btn.danger.armed{background:var(--late);border-color:var(--late);color:#fff}
.btn.ghost{border-color:transparent;background:transparent}
.btn.ghost:hover{background:var(--hover)}
.btn.sm{min-height:28px;padding:0 9px;font-size:12px}
.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:0;border-radius:6px;background:transparent;color:var(--muted);cursor:pointer}
.iconbtn:hover{background:var(--hover);color:var(--fg)}
svg.i{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.shell{display:flex;flex-wrap:wrap;flex:1 1 auto;align-items:stretch;min-width:0}
.side{flex:1 1 220px;max-width:248px;padding-block:14px;padding-inline:10px;border-right:1px solid var(--line);background:var(--bg-sub);display:flex;flex-direction:column;gap:2px}
.side h3{margin:0;padding:14px 10px 6px;font-size:11px;font-weight:600;letter-spacing:.8px;text-transform:uppercase;color:var(--muted)}
.side h3:first-child{padding-top:2px}
.nav{display:flex;align-items:center;gap:10px;width:100%;padding:7px 10px;border:0;border-radius:6px;background:transparent;text-align:left;font-size:13.5px;cursor:pointer;color:var(--fg)}
.nav:hover{background:var(--hover)}
.nav.on{background:var(--sel);font-weight:600;color:var(--navy-ink)}
.nav .n{margin-left:auto;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;font-weight:500}
.nav .n.late{color:var(--late);font-weight:600}
.pbar{width:4px;height:15px;border-radius:2px;flex:none;background:var(--muted)}
.main{flex:999 1 560px;min-width:0;display:flex;flex-direction:column}
.head{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 16px;padding:16px 20px 0}
.eyebrow{font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--teal-ink)}
h1{margin:2px 0 0;font:400 34px/1.05 var(--f-display);letter-spacing:1.5px;color:var(--navy-ink);text-wrap:balance}
.sync{font-size:12px;color:var(--muted)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;padding:14px 20px 4px}
.kpi{border:1px solid var(--line);border-radius:6px;padding:10px 14px}
.kpi.strong{border:1.5px solid var(--navy)}
.kpi b{display:block;font:400 28px/1.1 var(--f-display);letter-spacing:1px;color:var(--navy-ink);font-variant-numeric:tabular-nums}
.kpi.teal b{color:var(--teal-ink)}
.kpi.alert b{color:var(--late)}
.kpi span{font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}
.tabs{display:flex;flex-wrap:wrap;gap:4px 22px;padding:10px 20px 0;border-bottom:1px solid var(--line)}
.tab{padding:9px 2px;border:0;border-bottom:2px solid transparent;background:transparent;font-size:13.5px;color:var(--fg-2);cursor:pointer}
.tab.on{color:var(--navy-ink);font-weight:600;border-bottom-color:var(--teal)}
.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 20px}
.toolbar label{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.toolbar select{height:30px;border:1px solid var(--line);border-radius:6px;background:var(--bg);padding:0 8px;font-size:12.5px}
.sheetwrap{overflow-x:auto;border-top:1px solid var(--line)}
table.sheet{border-collapse:collapse;table-layout:fixed;font-size:13px}
.sheet th{position:sticky;top:0;z-index:2;background:var(--wash);color:var(--fg-2);font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;text-align:left;padding:0 8px;height:34px;border-bottom:1px solid var(--line);border-right:1px solid var(--line-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sheet th.r,.sheet td.r{text-align:right}
.sheet td{height:36px;padding:0;border-bottom:1px solid var(--line);border-right:1px solid var(--line-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.sheet tr.row:hover td{background:var(--hover)}
.sheet tr.row.opened td{background:var(--sel)}
.sheet td.t{padding:0 8px}
.ci{width:100%;height:35px;border:0;outline:0;background:transparent;padding:0 8px;font-size:13px;color:var(--fg);border-radius:0}
.ci:focus{box-shadow:inset 0 0 0 2px var(--teal);background:var(--bg)}
.ci.num{text-align:right;font-variant-numeric:tabular-nums}
.ci.name{font-weight:600;color:var(--navy-ink)}
select.ci{cursor:pointer;appearance:none;-webkit-appearance:none}
input[type=date].ci,input[type=month].ci{font-size:12.5px}
.ci.late{color:var(--late);font-weight:600}
.ref{font:11.5px var(--f-mono);color:var(--muted)}
.grp td{background:var(--bg-sub);height:40px;font-weight:600}
.grp .gname,.mgrp .gname{display:flex;align-items:center;gap:10px;padding:0 6px;cursor:pointer;border:0;background:transparent;width:100%;height:39px;text-align:left;color:var(--navy-ink);font-size:14px;font-weight:600}
.grp .gname small,.mgrp .gname small{font-weight:500;color:var(--muted);font-size:12px}
.grp .tot{font-variant-numeric:tabular-nums;color:var(--navy-ink)}
.grp .tot.w{color:var(--teal-ink)}
.chev{transition:transform .15s ease-out}
.collapsed .chev{transform:rotate(-90deg)}
.addrow td{height:32px}
.addlink{border:0;background:transparent;color:var(--teal-ink);font-size:12.5px;font-weight:500;cursor:pointer;padding:0 10px;height:31px}
.addlink:hover{text-decoration:underline}
.sub td{background:var(--bg-sub);height:34px;font-size:12.5px}
.subname{display:flex;align-items:center;gap:8px;padding-left:30px}
.subname input[type=text]{flex:1;min-width:0}
.done .ci{text-decoration:line-through;color:var(--muted)}
.pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:600;line-height:18px;white-space:nowrap}
select.stage{height:24px;width:auto;margin-left:6px;padding:0 10px;border-radius:999px;font-size:11.5px;font-weight:600}
.st-Lead{background:var(--s-lead-bg);color:var(--s-lead)} .st-Qualified{background:var(--s-qual-bg);color:var(--s-qual)}
.st-Proposal{background:var(--s-prop-bg);color:var(--s-prop)} .st-Negotiation{background:var(--s-neg-bg);color:var(--s-neg)}
.st-Won{background:var(--s-won-bg);color:var(--s-won)} .st-Lost{background:var(--s-lost-bg);color:var(--s-lost)}
.who{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;cursor:pointer;padding:0 8px;height:34px;max-width:100%;color:var(--fg);font-size:12.5px}
.who:hover{background:var(--hover)}
.av{width:22px;height:22px;border-radius:50%;flex:none;object-fit:cover;background:var(--wash)}
.av.blank{display:inline-flex;align-items:center;justify-content:center;border:1.5px dashed var(--line);background:transparent;color:var(--muted)}
.cnt{display:inline-flex;align-items:center;gap:5px;border:0;background:transparent;cursor:pointer;color:var(--fg-2);padding:0 8px;height:34px;font-size:12.5px;font-variant-numeric:tabular-nums}
.cnt:hover{color:var(--navy-ink);background:var(--hover)}
.muted{color:var(--muted)}
.empty{padding:28px 20px;color:var(--muted);font-size:13.5px;line-height:1.6;max-width:62ch}
.empty b{color:var(--fg)}
/* board */
.board{display:flex;gap:12px;padding:12px 20px 24px;overflow-x:auto;align-items:flex-start}
.col{flex:0 0 260px;background:var(--bg-sub);border:1px solid var(--line);border-radius:8px;display:flex;flex-direction:column;max-height:none}
.col.drop{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal)}
.colh{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);font-size:12px;color:var(--muted)}
.colh .tot{margin-left:auto;font-variant-numeric:tabular-nums}
.cards{display:flex;flex-direction:column;gap:8px;padding:10px;min-height:60px}
.card{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:10px 12px;cursor:grab;text-align:left;width:100%;display:flex;flex-direction:column;gap:6px;color:var(--fg)}
.card:hover{border-color:var(--navy)}
.card .cn{font-weight:600;color:var(--navy-ink);font-size:13px;white-space:normal}
.card .cm{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}
.card .cv{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--fg);font-weight:600}
/* drawer */
.scrim{position:fixed;inset:0;background:rgba(0,30,50,.18);z-index:40}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(680px,100%);background:var(--bg);box-shadow:var(--shadow);z-index:41;display:flex;flex-direction:column;border-left:1px solid var(--line);padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
.dh{padding:14px 20px 0;display:flex;flex-direction:column;gap:8px;border-bottom:1px solid var(--line)}
.dact{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.dtitle{border:0;outline:0;background:transparent;font:700 21px/1.25 var(--f-body);color:var(--navy-ink);width:100%;padding:2px 0;border-radius:4px;resize:none;overflow:hidden;display:block}
.dtitle:focus{box-shadow:0 0 0 2px var(--teal)}
.dbody{flex:1;overflow-y:auto;padding:16px 20px 32px;display:flex;flex-direction:column;gap:22px}
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px 16px}
.fld{display:flex;flex-direction:column;gap:4px;min-width:0}
.fld>span{font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}
.fld input,.fld select,.fld textarea{height:34px;border:1px solid var(--line);border-radius:6px;background:var(--bg);padding:0 9px;font-size:13.5px;min-width:0;width:100%}
.fld textarea{height:auto;min-height:70px;padding:8px 9px;resize:vertical;line-height:1.5}
.fld .ro{height:34px;display:flex;align-items:center;font:400 22px/1 var(--f-display);letter-spacing:1px;color:var(--teal-ink)}
.box{border:1px solid var(--line);border-radius:8px;padding:14px;background:var(--bg-sub);display:flex;flex-direction:column;gap:10px}
.box .eyebrow{color:var(--teal-ink)}
.sec{display:flex;align-items:center;gap:10px}
.sec h2{margin:0;font:400 20px/1 var(--f-display);letter-spacing:1.5px;color:var(--navy-ink)}
.prog{flex:1;height:5px;border-radius:3px;background:var(--wash);overflow:hidden}
.prog i{display:block;height:100%;background:var(--navy)}
.slist{display:flex;flex-direction:column}
.srow{display:grid;grid-template-columns:22px minmax(0,1fr) auto 128px 30px;align-items:center;gap:8px;border-bottom:1px solid var(--line-2);min-height:38px}
.srow input[type=text],.srow input[type=date]{border:0;background:transparent;height:34px;padding:0 6px;outline:0;min-width:0;width:100%;border-radius:4px}
.srow input:focus{box-shadow:inset 0 0 0 2px var(--teal)}
.srow.done input[type=text]{text-decoration:line-through;color:var(--muted)}
.addsub{display:flex;gap:8px}
.addsub input{flex:1;min-width:0;height:34px;border:1px dashed var(--line);border-radius:6px;padding:0 10px;background:var(--bg)}
.files{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.file{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:6px;padding:8px 10px;min-width:0;background:var(--bg)}
.file a{color:var(--navy-ink);font-weight:500;text-decoration:none;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.file a:hover{text-decoration:underline}
.file small{display:block;color:var(--muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ext{width:36px;height:36px;border-radius:5px;flex:none;display:flex;align-items:center;justify-content:center;font:700 10px var(--f-mono);color:#fff;background:var(--p-TI)}
.ext.pdf{background:#b42318}.ext.img{background:#0f7a55}.ext.link{background:var(--btn)}.ext.vid{background:#6b4c9a}.ext.txt{background:#5b6b7a}
.drop{border:1.5px dashed var(--line);border-radius:8px;padding:14px;text-align:center;font-size:12.5px;color:var(--muted)}
.drop.over{border-color:var(--teal);background:var(--sel);color:var(--fg)}
.linkform{display:flex;flex-wrap:wrap;gap:8px}
.linkform input{flex:1 1 180px;min-width:0;height:32px;border:1px solid var(--line);border-radius:6px;padding:0 9px;background:var(--bg)}
.cmts{display:flex;flex-direction:column;gap:12px}
.cmt{display:flex;gap:10px;font-size:13px;line-height:1.5}
.cmt .who2{font-weight:600}
.cmt p{margin:2px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}
/* popover + toast */
.pop{position:fixed;z-index:60;width:260px;max-height:calc(100vh - 16px);overflow-y:auto;background:var(--bg);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:8px;display:flex;flex-direction:column;gap:6px}
.pop input{height:32px;border:1px solid var(--line);border-radius:6px;padding:0 9px;background:var(--bg)}
.pop .opt{display:flex;align-items:center;gap:8px;padding:6px 8px;border:0;border-radius:6px;background:transparent;cursor:pointer;text-align:left;font-size:13px;color:var(--fg)}
.pop .opt:hover,.pop .opt:focus-visible{background:var(--hover)}
.toast{pointer-events:none;position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--fg);color:var(--bg);padding:9px 16px;border-radius:6px;font-size:13px;z-index:70;max-width:calc(100% - 32px)}
.taskt td{height:38px}
@media (max-width:640px){
  .side{max-width:none;flex-basis:100%;border-right:0;border-bottom:1px solid var(--line);flex-direction:row;flex-wrap:wrap;gap:4px}
  .side h3{width:100%;padding:6px 6px 2px}
  .nav{width:auto}
  .head,.kpis,.toolbar{padding-inline:16px}
  .tabs{padding-inline:16px}
  .srow{grid-template-columns:22px minmax(0,1fr) auto 30px}
  .srow input[type=date]{grid-column:2 / span 2}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

.ext.doc{background:#1d5fa8}.ext.xls{background:#0f7a55}.ext.ppt{background:#b5501c}.ext.cad{background:#3d5366}.ext.mail{background:#6b4c9a}

/* ---------- access ---------- */
.acc{display:inline-flex;align-items:center;margin-left:6px;color:var(--muted);vertical-align:-2px}
.acc svg{width:13px;height:13px}
.acc-confidential{color:var(--late)}
.banner{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:8px;background:var(--sel);color:var(--fg);font-size:13px;line-height:1.5}
.banner svg{margin-top:2px;color:var(--navy-ink)}
.banner.wide{grid-column:1/-1}
.chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:3px 8px 3px 4px;font-size:12.5px;background:var(--bg);color:var(--fg)}
.chip-r{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--teal-ink)}
.chip-x{border:0;background:transparent;color:var(--muted);cursor:pointer;display:inline-flex;padding:3px;border-radius:50%;margin-right:-4px}
.chip-x:hover{background:var(--hover);color:var(--fg)}
.chip-x svg{width:12px;height:12px}
.rotext{min-height:34px;display:flex;align-items:center;gap:6px;font-size:13.5px;color:var(--fg)}
.toggle{display:flex;align-items:center;gap:8px;font-size:13.5px;cursor:pointer}
.ci:disabled,.fld input:disabled,.fld select:disabled,.fld textarea:disabled,.srow input:disabled,.dtitle:disabled{opacity:1;color:var(--fg);-webkit-text-fill-color:var(--fg);background:transparent;cursor:default}
.fld input:disabled,.fld select:disabled,.fld textarea:disabled{border-color:var(--line-2)}
.who:disabled{cursor:default;background:transparent}
.btn:disabled,.iconbtn:disabled,.addlink:disabled{opacity:.5;cursor:default}
tr.redacted td{color:var(--fg-2)}

/* ---------- reports & team ---------- */
.panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr));gap:14px;padding:12px 20px 28px;align-items:start}
.panel{border:1px solid var(--line);border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:12px;min-width:0;background:var(--bg)}
.panel.wide{grid-column:1/-1}
.panel h2{margin:0;font:400 20px/1 var(--f-display);letter-spacing:1.5px;color:var(--navy-ink)}
.panel .sub{font-size:12.5px;color:var(--muted);margin-top:-4px;line-height:1.45}
.lg{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--muted)}
.lg i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}
.lg .lv{background:var(--bar-total)} .lg .lw{background:var(--navy)}
.brow{display:grid;grid-template-columns:118px minmax(0,1fr) 130px;align-items:center;gap:10px;font-size:12.5px;min-height:24px}
.brow .bl{color:var(--fg-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brow .bl.late{color:var(--late);font-weight:600}
.brow .bn{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.bar{position:relative;height:14px}
.bar i{position:absolute;left:0;top:0;bottom:0;border-radius:0 4px 4px 0}
.bar .bv{background:var(--bar-total)}
.bar .bw{background:var(--navy);top:3px;bottom:3px}
.rtw{overflow-x:auto;margin:0 -4px}
.rt{width:100%;border-collapse:collapse;font-size:13px}
.rt th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.rt td{padding:8px;border-bottom:1px solid var(--line-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.rt .r{text-align:right}
.rt .late{color:var(--late);font-weight:600}
.rt select{height:30px;border:1px solid var(--line);border-radius:6px;background:var(--bg);padding:0 6px;font-size:12.5px}
.rt input[type=checkbox]{width:18px;height:18px}
.att{display:flex;flex-direction:column}
.attrow{display:flex;flex-direction:column;gap:4px;text-align:left;border:0;border-bottom:1px solid var(--line-2);background:transparent;padding:10px 4px;cursor:pointer;color:var(--fg);width:100%}
.attrow:hover{background:var(--hover)}
.attn{color:var(--navy-ink);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.iss{font-size:12px;color:var(--late);line-height:1.45}
.explain{margin:0;padding-left:18px;font-size:13px;line-height:1.6;color:var(--fg-2)}
.explain b{color:var(--fg)}

/* ---------- phone layout ---------- */
.tab .ti{display:none}
.mlist{display:flex;flex-direction:column;padding-bottom:12px}
.mgrp{background:var(--bg-sub);border-bottom:1px solid var(--line);border-top:1px solid var(--line)}
.mgrp .gname{padding:0 12px}
.mgtot{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--navy-ink);font-size:13px}
.mcard{display:flex;flex-direction:column;gap:5px;text-align:left;width:100%;background:var(--bg);border:0;border-bottom:1px solid var(--line);padding:12px 16px;cursor:pointer;color:var(--fg);font:inherit}
.mcard:active,.mtbody:active{background:var(--hover)}
.mrow{display:flex;align-items:center;gap:8px;font-size:13px;min-width:0;flex-wrap:wrap}
.mrow.late{color:var(--late);font-weight:600}
.mname{font-weight:600;color:var(--navy-ink);font-size:15px;line-height:1.3}
.mval{margin-left:auto;font-weight:700;font-variant-numeric:tabular-nums;color:var(--navy-ink)}
.mstat{display:inline-flex;align-items:center;gap:4px}
.mstat:first-of-type{margin-left:auto}
.mstat svg{width:14px;height:14px}
.mtask{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line)}
.mtask input{width:22px;height:22px;margin-top:2px;flex:none}
.mtbody{display:flex;flex-direction:column;gap:4px;text-align:left;border:0;background:transparent;padding:0;cursor:pointer;color:var(--fg);min-width:0;flex:1;font:inherit}
@media (max-width:760px){
  .top{gap:8px;padding-inline:12px}
  .brand{font-size:22px}
  .search{order:5;flex-basis:100%;max-width:none;height:40px}
  #sync,#signOut{display:none}
  #newOpp{width:40px;height:40px;padding:0;justify-content:center}
  #newOpp .lbl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .shell{align-content:flex-start}
  .side{flex:0 0 100%;max-width:none;flex-direction:row;flex-wrap:nowrap;align-items:center;overflow-x:auto;padding:8px 12px;border-right:0;border-bottom:1px solid var(--line);gap:6px;scrollbar-width:none}
  .side h3,.side [data-act=goTasks]{display:none}
  .nav{width:auto;white-space:nowrap;flex:none;border:1px solid var(--line);border-radius:999px;padding:7px 12px;min-height:36px}
  .nav .n{margin-left:4px}
  .head{padding:12px 16px 0}
  h1{font-size:28px}
  .kpis{grid-template-columns:1fr 1fr;padding:10px 16px 4px;gap:8px}
  .kpi{padding:8px 10px}
  .kpi b{font-size:22px}
  .kpi span{font-size:10px}
  .tabs{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--bg);border-top:1px solid var(--line);border-bottom:0;padding:2px 2px calc(2px + env(safe-area-inset-bottom,0px));justify-content:space-around;gap:0;flex-wrap:nowrap}
  .tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10.5px;padding:6px 0;border-bottom:0;border-top:2px solid transparent;min-height:52px;min-width:0}
  .tab.on{border-top-color:var(--teal);border-bottom:0}
  .tab .ti{display:block}
  .tab .ti svg{width:20px;height:20px}
  .main{padding-bottom:calc(68px + env(safe-area-inset-bottom,0px))}
  .toolbar{padding:8px 16px}
  .toolbar #exportBtn{display:none}
  .board{scroll-snap-type:x mandatory;padding:12px 16px}
  .col{flex-basis:84vw;scroll-snap-align:start}
  .drawer .fgrid{grid-template-columns:1fr 1fr;gap:10px 12px}
  .dh{padding:12px 16px 0}
  .dbody{padding:14px 16px 28px}
  .dtitle{font-size:19px}
  .panels{grid-template-columns:1fr;padding:12px 12px 24px}
  .brow{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:'l n' 'b b';row-gap:4px;font-size:12.5px;padding-bottom:4px}
  .brow .bl{grid-area:l}.brow .bn{grid-area:n}.brow .bar{grid-area:b}
  .drawer .dh{position:relative;padding-right:52px}
  .drawer .dh [data-act=close]{position:absolute;top:8px;right:8px;width:40px;height:40px}
  .srow{grid-template-columns:22px minmax(0,1fr) auto 30px}
  .srow input[type=date]{grid-column:2 / span 2}
  .fld input,.fld select{height:40px;font-size:16px}
  .fld textarea{font-size:16px}
}

/* ---------- sheet additions ---------- */
.grp td{padding:0}
.grow-row{display:flex;align-items:center;gap:16px;position:sticky;left:0;width:max-content;padding-right:16px}
.grow-row .gname{width:auto}
.gtot{font-size:13px;font-weight:600;color:var(--navy-ink);font-variant-numeric:tabular-nums}
.subflex{display:flex;align-items:center;gap:8px;padding-left:40px;max-width:920px;position:sticky;left:0}
.subflex input[type=text]{flex:1;min-width:0}
.ci.soon,.dlnote.soon,.t.soon{color:var(--s-neg);font-weight:600}
.t.late{color:var(--late);font-weight:600}
.dlnote{font-size:11.5px;color:var(--muted)}
.dlnote.late{color:var(--late);font-weight:600}
.dlbadge{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--s-lead-bg);color:var(--s-lead);white-space:nowrap}
.dlbadge.soon{background:var(--s-neg-bg);color:var(--s-neg)}
.dlbadge.late{background:var(--s-lost-bg);color:var(--s-lost)}
.latetext{color:var(--late)}
.linkbtn{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;padding:0;color:var(--navy-ink);font:inherit;font-size:13px;cursor:pointer;text-decoration:none;text-align:left}
.linkbtn:hover{text-decoration:underline}
.linkbtn.strong{font-weight:600}
.cinit{width:20px;height:20px;border-radius:50%;background:var(--wash);color:var(--navy-ink);font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex:none}
.chip.ck{cursor:pointer;padding:4px 10px 4px 6px}
.chip.ck input{margin:0}
.cotable{min-width:900px}
.cotable td{white-space:nowrap}

/* ---------- activity & history ---------- */
.actform{display:flex;flex-direction:column;gap:10px;border:1px solid var(--line);border-radius:8px;padding:12px;background:var(--bg-sub)}
.acts{display:flex;flex-direction:column}
.act{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line-2)}
.atype{flex:none;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--s-lead-bg);color:var(--s-lead);margin-top:1px;min-width:62px;text-align:center}
.at-Call{background:var(--s-qual-bg);color:var(--s-qual)} .at-Meeting{background:var(--s-prop-bg);color:var(--s-prop)}
.at-Email{background:var(--wash);color:var(--fg-2)} .at-Sitevisit{background:var(--s-neg-bg);color:var(--s-neg)}
.abody{flex:1;min-width:0}
.ameta{font-size:12px;color:var(--muted);display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.abody p{margin:4px 0 0;font-size:13.5px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}
.actdel{flex:none;opacity:.7}
.btn.armed{background:var(--late);border-color:var(--late);color:#fff;opacity:1}
.hlist{display:flex;flex-direction:column;font-size:12.5px}
.hrow{display:grid;grid-template-columns:118px 80px minmax(0,1fr);gap:10px;padding:6px 0;border-bottom:1px solid var(--line-2)}
.hwhen{color:var(--muted);font-variant-numeric:tabular-nums}
.hwho{font-weight:600}
.hwhat{overflow-wrap:anywhere}
.person{display:grid;grid-template-columns:1.2fr 1fr 1.3fr 1fr 30px auto;gap:6px;align-items:center}
.person input{height:34px;border:1px solid var(--line);border-radius:6px;background:var(--bg);padding:0 8px;font-size:13px;min-width:0;width:100%}
.person input:disabled{border-color:var(--line-2);background:transparent;color:var(--fg);-webkit-text-fill-color:var(--fg)}

/* ---------- modal ---------- */
.modalwrap{position:fixed;inset:0;z-index:80;background:rgba(0,30,50,.35);display:flex;align-items:flex-start;justify-content:center;padding:max(6vh,16px) 16px 16px;overflow-y:auto}
.modal{width:100%;max-width:640px;background:var(--bg);border-radius:10px;border-top:3px solid var(--navy);box-shadow:var(--shadow);padding:20px;display:flex;flex-direction:column;gap:14px}
.modal h2{margin:0;font:400 24px/1 var(--f-display);letter-spacing:1.5px;color:var(--navy-ink)}
.modal .fld textarea{min-height:80px}

@media (max-width:760px){
  .tab[data-k=files],.tab[data-k=settings],.tab[data-k=board]{display:none}
  .person{grid-template-columns:1fr 1fr;padding-bottom:10px;border-bottom:1px solid var(--line-2)}
  .hrow{grid-template-columns:1fr;gap:2px}
  .subflex{padding-left:8px}
}

/* ---------- fleet: bookings, calendar, cost model ---------- */
.bk{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600;line-height:18px;white-space:nowrap;border:1px solid transparent}
.bk-firm{background:var(--navy);color:#fff}
.bk-hold{background:var(--s-neg-bg);color:var(--s-neg);border-color:var(--s-neg)}
.bk-enquiry{background:var(--bg);color:var(--fg-2);border:1px dashed var(--muted)}
.bk-off{background:var(--wash);color:var(--fg-2);margin-right:6px}
.avail{font-size:10.5px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;padding:1px 6px;border-radius:4px;white-space:nowrap}
.avail.ok{background:var(--ok-bg);color:var(--ok)} .avail.warn{background:var(--s-neg-bg);color:var(--s-neg)} .avail.bad{background:var(--bad-bg);color:var(--late)}
.schedline{font-size:12.5px;color:var(--fg-2);line-height:1.6}
.clashes{font-size:12.5px;line-height:1.5;border-radius:6px;padding:8px 10px;display:flex;flex-direction:column;gap:2px}
.clashes.bad{background:var(--bad-bg);color:var(--late);font-weight:600}
.clashes.warn{background:var(--s-neg-bg);color:var(--s-neg)}
.msub{font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);margin-top:4px}
.costs{display:flex;flex-direction:column;gap:4px}
.crow{display:grid;grid-template-columns:minmax(0,1fr) 158px 104px 92px 30px;gap:6px;align-items:center}
.crow input,.crow select{height:32px;border:1px solid var(--line);border-radius:6px;background:var(--bg);padding:0 8px;min-width:0;font-size:13px}
.crow .r,.chead .r{text-align:right}
.chead{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.ctot{text-align:right;font-variant-numeric:tabular-nums;font-size:13px}
.msum{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin-top:4px}
.msum>div{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:8px 10px;display:flex;flex-direction:column;gap:2px;min-width:0}
.msum span{font-size:11px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:var(--muted)}
.msum b{font-size:15px;font-variant-numeric:tabular-nums;color:var(--navy-ink)}
.msum small{font-size:11.5px;color:var(--muted);line-height:1.35}
.msum .neg b{color:var(--late)} .msum .pos b{color:var(--ok)}
.offrow{display:grid;grid-template-columns:minmax(0,1fr) 150px 150px 30px;gap:6px;align-items:center}
.offrow input{height:32px;border:1px solid var(--line);border-radius:6px;background:var(--bg);padding:0 8px;min-width:0}
.segs{display:inline-flex;gap:4px}
.glegend{display:inline-flex;flex-wrap:wrap;gap:10px;font-size:11.5px;color:var(--muted)}
.glegend span{display:inline-flex;align-items:center;gap:5px}
.glegend i{display:inline-block;width:18px;height:10px;border-radius:3px}
.glegend i.g-mob{background:repeating-linear-gradient(135deg,var(--navy) 0 1.5px,transparent 1.5px 5px);opacity:.6;border:1px solid var(--line)}
.glegend i.g-off,.goff{background:repeating-linear-gradient(135deg,var(--line) 0 4px,var(--bg-sub) 4px 8px)}
.gwrap{overflow-x:auto;padding:0 20px 8px}
.gantt{border:1px solid var(--line);border-radius:8px;overflow:hidden}
.grow2{display:flex;border-bottom:1px solid var(--line-2)}
.grow2:last-child{border-bottom:0}
.gname{flex:0 0 240px;width:240px;padding:8px 12px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:2px;position:sticky;left:0;background:var(--bg);z-index:2;min-width:0}
.gname small{font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gname .linkbtn{text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.gu{display:block;height:4px;border-radius:2px;background:var(--wash);overflow:hidden;margin-top:3px}
.gu i{display:block;height:100%;background:var(--teal)}
.gtl{flex:1;position:relative;min-height:36px}
.ghead{background:var(--bg-sub);position:sticky;top:0}
.ghead .gname{background:var(--bg-sub);font-size:12px;font-weight:600;color:var(--fg-2)}
.gml{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding-left:6px;font-size:12px;font-weight:600;color:var(--fg-2);border-left:1px solid var(--line);white-space:nowrap;overflow:hidden}
.gm{position:absolute;top:0;bottom:0;border-left:1px solid var(--line-2)}
.gtoday{position:absolute;top:0;bottom:0;border-left:2px solid var(--teal);z-index:1}
.goff{position:absolute;top:0;bottom:0;display:flex;align-items:flex-end;overflow:hidden;opacity:.9}
.goff em{font-style:normal;font-size:10px;color:var(--muted);padding:0 4px 2px;white-space:nowrap}
.gbar{position:absolute;height:24px;display:flex;align-items:stretch;padding:0;border-radius:5px;font-size:11.5px;font-weight:600;cursor:pointer;overflow:hidden;z-index:1;min-width:4px;box-sizing:border-box}
.gbar>span{display:flex;align-items:center;padding:0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.gbar .g-mob{background:repeating-linear-gradient(135deg,currentColor 0 1.5px,transparent 1.5px 5px);opacity:.45}
.gbar.bk-enquiry{border-style:dashed}
.gbar.soft{box-shadow:0 0 0 2px var(--s-neg)}
.gbar.clash{box-shadow:0 0 0 2px var(--late)}
.gbar:hover{filter:brightness(1.08)}
.gbar[disabled]{cursor:default}
.fcard{display:flex;flex-direction:column;gap:4px;cursor:default}
@media (max-width:760px){
  .crow{grid-template-columns:minmax(0,1fr) 88px 72px;grid-template-areas:"l l x" "b a t";padding:8px 0;border-bottom:1px solid var(--line-2)}
  .crow input[data-cf=label]{grid-area:l} .crow select{grid-area:b} .crow input[data-cf=amount]{grid-area:a} .crow .ctot{grid-area:t} .crow .iconbtn{grid-area:x;justify-self:end}
  .chead{display:none}
  .offrow{grid-template-columns:1fr 1fr 30px}
  .offrow input:first-child{grid-column:1/-1}
}

/* ---------- settings and contacts ---------- */
.setwrap{display:flex;gap:16px;padding:12px 20px 28px;align-items:flex-start}
.setnav{flex:0 0 200px;display:flex;flex-direction:column;gap:2px;position:sticky;top:70px}
.setbody{flex:1;min-width:0;display:flex;flex-direction:column;gap:14px}
.minisel{height:30px;border:1px solid var(--line);border-radius:6px;background:var(--bg);padding:0 6px;font-size:12.5px}
.ptable td{vertical-align:middle}
.pcell{display:inline-flex;align-items:center;gap:8px}
.pcell>span{display:flex;flex-direction:column;line-height:1.3}
.pcell small{font-size:11.5px;color:var(--muted)}
.pacts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.ptable td:last-child{white-space:normal;min-width:150px}
.ptable .pcell b{white-space:nowrap}
.lgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px 16px}
.lgrid textarea{min-height:150px;font-size:13px}
.toggle>span{line-height:1.45}
@media (max-width:760px){
  .setwrap{flex-direction:column;align-items:stretch;padding:12px}
  .setnav{position:static;flex:none;flex-direction:row;overflow-x:auto;width:100%;gap:4px}
  .setnav .nav{width:auto;white-space:nowrap;flex:none;border:1px solid var(--line);border-radius:999px;padding:6px 12px}
  .person{grid-template-columns:1fr 1fr 30px}
}

/* ---------- Claude import clean-up ---------- */
select.ailow{border-color:var(--s-neg)!important;box-shadow:0 0 0 2px var(--s-neg-bg)}
.ai-chg{background:var(--s-prop-bg);color:var(--s-prop)}
.ai-flag{background:var(--s-neg-bg);color:var(--s-neg);font-weight:600}
.aiprev td{white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis;cursor:default}
.modal.wide{max-width:1040px}

/* ---------- Enquiry or quote panel ---------- */
.fab{position:fixed;right:20px;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:35;display:inline-flex;align-items:center;gap:8px;height:46px;padding:0 18px 0 14px;border:0;border-radius:999px;background:var(--btn);color:var(--on-btn);font-weight:600;font-size:14px;box-shadow:var(--shadow);cursor:pointer}
.fab:hover{background:var(--btn-hover)}
.fab svg{width:18px;height:18px}
body.intake-open .fab{display:none}
.intake{position:fixed;right:20px;bottom:20px;top:80px;width:min(460px,calc(100% - 40px));z-index:45;background:var(--bg);border:1px solid var(--line);border-top:3px solid var(--navy);border-radius:12px;box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden}
.inh{display:flex;align-items:center;gap:8px;padding:10px 12px 10px 16px;border-bottom:1px solid var(--line);font:400 18px/1 var(--f-display);letter-spacing:1.2px;color:var(--navy-ink)}
.inh b{font-weight:400}
.inh .btn{font:500 12px var(--f-body);letter-spacing:0}
.inico{display:inline-flex;color:var(--teal-ink)}
.inbody{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:12px;background:var(--bg-sub)}
.bub{max-width:88%;padding:10px 12px;border-radius:12px;font-size:13.5px;line-height:1.5}
.bub>*+*{margin-top:8px}
.bub.wide{display:flex;flex-direction:column;gap:10px}
.bub.wide>*+*{margin-top:0}
.bub.bot{align-self:flex-start;background:var(--bg);border:1px solid var(--line);border-top-left-radius:4px}
.bub.me{align-self:flex-end;background:var(--sel);color:var(--fg);border-top-right-radius:4px}
.bub.wide{max-width:100%;width:100%}
.bub .fgrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px 10px}
.bub .fld>span{font-size:10.5px}
.bub .fld input,.bub .fld select,.bub .fld textarea{height:32px;font-size:13px}
.bub .fld textarea{height:auto;min-height:80px}
.intxt{white-space:pre-wrap;overflow-wrap:anywhere}
.incomp{background:var(--bg);border:1.5px dashed var(--line);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:8px}
.incomp.over{border-color:var(--teal);background:var(--sel)}
.incomp textarea{border:1px solid var(--line);border-radius:8px;padding:8px 10px;resize:vertical;min-height:84px;background:var(--bg);font-size:13.5px;line-height:1.45}
.chip.infile{max-width:100%;gap:6px;padding:3px 6px}
.chip.infile .inname{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chip.infile.err{border-color:var(--late)}
.chip.infile .muted{font-size:11px}
.inlead{font-size:13px}
.ai-flagin{border-color:var(--s-neg)!important;background:var(--s-neg-bg)!important}
.dots::after{content:'';display:inline-block;width:1.2em;text-align:left;animation:dots 1.2s steps(4,end) infinite}
@keyframes dots{0%{content:''}25%{content:'.'}50%{content:'..'}75%{content:'...'}}
@media (max-width:760px){
  .fab{bottom:calc(68px + env(safe-area-inset-bottom,0px));right:14px;height:44px;padding:0 14px}
  .intake{inset:0;width:100%;border-radius:0;top:0;bottom:0;right:0}
}
@media (prefers-reduced-motion:reduce){.dots::after{animation:none;content:'…'}}
