/* ====== themes: corporate light (default) / dark; JS sets data-theme ====== */
:root, html[data-theme="light"]{
  --bg:#f4f6fa; --bg2:#eef1f7; --card:#ffffff; --card2:#f8fafc;
  --line:#e2e8f0; --txt:#1e293b; --muted:#64748b;
  --acc:#1d4ed8; --acc-soft:#eff4ff; --acc2:#2563eb;
  --green:#15803d; --green-soft:#ecfdf3;
  --red:#b91c1c; --red-soft:#fef2f2;
  --amber:#b45309; --amber-soft:#fffbeb;
  --purple:#6d28d9; --purple-soft:#f5f3ff;
  --shadow:0 1px 3px rgba(16,24,40,.07),0 1px 2px rgba(16,24,40,.05);
  --shadow-lg:0 12px 28px rgba(16,24,40,.10);
  --r:12px;
}
html[data-theme="dark"]{
  --bg:#0e1117; --bg2:#161b25; --card:#1a2030; --card2:#1f2638;
  --line:#2a3349; --txt:#e6e9f2; --muted:#8b93ab;
  --acc:#4f7df9; --acc-soft:#1d2a4d; --acc2:#6c8cff;
  --green:#34d399; --green-soft:#11302a;
  --red:#f87171; --red-soft:#39181c;
  --amber:#fbbf24; --amber-soft:#352a10;
  --purple:#a78bfa; --purple-soft:#27203f;
  --shadow:0 2px 6px rgba(0,0,0,.35);
  --shadow-lg:0 14px 34px rgba(0,0,0,.5);
}

*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--txt);
  font-family:Inter,-apple-system,"Segoe UI",sans-serif;font-size:15px;
  transition:background .2s,color .2s}
.hidden{display:none!important}
h1,h2{margin:0 0 .6rem;font-weight:600}
h2{font-size:.95rem;letter-spacing:.01em;color:var(--txt)}
.muted{color:var(--muted)} .small{font-size:.78rem}

/* ---------- buttons / inputs ---------- */
.btn{border:0;border-radius:8px;padding:.62rem 1.15rem;font:600 .9rem Inter;cursor:pointer;
  display:inline-flex;align-items:center;gap:.5rem;justify-content:center;transition:.15s}
.btn.primary{background:var(--acc);color:#fff}
.btn.primary:hover{background:var(--acc2)}
.btn.primary:disabled{opacity:.45;cursor:not-allowed}
.btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}
.btn.ghost{background:transparent;color:var(--muted);border:1px solid var(--line)}
.btn.ghost:hover{color:var(--acc);border-color:var(--acc)}
.btn.block{width:100%} .btn.sm{padding:.38rem .85rem;font-size:.8rem}
.btn.icon{padding:.42rem .6rem;font-size:1rem;line-height:1}
input[type=email],input[type=password],input[type=text]{
  width:100%;padding:.62rem .85rem;margin:.3rem 0;border-radius:8px;border:1px solid var(--line);
  background:var(--card);color:var(--txt);font:500 .9rem Inter;outline:none;transition:border .15s}
input:focus{border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-soft)}
select.theme{padding:.4rem .6rem;border-radius:8px;border:1px solid var(--line);
  background:var(--card);color:var(--txt);font:600 .8rem Inter;cursor:pointer;outline:none}

/* ---------- landing ---------- */
.landing{max-width:1140px;margin:0 auto;padding:0 1.5rem 0}
.btn.lg{padding:.8rem 1.6rem;font-size:1rem;border-radius:10px}
.eyebrow{display:inline-block;background:var(--acc-soft);color:var(--acc);border:1px solid var(--acc);
  border-radius:999px;padding:.3rem .95rem;font:600 .76rem Inter;letter-spacing:.03em;margin-bottom:1rem}
.lsection{padding:3.4rem 0 0;text-align:center}
.ltitle{font-size:1.7rem;font-weight:800;letter-spacing:-.01em;margin:.2rem 0 1.6rem}

/* hero */
.hero{display:grid;grid-template-columns:1.15fr 1fr;gap:2.5rem;align-items:center;
  padding:4rem 0 3rem;text-align:left}
