/* Takeaway Pacific · front door styles (index.html): tokens, page, 1 · the threshold, shared sections, 2 · the three doors. Linked in order; the cascade depends on it. */
:root{
  /* black-first: ink and red, white surfaces on a pale kupesi page */
  --midnight:#0F172A; --lagoon:#0F172A; --stone:#1C1917; --cream:#F6F4F4;
  --coral:#DC2626; --red-press:#991B1B; --ivory:#F8FAFC; --tapa:#1C1917; --pill:#E5E7EB;
  --lagoon-deep:#0F172A; --amber:#DC2626; --ink-2:#475569; --ink-3:#64748B;
  --line:#E2E8F0; --line-2:#CBD5E1;
  --serif:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --sans:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --warm:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  --spring:cubic-bezier(.3,1.35,.5,1);
  /* house curves: entrances / exits */
  --in:cubic-bezier(.2,1,.3,1); --out:cubic-bezier(.4,0,.2,1);
  /* ambient sine, for loops that breathe */
  --sine:cubic-bezier(.37,0,.63,1);
  --r:24px; --r-sm:20px; --r-lg:28px;
  --sh:0 1px 2px rgba(15,23,42,.06),0 10px 30px -12px rgba(15,23,42,.28);
  --sh-lg:0 2px 4px rgba(15,23,42,.08),0 28px 60px -24px rgba(15,23,42,.45);
  --sat:env(safe-area-inset-top,0px); --sab:env(safe-area-inset-bottom,0px);
  --dock:calc(64px + var(--sab));
  --kupesi:url(../img/kupesi-light.png); --kupesi-tapa:none;
  /* Tevi's kupesi (the triangle tapa pattern he supplied), cut to one seamless 256px tile, shown at 128px */
  --tonga:url(../img/kupesi.png);
  /* Tevi's logo, 240px WebP, inlined so the page stays one file */
  --logo:url(data:image/webp;base64,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);
  color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}
