/* FanSpeak app design system. Načítá ho appka (templates/app/base.html) i web
   (templates/landing/base.html), který k němu přidává jen site.css. */

/* ── Tokeny a základ ────────────────────────────────────────────────────── */
:root {
  --fs-bg: #0E0F12; --fs-surface-1: #15161A; --fs-surface-2: #1B1C21;
  --fs-surface-3: #23242B; --fs-surface-4: #2B2D35;
  --fs-hairline: rgba(255,255,255,.07); --fs-hairline-2: rgba(255,255,255,.12);
  --fs-border-control: #666770; --fs-border-hover: rgba(255,255,255,.85);
  --fs-text: #F2F3F5; --fs-text-muted: #B6BBC5; --fs-text-dim: #868C98;
  --fs-teal: #12CFAC; --fs-teal-hi: #4FE0C6; --fs-teal-dim: rgba(18,207,172,.12); --fs-teal-ring: rgba(18,207,172,.38);
  --fs-violet: #B9A3FF; --fs-violet-dim: rgba(185,163,255,.14); --fs-violet-ring: rgba(185,163,255,.4);
  --fs-coral: #FF7676; --fs-coral-dim: rgba(255,118,118,.12); --fs-coral-ring: rgba(255,118,118,.4);
  --fs-amber: #F7C04A; --fs-amber-dim: rgba(247,192,74,.13); --fs-amber-ring: rgba(247,192,74,.4);
  /* Záložní řezy Geist mají metriky přepočtené na Geist (templates/_fonts.html) */
  --fs-sans: "Geist", "Geist Fallback", "Geist Fallback Roboto", "Geist Fallback DejaVu", system-ui, -apple-system, sans-serif;
  --fs-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --fs-r-1: 4px; --fs-r-2: 8px; --fs-r-3: 12px; --fs-r-4: 16px; --fs-r-5: 24px; --fs-r-6: 32px; --fs-r-7: 48px; --fs-r-8: 64px;
  --fs-radius-xs: 8px; --fs-radius-sm: 12px; --fs-radius-md: 16px; --fs-radius-lg: 22px; --fs-radius-xl: 30px; --fs-radius-pill: 999px;
  --fs-rail-w: 248px; --fs-page-max: 1880px; --fs-page-narrow: 1180px;
  --fs-page-gutter: clamp(24px, 4vw, 56px);
  --fs-ease: cubic-bezier(.2,.7,.2,1); --fs-ease-out: cubic-bezier(.16,1,.3,1);
  --fs-dur-fast: 120ms; --fs-dur: 200ms; --fs-dur-slow: 360ms;
  --fs-ink: 255,255,255;
  --fs-shadow-pop: 0 0 0 1px rgba(0,0,0,.4), 0 12px 32px -8px rgba(0,0,0,.6);
  /* Maska siluety fanouška bez fotky (hlava a ramena, barvu dává pozadí), viz Avatar */
  --fs-silhouette: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Ccircle cx='20' cy='16' r='7.5'/%3E%3Cpath d='M5 40c0-8.5 6.7-13.5 15-13.5S35 31.5 35 40z'/%3E%3C/svg%3E");
}
/* Světlý režim přepisuje jen barvy. --fs-ink je RGB „inkoustu“ pro průsvitné
   výplně hoverů a čipů: bílá na tmavém, skoro černá na světlém, stejná krytí. */
:root[data-theme="light"] {
  --fs-bg: #F4F5F8; --fs-surface-1: #FFFFFF; --fs-surface-2: #F7F8FA;
  --fs-surface-3: #EEF0F3; --fs-surface-4: #E4E6EB;
  --fs-hairline: rgba(16,18,26,.08); --fs-hairline-2: rgba(16,18,26,.14);
  --fs-border-control: #B8BCC6; --fs-border-hover: rgba(16,18,26,.75);
  --fs-text: #111318; --fs-text-muted: #4E5564; --fs-text-dim: #626976;
  --fs-teal: #086B59; --fs-teal-hi: #055243; --fs-teal-dim: rgba(18,207,172,.14); --fs-teal-ring: rgba(8,107,89,.4);
  --fs-violet: #5A3FD6; --fs-violet-dim: rgba(106,78,230,.12); --fs-violet-ring: rgba(90,63,214,.4);
  --fs-coral: #B42B2B; --fs-coral-dim: rgba(215,62,62,.11); --fs-coral-ring: rgba(180,43,43,.4);
  --fs-amber: #7F5700; --fs-amber-dim: rgba(247,192,74,.22); --fs-amber-ring: rgba(127,87,0,.4);
  --fs-ink: 16,18,26;
  --fs-shadow-pop: 0 0 0 1px rgba(16,18,26,.08), 0 12px 32px -8px rgba(16,18,26,.2);
}
*, *::before, *::after { box-sizing: border-box; }
html { background: var(--fs-bg); color-scheme: dark; -webkit-text-size-adjust: 100%; overflow-x: hidden; }
body { margin: 0; font: 400 14px/1.45 var(--fs-sans); color: var(--fs-text); background: var(--fs-bg);
  -webkit-font-smoothing: antialiased; font-feature-settings: "ss01", "cv11"; }
:root[data-theme="light"] { color-scheme: light; }
h1, h2, h3, h4, p { margin: 0; }
h1 { font-size: 28px; font-weight: 500; letter-spacing: -.02em; line-height: 1.15; }
h2 { font-size: 22px; font-weight: 500; letter-spacing: -.02em; line-height: 1.25; }
h3 { font-size: 15px; font-weight: 500; letter-spacing: -.01em; }
a { color: var(--fs-teal); text-decoration: none; }
/* Hover jen holých odkazů. Specificita (0,1,0): přebije `a`, ale prohraje
   s pravidly komponent typu `.rp-context a`, takže je nepřebarví. */
:where(a:not([class])):hover { color: var(--fs-teal-hi); }
button, input, select, textarea { font: inherit; color: inherit; }
svg { display: block; }
img, video { display: block; max-width: 100%; }
::selection { background: var(--fs-teal); color: var(--fs-bg); }
.num { font-variant-numeric: tabular-nums; }
.ta-r { text-align: right; }
.fs-small { font-size: 13px; } .fs-dim { color: var(--fs-text-dim); } .fs-muted { color: var(--fs-text-muted); }
.fs-mono { font-family: var(--fs-mono); font-size: 13px; }
.fs-xs { font-size: 12px; }
.fs-text-dim { color: var(--fs-text-dim); } .fs-text-muted { color: var(--fs-text-muted); }
:focus-visible { outline: 2px solid var(--fs-teal); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; animation: none !important; } }

/* ── Barva platformy ───────────────────────────────────────────────────────
   Jedna trojice RGB na platformu, ať jde použít s libovolným krytím
   (výplň avataru .18, obroučka .5, tečka plná). */
.pf-youtube   { --pf: 255,  68,  68; }
.pf-instagram { --pf: 193,  53, 132; }
.pf-facebook  { --pf:  24, 119, 242; }
.pf-x         { --pf: 226, 232, 240; }
.pf-tiktok    { --pf:  37, 244, 238; }
.pf-onlyfans  { --pf:   0, 175, 240; }
.pf-fanvue    { --pf: 255, 145,  77; }
.pf-fansly    { --pf: 129, 108, 255; }
.pf-wordpress { --pf:  33, 117, 155; }
/* Na bílé jsou světlé brandové barvy nečitelné (X, TikTok, OnlyFans, Fanvue), tmavší odstíny drží 4,5:1 */
:root[data-theme="light"] .pf-youtube  { --pf: 220,  38,  38; }
:root[data-theme="light"] .pf-facebook { --pf:  16,  96, 210; }
:root[data-theme="light"] .pf-x        { --pf:  15,  20,  25; }
:root[data-theme="light"] .pf-tiktok   { --pf:  17,  17,  17; }
:root[data-theme="light"] .pf-onlyfans { --pf:   0, 118, 170; }
:root[data-theme="light"] .pf-fanvue   { --pf: 190,  82,   8; }
:root[data-theme="light"] .pf-fansly   { --pf:  92,  70, 220; }

/* ── Utility ──────────────────────────────────────────────────────────────
   d-none přepíná JS na prvcích, které mají display z vlastní komponenty,
   proto !important. */
.d-none { display: none !important; }
.fs-stack { display: flex; flex-direction: column; gap: var(--fs-r-3); }
.fs-stack-sm { display: flex; flex-direction: column; gap: var(--fs-r-2); }
.fs-stack-lg { display: flex; flex-direction: column; gap: var(--fs-r-5); }
.fs-row-between { display: flex; align-items: center; justify-content: space-between; gap: var(--fs-r-3); }
.fs-row-end { display: flex; align-items: center; justify-content: flex-end; gap: var(--fs-r-2); }
.mb-3 { margin-bottom: var(--fs-r-3); } .mb-4 { margin-bottom: var(--fs-r-4); }
/* Jen pro čtečky; display: none by čtečka ignorovala i změnu textu v live regionu */
.fs-sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }

.fs-grid { display: grid; gap: var(--fs-r-4); }
.fs-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1100px) { .fs-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .fs-grid--4 { grid-template-columns: 1fr; } }

/* ── Layout: lišta, stránka, hlavička ───────────────────────────────────── */
.fs-rail { position: fixed; inset: 0 auto 0 0; z-index: 50; width: var(--fs-rail-w); display: flex; flex-direction: column;
  padding: 20px 16px; gap: 2px; background: var(--fs-bg); border-right: 1px solid var(--fs-hairline); }
.fs-rail__head { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }
.fs-brand { display: flex; align-items: center; padding: 4px 8px 18px; }
.fs-brand__img { height: 28px; width: auto; display: block; }
.fs-brand__img--light, .fs-theme-toggle__light { display: none; }
:root[data-theme="light"] .fs-brand__img--light, :root[data-theme="light"] .fs-theme-toggle__light { display: block; }
:root[data-theme="light"] .fs-brand__img--dark, :root[data-theme="light"] .fs-theme-toggle__dark { display: none; }
.fs-theme-toggle__track { position: relative; margin-left: auto; width: 30px; height: 18px; flex-shrink: 0; border-radius: var(--fs-radius-pill); background: var(--fs-surface-4);
  transition: background var(--fs-dur-fast) var(--fs-ease); }
.fs-theme-toggle__track::after { content: ""; position: absolute; left: 2px; top: 2px; width: 14px; height: 14px; border-radius: 50%; background: var(--fs-text-muted);
  transition: left var(--fs-dur) var(--fs-ease), background var(--fs-dur) var(--fs-ease); }
.fs-theme-toggle[aria-checked="true"] .fs-theme-toggle__track { background: var(--fs-teal); }
.fs-theme-toggle[aria-checked="true"] .fs-theme-toggle__track::after { left: 14px; background: var(--fs-bg); }
.fs-rail__toggle { display: none; margin: 0 0 18px auto; padding: 6px; border: 0; border-radius: var(--fs-radius-xs); background: transparent; color: var(--fs-text-muted); cursor: pointer; }
.fs-rail__toggle:hover { color: var(--fs-text); background: rgba(var(--fs-ink),.05); }
.fs-rail__nav { flex: 1; min-height: 0; display: flex; flex-direction: column; gap: 2px; overflow-y: auto; scrollbar-width: none;
  margin: 0 -4px; padding: 2px 4px; }
.fs-rail__group { font-size: 12px; font-weight: 500; color: var(--fs-text-dim); padding: 18px 12px 6px; }
.fs-rail__sep { display: none; }
.fs-rail__item, .ss-nav__item { display: flex; align-items: center; gap: 10px; height: 38px; padding: 0 12px; border-radius: var(--fs-radius-sm);
  color: var(--fs-text-muted); font-weight: 500; border: 0; background: transparent; width: 100%; cursor: pointer; text-align: left; white-space: nowrap;
  transition: background var(--fs-dur-fast) var(--fs-ease), color var(--fs-dur-fast) var(--fs-ease); }
.fs-rail__item svg, .ss-nav__item svg { width: 18px; height: 18px; color: var(--fs-text-dim); flex-shrink: 0; }
.fs-rail__item:hover, .ss-nav__item:hover { background: rgba(var(--fs-ink),.05); color: var(--fs-text); }
.fs-rail__item.is-active, .ss-nav__item.is-active { background: rgba(var(--fs-ink),.07); color: var(--fs-text); }
.fs-rail__item.is-active svg, .ss-nav__item.is-active svg { color: var(--fs-teal); }
.fs-rail__item-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
/* Počet v liště je číslo, ne pilulka: jantarové jen to, co čeká na vás */
.fs-rail__count { margin-left: auto; font-size: 12px; font-weight: 500; color: var(--fs-text-dim); font-variant-numeric: tabular-nums; }
.fs-rail__count--warn { color: var(--fs-amber); }
.fs-rail__foot { margin-top: auto; padding-top: 12px; display: flex; flex-direction: column; gap: 4px; }

/* Avatar má pod obrázkem vždycky iniciálu: podepsané CDN adresy Instagramu
   a Facebooku expirují, fanspeak.js pak obrázek schová a odkryje iniciálu. */
.fs-user-pill { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: var(--fs-radius-md); border: 1px solid var(--fs-hairline);
  background: var(--fs-surface-1); width: 100%; cursor: pointer; text-align: left; overflow: hidden;
  transition: border-color var(--fs-dur-fast) var(--fs-ease); }
.fs-user-pill:hover { border-color: var(--fs-hairline-2); }
.fs-user-pill__mascot { width: var(--mascot-s); height: var(--mascot-s); flex-shrink: 0; }
.fs-user-pill__id { min-width: 0; display: flex; flex-direction: column; gap: 2px; align-items: flex-start; }
.fs-user-pill__name { max-width: 100%; font-size: 13px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.fs-page { margin-left: var(--fs-rail-w); min-height: 100vh; padding: 28px var(--fs-page-gutter) 56px; }
.fs-page > * { max-width: var(--fs-page-max); }
.fs-page--narrow > * { max-width: var(--fs-page-narrow); }
.fs-page > .fs-banner, .fs-page > .fs-alert { margin-bottom: 16px; }
.fs-pagehead { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 28px; }
.fs-pagehead__title { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; }
.fs-pagehead__sub { color: var(--fs-text-dim); margin-top: 6px; }
.fs-pagehead__actions { display: flex; gap: 8px; flex-wrap: wrap; min-width: 0; max-width: 100%; }
/* Telefon: akce se zalamují, hlavní tlačítko jde na začátek, ne na konec druhého řádku */
@media (max-width: 600px) { .fs-pagehead__actions > .fs-btn--primary { order: -1; } }
.fs-pagehead__back { display: inline-flex; align-items: center; gap: 6px; color: var(--fs-text-dim); font-size: 13px; margin-bottom: 8px; }
.fs-pagehead__back svg { width: 15px; height: 15px; }
.fs-pagehead__back:hover { color: var(--fs-text); }

/* Spodní lišta jen na mobilu, šuplík s lištou pod „Více" */
.fs-tabbar, .fs-rail-overlay { display: none; }

@media (max-width: 880px) {
  .fs-page { margin-left: 0; padding: 20px 16px calc(64px + env(safe-area-inset-bottom)); }
  .fs-pagehead { margin-bottom: 20px; }
  .fs-pagehead__title { font-size: 24px; }

  /* Zavřený šuplík stojí mimo obrazovku. Bez visibility by jeho odkazy dál braly
     fokus z klávesnice a četla je čtečka; schová se až po dojetí animace. */
  .fs-rail { transform: translateX(-100%); visibility: hidden;
    transition: transform var(--fs-dur) var(--fs-ease), visibility 0s linear var(--fs-dur); }
  .fs-shell.is-drawer-open .fs-rail { transform: none; visibility: visible; transition: transform var(--fs-dur) var(--fs-ease); }
  .fs-rail__toggle { display: inline-flex; }
  .fs-rail-overlay { position: fixed; inset: 0; z-index: 49; background: rgba(0,0,0,.6); }
  .fs-shell.is-drawer-open .fs-rail-overlay { display: block; }
  /* V šuplíku na 390 px by menu vpravo od lišty vyjelo z obrazovky */
  .fs-rail .fs-dropdown__menu--rail { left: 0; right: 0; bottom: calc(100% + 6px); min-width: 0; }

  .fs-tabbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; display: grid; grid-template-columns: repeat(4, 1fr);
    padding-bottom: env(safe-area-inset-bottom); background: var(--fs-bg); border-top: 1px solid var(--fs-hairline-2); }
  .fs-shell.is-drawer-open .fs-tabbar { z-index: 48; }
  .fs-tabbar__item { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; min-height: 56px; padding: 6px 4px 8px;
    border: 0; background: transparent; cursor: pointer; font-size: 11px; font-weight: 500; color: var(--fs-text-dim); }
  .fs-tabbar__item svg { width: 22px; height: 22px; }
  .fs-tabbar__item.is-active { color: var(--fs-teal); }
  .fs-tabbar__item:focus-visible { outline-offset: -2px; border-radius: var(--fs-radius-xs); }

  /* Pod 16 px iOS Safari při fokusu přiblíží stránku */
  .fs-input, .fs-select, .fs-textarea { font-size: 16px; }
}

/* ── Tlačítka ───────────────────────────────────────────────────────────── */
.fs-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: 40px; padding: 0 16px;
  border-radius: var(--fs-radius-sm); border: 1px solid transparent; background: transparent; color: var(--fs-text);
  font-weight: 500; font-size: 14px; cursor: pointer; white-space: nowrap; text-decoration: none;
  transition: background var(--fs-dur-fast) var(--fs-ease), border-color var(--fs-dur-fast) var(--fs-ease), color var(--fs-dur-fast) var(--fs-ease); }
