/* ============ SMOKE CITY — Bento Cinematic V4 production styles ============ */
/* Design tokens */
:root{
  --bg:#0c120c; --bg-2:#111a11; --panel:#141d14; --line:#223022;
  --ink:#eef3ee; --ink-dim:#b9c4b9; --fine:#7d8a7d;
  --acc:#8fd14f; --acc-bright:#b3f558; --acc-ink:#0b120b;
  --danger:#ff6b5e;
  --radius:16px; --radius-lg:24px;
  --font:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,"Cascadia Mono","Segoe UI Mono",Menlo,monospace;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);line-height:1.55;padding-bottom:118px}
img,video{max-width:100%;height:auto;display:block}
a{color:var(--acc)}
.wrap{max-width:1080px;margin:0 auto;padding:0 20px}
.fine{font-family:var(--mono);font-size:.68rem;letter-spacing:.08em;color:var(--fine);text-transform:uppercase}
.kicker{font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;color:var(--acc);text-transform:uppercase;margin:0 0 6px}
.h2{font-size:clamp(1.6rem,5.5vw,2.6rem);line-height:1.12;margin:.2em 0 .5em;font-weight:800;letter-spacing:-.02em}
.h3{font-size:clamp(1.2rem,4vw,1.6rem);margin:.2em 0 .6em;font-weight:800}
.chip{display:inline-flex;gap:.4em;align-items:center;border:1px solid var(--line);border-radius:999px;padding:.35em .8em;font-family:var(--mono);font-size:.68rem;letter-spacing:.06em;color:var(--ink-dim);background:var(--bg-2);text-transform:uppercase}
.chip.sample{color:#e8b24a;border-color:#5a4a22}
.pill{appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:999px;padding:.6em 1.1em;font:inherit;font-weight:600;font-size:.86rem;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:.4em;min-height:44px}
.pill:focus-visible,.btn-primary:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--acc-bright);outline-offset:2px}
.pill.is-active{background:var(--acc);color:var(--acc-ink);border-color:var(--acc)}
.pill-solid{background:var(--acc);color:var(--acc-ink);border-color:var(--acc)}
.pill-dash{border-style:dashed;border-color:var(--acc);color:var(--acc)}
.pill-dash[aria-pressed="true"]{background:var(--acc);color:var(--acc-ink)}
.btn-primary{appearance:none;border:0;background:var(--acc);color:var(--acc-ink);font:inherit;font-weight:800;border-radius:12px;padding:.85em 1.4em;cursor:pointer;text-decoration:none;display:inline-flex;justify-content:center;align-items:center;min-height:48px}
.bottombar .btn-primary,.gate-enter,.circle .btn-primary{border-radius:999px}
.btn-primary:active{transform:translateY(1px)}
.btn-wide{width:100%}

/* Tax bar + header */
.taxbar{background:var(--acc);color:var(--acc-ink);font-family:var(--mono);font-size:.72rem;letter-spacing:.06em;font-weight:700;text-align:center;padding:.55em 10px;text-transform:uppercase}
.taxbar .chip{background:transparent;border-color:rgba(0,0,0,.35);color:var(--acc-ink);margin-right:.6em}
.site-head{position:sticky;top:0;z-index:40;background:rgba(12,18,12,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.head-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:10px;padding-bottom:6px;flex-wrap:wrap}
.logo{font-weight:900;letter-spacing:.02em;color:var(--ink);text-decoration:none;font-size:1.05rem}
.logo span{color:var(--acc);font-size:.62em;letter-spacing:.2em;display:block;line-height:.9}
.store-toggle{display:flex;gap:8px;align-items:center}
.hours-pill-row{display:flex;justify-content:center;padding:0 0 8px}
.hours-pill{font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;color:var(--acc);border:1px solid var(--line);padding:.4em 1em;border-radius:999px;background:var(--bg-2);text-transform:uppercase}

/* Hero */
.hero{position:relative;min-height:78svh;display:flex;align-items:flex-end;overflow:clip}
.hero-media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:60% 40%}
.hero-video{opacity:0;transition:opacity 1.2s ease}
.hero-video.is-on{opacity:1}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(12,18,12,.15),rgba(12,18,12,.78) 78%)}
.hero-inner{position:relative;z-index:2;padding-top:48px;padding-bottom:56px}
.pos-badge{display:inline-block;border:1px solid var(--line);border-radius:999px;background:rgba(17,26,17,.8);padding:.5em 1em;font-family:var(--mono);font-size:.72rem;color:var(--acc)}
.hero-title{font-size:clamp(2.2rem,9vw,4.6rem);line-height:1.02;letter-spacing:-.03em;margin:.35em 0 .3em;font-weight:900;max-width:12ch}
.hero-sub{max-width:46ch;color:var(--ink-dim);margin:0 0 1.1em}
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion:no-preference){
    .hero-title{animation:heroDrift linear both;animation-timeline:view();animation-range:exit 0% exit 100%}
    @keyframes heroDrift{to{transform:translateY(-28px);opacity:.4}}
  }
}