*{-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
html{background:#E2E8F0;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;min-height:100svh;background:var(--cream);color:var(--midnight);font:500 16px/1.5 var(--sans);-webkit-font-smoothing:antialiased;max-width:430px;margin-inline:auto;overflow-x:hidden;overscroll-behavior-y:none}
body.locked{overflow:hidden}
h1,h2,h3,p{margin:0}
a{color:inherit}
button,input{font:inherit;color:inherit}
button{border:0;background:none;padding:0;cursor:pointer;touch-action:manipulation}
svg{display:block}
:focus-visible{outline:3px solid var(--amber);outline-offset:3px;border-radius:12px}
[tabindex="-1"]:focus{outline:none}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.ic{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}
.serif{font-family:var(--serif);font-weight:800}

/* ---------- press feedback: every tap compresses, ripples, or buzzes ---------- */
.tap{position:relative;overflow:hidden;transition:transform 160ms var(--out);isolation:isolate}
.tap:active{transform:scale(.96)}
.ripple{position:absolute;left:var(--x);top:var(--y);width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:currentColor;opacity:.22;pointer-events:none;z-index:-1;animation:ripple 520ms var(--in) forwards}
@keyframes ripple{to{transform:scale(var(--s,30));opacity:0}}

/* ---------- entrance & reveal ---------- */
.rise{opacity:0;transform:translateY(20px);animation:rise 640ms var(--in) forwards;animation-delay:calc(var(--i,0) * 80ms + 120ms)}
@keyframes rise{to{opacity:1;transform:none}}
.reveal{opacity:0;transform:translateY(22px);transition:opacity 600ms var(--in),transform 600ms var(--in);transition-delay:calc(var(--i,0) * 75ms)}
.reveal.in{opacity:1;transform:none}

/* =========================================================
   1 · THE THRESHOLD
   ========================================================= */
.hero{position:relative;padding:0 20px 4px;color:var(--midnight);transform-origin:50% 0;transition:transform 560ms var(--out),opacity 560ms var(--out)}

.foot .lockup{color:#fff}
.foot .lockup small{display:block;margin-top:5px;font:700 9.5px/1 var(--sans);letter-spacing:.32em;text-transform:uppercase;opacity:.75}
.hero-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 -20px;padding:calc(var(--sat) + 10px) 16px 10px;background-color:rgba(255,255,255,.94);background-image:var(--tonga);background-size:128px 128px}
.lockup{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--midnight)}
.lockup b{display:block;font:800 18px/1 var(--sans);letter-spacing:-.025em}

.hero-mid{padding:26px 0 0}
.hello{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font:800 11.5px/1.3 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--coral)}
.hello .chip-t{padding:4px 8px;border-radius:99px;background:var(--midnight);color:#fff;letter-spacing:.06em}
.greet{margin-top:12px;font:800 clamp(32px,9.6vw,40px)/1.06 var(--sans);letter-spacing:-.035em;text-wrap:balance}
.tagline{margin-top:10px;max-width:32ch;font:500 15.5px/1.5 var(--sans);color:var(--ink-2)}

.hero-bot{display:grid;gap:10px;margin-top:20px}
.cta.pilot{margin-top:10px;background:#B91C1C;box-shadow:0 4px 0 var(--red-press),0 18px 30px -18px rgba(185,28,28,.6)}
.cta{text-decoration:none;display:flex;align-items:center;justify-content:center;gap:8px;height:58px;border-radius:99px;background:var(--midnight);color:#fff;font:800 17px/1 var(--sans);letter-spacing:-.01em;box-shadow:0 4px 0 #020617,0 18px 30px -18px rgba(15,23,42,.7)}
.cta.tap:active{transform:translateY(3px);box-shadow:0 1px 0 #020617}
.cta .ic{width:20px;height:20px;stroke-width:2.2;transition:transform 300ms var(--spring)}
.cta:hover .ic{transform:translateX(3px)}
.a2hs{display:flex;align-items:center;gap:10px;padding:8px 6px 8px 14px;border-radius:18px;background:#fff;border:1px solid var(--line);font-size:13.5px;line-height:1.35;font-weight:600;color:var(--midnight);transition:opacity 260ms var(--out),transform 260ms var(--out)}
.a2hs.bye{opacity:0;transform:translateY(8px)}
.a2hs .ic{width:20px;height:20px;color:var(--coral)}
.a2hs p{flex:1}
.a2hs .go{height:34px;padding:0 14px;border-radius:99px;background:var(--midnight);color:#fff;font-weight:800;font-size:13px}
.a2hs .x{width:40px;height:40px;display:grid;place-items:center;border-radius:50%;color:var(--ink-3)}
.a2hs .x .ic{width:18px;height:18px;color:inherit}
@keyframes cue{to{transform:rotate(90deg) translateX(5px)}}

/* kupesi page canvas: Tevi's pattern, drifting one tile every 90 s */
.home{position:relative;isolation:isolate}
.kp{position:fixed;top:0;bottom:0;left:0;right:0;max-width:430px;margin-inline:auto;overflow:hidden;z-index:-1;pointer-events:none}
.kp i{position:absolute;top:-128px;left:-128px;right:0;bottom:0;background:var(--tonga) 0 0/128px 128px;animation:kpdrift 90s linear infinite;will-change:transform}
@keyframes kpdrift{to{transform:translate3d(128px,128px,0)}}

/* logo: still, rocking gently, with a small smoke puff from the exhaust */
.lockup .logo,.shead .logo{position:relative;transform-origin:55% 90%;animation:rock 2.8s var(--sine) infinite alternate}
.lockup .logo::after,.shead .logo::after{content:"";position:absolute;left:-3px;bottom:7px;width:9px;height:9px;border-radius:50%;background:#CBD5E1;opacity:0;animation:puff 2.8s var(--out) infinite}
@keyframes rock{from{transform:rotate(-2.5deg)}to{transform:rotate(2deg)}}
@keyframes puff{0%{opacity:0;transform:scale(.3)}15%{opacity:.8}100%{opacity:0;transform:translate(-12px,-7px) scale(1.6)}}

/* =========================================================
   Sections shared
   ========================================================= */
.sec{padding:44px 20px 8px}
.kick{display:flex;align-items:center;gap:8px;font:800 11px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--coral)}
.kick::before{content:"";width:18px;height:6px;background:var(--kupesi-tapa);background-size:12px 6px;opacity:.9}
.h2{margin-top:12px;font:800 29px/1.1 var(--serif);letter-spacing:-.035em;text-wrap:balance}
.lede{margin-top:10px;color:var(--ink-2);font-size:15px;line-height:1.55;max-width:34ch}

/* =========================================================
   2 · THE THREE DOORS
   ========================================================= */
/* two rows: Ride across the top, Food and Shop side by side. Artwork + title only. */
.doors{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
#doors{padding-top:22px}
.door{position:relative;display:block;height:136px;border-radius:var(--r);overflow:hidden;text-decoration:none;color:#fff;isolation:isolate;background:var(--midnight);box-shadow:0 1px 2px rgba(15,23,42,.1),0 16px 32px -18px rgba(15,23,42,.55)}
.door.ride{grid-column:1/-1;height:128px}
.door>svg.scene{position:absolute;inset:0;width:100%;height:100%;z-index:-2}
.door::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,transparent 38%,rgba(15,23,42,.7) 100%)}
.door::before{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 0 0 1px rgba(255,255,255,.06);pointer-events:none}
.door.shop{color:var(--midnight);background:#fff}
.door.shop::after{background:linear-gradient(180deg,transparent 42%,rgba(255,255,255,.88) 100%)}
.door.shop::before{box-shadow:inset 0 0 0 1px var(--line)}
.door-txt{position:absolute;left:16px;right:12px;bottom:14px}
.door-t{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.door-t small{font:700 12px/1 var(--sans);letter-spacing:.05em;opacity:.86}
.door-t b{font:800 28px/1 var(--sans);letter-spacing:-.035em}
.door:active{transform:scale(.97)}
.doors.app{margin-top:16px}
.doors.app .door{animation:panein 520ms var(--in) both}
.doors.app .door:nth-child(2){animation-delay:70ms}.doors.app .door:nth-child(3){animation-delay:140ms}
/* scenes only animate while their tile is on screen */
.door:not(.live) .scene *,.shell-art:not(.live) *{animation-play-state:paused!important}
.scene .s-sun{transform-box:fill-box;transform-origin:center;animation:sunpulse 6s var(--sine) infinite alternate}
.scene .van{animation:van 9s cubic-bezier(.45,.05,.55,.95) infinite}
@keyframes van{0%{transform:translateX(-150px)}55%{transform:translateX(150px)}100%{transform:translateX(420px)}}
.scene .bob{animation:bob .55s var(--sine) infinite alternate}
@keyframes bob{to{transform:translateY(-1.4px)}}
.scene .lamp{animation:lamp 1.6s var(--sine) infinite alternate}
@keyframes lamp{to{opacity:.12}}
.scene .sw{transform-box:fill-box;transform-origin:50% 100%;animation:sway 6s var(--sine) infinite alternate;--a:2deg}
.scene .sw.b{animation-duration:7.5s;animation-delay:-3s;--a:-2.4deg}
.scene .bird{animation:bird 12s var(--sine) infinite alternate}
@keyframes bird{to{transform:translate(-60px,-8px)}}
.scene .ripl{animation:swell 6s var(--sine) infinite alternate}
.scene .steam{opacity:0;transform-box:fill-box;transform-origin:50% 100%;animation:steam 3.6s var(--in) infinite}
.scene .steam.b{animation-delay:1.2s}.scene .steam.c{animation-delay:2.4s}
@keyframes steam{0%{opacity:0;transform:translateY(8px) scaleY(.8)}30%{opacity:.75}100%{opacity:0;transform:translateY(-30px) scaleY(1.15)}}
.scene .fl{transform-box:fill-box;transform-origin:center;animation:float 5s var(--sine) infinite alternate}
.scene .fl.b{animation-duration:6.2s;animation-delay:-2s}.scene .fl.c{animation-duration:4.4s;animation-delay:-1s}.scene .fl.d{animation-duration:7s;animation-delay:-3.5s}
@keyframes float{from{transform:translateY(5px) rotate(-6deg)}to{transform:translateY(-7px) rotate(6deg)}}
.scene .plate{animation:plate 8s var(--in) infinite}
@keyframes plate{0%{transform:translateX(150px);opacity:0}18%{transform:none;opacity:1}70%{transform:none;opacity:1}88%,100%{transform:translateX(-30px);opacity:0}}
.scene .good{transform-box:fill-box;transform-origin:50% 100%;animation:good 6s var(--in) infinite}
.scene .good.b{animation-delay:.6s}.scene .good.c{animation-delay:1.2s}.scene .good.d{animation-delay:1.8s}.scene .good.e{animation-delay:2.4s}
@keyframes good{0%{transform:translateY(54px);opacity:0}22%{opacity:1}40%,72%{transform:translateY(0);opacity:1}100%{transform:translateY(54px);opacity:0}}
.scene .shine{animation:breathe 5s var(--sine) infinite alternate}
.scene .heat{opacity:0;transform-box:fill-box;transform-origin:50% 100%;animation:heat 3.4s var(--sine) infinite}
.scene .heat.b{animation-delay:.85s}.scene .heat.c{animation-delay:1.7s}.scene .heat.d{animation-delay:2.55s}
@keyframes heat{0%{opacity:0;transform:translateY(16px) scaleY(.7)}25%{opacity:.85}70%{opacity:.35}100%{opacity:0;transform:translate(4px,-38px) scaleY(1.2)}}
.scene .glow{animation:glow 3.6s var(--sine) infinite alternate}
@keyframes glow{to{opacity:.55}}
.scene .pop{opacity:0;transform-box:fill-box;transform-origin:50% 100%;animation:pop 6s var(--spring) infinite}
.scene .pop.b{animation-delay:.3s}.scene .pop.c{animation-delay:.6s}.scene .pop.d{animation-delay:.9s}.scene .pop.e{animation-delay:1.2s}.scene .pop.f{animation-delay:1.5s}
@keyframes pop{0%{opacity:0;transform:translateY(12px) scale(0)}12%{opacity:1;transform:none}80%{opacity:1;transform:none}92%,100%{opacity:0;transform:translateY(6px) scale(.5)}}
@keyframes breathe{to{opacity:.06}}
/* shop shelf: items wobble gently once popped in, soap bubbles rise, a sparkle twinkles */
.scene .tw{transform-box:fill-box;transform-origin:50% 100%;animation:wob 3.2s var(--sine) infinite alternate}
.scene .tw.b{animation-delay:-.8s}.scene .tw.c{animation-delay:-1.6s}.scene .tw.d{animation-delay:-2.4s}
@keyframes wob{from{transform:rotate(-2.5deg)}to{transform:rotate(2.5deg) translateY(-2px)}}
.scene .bub{opacity:0;transform-box:fill-box;transform-origin:center;animation:bub 3s var(--in) infinite}
.scene .bub.b{animation-delay:1s}.scene .bub.c{animation-delay:2s}
@keyframes bub{0%{opacity:0;transform:translateY(6px) scale(.4)}25%{opacity:1}100%{opacity:0;transform:translateY(-26px) scale(1.2)}}
.scene .twk{transform-box:fill-box;transform-origin:center;animation:twk 2.4s var(--sine) infinite alternate}
@keyframes twk{from{opacity:.15;transform:scale(.5) rotate(0)}to{opacity:1;transform:scale(1.1) rotate(45deg)}}