@media(max-width:920px){.hero{grid-template-columns:1fr;text-align:center}
  .hero-visual{justify-content:center}.hero-cta{justify-content:center}}
.hero h1{font-size:2.55rem;line-height:1.18;font-weight:800;letter-spacing:-.015em;margin:0 0 1.1rem}
.hero h1 em{font-style:normal;background:linear-gradient(90deg,var(--acc),#7c3aed);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.hero p{color:var(--muted);line-height:1.7;font-size:1.04rem;max-width:560px}
.hero p b{color:var(--txt)}
.hero-cta{display:flex;gap:.8rem;margin-top:1.7rem;flex-wrap:wrap}
.trust-line{display:flex;gap:.55rem;flex-wrap:wrap;margin-top:1.4rem}
@media(max-width:920px){.trust-line{justify-content:center}}
.trust-chip{display:inline-flex;align-items:center;gap:.4rem;background:var(--card);
  border:1px solid var(--line);border-left:3px solid var(--acc);border-radius:9px;
  padding:.5rem .85rem;font:600 .8rem Inter;color:var(--txt);box-shadow:var(--shadow);
  transition:.15s}
.trust-chip:hover{transform:translateY(-2px);border-color:var(--acc);box-shadow:var(--shadow-lg)}

/* hero mock visual */
.hero-visual{display:flex}
.mock-card{width:100%;max-width:430px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;box-shadow:var(--shadow-lg);padding:1rem 1.1rem;
  transform:rotate(1.2deg);position:relative}
.mock-card::before{content:"";position:absolute;inset:-26px;z-index:-1;border-radius:30px;
  background:radial-gradient(60% 60% at 50% 40%,var(--acc-soft) 0%,transparent 70%)}
.mock-head{display:flex;align-items:center;gap:.4rem;margin-bottom:.7rem}
.mock-dot{width:9px;height:9px;border-radius:50%;background:var(--line)}
.mock-file{margin-left:.5rem;font:600 .76rem 'JetBrains Mono';color:var(--muted)}
.mock-pills{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.7rem}
.mock-row{display:flex;justify-content:space-between;gap:.6rem;align-items:center;
  border-top:1px solid var(--line);padding:.5rem .1rem;font-size:.78rem;color:var(--muted)}
.mock-row .mono{font-family:'JetBrains Mono';color:var(--txt)}
.mock-row.sus{background:var(--amber-soft);border-radius:6px;color:var(--amber)}
.mock-foot{margin-top:.7rem;font:600 .72rem 'JetBrains Mono';color:var(--green)}

/* stat band */
.statband{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1px;
  background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden;
  margin:1rem 0 0;box-shadow:var(--shadow)}
.statcell{background:var(--card);padding:1.4rem 1rem;text-align:center}
.statv{font:800 1.7rem Inter;background:linear-gradient(90deg,var(--acc),#7c3aed);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.statk{color:var(--muted);font-size:.8rem;margin-top:.3rem}

/* steps + features */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.9rem;text-align:left}
.step{background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:1.1rem 1.2rem;font-size:.86rem;color:var(--muted);line-height:1.6;box-shadow:var(--shadow)}
.step b{color:var(--txt)}
.stepno{display:inline-flex;width:26px;height:26px;border-radius:50%;background:var(--acc);
  color:#fff;align-items:center;justify-content:center;font:700 .78rem Inter;margin:0 .5rem .5rem 0}
.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:1rem;text-align:left}
.feature{background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:1.3rem 1.4rem;box-shadow:var(--shadow);transition:.18s}
.feature:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--acc)}
.feature b{font-size:.97rem}
.feature p{color:var(--muted);font-size:.86rem;line-height:1.65;margin:.45rem 0 0}
.f-ico{font-size:1.5rem;margin-bottom:.55rem}

/* time savings compare */
.compare{display:flex;gap:1rem;align-items:stretch;justify-content:center;flex-wrap:wrap}
.compare-card{flex:1;min-width:280px;max-width:440px;border-radius:14px;padding:1.3rem 1.5rem;
  text-align:left;border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow)}
