:root{
  --bg:#f5f8f9;--surface:#fff;--surface2:#f0f5f6;--line:#e1e8ea;--line2:#cfdadd;
  --fg:#15262b;--mute:#5b6f76;--faint:#8a9ca2;
  --accent:#01758C;--accent-d:#015a6b;--accent-soft:#e3f1f4;--on-accent:#fff;
  --crit:#b8372b;--crit-soft:#fbeae8;--warn:#a96a0b;--warn-soft:#fcf1d9;--ok:#2a7d52;--ok-soft:#e3f3ea;--info:#01758C;--info-soft:#e3f1f4;
  --t-dom:#01758C;--t-com:#3c6e9e;--t-ind:#b0622d;--t-ins:#6b6fb3;
  --shadow:0 1px 2px rgba(10,40,48,.05),0 4px 14px rgba(10,40,48,.05);--scrim:rgba(8,26,32,.45);
  --r:10px;--side:236px;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0d181c;--surface:#14232a;--surface2:#1a2c33;--line:#243940;--line2:#2f4750;
  --fg:#e5eef0;--mute:#93a9b0;--faint:#6d848c;
  --accent:#3fb3cc;--accent-d:#7ccfe0;--accent-soft:#123741;--on-accent:#06242b;
  --crit:#f0786b;--crit-soft:#3a1f1f;--warn:#e3a94b;--warn-soft:#352a14;--ok:#58c08a;--ok-soft:#173326;--info:#3fb3cc;--info-soft:#123741;
  --t-dom:#3fb3cc;--t-com:#6fa3d6;--t-ind:#e08b52;--t-ins:#9a9ee0;
  --shadow:0 1px 2px rgba(0,0,0,.3);--scrim:rgba(0,0,0,.6);color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0d181c;--surface:#14232a;--surface2:#1a2c33;--line:#243940;--line2:#2f4750;
  --fg:#e5eef0;--mute:#93a9b0;--faint:#6d848c;
  --accent:#3fb3cc;--accent-d:#7ccfe0;--accent-soft:#123741;--on-accent:#06242b;
  --crit:#f0786b;--crit-soft:#3a1f1f;--warn:#e3a94b;--warn-soft:#352a14;--ok:#58c08a;--ok-soft:#173326;--info:#3fb3cc;--info-soft:#123741;
  --t-dom:#3fb3cc;--t-com:#6fa3d6;--t-ind:#e08b52;--t-ins:#9a9ee0;
  --shadow:0 1px 2px rgba(0,0,0,.3);--scrim:rgba(0,0,0,.6);color-scheme:dark}

*{box-sizing:border-box}
body{background:var(--bg);color:var(--fg);font:14px/1.45 Inter,system-ui,-apple-system,"Segoe UI",sans-serif;overflow:hidden;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.01em;text-wrap:balance}
p{margin:0}
.ic{flex:none;vertical-align:-3px}
.muted{color:var(--mute)}.small{font-size:12.5px}.grow{flex:1;min-width:0}.pad{padding:12px 14px}.right{text-align:right}
em{font-style:normal;color:var(--mute);font-size:12.5px}
.sub{display:block;color:var(--mute);font-size:12px;font-weight:400}
.neg{color:var(--crit);font-weight:600}.warnt{color:var(--warn);font-weight:600}
a{color:inherit;text-decoration:none}
.link{background:none;border:0;padding:0;color:var(--accent);font-weight:500;font-size:13px}.link:hover{text-decoration:underline}

