/* Soft Riot sample: one clothing rail; pick a piece and it comes off the rack. */
:root{--wall:#ededeb;--ink:#111;--muted:#7b7b77;--neon:#57ff2b;--font:'Archivo',system-ui,-apple-system,'Segoe UI',sans-serif;
  --g-w:clamp(150px,min(21vw,37vh),330px);--hook:10.9%;--top-h:64px;--tick-h:34px}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;background:var(--wall);color:var(--ink);font:500 14px/1.5 var(--font);-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
a{color:inherit}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.sample-tag{margin:0;padding:6px 16px;background:#111;color:#cfcfca;font-size:11.5px;text-align:center;letter-spacing:.2px}
.sample-tag a{color:var(--neon)}

.top{position:relative;z-index:5;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:var(--top-h);padding:0 max(16px,3vw)}
.top nav{display:flex;gap:22px;font-size:12px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase}
.top nav a{text-decoration:none;opacity:.75}
.top nav a:hover{opacity:1}
.logo{justify-self:center;padding:7px 16px 6px;border-radius:7px;background:var(--neon);color:#0b0b0b;font-size:15px;font-weight:900;letter-spacing:1.5px;text-decoration:none;transform:rotate(-2deg);box-shadow:0 2px 0 #0b0b0b}
.bag{justify-self:end;font-size:12px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase}

/* ---------- the rack ---------- */
.stage{position:relative;flex:1;display:flex;flex-direction:column;justify-content:center;padding:10px 0 calc(var(--tick-h) + 18px);overflow:hidden}
.rack-wrap{position:relative;transition:filter .6s ease,opacity .6s ease,transform .8s cubic-bezier(.2,.8,.2,1)}
.rack{position:relative;display:flex;justify-content:center;padding:0 6vw;--n:7}
/* the rail runs through every hook; garments are drawn with their hooks at --hook from the top */
.rack:before{content:'';position:absolute;z-index:0;left:max(3vw,calc(50% - var(--g-w) * 2.05));right:max(3vw,calc(50% - var(--g-w) * 2.05));top:calc(var(--g-w) * 1.111 * .109 - 3px);height:6px;border-radius:3px;background:linear-gradient(#fafafa,#b8b8b4 45%,#8d8d89 55%,#d7d7d3);box-shadow:0 6px 10px -4px rgba(0,0,0,.25)}
.rack:after{content:'';position:absolute;left:max(3vw,calc(50% - var(--g-w) * 2.05));right:max(3vw,calc(50% - var(--g-w) * 2.05));top:calc(var(--g-w) * 1.111 * .109 - 8px);height:16px;border-left:5px solid #a9a9a5;border-right:5px solid #a9a9a5;border-radius:2px;pointer-events:none}
.garment{position:relative;z-index:1;flex:none;width:var(--g-w);margin:0 calc(var(--g-w) * -.29);aspect-ratio:9/10;padding:0;border-radius:10px}
/* side-on pieces are narrow, so the rail packs them close; each canvas grows from its hook as it turns to face you */
.garment canvas{display:block;width:100%;height:100%;transform-origin:50% var(--hook);pointer-events:none;user-select:none}
.garment:focus-visible{outline:none}
.garment:focus-visible canvas{filter:drop-shadow(0 0 3px rgba(0,0,0,.45))}

.rack-foot{display:flex;flex-direction:column;align-items:center;gap:14px;margin-top:clamp(10px,2.5vh,26px);transition:opacity .4s}
.caption{display:flex;gap:10px;margin:0;font-size:11.5px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:var(--muted)}
.cap-price{color:var(--ink)}
.pill{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 22px;border:1.5px solid var(--ink);border-radius:999px;font-size:11.5px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;transition:background .2s,color .2s}
.pill:hover{background:var(--ink);color:#fff}
.pill.wide{width:100%}
.pill[disabled]{opacity:.4;cursor:not-allowed;background:none;color:var(--ink)}

/* ---------- focus: one piece off the rack, the rest out of focus behind ---------- */
.stage.is-focus .rack-wrap{filter:blur(9px);opacity:.55;transform:scale(1.03)}
.stage.is-focus .rack-foot{opacity:0;pointer-events:none}
.focus{position:absolute;inset:0 0 var(--tick-h);z-index:4;display:grid;grid-template-columns:1fr auto 1fr;grid-template-rows:1fr auto;align-items:center;justify-items:center;padding:8px 16px 18px}
.focus[hidden]{display:none}
.spin{position:relative;grid-column:2;grid-row:1;height:min(64vh,calc((100vw - 140px) * 1.111));aspect-ratio:9/10;cursor:grab;touch-action:pan-y}
.spin.dragging{cursor:grabbing}
.spin canvas{display:block;width:100%;height:100%;opacity:0;transition:opacity .25s}
.spin.ready canvas{opacity:1}
.drag-hint{position:absolute;left:50%;bottom:4%;margin:0;transform:translateX(-50%);font-size:10.5px;font-weight:700;letter-spacing:1.6px;text-transform:uppercase;color:var(--muted);transition:opacity .4s}
.spin.spun .drag-hint{opacity:0}
.arrow{width:46px;height:46px;border:1.5px solid rgba(0,0,0,.18);border-radius:50%;background:rgba(255,255,255,.55);font-size:26px;line-height:1;transition:background .2s,border-color .2s}
.arrow:hover{background:#fff;border-color:var(--ink)}
.prev{grid-column:1;grid-row:1;justify-self:end;margin-right:4vw}
.next{grid-column:3;grid-row:1;justify-self:start;margin-left:4vw}
.focus-meta{grid-column:1 / -1;grid-row:2;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}
.focus-name{margin:0;font-size:clamp(17px,1.7vw,24px);font-weight:900;letter-spacing:1.2px;text-transform:uppercase}
.focus-price{margin:-6px 0 2px;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:1.2px}
.side{display:inline-flex;padding:3px;border:1.5px solid var(--ink);border-radius:999px}
.side button{padding:6px 16px;border-radius:999px;font-size:10.5px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:var(--muted)}
.side button[aria-pressed="true"]{background:var(--ink);color:#fff}
.avail-link{font-size:11px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;text-decoration:underline;text-underline-offset:4px}
.back{position:absolute;top:6px;left:max(16px,3vw);z-index:2;font-size:11.5px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase}
.flyer{position:fixed;z-index:20;pointer-events:none;object-fit:contain;transform-origin:0 0}

/* ---------- ticker ---------- */
.ticker{position:fixed;left:0;right:0;bottom:0;z-index:6;height:var(--tick-h);overflow:hidden;background:var(--neon);color:#0b0b0b;font-size:12px;font-weight:900;letter-spacing:1.6px;display:flex;align-items:center}
.ticker-track{display:flex;flex:none;gap:48px;padding-left:48px;white-space:nowrap;animation:tick 32s linear infinite}
@keyframes tick{to{transform:translateX(-50%)}}

/* ---------- sizes dialog + toast ---------- */
.sizes{width:min(420px,calc(100vw - 32px));padding:28px;border:0;border-radius:16px;background:#fafaf8;color:var(--ink)}
.sizes::backdrop{background:rgba(20,20,20,.35);backdrop-filter:blur(3px)}
.sizes .x{position:absolute;top:10px;right:12px;width:36px;height:36px;border-radius:50%;font-size:24px}
.sizes .x:hover{background:rgba(0,0,0,.06)}
.eyebrow{margin:0 0 6px;font-size:10.5px;font-weight:800;letter-spacing:1.8px;color:var(--muted)}
.sizes h2{margin:0;font-size:20px;font-weight:900;letter-spacing:.6px;text-transform:uppercase;line-height:1.2}
.sizes-price{margin:4px 0 18px;color:var(--muted);font-weight:700}
.size-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:18px}
.size-grid button{padding:12px 0;border:1.5px solid #d4d4cf;border-radius:10px;font-weight:800;font-size:13px}
.size-grid button[aria-checked="true"]{border-color:var(--ink);background:var(--ink);color:#fff}
.size-grid button:disabled{color:#b8b8b3;text-decoration:line-through;cursor:not-allowed}
.size-grid small{display:block;font-size:9px;font-weight:700;letter-spacing:.6px;text-decoration:none}
.note{margin:14px 0 0;font-size:12.5px;line-height:1.6;color:#5c5c58}
.toast{position:fixed;z-index:30;left:50%;bottom:calc(var(--tick-h) + 16px);margin:0;padding:11px 18px;border-radius:999px;background:var(--ink);color:#fff;font-size:13px;font-weight:700;transform:translate(-50%,200%);transition:transform .35s cubic-bezier(.2,.8,.2,1);pointer-events:none}
.toast.show{transform:translate(-50%,0)}

/* ---------- phones: the rail scrolls sideways ---------- */
@media(max-width:760px){
  :root{--g-w:52vw;--top-h:56px}
  .top nav{display:none}
  .top{grid-template-columns:1fr auto 1fr}
  .logo{grid-column:2}
  .bag{grid-column:3}
  .rack-wrap{overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .rack-wrap::-webkit-scrollbar{display:none}
  .rack{justify-content:flex-start;width:max-content;padding:0 24vw}
  .rack:before,.rack:after{left:8vw;right:8vw}
  .garment{scroll-snap-align:center}
  .spin{height:auto;width:min(84vw,56vh)}
  .focus{grid-template-columns:1fr;grid-template-rows:auto 1fr auto auto;padding-top:40px}
  .spin{grid-column:1;grid-row:2}
  .prev,.next{grid-row:3;margin:0;width:42px;height:42px;font-size:22px}
  .prev{grid-column:1;justify-self:start;margin-left:8vw}
  .next{grid-column:1;justify-self:end;margin-right:8vw}
  .focus-meta{grid-row:4;grid-column:1}
}
@media(prefers-reduced-motion:reduce){
  .ticker-track{animation:none}
  .rack-wrap{transition:none}
}