/* Strips */
.strip{display:flex;gap:8px;flex-wrap:wrap;padding-top:16px;padding-bottom:4px}
.deals{padding-top:14px;padding-bottom:8px}
.deal-row{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px}
.chip-lg{white-space:nowrap;border:1px solid var(--line);border-radius:12px;padding:.7em 1em;font-family:var(--mono);font-size:.72rem;color:var(--ink-dim);background:var(--bg-2)}
.chip-lg.sample{color:#e8b24a;border-style:dashed;border-color:#5a4a22}

/* Reveal on scroll (progressive enhancement) */
.reveal{opacity:1}
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion:no-preference){
    .reveal{animation:rise .001s linear both;animation-timeline:view();animation-range:entry 0% entry 55%}
    @keyframes rise{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
  }
}

/* Staff pick */
.staffpick{border:1px solid var(--line);border-radius:var(--radius-lg);background:linear-gradient(160deg,var(--panel),var(--bg-2));padding:18px;margin:14px 0 22px}
.staffpick .sp-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.sp-row{display:flex;gap:14px;align-items:center}
.sp-img{width:88px;height:88px;border-radius:12px;border:1px dashed var(--line);display:grid;place-items:center;color:var(--fine);font-family:var(--mono);font-size:.6rem;flex:none;background:var(--bg)}
.sp-quote{border-left:3px solid var(--acc);padding-left:12px;margin:12px 0;color:var(--ink-dim);font-style:italic}
.sp-buy{display:flex;justify-content:space-between;align-items:center;gap:10px}
.price{color:var(--acc-bright);font-weight:900;font-size:1.5rem}
.price small{color:var(--fine);font-weight:400;font-family:var(--mono);font-size:.62em;margin-left:.5em}

/* Board */
.board{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-2);padding:18px;margin:0 0 26px}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 6px}
.board-list{list-style:none;margin:8px 0 4px;padding:0}
.board-list li{display:flex;align-items:baseline;gap:10px;border-bottom:1px solid var(--line);padding:.65em 2px}
.board-list li:last-child{border-bottom:0}
.bl-rank{font-family:var(--mono);color:var(--acc);font-size:.72rem;width:2ch;flex:none}
.bl-name b{display:block;font-size:.95rem}
.bl-name small{color:var(--fine);font-family:var(--mono);font-size:.62rem;letter-spacing:.08em;text-transform:uppercase}
.bl-ppg{margin-left:auto;font-family:var(--mono);font-weight:700;color:var(--ink)}

