/* ===========================================================================
   Spin the Wheel — "Where should we eat?" restaurant picker.
   Loaded ONLY on /restaurants/spin/ (+ the /es/ twin), so it adds zero weight
   to the rest of the site. Inherits every Almanac token from base.css; the only
   new tokens here are the wheel-specific palette (theme-aware). All component
   rules are namespaced under .spinwheel to stay fully isolated from site CSS.
   Design handoff: claude.ai/design → "Where should we eat?".
   =========================================================================== */

/* Wheel slice palette is theme-independent; only the label/rim shift in dark. */
:root{
  --w0:#c2632f; --w1:#c9952b; --w2:#9b5de5; --w3:#2f7e96; --w4:#3f8f5b;
  --w5:#3b82c4; --w6:#b4471f; --w7:#a8557a; --w8:#7a8a3a; --w9:#8a6d3b;
  --wheel-label:#fffaf2; --wheel-label-shadow:rgba(40,25,10,.45);
  --wheel-rim:#efe6d6; --wheel-rim-stroke:#d7cbb6;
}
html[data-theme="dark"]{
  --wheel-label:#fdf8ef; --wheel-label-shadow:rgba(0,0,0,.55);
  --wheel-rim:#2b251d; --wheel-rim-stroke:#463d31;
}

/* Centered editorial column (mobile-first). */
.spinwheel{max-width:680px;margin-inline:auto;
  padding:clamp(18px,4vw,36px) clamp(16px,4vw,28px) 56px;
  display:flex;flex-direction:column;align-items:center;text-align:center;}

.spinwheel .intro{max-width:36rem;}
.spinwheel .eyebrow{font-family:var(--font-mono);font-size:.72rem;font-weight:500;letter-spacing:.14em;
  text-transform:uppercase;color:var(--color-primary-text);}
.spinwheel h1{font-family:var(--font-display);font-weight:600;line-height:1.04;letter-spacing:-.018em;
  font-size:clamp(2.3rem,1.6rem + 3.4vw,3.4rem);margin:.35rem 0 .5rem;text-wrap:balance;}
.spinwheel h1 em{font-style:italic;color:var(--color-primary-text);}
.spinwheel .lede{color:var(--color-text-2);font-size:1.06rem;text-wrap:pretty;max-width:30rem;margin-inline:auto;}

/* ── Category picker ─────────────────────────────────────────────────────── */
.spinwheel .picker{margin:26px 0 6px;display:flex;flex-direction:column;align-items:center;gap:8px;}
.spinwheel .picker__label{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--color-text-3);}
.spinwheel .select-wrap{position:relative;}
.spinwheel .select-wrap select{
  appearance:none;-webkit-appearance:none;
  font-family:var(--font-sans);font-weight:600;font-size:1.02rem;color:var(--color-text);
  background:var(--color-surface);border:1.5px solid var(--color-border-2);
  border-radius:var(--r-pill);padding:.6rem 2.7rem .6rem 1.3rem;
  box-shadow:var(--sh-sm);cursor:pointer;
  transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);}
.spinwheel .select-wrap select:hover{border-color:var(--color-primary);}
.spinwheel .select-wrap::after{content:"";position:absolute;right:1.05rem;top:50%;width:9px;height:9px;
  border-right:2px solid var(--color-text-2);border-bottom:2px solid var(--color-text-2);
  transform:translateY(-65%) rotate(45deg);pointer-events:none;}

/* ── Wheel ───────────────────────────────────────────────────────────────── */
.spinwheel .stage{position:relative;width:min(86vw,440px);aspect-ratio:1;margin:22px 0 6px;}
.spinwheel .wheel-svg{width:100%;height:100%;overflow:visible;
  filter:drop-shadow(0 14px 30px rgba(45,35,18,.20));}
html[data-theme="dark"] .spinwheel .wheel-svg{filter:drop-shadow(0 16px 34px rgba(0,0,0,.55));}
.spinwheel #wheelRot{transform-box:fill-box;transform-origin:center;}
.spinwheel .slice-label{font-family:var(--font-sans);font-weight:600;fill:var(--wheel-label);
  paint-order:stroke;stroke:var(--wheel-label-shadow);stroke-width:2.4px;
  stroke-linejoin:round;dominant-baseline:middle;}

/* Fixed pointer + hub overlay (do NOT rotate with the wheel). */
.spinwheel .pointer{position:absolute;top:-6px;left:50%;transform:translateX(-50%);z-index:3;
  filter:drop-shadow(0 3px 4px rgba(40,25,10,.35));}
.spinwheel .hub{position:absolute;top:50%;left:50%;width:23%;height:23%;transform:translate(-50%,-50%);
  z-index:2;border-radius:50%;background:var(--color-surface);
  border:3px solid var(--color-primary);box-shadow:var(--sh-md);display:grid;place-items:center;}
.spinwheel .hub span{font-family:var(--font-display);font-style:italic;font-weight:600;
  font-size:clamp(1.5rem,7vw,2.2rem);color:var(--color-primary-text);line-height:1;transform:translateY(-2px);}
.spinwheel #confetti{position:absolute;inset:-30%;width:160%;height:160%;z-index:4;pointer-events:none;}

/* ── Spin button + sound toggle ──────────────────────────────────────────── */
.spinwheel .spin-row{display:flex;align-items:center;gap:12px;margin-top:18px;}
.spinwheel .spin-btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  font-family:var(--font-sans);font-weight:700;font-size:1.18rem;letter-spacing:.01em;
  color:#fff;background:var(--color-primary-hover);
  padding:.95rem 2.6rem;border-radius:var(--r-pill);
  border:1.5px solid transparent;box-shadow:var(--sh-md);cursor:pointer;
  transition:transform var(--dur) var(--ease),background-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);}