/* ---- shell ---- */
#app{display:flex;height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));min-height:0}
#side{width:var(--side);flex:none;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;overflow-y:auto;padding-left:max(0px,env(safe-area-inset-left,0px))}
.brand{display:flex;align-items:center;gap:10px;padding:18px 16px 14px}
.logo{width:34px;height:34px;border-radius:9px;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;flex:none}
.brand b{display:block;font-size:14px;letter-spacing:-.01em}.brand span{display:block;font-size:11.5px;color:var(--mute)}
#nav{padding:4px 10px 14px;flex:1}
.nav-g{font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;color:var(--faint);padding:14px 10px 5px;font-weight:600}
.nav-i{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--mute);font-weight:500;font-size:13.5px}
.nav-i:hover{background:var(--surface2);color:var(--fg)}
.nav-i.on{background:var(--accent-soft);color:var(--accent-d)}
.nav-i .cnt{margin-left:auto;font-size:11px;background:var(--surface2);color:var(--mute);border-radius:99px;padding:1px 7px;font-weight:600}
.nav-i .cnt.hot{background:var(--crit);color:#fff}
.nav-i.on .cnt{background:var(--accent);color:var(--on-accent)}
.side-foot{padding:12px 16px 16px;border-top:1px solid var(--line);font-size:11.5px;color:var(--mute)}
#content{flex:1;min-width:0;display:flex;flex-direction:column}
#top{display:flex;align-items:center;gap:12px;padding:10px max(20px,env(safe-area-inset-right,0px)) 10px 20px;background:var(--surface);border-bottom:1px solid var(--line);flex:none}
#top h2{font-size:16px;white-space:nowrap}
#menu-btn{display:none}
.search{position:relative;flex:1;max-width:380px;margin-left:8px}
.search input{width:100%;padding:8px 12px 8px 34px;border:1px solid var(--line);border-radius:9px;background:var(--surface2)}
.search .ic{position:absolute;left:10px;top:9px;color:var(--faint)}
#search-res{position:absolute;top:100%;left:0;right:0;margin-top:6px;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);display:none;z-index:40;overflow:hidden}
#search-res.open{display:block}
#search-res button{display:block;width:100%;text-align:left;padding:9px 12px;background:none;border:0;border-bottom:1px solid var(--line)}
#search-res button:hover{background:var(--surface2)}
#search-res b{display:block;font-size:13px}#search-res span{font-size:12px;color:var(--mute)}
#top-right{display:flex;align-items:center;gap:10px;margin-left:auto}
.clock{display:flex;align-items:center;gap:5px;color:var(--mute);font-size:12.5px;font-variant-numeric:tabular-nums}
#top-right select{padding:7px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface)}
.menu-wrap{position:relative}
.menu{position:absolute;right:0;top:100%;margin-top:6px;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);min-width:180px;display:none;z-index:40;padding:5px}
.menu.open{display:block}
.menu button{display:block;width:100%;text-align:left;background:none;border:0;padding:8px 10px;border-radius:7px}
.menu button:hover{background:var(--surface2)}
#main{flex:1;overflow-y:auto;min-height:0}
#view{padding:22px max(24px,env(safe-area-inset-right,0px)) 40px 24px;max-width:1380px;margin:0 auto}

/* ---- forms and buttons ---- */
input,select,textarea{background:var(--surface);border:1px solid var(--line2);border-radius:8px;padding:8px 10px;width:100%;min-width:0}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}
input[type=checkbox]{width:auto;accent-color:var(--accent)}
input:disabled{background:transparent;border-color:transparent}
textarea{resize:vertical}
.lbl{display:block;font-size:12px;font-weight:600;color:var(--mute);margin:0 0 4px}
.fld{margin-bottom:12px}.fld.span2{grid-column:span 2}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.form-grid.three{grid-template-columns:repeat(3,1fr)}
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--line2);border-radius:9px;background:var(--surface);font-weight:500;white-space:nowrap}
.btn:hover{background:var(--surface2)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.primary:hover{background:var(--accent-d);border-color:var(--accent-d)}
.btn.ghost{border-color:transparent;background:transparent;color:var(--mute)}.btn.ghost:hover{background:var(--surface2)}
.btn.danger{color:var(--crit);border-color:var(--crit)}
.btn.sm{padding:5px 10px;font-size:12.5px;border-radius:8px}
.icon-btn{border:0;background:none;padding:6px;border-radius:8px;color:var(--mute);display:inline-grid;place-items:center}.icon-btn:hover{background:var(--surface2)}.icon-btn.sm{padding:3px}
.check{display:flex;align-items:center;gap:8px;margin:6px 0}.check.big{padding:7px 9px;border:1px solid var(--line);border-radius:8px;margin:0;background:var(--surface)}
.checks{display:grid;gap:6px;margin-bottom:12px}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 12px}
.seg{display:inline-flex;border:1px solid var(--line2);border-radius:9px;overflow:hidden;background:var(--surface)}
.seg button{border:0;background:none;padding:7px 12px;font-weight:500;color:var(--mute);border-right:1px solid var(--line)}.seg button:last-child{border:0}
.seg button.on{background:var(--accent-soft);color:var(--accent-d)}
.toolbar{display:flex;align-items:center;gap:10px;margin:0 0 14px;flex-wrap:wrap}
.toolbar select{width:auto}
.search-in{max-width:320px}
.range{font-size:16px;font-weight:600}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:14px;overflow-x:auto}
.tab{background:none;border:0;border-bottom:2px solid transparent;padding:9px 12px;color:var(--mute);font-weight:500;white-space:nowrap;margin-bottom:-1px}
.tab b{margin-left:6px;font-size:11px;background:var(--surface2);border-radius:99px;padding:1px 7px}
.tab.on{color:var(--accent-d);border-color:var(--accent)}.tab.on b{background:var(--accent-soft)}
.back{background:none;border:0;color:var(--mute);padding:0 0 10px;font-weight:500}.back:hover{color:var(--fg)}
.addrow{display:flex;gap:8px;margin-top:10px}

