/* Vintage letterpress design system — shared foundation (Step 0 extraction). Plain static CSS, NOT Tailwind — do not run css:build. */
:root{
  --vh-cream:#FAF6EE; --vh-white:#FDFCF7; --vh-ink:#181510; --vh-muted:#5E574A;
  --vh-line:#D7CEB9; --vh-line-strong:#B6AB8F;
  --vh-display:'Oswald',sans-serif; --vh-script:'Yellowtail',cursive;
  --vh-slab:'Bevan',serif; --vh-body:'DM Sans',sans-serif;
  --vh-footer:#171410;
}
.vh-eyebrow{font-family:var(--vh-display);font-weight:500;text-transform:uppercase;letter-spacing:0.26em;font-size:1.15rem;color:var(--vh-muted);display:inline-flex;align-items:center;gap:0.9rem;}
.vh-eyebrow .vh-x{color:var(--vh-ink);font-size:1rem;}
.vh-script{font-family:var(--vh-script);text-transform:none;letter-spacing:0;font-weight:400;display:inline-block;line-height:0.88;color:var(--vh-ink);}
.vh-btn{display:inline-flex;align-items:center;gap:0.9rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-weight:500;font-size:1.35rem;padding:1.5rem 3rem;text-decoration:none;border:1.5px solid var(--vh-ink);transition:all .2s ease;cursor:pointer;}
.vh-btn--solid{background:var(--vh-ink);color:var(--vh-white);}
.vh-btn--solid:hover{background:transparent;color:var(--vh-ink);}
.vh-link{display:inline-flex;align-items:center;gap:0.7rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-weight:500;font-size:1.3rem;color:var(--vh-ink);text-decoration:none;border-bottom:1.5px solid var(--vh-ink);padding-bottom:0.3rem;}
.vh-link svg{width:1.4rem;height:1.4rem;transition:transform .2s ease;}
.vh-link:hover svg{transform:translateX(3px);}
/* ===== HERO ===== */
.vh-hero{position:relative;min-height:92vh;display:flex;align-items:center;overflow:hidden;}
.vh-hero__photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;filter:none;}
.vh-hero::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(18,15,10,0.72) 0%,rgba(18,15,10,0.38) 48%,rgba(18,15,10,0.12) 100%),linear-gradient(180deg,transparent 72%,var(--vh-cream) 100%);}
.vh-hero__inner{position:relative;z-index:3;max-width:122rem;margin:0 auto;width:100%;padding:8rem 3.2rem 0;color:#fff;}
.vh-hero .vh-eyebrow{color:rgba(255,255,255,0.82);margin-bottom:3rem;}
.vh-hero .vh-eyebrow .vh-x{color:#fff;}
.vh-hero__title{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.012em;line-height:0.98;color:#fff;font-size:clamp(5rem,8.4vw,10rem);max-width:20ch;margin-bottom:2.8rem;}
.vh-hero__title .vh-script{color:#fff;font-size:1.04em;}
.vh-hero__sub{font-family:var(--vh-body);font-size:1.85rem;line-height:1.6;color:rgba(255,255,255,0.9);max-width:50ch;margin-bottom:4rem;}
.vh-hero__cta{display:flex;gap:2.4rem;align-items:center;flex-wrap:wrap;}
.vh-hero__cta .vh-btn--solid{background:var(--vh-white);color:var(--vh-ink);border-color:var(--vh-white);}
.vh-hero__cta .vh-btn--solid:hover{background:transparent;color:#fff;border-color:#fff;}
.vh-hero__cta .vh-link{color:#fff;border-color:#fff;}
/* ===== shared section scaffolding (used by all vintage sections) ===== */
.vh-section{padding:9rem 0;}
@media(min-width:768px){.vh-section{padding:11rem 0;}}
.vh-cream-bg{background:var(--vh-cream);}
.vh-white-bg{background:var(--vh-white);}
.vh-wrap{max-width:122rem;margin:0 auto;padding:0 3.2rem;}
.vh-section-title{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.012em;line-height:0.98;color:var(--vh-ink);font-size:clamp(3.6rem,5.3vw,6.4rem);}
.vh-section-title .vh-script{font-size:1.18em;margin-left:0.06em;}
.vh-section-title--solo{font-family:var(--vh-script);text-transform:lowercase;font-weight:400;letter-spacing:0;line-height:1.15;}
.vd-h1.vd-h1--solo{font-family:var(--vh-display);text-transform:uppercase;font-weight:600;letter-spacing:0.01em;line-height:0.98;}
.vd-h1.vd-h1--solo .vh-script{font-family:inherit;font-weight:inherit;text-transform:inherit;letter-spacing:inherit;line-height:inherit;font-size:1em;margin-left:0;}
/* ===== two-door ===== */
.vh-doors{display:grid;grid-template-columns:1fr 1fr;gap:2.4rem;margin-top:5rem;}
@media(max-width:768px){.vh-doors{grid-template-columns:1fr;}}
.vh-door{overflow:hidden;border-radius:6px;text-decoration:none;display:flex;flex-direction:column;border:1px solid var(--vh-line);background:var(--vh-ink);transition:transform .25s ease,box-shadow .25s ease;}
.vh-door:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(24,21,16,0.18);}
.vh-door__pic{height:42rem;overflow:hidden;background:#ddd6c6;}
.vh-door__pic img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;}
.vh-door__body{background:var(--vh-ink);color:var(--vh-white);padding:2.8rem 2.8rem 3rem;flex:1;}
.vh-door__body h3{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.02em;font-size:2.6rem;color:#fff;margin-bottom:1rem;line-height:1.05;}
.vh-door__body p{font-family:var(--vh-body);font-size:1.4rem;color:rgba(251,248,241,0.76);margin-bottom:1.9rem;line-height:1.6;}
.vh-door__body .vh-link{color:#fff;border-bottom:none;font-size:1.2rem;}
@media(max-width:768px){.vh-door__pic{height:36rem;}}
/* ===== engraved rule ===== */
.vh-rule{display:flex;align-items:center;gap:1.8rem;color:var(--vh-line-strong);}
.vh-rule::before,.vh-rule::after{content:'';height:1px;background:var(--vh-line-strong);flex:1;}
.vh-rule .vh-mark{font-size:1.4rem;color:var(--vh-ink);}
/* ===== services ===== */
.vh-services{display:grid;grid-template-columns:2fr 1fr;gap:5rem;margin-top:5rem;}
@media(max-width:900px){.vh-services{grid-template-columns:1fr;}}
.vh-flagship{display:grid;grid-template-columns:1fr 1fr;gap:4.5rem;align-items:center;}
@media(max-width:600px){.vh-flagship{grid-template-columns:1fr;}}
.vh-flagship__img{width:100%;aspect-ratio:4/5;object-fit:cover;border:1px solid var(--vh-line-strong);border-radius:4px;display:block;}
.vh-svc-label{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.2em;font-size:1.1rem;color:var(--vh-muted);margin-bottom:1.4rem;display:flex;align-items:center;gap:0.8rem;}
.vh-svc-label .vh-x{color:var(--vh-ink);font-size:1rem;}
.vh-flagship h3{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.01em;font-size:3.4rem;color:var(--vh-ink);margin-bottom:1.8rem;line-height:1.05;}
.vh-svc-body p,.vh-companion p{font-family:var(--vh-body);font-size:1.5rem;color:var(--vh-muted);line-height:1.75;margin-bottom:2rem;}
.vh-companion h3{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.01em;font-size:2.5rem;color:var(--vh-ink);margin-bottom:1rem;line-height:1.1;}
.vh-companion-divider{height:1px;background:var(--vh-line);margin:3.6rem 0;}
/* ===== spec strip ===== */
.vh-spec{border-top:1px solid var(--vh-line-strong);border-bottom:1px solid var(--vh-line-strong);padding:2.1rem 0;background:var(--vh-cream);}
.vh-spec__row{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:1.4rem 2.8rem;max-width:122rem;margin:0 auto;padding:0 3.2rem;}
.vh-spec__row span{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.16em;font-size:1.2rem;color:var(--vh-muted);}
.vh-spec__row .vh-sep{color:var(--vh-line-strong);}
.vh-spec__row .vh-bold{color:var(--vh-ink);font-weight:600;}
/* ===== work — 4 static images ===== */
.vh-work-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2.6rem;margin-top:5rem;}
@media(max-width:900px){.vh-work-grid{grid-template-columns:repeat(2,1fr);gap:3rem 2.6rem;}}
@media(max-width:520px){.vh-work-grid{grid-template-columns:1fr;}}
.vh-work-card img{display:block;width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:4px;}
.vh-work-card .vh-work-client{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.18em;font-size:1rem;color:var(--vh-muted);margin-top:1.4rem;}
.vh-work-card .vh-work-piece{font-family:var(--vh-script);font-size:2rem;color:var(--vh-ink);margin-top:0.3rem;}
/* ===== process ledger ===== */
.vh-ledger{list-style:none;padding:0;border-top:2px solid var(--vh-ink);margin-top:5rem;}
.vh-ledger-row{display:grid;grid-template-columns:minmax(20rem,24rem) 1fr;gap:5rem;padding:3.6rem 0;border-bottom:1px solid var(--vh-line);}
@media(max-width:768px){.vh-ledger-row{grid-template-columns:1fr;gap:1.4rem;}}
.vh-ledger-num{display:flex;align-items:center;gap:1.4rem;}
.vh-ledger-num .vh-n{font-family:var(--vh-slab);font-size:5rem;line-height:0.8;color:var(--vh-ink);}
.vh-ledger-num .vh-t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.16em;font-size:1.2rem;color:var(--vh-muted);max-width:14ch;}
.vh-ledger-row p{font-family:var(--vh-body);font-size:1.6rem;line-height:1.7;color:var(--vh-ink);max-width:64ch;}
/* ===== lead paragraph ===== */
.vh-lead{font-family:var(--vh-body);font-size:1.8rem;line-height:1.7;color:var(--vh-muted);max-width:56ch;}
/* ===== faq ===== */
.vh-faq-list{border-top:1px solid var(--vh-ink);margin-top:4rem;}
.vh-faq-item{border-bottom:1px solid var(--vh-line);}
.vh-faq-q{width:100%;background:none;border:none;text-align:left;display:flex;justify-content:space-between;gap:2rem;align-items:center;padding:2.4rem 0;cursor:pointer;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.03em;font-size:1.7rem;font-weight:500;color:var(--vh-ink);}
.vh-faq-q:focus-visible{outline:2px solid var(--vh-ink);outline-offset:4px;}
.vh-faq-q .vh-pm{font-family:var(--vh-slab);font-size:2rem;line-height:1;flex-shrink:0;transition:transform .3s ease;}
.vh-faq-q .vh-pm.is-open{transform:rotate(45deg);}
.vh-faq-a p{padding:0 4rem 2.4rem 0;font-family:var(--vh-body);font-size:1.55rem;line-height:1.7;color:var(--vh-muted);}
/* ===== closing cta ===== */
.vh-cta-grid{display:grid;grid-template-columns:1fr auto;gap:4rem;align-items:center;}
@media(max-width:768px){.vh-cta-grid{grid-template-columns:1fr;}}
.vd-wrap{max-width:104rem;margin:0 auto;padding:0 3.2rem;}
.vd-wrap--narrow{max-width:68rem;}

/* ============ HERO (light) ============ */
.vd-hero{background:var(--vh-white);padding-top:4.4rem;padding-bottom:4.4rem;}
.vd-back{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.14em;font-size:1.15rem;font-weight:500;color:var(--vh-muted);text-decoration:none;display:inline-flex;align-items:center;gap:0.6rem;margin-bottom:2.6rem;}
.vd-back:hover{color:var(--vh-ink);}
.vd-back .arr{transition:transform .18s ease;display:inline-block;}
.vd-back:hover .arr{transform:translateX(-3px);}
.vd-hero .vh-eyebrow{margin-bottom:1.6rem;}
.vd-h1{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.01em;line-height:0.98;color:var(--vh-ink);font-size:clamp(3.4rem,5.5vw,5.6rem);}
.vd-h1 .vh-script{font-size:1.16em;text-transform:none;}
.vd-lead{font-family:var(--vh-body);font-size:1.55rem;line-height:1.65;color:var(--vh-muted);max-width:54ch;margin-top:1.8rem;}
.vd-lead em{font-style:italic;color:var(--vh-ink);}
.vd-meta{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.18em;font-size:1.15rem;font-weight:500;color:var(--vh-muted);margin-top:2.4rem;display:flex;align-items:center;gap:0.9rem;flex-wrap:wrap;}
.vd-meta .copy{display:inline-flex;width:1.5rem;height:1.5rem;color:var(--vh-line-strong);cursor:pointer;}
.vd-meta .copy:hover{color:var(--vh-ink);}
.vd-meta .dot{color:var(--vh-line-strong);}

/* ============ TIMELINE — oat band, monochrome ink ============ */
.vd-timeline{background:var(--vh-cream);border-top:1px solid var(--vh-line-strong);border-bottom:1px solid var(--vh-line-strong);padding:4rem 0;}
.vd-track{position:relative;display:flex;justify-content:space-between;}
.vd-track::before{content:"";position:absolute;left:calc(100% / (var(--n,6) * 2));right:calc(100% / (var(--n,6) * 2));top:1.4rem;height:1.5px;background:var(--vh-line-strong);z-index:0;}
.vd-track .vd-progress{content:"";position:absolute;left:calc(100% / (var(--n,6) * 2));top:1.4rem;height:1.5px;background:var(--vh-ink);z-index:0;}
.vd-step{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;text-align:center;flex:1;}
/* min-width:0 only from md up — on mobile the partial's min-w-[12rem] must win
   so the horizontal-scroll track keeps labels from piling up. */
@media (min-width:768px){.vd-step{min-width:0;}}
.vd-dot{width:2.8rem;height:2.8rem;border-radius:999px;display:flex;align-items:center;justify-content:center;background:var(--vh-cream);}
.vd-dot--done{background:var(--vh-ink);}
.vd-dot--current{background:var(--vh-ink);box-shadow:0 0 0 5px rgba(24,21,16,0.12);}
.vd-dot--future{background:var(--vh-cream);border:2px solid var(--vh-line-strong);}
.vd-dot svg{width:1.3rem;height:1.3rem;}
.vd-step__label{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.13em;margin-top:1.2rem;line-height:1.1;}
.vd-step--done .vd-step__label{color:var(--vh-muted);font-weight:500;font-size:1.25rem;}
.vd-step--current .vd-step__label{color:var(--vh-ink);font-weight:600;font-size:1.4rem;}
.vd-step--future .vd-step__label{color:var(--vh-line-strong);font-weight:500;font-size:1.25rem;}
.vd-step__date{font-family:var(--vh-body);font-size:1.1rem;color:var(--vh-muted);margin-top:0.5rem;letter-spacing:0.02em;}
.vd-step--future .vd-step__date{color:var(--vh-line-strong);}

/* ============ CONTENT ============ */
.vd-body{background:var(--vh-white);padding:5.2rem 0;}
.vd-card{border:1px solid var(--vh-line);background:var(--vh-white);border-radius:6px;overflow:hidden;}
.vd-card__sec{padding:2.6rem 2.8rem;}
.vd-card__sec + .vd-card__sec{border-top:1px solid var(--vh-line);}
.vd-label{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.18em;font-size:1.1rem;font-weight:600;color:var(--vh-muted);margin-bottom:1.6rem;}

/* items */
.vd-item{display:flex;align-items:flex-start;gap:1.6rem;padding:1.4rem 0;}
.vd-item + .vd-item{border-top:1px solid var(--vh-line);}
.vd-item:first-child{padding-top:0;}
.vd-thumb{flex-shrink:0;width:5.6rem;height:5.6rem;border-radius:4px;border:1px solid var(--vh-line);background:var(--vh-cream);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.vd-thumb__mono{font-family:var(--vh-display);font-weight:600;font-size:1.9rem;color:var(--vh-line-strong);}
.vd-thumb img{width:100%;height:100%;object-fit:cover;}
.vd-item__main{flex:1;min-width:0;}
.vd-item__name{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.01em;font-weight:500;font-size:1.5rem;color:var(--vh-ink);line-height:1.2;}
.vd-item__meta{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);margin-top:0.4rem;}
.vd-item__price{font-family:var(--vh-display);font-weight:600;font-size:1.5rem;color:var(--vh-ink);white-space:nowrap;}

/* ledger */
.vd-ledger{display:flex;flex-direction:column;gap:0.9rem;}
.vd-ledger__row{display:flex;justify-content:space-between;font-family:var(--vh-body);font-size:1.35rem;}
.vd-ledger__row .k{color:var(--vh-muted);}
.vd-ledger__row .v{color:var(--vh-ink);}
.vd-ledger__total{display:flex;justify-content:space-between;align-items:baseline;padding-top:1.4rem;margin-top:0.4rem;border-top:1px solid var(--vh-line);}
.vd-ledger__total .k{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-weight:600;font-size:1.4rem;color:var(--vh-ink);}
.vd-ledger__total .v{font-family:var(--vh-display);font-weight:600;font-size:2.2rem;color:var(--vh-ink);}
.vd-paid{display:flex;justify-content:space-between;align-items:center;font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);padding-top:1.3rem;}
.vd-paid .lbl{display:inline-flex;align-items:center;gap:0.7rem;}
.vd-paid .pdot{width:0.7rem;height:0.7rem;border-radius:999px;background:#5E8A66;}

/* buttons */
.vd-btn{display:inline-flex;align-items:center;justify-content:center;gap:0.6rem;width:100%;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-weight:600;font-size:1.25rem;padding:1.4rem 2rem;text-decoration:none;border:1.5px solid var(--vh-ink);color:var(--vh-ink);background:transparent;cursor:pointer;transition:all .18s ease;border-radius:4px;}
.vd-btn:hover{background:var(--vh-ink);color:var(--vh-white);}
.vd-btn--solid{background:var(--vh-ink);color:var(--vh-white);}
.vd-btn--solid:hover{background:transparent;color:var(--vh-ink);}
.vd-subnote{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);text-align:center;margin-top:1rem;line-height:1.5;}

/* aux cards grid */
.vd-grid2{display:grid;grid-template-columns:1fr 1fr;gap:1.6rem;margin-top:1.6rem;}
@media(max-width:620px){.vd-grid2{grid-template-columns:1fr;}}
.vd-aux{border:1px solid var(--vh-line);background:var(--vh-white);border-radius:6px;padding:2.2rem 2.4rem;}
.vd-aux p.body{font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-muted);line-height:1.55;}
.vd-aux p.body a{color:var(--vh-ink);text-decoration:underline;text-underline-offset:2px;}
.vd-aux p.addr{font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-ink);line-height:1.55;}

/* stacks for quote details */
.vd-stack{display:flex;flex-direction:column;}
.vd-stack > * + *{margin-top:2.6rem;padding-top:2.6rem;border-top:1px solid var(--vh-line);}
.vd-explainer{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);line-height:1.55;margin-top:1rem;}

/* mockup placeholder */
.vd-mockup{border:1px solid var(--vh-line);background:var(--vh-cream);border-radius:6px;aspect-ratio:4/3;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:3rem;}
.vd-mockup__mono{width:7rem;height:7rem;border:1px solid var(--vh-line-strong);border-radius:6px;display:flex;align-items:center;justify-content:center;font-family:var(--vh-script);font-size:3rem;color:var(--vh-line-strong);background:var(--vh-white);margin-bottom:2rem;}
.vd-mockup__t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-weight:600;font-size:1.5rem;color:var(--vh-muted);}
.vd-mockup__s{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);margin-top:0.8rem;}
.vd-mockbanner{display:flex;align-items:center;gap:0.8rem;font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);margin-bottom:1.8rem;}
.vd-mockbanner .pdot{width:0.8rem;height:0.8rem;border-radius:999px;background:#B59A4D;}

/* returns band */
.vd-returns{background:var(--vh-cream);border-top:1px solid var(--vh-line-strong);padding:4.4rem 0;}
.vd-returns__card{border:1px solid var(--vh-line);background:var(--vh-white);border-radius:6px;padding:2.4rem 2.6rem;}
.vd-returns__head{display:flex;align-items:center;gap:0.8rem;margin-bottom:0.8rem;}
.vd-returns__head .pdot{width:0.7rem;height:0.7rem;border-radius:999px;background:var(--vh-muted);}
.vd-returns__title{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.04em;font-weight:600;font-size:1.5rem;color:var(--vh-ink);}
.vd-returns__body{font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-muted);line-height:1.55;}

/* ============ EARLY-STAGE "QUOTING" BODY (appended from comp) ============ */
.vd-twocol{display:grid;grid-template-columns:1.5fr 1fr;gap:5.2rem;align-items:start;}
@media(max-width:820px){.vd-twocol{grid-template-columns:1fr;gap:3.6rem;}}
.vd-pstep{display:flex;gap:1.8rem;padding:2.1rem 0;border-top:1px solid var(--vh-line);}
.vd-pstep:first-of-type{border-top:none;padding-top:0;}
.vd-pstep__num{font-family:var(--vh-slab);font-size:2.6rem;color:var(--vh-line-strong);line-height:0.9;flex-shrink:0;width:3.4rem;}
.vd-pstep__t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.04em;font-weight:600;font-size:1.55rem;color:var(--vh-ink);}
.vd-pstep__b{font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-muted);line-height:1.55;margin-top:0.5rem;max-width:46ch;}
.vd-req__row{display:flex;justify-content:space-between;align-items:baseline;gap:1.6rem;padding:1.25rem 0;border-top:1px solid var(--vh-line);}
.vd-req__row:first-of-type{border-top:none;padding-top:0;}
.vd-req__k{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1.15rem;font-weight:500;color:var(--vh-muted);white-space:nowrap;}
.vd-req__v{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.01em;font-weight:600;font-size:1.45rem;color:var(--vh-ink);text-align:right;}
.vd-req__note{display:block;padding-top:1.25rem;border-top:1px solid var(--vh-line);margin-top:0.25rem;}
.vd-req__note .k{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1.15rem;font-weight:500;color:var(--vh-muted);}
.vd-req__note .v{font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-ink);line-height:1.55;margin-top:0.6rem;font-style:italic;}
.vd-card--cream{background:var(--vh-cream);}
.vd-help{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);line-height:1.55;margin-top:1.8rem;}
.vd-help a{color:var(--vh-ink);text-decoration:underline;text-underline-offset:2px;}

/* ===== CART — "order ticket" ===== */
.vc-head{background:var(--vh-white);padding:4.4rem 0 4.4rem;}
.vc-headmeta{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.18em;font-size:1.2rem;font-weight:500;color:var(--vh-muted);margin-top:1.6rem;}
.vc-reordered{margin-top:2rem;display:inline-flex;align-items:center;gap:0.8rem;border:1px solid var(--vh-line-strong);background:var(--vh-cream);padding:1rem 1.6rem;font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-ink);border-radius:4px;}
.vc-body{background:var(--vh-cream);}
.vc-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(36rem,1fr);gap:5.6rem;align-items:start;padding:5rem 0 8rem;}
@media(max-width:940px){.vc-grid{grid-template-columns:1fr;gap:3.6rem;padding-bottom:6rem;}}

/* left — item ledger */
.vc-itemshead{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:1.6rem;}
.vc-itemshead .lbl{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.18em;font-size:1.15rem;font-weight:600;color:var(--vh-muted);}
.vc-itemshead .cnt{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);}
.vc-list{list-style:none;border-top:2px solid var(--vh-ink);}
.vc-line{display:grid;grid-template-columns:7.2rem 1fr auto;gap:2.2rem;padding:2.6rem 0;border-bottom:1px solid var(--vh-line);}
.vc-line__thumb{width:7.2rem;height:7.2rem;border:1px solid var(--vh-line);background:var(--vh-white);border-radius:4px;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;}
.vc-line__thumb img{width:100%;height:100%;object-fit:cover;}
.vc-line__mono{font-family:var(--vh-display);font-weight:600;font-size:2.4rem;color:var(--vh-line-strong);}
.vc-line__name{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.01em;font-weight:500;font-size:1.6rem;color:var(--vh-ink);line-height:1.2;}
.vc-line__meta{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);margin-top:0.5rem;}
.vc-line__mod{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-line-strong);margin-top:0.4rem;}
.vc-line__unit{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);margin-top:0.7rem;}
.vc-line__right{display:flex;flex-direction:column;align-items:flex-end;gap:1.4rem;}
.vc-line__price{font-family:var(--vh-display);font-weight:600;font-size:1.6rem;color:var(--vh-ink);white-space:nowrap;}
.vc-remove{background:none;border:none;color:var(--vh-line-strong);font-size:1.4rem;line-height:1;cursor:pointer;transition:color .15s ease;}
.vc-remove:hover{color:var(--vh-ink);}
.vc-qty{display:inline-flex;align-items:center;border:1px solid var(--vh-line-strong);border-radius:4px;overflow:hidden;}
.vc-qty button{width:3rem;height:3rem;background:none;border:none;color:var(--vh-muted);font-size:1.6rem;cursor:pointer;transition:background .15s ease,color .15s ease;}
.vc-qty button:hover{background:var(--vh-ink);color:var(--vh-white);}
.vc-qty span{min-width:3.2rem;text-align:center;font-family:var(--vh-display);font-weight:500;font-size:1.4rem;color:var(--vh-ink);border-left:1px solid var(--vh-line);border-right:1px solid var(--vh-line);line-height:3rem;}
.vc-continue{display:inline-flex;align-items:center;gap:0.7rem;margin-top:2.8rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1.2rem;font-weight:500;color:var(--vh-muted);text-decoration:none;}
.vc-continue:hover{color:var(--vh-ink);}

