:root{
  --bg:#0a0823; --cyan:#8edef3; --yellow:#f46849; --navy:#0c2b67;
  --y:#f4e749; --red:#f46849; --green:#6eeb85; --blue:#8edef3;
}
*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth}
body{background:var(--bg);font-family:'Intel One Mono',ui-monospace,monospace;color:#fff;overflow-x:hidden}

/* each Figma frame is 1728x947; .stage is scaled to the viewport width by script.js */
.screen{position:relative;width:100%;overflow:hidden;background:var(--bg)}
.stage{position:absolute;left:0;top:0;width:1728px;height:947px;transform-origin:0 0;overflow:hidden}
.abs{position:absolute}
.crop{overflow:hidden}
.crop>img,.light>img{position:absolute;max-width:none;pointer-events:none}
.light{overflow:hidden;pointer-events:none}
.blur{position:absolute;display:block;max-width:none;width:auto;height:auto;pointer-events:none}
.fill{position:absolute;inset:0;width:100%;height:100%;display:block;max-width:none}
.cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;max-width:none;pointer-events:none}
.rot{position:absolute;left:50%;top:50%}
.mask{-webkit-mask-image:url(assets/b21b7.svg);mask-image:url(assets/b21b7.svg);
  -webkit-mask-size:186.301px 41.374px;mask-size:186.301px 41.374px;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;mask-mode:alpha;position:absolute}
.rot.mask{position:absolute}
.abs.mask{position:absolute}

.can-link{display:block;cursor:pointer;transition:transform .4s ease,filter .4s ease}
.can-link:hover{transform:translateY(-8px) scale(1.02);filter:drop-shadow(0 0 30px rgba(244,231,73,.45))!important}
.remote{pointer-events:none}
.remote .rb{pointer-events:auto}

.q{font-weight:700;font-size:45.045px;letter-spacing:-.9px;text-shadow:0 6.435px 6.435px rgba(0,0,0,.55);line-height:normal;pointer-events:none}

.panel{display:flex;flex-direction:column;gap:40px}
.title{font-weight:300;font-size:48px;letter-spacing:-2.88px;text-transform:uppercase;line-height:normal;white-space:nowrap}
.title.cyan{color:var(--cyan)}

/* details cards */
.cards{display:flex;flex-direction:column;gap:12px;margin-top:-0px}
.card{all:unset;box-sizing:border-box;display:flex;flex-direction:column;gap:8px;width:100%;padding:16px 24px;border-radius:16px;
  border:1px solid var(--c);color:color-mix(in srgb,var(--c) 50%,transparent);cursor:pointer;
  transition:background .25s,color .25s}
.card[data-c=yellow]{--c:var(--y)}.card[data-c=red]{--c:var(--red)}
.card[data-c=green]{--c:var(--green)}.card[data-c=blue]{--c:var(--blue)}
.card .ct{font-weight:700;font-size:20px;letter-spacing:-1.2px}
.card .cd{font-weight:400;font-size:16px;letter-spacing:-.96px}
.card:not(.active) .cd{display:block}
.card:hover{color:var(--c)}
.card.active{background:var(--c);color:var(--navy)}
.card[data-c=yellow]:not(.active) .cd{display:none}
.card:not([data-c=yellow]).active .cd::after{content:" — Lorem ipsum dolor sit amet consectetur. Mi diam felis curabitur volutpat ullamcorper dapibus vitae vitae."}
.card:focus-visible{outline:2px solid #fff;outline-offset:3px}

/* buttons */
.btn{align-self:flex-start;display:inline-flex;align-items:center;justify-content:center;height:44px;min-width:210px;padding:16px 18px;
  border-radius:1000px;border:0;background:var(--cyan);color:var(--navy);font:700 16px 'Intel One Mono',monospace;letter-spacing:-.96px;
  text-decoration:none;cursor:pointer;transition:transform .2s,box-shadow .2s}
.btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(142,222,243,.4)}

