/* ===== 1. tokens (fallbacks — brand.js overrides at runtime) ===== */
:root{
  --accent:#FF5A3C; --ink:#111111; --paper:#FAF7F2;
  --font-display:"Fraunces", Georgia, serif; --font-ui:"Inter", system-ui, sans-serif;
  --ink-2:color-mix(in srgb, var(--ink) 62%, var(--paper)); /* muted text */
  --line:color-mix(in srgb, var(--ink) 12%, var(--paper));
  --panel:color-mix(in srgb, var(--paper) 92%, var(--ink));
  --on-accent:var(--ink); /* dark text reads reliably on the accent swatch; pure white failed WCAG AA (3.10:1) against the default #FF5A3C */
  --r:14px; --r-lg:24px; --gutter:clamp(16px, 4vw, 48px); --measure:62ch;
  --ease:cubic-bezier(.2,.7,.2,1);
}

/* ===== 2. reset ===== */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-ui);line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
a{color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
.skip{position:absolute;left:-999px}
.skip:focus{left:var(--gutter);top:8px;background:var(--ink);color:var(--paper);padding:8px 12px;z-index:99;border-radius:var(--r)}

/* ===== 3. type ===== */
h1,h2,h3{font-family:var(--font-display);font-weight:600;letter-spacing:-.02em;line-height:1.02;margin:0;overflow-wrap:anywhere}
/* every surface fed by brand.js / products.js: a long unbroken client name must wrap, not overflow */
.mast .logo,.hero-story,.story,.card h3,.price,.strip figcaption,.foot p,.foot a,.row strong{overflow-wrap:anywhere;min-width:0}
.display{font-size:clamp(44px, 9.5vw, 128px)}
.h2{font-size:clamp(30px, 4.5vw, 56px)}
.eyebrow{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-2)}