/* right — summary ticket */
.vc-summary{position:sticky;top:2.4rem;}
.vc-ticket{border:1px solid var(--vh-line);background:var(--vh-white);border-radius:6px;overflow:hidden;}
.vc-ticket__sec{padding:2.4rem 2.6rem;}
.vc-ticket__sec + .vc-ticket__sec{border-top:1px solid var(--vh-line);}
.vc-ticket__hd{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.18em;font-size:1.1rem;font-weight:600;color:var(--vh-muted);margin-bottom:1.6rem;}

/* promo */
.vc-promo{display:flex;gap:0.8rem;}
.vc-promo input{flex:1;min-width:0;border:1px solid var(--vh-line-strong);background:var(--vh-cream);padding:1.1rem 1.3rem;font-family:var(--vh-body);font-size:1.3rem;text-transform:uppercase;letter-spacing:0.05em;color:var(--vh-ink);border-radius:4px;}
.vc-promo input:focus{outline:none;border-color:var(--vh-ink);}
.vc-promo button{border:1px solid var(--vh-ink);background:transparent;padding:0 1.8rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-size:1.2rem;font-weight:500;color:var(--vh-ink);cursor:pointer;border-radius:4px;transition:all .15s ease;}
.vc-promo button:hover{background:var(--vh-ink);color:var(--vh-white);}
.vc-promo button:disabled{opacity:0.5;cursor:not-allowed;}
.vc-applied{display:flex;justify-content:space-between;align-items:center;font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-ink);}
.vc-applied .code{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.06em;font-weight:600;}
.vc-applied button{background:none;border:none;font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);text-decoration:underline;cursor:pointer;}

/* ledger */
.vc-ledger{display:flex;flex-direction:column;}
.vc-ledger__row{display:flex;justify-content:space-between;padding:0.7rem 0;font-family:var(--vh-body);font-size:1.4rem;}
.vc-ledger__row .k{color:var(--vh-muted);}
.vc-ledger__row .v{color:var(--vh-ink);}
.vc-ledger__row .v--free{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.06em;font-size:1.25rem;font-weight:600;}
.vc-total{display:flex;justify-content:space-between;align-items:baseline;padding-top:1.6rem;margin-top:1rem;border-top:1px solid var(--vh-line);}
.vc-total .k{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-weight:600;font-size:1.45rem;color:var(--vh-ink);}
.vc-total .v{font-family:var(--vh-display);font-weight:700;font-size:2.8rem;line-height:1;letter-spacing:0.01em;color:var(--vh-ink);}

/* free-ship meter */
.vc-meter{margin-top:1.8rem;}
.vc-meter__label{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.13em;font-size:1.1rem;color:var(--vh-muted);margin-bottom:0.8rem;display:flex;align-items:center;gap:0.6rem;}
.vc-meter__label strong{color:var(--vh-ink);font-weight:600;}
.vc-meter__track{height:6px;background:var(--vh-line);border-radius:3px;overflow:hidden;}
.vc-meter__fill{height:100%;background:var(--vh-ink);transition:width .5s ease;}
.vc-meter--done .vc-meter__label{color:var(--vh-ink);}

/* fields */
.vc-flabel{display:block;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.16em;font-size:1.1rem;font-weight:600;color:var(--vh-muted);margin-bottom:0.7rem;}
.vc-field{width:100%;border:1px solid var(--vh-line-strong);background:var(--vh-white);padding:1.3rem 1.4rem;font-family:var(--vh-body);font-size:1.4rem;color:var(--vh-ink);border-radius:4px;}
.vc-field:focus{outline:none;border-color:var(--vh-ink);}
select.vc-field{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%23181510' stroke-width='1.5' d='M1 1.5 6 6.5 11 1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1.4rem center;background-size:1.1rem;padding-right:3.6rem;cursor:pointer;}
.vc-field--mt{margin-top:1.6rem;}
.vc-fieldnote{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);margin-top:0.6rem;line-height:1.5;}
.vc-inline{display:flex;gap:0.8rem;}
.vc-inline .vc-field{flex:1;}
.vc-inline button{border:1px solid var(--vh-ink);background:transparent;padding:0 1.6rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-size:1.2rem;font-weight:500;color:var(--vh-ink);cursor:pointer;border-radius:4px;white-space:nowrap;}

/* checkout button */
.vc-checkout{width:100%;background:var(--vh-ink);color:var(--vh-white);border:1.5px solid var(--vh-ink);padding:1.6rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-weight:600;font-size:1.35rem;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:0.9rem;transition:all .18s ease;margin-top:0.4rem;}
.vc-checkout:hover{background:transparent;color:var(--vh-ink);}
.vc-checkout:disabled{opacity:0.5;cursor:not-allowed;}
.vc-checkout:disabled:hover{background:var(--vh-ink);color:var(--vh-white);}

/* error text — palette-safe, replaces red */
.vc-error{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-ink);font-style:italic;margin-top:0.8rem;}

/* proof promise */
.vc-promise{margin-top:1.8rem;background:var(--vh-cream);border:1px solid var(--vh-line);border-radius:6px;padding:2rem 2.2rem;text-align:center;}
.vc-promise__x{font-size:1.1rem;color:var(--vh-ink);}
.vc-promise__scr{font-family:var(--vh-script);font-size:2.3rem;color:var(--vh-ink);line-height:1.05;margin:0.5rem 0 1rem;}
.vc-promise__bd{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);line-height:1.6;}

/* account line */
.vc-acct{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);line-height:1.6;margin-top:1.6rem;}
.vc-acct strong{color:var(--vh-ink);font-weight:500;}
.vc-acct a{color:var(--vh-ink);text-decoration:underline;text-underline-offset:2px;}

/* saved shipping preview */
.vc-shipto{border:1px solid var(--vh-line);background:var(--vh-cream);border-radius:4px;padding:1.4rem 1.6rem;display:flex;justify-content:space-between;gap:1.6rem;}
.vc-shipto__lbl{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.16em;font-size:1rem;font-weight:600;color:var(--vh-muted);margin-bottom:0.5rem;}
.vc-shipto__txt{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-ink);line-height:1.5;}
.vc-shipto a{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-ink);text-decoration:underline;white-space:nowrap;}

/* empty + loading */
.vc-empty{text-align:center;padding:9rem 0 11rem;}
.vc-empty__mono{width:8rem;height:8rem;margin:0 auto 2.4rem;border:1px solid var(--vh-line-strong);border-radius:6px;display:flex;align-items:center;justify-content:center;font-family:var(--vh-script);font-size:3.4rem;color:var(--vh-line-strong);background:var(--vh-white);}
.vc-empty__t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.02em;font-weight:600;font-size:2.8rem;color:var(--vh-ink);margin-bottom:1.2rem;}
.vc-empty__s{font-family:var(--vh-body);font-size:1.5rem;color:var(--vh-muted);margin-bottom:3rem;}
.vc-loading{text-align:center;padding:8rem 0;font-family:var(--vh-body);font-size:1.5rem;color:var(--vh-muted);}

/* ===== CHECKOUT RESULT ===== */
.vk-section{background:var(--vh-cream);padding:9rem 0 10rem;text-align:center;}
.vk-inner{max-width:62rem;margin:0 auto;padding:0 3.2rem;}
.vk-section .vh-eyebrow{margin-bottom:1.8rem;}
.vk-lead{font-family:var(--vh-body);font-size:1.6rem;line-height:1.7;color:var(--vh-muted);max-width:50ch;margin:2rem auto 0;}

/* order-reference chip (success / storefront only) */
.vk-ref{display:inline-flex;flex-direction:column;align-items:center;gap:0.5rem;border:1px solid var(--vh-line-strong);background:var(--vh-white);border-radius:5px;padding:1.2rem 2.6rem;margin-top:2.6rem;}
.vk-ref .lbl{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.22em;font-size:1rem;font-weight:600;color:var(--vh-muted);}
.vk-ref .val{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-weight:600;font-size:1.9rem;color:var(--vh-ink);}

.vk-note{font-family:var(--vh-body);font-size:1.35rem;line-height:1.6;color:var(--vh-muted);max-width:48ch;margin:2.4rem auto 0;}

.vk-cta{display:flex;gap:2rem;align-items:center;justify-content:center;flex-wrap:wrap;margin-top:3.4rem;}
.vk-backlink{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1.2rem;font-weight:500;color:var(--vh-muted);text-decoration:none;border-bottom:1.5px solid transparent;padding-bottom:0.2rem;transition:all .18s ease;}
.vk-backlink:hover{color:var(--vh-ink);border-color:var(--vh-ink);}

/* proof-promise (success only), script line kept, body re-written */
.vk-promise{margin-top:4rem;padding-top:3.2rem;border-top:1px solid var(--vh-line);}
.vk-promise__scr{font-family:var(--vh-script);font-size:2.5rem;color:var(--vh-ink);line-height:1.05;}
.vk-promise__bd{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);margin:0.9rem auto 0;max-width:44ch;line-height:1.6;}
/* ===== FORMS — set-password + return (Session C) ===== */
.vd-btn--auto{width:auto;padding-left:2.8rem;padding-right:2.8rem;}
.vf-band{background:var(--vh-cream);padding:5.2rem 0 7rem;}
.vf-formcol{max-width:60rem;}
.vf-group{border:0;padding:0;min-width:0;margin-bottom:3.4rem;}
.vf-legend{display:block;width:100%;padding:0;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.16em;font-size:1.2rem;font-weight:600;color:var(--vh-muted);margin-bottom:1.4rem;}
.vf-legend .opt{font-family:var(--vh-body);text-transform:none;letter-spacing:0;font-weight:400;font-size:1.2rem;color:var(--vh-line-strong);}
.vr-options{display:flex;flex-direction:column;gap:0.9rem;}
.vr-option{position:relative;display:flex;gap:1.4rem;align-items:flex-start;border:1.5px solid var(--vh-line);background:var(--vh-white);border-radius:5px;padding:1.5rem 1.7rem;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease;}
.vr-option:hover{border-color:var(--vh-line-strong);}
.vr-option:has(input:checked){border-color:var(--vh-ink);box-shadow:inset 0 0 0 1px var(--vh-ink);}
.vr-option input{position:absolute;top:1.55rem;left:1.7rem;width:1.9rem;height:1.9rem;margin:0;opacity:0;cursor:pointer;}
.vr-option__mark{flex-shrink:0;width:1.9rem;height:1.9rem;margin-top:0.15rem;border:1.5px solid var(--vh-line-strong);border-radius:999px;display:flex;align-items:center;justify-content:center;transition:border-color .15s ease;}
.vr-option:has(input:checked) .vr-option__mark{border-color:var(--vh-ink);}
.vr-option__mark::after{content:'';width:0.95rem;height:0.95rem;border-radius:999px;background:var(--vh-ink);transform:scale(0);transition:transform .15s ease;}
.vr-option:has(input:checked) .vr-option__mark::after{transform:scale(1);}
.vr-option__body{flex:1;min-width:0;}
.vr-option__t{display:block;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.02em;font-weight:500;font-size:1.45rem;color:var(--vh-ink);line-height:1.25;}
.vr-option__d{display:block;font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);margin-top:0.35rem;line-height:1.5;}
.vr-sub{margin-top:1.4rem;padding-left:1.8rem;border-left:2px solid var(--vh-line-strong);}
.vr-sub__lbl{display:block;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.14em;font-size:1.1rem;font-weight:600;color:var(--vh-muted);margin-bottom:1rem;}
.vr-sub .vr-options{margin-bottom:1.4rem;}
.vr-file{display:block;width:100%;font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);}
.vr-file::file-selector-button{margin-right:1.4rem;border:1.5px solid var(--vh-ink);background:transparent;color:var(--vh-ink);font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-size:1.1rem;font-weight:600;padding:0.9rem 1.6rem;border-radius:4px;cursor:pointer;transition:all .15s ease;}
.vr-file::file-selector-button:hover{background:var(--vh-ink);color:var(--vh-white);}
.vf-error{border:1px solid var(--vh-line-strong);background:var(--vh-white);border-radius:5px;padding:1.4rem 1.6rem;font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-ink);font-style:italic;margin-bottom:2.4rem;}
.vf-submit{margin-top:0.6rem;}
.vf-reassure{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);margin-top:1.4rem;line-height:1.6;}
.vf-footnote{margin-top:3.4rem;padding-top:2.4rem;border-top:1px solid var(--vh-line);font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);line-height:1.7;}
.vf-footnote a{color:var(--vh-ink);text-decoration:underline;text-underline-offset:2px;}
.vf-center-band{background:var(--vh-cream);padding:6.4rem 0 8rem;text-align:center;}
.vf-center{max-width:46rem;margin:0 auto;padding:0 3.2rem;}
.vf-center .vh-eyebrow{margin-bottom:1.8rem;}
.vf-center .vd-lead{margin-left:auto;margin-right:auto;text-align:center;max-width:42ch;}
.vf-card{border:1px solid var(--vh-line);background:var(--vh-white);border-radius:6px;padding:3.4rem 3.2rem;text-align:left;margin-top:3.4rem;}
.vf-card .vf-group{margin-bottom:2.2rem;}
.vf-backrow{text-align:center;margin-top:2.2rem;}
.vf-backlink{display:inline-block;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1.2rem;font-weight:500;color:var(--vh-muted);text-decoration:none;border-bottom:1.5px solid transparent;padding-bottom:0.2rem;transition:all .18s ease;}
.vf-backlink:hover{color:var(--vh-ink);border-color:var(--vh-ink);}
/* ===== CUSTOM STUDIO — /shop/build/text (Comp A "Drafting Table") ===== */
/* Appended block (Drive 2). Uses the shared --vh-* tokens defined at top of
   this file. Prefix `.sa-`. No existing rule above is modified. */
.sa-shell{max-width:128rem;margin:0 auto;padding:0 3.2rem;}
/* [hidden] guards — author `display` above would otherwise beat UA [hidden] */
.sa-tiers[hidden],.sa-sizes[hidden],.sa-stage-empty[hidden],.sa-stage-img[hidden],.sa-footnote[hidden],.sa-step[hidden]{display:none;}

/* hero */
.sa-hero{background:var(--vh-white);padding:4.6rem 0 4.2rem;border-bottom:1px solid var(--vh-line);}
.sa-hero .vh-eyebrow{margin-bottom:1.6rem;}
.sa-h1{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.01em;line-height:0.98;font-size:clamp(3.6rem,5.5vw,5.8rem);color:var(--vh-ink);}
.sa-h1 .vh-script{font-size:1.16em;text-transform:none;}
.sa-lead{font-family:var(--vh-body);font-size:1.55rem;line-height:1.65;color:var(--vh-muted);max-width:56ch;margin-top:1.6rem;}

/* main grid */
.sa-grid{display:grid;grid-template-columns:minmax(0,1.28fr) minmax(40rem,1fr);gap:5rem;align-items:start;padding:4.6rem 0 6rem;}
@media(max-width:980px){.sa-grid{grid-template-columns:1fr;gap:4rem;}}

/* LEFT — canvas stage */
.sa-preview{position:sticky;top:10rem;}
.sa-canvas-card{border:1px solid var(--vh-line);background:var(--vh-white);border-radius:6px;overflow:hidden;}
.sa-canvas-head{display:flex;justify-content:space-between;align-items:center;padding:1.6rem 2.2rem;border-bottom:1px solid var(--vh-line);gap:1.2rem;flex-wrap:wrap;}
.sa-canvas-head .lbl{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.18em;font-size:1.1rem;font-weight:600;color:var(--vh-muted);}
.sa-stage{position:relative;aspect-ratio:1/1;background:#FFFFFF;overflow:hidden;}
.sa-stage-img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:2.4rem;}
.sa-stage-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-line-strong);text-align:center;padding:2rem;}
.sa-canvas-foot{display:flex;justify-content:space-between;align-items:center;gap:1.6rem;padding:1.5rem 2.2rem;border-top:1px solid var(--vh-line);flex-wrap:wrap;}
.sa-render-state{display:inline-flex;align-items:center;gap:0.9rem;font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);}
.sa-render-state .dot{width:0.8rem;height:0.8rem;border-radius:999px;background:#5E8A66;}
.sa-render-state .scr{font-family:var(--vh-script);font-size:1.7rem;color:var(--vh-ink);}
.sa-stitchcount{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1.1rem;color:var(--vh-muted);}
.sa-stitchcount strong{color:var(--vh-ink);font-weight:600;}
.sa-footnote{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);line-height:1.6;margin-top:1.6rem;max-width:52ch;font-style:italic;}

/* RIGHT — numbered steps, wrapped in the job ticket (Comp B frame) */
.sa-ticket{border:1px solid var(--vh-line);background:var(--vh-white);border-radius:6px;overflow:hidden;box-shadow:0 10px 30px rgba(24,21,16,0.06);}
.sa-ticket-band{background:var(--vh-ink);color:var(--vh-white);padding:1.7rem 2.6rem;display:flex;justify-content:space-between;align-items:center;}
.sa-ticket-band .t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.2em;font-size:1.2rem;font-weight:600;}
.sa-ticket-band .no{font-family:var(--vh-body);font-size:1.15rem;color:rgba(253,252,247,0.55);}
.sa-step{padding:2.8rem 2.6rem;border-bottom:1px solid var(--vh-line);}
.sa-step--last{border-bottom:none;}
.sa-step-head{display:flex;align-items:baseline;gap:1.6rem;margin-bottom:1.8rem;}
.sa-step-num{font-family:var(--vh-slab);font-size:2.4rem;line-height:0.9;color:var(--vh-line-strong);flex-shrink:0;width:3.6rem;}
.sa-step-t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.04em;font-weight:600;font-size:1.65rem;color:var(--vh-ink);}
.sa-step-s{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);margin-left:auto;text-align:right;}
.sa-step-body{padding-left:5.2rem;}
@media(max-width:560px){.sa-step-body{padding-left:0;}}

/* chips */
.sa-chips{display:flex;flex-wrap:wrap;gap:0.9rem;}
.sa-chip{border:1.5px solid var(--vh-line);background:var(--vh-white);border-radius:4px;padding:1.1rem 1.7rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.06em;font-weight:500;font-size:1.3rem;color:var(--vh-ink);cursor:pointer;transition:all .15s ease;display:inline-flex;flex-direction:column;gap:0.2rem;align-items:flex-start;}
.sa-chip .from{font-family:var(--vh-body);text-transform:none;letter-spacing:0;font-size:1.1rem;color:var(--vh-muted);}
.sa-chip:hover{border-color:var(--vh-line-strong);}
.sa-chip.active{border-color:var(--vh-ink);box-shadow:inset 0 0 0 1px var(--vh-ink);}

/* tier / style cards */
.sa-tiers{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
@media(max-width:560px){.sa-tiers{grid-template-columns:1fr;}}
.sa-tier{border:1.5px solid var(--vh-line);background:var(--vh-white);border-radius:5px;padding:1.4rem 1.6rem;cursor:pointer;transition:all .15s ease;text-align:left;display:block;width:100%;}
.sa-tier:hover{border-color:var(--vh-line-strong);}
.sa-tier.active{border-color:var(--vh-ink);box-shadow:inset 0 0 0 1px var(--vh-ink);}
.sa-tier .t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.03em;font-weight:600;font-size:1.4rem;color:var(--vh-ink);display:flex;justify-content:space-between;gap:1rem;}
.sa-tier .d{font-family:var(--vh-body);text-transform:none;letter-spacing:0;font-weight:400;font-size:1.2rem;color:var(--vh-muted);margin-top:0.4rem;line-height:1.45;display:block;}

/* swatches (garment color + thread) */
.sa-color-stack{margin-bottom:0.4rem;}
.sa-swatches{display:flex;flex-wrap:wrap;gap:1rem;}
.sa-swatches[hidden]{display:none;}
.sa-sw{width:3rem;height:3rem;border-radius:999px;cursor:pointer;border:2px solid var(--vh-line);position:relative;transition:transform .12s ease;padding:0;background-color:var(--vh-white);}
.sa-sw--light{border-color:var(--vh-line-strong);}
.sa-sw:hover{transform:scale(1.12);}
.sa-sw.active{box-shadow:0 0 0 2px var(--vh-cream),0 0 0 4px var(--vh-ink);}
.sa-sw-name{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);margin-top:1rem;}
.sa-sw-name strong{color:var(--vh-ink);font-weight:500;}

/* text field + fonts + height slider */
.sa-field{margin-bottom:2rem;}
.sa-field:last-child{margin-bottom:0;}
.sa-flabel{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.16em;font-size:1.05rem;font-weight:600;color:var(--vh-muted);margin-bottom:0.7rem;display:block;}
.sa-input{width:100%;border:1px solid var(--vh-line-strong);background:var(--vh-cream);padding:1.2rem 1.4rem;font-family:var(--vh-body);font-size:1.5rem;color:var(--vh-ink);border-radius:4px;}
.sa-input:focus{outline:none;border-color:var(--vh-ink);}
.sa-fonts{display:flex;flex-wrap:wrap;gap:0.8rem;}
.sa-fontgroup{flex-basis:100%;width:100%;margin:0.6rem 0 0.2rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.16em;font-size:1rem;font-weight:600;color:var(--vh-line-strong);}
.sa-fontgroup:first-child{margin-top:0;}
.sa-font{border:1.5px solid var(--vh-line);background:var(--vh-white);border-radius:4px;padding:0.7rem 1.3rem;font-family:var(--vh-body);font-size:1.5rem;color:var(--vh-ink);cursor:pointer;transition:all .15s ease;line-height:1.2;text-align:left;}
.sa-font:hover{border-color:var(--vh-line-strong);}
.sa-font.active{border-color:var(--vh-ink);box-shadow:inset 0 0 0 1px var(--vh-ink);}
.sa-font .rng{display:block;font-family:var(--vh-display);letter-spacing:0.06em;font-size:0.9rem;color:var(--vh-line-strong);margin-top:0.25rem;}
.sa-font .spec{display:block;height:2.1rem;width:auto;max-width:15rem;object-fit:contain;object-position:left center;margin-bottom:0.35rem;}
.sa-font .nm{display:block;font-family:var(--vh-display);font-size:1.05rem;letter-spacing:0.08em;text-transform:uppercase;color:var(--vh-muted);}
.sa-sizerow{display:flex;align-items:center;gap:1.6rem;}
.sa-sizerow input[type=range]{flex:1;accent-color:var(--vh-ink);}
.sa-sizeval{font-family:var(--vh-display);font-weight:600;font-size:1.3rem;letter-spacing:0.06em;min-width:6.4rem;text-align:right;color:var(--vh-ink);}
.sa-rangenote{font-family:var(--vh-body);font-size:1.15rem;color:var(--vh-muted);margin-top:0.9rem;font-style:italic;}

/* garment size */
.sa-sizes{display:flex;gap:0.8rem;flex-wrap:wrap;}
.sa-gsize{min-width:4.6rem;text-align:center;border:1.5px solid var(--vh-line);background:var(--vh-white);border-radius:4px;padding:1rem 1.2rem;font-family:var(--vh-display);font-weight:500;font-size:1.3rem;letter-spacing:0.04em;color:var(--vh-ink);cursor:pointer;transition:all .15s ease;}
.sa-gsize:hover{border-color:var(--vh-line-strong);}
.sa-gsize.active{border-color:var(--vh-ink);box-shadow:inset 0 0 0 1px var(--vh-ink);}
.sa-gsize .up{display:block;font-family:var(--vh-body);font-size:0.95rem;color:var(--vh-muted);margin-top:0.2rem;}

/* the math — foot of the ticket (moved out of the dropped sticky bar, Comp B frame) */
.sa-ledger{display:flex;flex-direction:column;}
.sa-lrow{display:flex;justify-content:space-between;align-items:baseline;padding:0.75rem 0;font-family:var(--vh-body);font-size:1.35rem;}
.sa-lrow .k{color:var(--vh-muted);}
.sa-lrow .v{color:var(--vh-ink);font-weight:500;}
.sa-math-meter{margin:1.4rem 0;}
.sa-math-meter .lbl{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1rem;color:var(--vh-muted);margin-bottom:0.5rem;}
.sa-math-meter .lbl strong{color:var(--vh-ink);font-weight:600;}
.sa-math-meter .track{height:4px;background:var(--vh-line);border-radius:2px;overflow:hidden;}
.sa-math-meter .fill{height:100%;background:var(--vh-ink);transition:width .4s ease;}
.sa-total-row{display:flex;justify-content:space-between;align-items:baseline;padding-top:1.6rem;margin-top:1rem;border-top:2px solid var(--vh-ink);}
.sa-total-row .k{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-weight:600;font-size:1.4rem;color:var(--vh-ink);}
.sa-total-row .v{font-family:var(--vh-display);font-weight:700;font-size:3rem;line-height:1;color:var(--vh-ink);}
.sa-cart{width:100%;background:var(--vh-ink);color:var(--vh-white);border:1.5px solid var(--vh-ink);padding:1.6rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-weight:600;font-size:1.35rem;border-radius:4px;cursor:pointer;transition:all .18s ease;margin-top:2rem;}
.sa-cart:hover{background:transparent;color:var(--vh-ink);}
.sa-promise{text-align:center;margin-top:2rem;padding-top:1.8rem;border-top:1px solid var(--vh-line);}
.sa-promise .scr{font-family:var(--vh-script);font-size:2.1rem;color:var(--vh-ink);line-height:1.05;}
.sa-promise .bd{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);margin-top:0.6rem;line-height:1.55;}

