/* Invoice scanner, lifted from the old recovery page. Used inside .scan-stage on the sales & use tax page. */
.scan-stage{--green:#213e31;--green-deep:#142d25;--green-mid:#2f5a44;--mint:#49644b;--green-soft:#eef2e6;--lime:#d9e9bc;--lime-deep:#c8dea6;--lime-soft:#eef2e6;--white:#fff;--spring:cubic-bezier(.34,1.56,.64,1);--glass:rgba(255,255,255,.55);--glass-brd:rgba(255,255,255,.9);--glass-shadow:0 16px 44px rgba(27,67,50,.09)}
.scan-stage .chip,.scan-stage .juris-tag,.scan-stage .ind-tag{font-weight:600;letter-spacing:.04em}
.scan-stage .juris-tag,.scan-stage .ind-tag{color:#3c6436;background:#e6efd2}
.scan-stage *{box-sizing:border-box;margin:0;padding:0}
.scan-stage .stage{max-width:620px;margin:0 auto}
  .stage{position:relative}
.stage>*{position:relative;z-index:1}
.doc-stack{position:relative;max-width:528px;margin:0 auto;zoom:.82}
.invoice{position:relative;display:flex;flex-direction:column;background:#fdfdfb;border:1px solid #e9ece8;border-radius:14px;padding:26px 24px 22px;overflow:hidden;transform-origin:top center;min-height:678px; /* A4 portrait ratio ≈ 480×678 */
    font-family:'Instrument Sans',Inter,Arial,sans-serif;
    /* paper feel: warm stock + two sheets peeking behind */
    box-shadow:0 1px 2px rgba(27,67,50,.05),0 24px 55px rgba(27,67,50,.15),7px 9px 0 -2px #ffffff,8px 12px 16px -7px rgba(27,67,50,.18),14px 18px 0 -4px #fbfbf6,16px 24px 20px -11px rgba(27,67,50,.12);
    opacity:0;transform:translateY(24px) scale(.98);transition:opacity .8s ease,transform .9s var(--spring),box-shadow .6s ease}
/* invoice document numbers use the document's own (neutral) font, tabular */
  .invoice .num,.doc-title .meta .val,.item .c,.item .amt,.actual{font-family:'Instrument Sans',Inter,Arial,sans-serif;font-variant-numeric:tabular-nums;letter-spacing:0}
.scene.in .invoice{opacity:1;transform:none}
.scene.focus .invoice{transform:scale(1.02);box-shadow:0 46px 96px rgba(27,67,50,.22)}
/* scanning grid overlay */
  .grid{position:absolute;inset:0;pointer-events:none;z-index:2;opacity:0;transition:opacity .5s ease;
    background:linear-gradient(90deg,rgba(27,67,50,.04) 1px,transparent 1px);background-size:38px 100%}
.scene.scan .grid{opacity:.6}
.scene.focus .grid{opacity:0}
/* document letterhead */
  .doc-top{position:relative;z-index:3;display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:13px;border-bottom:2px solid var(--green);transition:opacity .45s}
.vendor{display:flex;gap:12px;align-items:flex-start}
.vlogo{width:40px;height:40px;border-radius:9px;background:var(--green);color:var(--lime);font-family:'Instrument Sans',Inter,Arial,sans-serif;font-weight:700;font-size:1.3rem;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.vendor .v{font-weight:700;font-size:1rem;color:var(--ink)}
.vendor .vmeta{font-size:.71rem;color:var(--muted);line-height:1.45;margin-top:3px}
.inv-state{border-radius:4px;padding:0 3px;transition:background .4s ease .6s,color .4s ease .6s}
.scene.scan .inv-state{background:var(--lime);color:var(--green-deep);font-weight:700}
.juris-tag{display:inline-flex;align-items:center;gap:5px;margin-top:8px;font-family:'Instrument Sans',Inter,Arial,sans-serif;font-size:.62rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#3c6436;background:var(--lime-soft);border:1px solid rgba(60,100,54,.35);padding:3px 9px;border-radius:100px;opacity:0;transform:scale(.85);transform-origin:left center;transition:opacity .3s ease .7s,transform .35s var(--spring) .7s}
.scene.scan .juris-tag{opacity:1;transform:scale(1)}
.ind-tag{display:inline-flex;align-items:center;gap:5px;margin-top:8px;font-family:'Instrument Sans',Inter,Arial,sans-serif;font-size:.62rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#3c6436;background:var(--lime-soft);border:1px solid rgba(60,100,54,.35);padding:3px 9px;border-radius:100px;opacity:0;transform:scale(.85);transform-origin:left center;transition:opacity .3s ease 1.2s,transform .35s var(--spring) 1.2s}
.scene.scan .ind-tag{opacity:1;transform:scale(1)}
.doc-title{text-align:right;flex-shrink:0}
.doc-title .big{font-family:'Instrument Sans',Inter,Arial,sans-serif;font-weight:700;font-size:1.5rem;letter-spacing:.04em;color:var(--green);line-height:1}
.doc-title .meta{display:grid;grid-template-columns:auto auto;gap:3px 14px;justify-content:end;margin-top:10px;font-size:.72rem}
.doc-title .meta .k{color:var(--muted);text-align:left}
.doc-title .meta .val{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--ink);font-weight:500;text-align:right}
.billto{position:relative;z-index:3;margin:12px 0 20px;transition:opacity .45s}
.billto .k{font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:700}
.billto .nm{font-size:.85rem;color:var(--ink);font-weight:600;margin-top:3px}
/* itemized table */
  .thead{position:relative;z-index:3;display:grid;grid-template-columns:1fr 28px 72px 76px 96px;gap:8px;padding:7px 8px;font-size:.62rem;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-weight:700;border-bottom:1px solid var(--line);transition:opacity .45s}
.thead span:nth-child(2),.thead span:nth-child(3),.thead span:nth-child(4){text-align:right}
.thead .rev{text-align:left;color:var(--mint);padding-left:4px}
.item{position:relative;z-index:3;display:grid;grid-template-columns:1fr 28px 72px 76px 96px;gap:8px;align-items:center;padding:9px 8px;border-bottom:1px solid rgba(27,67,50,.07);border-radius:8px;
    opacity:.5;filter:saturate(.35);transition:opacity .45s ease,filter .45s ease,background .5s ease}
.item.lit{opacity:1;filter:saturate(1);animation:rowflash .7s ease}
@keyframes rowflash{0%{background:rgba(190,242,100,.4)}60%{background:rgba(190,242,100,.16)}100%{background:transparent}}
.item[data-i="1"],.item[data-i="3"]{background:rgba(27,67,50,.022)}
.item .name{font-size:.86rem;color:var(--ink);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item .c{font-size:.78rem;text-align:right;color:var(--muted)}
.item .amt{font-size:.84rem;text-align:right;color:var(--ink);font-weight:700}
/* Arthiva review annotation — its own column; revealed AFTER the scan completes */
  .chip{justify-self:start;font-family:'Instrument Sans',Inter,Arial,sans-serif;font-size:.6rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:4px 9px;border-radius:100px;white-space:nowrap;
    display:inline-flex;align-items:center;gap:5px;opacity:0;transform:scale(.55);transform-origin:left center;transition:opacity .3s ease,transform .4s var(--spring)}
.item.lit .chip{opacity:1;transform:scale(1)}
.chip::before{font-size:.6rem;line-height:1}
.chip.ex{background:var(--lime-soft);color:#3c6436;border:1px solid rgba(60,100,54,.35)}
.chip.ex::before{content:'✓'}
.chip.part{background:#f6ecd6;color:#8a6820;border:1px solid rgba(184,146,58,.5)}
.chip.part::before{content:'◐'}
.chip.tax{background:var(--green-soft);color:var(--mint);border:1px solid rgba(61,122,82,.3)}
.chip.tax::before{content:'•'}
/* totals block */
  .totals{position:relative;z-index:3;margin-left:auto;width:62%;margin-top:6px}
.trow{display:flex;justify-content:space-between;padding:7px 8px;font-size:.83rem;color:var(--muted);transition:opacity .45s}
.trow .num{color:var(--ink);font-weight:500}
.trow.total{border-top:2px solid var(--green);margin-top:4px;padding-top:12px;font-weight:700;color:var(--ink);font-size:.92rem}
.trow.total .num{color:var(--green);font-size:1.1rem;font-weight:700}
.taxrow{position:relative;z-index:3;display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-radius:11px;transition:background .5s,box-shadow .5s,transform .5s var(--spring)}
.taxrow .lbl{font-size:.83rem;color:var(--ink);font-weight:600}
.taxvals{display:flex;align-items:center;gap:8px}
.actual{position:relative;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;color:var(--green);font-size:1rem;transition:color .4s}
.actual::after{content:'';position:absolute;left:-2px;right:-2px;top:52%;height:2px;background:#d6554a;width:0;border-radius:2px;transition:width .45s ease .15s}
.scene.focus .actual{color:var(--muted)}
.scene.focus .actual::after{width:calc(100% + 4px)}
/* arrow & corrected value take NO space until the comparison runs, so $9,116 stays right-aligned with Subtotal/Total */
  .arrow{display:none;opacity:0;color:var(--muted);font-size:.9rem;transition:opacity .4s .2s}
.owed{display:none;opacity:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:800;color:var(--green-deep);background:var(--lime);padding:2px 8px;border-radius:6px;font-size:1rem;transform:translateY(2px) scale(.92);transition:opacity .45s .25s,transform .45s var(--spring) .25s}
.scene.focus .arrow{display:inline;opacity:1}
.scene.focus .owed{display:inline-block;opacity:1;transform:none}
.scene.focus .item{opacity:.24}
.scene.focus .thead,.scene.focus .billto,.scene.focus .trow{opacity:.26}
.scene.focus .doc-top{opacity:.4}
.scene.focus .taxrow{background:var(--lime-soft);box-shadow:0 0 0 2px var(--lime-deep),0 16px 40px rgba(33,62,49,.18);transform:scale(1.06)}
.docfoot{position:relative;z-index:3;margin-top:auto;padding-top:18px;border-top:1px dashed var(--line);font-size:.67rem;color:var(--muted);text-align:center;letter-spacing:.02em}
/* scanning beam — sharp line + trailing glow */
  .beam{position:absolute;left:0;right:0;height:1px;top:14%;z-index:4;pointer-events:none;opacity:0;
    background:var(--lime-deep);box-shadow:0 0 18px 2px rgba(200,222,166,.9)}
.beam::before{content:'';position:absolute;left:0;right:0;bottom:0;height:48px;background:linear-gradient(180deg,rgba(190,242,100,.32),transparent)}
.beam::after{content:'';position:absolute;left:0;right:0;top:0;height:42px;background:linear-gradient(0deg,rgba(190,242,100,.20),transparent)}
.scene.scan .beam{opacity:1;animation:scan 4.8s cubic-bezier(.55,0,.45,1) forwards}
@keyframes scan{0%{top:14%}100%{top:88%}}
.scene.focus .beam{opacity:0}
/* recovery STAMP — slams onto the document after analysis */
  .scene.verdict .invoice{opacity:.5;filter:saturate(.72)}
.stamp{position:absolute;left:50%;top:49%;z-index:14;pointer-events:none;text-align:center;white-space:nowrap;
    color:#2f7d4f;border:3px solid #2f7d4f;border-radius:12px;padding:10px 24px;
    background:rgba(247,253,247,.4);box-shadow:0 0 0 4px rgba(47,125,79,.07),0 10px 30px rgba(27,67,50,.12);
    opacity:0;transform:translate(-50%,-50%) rotate(-12deg) scale(1.7);
    transition:opacity .18s ease,transform .34s cubic-bezier(.2,.8,.25,1.45)}
.scene.verdict .stamp{opacity:.92;transform:translate(-50%,-50%) rotate(-12deg) scale(1)}
.stamp .s-top{font-family:'Instrument Sans',Inter,Arial,sans-serif;font-weight:800;font-size:1.45rem;letter-spacing:.16em;text-transform:uppercase;line-height:1}
.stamp .s-amt{font-family:'Instrument Sans',Inter,Arial,sans-serif;font-weight:800;font-size:2.7rem;letter-spacing:.01em;line-height:1.05;border-top:2px solid #2f7d4f;border-bottom:2px solid #2f7d4f;margin:6px 0;padding:3px 0}
.stamp .s-sub{font-family:'Instrument Sans',Inter,Arial,sans-serif;font-weight:700;font-size:.62rem;letter-spacing:.15em;text-transform:uppercase}
.progressbar{display:flex;align-items:center;justify-content:center;gap:13px;margin-top:34px}
.steps{display:flex;gap:7px;flex-shrink:0}
.steps .s{width:9px;height:9px;border-radius:50%;background:var(--line);transition:all .3s var(--spring)}
.steps .s.on{background:var(--green);transform:scale(1.3)}
.caption{color:var(--muted);font-size:1.16rem;font-weight:500;min-height:1.2em;line-height:1}
/* ============ FULL-PAGE SECTIONS ============ */
  h2,h3,h4{font-family:'Instrument Sans',Inter,Arial,sans-serif}
