/* VintageWoodCanvas — Storefront UI kit styles.
 * Component classes mirror the canonical DS components (so screens look identical
 * to the bundled primitives) plus storefront layout. Links alongside styles.css. */

* { box-sizing: border-box; }
body { margin: 0; font-family: var(--font-sans); color: var(--text-primary);
       background: var(--surface-page); -webkit-font-smoothing: antialiased; }
a { color: inherit; text-decoration: none; }
h1,h2,h3,h4 { margin: 0; }

/* ---- Buttons ------------------------------------------------------- */
.vwc-btn{--_bg:var(--brand-primary);--_fg:var(--text-inverse);--_bd:transparent;--_bgh:var(--brand-primary-hover);--_bgp:var(--brand-primary-press);
  display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);
  font-family:var(--font-sans);font-weight:var(--weight-semibold);line-height:1;
  border:var(--border-frame) solid var(--_bd);border-radius:var(--radius-md);
  background:var(--_bg);color:var(--_fg);cursor:pointer;letter-spacing:.01em;white-space:nowrap;
  transition:background var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out);}
.vwc-btn:hover{background:var(--_bgh);}
.vwc-btn:active{background:var(--_bgp);transform:translateY(1px);}
.vwc-btn:focus-visible{outline:var(--border-frame) solid var(--focus-ring);outline-offset:2px;}
.vwc-btn[disabled]{opacity:.45;cursor:not-allowed;}
.vwc-btn--md{height:44px;padding:0 var(--space-6);font-size:var(--text-sm);}
.vwc-btn--sm{height:34px;padding:0 var(--space-4);font-size:var(--text-xs);}
.vwc-btn--lg{height:54px;padding:0 var(--space-8);font-size:var(--text-md);}
.vwc-btn--accent{--_bg:var(--brand-accent);--_bgh:var(--brand-accent-hover);--_bgp:var(--clay-700);}
.vwc-btn--secondary{--_bg:transparent;--_fg:var(--text-primary);--_bd:var(--border-strong);--_bgh:var(--paper-200);--_bgp:var(--paper-300);}
.vwc-btn--ghost{--_bg:transparent;--_fg:var(--text-brand);--_bd:transparent;--_bgh:var(--paper-200);--_bgp:var(--paper-300);}
.vwc-btn--block{width:100%;}
.vwc-btn svg{width:1.15em;height:1.15em;stroke-width:1.75;}

.vwc-iconbtn{display:inline-flex;align-items:center;justify-content:center;background:transparent;
  color:var(--text-secondary);border:var(--border-frame) solid transparent;border-radius:var(--radius-md);
  cursor:pointer;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out);}
.vwc-iconbtn:hover{background:var(--paper-200);color:var(--text-primary);}
.vwc-iconbtn:active{background:var(--paper-300);}
.vwc-iconbtn--md{width:44px;height:44px;}
.vwc-iconbtn--sm{width:34px;height:34px;}
.vwc-iconbtn--solid{background:var(--surface-card);border-color:var(--border-default);}
.vwc-iconbtn svg{width:1.25em;height:1.25em;stroke-width:1.75;}

/* ---- Inputs / selects --------------------------------------------- */
.vwc-field{display:flex;flex-direction:column;gap:var(--space-2);}
.vwc-field__label{font-size:var(--text-sm);font-weight:var(--weight-semibold);}
.vwc-field__hint{font-size:var(--text-xs);color:var(--text-muted);}
.vwc-input{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--text-primary);height:44px;
  padding:0 var(--space-4);background:var(--surface-raised);border:1px solid var(--border-default);
  border-radius:var(--radius-md);box-shadow:var(--shadow-inset);width:100%;
  transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out);}
.vwc-input::placeholder{color:var(--text-muted);}
.vwc-input:hover{border-color:var(--border-strong);}
.vwc-input:focus{outline:none;border-color:var(--brand-primary);box-shadow:var(--shadow-inset),0 0 0 3px rgba(59,92,73,.16);}
.vwc-input--textarea{height:auto;padding:var(--space-3) var(--space-4);min-height:84px;resize:vertical;line-height:1.6;}
.vwc-select-wrap{position:relative;display:block;width:100%;}
.vwc-select{appearance:none;-webkit-appearance:none;width:100%;font-family:var(--font-sans);font-size:var(--text-sm);
  color:var(--text-primary);height:44px;padding:0 var(--space-10) 0 var(--space-4);background:var(--surface-raised);
  border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-inset);cursor:pointer;}
