html:root{--ix-accent:#ff8a1f;--ix-accent-hi:#ffb35e;--ix-accent-down:#e5761a}
/* ===== Walbi · Halloween Edition layer ===== */


:root{
  --hw-night:#0b0807;--hw-night-2:#120c0a;--hw-pumpkin:#ff8a1f;--hw-pumpkin-hi:#ffb35e;--hw-pumpkin-down:#e5761a;
  --hw-blood:#e0483c;--hw-moss:#86c27e;--hw-bone:#f3e8d6;--hw-bone-2:#e9dcc6;
  /* re-skin the real design tokens */
  --ix-bg:#0b0807;--ix-surface:#110c0a;--ix-card:#16100d;--ix-border:#2b211b;
  --ix-text:#f3e8d6;--ix-muted:#a79886;--ix-muted-2:#6e6154;
  --ix-accent:#ff8a1f;--ix-accent-hi:#ffad55;--ix-accent-down:#e5761a;
  --ix-gain:#86c27e;--ix-loss:#e0483c;
  --ix-l-bg:#f3e8d6;--ix-l-card:#fbf4e8;--ix-l-border:#dccbb0;--ix-l-text:#1c130e;--ix-l-muted:#6c5a48;
}
html,body{background:var(--hw-night)!important}
::selection{background:var(--hw-pumpkin);color:var(--hw-night)}

/* ---- buttons ---- */
html .ix-btn-primary{background:linear-gradient(180deg,#ff9a38,#ff7a12);color:#1a0d04;box-shadow:0 0 0 1px #ffb35e55 inset,0 6px 24px #ff8a1f40}
html .ix-btn-primary:hover{background:linear-gradient(180deg,#ffa64c,#ff8a1f);box-shadow:0 0 0 1px #ffd09055 inset,0 10px 40px #ff8a1f80,0 0 60px #ff8a1f40}
html .ix-btn-ghost{border-color:#3a2c23}
html .ix-btn-ghost:hover{border-color:var(--hw-pumpkin);color:var(--hw-pumpkin-hi);box-shadow:0 0 24px #ff8a1f30}
html .ix-btn-light{background:var(--hw-bone);color:#1a0d04}
.store-badge{border-color:#3a2c23!important}
.store-badge:hover{border-color:var(--hw-pumpkin)!important}

/* ---- nav ---- */
.ix-nav.ix-nav-sm:not(.ix-nav-clear),.ix-nav.ix-nav-scrolled{background:#0b0807c4!important;border-bottom-color:#2b211b!important}
.ix-nav-menu a:hover{color:var(--hw-pumpkin-hi)}

/* ================= HERO ================= */
.hw-hero{isolation:isolate;padding-bottom:0}
.hw-hero>.ix-container{position:relative;z-index:5}
.hw-sky{position:absolute;inset:0;z-index:-4;background:
  linear-gradient(180deg,#0b080700 0%,#0b080700 55%,#0b0807 96%),
  url(/halloween/img/moonsky.webp) -4% 0/150% auto no-repeat;background-color:#0b0807;opacity:.95}
.hw-moonglow{position:absolute;z-index:-3;left:50%;top:-2%;width:760px;height:760px;transform:translateX(-50%);border-radius:50%;
  background:radial-gradient(circle,#ffe9c433 0,#ff8a1f1c 35%,transparent 66%);pointer-events:none}
.hw-stars{position:absolute;inset:0 0 40% 0;z-index:-3;pointer-events:none;background-image:
  radial-gradient(1px 1px at 12% 18%,#fff9 50%,transparent 51%),radial-gradient(1px 1px at 28% 8%,#fff7 50%,transparent 51%),
  radial-gradient(1.5px 1.5px at 72% 14%,#fffb 50%,transparent 51%),radial-gradient(1px 1px at 86% 26%,#fff8 50%,transparent 51%),
  radial-gradient(1px 1px at 61% 30%,#fff6 50%,transparent 51%),radial-gradient(1.5px 1.5px at 8% 36%,#fff9 50%,transparent 51%),
  radial-gradient(1px 1px at 92% 6%,#fff8 50%,transparent 51%),radial-gradient(1px 1px at 44% 4%,#fff7 50%,transparent 51%)}
.hero-glow{background:radial-gradient(#ff8a1f30,#0000 62%)!important}
.hw-hero .hero-copy h1{color:var(--hw-bone);text-shadow:0 2px 30px #000c,0 0 2px #000}
.hw-hero .hero-copy h1 .accent{color:var(--hw-pumpkin);text-shadow:0 0 18px #ff8a1f99,0 0 52px #ff5a1f66}
.hw-hero .hero-copy .sub{color:#d6c7b3;text-shadow:0 1px 14px #000}

.hw-badge{display:inline-flex;align-items:center;gap:9px;margin:0 auto 22px;padding:7px 15px 7px 9px;border-radius:999px;
  background:#1a110bcc;border:1px solid #ff8a1f55;color:var(--hw-bone);font:600 .82rem/1 var(--ix-font);letter-spacing:.02em;cursor:pointer;
  box-shadow:0 0 30px #ff8a1f26,inset 0 0 12px #ff8a1f14;backdrop-filter:blur(6px);transition:transform .2s,box-shadow .2s}
.hw-badge:hover{transform:translateY(-1px) scale(1.02);box-shadow:0 0 40px #ff8a1f55}
.hw-badge .hw-pumpkin{width:26px;height:26px;filter:drop-shadow(0 0 8px #ff8a1f99)}
.hw-badge-sep{color:#ff8a1f88}
.hw-badge-hi{color:var(--hw-pumpkin-hi)}

/* Fog. Review 30.10: the old layers animated background-position under mix-blend-mode, which repainted the whole band
   every frame (the graveyard ran at ~42 fps on an M-series Mac). Now the wrapper is static (soft mask on all four sides,
   blend mode) and only its ::before moves, by transform, so the scroll stays on the compositor. fog.webp is a seamless
   tile and the layer travels exactly one tile width (--hw-fog-w) per loop, so neither a seam nor a loop jump shows. */
.hw-fog{--hw-fog-w:1600px;--hw-fog-dur:80s;position:absolute;left:0;right:0;overflow:hidden;pointer-events:none;mix-blend-mode:screen;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 35%,#000 65%,transparent),linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
  -webkit-mask-composite:source-in;
          mask-image:linear-gradient(180deg,transparent,#000 35%,#000 65%,transparent),linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
          mask-composite:intersect}
.hw-fog:before{content:"";position:absolute;top:0;bottom:0;left:0;width:calc(100% + var(--hw-fog-w));
  background:url(/halloween/img/fog.webp) 0 100%/var(--hw-fog-w) 100% repeat-x;will-change:transform;
  animation:hw-fog var(--hw-fog-dur) linear infinite var(--hw-fog-dir,normal)}
.hw-hero .hw-fog-a{z-index:6;bottom:0;height:260px;opacity:.38;--hw-fog-dur:70s}
.hw-hero .hw-fog-b{z-index:-2;bottom:30%;height:300px;opacity:.22;--hw-fog-dur:120s;--hw-fog-dir:reverse;--hw-fog-w:2200px}
@keyframes hw-fog{to{transform:translate3d(calc(-1 * var(--hw-fog-w)),0,0)}}

.hw-dark{position:absolute;inset:0;z-index:-1;pointer-events:none;background:#050302;opacity:.5;
  -webkit-mask-image:radial-gradient(circle at var(--hw-mx,50%) var(--hw-my,30%),transparent 0,transparent 90px,#000 340px);
          mask-image:radial-gradient(circle at var(--hw-mx,50%) var(--hw-my,30%),transparent 0,transparent 90px,#000 340px)}

.hw-spider{position:absolute;top:0;right:15%;z-index:7;width:44px;cursor:pointer;transform-origin:50% 0;animation:hw-dangle 5s ease-in-out infinite}
.hw-spider .hw-thread{display:block;width:1px;height:var(--hw-th,170px);margin:0 auto;background:linear-gradient(#f3e8d600,#f3e8d688);transition:height 1.2s cubic-bezier(.5,.05,.05,.99)}
.hw-spider svg{display:block;width:44px;height:44px;margin-top:-4px;filter:drop-shadow(0 0 6px #ff8a1f55)}
.hw-spider:hover{--hw-th:40px}
@keyframes hw-dangle{0%,100%{transform:rotate(3deg)}50%{transform:rotate(-3deg)}}


/* hero app screenshot */
.term{box-shadow:0 40px 120px #000000a0,0 0 90px #ff8a1f26!important}
html.js-anim .term:before{background:conic-gradient(from var(--term-blik-a,90deg),#2b211b 0deg,#2b211b 72deg,#ff8a1fb3 92deg,#ffe2bd 101deg,#ff8a1fb3 110deg,#2b211b 130deg,#2b211b 360deg)!important}
.hw-hero .term:after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;border-radius:inherit;background:linear-gradient(180deg,#ff8a1f12,transparent 30%)}

/* ticker */
.ticker{background:#0d0907!important;border-color:#2b211b!important}
.ticker .sym{color:var(--hw-bone)}

/* stats */
.stats .stat .num .accent{color:var(--hw-pumpkin)!important}
.stat+.stat{border-left-color:#2b211b!important}

/* ================= SHARED ================= */
.hw-head{text-align:center;max-width:760px;margin:0 auto 56px}
.hw-kicker{display:inline-block;font:600 .72rem/1.55 var(--ix-font);letter-spacing:.09em;text-transform:uppercase;color:var(--hw-pumpkin)}
.hw-kicker:before,.hw-kicker:after{content:none}
.hw-head h2,.hw-cta h2{margin:14px 0 0;font-size:clamp(2rem,4vw,3.1rem);line-height:1.06;letter-spacing:-.03em;color:var(--hw-bone);font-weight:700}
.hw-sub{color:var(--ix-muted);font-size:1.05rem;line-height:1.55;margin:14px auto 0;max-width:58ch}
.hw-sub b{color:var(--hw-bone)}
.hw-blood{color:var(--hw-blood);text-shadow:0 0 30px #e0483c55}
.hw-rise{opacity:1}
html.hw-anim .hw-rise{opacity:0;transform:translateY(26px);transition:opacity .9s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.22,1,.36,1)}
html.hw-anim .hw-rise.in{opacity:1;transform:none}

/* ================= SCARY DAYS ================= */
.hw-scary{position:relative;padding:120px 0 110px;overflow:hidden;
  background:radial-gradient(ellipse 70% 50% at 50% 0,#e0483c1f,transparent 70%),radial-gradient(ellipse 40% 40% at 85% 80%,#ff8a1f12,transparent 70%),var(--hw-night)}
.hw-scary:before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,#e0483c88,transparent)}
.hw-scary-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:22px;align-items:stretch}
.hw-crash{margin:0;position:relative;border-radius:22px;padding:24px 24px 20px;background:linear-gradient(180deg,#1a0f0d,#120b09);border:1px solid #3a1d19;
  box-shadow:0 30px 80px #0008,inset 0 1px 0 #ffffff08;display:flex;flex-direction:column;overflow:hidden}
.hw-crash-top{display:flex;justify-content:space-between;align-items:flex-start}
.hw-crash-sym{display:inline-flex;align-items:center;gap:9px;color:var(--ix-muted);font-weight:600;font-size:.9rem}
.hw-crash-sym i{width:9px;height:9px;border-radius:50%;background:var(--hw-blood);box-shadow:0 0 8px #e0483c}
.hw-crash-val{font-size:clamp(3.4rem,7vw,5.6rem);font-weight:600;letter-spacing:-.03em;line-height:.9;color:var(--hw-blood);text-shadow:0 0 40px #e0483c66;font-variant-numeric:tabular-nums}
.hw-crash-svg{width:100%;height:auto;aspect-ratio:2/1;flex:1;margin-top:14px;display:block;min-height:180px}
.hw-crash-line{stroke-dasharray:1200;stroke-dashoffset:0}
html.hw-anim .hw-crash:not(.in) .hw-crash-line{stroke-dashoffset:1200}
html.hw-anim .hw-crash.in .hw-crash-line{transition:stroke-dashoffset 2.4s cubic-bezier(.6,.05,.3,1) .2s}
html.hw-anim .hw-crash:not(.in) .hw-crash-area,html.hw-anim .hw-crash:not(.in) .hw-crash-dot{opacity:0}
html.hw-anim .hw-crash.in .hw-crash-area{transition:opacity 1s 1.8s}
html.hw-anim .hw-crash.in .hw-crash-dot{transition:opacity .3s 2.5s}
.hw-crash figcaption{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-top:12px;flex-wrap:wrap}
.hw-crash-tomb{font:700 1rem/1.55 var(--ix-font);letter-spacing:-.02em;color:var(--hw-bone);opacity:.92}
.hw-crash-note{color:var(--ix-muted-2);font-size:.76rem}
.hw-metrics{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.hw-metric{position:relative;border-radius:18px;padding:20px 20px 18px;background:linear-gradient(180deg,#17100d,#120c0a);border:1px solid #2b211b;overflow:hidden;transition:border-color .3s,transform .3s}
.hw-metric:hover{border-color:#ff8a1f66;transform:translateY(-3px)}
.hw-metric:after{content:"";position:absolute;right:-40px;top:-40px;width:120px;height:120px;border-radius:50%;background:radial-gradient(#ff8a1f22,transparent 70%)}
.hw-metric-num{font-size:clamp(2rem,3.6vw,2.9rem);font-weight:600;letter-spacing:-.02em;color:var(--hw-pumpkin);font-variant-numeric:tabular-nums;line-height:1}
.hw-metric-lbl{color:var(--hw-bone);font-size:.9rem;margin-top:8px;font-weight:400}
.hw-bars{display:flex;flex-direction:column;gap:5px;margin-top:14px}
.hw-bars span{display:block;height:6px;border-radius:4px}
.hw-bar-n{background:#4a3b31;width:calc(100% / var(--hw-r,1.8))}
.hw-bar-s{background:linear-gradient(90deg,#ff8a1f,#e0483c);width:100%;transform-origin:0 50%}
html.hw-anim .hw-metric:not(.in) .hw-bar-s{transform:scaleX(.56)}
html.hw-anim .hw-metric.in .hw-bar-s{transition:transform 1.6s cubic-bezier(.22,1,.36,1) .3s}
.hw-metric-ai{grid-column:1/-1;background:linear-gradient(160deg,#2a160a,#140c08);border-color:#ff8a1f55;box-shadow:0 0 40px #ff8a1f1a}
.hw-metric-ai .hw-metric-lbl:after{content:"Agents don't panic";display:block;color:var(--ix-muted);font-size:.74rem;font-weight:400;margin-top:3px}
.hw-legend{display:flex;flex-direction:column;justify-content:center;gap:10px;padding:0 6px;color:var(--ix-muted);font-size:.82rem}
.hw-legend span{display:flex;align-items:center;gap:10px}
.hw-legend i{display:inline-block;width:26px;height:6px;border-radius:4px}
.hw-legend i.hw-bar-n{width:26px}
.hw-source{margin:26px auto 0;text-align:center;color:var(--ix-muted-2);font-size:.78rem;max-width:70ch}

/* ================= LIGHT SHEETS → bone/parchment ================= */
.sheet{background-color:var(--hw-bone)!important;background-image:
  radial-gradient(ellipse at 0 0,#d9c4a255,transparent 40%),radial-gradient(ellipse at 100% 100%,#d9c4a266,transparent 45%),
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .25 0 0 0 0 .15 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")!important;
  box-shadow:inset 0 0 120px #b8996a40;overflow:hidden}
.sheet>*{position:relative;z-index:1}
.sec-item svg,.what-sheet svg{color:var(--hw-pumpkin-down)!important}
.sheet .sec-item{border-left-color:#d4c09f!important}
.faq-item summary:after{color:var(--hw-pumpkin-down)!important}

/* marketplace */
.mkt-card{background:linear-gradient(180deg,#18110d,#120c0a)!important;border-color:#2e231c!important;position:relative;overflow:hidden}
.mkt-card:before{content:"";position:absolute;inset:auto -30% -60% -30%;height:120px;background:radial-gradient(ellipse,#ff8a1f1c,transparent 70%);pointer-events:none;transition:opacity .3s;opacity:0}
.mkt-card:hover{border-color:#ff8a1f77!important;box-shadow:0 18px 60px #ff8a1f26,0 0 0 1px #ff8a1f33!important}
.mkt-card:hover:before{opacity:1}

/* recog / roadmap / social tweaks */
.recog{border-top-color:#2b211b!important}
.ix-footer{background:var(--hw-night)!important;border-top-color:#2b211b!important;position:relative}
.ix-footer-wordmark svg{color:#1d1410!important;transition:color 1.2s}
.ix-footer:hover .ix-footer-wordmark svg{color:#2b1a10!important}
.ix-footer-badge{color:var(--hw-pumpkin-hi)!important;background:#ff8a1f1a!important;border-color:#ff8a1f66!important}
.ix-footer-brand a{color:var(--hw-pumpkin-hi)!important}

/* ================= GRAVEYARD ================= */
.hw-graveyard{position:relative;isolation:isolate;padding:130px 0 0;overflow:hidden;min-height:820px;background:var(--hw-night)}
/* review 30.10: the picture used to start with a hard line (moon and trees cut at the top). An eased mask now fades it
   in from the dark section above and out again at the bottom, instead of a short linear overlay. */
.hw-gy-bg{position:absolute;inset:0;z-index:-3;background:url(/halloween/img/graveyard.webp) center 30%/cover no-repeat;opacity:.85;
  -webkit-mask-image:linear-gradient(180deg,transparent 0%,#0000001a 10%,#00000059 20%,#000000b3 30%,#000 42%,#000 62%,#00000080 80%,transparent 100%);
          mask-image:linear-gradient(180deg,transparent 0%,#0000001a 10%,#00000059 20%,#000000b3 30%,#000 42%,#000 62%,#00000080 80%,transparent 100%)}
.hw-gy-fog{z-index:3;bottom:0;height:240px;opacity:.42}
.hw-gy-dark{position:absolute;inset:0;z-index:-1;pointer-events:none;background:#050302;opacity:.55;
  -webkit-mask-image:radial-gradient(circle at var(--hw-gx,50%) var(--hw-gy,70%),transparent 0,transparent 110px,#000 380px);
          mask-image:radial-gradient(circle at var(--hw-gx,50%) var(--hw-gy,70%),transparent 0,transparent 110px,#000 380px)}
.hw-gy-inner{position:relative;z-index:2}
.hw-graveyard .hw-head h2{text-shadow:0 4px 40px #000}
.hw-graveyard .hw-sub{color:#cdbca6;text-shadow:0 1px 12px #000}
.hw-stones{position:relative;display:grid;grid-template-columns:repeat(6,1fr);gap:18px;align-items:end;padding:40px 0 0;
  /* review 30.10: was overflow:hidden, which cut the hover tilt, glow and shadows. Clip only below the ground line
     (with room for the shadow), which is all the rise-from-the-ground animation needs. */
  clip-path:inset(-400px -400px -36px -400px)}
.hw-stone{all:unset;box-sizing:border-box;position:relative;display:flex;flex-direction:column;align-items:center;cursor:pointer;
  transform:translateY(var(--hw-sink,0));transition:transform 1.3s cubic-bezier(.2,.9,.25,1.05) calc(var(--d)*.12s)}
html.hw-anim .hw-stones:not(.in) .hw-stone{--hw-sink:115%}
.hw-stone:focus-visible .hw-stone-body{outline:2px solid var(--hw-pumpkin);outline-offset:4px}
.hw-stone-body{position:relative;width:100%;max-width:200px;aspect-ratio:.72;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;
  padding:26% 10px 12px;text-align:center;border-radius:48% 48% 6px 6px/36% 36% 6px 6px;
  background:
    radial-gradient(ellipse at 30% 18%,#ffffff1a,transparent 45%),
    linear-gradient(180deg,#8a817a 0%,#6c645e 45%,#4b4440 100%);
  box-shadow:inset 0 -18px 30px #0007,inset 6px 0 14px #ffffff10,inset -8px 0 18px #0006,0 20px 40px #000c;
  transition:transform .5s cubic-bezier(.2,.9,.25,1.2),box-shadow .5s,filter .5s;transform-origin:50% 100%}
.hw-stone-body:before{content:"";position:absolute;inset:0;border-radius:inherit;opacity:.5;mix-blend-mode:overlay;pointer-events:none;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E")}
.hw-stone-body:after{content:"";position:absolute;left:-4%;right:-4%;bottom:-2px;height:22%;border-radius:0 0 6px 6px;pointer-events:none;
  background:linear-gradient(180deg,transparent,#3d522c55 60%,#2f4221aa);filter:blur(1.5px)}
.hw-stone-tall .hw-stone-body{aspect-ratio:.6;border-radius:12px 12px 6px 6px;padding-top:42%}
.hw-stone-square .hw-stone-body{aspect-ratio:.82;border-radius:16px 16px 6px 6px}
.hw-stone-cross .hw-stone-body{border-radius:50% 50% 6px 6px/42% 42% 6px 6px}
.hw-rip{font:700 clamp(1rem,1.7vw,1.5rem)/1 var(--ix-font);letter-spacing:.09em;color:#2b2522;text-shadow:0 1px 0 #ffffff26,0 -1px 0 #0005}
.hw-stone-name{margin-top:8px;font:600 clamp(.7rem,.95vw,.86rem)/1.15 var(--ix-font);color:#e9dcc6}
.hw-here{margin-top:10px;font:500 clamp(.6rem,.78vw,.72rem)/1.3 var(--ix-font);color:#2b2522;text-shadow:0 1px 0 #ffffff1f}
.hw-epi{margin-top:6px;font:700 clamp(.82rem,1.2vw,1.08rem)/1.1 var(--ix-font);color:#b82a1d;text-shadow:0 1px 0 #ffffff22;letter-spacing:-.01em;padding:0 4px}
.hw-date{margin-top:6px;font:500 clamp(.56rem,.7vw,.66rem)/1.3 var(--ix-font);color:#2b2522;text-shadow:0 1px 0 #ffffff1a}
.hw-mound{display:block;width:120%;height:26px;margin-top:-12px;border-radius:50%;background:radial-gradient(ellipse at 50% 30%,#2a1d14,#120b07 70%);box-shadow:0 -2px 8px #0008}
.hw-stone:hover .hw-stone-body,.hw-stone:focus-visible .hw-stone-body{transform:rotate(-3deg) translateY(-8px);
  box-shadow:inset 0 -18px 30px #0007,inset 6px 0 14px #ffffff10,inset -8px 0 18px #0006,0 20px 40px #000c,0 0 60px #ff8a1f55;filter:brightness(1.12)}
.hw-stone:nth-child(even):hover .hw-stone-body{transform:rotate(3deg) translateY(-8px)}
.hw-stone-ours .hw-stone-body{background:radial-gradient(ellipse at 30% 18%,#ffffff22,transparent 45%),linear-gradient(180deg,#7a706a,#5d5550 45%,#433c38);
  box-shadow:inset 0 -18px 30px #0007,inset -8px 0 18px #0006,0 20px 40px #000c,0 0 60px #ff8a1f55}
.hw-stone-ours .hw-stone-name{color:var(--hw-pumpkin-hi)}
.hw-stone-ours .hw-date{color:#1d1612;font-weight:700}
.hw-stone .hw-ghostling{position:absolute;left:50%;top:0;width:56px;pointer-events:none;opacity:0;transform:translate(-50%,0)}
.hw-stone .hw-ghostling.go{animation:hw-ghost-rise 2.2s ease-out forwards}
@keyframes hw-ghost-rise{0%{opacity:0;transform:translate(-50%,10px) scale(.6)}20%{opacity:.95}100%{opacity:0;transform:translate(-50%,-150px) scale(1.15) rotate(-8deg)}}
.hw-gy-ground{height:90px;margin-top:-40px;position:relative;z-index:-1;background:linear-gradient(180deg,transparent,#0b0807 70%)}

/* lightbox */
.hw-lightbox{position:fixed;inset:0;z-index:9995;display:flex;flex-direction:column;gap:18px;align-items:center;justify-content:center;
  width:100%;height:100%;max-width:none;max-height:none;margin:0;border:0;padding:24px;color:var(--hw-bone);background:#050302e6;backdrop-filter:blur(8px)}
.hw-lightbox:not([open]){display:none}
.hw-lightbox::backdrop{background:transparent}
html:has(.hw-lightbox[open]){overflow:hidden}
.hw-lightbox img{width:auto;height:auto;max-width:min(620px,92vw);max-height:calc(86vh - 72px);border-radius:18px;box-shadow:0 30px 120px #000,0 0 80px #ff8a1f33;animation:hw-pop .45s cubic-bezier(.2,.9,.25,1.2)}
.hw-lb-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.hw-lb-share{border:1px solid #ffffff38;background:transparent;color:var(--hw-bone)}
/* close = the burger's own "open" (cross) state, in the same spot as the nav burger */
.hw-lightbox .hw-lb-close{position:absolute;top:12px;right:32px;display:flex}
.hw-lb-close span{pointer-events:none}
.hw-lb-close span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.hw-lb-close span:nth-child(2){opacity:0}
.hw-lb-close span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
@keyframes hw-pop{from{transform:scale(.85) translateY(20px);opacity:0}}


/* final CTA */
.finalcta{position:relative;overflow:hidden;background:
  radial-gradient(ellipse 80% 90% at 50% 120%,#ffb35e 0,#ff8a1f 35%,#c2361f 75%,#5a1410 100%)!important}
.finalcta:before{content:"";position:absolute;left:0;right:0;bottom:0;height:45%;pointer-events:none;
  --hw-fog-w:1400px;background:url(/halloween/img/fog.webp) 0 100%/var(--hw-fog-w) 100% repeat-x;opacity:.18;mix-blend-mode:screen}
.finalcta h2{color:#1a0b03!important;text-shadow:0 1px 0 #ffffff33}
.hw-final-sub{color:#2b1206;font-size:1.05rem;margin:14px auto 0;font-weight:400;max-width:46ch}
html .finalcta .ix-btn-light{background:#1a0b03;color:var(--hw-pumpkin-hi)}
html .finalcta .ix-btn-light:hover{box-shadow:0 10px 40px #1a0b0388,0 0 30px #ffd27a55}
.hw-final-deco{display:flex;justify-content:center;margin-bottom:14px}
.hw-jack{width:110px;height:100px;filter:drop-shadow(0 8px 24px #5a141088)}
.hw-jack-face{filter:drop-shadow(0 0 6px #ffd27a)}
.finalcta .finalcta-inner{position:relative;z-index:1}

/* ================= AMBIENT ================= */

/* ================= RESPONSIVE ================= */
@media (max-width:991px){
  .hw-scary-grid{grid-template-columns:1fr}
  .hw-stones{grid-template-columns:repeat(3,1fr);row-gap:34px}
  .hw-graveyard{min-height:0;padding-bottom:30px}
  .hw-spider{right:8%}
}
@media (max-width:640px){
  .hw-badge{font-size:.72rem;padding:6px 12px 6px 7px;gap:7px}
  .hw-badge .hw-pumpkin{width:22px;height:22px}
  .hw-scary{padding:84px 0 80px}
  .hw-head{margin-bottom:38px}
  .hw-metrics{grid-template-columns:1fr 1fr;gap:10px}
  .hw-metric{padding:16px 14px 14px}
  .hw-metric-lbl{font-size:.8rem}
  .hw-metric-ai{grid-column:1/-1}
  .hw-legend{grid-column:1/-1;flex-direction:row;justify-content:center;gap:18px}
  .hw-crash{padding:18px 16px 16px}
  .hw-crash-svg{min-height:140px}
  .hw-stones{grid-template-columns:repeat(2,1fr);gap:16px;row-gap:28px}
  .hw-stone-body{max-width:170px}
  .hw-rip{font-size:1.15rem}.hw-stone-name{font-size:.8rem}.hw-here{font-size:.68rem}.hw-epi{font-size:.98rem}.hw-date{font-size:.62rem}
  .hw-graveyard{padding-top:90px}
  .hw-gy-bg{background:url(/halloween/img/graveyard.webp) 22% 30%/auto 70% no-repeat;
    -webkit-mask-image:linear-gradient(180deg,transparent 9%,#00000059 18%,#000 32%,#000 62%,transparent 80%);
            mask-image:linear-gradient(180deg,transparent 9%,#00000059 18%,#000 32%,#000 62%,transparent 80%)}
  .hw-spider{right:6%;--hw-th:110px}
  .hw-hero .hw-fog-a{height:160px}
}

/* ================= REDUCED MOTION ================= */
@media (prefers-reduced-motion:reduce){
  .hw-fog:before,.hw-spider{animation:none!important}
  html.hw-anim .hw-rise,.hw-stone,.hw-stone-body,.hw-live-stone{transition:none!important;opacity:1!important;transform:none!important}
  html.hw-anim .hw-stones .hw-stone{--hw-sink:0!important}
  .hw-crash-line{stroke-dashoffset:0!important}
  .hw-crash-area,.hw-crash-dot{opacity:1!important}
}


/* ================= FINAL 30.10 ================= */
/* game slot: size reserved up front, so the game mounting causes no layout shift */
.hw-game{position:relative;padding:96px 0 88px;background:radial-gradient(ellipse 60% 50% at 50% 0%,#ff8a1f12,transparent 70%),var(--hw-night)}
.hw-game:before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,#ff8a1f66,transparent)}
.hw-game .hw-head{text-align:center;margin-bottom:34px}
.hw-game-frame{position:relative;max-width:1100px;margin:0 auto;aspect-ratio:16/9;border-radius:22px;overflow:hidden;
  border:1px solid #3a2c23;background:radial-gradient(ellipse at 50% 30%,#1c120c,#0b0807 70%);box-shadow:0 30px 80px #000a,0 0 0 1px #ff8a1f14 inset}
.hw-game-frame>canvas{display:block;width:100%;height:100%;image-rendering:pixelated;touch-action:none}


/* 6: badge always readable above the hero toasts and the moon */
.hw-badge{position:relative;z-index:6}

/* hover vs tap copy */
.hw-coarse{display:none}
.hw-swipe{display:none}
@media (hover:none){.hw-fine{display:none}.hw-coarse{display:inline}}


@media (max-width:640px){
  .hw-game{padding:72px 0 64px}
  .hw-game .hw-head{margin-bottom:22px}
  .hw-game-frame{aspect-ratio:3/4;border-radius:18px}
  .hw-badge{background:#140d09f5;box-shadow:0 6px 24px #000c}
  /* 4: graveyard = one readable stone per screen, swipe */
  .hw-stones{display:flex;grid-template-columns:none;gap:14px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;
    margin:0 -16px;padding:34px 16px 10px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .hw-stones::-webkit-scrollbar{display:none}
  .hw-stone{flex:0 0 64%;scroll-snap-align:center}
  .hw-stone-body{max-width:none}
  .hw-rip{font-size:1.7rem}
  .hw-stone-name{font-size:1.05rem;margin-top:10px}
  .hw-here{font-size:.9rem;margin-top:12px;padding:0 10px}
  .hw-epi{font-size:1.35rem;margin-top:8px}
  .hw-date{font-size:.875rem;margin-top:8px;padding:0 10px}
  .hw-swipe{display:block;text-align:center;margin-top:14px;color:var(--ix-muted);font-size:.8rem}
}

/* ===== hw patch 1 (Ann, 30.10 after preview QA) — append to the end of halloween.css ===== */

/* A. "Agents don't panic" was hardcoded in CSS (::after) -> untranslated on all locales.
      Now it's markup: <div class="hw-metric-sub" data-hw-t="scary.m_ai_sub">Agents don't panic</div> after .hw-metric-lbl in the AI metric */
.hw-metric-ai .hw-metric-lbl:after{content:none}
.hw-metric-sub{color:var(--ix-muted);font-size:.74rem;font-weight:400;margin-top:3px}




/* C. Desktop graveyard: stone copy was ~11px, long DE/RU lines got tiny */
@media (min-width:992px){
  .hw-stone-body{max-width:215px}
  .hw-stone-name{font-size:.92rem}
  .hw-here{font-size:.8rem;padding:0 8px}
  .hw-epi{font-size:1.1rem}
  .hw-date{font-size:.74rem;padding:0 8px}
  .hw-epi{hyphens:auto;overflow-wrap:break-word;max-width:100%;padding:0 8px;box-sizing:border-box}
}

@media (max-width:640px){
  /* D. Badge: RU/PT/ID split into two stacked columns. One line: pumpkin + highlight only */
  .hw-badge{white-space:nowrap;max-width:calc(100vw - 32px)}
  .hw-badge>span:not(.hw-badge-hi),.hw-badge-sep{display:none}
  .hw-badge-hi{overflow:hidden;text-overflow:ellipsis}
  /* E. Long kickers ("HALLOWEEN GAME · UNTIL 8 NOVEMBER") wrapped into the side rules */
  .hw-kicker{line-height:1.6;letter-spacing:.14em;max-width:100%}
}

/* The sky is the LCP element; index.astro preloads moonsky.webp for every width. */
@media (max-width:640px){
  /* review 30.10: the sky used to end a third of the way down (150% wide = ~310px tall) with a hard line. It now
     covers the whole hero down to the ticker, scaled proportionally, cropped from the sides around the moon. */
  .hw-sky{background:
    linear-gradient(180deg,#0b080700 0%,#0b080700 55%,#0b0807 96%),
    url(/halloween/img/moonsky.webp) 36% 0/cover no-repeat;background-color:#0b0807}
}

/* Kolya, 30.10 (Vlad's review): lead paragraphs were left-aligned blocks (site CSS zeroes p margins). */
.hw-head .hw-sub{margin-left:auto;margin-right:auto}

/* "Halloween game" item in the homepage nav, jumps to #hw-game. Review 30.10: a plain menu item, only tinted orange. */
.ix-nav-menu a.hw-nav-link{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;color:var(--hw-pumpkin)}
.ix-nav-menu a.hw-nav-link:hover{color:var(--hw-pumpkin-hi)}

/* hw patch 2: 7 stones. Desktop grid was repeat(6,1fr) */
.hw-stones{grid-template-columns:repeat(7,1fr);gap:14px}
@media (min-width:992px){
  /* narrower columns -> taller stones so long DE/RU lines and the date fit */
  .hw-stone-body{aspect-ratio:.62}
  .hw-stone-square .hw-stone-body{aspect-ratio:.7}
  .hw-stone-tall .hw-stone-body{aspect-ratio:.54}
}
@media (max-width:991px){.hw-stones{grid-template-columns:repeat(4,1fr)}}
/* <=640px stays the swipe row from patch 1, nothing to change */
/* Vlad review 30.10: the site's reset `.ix-page :where(p, figure, ...){margin:0;padding:0}` has the same weight as
   the plain classes above and comes later, so it cancelled these spacings. Restate them one level stronger. */
.ix-page .hw-sub{margin:14px auto 0;text-wrap:balance}
.ix-page .hw-source{margin:26px auto 0}
.ix-page .hw-final-sub{margin:14px auto 0;text-wrap:balance}
.ix-page .hw-crash{padding:24px 24px 20px}
@media (max-width:640px){.ix-page .hw-crash{padding:18px 16px 16px}}
/* same tracking as the site's .sec-head h2 (the site's .ix-page h2 rule comes later with equal weight) */
.ix-page .hw-head h2{letter-spacing:-.03em}