/* Catalog cards */
.cards{display:grid;grid-auto-flow:column;grid-auto-columns:min(78vw,270px);gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding:6px 2px 14px}
.card{scroll-snap-align:start;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--panel);padding:14px;display:flex;flex-direction:column;gap:10px;position:relative}
.card:hover{border-color:var(--acc)}
@media (hover:hover){.card{transition:transform .18s ease,border-color .18s ease}.card:hover{transform:translateY(-4px)}}
.card-badges{display:flex;justify-content:space-between}
.badge-tax{background:var(--acc);color:var(--acc-ink);border-radius:999px;padding:.25em .7em;font-family:var(--mono);font-size:.6rem;font-weight:700}
.badge-type{border:1px solid var(--line);border-radius:999px;padding:.25em .7em;font-family:var(--mono);font-size:.6rem;color:var(--ink-dim);text-transform:capitalize}
.card-img{aspect-ratio:4/3;border-radius:12px;border:1px dashed var(--line);display:grid;place-items:center;color:var(--fine);font-family:var(--mono);font-size:.62rem;background:
  radial-gradient(80% 60% at 60% 30%,rgba(143,209,79,.08),transparent),var(--bg)}
.card h4{margin:0;font-size:1rem;line-height:1.25}
.card .brand{color:var(--fine);font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase}
.stats{display:flex;gap:6px}
.stat{border:1px solid var(--line);border-radius:999px;padding:.3em .6em;font-family:var(--mono);font-size:.6rem;color:var(--ink-dim)}
.card-buy{margin-top:auto;display:flex;justify-content:space-between;align-items:center;gap:8px}
.qadd{appearance:none;border:1px solid var(--acc);background:transparent;color:var(--acc);width:46px;height:46px;border-radius:999px;font-size:1.5rem;font-weight:800;cursor:pointer;line-height:1;flex:none}
.qadd:active{background:var(--acc);color:var(--acc-ink)}
.qadd.added{background:var(--acc);color:var(--acc-ink)}
.sample-tag{position:absolute;top:-8px;right:12px;background:#2a2412;border:1px dashed #5a4a22;color:#e8b24a;font-family:var(--mono);font-size:.55rem;padding:.2em .6em;border-radius:999px}

/* Till math */
.tillmath{margin:8px 0 30px}
.receipts{display:grid;gap:12px;grid-template-columns:1fr;margin:12px 0}
@media(min-width:640px){.receipts{grid-template-columns:1fr 1fr}}
.receipt{border:1px solid var(--line);border-radius:var(--radius);padding:16px;background:var(--bg-2);font-family:var(--mono);font-size:.8rem}
.receipt h5{margin:0 0 10px;font-family:var(--font);font-size:.95rem}
.r-line{display:flex;justify-content:space-between;border-bottom:1px dashed var(--line);padding:.5em 0;margin:0;color:var(--ink-dim)}
.r-total{display:flex;justify-content:space-between;padding:.7em 0 0;margin:0;font-weight:700}
.receipt-us{border-color:var(--acc)}
.stamp{color:var(--acc-bright);font-weight:900;letter-spacing:.1em}
.tagline{color:var(--ink-dim);font-weight:600}

/* Hours */
.hours{position:relative;border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:clip}
.hours-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.4}
.hours-inner{position:relative;padding-top:44px;padding-bottom:44px}
.loc-cards{display:grid;gap:14px;grid-template-columns:1fr;margin-top:10px}
@media(min-width:760px){.loc-cards{grid-template-columns:1fr 1fr}}
.loc{border:1px solid var(--line);border-radius:var(--radius-lg);background:rgba(12,18,12,.9);padding:18px}
.loc header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.loc h3{margin:0}
.loc dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:.35em .9em;font-size:.9rem}
.loc dt{color:var(--fine);font-family:var(--mono);font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;align-self:center}
.loc dd{margin:0}
.loc-actions{display:flex;gap:10px;margin-top:14px}