/* form */
.order .row{display:flex;gap:40px}
.order{gap:0}
.order .title{margin-bottom:40px}
.order .row{margin-bottom:40px}
.order .row:nth-of-type(3){margin-bottom:40px}
.field{flex:1;min-width:0;display:flex;flex-direction:column;gap:12px}
.h{padding:0 24px;font-weight:700;font-size:16px;letter-spacing:-.96px;color:var(--cyan)}
.h i{font-style:normal;color:var(--red);margin-left:10px}
.box{width:100%;min-height:55px;padding:16px 24px;border-radius:16px;border:1px solid var(--cyan);background:transparent;color:var(--cyan);
  font:400 18px 'Intel One Mono',monospace;letter-spacing:-1.08px;outline:0;transition:box-shadow .2s,background .2s}
.box::placeholder{color:var(--cyan);opacity:.4}
.box:focus{box-shadow:0 0 0 3px rgba(142,222,243,.3);background:rgba(142,222,243,.05)}
.box.invalid{border-color:var(--red);box-shadow:0 0 0 3px rgba(244,104,73,.25)}
.sel{position:relative;display:block}
.sel::after{content:"";position:absolute;right:24px;top:50%;width:24px;height:24px;margin-top:-12px;pointer-events:none;
  background:url(assets/2d17b.svg) center/contain no-repeat}