/* ── Drive 3 append: canvas elements, zones, drag/snap, view tabs ── */
/* view tabs (canvas head) */
.sa-zone-tabs{display:inline-flex;border:1px solid var(--vh-line-strong);border-radius:4px;overflow:hidden;}
.sa-zone-tab{border:none;background:transparent;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.1rem;font-weight:500;color:var(--vh-muted);padding:0.8rem 1.5rem;cursor:pointer;transition:all .15s ease;}
.sa-zone-tab.active{background:var(--vh-ink);color:var(--vh-white);}
/* stitchable-area boundaries on the stage — dual-contrast so they read on
   light (sage/heather/lavender/bone) AND dark blanks: a dark dashed border on
   the box paired with a 1px-offset light dashed border via ::before. */
.sa-bound{position:absolute;border:1.5px dashed rgba(24,21,16,0.6);border-radius:4px;pointer-events:none;transition:border-color .15s ease,background .15s ease;z-index:2;}
.sa-bound::before{content:'';position:absolute;inset:-1px;border:1.5px dashed rgba(253,252,247,0.85);border-radius:5px;pointer-events:none;}
.sa-bound.hot{border-color:var(--vh-ink);background:rgba(24,21,16,0.04);}
/* zone off: still clearly visible for editing, just quieter than an enabled one */
.sa-bound--off{border-color:rgba(24,21,16,0.4);}
.sa-bound--off::before{border-color:rgba(253,252,247,0.6);}
.sa-bound--side{border-style:dotted;}
.sa-bound--side::before{border-style:dotted;}
/* tag + hint ride an ink-on-cream chip so they read on any blank color */
.sa-bound .tag{position:absolute;top:-2.1rem;left:0;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.14em;font-size:0.95rem;color:var(--vh-ink);background:rgba(253,252,247,0.85);padding:2px 6px;border-radius:3px;white-space:nowrap;}
.sa-bound .hint{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);align-items:center;justify-content:center;max-width:86%;font-family:var(--vh-body);font-size:1.02rem;color:var(--vh-ink);background:rgba(253,252,247,0.85);text-align:center;padding:0.35rem 0.7rem;border-radius:4px;line-height:1.35;pointer-events:auto;cursor:pointer;}
.sa-bound .hint:hover{background:var(--vh-white);box-shadow:inset 0 0 0 1px var(--vh-ink);}
/* draggable text elements */
.sa-el{position:absolute;cursor:grab;user-select:none;-webkit-user-select:none;touch-action:none;padding:0.35rem 0.7rem;border:1.5px solid transparent;border-radius:3px;white-space:nowrap;line-height:1;z-index:3;}
.sa-el:active{cursor:grabbing;}
.sa-el.selected{border-color:var(--vh-ink);}
.sa-el.selected::after{content:'';position:absolute;right:-0.45rem;bottom:-0.45rem;width:0.9rem;height:0.9rem;background:var(--vh-ink);border-radius:1px;}
/* magnetic snap guides — gold core + faint light halo so they read on dark AND light blanks */
.sa-guide{position:absolute;background:none;pointer-events:none;display:none;z-index:4;}
.sa-guide--v{width:0;border-left:1px solid #C9A24B;box-shadow:0 0 1.5px rgba(253,252,247,0.9);}
.sa-guide--h{height:0;border-top:1px solid #C9A24B;box-shadow:0 0 1.5px rgba(253,252,247,0.9);}
/* mirrored side view (only one S&S side photo exists; the right side mirrors it) */
.sa-stage-img--mirror{transform:scaleX(-1);}
/* rotate-view arrows flanking the stage (view change only, never enable a zone) */
.sa-rotate{position:absolute;top:50%;transform:translateY(-50%);z-index:5;width:3.8rem;height:3.8rem;padding:0;border-radius:999px;border:1px solid var(--vh-line-strong);background:var(--vh-cream);color:var(--vh-ink);font-family:var(--vh-body);font-size:2.2rem;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s ease;}
.sa-rotate:hover{background:var(--vh-ink);color:var(--vh-white);border-color:var(--vh-ink);}
.sa-rotate--prev{left:1.4rem;}
.sa-rotate--next{right:1.4rem;}
/* under-canvas drag note */
.sa-under{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);line-height:1.6;margin-top:1.6rem;max-width:52ch;}
.sa-under em{color:var(--vh-ink);font-style:italic;}
/* element cards rail (step 04) */
.sa-els{display:flex;flex-direction:column;gap:1.2rem;}
.sa-elcard{border:1.5px solid var(--vh-line);background:var(--vh-white);border-radius:5px;overflow:hidden;transition:border-color .15s ease;}
.sa-elcard.selected{border-color:var(--vh-ink);box-shadow:inset 0 0 0 1px var(--vh-ink);}
.sa-elcard-head{display:flex;align-items:center;gap:1.2rem;padding:1.2rem 1.6rem;cursor:pointer;}
.sa-elcard-head .idx{font-family:var(--vh-slab);font-size:1.5rem;color:var(--vh-line-strong);}
.sa-elcard-head .prev{font-size:1.8rem;color:var(--vh-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;line-height:1.1;}
.sa-elcard-head .zone{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-size:0.9rem;color:var(--vh-muted);border:1px solid var(--vh-line-strong);border-radius:99px;padding:0.3rem 0.9rem;white-space:nowrap;}
.sa-elcard-head .del{background:none;border:none;color:var(--vh-line-strong);font-size:1.5rem;cursor:pointer;line-height:1;}
.sa-elcard-head .del:hover{color:var(--vh-ink);}
.sa-addline{display:inline-flex;align-items:center;gap:0.8rem;border:1.5px dashed var(--vh-line-strong);background:transparent;border-radius:5px;padding:1.3rem 1.8rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-weight:500;font-size:1.2rem;color:var(--vh-muted);cursor:pointer;transition:all .15s ease;margin:1.2rem 0 2rem;width:100%;justify-content:center;}
.sa-addline:hover{border-color:var(--vh-ink);color:var(--vh-ink);}
/* placement segment + center button (step 04) */
.sa-placerow{display:flex;gap:1rem;flex-wrap:wrap;align-items:center;}
.sa-zoneseg{display:inline-flex;border:1px solid var(--vh-line-strong);border-radius:4px;overflow:hidden;}
.sa-zseg{border:none;background:transparent;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.06em;font-size:1.1rem;font-weight:500;color:var(--vh-muted);padding:0.9rem 1.3rem;cursor:pointer;transition:all .15s ease;border-right:1px solid var(--vh-line);}
.sa-zseg:last-child{border-right:none;}
.sa-zseg.active{background:var(--vh-ink);color:var(--vh-white);}
.sa-zseg .zp{font-size:0.95rem;color:var(--vh-line-strong);margin-left:0.4rem;}
.sa-zseg.active .zp{color:rgba(253,252,247,0.6);}
/* placement ticks (step 06 — where it goes) */
.sa-zones{display:flex;flex-direction:column;gap:0.9rem;}
.sa-ztick{display:flex;align-items:flex-start;gap:1.3rem;border:1.5px solid var(--vh-line);background:var(--vh-white);border-radius:5px;padding:1.5rem 1.7rem;cursor:pointer;transition:all .15s ease;width:100%;text-align:left;}
.sa-ztick:hover{border-color:var(--vh-line-strong);}
.sa-ztick.active{border-color:var(--vh-ink);box-shadow:inset 0 0 0 1px var(--vh-ink);}
.sa-ztick.locked{cursor:default;}
.sa-ztick .box{flex-shrink:0;width:1.9rem;height:1.9rem;margin-top:0.1rem;border:1.5px solid var(--vh-line-strong);border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:1.1rem;color:transparent;transition:all .15s ease;}
.sa-ztick.active .box{background:var(--vh-ink);border-color:var(--vh-ink);color:var(--vh-white);}
.sa-ztick .t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.02em;font-weight:500;font-size:1.4rem;color:var(--vh-ink);}
.sa-ztick .d{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);margin-top:0.3rem;line-height:1.5;display:block;}
.sa-ztick .adder{font-family:var(--vh-display);font-weight:600;font-size:1.35rem;margin-left:auto;white-space:nowrap;color:var(--vh-ink);}
.sa-ztick .adder.incl{color:var(--vh-line-strong);font-weight:500;text-transform:uppercase;letter-spacing:0.06em;font-size:1.1rem;}
.sa-znote{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);font-style:italic;margin-top:1.2rem;line-height:1.5;}

/* ── Drive 4 append: live stitch renders (per-element preview + meter) ── */
/* the stitch preview rides INSIDE the draggable element, beside the draft
   text, so drag (and any future rotation transform on .sa-el) moves both */
.sa-el .stitch{display:block;pointer-events:none;}
.sa-el .stitch[hidden],.sa-el .txt[hidden]{display:none;}
/* Drive 4.5 replaces the easy-to-miss gold dot with a running-stitch state
   on the element + a canvas chip (both defined in the Drive 4.5 block below). */
