:root{
  --base:#0a0a0c;--raised:#121016;--line:rgba(244,242,236,.1);--line2:rgba(244,242,236,.18);
  --ink:#f4f2ec;--ink2:#c9c5d6;--ink3:#a39fb4;
  --accent:#7c4dff;--glow:#c24bf0;
  --plasma:linear-gradient(100deg,#7c4dff 0%,#a64cf6 50%,#c24bf0 100%);
  --ease:cubic-bezier(.16,1,.3,1);
  --font-d:"Space Grotesk",ui-sans-serif,system-ui,sans-serif;
  --font-s:"Geist",ui-sans-serif,system-ui,-apple-system,sans-serif;
  --app-h:100dvh;
  --safe-b:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--base);color:var(--ink);overscroll-behavior:none}
body{font-family:var(--font-s);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;overflow:hidden;position:fixed;inset:0;width:100%}
button,input{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none}
:focus-visible{outline:2px solid #b794ff;outline-offset:2px}

/* ---------- pozadí ---------- */
.bg{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.blob{position:absolute;border-radius:50%;filter:blur(70px);will-change:transform}
.b1{width:420px;height:420px;left:-140px;top:-80px;background:radial-gradient(circle,#7c4dff 0%,transparent 70%);opacity:.5;animation:drift1 18s ease-in-out infinite alternate}
.b2{width:380px;height:380px;right:-160px;bottom:-60px;background:radial-gradient(circle,#c24bf0 0%,transparent 70%);opacity:.32;animation:drift2 22s ease-in-out infinite alternate}
.stars{position:absolute;inset:0;opacity:.55;background-image:
  radial-gradient(1.2px 1.2px at 12% 18%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 78% 12%,#fff 50%,transparent 51%),
  radial-gradient(1.4px 1.4px at 64% 34%,#d9c4ff 50%,transparent 51%),radial-gradient(1px 1px at 30% 52%,#fff 50%,transparent 51%),
  radial-gradient(1.2px 1.2px at 90% 60%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 8% 78%,#d9c4ff 50%,transparent 51%),
  radial-gradient(1.2px 1.2px at 52% 88%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 40% 8%,#fff 50%,transparent 51%);
  animation:twinkle 5s ease-in-out infinite alternate}
.bg::after{content:"";position:absolute;inset:0;opacity:.07;mix-blend-mode:overlay;
  background-image: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'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
@keyframes drift1{to{transform:translate(70px,60px) scale(1.15)}}
@keyframes drift2{to{transform:translate(-60px,-50px) scale(1.2)}}
@keyframes twinkle{from{opacity:.3}to{opacity:.7}}

/* ---------- kostra ---------- */
#app{position:fixed;left:0;right:0;top:0;height:var(--app-h);z-index:1;display:flex;flex-direction:column;max-width:560px;margin:0 auto;overflow:hidden}
.top{flex:none;display:flex;align-items:center;justify-content:space-between;padding:calc(12px + env(safe-area-inset-top,0px)) 18px 8px;position:relative;z-index:5}
.wordmark{height:21px;width:auto;opacity:.95}
.who{display:flex;align-items:center;gap:10px;padding:5px 14px 5px 5px;min-height:44px;border:1px solid var(--line);border-radius:99px;background:rgba(18,16,22,.6);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);opacity:0;transform:translateY(-6px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.av-w{position:relative;flex:none;width:34px;height:34px;border-radius:50%}
.av-w::after{content:"";position:absolute;inset:-3px;border-radius:50%;border:1.5px solid #b66cff;opacity:0;transform:scale(.9)}
.who-av{display:block;width:34px;height:34px;border-radius:50%;box-shadow:0 0 0 1.5px rgba(166,76,246,.7),0 0 14px rgba(194,75,240,.45)}
.talk .av-w::after{animation:ringp 1.3s var(--ease) infinite}
@keyframes ringp{0%{opacity:.9;transform:scale(.95)}100%{opacity:0;transform:scale(1.5)}}
.who-t{display:flex;flex-direction:column;line-height:1.1;font-size:13px}
.who-t b{font-family:var(--font-d);font-weight:600;letter-spacing:.01em}
#status{font-size:11px;color:var(--ink3);display:flex;align-items:center;gap:5px;margin-top:2px}
.dot{width:6px;height:6px;border-radius:50%;background:#58e08f;box-shadow:0 0 8px #58e08f;animation:pulse 2s ease-in-out infinite}
@keyframes pulse{50%{opacity:.4}}
#app:not(.is-intro) .who{opacity:1;transform:none}

/* ---------- hero (robot stojí, dýchá světlo) ---------- */
.stage{position:absolute;left:0;right:0;top:0;height:min(calc(min(100vw,560px)*1.25),64dvh);z-index:2;pointer-events:none;transition:opacity .5s var(--ease),transform .7s var(--ease)}
.rbox{position:absolute;top:0;left:50%;height:100%;aspect-ratio:4/5;transform:translateX(-50%);
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 9%,#000 56%,transparent 97%),linear-gradient(to right,transparent 0,#000 15%,#000 85%,transparent 100%);
  -webkit-mask-composite:source-in;
  mask-image:linear-gradient(to bottom,transparent 0,#000 9%,#000 56%,transparent 97%),linear-gradient(to right,transparent 0,#000 15%,#000 85%,transparent 100%);
  mask-composite:intersect;
  opacity:0;animation:heroin 1.4s var(--ease) .1s forwards}
@keyframes heroin{from{opacity:0;transform:translateX(-50%) scale(1.04)}to{opacity:1;transform:translateX(-50%) scale(1)}}
.robot{display:block;width:100%;height:100%;object-fit:cover;background:#0b0418;user-select:none;-webkit-user-drag:none}
.glow{position:absolute;left:50%;top:18%;width:96%;aspect-ratio:1;margin-left:-48%;border-radius:50%;pointer-events:none;mix-blend-mode:screen;
  background:radial-gradient(circle,rgba(194,75,240,.55) 0%,rgba(124,77,255,.22) 42%,transparent 68%);opacity:.15;animation:breathe 6s ease-in-out infinite}
@keyframes breathe{50%{opacity:.5;transform:scale(1.08)}}
#app:not(.is-intro) .stage{opacity:0;transform:scale(.97)}
#app:not(.is-intro) .rbox{animation:none;opacity:1}
#app:not(.is-intro) .glow{animation:none}

/* ---------- intro ---------- */
.intro{flex:1 1 auto;min-height:0;position:relative;z-index:3;overflow-y:auto;overflow-x:hidden;padding:0 22px calc(18px + var(--safe-b));display:flex;flex-direction:column;transition:opacity .45s,transform .6s var(--ease);-webkit-overflow-scrolling:touch}
#app:not(.is-intro) .intro{display:none}
.intro-in{position:relative;isolation:isolate;display:flex;flex-direction:column;gap:11px;margin-top:auto;text-align:center;align-items:center;width:100%}
.intro-in::before{content:"";position:absolute;z-index:-1;left:-22px;right:-22px;top:-110px;bottom:-40px;background:linear-gradient(to bottom,rgba(10,10,12,0),rgba(10,10,12,.82) 110px,rgba(10,10,12,.9))}
.intro-in>*{opacity:0;transform:translateY(14px);animation:rise .9s var(--ease) forwards}
.intro-in>:nth-child(1){animation-delay:.15s}.intro-in>:nth-child(2){animation-delay:.28s}.intro-in>:nth-child(3){animation-delay:.42s}
.intro-in>:nth-child(4){animation-delay:.56s}.intro-in>:nth-child(5){animation-delay:.7s}.intro-in>:nth-child(6){animation-delay:.85s}
@keyframes rise{to{opacity:1;transform:none}}
.kicker{margin:0;display:inline-flex;align-items:center;gap:8px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink2);padding:6px 13px;border:1px solid var(--line2);border-radius:99px;background:rgba(18,16,22,.55)}
.kdot{width:6px;height:6px;border-radius:50%;background:var(--glow);box-shadow:0 0 10px var(--glow)}
h1{margin:0;font-family:var(--font-d);font-weight:700;font-size:clamp(38px,11.5vw,52px);line-height:1.02;letter-spacing:-.03em}
h1 em{font-style:normal;background:var(--plasma);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 22px rgba(166,76,246,.45))}
.lead{margin:0;color:var(--ink2);font-size:16px;line-height:1.5;max-width:420px}
.feats{list-style:none;margin:0;padding:0;display:flex;gap:6px;flex-wrap:nowrap;justify-content:center}
.feats li{display:flex;align-items:center;gap:6px;padding:6px 11px 6px 8px;border:1px solid var(--line);border-radius:99px;background:rgba(18,16,22,.62);font-size:13px;color:var(--ink);white-space:nowrap}
.feats b{font-weight:400;font-size:14px}
.gain{margin:0;font-size:14.5px;line-height:1.5;color:var(--ink2);width:100%;max-width:420px;padding:12px 14px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(180deg,rgba(124,77,255,.12),rgba(18,16,22,.5))}
.gain b{color:var(--ink);font-weight:600}
.cta{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;max-width:420px;height:58px;border-radius:99px;font-family:var(--font-d);font-weight:600;font-size:17.5px;color:#fff;background:var(--plasma);box-shadow:0 10px 36px -8px rgba(166,76,246,.85),inset 0 1px 0 rgba(255,255,255,.35);overflow:hidden;transition:transform .35s var(--ease),box-shadow .35s}
.cta::before{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.4) 50%,transparent 70%);transform:translateX(-120%);animation:sheen 3.6s ease-in-out infinite 1.4s}
@keyframes sheen{40%,100%{transform:translateX(120%)}}
.cta:active{transform:scale(.97)}
.cta svg{transition:transform .35s var(--ease)}
.cta:hover svg{transform:translateX(4px)}
.cta span,.cta svg{position:relative}

/* ---------- progress ---------- */
.prog{flex:none;padding:4px 16px 6px;display:none;position:relative;z-index:4}
#app:not(.is-intro):not(.is-done) .prog{display:block}
.prog ol{list-style:none;margin:0 0 8px;padding:0;display:flex;justify-content:space-between}
.prog li{display:flex;flex-direction:column;align-items:center;gap:5px;font-size:11px;color:var(--ink3);letter-spacing:.02em;flex:1;transition:color .5s}
.prog li i{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--ink3);transition:all .5s var(--ease);background:transparent}
.prog li.on{color:var(--ink)}.prog li.on i{border-color:#c24bf0;box-shadow:0 0 12px #c24bf0;transform:scale(1.25)}
.prog li.ok{color:var(--ink2)}.prog li.ok i{background:var(--plasma);border-color:transparent}
.track{height:5px;border-radius:9px;background:rgba(244,242,236,.1);overflow:hidden}
.fill{height:100%;width:0;background:var(--plasma);border-radius:9px;box-shadow:0 0 14px rgba(194,75,240,.8);transition:width .9s var(--ease)}
.meter{margin:8px 0 0;font-size:13px;color:var(--ink2);display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:20px}
.m-t{white-space:nowrap}
.meter b{color:var(--ink);font-family:var(--font-d);font-variant-numeric:tabular-nums}
.plus{display:inline-block;font-weight:700;color:#d9a6ff;opacity:0;transform:translateY(6px);font-variant-numeric:tabular-nums}
.plus.fire{animation:plus 1.4s var(--ease)}
@keyframes plus{20%{opacity:1;transform:none}80%{opacity:1}100%{opacity:0;transform:translateY(-8px)}}
#app.kb .prog ol{display:none}

/* ---------- chat ---------- */
.chat{-webkit-mask-image:linear-gradient(transparent,#000 44px);mask-image:linear-gradient(transparent,#000 44px);flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:6px 16px 10px;display:none;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
#app:not(.is-intro) .chat{display:block}
.chat-in{display:flex;flex-direction:column;gap:10px;min-height:100%;justify-content:flex-end;width:100%}
.row{display:flex;align-items:flex-end;animation:msg .6s var(--ease) both;max-width:100%}
@keyframes msg{from{opacity:0;transform:translateY(16px) scale(.96)}}
.row.me{justify-content:flex-end}
.bub{max-width:88%;padding:11px 15px;border-radius:20px;font-size:15.5px;line-height:1.45;overflow-wrap:anywhere}
.row.j .bub{background:rgba(26,22,34,.88);border:1px solid var(--line);border-bottom-left-radius:6px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.row.me .bub{max-width:82%;background:linear-gradient(100deg,#6a3df0,#a64cf6 70%,#b845e6);color:#fff;border-bottom-right-radius:6px;box-shadow:0 8px 24px -10px rgba(166,76,246,.9)}
.bub b{font-weight:600}
.bub small{display:block;margin-top:5px;color:var(--ink3);font-size:13.5px;line-height:1.4}
.bub .ex{display:block;margin-top:6px;font-size:13.5px;color:var(--ink2)}
.typing{display:inline-flex;gap:5px;padding:14px 16px}
.typing i{width:7px;height:7px;border-radius:50%;background:#bda0ff;animation:dots 1.1s ease-in-out infinite}
.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
@keyframes dots{0%,60%,100%{transform:translateY(0);opacity:.4}30%{transform:translateY(-5px);opacity:1}}

/* karty odpovědí */
.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;animation:msg .6s var(--ease) both}
.card{position:relative;display:flex;align-items:center;gap:8px;text-align:left;min-height:56px;min-width:0;padding:9px 28px 9px 10px;border:1px solid var(--line2);border-radius:16px;background:rgba(18,16,22,.78);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);font-size:14px;line-height:1.25;color:var(--ink);transition:transform .35s var(--ease),border-color .3s,background .3s,box-shadow .3s;opacity:0;animation:cardin .6s var(--ease) forwards;animation-delay:calc(var(--i)*70ms + 120ms)}
@keyframes cardin{from{opacity:0;transform:translateY(14px) scale(.94)}to{opacity:1;transform:none}}
.card .em{flex:none;font-size:19px;width:24px;text-align:center}
.card>span:nth-child(2){min-width:0;overflow-wrap:anywhere}
.card .tk{position:absolute;right:6px;top:6px;width:15px;height:15px;border-radius:50%;border:1.5px solid var(--ink3);display:grid;place-items:center;transition:all .3s var(--ease)}
.card .tk svg{width:10px;height:10px;opacity:0;transform:scale(.4);transition:all .3s var(--ease)}
.card:active{transform:scale(.96)}
.card.sel{border-color:#b66cff;background:linear-gradient(135deg,rgba(124,77,255,.4),rgba(194,75,240,.22));box-shadow:0 0 0 1px rgba(182,108,255,.5),0 8px 26px -10px rgba(194,75,240,.9);transform:translateY(-1px)}
.card.sel .tk{background:var(--plasma);border-color:transparent}.card.sel .tk svg{opacity:1;transform:none}
.card.wide{grid-column:1/-1}
.card.own{border-style:dashed}
.cards.lock .card{pointer-events:none;opacity:.35!important;transition:opacity .5s}
.cards.lock .card.sel{opacity:.9!important}
.go-row{grid-column:1/-1;display:flex;gap:8px;margin-top:2px}
.go{flex:1;height:50px;border-radius:99px;font-family:var(--font-d);font-weight:600;font-size:16px;color:#fff;background:var(--plasma);box-shadow:0 8px 28px -8px rgba(166,76,246,.85);transition:transform .3s var(--ease),opacity .3s,filter .3s}
.go:active{transform:scale(.97)}
.go[disabled]{opacity:.38;filter:saturate(.3);box-shadow:none;pointer-events:none}
.go.ghost{flex:0 0 auto;padding:0 20px;background:rgba(18,16,22,.8);border:1px solid var(--line2);box-shadow:none;color:var(--ink2);font-weight:500}

/* souhlas */
.consent{width:100%;padding:14px;border:1px solid var(--line2);border-radius:20px;background:rgba(18,16,22,.82);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);animation:msg .6s var(--ease) both}
.chk{display:flex;gap:12px;align-items:flex-start;text-align:left;width:100%;min-height:48px;font-size:13.5px;line-height:1.45;color:var(--ink2)}
.chk .box{flex:none;width:26px;height:26px;border-radius:9px;border:1.5px solid var(--ink3);display:grid;place-items:center;transition:all .3s var(--ease);margin-top:1px}
.chk .box svg{width:15px;height:15px;opacity:0;transform:scale(.3) rotate(-20deg);transition:all .35s var(--ease)}
.chk.on .box{background:var(--plasma);border-color:transparent;box-shadow:0 0 16px rgba(194,75,240,.7)}
.chk.on .box svg{opacity:1;transform:none}
.chk b{color:var(--ink)}
.consent .go{width:100%;margin-top:12px;display:block}
.err{margin:8px 0 0;color:#ff9db0;font-size:13.5px;min-height:0}

/* composer */
.composer{flex:none;padding:8px 14px calc(10px + var(--safe-b));position:relative;z-index:4;display:none;transition:transform .5s var(--ease),opacity .4s}
#app:not(.is-intro):not(.is-done) .composer{display:block}
#app.hide-comp .composer{display:none!important}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.field{display:flex;align-items:center;gap:8px;padding:6px 6px 6px 18px;border:1px solid var(--line2);border-radius:99px;background:rgba(18,16,22,.9);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);transition:border-color .3s,box-shadow .3s}
.field:focus-within{border-color:#b66cff;box-shadow:0 0 0 3px rgba(124,77,255,.3),0 0 30px -4px rgba(194,75,240,.55)}
#inp{flex:1;min-width:0;height:44px;border:0;outline:0;background:transparent;font-size:16px;color:var(--ink)}
#inp::placeholder{color:#8e89a0}
.send{flex:none;min-width:46px;height:46px;border-radius:99px;display:flex;align-items:center;justify-content:center;gap:6px;padding:0 14px;color:#fff;background:var(--plasma);box-shadow:0 6px 20px -6px rgba(166,76,246,.9);transition:transform .3s var(--ease),opacity .3s,filter .3s}
.send:active{transform:scale(.93)}
.send.off{opacity:.4;filter:saturate(.4)}
.send-l{font-family:var(--font-d);font-weight:600;font-size:14.5px}
.send-l:empty{display:none}
.send:has(.send-l:empty){padding:0;width:46px}
.field.shake{animation:shake .45s}
@keyframes shake{20%{transform:translateX(-7px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(3px)}}

/* závěr */
.final{margin:4px 0 0;width:100%;padding:0 16px 18px;overflow:hidden;border:1px solid rgba(182,108,255,.5);border-radius:22px;background:linear-gradient(160deg,rgba(124,77,255,.28),rgba(18,16,22,.85) 60%);box-shadow:0 0 50px -14px rgba(194,75,240,.8);animation:msg .8s var(--ease) both;text-align:center}
.fhero{position:relative;height:210px;margin:0 -16px;background:url(/img/jarvis-hero.webp) 50% 0/auto 128% no-repeat;-webkit-mask-image:linear-gradient(to bottom,#000 55%,transparent),linear-gradient(to right,transparent calc(50% - 106px),#000 calc(50% - 56px),#000 calc(50% + 56px),transparent calc(50% + 106px));-webkit-mask-composite:source-in;mask-image:linear-gradient(to bottom,#000 55%,transparent),linear-gradient(to right,transparent calc(50% - 106px),#000 calc(50% - 56px),#000 calc(50% + 56px),transparent calc(50% + 106px));mask-composite:intersect}
.fhero::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 30%,rgba(194,75,240,.4),transparent 60%);mix-blend-mode:screen;opacity:.15;animation:breathe 6s ease-in-out infinite}
.fhero+.badge{margin-top:-38px;position:relative}
.badge{display:inline-flex;align-items:center;gap:8px;font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;padding:6px 12px;border-radius:99px;background:rgba(88,224,143,.12);color:#8ef0b4;border:1px solid rgba(88,224,143,.35)}
.final h2{font-family:var(--font-d);font-weight:700;font-size:28px;line-height:1.1;margin:12px 0 6px;letter-spacing:-.02em}
.final p{margin:0;color:var(--ink2);font-size:15px}
.unl{display:flex;flex-direction:column;gap:6px;margin:14px 0 0;padding:0;list-style:none;text-align:left}
.unl li{display:flex;gap:10px;align-items:center;font-size:14px;padding:9px 11px;border-radius:12px;background:rgba(10,10,12,.5);border:1px solid var(--line);opacity:0;transform:translateX(-10px);animation:unl .6s var(--ease) forwards}
.unl li:nth-child(1){animation-delay:.9s}.unl li:nth-child(2){animation-delay:1.2s}.unl li:nth-child(3){animation-delay:1.5s}
@keyframes unl{to{opacity:1;transform:none}}
.unl .lk{color:#8ef0b4}
.mk{display:block;margin:16px auto 0;height:26px;width:auto;opacity:.85}
.fine{margin-top:8px!important;font-size:12.5px!important;color:var(--ink3)!important}
#app.is-done .chat{padding-bottom:calc(22px + var(--safe-b))}

#fx{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:50}

/* kratší displeje / klávesnice */
@media (max-height:700px){
  .lead{font-size:15px}.gain{font-size:13.5px;padding:10px 12px}
  h1{font-size:clamp(32px,9.5vw,42px)}
  .intro-in{gap:9px}
}
@media (max-width:359px){.card{font-size:13px}}
@media (min-width:700px){
  #app{max-width:640px}
  .cards{grid-template-columns:repeat(3,minmax(0,1fr))}
  .card.wide{grid-column:auto}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .row,.card,.intro-in>*,.unl li{opacity:1!important;transform:none!important}
  .rbox{opacity:1!important;transform:translateX(-50%)!important}
}