.vwc-select:focus{outline:none;border-color:var(--brand-primary);box-shadow:var(--shadow-inset),0 0 0 3px rgba(59,92,73,.16);}
.vwc-select-wrap::after{content:"";position:absolute;right:16px;top:50%;width:8px;height:8px;
  border-right:2px solid var(--text-muted);border-bottom:2px solid var(--text-muted);
  transform:translateY(-70%) rotate(45deg);pointer-events:none;}

/* ---- Tags / badges ------------------------------------------------- */
.vwc-tag{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);font-weight:500;line-height:1;
  padding:7px 12px;border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-secondary);
  border:1px solid var(--border-default);cursor:pointer;
  transition:border-color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out);}
.vwc-tag:hover{border-color:var(--border-strong);background:var(--paper-100);}
.vwc-tag--selected{background:var(--pine-500);color:var(--text-inverse);border-color:var(--pine-500);}
.vwc-tag__dot{width:9px;height:9px;border-radius:var(--radius-pill);border:1px solid rgba(0,0,0,.12);}
.vwc-badge{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-2xs);font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;line-height:1;padding:5px 9px;border-radius:var(--radius-sm);border:1px solid transparent;}
.vwc-badge--neutral{background:var(--paper-200);color:var(--text-secondary);border-color:var(--border-default);}
.vwc-badge--brand{background:var(--pine-500);color:var(--text-inverse);}
.vwc-badge--accent{background:var(--clay-500);color:var(--text-inverse);}
.vwc-badge--gilt{background:var(--brass-500);color:var(--bark-900);}
.vwc-badge--success{background:var(--success-bg);color:var(--success-fg);}
.vwc-badge--outline{background:transparent;color:var(--text-secondary);border-color:var(--border-strong);}

/* ---- Tabs ---------------------------------------------------------- */
.vwc-tabs{display:flex;gap:var(--space-2);border-bottom:1px solid var(--border-default);}
.vwc-tab{appearance:none;background:none;border:none;cursor:pointer;font-family:var(--font-sans);
  font-size:var(--text-sm);font-weight:600;color:var(--text-muted);padding:var(--space-3) var(--space-4);position:relative;}
.vwc-tab:hover{color:var(--text-primary);}
.vwc-tab--active{color:var(--text-primary);}
.vwc-tab--active::after{content:"";position:absolute;left:var(--space-4);right:var(--space-4);bottom:-1px;height:2px;
  background:var(--brand-accent);border-radius:2px;}

/* ---- Product card -------------------------------------------------- */
.vwc-pcard{display:flex;flex-direction:column;gap:var(--space-3);cursor:pointer;color:var(--text-primary);}
.vwc-pcard__frame{position:relative;background:var(--paper-50);padding:10px;border:2px solid var(--border-strong);
  border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);
  transition:box-shadow var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out);}
.vwc-pcard:hover .vwc-pcard__frame{box-shadow:var(--shadow-md);transform:translateY(-2px);}
.vwc-pcard__img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:2px;background:var(--paper-200);}
.vwc-pcard__badge{position:absolute;top:16px;left:16px;}
.vwc-pcard__title{font-family:var(--font-display);font-size:var(--text-lg);line-height:1.15;}
.vwc-pcard__meta{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);}
.vwc-pcard__material{font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);}
.vwc-pcard__price{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:700;}
.vwc-pcard__price s{color:var(--text-muted);font-weight:400;margin-right:6px;}

/* ---- Card ---------------------------------------------------------- */
.vwc-card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-sm);}
.vwc-card--pad{padding:var(--space-6);}

/* ---- Storefront shell --------------------------------------------- */
.shell{min-height:100vh;display:flex;flex-direction:column;}
.wrap{width:100%;max-width:var(--container-xl);margin:0 auto;padding:0 var(--space-8);}
.wrap--narrow{max-width:var(--container-lg);}