select.box{appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:56px}
select.box:invalid{color:rgba(142,222,243,.4)}
select.box option{background:#0a0823;color:var(--cyan)}
.total{display:flex;align-items:center;font-weight:700;background:rgba(142,222,243,.08);border-color:rgba(142,222,243,.5)}
.msg{margin-top:16px;color:var(--cyan);font-size:16px;min-height:22px}

/* ---- hero scroll animation ---- */
.pin{position:relative}
.pin>.screen{position:sticky;top:0}
#remote,#lid{will-change:transform,opacity}
#lid{overflow:visible}
.tv{will-change:opacity,filter}
.tv img{animation:tvjit .18s steps(2,end) infinite}
.tv1{animation:tvflick 2.3s infinite}
.tv2{animation:tvflick 1.7s -.6s infinite}
@keyframes tvflick{
  0%,100%{opacity:1;filter:brightness(1) saturate(1)}
  4%{opacity:.35;filter:brightness(1.8) saturate(1.4)}
  6%{opacity:1;filter:brightness(.8)}
  9%{opacity:.6;filter:brightness(1.4) hue-rotate(25deg)}
  12%{opacity:1;filter:brightness(1)}
  38%{opacity:.9;filter:brightness(1.15)}
  40%{opacity:.25;filter:brightness(2) saturate(.5)}
  43%{opacity:1;filter:brightness(1)}
  47%{opacity:.7;filter:brightness(1.3) hue-rotate(-20deg)}
  50%{opacity:1}
  72%{opacity:.85;filter:brightness(.9)}
  74%{opacity:.4;filter:brightness(1.7)}
  77%{opacity:1;filter:brightness(1)}
  90%{opacity:.8;filter:brightness(1.25) hue-rotate(15deg)}
  92%{opacity:1}
}
@keyframes tvjit{0%{transform:translate(0,0)}50%{transform:translate(-3px,1px)}100%{transform:translate(2px,-1px)}}
@media (prefers-reduced-motion:reduce){.tv,.tv img{animation:none}}

/* ---- light spot / flood ---- */
#spot{border-radius:50%;pointer-events:none;mix-blend-mode:screen;opacity:0;transform:scale(0);will-change:transform,opacity;
  background:radial-gradient(circle,#fffbe0 0,#fff3a0 18%,rgba(244,231,73,.65) 38%,rgba(255,190,80,.25) 60%,transparent 72%)}
#flood{pointer-events:none;opacity:0;background:radial-gradient(circle at 48% 36%,#fffef2,#fff6bf 55%,#ffe98a);will-change:opacity}
.flash{pointer-events:none;z-index:5;opacity:0;background:radial-gradient(circle at 48% 36%,#fffef2,#fff6bf 55%,#ffe98a)}
#details.in .flash{animation:flashout 1.4s ease-out forwards}
#details .panel{opacity:0;transform:translateY(24px)}
#details.in .panel{animation:panelin .9s .35s ease-out forwards}
@keyframes flashout{0%{opacity:1}100%{opacity:0}}
@keyframes panelin{to{opacity:1;transform:none}}

/* ---- remote buttons / channel switching ---- */
.rb{position:absolute;width:22px;height:22px;border-radius:50%;border:0;background:transparent;cursor:pointer;padding:0}
.rb:hover{background:rgba(255,255,255,.22)}
.rb:active{background:rgba(255,255,255,.45)}
.rb:focus-visible{outline:2px solid #fff}
#remote.off .rb{pointer-events:none}
.tv img{filter:hue-rotate(var(--hue,0deg)) invert(var(--inv,0)) grayscale(var(--gray,0)) sepia(var(--sep,0)) saturate(var(--sat,1));transition:filter .3s}
.tv.switching img{animation:tvswitch .55s steps(11,end) 1}
@keyframes tvswitch{
  0%{transform:translateX(0) scaleY(1);filter:brightness(1)}
  15%{transform:translateX(-40px) scaleY(.2);filter:brightness(4) contrast(3) grayscale(1)}
  30%{transform:translateX(30px) scaleY(1.8);filter:brightness(2.5) contrast(4) grayscale(1)}
  50%{transform:translateX(-20px) scaleY(.4);filter:brightness(5) grayscale(1)}
  70%{transform:translateX(12px) scaleY(1.2);filter:brightness(2)}
  100%{transform:translateX(0) scaleY(1);filter:brightness(1)}}
.osd{font:700 30px 'Intel One Mono',monospace;color:#6eeb85;letter-spacing:2px;text-shadow:0 0 8px #6eeb85,2px 2px 0 #031;
  opacity:0;pointer-events:none;transition:opacity .2s;z-index:3}
.osd.show{opacity:1}

#glow{pointer-events:none;opacity:0;mix-blend-mode:screen;
  background:radial-gradient(ellipse 700px 380px at 8% 88%,var(--gc,#fff),transparent 70%),
             radial-gradient(ellipse 700px 380px at 92% 22%,var(--gc,#fff),transparent 70%),
             radial-gradient(ellipse 900px 520px at 48% 50%,var(--gc,#fff),transparent 70%)}
.snow{position:absolute;inset:0;opacity:0;pointer-events:none;mix-blend-mode:hard-light;background-size:64px 64px}
.osd{font-size:22px!important;white-space:nowrap}
#osd2{left:auto!important;right:24px;text-align:right}

.snow{-webkit-mask-image:url(assets/a9371.png);mask-image:url(assets/a9371.png);
  -webkit-mask-size:844.9px 1689.7px;mask-size:844.9px 1689.7px;
  -webkit-mask-position:-633.9px -1157px;mask-position:-633.9px -1157px;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
#home{transition:background .4s}
#home.tv-off{background:#03020a}
#remote{z-index:6}
#scene{transform-origin:50% 50%}

/* the whole hero scene is the TV picture */
#scene{background:#0a0823;filter:hue-rotate(var(--hue,0deg)) invert(var(--inv,0)) grayscale(var(--gray,0)) sepia(var(--sep,0)) saturate(var(--sat,1));
  transition:filter .3s;animation:sceneflick 3.1s infinite}
.tv img{filter:none}
.snow-full{-webkit-mask-image:none;mask-image:none;z-index:4;mix-blend-mode:hard-light}
@keyframes sceneflick{
  0%,100%{opacity:1} 5%{opacity:.86} 7%{opacity:1} 31%{opacity:.93} 33%{opacity:.78} 36%{opacity:1}
  58%{opacity:.95} 60%{opacity:.84} 62%{opacity:1} 84%{opacity:.9} 86%{opacity:1}}
@media (prefers-reduced-motion:reduce){#scene{animation:none}}

/* ---- details: icon focus ---- */
.ico{position:absolute;left:0;top:0;width:1728px;height:947px;pointer-events:none;
  transition:scale .6s cubic-bezier(.2,.8,.2,1),opacity .5s,filter .5s}
.ico>*{pointer-events:auto;cursor:pointer}
.ico.dim{opacity:.3;scale:.94;filter:grayscale(.7) blur(1.2px)}
.ico.on{scale:1.16;filter:drop-shadow(0 0 22px var(--g,#fff)) drop-shadow(0 0 48px var(--g,#fff));z-index:2}
#ic-sand.on{scale:1.1}
.grain{position:absolute;border-radius:50%;pointer-events:none;background:radial-gradient(circle,#fff6c9,#e0a85a)}
.card{transition:background .3s,color .3s,transform .3s}
.card.active{transform:translateX(-6px)}

/* ---- single-viewport deck: screens transition in place instead of scrolling ---- */
html{scroll-behavior:auto!important}
body{overflow-x:hidden}
.deck{position:fixed;inset:0;overflow:hidden;background:var(--bg)}
.runway{height:700vh}
.pin{position:absolute;inset:0}
.screen{position:absolute;inset:0;width:auto;height:auto}
.stage{left:0;top:0}
#home{transform-origin:48% 36%}
#details{transform-origin:48% 40%}
#details .panel,#details .flash{transition:none}
#dfg .panel{pointer-events:auto}
.dots{position:fixed;right:22px;top:50%;transform:translateY(-50%);z-index:50;display:flex;flex-direction:column;gap:14px}
.dots button{width:10px;height:10px;padding:0;border-radius:50%;border:1px solid rgba(255,255,255,.7);background:transparent;cursor:pointer;transition:all .3s}
.dots button.on{background:#fff;box-shadow:0 0 12px #fff;transform:scale(1.35)}
.dots button:hover{background:rgba(255,255,255,.5)}
#details .panel{opacity:1;transform:none}
.pin>.screen{position:absolute;top:0;inset:0}

/* ---- performance ---- */
#home,#details,#order,#dfg,#remote,#lid,#spot,#flood,#glow,#orderForm{will-change:transform,opacity}
#scene{filter:none;will-change:opacity}
#scene.look{filter:hue-rotate(var(--hue,0deg)) invert(var(--inv,0)) grayscale(var(--gray,0)) sepia(var(--sep,0)) saturate(var(--sat,1))}
#spot{mix-blend-mode:normal}
#glow{mix-blend-mode:normal}
.snow-full{mix-blend-mode:normal}
.ico.dim{opacity:.3;scale:.94;filter:none}
.ico.on{scale:1.16;filter:none;z-index:2}
.halo{position:absolute;border-radius:50%;pointer-events:none!important;cursor:default!important;opacity:0;transition:opacity .5s;
  background:radial-gradient(circle,var(--g,#fff) 0,transparent 68%)}
.ico.on .halo{opacity:.5}
.blur{will-change:auto}
.snow:not(.snow-full){display:none}

/* ---- sound toggle ---- */
.snd{position:fixed;left:20px;bottom:20px;z-index:50;width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.55);
  background:rgba(10,8,35,.55);color:#fff;display:grid;place-items:center;cursor:pointer;backdrop-filter:blur(4px);transition:background .2s,transform .2s}
.snd:hover{background:rgba(255,255,255,.18);transform:scale(1.06)}
.snd .x{display:none}.snd.muted .x{display:block}.snd.muted .w{display:none}
.snd-hint{position:fixed;left:76px;bottom:32px;z-index:50;font:400 14px 'Intel One Mono',monospace;color:#fff;opacity:.85;
  animation:hint 1.8s ease-in-out infinite;pointer-events:none;transition:opacity .4s}
.snd-hint.gone{opacity:0;animation:none}
@keyframes hint{50%{opacity:.35}}

/* hovering the can lifts the lid with it */
#lid{transition:translate .4s cubic-bezier(.2,.8,.2,1),scale .4s cubic-bezier(.2,.8,.2,1),filter .4s}
#home.can-hover #lid{translate:0 -8px;scale:1.02;filter:drop-shadow(0 0 30px rgba(244,231,73,.45))!important}
