[hidden]{display:none!important}
body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:40;background:var(--bg)}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--steel);outline-offset:2px}
h1,h2,h3{font-family:var(--f-cond);font-weight:700;letter-spacing:.01em;margin:0;text-wrap:balance}
.mono,.num{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.muted{color:var(--muted)}
.eyebrow{font-family:var(--f-cond);font-weight:600;text-transform:uppercase;letter-spacing:.12em;font-size:12px;color:var(--muted)}

/* shell */
.app{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100%}
.rail{background:var(--rail);color:var(--rail-ink);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:18px 12px 14px max(12px,env(safe-area-inset-left,0px));gap:4px}
.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 18px;color:var(--rail-hi)}
.brand-mark{width:34px;height:34px;border-radius:4px;background:repeating-linear-gradient(-45deg,var(--accent) 0 7px,#17140A 7px 14px);position:relative;flex:none}
.brand-mark::after{content:"";position:absolute;inset:7px;background:var(--rail);border-radius:2px}
.brand b{font-family:var(--f-cond);font-size:21px;letter-spacing:.04em;text-transform:uppercase;line-height:1}
.brand small{display:block;font-size:11px;color:var(--rail-ink);letter-spacing:.14em;text-transform:uppercase;font-family:var(--f-cond);font-weight:600}
.nav-b{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:5px;border:0;background:none;color:var(--rail-ink);font-weight:600;font-size:15px;text-align:left;width:100%}
.nav-b svg{width:19px;height:19px;flex:none}
.nav-b:hover{background:var(--rail-act);color:var(--rail-hi)}
.nav-b[aria-current="page"]{background:var(--rail-act);color:var(--rail-hi);box-shadow:inset 3px 0 0 var(--accent)}
.nav-sep{height:1px;background:var(--rail-line);margin:10px 8px}
.rail-new{margin:6px 4px 10px;display:grid;grid-template-columns:1fr 1fr;gap:6px}
.rail-new button{border:0;border-radius:5px;padding:9px 6px;font-weight:700;font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.06em;font-size:14px}
.rail-new .a{background:var(--accent);color:var(--accent-ink)}
.rail-new .b{background:var(--rail-act);color:var(--rail-hi)}
.rail-foot{margin-top:auto;font-size:12px;padding:8px;color:var(--rail-ink);display:flex;gap:8px;align-items:center}
.dot{width:8px;height:8px;border-radius:50%;background:var(--good);flex:none}
.dot.local{background:var(--accent)} .dot.off{background:var(--bad)}
main{min-width:0;padding-block:22px 110px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.wrap{max-width:1240px;margin:0 auto;display:flex;flex-direction:column;gap:18px}
.tabbar{display:none}
@media (min-width:900px){ main{padding-left:32px;padding-right:max(32px,env(safe-area-inset-right,0px))} }
@media (max-width:899px){
  .app{grid-template-columns:minmax(0,1fr)}
  .rail{display:none}
  .tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--rail);padding:6px max(6px,env(safe-area-inset-right,0px)) calc(6px + env(safe-area-inset-bottom,0px)) max(6px,env(safe-area-inset-left,0px));border-top:1px solid var(--rail-line)}
  .tabbar button{background:none;border:0;color:var(--rail-ink);display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;font-weight:600;padding:6px 0;border-radius:6px}
  .tabbar svg{width:22px;height:22px}
  .tabbar button[aria-current="page"]{color:var(--accent)}
  .fab{position:fixed;right:max(16px,calc(env(safe-area-inset-right,0px) + 16px));bottom:calc(76px + env(safe-area-inset-bottom,0px));z-index:29;background:var(--accent);color:var(--accent-ink);border:0;border-radius:28px;padding:14px 20px;font-family:var(--f-cond);font-weight:700;font-size:17px;letter-spacing:.05em;text-transform:uppercase;box-shadow:0 6px 20px rgba(0,0,0,.25);display:flex;gap:8px;align-items:center}
  .fab svg{width:20px;height:20px}
}
@media (min-width:900px){ .fab{display:none} }

/* generic */
.page-h{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}
.page-h h1{font-size:34px;line-height:1;text-transform:uppercase;letter-spacing:.02em}
.page-h .sub{color:var(--muted);margin-top:4px}
.btn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:8px 14px;border-radius:var(--r);font-weight:600;font-size:14px;white-space:nowrap;min-height:38px}
.btn svg{width:17px;height:17px;flex:none}
.btn:hover{border-color:var(--muted)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.primary:hover{filter:brightness(1.05)}
.btn.dark{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.btn.ghost{background:transparent}
.btn.danger{color:var(--bad)}
.btn.sm{padding:5px 10px;min-height:32px;font-size:13px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.icon-btn{border:1px solid var(--line);background:var(--surface);border-radius:var(--r);width:38px;height:38px;display:inline-grid;place-items:center;flex:none;color:var(--ink)}
.icon-btn svg{width:18px;height:18px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:18px}
.sec-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.sec-h h2{font-size:20px;text-transform:uppercase;letter-spacing:.04em}
.fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 14px}
.fld{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;min-width:0}
.fld.span2{grid-column:span 2} .fld.span4{grid-column:1/-1}
input,select,textarea{background:var(--surface);border:1px solid var(--line);border-radius:5px;padding:8px 10px;font-size:15px;min-height:38px;width:100%;text-transform:none;letter-spacing:normal;font-weight:400;color:var(--ink)}
textarea{resize:vertical;min-height:64px;line-height:1.4}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--steel);box-shadow:0 0 0 3px var(--steel-soft)}
input[type=checkbox]{width:18px;height:18px;min-height:0;accent-color:var(--steel)}
.row{display:flex;gap:8px;align-items:center;min-width:0}
.row > *{min-width:0}
@media (max-width:700px){ .fields{grid-template-columns:repeat(2,minmax(0,1fr))} .fld.span2{grid-column:1/-1} }
.pill{display:inline-flex;align-items:center;gap:5px;font-family:var(--f-cond);font-weight:700;font-size:12px;letter-spacing:.1em;text-transform:uppercase;padding:3px 9px;border-radius:3px;white-space:nowrap}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.p-draft{background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}
.p-sent{background:var(--steel-soft);color:var(--steel)}
.p-approved,.p-paid{background:var(--good-soft);color:var(--good)}
.p-partial{background:var(--warn-soft);color:var(--warn)}
.p-declined,.p-overdue{background:var(--bad-soft);color:var(--bad)}
.p-void{background:var(--surface-2);color:var(--muted);text-decoration:line-through}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--line);background:var(--surface);border-radius:20px;padding:5px 13px;font-size:13px;font-weight:600;color:var(--muted)}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.chip .c{font-family:var(--f-mono);font-size:11px;margin-left:4px;opacity:.75}
.search{position:relative;flex:1 1 220px;max-width:340px}
.search input{padding-left:34px}
.search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--muted)}
.toolbar{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.banner{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:10px 14px;border-radius:6px;font-size:14px;border:1px solid var(--line);background:var(--surface)}
.banner.warn{background:var(--accent-soft);border-color:transparent}
.banner.bad{background:var(--bad-soft);border-color:transparent;color:var(--ink)}

/* list rows */
.list{background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.lrow{display:grid;grid-template-columns:110px minmax(0,1.3fr) minmax(0,1.4fr) 104px 110px 130px;gap:14px;align-items:center;padding:12px 16px;border-top:1px solid var(--line-2);cursor:pointer;background:none;border-left:0;border-right:0;border-bottom:0;width:100%;text-align:left;color:var(--ink)}
.lrow:first-child{border-top:0}
.lrow:hover{background:var(--surface-2)}
.lrow.head{cursor:default;background:var(--surface-2);font-family:var(--f-cond);font-weight:600;text-transform:uppercase;letter-spacing:.1em;font-size:12px;color:var(--muted);padding-block:8px}
.lrow .r{text-align:right}
.lrow .t1{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lrow .t2{color:var(--muted);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lrow .no{font-family:var(--f-mono);font-size:13px;font-weight:500}
@media (max-width:760px){
  .lrow{grid-template-columns:minmax(0,1fr) auto;gap:4px 10px}
  .lrow.head{display:none}
  .lrow .c-no{grid-column:1;order:1} .lrow .c-st{grid-column:2;order:2;justify-self:end}
  .lrow .c-cl{order:3;grid-column:1} .lrow .c-amt{order:4;grid-column:2}
  .lrow .c-job{order:5;grid-column:1/-1} .lrow .c-dt{display:none}
}
.empty{padding:40px 20px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}
.empty h3{font-size:22px;text-transform:uppercase}
.empty p{max-width:46ch;margin:0;color:var(--muted)}
.empty .stripe{width:64px;height:10px;border-radius:2px;background:repeating-linear-gradient(-45deg,var(--accent) 0 8px,var(--ink) 8px 16px)}

/* dashboard */
.kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:14px 16px;display:flex;flex-direction:column;gap:4px;min-width:0}
.kpi .v{font-family:var(--f-cond);font-weight:700;font-size:30px;line-height:1.05;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.kpi .s{font-size:13px;color:var(--muted)}
.kpi.hot{background:var(--rail);border-color:var(--rail);color:var(--rail-hi)}
.kpi.hot .eyebrow,.kpi.hot .s{color:var(--rail-ink)}
.kpi.hot .v{color:var(--accent)}
.kpi .bad{color:var(--bad)}
@media (max-width:1100px){.kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:600px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))} .kpi .v{font-size:24px}}
.dash{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:16px}
@media (max-width:1000px){.dash{grid-template-columns:minmax(0,1fr)}}
.quick{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
@media (max-width:700px){.quick{grid-template-columns:repeat(2,minmax(0,1fr))}}
.qa{display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:14px;border-radius:8px;border:1px solid var(--line);background:var(--surface);text-align:left;color:var(--ink)}
.qa:hover{border-color:var(--ink)}
.qa svg{width:24px;height:24px;color:var(--steel)}
.qa b{font-family:var(--f-cond);font-size:18px;text-transform:uppercase;letter-spacing:.03em;line-height:1.1}
.qa span{font-size:13px;color:var(--muted)}
.qa.prime{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.qa.prime svg,.qa.prime span{color:var(--accent-ink)}
.att{display:flex;flex-direction:column}
.att button{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border:0;border-top:1px solid var(--line-2);background:none;text-align:left;color:var(--ink)}
.att button:first-child{border-top:0}
.att .sev{width:4px;height:34px;border-radius:2px;background:var(--bad)}
.att .sev.w{background:var(--warn)} .att .sev.s{background:var(--steel)}
.chart svg{width:100%;height:auto;display:block}
.chart text{font-family:var(--f-mono);font-size:11px;fill:var(--muted)}

/* editor */
.ed-head{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--bg);display:flex;align-items:center;gap:12px;padding:8px 0 12px;flex-wrap:wrap;border-bottom:1px solid var(--line)}
.ed-title{display:flex;flex-direction:column;min-width:0}
.ed-title h1{font-size:28px;line-height:1;font-family:var(--f-mono);font-weight:500;letter-spacing:-.01em}
.ed-actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.savestate{font-size:12px;color:var(--muted);font-family:var(--f-mono)}
.ed-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start}
.ed-main{display:flex;flex-direction:column;gap:16px;min-width:0}
.sticky{position:sticky;top:calc(env(safe-area-inset-top,0px) + 84px)}
@media (max-width:1100px){.ed-grid{grid-template-columns:minmax(0,1fr)} .sticky{position:static}}
@media (max-width:640px){.ed-actions .btn span{display:none} .ed-actions .btn{padding:8px 10px}}
.li-tools{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.li-head{display:none}
.li{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:flex-end;padding:12px 0;border-bottom:1px solid var(--line-2)}
.li input,.li select,.li textarea{padding:6px 8px;min-height:34px;font-size:14px}
.li input.n{font-family:var(--f-mono);text-align:right;font-size:13px}
.li-desc{flex:1 1 100%;display:flex;flex-direction:column;gap:6px;min-width:0}
.li-desc textarea{min-height:34px;height:auto;resize:vertical}
.li > label{flex:1 1 76px;min-width:0;display:flex;flex-direction:column;gap:3px}
.li > label > span{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.li > label.int-col > span::after{content:" · yours";text-transform:none;letter-spacing:0;font-weight:400}
.cat-sel{width:auto;align-self:flex-start;font-family:var(--f-cond);font-weight:600;font-size:12px!important;text-transform:uppercase;letter-spacing:.08em;padding:2px 6px!important;min-height:24px!important;border-radius:3px;border:0;background:var(--surface-2);color:var(--muted)}
.cat-Material{background:var(--steel-soft);color:var(--steel)}
.cat-Labor{background:var(--accent-soft);color:var(--warn)}
.cat-Equipment{background:var(--good-soft);color:var(--good)}
.cat-Subcontract{background:var(--bad-soft);color:var(--bad)}
.li .amt{flex:1 1 110px;font-family:var(--f-mono);font-weight:600;text-align:right;font-size:15px;align-self:flex-end;padding-bottom:7px;white-space:nowrap}
.li-x{flex:0 0 auto;display:flex;gap:2px;align-items:center;padding-bottom:4px}
.li-x button{border:0;background:none;width:28px;height:28px;border-radius:4px;color:var(--muted);display:grid;place-items:center}
.li-x button:hover{background:var(--surface-2);color:var(--ink)}
.li-x svg{width:15px;height:15px}
.tx{display:flex;gap:4px;align-items:center;font-size:11px;font-weight:600;color:var(--muted)}
.tx input{width:15px;height:15px}
.int{background:var(--internal)!important}
.hide-int .int-col{display:none!important}
.addline{width:100%;margin-top:10px;border:1px dashed var(--line);background:none;border-radius:6px;padding:10px;color:var(--muted);font-weight:600}
.addline:hover{border-color:var(--ink);color:var(--ink)}
@media (max-width:560px){ .li > label{flex-basis:28%} .li .amt{text-align:left} }
.tot{display:flex;flex-direction:column;gap:9px}
.tot .ln{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:14px}
.tot .ln .num{font-size:14px}
.tot .ln input{width:72px;min-height:30px;padding:4px 6px;text-align:right;font-family:var(--f-mono);font-size:13px}
.tot .ln select{width:auto;min-height:30px;padding:2px 6px;font-size:13px}
.tot .grand{border-top:2px solid var(--ink);padding-top:10px;margin-top:2px}
.tot .grand span:first-child{font-family:var(--f-cond);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:18px}
.tot .grand .num{font-family:var(--f-cond);font-size:32px;font-weight:700}
.tot .bal{background:var(--accent);color:var(--accent-ink);margin:2px -10px;padding:8px 10px;border-radius:5px;font-weight:700}
.prof{margin-top:6px;padding:12px;border-radius:6px;background:var(--internal);border:1px dashed var(--line);display:flex;flex-direction:column;gap:6px}
.meter{height:8px;border-radius:4px;background:var(--line);overflow:hidden}
.meter i{display:block;height:100%;border-radius:4px}
.pay{display:grid;grid-template-columns:100px minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line-2);font-size:14px}
.sig-img{max-width:280px;background:#fff;border:1px solid var(--line);border-radius:6px;padding:6px}

/* modal */
#modal{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:max(16px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) max(16px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}
.scrim{position:absolute;inset:0;background:rgba(8,10,12,.55)}
.sheet{position:relative;background:var(--surface);border-radius:10px;width:min(640px,100%);max-height:100%;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.35);border:1px solid var(--line)}
.sheet.wide{width:min(980px,100%)}
.sheet-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line)}
.sheet-h h2{font-size:22px;text-transform:uppercase;letter-spacing:.03em}
.sheet-b{padding:18px;overflow:auto;display:flex;flex-direction:column;gap:14px;min-height:0}
.sheet-f{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--line);flex-wrap:wrap}
@media (max-width:600px){#modal{align-items:flex-end;padding:0} .sheet{border-radius:12px 12px 0 0;max-height:92%;padding-bottom:env(safe-area-inset-bottom,0px)}}
.menu{display:flex;flex-direction:column}
.menu button{display:flex;gap:12px;align-items:center;padding:12px 6px;border:0;border-bottom:1px solid var(--line-2);background:none;text-align:left;font-weight:600;color:var(--ink)}
.menu button svg{width:19px;height:19px;color:var(--muted)}
.menu button.danger{color:var(--bad)} .menu button.danger svg{color:var(--bad)}
.pick{display:flex;flex-direction:column;max-height:52vh;overflow:auto;border:1px solid var(--line);border-radius:6px}
.pick button{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:10px 12px;border:0;border-bottom:1px solid var(--line-2);background:none;text-align:left;color:var(--ink)}
.pick button:hover{background:var(--surface-2)}
.pick .grp{padding:6px 12px;background:var(--surface-2);font-family:var(--f-cond);font-weight:600;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);position:sticky;top:0}
.tabs{flex:none;display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto}
.tabs button{border:0;background:none;padding:10px 14px;font-family:var(--f-cond);font-weight:700;font-size:16px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);border-bottom:3px solid transparent;white-space:nowrap}
.tabs button[aria-selected="true"]{color:var(--ink);border-color:var(--accent)}
.calc{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}
@media (max-width:860px){.calc{grid-template-columns:minmax(0,1fr)}}
.mem{display:grid;grid-template-columns:minmax(0,1.6fr) 90px 64px 90px 30px;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line-2)}
.mem input,.mem select{min-height:34px;padding:5px 8px;font-size:14px}
.mem .w{font-family:var(--f-mono);font-size:13px;text-align:right}
@media (max-width:560px){.mem{grid-template-columns:minmax(0,1fr) 80px 56px 30px} .mem .w{display:none}}
.mem-h{font-family:var(--f-cond);font-weight:600;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line)}
.out{background:var(--rail);color:var(--rail-ink);border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:8px}
.out .big{font-family:var(--f-cond);font-weight:700;font-size:34px;color:var(--accent);line-height:1}
.out .ln{display:flex;justify-content:space-between;gap:8px;font-size:13px}
.out .ln b{color:var(--rail-hi);font-family:var(--f-mono);font-weight:500}
.out hr{border:0;border-top:1px solid var(--rail-line);margin:4px 0;width:100%}
.out .eyebrow{color:var(--rail-ink)}
#toasts{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(90px + env(safe-area-inset-bottom,0px));z-index:60;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:max-content;max-width:calc(100% - 32px)}
.toast{background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:6px;font-weight:600;font-size:14px;box-shadow:var(--shadow);animation:tin .2s ease-out}
@keyframes tin{from{transform:translateY(8px);opacity:0}}
@media (min-width:900px){#toasts{bottom:28px}}
@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
.sig-pad{width:100%;height:180px;background:#fff;border:1px solid var(--line);border-radius:6px;touch-action:none;display:block}
.ai-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:start;padding:9px 0;border-bottom:1px solid var(--line-2);font-size:14px}
.skel{height:56px;border-radius:8px;background:linear-gradient(90deg,var(--surface) 0%,var(--surface-2) 50%,var(--surface) 100%);background-size:200% 100%;animation:sk 1.2s infinite linear;border:1px solid var(--line)}
@keyframes sk{to{background-position:-200% 0}}
.two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
@media (max-width:800px){.two{grid-template-columns:minmax(0,1fr)}}
.lrow.pbrow{grid-template-columns:minmax(0,2fr) 110px 110px 70px 90px 70px 90px}
.lrow.clrow{grid-template-columns:minmax(0,1.4fr) minmax(0,1.2fr) 70px 130px 130px}
@media (max-width:760px){
  .lrow.pbrow,.lrow.clrow{grid-template-columns:minmax(0,1fr) auto}
  .pbrow>span:not(:first-child):not(:last-child){display:none}
  .clrow>span:nth-child(2),.clrow>span:nth-child(3),.clrow>span:nth-child(4){display:none}
}
.logo-prev{max-height:60px;max-width:180px;background:#fff;border-radius:4px;padding:4px;border:1px solid var(--line)}
.hint{font-size:13px;color:var(--muted);text-transform:none;letter-spacing:0;font-weight:400}
/* ---------- Zeeland Fabrication skin ---------- */
h1,h2,h3{font-family:var(--f-cond);font-weight:700}
.page-h h1{font-family:var(--f-display);font-weight:400;font-size:clamp(20px,3.2vw,28px);letter-spacing:.03em;line-height:1.15}
.ed-title h1{font-size:24px}
.kpi .v{font-family:var(--f-display);font-weight:400;font-size:clamp(18px,2.2vw,24px);letter-spacing:.01em}
.kpi.hot{background:#000;border-color:var(--accent);box-shadow:inset 0 -4px 0 var(--accent)}
.kpi.hot .v{color:var(--accent)}
.tot .grand .num{font-family:var(--f-display);font-weight:400;font-size:24px}
.out .big{font-family:var(--f-display);font-weight:400;font-size:26px}
.rail{border-right:1px solid var(--rail-line)}
.brand{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:0 6px 16px}
.brand img{width:140px;height:auto;display:block}
.brand small{font-family:var(--f-display);font-size:11px;letter-spacing:.24em;color:var(--accent);text-transform:uppercase}
.nav-b[aria-current="page"]{box-shadow:inset 3px 0 0 var(--accent);color:#fff}
.nav-b .badge,.tabbar .badge{margin-left:auto;background:var(--accent);color:#000;font-style:normal;font-weight:700;font-size:11px;border-radius:10px;padding:1px 7px}
.tabbar button{position:relative}
.tabbar .badge{position:absolute;top:2px;left:calc(50% + 6px);margin:0}
.rail-new .a{background:var(--accent);color:#000}
.rail-foot{line-height:1.35}
.rail-foot .who{opacity:.7;word-break:break-all}
.dot{background:var(--accent)}
.empty .stripe{background:repeating-linear-gradient(-45deg,var(--accent) 0 8px,#000 8px 16px);border:1px solid var(--line)}
.qa.prime{background:var(--accent);border-color:var(--accent);color:#000}
.qa svg{color:var(--accent-text)}
.att .sev.g{background:var(--accent)}
.lrow .no{color:var(--accent-text)}
.chip[aria-pressed="true"]{background:var(--accent);color:#000;border-color:var(--accent)}
.btn.dark{background:#000;color:#fff;border-color:#3a3f38}
.viewed{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--accent-text);font-weight:600}
.viewed svg{width:15px;height:15px}
.qbadge{width:auto!important;padding:0 6px;gap:3px;display:inline-flex!important;align-items:center;background:var(--accent)!important;color:#000!important;font-weight:700;font-size:12px;border-radius:12px!important}
.qthread{border:1px solid var(--line);border-radius:6px;padding:12px;display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.qline{font-size:13px;color:var(--muted)}
.bub{max-width:85%;padding:8px 11px;border-radius:10px;font-size:14px;white-space:pre-wrap;word-wrap:break-word}
.bub small{display:block;font-size:11px;opacity:.75;margin-bottom:2px;font-weight:600}
.bub.client{align-self:flex-start;background:var(--surface-2);border:1px solid var(--line);border-bottom-left-radius:3px}
.bub.shop{align-self:flex-end;background:var(--accent);color:#000;border-bottom-right-radius:3px}
.send-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.send-grid .btn{justify-content:center;min-height:46px}
.linkish{background:none;border:0;padding:4px 0;color:var(--muted);text-decoration:underline;font-size:13px;align-self:flex-start}
.joincode{font-size:28px;letter-spacing:.2em;color:var(--accent-text);margin:6px 0}
.hint{font-size:13px;color:var(--muted)}
.paper-wrap{overflow:hidden;border-radius:3px}
/* sign-in */
#login{position:fixed;inset:0;z-index:100;background:#000;display:flex;align-items:center;justify-content:center;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));overflow:auto;color:#EEF0EC;color-scheme:dark}
body.auth .app,body.auth .tabbar,body.auth .fab{display:none!important}
.login-card{width:min(400px,100%);display:flex;flex-direction:column;gap:14px}
.login-logo{width:160px;max-width:45vw;align-self:center;margin-bottom:4px}
.login-t{font-family:var(--f-display);text-align:center;letter-spacing:.3em;text-transform:uppercase;color:var(--accent);font-size:13px;margin-bottom:6px}
#login input{background:#121412;border-color:#2A2E28;color:#EEF0EC;font-size:16px;min-height:46px}
#login .fld{color:#9BA197}
.btn.big{min-height:50px;justify-content:center;font-size:16px}
.lg-msg{min-height:1.2em;margin:0;color:#F2B33D;font-size:14px;text-align:center}
#login .linkish{color:#B3B3B3}

#toasts .toast.upd{pointer-events:auto;cursor:pointer;background:var(--accent);color:#000;border:0}
.qcount{display:inline-flex;align-items:center;gap:3px;background:var(--accent);color:#000;font-weight:700;font-size:12px;border-radius:12px;padding:1px 7px;margin-left:4px;vertical-align:middle}
.qcount svg{width:13px;height:13px}
#toasts .toast.upd{max-width:min(520px,calc(100vw - 32px));text-align:left;white-space:normal}
