  :root{
    --ink:#160d10; --paper:#fff4ec; --dim:rgba(255,244,236,.62);
    --pink:#ff7ab0; --orange:#ffb066; --cyan:#57e0d8;
    --gpulse:0;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html{scroll-behavior:smooth}
  body{background:var(--ink);color:var(--paper);font-family:'Inter',system-ui,sans-serif;overflow-x:hidden}
  ::selection{background:var(--pink);color:var(--ink)}

  /* --- hero --- */
  #hero{position:relative;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;text-align:center;padding:24px}
  /* слой 1 — BlurHash (мгновенно, из строки): фон уже «есть» до сети и three.js */
  #bgph{position:fixed;inset:0;z-index:0;pointer-events:none;background-size:cover;background-position:center;
    filter:blur(46px) saturate(1.15) brightness(.5);transform:scale(1.25);opacity:0;transition:opacity .6s ease}
  #bgph.on{opacity:1}
  /* слой 2 — обложка-preview (резче blurhash), проявляется по загрузке картинки */
  #bgprev{position:fixed;inset:0;z-index:0;pointer-events:none;background-size:cover;background-position:center;
    filter:blur(28px) saturate(1.1) brightness(.55);transform:scale(1.2);opacity:0;transition:opacity 1s ease}
  #bgprev.on{opacity:1}
  /* слой 3 — живая сцена, проявляется поверх preview на первом кадре */
  #bg{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:0;transition:opacity 1.1s ease}
  #bg.on{opacity:1}
  /* dive — переход в сцену по CTA, в цвете самой сцены */
  #dive{position:fixed;inset:0;z-index:60;pointer-events:none;opacity:0;transform:scale(.15);
    background:radial-gradient(circle at var(--dx,50%) var(--dy,58%),var(--pink),var(--ink) 72%);
    transition:opacity .5s ease,transform .58s cubic-bezier(.55,0,.35,1)}
  #dive.go{opacity:1;transform:scale(3.4)}
  #film{position:fixed;inset:0;z-index:1;pointer-events:none;mix-blend-mode:overlay;opacity:.5;
    background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><filter id="n"><feTurbulence type="fractalNoise" baseFrequency="0.9" numOctaves="2"/></filter><rect width="128" height="128" filter="url(%23n)" opacity="0.55"/></svg>')}
  #scan{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.22;
    background:repeating-linear-gradient(0deg,transparent 0 2px,rgba(0,0,0,.35) 2px 3px)}
  #vig{position:fixed;inset:0;z-index:1;pointer-events:none;
    background:radial-gradient(ellipse at 50% 50%,transparent 52%,rgba(10,4,7,.72) 100%)}
  .z{position:relative;z-index:2}

  .mark{width:78px;height:78px;transform:scale(calc(1 + var(--gpulse,0)*.14));opacity:calc(.85 + var(--gpulse,0)*.15)}
  h1{font-family:'Unbounded';font-weight:800;font-size:clamp(52px,13vw,120px);letter-spacing:.02em;line-height:1;
    background:linear-gradient(100deg,var(--orange),var(--pink) 55%,var(--cyan));-webkit-background-clip:text;background-clip:text;color:transparent}
  .tag{font-size:13px;letter-spacing:.34em;text-transform:lowercase;color:var(--dim)}
  .cta-row{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-top:10px}
  .cta{font-family:'Unbounded';font-weight:500;font-size:14px;text-decoration:none;color:var(--ink);
    background:linear-gradient(100deg,var(--orange),var(--pink));padding:16px 30px;border-radius:999px;
    transform:scale(calc(1 + var(--gpulse,0)*.05));transition:filter .2s}
  .cta:hover{filter:brightness(1.12)}
  .cta.ghost{background:none;color:var(--paper);border:1px solid rgba(255,244,236,.3);animation:none}
  .cta.ghost:hover{border-color:var(--cyan);color:var(--cyan)}
  .bpm-chip{display:inline-flex;align-items:center;gap:8px;font-size:11px;letter-spacing:.18em;color:var(--dim);
    border:1px solid rgba(255,244,236,.16);border-radius:999px;padding:6px 14px}
  .bpm-chip b{width:7px;height:7px;border-radius:50%;background:var(--pink);transform:scale(calc(1 + var(--gpulse,0)*1.3))}
  #down{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);font-size:10px;letter-spacing:.3em;color:var(--dim);animation:hop 2s ease-in-out infinite}
  @keyframes hop{0%,100%{transform:translate(-50%,0);opacity:.4}50%{transform:translate(-50%,-8px);opacity:1}}

  /* --- секции --- */
  section{position:relative;z-index:2;max-width:960px;margin:0 auto;padding:110px 22px}
  .manifesto{font-family:'Unbounded';font-weight:300;font-size:clamp(19px,4vw,30px);line-height:1.7;text-align:center}
  .manifesto em{font-style:normal;color:var(--pink)}
  h2{font-family:'Unbounded';font-weight:500;font-size:clamp(20px,4.4vw,30px);margin-bottom:34px}
  h2 span{color:var(--dim);font-weight:300}
  .cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}
  .card{border:1px solid rgba(255,244,236,.13);border-radius:20px;padding:26px;background:rgba(28,12,18,.42);backdrop-filter:blur(8px)}
  .card h3{font-family:'Unbounded';font-weight:500;font-size:16px;margin-bottom:14px}
  .card h3 i{font-style:normal;margin-right:8px}
  .card p{font-size:14px;line-height:1.65;color:var(--dim)}
  .card p b{color:var(--paper);font-weight:600}
  .card .mini{margin-top:14px;font-size:11px;letter-spacing:.12em;color:var(--cyan)}

  .how{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;counter-reset:step}
  .step{border-radius:20px;padding:24px;border:1px dashed rgba(255,244,236,.18)}
  .step::before{counter-increment:step;content:"0" counter(step);font-family:'Unbounded';font-weight:800;font-size:26px;
    display:block;margin-bottom:12px;background:linear-gradient(100deg,var(--orange),var(--pink));-webkit-background-clip:text;background-clip:text;color:transparent}
  .step p{font-size:13.5px;line-height:1.6;color:var(--dim)}
  .step p b{color:var(--paper)}

  .soon{display:flex;flex-wrap:wrap;gap:10px}
  .pill{font-size:12.5px;letter-spacing:.06em;color:var(--dim);border:1px solid rgba(255,244,236,.16);border-radius:999px;padding:9px 16px}
  .pill b{color:var(--orange);font-weight:600}

  /* вейтлист */
  #wait{text-align:center}
  #wait form{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:26px}
  #wait input{background:rgba(28,12,18,.6);border:1px solid rgba(255,244,236,.22);color:var(--paper);
    border-radius:999px;padding:14px 22px;font-size:14px;min-width:min(300px,72vw);outline:none}
  #wait input:focus{border-color:var(--pink)}
  #wait button{font-family:'Unbounded';font-weight:500;font-size:13px;color:var(--ink);border:0;cursor:pointer;
    background:linear-gradient(100deg,var(--orange),var(--pink));border-radius:999px;padding:14px 26px}
  #wait .tg{display:inline-block;margin-top:18px;font-size:13px;color:var(--cyan);text-decoration:none;letter-spacing:.06em}
  #wait .ok{margin-top:16px;font-size:13px;color:var(--cyan);display:none}

  /* --- артисты на сцене: строка аватаров с кольцом-палитрой мира --- */
  .artists-strip{display:flex;gap:16px;margin:24px 0 6px;overflow-x:auto;padding:4px 2px 12px;-webkit-overflow-scrolling:touch}
  .artist-chip{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:8px;text-decoration:none;width:74px}
  .artist-chip .ring{display:block;width:60px;height:60px;border-radius:50%;padding:2.5px;
    background:var(--ring,linear-gradient(135deg,var(--pink),var(--orange)));transition:transform .25s,box-shadow .25s}
  .artist-chip .ring img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block;
    border:2.5px solid var(--ink);background:rgba(28,12,18,.6)}
  .artist-chip .nm{font-size:10.5px;color:var(--dim);letter-spacing:.04em;max-width:74px;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  a.artist-chip:hover .ring{transform:scale(1.08);box-shadow:0 0 18px rgba(255,122,176,.3)}
  a.artist-chip:hover .nm{color:var(--paper)}
  .artist-chip.off .ring{background:rgba(255,244,236,.14)}
  .artist-chip.off .ring img{filter:saturate(.4);opacity:.75}

  /* --- треки в очереди --- */
  .queue-list{display:flex;flex-direction:column;gap:12px;margin-top:24px;max-width:520px;margin-left:auto;margin-right:auto}
  .queue-item{display:flex;align-items:center;gap:14px;padding:12px 16px;
    border:1px solid rgba(255,244,236,.1);border-radius:16px;background:rgba(28,12,18,.35);
    transition:border-color .25s;color:inherit;text-decoration:none}
  a.queue-item:hover{border-color:var(--cyan)}
  a.queue-item:hover .queue-status.ready{background:rgba(87,224,216,.14)}
  .queue-cover-wrap{position:relative;width:48px;height:48px;border-radius:10px;overflow:hidden;flex-shrink:0}
  .queue-cover{width:48px;height:48px;border-radius:10px;object-fit:cover;display:block;
    position:relative;z-index:2}
  .queue-blur{position:absolute;inset:-8px;width:calc(100% + 16px);height:calc(100% + 16px);
    filter:blur(12px);z-index:1;opacity:.7;object-fit:cover}
  .queue-cover-fallback{width:48px;height:48px;border-radius:10px;flex-shrink:0;display:none;
    background:linear-gradient(135deg,var(--ink),rgba(255,122,176,.3),var(--ink))}
  .queue-info{flex:1;min-width:0}
  .queue-title{font-family:'Unbounded';font-weight:500;font-size:13px;color:var(--paper);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .queue-artist{font-size:12px;color:var(--dim);margin-top:2px}
  .queue-status{font-size:10px;letter-spacing:.08em;flex-shrink:0;border-radius:999px;padding:4px 10px;
    display:inline-flex;align-items:center;gap:6px;transition:background .25s}
  .queue-status.ready{color:var(--cyan);border:1px solid rgba(87,224,216,.25)}
  .queue-status.building{color:var(--orange);border:1px solid rgba(255,176,102,.25)}
  .queue-status.building b{width:6px;height:6px;border-radius:50%;background:var(--orange);
    animation:statusPulse 1.2s ease-in-out infinite}
  @keyframes statusPulse{0%,100%{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}
  .queue-status.queued{color:var(--dim);border:1px solid rgba(255,244,236,.14)}

  /* --- последний трек: кнопка сборки --- */
  .queue-build{position:relative;margin-top:24px;max-width:520px;margin-left:auto;margin-right:auto;
    border:1px solid rgba(255,244,236,.1);border-radius:20px;background:rgba(28,12,18,.45);overflow:hidden}
  .queue-build-header{display:flex;align-items:center;gap:14px;padding:16px 18px}
  .queue-build .queue-cover{width:52px;height:52px}
  .build-btn{font-family:'Unbounded';font-weight:500;font-size:13px;color:var(--ink);border:0;cursor:pointer;
    background:linear-gradient(100deg,var(--orange),var(--pink),var(--cyan),var(--orange));
    background-size:300% 100%;border-radius:999px;padding:10px 22px;
    transition:filter .2s,transform .15s;flex-shrink:0;
    animation:btnGlow 3.2s ease-in-out infinite}
  @keyframes btnGlow{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
  .build-btn:hover{filter:brightness(1.1);transform:scale(1.05);box-shadow:0 0 20px rgba(255,122,176,.35)}
  .build-btn:active{transform:scale(.97)}
  .build-btn:disabled{opacity:.5;cursor:default;filter:none;transform:none;animation:none}

  /* панель сборки: живая сборка мира на canvas */
  .build-stage{display:none;padding:0 18px 18px}
  .build-stage.active{display:block}
  #buildCanvas{display:block;width:100%;height:150px;border-radius:14px;margin-bottom:14px;
    background:rgba(10,4,7,.55);border:1px solid rgba(255,244,236,.07)}
  .build-progress{height:3px;background:rgba(255,244,236,.1);border-radius:2px;overflow:hidden;margin-bottom:14px}
  .build-progress-bar{height:100%;width:0%;background:linear-gradient(90deg,var(--orange),var(--pink),var(--cyan));
    border-radius:2px}
  .build-steps{list-style:none;counter-reset:bstep;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:2px 14px}
  .build-step{counter-increment:bstep;display:flex;align-items:center;gap:10px;padding:5px 0;
    font-size:12px;color:var(--dim);opacity:.35;transition:opacity .3s,color .3s}
  .build-step::before{content:"0" counter(bstep);font-family:'Unbounded';font-weight:800;font-size:11px;
    min-width:18px;color:var(--dim);transition:color .3s}
  .build-step.active{opacity:1;color:var(--paper)}
  .build-step.active::before{color:var(--pink)}
  .build-step.done{opacity:.6;color:var(--cyan)}
  .build-step.done::before{color:var(--cyan);content:"✓"}
  .build-step .step-label{flex:1}

  /* финал: «залетай» + «пересобрать» */
  .build-final{display:none;text-align:center;padding:16px 18px 20px}
  .build-final.active{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap}
  .build-final .cta{font-size:13px;padding:12px 24px}
  .build-final .took{width:100%;font-size:11px;color:var(--dim);letter-spacing:.08em}
  .build-rebuild{font-family:'Unbounded';font-weight:500;font-size:12px;color:var(--dim);cursor:pointer;
    background:none;border:1px solid rgba(255,244,236,.22);border-radius:999px;padding:11px 20px;transition:color .2s,border-color .2s}
  .build-rebuild:hover{color:var(--cyan);border-color:var(--cyan)}

  footer{position:relative;z-index:2;text-align:center;padding:50px 20px 60px;color:var(--dim);font-size:12px;letter-spacing:.14em}
  footer .links{margin-top:10px;display:flex;gap:18px;justify-content:center}
  footer a{color:var(--dim);text-decoration:none}
  footer a:hover{color:var(--pink)}

  /* --- scroll-reveal --- */
  [data-reveal]{opacity:0;transform:translateY(32px);transition:opacity .6s ease,transform .6s ease}
  [data-reveal].visible{opacity:1;transform:none}
  .cards .card:nth-child(2){transition-delay:.1s}
  .cards .card:nth-child(3){transition-delay:.2s}

  /* --- card hover --- */
  .card{transition:border-color .25s,transform .25s,box-shadow .25s}
  .card:hover{border-color:var(--pink);transform:translateY(-4px);
    box-shadow:0 8px 32px rgba(255,122,176,.15)}

  /* --- mobile declutter --- */
  @media(max-width:640px){
    .bpm-chip{display:none}
    #hero{gap:18px;padding:16px}
    section{padding:70px 18px}
    .artists-strip{gap:12px}
    .artist-chip{width:64px}
    .artist-chip .ring{width:52px;height:52px}
    .artist-chip .nm{font-size:10px;max-width:64px}
    #buildCanvas{height:120px}
  }

  @media (prefers-reduced-motion: reduce){
    .mark,.cta,.bpm-chip b,#down,.queue-status.building b{animation:none}
    [data-reveal]{opacity:1;transform:none;transition:none}
    html{scroll-behavior:auto}
    a.artist-chip:hover .ring{transform:none}
    .card:hover{transform:none}
    .build-btn{animation:none}
    #bgph,#bgprev,#bg{transition:none}
    #dive{transition:opacity .2s ease}
  }