@keyframes sa-stitch-pulse{0%,100%{opacity:0.35;}50%{opacity:1;}}
/* canvas foot state while any element renders */
.sa-render-state .dot.busy{background:#C9A24B;animation:sa-stitch-pulse 1.1s ease-in-out infinite;}
/* element card status line: stitching / retry hint / too large */
.sa-elstate{font-family:var(--vh-body);font-size:1.1rem;font-style:italic;color:var(--vh-muted);padding:0 1.6rem 1.1rem;line-height:1.45;}
.sa-elstate--over{color:#8A3033;font-style:normal;font-family:var(--vh-body);text-transform:none;letter-spacing:0.01em;font-size:1.1rem;line-height:1.45;display:flex;flex-direction:column;align-items:flex-start;gap:0.65rem;}
.sa-elfit{align-self:flex-start;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:0.88rem;color:#FDFCF7;background:#8A3033;border:none;border-radius:99px;padding:0.45rem 1.1rem;cursor:pointer;transition:background .15s ease;}
.sa-elfit:hover{background:#6f2629;}
.sa-elcard.over{border-color:#8A3033;}
.sa-elcard.over.selected{box-shadow:inset 0 0 0 1px #8A3033;}
/* stitch meter over budget: amber fill (width capped at 100% by the JS) */
.sa-math-meter .fill.over{background:#C9A24B;}

/* ── Drive 4.5 append: visible "stitching" state + physical-scale extras ── */
/* Running-stitch loading state on the element being rendered: dim whatever is
   showing (draft OR preview) and scroll a dashed underline beneath the draft. */
.sa-el.rendering .txt{opacity:0.6;position:relative;display:inline-block;}
.sa-el.rendering .stitch{opacity:0.7;}
.sa-el.rendering .txt::after{content:'';position:absolute;left:0;bottom:-0.45rem;width:100%;height:2px;background-image:repeating-linear-gradient(90deg,currentColor 0 6px,transparent 6px 12px);background-size:12px 2px;animation:sa-stitch-run 0.5s linear infinite;opacity:0.85;}
@keyframes sa-stitch-run{from{background-position:0 0;}to{background-position:12px 0;}}
/* Canvas chip: unmissable but non-blocking (pointer-events:none). Vintage ink
   on cream type; the needle-mark glyph pulses while stitching, steady on error. */
.sa-stitch-chip{position:absolute;left:1.2rem;bottom:1.2rem;z-index:6;display:inline-flex;align-items:center;gap:0.7rem;pointer-events:none;background:var(--vh-ink);color:var(--vh-white);font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.09em;font-weight:500;font-size:1.15rem;padding:0.7rem 1.1rem;border-radius:4px;box-shadow:0 3px 12px rgba(24,21,16,0.28);}
.sa-stitch-chip[hidden]{display:none;}
.sa-stitch-chip .gl{display:inline-block;font-size:1.05rem;animation:sa-stitch-pulse 1.1s ease-in-out infinite;}
.sa-stitch-chip.is-error{background:#8A3033;}
.sa-stitch-chip.is-error .gl{animation:none;}
/* Live real-world size on the selected element card (Drive 4.5, item 2). */
.sa-elsize{font-family:var(--vh-body);font-size:1.15rem;color:var(--vh-ink);padding:0 1.6rem 0.9rem;letter-spacing:0.01em;}

/* ===== Logo studio ===== */
/* /your-logo Screen 1 (Logo Locker Drive 3, polished to match the studio's
   job-ticket frame). Ported from comp_logo_screen1_hub with every .sa-* renamed
   to .lg-* so it can't collide with the studio's own .sa-* block above; .lk-/
   .up-/.sz-/.st- are collision-free and kept as the comp named them.
   --vh-green/--vh-gold are not root tokens, so the sage/gold accents are inlined
   (#5E8A66 / #C9A24B). The steps live inside the .lg-ticket frame; the live
   summary + continue closes it at the base (the fixed bottom bar was dropped, so
   no page-level padding-bottom is needed any more). */
.lg-shell{max-width:128rem;margin:0 auto;padding:0 3.2rem;}

/* first-timer dark identity strip (the returning-customer locker is a later drive) */
.lk-strip{background:var(--vh-ink);padding:2.2rem 0;}
.lk-strip-in{display:flex;align-items:center;gap:2.8rem;flex-wrap:wrap;}
.lk-hello{color:rgba(253,252,247,0.62);font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.16em;font-size:1.1rem;line-height:1.7;}
.lk-hello .scr{display:block;font-family:var(--vh-script);text-transform:none;letter-spacing:0;font-size:2.2rem;color:var(--vh-white);}
.lk-flow{display:flex;align-items:center;gap:1.4rem;flex-wrap:wrap;flex:1;}
.lk-node{display:inline-flex;align-items:baseline;gap:0.7rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.1rem;color:rgba(253,252,247,0.55);}
.lk-node b{font-family:var(--vh-slab);font-weight:400;font-size:1.35rem;color:rgba(253,252,247,0.4);}
.lk-node.active{color:var(--vh-white);}
.lk-node.active b{color:#C9A24B;}
.lk-sep{color:rgba(253,252,247,0.3);font-size:1.2rem;}

/* hero */
.st-hero{background:var(--vh-white);padding:4.2rem 0 3.8rem;border-bottom:1px solid var(--vh-line);}
.st-hero .vh-eyebrow{margin-bottom:1.4rem;}
.st-h1{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.01em;line-height:0.98;font-size:clamp(3.4rem,5vw,5.4rem);color:var(--vh-ink);}
.st-h1 .vh-script{font-size:1.16em;text-transform:none;}
.st-lead{font-family:var(--vh-body);font-size:1.55rem;line-height:1.65;color:var(--vh-muted);max-width:60ch;margin-top:1.5rem;}

/* two-column grid */
.lg-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(38rem,1fr);gap:4.4rem;align-items:start;padding:4.2rem 0 6rem;}
@media(max-width:980px){.lg-grid{grid-template-columns:1fr;gap:4rem;}}

/* LEFT: canvas */
.lg-preview{position:sticky;top:2.4rem;}
/* single-column collapse: sticky preview rides over the ticket on phones */
@media(max-width:980px){.lg-preview{position:static;}}
.lg-canvas-card{border:1px solid var(--vh-line);background:var(--vh-white);border-radius:6px;overflow:hidden;}
.lg-canvas-head{display:flex;justify-content:space-between;align-items:center;padding:1.6rem 2.2rem;border-bottom:1px solid var(--vh-line);gap:1.2rem;flex-wrap:wrap;}
.lg-canvas-head .lbl{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.18em;font-size:1.1rem;font-weight:600;color:var(--vh-muted);}
.lg-view-tabs{display:inline-flex;border:1px solid var(--vh-line-strong);border-radius:4px;overflow:hidden;}
.lg-zone-tab{border:none;background:transparent;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.1rem;font-weight:500;color:var(--vh-muted);padding:0.8rem 1.5rem;cursor:pointer;transition:all .15s ease;}
.lg-zone-tab.active{background:var(--vh-ink);color:var(--vh-white);}
/* Positioning context for .lg-tools. The stage itself clips (overflow:hidden),
   so the tools hang off this wrapper instead: absolute over the stage on
   desktop, static in flow below it on phones. Tools are out of flow at
   >768px, so the wrapper's box is exactly the stage's. */
.lg-stagewrap{position:relative;}
.lg-stage{position:relative;aspect-ratio:1/1;background:#FFFFFF;overflow:hidden;}
.lg-stage-img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:2.4rem;}
.lg-stage-img--mirror{transform:scaleX(-1);}
.lg-stage-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-line-strong);text-align:center;padding:2rem;}
.lg-stage-img[hidden],.lg-stage-empty[hidden]{display:none;}
.lg-bound{position:absolute;border:1.5px dashed var(--vh-line-strong);border-radius:4px;pointer-events:none;transition:border-color .15s ease,background .15s ease;z-index:2;}
.lg-bound.hot{border-color:var(--vh-ink);background:rgba(24,21,16,0.04);}
.lg-bound .tag{position:absolute;top:-2.1rem;left:0;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.14em;font-size:0.95rem;color:var(--vh-line-strong);white-space:nowrap;}
.lg-guide{position:absolute;background:none;pointer-events:none;display:none;z-index:4;}
.lg-guide--v{width:0;border-left:1px solid #C9A24B;box-shadow:0 0 1.5px rgba(253,252,247,0.9);}
.lg-guide--h{height:0;border-top:1px solid #C9A24B;box-shadow:0 0 1.5px rgba(253,252,247,0.9);}
.lg-logo{position:absolute;cursor:grab;user-select:none;-webkit-user-select:none;touch-action:none;border:1.5px solid transparent;border-radius:3px;z-index:3;}
.lg-logo:active{cursor:grabbing;}
.lg-logo.selected{border-color:var(--vh-ink);}
/* Corner resize handles (Drive B) — replace the old decorative SE ::after
   square with four real drag handles, wired in logo_studio.html. Hidden in
   apply mode (.lg-logo--noresize): the size there is pinned. */
.lg-logo .hnd{display:none;position:absolute;width:1.2rem;height:1.2rem;background:var(--vh-white);border:1.5px solid var(--vh-ink);border-radius:1px;z-index:4;touch-action:none;}
/* 44px effective touch target: an invisible padded hit zone around the small
   visual, so fingers land resizes without fattening the corner squares. */
.lg-logo .hnd::before{content:'';position:absolute;left:50%;top:50%;width:4.4rem;height:4.4rem;transform:translate(-50%,-50%);}
.lg-logo.selected .hnd{display:block;}
.lg-logo--noresize .hnd{display:none !important;}
.lg-logo .hnd[data-h=nw]{left:-0.6rem;top:-0.6rem;cursor:nwse-resize;}
.lg-logo .hnd[data-h=ne]{right:-0.6rem;top:-0.6rem;cursor:nesw-resize;}
.lg-logo .hnd[data-h=sw]{left:-0.6rem;bottom:-0.6rem;cursor:nesw-resize;}
.lg-logo .hnd[data-h=se]{right:-0.6rem;bottom:-0.6rem;cursor:nwse-resize;}
.lg-logo .art{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;}
.lg-logo .pdf{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;background:rgba(46,52,68,0.92);color:var(--vh-white);border-radius:3px;pointer-events:none;text-align:center;padding:0.6rem;}
.lg-logo .pdf .ext{font-family:var(--vh-slab);font-size:1.6rem;letter-spacing:0.08em;line-height:1;}
.lg-logo .pdf .nm{font-family:var(--vh-body);font-size:1rem;margin-top:0.4rem;opacity:0.75;max-width:14rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* Live size chip — pinned above the box's top-right corner, clear of the
   handles and the bound's top-left zone tag. */
.lg-logo .dim{position:absolute;right:-0.2rem;top:-2.8rem;background:var(--vh-ink);color:var(--vh-white);font-family:var(--vh-display);letter-spacing:0.08em;font-size:1.05rem;font-weight:500;border-radius:3px;padding:0.4rem 0.9rem;white-space:nowrap;pointer-events:none;}
.lg-logo:focus{outline:none;}
.lg-logo:focus-visible{outline:2px solid var(--vh-ink);outline-offset:3px;}
/* Rotate handle (your-logo rotation) — a circular handle on a short stalk above
   the box top-center. Shown when the logo is selected, in apply mode too
   (rotation stays enabled there; only resize is pinned). 44px touch target via
   ::before, mirroring the resize .hnd pattern; the ::after draws the stalk down
   to the box. The handle lives inside .lg-logo so it orbits with the tilt. */
.lg-logo .lg-rot{display:none;position:absolute;left:50%;top:-3.4rem;transform:translateX(-50%);width:2rem;height:2rem;border-radius:50%;background:var(--vh-white);border:1.5px solid var(--vh-ink);z-index:4;cursor:grab;touch-action:none;}
.lg-logo.selected .lg-rot{display:block;}
.lg-logo .lg-rot:active{cursor:grabbing;}
.lg-logo .lg-rot::after{content:'';position:absolute;left:50%;top:100%;width:1.5px;height:1.4rem;background:var(--vh-ink);transform:translateX(-50%);}
.lg-logo .lg-rot::before{content:'';position:absolute;left:50%;top:50%;width:4.4rem;height:4.4rem;transform:translate(-50%,-50%);border-radius:50%;}
/* Live degree readout while rotating — stage-level so the number stays upright. */
.lg-rot-deg{position:absolute;z-index:6;background:var(--vh-ink);color:var(--vh-white);font-family:var(--vh-display);letter-spacing:0.06em;font-size:1.15rem;font-weight:600;border-radius:3px;padding:0.3rem 0.75rem;pointer-events:none;white-space:nowrap;transform:translate(-50%,-160%);}
.lg-rot-deg[hidden]{display:none;}
/* On-canvas tools (Drive B): center / nudge / delete, pinned to the stage foot. */
.lg-tools{position:absolute;left:50%;bottom:1.2rem;transform:translateX(-50%);display:flex;align-items:center;gap:0.6rem;z-index:5;background:var(--vh-cream);border:1px solid var(--vh-line-strong);border-radius:5px;padding:0.4rem 0.6rem;box-shadow:0 2px 8px rgba(24,21,16,0.08);max-width:calc(100% - 2rem);flex-wrap:wrap;justify-content:center;}
.lg-tools[hidden]{display:none;}
/* Phones: the tools drop out of the stage overlay and render below the garment
   photo, above the caption — on a small screen the popup covered the very
   design it was positioning. Deliberately no display here, so [hidden] keeps
   winning. */
@media(max-width:768px){
  .lg-tools{position:static;transform:none;margin:1.2rem;max-width:none;}
}
.lg-tool{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:3.4rem;height:3.4rem;padding:0 1rem;border:1px solid var(--vh-line-strong);border-radius:4px;background:var(--vh-white);color:var(--vh-ink);font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.05rem;font-weight:500;cursor:pointer;transition:all .15s ease;}
/* 44px effective touch target on every toolbar button (visuals stay 34px). */
.lg-tool::before{content:'';position:absolute;left:50%;top:50%;width:100%;min-width:4.4rem;height:4.4rem;transform:translate(-50%,-50%);}
.lg-tool:hover{background:var(--vh-ink);color:var(--vh-white);border-color:var(--vh-ink);}
.lg-nudge{display:inline-flex;gap:0.4rem;}
.lg-tool--nudge{min-width:3.4rem;padding:0;font-family:var(--vh-body);font-size:1.5rem;letter-spacing:0;}
/* One shared up-arrow glyph rotated per direction: identical metrics on all
   four nudge buttons (left/right arrow glyphs fell back smaller). */
.lg-tool--nudge .g{display:inline-block;line-height:1;}
.lg-tool--nudge[data-nx="-1"] .g{transform:rotate(-90deg);}
.lg-tool--nudge[data-nx="1"] .g{transform:rotate(90deg);}
.lg-tool--nudge[data-ny="1"] .g{transform:rotate(180deg);}
.lg-tool--del{color:#9B2C2C;}
.lg-tool--del:hover{background:#9B2C2C;border-color:#9B2C2C;color:var(--vh-white);}
.lg-tool--del[hidden]{display:none;}
/* D7 thread swaps (apply mode): swatch row top-right of the placement stage,
   one chip per unique thread colour in the stitch file; clicking opens the
   replacement picker (Joel's real thread inventory). Same overlay treatment
   as .lg-tools, and the same phones fallback: static below the stage so the
   popup never covers the art being recoloured. */
.lg-threads{position:absolute;top:1.2rem;right:1.2rem;z-index:6;display:flex;flex-direction:column;align-items:flex-end;gap:0.5rem;max-width:min(30rem,calc(100% - 2rem));}
.lg-threads[hidden]{display:none;}
.lg-threads-lbl{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.14em;font-size:0.95rem;color:var(--vh-line-strong);background:rgba(253,252,247,0.85);padding:0.1rem 0.5rem;border-radius:3px;}
.lg-threads-row{display:flex;gap:0.5rem;flex-wrap:wrap;justify-content:flex-end;background:var(--vh-cream);border:1px solid var(--vh-line-strong);border-radius:5px;padding:0.5rem 0.6rem;box-shadow:0 2px 8px rgba(24,21,16,0.08);}
.lg-th-sw{position:relative;width:2.6rem;height:2.6rem;border-radius:999px;border:1px solid var(--vh-line-strong);cursor:pointer;padding:0;transition:transform .12s ease,box-shadow .12s ease;}
.lg-th-sw:hover{transform:scale(1.12);box-shadow:0 1px 5px rgba(24,21,16,0.25);}
/* The "changed" affordance: a gold ring + corner tick so a swapped colour
   reads at a glance next to untouched ones. */
.lg-th-sw.changed{box-shadow:0 0 0 2px var(--vh-cream),0 0 0 4px #C9A24B;}
.lg-th-sw.changed::after{content:'\2713';position:absolute;top:-0.55rem;right:-0.55rem;width:1.5rem;height:1.5rem;border-radius:999px;background:#C9A24B;color:var(--vh-white);font-size:1rem;line-height:1.5rem;text-align:center;}
.lg-threads-pick{width:26rem;max-width:100%;background:var(--vh-cream);border:1px solid var(--vh-line-strong);border-radius:5px;box-shadow:0 4px 14px rgba(24,21,16,0.16);padding:0.8rem;text-align:left;}
.lg-threads-pick[hidden]{display:none;}
.lg-threads-pick-head{display:flex;align-items:center;justify-content:space-between;gap:0.8rem;margin-bottom:0.6rem;}
.lg-threads-pick-head .t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.05rem;color:var(--vh-ink);}
.lg-threads-pick-head .x{border:0;background:none;color:var(--vh-line-strong);font-size:1.8rem;line-height:1;cursor:pointer;padding:0 0.2rem;}
.lg-threads-pick-head .x:hover{color:var(--vh-ink);}
.lg-threads-reset{display:block;width:100%;margin-bottom:0.6rem;border:1px dashed var(--vh-line-strong);border-radius:4px;background:var(--vh-white);color:var(--vh-ink);font-family:var(--vh-body);font-size:1.15rem;padding:0.5rem 0.8rem;cursor:pointer;}
.lg-threads-reset:hover{background:var(--vh-ink);color:var(--vh-white);}
.lg-threads-reset[hidden]{display:none;}
.lg-threads-err{background:#FBEAEA;border:1px solid #9B2C2C;color:#9B2C2C;border-radius:4px;font-family:var(--vh-body);font-size:1.1rem;padding:0.4rem 0.8rem;}
.lg-threads-err[hidden]{display:none;}
@media(max-width:768px){
  .lg-threads{position:static;align-items:stretch;max-width:none;margin:1.2rem 1.2rem 0;}
  .lg-threads-row{justify-content:flex-start;}
  .lg-threads-pick{width:100%;}
}
/* B1: the swatch UI reused in normal flow (the quantities header) instead of
   floating over the studio stage. */
.lg-threads--flow{position:static;top:auto;right:auto;align-items:flex-start;max-width:34rem;margin:0;}
.lg-threads--flow .lg-threads-row{justify-content:flex-start;}
/* B1 colour wheel inside the thread picker (the list stays as the browse
   view). The picker itself scrolls before it outgrows a laptop viewport. */
.lg-threads-pick{max-height:min(38rem,72vh);overflow-y:auto;}
.lg-threads-wheel{display:flex;flex-direction:column;align-items:center;gap:0.6rem;}
.lg-threads-wheel canvas{width:20rem;height:20rem;max-width:100%;border-radius:999px;cursor:crosshair;}
.lg-th-shade{width:20rem;max-width:100%;}
.lg-threads-cur{display:flex;align-items:center;gap:0.6rem;width:100%;border:1px solid var(--vh-line);border-radius:4px;background:var(--vh-white);padding:0.4rem 0.6rem;font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-ink);}
.lg-threads-cur[hidden]{display:none;}
.lg-threads-cur .lbl{flex:none;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-size:0.9rem;color:var(--vh-line-strong);}
.lg-threads-cur .chip{flex:none;width:1.8rem;height:1.8rem;border-radius:999px;border:1px solid var(--vh-line-strong);}
.lg-threads-cur .hx{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:0.06em;}
.lg-threads-hint{font-family:var(--vh-body);font-size:1.05rem;color:var(--vh-muted);margin:0;}
.lg-rough{display:inline-flex;align-items:center;gap:0.8rem;border:1px solid #C9A24B;border-radius:99px;padding:0.5rem 1.3rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1rem;font-weight:500;color:#8A6D2B;background:rgba(201,162,75,0.08);}
.lg-rotate{position:absolute;top:50%;transform:translateY(-50%);z-index:5;width:3.8rem;height:3.8rem;padding:0;border-radius:999px;border:1px solid var(--vh-line-strong);background:var(--vh-cream);color:var(--vh-ink);font-family:var(--vh-body);font-size:2.2rem;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s ease;}
.lg-rotate:hover{background:var(--vh-ink);color:var(--vh-white);border-color:var(--vh-ink);}
.lg-rotate--prev{left:1.4rem;}
.lg-rotate--next{right:1.4rem;}
.lg-canvas-foot{display:flex;justify-content:space-between;align-items:center;gap:1.6rem;padding:1.5rem 2.2rem;border-top:1px solid var(--vh-line);flex-wrap:wrap;}
.lg-foot-note{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);}
.lg-foot-note .scr{font-family:var(--vh-script);font-size:1.7rem;color:var(--vh-ink);}
.lg-stitchcount{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1.1rem;color:var(--vh-muted);}
.lg-stitchcount strong{color:var(--vh-ink);font-weight:600;}
.lg-under{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);line-height:1.6;margin-top:1.6rem;max-width:56ch;}
.lg-under em{color:var(--vh-ink);font-style:italic;}

/* RIGHT: numbered steps, wrapped in the job ticket (mirrors the studio's .sa-ticket) */
.lg-ticket{border:1px solid var(--vh-line);background:var(--vh-white);border-radius:6px;overflow:hidden;box-shadow:0 10px 30px rgba(24,21,16,0.06);}
.lg-ticket-band{background:var(--vh-ink);color:var(--vh-white);padding:1.4rem 2.2rem;display:flex;justify-content:space-between;align-items:center;}
.lg-ticket-band .t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.2em;font-size:1.2rem;font-weight:600;}
.lg-step{padding:1.9rem 2.2rem;border-bottom:1px solid var(--vh-line);}
.lg-step:last-child{border-bottom:none;}
.lg-step-head{display:flex;align-items:baseline;gap:1.6rem;margin-bottom:1.3rem;}
.lg-step-num{font-family:var(--vh-slab);font-size:2rem;line-height:0.9;color:var(--vh-line-strong);flex-shrink:0;width:3rem;}
.lg-step-t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.04em;font-weight:600;font-size:1.5rem;color:var(--vh-ink);}
.lg-step-s{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);margin-left:auto;text-align:right;}
.lg-step-body{padding-left:0;}

/* upload dropzone */
.up-zone{border:2px dashed var(--vh-line-strong);border-radius:6px;background:var(--vh-white);padding:3.2rem 2.4rem;text-align:center;cursor:pointer;transition:all .15s ease;}
.up-zone:hover,.up-zone.drag{border-color:var(--vh-ink);background:var(--vh-cream);}
.up-zone .big{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.06em;font-weight:600;font-size:1.6rem;color:var(--vh-ink);}
.up-zone .small{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);margin-top:0.7rem;line-height:1.6;}
.up-zone.busy{opacity:0.6;pointer-events:none;}
.up-done{display:none;border:1.5px solid var(--vh-ink);border-radius:6px;background:var(--vh-white);overflow:hidden;}
.up-done.show{display:block;}
.up-done-head{display:flex;align-items:center;gap:1.4rem;padding:1.4rem 1.8rem;}
.up-done-head .thumb{width:5.2rem;height:5.2rem;border-radius:4px;background:#242938;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;}
.up-done-head .thumb img{width:100%;height:100%;object-fit:contain;}
.up-done-head .thumb .ext{font-family:var(--vh-slab);font-size:1.3rem;color:var(--vh-white);letter-spacing:0.06em;}
.up-done-head .f{flex:1;min-width:0;}
.up-done-head .f .nm{font-family:var(--vh-display);font-weight:500;font-size:1.4rem;letter-spacing:0.04em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.up-done-head .f .st{font-size:1.15rem;color:#5E8A66;margin-top:0.2rem;display:flex;align-items:center;gap:0.6rem;}
.up-done-head .swap{background:none;border:none;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.05rem;color:var(--vh-muted);cursor:pointer;border-bottom:1px solid var(--vh-line-strong);padding-bottom:0.2rem;flex-shrink:0;}
.up-done-head .swap:hover{color:var(--vh-ink);}
.up-err{display:none;margin-top:1.2rem;border-left:3px solid #8A3033;padding:0.8rem 0 0.8rem 1.4rem;font-family:var(--vh-body);font-size:1.25rem;color:#8A3033;line-height:1.55;}
.up-err.show{display:block;}
.up-note{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);font-style:italic;margin-top:1.2rem;line-height:1.55;}

/* multi-spot (Drive E3): the chip row above the canvas lists the placements
   on this garment and switches which spot the toolbar drives; the same-logo
   shortcut sits under the dropzone on an empty extra spot. */
.lg-spots{display:flex;flex-wrap:wrap;align-items:center;gap:0.6rem;padding:1rem 1.6rem;border-bottom:1px solid var(--vh-line);background:var(--vh-cream);}
.lg-spot{display:inline-flex;align-items:center;gap:0.8rem;border:1.5px solid var(--vh-line-strong);background:var(--vh-white);border-radius:99px;padding:0.5rem 1.2rem;cursor:pointer;transition:all .15s ease;}
.lg-spot:hover{border-color:var(--vh-ink);}
.lg-spot .t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.06em;font-weight:500;font-size:1.15rem;color:var(--vh-ink);}
.lg-spot .st{font-family:var(--vh-display);font-size:1.05rem;letter-spacing:0.04em;color:var(--vh-muted);}
.lg-spot.active{background:var(--vh-ink);border-color:var(--vh-ink);}
.lg-spot.active .t{color:var(--vh-white);}
.lg-spot.active .st{color:rgba(255,255,255,0.7);}
.lg-spot .x{display:inline-flex;align-items:center;justify-content:center;width:1.8rem;height:1.8rem;border-radius:50%;font-size:1rem;line-height:1;color:var(--vh-muted);transition:all .15s ease;}
.lg-spot .x:hover{background:rgba(24,21,16,0.12);color:var(--vh-ink);}
.lg-spot.active .x{color:rgba(255,255,255,0.7);}
.lg-spot.active .x:hover{background:rgba(255,255,255,0.18);color:var(--vh-white);}
.lg-spot--add{border-style:dashed;background:transparent;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-weight:500;font-size:1.15rem;color:var(--vh-muted);}
.lg-spot--add:hover{color:var(--vh-ink);}
.up-same{display:block;width:100%;margin-top:0.9rem;border:1.5px solid var(--vh-ink);background:var(--vh-white);color:var(--vh-ink);border-radius:5px;padding:1rem 1.4rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-size:1.2rem;font-weight:500;cursor:pointer;transition:all .15s ease;}
.up-same:hover{background:var(--vh-ink);color:var(--vh-white);}
.up-same[hidden]{display:none;}

/* garment chips + cap styles */
.lg-chips{display:grid;grid-template-columns:repeat(3,1fr);gap:0.8rem;}
@media(max-width:400px){.lg-chips{grid-template-columns:1fr 1fr;}}
.lg-chip{border:1.5px solid var(--vh-line);background:var(--vh-white);border-radius:4px;padding:1.2rem 1rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.06em;font-weight:500;font-size:1.2rem;color:var(--vh-ink);cursor:pointer;transition:all .15s ease;display:inline-flex;align-items:center;justify-content:center;width:100%;}
.lg-chip-top{display:inline-flex;align-items:center;gap:0.8rem;}
.lg-chip-ico{width:24px;height:24px;flex:0 0 auto;display:block;fill:currentColor;opacity:0.8;}
.lg-chip.active .lg-chip-ico{opacity:1;}
.lg-chip:hover{border-color:var(--vh-line-strong);}
.lg-chip.active{border-color:var(--vh-ink);box-shadow:inset 0 0 0 1px var(--vh-ink);}
.lg-styles{display:flex;flex-wrap:wrap;gap:0.9rem;margin-top:1.4rem;}
.lg-styles[hidden]{display:none;}
.lg-style{border:1.5px solid var(--vh-line);background:var(--vh-white);border-radius:4px;padding:0.9rem 1.4rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.06em;font-weight:500;font-size:1.2rem;color:var(--vh-ink);cursor:pointer;transition:all .15s ease;}
.lg-style:hover{border-color:var(--vh-line-strong);}
.lg-style.active{border-color:var(--vh-ink);box-shadow:inset 0 0 0 1px var(--vh-ink);}

/* garment step collapse (Drive A2, comp_garment_step_redesign Option C): once
   a garment is picked the chip grid hides behind one selection line + "Change
   garment"; labeled option rows (weight/style/cut + the folded-in color row)
   sit under it in the same step. .lg-chips/.lgx-sel/.lgx-optrow set their own
   display, so each needs an explicit [hidden] override. */
.lg-chips[hidden]{display:none;}
.lgx-sel{display:flex;align-items:center;gap:1.1rem;border:1.5px solid var(--vh-ink);border-radius:4px;background:var(--vh-white);padding:1rem 1.4rem;}
.lgx-sel[hidden]{display:none;}
.lgx-sel .lg-chip-ico{width:26px;height:26px;opacity:1;}
.lgx-sel .f{min-width:0;}
.lgx-sel .nm{display:block;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.06em;font-weight:600;font-size:1.4rem;color:var(--vh-ink);}
.lgx-sel .sub{display:block;font-family:var(--vh-body);font-size:1.1rem;color:var(--vh-muted);}
.lgx-sel .sub:empty{display:none;}
.lgx-sel .chg{position:relative;margin-left:auto;background:none;border:none;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.05rem;color:var(--vh-muted);cursor:pointer;border-bottom:1px solid var(--vh-line-strong);padding-bottom:0.2rem;flex-shrink:0;}
.lgx-sel .chg:hover{color:var(--vh-ink);}
/* 44px effective touch target on the small text link (Drive B pattern). */
.lgx-sel .chg::before{content:'';position:absolute;left:50%;top:50%;width:100%;min-width:4.4rem;height:4.4rem;transform:translate(-50%,-50%);}
.lgx-c-opts{margin-top:1.1rem;}
.lgx-optrow{display:flex;align-items:center;gap:1rem;}
.lgx-optrow[hidden]{display:none;}
.lgx-optrow + .lgx-optrow{margin-top:0.9rem;}
.lgx-optlbl{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.14em;font-size:1rem;color:var(--vh-muted);width:7rem;flex-shrink:0;}
.lgx-opts{display:flex;flex-wrap:wrap;gap:0.8rem;flex:1;min-width:0;}
/* the folded-in color row: swatch rows wrap, so top-align the label */
.lgx-optrow--color{align-items:flex-start;}
.lgx-optrow--color .lgx-optlbl{padding-top:0.8rem;}
.lgx-optrow--color .lg-color-stack{flex:1;min-width:0;}

/* garment color swatches */
.lg-color-stack{min-height:3rem;}
.lg-swatches{display:flex;flex-wrap:wrap;gap:1rem;}
.lg-swatches[hidden]{display:none;}
.lg-sw{width:3rem;height:3rem;border-radius:999px;cursor:pointer;border:2px solid var(--vh-line);position:relative;transition:transform .12s ease;padding:0;}
.lg-sw:hover{transform:scale(1.12);}
.lg-sw.active{box-shadow:0 0 0 2px var(--vh-cream),0 0 0 4px var(--vh-ink);}
.lg-sw--light{border-color:var(--vh-line-strong);}
.lg-sw-name{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);margin-top:1rem;}
.lg-sw-name strong{color:var(--vh-ink);font-weight:500;}

/* placement ticks */
.lg-zones{display:grid;grid-template-columns:1fr 1fr;gap:0.9rem;}
/* at 375px a half-width card leaves ~67px for the nowrap .max — single column below 400px */
@media(max-width:400px){.lg-zones{grid-template-columns:1fr;}}
.lg-ztick{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:0.4rem 1.1rem;border:1.5px solid var(--vh-line);background:var(--vh-white);border-radius:5px;padding:1.2rem 1.4rem;cursor:pointer;transition:all .15s ease;width:100%;text-align:left;}
.lg-ztick:hover{border-color:var(--vh-line-strong);}
.lg-ztick.active{border-color:var(--vh-ink);box-shadow:inset 0 0 0 1px var(--vh-ink);}
.lg-ztick .box{flex-shrink:0;width:1.9rem;height:1.9rem;margin-top:0;border:1.5px solid var(--vh-line-strong);border-radius:99px;display:flex;align-items:center;justify-content:center;font-size:1rem;color:transparent;transition:all .15s ease;}
.lg-ztick.active .box{background:var(--vh-ink);border-color:var(--vh-ink);color:var(--vh-white);}
.lg-ztick .t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.02em;font-weight:500;font-size:1.4rem;color:var(--vh-ink);}
/* white-space:normal (was nowrap): the apply-mode "too small for your logo"
   string must wrap inside the half-width card between ~400-560px instead of
   spilling out of the 2x2 zones grid. */
.lg-ztick .max{font-family:var(--vh-display);font-weight:500;font-size:1.1rem;letter-spacing:0.06em;grid-column:2;margin-left:0;text-align:left;white-space:normal;overflow-wrap:break-word;min-width:0;color:var(--vh-muted);text-transform:uppercase;}

/* size lock */
.sz-row{display:flex;align-items:center;gap:1.6rem;}
.sz-row input[type=range]{flex:1;accent-color:var(--vh-ink);}
.sz-row input[type=range]:disabled{opacity:0.4;}
.sz-val{font-family:var(--vh-display);font-weight:600;font-size:1.6rem;letter-spacing:0.04em;min-width:11rem;text-align:right;color:var(--vh-ink);}
.sz-val .mm{display:block;font-family:var(--vh-body);font-weight:400;font-size:1.1rem;color:var(--vh-muted);letter-spacing:0;}
.sz-note{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);margin-top:0.9rem;line-height:1.55;}
.sz-advisory{display:none;margin-top:1.2rem;border-left:3px solid #C9A24B;padding:0.8rem 0 0.8rem 1.4rem;font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);line-height:1.6;}
.sz-advisory.show{display:block;}
.sz-advisory strong{color:var(--vh-ink);font-weight:500;}
.sz-fit{margin-top:0.9rem;background:none;border:1.5px solid var(--vh-ink);color:var(--vh-ink);font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-weight:600;font-size:1.1rem;padding:0.7rem 1.4rem;border-radius:4px;cursor:pointer;}
.sz-fit:hover{background:var(--vh-ink);color:var(--vh-white);}
.sz-lockbtn{margin-top:1.6rem;width:100%;border:1.5px solid var(--vh-ink);background:var(--vh-white);color:var(--vh-ink);font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-weight:600;font-size:1.3rem;padding:1.4rem;border-radius:4px;cursor:pointer;transition:all .15s ease;}
.sz-lockbtn:hover{background:var(--vh-ink);color:var(--vh-white);}
.sz-lockbtn.locked{background:var(--vh-ink);color:var(--vh-white);}
.sz-lockbtn:disabled{opacity:0.4;cursor:not-allowed;}
.sz-lockbtn:disabled:hover{background:var(--vh-white);color:var(--vh-ink);}
.sz-locked-note{display:none;margin-top:1.2rem;border-left:3px solid #5E8A66;padding:0.8rem 0 0.8rem 1.4rem;font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);line-height:1.6;}
.sz-locked-note.show{display:block;}
.sz-locked-note strong{color:var(--vh-ink);font-weight:500;}
/* Apply mode (Drive 9): per-substrate size story + spots the pinned file can't hold */
.sz-apply-note{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);margin-top:1.1rem;line-height:1.6;border-left:3px solid var(--vh-ink);padding:0.8rem 0 0.8rem 1.4rem;}
.sz-apply-note[hidden]{display:none;}
.sz-apply-note strong{color:var(--vh-ink);font-weight:500;}
.sz-lockbtn.locked:disabled{opacity:1;cursor:default;}
.sz-lockbtn.locked:disabled:hover{background:var(--vh-ink);color:var(--vh-white);}
.lg-ztick.blocked{opacity:0.45;cursor:not-allowed;}
.lg-ztick.blocked:hover{border-color:var(--vh-line);}

/* base of ticket: live summary + continue, closing the frame (relocated from the
   dropped fixed bar) — dark-on-white to sit inside the white ticket, black button
   mirrors the studio's .sa-cart */
.lg-base-ledger{display:flex;flex-wrap:wrap;gap:1.1rem 2.2rem;padding-bottom:1.6rem;border-bottom:1px solid var(--vh-line);}
.lg-base-item{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.15rem;color:var(--vh-muted);}
.lg-base-item strong{color:var(--vh-ink);font-weight:600;margin-left:0.6rem;}
.lg-base-hint{display:block;font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);margin-top:1.4rem;}
.lg-base-btn{width:100%;margin-top:1.6rem;background:var(--vh-ink);color:var(--vh-white);border:1.5px solid var(--vh-ink);padding:1.6rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-weight:600;font-size:1.35rem;border-radius:4px;cursor:pointer;transition:all .18s ease;}
.lg-base-btn:hover{background:transparent;color:var(--vh-ink);}
.lg-base-btn:disabled{opacity:0.4;cursor:not-allowed;}
.lg-base-btn:disabled:hover{background:var(--vh-ink);color:var(--vh-white);}

/* phone stack (mobile audit findings 3+4): the .lk-strip flow wraps awkwardly,
   the step-05 aside crams beside its title, and the size slider is too short to
   drag. Sits after every base rule it overrides so source order wins. */
@media(max-width:560px){
  .lk-strip-in{flex-direction:column;align-items:flex-start;gap:1.2rem;}
  .lk-flow{flex-direction:column;align-items:flex-start;gap:0.7rem;}
  .lk-sep{display:none;}
  .lg-step-head{flex-wrap:wrap;}
  .lg-step-s{flex-basis:100%;margin-left:calc(3rem + 1.6rem);text-align:left;}
  .sz-row{flex-wrap:wrap;}
  .sz-row input[type=range]{flex:1 1 100%;}
}

/* ===========================================================================
   /your-logo/quantities — Logo Locker Screen 2 (Drive 4). Ported from the
   picked comp (briefs/comp_logo_screen2_quantities.html) with every class
   prefixed .lg2- so it can't collide with Screen 1's .lg- block above or the
   studio's .sa- block. Green (#5E8A66) + gold (#C9A24B) are inlined; the rest
   use the shared --vh-* tokens. Hand-written — NOT Tailwind, no css:build.
=========================================================================== */
.lg2-shell{max-width:128rem;margin:0 auto;padding:0 3.2rem;}

/* design summary head */
.lg2-head{background:var(--vh-white);border-bottom:1px solid var(--vh-line);border-top:1px solid var(--vh-line);padding:2.6rem 0;}
.lg2-head-in{display:flex;align-items:center;gap:2.4rem;flex-wrap:wrap;}
/* B1: preview column (render + its locked DST width) and the swatch strip
   row under the header line. */
.lg2-preview{display:flex;flex-direction:column;align-items:center;gap:0.5rem;flex-shrink:0;}
.lg2-dim{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:0.95rem;color:var(--vh-line-strong);white-space:nowrap;}
.lg2-threads{margin-top:1.4rem;}
.lg2-canvas{width:9.6rem;height:9.6rem;border:1px solid var(--vh-line);border-radius:5px;background:#EFE9DC;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;}
.lg2-canvas img{width:100%;height:100%;object-fit:contain;padding:0.8rem;}
.lg2-canvas .ph{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.1rem;color:var(--vh-line-strong);text-align:center;line-height:1.2;}
.lg2-meta{flex:1;min-width:24rem;}
.lg2-meta .crumb{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.2em;font-size:1rem;color:var(--vh-muted);margin-bottom:0.6rem;}
.lg2-meta h1{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.02em;font-size:2.4rem;line-height:1.05;color:var(--vh-ink);}
.lg2-meta .specs{display:flex;gap:2rem;flex-wrap:wrap;margin-top:0.9rem;font-size:1.25rem;color:var(--vh-muted);}
.lg2-meta .specs strong{color:var(--vh-ink);font-weight:500;}
/* multi-placement group (Drive E3): one line per spot reads better stacked */
.lg2-meta .specs--spots{flex-direction:column;gap:0.5rem;}
.lg2-edit{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1.15rem;color:var(--vh-muted);text-decoration:none;border:1.5px solid var(--vh-line-strong);border-radius:4px;padding:1.1rem 2rem;white-space:nowrap;transition:all .15s ease;}
.lg2-edit:hover{border-color:var(--vh-ink);color:var(--vh-ink);}

/* grid + sections */
.lg2-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(34rem,1fr);gap:5rem;align-items:start;padding:4.2rem 0 6rem;}
@media(max-width:980px){.lg2-grid{grid-template-columns:minmax(0,1fr);gap:4rem;}}
.lg2-sec{margin-bottom:4.2rem;}
.lg2-sec:last-child{margin-bottom:0;}
.lg2-sec-head{display:flex;align-items:baseline;gap:1.6rem;border-top:2px solid var(--vh-ink);padding-top:2rem;margin-bottom:1.8rem;}
.lg2-sec-head .num{font-family:var(--vh-slab);font-size:2.2rem;line-height:0.9;color:var(--vh-line-strong);}
.lg2-sec-head .t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.04em;font-weight:600;font-size:1.65rem;color:var(--vh-ink);}
.lg2-sec-head .s{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);margin-left:auto;text-align:right;}

/* qty matrix */
.lg2-qm{border:1px solid var(--vh-line);border-radius:6px;background:var(--vh-white);overflow-x:auto;}
.lg2-qm table{width:100%;border-collapse:collapse;min-width:42rem;}
.lg2-qm th{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.1rem;font-weight:600;color:var(--vh-muted);padding:1.3rem 1rem;border-bottom:1px solid var(--vh-line);text-align:center;}
.lg2-qm th:first-child{text-align:left;padding-left:1.8rem;}
.lg2-qm td{padding:1.2rem 1rem;text-align:center;border-bottom:1px solid var(--vh-line);}
.lg2-qm tr:last-child td{border-bottom:none;}
.lg2-qm td:first-child{text-align:left;padding-left:1.8rem;}
.lg2-qm .rowname{display:flex;align-items:center;gap:1rem;}
.lg2-qm .rowname .sw{width:2.2rem;height:2.2rem;border-radius:99px;border:1.5px solid var(--vh-line-strong);background:#EFE9DC;flex-shrink:0;}
.lg2-qm .rowname .nm{font-family:var(--vh-display);font-weight:500;font-size:1.3rem;letter-spacing:0.04em;text-transform:uppercase;color:var(--vh-ink);}
.lg2-qm input{width:6rem;text-align:center;border:1px solid var(--vh-line-strong);background:var(--vh-cream);border-radius:4px;padding:0.9rem 0.4rem;font-family:var(--vh-display);font-weight:500;font-size:1.4rem;color:var(--vh-ink);}
.lg2-qm input:focus{outline:none;border-color:var(--vh-ink);}
.lg2-qm .rowtotal{font-family:var(--vh-display);font-weight:600;font-size:1.4rem;color:var(--vh-ink);}
.lg2-qm-note{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);font-style:italic;margin-top:1.2rem;}

/* tier ladder */
.lg2-tl{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;}
@media(max-width:700px){.lg2-tl{grid-template-columns:repeat(2,1fr);}}
.lg2-tl-cell{border:1.5px solid var(--vh-line);background:var(--vh-white);border-radius:5px;padding:1.5rem 1.6rem;text-align:center;transition:all .15s ease;position:relative;}
.lg2-tl-cell .q{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.1rem;color:var(--vh-muted);}
.lg2-tl-cell .p{font-family:var(--vh-display);font-weight:600;font-size:2.1rem;margin-top:0.4rem;color:var(--vh-ink);}
.lg2-tl-cell .u{font-family:var(--vh-body);font-size:1.05rem;color:var(--vh-muted);}
.lg2-tl-cell.now{border-color:var(--vh-ink);box-shadow:inset 0 0 0 1px var(--vh-ink);}
.lg2-tl-cell.now::before{content:'YOUR PRICE';position:absolute;top:-0.9rem;left:50%;transform:translateX(-50%);background:var(--vh-ink);color:var(--vh-white);font-family:var(--vh-display);letter-spacing:0.14em;font-size:0.85rem;padding:0.3rem 1rem;border-radius:99px;white-space:nowrap;}
.lg2-nudge{margin-top:1.4rem;border-left:3px solid #C9A24B;padding:0.7rem 0 0.7rem 1.4rem;font-size:1.25rem;color:var(--vh-muted);}
.lg2-nudge strong{color:var(--vh-ink);font-weight:500;}

/* process explainer */
.lg2-px{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--vh-line);border-radius:6px;background:var(--vh-white);overflow:hidden;}
@media(max-width:700px){.lg2-px{grid-template-columns:1fr 1fr;}}
.lg2-px-step{padding:2rem 1.8rem;border-right:1px solid var(--vh-line);}
.lg2-px-step:last-child{border-right:none;}
@media(max-width:700px){.lg2-px-step{border-bottom:1px solid var(--vh-line);}}
.lg2-px-step .n{font-family:var(--vh-slab);font-size:1.9rem;color:var(--vh-line-strong);}
.lg2-px-step .t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.04em;font-weight:600;font-size:1.35rem;margin-top:0.8rem;color:var(--vh-ink);}
.lg2-px-step .d{font-size:1.2rem;color:var(--vh-muted);line-height:1.55;margin-top:0.5rem;}
.lg2-gate{margin-top:1.4rem;border-left:3px solid #5E8A66;padding:0.8rem 0 0.8rem 1.4rem;font-size:1.25rem;color:var(--vh-muted);line-height:1.6;}
.lg2-gate strong{color:var(--vh-ink);font-weight:500;}
.lg2-escalate{margin-top:1.6rem;font-size:1.25rem;color:var(--vh-muted);}
.lg2-escalate a{color:var(--vh-ink);text-decoration:underline;text-underline-offset:3px;}

/* order summary */
.lg2-os{position:sticky;top:2.4rem;border:1px solid var(--vh-line);border-radius:6px;background:var(--vh-white);overflow:hidden;}
.lg2-os-head{padding:1.8rem 2.2rem;border-bottom:1px solid var(--vh-line);font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.16em;font-size:1.2rem;font-weight:600;color:var(--vh-ink);}
.lg2-os-body{padding:2rem 2.2rem;}
.lg2-os-line{display:flex;justify-content:space-between;align-items:baseline;gap:1.6rem;padding:0.7rem 0;font-size:1.35rem;}
.lg2-os-line .k{color:var(--vh-muted);}
.lg2-os-line .v{font-family:var(--vh-display);font-weight:500;letter-spacing:0.03em;color:var(--vh-ink);}
.lg2-os-line .v.muted{color:var(--vh-muted);font-family:var(--vh-body);font-size:1.2rem;}
.lg2-os-line.free .v{color:#5E8A66;text-transform:uppercase;font-size:1.15rem;letter-spacing:0.08em;}
.lg2-os-line .k .once{display:block;margin-top:0.15rem;font-size:1.02rem;letter-spacing:0.07em;text-transform:uppercase;color:var(--vh-muted);opacity:0.72;}
.lg2-os-line.total{border-top:1px solid var(--vh-line);margin-top:1rem;padding-top:1.6rem;}
.lg2-os-line.total .k{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.14em;font-size:1.2rem;color:var(--vh-ink);}
.lg2-os-line.total .v{font-size:2.4rem;font-weight:600;}
/* D6 customer order note — free text in the summary, rides checkout */
.lg2-os-note{padding:1.2rem 0 0.4rem;}
.lg2-os-note label{display:block;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-size:1.1rem;font-weight:600;color:var(--vh-ink);margin-bottom:0.6rem;}
.lg2-os-note textarea{width:100%;border:1px solid var(--vh-line);border-radius:4px;background:var(--vh-white);font-family:var(--vh-body);font-size:1.25rem;line-height:1.5;color:var(--vh-ink);padding:0.9rem 1rem;resize:vertical;min-height:6.4rem;}
.lg2-os-note textarea:focus{outline:none;border-color:var(--vh-ink);}
.lg2-os-note .hint{display:block;margin-top:0.4rem;font-size:1.05rem;color:var(--vh-muted);}
.lg2-os-btn{display:block;width:calc(100% - 4.4rem);margin:0.6rem 2.2rem 1.4rem;border:1.5px solid var(--vh-ink);background:var(--vh-ink);color:var(--vh-white);font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-weight:600;font-size:1.4rem;padding:1.6rem;border-radius:4px;cursor:pointer;transition:all .18s ease;}
.lg2-os-btn:hover{background:transparent;color:var(--vh-ink);}
.lg2-os-btn:disabled{opacity:0.35;cursor:not-allowed;}
.lg2-os-btn:disabled:hover{background:var(--vh-ink);color:var(--vh-white);}
.lg2-os-err{margin:0 2.2rem 1.2rem;font-family:var(--vh-body);font-size:1.2rem;color:#9B2C2C;line-height:1.5;}
.lg2-os-assure{padding:0 2.2rem 2rem;font-size:1.2rem;color:var(--vh-muted);line-height:1.65;}
.lg2-os-assure strong{color:var(--vh-ink);font-weight:500;}
.lg2-os-reorder{border-top:1px solid var(--vh-line);padding:1.6rem 2.2rem;font-size:1.2rem;color:var(--vh-muted);line-height:1.6;background:var(--vh-cream);}
.lg2-os-reorder .scr{font-family:var(--vh-script);font-size:1.8rem;color:var(--vh-ink);display:block;margin-bottom:0.3rem;}

/* reorder mode (Drive 8) — on-file banner + rush toggle in the order summary.
   B2 (brief item 15): the banner was the last navy #242938 band on the
   customer flow — restyled to the vintage cream/tan system. White-on-dark
   copy becomes ink-on-cream; the hierarchy is unchanged (gold eyebrow pill,
   strong lead, muted body, hairline-topped scale row). Gold stays inlined
   (#C9A24B family) per the lg2 convention — the darker #7A5F22 text tone is
   the same one .llro-unavail already reads in on cream. */
.lg2-reorder-banner{background:var(--vh-cream);border-top:1px solid var(--vh-line);border-bottom:1px solid var(--vh-line);color:var(--vh-ink);}
.lg2-rb-in{padding:2rem 3.2rem;display:flex;align-items:center;gap:2rem;flex-wrap:wrap;}
.lg2-rb-eyebrow{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.2em;font-size:1.05rem;font-weight:600;color:#7A5F22;border:1.5px solid rgba(201,162,75,0.5);border-radius:99px;padding:0.5rem 1.3rem;white-space:nowrap;flex-shrink:0;}
.lg2-rb-t{font-size:1.3rem;line-height:1.55;color:var(--vh-muted);max-width:82ch;}
.lg2-rb-t strong{color:var(--vh-ink);font-weight:600;}
/* D4 stitched-width scale control (reorder banner) — 90-110% stepper */
.lg2-rb-scale{flex-basis:100%;display:flex;align-items:center;gap:1.1rem;flex-wrap:wrap;padding-top:1.2rem;border-top:1px solid var(--vh-line);}
.lg2-rb-scale .lbl{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.16em;font-size:1.05rem;font-weight:600;color:var(--vh-muted);}
.lg2-rb-scale .stepbtn{width:2.8rem;height:2.8rem;border-radius:99px;border:1.5px solid var(--vh-line-strong);background:var(--vh-white);color:var(--vh-ink);font-size:1.7rem;line-height:1;cursor:pointer;}
.lg2-rb-scale .stepbtn:hover:not(:disabled){border-color:var(--vh-ink);color:var(--vh-ink);}
.lg2-rb-scale .stepbtn:disabled{opacity:0.35;cursor:default;}
.lg2-rb-scale .val{font-family:var(--vh-display);font-size:1.4rem;font-weight:500;letter-spacing:0.03em;color:var(--vh-ink);min-width:12ch;text-align:center;}
.lg2-rb-scale .reset{background:none;border:none;padding:0;color:#7A5F22;font-size:1.2rem;text-decoration:underline;text-underline-offset:3px;cursor:pointer;}
.lg2-rb-scale .hint{flex-basis:100%;font-size:1.15rem;line-height:1.5;color:var(--vh-muted);}
.lg2-os-rush{display:flex;align-items:center;gap:1rem;padding:1rem 0 0.4rem;cursor:pointer;}
.lg2-os-rush input{width:1.8rem;height:1.8rem;flex-shrink:0;accent-color:var(--vh-ink);cursor:pointer;}
.lg2-os-rush .rt{flex:1;font-size:1.3rem;color:var(--vh-ink);display:flex;flex-direction:column;}
.lg2-os-rush .rd{font-size:1.05rem;letter-spacing:0.02em;color:var(--vh-muted);margin-top:0.1rem;}
.lg2-os-rush .rv{font-family:var(--vh-display);font-weight:500;letter-spacing:0.03em;color:var(--vh-ink);}

/* sticky ledger bar — sticky (not fixed) so it releases above the footer */
.lg2-bar{position:sticky;bottom:0;z-index:40;background:var(--vh-ink);color:var(--vh-white);border-top:1px solid #000;}
.lg2-bar-in{padding:1.6rem 3.2rem;display:flex;align-items:center;gap:3rem;flex-wrap:wrap;}
.lg2-bar-ledger{display:flex;align-items:baseline;gap:2.2rem;flex-wrap:wrap;flex:1;}
.lg2-bar-item{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.15rem;color:rgba(253,252,247,0.62);}
.lg2-bar-item strong{color:var(--vh-white);font-weight:500;margin-left:0.6rem;}
.lg2-bar-total{display:flex;align-items:baseline;gap:1.2rem;}
.lg2-bar-total .k{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.14em;font-size:1.15rem;color:rgba(253,252,247,0.62);}
.lg2-bar-total .v{font-family:var(--vh-display);font-weight:600;font-size:2.6rem;line-height:1;}
.lg2-bar-btn{border:1.5px solid var(--vh-white);background:var(--vh-white);color:var(--vh-ink);font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-weight:600;font-size:1.3rem;padding:1.4rem 3rem;border-radius:4px;cursor:pointer;transition:all .18s ease;}
.lg2-bar-btn:hover{background:transparent;color:var(--vh-white);}
.lg2-bar-btn:disabled{opacity:0.4;cursor:not-allowed;}
.lg2-bar-btn:disabled:hover{background:var(--vh-white);color:var(--vh-ink);}
@media(max-width:640px){.lg2-bar-in{gap:1.4rem;}.lg2-bar-btn{width:100%;}}

/* ===== CONTACT ===== */
/* ===== CONTACT — "split counter" ===== */

.vcb-grid{display:grid;grid-template-columns:minmax(32rem,5fr) 7fr;gap:0;margin:5.6rem 0 9rem;border:1px solid var(--vh-ink);border-radius:4px;overflow:hidden;background:var(--vh-white);}
@media(max-width:900px){.vcb-grid{grid-template-columns:1fr;}}

/* left — ink panel */
.vcb-maker{background:var(--vh-ink);color:var(--vh-white);padding:4.4rem 4rem 4rem;display:flex;flex-direction:column;}
.vcb-maker .vh-eyebrow{color:rgba(251,248,241,0.65);}
.vcb-maker .vh-eyebrow .vh-x{color:var(--vh-white);}
.vcb-maker h1{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.02em;font-size:3rem;line-height:1.05;margin:2rem 0 1.8rem;color:#fff;}
.vcb-maker>p{font-size:1.5rem;line-height:1.7;color:rgba(251,248,241,0.78);margin-bottom:3.4rem;}
.vcb-facts{list-style:none;border-top:1px solid rgba(251,248,241,0.25);margin-top:auto;}
.vcb-fact{display:flex;justify-content:space-between;gap:2rem;align-items:baseline;padding:1.7rem 0;border-bottom:1px solid rgba(251,248,241,0.18);}
.vcb-fact .k{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.16em;font-size:1.05rem;color:rgba(251,248,241,0.6);white-space:nowrap;}
.vcb-fact .v{font-family:var(--vh-body);font-size:1.4rem;color:#fff;text-align:right;}
.vcb-fact .v a{color:#fff;}

/* right — form */
.vcb-form{padding:4.4rem 4.4rem 4rem;}
.vcb-lbl{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.16em;font-size:1.1rem;font-weight:600;color:var(--vh-muted);display:block;margin-bottom:0.9rem;}
.vcb-lbl .opt{font-weight:400;letter-spacing:0.1em;color:var(--vh-line-strong);}
.vcb-types{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;margin-bottom:3rem;}
@media(max-width:640px){.vcb-types{grid-template-columns:1fr;}}
.vcb-type{border:1.5px solid var(--vh-line-strong);background:var(--vh-cream);padding:1.5rem 1.8rem;text-align:left;cursor:pointer;transition:all .15s ease;border-radius:2px;}
.vcb-type:hover{border-color:var(--vh-ink);}
.vcb-type.is-on{border-color:var(--vh-ink);background:var(--vh-white);box-shadow:inset 0 0 0 1px var(--vh-ink);}
.vcb-type .t{display:block;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.06em;font-size:1.4rem;font-weight:600;color:var(--vh-ink);}
.vcb-type .d{display:block;font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);margin-top:0.3rem;}
.vcb-row{display:grid;grid-template-columns:1fr 1fr;gap:2.4rem;margin-bottom:2.4rem;}
@media(max-width:640px){.vcb-row{grid-template-columns:1fr;}}
.vcb-field input,.vcb-field textarea{width:100%;background:var(--vh-cream);border:1.5px solid var(--vh-line-strong);border-radius:2px;padding:1.3rem 1.5rem;font-family:var(--vh-body);font-size:1.5rem;color:var(--vh-ink);transition:border-color .15s ease;}
.vcb-field input::placeholder,.vcb-field textarea::placeholder{color:var(--vh-line-strong);}
.vcb-field input:focus,.vcb-field textarea:focus{outline:none;border-color:var(--vh-ink);background:var(--vh-white);}
.vcb-field textarea{resize:vertical;min-height:13rem;line-height:1.6;}
.vcb-hint{font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-muted);margin:-0.8rem 0 2.4rem;}
.vcb-hint a{color:var(--vh-ink);}
.vcb-msg{margin-bottom:3rem;}
.vcb-submit{display:flex;flex-direction:column;gap:1.4rem;}
.vcb-submit .vh-btn{justify-content:center;width:100%;}
.vcb-promise{font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-muted);text-align:center;line-height:1.6;}

/* success state (replaces the grid after POST) */
.vcb-done{max-width:64rem;margin:0 auto;text-align:center;padding:8rem 3.2rem 9rem;}
.vcb-done .vh-eyebrow{justify-content:center;margin-bottom:2rem;}
.vcb-done h2{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.02em;font-size:3.4rem;margin-bottom:1.8rem;color:var(--vh-ink);}
.vcb-done p{font-size:1.6rem;line-height:1.7;color:var(--vh-muted);max-width:46ch;margin:0 auto 3.2rem;}
/* build addition (not in the comp): controlled H1 break so desktop renders
   "TALK TO THE PEOPLE" / "WHO SEW IT." — the br is hidden on mobile so the
   title wraps naturally there. */

/* ===== end CONTACT ===== */

/* ===== STORE — "stock ledger" (comp A) ===== */
.vsa-head{background:var(--vh-white);border-bottom:1px solid var(--vh-line);padding:5.6rem 0 4.2rem;}
.vsa-head .vh-eyebrow{margin-bottom:1.6rem;}
.vsa-head .vh-section-title{font-size:clamp(3.4rem,4.6vw,5.6rem);max-width:24ch;}
.vsa-head p.sub{font-size:1.55rem;color:var(--vh-muted);margin-top:1.6rem;max-width:52ch;line-height:1.7;}

.vsa-bar{display:flex;justify-content:space-between;align-items:center;gap:1.6rem;padding:1.6rem 0;border-bottom:1px solid var(--vh-line);}
.vsa-bar-tools{display:inline-flex;align-items:center;gap:1.8rem;}
.vsa-count{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.16em;font-size:1.15rem;color:var(--vh-muted);}
.vsa-count b{color:var(--vh-ink);font-weight:600;}
.vsa-sort{display:inline-flex;align-items:center;gap:1rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1.15rem;color:var(--vh-muted);cursor:pointer;}
.vsa-sort select{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-size:1.2rem;color:var(--vh-ink);background:transparent;border:1.5px solid var(--vh-line-strong);border-radius:2px;padding:0.7rem 1.2rem;cursor:pointer;}
/* build addition (not in the comp): mobile Filters button in the bar, opens the drawer */
.vsa-mfilters{display:none;align-items:center;gap:0.8rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1.15rem;color:var(--vh-ink);background:transparent;border:1.5px solid var(--vh-line-strong);border-radius:2px;padding:0.7rem 1.4rem;cursor:pointer;}

.vsa-layout{display:flex;gap:4.8rem;align-items:flex-start;padding:4rem 0 8rem;}
.vsa-rail{flex:0 0 24rem;position:sticky;top:2.4rem;}
.vsa-rail-head{display:flex;justify-content:space-between;align-items:baseline;border-bottom:2px solid var(--vh-ink);padding-bottom:1.1rem;}
.vsa-rail-head .t{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.2em;font-size:1.25rem;color:var(--vh-ink);}
.vsa-rail-head .clear{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);background:none;border:none;cursor:pointer;text-decoration:underline;text-underline-offset:3px;}
.vsa-rail-head .clear[hidden]{display:none;}
.vsa-facet{border-bottom:1px solid var(--vh-line);}
/* comp's h4 becomes a collapse toggle button (carried over from the old catalog rail) */
.vsa-facet-h{width:100%;display:flex;justify-content:space-between;align-items:center;background:none;border:none;cursor:pointer;padding:1.9rem 0 1.4rem;font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.14em;font-size:1.2rem;color:var(--vh-ink);}
.vsa-facet-h .chev{font-size:1rem;color:var(--vh-line-strong);transition:transform .2s ease;}
.vsa-facet.closed .vsa-facet-h .chev{transform:rotate(-90deg);}
.vsa-facet-b{display:flex;flex-direction:column;padding-bottom:1.9rem;}
.vsa-facet.closed .vsa-facet-b{display:none;}
.vsa-opt{display:flex;align-items:center;gap:1.1rem;font-size:1.4rem;color:var(--vh-muted);cursor:pointer;padding:0.55rem 0;user-select:none;}
.vsa-opt:hover{color:var(--vh-ink);}
/* the comp's .box span is the real checkbox here (appearance:none, ink when checked) */
.vsa-opt input{appearance:none;-webkit-appearance:none;width:1.5rem;height:1.5rem;border:1.5px solid var(--vh-line-strong);border-radius:2px;flex:0 0 auto;position:relative;background:var(--vh-white);cursor:pointer;margin:0;transition:background-color .15s ease,border-color .15s ease;}
.vsa-opt input:checked{background:var(--vh-ink);border-color:var(--vh-ink);}
.vsa-opt input:checked::after{content:'';position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid var(--vh-white);border-width:0 2px 2px 0;transform:rotate(45deg);}
.vsa-opt:has(input:checked){color:var(--vh-ink);}
.vsa-opt .sw{width:1.5rem;height:1.5rem;border-radius:50%;border:1px solid rgba(24,21,16,0.25);flex:0 0 auto;}
.vsa-opt .n{flex:1;}
.vsa-opt .c{font-size:1.15rem;color:var(--vh-line-strong);}

.vsa-grid{flex:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4.4rem 3rem;align-content:start;}
@media(max-width:1000px){.vsa-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
.vsa-card{text-decoration:none;display:block;}
/* Joel 2026-07-10: borderless tiles — the 1px frame read as a stray "edge" on
   white-background photos (Belle Rose), and the ink hover border was disliked.
   Hover keeps lift + shadow + zoom only. Radius 3px -> 6px (site-wide tile nudge). */
.vsa-card .ph{aspect-ratio:1;overflow:hidden;border-radius:6px;background:var(--vh-white);margin-bottom:1.5rem;transition:transform .25s ease,box-shadow .25s ease;display:flex;align-items:center;justify-content:center;}
.vsa-card .ph img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease;}
.vsa-card .ph .ph-fallback{font-family:var(--vh-display);font-weight:600;font-size:6rem;line-height:1;color:var(--vh-line-strong);opacity:0.55;}
.vsa-card:hover .ph{transform:translateY(-3px);box-shadow:0 14px 30px rgba(24,21,16,0.12);}
.vsa-card:hover .ph img{transform:scale(1.03);}
.vsa-card .col{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.18em;font-size:1.02rem;color:var(--vh-muted);margin-bottom:0.5rem;}
.vsa-card h3{font-family:var(--vh-display);font-weight:500;text-transform:uppercase;letter-spacing:0.04em;font-size:1.65rem;color:var(--vh-ink);line-height:1.2;}
.vsa-card .price{font-family:var(--vh-body);font-size:1.4rem;color:var(--vh-muted);margin-top:0.5rem;}
.vsa-card .price b{color:var(--vh-ink);font-weight:500;}

.vsa-empty{grid-column:1/-1;padding:6rem 0;text-align:center;}
.vsa-empty p{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-size:1.8rem;color:var(--vh-muted);margin-bottom:1.4rem;}
.vsa-clear2{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-ink);background:none;border:none;cursor:pointer;text-decoration:underline;text-underline-offset:3px;}
.vsa-card .stars{display:flex;align-items:baseline;gap:0.7rem;margin-top:0.5rem;}
.vsa-card .stars .s{color:var(--vh-ink);font-size:1.25rem;letter-spacing:0.18em;}
.vsa-card .stars .n{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);}

/* mobile: the rail becomes the slide-in drawer + scrim (carried over from the old catalog) */
.vsa-scrim{display:none;}
@media(max-width:900px){
  .vsa-mfilters{display:inline-flex;}
  /* the bar's min-content (count + filters + sort select) exceeds a 390px
     viewport; wrapping + min-width:0 lets it shrink instead of widening the page */
  .vsa-bar{flex-wrap:wrap;gap:1rem 1.6rem;}
  .vsa-bar-tools{flex-wrap:wrap;min-width:0;}
  .vsa-sort{min-width:0;}
  .vsa-sort select{min-width:0;}
  .vsa-layout{gap:0;}
  .vsa-scrim{position:fixed;inset:0;background:rgba(24,21,16,0.45);z-index:40;}
  .vsa-scrim.open{display:block;}
  .vsa-rail{position:fixed;top:0;left:0;bottom:0;width:30rem;max-width:85vw;background:var(--vh-cream);z-index:50;transform:translateX(-100%);transition:transform .28s ease;padding:2.4rem;overflow-y:auto;box-shadow:0 0 40px rgba(0,0,0,0.2);}
  .vsa-rail.open{transform:none;}
}
/* ===== end STORE ===== */

/* ===== PDP — "vintage product detail" (comp final: A gallery + B panel + B reviews) ===== */
/* Appended for /shop/product/<slug> (PDP drive 2). Adapted from
   briefs/pdp_vintage_comp_final.html; build additions beyond the comp are
   commented inline. Plain CSS — NOT Tailwind, no css:build. */
.vpd-page{background:var(--vh-cream);}
.vpd-crumb{padding:2.4rem 0 0;font-size:1.25rem;color:var(--vh-muted);}
.vpd-crumb a{color:var(--vh-muted);text-decoration:none;}
.vpd-crumb a:hover{color:var(--vh-ink);text-decoration:underline;text-underline-offset:3px;}
.vpd-crumb b{color:var(--vh-ink);font-weight:500;}

.vpd-layout{display:grid;grid-template-columns:7fr 5fr;gap:6.4rem;align-items:start;padding:3.2rem 0 8rem;}

/* gallery (comp A): sticky, vertical thumb rail + bordered hero */
.vpd-gal{position:sticky;top:2.4rem;display:flex;gap:1.2rem;}
.vpd-thumbs{display:flex;flex-direction:column;gap:0.9rem;width:6.4rem;flex:0 0 auto;}
.vpd-thumbs button{appearance:none;background:var(--vh-white);border:1px solid var(--vh-line-strong);border-radius:6px;padding:0;aspect-ratio:1;overflow:hidden;cursor:pointer;opacity:0.65;transition:all .2s ease;}
.vpd-thumbs button.on,.vpd-thumbs button:hover{opacity:1;border-color:var(--vh-ink);}
.vpd-thumbs img{width:100%;height:100%;object-fit:cover;display:block;}
/* cross-garment drive 1: column wrapper so the "shown on the crewneck" note
   sits under the hero inside the sticky gallery (inert for single-tier pages). */
.vpd-hero-col{flex:1;min-width:0;display:flex;flex-direction:column;gap:1rem;}
.vpd-hero{flex:1;aspect-ratio:1;border:none;border-radius:6px;background:var(--vh-white);overflow:hidden;position:relative;min-width:0;}
.vpd-garment-note{margin:0;text-align:center;font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);}
/* Joel 2026-07-10: while "The blank" shows, the frame goes pure white so the
   S&S photo's white background merges with the box (no floating rectangle). */
.vpd-hero.is-blank{background:#fff;}
/* build addition: the hero image sits inside a full-bleed lightbox button;
   object-fit contain (not the comp's cover) so non-square uploads and the
   S&S blank photos are never cropped. */
.vpd-hero .zoom{appearance:none;display:block;width:100%;height:100%;padding:0;border:none;background:transparent;cursor:zoom-in;}
.vpd-hero .zoom img{width:100%;height:100%;object-fit:contain;display:block;}
.vpd-hero .zoom .ph{display:flex;align-items:center;justify-content:center;height:100%;font-family:var(--vh-body);font-size:1.4rem;color:var(--vh-line-strong);}
.vpd-flip{position:absolute;top:1.4rem;left:1.4rem;z-index:2;display:flex;border:1.5px solid var(--vh-ink);border-radius:2px;overflow:hidden;background:var(--vh-white);}
.vpd-flip button{appearance:none;border:none;background:transparent;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.05rem;padding:0.7rem 1.3rem;cursor:pointer;color:var(--vh-muted);}
.vpd-flip button.on{background:var(--vh-ink);color:var(--vh-white);}

/* buy panel (comp B): hairline sections only */
.vpd-buy .vh-eyebrow{margin-bottom:1.2rem;text-decoration:none;}
.vpd-buy a.vh-eyebrow:hover{color:var(--vh-ink);}
.vpd-buy h1{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.012em;line-height:1.02;font-size:clamp(2.8rem,3.4vw,4.2rem);color:var(--vh-ink);}
.vpd-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:1.4rem;margin-top:1.2rem;padding-bottom:2.2rem;border-bottom:1px solid var(--vh-line);}
.vpd-price{font-family:var(--vh-display);font-weight:600;font-size:2.2rem;color:var(--vh-ink);}
.vpd-stars{font-size:1.3rem;color:var(--vh-muted);text-decoration:none;}
.vpd-stars .s{color:var(--vh-ink);letter-spacing:0.1em;}
.vpd-stars:hover{text-decoration:underline;text-underline-offset:3px;}
.vpd-desc{padding:2rem 0;border-bottom:1px solid var(--vh-line);font-size:1.45rem;line-height:1.7;color:var(--vh-muted);}
.vpd-desc p{font-size:1.45rem;line-height:1.7;color:var(--vh-muted);}
/* build addition: Read more toggle on long descriptions (carried over) */
.vpd-desc .more{appearance:none;background:none;border:none;padding:0;margin-top:0.8rem;font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-ink);text-decoration:underline;text-underline-offset:3px;cursor:pointer;}

.vpd-sec{padding:2.2rem 0;border-bottom:1px solid var(--vh-line);}
.vpd-sec-h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:1.4rem;}
.vpd-sec-h .l{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.16em;font-size:1.15rem;color:var(--vh-ink);}
.vpd-sec-h .r{font-size:1.2rem;color:var(--vh-muted);}
.vpd-sec-h a.r{text-decoration:underline;text-underline-offset:3px;}
.vpd-sec-h a.r:hover{color:var(--vh-ink);}
.vpd-sec-h .r b{color:var(--vh-ink);font-weight:500;}

.vpd-tiers{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
/* build addition: equal columns when a product carries three tiers */
.vpd-tiers--3{grid-template-columns:1fr 1fr 1fr;}
.vpd-tier{appearance:none;width:100%;text-align:left;border:1.5px solid var(--vh-line-strong);border-radius:2px;background:var(--vh-white);padding:1.4rem 1.6rem;cursor:pointer;transition:all .15s ease;position:relative;}
.vpd-tier:hover{border-color:var(--vh-ink);}
.vpd-tier.on{border-color:var(--vh-ink);box-shadow:inset 0 0 0 1px var(--vh-ink);}
.vpd-tier .n{display:block;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-size:1.3rem;color:var(--vh-ink);}
.vpd-tier .w{display:block;font-family:var(--vh-body);font-size:1.15rem;color:var(--vh-muted);margin-top:0.3rem;}
.vpd-tier .p{display:block;font-family:var(--vh-display);font-weight:600;font-size:1.7rem;margin-top:0.9rem;color:var(--vh-ink);}
.vpd-tier .tag{position:absolute;top:-0.9rem;right:1.2rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:0.92rem;background:var(--vh-ink);color:var(--vh-white);padding:0.25rem 0.8rem;border-radius:2px;}

.vpd-swatches{display:flex;flex-wrap:wrap;gap:1rem;}
.vpd-sw{appearance:none;padding:0;width:3.2rem;height:3.2rem;border-radius:50%;border:1px solid var(--vh-line-strong);cursor:pointer;transition:transform .15s ease;}
.vpd-sw:hover{transform:translateY(-2px);}
.vpd-sw.on{box-shadow:0 0 0 2px var(--vh-cream),0 0 0 3.5px var(--vh-ink);}
/* build addition: text-only color list fallback (hats / no S&S hex data) */
.vpd-colors-text{font-family:var(--vh-body);font-size:1.4rem;color:var(--vh-muted);line-height:1.6;}
/* build addition: modifier dropdowns (admin-defined custom options) */
.vpd-mod{width:100%;border:1px solid var(--vh-line-strong);background:var(--vh-white);padding:1.2rem 1.4rem;font-family:var(--vh-body);font-size:1.4rem;color:var(--vh-ink);border-radius:2px;cursor:pointer;}
.vpd-mod:focus{outline:none;border-color:var(--vh-ink);}

.vpd-sizes{display:flex;flex-wrap:wrap;gap:0.8rem;}
.vpd-size{min-width:5rem;height:4.4rem;padding:0 1.4rem;display:inline-flex;align-items:center;justify-content:center;border:1.5px solid var(--vh-line-strong);border-radius:2px;font-family:var(--vh-display);font-size:1.35rem;letter-spacing:0.06em;color:var(--vh-ink);cursor:pointer;transition:all .15s ease;background:transparent;}
.vpd-size:hover{border-color:var(--vh-ink);}
.vpd-size.on{background:var(--vh-ink);border-color:var(--vh-ink);color:var(--vh-white);}

.vpd-cta{padding:2.4rem 0 0;}
.vpd-cta .vh-btn{width:100%;justify-content:center;font-size:1.4rem;padding:1.8rem 3rem;}
/* build addition: incomplete-selection state on the main CTA */
.vpd-cta .vh-btn:disabled{background:transparent;color:var(--vh-muted);border-color:var(--vh-line-strong);cursor:not-allowed;}
/* build addition: add-to-cart result line (aria-live slot) */
.vpd-cartmsg{margin-top:0.8rem;font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-ink);opacity:0;transition:opacity .3s ease;}
.vpd-cartmsg.show{opacity:1;}
.vpd-cartmsg.err{color:#8A3033;}
.vpd-eta{margin-top:1.3rem;font-size:1.3rem;color:var(--vh-muted);}
.vpd-eta b{color:var(--vh-ink);font-weight:500;}
.vpd-logo-line{margin-top:0.7rem;font-size:1.3rem;color:var(--vh-muted);}
.vpd-logo-line a{color:var(--vh-ink);text-underline-offset:3px;}

.vpd-trust{margin-top:2.6rem;border-top:1px solid var(--vh-line);border-bottom:1px solid var(--vh-line);display:grid;grid-template-columns:repeat(3,1fr);}
.vpd-trust div{padding:1.4rem 1rem;text-align:center;font-size:1.2rem;color:var(--vh-muted);line-height:1.45;}
.vpd-trust div+div{border-left:1px solid var(--vh-line);}
.vpd-trust b{display:block;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.05rem;color:var(--vh-ink);font-weight:600;margin-bottom:0.3rem;}

.vpd-acc details{border-bottom:1px solid var(--vh-line);}
.vpd-acc summary{list-style:none;display:flex;justify-content:space-between;align-items:center;padding:1.7rem 0;cursor:pointer;font-family:var(--vh-display);font-weight:500;text-transform:uppercase;letter-spacing:0.1em;font-size:1.3rem;color:var(--vh-ink);}
.vpd-acc summary::-webkit-details-marker{display:none;}
.vpd-acc summary .chev{color:var(--vh-line-strong);transition:transform .2s ease;font-size:1.1rem;}
.vpd-acc details[open] summary .chev{transform:rotate(180deg);}
.vpd-acc .b{padding:0 0 1.8rem;font-size:1.4rem;line-height:1.7;color:var(--vh-muted);}

/* build addition: sticky mobile add-to-cart bar (cream, hairline top,
   ink CTA). Shown by Alpine when the primary CTA scrolls out of view;
   the media query hides it wherever the buy panel rides beside the
   gallery (the !important beats Alpine's inline display toggles). */
.vpd-mbar{position:fixed;bottom:0;left:0;right:0;z-index:50;display:flex;align-items:center;gap:1.6rem;background:var(--vh-cream);border-top:1px solid var(--vh-line);padding:1.2rem 1.6rem;box-shadow:0 -4px 16px rgba(24,21,16,0.08);}
.vpd-mbar .f{flex:1;min-width:0;}
.vpd-mbar .nm{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.04em;font-weight:500;font-size:1.3rem;color:var(--vh-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.vpd-mbar .pr{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);margin-top:0.2rem;}
.vpd-mbar .vh-btn{flex-shrink:0;justify-content:center;min-height:4.8rem;padding:1.2rem 2.4rem;font-size:1.25rem;}
.vpd-mbar .vh-btn.is-wait{background:transparent;color:var(--vh-muted);border-color:var(--vh-line-strong);}
@media(min-width:901px){.vpd-mbar{display:none !important;}}

/* reviews (comp B): white band, distribution + pull quote, ledger rows */
.vpd-reviews{background:var(--vh-white);border-top:1px solid var(--vh-line);padding:7.2rem 0;}
.vpd-reviews h2{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.012em;line-height:1;font-size:clamp(2.8rem,3.6vw,4.4rem);margin-top:1.4rem;color:var(--vh-ink);}
/* build addition: the "Showing X of Y" line (htmx oob swap target) */
.vpd-rev-count{margin-top:1rem;font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);}
.vpd-rev-band{display:grid;grid-template-columns:1fr 1fr;gap:5.6rem;margin:3.6rem 0 4.4rem;align-items:center;}
.vpd-dist{display:flex;flex-direction:column;gap:0.9rem;max-width:38rem;}
.vpd-dist .row{display:flex;align-items:center;gap:1.2rem;font-size:1.25rem;color:var(--vh-muted);}
.vpd-dist .st{width:3rem;flex:0 0 auto;font-variant-numeric:tabular-nums;}
.vpd-dist .st .x{color:var(--vh-ink);}
.vpd-dist .bar{height:0.8rem;flex:1;background:var(--vh-line);}
.vpd-dist .bar span{display:block;height:100%;background:var(--vh-ink);}
.vpd-dist .ct{width:2.4rem;text-align:right;font-variant-numeric:tabular-nums;color:var(--vh-line-strong);}
.vpd-quote{border-left:2px solid var(--vh-ink);padding-left:3.2rem;}
.vpd-quote p.q{font-size:1.9rem;line-height:1.55;color:var(--vh-ink);font-style:italic;}
.vpd-quote p.m{margin-top:1.4rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.14em;font-size:1.05rem;color:var(--vh-muted);}
.vpd-rev-tools{display:flex;justify-content:flex-end;margin-bottom:2rem;}
.vpd-rev-sort{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.15rem;color:var(--vh-muted);display:inline-flex;gap:1rem;align-items:center;}
.vpd-rev-sort select{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-size:1.2rem;color:var(--vh-ink);background:transparent;border:1.5px solid var(--vh-line-strong);border-radius:2px;padding:0.7rem 1.2rem;cursor:pointer;}
.vpd-rev-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;border-top:1px solid var(--vh-line);}
.vpd-rev-row{padding:2.4rem 2.8rem 2.4rem 0;border-bottom:1px solid var(--vh-line);}
.vpd-rev-row:nth-child(even){border-left:1px solid var(--vh-line);padding-left:2.8rem;padding-right:0;}
.vpd-rev-row .rs{color:var(--vh-ink);letter-spacing:0.12em;font-size:1.3rem;}
.vpd-rev-row p.b{margin-top:0.9rem;font-size:1.4rem;line-height:1.7;color:var(--vh-ink);}
.vpd-rev-row p.m{margin-top:1.2rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.14em;font-size:1.05rem;color:var(--vh-muted);}
/* build additions: Read more toggle, photo strip + Etsy footnote on rows */
.vpd-rev-row .more{appearance:none;background:none;border:none;padding:0;margin-top:0.5rem;font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-ink);text-decoration:underline;text-underline-offset:3px;cursor:pointer;}
.vpd-rev-row .phs{display:flex;flex-wrap:wrap;gap:0.6rem;margin-top:1.2rem;}
.vpd-rev-row .phs img{width:6.4rem;height:6.4rem;object-fit:cover;border:1px solid var(--vh-line-strong);border-radius:3px;display:block;}
.vpd-rev-row .phs .morep{display:flex;width:6.4rem;height:6.4rem;align-items:center;justify-content:center;border:1px solid var(--vh-line-strong);border-radius:3px;font-family:var(--vh-display);font-size:1.2rem;color:var(--vh-muted);text-decoration:none;background:var(--vh-cream);}
.vpd-rev-row p.src{margin-top:0.5rem;font-family:var(--vh-body);font-size:1.15rem;font-style:italic;color:var(--vh-line-strong);}
.vpd-rev-more{margin-top:3.2rem;text-align:center;}

.vpd-rel{background:var(--vh-cream);padding:7.2rem 0;}
.vpd-rel h2{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.012em;line-height:1;font-size:clamp(2.8rem,3.6vw,4.4rem);margin:1.4rem 0 3.6rem;color:var(--vh-ink);}
.vpd-rel-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3rem;}

/* build addition: closing ink band (the deleted .vsa-custom pattern,
   recreated under the vpd prefix) — flows straight into the footer. */
.vpd-close{background:var(--vh-ink);color:var(--vh-white);padding:6.4rem 0;}
.vpd-close .vh-wrap{display:flex;justify-content:space-between;align-items:center;gap:4rem;flex-wrap:wrap;}
.vpd-close h2{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.02em;font-size:3rem;line-height:1.05;color:#fff;max-width:24ch;}
.vpd-close p{font-size:1.5rem;color:rgba(251,248,241,0.75);margin-top:1.2rem;max-width:44ch;line-height:1.7;}
.vpd-close .vh-btn--solid{background:var(--vh-white);color:var(--vh-ink);border-color:var(--vh-white);flex-shrink:0;}
.vpd-close .vh-btn--solid:hover{background:transparent;color:#fff;border-color:#fff;}

@media(max-width:900px){
  .vpd-layout{grid-template-columns:1fr;gap:3.2rem;}
  .vpd-gal{position:static;flex-direction:column-reverse;}
  .vpd-thumbs{flex-direction:row;width:100%;}
  .vpd-thumbs button{width:6.4rem;}
  .vpd-rev-band{grid-template-columns:1fr;gap:3.2rem;}
  .vpd-rev-grid{grid-template-columns:1fr;}
  .vpd-rev-row:nth-child(even){border-left:none;padding-left:0;}
  .vpd-rev-row{padding-right:0;}
  .vpd-rel-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .vpd-trust{grid-template-columns:1fr;}
  .vpd-trust div+div{border-left:none;border-top:1px solid var(--vh-line);}
}
/* ===== end PDP ===== */


/* ===== SIZE GUIDE — "measurement ledger" (store arc drive 3) ===== */
/* /shop/size-guide. Plain CSS — NOT Tailwind, no css:build. */
.vsg-head{background:var(--vh-white);border-bottom:1px solid var(--vh-line);padding:5.6rem 0 4.2rem;}
.vsg-head .vh-eyebrow{margin-bottom:1.6rem;}
.vsg-head p.sub{font-size:1.55rem;color:var(--vh-muted);margin-top:1.6rem;max-width:58ch;line-height:1.7;}

.vsg-measure{border-bottom:1px solid var(--vh-line);background:var(--vh-cream);}
.vsg-measure .vh-wrap{display:grid;grid-template-columns:repeat(3,1fr);}
.vsg-m{padding:2.6rem 2.4rem;border-left:1px solid var(--vh-line);}
.vsg-m:first-child{border-left:none;padding-left:0;}
.vsg-m .k{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.16em;font-size:1.1rem;color:var(--vh-ink);margin-bottom:0.7rem;display:flex;align-items:center;gap:0.8rem;}
.vsg-m .k .vh-x{color:var(--vh-ink);font-size:0.9rem;}
.vsg-m .v{font-size:1.35rem;color:var(--vh-muted);line-height:1.6;}

.vsg-charts{padding:5.6rem 0 6.4rem;}
.vsg-chart{margin-bottom:5.2rem;scroll-margin-top:12rem;}
.vsg-chart:last-child{margin-bottom:0;}
.vsg-chart h2{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.02em;font-size:2.6rem;color:var(--vh-ink);margin-bottom:1.8rem;}
.vsg-table-wrap{overflow-x:auto;border:1px solid var(--vh-line-strong);border-radius:6px;background:var(--vh-white);}
.vsg-table{width:100%;border-collapse:collapse;font-size:1.35rem;}
.vsg-table th{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.12em;font-size:1.1rem;color:var(--vh-ink);text-align:left;padding:1.4rem 1.8rem;border-bottom:2px solid var(--vh-ink);white-space:nowrap;}
.vsg-table td{padding:1.3rem 1.8rem;color:var(--vh-muted);border-bottom:1px solid var(--vh-line);font-variant-numeric:tabular-nums;}
.vsg-table td:first-child{font-family:var(--vh-display);letter-spacing:0.06em;color:var(--vh-ink);}
.vsg-table tr:last-child td{border-bottom:none;}
.vsg-table tbody tr:hover{background:var(--vh-cream);}
.vsg-notes{margin-top:1.1rem;font-size:1.25rem;color:var(--vh-muted);font-style:italic;}
/* per-blank sub-table caption inside a category section */
.vsg-sub{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.14em;font-size:1.15rem;color:var(--vh-muted);margin:3rem 0 1rem;}
.vsg-chart .vsg-sub:first-of-type{margin-top:0;}
.vsg-notes-sec{margin-top:1.8rem;}

.vsg-help{border-top:1px solid var(--vh-line);padding:4rem 0 6.4rem;text-align:center;}
.vsg-help p{font-size:1.4rem;color:var(--vh-muted);}
.vsg-help a{color:var(--vh-ink);text-underline-offset:3px;}

@media(max-width:760px){
  .vsg-measure .vh-wrap{grid-template-columns:1fr;}
  .vsg-m{border-left:none;border-top:1px solid var(--vh-line);padding:1.8rem 0;}
  .vsg-m:first-child{border-top:none;}
}
/* ===== end SIZE GUIDE ===== */


/* ===== QUOTE FLOW (vq-) ===== */
/* "The Counter Work Order" kit (spec: briefs/quote_intake_comp_FINAL.html).
   /get-a-quote first (D1), then shared by the D2-D6 quote lifecycle pages.
   Plain CSS, NOT Tailwind - no css:build. Uses the shared --vh-* tokens. */

/* header band */
.vq-head{background:var(--vh-white);padding:6.4rem 0 4.2rem;}
.vq-h1{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.012em;line-height:0.98;font-size:clamp(3.6rem,5.3vw,5.8rem);color:var(--vh-ink);margin-top:1.4rem;}
.vq-sub{font-family:var(--vh-body);font-size:1.6rem;color:var(--vh-muted);max-width:56ch;margin-top:1.8rem;line-height:1.7;}

/* slim builder cross-sell strip */
.vq-xsell{background:var(--vh-white);border-top:1px solid var(--vh-line);}
.vq-xsell .in{max-width:122rem;margin:0 auto;padding:1.4rem 3.2rem;display:flex;align-items:center;gap:1.6rem;flex-wrap:wrap;font-family:var(--vh-body);font-size:1.4rem;color:var(--vh-muted);}
.vq-xsell b{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-weight:500;font-size:1.25rem;color:var(--vh-ink);}
.vq-xsell a{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.2rem;font-weight:500;color:var(--vh-ink);text-decoration:underline;text-underline-offset:4px;margin-left:auto;white-space:nowrap;}

/* counter grid */
.vq-band{background:var(--vh-cream);padding:5rem 0 9rem;}
.vq-grid{display:grid;grid-template-columns:minmax(30rem,2fr) minmax(0,3fr);border:1px solid var(--vh-line);border-radius:6px;overflow:hidden;background:var(--vh-white);box-shadow:0 10px 30px rgba(24,21,16,.06);}
@media(max-width:880px){.vq-grid{grid-template-columns:1fr;}}

/* left - dark maker panel */
.vq-maker{background:var(--vh-ink);color:#fff;padding:4.2rem 3.6rem;display:flex;flex-direction:column;}
.vq-maker .vh-eyebrow{color:rgba(251,248,241,.6);}
.vq-maker .vh-eyebrow .vh-x{color:#fff;}
.vq-maker h2{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;font-size:2.6rem;line-height:1.05;margin:1.6rem 0 1.2rem;color:#fff;}
.vq-maker>p{font-family:var(--vh-body);font-size:1.45rem;color:rgba(251,248,241,.76);line-height:1.7;max-width:40ch;}
.vq-ledger{list-style:none;margin:3.2rem 0 0;padding:0;border-top:1px solid rgba(251,248,241,.22);}
.vq-step{display:grid;grid-template-columns:4.4rem 1fr;gap:1.6rem;padding:1.8rem 0;border-bottom:1px solid rgba(251,248,241,.14);opacity:.45;transition:opacity .25s ease;}
.vq-step.is-on{opacity:1;}
.vq-step .n{font-family:var(--vh-display);font-weight:600;font-size:2rem;line-height:1.1;color:rgba(251,248,241,.55);}
.vq-step.is-on .n{color:#fff;}
.vq-step .t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1.3rem;font-weight:500;display:block;}
.vq-step .d{font-family:var(--vh-body);font-size:1.25rem;color:rgba(251,248,241,.6);margin-top:0.3rem;display:block;}
.vq-facts{margin-top:auto;padding-top:3rem;font-family:var(--vh-body);font-size:1.25rem;color:rgba(251,248,241,.6);line-height:2;}
.vq-facts b{color:#fff;font-weight:500;}
.vq-facts a{color:#fff;text-underline-offset:3px;}
.vq-provenance{margin-top:2.4rem;padding-top:1.8rem;border-top:1px solid rgba(251,248,241,.14);font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.2em;font-size:1.05rem;color:rgba(251,248,241,.45);}
@media(max-width:880px){
  .vq-maker{padding:2.8rem 2.4rem;}
  .vq-maker h2{font-size:2.1rem;}
  .vq-ledger .vq-step .d{display:none;}
  .vq-step{padding:1.2rem 0;}
  .vq-facts{padding-top:2rem;}
  .vq-provenance{display:none;}
}

/* right - the work-order form */
.vq-form{display:flex;flex-direction:column;}
.vq-sheethead{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:2rem 3.2rem;border-bottom:1px solid var(--vh-line);flex-wrap:wrap;background:var(--vh-white);}
.vq-sheethead .lbl{font-family:var(--vh-display);text-transform:uppercase;font-size:1.7rem;letter-spacing:0.06em;color:var(--vh-ink);margin:0;font-weight:600;}
.vq-sheethead .no{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.18em;font-size:1.1rem;color:var(--vh-muted);}
.vq-tabs{display:flex;border-bottom:1px solid var(--vh-line);}
.vq-tab{flex:1;padding:1.6rem 1rem;text-align:center;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.14em;font-size:1.2rem;font-weight:500;color:var(--vh-muted);background:var(--vh-cream);border:none;border-right:1px solid var(--vh-line);cursor:pointer;transition:all .15s ease;}
.vq-tab:last-child{border-right:none;}
.vq-tab:disabled{cursor:not-allowed;opacity:.6;}
.vq-tab .tn{font-family:var(--vh-display);font-weight:600;font-size:1.15rem;margin-right:0.6rem;color:var(--vh-line-strong);}
.vq-tab.is-on{background:var(--vh-white);color:var(--vh-ink);box-shadow:inset 0 -3px 0 var(--vh-ink);}
.vq-tab.is-on .tn{color:var(--vh-ink);}
@media(max-width:560px){.vq-tab{font-size:1.05rem;letter-spacing:0.08em;padding:1.3rem 0.4rem;}.vq-tab .tn{display:block;margin:0 0 0.2rem;}}
.vq-panel{padding:3.4rem 3.2rem 3.6rem;}
@media(max-width:640px){.vq-panel{padding:2.6rem 2rem;}}

/* controls */
.vq-lbl{display:block;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.16em;font-size:1.15rem;font-weight:600;color:var(--vh-muted);margin-bottom:0.8rem;}
.vq-lbl .opt{text-transform:none;letter-spacing:0.02em;font-family:var(--vh-body);font-weight:400;font-size:1.15rem;color:var(--vh-line-strong);}
.vq-field{margin-bottom:2.2rem;}
.vq-row{display:grid;grid-template-columns:1fr 1fr;gap:1.8rem;}
@media(max-width:640px){.vq-row{grid-template-columns:1fr;}}
.vq-note{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-line-strong);margin-top:0.6rem;}
.vq-err{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-ink);font-style:italic;margin-top:0.6rem;display:block;}
.vq-form input[type=text],.vq-form input[type=email],.vq-form input[type=tel],.vq-form input[type=number],.vq-form textarea,.vq-form select{
  width:100%;background:var(--vh-cream);border:1px solid var(--vh-line-strong);border-radius:4px;box-sizing:border-box;
  padding:1.3rem 1.5rem;font-family:var(--vh-body);font-size:1.5rem;color:var(--vh-ink);outline:none;transition:border-color .15s ease;}
.vq-form input:focus,.vq-form textarea:focus,.vq-form select:focus{border-color:var(--vh-ink);}
.vq-form ::placeholder{color:var(--vh-line-strong);}
.vq-form select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%23181510' stroke-width='1.5' d='M1 1.5 6 6.5 11 1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1.4rem center;background-size:1.1rem;padding-right:3.6rem;cursor:pointer;}
.vq-chips{display:flex;flex-wrap:wrap;gap:0.9rem;}
.vq-chip{position:relative;border:1px solid var(--vh-line-strong);border-radius:4px;padding:0.9rem 1.7rem;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.2rem;font-weight:500;cursor:pointer;transition:all .15s ease;background:var(--vh-white);color:var(--vh-ink);}
.vq-chip:hover{border-color:var(--vh-ink);}
.vq-chip.is-on{background:var(--vh-ink);color:#fff;border-color:var(--vh-ink);}

/* uploads */
.vq-drop{border:1.5px dashed var(--vh-line-strong);border-radius:4px;background:var(--vh-cream);padding:3rem 2rem;text-align:center;cursor:pointer;transition:border-color .15s ease,background .15s ease;}
.vq-drop:hover,.vq-drop.dragover{border-color:var(--vh-ink);}
.vq-drop .big{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.4rem;font-weight:500;color:var(--vh-ink);}
.vq-drop .small{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);margin-top:0.5rem;}
.vq-noart{margin-top:1.2rem;font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-muted);}
.vq-noart button{background:none;border:none;padding:0;font:inherit;color:var(--vh-ink);text-decoration:underline;text-underline-offset:3px;cursor:pointer;}
.vq-files{display:flex;flex-direction:column;gap:0.8rem;margin-top:1.4rem;}
.vq-file{display:flex;align-items:center;gap:1.2rem;border:1px solid var(--vh-line);background:var(--vh-cream);border-radius:4px;padding:1rem 1.4rem;font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-ink);}
.vq-file .nm{font-weight:500;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.vq-file .sz{color:var(--vh-muted);font-size:1.2rem;flex-shrink:0;}
.vq-file .rm{background:none;border:none;font-size:1.8rem;color:var(--vh-line-strong);cursor:pointer;line-height:1;padding:0 0.4rem;}
.vq-file .rm:hover{color:var(--vh-ink);}

/* placement rows (work-order line items with per-spot note + file) */
.vq-places{display:flex;flex-direction:column;gap:0.9rem;}
.vq-place{border:1px solid var(--vh-line-strong);border-radius:5px;background:var(--vh-white);transition:border-color .15s ease,box-shadow .15s ease;}
.vq-place.is-on{border-color:var(--vh-ink);box-shadow:inset 0 0 0 1px var(--vh-ink);}
.vq-place__head{display:flex;align-items:center;gap:1.3rem;padding:1.3rem 1.6rem;cursor:pointer;user-select:none;}
.vq-place__box{width:1.8rem;height:1.8rem;border:1.5px solid var(--vh-line-strong);border-radius:4px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s ease;background:var(--vh-white);}
.vq-place.is-on .vq-place__box{background:var(--vh-ink);border-color:var(--vh-ink);}
.vq-place__name{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.06em;font-weight:500;font-size:1.3rem;color:var(--vh-ink);display:block;}
.vq-place__desc{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);margin-top:0.2rem;display:block;}
.vq-place__more{padding:0 1.6rem 1.4rem 4.7rem;display:flex;flex-direction:column;gap:0.9rem;}
@media(max-width:560px){.vq-place__more{padding-left:1.6rem;}}
.vq-attach{display:inline-flex;align-items:center;gap:0.7rem;padding:0.8rem 1.4rem;border:1.5px dashed var(--vh-line-strong);border-radius:4px;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-size:1.1rem;font-weight:500;color:var(--vh-muted);cursor:pointer;transition:all .15s ease;width:fit-content;}
.vq-attach:hover{border-color:var(--vh-ink);color:var(--vh-ink);}

/* rush note */
.vq-rushnote{margin-top:0.8rem;border:1px solid var(--vh-line-strong);border-left:3px solid var(--vh-ink);background:var(--vh-cream);border-radius:4px;padding:1.2rem 1.6rem;font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);line-height:1.5;}

/* step-2 contextual cross-sell */
.vq-xsell2{border:1px solid var(--vh-line-strong);border-left:4px solid var(--vh-ink);border-radius:4px;background:var(--vh-white);padding:1.6rem 2rem;margin-top:2.2rem;font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-muted);}
.vq-xsell2 b{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-weight:500;font-size:1.25rem;color:var(--vh-ink);display:block;margin-bottom:0.3rem;}
.vq-xsell2 a{color:var(--vh-ink);text-underline-offset:3px;}

/* review ticket + tear-off estimate stub */
.vq-review{border:1px solid var(--vh-line-strong);border-radius:4px;background:var(--vh-cream);margin-bottom:2.4rem;overflow:hidden;}
.vq-review .row{display:flex;justify-content:space-between;gap:2rem;padding:1.3rem 1.8rem;border-bottom:1px solid var(--vh-line);font-family:var(--vh-body);font-size:1.4rem;color:var(--vh-ink);}
.vq-review .k{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1.1rem;font-weight:600;color:var(--vh-muted);padding-top:0.2rem;white-space:nowrap;}
.vq-review .v{flex:1;}
.vq-review .edit{background:none;border:none;padding:0;font-family:var(--vh-body);font-size:1.15rem;color:var(--vh-line-strong);text-decoration:underline;text-underline-offset:3px;cursor:pointer;white-space:nowrap;}
.vq-review .edit:hover{color:var(--vh-ink);}
.vq-stub{border-top:2px dashed var(--vh-line-strong);background:var(--vh-white);padding:1.8rem;display:flex;justify-content:space-between;align-items:center;gap:2rem;flex-wrap:wrap;}
.vq-stub .lbl{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.18em;font-size:1.05rem;font-weight:600;color:var(--vh-muted);}
.vq-stub .amt{font-family:var(--vh-display);font-weight:600;letter-spacing:0.01em;line-height:1;font-variant-numeric:tabular-nums;font-size:2.6rem;margin-top:0.3rem;color:var(--vh-ink);}
.vq-stub .per{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);}
.vq-stub .note{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);max-width:30ch;}