/* ---- layout blocks ---- */
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.page-head h1{font-size:23px}.page-head p{color:var(--mute);margin-top:3px}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.actions select{width:auto}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;display:flex;flex-direction:column;gap:2px;min-width:0}
.k-l{font-size:12px;color:var(--mute);font-weight:500}.k-v{font-size:22px;letter-spacing:-.02em;overflow-wrap:anywhere}.k-s{font-size:12px;color:var(--mute)}
.kpi.warn{border-color:var(--warn)}.kpi.warn .k-v{color:var(--warn)}.kpi.crit{border-color:var(--crit)}.kpi.crit .k-v{color:var(--crit)}
.grid{display:grid;gap:16px;margin-bottom:16px}.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}.g-ms{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}
.grid>*{min-width:0}
.stack{display:flex;flex-direction:column;gap:16px;min-width:0}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);min-width:0}
.card-h{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:13px 16px 0}.card-h h3{font-size:14.5px;display:flex;align-items:center;gap:8px}
.card-b{padding:12px 16px 16px}.card-b.flush{padding:6px 0 0}
.scroll-x{overflow-x:auto}
.pill{display:inline-block;font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:99px;background:var(--surface2);color:var(--mute);white-space:nowrap}
.pill.crit{background:var(--crit-soft);color:var(--crit)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.info{background:var(--info-soft);color:var(--info)}
.tchip{font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:6px;border:1px solid currentColor;white-space:nowrap}
.t-Domestic{color:var(--t-dom)}.t-Commercial{color:var(--t-com)}.t-Industrial{color:var(--t-ind)}.t-Inspection{color:var(--t-ins)}
.av{display:inline-grid!important;place-items:center;border-radius:50%;color:#fff!important;font-weight:700!important;flex:none;line-height:1}
.avs{display:inline-flex}.avs .av{margin-left:-6px;border:2px solid var(--surface)}.avs .av:first-child{margin-left:0}
.bar{display:block;height:6px;border-radius:99px;background:var(--surface2);overflow:hidden;min-width:40px}
.bar i{display:block;height:100%;background:var(--accent);border-radius:99px}.bar.ok i{background:var(--ok)}.bar.crit i{background:var(--crit)}
.empty{padding:26px 16px;text-align:center;color:var(--mute)}
.banner{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border-radius:9px;margin:0 0 12px;background:var(--surface2);font-size:13px}
.banner.crit{background:var(--crit-soft);color:var(--crit)}.banner.warn{background:var(--warn-soft);color:var(--warn)}.banner.ok{background:var(--ok-soft);color:var(--ok)}.banner.info{background:var(--info-soft);color:var(--info)}
.note-line{background:var(--surface2);border-radius:8px;padding:9px 11px;font-size:12.5px;color:var(--mute);margin-top:10px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:8px 0 10px;font-size:13px}.kv span{color:var(--mute)}.kv b{font-weight:500;text-align:right;overflow-wrap:anywhere}
.kv.stackkv{grid-template-columns:1fr}.kv.stackkv b{text-align:left}
h4{font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--mute);margin:18px 0 8px}
.mini-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px}.mini-row:last-child{border:0}
.mini-row .sub{margin-top:1px}
.btn-row{width:100%;background:none;border-left:0;border-right:0;border-top:0;text-align:left}.btn-row:hover{background:var(--surface2)}
.when{width:48px;color:var(--accent-d);font-weight:600;font-size:12.5px}
.rowlink{display:flex;justify-content:space-between;gap:10px;width:100%;text-align:left;background:var(--surface2);border:0;border-radius:8px;padding:9px 11px;margin-bottom:6px;align-items:center}
.rowlink:hover{background:var(--accent-soft)}.rowlink span{color:var(--mute);font-size:12.5px;display:flex;gap:8px;align-items:center}