.spinwheel .spin-btn:hover{background:var(--color-primary-text);transform:translateY(-2px);box-shadow:var(--sh-lg);}
.spinwheel .spin-btn:active{transform:translateY(0) scale(.98);}
.spinwheel .spin-btn[disabled]{opacity:.55;cursor:not-allowed;transform:none;box-shadow:var(--sh-sm);}
.spinwheel .spin-btn svg{width:1.15em;height:1.15em;}

.spinwheel .sound-toggle{width:44px;height:44px;display:grid;place-items:center;border-radius:var(--r-md);
  border:1.5px solid var(--color-border-2);color:var(--color-text-2);background:var(--color-surface);cursor:pointer;
  transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease),transform var(--dur) var(--ease);}
.spinwheel .sound-toggle:hover{color:var(--color-primary);border-color:var(--color-primary);}
.spinwheel .sound-toggle:active{transform:scale(.94);}
.spinwheel .sound-toggle svg{width:21px;height:21px;}
.spinwheel .sound-toggle[aria-pressed="false"] .on{display:none;}
.spinwheel .sound-toggle[aria-pressed="true"] .off{display:none;}

/* ── Result card ─────────────────────────────────────────────────────────── */
.spinwheel .result{width:100%;max-width:30rem;margin-top:26px;
  background:var(--color-surface);border:1.5px solid var(--color-border);
  border-radius:var(--r-lg);box-shadow:var(--sh-lg);
  padding:26px 26px 24px;text-align:left;position:relative;
  opacity:0;transform:translateY(10px) scale(.985);pointer-events:none;
  transition:opacity .5s var(--ease),transform .5s var(--ease);}
.spinwheel .result.show{opacity:1;transform:none;pointer-events:auto;}
.spinwheel .result__top{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;}
.spinwheel .result__dot{width:11px;height:11px;border-radius:50%;flex:none;background:var(--clay-500);
  box-shadow:0 0 0 4px color-mix(in srgb,var(--clay-500) 22%,transparent);}
.spinwheel .result__kicker{font-family:var(--font-mono);font-size:.68rem;font-weight:500;
  letter-spacing:.13em;text-transform:uppercase;color:var(--color-text-3);}
.spinwheel .result__name{font-family:var(--font-display);font-weight:600;font-size:1.78rem;
  line-height:1.08;letter-spacing:-.015em;text-wrap:balance;}
.spinwheel .result__cat{font-family:var(--font-mono);font-size:.74rem;color:var(--color-text-3);margin-top:.35rem;}
.spinwheel .result__blurb{color:var(--color-text-2);font-size:1.02rem;margin-top:.7rem;text-wrap:pretty;}
.spinwheel .result__actions{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.4rem;align-items:center;}
.spinwheel .btn-link{display:inline-flex;align-items:center;justify-content:space-between;gap:1.4rem;
  flex:1 1 auto;min-width:12rem;white-space:nowrap;
  font-weight:700;font-size:1.05rem;letter-spacing:.005em;
  color:#fff;background:var(--color-primary-hover);text-decoration:none;
  padding:.72rem .8rem .72rem 1.2rem;border-radius:var(--r-md);box-shadow:var(--sh-sm);
  transition:background-color var(--dur) var(--ease),transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease);}
.spinwheel .btn-link:hover{background:var(--color-primary-text);transform:translateY(-1px);box-shadow:var(--sh-md);}
.spinwheel .btn-link__arrow{display:grid;place-items:center;width:1.9rem;height:1.9rem;flex:none;
  border-radius:var(--r-pill);background:rgba(255,255,255,.18);}
.spinwheel .btn-link__arrow svg{width:1.05rem;height:1.05rem;transition:transform var(--dur) var(--ease);}
.spinwheel .btn-link:hover .btn-link__arrow svg{transform:translateX(2px);}
.spinwheel .btn-again{display:inline-flex;align-items:center;gap:.45rem;flex:0 0 auto;white-space:nowrap;
  font-weight:600;color:var(--color-text-2);background:none;cursor:pointer;
  border:1.5px solid var(--color-border-2);padding:.62rem 1.05rem;border-radius:var(--r-md);
  transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease),background-color var(--dur) var(--ease);}
.spinwheel .btn-again:hover{color:var(--color-primary);border-color:var(--color-primary);
  background:color-mix(in srgb,var(--color-primary) 7%,transparent);}
.spinwheel .btn-again svg{width:1.05em;height:1.05em;transition:transform var(--dur) var(--ease);}
.spinwheel .btn-again:hover svg{transform:rotate(-40deg);}

/* Quiet link back to the full guide. */
.spinwheel .spin-back{margin-top:30px;font-family:var(--font-mono);font-size:.74rem;letter-spacing:.04em;}
.spinwheel .spin-back a{color:var(--color-primary-text);}

@media (max-width:430px){ .spinwheel .result{padding:22px 20px;} }

/* Respect reduced motion: no spin, no transforms — the result just fades in. */
@media (prefers-reduced-motion:reduce){
  .spinwheel *,.spinwheel *::before,.spinwheel *::after{animation-duration:.001ms!important;transition-duration:.001ms!important;}
  .spinwheel .result{transition:opacity .35s linear;transform:none;}
  .spinwheel .result:not(.show){transform:none;}
}