/* Reviews / how / local / circle */
.reviews{padding-top:34px}
.quotes{display:grid;gap:10px;grid-template-columns:1fr}
@media(min-width:760px){.quotes{grid-template-columns:repeat(3,1fr)}}
.quotes blockquote{margin:0;border:1px solid var(--line);border-radius:var(--radius);padding:14px;background:var(--bg-2);color:var(--ink-dim);font-style:italic}
.how{padding-top:26px}
.steps{list-style:none;counter-reset:st;margin:10px 0;padding:0;display:grid;gap:10px}
.steps li{counter-increment:st;border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;background:var(--bg-2)}
.steps li::before{content:"0" counter(st);font-family:var(--mono);color:var(--acc);margin-right:.8em;font-size:.75rem}
.steps b{display:inline}
.steps span{display:block;color:var(--ink-dim);font-size:.9rem;margin-top:.2em}
.local{position:relative;margin-top:30px;min-height:340px;display:flex;align-items:center;overflow:clip}
.local img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.local::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(12,18,12,.82),rgba(12,18,12,.25))}
.local-inner{position:relative;z-index:2;padding-top:44px;padding-bottom:44px;max-width:560px}
.circle{padding-top:34px;padding-bottom:8px}
.circle form{display:grid;gap:10px;grid-template-columns:1fr auto;align-items:center;max-width:560px}
.circle input[type=tel]{grid-column:1;border:1px solid var(--line);background:var(--bg-2);color:var(--ink);border-radius:12px;padding:.85em 1em;font:inherit;min-height:48px}
.circle .btn-primary{grid-column:2}
.circle .check{grid-column:1/-1;display:flex;gap:.6em;align-items:center;color:var(--ink-dim);font-size:.88rem}

/* Footer */
.foot{border-top:1px solid var(--line);margin-top:36px;padding:30px 0 26px;background:var(--bg-2)}
.foot p{color:var(--ink-dim);max-width:60ch}
.foot-cols{display:grid;gap:18px;grid-template-columns:1fr;margin:16px 0}
@media(min-width:640px){.foot-cols{grid-template-columns:1fr 1fr}}
.foot h5{margin:0 0 4px}

/* Bottom bar */
.bottombar{position:fixed;left:0;right:0;bottom:0;z-index:60;background:rgba(10,14,10,.97);border-top:1px solid var(--line);backdrop-filter:blur(10px);display:grid;grid-template-columns:1fr auto;grid-template-areas:"cart actions" "meter meter" "ready ready";gap:4px 10px;padding:10px 14px 12px;align-items:center}
.bb-cart{grid-area:cart;appearance:none;background:none;border:0;color:var(--ink);font:inherit;text-align:left;display:flex;gap:.6em;align-items:center;cursor:pointer;font-family:var(--mono);font-size:.72rem;letter-spacing:.08em;min-height:44px}
.bb-cart b{font-family:var(--font);font-size:.95rem;letter-spacing:0}
.caret{color:var(--acc)}
.bb-actions{grid-area:actions;display:flex;gap:8px}
.bb-meter{grid-area:meter;display:flex;gap:10px;align-items:center;font-family:var(--mono);font-size:.66rem;color:var(--fine)}
.bb-meter b{color:var(--acc)}
.bb-meter progress{flex:1;height:4px;accent-color:var(--acc)}
.bb-ready{grid-area:ready;text-align:right}
@media(min-width:760px){.bottombar{grid-template-columns:auto 1fr auto auto;grid-template-areas:"cart meter ready actions";padding:10px 22px}}