.eyebrow{font-size:var(--text-xs);font-weight:600;letter-spacing:var(--tracking-eyebrow);
  text-transform:uppercase;color:var(--text-accent);}
.script{font-family:var(--font-script);color:var(--text-accent);}
.dot{color:var(--text-accent);}
.serif-h{font-family:var(--font-display);letter-spacing:-.01em;line-height:1.06;}
.muted{color:var(--text-secondary);}

/* Header */
.hdr{position:sticky;top:0;z-index:var(--z-sticky);background:rgba(247,241,228,.82);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--border-subtle);}
.hdr__row{display:flex;align-items:center;gap:var(--space-8);height:72px;}
.hdr__nav{display:flex;gap:var(--space-6);margin-left:var(--space-4);font-size:var(--text-sm);font-weight:500;}
.hdr__nav a{padding:6px 2px;color:var(--text-secondary);border-bottom:2px solid transparent;cursor:pointer;}
.hdr__nav a:hover{color:var(--text-primary);}
.hdr__nav a.is-active{color:var(--text-primary);border-color:var(--brand-accent);}
.hdr__right{margin-left:auto;display:flex;align-items:center;gap:var(--space-2);}
.cart-count{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;
  background:var(--brand-accent);color:#fff;font-family:var(--font-mono);font-size:10px;font-weight:700;
  display:flex;align-items:center;justify-content:center;}

/* Hero */
.hero{display:grid;grid-template-columns:1.05fr 1fr;gap:var(--space-16);align-items:center;
  padding-block:var(--space-20) var(--space-24);}
.hero__title{font-size:var(--text-6xl);margin:var(--space-4) 0 var(--space-5);}
.hero__sub{font-size:var(--text-lg);line-height:1.6;max-width:30ch;}
.hero__cta{display:flex;gap:var(--space-3);margin-top:var(--space-8);flex-wrap:wrap;}
.hero__art{background:var(--paper-50);padding:16px;border:2px solid var(--border-strong);
  border-radius:var(--radius-sm);box-shadow:var(--shadow-frame);}
.hero__photo{aspect-ratio:4/3;border-radius:2px;display:flex;align-items:flex-end;padding:18px;
  background:linear-gradient(150deg,#caa276 0%,#9a734e 40%,#5e4b39 100%);}
.hero__photo .script{font-size:44px;color:#f6ecda;}

/* Section */
.section{padding:var(--section-y) 0;}
.section--sunken{background:var(--surface-sunken);border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);}
.section__head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-6);margin-bottom:var(--space-10);}
.section__title{font-size:var(--text-3xl);}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-8);}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);}

/* Material tiles */
.mat-tile{position:relative;border-radius:var(--radius-md);overflow:hidden;aspect-ratio:1/1;
  display:flex;align-items:flex-end;padding:var(--space-5);cursor:pointer;border:2px solid transparent;
  transition:transform var(--dur-base) var(--ease-out);}
.mat-tile:hover{transform:translateY(-3px);}
.mat-tile span{position:relative;color:#fff;font-family:var(--font-display);font-size:var(--text-xl);z-index:1;}
.mat-tile::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(33,25,19,.55),rgba(33,25,19,0) 55%);}

/* Process band */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-12);}
.step__n{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--brand-gilt);}
.step h4{font-family:var(--font-display);font-size:var(--text-xl);margin:var(--space-2) 0;}
.step p{color:var(--text-secondary);line-height:1.6;font-size:var(--text-sm);}

/* Footer */
.ftr{margin-top:auto;background:var(--bark-800);color:var(--paper-200);padding:var(--space-16) 0 var(--space-10);}
.ftr a{color:var(--paper-300);cursor:pointer;}
.ftr a:hover{color:#fff;}
.ftr__cols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:var(--space-10);}
.ftr__cols h5{font-size:var(--text-xs);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--brass-300);margin-bottom:var(--space-4);}
.ftr__cols ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2);font-size:var(--text-sm);}