/* nav */
/* vh-btn is shared with the homepage (square corners there); the quote flow
   rounds it to the /estimate button radius via these scoped overrides only. */
.vq-band .vh-btn,.vq-sheet .vh-btn,.vq-successband .vh-btn{border-radius:4px;}
.vq-nav{display:flex;justify-content:space-between;align-items:center;gap:2rem;margin-top:1rem;flex-wrap:wrap;}
.vq-nav .vh-btn:disabled{opacity:0.5;cursor:not-allowed;}
.vq-btn--ghost{border-color:var(--vh-line-strong);color:var(--vh-muted);background:transparent;}
.vq-btn--ghost:hover{border-color:var(--vh-ink);color:var(--vh-ink);}
.vq-promise{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);max-width:38ch;}

/* success - confirmation band + what-happens-next ledger */
.vq-successband{background:var(--vh-white);border-top:1px solid var(--vh-line);padding:7rem 0 9rem;text-align:center;}
.vq-successband h2{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;font-size:clamp(2.8rem,4vw,4.2rem);line-height:1.02;color:var(--vh-ink);}
.vq-success-sub{font-family:var(--vh-body);font-size:1.55rem;color:var(--vh-muted);max-width:52ch;margin:1.8rem auto 0;line-height:1.7;}
.vq-next{max-width:52rem;margin:3.6rem auto 0;border:1px solid var(--vh-line-strong);border-radius:4px;background:var(--vh-cream);text-align:left;}
.vq-next .row{display:grid;grid-template-columns:4.4rem 1fr;gap:1.4rem;padding:1.6rem 2rem;border-bottom:1px solid var(--vh-line);align-items:baseline;}
.vq-next .row:last-child{border-bottom:none;}
.vq-next .n{font-family:var(--vh-display);font-weight:600;font-size:1.6rem;color:var(--vh-line-strong);}
.vq-next .t{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.25rem;font-weight:500;color:var(--vh-ink);display:block;}
.vq-next .d{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);margin-top:0.2rem;display:block;}
/* -- garment-preview widget: vintage chrome, scoped to the quote page.
      The shared gp- styles in input.css stay untouched (/estimate keeps
      its own look); these overrides only apply inside .vq-preview. -- */