/* Sheet */
.sheet{position:fixed;inset:0;z-index:80;background:rgba(5,8,5,.6);display:flex;align-items:flex-end;justify-content:center}
.sheet[hidden]{display:none}
.sheet-card{background:var(--bg-2);border:1px solid var(--line);border-radius:22px 22px 0 0;width:min(560px,100%);max-height:88svh;overflow:auto;padding:18px 18px 26px;position:relative}
.sheet-grip{width:44px;height:4px;border-radius:4px;background:var(--line);margin:0 auto 12px}
.sheet-close{position:absolute;top:10px;right:12px;appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--ink);width:36px;height:36px;border-radius:999px;font-size:1.1rem;cursor:pointer}
.sheet h3{margin:.2em 0 .3em}
.sample-text{color:#e8b24a}
.cart-lines{border:1px solid var(--line);border-radius:12px;padding:4px 12px;margin:10px 0;font-size:.92rem}
.cart-line{display:flex;justify-content:space-between;gap:10px;border-bottom:1px dashed var(--line);padding:.6em 0;align-items:center}
.cart-line:last-child{border-bottom:0}
.cart-line .qty{font-family:var(--mono);color:var(--fine)}
.cart-empty{color:var(--fine);padding:.8em 0}
.cart-total{display:flex;justify-content:space-between;font-weight:800;padding:.6em 0}
.lbl{display:block;margin:10px 0;font-size:.88rem;color:var(--ink-dim)}
.lbl input{width:100%;margin-top:.35em;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:12px;padding:.85em 1em;font:inherit;min-height:48px}
.or-row{display:flex;align-items:center;gap:12px;color:var(--fine);font-family:var(--mono);font-size:.62rem;margin:14px 0 10px}
.or-row::before,.or-row::after{content:"";flex:1;height:1px;background:var(--line)}
.oauth-row{display:flex;gap:10px}
.oauth-row .pill{flex:1;justify-content:center;opacity:.65}

/* Gate */
.gate{position:fixed;inset:0;z-index:100;background:rgba(5,8,5,.88);display:flex;align-items:center;justify-content:center;padding:16px}
.gate[hidden]{display:none}
.gate-card{background:linear-gradient(165deg,#131c13,#0d130d);border:1px solid var(--line);border-radius:24px;padding:26px 22px;width:min(520px,100%);background-image:radial-gradient(120% 80% at 100% 0%,rgba(143,209,79,.12),transparent 55%)}
.gate-brand{font-weight:900;letter-spacing:.04em}
.gate-brand span{color:var(--acc);font-size:.62em;letter-spacing:.22em;display:block}
.gate h1{font-size:1.35rem;margin:.7em 0}
.gate-stores{display:grid;gap:10px;grid-template-columns:1fr}
@media(min-width:480px){.gate-stores{grid-template-columns:1fr 1fr}}
.gate-store{appearance:none;text-align:left;border:1px solid var(--line);background:var(--bg-2);color:var(--ink);border-radius:14px;padding:12px 14px;font:inherit;cursor:pointer;position:relative;min-height:64px}
.gate-store small{display:block;color:var(--fine);margin-top:.2em}
.gate-store .radio{position:absolute;top:12px;right:12px;width:18px;height:18px;border:2px solid var(--line);border-radius:50%}
.gate-store.is-picked{border-color:var(--acc)}
.gate-store.is-picked .radio{border-color:var(--acc);background:radial-gradient(circle at center,var(--acc) 0 45%,transparent 50%)}
.gate-age{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin:12px 0}
.gate-age button{appearance:none;border:1px solid var(--line);background:var(--bg-2);color:var(--ink);border-radius:999px;padding:.5em 1.3em;font:inherit;font-weight:700;cursor:pointer;margin-left:8px;min-height:44px}
.gate-age button.is-picked{background:var(--acc);color:var(--acc-ink);border-color:var(--acc)}
.gate-enter{width:100%;appearance:none;border:0;border-radius:14px;padding:1em;font:inherit;font-weight:800;background:var(--panel);color:var(--fine);cursor:not-allowed;min-height:52px}
.gate-enter.is-ready{background:var(--acc);color:var(--acc-ink);cursor:pointer}
.gate-fine{text-align:center;margin:12px 0 0}

/* Toast */
.toast{position:fixed;left:50%;bottom:132px;transform:translate(-50%,20px);background:var(--acc);color:var(--acc-ink);font-weight:700;border-radius:999px;padding:.7em 1.3em;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease;z-index:90}
.toast.show{opacity:1;transform:translate(-50%,0)}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}