/* Product detail */
.pdp{display:grid;grid-template-columns:1.1fr 1fr;gap:var(--space-16);padding:var(--space-10) 0 var(--section-y);}
.pdp__gallery{display:flex;flex-direction:column;gap:var(--space-4);}
.pdp__main{background:var(--paper-50);padding:18px;border:2px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow-frame);}
.pdp__photo{aspect-ratio:4/5;border-radius:2px;}
.pdp__thumbs{display:flex;gap:var(--space-3);}
.pdp__thumb{width:72px;aspect-ratio:1;border-radius:var(--radius-sm);border:2px solid var(--border-default);cursor:pointer;padding:4px;background:var(--paper-50);}
.pdp__thumb.is-active{border-color:var(--brand-primary);}
.pdp__thumb span{display:block;width:100%;height:100%;border-radius:2px;}
.breadcrumb{font-size:var(--text-xs);color:var(--text-muted);letter-spacing:.03em;margin:var(--space-6) 0 0;}
.price-lg{font-family:var(--font-mono);font-size:var(--text-2xl);font-weight:700;}
.opt-label{font-size:var(--text-xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--space-3);}
.opt-row{display:flex;gap:var(--space-2);flex-wrap:wrap;}
.reassure{display:flex;gap:var(--space-5);margin-top:var(--space-6);font-size:var(--text-sm);color:var(--text-secondary);}
.reassure div{display:flex;align-items:center;gap:8px;}
.reassure svg{width:18px;height:18px;color:var(--brand-primary);}

/* Customizer */
.cz{display:grid;grid-template-columns:1.2fr .9fr;gap:var(--space-12);padding:var(--space-10) 0 var(--section-y);align-items:start;}
.cz__preview{position:sticky;top:96px;}
.cz__frame{background:var(--paper-50);padding:22px;border:2px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow-frame);}
.cz__canvas{aspect-ratio:4/5;border-radius:2px;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.cz__engrave{position:absolute;bottom:11%;left:0;right:0;text-align:center;font-family:var(--font-display);
  color:rgba(255,255,255,.92);text-shadow:0 1px 4px rgba(0,0,0,.4);padding:0 10%;}
.cz__opts{display:flex;flex-direction:column;gap:var(--space-6);}
.cz__opt{display:flex;flex-direction:column;}
.dropzone{border:2px dashed var(--border-strong);border-radius:var(--radius-md);background:var(--paper-100);
  padding:var(--space-6);text-align:center;color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;}
.dropzone:hover{border-color:var(--brand-primary);color:var(--text-secondary);}
.cz__price{display:flex;align-items:baseline;justify-content:space-between;padding-top:var(--space-4);border-top:1px solid var(--border-default);}

/* Cart */
.cart{display:grid;grid-template-columns:1.5fr .8fr;gap:var(--space-12);padding:var(--space-12) 0 var(--section-y);align-items:start;}
.line{display:grid;grid-template-columns:88px 1fr auto;gap:var(--space-5);padding:var(--space-5) 0;border-bottom:1px solid var(--border-subtle);align-items:center;}
.line__thumb{width:88px;aspect-ratio:4/5;border-radius:var(--radius-sm);border:2px solid var(--border-default);padding:4px;background:var(--paper-50);}
.line__thumb span{display:block;width:100%;height:100%;border-radius:2px;}
.qty{display:inline-flex;align-items:center;gap:var(--space-2);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:2px;background:var(--surface-raised);}
.qty b{font-family:var(--font-mono);min-width:22px;text-align:center;font-size:var(--text-sm);}
.summary{position:sticky;top:96px;}
.sum-row{display:flex;justify-content:space-between;padding:var(--space-2) 0;font-size:var(--text-sm);color:var(--text-secondary);}
.sum-row--total{border-top:1px solid var(--border-default);margin-top:var(--space-3);padding-top:var(--space-4);
  font-size:var(--text-md);color:var(--text-primary);font-weight:700;}
.sum-row--total b{font-family:var(--font-mono);}
.empty{padding:var(--space-16);text-align:center;color:var(--text-muted);}

@media (max-width:900px){
  .hero,.pdp,.cz,.cart{grid-template-columns:1fr;gap:var(--space-10);}
  .grid-4{grid-template-columns:repeat(2,1fr);}
  .steps,.ftr__cols{grid-template-columns:1fr 1fr;}
  .hdr__nav{display:none;}
}