.vq-preview .gp-root{background:#FFFFFF;border:1px solid var(--vh-line);border-radius:6px;box-shadow:none;}
.vq-preview .gp-tabs{background:transparent;border:1px solid var(--vh-line-strong);border-radius:4px;padding:0;gap:0;overflow:hidden;}
.vq-preview .gp-tab{border-radius:0;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1.2rem;font-weight:500;color:var(--vh-muted);padding:1.1rem 1rem;background:var(--vh-cream);}
.vq-preview .gp-tab + .gp-tab{border-left:1px solid var(--vh-line);}
.vq-preview .gp-tab:hover{color:var(--vh-ink);}
.vq-preview .gp-tab--active{background:var(--vh-ink);color:#fff;box-shadow:none;}
.vq-preview .gp-tab--active:hover{color:#fff;}
.vq-preview .gp-hero{background:#FFFFFF;border:1px solid var(--vh-line);border-radius:4px;}
.vq-preview .gp-name{font-family:var(--vh-display);font-style:normal;text-transform:uppercase;letter-spacing:0.14em;font-size:1.15rem;font-weight:500;color:var(--vh-muted);}
.vq-preview .gp-swatch-disc{border-radius:3px;}
.vq-preview .gp-swatch-half-disc{border-radius:3px;}
.vq-preview .gp-modal-swatch-disc{border-radius:3px;}
.vq-preview .gp-swatch--selected .gp-swatch-disc,
.vq-preview .gp-swatch--selected.gp-swatch--light .gp-swatch-disc,
.vq-preview .gp-modal-swatch.gp-swatch--selected .gp-modal-swatch-disc,
.vq-preview .gp-modal-swatch.gp-swatch--selected.gp-swatch--light .gp-modal-swatch-disc{outline:1.5px solid var(--vh-ink);}
.vq-preview .gp-swatch-half--selected .gp-swatch-half-disc{box-shadow:inset 0 0 0 1.5px var(--vh-ink);}
.vq-preview .gp-footer,.vq-preview .gp-footer em{font-family:var(--vh-body);font-style:normal;font-size:1.25rem;color:var(--vh-muted);}
.vq-preview .gp-palette-link,.vq-preview .gp-palette-link em{font-family:var(--vh-display);font-style:normal;text-transform:uppercase;letter-spacing:0.12em;font-size:1.15rem;font-weight:500;color:var(--vh-ink);text-decoration:underline;text-underline-offset:3px;}
.vq-preview .gp-modal-card{border:1px solid var(--vh-line-strong);border-radius:6px;background:var(--vh-white);}
.vq-preview .gp-modal-title{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.06em;}
/* garment preview expands open on selection (display flip re-runs the animation) */
.vq-reveal{animation:vq-reveal .28s ease-out;}
@keyframes vq-reveal{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:none;}}
@media (prefers-reduced-motion: reduce){.vq-reveal{animation:none;}}

/* =============================================================
   LIFECYCLE HUB (D2) — /quote/<token> as a single work-order sheet.
   Sheet frame + section scaffold, line-item ledger + tear-off totals,
   ticket-punch progress strip, letterpress status banners, approve/
   revise/decline action panels, and the post-action result panel.
   ============================================================= */

/* single-column work-order sheet (mirrors the vq-grid frame) */
.vq-sheet{max-width:80rem;margin:0 auto;border:1px solid var(--vh-line);border-radius:6px;overflow:hidden;background:var(--vh-white);box-shadow:0 10px 30px rgba(24,21,16,.06);}
.vq-sheet__meta{padding:1.6rem 3.2rem;border-bottom:1px solid var(--vh-line);background:var(--vh-white);font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-muted);line-height:1.7;}
.vq-sheet__meta b{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.06em;font-weight:500;font-size:1.25rem;color:var(--vh-ink);}
.vq-sheet__meta .sub{display:block;font-size:1.2rem;color:var(--vh-line-strong);margin-top:0.3rem;}
.vq-sec{padding:2.8rem 3.2rem;}
.vq-sec + .vq-sec{border-top:1px solid var(--vh-line);}
.vq-seclabel{display:block;font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.18em;font-size:1.1rem;font-weight:600;color:var(--vh-muted);margin-bottom:1.6rem;}
.vq-sheetfoot{text-align:center;padding:2.4rem 3.2rem;border-top:1px solid var(--vh-line);background:var(--vh-cream);font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);line-height:1.7;}
.vq-sheetfoot a{color:var(--vh-ink);text-underline-offset:2px;}
@media(max-width:640px){.vq-sheet__meta{padding:1.4rem 2rem;}.vq-sec{padding:2.4rem 2rem;}.vq-sheetfoot{padding:2.2rem 2rem;}}

/* line-item ledger (work-order rows) */
.vq-items{border-top:2px solid var(--vh-ink);}
.vq-items__head,.vq-line{display:grid;grid-template-columns:1fr 5rem 8.5rem 8.5rem;gap:1.4rem;align-items:center;}
.vq-items__head{padding:1.1rem 0;border-bottom:1px solid var(--vh-line);}
.vq-items__head span{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1rem;font-weight:600;color:var(--vh-muted);}
.vq-line{padding:1.7rem 0;border-bottom:1px solid var(--vh-line);}
.vq-line__name{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.02em;font-weight:500;font-size:1.45rem;color:var(--vh-ink);line-height:1.25;}
.vq-line__sub{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);margin-top:0.4rem;}
.vq-c{font-family:var(--vh-body);font-size:1.4rem;color:var(--vh-ink);}
.vq-c--mid{text-align:center;}
.vq-c--right{text-align:right;}
.vq-c--strong{font-family:var(--vh-display);font-weight:600;}
.vq-c--head{text-align:center;}
.vq-c--head.vq-c--right{text-align:right;}
@media(max-width:560px){
  .vq-items__head{display:none;}
  .vq-line{grid-template-columns:1fr auto;gap:0.4rem 1.2rem;padding:1.5rem 0;}
  .vq-line__name{grid-column:1;}
  .vq-c--mid{grid-column:1;text-align:left;font-size:1.25rem;color:var(--vh-muted);}
  /* Only the line TOTAL pins to row 1 beside the name — the per-unit cell
     also carries .vq-c--right, and pinning both to grid-row:1 printed them
     on top of each other on phones (overlap bug, 2026-07-15). Per-unit now
     auto-flows to row 2, right-aligned beside the qty. */
  .vq-c--right{grid-column:2;}
  .vq-c--strong{grid-column:2;grid-row:1;}
}