.fs-btn svg { width: 16px; height: 16px; }
.fs-btn--primary { background: var(--fs-text); color: var(--fs-bg); }
.fs-btn--primary:hover { background: #FFFFFF; color: var(--fs-bg); }
:root[data-theme="light"] .fs-btn--primary:hover { background: #2B2D35; }
.fs-btn--accent { background: var(--fs-teal); color: #0A0B0D; }
.fs-btn--accent:hover { background: var(--fs-teal-hi); color: #0A0B0D; }
:root[data-theme="light"] .fs-btn--accent { color: #FFFFFF; }
.fs-btn--secondary { border-color: var(--fs-border-control); }
.fs-btn--secondary:hover { border-color: var(--fs-border-hover); background: rgba(var(--fs-ink),.03); color: var(--fs-text); }
.fs-btn--ghost { color: var(--fs-text-muted); }
.fs-btn--ghost:hover { background: rgba(var(--fs-ink),.06); color: var(--fs-text); }
.fs-btn--danger { color: var(--fs-coral); border-color: var(--fs-coral-ring); }
.fs-btn--danger:hover { background: var(--fs-coral-dim); color: var(--fs-coral); }
.fs-btn--sm { height: 32px; padding: 0 12px; font-size: 13px; } .fs-btn--sm svg { width: 14px; height: 14px; }
.fs-btn--lg { height: 44px; padding: 0 20px; font-size: 15px; }
.fs-btn--icon { width: 40px; padding: 0; } .fs-btn--sm.fs-btn--icon { width: 32px; }
.fs-btn--block { width: 100%; }
.fs-btn__count { margin-left: 2px; font-weight: 400; opacity: .72; font-variant-numeric: tabular-nums; }
.fs-btn:focus-visible { outline: none; box-shadow: 0 0 0 2px var(--fs-bg), 0 0 0 4px var(--fs-teal); }
.fs-btn[disabled], .fs-btn.is-disabled { opacity: .5; cursor: default; pointer-events: none; }

/* ── Panely ─────────────────────────────────────────────────────────────── */
.fs-panel { background: var(--fs-surface-1); border: 1px solid var(--fs-hairline); border-radius: var(--fs-radius-lg); }
.fs-panel__head { display: flex; align-items: center; gap: 12px; padding: 18px 22px; border-bottom: 1px solid var(--fs-hairline); flex-wrap: wrap; }
.fs-panel__title { font-size: 15px; font-weight: 500; letter-spacing: -.01em; }
.fs-panel__title small { color: var(--fs-text-dim); font-weight: 400; margin-left: 4px; font-size: 13px; }
.fs-panel__sub { flex-basis: 100%; font-size: 13px; color: var(--fs-text-dim); }
.fs-panel__actions { margin-left: auto; display: flex; gap: 8px; }
.fs-panel__body { padding: 22px; }
.fs-panel__body--flush { padding: 0; }
.fs-panel__foot { padding: 14px 22px; border-top: 1px solid var(--fs-hairline); display: flex; align-items: center; gap: 12px; }
.fs-panel--xl { border-radius: var(--fs-radius-xl); } .fs-panel--xl > .fs-panel__body { padding: 40px; }
.fs-panel--danger { border-color: var(--fs-coral-ring); }
.fs-panel--inset { background: var(--fs-surface-2); border-radius: var(--fs-radius-md); }
@media (max-width: 720px) { .fs-panel--xl > .fs-panel__body { padding: 24px; } }

/* ── Stat ───────────────────────────────────────────────────────────────── */
.fs-stat { padding: 20px 22px; display: flex; flex-direction: column; gap: 10px; }
.fs-stat__label { font-size: 13px; color: var(--fs-text-muted); }
.fs-stat__value { font-size: 32px; font-weight: 500; letter-spacing: -.03em; line-height: 1; font-variant-numeric: tabular-nums; }
.fs-stat__value small { font-size: 16px; color: var(--fs-text-dim); letter-spacing: 0; margin-left: 2px; }
.fs-stat__foot { font-size: 13px; color: var(--fs-text-dim); }
.fs-stat__foot a { font-weight: 500; }
.fs-stat--attn { border-color: var(--fs-amber-ring); }
.fs-stat--attn .fs-stat__value { color: var(--fs-amber); }

/* ── Stavy a popisky ─────────────────────────────────────────────────────────
   Žádné štítky ani podbarvené odznaky (hlídá test_no_template_script_or_style_uses_the_chip):
   běžný stav nemá popisek, výjimka je věta s akcí a barvu nese jen slovo, které ji
   nese. Nadpis pole je obyčejný popisek (.fs-label). Tvar pilulky mají jen skutečné
   ovládací prvky (fs-tabs, volby editoru persony .pe-chip). */

/* Štítek tarifu z _plan_chip.html: maskot tarifu (PNG) a název, ne pilulka.
   --plan je RGB barvy tarifu (Starter muted, Free dim) podle data-plan, nese ho
   i karta plánu v billingu. */
[data-plan] { --plan: 134,140,152; }
[data-plan="starter"] { --plan: 182,187,197; }
[data-plan="pro"] { --plan: 18,207,172; }
[data-plan="agency"] { --plan: 185,163,255; }
:root[data-theme="light"] [data-plan] { --plan: 98,105,118; }
:root[data-theme="light"] [data-plan="starter"] { --plan: 78,85,100; }
:root[data-theme="light"] [data-plan="pro"] { --plan: 8,107,89; }
:root[data-theme="light"] [data-plan="agency"] { --plan: 90,63,214; }
.fs-plan { display: inline-flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 500; letter-spacing: -.01em;
  line-height: 1.2; white-space: nowrap; color: rgb(var(--plan)); }
/* Obrázky plan-*.webp jsou čtverce 128×128 (ostré i na 2× a 3×) se stejnou základnou
   (mascot-coverage F9), ve štítku i v liště velikost S. Agency s bočními bublinami 1,17×
   (§5.1), nahoru, ať spodek sedí na stejné lince jako ostatní tarify. Ve štítku navíc
   celý přesah doleva: mezera k názvu zůstane 8 px a karty tarifů pod sebou mají názvy
   na jedné svislici. */
.fs-plan__img { width: var(--mascot-s); height: var(--mascot-s); flex-shrink: 0; transition: transform var(--fs-dur) var(--fs-ease); }
.fs-plan[data-plan="agency"] .fs-plan__img, .fs-user-pill__mascot[data-tier="agency"] {
  width: calc(var(--mascot-s) * 1.17); height: calc(var(--mascot-s) * 1.17); margin-top: calc(var(--mascot-s) * -.17); }
.fs-plan[data-plan="agency"] .fs-plan__img { margin-inline: calc(var(--mascot-s) * -.17) 0; }
a.fs-plan:hover .fs-plan__img { transform: scale(1.08); }
.fs-plan--lg { font-size: 18px; }
.fs-plan--sm { font-size: 12px; }

.fs-platform { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: rgb(var(--pf, 134, 140, 152)); }
.fs-platform__icon { width: 12px; height: 12px; }

/* ── Záložky ────────────────────────────────────────────────────────────── */
.fs-tabs { display: inline-flex; gap: 2px; padding: 4px; background: var(--fs-surface-2); border: 1px solid var(--fs-hairline); border-radius: var(--fs-radius-pill); max-width: 100%; overflow-x: auto; scrollbar-width: none; }
.fs-tabs::-webkit-scrollbar { display: none; }
.fs-tab { height: 30px; padding: 0 14px; display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0; border-radius: var(--fs-radius-pill); color: var(--fs-text-muted); font-size: 13px; font-weight: 500; white-space: nowrap; border: 0; background: transparent; cursor: pointer; }
.fs-tab:hover { color: var(--fs-text); }
.fs-tab.is-active, .fs-tab[aria-selected="true"] { background: var(--fs-surface-4); color: var(--fs-text); }
.fs-tab__count { color: var(--fs-text-dim); font-size: 12px; font-variant-numeric: tabular-nums; }
/* Na světlejším podkladu aktivní záložky by dim měl jen 4,1:1 */
.fs-tab.is-active .fs-tab__count { color: var(--fs-text-muted); }
/* Pruh záložek nebo kroků, který se nevejde (telefon): okraj, za kterým je další
   záložka, slábne. Třídy drží fanspeak.js podle posunu pruhu. */
.fs-tabs.is-clipped, .fs-steps.is-clipped {
  -webkit-mask-image: linear-gradient(90deg, var(--fs-clip-start, #000), #000 32px, #000 calc(100% - 32px), var(--fs-clip-end, #000));
          mask-image: linear-gradient(90deg, var(--fs-clip-start, #000), #000 32px, #000 calc(100% - 32px), var(--fs-clip-end, #000)); }
.is-clipped.is-clip-start { --fs-clip-start: transparent; }
.is-clipped.is-clip-end { --fs-clip-end: transparent; }

/* ── Řádek seznamu ──────────────────────────────────────────────────────── */
.fs-row { display: grid; grid-template-columns: 30px minmax(140px,180px) minmax(0,1fr) minmax(160px,240px) 110px 32px; gap: 16px; align-items: center;
  padding: 14px 22px; color: inherit; cursor: pointer; transition: background var(--fs-dur-fast) var(--fs-ease); }
/* Linka jen mezi viditelnými řádky: filtr je schovává přes [hidden]
   a mezi řádky může stát rozbalený panel odpovědi (.rp). */
.fs-row:not([hidden]) ~ .fs-row { border-top: 1px solid var(--fs-hairline); }
.fs-row[hidden] { display: none; }
.fs-row:hover, .fs-row.expanded { background: rgba(var(--fs-ink),.025); }
.fs-row__who { min-width: 0; }
.fs-row__name { font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fs-row__meta { font-size: 12px; color: var(--fs-text-dim); display: flex; align-items: center; gap: 6px; margin-top: 2px; white-space: nowrap; }
.fs-row__tr { display: block; color: var(--fs-text-dim); font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fs-row__tr[hidden] { display: none; }
/* Hover pozadí krajních řádků kopíruje rohy panelu. Panel neořezává (overflow),
   emoji výběr v rozbaleném prvním řádku vyskakuje nahoru. */
.fs-panel > .fs-panel__body--flush:first-child > .fs-row:first-child { border-radius: calc(var(--fs-radius-lg) - 1px) calc(var(--fs-radius-lg) - 1px) 0 0; }
.fs-panel > .fs-panel__body--flush:last-child > .fs-row:last-child,
.fs-panel > .fs-panel__body--flush:last-child > .fs-row:nth-last-child(2):has(+ .rp:not(.open)),
.fs-panel > .fs-panel__body--flush:last-child > .rp:last-child { border-radius: 0 0 calc(var(--fs-radius-lg) - 1px) calc(var(--fs-radius-lg) - 1px); }
/* Účet a člen týmu mají vlastní sloupce (.acc-list > .fs-row--account a .team-list >
   .fs-row--member níž), výběr kanálu .fs-row--pick. */
.fs-row--account, .fs-row--member { cursor: default; }
.fs-row__actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
@media (max-width: 720px) { .fs-row { display: flex; flex-wrap: wrap; gap: 6px 10px; padding: 12px 16px; }
  .fs-row__who { flex: 1; } }
/* Účet pod 1100 px na dvě patra (počet vpravo od jména, akce pod ním), pod 720 px se
   skládá: avatar + jméno, pod tím počet, akce vpravo na stejném řádku, nebo pod nimi,
   když se nevejdou. */
@media (max-width: 1100px) {
  .fs-row--account { grid-template-columns: 36px minmax(0,1fr) auto; row-gap: 10px; }
  .fs-row--account > :first-child { grid-row: 1 / span 2; align-self: start; }
  .fs-row--account > :nth-child(3) { justify-self: end; }
  .fs-row--account > :nth-child(4) { grid-row: 2; }
}
@media (max-width: 720px) {
  .fs-row--account > :nth-child(2), .fs-row--member > :nth-child(2) { flex: 1 1 calc(100% - 46px); min-width: 0; }
  .fs-row--account > :nth-child(3), .fs-row--member > :nth-child(3) { margin-left: 46px; }
  .fs-row--account > :last-child { margin-left: auto; }
  .fs-row--member > :last-child { margin-left: auto; }
}

/* ── Řádek komentáře (rp.row v _reply_panel.html, schránka i přehled) ──────
   Jako komentář ve Studiu platformy: profilovka fanouška, jméno a kdo to je,
   text komentáře, pod ním místo odpovědi (návrh jako bublina za účet, poznámka,
   chyba) a vpravo příspěvek, pod kterým komentář je (náhled, titulek, účet).
   Žádný štítek stavu ani barevný proužek: stav říká bublina a její slova.
   Sloupec příspěvku podle šířky seznamu (container query): pod ~900 px jde pod
   komentář na jeden řádek, ať komentář nemá úzký sloupec. */
.ir-list { margin: 0; padding: 0; list-style: none; container: ir / inline-size; }
.ir-item:not([hidden]) ~ .ir-item:not([hidden]) { border-top: 1px solid var(--fs-hairline); }
.ir { display: grid; grid-template-columns: 40px minmax(0, 1fr) 300px; gap: 20px; align-items: start; padding: 18px 24px;
  cursor: pointer; transition: background var(--fs-dur-fast) var(--fs-ease); }
.ir:hover, .ir.expanded { background: rgba(var(--fs-ink), .025); }
/* Ovládací prvek řádku je jméno fanouška; fokus z klávesnice obtáhne celý řádek */
.ir:has(.ir__open:focus-visible) { outline: 2px solid var(--fs-teal); outline-offset: -2px; }
.fs-panel > .ir-list:first-child > .ir-item:first-child > .ir { border-radius: calc(var(--fs-radius-lg) - 1px) calc(var(--fs-radius-lg) - 1px) 0 0; }
.fs-panel > .ir-list:last-child > .ir-item:last-child > .ir:not(.expanded),
.fs-panel > .ir-list:last-child > .ir-item:last-child > .rp { border-radius: 0 0 calc(var(--fs-radius-lg) - 1px) calc(var(--fs-radius-lg) - 1px); }
/* Bez fotky (nebo když se nenačte) šedá silueta na neutrálním podkladu (viz Avatar), ne v barvě platformy */
.ir__avatar { position: relative; width: 40px; height: 40px; display: grid; place-items: center; overflow: hidden; border-radius: 50%;
  background: var(--fs-surface-3); color: var(--fs-text-muted); font-weight: 500; }
.ir__avatar img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ir__avatar img[hidden] { display: none; }
.ir__main { min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 6px; }
.ir__main > * { max-width: 100%; }
.ir__meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; font-size: 12.5px; color: var(--fs-text-dim); }
.ir__open { padding: 0; border: 0; background: none; color: var(--fs-text); font: 500 14px/1.45 var(--fs-sans); text-align: left; cursor: pointer; overflow-wrap: anywhere; }
.ir__open:focus-visible { outline: none; }
.ir__rel.is-first { color: var(--fs-text-muted); }
.ir__meta time { font-variant-numeric: tabular-nums; }
.ir__likes { display: inline-flex; align-items: center; gap: 4px; font-variant-numeric: tabular-nums; }
.ir__likes svg { width: 13px; height: 13px; align-self: center; }
.ir__text { max-width: 78ch; white-space: pre-line; overflow-wrap: anywhere; text-wrap: pretty; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ir__text--att { color: var(--fs-text-dim); }
.ir__att .fs-att--thumb { width: 120px; height: 68px; }
.ir__trans { max-width: 78ch; font-size: 13px; color: var(--fs-text-muted); overflow-wrap: anywhere; text-wrap: pretty; }
.ir__trans[hidden] { display: none; }
.ir__from { color: var(--fs-text-dim); }
/* Přeložit zarovnané textem s komentářem, plocha tlačítka přesahuje do mezer */
.ir__translate { margin: -4px 0 -4px -12px; }
.ir__translate[hidden] { display: none; }
.ir__translate.is-busy { opacity: .5; }
/* Přeskočený komentář a komentář, který AI radí přeskočit, ustoupí; krytí .6 drží
   text komentáře nad 4,5:1 i na světlém (4,9:1). Tlumený text (překlad, popisek
   přílohy, příspěvek) by pod 4,5:1 spadl, ustoupí jen obrázky. */
.ir--skipped :is(.ir__avatar, .ir__text:not(.ir__text--att), .ir__att, .ir-post__thumb),
.ir--skip-suggested :is(.ir__avatar, .ir__text:not(.ir__text--att), .ir__att) { opacity: .6; }

/* Místo odpovědi: bublina za účet (návrh, odesílá se, neodešlo), poznámka, historie */
.ir-reply { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; width: 100%; max-width: 620px; margin-top: 4px; }
.ir-bubble { display: flex; flex-direction: column; gap: 4px; align-self: stretch; padding: 10px 14px 12px;
  border-radius: var(--fs-r-1) var(--fs-radius-md) var(--fs-radius-md) var(--fs-radius-md); }
.ir-bubble__as { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 500; overflow-wrap: anywhere; }
.ir-bubble__as > .rp-pf { width: 14px; height: 14px; }
.ir-bubble__text { white-space: pre-line; overflow-wrap: anywhere; text-wrap: pretty; }
.ir-bubble--draft { background: var(--fs-violet-dim); }
.ir-bubble--draft .ir-bubble__as { color: var(--fs-violet); }
.ir-bubble--failed { background: var(--fs-coral-dim); border: 1px solid var(--fs-coral-ring); }
.ir-bubble--failed .ir-bubble__as { color: var(--fs-coral); }
.ir-bubble--sending { width: 100%; max-width: 620px; margin-top: 4px; background: rgba(var(--fs-ink), .045); }
.ir-bubble--sending .ir-bubble__as { color: var(--fs-text-muted); }
.ir-bubble--drafting { width: 100%; max-width: 620px; margin-top: 4px; padding: 10px 14px; border: 1px dashed var(--fs-hairline-2); font-size: 13px; color: var(--fs-text-dim); }
.ir-acc__avatar { position: relative; flex: none; width: 18px; height: 18px; display: grid; place-items: center; overflow: hidden; border-radius: 50%; background: var(--fs-surface-3); }
.ir-acc__avatar .rp-pf { width: 10px; height: 10px; }
.ir-acc__avatar img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ir-acc__avatar img[hidden] { display: none; }
.ir-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.ir-flag { display: flex; align-items: flex-start; gap: 8px; font-size: 13px; color: var(--fs-text-muted); overflow-wrap: anywhere; }
.ir-flag svg { flex: none; width: 15px; height: 15px; margin-top: 2px; color: var(--fs-amber); }
.ir-flag__label { margin-right: 4px; font-weight: 500; color: var(--fs-amber); }
.ir-flag.is-danger svg, .ir-flag.is-danger .ir-flag__label { color: var(--fs-coral); }
.ir-reply--hint { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 8px 12px; max-width: none; margin-top: 0; }
.ir-hint { font-size: 13px; color: var(--fs-text-dim); }
/* Zodpovězený komentář: odeslaná odpověď na jeden řádek, celé vlákno má panel */
.ir-sent { display: flex; align-items: center; gap: 7px; width: 100%; max-width: 620px; margin-top: 2px; padding: 7px 12px;
  border-radius: var(--fs-r-1) var(--fs-radius-md) var(--fs-radius-md) var(--fs-radius-md); background: rgba(var(--fs-ink), .045);
  font-size: 13px; color: var(--fs-text-muted); }
.ir-sent > .rp-pf { width: 13px; height: 13px; }
.ir-sent__line { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ir-sent__as { color: var(--fs-text-dim); }
.ir-skipped { font-size: 13px; color: var(--fs-text-dim); }
/* Rozbalený řádek: odpověď přebírá panel pod ním (pole s návrhem, vlákno) */
.ir.expanded :is(.ir-reply, .ir-bubble, .ir-sent, .ir-skipped) { display: none; }

/* Příspěvek: náhled 16:9 (bez náhledu, třeba textový post na X, dlaždice se značkou
   platformy), titulek na dva řádky, značka platformy v její barvě a jméno účtu */
.ir-post { display: flex; align-items: flex-start; gap: 12px; min-width: 0; }
.ir-post__thumb { position: relative; flex: none; width: 112px; height: 63px; display: grid; place-items: center; overflow: hidden;
  border-radius: var(--fs-radius-xs); background: var(--fs-surface-3); color: var(--fs-text-dim); }
.ir-post__thumb svg { width: 18px; height: 18px; }
.ir-post__thumb img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ir-post__thumb img[hidden] { display: none; }
.ir-post__body { min-width: 0; display: flex; flex-direction: column; gap: 5px; padding-top: 1px; }
.ir-post__title { font-size: 13px; line-height: 1.35; color: var(--fs-text-muted); overflow-wrap: anywhere;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ir-post__acc { display: inline-flex; align-items: center; gap: 6px; min-width: 0; font-size: 12px; color: var(--fs-text-dim); }
.ir-post__acc .rp-pf { width: 13px; height: 13px; }
.ir-post__name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Panel pod řádkem začíná pod textem komentáře. Na širokém okně komentář
   neopakuje (je v řádku nad ním) a účet v kontextu taky ne (řekne ho „Odpovídáte
   jako“); list na telefonu a detail komentáře je ukazují dál. */
.ir-item > .rp { padding: 0 24px 20px 84px; }
@media (min-width: 721px) {
  .ir-item > .rp > .rp-fan, .ir-item > .rp .rp-context :is(.rp-account, .rp-context__sep) { display: none; }
  .ir.expanded { padding-bottom: 8px; }
  .ir-item > .rp > .rp-context { margin: 0; }
}

@container ir (max-width: 899px) {
  .ir { grid-template-columns: 40px minmax(0, 1fr); row-gap: 10px; }
  .ir-post { grid-column: 2; align-items: center; gap: 10px; }
  .ir-post__thumb { width: 64px; height: 36px; border-radius: 6px; }
  .ir-post__thumb svg { width: 14px; height: 14px; }
  .ir-post__body { gap: 0; padding-top: 0; }
  .ir-post__title { display: block; font-size: 12.5px; white-space: nowrap; text-overflow: ellipsis; }
}
@media (max-width: 720px) {
  .ir { grid-template-columns: 32px minmax(0, 1fr); column-gap: 12px; padding: 16px 14px; }
  .ir__avatar { width: 32px; height: 32px; font-size: 13px; }
  .ir__meta { gap: 2px 8px; font-size: 12px; }
  .ir__text { -webkit-line-clamp: 4; }
  .ir__att .fs-att--thumb { width: 140px; height: 79px; }
  .ir-bubble { padding: 9px 12px 11px; }
  .ir-bubble__as { gap: 6px; font-size: 12px; }
  .ir-reply--hint { flex-direction: column; align-items: stretch; }
  .ir-actions { align-self: stretch; flex-wrap: nowrap; }
  .ir-actions > :first-child { flex: 1; }
}
/* Dotyk: tlačítka řádku 44 px */
@media (max-width: 720px), (pointer: coarse) {
  .ir-actions .fs-btn { height: 44px; }
  .ir__translate { height: 44px; margin: -10px 0 -10px -12px; }
}

/* ── Avatar ─────────────────────────────────────────────────────────────── */
.fs-avatar { position: relative; width: 36px; height: 36px; flex-shrink: 0; display: grid; place-items: center; overflow: hidden;
  border-radius: 50%; background: rgba(var(--pf, 134, 140, 152), .18); box-shadow: inset 0 0 0 1px rgba(var(--pf, 134, 140, 152), .5);
  color: var(--fs-text); font-size: 13px; font-weight: 500; }
.fs-avatar img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.fs-avatar img[hidden] { display: none; }
.fs-avatar--sm { width: 30px; height: 30px; font-size: 12px; }
.fs-avatar--lg { width: 48px; height: 48px; font-size: 16px; }
/* Fanoušek bez fotky (nebo když se nenačte): šedá silueta jako výchozí profilovka na
   platformách, ne iniciála v kroužku. Řádek schránky (.ir__avatar), detail komentáře a
   login (.fs-avatar--fan); fotka leží nad ní. */
.fs-avatar--fan { background: var(--fs-surface-3); box-shadow: none; }
:is(.ir__avatar, .fs-avatar--fan)::before { content: ""; position: absolute; inset: 0;
  background: color-mix(in srgb, var(--fs-text-dim) 55%, var(--fs-surface-3));
  -webkit-mask: var(--fs-silhouette) center / 100% 100% no-repeat; mask: var(--fs-silhouette) center / 100% 100% no-repeat; }
/* Odpověď za účet (detail komentáře): profilovka účtu, bez ní značka platformy jako
   _account_mark v panelu odpovědi */
.fs-avatar--acc { background: var(--fs-surface-3); box-shadow: none; }
.fs-avatar--acc > .rp-pf { width: 16px; height: 16px; }

/* ── Karta účtu (Přehled) ───────────────────────────────────────────────── */
/* Celou kartu kryje odkaz jména (::after), vlastní odkazy a tlačítka karty leží nad ním.
   Výjimka (odpojeno, mimo plán) je věta s akcí v patičce, ne štítek. */
.fs-acc { position: relative; display: flex; flex-direction: column; background: var(--fs-surface-2); border: 1px solid var(--fs-hairline);
  border-radius: var(--fs-radius-md); color: inherit; transition: border-color var(--fs-dur-fast) var(--fs-ease); }
.fs-acc:hover { border-color: var(--fs-hairline-2); }
.fs-acc__head { display: flex; align-items: center; gap: 12px; padding: 16px; }
.fs-acc__id { flex: 1; min-width: 0; }
.fs-acc__name { display: block; font-weight: 500; color: inherit; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fs-acc__name::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.fs-acc__name:focus-visible { outline: none; }
.fs-acc__name:focus-visible::after { box-shadow: 0 0 0 2px var(--fs-teal); }
.fs-acc__platform { margin-top: 2px; font-size: 12px; color: var(--fs-text-dim); }
.fs-acc__stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--fs-hairline); }
.fs-acc__stat { padding: 12px 16px; font-size: 12px; color: var(--fs-text-dim); }
.fs-acc__stat b { display: block; margin-bottom: 2px; font-size: 18px; font-weight: 500; color: var(--fs-text); font-variant-numeric: tabular-nums; }
/* Čekající komentáře: jantarové číslo je odkaz do schránky na komentáře účtu */
a.fs-acc__stat { position: relative; z-index: 1; }
.fs-acc__stat--attn b { color: var(--fs-amber); }
.fs-acc__stat--attn span { text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--fs-hairline-2); }
.fs-acc__stat--attn:hover span { color: var(--fs-text); text-decoration-color: currentColor; }
/* Účet, který se nestahuje: čísla jsou stará, ztiší se (barvou, ne průhledností) */
.fs-acc--off .fs-acc__stat b { color: var(--fs-text-muted); }
.fs-acc__foot { position: relative; z-index: 1; margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 8px 12px;
  padding: 12px 16px; border-top: 1px solid var(--fs-hairline); font-size: 13px; color: var(--fs-text-muted);
  border-radius: 0 0 calc(var(--fs-radius-md) - 1px) calc(var(--fs-radius-md) - 1px); }
.fs-acc__foot p { min-width: 0; }
.fs-acc__foot .fs-btn { flex-shrink: 0; }
.fs-acc__foot--broken { background: var(--fs-coral-dim); color: var(--fs-text); }
.fs-acc__act { flex-shrink: 0; font-weight: 500; color: var(--fs-text); text-decoration: underline; text-underline-offset: 3px; }
.fs-acc__act:hover { color: var(--fs-teal); }
@media (max-width: 720px) {
  .fs-acc__foot { flex-wrap: wrap; }
  .fs-acc__foot .fs-btn { height: 44px; }
  .fs-acc__act { display: inline-flex; align-items: center; min-height: 44px; }
}

/* Stav účtu (app/_account_status.html): fakt za platformou, Odpojeno korálově,
   Obnovit jako odkaz. Na dotyk má odkaz 44px cíl přes ::after.
   Řádek je text, ne flex: láme se uvnitř vět a tečka mezi částmi (bez mezer kolem
   v markupu, odstup dávají okraje) drží u slov, takže řádek tečkou nezačne. */
.acc-st__name { white-space: nowrap; }
.acc-st__pf { display: inline-block; width: 14px; height: 14px; margin-right: 6px; vertical-align: -2px; }
/* Tečka před částí řádku stavu; čtečka ji nečte (alt text za lomítkem) */
.acc-st__dot::before { content: "·"; content: "·" / ""; margin: 0 6px; }
.acc-st__form { white-space: nowrap; }
.acc-st--broken { color: var(--fs-coral); font-weight: 500; }
.acc-st__form { display: inline; }
.acc-st__act { position: relative; z-index: 1; padding: 0; border: 0; background: none; font: inherit; font-weight: 500; color: var(--fs-text);
  text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.acc-st__act:hover { color: var(--fs-teal); }
.acc-st__act:focus-visible { outline: 2px solid var(--fs-teal); outline-offset: 2px; border-radius: 2px; }
@media (pointer: coarse) { .acc-st__act::after { content: ""; position: absolute; inset: -14px -10px; } }

/* ── Řádky nastavení ────────────────────────────────────────────────────── */
.fs-set { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 24px; padding: 26px; border-top: 1px solid var(--fs-hairline); }
.fs-set:first-child { border-top: 0; }
.fs-set__title { font-size: 15px; font-weight: 500; letter-spacing: -.01em; }
.fs-set__desc { margin-top: 4px; font-size: 13px; color: var(--fs-text-dim); }
.fs-pref { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 0; border-top: 1px solid var(--fs-hairline); }
.fs-pref:first-child { border-top: 0; padding-top: 0; }
.fs-pref:last-child { padding-bottom: 0; }
.fs-pref__title { font-weight: 500; }
.fs-pref__desc { margin-top: 2px; font-size: 13px; color: var(--fs-text-dim); }
.fs-kv { display: grid; margin: 0; }
.fs-kv > div { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 0; border-top: 1px solid var(--fs-hairline); }
.fs-kv > div:first-child { border-top: 0; padding-top: 0; }
.fs-kv > div:last-child { padding-bottom: 0; }
.fs-kv dt { color: var(--fs-text-dim); }
.fs-kv dd { margin: 0; min-width: 0; text-align: right; }
.fs-lrow { display: flex; align-items: center; gap: 14px; min-width: 0; padding: 14px 16px; background: var(--fs-surface-2); border: 1px solid var(--fs-hairline); border-radius: var(--fs-radius-md); }
.fs-lrow__icon { width: 36px; height: 36px; flex-shrink: 0; display: grid; place-items: center; border-radius: 10px; background: var(--fs-surface-3); }
.fs-lrow__icon svg { width: 18px; height: 18px; }
.fs-lrow__body { flex: 1; min-width: 0; }
.fs-lrow__title { font-weight: 500; }
.fs-lrow__desc { margin-top: 2px; font-size: 13px; color: var(--fs-text-dim); overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 720px) { .fs-set { grid-template-columns: 1fr; gap: 14px; padding: 20px; } }

/* ── Formuláře ──────────────────────────────────────────────────────────── */
.fs-field { display: flex; flex-direction: column; gap: 6px; }
.fs-label { font-size: 13px; font-weight: 500; color: var(--fs-text-muted); }
.fs-hint { font-size: 12px; color: var(--fs-text-dim); }
.fs-input, .fs-select, .fs-textarea { appearance: none; width: 100%; height: 40px; padding: 0 12px; background: var(--fs-bg); color: var(--fs-text);
  border: 1px solid var(--fs-border-control); border-radius: var(--fs-radius-sm); font-size: 14px;
  transition: border-color var(--fs-dur-fast) var(--fs-ease), box-shadow var(--fs-dur-fast) var(--fs-ease); }
.fs-input:hover, .fs-select:hover, .fs-textarea:hover { border-color: rgba(var(--fs-ink),.5); }
.fs-input:focus, .fs-select:focus, .fs-textarea:focus { outline: none; border-color: var(--fs-teal); box-shadow: 0 0 0 3px var(--fs-teal-dim); }
.fs-input::placeholder, .fs-textarea::placeholder { color: var(--fs-text-dim); }
.fs-select { padding-right: 34px; background: var(--fs-bg) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='%23868C98' stroke-width='1.5'><path d='M3 5l3 3 3-3'/></svg>") no-repeat right 12px center / 12px; }
.fs-textarea { height: auto; min-height: 80px; padding: 10px 12px; line-height: 1.5; resize: vertical; }
.fs-textarea.has-ai { border-color: var(--fs-teal-ring); }
.fs-textarea[readonly] { color: var(--fs-text-muted); }
.fs-search { position: relative; }
.fs-search svg { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); width: 14px; height: 14px; color: var(--fs-text-dim); pointer-events: none; }
.fs-search .fs-input { padding-left: 36px; }

.fs-toggle { position: relative; display: inline-flex; align-items: center; gap: 10px; cursor: pointer; user-select: none; font-size: 13px; }
.fs-toggle input { position: absolute; opacity: 0; pointer-events: none; }
.fs-toggle__track { position: relative; width: 40px; height: 24px; flex-shrink: 0; border-radius: var(--fs-radius-pill); background: var(--fs-surface-4);
  transition: background var(--fs-dur-fast) var(--fs-ease); }
.fs-toggle__track::after { content: ""; position: absolute; left: 3px; top: 3px; width: 18px; height: 18px; border-radius: 50%; background: var(--fs-text-muted);
  transition: left var(--fs-dur) var(--fs-ease), background var(--fs-dur) var(--fs-ease); }
.fs-toggle input:checked + .fs-toggle__track { background: var(--fs-teal); }
.fs-toggle input:checked + .fs-toggle__track::after { left: 19px; background: var(--fs-bg); }
.fs-toggle input:focus-visible + .fs-toggle__track { outline: 2px solid var(--fs-teal); outline-offset: 2px; }

/* Slider: průvodce, nastavení účtu a atributy persony (ty kreslí vlastní dráhu).
   Výplň do hodnoty: stránka, která nastaví --p (0–100, kolik procent rozsahu), má dráhu
   od začátku po jezdec tyrkysovou. Plná barva přes vnitřní stín bez rozmazání, šířka
   z šířky posuvníku (100cqw) bez jezdce; Firefox má výplň vlastní (::-moz-range-progress).
   Bez --p je šířka nula a dráha vypadá jako dřív. Barvu dráhy může stránka nastavit
   v --fs-range-track (web: 3:1 proti kartě), appka má --fs-surface-3; tloušťku nevyplněné
   dráhy v --fs-range-rail (web 2 px, výplň zůstává 4 px), appka 4 px. */
.fs-range { display: block; width: 100%; height: 28px; margin: 0; background: transparent; -webkit-appearance: none; appearance: none; cursor: pointer;
  container-type: inline-size; }
.fs-range:focus { outline: none; }
.fs-range::-webkit-slider-runnable-track { height: 4px; border-radius: 2px;
  background: linear-gradient(var(--fs-range-track, var(--fs-surface-3)) 0 0) 0 50% / 100% var(--fs-range-rail, 4px) no-repeat;
  box-shadow: inset calc(var(--p, 0) * (100cqw - 18px) / 100) 0 0 var(--fs-teal); }
.fs-range::-moz-range-track { height: var(--fs-range-rail, 4px); border-radius: 2px; background: var(--fs-range-track, var(--fs-surface-3)); }
.fs-range::-moz-range-progress { height: 4px; border-radius: 2px; background: var(--fs-teal); }
.fs-range::-webkit-slider-thumb { -webkit-appearance: none; width: 18px; height: 28px; margin-top: -12px; border-radius: 9px;
  background: var(--fs-surface-1); border: 2px solid var(--fs-teal); box-shadow: 0 0 0 4px var(--fs-teal-dim); }
.fs-range::-moz-range-thumb { width: 14px; height: 24px; border-radius: 9px; background: var(--fs-surface-1); border: 2px solid var(--fs-teal); }
.fs-range:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 3px var(--fs-bg), 0 0 0 5px var(--fs-teal); }
.fs-range:focus-visible::-moz-range-thumb { box-shadow: 0 0 0 3px var(--fs-bg), 0 0 0 5px var(--fs-teal); }

/* ── Dropdown ───────────────────────────────────────────────────────────── */
.fs-dropdown { position: relative; }
.fs-dropdown__menu { position: absolute; top: calc(100% + 6px); right: 0; z-index: 100; display: none; min-width: 200px; padding: 6px;
  background: var(--fs-surface-2); border: 1px solid var(--fs-hairline-2); border-radius: var(--fs-radius-md); box-shadow: var(--fs-shadow-pop);
  animation: fs-pop var(--fs-dur) var(--fs-ease-out); }
.fs-dropdown.is-open .fs-dropdown__menu { display: block; }
/* Menu v liště vyskakuje vpravo vedle ní */
.fs-dropdown__menu--rail { left: calc(100% + 8px); right: auto; top: auto; bottom: 0; }
.fs-dropdown__head { padding: 8px 10px 10px; margin-bottom: 4px; border-bottom: 1px solid var(--fs-hairline); font-size: 12px; color: var(--fs-text-dim); }
.fs-dropdown__head b { display: block; margin-top: 2px; font-size: 13px; font-weight: 400; color: var(--fs-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fs-dropdown__item { display: flex; align-items: center; gap: 10px; width: 100%; height: 34px; padding: 0 10px; border: 0; border-radius: 9px;
  background: transparent; color: var(--fs-text); font-size: 13px; text-align: left; cursor: pointer; }
.fs-dropdown__item:hover { background: var(--fs-surface-3); color: var(--fs-text); }
.fs-dropdown__item.is-active { color: var(--fs-teal); }
.fs-dropdown__item svg { width: 14px; height: 14px; color: var(--fs-text-muted); }
.fs-dropdown__item--danger, .fs-dropdown__item--danger svg { color: var(--fs-coral); }
.fs-dropdown__item--danger:hover { color: var(--fs-coral); }
.fs-dropdown__code { min-width: 18px; font: 500 11px var(--fs-mono); color: var(--fs-text-dim); }

/* ── Modal ──────────────────────────────────────────────────────────────── */
/* Nativní <dialog> přes showModal() (fanspeak.js): leží v top layer, pozadí
   ztmaví ::backdrop. Kartou je .fs-modal__dialog, okraj dialogu je klikací pozadí. */
.fs-modal, .fs-page > .fs-modal { width: 100%; max-width: 568px; max-height: 100dvh; padding: 24px; border: 0;
  background: transparent; color: var(--fs-text); overflow: visible; }
.fs-modal[open] { animation: fs-fade-in var(--fs-dur) var(--fs-ease); }
.fs-modal::backdrop { background: rgba(0,0,0,.6); }
.fs-modal__dialog { width: 100%; max-height: calc(100dvh - 48px); overflow-y: auto; background: var(--fs-surface-1);
  border: 1px solid var(--fs-hairline-2); border-radius: var(--fs-radius-xl); box-shadow: var(--fs-shadow-pop); animation: fs-pop var(--fs-dur-slow) var(--fs-ease-out); }
.fs-modal__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 26px 30px 6px; }
.fs-modal__title { font-size: 18px; font-weight: 500; letter-spacing: -.01em; line-height: 1.3; }
.fs-modal__body { padding: 14px 30px; }
.fs-modal__foot { display: flex; justify-content: flex-end; gap: 8px; padding: 10px 30px 26px; }
.fs-modal__close { display: grid; place-items: center; width: 32px; height: 32px; padding: 0; border: 0; border-radius: var(--fs-radius-sm);
  background: transparent; color: var(--fs-text-muted); cursor: pointer; }
.fs-modal__close:hover { color: var(--fs-text); background: rgba(var(--fs-ink),.06); }
@media (max-width: 720px) { .fs-modal, .fs-page > .fs-modal { padding: 16px; } .fs-modal__dialog { max-height: calc(100dvh - 32px); } .fs-modal__head { padding: 22px 22px 6px; } .fs-modal__body { padding: 12px 22px; } .fs-modal__foot { padding: 10px 22px 22px; } }

/* ── Toast a flash ──────────────────────────────────────────────────────── */
.fs-toast { position: fixed; bottom: max(24px, var(--fs-consent-h, 0px)); left: 50%; transform: translateX(-50%); z-index: 300; display: flex; align-items: center; gap: 10px;
  width: max-content; max-width: min(480px, calc(100vw - 32px)); padding: 12px 16px; background: var(--fs-surface-2); border: 1px solid var(--fs-hairline-2);
  border-radius: var(--fs-radius-md); box-shadow: var(--fs-shadow-pop); font-size: 14px; animation: fs-toast-in var(--fs-dur) var(--fs-ease-out);
  transition: opacity var(--fs-dur) var(--fs-ease); }
.fs-toast::before { content: ""; width: 16px; height: 16px; flex-shrink: 0; background: var(--fs-teal);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5L20 7'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5L20 7'/%3E%3C/svg%3E") center / contain no-repeat; }
.fs-toast--error { border-color: var(--fs-coral-ring); }
.fs-toast--error::before { background: var(--fs-coral);
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M18 6L6 18M6 6l12 12'/%3E%3C/svg%3E");
          mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M18 6L6 18M6 6l12 12'/%3E%3C/svg%3E"); }
.fs-toast.is-leaving { opacity: 0; }
.fs-toast .fs-alert__close { position: static; flex-shrink: 0; margin: -6px -8px -6px 0; }
@media (max-width: 880px) { .fs-toast { bottom: max(calc(72px + env(safe-area-inset-bottom)), var(--fs-consent-h, 0px)); } }

/* fs-alert: flash z base.html a poznámka AI (_advisory.html), třídy drží JS */
.fs-alert { position: relative; display: flex; align-items: flex-start; gap: 12px; padding: 12px 16px; font-size: 14px;
  background: var(--fs-surface-2); border: 1px solid var(--fs-hairline-2); border-radius: var(--fs-radius-md); }
.fs-alert--success { border-color: var(--fs-teal-ring); }
.fs-alert--warning { border-color: var(--fs-amber-ring); background: var(--fs-amber-dim); }
.fs-alert--danger { border-color: var(--fs-coral-ring); background: var(--fs-coral-dim); }
.fs-alert__text { flex: 1; }
.fs-alert--dismissible, .fs-alert--sticky { padding-right: 44px; }
.fs-alert__close { position: absolute; top: 8px; right: 8px; display: grid; place-items: center; width: 28px; height: 28px; padding: 0; border: 0;
  border-radius: var(--fs-radius-xs); background: transparent; color: var(--fs-text-muted); cursor: pointer; }
.fs-alert__close::after { content: ""; width: 12px; height: 12px; background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M18 6L6 18M6 6l12 12'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M18 6L6 18M6 6l12 12'/%3E%3C/svg%3E") center / contain no-repeat; }
.fs-alert__close:hover { color: var(--fs-text); background: rgba(var(--fs-ink),.06); }
.fs-advisory { margin: 10px 0 8px; line-height: 1.5; }
.fs-advisory__title { font-weight: 500; margin-bottom: 2px; }
.fs-advisory__icon { width: 16px; height: 16px; flex-shrink: 0; margin-top: 3px; color: var(--fs-amber); }
.fs-alert--danger .fs-advisory__icon { color: var(--fs-coral); }

/* ── Lišta souhlasu s analytikou (_consent.html, consent.js) ──────────────────
   Bez volby ji ukáže data-consent-pending na <html> už z hlavičky (_theme_head.html),
   takže je vidět od prvního vykreslení a nic neposkočí. Na širším okně a v nízkém okně
   (i při 400% zoomu) je to pruh v toku stránky nahoře nad hlavičkou: nic nezakrývá
   a s rolováním odjede. Telefon na výšku ji má pevně dole v dosahu palce, v appce
   přilepenou na spodní lištu. Znovu otevřená z Nastavení cookies (is-reopened) je na
   velkém okně plovoucí karta vpravo dole, o kterou si návštěvník řekl. Pevná lišta dává
   do --fs-consent-h, kolik místa zabírá od spodní hrany okna; stránka o to dole přidá
   místo a scroll-padding drží fokus nad ní. Pod spodní lištou a šuplíkem appky, pod
   hlavičkou webu i pod modaly. Přijmout a Odmítnout jsou stejná tlačítka. */
html { padding-bottom: var(--fs-consent-h, 0px); scroll-padding-bottom: var(--fs-consent-h, 0px); }
/* Appka na mobilu: fokus se nesmí schovat ani pod spodní lištu (56 px + linka + mezera);
   pevná lišta souhlasu nad ní už je v --fs-consent-h započítaná */
@media (max-width: 880px) {
  html:has(.fs-tabbar) { scroll-padding-bottom: max(calc(65px + env(safe-area-inset-bottom, 0px)), var(--fs-consent-h, 0px)); }
}
/* Obsah zarovnaný na mřížku webu (.site-wrap): okraj jako --site-gut, na širokém okně střed */
.fs-consent { display: none; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px 32px;
  padding: 12px max(var(--site-gut, 24px), calc((100% - var(--site-wrap, 1312px)) / 2), env(safe-area-inset-right, 0px))
           12px max(var(--site-gut, 24px), calc((100% - var(--site-wrap, 1312px)) / 2), env(safe-area-inset-left, 0px));
  background: var(--fs-surface-1); border-bottom: 1px solid var(--fs-hairline-2);
  font-size: 14px; line-height: 1.45; color: var(--fs-text-muted); }
:root[data-consent-pending] .fs-consent, .fs-consent.is-open { display: grid; }
.fs-consent:focus-visible { outline-offset: -2px; }
/* Text v systémovém písmu: Geist z Google Fonts přijde až po prvním vykreslení a text pruhu
   by se pak zalomil jinak (slova přeskočí řádky), což posune celou stránku pod ním (CLS).
   Tlačítka zůstávají v Geist, mají pevnou šířku. */
/* Šířka v px, ne v ch: ch závisí na písmu a se systémovým písmem by anglický pruh na 1440 px měl tři řádky */
.fs-consent__body { max-width: min(100%, 920px); text-wrap: pretty; font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; }
.fs-consent__title { display: inline; margin-right: .25em; font: inherit; font-weight: 600; color: var(--fs-text); }
.fs-consent__text { display: inline; }
.fs-consent__body a { text-decoration: underline; text-underline-offset: 2px; white-space: nowrap; }
.fs-consent__now { margin-top: 4px; font-weight: 500; color: var(--fs-text); }
.fs-consent__actions { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(120px, 1fr); gap: 8px; }
.fs-consent__actions .fs-btn { min-width: 0; }
/* Aktuální volba (aria-pressed): fajfka a výraznější linka, bez výplně, ať váha obou tlačítek zůstane stejná */
.fs-consent__tick { display: none; }
[data-consent-choice][aria-pressed="true"] { border-color: var(--fs-text-muted); }
[data-consent-choice][aria-pressed="true"] > .fs-consent__tick { display: block; }
[data-consent-open][hidden] { display: none; }
/* Cíl fokusu po volbě (consent.js): obsah není ovládací prvek, rámeček kolem celé stránky by mátl */
main[tabindex="-1"]:focus { outline: none; }
/* V appce pruh začíná za levou lištou a drží okraj stránky */
.fs-consent--app { margin-left: var(--fs-rail-w); padding-inline: var(--fs-page-gutter); }
@media (max-width: 880px) {
  .fs-consent--app { margin-left: 0; padding-inline: max(16px, env(safe-area-inset-left, 0px)) max(16px, env(safe-area-inset-right, 0px)); }
}
/* Úzké okno (i 400% zoom): text nad tlačítky, tlačítka vedle sebe a 44 px vysoká */
@media (max-width: 600px) {
  .fs-consent { grid-template-columns: minmax(0, 1fr); gap: 10px; padding: 12px max(16px, env(safe-area-inset-right, 0px)) 12px max(16px, env(safe-area-inset-left, 0px)); }
  .fs-consent__actions { grid-auto-flow: row; grid-template-columns: 1fr 1fr; }
  .fs-consent__actions .fs-btn { height: 44px; }
}
/* Telefon na výšku: pevně dole přes celou šířku, v dosahu palce; v appce přilepená na spodní lištu (56 px + linka) */
@media (max-width: 600px) and (min-height: 501px) {
  .fs-consent { position: fixed; left: 0; right: 0; bottom: 0; z-index: 35; padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px));
    border-bottom: 0; border-top: 1px solid var(--fs-hairline-2); border-radius: var(--fs-radius-md) var(--fs-radius-md) 0 0;
    box-shadow: var(--fs-shadow-pop); }
  .fs-consent--app { bottom: calc(57px + env(safe-area-inset-bottom, 0px)); padding-bottom: 12px; border-radius: 0; box-shadow: none; }
}
/* Nejmenší telefony: o řádek textu míň, tlačítka zůstávají 44 px */
@media (max-width: 359px) {
  .fs-consent { font-size: 13px; line-height: 1.4; padding-top: 10px; }
}
/* Znovu otevřená na velkém okně: plovoucí karta vpravo dole, stránka pod ní neposkočí */
@media (min-width: 601px) and (min-height: 501px) {
  .fs-consent.is-reopened { position: fixed; right: max(16px, env(safe-area-inset-right, 0px)); bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    z-index: 35; width: min(560px, calc(100vw - 32px)); margin: 0; gap: 12px 20px; padding: 16px 20px;
    border: 1px solid var(--fs-hairline-2); border-radius: var(--fs-radius-md); box-shadow: var(--fs-shadow-pop); }
  .fs-consent.is-reopened .fs-consent__actions { grid-auto-flow: row; }
}

/* ── Banner ─────────────────────────────────────────────────────────────── */
.fs-banner { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; padding: 12px 16px; font-size: 14px;
  background: var(--fs-surface-2); border: 1px solid var(--fs-hairline-2); border-radius: var(--fs-radius-md); }
.fs-banner > span { flex: 1 1 240px; }
.fs-banner > .spinner-border { flex: none; }
.fs-banner svg { width: 16px; height: 16px; flex-shrink: 0; }
.fs-banner a:not(.fs-btn) { font-weight: 500; }
.fs-banner--amber { background: var(--fs-amber-dim); border-color: var(--fs-amber-ring); }
.fs-banner--amber > svg, .fs-banner--amber a:not(.fs-btn) { color: var(--fs-amber); }
.fs-banner--coral { background: var(--fs-coral-dim); border-color: var(--fs-coral-ring); }
.fs-banner--coral > svg, .fs-banner--coral a:not(.fs-btn) { color: var(--fs-coral); }
.fs-banner--teal { background: var(--fs-teal-dim); border-color: var(--fs-teal-ring); }
.fs-banner--teal > svg { color: var(--fs-teal); }

/* ── Prázdný stav a stránka s jednou zprávou ────────────────────────────── */
.fs-empty { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 48px 24px; text-align: center; }
.fs-empty__icon { width: 44px; height: 44px; display: grid; place-items: center; border-radius: 14px; background: var(--fs-surface-3); color: var(--fs-text-muted); }
.fs-empty__icon svg { width: 20px; height: 20px; }
.fs-empty__title { font-size: 15px; font-weight: 500; }
.fs-empty__text { max-width: 40ch; font-size: 13px; color: var(--fs-text-dim); }
.fs-empty .fs-btn { margin-top: 6px; }
.fs-note-page { max-width: 560px; margin: 48px auto; }
.fs-note-page__icon { width: 56px; height: 56px; display: grid; place-items: center; margin-bottom: 20px; border-radius: var(--fs-radius-md);
  background: var(--fs-amber-dim); color: var(--fs-amber); }
.fs-note-page__icon svg { width: 26px; height: 26px; }
.fs-note-page h1 { font-size: 22px; line-height: 1.25; margin-bottom: 10px; }
.fs-note-page p { color: var(--fs-text-muted); margin-bottom: 12px; }
.fs-note-page__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 24px; }
.fs-note-page .fs-note-page__tip { margin: 20px 0 0; font-size: 13px; color: var(--fs-text-dim); }
/* Stránka s maskotem L místo ikony: maskot stojí uprostřed sloupce (§5.3), text pod ním taky */
.fs-note-page--mascot .fs-panel__body { display: flex; flex-direction: column; align-items: center; text-align: center; }
.fs-note-page--mascot .fs-mascot { margin-bottom: 24px; }
.fs-note-page--mascot .fs-note-page__actions { justify-content: center; }

/* ── Maskot (templates/app/_mascot.html) ────────────────────────────────────
   Jedna škála (mascot-coverage §5.1): L stojí sám (stránka s jednou zprávou,
   připojený účet), M vedle textu (prázdné stavy), S ve štítku tarifu a v liště.
   Na telefonu L a M o stupeň menší. Agency má boční bubliny, kreslí se 1,17×.
   Appka maskoty nehýbe (§5.9): žádné pohupování ani reakce. */
:root { --mascot-l: 152px; --mascot-m: 104px; --mascot-s: 32px; --mascot-shadow: rgba(0,0,0,.42); }
:root[data-theme="light"] { --mascot-shadow: rgba(20,28,45,.14); }
@media (max-width: 720px) { :root { --mascot-l: 120px; --mascot-m: 88px; } }
.fs-mascot { position: relative; display: block; flex: none; width: var(--ms); aspect-ratio: 1; }
.fs-mascot--m { --ms: var(--mascot-m); }
.fs-mascot--l { --ms: var(--mascot-l); }
.fs-mascot[data-tier="agency"] { width: calc(var(--ms) * 1.17); }
.fs-mascot img { width: 100%; height: 100%; object-fit: contain; object-position: 50% 100%; }
/* Kontaktní stín pod maskotem, který stojí sám (§5.2): plochá elipsa pod tělem,
   ne drop-shadow obrysu (ten vypadá jako samolepka) */
.fs-mascot.is-grounded { isolation: isolate; }
.fs-mascot.is-grounded::after { content: ""; position: absolute; z-index: -1; left: 24%; right: 18%; bottom: 0; height: 6%;
  border-radius: 50%; background: var(--mascot-shadow); filter: blur(4px); }
/* Světlý režim: šedobílý Free na bílém panelu ztrácí obrys, vlasová linka v jeho stínu (§5.8) */
:root[data-theme="light"] .fs-mascot[data-tier="free"] img { filter: drop-shadow(0 0 .6px #6E819F); }
/* M v prázdném stavu drží od nadpisu ≥ 12 px (§5.3): mezera 10 + 4 */
.fs-empty > .fs-mascot { margin-bottom: 4px; }

/* Připojený účet (base.html, flash account_ready): jednou, bublina tarifu uživatele */
.fs-page > .fs-moment { margin-bottom: 16px; }
.fs-moment { position: relative; display: flex; align-items: center; gap: 28px; padding: 24px 56px 24px 32px; }
.fs-moment__title { font-size: 18px; line-height: 1.3; }
.fs-moment p { margin-top: 6px; max-width: 52ch; color: var(--fs-text-muted); }
@media (max-width: 720px) {
  .fs-moment { flex-direction: column; gap: 24px; padding: 28px 24px 24px; text-align: center; }
}

/* ── Kroky, meter, stránkování ──────────────────────────────────────────── */
.fs-steps { display: flex; gap: 8px; margin: 0 0 24px; padding: 0; list-style: none; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
.fs-steps::-webkit-scrollbar { display: none; }
.fs-steps__item { display: flex; align-items: center; gap: 10px; min-width: max-content; scroll-snap-align: start; font-size: 13px; font-weight: 500; color: var(--fs-text-dim); }
.fs-steps__item + .fs-steps__item::before { content: ""; width: 24px; height: 1px; background: var(--fs-hairline-2); }
.fs-steps__num { width: 28px; height: 28px; flex-shrink: 0; display: grid; place-items: center; border-radius: 50%; background: var(--fs-surface-3); font-variant-numeric: tabular-nums; }
.fs-steps__num svg { display: none; width: 14px; height: 14px; }
.fs-steps__item--done .fs-steps__num svg { display: block; }
.fs-steps__item--done .fs-steps__num span { display: none; }
.fs-steps__item--current { color: var(--fs-text); }
.fs-steps__item--current .fs-steps__num { background: var(--fs-text); color: var(--fs-bg); }
.fs-steps__item--done { color: var(--fs-text-muted); }
.fs-steps__item--done .fs-steps__num { background: var(--fs-teal-dim); color: var(--fs-teal); }

.fs-meter { height: 6px; border-radius: 3px; background: var(--fs-surface-3); overflow: hidden; }
.fs-meter > span { display: block; height: 100%; border-radius: inherit; background: var(--fs-teal); transition: width var(--fs-dur-slow) var(--fs-ease); }
.fs-meter--warn > span { background: var(--fs-amber); }
.fs-meter--full > span { background: var(--fs-coral); }

.fs-pager { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 22px; border-top: 1px solid var(--fs-hairline); font-size: 13px; color: var(--fs-text-dim); }
.fs-pager__btns { display: flex; align-items: center; gap: 4px; }
.fs-pager__btns [aria-current="page"] { background: var(--fs-surface-3); color: var(--fs-text); }
.fs-pager__gap { min-width: 20px; text-align: center; }
@media (max-width: 720px) { .fs-pager { flex-wrap: wrap; justify-content: center; padding: 12px 16px; } }

/* ── Tabulka ────────────────────────────────────────────────────────────── */
.fs-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.fs-table th { height: 40px; padding: 0 16px; font-size: 12px; font-weight: 500; color: var(--fs-text-dim); text-align: left; border-bottom: 1px solid var(--fs-hairline); }
.fs-table td { height: 44px; padding: 8px 16px; border-top: 1px solid var(--fs-hairline); }
/* Číslo ani datum se v buňce nezalomí („12. 6. 2026“ má mezery), tabulka se raději posune */
.fs-table td.num { white-space: nowrap; }
.fs-table tbody tr:first-child td { border-top: 0; }
.fs-table tbody tr:hover { background: rgba(var(--fs-ink),.025); }
.fs-table .ta-r { text-align: right; }
/* Na mobilu se tabulka posouvá do strany, neořezává. V panelu kopíruje
   odsazení hlavičky a spodní rohy. Relative drží uvnitř i .fs-sr-only z hlavičky. */
.fs-table-wrap { position: relative; overflow-x: auto; }
.fs-table-wrap .fs-table :is(th, td):first-child { padding-left: 22px; }
.fs-table-wrap .fs-table :is(th, td):last-child { padding-right: 22px; }
.fs-panel > .fs-table-wrap:last-child { border-radius: 0 0 calc(var(--fs-radius-lg) - 1px) calc(var(--fs-radius-lg) - 1px); }

/* ── Spinner ────────────────────────────────────────────────────────────── */
.spinner-border { display: inline-block; width: 12px; height: 12px; border: 1.5px solid currentColor; border-right-color: transparent; border-radius: 50%;
  vertical-align: -2px; animation: fs-spin .7s linear infinite; }
.spinner-border-sm { width: 10px; height: 10px; border-width: 1.4px; }

/* ── Animace ────────────────────────────────────────────────────────────── */
@keyframes fs-fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes fs-pop { from { opacity: 0; transform: translateY(-6px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes fs-toast-in { from { opacity: 0; transform: translate(-50%, 8px); } to { opacity: 1; transform: translate(-50%, 0); } }
@keyframes fs-spin { to { transform: rotate(360deg); } }

/* ── Příloha komentáře (_attachment.html, lightbox z fanspeak.js) ───────── */
.fs-att { position: relative; flex: none; padding: 0; color: var(--fs-text-dim); vertical-align: middle; }
.fs-att--thumb { display: inline-grid; place-items: center; width: 36px; height: 36px; overflow: hidden; cursor: zoom-in;
  border: 1px solid var(--fs-hairline-2); border-radius: var(--fs-radius-xs); background: var(--fs-surface-3);
  transition: border-color var(--fs-dur-fast) var(--fs-ease), transform var(--fs-dur-fast) var(--fs-ease); }
.fs-att--thumb:hover, .fs-att--thumb:focus-visible { border-color: var(--fs-teal); transform: scale(1.04); }
.fs-att--thumb img { width: 100%; height: 100%; object-fit: cover; }
.fs-att--chip { display: inline-flex; align-items: center; gap: 5px; height: 20px; padding: 0 7px; border-radius: var(--fs-radius-xs);
  font-size: 11px; font-weight: 500; background: rgba(var(--fs-ink),.06); color: var(--fs-text-muted); }
.fs-att--chip svg { width: 12px; height: 12px; }
.fs-att--figure { display: block; margin: 0; max-width: 100%; }
.fs-att__open { position: relative; display: block; max-width: 100%; padding: 0; overflow: hidden; cursor: zoom-in;
  border: 1px solid var(--fs-hairline-2); border-radius: var(--fs-radius-sm); background: var(--fs-surface-3); transition: border-color var(--fs-dur-fast) var(--fs-ease); }
.fs-att__open:hover, .fs-att__open:focus-visible { border-color: var(--fs-teal); }
.fs-att__open img { width: auto; height: auto; max-width: 100%; max-height: 360px; }
/* Štítek GIF leží na obrázku, proto tmavé poloprůhledné pozadí místo tónovaného */
.fs-att__tag, .fs-att__play { position: absolute; display: grid; place-items: center; pointer-events: none; color: #F2F3F5; background: rgba(14,15,18,.78); }
.fs-att__tag { left: 3px; bottom: 3px; height: 16px; padding: 0 4px; font-size: 11px; font-weight: 500; line-height: 1; border-radius: var(--fs-r-1); }
.fs-att__play { inset: 50% auto auto 50%; transform: translate(-50%, -50%); width: 22px; height: 22px; border-radius: 50%; }
.fs-att__play svg { width: 10px; height: 10px; margin-left: 1px; fill: currentColor; }
.fs-att__open .fs-att__tag { left: 8px; bottom: 8px; height: 20px; padding: 0 7px; font-size: 11px; }
.fs-att__open .fs-att__play { width: 44px; height: 44px; }
.fs-att__open .fs-att__play svg { width: 18px; height: 18px; margin-left: 3px; }
/* Expirované CDN URL (Meta) nebo blokovaný host: img schová fanspeak.js */
.fs-att__missing { display: none; place-items: center; gap: 6px; color: var(--fs-text-dim); }
.fs-att__missing svg { width: 16px; height: 16px; }
.fs-att.is-broken img, .fs-att.is-broken .fs-att__tag, .fs-att.is-broken .fs-att__play { display: none; }
.fs-att.is-broken .fs-att__missing { display: grid; }
.fs-att--figure.is-broken .fs-att__open { cursor: default; border-style: dashed; }
.fs-att--figure.is-broken .fs-att__missing { grid-auto-flow: column; padding: 18px 20px; font-size: 12px; }
.fs-att--figure.is-broken .fs-att__missing svg { width: 18px; height: 18px; }
/* Popis obrázku od AI: věta s tlumeným začátkem „Popis od AI:“, ne štítek */
.fs-att__desc { margin-top: 6px; font-size: 12px; line-height: 20px; color: var(--fs-text-dim); }
.fs-att__desc-k { color: var(--fs-text-muted); font-weight: 500; }

.fs-lightbox { --fs-text: #F2F3F5; --fs-text-muted: #B6BBC5; --fs-text-dim: #868C98; --fs-ink: 255,255,255;
  max-width: min(96vw, 1400px); max-height: 96dvh; padding: 0; border: 0; background: transparent; color: var(--fs-text);
  animation: fs-pop var(--fs-dur-slow) var(--fs-ease-out); }
.fs-lightbox::backdrop { background: rgba(0,0,0,.82); }
.fs-lightbox__body { display: grid; gap: 12px; justify-items: center; }
.fs-lightbox__img { max-width: 96vw; max-height: 82dvh; object-fit: contain; border: 1px solid var(--fs-hairline-2); border-radius: var(--fs-radius-sm); background: var(--fs-surface-1); }
.fs-lightbox__bar { display: flex; align-items: center; gap: 12px; }
.fs-lightbox__label { margin-right: auto; font-size: 12px; color: var(--fs-text-dim); }

/* ── Rozbalený komentář a odpověď (_reply_panel.html, reply.js) ─────────────
   Sdílí přehled, schránku a detail komentáře (.rp--page), ve schránce stojí hned
   pod svým řádkem. Nahoře komentář tak, jak ho fanoušek napsal (profilovka, jméno,
   čas, text, příloha, překlad), bez rámečku a barevné linky: obsah je komentář,
   ne krabice kolem něj. Pod ním složení, které začíná tím, za který účet odpověď
   odejde. Pole odpovědi je fs-textarea, tlačítka fs-btn; tady jsou jen rozestupy. */
.rp { display: none; padding: 2px 22px 18px 68px; background: rgba(var(--fs-ink),.025); }
.rp.open { display: block; }
/* Na širokém okně drží panel sloupec čitelné šířky: řádek textu odpovědi přes 1 400 px
   se špatně píše i čte a Odeslat by bylo na druhém konci obrazovky než pole. */
.rp:not(.rp--page) > * { max-width: 920px; }
.rp--page { display: block; padding: 0; background: none; }
.rp--page > :first-child { margin-top: 0; }
.rp-context { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; margin: 6px 0 12px; font-size: 12px; color: var(--fs-text-dim); }
.rp-context a:not(.fs-btn) { color: var(--fs-text-muted); }
.rp-context a:not(.fs-btn):hover { color: var(--fs-text); }
.rp-context__sep { width: 3px; height: 3px; border-radius: 50%; background: var(--fs-hairline-2); }
.rp-context__detail { margin-left: auto; }
/* Účet: značka platformy v její barvě, jméno neutrálně. Barvy platforem jako drobný
   text nedrží 4,5:1 (YouTube na světlém 4,4:1) a červené jméno se čte jako chyba. */
.rp-account { display: inline-flex; align-items: center; gap: 6px; min-width: 0; color: var(--fs-text-muted); }
.rp-account__name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rp-pf { width: 14px; height: 14px; flex-shrink: 0; color: rgb(var(--pf, 134, 140, 152)); }
.rp-parent { margin: 0 0 8px 14px; padding: 6px 12px; border-left: 1px dashed var(--fs-hairline-2); font-size: 13px; line-height: 1.45; color: var(--fs-text-dim);
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.rp-parent__who { display: block; font-size: 12px; font-weight: 500; margin-bottom: 2px; }
/* Komentář fanouška: profilovka vlevo, vedle jméno a čas, pod nimi text na šířku
   čitelného řádku. Silueta je výchozí profilovka, obrázek leží nad ní. */
.rp-fan { display: grid; grid-template-columns: 32px minmax(0, 1fr); gap: 12px; align-items: start; }
.rp-fan__avatar { position: relative; width: 32px; height: 32px; display: grid; place-items: center; overflow: hidden;
  border-radius: 50%; background: var(--fs-surface-3); color: var(--fs-text-dim); }
.rp-fan__avatar svg { width: 18px; height: 18px; }
.rp-fan__avatar img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.rp-fan__avatar img[hidden] { display: none; }
.rp-fan__body { min-width: 0; }
.rp-fan__head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 8px; min-height: 20px; }
.rp-fan__who { font-weight: 500; font-size: 13px; }
.rp-fan__time { font-size: 12px; color: var(--fs-text-dim); font-variant-numeric: tabular-nums; }
.rp-fan__text { max-width: 75ch; max-height: 14.5em; overflow: hidden; margin-top: 2px; line-height: 1.55; white-space: pre-wrap; word-break: break-word; }
/* Ořez dlouhého komentáře se ztrácí do ztracena (maska, ne barevný přechod) */
.rp-fan__text.is-clamped { -webkit-mask-image: linear-gradient(to bottom, #000 80%, transparent); mask-image: linear-gradient(to bottom, #000 80%, transparent); }
.rp-fan__text.is-open { max-height: none; -webkit-mask-image: none; mask-image: none; }
.rp-fan__more { margin: 4px 0 0 -12px; }
.rp-fan__more[hidden] { display: none; }
.rp-fan .fs-att--figure { margin-top: 10px; }
.rp .fs-att__open img { max-height: 280px; }
/* Překlad pod komentářem (makro translation, i v detailu): popisek říká, že tohle
   fanoušek nenapsal; tlačítko zarovnané textem s komentářem nad ním. */
.rp-trans { max-width: 75ch; margin-top: 10px; }
.rp-trans[hidden] { display: none; }
.rp-trans__label { display: block; margin-bottom: 2px; font-size: 12px; color: var(--fs-text-dim); }
.rp-trans__text { font-size: 13px; line-height: 1.5; color: var(--fs-text-muted); white-space: pre-wrap; word-break: break-word; }
.rp-trans__tools { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 8px; margin: 6px 0 0 -12px; }
.rp-trans__btn[hidden] { display: none; }
.rp-trans__btn.is-busy { opacity: .5; }
.rp-trans__note { font-size: 12px; line-height: 1.45; color: var(--fs-text-dim); }
.rp-trans__note:empty { display: none; }
/* Bez tlačítka (komentář už je v jazyce uživatele) drží hláška linku textu komentáře */
.rp-trans__btn[hidden] + .rp-trans__note { padding-left: 12px; }
.rp-trans__note.is-error { color: var(--fs-coral); }
/* Demo schránky na webu (landing/index.html, index.js) má vlastní zjednodušenou kopii
   komentáře a účtu; appka je od .rp-fan / .rp-account nepoužívá. */
.rp-thread { display: flex; flex-direction: column; gap: 8px; }
.rp-thread:not(:empty) { margin-top: 12px; }
.rp-bubble { margin-left: 44px; }   /* pod textem komentáře (profilovka 32 + mezera 12) */
.rp-bubble__meta { font-size: 12px; color: var(--fs-text-dim); margin-bottom: 3px; }
.rp-bubble__meta strong { color: var(--fs-text); font-weight: 500; }
.rp-bubble__text { padding: 9px 13px; background: var(--fs-teal-dim); border-radius: var(--fs-radius-sm); line-height: 1.5; white-space: pre-wrap; word-break: break-word; }
.rp-state { display: inline-flex; align-items: center; gap: 6px; margin-top: 12px; font-size: 13px; color: var(--fs-text-muted); }
.rp-state svg { width: 14px; height: 14px; color: var(--fs-teal); }
.rp-reopen { display: flex; gap: 8px; margin-top: 10px; }
.rp-reopen[hidden] { display: none; }
.rp-note { margin-top: 10px; font-size: 13px; color: var(--fs-text-dim); }
.rp-composer { margin-top: 14px; }
.rp-composer[hidden] { display: none; }
.rp-composer__head { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 32px; }
.rp-composer__title { font-size: 13px; font-weight: 500; color: var(--fs-text-muted); }
/* Za který účet odpověď odejde (_identity): značka platformy nebo profilovka účtu,
   jméno účtu výrazně, zbytek věty tlumeně. Na úzkém sloupci se věta zalomí, nezkrátí.
   Návrh AI („Návrh za…“) je fialový celý, jako popisek bubliny návrhu v řádku. */
.rp-as { display: flex; align-items: center; gap: 8px; min-width: 0; font-size: 13px; line-height: 1.35; color: var(--fs-text-muted); }
/* Dlouhé jméno účtu na telefonu: Vygenerovat a Vymazat se zalomí pod větu (vpravo), věta zůstane celá */
.rp-composer__head:has(> .rp-as) { flex-wrap: wrap; row-gap: 4px; }
.rp-composer__head > .rp-as + .fs-btn { margin-left: auto; }
.rp-as__text { min-width: 0; overflow-wrap: anywhere; }
.rp-as__name { font-weight: 500; color: var(--fs-text); }
.rp-as__text--draft, .rp-as__text--draft .rp-as__name { color: var(--fs-violet); }
.rp-as > .rp-pf { width: 16px; height: 16px; }
.rp-as__avatar { position: relative; width: 22px; height: 22px; flex-shrink: 0; display: grid; place-items: center; overflow: hidden; border-radius: 50%; background: var(--fs-surface-3); }
.rp-as__avatar .rp-pf { width: 12px; height: 12px; }
.rp-as__avatar img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.rp-as__avatar img[hidden] { display: none; }
.rp-templates { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.rp-generating { display: flex; align-items: center; gap: 6px; padding: 6px 0; font-size: 12px; color: var(--fs-text-muted); }
.rp-ta { min-height: 84px; margin-top: 8px; }
.rp-error { margin-top: 8px; font-size: 13px; line-height: 1.45; color: var(--fs-coral); }
.rp-error[hidden] { display: none; }
.rp-actions { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 10px; }
.rp-actions__meta { display: flex; align-items: center; gap: 12px; font-size: 12px; color: var(--fs-text-dim); font-variant-numeric: tabular-nums; }
.rp-actions__btns { display: flex; align-items: center; gap: 8px; }
.rp-counter.is-over { color: var(--fs-coral); }
.rp-counter[hidden] { display: none; }
.rp-emoji-btn { margin-left: -8px; }
.rp-emoji-btn[aria-expanded="true"] { background: rgba(var(--fs-ink),.06); color: var(--fs-text); }
.rp-emoji { position: absolute; left: 0; bottom: calc(100% + 6px); z-index: 30; width: 440px; padding: 10px;
  background: var(--fs-surface-2); border: 1px solid var(--fs-hairline-2); border-radius: var(--fs-radius-md); box-shadow: var(--fs-shadow-pop); }
.rp-emoji[hidden] { display: none; }
.rp-emoji__label { display: block; margin: 0 0 4px 4px; font-size: 12px; color: var(--fs-text-dim); }
.rp-emoji__recent { padding-bottom: 8px; margin-bottom: 8px; border-bottom: 1px solid var(--fs-hairline); }
.rp-emoji__recent[hidden] { display: none; }
.rp-emoji__grid { display: grid; grid-template-columns: repeat(10, 1fr); gap: 2px; }
.rp-emoji__grid button { height: 36px; padding: 0; border: 0; border-radius: var(--fs-radius-xs); background: transparent; font-size: 21px; line-height: 1; cursor: pointer; }
.rp-emoji__grid button:hover, .rp-emoji__grid button:focus-visible { background: var(--fs-surface-3); outline: none; }
.rp-emoji__hint { margin-top: 8px; font-size: 12px; color: var(--fs-text-dim); }
@media (hover: none) and (pointer: coarse) { .rp-shortcut { display: none; } }
.rp-shortcut kbd { padding: 1px 5px; border: 1px solid var(--fs-hairline-2); border-radius: var(--fs-r-1); font-family: var(--fs-mono); font-size: 11px; color: var(--fs-text-muted); }
.rp-quota { display: flex; align-items: center; gap: 10px; padding: 6px 10px; border: 1px solid var(--fs-coral-ring); border-radius: var(--fs-radius-xs);
  background: var(--fs-coral-dim); font-size: 12px; color: var(--fs-coral); }
.rp-quota a { color: var(--fs-teal); text-decoration: underline; white-space: nowrap; }
/* Návrh ke čtení (role viewer, účet mimo plán): bublina návrhu z řádku, pod ní věta */
.rp-viewer { margin-top: 12px; }
.rp-viewer .rp-note { margin-top: 8px; }

/* Mobil: reply.js přesune .rp do #rp-sheet. Složení je přilepené ke dnu,
   výšku listu drží --rp-vvh z visualViewport (klávesnice na iOS). */
.rp-sheet, .rp-sheet[hidden] { display: none; }
@media (max-width: 720px) {
  .rp-sheet:not([hidden]) { position: fixed; left: 0; right: 0; top: 0; z-index: 70; display: flex; flex-direction: column;
    height: 100dvh; height: var(--rp-vvh, 100dvh); background: var(--fs-bg); }
  .rp-sheet__head { display: flex; align-items: center; gap: 6px; min-height: 52px; padding: 6px 8px 6px 4px; border-bottom: 1px solid var(--fs-hairline-2); background: var(--fs-bg); }
  .rp-sheet__back { width: 44px; height: 44px; color: var(--fs-text); }
  .rp-sheet__back svg { width: 22px; height: 22px; }
  .rp-sheet__title { flex: 1; min-width: 0; }
  .rp-sheet__name { font-weight: 500; font-size: 15px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  /* Účet pod jménem: kopie .rp-account (značka platformy, neutrální jméno) */
  .rp-sheet__sub { display: flex; min-width: 0; font-size: 12px; color: var(--fs-text-muted); }
  .rp-sheet__sub .rp-pf { width: 12px; height: 12px; }
  .rp-sheet__body { flex: 1; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
  .rp-sheet .rp { display: flex; flex-direction: column; min-height: 100%; padding: 0; background: transparent; }
  .rp-sheet .rp > :not(.rp-composer) { margin-left: 16px; margin-right: 16px; }
  .rp-sheet .rp-context { margin: 12px 16px 10px; }
  .rp-sheet .rp-parent { margin-left: 16px; }
  /* Účet je v hlavičce listu, v kontextu by byl dvakrát */
  .rp-sheet .rp-context .rp-account, .rp-sheet .rp-context__sep:has(+ .rp-account) { display: none; }
  .rp-sheet .rp-fan__text { font-size: 15px; line-height: 1.5; max-height: none; }
  .rp-sheet .rp-fan__text.is-clamped { -webkit-mask-image: none; mask-image: none; }
  .rp-sheet .rp-fan__more { display: none; }
  .rp-sheet .rp-trans__text { font-size: 14px; }
  .rp-sheet .rp-trans__btn { height: 44px; }
  .rp-sheet .rp-bubble { margin-left: 0; }
  .rp-sheet .rp-thread:not(:empty) { margin-bottom: 12px; }
  .rp-sheet .rp-viewer, .rp-sheet .rp-note, .rp-sheet .rp-state { margin-bottom: 12px; }
  .rp-sheet .rp-reopen { position: sticky; bottom: 0; margin: auto 0 0; padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); background: var(--fs-bg); border-top: 1px solid var(--fs-hairline-2); }
  .rp-sheet .rp-reopen .fs-btn { flex: 1; min-height: 44px; }
  .rp-sheet .rp-composer { position: sticky; bottom: 0; z-index: 1; margin: auto 0 0; padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
    background: var(--fs-bg); border-top: 1px solid var(--fs-hairline-2); }
  .rp-sheet .rp-ta { margin-top: 6px; min-height: 72px; max-height: 40vh; resize: none; }
  .rp-sheet .rp-actions { margin-top: 8px; }
  .rp-sheet .rp-emoji-btn, .rp-sheet .rp-shortcut { display: none; }
  .rp-sheet .rp-actions__btns { flex: 1; justify-content: flex-end; }
  .rp-sheet .rp-actions__btns .fs-btn { height: 44px; }
  .rp-sheet .rp-actions__btns [data-action="send"] { flex: 1; max-width: 220px; }
}
/* Detail komentáře na telefonu: stejné 44px cíle a široké Odeslat jako list */
@media (max-width: 720px) {
  .rp--page .rp-actions__btns { flex: 1; justify-content: flex-end; }
  .rp--page .rp-actions__btns .fs-btn { height: 44px; }
  .rp--page .rp-actions__btns [data-action="send"] { flex: 1; max-width: 220px; }
  .cd-msg__trans .rp-trans__btn { height: 44px; }
}
/* Na dotykových zařízeních má emoji systémová klávesnice */
@media (hover: none) and (pointer: coarse) { .rp-emoji-btn { display: none; } }

/* ── Přehled (templates/app/dashboard.html) ───────────────────────────────
   Na mobilu se karty účtů za čtvrtou zbalí pod tlačítko ve footu panelu. */
.dash-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.dash-accs { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
.dash-fold { display: none; justify-content: center; }
.dash-fold svg { transition: transform var(--fs-dur-fast) var(--fs-ease); }
.dash-fold [aria-expanded="true"] svg { transform: rotate(180deg); }
.dash-broken__list { flex-basis: 100%; margin: 0; padding: 0; list-style: none; }
.dash-broken__item { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-top: 1px solid var(--fs-hairline-2); }
.dash-broken__item:last-child { padding-bottom: 0; }
.dash-broken__who { flex: 1; min-width: 0; }
.dash-broken__msg { margin-top: 2px; font-size: 13px; color: var(--fs-text-muted); }
@media (max-width: 1100px) { .dash-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 720px) {
  .dash-accs { grid-template-columns: 1fr; }
  .dash-accs:not(.is-open) > :nth-child(n+5) { display: none; }
  .dash-fold { display: flex; }
  .dash-add { display: none; }   /* „Přidat účet" je v hlavičce stránky */
  .dash-tabs { order: 1; }       /* záložky pod nadpis, odkaz zůstane vpravo od něj */
}
@media (max-width: 640px) { .dash-stats { grid-template-columns: 1fr; } }

/* ── Schránka (templates/app/comments/index.html) ─────────────────────────
   Filtr je jeden panel: hledání a selecty v těle, záložky stavů a čítač AI
   odpovědí v patičce. Na mobilu jsou selecty za tlačítkem Filtry. */
.inbox-filter > .fs-panel__body { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 16px 22px; }
.inbox-search { flex: 1 1 260px; max-width: 420px; }
.inbox-filter__adv { display: contents; }
.inbox-filter__adv .fs-select { width: auto; min-width: 160px; max-width: 200px; }
.inbox-filter__adv .inbox-filter__wide { max-width: 260px; }
.inbox-filter__toggle { display: none; }
.inbox-filter__n { display: inline-grid; place-items: center; min-width: 18px; height: 18px; padding: 0 5px; border-radius: var(--fs-radius-pill);
  background: var(--fs-teal-dim); color: var(--fs-teal); font-size: 11px; font-variant-numeric: tabular-nums; }
.inbox-filter > .fs-panel__foot { justify-content: space-between; flex-wrap: wrap; }
/* Čítač AI odpovědí: obyčejný text s odkazem do Billingu, podtržený jako odkaz. Vyčerpaná
   kvóta je věta, korálově jen její první věta s důvodem (barva nese jen slovo, které ji nese). */
.inbox-quota { position: relative; font-size: 13px; color: var(--fs-text-muted); font-variant-numeric: tabular-nums;
  text-decoration: underline; text-decoration-color: var(--fs-hairline-2); text-underline-offset: 3px; text-wrap: pretty; }
.inbox-quota:hover { color: var(--fs-text); text-decoration-color: currentColor; }
.inbox-quota__why { font-weight: 500; color: var(--fs-coral); }
@media (max-width: 720px) {
  .inbox-filter > .fs-panel__body { padding: 12px 16px; gap: 8px; }
  .inbox-search { flex: 1; min-width: 0; max-width: none; }
  .inbox-filter__toggle { display: inline-flex; flex-shrink: 0; }
  .inbox-filter__adv { display: none; flex-basis: 100%; flex-wrap: wrap; gap: 8px; align-items: center; }
  .inbox-filter__adv.is-open { display: flex; }
  .inbox-filter__adv .fs-select { flex: 1 1 calc(50% - 4px); min-width: 0; max-width: none; }
  .inbox-filter__adv .inbox-filter__wide { flex-basis: 100%; max-width: none; }
  .inbox-filter > .fs-panel__foot { padding: 12px 16px; }
  /* Text zůstává malý, dotyková plocha 44 px jde přes pseudo-prvek */
  .inbox-quota::after { content: ""; position: absolute; inset: -12px 0; }
}

/* ── Detail komentáře (templates/app/comments/detail.html) ─────────────── */
.cd-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 16px; align-items: start; }
/* Věta pod jménem: čekající komentář čeká na vás, jantarově */
.cd-waiting { color: var(--fs-amber); }
.cd-source { display: flex; align-items: center; gap: 10px; min-width: 0; }
.cd-source__thumb { width: 32px; height: 32px; flex-shrink: 0; object-fit: cover; border-radius: var(--fs-radius-xs); background: var(--fs-surface-3); }
.cd-source a, .cd-source__title { min-width: 0; color: var(--fs-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cd-source a:hover { color: var(--fs-text); }
.cd-source__account { flex-shrink: 0; }
.cd-thread { display: flex; flex-direction: column; gap: 18px; }
.cd-msg { display: flex; align-items: flex-start; gap: 12px; max-width: min(760px, 88%); }
.cd-msg--out { flex-direction: row-reverse; align-self: flex-end; }
.cd-msg--depth { margin-left: 48px; }
.cd-msg__body { min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 6px; }
.cd-msg--out .cd-msg__body { align-items: flex-end; }
.cd-msg__meta { display: flex; flex-wrap: wrap; gap: 4px 10px; font-size: 12px; color: var(--fs-text-dim); }
.cd-msg__meta strong { color: var(--fs-text); font-weight: 500; }
.cd-bubble { max-width: 100%; padding: 12px 14px; background: var(--fs-surface-2); border-radius: var(--fs-radius-md); line-height: 1.55; word-break: break-word; }
.cd-bubble__text { white-space: pre-wrap; }
.cd-msg--out .cd-bubble { background: var(--fs-teal-dim); }
.cd-bubble .fs-att--figure + .cd-bubble__text { display: block; margin-top: 8px; }
.cd-bubble .fs-att__open img { max-height: 420px; }
/* Překlad a Přeložit pod bublinou komentáře, zarovnané s jejím textem */
.cd-msg__trans { padding-left: 14px; }
.cd-msg__trans .rp-trans { margin-top: 2px; }
.cd-msg__trans .rp-trans__tools { margin-top: 0; }
.cd-author { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; }
.cd-author__id { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.cd-author__name { font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 1100px) { .cd-layout { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 720px) {
  .cd-msg { max-width: 100%; }
  .cd-msg--depth { margin-left: 24px; }
  .cd-msg--out { padding-left: 24px; }
  .cd-layout .rp-actions { flex-wrap: wrap; }
  .cd-layout .rp-actions__btns { margin-left: auto; }
}

/* ── Účty, detail účtu, statistiky (templates/app/accounts/) ─────────────── */
.acc-filter { margin-bottom: 12px; }
.acc-list { margin: 0; list-style: none; }
.acc-name { display: block; color: var(--fs-text); }
.acc-name:hover { color: var(--fs-teal); }
/* Řádek účtu bez sloupce se štítkem stavu: stav je pod jménem (_account_status.html).
   Pod 720 px platí skládání z bloku .fs-row výš (třetí je počet čekajících). */
@media (min-width: 1101px) { .acc-list > .fs-row--account { grid-template-columns: 36px minmax(0,1fr) 120px 260px; } }
@media (max-width: 1100px) { .acc-list > .fs-row--account > .fs-row__actions { grid-column: 2 / span 2; } }
/* Řádek stavu se zalamuje místo ořezu (ořez by vzal i 44px cíl Obnovit), jako text:
   viz .acc-st__dot. Na telefonu je „Spravuje…" vlastní řádek. */
.fs-row--account .fs-row__meta { display: block; white-space: normal; }
/* Věty stavu (důvod, plátce, patička karty) bez osiřelého posledního slova */
.fs-row__tr:is(.acc-error, .acc-paused), .fs-acc__foot p, .fs-acc__platform, .fs-pagehead__sub:has(.acc-st__dot) { text-wrap: pretty; }
@media (max-width: 720px) {
  .acc-owner { display: block; }
  .acc-owner::before { content: none; }
}
/* Čekající komentáře: jantarová věta je odkaz do schránky na komentáře účtu */
.acc-waiting { display: inline-flex; align-items: center; min-height: 32px; font-size: 13px; font-weight: 500; color: var(--fs-amber); }
.acc-waiting:hover { color: var(--fs-amber); text-decoration: underline; text-underline-offset: 3px; }
@media (pointer: coarse) { .acc-waiting { min-height: 44px; } }
.fs-row__tr:is(.acc-error, .acc-paused) { margin-top: 4px; white-space: normal; }
/* Barvu nese slovo Odpojeno v řádku stavu, důvod pod ním je obyčejná věta */
.fs-row__tr.acc-error { color: var(--fs-text-muted); }
.acc-foot { justify-content: space-between; flex-wrap: wrap; font-size: 13px; color: var(--fs-text-muted); }
.acc-foot[hidden] { display: none; }

.acc-chart { height: 260px; }
.acc-chart-note { font-size: 13px; color: var(--fs-text-dim); }
.acc-waiting-n { font-weight: 500; color: var(--fs-amber); }
.acc-chart--empty { display: grid; place-items: center; font-size: 13px; color: var(--fs-text-muted); }
.acc-chart--empty[hidden] { display: none; }
.acc-videos { min-width: 640px; }
.acc-videos tbody tr { cursor: pointer; }
.acc-video { display: flex; align-items: center; gap: 12px; min-width: 0; }
.acc-video__text { min-width: 0; }
.acc-video__title { max-width: 440px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.acc-video__title a { color: inherit; }
.acc-video__title a:hover { color: var(--fs-teal); }
.acc-video__sync { margin-top: 2px; font-size: 12px; color: var(--fs-text-dim); }
.acc-thumb { width: 56px; height: 32px; flex-shrink: 0; display: grid; place-items: center; overflow: hidden;
  border-radius: var(--fs-radius-xs); background: var(--fs-surface-3); color: var(--fs-text-muted); }
.acc-thumb img { width: 100%; height: 100%; object-fit: cover; }
.acc-thumb svg { width: 14px; height: 14px; }

.stats-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; }
/* Přírůstek za období: tyrkysové je jen kladné číslo, úbytek sledujících korálový */
.stats-delta { font-weight: 500; color: var(--fs-teal); font-variant-numeric: tabular-nums; }
.stats-delta--down { color: var(--fs-coral); }
.stats-delta--flat { color: inherit; }
.stats-note { font-size: 13px; color: var(--fs-text-dim); }
.stats-foot__part { white-space: nowrap; }
.stats-tabs { min-width: 0; }
.stats-chart { height: 240px; }
.stats-chart-empty { height: 240px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px;
  font-size: 13px; color: var(--fs-text-dim); text-align: center; }
.stats-chart-empty[hidden] { display: none; }
.stats-chart-empty svg { opacity: .6; }
.stats-chart-empty span { max-width: 320px; line-height: 1.5; }
.stats-tile { font-size: 40px; font-weight: 500; letter-spacing: -.03em; color: var(--fs-text); font-variant-numeric: tabular-nums; }
.stats-top { min-width: 760px; }
/* Telefon: tabulky videí bez posunu do strany. Méně důležité sloupce (hide-sm)
   zmizí a název se zalomí nejvýš na dva řádky, místo aby ho uřízl okraj panelu. */
@media (max-width: 600px) {
  .fs-table .hide-sm { display: none; }
  :is(.acc-videos, .stats-top) { min-width: 0; }
  .acc-video__title { max-width: none; white-space: normal; overflow-wrap: break-word;
    display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
  .acc-thumb { width: 44px; height: 25px; }
  .acc-video { gap: 10px; }
  .fs-table-wrap :is(.acc-videos, .stats-top) :is(th, td) { padding-inline: 6px; }
  /* Okraj tabulky jako okraj stránky na telefonu */
  .fs-table-wrap .fs-table :is(th, td):first-child { padding-left: 16px; }
  .fs-table-wrap .fs-table :is(th, td):last-child { padding-right: 16px; }
}
.stats-rate { height: 3px; min-width: 64px; margin-top: 6px; }
.stats-spark { display: inline-block; width: 80px; height: 32px; vertical-align: middle; }
@media (max-width: 1100px) { .stats-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 720px) {
  .acc-pending--none { display: none; }   /* jinak se akce u účtu bez čekajících zalomí na další řádek */
  .stats-tabs { flex-basis: 100%; margin-left: 0; }
}
@media (max-width: 640px) { .stats-tiles { grid-template-columns: 1fr; } }

/* ── Nastavení účtu (templates/app/accounts/settings.html) ──────────────────
   Sekce přepíná inline JS v šabloně. Položky navigace vypadají jako v liště. */
.ss-layout { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 24px; align-items: start; }
.ss-nav { position: sticky; top: 28px; display: flex; flex-direction: column; gap: 2px; padding: 8px; }
.ss-nav__sep { height: 1px; margin: 4px 8px; background: var(--fs-hairline); }
.ss-section { display: none; }
.ss-section.is-active { display: block; }
/* Formulářové sekce drží šířku textových stránek (1180 bez navigace), editor persony ne */
.ss-section--form { max-width: 936px; }
.ss-options { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.ss-option { display: flex; align-items: flex-start; gap: 12px; padding: 12px 14px; border: 1px solid var(--fs-hairline); border-radius: var(--fs-radius-sm); cursor: pointer;
  transition: border-color var(--fs-dur-fast) var(--fs-ease), background var(--fs-dur-fast) var(--fs-ease); }
.ss-option:hover { border-color: var(--fs-hairline-2); background: rgba(var(--fs-ink),.02); }
.ss-option.is-selected { border-color: var(--fs-teal-ring); background: var(--fs-teal-dim); }
/* Zamčená volba je ztlumená, ale řádek „Od plánu …" se zámkem zůstává čitelný: je to jediná informace navíc */
.ss-option.is-locked { cursor: not-allowed; }
.ss-option.is-locked > :not(.ss-option__body), .ss-option.is-locked .ss-option__body > :not(.ss-option__lock) { opacity: .5; }
.ss-option.is-locked:hover { border-color: var(--fs-hairline); background: none; }
.ss-option__radio { width: 16px; height: 16px; margin-top: 2px; flex-shrink: 0; border-radius: 50%; border: 1.5px solid var(--fs-border-control); }
.ss-option.is-selected .ss-option__radio { border: 5px solid var(--fs-teal); }
.ss-option__body { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ss-option__label { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; font-weight: 500; }
.ss-option__desc { font-size: 13px; color: var(--fs-text-dim); }
.ss-option__lock { display: inline-flex; align-items: center; gap: 6px; margin-top: 2px; font-size: 12px; color: var(--fs-text-muted); }
.ss-option__lock svg { width: 12px; height: 12px; }
.ss-conf { display: flex; flex-direction: column; gap: 10px; margin-top: 8px; padding: 16px; background: var(--fs-surface-2); border-radius: var(--fs-radius-md); }
.ss-conf__value { font-size: 18px; font-weight: 500; color: var(--fs-teal); font-variant-numeric: tabular-nums; }
.ss-field { max-width: 320px; }
.ss-options .ss-field { margin-top: 8px; }
.ss-unit { display: flex; }
.ss-unit .fs-input { border-radius: var(--fs-radius-sm) 0 0 var(--fs-radius-sm); }
.ss-unit__suffix { display: flex; align-items: center; padding: 0 14px; border: 1px solid var(--fs-border-control); border-left: 0;
  border-radius: 0 var(--fs-radius-sm) var(--fs-radius-sm) 0; background: var(--fs-surface-3); font-size: 13px; color: var(--fs-text-muted); }
.ss-content .fs-pref form { margin: 0; }
/* Jediná ukládací lišta formuláře; v editoru persony ukazuje i neuložené změny */
.ss-savebar { position: sticky; bottom: max(16px, var(--fs-consent-h, 0px)); z-index: 5; display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin-top: 16px; padding: 10px 12px;
  background: var(--fs-surface-2); border: 1px solid var(--fs-hairline-2); border-radius: var(--fs-radius-md); }
.ss-savebar__dirty { flex: 1; display: flex; align-items: center; gap: 8px; min-width: 0; }
.ss-savebar__dirty[hidden] { display: none; }
.ss-savebar__state { flex: 1; font-size: 13px; color: var(--fs-text-dim); }
@media (max-width: 1100px) {
  .ss-layout { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .ss-nav { position: static; flex-direction: row; flex-wrap: wrap; }
  .ss-nav .ss-nav__item { width: auto; }
  .ss-nav__sep { display: none; }
}
@media (max-width: 880px) { .ss-savebar { bottom: max(calc(64px + env(safe-area-inset-bottom)), var(--fs-consent-h, 0px)); } }

/* ── Persona editor (accounts/_persona_editor.html, persona-editor.js) ──────
   Sloupce podle šířky editoru, ne okna: nastavení má vlastní navigaci.
   clip místo hidden: hidden by z obalu udělal scroll kontejner a lišta
   uložení by se přestala lepit. */
.pe-wrap { container-type: inline-size; overflow: clip; }
.pe { display: grid; grid-template-columns: 1fr; }
.pe-col { padding: 22px; min-width: 0; }
.pe-cap { margin: 0 0 10px; padding: 0; font-size: 13px; font-weight: 500; color: var(--fs-text-muted); }
@container (min-width: 760px) {
  .pe { grid-template-columns: 250px minmax(0, 1fr); }
  .pe-preview { grid-column: 1 / -1; border-top: 1px solid var(--fs-hairline); }
}
@container (min-width: 1100px) {
  .pe { grid-template-columns: 250px minmax(0, 1fr) 340px; }
  .pe-preview { grid-column: auto; border-top: 0; border-left: 1px solid var(--fs-hairline); }
}
.pe-arch { display: flex; flex-direction: column; gap: 6px; margin: 0; border: 0; background: var(--fs-bg); }
.pe-arch .pe-cap { float: left; width: 100%; }
.pe-arch__item { position: relative; display: grid; grid-template-columns: 52px 1fr; gap: 12px; align-items: center; padding: 10px; cursor: pointer;
  background: var(--fs-surface-2); border: 1px solid var(--fs-hairline); border-radius: var(--fs-radius-md); transition: border-color var(--fs-dur-fast) var(--fs-ease); }
.pe-arch__item:hover { border-color: var(--fs-hairline-2); }
.pe-arch__item input { position: absolute; opacity: 0; pointer-events: none; }
.pe-arch__item:has(input:checked) { border-color: var(--fs-teal-ring); }
.pe-arch__item:has(input:focus-visible) { outline: 2px solid var(--fs-teal); outline-offset: 2px; }
.pe-mini { display: block; width: 52px; height: 30px; }
.pe-mini rect { fill: var(--fs-text-dim); opacity: .55; }
.pe-arch__item:has(input:checked) .pe-mini rect { fill: var(--fs-teal); opacity: 1; }
.pe-arch__text b { display: block; font-weight: 500; font-size: 14px; }
.pe-arch__text > span { display: block; font-size: 13px; color: var(--fs-text-dim); line-height: 1.35; }
/* Doporučený archetyp: tlumený řádek pod jménem, bez podbarvení */
.pe-arch__text > .pe-rec { margin-top: 1px; font-size: 12px; color: var(--fs-text-muted); }
.pe-sheet { min-width: 0; }
.pe-print { margin: -22px -22px 0; padding: 22px 22px 16px; border-bottom: 1px solid var(--fs-hairline); background: var(--fs-surface-1); }
.pe-print__top { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.pe-name { flex: 1; min-width: 0; margin-left: -6px; padding: 2px 6px; font: 500 26px/1.1 var(--fs-sans); letter-spacing: -.02em; color: var(--fs-text);
  background: transparent; border: 1px solid transparent; border-radius: var(--fs-radius-xs); }
.pe-name:hover { border-color: var(--fs-hairline-2); }
.pe-name:focus { border-color: var(--fs-teal); box-shadow: 0 0 0 3px var(--fs-teal-dim); outline: none; }
.pe-wave { display: block; width: 100%; height: 120px; margin: 14px 0 8px; }
.pe-wave__ghost rect { fill: none; stroke: var(--fs-hairline-2); stroke-width: 1; }
.pe-wave__live rect { fill: var(--fs-teal); }
.pe-based { margin: 0; font-size: 13px; color: var(--fs-text-muted); }
.pe-group { margin: 22px 0 0; padding: 0; border: 0; min-width: 0; }
.pe-locked { margin: 0 0 10px; }

/* Atribut: bipolární slider plněný od středu (neutrál = 3) */
.vs { padding: 10px 0 12px; border-bottom: 1px solid var(--fs-hairline); }
.vs:last-child { border-bottom: 0; }
.pe-attrs[disabled] .vs { opacity: .5; pointer-events: none; }
.vs-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 10px; }
.vs-head label { font-weight: 500; font-size: 14px; }
.vs-word { position: relative; display: inline-block; height: 20px; min-width: 120px; overflow: hidden; text-align: right; font-size: 13px; color: var(--fs-teal); }
.vs-word span { display: block; line-height: 20px; }
.vs-word span.is-up { animation: pe-roll-up .26s var(--fs-ease-out); }
.vs-word span.is-down { animation: pe-roll-down .26s var(--fs-ease-out); }
@keyframes pe-roll-up { from { transform: translateY(100%); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes pe-roll-down { from { transform: translateY(-100%); opacity: 0; } to { transform: none; opacity: 1; } }
.vs.is-mod .vs-word { color: var(--fs-amber); }
.vs-track { position: relative; height: 28px; margin: 0 9px; }
.vs-rail { position: absolute; left: 0; right: 0; top: 12px; height: 4px; border-radius: 2px; background: var(--fs-surface-3); }
.vs-fill { position: absolute; top: 12px; height: 4px; border-radius: 2px; background: var(--fs-teal);
  transition: left var(--fs-dur) var(--fs-ease-out), width var(--fs-dur) var(--fs-ease-out); }
.vs-notch { position: absolute; top: 8px; width: 2px; height: 12px; margin-left: -1px; border-radius: 1px; background: var(--fs-hairline-2); }
.vs-notch.is-mid { top: 4px; height: 20px; background: var(--fs-text-dim); opacity: .6; }
.vs-ghost { position: absolute; top: 1px; width: 14px; height: 26px; margin-left: -7px; border-radius: 7px; border: 1.5px solid var(--fs-hairline-2); transition: border-color var(--fs-dur); }
.vs.is-mod .vs-ghost { border-color: var(--fs-amber); border-style: dashed; }
.vs .fs-range { position: absolute; inset: 0 -9px; width: calc(100% + 18px); }
.vs .fs-range::-webkit-slider-runnable-track { height: 28px; background: transparent; box-shadow: none; }
.vs .fs-range::-moz-range-track { height: 28px; background: transparent; }
.vs .fs-range::-moz-range-progress { background: transparent; }
.vs .fs-range::-webkit-slider-thumb { margin-top: 0; }
.vs-ends { display: flex; justify-content: space-between; margin-top: 4px; font-size: 12px; color: var(--fs-text-dim); }

/* Rysy: pilulka (skutečný přepínač, rádio nebo zaškrtávátko pod ní), zapnutá tyrkysově,
   bez teček. Jen ke čtení (ukázka na webu, disabled) bez hoveru a s výchozím kurzorem. */
.pe-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.pe-chip { position: relative; cursor: pointer; }
.pe-chip input { position: absolute; opacity: 0; pointer-events: none; }
.pe-chip > span { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 12px; border-radius: var(--fs-radius-pill);
  font-size: 13px; font-weight: 500; white-space: nowrap; background: rgba(var(--fs-ink),.06); border: 1px solid var(--fs-hairline-2);
  color: var(--fs-text-muted); transition: border-color var(--fs-dur-fast) var(--fs-ease); }
.pe-chip:hover > span { border-color: rgba(var(--fs-ink),.3); }
.pe-chip input:checked + span { background: var(--fs-teal-dim); border-color: var(--fs-teal-ring); color: var(--fs-teal); }
.pe-chip input:focus-visible + span { outline: 2px solid var(--fs-teal); outline-offset: 2px; }
.pe-chip:has(input:disabled) { cursor: default; }
.pe-chip:has(input:disabled) > span { opacity: .6; }
.pe-chip:has(input:disabled):hover > span { border-color: var(--fs-hairline-2); }
.pe-chip:has(input:disabled:checked):hover > span { border-color: var(--fs-teal-ring); }
.pe-signature { display: flex; flex-direction: column; gap: 6px; max-width: 280px; margin-top: 6px; }

/* Délka odpovědi a scénáře náhledu: fs-tabs, rádio skryté pod štítkem */
.pe-seg label { position: relative; display: flex; }
.pe-seg input { position: absolute; opacity: 0; pointer-events: none; }
.pe-seg input:checked + .fs-tab { background: var(--fs-surface-4); color: var(--fs-text); }
.pe-seg input:focus-visible + .fs-tab { outline: 2px solid var(--fs-teal); outline-offset: -2px; }
.pe-warn { margin: 12px 0 0; font-size: 13px; color: var(--fs-amber); }

/* Doplňky: řádky se shrnutím obsahu místo nativních rozbalovátek */
.pe-more { margin-top: 24px; overflow: hidden; border: 1px solid var(--fs-hairline); border-radius: var(--fs-radius-md); }
.pe-more details + details { border-top: 1px solid var(--fs-hairline); }
.pe-more details[open] { background: var(--fs-bg); }
.pe-more summary { list-style: none; display: grid; grid-template-columns: 32px minmax(0, 1fr) auto 16px; gap: 12px; align-items: center; padding: 12px 14px; cursor: pointer; }
.pe-more summary::-webkit-details-marker { display: none; }
.pe-more summary:hover { background: rgba(var(--fs-ink),.02); }
.pe-more summary:focus-visible { outline: 2px solid var(--fs-teal); outline-offset: -2px; }
.pe-more__ico { width: 32px; height: 32px; display: grid; place-items: center; border-radius: var(--fs-radius-xs); background: var(--fs-bg); border: 1px solid var(--fs-hairline); color: var(--fs-text-muted); }
.pe-more__ico svg { width: 16px; height: 16px; }
.pe-more__text b { display: block; font-weight: 500; font-size: 14px; }
.pe-more__text span { display: block; font-size: 13px; color: var(--fs-text-dim); }
.pe-more__state { font-size: 13px; color: var(--fs-text-dim); white-space: nowrap; }
.pe-more__state.is-set { color: var(--fs-teal); }
.pe-more__state.is-ai { color: var(--fs-violet); }
.pe-more__chev { width: 16px; height: 16px; color: var(--fs-text-dim); transition: transform var(--fs-dur) var(--fs-ease-out); }
.pe-more details[open] .pe-more__chev { transform: rotate(90deg); }
.pe-more__body { margin: 0; padding: 2px 14px 16px 58px; border: 0; min-width: 0; font-size: 13px; color: var(--fs-text-muted); }
.pe-more__body .fs-hint { margin-top: 6px; }
.pe-list-label { margin: 10px 0 6px; }
.pe-list { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }
.pe-list__row { display: flex; gap: 6px; width: 100%; }
.pe-list__row .fs-input { flex: 1; }
.pe-notes { margin: 0 0 6px; font-size: 13px; line-height: 1.55; color: var(--fs-text-muted); }
@media (max-width: 560px) {
  .pe-more__body { padding-left: 14px; }
  .pe-more summary { grid-template-columns: 32px minmax(0, 1fr) 16px; }
  .pe-more__state { grid-column: 2; grid-row: 2; }
}
.pe-sheet .ss-savebar { margin-top: 22px; }

/* Náhled jako konverzace, bubliny jako v detailu komentáře (.cd-bubble) */
.pe-preview { display: flex; flex-direction: column; gap: 12px; background: var(--fs-surface-1); }
.pe-preview .pe-cap { margin: 0; }
.pe-scenarios { display: grid; grid-template-columns: repeat(auto-fit, minmax(84px, 1fr)); border-radius: var(--fs-radius-md); }
.pe-scenarios .fs-tab { justify-content: center; }
.pe-scenario.is-on { background: var(--fs-surface-4); color: var(--fs-text); }
.pe-scenario:focus-visible { outline: 2px solid var(--fs-teal); outline-offset: -2px; }
.pe-thread { display: flex; flex-direction: column; gap: 10px; margin-top: 4px; }
.pe-msg { max-width: 92%; padding: 12px 14px; border: 1px solid transparent; border-radius: var(--fs-radius-md); font-size: 14px; line-height: 1.5; word-break: break-word; }
.pe-msg p { margin: 0; min-height: 1.5em; }
.pe-msg small { display: block; margin-bottom: 3px; font-size: 12px; color: var(--fs-text-dim); }
.pe-msg--fan { align-self: flex-start; background: var(--fs-surface-2); }
.pe-msg--me { align-self: flex-end; background: var(--fs-teal-dim); }
.pe-msg--me small { color: var(--fs-teal); }
.pe-msg--me.is-stale { opacity: .6; }
.pe-eq { display: flex; gap: 4px; align-items: flex-end; height: 22px; }
.pe-eq i { width: 3px; border-radius: 2px; background: var(--fs-teal); animation: pe-eq .9s ease-in-out infinite; }
.pe-eq i:nth-child(2) { animation-delay: .12s; }
.pe-eq i:nth-child(3) { animation-delay: .24s; }
.pe-eq i:nth-child(4) { animation-delay: .36s; }
.pe-eq i:nth-child(5) { animation-delay: .48s; }
@keyframes pe-eq { 0%, 100% { height: 5px; } 50% { height: 20px; } }
.pe-before { align-self: flex-end; max-width: 92%; margin: 0; font-size: 13px; color: var(--fs-text-dim); text-decoration: line-through; text-decoration-color: rgba(134,140,152,.45); }
.pe-own { display: block; width: 100%; min-width: 220px; padding: 0; border: 0; resize: vertical; background: transparent; color: var(--fs-text); font: 14px/1.5 var(--fs-sans); }
.pe-own[hidden] { display: none; }
.pe-own:focus, .pe-own:focus-visible { outline: none; box-shadow: none; }
.pe-msg--fan:has(.pe-own:focus-visible) { border-color: var(--fs-teal-ring); }
.pe-note { color: var(--fs-amber); }
.pe-note.is-danger { color: var(--fs-coral); }
.pe-preview__actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pe-status { font-size: 13px; color: var(--fs-text-dim); }
.pe-hint { margin: 0; font-size: 12px; color: var(--fs-text-dim); }
.pe-knowhow { margin: auto 0 0; padding: 12px 0 0 12px; border-left: 2px solid var(--fs-violet); font-size: 13px; line-height: 1.5; color: var(--fs-text-muted); }

/* ── Billing (templates/app/billing/) ──────────────────────────────────────
   Review a zrušení čtou peníze jako účtenku: popisek, tečkované vodítko
   a hodnota s tabulkovými číslicemi. */
.bil-top { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 16px; }
.bil-top > .fs-panel { display: flex; flex-direction: column; }
.bil-top .fs-panel__body { flex: 1; }
.bil-actions { flex-wrap: wrap; gap: 8px; }
/* Zrušení předplatného: stejný okraj jako ostatní karty Billingu (fs-set má 26 px z Nastavení) */
.bil-cancel > .fs-set { padding: 22px; }
@media (min-width: 721px) { .bil-cancel > .fs-set { grid-template-columns: minmax(0, 1fr) auto; align-items: center; } }
.bil-kv-link { display: flex; align-items: baseline; justify-content: flex-end; flex-wrap: wrap; gap: 4px 16px; }
/* Ceny a tlačítka obou cyklů jsou v HTML, přepínač jen mění data-cycle */
.bil-plans[data-cycle="monthly"] [data-for="yearly"], .bil-plans[data-cycle="yearly"] [data-for="monthly"] { display: none; }
.bil-plans { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.bil-plan { display: flex; flex-direction: column; gap: 14px; padding: 18px; }
.bil-plan.is-recommended { border-color: var(--fs-violet-ring); }
/* Aktuální plán: obroučka a štítek v barvě tarifu, velikost karty stejná,
   ať jdou plány porovnat. Místo tlačítka má dole využití. */
.bil-plan.is-current { border-color: rgb(var(--plan)); }
.bil-plan.is-current .bil-plan__use { margin-top: auto; }
.bil-plan__head { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 28px; }
.bil-plan__price { font-size: 24px; font-weight: 500; letter-spacing: -.02em; line-height: 1.2; }
.bil-plan__price small { margin-left: 2px; font-size: 13px; font-weight: 400; letter-spacing: 0; color: var(--fs-text-dim); }
.bil-plan__limits { display: grid; gap: 4px; margin: 0; padding: 0; list-style: none; font-size: 13px; color: var(--fs-text-muted); }
.bil-plan__use { display: grid; font-size: 12px; color: var(--fs-text-dim); }
.bil-plan__cta { margin-top: auto; }
.bil-plan__tag { font-size: 12px; color: var(--fs-text-dim); white-space: nowrap; }
.bil-plan__when { font-size: 13px; color: var(--fs-text-muted); text-align: center; }
/* Předplatné, které končí: jantarové je jen datum konce */
.bil-ends { color: var(--fs-amber); }
/* Popis faktury bere zbytek šířky a zkracuje se, na mobilu zmizí */
.bil-inv__desc { width: 100%; max-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--fs-text-muted); }
.bil-inv td { white-space: nowrap; }
.bil-inv__due { color: var(--fs-amber); font-weight: 500; }
.bil-inv__failed { color: var(--fs-coral); font-weight: 500; }
.bil-inv :is(th, td):first-child { padding-left: 22px; }
.bil-inv :is(th, td):last-child { padding-right: 22px; }
.bil-sheet { max-width: 640px; margin: 0 auto; }
.bil-sheet > .fs-panel__foot { padding: 20px 40px 28px; }
.bil-fromto { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin: 0; font-size: 14px; color: var(--fs-text-muted); }
.bil-fromto b { font-weight: 500; color: var(--fs-text); }
.bil-label { margin: 0 0 6px; font-size: 13px; color: var(--fs-text-dim); }
.bil-diffs { display: grid; gap: 6px; margin: 0; font-size: 14px; }
.bil-diffs > div { display: flex; justify-content: space-between; gap: var(--fs-r-3); }
.bil-diffs dd { margin: 0; font-variant-numeric: tabular-nums; color: var(--fs-text-muted); white-space: nowrap; }
.bil-diffs .is-gain { color: var(--fs-teal); }
.bil-diffs .is-loss { color: var(--fs-coral); }
/* Slovní řádky (cancel.html): text se smí zalomit, zarovnaný vpravo jako čísla */
.bil-diffs__note dd { max-width: 60%; color: var(--fs-text); text-align: right; white-space: normal; }
.bil-money { display: grid; gap: 8px; }
.bil-ledger { display: grid; gap: 8px; margin: 0; font-size: 14px; }
.bil-ledger > div { display: flex; align-items: baseline; gap: 10px; min-width: 0; }
.bil-ledger dt { display: flex; align-items: baseline; gap: 10px; flex: 1; min-width: 0; color: var(--fs-text-muted); white-space: nowrap; }
.bil-ledger dt::after { content: ""; flex: 1; min-width: 16px; border-bottom: 1px dotted var(--fs-hairline-2); }
.bil-ledger dd { margin: 0; font-variant-numeric: tabular-nums; white-space: nowrap; }
.bil-ledger dd a { margin-left: 14px; font-size: 13px; }
.bil-ledger .is-sub dt { padding-left: var(--fs-r-4); color: var(--fs-text-dim); font-size: 13px; white-space: normal; }
.bil-ledger .is-sub dd { color: var(--fs-text-dim); font-size: 13px; }
.bil-ledger .is-total dt { color: var(--fs-text); font-weight: 500; }
.bil-ledger .is-total dd { font-size: 18px; font-weight: 500; color: var(--fs-teal); }
.bil-breakdown summary { width: fit-content; font-size: 13px; color: var(--fs-text-muted); cursor: pointer; }
.bil-breakdown summary:hover { color: var(--fs-text); }
.bil-breakdown .bil-ledger { margin-top: 8px; }
.bil-note { margin: 0; font-size: 14px; color: var(--fs-text-muted); }
.bil-fine { flex-basis: 100%; margin: 0; font-size: 12px; color: var(--fs-text-dim); }
@media (max-width: 900px) { .bil-top { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 880px) {
  .bil-ledger dd a { display: inline-flex; align-items: center; min-height: 44px; }
  .bil-breakdown summary { padding-block: 12px; }
}
@media (max-width: 720px) { .bil-sheet > .fs-panel__foot { padding: 16px 24px 24px; } }
@media (max-width: 640px) {
  .bil-actions { flex-direction: column; align-items: stretch; }
  .bil-actions .fs-btn { width: 100%; }
  .bil-inv__desc { display: none; }
  .bil-inv th, .bil-inv td { padding-inline: 8px; }
  /* Klíč se nezkracuje, dlouhá hodnota se zalomí ve svém sloupci */
  .bil-ledger dt { min-width: max-content; }
  /* Řádek s odkazem: klíč nahoře, pod ním hodnota vlevo a odkaz vpravo */
  .bil-ledger > div:has(dd a) { flex-wrap: wrap; }
  .bil-ledger > div:has(dd a) dt::after { display: none; }
  .bil-ledger dd:has(a) { display: flex; align-items: center; justify-content: space-between; gap: var(--fs-r-3); flex-basis: 100%; text-align: left; }
  .bil-ledger dd { margin-left: auto; white-space: normal; text-align: right; }
}

/* ── Nastavení (templates/app/settings.html) ────────────────────────────── */
.set-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 20px; }
.fs-field--foot { grid-column: 1 / -1; flex-direction: row; justify-content: flex-end; }
.fs-input.is-disabled { display: flex; align-items: center; opacity: .6; cursor: not-allowed; overflow: hidden; white-space: nowrap; }
.set-lrow-icon { background: #fff; }
/* Panel Cookies: co platí teď a přímá volba (consent.js) */
.set-consent__now { margin-top: 8px; font-size: 13px; font-weight: 500; color: var(--fs-text); }
.set-consent { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 8px; }
.set-consent[hidden] { display: none; }
/* Na dotyk 44 px jako tlačítka lišty */
@media (pointer: coarse) { .set-consent .fs-btn { height: 44px; } }
.set-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.set-actions form { margin: 0; }
.fs-panel--danger .fs-banner { margin: 0; }
@media (max-width: 640px) {
  .set-fields { grid-template-columns: 1fr; }
}

/* ── Tým (templates/app/team/index.html) ────────────────────────────────── */
.team-h { font-size: 15px; font-weight: 500; margin: 0 0 12px; }
.team-pf { width: 12px; height: 12px; flex-shrink: 0; }
/* Řádek člena týmu: role (výběr nebo text) a odebrání, bez sloupce se štítkem stavu.
   Pod 720 px skládání z bloku .fs-row výš (role pod jménem, akce vpravo). */
.team-list > .fs-row--member { grid-template-columns: 36px minmax(0,1fr) auto auto; }
.team-role { gap: 6px; padding: 0 10px 0 12px; font-weight: 400; }
.team-role svg { color: var(--fs-text-dim); }
.team-role-text { font-size: 13px; color: var(--fs-text-muted); }
.team-note { margin: -4px 0 12px; font-size: 13px; color: var(--fs-text-dim); }
.team-invited { white-space: normal; }
/* Flex řádek svěřeného účtu má mezeru z gap, tečce stačí okraj za ní */
.team-list .fs-row__meta > .acc-st__dot::before { margin-left: 0; }
@media (pointer: coarse) { .team-role { height: 44px; } }
.team-leave { color: var(--fs-coral); }
.team-leave:hover { background: var(--fs-coral-dim); color: var(--fs-coral); }
.fs-panel > ul.fs-panel__body--flush { margin: 0; list-style: none; }
.fs-table .team-perm { text-align: center; width: 160px; }
.team-perm__yes { width: 16px; height: 16px; margin: 0 auto; color: var(--fs-teal); }
.team-who { flex: 1; min-width: 0; }
.role-option { display: flex; align-items: center; gap: 10px; padding: 10px 14px; background: var(--fs-surface-2);
  border: 1px solid var(--fs-hairline); border-radius: var(--fs-radius-sm); cursor: pointer; }
.role-option:hover { border-color: var(--fs-hairline-2); }
.role-option.selected { border-color: var(--fs-teal-ring); background: var(--fs-teal-dim); }
.role-option input[type="radio"] { accent-color: var(--fs-teal); }
.invite-result { min-height: 18px; font-size: 13px; }
.invite-result:empty { display: none; }
.invite-result.is-ok { color: var(--fs-teal); }
.invite-result.is-err { color: var(--fs-coral); }
@media (max-width: 720px) {
  .fs-table .team-perm { width: auto; padding: 0 8px; }
}
@media (max-width: 600px) { .fs-table .team-perm { padding: 0 4px; } }

/* ── První komentáře (templates/app/engagement/index.html) ──────────────── */
.eng-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(420px, 100%), 1fr)); gap: 16px; align-items: start; }
.eng-grid:empty { display: none; }
.eng-post { display: flex; gap: 14px; align-items: flex-start; }
.eng-thumb { width: 96px; height: 54px; flex: none; border-radius: var(--fs-radius-xs); object-fit: cover; background: var(--fs-surface-3); }
.eng-thumb--text { display: grid; place-items: center; border: 1px solid var(--fs-hairline); }
.eng-thumb--text svg { width: 20px; height: 20px; color: var(--fs-text-dim); }
.eng-post-meta { min-width: 0; flex: 1; }
.eng-post-title { font-size: 15px; font-weight: 500; margin-bottom: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.eng-post-sub { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 12px; color: var(--fs-text-dim); }
.eng-post-sub svg { width: 13px; height: 13px; }
.eng-post-sub a { color: var(--fs-text-muted); text-decoration: underline; }
.eng-post-sub a:hover { color: var(--fs-text); }
.eng-note { margin: 0; font-size: 12px; color: var(--fs-text-dim); }
.eng-foot { justify-content: space-between; }
.eng-actions { margin-left: auto; display: flex; gap: 8px; }

/* ── Onboarding a průvodce (templates/app/accounts/onboarding*.html, _how_it_works.html) */
.ob-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 16px; align-items: start; }
.ob-banner { margin-bottom: 20px; }
.ob-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.ob-tile { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; min-height: 172px; padding: 18px; color: inherit;
  background: var(--fs-surface-2); border: 1px solid var(--fs-hairline); border-radius: var(--fs-radius-md);
  transition: border-color var(--fs-dur-fast) var(--fs-ease); }
a.ob-tile:hover { border-color: var(--fs-border-hover); color: inherit; }
.ob-tile__icon { width: 28px; height: 28px; margin-bottom: 6px; color: rgb(var(--pf, 226, 232, 240)); }
.ob-tile--off .ob-tile__icon { color: var(--fs-text-dim); }
.ob-tile__name { font-size: 15px; font-weight: 500; }
.ob-tile__desc { font-size: 12px; color: var(--fs-text-dim); }
/* Akce dlaždice: Připojit (dlaždice je odkaz, tohle je jen jeho viditelná část),
   odkaz na plány se zámkem, nebo věta Brzy. Žádný štítek dostupnosti. */
.ob-tile__cta, .ob-tile__soon { margin-top: auto; }
.ob-tile__soon { font-size: 13px; color: var(--fs-text-dim); }
a.ob-tile:hover .ob-tile__cta { border-color: var(--fs-border-hover); color: var(--fs-text); }
.ob-how__list { display: flex; flex-direction: column; gap: 12px; margin: 0; padding: 0; list-style: none; font-size: 13px; color: var(--fs-text-muted); }
.ob-how__list li { display: grid; grid-template-columns: 24px minmax(0, 1fr); gap: 12px; align-items: start; }
.ob-how__num { width: 24px; height: 24px; display: grid; place-items: center; border-radius: 50%; background: var(--fs-surface-3);
  font-size: 12px; font-weight: 500; color: var(--fs-text-dim); font-variant-numeric: tabular-nums; }
.ob-how__list li > span:last-child { padding-top: 3px; }
.ob-how strong { color: var(--fs-text); font-weight: 500; }
.ob-how__note { font-size: 13px; color: var(--fs-text-dim); }
.ob-how__list + .ob-how__note, .ob-how__sub { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--fs-hairline); }
.ob-how__sub { font-size: 13px; font-weight: 500; color: var(--fs-text-muted); }
.ob-scopes { margin: 10px 0 0; padding: 0; list-style: none; }
.ob-scopes__item { display: flex; align-items: center; gap: 10px; padding: 7px 0; font-size: 13px; }
.ob-scopes__item svg { width: 14px; height: 14px; flex-shrink: 0; }
.ob-scopes__item--yes svg { color: var(--fs-teal); }
.ob-scopes__item--no svg { color: var(--fs-coral); }
.ob-scopes__item--no span { color: var(--fs-text-muted); }

.wz-profile { margin-bottom: 16px; }
.wz-step { display: none; }
.wz-step.active { display: block; }
.wz-modes { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; }
.wz-mode { position: relative; display: flex; flex-direction: column; gap: 10px; padding: 18px; cursor: pointer;
  transition: border-color var(--fs-dur-fast) var(--fs-ease); }
.wz-mode:hover { border-color: var(--fs-hairline-2); }
.wz-mode:has(input:checked) { border-color: var(--fs-teal-ring); }
.wz-mode.is-locked { cursor: not-allowed; }
.wz-mode.is-locked > :not(.wz-mode__lock) { opacity: .5; }
.wz-mode.is-locked:hover { border-color: var(--fs-hairline); }
.wz-mode__head { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 10px; padding-right: 30px; }
.wz-mode__icon { width: 20px; height: 20px; flex-shrink: 0; color: var(--fs-text-muted); }
.wz-mode:has(input:checked) .wz-mode__icon { color: var(--fs-teal); }
.wz-mode__title { font-size: 15px; font-weight: 500; letter-spacing: -.01em; }
.wz-mode__head input { position: absolute; top: 20px; right: 18px; appearance: none; width: 18px; height: 18px; margin: 0; border-radius: 50%;
  border: 1.5px solid var(--fs-border-control); background: var(--fs-bg); cursor: inherit; }
.wz-mode__head input:checked { border: 5px solid var(--fs-teal); }
.wz-mode__head input:focus-visible { outline: 2px solid var(--fs-teal); outline-offset: 2px; }
.wz-mode__desc { font-size: 13px; color: var(--fs-text-dim); line-height: 1.5; }
.wz-mode__lock { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--fs-text-muted); }
.wz-mode__lock svg { width: 12px; height: 12px; }
.wz-mode__warn { display: flex; gap: 8px; font-size: 13px; line-height: 1.5; color: var(--fs-amber); }
.wz-mode__warn svg { width: 16px; height: 16px; flex-shrink: 0; margin-top: 2px; }
.wz-conf { display: flex; flex-direction: column; gap: 8px; margin-top: 16px; padding: 16px 18px; background: var(--fs-surface-2); border-radius: var(--fs-radius-md); }
.wz-conf[hidden] { display: none; }
.wz-conf__head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.wz-conf__value { font-size: 18px; font-weight: 500; color: var(--fs-teal); font-variant-numeric: tabular-nums; }
.wz-conf__ends { display: flex; justify-content: space-between; font-size: 12px; color: var(--fs-text-dim); }
.wz-group { margin: 24px 0 4px; font-size: 13px; font-weight: 500; color: var(--fs-text-muted); }
label.fs-pref__title { display: block; cursor: pointer; }
.wz-next { margin-left: auto; }

/* ── Connect formuláře (wordpress/onlyfans/fansly_connect.html) ──────────── */
.cf-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 16px; align-items: start; }
.cf-main { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.cf-fields { display: flex; flex-direction: column; gap: 18px; }
.cf-form [hidden] { display: none; }
.cf-form .fs-panel__foot { flex-wrap: wrap; }
.cf-2fa { display: flex; flex-direction: column; gap: 8px; padding: 16px; }
.cf-2fa__row { display: flex; flex-wrap: wrap; gap: 10px; }
.cf-code { max-width: 220px; height: 44px; font-family: var(--fs-mono); font-size: 20px; letter-spacing: 8px; text-align: center; }

/* ── Výběr kanálu, účtu, stránky (accounts/_pick_profile.html) ──────────── */
.fs-row--pick { grid-template-columns: 40px minmax(0, 1fr) auto; cursor: default; }

@media (max-width: 1100px) { .ob-layout, .cf-layout { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 720px) {
  /* Dlaždice na řádek: ikona vlevo, štítek vpravo, ať devět platforem nezabere tři obrazovky */
  .ob-tile { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; gap: 2px 14px; align-items: center; min-height: 96px; padding: 14px 16px; }
  .ob-tile__icon { grid-row: 1 / span 2; margin: 0; }
  .ob-tile__name { align-self: end; }
  .ob-tile__desc { grid-column: 2; align-self: start; }
  :is(.ob-tile__cta, .ob-tile__soon) { grid-column: 3; grid-row: 1 / span 2; margin: 0; }
  .ob-tile__cta { height: 44px; }
  .fs-row--pick { flex-wrap: nowrap; align-items: center; }
  .fs-row--pick .fs-row__meta { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
}
