:root{
  --bg:#13050e;
  --bg2:#1d0816;
  --ink:#ff7eb6;
  --hot:#ff3d84;
  --soft:#ffd3e6;
  --dim:#8c4d6e;
  --gold:#ffd27a;
  --lilac:#c9a2ff;
  --line:#3a1430;
  --mono:"PT Mono", ui-monospace, Menlo, Consolas, monospace;
  --pixel:"Pixelify Sans", "PT Mono", ui-monospace, monospace;
  --top:env(safe-area-inset-top,0px);
  --bot:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%;margin:0}
body{
  overflow:hidden;
  background:radial-gradient(ellipse at 50% 40%,#2a0b20 0%,var(--bg) 65%) fixed,var(--bg);
  color:var(--ink);font-family:var(--mono);
  font-size:clamp(14px,1.9vw,17px);line-height:1.5;
  text-shadow:0 0 6px rgba(255,126,182,.4);
  -webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;
}
::selection{background:var(--ink);color:var(--bg)}

/* ---------- фон и экран ---------- */
#rain{position:fixed;inset:0;width:100%;height:100%;opacity:0;transition:opacity 2.5s;pointer-events:none;z-index:0}
#rain.on{opacity:.26}
.crt{position:fixed;inset:0;pointer-events:none;z-index:20;
  background:repeating-linear-gradient(to bottom,rgba(0,0,0,0) 0 2px,rgba(0,0,0,.2) 2px 3px);
  box-shadow:inset 0 0 180px rgba(0,0,0,.85);animation:flick 7s infinite}
@keyframes flick{0%,97%,100%{opacity:1}98%{opacity:.85}99%{opacity:.95}}
body.flash::before{content:"";position:fixed;inset:0;z-index:19;pointer-events:none;
  background:repeating-linear-gradient(to bottom,rgba(255,126,182,.18) 0 3px,transparent 3px 9px);
  animation:flash .4s steps(4) both}
@keyframes flash{0%{opacity:1;transform:translateX(-6px)}50%{opacity:.6;transform:translateX(5px)}100%{opacity:0;transform:none}}

/* ---------- верхняя панель ---------- */
#bar{position:fixed;top:0;left:0;right:0;z-index:15;display:flex;align-items:center;gap:16px;
  padding:calc(var(--top) + 8px) 16px 8px;background:rgba(19,5,14,.9);
  border-bottom:1px solid var(--line);font-size:.82em;color:var(--dim);text-shadow:none;
  animation:barIn .6s ease-out both}
