/* Sdilene styly stavu formulare Reakce (vstup/zpracovani/chyba/paywall/toast).
   Jeden zdroj pravdy pro /avalanche/ (entry.html) i verejnou titulku (guest).
   Vstupni karta a hero nadpis jedou z reakce_layout.css; tady jsou stavy
   state machine, ktere byly puvodne inline v entry.html. */

/* Viditelnost stavu - state machine ridi reakce.js pres tridu "on". */
.rk-state { display:none; }
.rk-state.on { display:block; }

/* Sdilena kruhova spinner-animace (house style, CSS ring - ne fa-circle-notch) */
.rk-spinner { display:inline-block; width:1rem; height:1rem; border-radius:50%;
  border:2px solid var(--accent-soft); border-top-color:var(--accent);
  animation:rkSpin .7s linear infinite; vertical-align:-.15rem; }
.rk-spinner-xs { width:.8rem; height:.8rem; border-width:2px; }
@keyframes rkSpin { to { transform:rotate(360deg); } }

/* Laskavy paywall (kvota vycerpana) - viz mockup-prvni-kontakt.html, obrazovka 3 */
/* Sjednoceno s chybovou/proc kartou: shodny icon-chip (60px), padding a skala nadpisu. */
.rk-paywall { max-width:560px; margin:0 auto; padding:2.2rem 2rem; text-align:center; }
.rk-paywall-icon { width:60px; height:60px; border-radius:50%; background:var(--accent-soft);
  color:var(--accent); display:flex; align-items:center; justify-content:center; font-size:1.5rem;
  margin:0 auto 1rem; }
.rk-paywall h2 { font-size:clamp(1.1rem, 4.5vw, 1.28rem); font-weight:800; letter-spacing:-.02em; color:var(--ink); margin-bottom:1rem; }
/* Cena, prepinac meny, CTA a vazebni text (.rk-pw-price/.rk-pw-amt/.rk-pw-cur/
   .rk-pw-per/.rk-pw-vat/.rk-cur-switch/.rk-pw-cta/.rk-pw-saf) jedou ze sdileneho
   _paywall_card.css - lokalni duplikaty odstranene pri sjednoceni paywallu. */
.rk-pw-benefits { list-style:none; max-width:380px; margin:0 auto 1.2rem; padding:0; text-align:left; }
.rk-pw-benefits li { display:flex; gap:.55rem; align-items:flex-start; font-size:.84rem;
  color:var(--ink-2); padding:.3rem 0; }
.rk-pw-benefits li i { color:var(--ok); width:1rem; margin-top:.2rem; flex:none; }
.rk-pw-reassure { font-size:.84rem; color:var(--muted); max-width:400px; margin:0 auto 1.4rem; }
.rk-pw-note { margin:1rem 0 0; font-size:.72rem; color:var(--muted); }

/* Zpracovani - sjednoceno s chybovou/paywall kartou (icon-chip + max-width
   + skala nadpisu). Ikona-chip nahore, pak faze (primarni), bar, %+ETA
   (seskupene, sekundarni), zrusit, "muzete odejit" (tercialni). */
.rk-proc { max-width:560px; margin:0 auto; padding:2.2rem 2rem; text-align:center; }
/* Guest rezim: pod kartou stoji dalsi karta stejne sirky (.rk-proc-cta,
   max-width:720px) - ruzna sirka pusobila rusive (bug 2026-07-18). Scopovano
   jen na guest ([data-mode="guest"]), aby se sirka chybove/paywall karty
   (sdili .rk-proc max-width) jinde nezmenila. */
[data-mode="guest"] .rk-proc { max-width:720px; }
.rk-proc .rk-proc-icon { width:60px; height:60px; border-radius:50%; margin:0 auto 1rem;
  display:flex; align-items:center; justify-content:center; font-size:1.5rem;
  background:var(--accent-soft); color:var(--accent); }
.rk-proc .rk-phase { font-size:clamp(1.1rem, 4.5vw, 1.28rem); font-weight:800;
  letter-spacing:-.02em; color:var(--ink); margin-bottom:.2rem; }
/* Doplnujici info z fazoveho retezce ("(...pár minut)" / "(N tokenů)") -
   vlastni radek pod hlavni fazi, mensi a tlumeny (Part 1). */
.rk-proc .rk-phase-sub { font-size:.82rem; line-height:1.45; font-weight:400;
  color:var(--muted); margin:0 auto .2rem; max-width:420px; }
