:root{
  --bg:#edf1f2; --surface:#ffffff; --sunk:#f5f7f8; --ink:#16232a; --muted:#56666f; --line:#d3dbdf;
  --accent:#0d6b5b; --accent-ink:#ffffff; --accent-soft:#dcefea;
  --warn:#9a5b00; --warn-soft:#fbefd9; --bad:#b42318; --bad-soft:#fde4e1; --ok:#1f7a3a; --ok-soft:#dff3e5;
  --learn:#5b4bb5; --learn-soft:#ebe8fa;
  --ta:#eaf1fa; --ia:#2f6fb5; --tb:#fbf2e2; --ib:#a0620a; --tc:#e3f2ee; --ic:#0d6b5b; --td:#efebfa; --id:#5b4bb5; --te:#eef1f3; --ie:#4c5b63;
  --j1:#2f6fb5; --j2:#a3509b; --j3:#b86b12; --j4:#3d8a5a;
  --sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0e1416; --surface:#151d20; --sunk:#11181a; --ink:#e3eaec; --muted:#93a3a9; --line:#26333a;
  --accent:#3fb59c; --accent-ink:#06201b; --accent-soft:#163a33;
  --warn:#e3a54a; --warn-soft:#3a2a10; --bad:#f07d70; --bad-soft:#3d1b17; --ok:#5cc47e; --ok-soft:#163222;
  --learn:#b0a4f0; --learn-soft:#262040;
  --ta:#16233a; --ia:#6ea6e8; --tb:#33280f; --ib:#e3a54a; --tc:#123029; --ic:#3fb59c; --td:#241f3d; --id:#b0a4f0; --te:#1c2529; --ie:#a7b5bb;
  --j1:#6ea6e8; --j2:#d58bcd; --j3:#e6a65a; --j4:#79c495; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0e1416; --surface:#151d20; --sunk:#11181a; --ink:#e3eaec; --muted:#93a3a9; --line:#26333a;
  --accent:#3fb59c; --accent-ink:#06201b; --accent-soft:#163a33;
  --warn:#e3a54a; --warn-soft:#3a2a10; --bad:#f07d70; --bad-soft:#3d1b17; --ok:#5cc47e; --ok-soft:#163222;
  --learn:#b0a4f0; --learn-soft:#262040;
  --ta:#16233a; --ia:#6ea6e8; --tb:#33280f; --ib:#e3a54a; --tc:#123029; --ic:#3fb59c; --td:#241f3d; --id:#b0a4f0; --te:#1c2529; --ie:#a7b5bb;
  --j1:#6ea6e8; --j2:#d58bcd; --j3:#e6a65a; --j4:#79c495; color-scheme:dark}
*{box-sizing:border-box}
html,body{height:100%}
body{background:var(--bg);color:var(--ink);font:14px/1.45 var(--sans);font-variant-numeric:tabular-nums}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
a{color:var(--accent)}
.num,.mono{font-family:var(--mono);font-size:13px}
.top{display:flex;align-items:center;gap:12px 16px;flex-wrap:wrap;padding-block:10px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));background:var(--surface);border-bottom:1px solid var(--line)}
.brand{font-weight:700;letter-spacing:-.01em;font-size:16px}
.brand span{color:var(--accent)}
.top select{padding:6px 10px;border:1px solid var(--line);border-radius:6px;background:var(--sunk)}
.nav{display:flex;gap:4px}
.nav button{background:none;border:0;padding:6px 10px;border-radius:6px;cursor:pointer;color:var(--muted);font-weight:600}
.nav button:disabled{opacity:.5;cursor:default}
.nav button[aria-current="page"]{background:var(--accent-soft);color:var(--ink)}
.app{display:grid;grid-template-columns:270px minmax(0,1fr) minmax(0,580px);min-height:calc(100% - 52px)}
.pane{min-width:0;border-right:1px solid var(--line)}
.pane:last-child{border-right:0}
.queue{background:var(--surface);display:flex;flex-direction:column}
.tabs{display:flex;border-bottom:1px solid var(--line)}
.tabs button{flex:1;padding:12px 4px;background:none;border:0;border-bottom:2px solid transparent;cursor:pointer;font-weight:600;color:var(--muted);font-size:12.5px}
.tabs button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--accent)}
.count{display:inline-block;min-width:18px;padding:0 5px;margin-left:5px;border-radius:99px;background:var(--sunk);font-size:11.5px;font-weight:500}
.count:empty{display:none}
.list{list-style:none;margin:0;padding:0;overflow:auto}
.item{display:grid;grid-template-columns:1fr auto;gap:2px 8px;padding:12px 16px;border:0;border-bottom:1px solid var(--line);cursor:pointer;width:100%;text-align:left;background:none;border-left:3px solid transparent}
.item:hover{background:var(--sunk)}
.item[aria-current="true"]{background:var(--accent-soft);border-left-color:var(--accent)}
.item .sup{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item .meta{color:var(--muted);font-size:12px}
.item .snote{grid-column:1/-1;font-size:12px;color:var(--muted);font-style:italic}
.pill{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:99px;white-space:nowrap}
.pill.review{background:var(--sunk);color:var(--muted)}
.pill.done{background:var(--ok-soft);color:var(--ok)}
.pill.bad{background:var(--bad-soft);color:var(--bad)}
.pill.saved{background:var(--learn-soft);color:var(--learn)}
.pill.reading{background:var(--accent-soft);color:var(--accent)}
.docpane{padding:20px;overflow:auto;background:var(--sunk)}
.app.focus{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}
.app.focus .queue{display:none}
.app.focus .docpane{display:block}
.app.focus .filebar,.app.focus .scan{max-width:none}
.scan{max-width:640px;margin:0 auto;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.08),0 8px 24px rgba(0,0,0,.08);border-radius:2px;overflow:auto}
.scan img{display:block;max-width:none;height:auto;margin:0 auto}
.pg{position:relative;margin:0 auto;max-width:none}
.pg .ov{position:absolute;inset:0;cursor:crosshair;touch-action:none}
.pg .box{position:absolute;border:2px solid var(--accent);background:color-mix(in srgb,var(--accent) 18%,transparent);pointer-events:none}
.pg .hit{position:absolute;background:color-mix(in srgb,#f5b301 35%,transparent);border-radius:2px;pointer-events:none}
.pickbar{position:sticky;top:0;z-index:3;background:var(--accent);color:var(--accent-ink);padding:8px 12px;border-radius:6px;margin-bottom:8px;font-size:13px;display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.pickbar button{background:var(--accent-ink);color:var(--accent);border:0;border-radius:5px;padding:3px 10px;font-weight:600;cursor:pointer}
.pick{border:0;background:none;color:var(--accent);cursor:pointer;font-size:11.5px;font-weight:600;padding:0 0 0 6px}
.pick:hover{text-decoration:underline}
.pick[aria-pressed="true"]{color:var(--warn)}
.lines .pick{display:block;padding:2px 0 0;margin-left:auto}
.viewer{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.viewer button{font-size:12px;padding:3px 9px;border:1px solid var(--line);border-radius:5px;background:var(--surface);cursor:pointer;color:var(--ink)}
.viewer button[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent)}
.viewer a{text-decoration:none}
@media (max-width:1180px){.app.focus{grid-template-columns:1fr}.app.focus .docpane{max-height:70vh;border-bottom:1px solid var(--line)}}
.filebar{max-width:640px;margin:0 auto 10px;display:flex;justify-content:space-between;color:var(--muted);font-size:12px;gap:8px;flex-wrap:wrap}
.proc{background:var(--sunk);overflow:auto;display:flex;flex-direction:column}
.proc .proc-head{background:var(--surface)}
.proc-head{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;gap:12px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
.proc-head h1{font-size:18px;margin:0;text-wrap:balance}
.proc-head .sub{color:var(--muted);font-size:13px}
.step{margin:12px 14px 0;background:var(--surface);border:1px solid var(--line);border-radius:12px;display:grid;gap:12px;padding-bottom:14px;--sec:var(--te);--seci:var(--ie)}
.step>*:not(h3){margin-inline:16px}
.step>.lines-wrap{margin-inline:12px}
.step.plain{padding-top:12px;padding-bottom:12px;background:transparent;border:0;margin-top:8px}
.step.plain>*{margin-inline:0}
.sec-a{--sec:var(--ta);--seci:var(--ia)} .sec-b{--sec:var(--tb);--seci:var(--ib)} .sec-c{--sec:var(--tc);--seci:var(--ic)} .sec-d{--sec:var(--td);--seci:var(--id)} .sec-e{--sec:var(--te);--seci:var(--ie)}
.sec-b .fields{grid-template-columns:repeat(3,minmax(0,1fr))}
.sec-b .field.wide{grid-column:1/-1}
.sec-b .check{padding-top:2px}
.step h3{margin:0;padding:10px 16px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--seci);background:var(--sec);border-bottom:1px solid var(--line);border-radius:11px 11px 0 0;display:flex;align-items:center;gap:8px}
.step h3 .n{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--seci);color:var(--surface);font-size:11px;letter-spacing:0}
.notes{display:grid;gap:6px}
.note{display:flex;gap:8px;align-items:flex-start;font-size:13px;padding:8px 10px;border-radius:6px}
.note.warn{background:var(--warn-soft);color:var(--warn)}
.note.ok{background:var(--ok-soft);color:var(--ok)}
.note.info{background:var(--surface);color:var(--muted);border:1px solid var(--line)}
.dupbox{border:1.5px solid var(--bad);background:var(--bad-soft);border-radius:8px;padding:12px 14px;display:grid;gap:8px;color:var(--ink)}
.dupbox strong{color:var(--bad)}
.dupmatch{display:grid;grid-template-columns:auto 1fr auto;gap:4px 10px;align-items:center;background:var(--surface);border-radius:6px;padding:8px 10px;font-size:13px}
.src{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 6px;border-radius:4px;background:var(--sunk);color:var(--muted)}
.override{display:flex;gap:8px;align-items:flex-start;font-size:13px}
.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px}
.field{display:grid;gap:4px;min-width:0;align-content:start}
.field label{font-size:12px;color:var(--muted)}
.field input,.field select,.field textarea{width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:6px;background:var(--surface);min-width:0}
.field input.num{text-align:right}
.field.wide{grid-column:1/-1}
.from{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:4px}
.from.learn{color:var(--learn)}
.from.rule{color:var(--accent)}
.from::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.choice{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.opt{display:grid;gap:2px;padding:12px 14px;border:1.5px solid var(--line);border-radius:8px;cursor:pointer;background:var(--surface);text-align:left}
.opt strong{font-size:15px}
.opt span{font-size:12.5px;color:var(--muted)}
.opt[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft)}
.dot{width:8px;height:8px;border-radius:50%;flex:none}
.lines-wrap{overflow-x:auto;margin-inline:-4px}
table.lines{width:100%;border-collapse:collapse;min-width:820px}
.lines input,.lines textarea{width:100%;padding:5px 6px;border:1px solid var(--line);border-radius:5px;background:var(--surface);font-size:12.5px;min-width:0}
.lines textarea{resize:vertical;min-height:34px;line-height:1.35;font-family:var(--sans)}
.lines input.n{text-align:right;font-family:var(--mono)}
.lines td.qty{width:64px}.lines td.unit{width:92px}.lines td.amtin{width:104px}
.lines .ovr{display:block;font-size:10.5px;color:var(--warn);text-align:right;margin-top:2px}
.lines .rm{background:none;border:0;color:var(--muted);cursor:pointer;font-size:16px;line-height:1;padding:4px}
.lines .rm:hover{color:var(--bad)}
.lines th{font-size:11.5px;font-weight:600;color:var(--muted);text-align:left;padding:6px 4px;border-bottom:1px solid var(--line);white-space:nowrap}
.lines td{padding:6px 4px;border-bottom:1px solid var(--line);vertical-align:top}
.lines td.amt,.lines th.amt{text-align:right;white-space:nowrap}
.lines .desc{font-size:13px;min-width:200px}
.lines select{width:100%;padding:5px 6px;border:1px solid var(--line);border-radius:5px;background:var(--surface);font-size:12.5px;min-width:0}
.lines td.job{border-left:3px solid transparent;min-width:150px}
.sell{color:var(--accent);font-weight:500}
.sums{display:grid;gap:6px}
.sumrow{display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:13px;flex-wrap:wrap}
.sumrow .lbl{display:flex;align-items:center;gap:8px;min-width:0}
.check{display:flex;justify-content:space-between;font-size:13px;color:var(--muted);gap:8px;flex-wrap:wrap}
.foot{position:sticky;bottom:0;margin-top:auto;background:var(--surface);border-top:1px solid var(--line);padding:12px 20px calc(12px + env(safe-area-inset-bottom,0px));display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.proc>.step:last-of-type{margin-bottom:12px}
.btn{padding:9px 16px;border-radius:8px;border:1px solid var(--line);background:var(--surface);cursor:pointer;font-weight:600}
.btn:disabled{opacity:.6;cursor:default}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.btn.danger{background:var(--bad);color:#fff;border-color:var(--bad)}
.btn.ghost{border-color:transparent;color:var(--muted);background:none}
.btn.small{padding:5px 10px;font-size:13px}
.foot .why{font-size:12.5px;color:var(--bad);flex-basis:100%}
.foot .spacer{flex:1}
.savebox{display:grid;gap:8px;flex-basis:100%;background:var(--learn-soft);border-radius:8px;padding:10px 12px}
.savebox label{font-size:12.5px;color:var(--learn);font-weight:600}
.savebox input{width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:6px;background:var(--surface)}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--surface);padding:10px 16px;border-radius:8px;font-weight:500;box-shadow:0 8px 24px rgba(0,0,0,.25);max-width:calc(100% - 32px);z-index:20}
.empty{padding:40px 20px;color:var(--muted);text-align:center}
.intake{padding:12px 14px;border-bottom:1px solid var(--line);display:grid;gap:8px;background:var(--sunk)}
.intake-h{font-size:11.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.addr{display:grid;grid-template-columns:1fr auto;gap:0 6px;align-items:center;font-size:12px}
.addr span{color:var(--muted);grid-column:1/-1}
.addr code{font-family:var(--mono);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;user-select:all}
.addr button{font-size:11.5px;padding:2px 8px;border:1px solid var(--line);border-radius:5px;background:var(--surface);cursor:pointer}
.drop{display:block;text-align:center;font-size:12.5px;color:var(--muted);border:1.5px dashed var(--line);border-radius:8px;padding:12px 8px;cursor:pointer;background:var(--surface)}
.drop.over{border-color:var(--accent);background:var(--accent-soft);color:var(--ink)}
.drop u{color:var(--accent)}
.req{color:var(--bad);margin-left:2px}
.uuid{display:flex;gap:6px;align-items:baseline;font-size:11px;color:var(--muted);min-width:0}
.uuid code{font-family:var(--mono);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:all;min-width:0}
.newbox{display:grid;gap:4px;border:1.5px solid var(--warn);background:var(--warn-soft);border-radius:8px;padding:10px 12px}
.newbox .t{font-size:13px;color:var(--warn);font-weight:600}
.hint{font-size:12px;color:var(--muted)}
@media (max-width:1180px){.app{grid-template-columns:250px minmax(0,1fr)}.docpane{display:none}}
@media (max-width:760px){.sec-b .fields{grid-template-columns:1fr}.step{margin-inline:8px}.app{grid-template-columns:1fr}.pane{border-right:0;border-bottom:1px solid var(--line)}.list{max-height:260px}.fields,.choice{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
.login{min-height:100%;display:grid;place-items:center;padding-block:32px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.login-card{width:min(400px,100%);background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:28px;display:grid;gap:14px}
.login-card h1{margin:0;font-size:22px}
.login-card p{margin:0;color:var(--muted)}
.login-card input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font-size:15px}
.login-card .code{font-family:var(--mono);letter-spacing:.3em;text-align:center;font-size:20px}
.err{color:var(--bad);font-size:13px}
.who{font-size:12.5px;color:var(--muted);display:flex;gap:8px;align-items:center}
.who button{background:none;border:0;color:var(--accent);cursor:pointer;font-weight:600;padding:0}
.pdfpages{display:grid;gap:12px;justify-items:center}
.pdfpages .pg{background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.08),0 8px 24px rgba(0,0,0,.08)}
.pdfpages canvas{display:block;width:100%;height:auto}
.loading{padding:40px;text-align:center;color:var(--muted)}
.banner{margin:12px 14px 0;padding:10px 14px;border-radius:10px;background:var(--warn-soft);color:var(--warn);font-size:13px}