.compare-card h3{margin:0 0 .7rem;font-size:1rem}
.compare-card.before h3{color:var(--red)} .compare-card.after h3{color:var(--green)}
.compare-card.after{border-color:var(--green)}
.compare-card ul{margin:0;padding-left:1.1rem;color:var(--muted);font-size:.88rem;line-height:1.9}
.compare-arrow{align-self:center;font-size:1.6rem;color:var(--acc);font-weight:800}
.savings-note{color:var(--muted);margin-top:1.4rem;font-size:.95rem}
.savings-note b{color:var(--acc)}

/* checklist */
.checklist{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:.55rem 1.4rem;
  text-align:left;max-width:980px;margin:0 auto;color:var(--txt);font-size:.9rem}
.checklist span{background:var(--card);border:1px solid var(--line);border-radius:9px;
  padding:.6rem .9rem;box-shadow:var(--shadow)}

/* testimonials */
.quotes{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem;text-align:left}
.quote{background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:1.3rem 1.4rem;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:1rem}
.quote p{margin:0;color:var(--txt);font-size:.9rem;line-height:1.7}
.quote-who{display:flex;align-items:center;gap:.7rem;color:var(--muted);font-size:.78rem;line-height:1.4}
.quote-who b{color:var(--txt)}

/* faq */
.faq{max-width:760px;margin:0 auto;text-align:left}
.faq .eyebrow,.faq .ltitle{display:block;text-align:center}
.faq .eyebrow{width:fit-content;margin-left:auto;margin-right:auto}
.faq details{background:var(--card);border:1px solid var(--line);border-radius:11px;
  padding:.95rem 1.2rem;margin-bottom:.6rem;box-shadow:var(--shadow)}
.faq summary{cursor:pointer;font:600 .92rem Inter;color:var(--txt);list-style:none;
  display:flex;justify-content:space-between;align-items:center}
.faq summary::after{content:"+";color:var(--acc);font-size:1.2rem;font-weight:700}
.faq details[open] summary::after{content:"−"}
.faq details p{color:var(--muted);font-size:.87rem;line-height:1.7;margin:.7rem 0 0}