/* ---- tables ---- */
.tbl-wrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--mute);padding:9px 14px;border-bottom:1px solid var(--line);white-space:nowrap;font-weight:600}
.tbl td{padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:top}
.tbl tr:last-child td{border-bottom:0}
.tbl .num{text-align:right;white-space:nowrap}
.tbl tr.clk{cursor:pointer}.tbl tr.clk:hover td{background:var(--surface2)}
.tbl tr.lowrow td:first-child{box-shadow:inset 3px 0 var(--warn)}
.prog-cell{min-width:110px}.prog-cell span{font-size:11.5px;color:var(--mute)}
.stp{border:1px solid var(--line2);background:var(--surface);border-radius:5px;width:20px;height:20px;line-height:1;margin:0 4px;padding:0;color:var(--mute)}

/* ---- reminders, crew, dashboard bits ---- */
.rem{display:flex;gap:12px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line)}.rem:last-child{border:0}
.rem-dot{width:9px;height:9px;border-radius:50%;background:var(--faint);flex:none}
.rem.crit .rem-dot{background:var(--crit)}.rem.warn .rem-dot{background:var(--warn)}.rem.info .rem-dot{background:var(--accent)}
.rem-main{flex:1;min-width:0}.rem-main b{display:block;font-size:13.5px}.rem-main span{display:block;font-size:12.5px;color:var(--mute)}
.rem-act{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.crew{display:flex;align-items:center;gap:10px;padding:10px 4px;border-bottom:1px solid var(--line)}.crew:last-child{border:0}.crew.flat{border:0;padding:4px 0}
.crew b{display:block;font-size:13.5px}.crew span:not(.dot){display:block;font-size:12.5px;color:var(--mute)}
.dot{width:9px;height:9px;border-radius:50%;flex:none;background:var(--faint)}
.crew.on .dot,.dot.on{background:var(--ok)}.crew.tr .dot,.dot.tr{background:var(--warn)}.crew.next .dot{background:var(--accent)}.crew.off .dot{background:var(--crit)}.crew.done .dot{background:var(--faint)}
.pipe{display:grid;grid-template-columns:96px 1fr auto auto;gap:10px;align-items:center;padding:6px 0;font-size:13px}.pipe b{min-width:18px;text-align:right}
.brief{border:1px solid var(--line);border-radius:10px;margin-bottom:12px;overflow:hidden}.brief-h{display:flex;gap:8px;align-items:center;padding:9px 12px;background:var(--surface2)}
.brief pre{margin:0;padding:12px;white-space:pre-wrap;font:12.5px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}

/* ---- enquiry board ---- */
.board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(250px,1fr);gap:12px;overflow-x:auto;padding-bottom:10px}
.col{background:var(--surface2);border-radius:var(--r);padding:10px;min-height:200px}
.col-h{display:flex;gap:8px;align-items:baseline;padding:2px 4px 10px}.col-h b{font-size:13px}.col-h span{background:var(--surface);border-radius:99px;padding:0 7px;font-size:11.5px}.col-h em{margin-left:auto}
.col-b{display:flex;flex-direction:column;gap:8px}.col-empty{text-align:center;color:var(--faint);padding:20px 0;font-size:12.5px}
.ecard{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:11px;display:block;width:100%}
.ecard:hover{border-color:var(--accent)}.ecard.hot{border-color:var(--crit);box-shadow:inset 3px 0 var(--crit)}
.e-top{display:flex;justify-content:space-between;gap:6px;align-items:center}.ecard p{font-size:12.5px;color:var(--mute);margin:5px 0 8px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.e-meta{display:flex;gap:8px;align-items:center;font-size:11.5px;color:var(--mute);flex-wrap:wrap}.e-val{font-weight:600;margin-top:6px}
.e-next{display:flex;gap:5px;align-items:center;font-size:12px;color:var(--mute);margin-top:6px}.e-next.late{color:var(--crit);font-weight:600}
.formbox{border:1px dashed var(--accent);border-radius:9px;padding:10px 12px;margin:10px 0;background:var(--accent-soft)}.formbox-h{display:flex;gap:6px;align-items:center;font-size:12px;font-weight:600;color:var(--accent-d)}
.quote-text{background:var(--surface2);border-radius:9px;padding:10px 12px;font-size:13.5px;line-height:1.55}

/* ---- quote builder ---- */
.qlines{overflow-x:auto;margin-bottom:8px}
.qline{display:grid;grid-template-columns:96px minmax(150px,1fr) 56px 46px 66px 70px 44px 26px;gap:5px;align-items:center;margin-bottom:5px;min-width:560px}
.qline input,.qline select{padding:6px 7px;font-size:13px}.qline.h{font-size:11px;color:var(--mute);text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.lm{font-size:12px;color:var(--mute);text-align:center}
.tot{display:flex;justify-content:space-between;padding:4px 0;font-size:13px}.tot.grand{font-size:16px;font-weight:700;border-top:1px solid var(--line);margin-top:4px;padding-top:8px}
#q-totals{margin:14px 0 4px;max-width:320px;margin-left:auto}
.margin{display:flex;flex-direction:column;gap:5px;margin-top:10px;font-size:12.5px;color:var(--mute)}.margin.low span{color:var(--crit);font-weight:600}
.doc{border:1px solid var(--line);border-radius:10px;padding:22px;background:var(--surface)}
.doc-h{display:flex;justify-content:space-between;gap:16px;border-bottom:2px solid var(--accent);padding-bottom:12px;margin-bottom:14px}.doc-h span,.doc-to span{display:block;font-size:12.5px;color:var(--mute)}.doc-r{text-align:right}.doc-r b{color:var(--accent-d)}
.doc-to{margin-bottom:12px}.doc-tot{max-width:260px;margin:12px 0 12px auto}
.pb .rowlink{margin-bottom:6px}

/* ---- drawer, modal ---- */
#scrim{position:fixed;inset:0;background:var(--scrim);opacity:0;pointer-events:none;transition:opacity .2s;z-index:50}#scrim.open{opacity:1;pointer-events:auto}
#drawer{position:fixed;top:0;bottom:0;right:0;width:min(680px,100vw);background:var(--surface);z-index:60;transform:translateX(105%);transition:transform .22s;display:flex;flex-direction:column;box-shadow:-10px 0 40px rgba(0,0,0,.18);padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
#drawer.open{transform:none}
.d-head{display:flex;justify-content:space-between;gap:12px;padding:16px max(20px,env(safe-area-inset-right,0px)) 12px 20px;border-bottom:1px solid var(--line);align-items:flex-start}
.d-head h2{font-size:17px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.d-head p{color:var(--mute);font-size:12.5px;margin-top:3px}
.d-body{flex:1;overflow-y:auto;padding:14px max(20px,env(safe-area-inset-right,0px)) 20px 20px}
.d-foot{display:flex;gap:8px;justify-content:flex-end;padding:12px max(20px,env(safe-area-inset-right,0px)) 12px 20px;border-top:1px solid var(--line);flex-wrap:wrap}
#modal{position:fixed;inset:0;z-index:70;display:none;align-items:center;justify-content:center;background:var(--scrim);padding:16px max(16px,env(safe-area-inset-right,0px)) 16px max(16px,env(safe-area-inset-left,0px))}
#modal.open{display:flex}
.m-card{background:var(--surface);border-radius:14px;width:min(520px,100%);max-height:calc(100dvh - 40px);display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.3)}.m-card.wide{width:min(760px,100%)}
.m-body{padding:14px 20px;overflow-y:auto;flex:1}
#toasts{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;z-index:90;align-items:center;pointer-events:none;width:max-content;max-width:calc(100vw - 32px)}
.toast{background:#10272e;color:#fff;padding:10px 16px;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.25);font-size:13px;transition:opacity .3s}.toast.out{opacity:0}

/* ---- jobs ---- */
.ck-prog{display:flex;align-items:center;gap:10px;margin-bottom:10px}.ck-prog .bar{flex:1}.ck-prog span{font-size:12.5px;color:var(--mute)}
.ck{display:flex;gap:10px;align-items:flex-start;padding:8px 6px;border-radius:8px}.ck:hover{background:var(--surface2)}.ck input{margin-top:3px;width:17px;height:17px}.ck.done span{color:var(--faint);text-decoration:line-through}
.note{padding:10px 0;border-bottom:1px solid var(--line)}.note:last-child{border:0}.note-h{display:flex;gap:8px;align-items:center;font-size:12.5px}.note-h span{color:var(--mute)}.note p{margin:5px 0 0 30px;font-size:13.5px}
.sitebox{background:var(--surface2);border-radius:9px;padding:11px 12px;margin-bottom:8px}.sitebox>b{display:flex;gap:6px;align-items:center}.sitebox>span{display:block;font-size:12.5px;color:var(--mute);margin-bottom:6px}
.mail{border:1px solid var(--line);border-radius:9px;padding:10px 12px;margin-bottom:8px}.mail.me{background:var(--accent-soft);border-color:transparent}.mail-h{display:flex;justify-content:space-between;font-size:12.5px}.mail-h span{color:var(--mute)}.mail-s{font-weight:600;font-size:13px;margin:3px 0}.mail p{font-size:13px;color:var(--mute)}

/* ---- diary ---- */
.sg{min-width:760px}.sg.compact{min-width:1100px}
.sg-row{display:grid;grid-template-columns:150px repeat(var(--n),minmax(0,1fr));border-bottom:1px solid var(--line)}.sg-row:last-child{border:0}
.sg-head{position:sticky;top:0;background:var(--surface);z-index:2}
.sg-day{padding:9px 10px;text-align:left;border-left:1px solid var(--line)}.sg-day b{display:block;font-size:12.5px}.sg-day span{font-size:11.5px;color:var(--mute)}.sg-day.today{background:var(--accent-soft)}.sg-day.today b{color:var(--accent-d)}
.sg-name{display:flex;gap:9px;align-items:flex-start;padding:10px;font-size:13px}.sg-name b{display:block}.sg-name span{display:block;font-size:11.5px;color:var(--mute)}.sg-name .bar{margin-top:5px;min-width:70px}
.sg-cell{border-left:1px solid var(--line);padding:5px;display:flex;flex-direction:column;gap:5px;min-height:74px}.sg-cell.today{background:color-mix(in srgb,var(--accent-soft) 45%,transparent)}.sg-cell.over,.tl-track.over{background:var(--accent-soft);outline:2px dashed var(--accent);outline-offset:-3px}
.sg-row.unassigned{background:var(--warn-soft)}
.vc{border-radius:7px;padding:6px 8px;background:var(--surface2);border-left:4px solid var(--t-dom);cursor:grab;font-size:12px;min-width:0}.vc:hover{box-shadow:var(--shadow)}
.vc b{display:flex;gap:5px;align-items:center;font-size:11.5px;font-variant-numeric:tabular-nums}.vc span{display:block;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vc em{display:block;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vt-Domestic{--c:var(--t-dom)}.vt-Commercial{--c:var(--t-com)}.vt-Industrial{--c:var(--t-ind)}.vt-Inspection{--c:var(--t-ins)}.vt-Survey{--c:var(--faint)}
.vc[class*=vt-]{border-left-color:var(--c)}
.vc.done{opacity:.6}.vc.bad{background:var(--crit-soft);outline:1px solid var(--crit)}.vc.on-site{outline:1px solid var(--ok)}
.live{font-style:normal;background:var(--ok);color:#fff;border-radius:4px;padding:0 5px;font-size:10px}
.off-chip{background:repeating-linear-gradient(45deg,var(--surface2),var(--surface2) 6px,var(--line) 6px,var(--line) 12px);border-radius:6px;padding:5px 7px;font-size:11.5px;color:var(--mute)}
.legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:var(--mute);align-items:center}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;background:var(--c)}.legend i.lg.inv{background:var(--accent)}.legend i.lg.sp{background:var(--faint)}
.issues{border:1px solid var(--crit);background:var(--crit-soft);border-radius:var(--r);padding:8px;margin-bottom:14px}.issues-h{display:flex;gap:8px;align-items:center;padding:4px 6px 6px;color:var(--crit)}
.issue{display:flex;justify-content:space-between;gap:10px;width:100%;text-align:left;background:var(--surface);border:0;border-radius:7px;padding:8px 10px;margin-top:5px;font-size:13px}.issue em{color:var(--accent-d);font-weight:600}.issue.warn{box-shadow:inset 3px 0 var(--warn)}.issue.crit{box-shadow:inset 3px 0 var(--crit)}
.tl{min-width:820px}.tl-row{display:grid;grid-template-columns:150px 1fr;border-bottom:1px solid var(--line)}.tl-name{display:flex;gap:9px;align-items:center;padding:10px;font-size:13px}.tl-name b{display:block}.tl-name span{font-size:11.5px;color:var(--mute);display:block}
.tl-track{position:relative;height:64px;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(100%/12 - 1px),var(--line) calc(100%/12 - 1px),var(--line) calc(100%/12))}
.tl-track.ticks{height:30px;background:none}.tl-track.ticks span{position:absolute;top:8px;font-size:11px;color:var(--mute);transform:translateX(-50%)}
.tl-b{position:absolute;top:8px;bottom:8px;border-radius:7px;background:var(--c,var(--t-dom));color:#fff;padding:5px 7px;font-size:12px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer}.tl-b.done{opacity:.55}.tl-b.bad{outline:2px solid var(--crit);outline-offset:1px}
.travel{position:absolute;top:26px;height:12px;background:repeating-linear-gradient(45deg,var(--faint),var(--faint) 3px,transparent 3px,transparent 6px);border-radius:3px;opacity:.7}
.nowline{position:absolute;top:0;bottom:0;width:2px;background:var(--crit);z-index:2}
.off-block{position:absolute;inset:6px 0;background:repeating-linear-gradient(45deg,var(--surface2),var(--surface2) 8px,var(--line) 8px,var(--line) 16px);display:grid;place-items:center;color:var(--mute);font-size:12.5px;border-radius:7px}

/* ---- finance, stock, settings, certs ---- */
.chart{display:flex;gap:8px;align-items:flex-end;height:170px;padding-top:6px}.ch-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%}.ch-bars{flex:1;display:flex;gap:3px;align-items:flex-end;width:100%;justify-content:center}.ch-bars i{width:42%;max-width:20px;border-radius:4px 4px 0 0;display:block}.ch-bars i.inv{background:var(--accent)}.ch-bars i.sp{background:var(--faint)}.ch-col>span{font-size:10.5px;color:var(--mute);white-space:nowrap}
.target{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}.target b{font-size:32px;letter-spacing:-.03em}.target span{color:var(--mute)}
.inp-suf{position:relative}.inp-suf span{position:absolute;right:10px;top:9px;color:var(--mute);font-size:12px}.inp-suf input{padding-right:42px}
.toggle{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line);cursor:pointer}.toggle b{display:block;font-size:13.5px}.toggle span:not(.sw){font-size:12.5px;color:var(--mute)}
.toggle input{position:absolute;opacity:0;pointer-events:none}.sw{width:38px;height:22px;border-radius:99px;background:var(--line2);position:relative;flex:none;transition:background .15s;margin-top:2px}.sw:after{content:"";position:absolute;width:18px;height:18px;border-radius:50%;background:#fff;top:2px;left:2px;transition:left .15s}.toggle input:checked+.sw{background:var(--accent)}.toggle input:checked+.sw:after{left:18px}.toggle input:focus-visible+.sw{outline:2px solid var(--accent);outline-offset:2px}
ul.plain{margin:0;padding-left:18px;display:grid;gap:8px;font-size:13px;color:var(--mute)}ul.plain b{color:var(--fg)}
.mini{width:70px;padding:3px 5px;text-align:right}
.tick{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:5px;background:var(--line)}.tick.ok{background:var(--ok)}.tick.warn{background:var(--warn)}.tick.bad{background:var(--crit)}
.cs td,.cs th{padding:7px 8px}
.zs-line{margin:12px 0;font-size:13.5px}

/* ---- engineer phone view ---- */
body.eng #side,body.eng #menu-btn,body.eng .search,body.eng #top h2{display:none}
body.eng #view{max-width:480px;padding:12px 12px 30px}
.phone{background:var(--surface);border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:var(--shadow)}
.ph-head{display:flex;align-items:center;gap:12px;padding:16px;background:var(--accent);color:var(--on-accent)}.ph-head span{display:block;font-size:12.5px;opacity:.85}.ph-van{display:inline-flex!important;align-items:center;gap:5px;background:rgba(255,255,255,.18);padding:4px 9px;border-radius:99px;font-size:12px!important}
.phone .tabs{padding:0 8px;margin:0}.ph-body{padding:14px}.ph-foot{padding:10px 16px;font-size:11.5px;color:var(--mute);background:var(--surface2);text-align:center}
.vcard-ph{border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px;border-left:5px solid var(--faint)}.vcard-ph.on-site{border-left-color:var(--ok)}.vcard-ph.travelling{border-left-color:var(--warn)}.vcard-ph.done{opacity:.65}
.vp-top{display:flex;justify-content:space-between;align-items:center}.vcard-ph h3{font-size:16px;margin:6px 0 4px}.vp-addr{display:flex;gap:6px;align-items:center;color:var(--mute);font-size:13px;margin-bottom:8px}
.vp-note{background:var(--surface2);border-radius:8px;padding:8px 10px;font-size:12.5px;margin-bottom:6px}.vp-note b{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--mute)}.vp-note.warn{background:var(--warn-soft)}
.vp-prog{display:flex;gap:10px;align-items:center;margin:10px 0}.vp-prog .bar{flex:1}.vp-prog span{font-size:12px;color:var(--mute)}
.vp-btns{display:flex;gap:8px;flex-wrap:wrap}.vp-btns .btn{flex:1;justify-content:center;padding:11px 12px}.vp-next{margin-top:10px;font-size:12.5px;color:var(--mute);display:flex;gap:6px;align-items:center}
.wk-day{padding:10px 0;border-bottom:1px solid var(--line)}.wk-day.today b{color:var(--accent-d)}.wk-day b{display:block;margin-bottom:6px}.off{color:var(--crit);font-size:13px}

/* ---- responsive ---- */
@media (max-width:1100px){.kpis{grid-template-columns:repeat(2,1fr)}.g-ms{grid-template-columns:1fr}.g3{grid-template-columns:1fr 1fr}}
@media (max-width:860px){
  #side{position:fixed;z-index:55;top:0;bottom:0;left:0;transform:translateX(-105%);transition:transform .2s;box-shadow:10px 0 40px rgba(0,0,0,.2)}#side.open{transform:none}
  #menu-btn{display:inline-grid}.search{display:none}.clock{display:none}
  #top{padding-left:max(12px,env(safe-area-inset-left,0px));padding-right:max(12px,env(safe-area-inset-right,0px))}
  #view{padding:16px max(16px,env(safe-area-inset-right,0px)) 40px max(16px,env(safe-area-inset-left,0px))}
  .g2,.g3{grid-template-columns:1fr}
  .rem{flex-wrap:wrap}.rem-act{width:100%;justify-content:flex-start}
  .form-grid{grid-template-columns:1fr}.fld.span2{grid-column:auto}.form-grid.three{grid-template-columns:1fr 1fr 1fr}
  #top-right .btn.primary span{display:none}
}
@media (max-width:520px){.kpis{grid-template-columns:1fr 1fr;gap:8px}.k-v{font-size:19px}#top h2{display:none}.pipe{grid-template-columns:78px 1fr auto auto}.form-grid.three{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* ---- live mode ---- */
#login{min-height:100dvh;display:grid;place-items:center;padding:24px max(16px,env(safe-area-inset-right,0px)) 24px max(16px,env(safe-area-inset-left,0px));background:var(--bg)}
#login[hidden],#app[hidden]{display:none}
.login-card{width:min(400px,100%);background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:28px;box-shadow:var(--shadow)}
.login-card .brand{padding:0 0 18px}
.login-card h1{font-size:20px;margin-bottom:4px}.login-card p{color:var(--mute);margin-bottom:14px}
#login-err{color:var(--crit);font-size:13px;min-height:18px;margin:8px 0 0}
.login-card .btn{width:100%;justify-content:center;margin-top:10px;padding:11px}
.sync{font-size:12px;color:var(--mute);white-space:nowrap}.sync.ok:before,.sync.busy:before,.sync.bad:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;background:var(--ok)}.sync.busy:before{background:var(--warn)}.sync.bad:before{background:var(--crit)}.sync.bad{color:var(--crit)}
@media (max-width:860px){.sync{display:none}}