/* ===== 4. masthead ===== */
.mast{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:16px;padding:14px var(--gutter);background:color-mix(in srgb, var(--paper) 88%, transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.mast .logo{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-size:20px;text-decoration:none;transition:opacity .2s var(--ease)}
.mast .logo img{width:28px;height:28px}
.mast nav{display:flex;gap:18px;margin-left:auto;font-size:14px}
.mast nav a{position:relative;text-decoration:none;color:var(--ink-2);padding:4px 0;transition:color .2s var(--ease)}
.mast nav a::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;background:var(--ink);transition:right .25s var(--ease)}
.bag-btn{display:inline-flex;align-items:center;gap:8px;min-height:44px;border:1px solid var(--ink);border-radius:999px;padding:8px 14px;font-size:14px;transition:background .2s var(--ease),color .2s var(--ease)}
.bag-btn .count{min-width:20px;height:20px;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:12px;display:grid;place-items:center;transition:transform .2s var(--ease)}
.mast .cta-shop{min-height:40px;padding:0 18px;font-size:14px}
@media (hover:hover) and (pointer:fine){
  .mast .logo:hover{opacity:.72}
  .mast nav a:hover{color:var(--ink)}
  .mast nav a:hover::after{right:0}
  .bag-btn:hover{background:var(--ink);color:var(--paper)}
}

/* ===== 5. buttons ===== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 22px;border-radius:999px;font-weight:600;text-decoration:none;transition:transform .2s var(--ease),background .2s var(--ease),box-shadow .2s var(--ease)}
.btn-primary{background:var(--accent);color:var(--on-accent)}
.btn-primary:active{transform:translateY(0)}
.btn-ghost{border:1px solid var(--ink)}
.btn[aria-disabled="true"]{background:var(--panel);color:var(--ink-2);pointer-events:none}
@media (hover:hover) and (pointer:fine){
  .btn-primary:hover{transform:translateY(-1px);box-shadow:0 8px 20px -8px color-mix(in srgb, var(--accent) 60%, transparent)}
  .btn-ghost:hover{background:var(--ink);color:var(--paper)}
}

/* ===== 6. footer ===== */
.foot{border-top:1px solid var(--line);padding:48px var(--gutter);display:grid;gap:24px;grid-template-columns:1fr;font-size:14px;color:var(--ink-2)}
@media(min-width:768px){.foot{grid-template-columns:2fr 1fr 1fr}}
.foot h3{font-size:14px;color:var(--ink);margin-bottom:8px}
.foot a{text-decoration:none;border-bottom:1px solid var(--line);transition:border-color .2s var(--ease),color .2s var(--ease)}
@media (hover:hover) and (pointer:fine){
  .foot a:hover{color:var(--ink);border-color:var(--ink)}
}
@media(max-width:767px){.mast nav{display:none}.mast .cta-shop{display:none}.mast .bag-btn{margin-left:auto}}

/* ===== 7. hero ===== */
.hero{position:relative;display:grid;gap:16px;padding:16px var(--gutter) 32px;grid-template-columns:1fr;align-items:end}
.hero::before{content:"";position:absolute;inset:-40px var(--gutter) auto;height:280px;background:radial-gradient(60% 100% at 30% 0%, color-mix(in srgb, var(--accent) 16%, transparent), transparent 70%);pointer-events:none;z-index:-1}
.hero-media{position:relative;margin:0;order:-1;border-radius:var(--r-lg);overflow:hidden;background:var(--panel);aspect-ratio:4/5;max-height:34vh;box-shadow:0 1px 0 color-mix(in srgb, var(--ink) 6%, transparent) inset,0 24px 48px -28px color-mix(in srgb, var(--ink) 35%, transparent)}
.hero-media img{width:100%;height:100%;object-fit:cover;animation:hero-reveal .6s var(--ease) both}
@keyframes hero-reveal{from{opacity:0;transform:scale(1.04)}to{opacity:1;transform:scale(1)}}
.hero-copy{display:grid;gap:12px}
.hero-copy .eyebrow{display:flex;align-items:center;gap:8px;color:color-mix(in srgb, var(--accent) 65%, var(--ink) 35%)} /* raw --accent on --paper was 2.90:1; the darkened mix clears 4.5:1 */
.hero-copy .eyebrow::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);flex:none}
.hero-copy .display{font-size:clamp(34px, 8.6vw, 96px)}
.hero-story{font-size:16px;color:var(--ink-2);max-width:var(--measure)}
.swatches,.sizes{display:flex;flex-wrap:wrap;gap:8px}
.swatches button{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:5px 12px 5px 5px;border:1px solid var(--line);border-radius:999px;font-size:13px;background:var(--paper);transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}
.swatches .dot{width:20px;height:20px;border-radius:50%;background:var(--sw);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ink) 12%, transparent)}
.swatches button[aria-pressed="true"],.sizes button[aria-pressed="true"]{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.sizes button{min-width:44px;min-height:44px;padding:0 12px;border:1px solid var(--line);border-radius:10px;font-size:14px;background:var(--paper);transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}
.hero-cta{display:flex;flex-wrap:wrap;gap:10px}
.chip-sample{display:inline-block;vertical-align:middle;margin-left:2px;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;border:1px dashed var(--ink-2);border-radius:6px;padding:2px 7px;color:var(--ink-2)}
@media (hover:hover) and (pointer:fine){
  .swatches button:hover{border-color:var(--ink)}
  .sizes button:hover{border-color:var(--ink)}
}
@media(min-width:900px){
  .hero{grid-template-columns:1.05fr 1fr;gap:48px;align-items:center;min-height:min(calc(100vh - 64px), 760px);padding-top:40px}
  .hero::before{inset:-40px 0 auto;height:520px} /* was calc(var(--gutter) * -1): bled 48px past the viewport on each side and grew documentElement.scrollWidth */
  .hero-media{order:0;max-height:none;aspect-ratio:4/5}
  .hero-copy .display{font-size:clamp(48px, 6.4vw, 112px)}
}
/* ===== 8. rack ===== */
.rack{padding:32px var(--gutter) 64px} .rack-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:20px}
.grid{display:grid;gap:18px;grid-template-columns:1fr} @media(min-width:600px){.grid{grid-template-columns:repeat(2,1fr)}} @media(min-width:1000px){.grid{grid-template-columns:repeat(3,1fr)}}
.card{border-radius:var(--r-lg);background:var(--panel);overflow:hidden;transform:perspective(900px) rotateX(var(--rx,0)) rotateY(var(--ry,0));transition:transform .25s var(--ease),box-shadow .25s}
.card .open-quick{display:block;width:100%;aspect-ratio:4/5;overflow:hidden} .card img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}
.card-body{padding:14px 16px 18px;display:grid;gap:4px} .card h3{font-size:20px} .price{font-weight:600}
.colors{display:flex;gap:6px;margin:4px 0 0} .mini{width:14px;height:14px;border-radius:50%;background:var(--sw);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ink) 12%, transparent)}
@media (hover:hover) and (pointer:fine){
  .tilt-on .card:hover{box-shadow:0 24px 48px -24px color-mix(in srgb, var(--ink) 45%, transparent)}
  .tilt-on .card:hover img{transform:scale(1.04)}
}
/* ===== 9. drawers ===== */
.drawer{position:fixed;inset:0 0 0 auto;width:min(440px,100%);background:var(--paper);z-index:40;overflow:auto;padding:20px var(--gutter) 32px;box-shadow:-24px 0 48px -32px color-mix(in srgb, var(--ink) 40%, transparent);display:grid;gap:14px;align-content:start}
.drawer[hidden]{display:none} .drawer-head{display:flex;align-items:center;justify-content:space-between}
.close{width:44px;height:44px;border-radius:50%;border:1px solid var(--line);font-size:22px;display:grid;place-items:center}
.drawer img{border-radius:var(--r);aspect-ratio:4/5;object-fit:cover;background:var(--panel)} .drawer h2{font-size:30px} .drawer-cta{display:grid;gap:10px}
body.drawer-open::after{content:"";position:fixed;inset:0;background:color-mix(in srgb, var(--ink) 35%, transparent);z-index:30}
/* ===== 10. bag ===== */
.row{display:grid;grid-template-columns:72px 1fr;gap:12px;align-items:start;padding:12px 0;border-top:1px solid var(--line)}
.row img{border-radius:10px;aspect-ratio:4/5;object-fit:cover;background:var(--panel)} .row-cta{grid-column:1/-1;display:flex;gap:10px;align-items:center}
.row-cta .btn{min-height:40px;padding:0 16px;font-size:14px} .remove{display:inline-flex;align-items:center;min-height:44px;font-size:13px;color:var(--ink-2);text-decoration:underline}
.empty,.note{font-size:14px;color:var(--ink-2)}

/* ===== 11. lookbook ===== */
.lookbook{padding:16px 0 72px} .lookbook .rack-head{padding:0 var(--gutter)}
.strip{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 var(--gutter) 12px;scrollbar-width:none} .strip::-webkit-scrollbar{display:none}
.strip figure{flex:0 0 min(78vw,420px);margin:0;scroll-snap-align:start} .strip img{border-radius:var(--r-lg);aspect-ratio:4/5;object-fit:cover;background:var(--panel)}
.strip figcaption{margin-top:8px;font-size:14px;color:var(--ink-2)}
.lookbook .chip-sample{transform:rotate(-4deg);background:var(--paper);box-shadow:0 3px 8px -3px color-mix(in srgb, var(--ink) 35%, transparent)}
@media (hover:hover) and (pointer:fine){
  .strip img{transition:transform .2s linear}
}
img.img-missing{visibility:hidden}
.lookbook[hidden],.rack[hidden]{display:none}

/* reduced-motion override stays last */
@media (prefers-reduced-motion: reduce){ *,*::before,*::after{transition:none !important;animation:none !important;scroll-behavior:auto !important} }
