:root{
  --c1:#3fe8ff; --c2:#0a84ff; --c3:#5ef2ff; --c4:#1fb6d6; --c5:#9ff6ff;
  --text:#f5f5f7; --muted:#86868b; --glass:rgba(255,255,255,.07); --stroke:rgba(255,255,255,.12);
  --wa:#25d366;
  --sans:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Helvetica Neue","Segoe UI",Roboto,Arial,sans-serif;
  --orb:min(86vw,380px); --amp:0;
  --spring:cubic-bezier(.34,1.56,.64,1); --ease:cubic-bezier(.22,1,.36,1);
}
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:#02060d;color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;min-height:100dvh;display:flex;flex-direction:column;overflow-x:hidden;letter-spacing:-.01em}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;-webkit-tap-highlight-color:transparent}

/* Космос */
.sky{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;background:radial-gradient(ellipse at 50% 40%,#071526 0%,#02060d 60%,#010308 100%)}
.sky+.ambient,.ambient{z-index:1}
/* Фоновое свечение */
.ambient{position:fixed;inset:-20%;pointer-events:none;background:
  radial-gradient(40% 35% at 35% 30%,rgba(63,232,255,.10),transparent 70%),
  radial-gradient(35% 30% at 70% 40%,rgba(10,132,255,.10),transparent 70%),
  radial-gradient(40% 35% at 50% 75%,rgba(31,182,214,.06),transparent 70%);
  filter:blur(20px);animation:drift 18s ease-in-out infinite alternate;opacity:.7;transition:opacity 1s}
.s-idle .ambient{opacity:.35}
@keyframes drift{to{transform:translate3d(3%,-2%,0) rotate(8deg) scale(1.05)}}

/* Свечение краёв экрана, как у Apple Intelligence */
.edge{position:fixed;inset:0;pointer-events:none;z-index:20;opacity:0;transition:opacity .6s var(--ease)}
.edge::before{content:"";position:absolute;inset:0;padding:3px;border-radius:0;
  background:conic-gradient(from var(--a,0deg),var(--c1),var(--c2),var(--c3),var(--c4),var(--c5),var(--c1));
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;
  filter:blur(6px);animation:spin 4s linear infinite}
.edge::after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 60px 6px rgba(63,232,255,.35),inset 0 0 120px 10px rgba(10,132,255,.25);animation:breath 2.4s ease-in-out infinite}
.s-listening .edge,.s-speaking .edge{opacity:1}
.s-speaking .edge{opacity:.55}
@property --a{syntax:"<angle>";inherits:false;initial-value:0deg}
@keyframes spin{to{--a:360deg}}
@keyframes breath{50%{opacity:.55}}

/* Верхняя панель */
.bar{position:relative;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:calc(14px + env(safe-area-inset-top)) clamp(18px,4vw,40px) 14px}
.brand{font-weight:600;font-size:17px;letter-spacing:-.02em}
.bar-right{display:flex;align-items:center;gap:10px}
.round{width:38px;height:38px;border-radius:50%;border:0;background:var(--glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);display:grid;place-items:center;cursor:pointer;transition:transform .3s var(--spring),background .2s}
.round:active{transform:scale(.9)}
.round svg{width:18px;height:18px;fill:currentColor;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.round .i-off{display:none}
.muted .round .i-on{display:none}
.muted .round .i-off{display:block}
.pill-cta{border:0;cursor:pointer;font-family:inherit;height:38px;padding:0 18px;border-radius:999px;background:#f5f5f7;color:#000;font-weight:600;font-size:15px;display:inline-flex;align-items:center;transition:transform .3s var(--spring),opacity .2s}
.pill-cta:hover{opacity:.88}
.pill-cta:active{transform:scale(.94)}

/* Сцена */
.stage{position:relative;z-index:5;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 20px 12px;gap:0}
.s-active .stage{justify-content:flex-start;padding-top:2vh}

/* Шар */
.orb{position:relative;width:var(--orb);height:var(--orb);border:0;padding:0;background:none;cursor:pointer;border-radius:50%;flex:none;transition:width .9s var(--ease),height .9s var(--ease),transform .4s var(--spring)}
.orb:active{transform:scale(.95)}
.s-active .orb{--orb:min(56vw,250px)}
.orb:active .orb-body{transform:scale(.94)}
.orb:focus-visible{outline:none}
.orb:focus-visible .orb-body{box-shadow:0 0 0 3px rgba(255,255,255,.6)}
.orb-glow{position:absolute;inset:-10%;border-radius:50%;background:radial-gradient(circle,rgba(63,232,255,.22) 0%,rgba(10,132,255,.08) 40%,transparent 68%);opacity:calc(.6 + var(--amp) * .6);transition:opacity .3s}
.orb canvas{position:relative;width:100%;height:100%;display:block}
.orb-body{position:absolute;inset:0;border-radius:50%;overflow:hidden;background:radial-gradient(circle at 50% 55%,#1a1530,#05060a 75%);isolation:isolate;transition:transform .5s var(--spring);will-change:border-radius,transform;
  box-shadow:inset 0 0 40px rgba(255,255,255,.08),0 30px 80px -20px rgba(10,132,255,.45)}
.blob{position:absolute;width:80%;height:80%;border-radius:50%;filter:blur(calc(var(--orb) * .07));mix-blend-mode:screen;opacity:1}
.b5{background:radial-gradient(circle at 50% 50%,var(--c4),transparent 65%);top:45%;left:40%;animation:m5 6s ease-in-out infinite alternate}
@keyframes m5{to{transform:translate(-45%,-30%) scale(1.1)}}
.b1{background:radial-gradient(circle at 50% 50%,var(--c1),transparent 65%);top:-10%;left:-15%;animation:m1 7s ease-in-out infinite alternate}
.b2{background:radial-gradient(circle at 50% 50%,var(--c2),transparent 65%);top:20%;left:30%;animation:m2 9s ease-in-out infinite alternate}
.b3{background:radial-gradient(circle at 50% 50%,var(--c3),transparent 65%);top:35%;left:-10%;animation:m3 8s ease-in-out infinite alternate}
.b4{background:radial-gradient(circle at 50% 50%,var(--c5),transparent 65%);top:-15%;left:35%;animation:m4 10s ease-in-out infinite alternate}
@keyframes m1{to{transform:translate(35%,30%) scale(1.15)}}
@keyframes m2{to{transform:translate(-40%,-25%) scale(.85)}}
@keyframes m3{to{transform:translate(30%,-35%) scale(1.2)}}
@keyframes m4{to{transform:translate(-30%,40%) scale(.9)}}
.s-speaking .blob{animation-duration:2.2s}
.s-listening .blob{animation-duration:3.4s}
.s-listening .b3{background:radial-gradient(circle,var(--c4),transparent 65%)}
.orb-shine{position:absolute;inset:0;border-radius:50%;background:radial-gradient(60% 45% at 35% 22%,rgba(255,255,255,.45),transparent 60%),radial-gradient(80% 60% at 50% 110%,rgba(0,0,0,.55),transparent 60%);z-index:2}
.ring{position:absolute;inset:-14px;width:calc(100% + 28px);height:calc(100% + 28px);overflow:visible;opacity:0;transition:opacity .4s}
.ring circle{fill:none;stroke:rgba(255,255,255,.65);stroke-width:1.2;stroke-dasharray:4 9;transform-origin:center;animation:rot 6s linear infinite}
.s-listening .ring{opacity:1}
@keyframes rot{to{transform:rotate(360deg)}}

/* Приветственный экран */
.intro{text-align:center;margin-top:8px;transition:opacity .5s var(--ease),transform .6s var(--ease)}
.title{margin:0;font-size:clamp(36px,7vw,60px);font-weight:700;letter-spacing:-.045em;line-height:1;
  background:linear-gradient(100deg,#fff 0%,#c8f8ff 45%,#6fe9ff 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.sub{margin:10px 0 0;color:var(--muted);font-size:clamp(14px,1.6vw,17px);line-height:1.4;font-weight:500}
.s-active .intro{display:none}

/* Разговор */
.talk{display:none;width:min(600px,100%);flex-direction:column;align-items:center;margin-top:6px;gap:16px}
.s-active .talk{display:flex}
.caption{margin:0;min-height:1.4em;text-align:center;font-size:clamp(17px,2vw,22px);line-height:1.25;font-weight:600;letter-spacing:-.025em;text-wrap:balance}
.caption .w{display:inline-block;opacity:0;filter:blur(8px);transform:translateY(6px);animation:word .55s var(--ease) forwards}
@keyframes word{to{opacity:1;filter:none;transform:none}}
.heard{margin:-6px 0 0;min-height:1.3em;text-align:center;color:var(--muted);font-size:14px;font-weight:500}
.heard:empty{display:none}

.photo{width:112px;height:140px;border-radius:24px;overflow:hidden;animation:pop .7s var(--spring) both;box-shadow:0 20px 50px -15px rgba(10,132,255,.5)}
.photo img{width:100%;height:100%;object-fit:cover}

.cards{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;width:100%}
.card{flex:0 1 150px;min-width:110px;padding:12px 14px;border-radius:18px;background:var(--glass);border:1px solid var(--stroke);backdrop-filter:blur(30px) saturate(1.6);-webkit-backdrop-filter:blur(30px) saturate(1.6);
  opacity:0;transform:translateY(18px) scale(.92);filter:blur(10px);animation:pop .8s var(--spring) forwards}
.card small{display:block;font-size:11px;color:var(--muted);font-weight:500}
.card b{display:block;margin-top:4px;font-size:15px;font-weight:600;letter-spacing:-.02em;line-height:1.2}
.card.big b{font-size:22px;letter-spacing:-.035em;background:linear-gradient(100deg,#fff,#9ff6ff 60%,#3fe8ff);-webkit-background-clip:text;background-clip:text;color:transparent}
@keyframes pop{to{opacity:1;transform:none;filter:none}}

.chips{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;width:100%}
.chip{height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--stroke);background:var(--glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);font-size:14px;font-weight:600;letter-spacing:-.015em;cursor:pointer;display:inline-flex;align-items:center;gap:9px;
  opacity:0;transform:translateY(12px) scale(.95);animation:pop .6s var(--spring) forwards;transition:background .2s,transform .3s var(--spring)}
.chip:hover{background:rgba(255,255,255,.12)}
.chip:active{transform:scale(.94)!important}
.chip.primary{background:#f5f5f7;color:#000;border-color:transparent}
.chip.primary:hover{background:#fff}
.chip.wa{background:var(--wa);color:#fff;border-color:transparent;box-shadow:0 10px 30px -10px rgba(37,211,102,.7)}
.chip.wa:hover{background:#2ee173}
.chip svg{width:19px;height:19px;fill:currentColor}

.foot{position:relative;z-index:5;display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 20px;padding:14px clamp(18px,4vw,40px) calc(14px + env(safe-area-inset-bottom));font-size:12px;color:#6e6e73}
.foot nav{display:flex;gap:18px}
.foot a:hover{color:var(--text)}
.noscript{position:relative;z-index:30;text-align:center;padding:20px}

@media (min-width:900px){
  :root{--orb:440px}
  .s-active .orb{--orb:260px}
}
@media (max-width:640px){
  .foot{justify-content:center;text-align:center}
  .card{flex:1 1 calc(33% - 12px);min-width:0;padding:11px 12px}
  .card b{font-size:14px}
  .card.big b{font-size:20px}
  .chip{height:40px;padding:0 14px;font-size:14px}
  .talk{margin-top:22px;gap:18px}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important}}

/* Ударная волна при входе */
.shock{position:fixed;left:50%;top:50%;width:40px;height:40px;margin:-20px 0 0 -20px;border-radius:50%;pointer-events:none;z-index:15;border:2px solid rgba(255,255,255,.8);box-shadow:0 0 40px rgba(191,90,242,.8),inset 0 0 30px rgba(10,132,255,.6);animation:shock 1.2s var(--ease) forwards}
@keyframes shock{0%{transform:scale(1);opacity:1}100%{transform:scale(40);opacity:0}}
.flash{position:fixed;inset:0;z-index:14;pointer-events:none;background:radial-gradient(circle at 50% 45%,rgba(255,255,255,.35),transparent 60%);animation:flash .9s ease-out forwards}
@keyframes flash{0%{opacity:0}15%{opacity:1}100%{opacity:0}}
.s-idle{cursor:pointer}
.s-idle .orb{animation:float 6s ease-in-out infinite}
@keyframes float{50%{translate:0 -10px}}
.hint-tap{display:inline-block;margin-top:20px;padding:10px 18px;font-size:14px!important;border-radius:999px;background:var(--glass);border:1px solid var(--stroke);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);font-weight:600;font-size:16px;animation:breath 2.4s ease-in-out infinite}

/* Чистый экран: только Дженерик по центру */
.bar{position:fixed;top:0;left:0;right:0;justify-content:flex-end;gap:10px;z-index:12}
.stage{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:0}
.s-active .stage{justify-content:center;padding-top:0}
.orb{--orb:min(78vmin,460px)}
.s-active .orb{--orb:min(78vmin,460px)}
.caption,.heard,.cards,.photo{display:none!important}
.talk{position:fixed;left:0;right:0;bottom:calc(28px + env(safe-area-inset-bottom));margin:0;width:auto;padding:0 16px}
.chips:empty{display:none}
.heard.link{display:block!important;text-align:center;font-size:14px;color:#9fb3c8}