/* tear-off estimate/total stub */
.vq-totals{border-top:2px dashed var(--vh-line-strong);margin-top:0;padding-top:1.8rem;display:flex;flex-direction:column;gap:0.7rem;}
.vq-totals__row{display:flex;justify-content:space-between;font-family:var(--vh-body);font-size:1.35rem;}
.vq-totals__row .k{color:var(--vh-muted);}
.vq-totals__row .v{color:var(--vh-ink);}
.vq-totals__grand{display:flex;justify-content:space-between;align-items:baseline;padding-top:1.4rem;margin-top:0.6rem;border-top:1px solid var(--vh-line);}
.vq-totals__grand .k{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.08em;font-weight:600;font-size:1.4rem;color:var(--vh-ink);}
.vq-totals__grand .v{font-family:var(--vh-display);font-weight:600;letter-spacing:0.01em;font-variant-numeric:tabular-nums;font-size:2.6rem;line-height:1;color:var(--vh-ink);}

/* definition rows (embroidery details, timeline spec) */
.vq-dl{border-top:1px solid var(--vh-line);}
.vq-dl__row{display:flex;justify-content:space-between;align-items:baseline;gap:1.6rem;padding:1.2rem 0;border-bottom:1px solid var(--vh-line);}
.vq-dl__k{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.05em;font-weight:500;font-size:1.35rem;color:var(--vh-ink);}
.vq-dl__k .sub{font-family:var(--vh-body);text-transform:none;letter-spacing:0;font-size:1.15rem;color:var(--vh-muted);margin-left:0.8rem;}
.vq-dl__v{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);white-space:nowrap;}
.vq-prose{font-family:var(--vh-body);font-size:1.4rem;color:var(--vh-ink);line-height:1.7;white-space:pre-wrap;}

/* attached stitch-out renders (quote-logo-attach D2) */
.vq-design{border-top:1px solid var(--vh-line);}
.vq-design__row{display:flex;align-items:center;gap:2rem;padding:1.4rem 0;border-bottom:1px solid var(--vh-line);}
.vq-design__img{width:10rem;height:10rem;flex:0 0 auto;object-fit:contain;border:1px solid var(--vh-line);border-radius:4px;background:#FFFFFF;padding:0.8rem;box-sizing:border-box;}
.vq-design__info{min-width:0;}
.vq-design__name{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.05em;font-weight:500;font-size:1.35rem;color:var(--vh-ink);margin:0;}
.vq-design__meta{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);margin:0.4rem 0 0;}
.vq-design__note{font-family:var(--vh-body);font-style:italic;font-size:1.15rem;color:var(--vh-line-strong);margin:0.4rem 0 0;}
@media(max-width:560px){.vq-design__img{width:8rem;height:8rem;}}

/* pre-ship arrival window */
.vq-eta{margin-top:1.8rem;border:1px solid var(--vh-line-strong);border-left:3px solid var(--vh-ink);background:var(--vh-cream);border-radius:4px;padding:1.4rem 1.8rem;font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-muted);line-height:1.55;}
.vq-eta strong{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.04em;font-weight:600;color:var(--vh-ink);}

/* ticket-punch progress strip */
.vq-prog{display:flex;align-items:flex-start;justify-content:space-between;gap:0.4rem;border:1px solid var(--vh-line-strong);border-radius:4px;background:var(--vh-cream);padding:2.2rem 1.8rem 1.8rem;isolation:isolate;}
.vq-prog__step{position:relative;flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;text-align:center;}
.vq-prog__step::before{content:'';position:absolute;top:calc(0.95rem - 0.5px);left:-50%;width:100%;height:1px;background:var(--vh-line-strong);z-index:-1;}
.vq-prog__step:first-child::before{display:none;}
.vq-prog__step.is-done::before,.vq-prog__step.is-current::before{background:var(--vh-ink);}
.vq-prog__punch{position:relative;z-index:1;width:1.9rem;height:1.9rem;border-radius:999px;border:1.5px solid var(--vh-line-strong);background:var(--vh-cream);display:flex;align-items:center;justify-content:center;}
.vq-prog__step.is-done .vq-prog__punch{background:var(--vh-ink);border-color:var(--vh-ink);}
.vq-prog__step.is-current .vq-prog__punch{border-color:var(--vh-ink);}
.vq-prog__punch svg{width:1rem;height:1rem;}
.vq-prog__label{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.09em;font-size:1.05rem;margin-top:0.9rem;line-height:1.15;}
.vq-prog__step.is-done .vq-prog__label{color:var(--vh-muted);font-weight:500;}
.vq-prog__step.is-current .vq-prog__label{color:var(--vh-ink);font-weight:600;}
.vq-prog__step.is-future .vq-prog__label{color:var(--vh-line-strong);font-weight:500;}
@media(max-width:640px){
  .vq-prog{flex-wrap:wrap;gap:1.2rem 1.6rem;justify-content:flex-start;padding:2rem 1.8rem;}
  .vq-prog__step{flex:0 0 100%;flex-direction:row;gap:1rem;align-items:center;}
  .vq-prog__step::before{display:none;}
  .vq-prog__label{margin-top:0;font-size:1.2rem;}
}

/* letterpress status banner */
.vq-banner{display:flex;align-items:center;gap:1.8rem;border:1px solid var(--vh-line-strong);border-left:4px solid var(--vh-ink);border-radius:4px;background:var(--vh-cream);padding:1.7rem 2.1rem;}
.vq-banner__msg{font-family:var(--vh-body);font-size:1.4rem;color:var(--vh-ink);line-height:1.5;}
.vq-banner.is-declined{background:var(--vh-white);}

/* approve / revise / decline action stack + panels */
.vq-actions{display:flex;flex-direction:column;gap:1.2rem;}
.vq-actions__row{display:flex;gap:1.2rem;}
.vq-actions__row .vh-btn{flex:1;justify-content:center;}
.vq-btn--block{width:100%;justify-content:center;}
.vq-actionpanel{border:1px solid var(--vh-line-strong);border-radius:4px;background:var(--vh-white);padding:2.6rem;}
.vq-actionpanel__h{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.04em;font-weight:600;font-size:1.7rem;color:var(--vh-ink);margin-bottom:0.8rem;}
.vq-actionpanel__p{font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-muted);line-height:1.6;margin-bottom:1.8rem;}
.vq-ctl{width:100%;box-sizing:border-box;background:var(--vh-cream);border:1px solid var(--vh-line-strong);border-radius:4px;padding:1.3rem 1.5rem;font-family:var(--vh-body);font-size:1.5rem;color:var(--vh-ink);outline:none;transition:border-color .15s ease;}
.vq-ctl:focus{border-color:var(--vh-ink);}
.vq-ctl::placeholder{color:var(--vh-line-strong);}
textarea.vq-ctl{resize:vertical;line-height:1.5;}
.vq-actionrow{display:flex;gap:1.2rem;margin-top:1.8rem;}
.vq-actionrow .vh-btn{flex:1;justify-content:center;}
.vq-actionrow .vh-btn--quiet{flex:0 0 auto;}
.vq-actions .vh-btn:disabled,.vq-actionrow .vh-btn:disabled{opacity:.5;cursor:not-allowed;}

/* post-action result confirmation */
.vq-result{border:1px solid var(--vh-line-strong);border-radius:4px;background:var(--vh-cream);padding:3.2rem 2.6rem;text-align:center;}
.vq-result__h{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.02em;font-weight:600;font-size:2.2rem;color:var(--vh-ink);line-height:1.05;}
.vq-result__p{font-family:var(--vh-body);font-size:1.45rem;color:var(--vh-muted);line-height:1.6;max-width:46ch;margin:1rem auto 0;}
.vq-result .vh-btn{margin-top:2.2rem;}

/* =============================================================
   SIZES + PAYMENT (D3) — /pay/<token> + /sizes/<token>.
   Size-grid line cards (photo + swatch + tally + count inputs),
   the payment amount panel, and the locked payment zone that
   replaces the old .pay-disabled. States reuse the vintage
   ledger greens/rusts already in this file (#5E8A66 / #8A3033).
   ============================================================= */

/* section intro line under a vq-seclabel */
.vq-secintro{font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-muted);line-height:1.6;margin:-0.8rem 0 2rem;}