@keyframes barIn{from{transform:translateY(-100%)}}
#bar .who{color:var(--ink)}
.uptime{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.uptime b{color:var(--soft);font-weight:normal}
#dots{display:flex;gap:6px}
.dot{width:12px;height:12px;padding:0;border:1px solid var(--dim);background:transparent;cursor:pointer}
.dot.seen{border-color:var(--ink)}
.dot.cur{background:var(--ink);box-shadow:0 0 10px var(--ink)}
.dot:disabled{cursor:default;opacity:.4}
.dot:focus-visible,.snd:focus-visible{outline:2px solid var(--soft);outline-offset:2px}
.snd{font:inherit;color:var(--dim);background:none;border:1px solid var(--line);padding:2px 8px;cursor:pointer}
@media (max-width:640px){#bar{gap:10px;font-size:.74em}#bar .who{display:none}}

/* ---------- сцены ---------- */
.scene{position:fixed;inset:0;z-index:2;display:none;overflow-y:auto;overflow-x:hidden;
  -webkit-overflow-scrolling:touch;
  padding:calc(var(--top) + 24px) 18px calc(var(--bot) + 48px)}
body.authed .scene{padding-top:calc(var(--top) + 64px)}
.scene.active{display:block;animation:sceneIn .6s steps(6) both}
.scene.center.active{display:grid;place-items:center}
@keyframes sceneIn{
  0%{opacity:0;clip-path:inset(49% 0 49% 0)}
  35%{opacity:1;clip-path:inset(18% 0 30% 0)}
  100%{opacity:1;clip-path:inset(0 0 0 0)}}
.wrap{max-width:860px;margin:0 auto}
.log{white-space:pre-wrap;word-break:break-word}
.l{min-height:1.5em;white-space:pre-wrap;word-break:break-word}
.ok{color:var(--ink)}
.warn{color:var(--gold);text-shadow:0 0 6px rgba(255,210,122,.4)}
.err{color:#ff5c7a}
.dim{color:var(--dim);text-shadow:none}
.p{color:var(--gold)}
.cursor::after{content:"█";margin-left:1px;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}

.btn{font:inherit;font-size:1em;color:var(--bg);background:var(--ink);border:0;
  padding:.7em 1.5em;margin-top:1.4em;cursor:pointer;text-shadow:none;
  box-shadow:0 0 18px rgba(255,126,182,.45),inset 0 -3px 0 rgba(0,0,0,.2);
  transition:transform .15s,box-shadow .15s,background .15s}
.btn:hover{background:var(--soft);transform:translateY(-2px);box-shadow:0 0 30px rgba(255,126,182,.8)}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:2px solid var(--soft);outline-offset:3px}
.btn:disabled{opacity:.4;cursor:default;transform:none}
.btn.small{margin:0;padding:.35em .9em}

.tap{position:fixed;right:14px;bottom:calc(var(--bot) + 12px);z-index:16;color:var(--dim);
  font-size:.78em;text-shadow:none;opacity:0;transition:opacity .5s;pointer-events:none}
.tap.show{opacity:1}

/* ---------- глитч ---------- */
.glitch{position:relative;display:inline-block}
.glitch::before,.glitch::after{content:attr(data-text);position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none}
.glitch::before{color:#7ff6ff;text-shadow:none;animation:g1 2.8s infinite steps(1)}
.glitch::after{color:var(--hot);animation:g2 3.3s infinite steps(1)}
@keyframes g1{
  0%,84%,100%{clip-path:inset(0 0 100% 0);transform:none}
  86%{clip-path:inset(15% 0 60% 0);transform:translate(-4px,0)}
  90%{clip-path:inset(62% 0 8% 0);transform:translate(4px,0)}
  94%{clip-path:inset(38% 0 40% 0);transform:translate(-2px,0)}}
@keyframes g2{
  0%,78%,100%{clip-path:inset(0 0 100% 0);transform:none}
  80%{clip-path:inset(70% 0 5% 0);transform:translate(3px,0)}
  85%{clip-path:inset(10% 0 72% 0);transform:translate(-5px,0)}
  89%{clip-path:inset(45% 0 30% 0);transform:translate(2px,0)}}

/* ---------- вход ---------- */
.login{width:min(440px,100%);padding:34px 28px 28px;border:1px solid var(--line);
  background:rgba(29,8,22,.88);box-shadow:0 0 80px rgba(255,61,132,.15)}
.logo{font-family:var(--pixel);font-weight:700;font-size:clamp(2.8rem,10vw,4.2rem);line-height:1;color:var(--ink);
  text-shadow:0 0 16px rgba(255,126,182,.7)}
.ver{margin:.4em 0 1.6em;font-size:.85em}
.field{display:flex;align-items:center;gap:.7em;padding:.6em 0;border-bottom:1px solid var(--line)}
.lbl{color:var(--dim);text-shadow:none;min-width:5.6em}
.field input{flex:1;min-width:0;background:transparent;border:0;outline:0;color:var(--ink);
  font:inherit;font-size:1.1em;letter-spacing:.35em;caret-color:var(--ink)}
.field:focus-within{border-bottom-color:var(--ink)}
.msgline{margin-top:1em;min-height:3em}
.shake{animation:shake .45s}
@keyframes shake{20%{transform:translateX(-10px)}40%{transform:translateX(9px)}60%{transform:translateX(-6px)}80%{transform:translateX(4px)}}

/* ---------- взлом ---------- */
.breach{display:grid;grid-template-columns:1.55fr 1fr;gap:16px;max-width:1150px;margin:0 auto;
  height:calc(100dvh - 120px - var(--top) - var(--bot))}
.pane{display:flex;flex-direction:column;min-height:0;border:1px solid var(--line);background:rgba(19,5,14,.85)}
.ph{padding:6px 12px;border-bottom:1px solid var(--line);color:var(--dim);font-size:.82em;text-shadow:none}
.code{flex:1;margin:0;padding:14px 16px;overflow:auto;font:inherit;font-size:.92em;color:var(--soft);white-space:pre-wrap}
.t-kw{color:var(--gold)}
.t-str{color:#ffb3d4}
.t-com{color:var(--dim);text-shadow:none;font-style:italic}
.t-pre{color:var(--lilac)}
.t-con{color:var(--hot)}
.t-num{color:var(--hot)}
.t-fn{color:var(--ink)}
#bars{padding:4px 0 10px}
.pbar{margin:10px 12px 0}
.pbar .row{display:flex;justify-content:space-between;gap:8px;font-size:.82em}
.track{height:7px;margin-top:4px;background:#2a0d20}
.fill{height:100%;width:0;background:linear-gradient(90deg,var(--hot),var(--ink));box-shadow:0 0 10px var(--ink)}
.pbar.done .row span:first-child{color:var(--gold)}
.hex{flex:1;margin:0;padding:8px 12px;overflow:hidden;font:inherit;font-size:.78em;color:var(--dim);text-shadow:none}
.hx-hit{color:var(--gold);text-shadow:0 0 6px rgba(255,210,122,.5)}
.granted{position:fixed;inset:0;z-index:12;display:none;place-items:center;background:rgba(19,5,14,.75);
  font-family:var(--pixel);font-weight:700;font-size:clamp(2.4rem,9vw,6.5rem);color:var(--ink);
  text-shadow:0 0 30px rgba(255,61,132,.9);text-align:center;padding:20px}
.granted.show{display:grid;animation:zoomIn .5s steps(5) both}
@keyframes zoomIn{from{transform:scale(1.6);opacity:0}to{transform:none;opacity:1}}
@media (max-width:760px){
  .breach{grid-template-columns:1fr;grid-template-rows:1.3fr 1fr}
  .code{font-size:.78em}
}

/* ---------- сердце ---------- */
.heartwrap{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4vw;align-items:center;
  max-width:1200px;margin:0 auto;min-height:calc(100dvh - 130px - var(--top))}
.heart{margin:0;font:inherit;line-height:1;white-space:pre;
  font-size:clamp(7px,min(1.2vw,2.15dvh),17px);color:var(--ink);
  text-shadow:0 0 8px rgba(255,61,132,.85),0 0 22px rgba(255,61,132,.35);
  cursor:grab;user-select:none;-webkit-user-select:none;touch-action:none;
  animation:heartHue 5s ease-in-out infinite alternate}
.heart:active{cursor:grabbing}
@keyframes heartHue{to{color:#ff5c8f}}
.big22{font-family:var(--pixel);font-weight:700;font-size:clamp(6rem,17vw,13rem);line-height:.82;color:var(--ink);
  text-shadow:0 0 20px rgba(255,126,182,.75),0 0 70px rgba(255,61,132,.4);animation:boot22 1.6s steps(12) both}
@keyframes boot22{0%{opacity:0}20%{opacity:1}30%{opacity:.15}45%{opacity:1}55%{opacity:.4}100%{opacity:1}}
.hb{font-family:var(--pixel);font-weight:500;font-size:clamp(1.6rem,4vw,2.8rem);line-height:1.15;color:var(--soft);margin-top:.25em}
.age{margin:1em 0 .8em;color:var(--dim);text-shadow:none}
.age b{color:var(--soft);font-weight:normal;text-shadow:0 0 6px rgba(255,126,182,.4)}
.tip{color:var(--dim);text-shadow:none;font-size:.85em;max-width:36ch}
@media (max-width:860px){
  .heartwrap{grid-template-columns:1fr;justify-items:center;text-align:center;gap:18px;min-height:0}
  .heart{font-size:calc((100vw - 40px) / 38.6)}
  .tip{margin:0 auto}
}

/* ---------- письмо ---------- */
.fileh{font-family:var(--pixel);font-weight:700;font-size:clamp(1.6rem,4vw,2.2rem);color:var(--ink)}
.meta{color:var(--dim);text-shadow:none;margin:.4em 0 2.2em;font-size:.9em}
.para{display:grid;grid-template-columns:2.2em minmax(0,1fr);gap:.7em;margin:0 0 1.5em;max-width:74ch;
  animation:paraIn .4s ease-out both}
@keyframes paraIn{from{opacity:0;transform:translateX(-10px)}}
.para .em{font-size:1.45em;line-height:1.1;text-shadow:none}
.para .tx{color:var(--soft);line-height:1.7}
.para.final .tx{font-family:var(--pixel);font-weight:500;font-size:1.45em;line-height:1.35;color:var(--ink)}

/* ---------- дота ---------- */
.lead{color:var(--soft);max-width:60ch;margin:.6em 0 1.4em}
.mmr{font-family:var(--pixel);font-size:clamp(1.3rem,3.4vw,1.8rem);color:var(--gold);text-shadow:0 0 10px rgba(255,210,122,.5)}
.mmr b{display:inline-block;min-width:3ch}
.mmr b.bump{animation:bump .5s}
@keyframes bump{40%{transform:scale(1.35)}}
.pips{display:flex;gap:6px;margin:1em 0 0}
.pips span{width:28px;height:6px;background:var(--line)}
.pips span.on{background:var(--ink);box-shadow:0 0 8px var(--ink)}
.pips span.now{background:var(--dim)}
.q{font-size:1.15em;color:var(--soft);max-width:58ch;min-height:3.4em;margin:1.2em 0 1em}
.ans{display:flex;align-items:center;gap:.6em;max-width:560px;padding:.45em .6em .45em .9em;
  border:1px solid var(--line);background:rgba(19,5,14,.8)}
.ans:focus-within{border-color:var(--ink);box-shadow:0 0 18px rgba(255,126,182,.25)}
.ans input{flex:1;min-width:0;background:transparent;border:0;outline:0;color:var(--ink);font:inherit;caret-color:var(--ink)}
.qmsg{margin-top:1em;min-height:3em;max-width:60ch}

/* ---------- пабг ---------- */
.map{position:relative;width:100%;max-width:680px;aspect-ratio:4/3;margin:.4em 0 0;
  border:1px solid var(--line);overflow:hidden;box-shadow:0 0 40px rgba(255,61,132,.12)}
.map > svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.plane{position:absolute;left:-10%;top:10%;font-size:clamp(20px,4.5vw,30px);line-height:1;color:var(--soft);
  transform:translate(-50%,-50%) rotate(25.5deg);text-shadow:0 0 10px var(--ink);pointer-events:none}
.me{position:absolute;width:14px;height:14px;border-radius:50%;background:var(--gold);
  transform:translate(-50%,-50%);animation:ping 1.4s infinite}
.me::after{content:"ты";position:absolute;left:18px;top:-5px;color:var(--gold);font-size:13px}
@keyframes ping{0%{box-shadow:0 0 0 0 rgba(255,210,122,.7)}100%{box-shadow:0 0 0 18px rgba(255,210,122,0)}}
.crate{position:absolute;width:clamp(44px,10vw,66px);top:-30%;transform:translate(-50%,-100%);
  transition:top 3s cubic-bezier(.25,.6,.35,1);cursor:pointer;outline:0}
.crate svg{display:block;width:100%;overflow:visible}
.crate .chute{transform-origin:32px 62px;animation:sway 1.1s ease-in-out infinite alternate}
@keyframes sway{from{transform:rotate(-8deg)}to{transform:rotate(8deg)}}
.crate.landed .chute{opacity:0;transition:opacity .7s;animation:none}
.crate.landed .box{animation:pulse 1s ease-in-out infinite;transform-origin:32px 74px}
.crate:focus-visible .box{outline:2px solid var(--soft)}
@keyframes pulse{50%{transform:scale(1.12);filter:drop-shadow(0 0 8px #ffd27a)}}
.crate.opened{transition:opacity .5s,transform .5s;opacity:0;transform:translate(-50%,-140%) scale(1.6)}
.coupon{max-width:600px;margin-top:1.6em;padding:24px 22px;border:2px dashed var(--gold);
  background:rgba(50,16,20,.55);animation:pop .6s cubic-bezier(.2,1.4,.4,1) both}
@keyframes pop{from{transform:scale(.7) rotate(-3deg);opacity:0}}
.winner{font-family:var(--pixel);font-weight:700;font-size:clamp(1.5rem,5.5vw,2.6rem);line-height:1.1;color:var(--gold);
  text-shadow:0 0 14px rgba(255,210,122,.6)}
.rank{color:var(--soft);margin:.5em 0 1.2em}
.coupon h3{font-family:var(--pixel);font-weight:500;font-size:1.4em;color:var(--ink);margin:0 0 .5em}
.coupon p{color:var(--soft);margin:0 0 .8em}

/* ---------- финал ---------- */
.final .big22{font-size:clamp(5rem,14vw,10rem)}
#finlog{margin-top:1em}
.lovebig{font-family:var(--pixel);font-weight:700;font-size:clamp(2.2rem,7.5vw,4.6rem);line-height:1.1;color:var(--ink);
  margin:.8em 0 .2em;opacity:0;text-shadow:0 0 24px rgba(255,61,132,.8)}
.lovebig.show{opacity:1;animation:beat 1.3s ease-in-out infinite;transform-origin:left center}
@keyframes beat{0%,100%{transform:scale(1)}12%{transform:scale(1.06)}24%{transform:scale(1)}36%{transform:scale(1.04)}}
.shell{margin-top:1.8em;padding:12px 14px;border:1px solid var(--line);background:rgba(19,5,14,.88)}
.shline{display:flex;gap:.6em;align-items:center}
.shline input{flex:1;min-width:0;background:transparent;border:0;outline:0;color:var(--ink);font:inherit;caret-color:var(--ink)}

/* ---------- частицы ---------- */
#fx{position:fixed;inset:0;pointer-events:none;z-index:14;overflow:hidden}
#fx img{position:absolute;image-rendering:pixelated}
#fx img.fall{top:-50px;animation:fall linear forwards}
@keyframes fall{to{transform:translateY(calc(100vh + 100px)) rotate(var(--r,0deg))}}
#fx img.burst{animation:burst 1.5s cubic-bezier(.15,.7,.3,1) forwards}
@keyframes burst{
  from{transform:translate(-50%,-50%) scale(.3);opacity:1}
  70%{opacity:1}
  to{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1) rotate(var(--r));opacity:0}}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  #fx{display:none}
}

/* ---------- соглашение ---------- */
.modal{position:fixed;inset:0;z-index:13;display:grid;place-items:center;padding:20px;
  background:rgba(19,5,14,.85);animation:sceneIn .6s steps(6) both;overflow-y:auto}
.mbox{width:min(580px,100%);padding:26px 24px;border:1px solid var(--ink);background:var(--bg2);
  box-shadow:0 0 70px rgba(255,61,132,.3)}
.mbox ol{color:var(--soft);padding-left:1.4em;margin:1em 0}
.mbox li{margin:.45em 0}
.mbtns{display:flex;flex-wrap:wrap;gap:.8em}
.mbtns .btn{margin-top:.4em}
#termsMsg{min-height:1.5em;margin-top:.8em}
.btn.ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);text-shadow:0 0 6px rgba(255,126,182,.4)}
.btn.ghost:hover{background:rgba(255,126,182,.12);color:var(--soft)}

/* ---------- данечка ---------- */
.alert{max-width:640px;padding:14px 16px;border:1px solid var(--gold);background:rgba(60,32,10,.35)}
.ah{font-family:var(--pixel);font-weight:500;font-size:1.25em;color:var(--gold);margin-bottom:.4em}
.dtext{font-size:1.25em;color:var(--soft);margin:1.8em 0 .2em}
.dbig{font-family:var(--pixel);font-weight:700;font-size:clamp(1.8rem,6vw,3.3rem);line-height:1.12;color:var(--ink);
  margin:0 0 1em;max-width:20ch;text-shadow:0 0 22px rgba(255,61,132,.6);animation:boot22 1.2s steps(10) both}
.choices{position:relative;min-height:190px;max-width:640px;display:flex;flex-wrap:wrap;gap:.8em;align-items:flex-start}
.choices .btn{margin-top:0}
#dNo.run{position:absolute;transition:left .28s cubic-bezier(.3,1.5,.5,1),top .28s cubic-bezier(.3,1.5,.5,1)}
#dres{margin-top:1.6em}

/* ---------- общее для новых сцен ---------- */
.belated{margin-top:.3em;font-size:.95em}
.toasts{position:fixed;top:calc(var(--top) + 56px);right:12px;z-index:17;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{display:flex;gap:12px;align-items:center;min-width:240px;max-width:min(360px,calc(100vw - 24px));
  padding:10px 14px;border:2px solid var(--ink);background:#1d0816;box-shadow:0 0 24px rgba(255,61,132,.35);
  animation:toastIn .4s cubic-bezier(.2,1.3,.4,1) both}
.toast img{width:28px;height:24px;image-rendering:pixelated;flex:none}
.toast b{display:block;color:var(--gold);font-family:var(--pixel);font-weight:500}
.toast span{color:var(--soft);font-size:.88em}
.toast.out{animation:toastOut .5s forwards}
@keyframes toastIn{from{transform:translateX(120%)}}
@keyframes toastOut{to{transform:translateX(120%);opacity:0}}
#fx .pix{position:absolute;width:7px;height:7px}

/* ---------- торт ---------- */
.cake{display:flex;flex-direction:column;align-items:center;margin:1.6em auto .6em;max-width:440px}
.candles{display:grid;grid-template-columns:repeat(11,1fr);width:min(300px,82vw);row-gap:2px;margin-bottom:-2px}
.candle{position:relative;height:46px;padding:0;border:0;background:none;cursor:pointer}
.candle .stick{position:absolute;bottom:0;left:50%;width:8px;height:24px;transform:translateX(-50%);
  background:repeating-linear-gradient(180deg,#ffd3e6 0 4px,#ff7eb6 4px 8px)}
.candle .flame{position:absolute;bottom:24px;left:50%;width:8px;height:14px;transform:translateX(-50%);
  background:linear-gradient(#fff6c8,#ffd27a 50%,#ff8a3d);box-shadow:0 0 10px #ffd27a,0 0 22px rgba(255,170,60,.6);
  clip-path:polygon(50% 0,100% 60%,75% 100%,25% 100%,0 60%);animation:fl .18s steps(2) infinite alternate}
@keyframes fl{to{transform:translateX(-50%) scaleY(.82) skewX(6deg)}}
.candle:nth-child(n+12){height:38px}
.candle.out .flame{display:none}
.candle.out::after{content:"";position:absolute;bottom:26px;left:50%;width:6px;height:6px;background:#8c4d6e;
  animation:smoke 1.2s forwards}
@keyframes smoke{to{transform:translate(-50%,-40px) scale(2.4);opacity:0}}
.candle:focus-visible{outline:2px solid var(--soft)}
.tier{position:relative;display:grid;place-items:center;font-family:var(--pixel);font-weight:700;color:#3a0d28;text-shadow:none}
.tier::before{content:"";position:absolute;top:0;left:0;right:0;height:12px;
  background:repeating-linear-gradient(90deg,#fff0f6 0 14px,transparent 14px 20px),#fff0f6;
  clip-path:polygon(0 0,100% 0,100% 60%,95% 100%,90% 60%,80% 100%,70% 60%,60% 100%,50% 60%,40% 100%,30% 60%,20% 100%,10% 60%,5% 100%,0 60%)}
.t1{width:min(320px,86vw);height:70px;background:#ff7eb6;font-size:2rem}
.t2{width:min(420px,94vw);height:84px;background:#ff3d84;font-size:1.5rem;letter-spacing:.2em}
.plate{width:min(460px,98vw);height:10px;background:#5a2246}
.cakebtns{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:center;justify-content:center;margin-top:.4em}
.cakebtns .btn{margin-top:0}
.cakemsg{min-height:3em;margin-top:1.2em;text-align:center}
.cakemsg .big{font-family:var(--pixel);font-weight:700;font-size:clamp(1.6rem,5vw,2.6rem);line-height:1.15;color:var(--ink);display:block;margin-bottom:.3em}
.cakescene{text-align:center}
.cakescene .lead{margin-left:auto;margin-right:auto}

/* ---------- майн ---------- */
.together{font-family:var(--pixel);font-size:clamp(1.1rem,3vw,1.4rem);color:var(--gold);margin:-.4em 0 1.2em}
.mgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;width:min(420px,100%)}
.mblock{position:relative;aspect-ratio:1;padding:0;border:0;cursor:pointer;background-size:cover;
  image-rendering:pixelated;box-shadow:inset -4px -4px 0 rgba(0,0,0,.3),inset 4px 4px 0 rgba(255,255,255,.12)}
.mblock .crack{position:absolute;inset:0;background-size:cover;image-rendering:pixelated;pointer-events:none}
.mblock.hit{animation:hit .15s}
@keyframes hit{50%{transform:scale(.92)}}
.mblock.broken{background:none!important;box-shadow:inset 0 0 0 1px var(--line);cursor:default}
.mblock.broken .crack{display:none}
.mblock .face{position:absolute;inset:0;display:none}
.mblock.face .face{display:block}
.mblock .face::before,.mblock .face::after{content:"";position:absolute;top:34%;width:16%;height:16%;background:#1a0612}
.mblock .face::before{left:22%}.mblock .face::after{right:22%}
.mblock:focus-visible{outline:2px solid var(--soft);outline-offset:2px}
.memlist{color:var(--dim);max-width:62ch;padding-left:1.4em;margin:1.6em 0 0}
.memlist li{margin:.5em 0;text-shadow:none}
.memlist li.found{color:var(--soft);text-shadow:0 0 6px rgba(255,126,182,.3);animation:paraIn .5s both}
.memlist li.found b{color:var(--gold);font-weight:normal}

/* ---------- любовь ---------- */
.meter{position:relative;height:22px;max-width:560px;border:1px solid var(--ink);background:#2a0d20}
.mfill{height:100%;width:0;background:linear-gradient(90deg,var(--hot),var(--ink));box-shadow:0 0 14px var(--ink)}
.meter.over{animation:shake .3s infinite;border-color:#ff5c7a}
.meter.over .mfill{background:repeating-linear-gradient(90deg,#ff5c7a 0 10px,var(--gold) 10px 20px)}
.mval{font-family:var(--pixel);font-weight:700;font-size:clamp(3rem,12vw,6rem);line-height:1;color:var(--ink);margin:.25em 0;
  text-shadow:0 0 20px rgba(255,61,132,.7)}
.why{margin-top:1.6em;max-width:620px;padding:20px 22px;border:1px solid var(--line);background:rgba(29,8,22,.85)}
.whyh{color:var(--gold);font-family:var(--pixel);font-size:1.2em}
.whytext{font-size:1.2em;color:var(--soft);min-height:3.6em;margin:.6em 0 .4em}

/* ---------- пабг: лут ---------- */
.loottitle{color:var(--gold);margin:.2em 0 .3em}
.loot{margin:0 0 1.2em;padding-left:1.2em;color:var(--soft)}
.loot li{margin:.25em 0;animation:paraIn .4s both}
.loot li:nth-child(2){animation-delay:.25s}.loot li:nth-child(3){animation-delay:.5s}
.loot li:nth-child(4){animation-delay:.75s}.loot li:nth-child(5){animation-delay:1s}

/* ---------- финал ---------- */
.lovesub{font-family:var(--pixel);font-size:clamp(1.2rem,3.5vw,1.7rem);color:var(--soft);opacity:0;transition:opacity 1s}
.lovesub.show{opacity:1}
#cNo.run{position:absolute;transition:left .25s cubic-bezier(.3,1.5,.5,1),top .25s cubic-bezier(.3,1.5,.5,1),transform .25s}