/* cta banner + footer */
.cta-banner{margin:3.6rem 0 0;border-radius:18px;padding:3rem 2rem;text-align:center;
  background:linear-gradient(120deg,var(--acc),#7c3aed);color:#fff;box-shadow:var(--shadow-lg)}
.cta-banner h2{font-size:1.7rem;font-weight:800;margin:0 0 .5rem;color:#fff}
.cta-banner p{opacity:.85;margin:0 0 1.4rem}
.cta-banner .btn.primary{background:#fff;color:var(--acc)}
.cta-banner .btn.primary:hover{background:#f1f5ff}
.lfooter{text-align:center;color:var(--muted);font-size:.78rem;padding:2.2rem 0 2.6rem}

a{color:var(--acc);font-weight:600;text-decoration:none}
a:hover{text-decoration:underline}
.brand{border:0;background:transparent;cursor:pointer;color:var(--txt);font-family:Inter}

/* ---------- auth ---------- */
.auth-wrap{display:flex;align-items:flex-start;justify-content:center;min-height:calc(100vh - 60px);
  padding:3.5rem 1rem 2rem}
.auth-card{width:392px;background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:2.4rem 2.2rem;box-shadow:var(--shadow-lg);text-align:center}
.auth-card.wide{width:680px;max-width:96vw}
.signup-grid{text-align:left}
/* Clickwrap row: the box stays top-aligned so a wrapped sentence does not
   drag it to the middle of the paragraph. */
.signup-terms{display:flex;gap:.55rem;align-items:flex-start;text-align:left;
  margin-top:1rem;font-size:.86rem;color:var(--muted)}
.signup-terms input{width:auto;margin:.15rem 0 0;flex:none}
.signup-terms a{color:var(--acc);font-weight:600}

/* ---- legal documents (/terms, /privacy) ---------------------------------
   Long-form reading, so the column is capped near 70 characters and the type
   is larger than the app's. */
.legal-wrap{padding:2.5rem 1.25rem 4rem;background:var(--bg)}
.legal-doc{max-width:52rem;margin:0 auto;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);box-shadow:var(--shadow);padding:2.5rem 2.75rem 2rem;color:var(--txt)}
.legal-head{text-align:center;border-bottom:1px solid var(--line);padding-bottom:1.5rem;
  margin-bottom:1.75rem}
.legal-head h1{margin:.6rem 0 .35rem;font-size:1.9rem}
.legal-lede{font-size:1.02rem;line-height:1.7;color:var(--muted);margin-bottom:2rem}
.legal-doc section{margin-bottom:1.9rem}
.legal-doc h2{font-size:1.12rem;margin:0 0 .6rem;color:var(--txt)}
.legal-doc h3{font-size:.95rem;margin:1rem 0 .4rem;color:var(--muted);
  text-transform:uppercase;letter-spacing:.04em}
.legal-doc p{line-height:1.72;margin:0 0 .75rem}
.legal-doc ul{margin:0 0 .75rem;padding-left:1.25rem}
.legal-doc li{line-height:1.7;margin-bottom:.4rem}
.legal-doc a{color:var(--acc);font-weight:600}
/* the clauses a reader must not skim past */
.legal-callout{background:var(--acc-soft);border-left:3px solid var(--acc);
  border-radius:0 var(--r) var(--r) 0;padding:1.25rem 1.4rem .5rem}
.legal-foot{display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap;
  border-top:1px solid var(--line);padding-top:1.5rem;margin-top:.5rem}
@media (max-width:640px){
  .legal-doc{padding:1.75rem 1.25rem 1.5rem}
  .legal-head h1{font-size:1.5rem}
}
.brand-mark{width:56px;height:56px;margin:0 auto 1rem;border-radius:14px;
  background:var(--acc);display:flex;align-items:center;justify-content:center;
  font:700 1.15rem Inter;color:#fff;letter-spacing:.02em}
.brand-mark.sm{width:32px;height:32px;font-size:.78rem;border-radius:9px;margin:0}
.auth-card h1{font-size:1.25rem}
.tagline{color:var(--muted);margin:.2rem 0 1.6rem;line-height:1.55;font-size:.9rem}
.auth-row{display:flex;gap:.6rem;margin-top:.7rem}
.auth-row .btn{flex:1}
.auth-error{color:var(--red);font-size:.82rem;margin-top:.8rem}

/* ---------- app shell ---------- */
.topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;
  padding:.7rem 1.4rem;border-bottom:1px solid var(--line);background:var(--card);
  position:sticky;top:0;z-index:5;box-shadow:var(--shadow)}
.brand{display:flex;align-items:center;gap:.6rem;font-weight:700;font-size:.98rem}
.topbar-left{display:flex;align-items:center;gap:.8rem}
.userbox{display:flex;align-items:center;gap:.7rem;color:var(--muted);font-size:.85rem}
.account{position:relative}
.account-chip{display:flex;align-items:center;gap:.5rem;border:1px solid var(--line);
  background:var(--card);color:var(--txt);border-radius:999px;padding:.3rem .8rem .3rem .35rem;
  font:600 .84rem Inter;cursor:pointer;transition:.15s}
.account-chip:hover{border-color:var(--acc)}
.avatar{width:26px;height:26px;border-radius:50%;background:var(--acc);color:#fff;
  display:flex;align-items:center;justify-content:center;font:700 .72rem Inter}
.caret{color:var(--muted);font-size:.7rem}
.account-menu{position:absolute;right:0;top:calc(100% + 8px);width:230px;z-index:30;
  background:var(--card);border:1px solid var(--line);border-radius:12px;
  box-shadow:var(--shadow-lg);padding:.5rem;display:flex;flex-direction:column;gap:2px}
.acct-email{color:var(--muted);font-size:.78rem;border-bottom:1px solid var(--line);
  padding:.45rem .6rem .6rem;margin-bottom:.25rem;word-break:break-all}
.menu-item{border:0;background:transparent;color:var(--txt);text-align:left;
  padding:.55rem .7rem;border-radius:8px;font:600 .86rem Inter;cursor:pointer;transition:.12s}
.menu-item:hover{background:var(--acc-soft);color:var(--acc)}
.menu-item.danger:hover{background:var(--red-soft);color:var(--red)}
.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:.5rem 1.2rem;margin:.8rem 0;max-width:760px}
.layout{display:grid;grid-template-columns:330px minmax(0,1fr);gap:1.3rem;max-width:1480px;
  margin:1.3rem auto;padding:0 1.4rem;transition:grid-template-columns .2s}
body.nav-collapsed .layout{grid-template-columns:minmax(0,1fr)}
body.nav-collapsed .sidebar{display:none}
@media(max-width:980px){.layout{grid-template-columns:1fr}}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:1.15rem 1.3rem;margin-bottom:1.2rem;box-shadow:var(--shadow)}

/* ---------- upload ---------- */
.dropzone{border:1.5px dashed var(--line);border-radius:10px;padding:1.5rem 1rem;text-align:center;
  cursor:pointer;transition:.15s;margin-bottom:.9rem;background:var(--card2)}
.dropzone:hover,.dropzone.over{border-color:var(--acc);background:var(--acc-soft)}
.dz-icon{font-size:1.6rem}
.dz-text{margin:.4rem 0 .2rem;font-size:.9rem}
.dz-hint{color:var(--muted);font-size:.74rem}
.dz-file{margin-top:.7rem;font:600 .8rem 'JetBrains Mono';color:var(--green);word-break:break-all}
.seg{display:flex;background:var(--bg2);border:1px solid var(--line);border-radius:9px;
  padding:3px;margin-bottom:.6rem}
.seg button{flex:1;border:0;background:transparent;color:var(--muted);padding:.46rem 0;
  border-radius:7px;font:600 .8rem Inter;cursor:pointer;transition:.12s}
.seg button.on{background:var(--card);color:var(--acc);box-shadow:var(--shadow)}

/* ---------- history ---------- */
.history{display:flex;flex-direction:column;gap:.5rem;max-height:430px;overflow-y:auto}
.hist-item{display:flex;justify-content:space-between;align-items:center;gap:.6rem;
  background:var(--card2);border:1px solid var(--line);border-radius:9px;padding:.55rem .8rem}
.hist-item.clickable{cursor:pointer;transition:.12s}
.hist-item.clickable:hover{border-color:var(--acc);background:var(--acc-soft)}
.hist-item .hname{font:600 .82rem Inter;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:140px}
.hist-item .hmeta{color:var(--muted);font-size:.7rem}
.hist-dl{display:flex;gap:.45rem}
.hist-dl a{color:var(--acc);font-size:.74rem;text-decoration:none;font-weight:600}
.hist-dl a:hover{text-decoration:underline}
.dot{width:8px;height:8px;border-radius:50%;flex:none}
.dot.ok{background:var(--green)} .dot.bad{background:var(--red)}

/* ---------- empty / progress / error ---------- */
.empty{text-align:center;padding:4.5rem 2rem;color:var(--muted)}
.empty-art{width:64px;height:64px;margin:0 auto 1.1rem;border-radius:16px;background:var(--acc-soft);
  color:var(--acc);display:flex;align-items:center;justify-content:center;font:700 1.3rem Inter}
.empty h2{color:var(--txt);font-size:1.1rem} .empty p{max-width:560px;margin:.6rem auto;line-height:1.6;font-size:.9rem}
.ladder{display:flex;gap:.55rem;justify-content:center;flex-wrap:wrap;margin-top:1.3rem}
.ladder span{background:var(--card);border:1px solid var(--line);border-radius:999px;
  padding:.32rem .85rem;font-size:.76rem;color:var(--muted)}
.progress{text-align:center;padding:3.5rem 2rem;color:var(--muted)}
.spinner{width:40px;height:40px;border-radius:50%;margin:0 auto 1.1rem;
  border:3px solid var(--line);border-top-color:var(--acc);animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* extraction animation: document scan + floating arithmetic (transform/opacity
   only — GPU-composited, deliberately lightweight) */
.scan-scene{position:relative;width:200px;height:150px;margin:0 auto 1.2rem}
.scan-doc{position:absolute;left:50%;top:0;transform:translateX(-50%);width:110px;height:140px;
  background:var(--card);border:1px solid var(--line);border-radius:10px;
  box-shadow:var(--shadow);padding:16px 14px;display:flex;flex-direction:column;gap:9px;
  overflow:hidden}
.scan-doc i{display:block;height:6px;border-radius:3px;background:var(--line);width:100%}
.scan-doc i.w60{width:60%}.scan-doc i.w80{width:80%}.scan-doc i.w50{width:50%}
.scan-beam{position:absolute;left:0;right:0;top:-20px;height:20px;
  background:linear-gradient(180deg,transparent,var(--acc));opacity:.55;
  animation:beam 2.2s ease-in-out infinite}
@keyframes beam{0%{transform:translateY(0)}55%{transform:translateY(140px)}
  100%{transform:translateY(0)}}
.op{position:absolute;font:700 1rem 'JetBrains Mono';color:var(--acc);opacity:0;
  animation:opfloat 3s ease-in-out infinite}
.op1{left:8%;top:62%}.op2{left:16%;top:22%;animation-delay:.5s}
.op3{right:14%;top:30%;animation-delay:1s;color:#7c3aed}
.op4{right:6%;top:64%;animation-delay:1.5s}
.op5{left:2%;top:40%;animation-delay:2s;color:#7c3aed}
.op6{right:24%;top:8%;animation-delay:2.5s}
@keyframes opfloat{0%,100%{opacity:0;transform:translateY(8px) scale(.8)}
  30%,60%{opacity:.85;transform:translateY(-6px) scale(1)}}
.ai-title{font:700 1.02rem Inter;background:linear-gradient(90deg,var(--acc),#7c3aed,var(--acc));
  background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;
  animation:shimmer 2.4s linear infinite;margin-bottom:.35rem}
@keyframes shimmer{to{background-position:-200% 0}}
.eq-row{display:flex;gap:1.2rem;justify-content:center;flex-wrap:wrap;margin-top:1.1rem}
.eq{font:600 .76rem 'JetBrains Mono';color:var(--green);opacity:.25;animation:eqpulse 3.6s ease-in-out infinite}
.eq.e2{animation-delay:1.2s}.eq.e3{animation-delay:2.4s}
@keyframes eqpulse{0%,100%{opacity:.25}25%{opacity:1}}
.errbox{background:var(--red-soft);border:1px solid var(--red);color:var(--red);
  border-radius:10px;padding:.9rem 1.1rem;margin-bottom:1.2rem;font-size:.88rem}

/* ---------- result ---------- */
.pills{display:flex;flex-wrap:wrap;gap:.4rem;margin:.55rem 0 .9rem}
.pill{display:inline-flex;align-items:center;gap:.3rem;padding:.26rem .75rem;border-radius:999px;
  font:600 .72rem Inter;border:1px solid transparent}
.pill.green{background:var(--green-soft);color:var(--green);border-color:var(--green)}
.pill.red{background:var(--red-soft);color:var(--red);border-color:var(--red)}
.pill.blue{background:var(--acc-soft);color:var(--acc);border-color:var(--acc)}
.pill.purple{background:var(--purple-soft);color:var(--purple);border-color:var(--purple)}
.pill.gray{background:var(--bg2);color:var(--muted);border-color:var(--line)}
.pill.orange{background:var(--amber-soft);color:var(--amber);border-color:var(--amber)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:.7rem;margin:.9rem 0}
.stat{background:var(--card2);border:1px solid var(--line);border-radius:10px;padding:.7rem .95rem}
.stat .v{font:600 1.15rem 'JetBrains Mono'} .stat .k{color:var(--muted);font-size:.7rem;margin-top:.15rem}
.dlrow{display:flex;gap:.6rem;margin:.5rem 0 .9rem;flex-wrap:wrap}
.dlrow a{color:var(--acc);font-size:.84rem;font-weight:600;text-decoration:none;
  border:1px solid var(--line);border-radius:8px;padding:.42rem .85rem;background:var(--card)}
.dlrow a:hover{border-color:var(--acc);background:var(--acc-soft)}
table{border-collapse:collapse;width:100%;font-size:.82rem;margin:.6rem 0}
th,td{border:1px solid var(--line);padding:6px 9px;text-align:left}
th{background:var(--bg2);color:var(--muted);font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em}
td.num{text-align:right;font-family:'JetBrains Mono';font-size:.77rem}
tr.suspect td{background:var(--amber-soft)}
.ok{color:var(--green);font-weight:700} .bad{color:var(--red);font-weight:700}
.kv{color:var(--muted);font-size:.84rem;line-height:1.7}
.kv b{color:var(--txt)}
/* two-per-row metadata/fields grid — entries never overlap */
.kvgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));
  gap:.5rem .9rem;margin:.7rem 0}
.kvitem{background:var(--card2);border:1px solid var(--line);border-radius:9px;
  padding:.45rem .75rem;min-width:0;display:flex;flex-direction:column;gap:.1rem}
.kvk{color:var(--muted);font-size:.68rem;font-weight:600;text-transform:uppercase;
  letter-spacing:.04em}
.kvv{color:var(--txt);font-size:.84rem;word-break:break-word;overflow-wrap:anywhere}
/* inline edit mode */
input.cellinput{width:100%;min-width:60px;padding:.28rem .45rem;margin:0;
  border:1px solid var(--acc);border-radius:6px;background:var(--card);
  color:var(--txt);font:500 .78rem Inter}
input.cellinput.num{font-family:'JetBrains Mono';text-align:right}
.kvitem input.cellinput{font-size:.84rem}
.tablewrap{overflow-x:auto}
.result-title{font-size:1.12rem;font-weight:700;word-break:break-all}
.mapgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.4rem .9rem;margin:.6rem 0}
/* compact Tally bar under the result summary */
.tally-card{border-left:3px solid var(--acc)}
.tally-bar{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.tally-label{font:700 .9rem Inter;color:var(--txt)}
.tally-select{flex:1;min-width:200px;max-width:340px;padding:.5rem .6rem}
.tally-seg{margin-bottom:0;max-width:190px;flex:none}
.tally-seg button{padding:.4rem .8rem}
.tally-xml-link{font-size:.82rem;white-space:nowrap}
.conn-ind{font-size:.76rem;font-weight:600;white-space:nowrap;cursor:pointer;
  padding:.22rem .55rem;border-radius:999px;margin-left:auto}
.conn-ind.on{color:#15803d;background:rgba(21,128,61,.12)}
.conn-ind.off{color:var(--muted);background:var(--line)}
.tally-details{margin-top:.5rem}
.tally-details summary{cursor:pointer;font:600 .78rem Inter;color:var(--muted)}
.tally-details summary:hover{color:var(--acc)}
.tally-details[open]{background:var(--card2);border:1px solid var(--line);
  border-radius:10px;padding:.7rem .9rem}

.taxbox{background:var(--card2);border:1px solid var(--line);border-radius:10px;
  padding:.8rem .9rem;margin:.5rem 0;max-width:760px}
.taxrow{display:grid;grid-template-columns:1fr 22px 1.4fr 34px;gap:.5rem;
  margin-bottom:.45rem;align-items:center}
.taxrow input{margin:0}
.tax-arrow{color:var(--acc);font-weight:800;text-align:center}
.taxhead{display:grid;grid-template-columns:1fr 22px 1.4fr 34px;gap:.5rem;
  font-size:.7rem;color:var(--muted);margin-bottom:.25rem}
.taxhead b{color:var(--txt)}
.tax-example{background:var(--acc-soft);border:1px solid var(--acc);border-radius:8px;
  padding:.55rem .8rem;font-size:.74rem;color:var(--txt);line-height:1.6;margin-bottom:.6rem}
#tm-list .hist-item{margin-bottom:.5rem}
.maplabel{display:flex;flex-direction:column;gap:.15rem;color:var(--muted);font-size:.76rem;font-weight:600}
.fhint{font-weight:400;font-size:.72rem;color:var(--muted);line-height:1.5;opacity:.85;margin-top:.1rem}