.rk-proc .rk-phase-sub:empty { display:none; }
.rk-barwrap { background:var(--line-soft); border-radius:20px; height:14px; overflow:hidden; max-width:420px; margin:1.1rem auto 0; }
.rk-barfill { height:100%; background:linear-gradient(90deg,#fb923c,#f97316); border-radius:20px; width:0%; transition:width .5s ease; }
/* %+ETA seskupene do jedne sekundarni radky pod barem. */
.rk-proc-meter { display:flex; align-items:baseline; justify-content:center; gap:.55rem; margin-top:.7rem; }
.rk-pct { font-family:var(--mono); font-weight:800; font-size:1.15rem; color:var(--ink-2); line-height:1; }
.rk-eta { color:var(--muted); font-size:.82rem; line-height:1; }
.rk-findings { max-width:520px; margin:1.5rem auto 0; text-align:left; }
.rk-findings .rk-f { display:flex; align-items:center; gap:.6rem; padding:.5rem .8rem;
  border:1px solid var(--line); border-radius:8px; background:var(--bg-card); font-size:.82rem; margin-bottom:.45rem; }
.rk-findings .rk-f i { width:16px; text-align:center; color:var(--accent); }
/* Prubezne mikro-zpravy o nalezech (stav B) */
.rk-procfind { max-width:520px; margin:1rem auto 0; text-align:left; }
.rk-procfind .rk-pf { display:flex; align-items:flex-start; gap:.6rem; padding:.55rem .85rem;
  border:1px solid var(--line-soft); border-radius:9px; background:var(--bg-card);
  font-size:.85rem; line-height:1.45; color:var(--ink-2); margin-bottom:.45rem;
  animation:rkPfIn .3s ease; }
.rk-procfind .rk-pf i { margin-top:.15rem; width:16px; text-align:center; color:var(--accent); }
.rk-procfind .rk-pf.is-paradox i { color:var(--danger); }
@keyframes rkPfIn { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:none; } }
.rk-proc-foot { margin-top:1.7rem; display:flex; flex-direction:column; align-items:center; gap:.9rem; }
.rk-proc-foot .rk-leave { font-size:.78rem; line-height:1.45; color:var(--muted); max-width:400px; }
.rk-proc-foot .rk-leave i { color:var(--accent); margin-right:.3rem; }

/* chybova karta - redesign: klidne "bezpecne selhani, data jsou chranena",
   ne poplasny tvrdy error. House style (accent oranz, mekke stiny, 12px). */
.rk-error { max-width:560px; margin:0 auto; padding:2.2rem 2rem; text-align:center; }
.rk-error .ei { width:60px; height:60px; border-radius:50%; margin:0 auto 1rem;
  display:flex; align-items:center; justify-content:center; font-size:1.5rem;
  background:var(--accent-soft); color:var(--accent); }
.rk-error .em { font-size:clamp(1.1rem, 4.5vw, 1.28rem); font-weight:800;
  letter-spacing:-.02em; color:var(--ink); margin-bottom:.6rem; }
/* uvodni (dynamicka) veta - cteme z backendu, ale drzime ji vzdusnou */
.rk-error .ed { font-size:.92rem; line-height:1.55; color:var(--muted);
  max-width:440px; margin:0 auto 1.3rem; white-space:pre-wrap; }
/* zvyrazneny "privacy" sub-panel: mekky tint + stitek, signal ochrany dat */
.rk-error .rk-err-safe { display:flex; gap:.7rem; align-items:flex-start;
  text-align:left; max-width:440px; margin:0 auto 1.5rem; padding:.85rem 1rem;
  background:rgba(16,185,129,.08); border:1px solid rgba(16,185,129,.28);
  border-radius:12px; }
.rk-error .rk-err-safe > i { color:var(--ok, #10b981); font-size:1.05rem;
  margin-top:.1rem; flex:none; }
.rk-error .rk-err-safe .t { font-weight:700; font-size:.82rem; color:var(--ink-2);
  margin-bottom:.15rem; }
.rk-error .rk-err-safe .d { font-size:.8rem; line-height:1.5; color:var(--muted); }
.rk-error .rk-err-actions { display:flex; gap:.6rem; justify-content:center;
  flex-wrap:wrap; }
.rk-error .rk-err-actions .b { margin:0; }
/* Jemny tip (vlastni anonymizace) - decentni, ne alert; odlisen od zeleneho
   rk-err-safe (jina barva), aby to nepusobilo jako dalsi bezpecnostni hlaska. */
.rk-error .rk-err-tip { display:flex; gap:.6rem; align-items:flex-start;
  text-align:left; max-width:440px; margin:1rem auto 0; padding:.7rem .85rem;
  background:var(--bg-card, #f8fafc); border:1px solid var(--line, #e2e8f0);
  border-radius:12px; }
.rk-error .rk-err-tip i { color:var(--muted-2, #94a3b8); font-size:.95rem;
  margin-top:.15rem; flex:none; }
.rk-error .rk-err-tip span { font-size:.8rem; line-height:1.5; color:var(--muted); }
/* SU-only technicky detail - decentni, sbaleny, house-styled (ne cerny box) */
.rk-error .rk-err-tech { max-width:520px; margin:1.6rem auto 0; text-align:left; }
.rk-error .rk-err-tech summary { cursor:pointer; font-size:.74rem; font-weight:700;
  letter-spacing:.04em; text-transform:uppercase; color:var(--muted-2);
  list-style:none; display:flex; align-items:center; gap:.4rem; padding:.3rem 0; }
.rk-error .rk-err-tech summary::-webkit-details-marker { display:none; }
.rk-error .rk-err-tech summary i { font-size:.7rem; transition:transform .2s; }
.rk-error .rk-err-tech[open] summary i { transform:rotate(90deg); }
.rk-error .rk-err-tech pre { text-align:left; background:var(--bg-card, #f8fafc);
  color:var(--ink-2); border:1px solid var(--line); border-radius:10px;
  padding:.8rem; font-family:var(--mono); font-size:.72rem; line-height:1.5;
  max-height:280px; overflow:auto; margin:.4rem 0 0; white-space:pre-wrap; }

/* Modal "Dokument je prilis dlouhy" (doc_too_long) - meter s aktualni delkou
   vs. limitem + progress bar, viz analysis/avalanche/doc-too-long-modal.html
   (schvaleny mockup). Skryty celym blokem, kdyz doc_limit v payloadu chybi
   (JS necha staticky fallback text v tele modalu beze zmeny). */
.rk-doclimit-meter { background:var(--bg-card, #f8fafc); border:1px solid var(--line, #e2e8f0);
  border-radius:10px; padding:.75rem .85rem; margin:.85rem 0 .25rem; font-size:.8rem; }
.rk-doclimit-meter .nums { font-family:var(--mono); font-weight:700; font-size:.8rem;
  display:flex; justify-content:space-between; gap:.6rem; margin-bottom:.5rem; }
.rk-doclimit-meter .nums .over { color:#dc2626; }
.rk-doclimit-meter .nums .lim { color:var(--muted, #64748b); font-weight:400; }
.rk-doclimit-bar { height:6px; background:var(--line, #e2e8f0); border-radius:999px; overflow:hidden; }
.rk-doclimit-bar > span { display:block; height:100%; width:100%;
  background:linear-gradient(90deg, var(--accent, #f97316), #dc2626); }
.rk-doclimit-hint { font-size:.76rem; color:var(--muted, #64748b); margin-top:.5rem; line-height:1.5; }
.rk-doclimit-hint i { color:var(--ok, #10b981); }
.rk-doclimit-hint b { color:var(--ink, #0f172a); }

/* AI transparentnost (AI Act cl. 50/1): jasna, rozlisitelna informace primo
   v UI, ze s textem pracuje umela inteligence. Dve mista - drobna radka pod
   vstupem a radka pod hotovou reakci (rkAiNoteResult) - obe stejny prosty
   styl (rozhodnuti majitele 2026-07-14: zadny ramecek/karta kolem hlasky). */
.rk-ai-note { display:flex; align-items:center; gap:.45rem; font-size:.74rem;
  line-height:1.4; color:var(--muted); margin:.55rem 0 0; }
.rk-ai-note i { color:var(--muted-2); flex:none; }

/* toast - skryty stav MUSI uplne zmizet (opacity+visibility), ne jen posun dolu:
   drivejsi translateY(80px) nestacil u vyssiho/viceradkoveho toastu a u spodni
   hrany stranky zustaval viset tmavy prouzek. Sirka omezena, aby dlouha hlaska
   zalamovala do bloku misto pasu pres celou sirku. */
.rk-toast { position:fixed; bottom:1.5rem; left:50%;
  transform:translateX(-50%) translateY(20px); opacity:0; visibility:hidden;
  max-width:min(420px, calc(100vw - 2rem)); text-align:left;
  background:#0f172a; color:#fff; font-size:.85rem; line-height:1.4; padding:.7rem 1.1rem; border-radius:10px;
  box-shadow:0 8px 24px rgba(15,23,42,.28);
  transition:transform .3s ease, opacity .3s ease, visibility .3s; z-index:1080; }
.rk-toast.show { transform:translateX(-50%) translateY(0); opacity:1; visibility:visible; }
.rk-toast i { color:#4ade80; margin-right:.5rem; }
@media (prefers-reduced-motion: reduce) {
  .rk-toast { transition:opacity .2s ease, visibility .2s; transform:translateX(-50%); }
  .rk-toast.show { transform:translateX(-50%); }
}

/* ===== Guest-only prvky (verejna titulka) ===== */

/* Honeypot: pole musi byt mimo viewport, ne display:none (nektere boty
   display:none preskakuji). */
.rk-honeypot { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

/* Trust radek pod vstupni kartou (jen anonym) */
.rk-trust { display:flex; gap:1.4rem; justify-content:center; margin-top:1.2rem;
  font-size:.76rem; color:var(--muted); flex-wrap:wrap; }
.rk-trust i { color:var(--ok, #16a34a); margin-right:.3rem; }

/* Souhlas s obchodnimi podminkami - dve vety pod sebou, ne vedle sebe */
.rk-consent { display:flex; flex-direction:column; align-items:center; gap:.15rem;
  margin-top:1.2rem; font-size:.74rem; color:var(--muted); text-align:center; }
.rk-consent a { color:var(--muted); text-decoration:underline; }

/* ===== Teaser + e-mailova brana (guest stav #rkStateTeaser) - design E3 =====
   "Pruvodce krok za krokem" (analysis/fable/flow/end/mockups.html, rozhodnuti
   majitele 2026-07-17). Fade je vizual (curiosity gap), NE ochrana - do DOM
   jde ze serveru jen teaser. Ukazka nahore pres celou sirku, pod ni kompaktni
   brana (stav A); po odeslani odkazu siroka karta s casovou osou 1-2-3
   (stav B). Google = okamzite odemceni, viditelne v obou stavech. */
/* Sirka 860px = stejna jako vstupni formular na titulce (#lp-root .ab-shell,
   index_hero.html). Sjednoceno 2026-07-28: teaser i plny vystup navazuji na
   formular, ze ktereho vznikly, takze stranka pri prepnuti stavu nesmi
   preskocit na jinou sirku sloupce (drive 920px). */
.rk-teaser-wrap { max-width:860px; margin:0 auto; text-align:left; }
.rk-pill-row { text-align:center; margin-bottom:1.1rem; }

/* ── ukazka ── */
.rk-teaser { position:relative; overflow:hidden; padding:1.7rem 1.8rem;
  display:flex; flex-direction:column; }
.rk-teaser-badge { position:absolute; top:0; right:0; background:var(--ok-soft, #dcfce7);
  color:#15803d; font-size:.62rem; font-weight:800; text-transform:uppercase;
  letter-spacing:.05em; padding:.3rem .7rem; border-bottom-left-radius:10px; z-index:3; }
/* Obal textu: text je oriznut na pevny pocet radku (max-height), pres jeho
   SPODEK lezi fade - posledni viditelny radek plynule mizi do bila (curiosity
   gap "pokracuje, ale mizi"). Skryty presah textu je odriznut overflow:hidden. */
.rk-teaser-rxwrap { position:relative; margin-top:.4rem; max-height:11.8em;
  overflow:hidden; }
.rk-teaser .rx { font-size:1.12rem; line-height:1.68; color:var(--ink);
  white-space:pre-wrap; }
/* Lead (prvni veta) = tucne v barve textu. NE oranzove - akcent patri akcim,
   ne obsahu (rozhodnuti majitele 2026-07-17). */
.rk-teaser .rx .rk-teaser-lead { color:var(--ink); font-weight:700; }
/* fade preklryva SPODNI ~2 radky textu - plynuly prechod do bila. Vyssi nez
   drive, aby mizeni bylo zretelne (ne jen tenky prouzek u hrany). */
.rk-teaser .fade { position:absolute; left:0; right:0; bottom:0; height:4.5rem;
  background:linear-gradient(180deg,rgba(255,255,255,0),#fff 96%);
  pointer-events:none; z-index:2; display:none; }
/* fade se zapne, jen kdyz text opravdu pretekl masku - jinak by lezel pod
   poslednim radkem na prazdnem miste (falesne mizeni dokonceneho textu). */
.rk-teaser-rxwrap.is-truncated .fade { display:block; }
/* Tri tecky na konci mizejiciho textu - explicitni signal "pokracuje dal"
   (rozhodnuti majitele 2026-07-17). Sedi vlevo dole nad fade gradientem, tam
   kde posledni radek mizi do bila. Zobrazuji se jen kdyz je text oriznuty
   (JS da .rk-teaser-rxwrap tridu .is-truncated). */
.rk-teaser-rxwrap.is-truncated .fade::after { content:'\2026';
  position:absolute; left:0; bottom:.35rem; color:var(--ink, #0f172a);
  font-size:1.12rem; line-height:1; font-weight:700; }
.rk-teaser-more { margin-top:.9rem; display:inline-flex; align-items:center;
  align-self:flex-start; gap:.4rem; font-size:.8rem; font-weight:700;
  color:var(--accent-ink, #d35400); background:var(--accent-soft, rgba(249,115,22,.1));
  border-radius:999px; padding:.28rem .8rem; }
.rk-teaser-more[hidden] { display:none; }

/* Sdilene prvky brany: chybova hlaska (pouziva i proc CTA) + Google tlacitko */
.rk-gate-err { color:var(--danger, #dc2626); font-size:.82rem; margin-top:.6rem;
  font-weight:600; }
.rk-gate-err[hidden] { display:none; }
.rk-g3-google { display:flex; align-items:center; justify-content:center; gap:.6rem;
  border:1.5px solid var(--line, #e2e8f0); background:#fff; color:var(--ink, #0f172a);
  font-weight:700; font-size:.9rem; padding:.66rem .95rem; border-radius:10px;
  text-decoration:none; transition:border-color .12s, box-shadow .12s; }
.rk-g3-google:hover { border-color:#4285F4; box-shadow:0 0 0 3px rgba(66,133,244,.12);
  color:var(--ink, #0f172a); }

/* ── stav A: kompaktni brana pod ukazkou ── */
.rk-g3 { margin-top:1.1rem; padding:1.4rem 1.6rem; display:grid;
  grid-template-columns:1.1fr 1fr; gap:1.4rem; align-items:center; }
.rk-g3[hidden] { display:none; }
.rk-g3-l h3 { font-size:1.15rem; font-weight:800; letter-spacing:-.01em; color:var(--ink); }
.rk-g3-l p { font-size:.84rem; color:var(--muted); margin:.3rem 0 0; line-height:1.5; }
.rk-g3-row { display:flex; gap:.5rem; margin-bottom:.6rem; }
.rk-g3-row input { flex:1; min-width:0; border:1.5px solid var(--line); border-radius:10px;
  padding:.65rem .9rem; font:inherit; font-size:.9rem; background:#fff; color:var(--ink); }
.rk-g3-row input:focus { outline:none; border-color:var(--accent);
  box-shadow:0 0 0 3px var(--accent-soft, rgba(249,115,22,.1)); }
.rk-g3-send { flex:none; display:inline-flex; align-items:center; gap:.45rem;
  border:1px solid var(--accent-ink, #d35400); background:var(--accent-ink, #d35400);
  color:#fff; font-weight:700; font-size:.88rem; padding:.65rem 1.1rem;
  border-radius:10px; cursor:pointer; white-space:nowrap; }
.rk-g3-send:hover { background:var(--accent-deep, #b34700); }
.rk-g3 .rk-g3-google { margin-bottom:.6rem; }
.rk-g3-alt { font-size:.8rem; color:var(--muted); }
.rk-g3-alt a { color:var(--accent-ink, #d35400); font-weight:700; text-decoration:none; }

/* ── stav B: odkaz odeslan - pruvodce s casovou osou 1-2-3 ── */
.rk-g3-sent { margin-top:1.1rem; padding:1.7rem 1.8rem 1.5rem; }
.rk-g3-sent[hidden] { display:none; }
.rk-g3-sent h3 { font-size:1.25rem; font-weight:800; letter-spacing:-.01em;
  color:var(--ink); text-align:center; }
.rk-g3s-sub { font-size:.87rem; color:var(--muted); text-align:center;
  margin:.35rem 0 1.5rem; }
.rk-g3s-sub b { color:var(--ink); font-family:var(--mono); font-size:.82rem;
  background:var(--line-soft, #f1f5f9); border-radius:6px; padding:.1rem .45rem; }
.rk-g3s-sub a { color:var(--accent-ink, #d35400); font-weight:700; text-decoration:none; }

.rk-g3s-steps { display:grid; grid-template-columns:repeat(3,1fr); margin-bottom:1.3rem; }
.rk-g3s-step { text-align:center; padding:0 .8rem; position:relative; }
/* spojnice mezi kroky (mezi tecky sousednich sloupcu) */
.rk-g3s-step + .rk-g3s-step::before { content:''; position:absolute; left:-18%;
  top:19px; width:36%; height:2px; background:var(--line, #e2e8f0); }
.rk-g3s-step.done + .rk-g3s-step::before { background:var(--ok-line, #bbf7d0); }
.rk-g3s-step .dot { width:40px; height:40px; border-radius:50%; margin:0 auto .6rem;
  display:flex; align-items:center; justify-content:center; font-weight:800;
  font-family:var(--mono); position:relative; z-index:1; }
.rk-g3s-step.done .dot { background:var(--ok-soft, #dcfce7); color:#15803d; }
.rk-g3s-step.now .dot { background:var(--accent-soft, rgba(249,115,22,.1));
  color:var(--accent-ink, #d35400); box-shadow:0 0 0 3px var(--accent-soft, rgba(249,115,22,.1)); }
.rk-g3s-step.next .dot { background:var(--line-soft, #f1f5f9); color:var(--muted-2, #94a3b8); }
.rk-g3s-step .st { font-size:.88rem; font-weight:800; color:var(--ink); }
.rk-g3s-step.next .st { color:var(--muted); }
.rk-g3s-step .sd { font-size:.76rem; color:var(--muted); line-height:1.45; margin-top:.2rem; }
.rk-g3s-mail { display:flex; gap:.55rem; justify-content:center; margin-top:.6rem; }
.rk-g3s-mail a { display:inline-flex; align-items:center; gap:.45rem;
  border:1.5px solid var(--line, #e2e8f0); background:#fff; border-radius:10px;
  padding:.4rem .7rem; font-size:.76rem; font-weight:700; color:var(--ink-2, #334155);
  text-decoration:none; }
.rk-g3s-mail a:hover { border-color:var(--muted-2, #94a3b8); color:var(--ink); }

.rk-g3s-foot { border-top:1px dashed var(--line, #e2e8f0); padding-top:1.05rem;
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  flex-wrap:wrap; }
.rk-g3s-meta { font-size:.78rem; color:var(--muted); }
.rk-g3s-meta a { color:var(--accent-ink, #d35400); font-weight:700; text-decoration:none; }
.rk-g3s-ok { display:block; color:var(--ok, #16a34a); font-weight:600; margin-top:.2rem; }
.rk-g3s-ok[hidden] { display:none; }
.rk-g3s-fast { display:flex; align-items:center; gap:.7rem; }
.rk-g3s-fast > span { font-size:.78rem; font-weight:800; color:var(--ink-2, #334155); }
.rk-g3s-fast .rk-g3-google { padding:.5rem .85rem; font-size:.84rem; }

/* Mobil: brana i kroky pod sebe, input min 16px (iOS zoom fix). */
@media (max-width:720px) {
  .rk-g3 { grid-template-columns:1fr; gap:1rem; }
  .rk-g3s-steps { grid-template-columns:1fr; gap:1.1rem; }
  .rk-g3s-step + .rk-g3s-step::before { display:none; }
  .rk-g3s-foot { flex-direction:column; align-items:flex-start; }
}
@media (max-width:640px) {
  .rk-g3-row input { font-size:16px; }
}
/* Uzky mobil: e-mail radek (input + tlacitko Poslat odkaz) uz vedle sebe
   nevejde (tlacitko ma pevny nezalomitelny text) - pod sebe, tlacitko na
   plnou sirku. Bez tohoto pravidla obsah karty pretekal mimo (bug 2026-07-18). */
@media (max-width:420px) {
  .rk-g3-row { flex-direction:column; }
  .rk-g3-row .rk-g3-send { width:100%; justify-content:center; }
}

/* ===== Guest zpracovani - design P1 "Mapa cesty" =====
   Mini-osa nad progress kartou (prislib cesty 1-2-3, po dokonceni se rozvine
   do velke osy finale E3) + CTA ze stejnych komponent jako brana E3 (rk-g3). */
.rk-msteps { display:flex; align-items:center; justify-content:center; gap:.6rem;
  font-size:.74rem; font-weight:700; color:var(--muted); margin-bottom:1rem;
  flex-wrap:wrap; }
.rk-msteps .m { display:inline-flex; align-items:center; gap:.4rem; }
.rk-msteps .md { width:22px; height:22px; border-radius:50%; display:inline-flex;
  align-items:center; justify-content:center; font-family:var(--mono);
  font-size:.68rem; font-weight:800; background:var(--line-soft, #f1f5f9);
  color:var(--muted-2, #94a3b8); }
.rk-msteps .m.now { color:var(--ink); }
.rk-msteps .m.now .md { background:var(--accent-soft, rgba(249,115,22,.1));
  color:var(--accent-ink, #d35400); box-shadow:0 0 0 2px var(--accent-soft, rgba(249,115,22,.1)); }
.rk-msteps .ln { width:26px; height:2px; background:var(--line, #e2e8f0); }

/* CTA blok: siri se jako dvousloupcova brana (rk-g3), proto sirsi nez samotna
   progress karta (560px) - grid potrebuje prostor pro input+tlacitka. */
.rk-proc-cta { max-width:720px; margin:.2rem auto 0; }
/* POZOR: tady NESMI byt display:flex. Obsah je jedna souvisla veta s <b>
   uprostred ("Hotovo, odkaz miri na <b>adresa</b>. Cela reakce ..."), a flex
   z kazdeho textoveho useku kolem <b> udela samostatnou polozku - veta se
   rozlamala do sloupcu s dirami kolem e-mailu. Ikona se misto toho zarovnava
   pres inline-flex na sobe. */
.rk-proc-cta-done { display:block; text-align:center;
  background:var(--ok-soft, #dcfce7); border:1px solid var(--ok-line, #bbf7d0);
  border-radius:12px; padding:.9rem 1.1rem; font-size:.86rem; color:#15803d;
  margin-top:1.1rem; line-height:1.5; }
.rk-proc-cta-done[hidden] { display:none; }
.rk-proc-cta-done i { color:#16a34a; font-size:1.05rem; margin-right:.4rem;
  vertical-align:-.05em; }
/* E-mail se nesmi zalomit uprostred adresy. */
.rk-proc-cta-done b { white-space:nowrap; }

/* ===== Guest register modal (session-limit -> pořádná výzva k registraci) ===== */
.rk-reg-modal { border:none; border-radius:18px; overflow:hidden; box-shadow:0 20px 60px rgba(15,23,42,.25); }
.rk-reg-close { position:absolute; top:.8rem; right:.9rem; z-index:3; width:32px; height:32px; border:none;
  background:var(--line-soft, #f1f5f9); color:var(--muted, #64748b); border-radius:50%; cursor:pointer; font-size:.9rem; }
.rk-reg-close:hover { background:var(--line, #e2e8f0); color:var(--ink, #0f172a); }
.rk-reg-body { padding:2.2rem 2rem 2rem; text-align:center; }
.rk-reg-ic { width:56px; height:56px; border-radius:50%; margin:0 auto 1rem;
  background:var(--accent-soft, rgba(249,115,22,.1)); color:var(--accent-ink, #d35400);
  display:flex; align-items:center; justify-content:center; font-size:1.4rem; }
.rk-reg-body h3 { font-size:1.35rem; font-weight:800; letter-spacing:-.02em; color:var(--ink, #0f172a); }
.rk-reg-body p { font-size:.92rem; color:var(--muted, #64748b); line-height:1.55; max-width:36ch; margin:.5rem auto 1.5rem; }
.rk-reg-google { display:flex; align-items:center; justify-content:center; gap:.7rem; width:100%;
  border:1.5px solid var(--line, #e2e8f0); background:#fff; color:var(--ink, #0f172a); font-weight:700;
  font-size:1rem; padding:.8rem; border-radius:12px; text-decoration:none; transition:all .12s; }
.rk-reg-google:hover { border-color:#4285F4; box-shadow:0 0 0 3px rgba(66,133,244,.12); color:var(--ink, #0f172a); }
.rk-reg-or { display:flex; align-items:center; gap:.8rem; margin:1.1rem 0; color:var(--muted-2, #94a3b8); font-size:.78rem; }
.rk-reg-or::before, .rk-reg-or::after { content:''; flex:1; height:1px; background:var(--line, #e2e8f0); }
.rk-reg-btn { display:flex; align-items:center; justify-content:center; gap:.5rem; width:100%; padding:.75rem;
  border-radius:12px; font-weight:700; font-size:.95rem; text-decoration:none; margin-bottom:.6rem; transition:all .12s; }
.rk-reg-btn-primary,
.rk-reg-btn-primary i { color:#fff !important; }
.rk-reg-btn-primary { background:var(--accent-ink, #d35400); border:1px solid var(--accent-ink, #d35400); }
.rk-reg-btn-primary:hover { background:var(--accent-deep, #b34700); color:#fff !important; }
.rk-reg-btn-ghost { background:#fff; color:var(--ink-2, #334155); border:1px solid var(--line, #e2e8f0); margin-bottom:0; }
.rk-reg-btn-ghost:hover { border-color:var(--muted-2, #94a3b8); color:var(--ink, #0f172a); }

/* ── guest PLNY vystup (skip magic link): prepinace + srovnani + CTA ──
   Guest stavy ziji na verejne titulce (_guest_entry.html) a nemaji styly z
   entry.html - komponenty prepinacu/srovnani jsou proto zrcadlene tady
   (stejne hodnoty jako entry.html, fallbacky pro tokeny mimo .ab-shell). */
/* Segmenty vycentrovane - stejne jako lista forem u prihlaseneho vysledku
   (#rkFormBar v entry.html). Sjednoceno 2026-07-28. */
.rk-seg-row { display:flex; align-items:center; justify-content:center;
  gap:.5rem; flex-wrap:wrap; margin:0 0 .8rem; }
/* Stin + bily prstenec (2026-07-28): segmenty maji zustat citelne i kdyz
   pod nimi prochazi text (sticky lista je pruhledna). */
.rk-seg { display:inline-flex; border:1px solid var(--line, #e2e8f0); border-radius:20px;
  overflow:hidden; background:var(--bg-card, #fff);
  box-shadow:0 2px 6px rgba(15,23,42,.10), 0 0 0 4px rgba(255,255,255,.85); }
.rk-seg[hidden] { display:none; }
.rk-seg button { border:none; background:var(--bg-card, #fff); color:var(--muted, #64748b);
  font-size:.76rem; font-weight:600; padding:.3rem .8rem; cursor:pointer;
  border-right:1px solid var(--line, #e2e8f0); display:inline-flex; align-items:center; gap:.35rem; }
.rk-seg button:last-child { border-right:none; }
.rk-seg button.on, .rk-seg button.is-active { background:var(--accent-ink, #d35400); color:#fff; }
.rk-seg button:disabled { cursor:default; opacity:.85; }
.rk-seg button .rk-spinner-xs { border-color:currentColor; border-top-color:transparent; }

/* Tichy prepinac srovnani (2026-07-28): zadny ramecek ani vypln, jen
   knoflik a popisek. Drive oranzovy pill, ktery v liste kricel vic nez
   vlastni volba formy reakce. Barvu dostava az v zapnutem stavu. */
.rk-aitoggle { display:inline-flex; align-items:center; gap:.5rem; border:none;
  background:none; justify-self:start; padding:.34rem .2rem; font-size:.78rem;
  font-weight:600; color:var(--muted, #64748b); cursor:pointer; user-select:none; }
.rk-aitoggle:hover { color:var(--ink-2, #334155); }
.rk-aitoggle .rk-knob { width:30px; height:17px; border-radius:999px; background:var(--line, #e2e8f0);
  position:relative; transition:background .15s; flex:none; }
.rk-aitoggle .rk-knob::after { content:''; position:absolute; top:2px; left:2px; width:13px; height:13px;
  border-radius:50%; background:#fff; box-shadow:0 1px 2px rgba(0,0,0,.2); transition:left .15s; }
/* Zapnuty stav barvi JEN knoflik - zadne oranzove pill pozadi za popiskem
   (2026-07-28). Vypln/border explicitne none, aby je nevratilo obecnejsi
   pravidlo pro tlacitka. */
.rk-aitoggle.on { color:var(--ink, #0f172a); background:none; border:none; box-shadow:none; }
.rk-aitoggle.on .rk-knob { background:var(--accent, #f97316); }
.rk-aitoggle.on .rk-knob::after { left:15px; }

/* VZDY jeden sloupec (2026-07-28): srovnani s beznou AI se zobrazuje POD
   reakci, ne vedle ni. Dvousloupcovy rezim (.split) i siroky wrap byly
   zruseny - roztahovani stranky pri zapnuti prepinace pusobilo rusive. */
.rk-outgrid { display:grid; grid-template-columns:1fr; gap:.9rem; align-items:start; }
/* Nadpis nad kartou reakce je zbytecny, kdyz stoji sama; hlavicka karty
   srovnani se naopak ukazuje vzdy, kdyz je karta videt. */
.rk-out-mine .rk-chead { display:none; }
.rk-chead { display:flex; align-items:center; gap:.5rem; font-weight:800; font-size:.8rem;
  color:var(--ink, #0f172a); padding:0 .2rem; margin-bottom:.5rem; }
.rk-out-ai .rk-chead i { color:var(--muted-2, #94a3b8); }
.rk-chead .sub { font-weight:500; font-size:.7rem; color:var(--muted, #64748b); margin-left:auto;
  display:inline-flex; align-items:center; gap:.35rem; }
.rk-ai-card { background:var(--bg, #f8fafc); box-shadow:none; }
.rk-ai-body { padding:1.2rem 1.4rem; font-size:.88rem; line-height:1.65;
  color:var(--ink-2, #334155); white-space:pre-wrap; }
.rk-ai-skel { padding:1.2rem 1.4rem; }
.rk-ai-skel .l { height:.7rem; border-radius:4px; background:var(--line-soft, #f1f5f9);
  margin-bottom:.55rem; }
.rk-ai-fail { text-align:center; padding:1.1rem .8rem; }
.rk-ai-fail p { color:var(--muted, #64748b); font-size:.82rem; margin:.4rem 0 .8rem; }
.rk-ai-fail i { color:#dc2626; }
/* .rk-teaser-wrap.wide zrusen 2026-07-28 spolu s dvousloupcovym srovnanim. */

/* CTA "Ulozte si tuto reakci": Google nejvetsi, pod nim dve tlacitka vedle
   sebe (Zalozit ucet + Prihlasit se) - vyplni radek pod Googlem. */
.rk-g3-duo { display:flex; gap:.6rem; }
.rk-g3-duo .rk-g3-send, .rk-g3-duo .rk-g3-login { flex:1; justify-content:center;
  text-align:center; text-decoration:none; }
/* Bily text na oranzovem tlacitku i pro <a> (obecne odkazove barvy stranky
   ho jinak prebiji do tmava). */
a.rk-g3-send, a.rk-g3-send:hover, a.rk-g3-send:focus { color:#fff; }
.rk-g3-login { display:inline-flex; align-items:center; gap:.45rem;
  border:1.5px solid var(--line, #e2e8f0); background:#fff;
  color:var(--ink, #0f172a); font-weight:700; font-size:.88rem;
  padding:.65rem 1.1rem; border-radius:10px; white-space:nowrap; }
a.rk-g3-login:hover, a.rk-g3-login:focus { border-color:var(--muted-2, #94a3b8);
  color:var(--ink, #0f172a); }
