/* ============================================================
   ShirtMath scan — redesigned shell.
   Loaded AFTER scan.css so these rules win.
   Everything is scoped under .scan-root. Nothing else is touched.
   ============================================================ */

.scan-root{max-width:1180px;margin:0 auto;padding:8px 0 40px}

.scan-shell{
  display:grid;
  grid-template-columns:minmax(0,1fr) 300px;
  gap:40px;
  align-items:start;
}

/* ---------- left column ---------- */
.scan-main{min-width:0;max-width:620px}

.scan-rail{display:flex;gap:6px;margin:0 0 30px}
.scan-rail i{flex:1;height:3px;border-radius:100px;background:var(--rule);display:block}
.scan-rail i.done{background:var(--navy)}
.scan-rail i.now{background:var(--navy);box-shadow:0 0 0 3px rgba(255,98,79,.15)}

.scan-stage{display:none;animation:sfade .28s ease both}
.scan-stage.on{display:block}
@keyframes sfade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){
  .scan-stage{animation:none}
}

.scan-eyebrow{
  font-family:var(--mono);font-size:11px;letter-spacing:.15em;text-transform:uppercase;
  color:var(--navy);margin-bottom:10px}
.scan-opt{
  font-family:var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-3);background:var(--card-2);border:1px solid var(--rule);
  padding:2px 7px;border-radius:100px;margin-left:7px;vertical-align:1px}

.scan-h{
  font-family:var(--serif);font-size:clamp(26px,3.4vw,34px);line-height:1.12;
  font-weight:600;letter-spacing:-.015em;margin:0 0 12px;color:var(--ink)}
.scan-lede{font-size:16px;line-height:1.6;color:var(--ink-2);margin:0 0 24px;max-width:48ch}
.scan-note{font-size:13.5px;line-height:1.55;color:var(--ink-2);margin:10px 0 0}
.scan-note a{color:var(--navy)}

/* fields */
.scan-field{display:block;margin:0 0 22px;max-width:340px}
.scan-field span{
  display:block;font-family:var(--mono);font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-3);margin-bottom:7px}
.scan-field select{
  width:100%;padding:12px 14px;font-size:15px;border-radius:10px;
  border:1px solid var(--rule);background:var(--card);color:var(--ink)}
.scan-field select:focus{border-color:var(--navy);outline:none;box-shadow:0 0 0 3px rgba(255,98,79,.12)}

/* buttons */
.scan-primary{
  display:block;width:100%;max-width:340px;background:var(--navy);color:#fff;
  border:1px solid var(--navy);border-radius:10px;padding:14px 22px;
  font-size:15.5px;font-weight:600;font-family:var(--body);cursor:pointer;
  transition:background .14s,transform .08s}
.scan-primary:hover:not(:disabled){background:var(--navy-ink);border-color:var(--navy-ink)}
.scan-primary:active:not(:disabled){transform:translateY(1px)}
.scan-primary:disabled{opacity:.45;cursor:not-allowed}
.scan-text{
  display:inline-flex;align-items:center;min-height:44px;background:none;border:none;
  color:var(--ink-2);font-size:14px;font-family:var(--body);cursor:pointer;padding:10px 4px;
  text-decoration:underline;text-underline-offset:3px}
.scan-text:hover{color:var(--navy)}
.scan-filebtn{
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--card);border:1px solid var(--rule);border-radius:10px;
  padding:13px 20px;font-size:15px;cursor:pointer;color:var(--ink);
  transition:border-color .14s,background .14s}
.scan-filebtn:hover{border-color:var(--navy);color:var(--navy);background:var(--card)}

/* reference toggle */
.scan-toggle{display:flex;gap:8px;margin:0 0 14px;max-width:340px}
.scan-toggle button{
  flex:1;background:var(--card);border:1px solid var(--rule);border-radius:9px;
  padding:11px 10px;font-size:14px;font-family:var(--body);color:var(--ink-2);cursor:pointer}
.scan-toggle button.on{background:var(--ink);color:var(--card);border-color:var(--ink)}
.scan-ref-body p{margin:0}