/* size line card — one card per quote item (vq-line conventions) */
.vq-szline{border:1px solid var(--vh-line-strong);border-radius:4px;background:var(--vh-white);padding:2rem;margin-bottom:1.4rem;}
.vq-szline__head{display:flex;justify-content:space-between;align-items:flex-start;gap:1.6rem;margin-bottom:1.8rem;}
.vq-szline__split{display:flex;flex-direction:column;gap:2rem;}
@media(min-width:768px){.vq-szline__split{flex-direction:row;align-items:flex-start;gap:2.8rem;}}
.vq-szvisual{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-start;gap:0.9rem;min-width:16rem;}
.vq-szphoto{width:16rem;height:16rem;border:1px solid var(--vh-line);border-radius:4px;object-fit:contain;display:block;background:#FFFFFF;padding:1rem;box-sizing:border-box;}
.vq-szphoto--ph{width:16rem;height:16rem;border:1px solid var(--vh-line);border-radius:4px;display:flex;align-items:center;justify-content:center;font-family:var(--vh-body);font-style:italic;font-size:1.25rem;color:var(--vh-line-strong);box-sizing:border-box;background:var(--vh-cream);}
.vq-swatchrow{display:flex;align-items:center;gap:0.8rem;}
.vq-swatch{width:1.6rem;height:1.6rem;border-radius:3px;display:inline-block;box-shadow:inset 0 0 0 1px rgba(24,21,16,.2);background:var(--vh-cream);}
.vq-swatchname{font-family:var(--vh-body);font-style:italic;font-size:1.25rem;color:var(--vh-muted);}
.vq-szname{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.02em;font-weight:500;font-size:1.45rem;color:var(--vh-ink);line-height:1.25;margin:0;}
.vq-szquoted{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-muted);margin:0.3rem 0 0;}

/* the size grid + count inputs */
.vq-szfields{flex:1 1 auto;display:flex;flex-direction:column;gap:1.2rem;min-width:0;}
.vq-szgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(6.4rem,1fr));gap:1.6rem 1.2rem;}
.vq-sz{display:flex;flex-direction:column;align-items:center;gap:0.6rem;min-width:5.6rem;}
.vq-szlbl{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:1.1rem;font-weight:600;color:var(--vh-muted);}
.vq-szin{width:5.6rem;height:4.6rem;text-align:center;font-family:var(--vh-display);font-size:1.7rem;font-weight:500;border:1.5px solid var(--vh-line-strong);border-radius:4px;background:var(--vh-white);color:var(--vh-ink);outline:none;-moz-appearance:textfield;appearance:textfield;padding:0;box-sizing:border-box;transition:border-color .15s ease,background .15s ease;}
.vq-szin::-webkit-inner-spin-button,.vq-szin::-webkit-outer-spin-button{-webkit-appearance:none;margin:0;}
.vq-szin:focus{border-color:var(--vh-ink);}
.vq-szin.is-match{border-color:#5E8A66;background:var(--vh-cream);}
.vq-szin.is-over{border-color:#8A3033;background:var(--vh-cream);}

/* per-line tally counter (entered vs quoted) + hint lines */
.vq-tallyrow{display:flex;justify-content:flex-end;align-items:baseline;gap:0.8rem;}
.vq-tallyrow .k{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);}
.vq-tally{font-family:var(--vh-display);font-weight:600;font-variant-numeric:tabular-nums;font-size:1.6rem;line-height:1.1;color:var(--vh-ink);}
.vq-tally.is-match{color:#5E8A66;}
.vq-tally.is-over{color:#8A3033;}
.vq-szhint{font-family:var(--vh-body);font-size:1.25rem;color:var(--vh-muted);margin:0;}
.vq-szhint.is-over{color:#8A3033;}
.vq-szhint.is-match{color:#5E8A66;font-weight:500;}

/* two-column ledger row (item / line total) for the pay summary */
.vq-line--two{grid-template-columns:1fr auto;}

/* payment amount panel */
.vq-amount{border:1px solid var(--vh-line-strong);border-radius:4px;background:var(--vh-cream);padding:2.6rem 2rem;text-align:center;}
.vq-amount .lbl{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.18em;font-size:1.05rem;font-weight:600;color:var(--vh-muted);}
.vq-amount .amt{font-family:var(--vh-display);font-weight:600;letter-spacing:0.01em;font-variant-numeric:tabular-nums;font-size:3.4rem;line-height:1.1;color:var(--vh-ink);margin-top:0.8rem;}
.vq-amount .note{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);margin-top:0.9rem;}

/* locked payment zone (replaces the old .pay-disabled) */
.vq-pay{border-top:1px solid var(--vh-line);transition:opacity .2s ease;}
.vq-locked{opacity:.45;pointer-events:none;filter:grayscale(.4);}
.vq-unlocknote{border:1.5px dashed var(--vh-line-strong);border-radius:4px;background:var(--vh-cream);padding:1.2rem 1.6rem;margin-bottom:2rem;text-align:center;font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-muted);}
.vq-sheet .vh-btn:disabled{opacity:.5;cursor:not-allowed;}

/* =============================================================
   PROOF REVIEW (D4) — /proof/<token>. Framed specimen plate for
   the stitched-proof photo: full-bleed image + a caption row
   (placement label / Version N) + optional note line, following
   the vq-line/ledger conventions.
   ============================================================= */
.vq-plates{display:flex;flex-direction:column;gap:1.8rem;}
.vq-plate{border:1px solid var(--vh-line-strong);border-radius:4px;background:var(--vh-white);overflow:hidden;margin:0;}
.vq-plate__img{width:100%;display:block;background:#FFFFFF;}
.vq-plate__cap{display:flex;justify-content:space-between;align-items:baseline;gap:1.6rem;padding:1.4rem 1.8rem;border-top:1px solid var(--vh-line);margin:0;}
.vq-plate__name{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.06em;font-weight:500;font-size:1.3rem;color:var(--vh-ink);}
.vq-plate__ver{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.14em;font-size:1.05rem;color:var(--vh-muted);white-space:nowrap;}
.vq-plate__note{font-family:var(--vh-body);font-size:1.3rem;color:var(--vh-muted);line-height:1.55;padding:0 1.8rem 1.4rem;margin:0;}
/* ===== end QUOTE FLOW ===== */
/* =============================================================
   /YOUR-LOGO ADMIN ZONE TUNER (BRIEF_zone_tuner) — served only
   when an authed admin loads ?tune=1: body.lg-tune plus the tn-
   markup are absent from customer HTML entirely. Tune mode
   re-enables pointer events on the dashed bound so the box body
   drags to move and the tn-hnd corners drag to resize.
   ============================================================= */
body.lg-tune .lg-bound{pointer-events:auto;cursor:move;touch-action:none;}
body.lg-tune .lg-bound .tag{pointer-events:none;}
.tn-hnd{position:absolute;width:1.4rem;height:1.4rem;background:var(--vh-white);border:1.5px solid var(--vh-ink);border-radius:2px;z-index:5;touch-action:none;pointer-events:auto;}
/* 44px-ish effective touch target, mirroring the .lg-logo .hnd pattern */
.tn-hnd::before{content:'';position:absolute;left:50%;top:50%;width:3.6rem;height:3.6rem;transform:translate(-50%,-50%);}
.tn-hnd[data-h=nw]{left:-0.7rem;top:-0.7rem;cursor:nwse-resize;}
.tn-hnd[data-h=ne]{right:-0.7rem;top:-0.7rem;cursor:nesw-resize;}
.tn-hnd[data-h=sw]{left:-0.7rem;bottom:-0.7rem;cursor:nesw-resize;}
.tn-hnd[data-h=se]{right:-0.7rem;bottom:-0.7rem;cursor:nwse-resize;}
.tn-panel{position:fixed;right:1.6rem;bottom:1.6rem;z-index:60;width:30rem;max-width:calc(100vw - 3.2rem);background:var(--vh-white);border:1px solid var(--vh-ink);border-radius:6px;box-shadow:0 8px 28px rgba(24,21,16,0.18);padding:1.4rem 1.6rem;font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-ink);}
.tn-head{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.16em;font-size:1.05rem;font-weight:600;margin-bottom:0.6rem;}
.tn-key{font-weight:600;margin-bottom:0.4rem;overflow-wrap:anywhere;}
.tn-nums{color:var(--vh-muted);margin-bottom:0.8rem;font-size:1.1rem;}
.tn-row{display:flex;align-items:center;gap:0.8rem;margin-bottom:0.6rem;cursor:pointer;}
.tn-row input[type=color]{width:4.2rem;height:2.6rem;border:1px solid var(--vh-line-strong);border-radius:3px;background:none;padding:0.2rem;cursor:pointer;}
.tn-check{font-size:1.1rem;color:var(--vh-muted);}
.tn-actions{display:flex;gap:0.8rem;margin:0.8rem 0 0.4rem;}
.tn-btn{border:1px solid var(--vh-ink);background:var(--vh-white);color:var(--vh-ink);font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.12em;font-size:1.05rem;font-weight:600;padding:0.7rem 1.4rem;border-radius:3px;cursor:pointer;}
.tn-btn--save{background:var(--vh-ink);color:var(--vh-white);}
.tn-status{min-height:1.6rem;color:var(--vh-muted);font-size:1.1rem;}
.tn-hint{margin-top:0.6rem;font-size:1.05rem;line-height:1.5;color:var(--vh-muted);}

/* ===== LEGAL — "counter ledger" (terms/privacy/refund/shipping; vintage migration arc 2026-07-16) ===== */
.vleg-hero{background:var(--vh-cream);padding:8rem 3.2rem 6rem;}
.vleg-hero__in{max-width:104rem;margin:0 auto;}
.vleg-hero .vh-eyebrow{display:block;margin-bottom:2.4rem;}
.vleg-hero h1{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.012em;line-height:0.98;color:var(--vh-ink);font-size:clamp(4rem,6vw,7rem);margin:0 0 1.8rem;}
.vleg-updated{font-family:var(--vh-display);font-size:1.3rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--vh-muted);margin:0 0 2.6rem;}
.vleg-lede{font-family:var(--vh-body);font-size:1.7rem;line-height:1.7;color:var(--vh-muted);max-width:64ch;margin:0;}
.vleg-main{background:var(--vh-white);padding:7rem 3.2rem 9rem;}
.vleg-grid{max-width:104rem;margin:0 auto;display:grid;grid-template-columns:26rem 1fr;gap:6rem;align-items:start;}
.vleg-index{position:sticky;top:3rem;border-top:2px solid var(--vh-ink);padding-top:2rem;}
.vleg-index__label{font-family:var(--vh-display);font-weight:500;text-transform:uppercase;letter-spacing:0.26em;font-size:1.15rem;color:var(--vh-muted);margin:0 0 1.6rem;}
.vleg-idx{display:flex;gap:1.2rem;align-items:baseline;padding:0.7rem 0;border-bottom:1px solid var(--vh-line);text-decoration:none;font-family:var(--vh-body);font-size:1.35rem;color:var(--vh-muted);}
.vleg-idx .n{font-family:var(--vh-display);font-weight:500;font-size:1.15rem;color:var(--vh-ink);min-width:2.2rem;}
.vleg-idx:hover{color:var(--vh-ink);}
.vleg-sec{margin-bottom:5.6rem;scroll-margin-top:10rem;}
.vleg-sec__head{display:flex;align-items:baseline;gap:1.8rem;border-bottom:1.5px solid var(--vh-ink);padding-bottom:1.2rem;margin-bottom:2.4rem;}
.vleg-sec__num{font-family:var(--vh-slab);font-size:2.2rem;color:var(--vh-ink);line-height:1;}
.vleg-sec__head h2{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;letter-spacing:0.02em;font-size:2.3rem;color:var(--vh-ink);margin:0;line-height:1.1;}
.vleg-sec p{font-family:var(--vh-body);font-size:1.55rem;line-height:1.75;color:var(--vh-muted);margin:0 0 1.6rem;}
.vleg-sec p:last-child{margin-bottom:0;}
.vleg-sec ol,.vleg-sec ul{margin:0 0 1.6rem;padding-left:2.2rem;font-family:var(--vh-body);font-size:1.55rem;line-height:1.75;color:var(--vh-muted);}
.vleg-sec li{margin-bottom:0.9rem;padding-left:0.4rem;}
.vleg-sec ol{list-style:decimal;} /* Tailwind preflight strips ol markers; restore */
.vleg-sec ol li::marker{font-family:var(--vh-display);font-weight:500;color:var(--vh-ink);}
.vleg-sec ul{list-style:square;}
.vleg-sec ul li::marker{color:var(--vh-line-strong);}
.vleg-callout{border:1.5px solid var(--vh-ink);background:var(--vh-cream);padding:3rem 3.2rem;}
.vleg-card{border:1px solid var(--vh-line-strong);background:var(--vh-cream);padding:2.4rem 2.8rem;font-size:1.55rem;line-height:1.9;color:var(--vh-muted);}
.vleg-end{display:flex;align-items:center;gap:1.8rem;color:var(--vh-line-strong);margin-top:6rem;}
.vleg-end::before,.vleg-end::after{content:'';height:1px;background:var(--vh-line-strong);flex:1;}
.vleg-end .x{font-size:1.3rem;color:var(--vh-ink);}
.vleg-body a{color:var(--vh-ink);text-decoration:underline;text-decoration-color:var(--vh-line-strong);text-underline-offset:3px;}
.vleg-body a:hover{text-decoration-color:var(--vh-ink);}
.vleg-body .vleg-idx,.vleg-body .vleg-idx:hover{text-decoration:none;} /* rail rows keep their hairline, not the prose underline */
.vleg-sec h3{font-family:var(--vh-display);font-weight:500;text-transform:uppercase;letter-spacing:0.06em;font-size:1.5rem;color:var(--vh-ink);margin:2.8rem 0 1.2rem;}
.vleg-sec strong{color:var(--vh-ink);font-weight:600;}
/* "at a glance" summary box (shipping) */
.vleg-glance{border:1.5px solid var(--vh-ink);margin-bottom:5.6rem;}
.vleg-glance__head{border-bottom:1px solid var(--vh-ink);background:var(--vh-cream);padding:2rem 2.8rem;}
.vleg-glance__label{font-family:var(--vh-display);font-weight:500;text-transform:uppercase;letter-spacing:0.26em;font-size:1.15rem;color:var(--vh-muted);margin:0 0 0.6rem;}
.vleg-glance__title{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;font-size:2rem;color:var(--vh-ink);margin:0;}
.vleg-glance__grid{display:grid;grid-template-columns:repeat(3,1fr);}
.vleg-glance__cell{padding:2.2rem 2.8rem;border-right:1px solid var(--vh-line);}
.vleg-glance__cell:last-child{border-right:none;}
.vleg-glance__step{font-family:var(--vh-display);font-weight:500;text-transform:uppercase;letter-spacing:0.2em;font-size:1.05rem;color:var(--vh-muted);margin:0 0 0.6rem;}
.vleg-glance__name{font-family:var(--vh-display);font-weight:600;text-transform:uppercase;font-size:1.6rem;color:var(--vh-ink);margin:0 0 0.5rem;}
.vleg-glance__cell p:last-child{font-family:var(--vh-body);font-size:1.4rem;line-height:1.6;color:var(--vh-muted);margin:0;}
@media(max-width:760px){.vleg-glance__grid{grid-template-columns:1fr;}.vleg-glance__cell{border-right:none;border-bottom:1px solid var(--vh-line);}.vleg-glance__cell:last-child{border-bottom:none;}}
@media(max-width:860px){.vleg-grid{grid-template-columns:1fr;}.vleg-index{position:static;}}
/* ===== end LEGAL ===== */

/* ===== REVIEWS family (rv-) — comp B "Numbered Ledger" =====
   review_form / review_thanks / review_unavailable / payments_not_configured.
   Oat sheet under an ink top rule, ruled ledger rows with Bevan numerals.
   Reuses .vh-eyebrow / .vh-btn / .vh-cream-bg from the shared set above. */
.rv-sheet{border-top:1.5px solid var(--vh-ink);background:var(--vh-cream);}
.rv-wrap{max-width:68rem;margin:0 auto;padding:6rem 2.4rem 9rem;}
.rv-wrap .vh-eyebrow{margin-bottom:1.2rem;}
.rv-h1{font-family:var(--vh-display);font-weight:700;text-transform:uppercase;letter-spacing:0.03em;font-size:3rem;line-height:1.15;color:var(--vh-ink);margin:0 0 1.2rem;}
.rv-lede{font-family:var(--vh-body);font-size:1.6rem;line-height:1.7;color:var(--vh-muted);margin:0 0 4.8rem;max-width:52rem;}
.rv-lede em{font-style:italic;color:var(--vh-ink);}
.rv-row{display:grid;grid-template-columns:6rem 1fr;gap:2rem;border-top:1px solid var(--vh-line);padding:2.8rem 0 3.2rem;}
.rv-num{font-family:var(--vh-slab);font-size:1.6rem;color:var(--vh-line-strong);line-height:1.2;}
.rv-label{display:block;font-family:var(--vh-display);font-size:1.15rem;font-weight:500;letter-spacing:0.18em;text-transform:uppercase;color:var(--vh-muted);margin-bottom:1.2rem;}
.rv-label .opt{color:var(--vh-line-strong);}
.rv-input{width:100%;border:1.5px solid var(--vh-ink);border-radius:0;background:var(--vh-white);padding:1.3rem 1.6rem;font-family:var(--vh-body);font-size:1.5rem;line-height:1.6;color:var(--vh-ink);resize:vertical;}
.rv-input::placeholder{color:var(--vh-line-strong);}
.rv-input:focus{outline:none;border-color:var(--vh-ink);box-shadow:2px 2px 0 var(--vh-ink);}
.rv-fine{font-family:var(--vh-body);font-size:1.25rem;line-height:1.6;color:var(--vh-muted);margin:0.8rem 0 0;}
.rv-stars{display:flex;align-items:center;gap:0.4rem;}
.rv-star{background:none;border:0;padding:0;font-size:3rem;line-height:1;transition:color .15s ease;}
button.rv-star{cursor:pointer;}
.rv-star.is-on{color:var(--vh-ink);}
.rv-star.is-off{color:var(--vh-line-strong);}
.rv-star:focus{outline:none;}
.rv-star:focus-visible{outline:1.5px solid var(--vh-ink);outline-offset:2px;}
.rv-count{font-family:var(--vh-body);font-size:1.4rem;color:var(--vh-muted);margin-left:1.2rem;}
.rv-thumbs{display:flex;flex-wrap:wrap;gap:0.8rem;}
.rv-thumb{width:8rem;height:8rem;object-fit:cover;border:1px solid var(--vh-line-strong);border-radius:0;display:block;}
.rv-err{border:1.5px solid var(--vh-ink);border-radius:0;background:var(--vh-white);padding:1.4rem 1.8rem;margin-bottom:2.4rem;font-family:var(--vh-body);font-size:1.4rem;line-height:1.6;color:var(--vh-ink);}
.rv-end{border-top:1.5px solid var(--vh-ink);padding-top:3.2rem;}
.rv-end .vh-btn{width:100%;justify-content:center;}
.rv-end .rv-fine{margin-top:1.4rem;}
.rv-submit[disabled]{opacity:0.5;cursor:not-allowed;}
.rv-submit[disabled]:hover{background:var(--vh-ink);color:var(--vh-white);}
.rv-x{text-align:center;font-family:var(--vh-body);font-size:1.4rem;color:var(--vh-line-strong);margin:3.2rem 0 0;}
.rv-body{font-family:var(--vh-body);font-size:1.55rem;line-height:1.7;color:var(--vh-ink);margin:0 0 1.6rem;}
.rv-links{display:flex;flex-direction:column;align-items:flex-start;gap:1.2rem;}
.rv-link{font-family:var(--vh-body);font-size:1.4rem;color:var(--vh-ink);text-decoration:underline;text-underline-offset:3px;}
.rv-link:hover{color:var(--vh-muted);}
/* file: pseudo can't take .vh-btn — mirror vh-btn--solid by hand. */
.rv-file{display:block;width:100%;font-family:var(--vh-body);font-size:1.4rem;color:var(--vh-muted);}
.rv-file::file-selector-button{margin-right:1.6rem;border:0;border-radius:0;cursor:pointer;padding:1rem 2rem;font-size:1.2rem;background:var(--vh-ink);color:var(--vh-white);font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;transition:background .2s ease;}
.rv-file::file-selector-button:hover{background:var(--vh-muted);}
@media(min-width:640px){.rv-wrap{padding-top:8rem;}.rv-h1{font-size:3.6rem;}.rv-links{flex-direction:row;align-items:center;gap:2.4rem;}}
@media(max-width:560px){.rv-row{grid-template-columns:1fr;gap:0.8rem;}}
/* ===== end REVIEWS ===== */

/* ===== WAVE 3: /your-logo locker strip (brief item 16) ===== */
/* Horizontally scrollable on every width — touch scroll IS the mobile
   behavior (locked with Joel 2026-07-17). Cream/tan letterpress cards. */
.lg-locker-strip{display:flex;gap:1.2rem;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:0.4rem 0.2rem 1rem;scrollbar-width:thin;}
.lg-locker-card{flex:0 0 auto;width:15.5rem;display:flex;flex-direction:column;gap:0.5rem;border:1px solid var(--vh-line-strong);border-radius:6px;background:var(--vh-cream);padding:1rem 1rem 1.2rem;text-decoration:none;transition:background .15s ease,border-color .15s ease;}
.lg-locker-card:hover{background:var(--vh-white);border-color:var(--vh-ink);}
.lg-locker-thumb{display:flex;align-items:center;justify-content:center;height:8rem;border:1px solid var(--vh-line);border-radius:4px;background:#EFE9DC;overflow:hidden;}
.lg-locker-thumb img{max-width:88%;max-height:88%;object-fit:contain;}
.lg-locker-nm{font-family:var(--vh-display);font-weight:600;font-size:1.25rem;letter-spacing:0.05em;text-transform:uppercase;color:var(--vh-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lg-locker-size{font-family:var(--vh-body);font-size:1.2rem;color:var(--vh-ink);}
.lg-locker-cap{font-family:var(--vh-body);font-size:1.1rem;color:var(--vh-muted);}
.lg-locker-note{margin:0.6rem 0 0;font-family:var(--vh-body);font-size:1.15rem;color:var(--vh-muted);}
/* ===== end WAVE 3 locker strip ===== */

/* ===== WAVE 3: per-color quantity rows (items 17+18) ===== */
.lg2-qm .lg2-crow-color{max-width:16rem;border:1px solid var(--vh-line-strong);background:var(--vh-cream);border-radius:4px;padding:0.7rem 0.8rem;font-family:var(--vh-display);font-weight:500;font-size:1.25rem;letter-spacing:0.03em;color:var(--vh-ink);cursor:pointer;}
.lg2-qm .lg2-crow-color:focus{outline:none;border-color:var(--vh-ink);}
.lg2-qm .lg2-crow-del{border:none;background:none;padding:0 0.4rem;font-size:1.7rem;line-height:1;color:var(--vh-muted);cursor:pointer;}
.lg2-qm .lg2-crow-del:hover{color:var(--vh-ink);}
.lg2-qm .lg2-crow-del[hidden]{display:none;}
.lg2-addcolor-row{display:flex;align-items:center;gap:1.2rem;margin-top:1rem;}
.lg2-add-color{border:1px dashed var(--vh-line-strong);border-radius:4px;background:var(--vh-white);color:var(--vh-ink);font-family:var(--vh-body);font-size:1.25rem;padding:0.7rem 1.2rem;cursor:pointer;}
.lg2-add-color:hover{background:var(--vh-ink);color:var(--vh-white);}
.lg2-add-color:disabled{opacity:0.45;cursor:default;}
.lg2-add-color:disabled:hover{background:var(--vh-white);color:var(--vh-ink);}
.lg2-add-color[hidden]{display:none;}
.lg2-addcolor-hint{font-family:var(--vh-body);font-size:1.15rem;color:var(--vh-muted);}
.lg2-color-need{margin-top:0.8rem;font-family:var(--vh-body);font-size:1.25rem;color:#7A2E22;}
.lg2-color-need[hidden]{display:none;}
/* ===== end WAVE 3 color rows ===== */

/* ===== WAVE 3 rider: reset thread colors (both recolor surfaces) ===== */
.lg-threads-clear{display:block;margin:0.6rem auto 0;border:none;background:none;padding:0.2rem 0.4rem;font-family:var(--vh-body);font-size:1.15rem;color:var(--vh-muted);text-decoration:underline;text-underline-offset:3px;cursor:pointer;}
.lg-threads-clear:hover{color:var(--vh-ink);}
.lg-threads-clear[hidden]{display:none;}

/* W4 per-row stitch colors: the compact swatch line under each color row's
   picker on the quantities page. Small siblings of .lg-th-sw - same changed
   affordance language (gold ring), scaled down to sit inside a table row. */
.lg2-rt{display:flex;align-items:center;flex-wrap:wrap;gap:0.45rem;margin-top:0.55rem;padding-left:0.2rem;}
.lg2-rt[hidden]{display:none;}
.lg2-rt-lbl{font-family:var(--vh-display);text-transform:uppercase;letter-spacing:0.1em;font-size:0.85rem;color:var(--vh-muted);}
.lg2-rt-sw{position:relative;width:1.9rem;height:1.9rem;border-radius:999px;border:1px solid var(--vh-line-strong);cursor:pointer;padding:0;transition:transform .12s ease,box-shadow .12s ease;}
.lg2-rt-sw:hover{transform:scale(1.12);box-shadow:0 1px 5px rgba(24,21,16,0.25);}
.lg2-rt-sw.changed{box-shadow:0 0 0 2px var(--vh-cream),0 0 0 3.5px #C9A24B;}
.lg2-rt-reset{border:none;background:none;padding:0 0.2rem;font-family:var(--vh-body);font-size:1.05rem;color:var(--vh-muted);text-decoration:underline;text-underline-offset:3px;cursor:pointer;}
.lg2-rt-reset:hover{color:var(--vh-ink);}
/* ===== end WAVE 3 rider ===== */