/* ---------- camera ---------- */
.scan-capture{
  position:relative;width:100%;max-width:480px;aspect-ratio:4/3;
  background:linear-gradient(150deg,#EFE4D4,#DCC3A4);
  border:1px solid var(--rule);border-radius:16px;overflow:hidden;margin:0 0 16px}
.scan-video,.scan-preview{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.scan-frameguide{
  position:absolute;inset:12%;border:2px dashed rgba(255,255,255,.85);border-radius:10px;
  pointer-events:none}
.scan-camstate{
  position:absolute;left:0;right:0;bottom:0;padding:14px 16px;
  background:linear-gradient(transparent,rgba(51,41,31,.75));
  color:#fff;font-family:var(--mono);font-size:12px;line-height:1.45;min-height:20px}
.scan-camstate:empty{display:none}
.scan-camstate b{color:#fff}
.scan-camstate .sc-act{
  display:inline-flex;align-items:center;min-height:44px;margin-top:10px;
  background:#fff;color:var(--ink);border:none;border-radius:9px;padding:10px 18px;
  font-family:var(--body);font-size:14px;font-weight:600;cursor:pointer}
.scan-camstate .sc-act:hover{background:var(--card-2)}
.scan-guide-status{
  font-family:var(--mono);font-size:12px;color:var(--ink-2);margin:0 0 12px;min-height:18px}
.scan-guide-status[data-ready="1"]{color:var(--match)}

.scan-capture-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;max-width:480px}
.scan-capture-actions .scan-primary{width:auto;flex:1 1 200px;max-width:none}
.scan-retake{display:flex;gap:10px;flex-wrap:wrap;align-items:center;max-width:480px}
.scan-retake .scan-primary{width:auto;flex:1 1 200px;max-width:none}

/* consent */
.scan-consent{
  display:flex;gap:12px;align-items:flex-start;background:var(--card);
  border:1px solid var(--rule);border-radius:12px;padding:16px 18px;
  margin:0 0 20px;max-width:480px;cursor:pointer}
.scan-consent input{margin-top:3px;accent-color:var(--navy);width:18px;height:18px;flex:none}
.scan-consent span{font-size:14px;line-height:1.55;color:var(--ink-2)}

/* analyzing */
.scan-steps{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:14px;max-width:420px}
.scan-steps li{
  display:flex;align-items:center;gap:12px;font-size:15px;color:var(--ink-3);
  padding-left:30px;position:relative}
.scan-steps li::before{
  content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:18px;height:18px;border-radius:50%;border:2px solid var(--rule);box-sizing:border-box}
.scan-steps li.now{color:var(--ink)}
.scan-steps li.now::before{border-color:var(--navy);border-top-color:transparent;animation:sspin .8s linear infinite}
.scan-steps li.done{color:var(--ink)}
.scan-steps li.done::before{background:var(--match);border-color:var(--match)}
@keyframes sspin{to{transform:translateY(-50%) rotate(360deg)}}

/* results */
.scan-overlaywrap{position:relative;max-width:420px;margin:0 0 20px;border-radius:14px;overflow:hidden}
.scan-overlaywrap img{width:100%;display:block}
.scan-overlaywrap svg{position:absolute;inset:0;width:100%;height:100%}
.scan-chips{display:flex;flex-direction:column;gap:9px;max-width:480px;margin:0 0 22px}
.scan-chip{
  display:flex;align-items:center;gap:14px;background:var(--card);
  border:1px solid var(--rule);border-radius:12px;padding:14px 16px}
.scan-chip b{font-family:var(--serif);font-size:15px;min-width:112px;font-weight:600}
.scan-chip .sc-val{font-family:var(--mono);font-size:16px;color:var(--ink)}
.scan-chip .sc-state{
  margin-left:auto;font-family:var(--mono);font-size:10px;letter-spacing:.06em;
  text-transform:uppercase;padding:4px 10px;border-radius:100px;border:1px solid}
.sc-measured{color:var(--match);border-color:#B6CDBE;background:#F2F7F3}
.sc-review{color:var(--chalk);border-color:#E4CE96;background:#FBF6E9}
.sc-withheld{color:var(--ink-3);border-color:var(--rule);background:var(--card-2)}
.scan-chip input{
  width:88px;text-align:right;font-family:var(--mono);padding:7px 9px;
  border:1px solid var(--rule);border-radius:8px}
.scan-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;max-width:480px}
.scan-actions .scan-primary{width:auto;flex:1 1 200px;max-width:none}

/* ---------- right column: process diagram ---------- */
.scan-aside{position:sticky;top:88px}
.scan-guide-card{
  background:var(--card);border:1px solid var(--rule);border-radius:18px;
  padding:20px 18px 18px;box-shadow:0 8px 28px rgba(120,72,40,.06)}
.scan-guide-title{
  font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-3);margin-bottom:14px}
.scan-diagram{width:100%;height:auto;display:block}
.scan-guide-foot{
  font-size:12.5px;line-height:1.55;color:var(--ink-3);margin:14px 0 0;
  padding-top:14px;border-top:1px solid var(--rule-2)}

/* diagram styling */
.sd-panel{fill:transparent;stroke:var(--rule-2);stroke-width:1}
.sd-step{opacity:.42;transition:opacity .3s ease}
.sd-step.sd-on{opacity:1}
.sd-step.sd-on .sd-panel{fill:var(--card-2);stroke:var(--navy);stroke-opacity:.35}
.sd-n{font-family:var(--mono);font-size:10px;fill:var(--navy);letter-spacing:.08em}
.sd-t{font-family:var(--serif);font-size:13px;fill:var(--ink);font-weight:600}
.sd-lbl,.sd-dim{font-family:var(--mono);font-size:8.5px;fill:var(--ink-3)}
.sd-shirt{fill:var(--card-2);stroke:var(--ink-3);stroke-width:1.4;stroke-linejoin:round}
.sd-step.sd-on .sd-shirt{fill:#fff;stroke:var(--ink-2)}
.sd-card{fill:var(--navy);opacity:.85}
.sd-smooth{fill:none;stroke:var(--ink-3);stroke-width:1;stroke-dasharray:3 3}
.sd-arrow{stroke:var(--navy);stroke-width:1.2;marker-end:none}
.sd-phone{fill:none;stroke:var(--ink-2);stroke-width:1.5;rx:4}
.sd-lens{fill:var(--ink-2)}
.sd-beam{stroke:var(--navy);stroke-width:1;stroke-dasharray:3 3;opacity:.7}
.sd-measure{stroke:var(--navy);stroke-width:1.3}
.sd-tick{stroke:var(--navy);stroke-width:1.3}

/* ---------- responsive ---------- */
@media(max-width:960px){
  .scan-shell{grid-template-columns:1fr;gap:0}
  .scan-main{max-width:none;order:1}
  .scan-aside{position:static;order:0;margin:0 0 26px}
  .scan-guide-card{padding:16px}
  /* on mobile the diagram becomes a compact horizontal strip */
  .scan-diagram{max-height:190px}
  .scan-guide-foot{display:none}
}
@media(max-width:560px){
  .scan-aside{display:none}     /* collapse the container, not just its contents */
  .scan-h{font-size:25px}
  .scan-primary,.scan-filebtn{width:100%;max-width:none}
  .scan-capture-actions{flex-direction:column;align-items:stretch}
  .scan-capture{aspect-ratio:3/4}
  .scan-guide-card{display:none}   /* keep the phone focused on the one action */
}


/* keyboard focus: visible on every interactive control */
.scan-root :is(button,select,input,label.scan-filebtn,a):focus-visible{
  outline:2px solid var(--navy);outline-offset:3px;border-radius:8px}

/* ---------- result screen: prominent save/match CTA ---------- */
.scan-result-cta{display:flex;gap:12px;flex-wrap:wrap;align-items:stretch;margin:4px 0 0;max-width:520px}
.scan-result-cta .scan-primary{width:auto;flex:1 1 220px;max-width:none}
.scan-ghost{background:var(--card);color:var(--navy);border:1px solid var(--navy)}
.scan-ghost:hover:not(:disabled){background:#FBF0EA;border-color:var(--navy-ink);color:var(--navy-ink)}
.scan-marker-nudge{
  font-size:13px;line-height:1.55;color:var(--ink-2);margin:14px 0 0;max-width:520px;
  padding:12px 14px;background:#FBF6E9;border:1px solid #E4CE96;border-radius:11px}
.scan-marker-nudge a{color:var(--navy)}

/* ---------- marker step: printed sheet as primary ---------- */
.scan-marker-primary{
  background:linear-gradient(158deg,#FFFDF8,#F6ECDC);
  border:1px solid var(--rule);border-radius:16px;padding:20px;max-width:520px;
  box-shadow:0 8px 24px rgba(120,72,40,.06)}
.scan-marker-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.scan-marker-head b{font-family:var(--serif);font-size:19px;color:var(--ink);font-weight:600}
.scan-marker-pill{
  font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;
  color:#fff;background:var(--navy);padding:3px 9px;border-radius:100px}
.scan-marker-btn{
  display:inline-flex;align-items:center;justify-content:center;min-height:46px;
  margin-top:14px;padding:12px 22px;background:var(--navy);color:#fff;border-radius:10px;
  font-family:var(--body);font-size:15px;font-weight:600;text-decoration:none;
  transition:background .14s}
.scan-marker-btn:hover{background:var(--navy-ink)}
