/* ===== Specifické styly obrazovek ===== */

/* Tréninky */
.slozka-nadpis { display:flex; align-items:center; gap:8px; margin: 18px 0 10px; }
.slozka-nadpis h3 { font-size: 14px; text-transform: uppercase; letter-spacing: 1px; color: var(--muted); }
.workout-card .meta { color: var(--muted); font-size: 13px; margin-top: 4px; }
.workout-card .ovladani { display:flex; gap:8px; margin-top: 14px; }

/* Výběr cviku v seznamu */
.cvik-radek { display:flex; align-items:center; justify-content:space-between;
              padding: 12px 0; border-bottom: 1px solid var(--line); }
.cvik-radek:last-child { border-bottom:none; }
.cvik-radek .kdo { display:flex; flex-direction:column; }

/* Aktivní trénink */
.cvik-blok { background: var(--card); border-radius: var(--radius); padding: 16px; margin-bottom: 12px; }
.cvik-blok .cvik-hlavicka { display:flex; align-items:center; justify-content:space-between; margin-bottom: 12px; }
.superset-znacka { font-size: 11px; color: var(--accent-ink); font-weight: 700; }
.rpe-input { width: 56px; }

/* Statistiky / grafy */
.graf-box { background: var(--card); border-radius: var(--radius); padding: 16px; margin-bottom: 12px; }
canvas.graf { width: 100%; height: 180px; display: block; }
.stat-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; margin-bottom: 12px; }
.stat-grid .card { margin: 0; text-align: center; }
.stat-grid .big-num { font-size: 26px; font-weight: 700; letter-spacing: -0.02em; }

/* Historie */
.hist-radek { display:flex; align-items:center; justify-content:space-between;
              padding: 14px 8px; margin: 0 -8px; border-radius: var(--r-sm);
              border-bottom: 1px solid var(--line); cursor: pointer;
              transition: background .15s ease-out; }
.hist-radek:last-child { border-bottom:none; }
.hist-radek:hover { background: var(--surface-control); }
.hist-radek:active { transform: scale(0.995); }
.hist-radek-right { display:flex; align-items:center; gap:8px; }

/* Tělo */
.metric-radek { display:flex; align-items:center; justify-content:space-between;
                padding: 12px 0; border-bottom: 1px solid var(--line); }
.metric-radek:last-child { border-bottom:none; }

/* Gym – podnavigace */
.sub-nav { display:flex; gap:6px; background:var(--surface-raised); padding:5px;
           border:1px solid var(--border-hairline); border-radius:var(--r-md); margin-bottom:18px; }
.sub-btn { flex:1; padding:9px 4px; border:none; border-radius:var(--r-sm); background:none;
           color:var(--muted); font-size:13px; font-weight:510; cursor:pointer;
           font-family:inherit; transition:background .15s ease-out, color .15s ease-out; }
.sub-btn:hover { color:var(--text); }
.sub-btn.aktivni { background:var(--surface-control); color:var(--text); }
.gym-sub > .hlavicka h1 { font-size:24px; }

/* Úvod – motivační slogan / citát dne */
.uvod-slogan { margin:2px 0 18px; padding:12px 14px; border-radius:var(--radius);
               background:var(--card); border:1px solid var(--line);
               border-left:3px solid var(--accent); }
.uvod-slogan-text { display:block; font-size:15px; line-height:1.45; font-style:italic; }
.uvod-slogan-text:empty { display:none; }
.uvod-slogan-autor { display:block; margin-top:6px; }
.uvod-slogan-autor:empty { display:none; }

/* Úvod – bento dashboard (asymetrický grid, hero = skóre spánku) */
.dash-mriz { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.dash-dlazdice { text-align:left; padding:var(--sp-4); border:1px solid var(--border-hairline);
                 border-radius:var(--r-lg); background:var(--surface-card); color:var(--text);
                 cursor:pointer; display:flex; flex-direction:column; gap:2px;
                 transition:background .15s ease-out, transform .12s ease-out, border-color .15s ease-out; }
.dash-dlazdice:hover { background:var(--surface-control); border-color:var(--border-strong); }
.dash-dlazdice:active { transform:scale(0.99); }
.dash-dlazdice-head, .dash-hero-head { display:flex; align-items:center; justify-content:space-between; }
.dash-sip { color:var(--text-tertiary); }
.dash-ikona { margin-bottom:6px; color:var(--accent-ink); }
.dash-hodnota { font-size:24px; font-weight:590; letter-spacing:-0.02em; line-height:1.1;
                overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dash-popis { font-size:13px; font-weight:510; }

/* hero dlaždice – 2 sloupce, skóre v ringu */
.dash-dlazdice.hero { grid-column:1 / -1; gap:var(--sp-3); }
.dash-hero-head .dash-ikona { margin-bottom:0; }
.dash-hero-body { display:flex; align-items:center; gap:var(--sp-4); }
.dash-hero-info { display:flex; flex-direction:column; gap:2px; min-width:0; flex:1; }
.dash-hero-radek { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.dash-hero-radek-h { font-weight:600; font-variant-numeric:tabular-nums; }
/* hero dlaždice (Spánek, Jídlo): větší text ať odpovídá velikosti buňky */
.dash-dlazdice.hero .dash-popis { font-size:16px; font-weight:600; margin-bottom:2px; }
.dash-dlazdice.hero .dash-hero-radek { gap:10px; }
.dash-dlazdice.hero .dash-hero-radek span { font-size:14px; }

/* progress ring */
.ring { position:relative; flex:0 0 auto; }
.ring-svg { width:100%; height:100%; display:block; }
.ring-progress { transition:stroke-dashoffset .4s ease-out; }
.ring-stred { position:absolute; inset:0; display:flex; flex-direction:column;
              align-items:center; justify-content:center; gap:6px; }
/* uvnitř kruhu vynuluj výchozí okraje <p> (orb-popis) → text je opravdu na středu */
.ring-stred > .orb-popis { margin:0; }

@media (min-width:560px){
  .dash-mriz.bento { grid-template-columns:repeat(3,1fr); }
  .dash-dlazdice.hero { grid-column:span 3; }
}

/* Spánek – orb */
.spanek-orb-karta { display:flex; align-items:center; gap:18px; }
.spanek-orb { position:relative; width:120px; height:120px; flex:0 0 auto; }
.orb-svg { width:120px; height:120px; display:block; }
.orb-stred { position:absolute; inset:0; display:flex; flex-direction:column;
             align-items:center; justify-content:center; }
.orb-cislo { font-size:36px; font-weight:700; letter-spacing:-0.02em; line-height:1; }
.orb-popis { font-size:11px; letter-spacing:2px; color:var(--muted); margin-top:4px; }
.orb-souhrn { flex:1; display:flex; flex-direction:column; min-width:0; }
.orb-radek { display:flex; align-items:center; justify-content:space-between; gap:10px; }
/* položka souhrnu: popisek nad hodnotou, oddělené hairline (čistší, profesionálnější) */
.orb-pol { padding:8px 0; border-top:1px solid var(--border-hairline); }
.orb-pol:first-child { padding-top:0; border-top:0; }
.orb-pol:last-child { padding-bottom:0; }
.orb-pol-popis { margin-bottom:2px; }
.orb-pol-hodnota { font-size:16px; font-weight:600; letter-spacing:-0.01em;
  font-variant-numeric:tabular-nums; line-height:1.2; }

/* Spánek – týdenní pruh */
.tyden-pruh { display:flex; align-items:flex-end; justify-content:space-between; gap:6px; }
.tyden-den { flex:1; display:flex; flex-direction:column; align-items:center; gap:6px; }
.tyden-den-hodnota { font-weight:600; font-variant-numeric:tabular-nums; color:var(--text); }
.tyden-sloupec-box { width:100%; height:80px; display:flex; align-items:flex-end;
                     background:var(--card2); border-radius:8px; overflow:hidden; }
.tyden-sloupec { width:100%; border-radius:8px; transition:height .25s; }

/* Spánek – segmentová kvalita (hvězdy) */
.seg { display:flex; gap:6px; }
.seg-btn { flex:1; padding:10px 0; border:1px solid var(--line); border-radius:10px;
           background:var(--card2); color:var(--muted); font-size:16px; cursor:pointer; }
.seg-btn.aktivni { color:var(--accent-ink); border-color:var(--accent-ink); }
.seg-emoji .seg-btn { font-size:22px; filter:grayscale(1) opacity(.55); transition:filter .15s, border-color .15s; }
.seg-emoji .seg-btn.aktivni { filter:none; background:var(--card); }

/* Spánek – statistiky (dluh / průměr) */
.sp-stat-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; align-items:stretch; }
/* svislé i vodorovné vystředění + jednotná výška buněk → text symetricky uprostřed */
.sp-stat { text-align:center; display:flex; flex-direction:column;
           align-items:center; justify-content:center; gap:4px; }
.sp-stat-cislo { font-size:26px; font-weight:700; letter-spacing:-0.02em; line-height:1.1; }
/* min-height ~2 řádky → popisky všech tří statistik zaberou stejně místa = symetrie */
.sp-stat-popis { min-height:2.4em; display:flex; align-items:center; justify-content:center; }

/* Spánek – pravidelnost */
.sp-reg-hlava { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.sp-reg-znamka { font-weight:700; font-size:14px; }

/* Spánek – korelační karty */
.sp-korel-radek { display:flex; gap:10px; align-items:flex-start; margin-top:10px; line-height:1.45; font-size:15px; }
.sp-korel-ik { flex:0 0 auto; }

/* Spánek – návyk zápisu (cue) */
.sp-cue { margin-bottom:12px; }

/* Spánek – heatmapa konzistence */
.sp-heat { display:grid; grid-template-columns:repeat(7, 1fr); gap:5px; }
.sp-heat-h { text-align:center; padding-bottom:2px; }
.sp-heat-cell { aspect-ratio:1; display:flex; align-items:center; justify-content:center;
                font-size:11px; border-radius:6px; background:var(--heat-0); color:var(--muted); }
.sp-heat-cell.p1 { background:var(--heat-2); color:var(--text); }
.sp-heat-cell.p2 { background:var(--heat-3); color:var(--accent-text); }
.sp-heat-cell.p3 { background:var(--heat-4); color:var(--accent-text); font-weight:590; }
.sp-heat-cell.sp-heat-klik { cursor:pointer; transition:transform .12s ease-out, filter .12s ease-out; }
.sp-heat-cell.sp-heat-klik:active { transform:scale(0.92); filter:brightness(1.1); }
/* Light: nejvyšší úroveň má tmavé pozadí → bílý text (kontrast AA ~5.7:1).
 * p2 (heat-3) zůstává s tmavým textem (~5.3:1). */
[data-theme="light"] .sp-heat-cell.p3 { color:#ffffff; }
.sp-heat-leg { margin-top:14px; text-align:center; line-height:1.4; }

/* Spánek – tip + denní úkoly */
.tip-karta { display:flex; gap:10px; align-items:flex-start; padding-bottom:12px;
             margin-bottom:6px; border-bottom:1px solid var(--line); }
.tip-ikona { font-size:20px; line-height:1.3; }
.ukol-radek { display:flex; align-items:center; gap:10px; width:100%; padding:10px 0;
              background:none; border:none; color:var(--text); font-size:15px;
              text-align:left; cursor:pointer; }
.ukol-box { width:22px; height:22px; flex:0 0 auto; border:2px solid var(--line);
            border-radius:7px; display:flex; align-items:center; justify-content:center;
            font-size:13px; color:var(--accent-text); transform-origin:center;
            transition:background .15s ease-out, border-color .15s ease-out; }
.ukol-box .ic { opacity:0; transition:opacity .15s ease-out; }
.ukol-radek.hotovo .ukol-box { background:var(--accent); border-color:var(--accent); }
.ukol-radek.hotovo .ukol-box .ic { opacity:1; }
.ukol-radek.hotovo span:last-child { color:var(--muted); text-decoration:line-through; }

/* ===== Gym – podnavigace 5 položek (scrollovatelná) ===== */
.sub-nav-5 { overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
.sub-nav-5::-webkit-scrollbar { display:none; }
.sub-nav-5 .sub-btn { flex:0 0 auto; min-width:74px; position:relative; }
/* 4 položky: rovnoměrně přes celou šířku (bez scrollu) */
.sub-nav-4 .sub-btn { flex:1 1 0; min-width:0; position:relative; }
.sub-dot { display:inline-block; width:7px; height:7px; border-radius:50%;
           background:var(--accent); margin-left:5px; vertical-align:middle; }
.ikobtn.mini { width:30px; height:30px; font-size:14px; }

/* ===== Miniatura cviku ===== */
.cvik-mini { border-radius:10px; overflow:hidden; background:var(--card2); flex:0 0 auto;
             display:flex; align-items:center; justify-content:center; }
.cvik-mini img { width:100%; height:100%; object-fit:cover; display:block; background:#fff; }
.cvik-mini.mini-fallback { font-size:22px; color:var(--muted); }

/* ===== Knihovna – seznam cviků ===== */
.cvik-row { display:flex; align-items:center; gap:12px; padding:10px 8px; margin:0 -8px;
            border-radius:var(--r-sm); border-bottom:1px solid var(--line); cursor:pointer;
            transition:background .15s ease-out; }
.cvik-row:last-child { border-bottom:none; }
.cvik-row:hover { background:var(--surface-control); }
.cvik-row:active { transform:scale(0.995); }
.cvik-row-text { flex:1; min-width:0; }
.cvik-row-nazev { font-weight:510; }
.cvik-row-sip { color:var(--text-tertiary); display:flex; }
.filtr-mriz { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:14px; }
.filtr-mriz.dva { grid-template-columns:1fr 1fr; }
.filtr-mriz select { font-size:14px; padding:10px; }

/* ===== Detail cviku ===== */
.detail-foto-box { position:relative; background:#fff; border-radius:var(--radius);
                   overflow:hidden; margin-bottom:14px; cursor:pointer; }
.detail-foto { width:100%; display:block; }
.detail-foto-hint { position:absolute; bottom:8px; right:8px; background:rgba(0,0,0,.6);
                    color:#fff; font-size:12px; padding:4px 10px; border-radius:12px;
                    display:flex; align-items:center; gap:5px; }
.stitky { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
.tag-sval { background:var(--accent); color:var(--accent-text); font-weight:700; }
.seg-graf { margin-bottom:12px; }
.instrukce { padding-left:20px; }
.instrukce li { margin-bottom:8px; line-height:1.4; }

/* ===== Sdílený výběr cviků (overlay / bottom-sheet) ===== */
/* Glass: blur jen na overlay nad obsahem; solid fallback níže. */
.overlay { position:fixed; inset:0; background:rgba(0,0,0,.45); z-index:60;
           -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
           display:flex; align-items:flex-end; }
@supports not (backdrop-filter: blur(1px)) {
  .overlay { background:rgba(0,0,0,.62); }
}
.overlay-panel { background:var(--bg); border-radius:22px 22px 0 0; width:100%;
                 max-width:520px; margin:0 auto; max-height:88vh; display:flex;
                 flex-direction:column; padding:16px 16px calc(16px + env(safe-area-inset-bottom)); }
.overlay-hlavicka { display:flex; align-items:center; justify-content:space-between; }
.overlay-vypis { overflow-y:auto; flex:1; margin-top:6px; }
.overlay-paticka { padding-top:10px; }
.cvik-row.vyber { padding:8px 4px; border-radius:12px; border-bottom:1px solid var(--line); }
.cvik-row.vyber.vybran { background:var(--card2); }
.vyber-check { width:30px; height:30px; flex:0 0 auto; border-radius:50%;
               background:var(--card2); color:var(--muted); display:flex;
               align-items:center; justify-content:center; font-size:16px; }
.cvik-row.vybran .vyber-check { background:var(--accent); color:var(--accent-text); }

/* ===== Rutiny ===== */
.slozka-ovl { display:flex; gap:4px; margin-left:auto; }
.rutina-nahledy { display:flex; gap:5px; margin-top:8px; flex-wrap:wrap; }
.rutina-reorder { display:flex; gap:4px; }
.cvik-edit .cvik-edit-hlav { display:flex; align-items:center; gap:10px; min-width:0; }
.cvik-edit .cvik-edit-hlav h3 { font-size:15px; }

/* ===== Aktivní trénink – rozšíření ===== */
.session-souhrn { display:flex; gap:24px; background:var(--card); border-radius:var(--radius);
                  padding:14px 16px; margin-bottom:14px; }
.session-souhrn .big-num { font-size:24px; }
.cvik-hlav-info { display:flex; align-items:center; gap:10px; min-width:0; }
.cvik-hlav-akce { display:flex; gap:4px; flex:0 0 auto; }
.cvik-rest-radek { display:flex; align-items:center; gap:6px; margin-bottom:10px; flex-wrap:wrap; }
.cvik-rest-radek .num { padding:6px; }
.cvik-pozn { margin-left:auto; }

/* série s "předtím" sloupcem (přepisuje components.css) */
.set-row { grid-template-columns:26px 60px 1fr 1fr 44px; }
.set-row.s-rpe { grid-template-columns:26px 56px 1fr 1fr 50px 44px; }
.set-hlavicka { grid-template-columns:26px 60px 1fr 1fr 44px; padding:0 30px 0 0; }
.set-hlavicka.s-rpe { grid-template-columns:26px 56px 1fr 1fr 50px 44px; }
/* „Minule" jako v Hevy: plain šedý text na jednom řádku (ne lime/podtržené). */
.set-row .predtim { text-align:center; font-size:11px; white-space:nowrap; color:var(--muted); }
.set-row .predtim.kopir { cursor:pointer; }
.set-row .idx.typ-warmup { color:var(--type-warmup); }
.set-row .idx.typ-dropset { color:var(--type-dropset); }
.set-row .idx.typ-failure { color:var(--type-failure); }

/* Série: číselné pole „kg"/„Opak." je holé tap-pole ve stylu Hevy (žádný ±
   stepper — ten se na mobilu nevešel do sloupce a ořezával hodnotu „60"→„6(").
   Pole teď vyplní celý sloupec, takže se vejde i třímístná váha „120". */
.set-row .num { min-height:44px; padding:0 8px; }

/* ===== Kalkulačky ===== */
.kalk-panel { gap:4px; }
.kalk-vstupy { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:10px 0; }
.kalk-vystup h3 { margin:14px 0 8px; }
.kalk-radky { display:flex; flex-direction:column; gap:4px; }
.kalk-radek { display:flex; justify-content:space-between; padding:8px 12px;
              background:var(--card2); border-radius:10px; }
.kalk-kotouce { display:flex; flex-wrap:wrap; gap:8px; }
.kotouc { width:42px; height:42px; border-radius:50%; background:var(--accent);
          color:var(--accent-text); font-weight:700; font-size:13px;
          display:flex; align-items:center; justify-content:center; }

/* ===== Historie – heatmapa + editace ===== */
.heatmapa-wrap { background:var(--card); border-radius:var(--radius); padding:16px; margin-bottom:12px; }
.hm-mesice { display:flex; gap:4px; margin-bottom:4px; justify-content:center; }
.hm-dny-mezera { flex:0 0 20px; }
.hm-mesic { flex:0 0 14px; font-size:10px; color:var(--muted); white-space:nowrap; overflow:visible; }
.hm-telo { display:flex; gap:4px; align-items:flex-start; justify-content:center; }
.hm-dny { display:flex; flex-direction:column; gap:4px; flex:0 0 20px; }
.hm-den-popis { height:14px; font-size:9px; line-height:14px; color:var(--muted); text-align:right; }
.heatmapa { display:flex; gap:4px; overflow-x:auto; scrollbar-width:none; }
.heatmapa::-webkit-scrollbar { display:none; }
.hm-sloupec { display:flex; flex-direction:column; gap:4px; flex:0 0 auto; }
.hm-bunka { width:14px; height:14px; border-radius:3px; background:var(--heat-0);
            transition:background .15s ease-out; }
.hm-prazdna { background:transparent; }
.hm-0 { background:var(--heat-0); }
.hm-1 { background:var(--heat-1); }
.hm-2 { background:var(--heat-2); }
.hm-3 { background:var(--heat-3); }
.hm-4 { background:var(--heat-4); }
.hm-legenda { display:flex; align-items:center; gap:5px; margin-top:10px; }
.hm-legenda .hm-bunka { width:12px; height:12px; }

/* --- Heatmapa jako kalendář aktuálního měsíce (všech 7 dní) --- */
.hm-mesic-nadpis { text-align:center; font-size:var(--fs-h3); font-weight:590;
  text-transform:capitalize; margin-bottom:12px; }
.hm-mesic-dny { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; margin-bottom:6px; }
.hm-mesic-dny .hm-den-popis { height:auto; line-height:1.2; font-size:11px;
  color:var(--muted); text-align:center; }
.hm-mesic-mrizka { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
.hm-mesic-mrizka .hm-bunka { width:auto; height:auto; aspect-ratio:1; border-radius:7px;
  display:flex; align-items:flex-start; justify-content:flex-end; padding:4px; }
.hm-bunka-prazdna { aspect-ratio:1; }
.hm-den-cislo { font-size:11px; line-height:1; color:var(--text-tertiary);
  font-variant-numeric:tabular-nums; }
/* na sytějších úrovních (3–4) je pozadí světlé → číslo tmavé kvůli kontrastu */
.hm-mesic-mrizka .hm-3 .hm-den-cislo,
.hm-mesic-mrizka .hm-4 .hm-den-cislo { color:var(--accent-text); }
.hm-mesic-mrizka .hm-dnes { outline:2px solid var(--accent-ink); outline-offset:-1px; }
.hm-mesic-mrizka .hm-budouci { opacity:.4; }
.hm-mesic-mrizka .hm-klik { cursor:pointer; transition:transform .12s ease-out, filter .12s ease-out; }
.hm-mesic-mrizka .hm-klik:active { transform:scale(0.94); filter:brightness(1.1); }
.hist-set-row { display:grid; grid-template-columns:28px 1fr 1fr auto; gap:8px;
                align-items:center; margin-bottom:8px; }
/* hlavička sloupců v detailu historie – popisuje, co je co (kg/opak.) */
.hist-set-hlavicka { margin-bottom:6px; }
/* hodnoty i hlavička ve sloupcích 2 a 3 vycentrované → symetrie pod popisky */
.hist-set-row > span:nth-child(2),
.hist-set-row > span:nth-child(3) { text-align:center; }
.hist-set-row .num { text-align:center; }

/* ===== Měření – pole + fotky + statistiky ===== */
.mereni-mriz { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.foto-porovnani { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:12px; }
.foto-porov-img { width:100%; border-radius:12px; display:block; }
.foto-galerie { display:grid; grid-template-columns:1fr 1fr 1fr; gap:8px; }
.foto-polozka { position:relative; }
.foto-polozka img { width:100%; aspect-ratio:3/4; object-fit:cover; border-radius:12px; display:block; }
.foto-datum { text-align:center; margin-top:4px; }
.foto-smaz { position:absolute; top:6px; right:6px; width:26px; height:26px; border-radius:50%;
             background:rgba(0,0,0,.6); color:#fff; border:none; cursor:pointer; font-size:13px; }
.donut-wrap { background:var(--card); border-radius:var(--radius); padding:16px; margin-bottom:12px;
              display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.donut-canvas { width:150px; height:150px; flex:0 0 auto; }
.donut-legenda { flex:1; min-width:140px; display:flex; flex-direction:column; gap:6px; }
.donut-leg-pol { display:flex; align-items:center; gap:8px; font-size:13px; }
.donut-tecka { width:12px; height:12px; border-radius:3px; flex:0 0 auto; }

/* ===== Nastavení – přepínač ===== */
.prepinac { display:flex; align-items:center; justify-content:space-between; gap:12px;
            padding:10px 0; cursor:pointer; }

/* ===== PLANNER ===== */
/* horní lišta */
.pl-top { display:flex; align-items:center; justify-content:space-between; margin-bottom:4px; }
.pl-top h1 { font-size:26px; }
.pl-top-ikony { display:flex; gap:8px; }
.pl-ikobtn { width:40px; height:40px; border-radius:12px; border:1px solid var(--line);
             background:var(--card); color:var(--text); font-size:17px; display:flex;
             align-items:center; justify-content:center; cursor:pointer; position:relative; }
.pl-badge { position:absolute; top:-5px; right:-5px; min-width:18px; height:18px; border-radius:9px;
            background:var(--danger); color:#fff; font-size:11px; font-weight:700; display:flex;
            align-items:center; justify-content:center; padding:0 5px; }

/* řádek s datem */
.pl-daterow { display:flex; align-items:center; gap:10px; margin:10px 0 6px; }
.pl-nav { width:34px; height:34px; border-radius:10px; border:1px solid var(--line);
          background:var(--card); color:var(--text); cursor:pointer; font-size:16px; }
.pl-den { font-weight:700; font-size:16px; line-height:1.1; }
.pl-den small { display:block; color:var(--muted); font-weight:500; font-size:12px; }
.pl-dnes { margin-left:auto; border:1px solid var(--line); background:var(--card); color:var(--text);
           border-radius:10px; padding:7px 12px; font-size:13px; font-weight:600; cursor:pointer; }

/* rychlé přidání */
.pl-rychle { display:flex; gap:8px; margin:8px 0 14px; }
.pl-rychle input { flex:1; padding:10px 12px; border:1px solid var(--line); border-radius:12px;
                   background:var(--card); color:var(--text); font-size:14px; }
.pl-rychle button { border:0; border-radius:12px; padding:0 16px; background:var(--accent);
                    color:var(--accent-text); font-weight:700; cursor:pointer; }

/* timeline */
.pl-tl { position:relative; margin-left:46px; border-left:1px solid var(--line); }
.pl-hod { position:relative; height:64px; }
.pl-hod .pl-cas { position:absolute; left:-46px; top:-8px; width:40px; text-align:right;
                  color:var(--muted); font-size:12px; }
.pl-hod .pl-lajna { position:absolute; left:0; right:0; top:0; border-top:1px dashed var(--line); opacity:.5; }

/* karta úkolu – Apple styl: neutrální plocha + levý barevný proužek 3 px */
.pl-task { position:absolute; left:8px; right:10px; border-radius:14px; padding:7px 11px 7px 14px;
           color:var(--text); background:var(--card); overflow:hidden;
           border:1px solid var(--line); box-shadow:0 2px 10px rgba(0,0,0,.18);
           cursor:grab; touch-action:none; transition:box-shadow .18s ease-out, transform .18s ease-out; }
.pl-task::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
                   background:var(--pl-barva, var(--accent)); border-radius:14px 0 0 14px; }
.pl-task:active { cursor:grabbing; box-shadow:0 8px 22px rgba(0,0,0,.34); }
.pl-task .pl-t-h { display:flex; align-items:center; gap:7px; font-weight:650; font-size:14px; }
.pl-task .pl-t-emoji { flex:0 0 auto; }
.pl-task .pl-t-nazev { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pl-task .pl-t-cas { font-size:12px; color:var(--muted); margin-top:2px; font-weight:600;
                     font-variant-numeric:tabular-nums; }
.pl-task .pl-grip { position:absolute; left:0; right:0; bottom:0; height:12px; cursor:ns-resize; touch-action:none; }
.pl-task .pl-grip::after { content:""; position:absolute; left:50%; bottom:3px; width:26px; height:3px;
                           margin-left:-13px; border-radius:2px; background:var(--line); }
.pl-task.done { opacity:.55; }
.pl-task.done .pl-t-nazev { text-decoration:line-through; }
.pl-check { margin-left:auto; width:20px; height:20px; border-radius:50%; flex:0 0 auto;
            border:2px solid var(--line); display:flex; align-items:center; justify-content:center;
            font-size:12px; background:var(--card2); color:var(--text); cursor:pointer; }
.pl-task.done .pl-check { background:var(--accent); color:var(--accent-text); border-color:var(--accent); }
/* dvojsloupec při překryvu */
.pl-task.col2 { right:auto; width:calc(50% - 9px); }
.pl-task.col2.b { left:auto; right:10px; }

/* volný čas */
.pl-volno { position:absolute; left:8px; right:10px; border:1px dashed var(--line); border-radius:12px;
            display:flex; align-items:center; justify-content:center; gap:8px; color:var(--muted); font-size:12px; }
.pl-volno button { width:24px; height:24px; border-radius:8px; border:1px solid var(--line);
                   background:var(--card2); color:var(--text); cursor:pointer; font-size:14px; }

/* linka teď */
.pl-ted { position:absolute; left:-6px; right:0; display:flex; align-items:center; z-index:5; pointer-events:none; }
.pl-ted .pl-dot { width:10px; height:10px; border-radius:50%; background:var(--danger); }
.pl-ted .pl-ln { flex:1; height:2px; background:var(--danger); }
.pl-ted .pl-lbl { position:absolute; left:-44px; color:var(--danger); font-size:11px; font-weight:700; }

/* plovoucí + */
.pl-fab { position:fixed; bottom:96px; right:calc(50% - 260px + 16px); width:56px; height:56px;
          border-radius:50%; background:var(--accent); color:var(--accent-text);
          border:0; cursor:pointer; box-shadow:0 6px 18px rgba(0,0,0,.35); z-index:40;
          display:flex; align-items:center; justify-content:center; transition:transform .12s ease-out; }
.pl-fab:active { transform:scale(0.96); }
@media (max-width:540px){ .pl-fab { right:20px; } }

/* inbox panel */
.pl-inbox-wrap { position:fixed; inset:0; z-index:55; display:none; }
.pl-inbox-wrap.open { display:block; }
.pl-inbox-back { position:absolute; inset:0; background:rgba(0,0,0,.4);
                 -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
@supports not (backdrop-filter: blur(1px)) {
  .pl-inbox-back { background:rgba(0,0,0,.6); }
}
.pl-inbox { position:absolute; top:0; right:0; bottom:0; width:84%; max-width:360px; background:var(--bg);
            border-left:1px solid var(--line); padding:18px 16px; overflow-y:auto;
            display:flex; flex-direction:column; gap:10px; }
.pl-inbox h2 { margin:0 0 4px; }
.pl-inbox-item { display:flex; align-items:center; gap:9px; padding:11px; border-radius:12px;
                 background:var(--card); border:1px solid var(--line); cursor:pointer; }
.pl-inbox-item .ico { font-size:18px; }

/* banner nedokončených */
.pl-banner { background:var(--card2); border:1px solid var(--line); border-radius:14px;
             padding:12px 14px; margin-bottom:14px; }
.pl-banner p { margin:0 0 9px; font-size:14px; }
.pl-banner .akce { display:flex; gap:8px; flex-wrap:wrap; }
.pl-banner button { border:1px solid var(--line); background:var(--card); color:var(--text);
                    border-radius:10px; padding:7px 11px; font-size:13px; font-weight:600; cursor:pointer; }

/* editor – pole */
.pl-pole { margin-bottom:14px; }
.pl-pole > label { display:block; font-size:13px; color:var(--muted); margin-bottom:6px; font-weight:600; }
.pl-pole input[type=text], .pl-pole textarea, .pl-pole input[type=date],
.pl-pole input[type=time], .pl-pole input[type=number] {
  width:100%; padding:11px 12px; border:1px solid var(--line); border-radius:12px;
  background:var(--card); color:var(--text); font-size:15px; font-family:inherit; }
.pl-pole textarea { min-height:64px; resize:vertical; }
.pl-row2 { display:flex; gap:10px; }
.pl-row2 > * { flex:1; }
.pl-emoji-btn { width:52px; height:52px; border-radius:14px; border:1px solid var(--line);
                background:var(--card); font-size:24px; cursor:pointer; }
.pl-paleta { display:flex; flex-wrap:wrap; gap:9px; }
.pl-barva { width:30px; height:30px; border-radius:50%; cursor:pointer; border:3px solid transparent; }
.pl-barva.vybrana { border-color:var(--text); }
.pl-delky { display:flex; flex-wrap:wrap; gap:7px; }
.pl-delky button { border:1px solid var(--line); background:var(--card); color:var(--text);
                   border-radius:10px; padding:7px 11px; font-size:13px; cursor:pointer; }
.pl-delky button.akt { background:var(--accent); color:var(--accent-text); border-color:var(--accent); font-weight:700; }
.pl-sub { display:flex; align-items:center; gap:8px; margin-bottom:7px; }
.pl-sub input[type=text] { flex:1; }
.pl-sub .smaz { background:none; border:0; color:var(--danger); font-size:16px; cursor:pointer; }
.pl-dny { display:flex; gap:5px; flex-wrap:wrap; }
.pl-dny button { width:38px; height:34px; border:1px solid var(--line); background:var(--card);
                 color:var(--text); border-radius:9px; cursor:pointer; font-size:12px; }
.pl-dny button.akt { background:var(--accent); color:var(--accent-text); border-color:var(--accent); font-weight:700; }
.pl-akce-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.pl-akce-grid button { border:1px solid var(--line); background:var(--card); color:var(--text);
                       border-radius:12px; padding:11px; font-size:14px; font-weight:600; cursor:pointer; }
.pl-akce-grid button.smaz { color:var(--danger); }
.pl-akce-grid button.uloz { grid-column:1/3; background:var(--accent); color:var(--accent-text); border-color:var(--accent); }

/* emoji picker */
.pl-emoji-kat { font-size:12px; color:var(--muted); font-weight:600; margin:12px 0 6px; }
.pl-emoji-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:6px; }
.pl-emoji-grid button { font-size:24px; padding:8px 0; border:0; background:var(--card);
                        border-radius:10px; cursor:pointer; }

/* týden */
.pl-week { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.pl-week-col { background:var(--card); border-radius:12px; padding:6px 4px; min-height:120px; cursor:pointer; }
.pl-week-h { text-align:center; font-size:11px; font-weight:700; margin-bottom:6px; }
.pl-week-h small { display:block; color:var(--muted); font-weight:500; }
.pl-week-h.dnes { color:var(--accent-ink); }
.pl-mini { font-size:10px; border-radius:6px; padding:3px 4px; margin-bottom:3px; color:#1a1a1a;
           white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* měsíc */
.pl-month-h { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; margin-bottom:4px; }
.pl-month-h span { text-align:center; font-size:11px; color:var(--muted); font-weight:600; }
.pl-month { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.pl-mcell { background:var(--card); border-radius:10px; min-height:62px; padding:5px; cursor:pointer; }
.pl-mcell.mimo { opacity:.35; }
.pl-mcell .den-c { font-size:12px; font-weight:600; }
.pl-mcell.dnes .den-c { color:var(--accent-ink); }
.pl-tecky { display:flex; flex-wrap:wrap; gap:3px; margin-top:4px; }
.pl-tecka { width:7px; height:7px; border-radius:50%; }

/* statistiky */
.pl-stat-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:18px; }
.pl-stat-karta { background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:16px; }
.pl-stat-cislo { font-size:30px; font-weight:800; letter-spacing:-.5px; }
.pl-stat-popis { color:var(--muted); font-size:13px; margin-top:2px; }

/* ===== FÁZE 3 – funkce ===== */

/* double progression tip v aktivním tréninku */
.cvik-tip { display:flex; gap:8px; align-items:flex-start; margin:8px 0 6px;
            padding:8px 10px; border-radius:var(--r-sm); line-height:1.35; font-size:13px;
            background:color-mix(in srgb, var(--accent) 12%, transparent);
            border:1px solid color-mix(in srgb, var(--accent) 30%, transparent); }
.cvik-tip-ik { color:var(--accent-ink); }
.cvik-tip-ik { flex:0 0 auto; }

/* deload karta (Trénink) */
.deload-karta { border-color:color-mix(in srgb, var(--warn) 40%, transparent);
                background:color-mix(in srgb, var(--warn) 8%, transparent); margin-bottom:16px; }
.deload-hlava { display:flex; align-items:center; justify-content:space-between; gap:10px; }

/* insight spánek vs výkon (Historie) */
.insight-karta { margin-top:8px; }
.insight-radek { display:flex; gap:10px; align-items:flex-start; line-height:1.4; }
.insight-ik { flex:0 0 auto; }

/* pásmová legenda (série na partii) */
.pasmo-legenda { display:flex; flex-wrap:wrap; gap:6px 14px; margin:8px 0 4px; }
.pasmo-legenda > span { display:inline-flex; align-items:center; }
.pasmo-tecka { display:inline-block; width:10px; height:10px; border-radius:3px; margin-right:5px; }

/* karta „Dnes v plánu" (Úvod) */
.dnes-plan { margin-bottom:16px; }
.dnes-plan-hlava { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.dnes-plan-radek { display:flex; align-items:center; gap:10px; padding:5px 0; }
.dnes-plan-ik { flex:0 0 auto; width:22px; text-align:center; }
.dnes-plan-nazev { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dnes-plan-nazev.hotovo { color:var(--muted); text-decoration:line-through; }

/* ===== Půst (intermittent fasting) ===== */

/* Tabbar pro 6 tabů — kompaktní (menší font, žádné zalomení textu) */
.tabbar.tabbar-kompakt { padding-left:2px; padding-right:2px; }
.tabbar-kompakt .tab { gap:2px; padding:4px 0; }
.tabbar-kompakt .tab .tab-text {
  font-size:10px; letter-spacing:-0.01em; max-width:100%;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}

/* Kruhový časovač — vystředěný, velké monospace číslo */
.pust-ring { margin:8px auto 4px; }
.pust-ring .ring-progress { transition:none; } /* plynulé tikání po sekundě */
.pust-cas {
  font-size:36px; font-weight:700; letter-spacing:-0.02em; line-height:1;
  font-variant-numeric:tabular-nums; font-family:"SF Mono",ui-monospace,Menlo,monospace;
}

/* Chip s plánem/cílem pod kruhem */
.pust-chip-radek { display:flex; justify-content:center; margin-top:14px; margin-bottom:18px; }
.pust-plan-chip {
  display:inline-flex; align-items:center; gap:6px; cursor:pointer;
  background:var(--card2); color:var(--muted); border:none; font-family:inherit;
  font-size:var(--fs-caption); padding:6px 12px; border-radius:14px; min-height:36px;
  transition:color .15s ease-out;
}
.pust-plan-chip:hover { color:var(--text); }

/* Banner aktuální fáze */
.pust-banner {
  display:flex; align-items:center; gap:12px; width:100%; text-align:left;
  background:var(--surface-card); border:1px solid var(--border-hairline);
  border-radius:var(--r-lg); padding:12px; margin-bottom:14px; cursor:pointer;
  font-family:inherit; color:var(--text); transition:border-color .15s ease-out;
}
.pust-banner:hover { border-color:var(--border-strong); }
.pust-banner-bod { flex:0 0 auto; width:12px; height:12px; border-radius:50%; }
.pust-banner-text { min-width:0; flex:1; }
.pust-banner-nazev { margin:0; font-size:var(--fs-h3); font-weight:510; }
.pust-banner-popis {
  margin:2px 0 0; overflow:hidden; text-overflow:ellipsis;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
}
.pust-banner-sip { flex:0 0 auto; color:var(--muted); display:flex; }

/* Timeline fází (horizontální scroll) */
.pust-timeline { overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; margin:0 -16px 14px; padding:0 16px; }
.pust-timeline::-webkit-scrollbar { display:none; }
.pust-timeline-pruh { display:flex; gap:8px; }
.pust-faze-bunka {
  flex:0 0 auto; display:flex; flex-direction:column; align-items:center; gap:5px;
  background:var(--surface-card); border:1px solid var(--border-hairline);
  border-radius:var(--r-md); padding:8px 12px; cursor:pointer; font-family:inherit;
  transition:border-color .15s ease-out, background .15s ease-out;
}
/* aktivní fáze: zvýraznění barvou fáze řeší inline styl; tady jen text/pozadí */
.pust-faze-bunka.aktivni { background:var(--surface-control); }
.pust-faze-bunka.aktivni .pust-faze-stitek { color:var(--text); font-weight:600; }
.pust-faze-bunka.ztlumena { opacity:.4; }
.pust-faze-bod { width:14px; height:14px; border-radius:50%; }
.pust-faze-stitek { font-size:var(--fs-micro); }

/* Průměry – karta s přepínačem 7/14 dní */
.pust-prumer-karta { margin-bottom:12px; }
.pust-prumer-hlava { display:flex; align-items:center; margin-bottom:10px; }
.pust-prumer-prep { margin-bottom:12px; }
.pust-prumer-grid { margin-bottom:0; }

/* Výzvy/odznaky – filtr chipy */
.pust-vyzvy-filtr { flex-wrap:wrap; margin-bottom:14px; }
.pust-vyzvy-filtr .seg-btn { flex:0 1 auto; padding:8px 14px; font-size:var(--fs-caption); }

/* Štítek obtížnosti výzvy */
.pust-vyzva-uroven { display:inline-block; margin-left:8px; padding:1px 8px; border-radius:999px;
  font-size:var(--fs-micro); font-weight:600; vertical-align:middle; }
.pust-vyzva-uroven.uroven-1 { background:var(--accent-muted); color:var(--accent-ink); }
.pust-vyzva-uroven.uroven-2 { background:rgba(122,162,255,0.18); color:var(--type-dropset); }
.pust-vyzva-uroven.uroven-3 { background:rgba(226,85,79,0.18); color:var(--danger); }

/* Řádek se startem půstu + editace */
.pust-start-radek { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px var(--sp-4); margin-bottom:6px; }
.pust-start-btn {
  display:inline-flex; align-items:center; gap:6px; cursor:pointer;
  background:none; border:none; font-family:inherit; font-weight:510;
  color:var(--text); font-size:var(--fs-body);
}
.pust-start-btn .ic { color:var(--muted); }
.pust-konec-radek { text-align:center; margin-bottom:14px; }

/* Tlačítko ukončení (neutrální, ne akcentní) */
.pust-btn-konec { background:var(--card2); color:var(--text); }

/* Modal fáze */
.pust-faze-modal .modal-text { margin-top:8px; line-height:1.5; }

/* Výběr plánu */
.pust-zpet {
  display:inline-flex; align-items:center; gap:4px; cursor:pointer;
  background:none; border:none; font-family:inherit; color:var(--muted);
  font-size:var(--fs-caption); padding:4px 0; margin-bottom:4px;
}
.pust-zpet:hover { color:var(--text); }
.pust-plany { display:flex; flex-direction:column; gap:10px; }
.pust-plan-karta {
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  width:100%; text-align:left; margin-bottom:0; cursor:pointer; font-family:inherit;
  color:var(--text); transition:border-color .15s ease-out;
}
.pust-plan-karta:hover { border-color:var(--border-strong); }
.pust-plan-karta.aktivni { border-color:var(--accent); }
.pust-plan-info { min-width:0; }
.pust-plan-nazev { margin:0; font-weight:590; display:flex; align-items:center; gap:8px; }
.pust-plan-info .muted { margin:3px 0 0; }
.pust-plan-aktivni { flex:0 0 auto; font-size:var(--fs-caption); font-weight:510; color:var(--accent-ink); }
.pust-plan-vlastni { padding:8px 8px 8px var(--sp-4); }
.pust-plan-vyber { flex:1; text-align:left; background:none; border:none; cursor:pointer; font-family:inherit; color:var(--text); }
.pust-plan-vyber .pust-plan-nazev { font-weight:510; }

/* Blesky náročnosti */
.pust-blesky { display:inline-flex; gap:1px; }
.pust-blesk { color:var(--line); display:flex; }
.pust-blesk.on { color:var(--warn); }

/* ---- E2/E3: pod-navigace obsahu ---- */
.pust-sub { display:block; }

/* ---- E2: statistiky (karty velkých čísel) ---- */
.pust-stat-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px; margin-bottom:6px; align-items:stretch; }
/* symetrie: svislé i vodorovné vystředění + jednotná výška/popisek přes 2 řádky */
.pust-stat-grid .stat-cell { margin:0; text-align:center; padding:14px 8px;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; }
.pust-stat-cislo {
  font-size:26px; font-weight:700; letter-spacing:-0.02em; line-height:1.1;
  font-variant-numeric:tabular-nums;
}
.pust-stat-popis { display:flex; align-items:center; justify-content:center; gap:4px;
  min-height:2.4em; line-height:1.2; }
.pust-stat-popis .ic { color:var(--accent-ink); }

/* ---- E2: historie – řádek seznamu (vzor .list-row) ---- */
.list-row { display:flex; align-items:center; justify-content:space-between; gap:12px;
  width:100%; text-align:left; padding:12px var(--sp-4); border:none; background:none;
  font-family:inherit; color:var(--text); cursor:pointer;
  border-bottom:1px solid var(--border-hairline); transition:background .12s ease-out; }
.list-row:last-child { border-bottom:none; }
.list-row:hover { background:var(--surface-control); }
.list-row:active { transform:scale(0.995); }
/* Historie spánku: řádek = klikací info + tlačítko koše vpravo */
.sp-hist-radek { display:flex; align-items:stretch; border-bottom:1px solid var(--border-hairline); }
.sp-hist-radek:last-child { border-bottom:none; }
.sp-hist-radek .list-row { border-bottom:none; }
.sp-hist-smaz { flex:0 0 auto; display:flex; align-items:center; justify-content:center;
  width:48px; border:none; background:none; cursor:pointer; color:var(--muted);
  border-left:1px solid var(--border-hairline); transition:color .12s ease-out, background .12s ease-out; }
.sp-hist-smaz:hover { color:var(--bad, #ff5c5c); background:var(--surface-control); }
.sp-hist-smaz:active { transform:scale(0.94); }
.pust-hist-info { min-width:0; }
.pust-hist-delka { display:flex; align-items:center; gap:8px; font-weight:590; font-variant-numeric:tabular-nums; }
.pust-hist-odznacek { display:inline-flex; align-items:center; }
.pust-hist-odznacek.splneno { color:var(--good); }

/* ---- E2: Váha + BMI ---- */
.pust-vaha-hlava { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.pust-vaha-ik { color:var(--muted); display:flex; }
.pust-vaha-radky { display:flex; flex-direction:column; gap:2px; }
.pust-vyska-btn { display:inline-flex; align-items:center; gap:6px; cursor:pointer;
  background:none; border:none; font-family:inherit; font-weight:510; color:var(--text); font-size:var(--fs-body); }
.pust-vyska-btn .ic { color:var(--muted); }

/* ---- E2: detail půstu (modal) ---- */
.pust-detail-modal textarea { width:100%; min-height:64px; resize:vertical; }

/* ---- E3: výzvy ---- */
.pust-vyzva { margin-bottom:10px; }
.pust-vyzva-hlava { display:flex; align-items:flex-start; gap:10px; margin-bottom:10px; }
.pust-vyzva-ik { flex:0 0 auto; color:var(--accent-ink); display:flex; margin-top:1px; }
.pust-vyzva.splneno .pust-vyzva-ik { color:var(--good); }
.pust-vyzva-text { min-width:0; flex:1; }
.pust-vyzva-nazev { margin:0; font-weight:590; }
.pust-vyzva-text .muted { margin:2px 0 0; }
.pust-vyzva-hotovo { flex:0 0 auto; color:var(--good); display:flex; }
.pust-vyzva-pata { margin-top:6px; font-variant-numeric:tabular-nums; }
.pust-vyzva.kompakt { margin-top:14px; }

/* progres pruh */
.pust-progres { height:6px; border-radius:3px; background:var(--surface-control); overflow:hidden; }
.pust-progres-fill { height:100%; border-radius:3px; background:var(--accent);
  transition:width .35s cubic-bezier(.22,.61,.36,1); }
.pust-vyzva.splneno .pust-progres-fill { background:var(--good); }

/* ---- E3: odznaky ---- */
.pust-odznaky-hlava { display:flex; align-items:baseline; justify-content:space-between; gap:8px; margin:8px 0 12px; }
.pust-odznaky-mriz { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.pust-odznak { display:flex; flex-direction:column; align-items:center; text-align:center; gap:6px;
  background:var(--surface-card); border:1px solid var(--border-hairline);
  border-radius:var(--r-lg); padding:16px 12px; transition:opacity .15s ease-out; }
.pust-odznak-ik { display:flex; color:var(--accent-ink); }
.pust-odznak-nazev { font-weight:590; font-size:var(--fs-body); }
.pust-odznak-popis { line-height:1.3; }
.pust-odznak.ztlumeny { opacity:.42; }
.pust-odznak.ztlumeny .pust-odznak-ik { color:var(--muted); }

@media (prefers-reduced-motion: reduce) {
  .pust-progres-fill { transition:none; }
  .list-row:active { transform:none; }
}

/* ===== PŮST – desktop 2 sloupce (≥820px) =====
 * Přehled: vlevo časovač + CTA (sticky), vpravo výzva/průměry/AI.
 * Historie: vlevo statistiky (sticky), vpravo graf + seznam.
 * Na mobilu jsou .pust-levy/.pust-pravy/.pust-h-* obyčejné bloky (beze změny). */
@media (min-width: 820px) {
  .pust-desktop-wrap, .pust-hist-wrap {
    display: grid;
    grid-template-columns: 380px 1fr;
    column-gap: 24px;
    align-items: start;
  }
  .pust-levy, .pust-h-levy {
    position: sticky; top: 16px;
    display: flex; flex-direction: column; gap: 0;
  }
  .pust-pravy, .pust-h-pravy { display: flex; flex-direction: column; gap: 12px; }
  .pust-pravy > *, .pust-h-pravy > * { margin-bottom: 0; }
  .pust-h-pravy > h2:first-of-type { margin-top: 0; }
  /* kruh časovače na PC trochu menší, ať se levý sloupec nepřetéká */
  .pust-ring { width: 200px; height: 200px; }
  /* timeline fází: na PC je dost místa → zalom místo vodorovného scrollu */
  .pust-desktop-wrap .pust-timeline { overflow-x: visible; margin: 0 0 14px; padding: 0; }
  .pust-desktop-wrap .pust-timeline-pruh { flex-wrap: wrap; }
  /* odznaky: na PC 4 sloupce */
  .pust-odznaky-mriz { grid-template-columns: repeat(4, 1fr); }
}

/* ===== SPÁNEK – nové (faktory/připomínka/streak) ===== */

/* Faktory noci – multi-select chipy (wrap, auto šířka, vícenásobná volba) */
.sp-faktory { flex-wrap:wrap; }
.sp-faktory .seg-btn {
  flex:0 1 auto; padding:8px 12px; font-size:13px; border-radius:999px;
  transition:color .15s ease-out, border-color .15s ease-out, background .15s ease-out;
}
.sp-faktory .seg-btn.aktivni { background:var(--card); color:var(--accent-ink); border-color:var(--accent-ink); }

/* Dluh/průměr/série – třetí buňka (3 sloupce) */
.sp-stat-grid-3 { grid-template-columns:1fr 1fr 1fr; }

/* Karta s ovládáním připomínky */
.sp-pripominka { margin-bottom:12px; padding:12px 14px; }
.sp-pripominka .prepinac { padding:0; }
.sp-pripominka input[type="time"] { width:auto; }

/* Večerní in-app banner */
.sp-banner { display:flex; align-items:center; gap:10px; margin-bottom:12px;
             border-color:color-mix(in srgb, var(--accent) 30%, transparent);
             background:color-mix(in srgb, var(--accent) 10%, transparent); }
.sp-banner-ik { flex:0 0 auto; color:var(--accent-ink); display:flex; }
.sp-banner-text { flex:1; min-width:0; }
.sp-banner-btn { flex:0 0 auto; border:1px solid var(--accent); background:var(--accent);
                 color:var(--accent-text); font-weight:700; font-family:inherit;
                 border-radius:10px; padding:7px 14px; cursor:pointer; }
.sp-banner-btn:active { transform:scale(0.97); }

@media (prefers-reduced-motion: reduce) {
  .sp-banner-btn:active { transform:none; }
}
/* ===== ÚVOD – dashboard/edit režim ===== */

/* Hlavička: živé hodiny + dnešní datum (místo pozdravu) */
.uvod-hlavicka { margin-bottom:14px; }
.uvod-hodiny { font-size:var(--fs-display); font-weight:590; letter-spacing:-0.02em; line-height:1;
               font-variant-numeric:tabular-nums; color:var(--text); }
.uvod-hodiny-s { font-size:0.5em; font-weight:510; color:var(--muted); margin-left:4px;
                 letter-spacing:0; vertical-align:baseline; }
.uvod-datum { margin-top:6px; font-size:14px; }

/* Lišta nad dashboardem: nadpis + tlačítko úprav (tužka / Hotovo) */
.dash-edit-lista { display:flex; align-items:center; justify-content:space-between;
                   margin:22px 0 12px; }
.dash-nadpis { margin:0; }
.dash-edit-btn { display:inline-flex; align-items:center; justify-content:center; gap:6px;
                 min-height:34px; padding:0 12px; border-radius:var(--r-md);
                 border:1px solid var(--border-hairline); background:var(--surface-card);
                 color:var(--text); font-size:14px; font-weight:510; cursor:pointer;
                 transition:background .15s ease-out, border-color .15s ease-out; }
.dash-edit-btn:hover { background:var(--surface-control); border-color:var(--border-strong); }
.dash-edit-btn.aktivni { background:var(--accent); color:var(--accent-text);
                         border-color:transparent; }

/* Skrytá dlaždice (mimo edit režim nevidět; uvnitř ztlumená) */
.dash-dlazdice.skryta { opacity:.4; }

/* Edit režim: buňka = ovládací lišta + dlaždice */
.dash-mriz.edit { align-items:start; }
.dash-mriz.edit .dash-dlazdice.hero { grid-column:auto; }  /* hero v editu = 1 sloupec */
.dash-edit-bunka { display:flex; flex-direction:column; gap:8px; }
.dash-edit-bunka.skryta { opacity:.55; }
.dash-edit-bunka .dash-dlazdice,
.dash-edit-bunka .dash-dlazdice:hover { cursor:default; transform:none; pointer-events:none;
                                        background:var(--surface-card); border-color:var(--border-hairline); }
.dash-edit-bar { display:flex; align-items:center; justify-content:space-between; gap:8px;
                 padding:0 2px; }
.dash-edit-nazev { font-size:12px; font-weight:590; color:var(--muted);
                   text-transform:uppercase; letter-spacing:0.04em; }
.dash-edit-ovl { display:flex; align-items:center; gap:6px; }
.dash-edit-sipky { display:flex; gap:4px; }
.dash-edit-toggle, .dash-edit-sip { display:inline-flex; align-items:center; justify-content:center;
                 width:28px; height:28px; border-radius:var(--r-sm);
                 border:1px solid var(--border-hairline); background:var(--surface-control);
                 color:var(--text); cursor:pointer; transition:background .12s ease-out, opacity .12s ease-out; }
.dash-edit-toggle.on { background:var(--accent); color:var(--accent-text); border-color:transparent; }
.dash-edit-sip:disabled { opacity:.3; cursor:default; }
.dash-edit-sip:not(:disabled):hover, .dash-edit-toggle:hover { background:var(--surface-raised); }
.dash-edit-toggle.on:hover { background:var(--accent); }

@media (prefers-reduced-motion: reduce) {
  .dash-edit-btn, .dash-edit-toggle, .dash-edit-sip { transition:none; }
}

/* ===== GYM/HEVY – jádro ===== */

/* --- Start screen: akce + karty tréninků --- */
.start-akce { display:flex; flex-direction:column; gap:8px; margin-bottom:18px; }
.workout-karta { cursor:pointer; transition:border-color .15s ease-out, transform .12s ease-out; }
.workout-karta:hover { border-color:var(--border-strong); }
.workout-karta:active { transform:scale(0.995); }
.workout-karta .row-between { align-items:flex-start; }
.workout-nahledy { display:flex; gap:5px; margin-top:10px; flex-wrap:wrap; }

/* --- Akční bottom-sheet (menu workoutu / cviku) --- */
.akce-panel { gap:6px; }
.akce-seznam { display:flex; flex-direction:column; margin-top:8px; }
.akce-radek { display:flex; align-items:center; gap:12px; width:100%; text-align:left;
              padding:14px 6px; background:none; border:none; border-bottom:1px solid var(--line);
              color:var(--text); font-size:15px; font-family:inherit; cursor:pointer;
              transition:background .12s ease-out; }
.akce-radek:last-child { border-bottom:none; }
.akce-radek:hover { background:var(--surface-control); }
.akce-radek:active { transform:scale(0.995); }
.akce-radek.danger { color:var(--danger); }
.akce-radek .ic { color:var(--muted); flex:0 0 auto; }
.akce-radek.danger .ic { color:var(--danger); }

/* --- Aktivní trénink: Hevy stat řádek (Délka · Objem · Série) --- */
.wk-stat-radek { display:grid; grid-template-columns:repeat(3,1fr); gap:8px;
                 background:var(--card); border-radius:var(--radius); padding:14px 12px; margin-bottom:14px; }
.wk-stat-bunka { text-align:center; min-width:0; }
.wk-stat-cislo { font-size:22px; font-weight:700; letter-spacing:-0.02em; line-height:1.1;
                 color:var(--text); font-variant-numeric:tabular-nums; }
.wk-stat-bunka:first-child .wk-stat-cislo { color:var(--accent-ink); }
.wk-stat-popis { margin-top:3px; }

/* --- Poznámka cviku + tappable řádek pauzy --- */
.cvik-pozn-radek { display:flex; align-items:center; gap:6px; margin-bottom:8px; }
.cvik-pauza-radek { display:flex; align-items:center; gap:9px; width:100%; text-align:left;
                    background:var(--card2); border:1px solid var(--line); border-radius:var(--r-sm);
                    color:var(--text); font-family:inherit; font-size:15px; padding:12px 14px;
                    margin-bottom:10px; cursor:pointer; transition:border-color .15s ease-out; }
.cvik-pauza-radek strong { font-size:16px; }
.cvik-pauza-radek:hover { border-color:var(--border-strong); }
.cvik-pauza-radek .ic { color:var(--accent-ink); flex:0 0 auto; }
.cvik-pauza-radek strong { color:var(--accent-ink); font-variant-numeric:tabular-nums; }

/* --- Set row: oddělovací linky, tabular čísla, ztlumení hotové série, smazání --- */
/* padding-right = úzký okraj pro mazací × (.set-smaz, absolutní right:0), ať
   nesedí PŘES odškrtávátko ✓ (.ok), ale vedle něj. Záhlaví má stejný okraj. */
.set-row { position:relative; align-items:center; padding:5px 30px 5px 0; border-bottom:1px solid var(--line); }
.set-row:last-of-type { border-bottom:none; }
.set-row .num { font-variant-numeric:tabular-nums; }
.set-row.hotovo { opacity:.62; }
.set-row .ok { transition:background .15s ease-out, color .15s ease-out; }
.set-row.hotovo .ok { background:var(--accent); color:var(--accent-text); border-color:var(--accent); }
.set-smaz { position:absolute; right:0; top:50%; transform:translateY(-50%); width:30px; height:30px;
            border:none; background:none; color:var(--muted); cursor:pointer; opacity:.55;
            display:flex; align-items:center; justify-content:center; border-radius:50%; }
.set-smaz:hover { opacity:1; color:var(--danger); background:var(--surface-control); }

/* --- Rest banner (countdown) --- */
.rest-banner { position:sticky; top:calc(8px + env(safe-area-inset-top, 0px)); z-index:30; display:flex; align-items:center; gap:10px;
               flex-wrap:wrap; background:var(--card); border:1px solid var(--accent);
               border-radius:var(--radius); padding:10px 14px; margin-bottom:14px; }
.rest-banner-popis { flex:0 0 auto; }
.rest-banner-cas { font-size:26px; font-weight:700; letter-spacing:-0.02em; line-height:1;
                   color:var(--accent-ink); font-variant-numeric:tabular-nums; }
.rest-banner-akce { display:flex; gap:6px; margin-left:auto; flex-wrap:wrap; }

/* --- Rest picker (volba času pauzy) --- */
.rest-panel { gap:6px; }
.rest-cas-velke { text-align:center; font-size:44px; font-weight:700; letter-spacing:-0.02em;
                  line-height:1; color:var(--accent-ink); font-variant-numeric:tabular-nums; margin:8px 0 14px; }
.rest-volby { display:grid; grid-template-columns:repeat(5,1fr); gap:8px; }
.rest-volba { padding:12px 4px; border:1px solid var(--line); border-radius:var(--r-sm);
              background:var(--card2); color:var(--text); font-family:inherit; font-size:14px;
              font-variant-numeric:tabular-nums; cursor:pointer; transition:border-color .12s, background .12s; }
.rest-volba.aktivni { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 14%, transparent);
                      color:var(--accent-ink); font-weight:600; }
.rest-doladit { display:flex; gap:10px; margin-top:12px; }
.rest-doladit .btn { flex:1; }

/* --- Historie: Hevy feed --- */
.feed-karta { cursor:pointer; transition:border-color .15s ease-out, transform .12s ease-out; }
.feed-karta:hover { border-color:var(--border-strong); }
.feed-karta:active { transform:scale(0.995); }
.feed-datum { margin-bottom:2px; }
.feed-nazev { margin:0 0 8px; }
.feed-staty { display:flex; flex-wrap:wrap; gap:6px 16px; padding-bottom:10px;
              border-bottom:1px solid var(--line); margin-bottom:10px; }
.feed-staty .ic { color:var(--muted); }
.feed-rekordy { color:var(--accent-ink); }
.feed-rekordy .ic { color:var(--accent-ink); }
.feed-cviky { display:flex; flex-direction:column; gap:8px; }
.feed-cvik-radek { display:flex; align-items:center; gap:10px; }
.feed-cvik-text { font-size:14px; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.feed-vice { align-self:flex-start; background:none; border:none; padding:2px 0;
             color:var(--accent-ink); font-family:inherit; font-size:13px; font-weight:510; cursor:pointer; }

@media (prefers-reduced-motion: reduce) {
  .workout-karta:active, .feed-karta:active, .akce-radek:active, .set-row .ok { transition:none; transform:none; }
}
/* ===== CVIKY – animace náhledu ===== */
/* Seznam (Hevy styl): kulatá výrazná miniatura s --card2 pozadím a kroužkem. */
.cvik-mini { border-radius:50%; border:1px solid var(--line); background:var(--card2); }
.cvik-mini img { background:#fff; }
.cvik-mini.mini-fallback { color:var(--muted); }

/* Detail: rámeček náhledu + štítek „náhled techniky". */
.detail-foto-box { cursor:default; }
.detail-foto-box.rucni { cursor:pointer; }   /* reduced-motion = ruční přepnutí */
.detail-foto-stitek { position:absolute; top:8px; left:8px;
                      background:rgba(0,0,0,.6); color:#fff; font-size:11px;
                      padding:3px 9px; border-radius:12px; display:flex;
                      align-items:center; gap:5px; letter-spacing:.01em; }
.detail-foto-stitek .ic { color:var(--accent); }

/* Odkaz „Zobrazit video" (YouTube hledání, jen odkaz). */
.detail-video-odkaz { display:inline-flex; align-items:center; gap:7px;
                      margin:-6px 0 14px; padding:8px 14px; border-radius:var(--r-sm);
                      background:var(--card2); color:var(--text); font-size:14px;
                      font-weight:510; text-decoration:none; border:1px solid var(--line);
                      transition:background .15s ease-out; }
.detail-video-odkaz:hover { background:var(--surface-control); }
.detail-video-odkaz .ic { color:var(--accent); }

@media (prefers-reduced-motion: reduce) {
  .detail-video-odkaz { transition:none; }
}

/* ===== MĚŘENÍ – pole + silueta ===== */
.body-viz { display:flex; flex-direction:column; gap:8px; }
.body-viz-datum { text-align:center; }
.body-viz-holder { width:100%; }
.body-viz-svg { display:block; width:100%; height:auto; max-width:380px; margin:0 auto; }
/* obrysy/čáry využívají var(--line) přímo v SVG atributech (stroke) */
.body-viz-lbl { font-size:15px; }
.body-viz-name { fill:var(--muted); font-size:15px; }
.body-viz-val { fill:var(--text); font-size:17px; font-weight:600;
  font-variant-numeric:tabular-nums; }

/* ===== KARDIO – Běh/Box ===== */
/* Běh: řádek série má jiné rozložení – Série | Minule | (km·čas·tempo) | ✓ */
.set-row.beh { grid-template-columns:26px 46px 1fr 44px; }
.set-hlavicka.beh { grid-template-columns:26px 46px 1fr 44px; }

/* Složené pole běhu: dva vstupy (km, mm:ss) vedle sebe + tempo pod nimi */
.beh-pole { display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.beh-pole .beh-km, .beh-pole .beh-cas { flex:1 1 60px; min-width:0; text-align:center;
  font-variant-numeric:tabular-nums; }
.beh-tempo { flex-basis:100%; text-align:center; color:var(--accent-ink);
  font-variant-numeric:tabular-nums; }

/* Box / čas: mm:ss vstup zarovnán jako ostatní číselná pole */
.set-row .beh-cas { font-variant-numeric:tabular-nums; }

/* Drobný odkaz „Otevřít ve Stravě" pod blokem běhu */
.beh-strava-odkaz { display:inline-flex; align-items:center; gap:6px; margin-top:8px;
  padding:6px 12px; border-radius:var(--r-sm); background:var(--card2); color:var(--muted);
  font-size:13px; font-weight:510; text-decoration:none; border:1px solid var(--line);
  transition:background .15s ease-out, color .15s ease-out; }
.beh-strava-odkaz:hover { background:var(--surface-control); color:var(--text); }
.beh-strava-odkaz .ic { color:var(--accent); }

/* Tlačítko „+ Kardio" na startu Tréninku */
.kardio-tlac .ic { color:var(--accent-ink); }

/* Rychlý kardio formulář (overlay) */
.kardio-seg { display:flex; gap:8px; margin-top:14px; }
.kardio-seg .seg-btn { flex:1; display:flex; align-items:center; justify-content:center; gap:6px; }
.kardio-panel .field { margin-bottom:10px; }
/* Box – výběr doby: rychlé volby (sčítají se) + vlastní minuty + souhrn */
.kardio-doba-volby { display:grid; grid-template-columns:repeat(2,1fr); gap:8px; margin-bottom:8px; }
.kardio-doba-radek { display:flex; gap:8px; align-items:center; }
.kardio-doba-radek input { flex:1; }
.kardio-doba-souhrn { margin-top:8px; font-weight:600; color:var(--accent-ink);
  font-variant-numeric:tabular-nums; }

/* ===== KALENDÁŘ – Apple styl ===== */

/* Hlavička: velký bold nadpis vlevo (datum/měsíc/rok dle pohledu) */
.pl-top { align-items:flex-start; }
.pl-title { min-width:0; }
.pl-title-big { font-size:30px; font-weight:700; letter-spacing:-0.02em; line-height:1.05;
                font-variant-numeric:tabular-nums; }
.pl-title-sub { font-size:13px; margin-top:2px; font-variant-numeric:tabular-nums; }

/* Navigační řádek: „Dnes" vlevo, šipky ‹ › vpravo */
.pl-navrow { display:flex; align-items:center; gap:10px; margin:12px 0 6px; }
.pl-navrow .pl-dnes { margin-left:0; }
.pl-navrow-sipky { margin-left:auto; display:flex; gap:8px; }
.pl-nav, .pl-dnes { transition:background .15s ease-out, border-color .15s ease-out, transform .12s ease-out; }
.pl-nav:active, .pl-dnes:active { transform:scale(0.95); }

/* Placeholder „Připravujeme" (Rok / Plán) */
.pl-soon { text-align:center; color:var(--muted); padding:48px 16px;
           border:1px dashed var(--line); border-radius:var(--r-lg); margin-top:8px; }
.pl-soon-ik { color:var(--accent-ink); display:flex; justify-content:center; margin-bottom:8px; }
.pl-soon h2 { color:var(--text); }
.pl-soon p { margin:0; }

/* --- Týden: hodinová osa + 7 sloupců s pozičními bloky --- */
.pl-week-scroll { overflow-x:auto; -webkit-overflow-scrolling:touch; margin:0 -2px; }
.pl-week-grid { min-width:560px; }
.pl-week-hlavicky { display:grid; grid-template-columns:38px repeat(7,1fr); gap:4px;
                    position:sticky; top:env(safe-area-inset-top, 0px); z-index:6; background:var(--bg); padding-bottom:4px; }
.pl-week-rohbunka { }
.pl-week-dh { border:0; background:var(--card); border-radius:10px; padding:6px 2px; cursor:pointer;
              display:flex; flex-direction:column; align-items:center; gap:2px; color:var(--text);
              transition:background .15s ease-out; }
.pl-week-dh-den { font-size:10px; font-weight:600; color:var(--muted); }
.pl-week-dh-cislo { font-size:15px; font-weight:700; font-variant-numeric:tabular-nums;
                    width:26px; height:26px; display:flex; align-items:center; justify-content:center; }
.pl-week-dh.dnes .pl-week-dh-cislo { background:var(--accent); color:var(--accent-text); border-radius:50%; }
.pl-week-dh.dnes .pl-week-dh-den { color:var(--accent-ink); }

.pl-week-telo { display:grid; grid-template-columns:38px repeat(7,1fr); gap:4px; }
.pl-week-osa { position:relative; }
.pl-week-osa-h { position:absolute; right:4px; transform:translateY(-50%); font-size:10px;
                 color:var(--muted); font-variant-numeric:tabular-nums; }
.pl-week-sloupec { position:relative; background:var(--card); border-radius:10px; overflow:hidden; cursor:pointer; }
.pl-week-sloupec.dnes { background:color-mix(in srgb, var(--accent) 9%, var(--card)); }
.pl-week-linka { position:absolute; left:0; right:0; border-top:1px solid var(--line); opacity:.4; }
.pl-week-blok { position:absolute; left:2px; right:2px; border-radius:var(--r-sm); padding:2px 4px;
                font-size:10px; line-height:1.2; color:var(--text); background:var(--card2);
                overflow:hidden; white-space:nowrap; text-overflow:ellipsis; cursor:pointer;
                border-left:3px solid var(--pl-barva, var(--accent)); }
.pl-week-blok.done { opacity:.5; text-decoration:line-through; }
.pl-week-cele { position:relative; margin:2px; border-radius:6px; padding:2px 5px; font-size:10px;
                color:var(--text); background:var(--card2); white-space:nowrap; overflow:hidden;
                text-overflow:ellipsis; cursor:pointer; border-left:3px solid var(--pl-barva, var(--accent)); z-index:3; }
.pl-week-now { position:absolute; left:0; right:0; height:2px; background:var(--danger); z-index:5; pointer-events:none; }
.pl-week-now::before { content:""; position:absolute; left:-3px; top:-3px; width:8px; height:8px;
                       border-radius:50%; background:var(--danger); }

/* --- Měsíc: dnešek lime kroužek + tečky úkolů (max 3 + N) --- */
.pl-mcell.dnes { background:color-mix(in srgb, var(--accent) 10%, var(--card)); }
.pl-mcell.dnes .den-c { display:inline-flex; align-items:center; justify-content:center;
                        min-width:22px; height:22px; padding:0 4px; border-radius:50%;
                        background:var(--accent); color:var(--accent-text); font-weight:700; }
.pl-mcell .den-c { font-variant-numeric:tabular-nums; }
.pl-tecka-vic { font-size:9px; font-weight:700; color:var(--muted); line-height:7px; }

/* jemný nájezd obsahu pohledu (150–250 ms) */
.pl-week-scroll, .pl-month, .pl-tl, .pl-soon {
  animation:anim-pl-in .2s ease-out both;
}
@keyframes anim-pl-in { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:translateY(0); } }

@media (prefers-reduced-motion: reduce) {
  .pl-nav, .pl-dnes, .pl-week-dh, .pl-task { transition:none !important; }
  .pl-week-scroll, .pl-month, .pl-tl, .pl-soon { animation:none !important; }
}

/* mobil: užší osa, čitelné bloky */
@media (max-width:430px) {
  .pl-title-big { font-size:26px; }
  .pl-week-grid { min-width:520px; }
}

@media (prefers-reduced-motion: reduce) {
  .beh-strava-odkaz { transition:none; }
}

/* ===== KALENDÁŘ – Rok ===== */
/* Mřížka 12 mini-měsíců: 3 sloupce (mobil), 4 na širší šířce. Každý mini-měsíc
 * = název + malá mřížka dnů; dnešek lime kroužek, dny s ≥1 úkolem jemně
 * podbarvené tečkou. Klik na celý mini-měsíc → měsíční pohled. */
.pl-year {
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:10px;
  margin-top:8px;
  animation:anim-pl-in .2s ease-out both;
}
.pl-year-m {
  text-align:left;
  border:1px solid var(--line);
  background:var(--card);
  border-radius:var(--r-md);
  padding:8px 8px 10px;
  cursor:pointer;
  color:var(--text);
  transition:background .15s ease-out, border-color .15s ease-out, transform .12s ease-out;
}
.pl-year-m:hover { border-color:var(--border-strong); }
.pl-year-m:active { transform:scale(0.97); }
.pl-year-m-nazev {
  font-size:13px; font-weight:700; letter-spacing:-0.01em;
  margin-bottom:6px; color:var(--text);
}
.pl-year-dny, .pl-year-grid {
  display:grid; grid-template-columns:repeat(7, 1fr); gap:1px;
}
.pl-year-dh {
  text-align:center; font-size:8px; font-weight:600;
  color:var(--text-tertiary); padding-bottom:2px;
}
.pl-year-d {
  display:flex; align-items:center; justify-content:center;
  aspect-ratio:1; font-size:9px; line-height:1;
  color:var(--muted); border-radius:50%;
  font-variant-numeric:tabular-nums;
}
.pl-year-d.prazdne { visibility:hidden; }
/* den s ≥1 úkolem: jemné podbarvení akcentem */
.pl-year-d.ukol {
  background:color-mix(in srgb, var(--accent) 22%, var(--card));
  color:var(--text);
}
/* dnešek: plný lime kroužek (přebíjí i .ukol) */
.pl-year-d.dnes {
  background:var(--accent); color:var(--accent-text); font-weight:700;
}

/* 4 sloupce na širší obrazovce (#screen max 520px, ale buď připraven) */
@media (min-width:460px) {
  .pl-year { grid-template-columns:repeat(4, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
  .pl-year { animation:none !important; }
  .pl-year-m { transition:none !important; }
}
/* ===== KALENDÁŘ – připomínky ===== */
/* presety připomínky (editor i nastavení) – stejný vzhled jako .pl-delky */
.pl-priprc { display:flex; flex-wrap:wrap; gap:7px; }
.pl-priprc button { border:1px solid var(--line); background:var(--card); color:var(--text);
                    border-radius:9px; padding:7px 11px; font-size:13px; font-family:inherit;
                    cursor:pointer; transition:background .15s, border-color .15s; }
.pl-priprc button.akt { background:var(--accent); color:var(--accent-text);
                        border-color:var(--accent); font-weight:700; }

/* tlačítko exportu do Apple Kalendáře (editor + hlavička Dne) */
.pl-ics-wrap { margin-top:10px; }
.pl-ics-btn { display:inline-flex; align-items:center; justify-content:center; gap:8px;
              width:100%; border:1px solid var(--line); background:var(--card); color:var(--text);
              border-radius:12px; padding:11px 14px; font-size:14px; font-weight:600;
              font-family:inherit; cursor:pointer; transition:background .15s, border-color .15s; }
.pl-ics-btn:active { transform:scale(0.98); }
.pl-ics-btn .ic { color:var(--accent-ink); }

/* hlavička Dne: kompaktní „Exportovat den" zarovnaný doprava */
.pl-den-akce { display:flex; justify-content:flex-end; margin-bottom:12px; }
.pl-ics-den { width:auto; padding:7px 12px; font-size:13px; border-radius:10px; }

@media (prefers-reduced-motion: reduce) {
  .pl-priprc button, .pl-ics-btn { transition:none !important; }
  .pl-ics-btn:active { transform:none; }
}

/* ===== KALENDÁŘ – Plán ===== */
/* AI panel „Navrhnout plán (AI)" */
.pl-plan-ai { background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg);
              padding:14px; margin-bottom:14px; }
/* rozbalovací varianta přebije padding (hlavička/tělo si řeší vlastní) */
.pl-plan-ai.ai-collapse { padding:0; }
.pl-plan-ai.ai-collapse .pl-plan-ai-text { margin-top:0; }
.pl-plan-ai-h { display:flex; align-items:center; gap:8px; font-weight:700; font-size:15px; }
.pl-plan-ai-text { width:100%; box-sizing:border-box; margin-top:10px; min-height:64px;
                   resize:vertical; border:1px solid var(--line); background:var(--card2);
                   color:var(--text); border-radius:10px; padding:10px 12px; font-size:14px;
                   font-family:inherit; }
.pl-plan-ai-akce { display:flex; gap:8px; flex-wrap:wrap; margin-top:10px; }
.pl-plan-ai-btn { border:0; background:var(--accent); color:var(--accent-text); font-weight:700;
                  border-radius:10px; padding:9px 16px; font-size:14px; font-family:inherit;
                  cursor:pointer; transition:opacity .15s; }
.pl-plan-ai-btn[disabled] { opacity:.6; cursor:default; }
.pl-plan-ai-btn.ghost { background:var(--card2); color:var(--text); border:1px solid var(--line); }
.pl-plan-ai-nahled { margin-top:10px; }
.pl-plan-ai-seznam { display:flex; flex-direction:column; gap:4px; }
.pl-plan-ai-pol { display:flex; gap:8px; align-items:center; font-size:13px;
                  background:var(--card2); border-radius:8px; padding:6px 10px; }
.pl-plan-ai-pol .d { font-weight:700; min-width:24px; }
.pl-plan-ai-pol .t { color:var(--muted); font-variant-numeric:tabular-nums; min-width:42px; }
.pl-plan-ai-pol .n { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* přepínač Týden / jednotlivé dny */
.pl-plan-prepinac { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:12px; }
.pl-plan-pbtn { border:1px solid var(--line); background:var(--card); color:var(--text);
                border-radius:9px; padding:6px 11px; font-size:13px; font-family:inherit;
                cursor:pointer; transition:background .15s, border-color .15s; }
.pl-plan-pbtn.akt { background:var(--accent); color:var(--accent-text); border-color:var(--accent);
                    font-weight:700; }

.pl-plan-prazdno { background:var(--card); border:1px dashed var(--line); border-radius:var(--r-lg);
                   padding:18px; text-align:center; margin-bottom:12px; }

/* mřížka osy + sloupců dnů */
.pl-plan-scroll { overflow-x:auto; overflow-y:auto; max-height:64vh; border:1px solid var(--line);
                  border-radius:var(--r-lg); background:var(--card); -webkit-overflow-scrolling:touch; }
.pl-plan-grid { min-width:fit-content; }
.pl-plan-hlavicky { display:grid; grid-template-columns:46px repeat(var(--plan-dnu, 7), minmax(72px, 1fr));
                    position:sticky; top:env(safe-area-inset-top, 0px); z-index:3; background:var(--card2); }
.pl-plan-roh { }
.pl-plan-dh { text-align:center; font-size:12px; font-weight:700; padding:8px 4px;
              border-left:1px solid var(--line); }
.pl-plan-telo { display:grid; grid-template-columns:46px repeat(var(--plan-dnu, 7), minmax(72px, 1fr)); }
.pl-plan-osa { position:relative; }
.pl-plan-osa-h { position:absolute; right:6px; transform:translateY(-50%); font-size:10px;
                 color:var(--muted); font-variant-numeric:tabular-nums; }
.pl-plan-sloupec { position:relative; border-left:1px solid var(--line); }
.pl-plan-linka { position:absolute; left:0; right:0; height:0; border-top:1px solid var(--line);
                 opacity:.5; pointer-events:none; }
.pl-plan-blok { position:absolute; left:2px; right:2px; border-radius:var(--r-sm); padding:3px 6px;
                overflow:hidden; cursor:pointer; color:#10130a;
                background:var(--pl-barva, #cbd5e1); box-shadow:inset 3px 0 0 rgba(0,0,0,.18); }
.pl-plan-blok-h { font-size:11px; font-weight:700; line-height:1.2; white-space:nowrap;
                  overflow:hidden; text-overflow:ellipsis; }
.pl-plan-blok-cas { font-size:10px; opacity:.8; font-variant-numeric:tabular-nums; }

/* editor bloku: pole „Od – Do" vedle sebe */
.pl-oddo { display:flex; align-items:center; gap:10px; }
.pl-oddo input[type=time] { flex:1 1 auto; }
.pl-oddo-sip { color:var(--muted); font-weight:700; }
/* Plán: cílový den při tažení bloku se zvýrazní lime rámečkem */
.pl-plan-den { transition:border-color .12s ease-out, background .12s ease-out; }
.pl-plan-den.cil { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 10%, var(--card)); }

/* editor bloku: výběr kategorie */
.pl-plan-katbox { display:flex; flex-wrap:wrap; gap:7px; }
.pl-plan-kat { display:inline-flex; align-items:center; gap:5px; border:1px solid var(--line);
               background:var(--card2); color:var(--text); border-radius:9px; padding:7px 11px;
               font-size:13px; font-family:inherit; cursor:pointer;
               border-left:4px solid var(--pl-barva, var(--line)); transition:background .15s; }
.pl-plan-kat.akt { background:var(--accent); color:var(--accent-text); font-weight:700; }

@media (prefers-reduced-motion: reduce) {
  .pl-plan-pbtn, .pl-plan-ai-btn, .pl-plan-kat { transition:none !important; }
}

/* ===== KALENDÁŘ – statistiky ===== */
/* kompaktní rozbalovací blok dole v Měsíci (dřív samostatný pod-pohled) */
.pl-stat-blok { background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg);
                margin-top:16px; padding:0 14px; }
.pl-stat-summary { display:flex; justify-content:space-between; align-items:center; gap:10px;
                   list-style:none; cursor:pointer; padding:14px 0; font-size:14px; }
.pl-stat-summary::-webkit-details-marker { display:none; }
.pl-stat-s-nadpis { display:inline-flex; align-items:center; gap:7px; font-weight:700; }
.pl-stat-s-cisla { display:flex; gap:10px; flex-wrap:wrap; justify-content:flex-end;
                   color:var(--muted); font-size:12px; font-variant-numeric:tabular-nums; }
.pl-stat-obsah { padding:0 0 16px; }

/* ===== NASTAVENÍ – seskupené skupiny (Fáze C) ===== */
/* Nadpis skupiny: UPPERCASE, drobné, ztlumené, nad kartou. */
.nast-skup-nadpis {
  font-size: var(--fs-caption); font-weight: 590; text-transform: uppercase;
  letter-spacing: .08em; color: var(--muted);
  margin: 22px 2px 8px;
}
/* Karta skupiny: řádky oddělené hairline (poslední bez). Vlastní padding na řádcích. */
.card.nast-skup { padding: 0 var(--sp-4); }
.card.nast-skup .nast-radek {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  min-height: 52px; padding: 10px 0; margin: 0;
  border-bottom: 1px solid var(--border-hairline);
}
.card.nast-skup .nast-radek:last-child { border-bottom: none; }
.nast-radek-label { color: var(--text); font-size: var(--fs-body); flex: 1 1 auto; }
.nast-radek-toggle { cursor: pointer; }
/* Ovladač vpravo se přizpůsobí obsahu (ne 100 % šířky jako ve .field). */
.nast-radek-ovl { flex: 0 0 auto; max-width: 60%; }
.nast-radek-ovl input,
.nast-radek-ovl select { width: auto; min-width: 130px; max-width: 100%; }
.nast-radek-ovl input[type="number"].num { min-width: 92px; text-align: center; }

@media (max-width: 380px) {
  .nast-radek-ovl select { min-width: 110px; }
}

/* ===== AI – sdílené (Spánek / Gym / Půst / Kalendář) ===== */
.ai-panel { margin-top: 14px; padding: 14px; background: var(--card);
            border: 1px solid var(--line); border-radius: var(--r-lg); }
.ai-panel h3 { margin-bottom: 4px; }
/* sbalovací hlavička AI trenéra (Trénink) */
.ai-hlavicka { display: flex; align-items: center; justify-content: space-between; gap: 8px;
            width: 100%; padding: 0; background: none; border: 0; cursor: pointer;
            color: var(--text); font-family: inherit; text-align: left; }
.ai-hlavicka .ikona-radek { margin-bottom: 0; }
.ai-chevron { color: var(--muted); flex: 0 0 auto; }
/* rozbalovací varianta (akordeon) – hlavička přes celou šířku + šipka */
.ai-collapse { padding: 0; overflow: hidden; }
.ai-collapse-hlava { display: flex; align-items: center; justify-content: space-between;
            width: 100%; padding: 14px; background: none; border: 0; cursor: pointer;
            color: var(--text); font-family: inherit; font-size: 14px; text-align: left; }
.ai-collapse-sip { color: var(--muted); transition: transform var(--dur-fast) var(--ease-out); }
.ai-collapse-telo { padding: 0 14px 14px; }
.ai-collapse-telo .ai-btn { margin-top: 0; }
.ai-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px;
          margin-top: 10px; padding: 10px 16px; border: 1px solid var(--line);
          background: var(--card2); color: var(--text); border-radius: var(--r-md);
          font-family: inherit; font-size: 14px; font-weight: 600; cursor: pointer;
          transition: background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out); }
.ai-btn:hover:not(:disabled) { background: var(--surface-control, var(--card2)); border-color: var(--border-strong, var(--line)); }
.ai-btn:active:not(:disabled) { transform: scale(0.98); }
.ai-btn:disabled { opacity: 0.5; cursor: default; }
.ai-btn .ic { color: var(--accent-ink); }
.ai-vystup, .ai-vystup-text { margin-top: 12px; white-space: pre-wrap; color: var(--text);
              font-size: 14px; line-height: 1.55; }
.ai-load { margin-top: 12px; display: inline-flex; align-items: center; gap: 9px;
           color: var(--muted); font-size: 14px; }
.ai-load::before { content: ""; width: 14px; height: 14px; border-radius: 50%;
           border: 2px solid var(--line); border-top-color: var(--accent-ink);
           animation: ai-spin 0.7s linear infinite; }
@keyframes ai-spin { to { transform: rotate(360deg); } }
.ai-chyba { margin-top: 12px; color: var(--danger); font-size: 13px; }
.ai-disabled-hint { margin-top: 8px; color: var(--muted); font-size: 13px; }

@media (prefers-reduced-motion: reduce) {
  .ai-btn { transition: none; }
  .ai-btn:active:not(:disabled) { transform: none; }
  .ai-load::before { animation: none; }
}
[data-omezit-pohyb] .ai-load::before { animation: none; }
.ai-load.bez-animace::before { animation: none; }

/* ===== AI asistent (chat bot) v deníku jídla ===== */
.ai-rychle { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.ai-chip { padding: 7px 12px; border: 1px solid var(--line); background: var(--card2);
           color: var(--text); border-radius: 999px; font-family: inherit; font-size: 13px;
           font-weight: 600; cursor: pointer; transition: background var(--dur-fast) var(--ease-out); }
.ai-chip:hover { background: var(--surface-control, var(--card2)); }
.ai-chip:active { transform: scale(0.97); }
.ai-chat { display: flex; flex-direction: column; gap: 8px; max-height: 360px; overflow-y: auto; }
.ai-chat:not(:empty) { margin-bottom: 12px; }
.ai-zprava { padding: 9px 12px; border-radius: var(--r-md); font-size: 14px; line-height: 1.5;
             max-width: 88%; white-space: pre-wrap; }
.ai-zprava.ja { align-self: flex-end; background: var(--accent); color: var(--accent-ink, #fff);
                border-bottom-right-radius: var(--r-sm); }
.ai-zprava.bot { align-self: flex-start; background: var(--card2); color: var(--text);
                 border: 1px solid var(--line); border-bottom-left-radius: var(--r-sm); }
.ai-zprava.bot .ai-vystup-text { margin-top: 0; }
.ai-zprava.ai-load { align-self: flex-start; margin-top: 0; }
.ai-zprava.ai-chyba { align-self: flex-start; margin-top: 0; background: var(--card2);
                      border: 1px solid var(--line); }
.ai-pridat-jidlo { display: inline-flex; align-items: center; gap: 6px; margin-top: 8px;
                   padding: 7px 11px; border: 1px solid var(--line); background: var(--card);
                   color: var(--text); border-radius: var(--r-md); font-family: inherit;
                   font-size: 13px; font-weight: 600; cursor: pointer; }
.ai-pridat-jidlo:hover { background: var(--surface-control, var(--card2)); }
.ai-pridat-jidlo:active { transform: scale(0.98); }
.ai-pridat-jidlo .ic { color: var(--accent-ink); }
.ai-chat-radek { display: flex; gap: 8px; align-items: stretch; }
.ai-chat-input { flex: 1; min-width: 0; padding: 10px 12px; border: 1px solid var(--line);
                 background: var(--card2); color: var(--text); border-radius: var(--r-md);
                 font-family: inherit; font-size: 14px; }
.ai-chat-radek .ai-btn { margin-top: 0; flex: 0 0 auto; }
@media (prefers-reduced-motion: reduce) {
  .ai-chip:active, .ai-pridat-jidlo:active { transform: none; }
}

/* ===== KALENDÁŘ – Apple/Google polish ===== */
/* Přepisy stávajících .pl-* tříd (tato sekce je na konci, takže má přednost).
 * Cíl: Den = Apple Kalendář (vzdušná osa, plné barevné bloky), Měsíc = Google
 * Kalendář (čistá mřížka, hairline, ztlumený víkend). Vše přes tokeny → dark i light. */

/* --- DEN: vzdušná hodinová osa --- */
/* Levý sloupec ~52px, čísla hodin malá a tertiary, zarovnaná vpravo.
 * Hairline linka u každé hodiny místo nápadné čárkované. */
.pl-tl { margin-left:52px; border-left:1px solid var(--border-hairline); }
.pl-hod .pl-cas {
  left:-52px; width:44px; top:-7px; text-align:right;
  color:var(--text-tertiary); font-size:11px; font-weight:600;
  font-variant-numeric:tabular-nums; letter-spacing:-0.01em;
}
.pl-hod .pl-lajna {
  border-top:1px solid var(--border-hairline); opacity:1;
}

/* --- DEN: událost = plný zaoblený blok v barvě události --- */
/* Pozadí (28 % barvy) se nastavuje inline v JS; tady řešíme tvar, okraj a typografii.
 * Silný levý okraj 4px v plné barvě, zaoblení r-md, žádný těžký stín (klidnější). */
.pl-task {
  left:6px; right:8px;
  border-radius:var(--r-sm);
  padding:6px 10px 6px 13px;
  border:1px solid var(--border-hairline);
  box-shadow:none;
}
.pl-task::before {
  width:3px;
  border-radius:var(--r-sm) 0 0 var(--r-sm);
  background:var(--pl-barva, var(--accent));
}
.pl-task:active { box-shadow:0 6px 18px rgba(0,0,0,.28); }
/* název tučně, čas pod ním ztlumený a menší */
.pl-task .pl-t-h { gap:6px; font-weight:600; font-size:13.5px; }
.pl-task .pl-t-nazev { font-weight:600; }
.pl-task .pl-t-cas { font-size:11px; margin-top:1px; opacity:.9; }
/* check kolečko menší a jemnější, ať neruší barevný blok */
.pl-task .pl-check {
  width:18px; height:18px; border-width:1.5px;
  background:color-mix(in srgb, var(--card) 70%, transparent);
}
/* dvojsloupec dorovnat na nové left/right */
.pl-task.col2 { width:calc(50% - 8px); }
.pl-task.col2.b { right:8px; }

/* --- DEN: volný čas = tichá tap-to-add plocha (žádný „volno: 4h“ šum) --- */
.pl-volno {
  left:6px; right:8px;
  border:0; border-radius:var(--r-md);
  display:flex; align-items:center; justify-content:center;
  background:transparent;
  transition:background var(--dur-fast) var(--ease);
}
.pl-volno-akce {
  display:flex; align-items:center; gap:6px;
  opacity:0; transition:opacity var(--dur-fast) var(--ease);
}
.pl-volno:hover, .pl-volno:active { background:color-mix(in srgb, var(--accent) 7%, transparent); }
.pl-volno:hover .pl-volno-akce, .pl-volno:active .pl-volno-akce { opacity:1; }
.pl-volno-plus {
  display:inline-flex; align-items:center; justify-content:center;
  width:22px; height:22px; border-radius:50%;
  background:var(--card2); color:var(--muted);
  font-size:15px; line-height:1;
}
.pl-volno-inbox {
  display:inline-flex; align-items:center; justify-content:center;
  width:22px; height:22px; border-radius:50%;
  border:1px solid var(--line); background:var(--card2);
  color:var(--text); cursor:pointer; padding:0;
}
/* na zařízení bez hoveru (dotyk) drž akci slabě viditelnou, ať jde tapnout */
@media (hover:none) {
  .pl-volno-akce { opacity:.5; }
}

/* --- MĚSÍC: Google styl – čistá mřížka, hairline, vzdušné buňky --- */
.pl-month { gap:1px; background:var(--border-hairline); border-radius:var(--r-md); overflow:hidden; }
.pl-month-h { gap:1px; }
.pl-mcell {
  border-radius:0; min-height:84px; padding:5px 5px 6px;
  background:var(--card);
  transition:background var(--dur-fast) var(--ease);
}
.pl-mcell:hover { background:color-mix(in srgb, var(--accent) 5%, var(--card)); }
.pl-mcell .den-c { font-size:12px; font-weight:600; color:var(--text); }
/* víkend (So/Ne) lehce ztlumit – číslo i hlavička */
.pl-mcell.vikend .den-c { color:var(--text-tertiary); }
.pl-month-h span.vikend { color:var(--text-tertiary); }
/* dnešek: číslo v plném lime kolečku (přebije i víkend), bez podbarvení buňky */
.pl-mcell.dnes { background:var(--card); }
.pl-mcell.dnes .den-c {
  color:var(--accent-text);
  background:var(--accent);
  min-width:22px; height:22px; padding:0 5px;
  border-radius:50%;
  display:inline-flex; align-items:center; justify-content:center;
  font-weight:700;
}

@media (prefers-reduced-motion: reduce) {
  .pl-volno, .pl-volno-akce, .pl-mcell { transition:none !important; }
}

/* ===== ÚVOD – denní widget + velikosti ===== */

/* Denní widget (agenda dne). Dědí .dash-dlazdice (rámeček/pozadí/hover),
   ale je to klikací blok s vlastním obsahem, ne jednoduchá hodnota. */
.dash-den { gap:var(--sp-3); }
.dash-den-hlava { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.dash-den-titulek { font-size:16px; font-weight:590; letter-spacing:-0.01em; }
.dash-den-ovl { display:flex; align-items:center; gap:6px; flex:0 0 auto; }
.dash-den-nav, .dash-den-dnes {
  display:inline-flex; align-items:center; justify-content:center;
  border:1px solid var(--border-hairline); background:var(--surface-control);
  color:var(--text); cursor:pointer; border-radius:var(--r-sm);
  transition:background .12s ease-out, border-color .12s ease-out;
}
.dash-den-nav { width:36px; height:36px; }
.dash-den-dnes { height:36px; padding:0 10px; font-size:13px; font-weight:510; }
.dash-den-nav:hover, .dash-den-dnes:hover { background:var(--surface-raised); border-color:var(--border-strong); }
.dash-den-dnes.aktivni { background:var(--accent); color:var(--accent-text); border-color:transparent; }

.dash-den-telo { display:flex; flex-direction:column; gap:2px; }
.dash-den-volno { padding:6px 0 2px; font-size:14px; }
.dash-den-udalost { display:flex; align-items:center; gap:10px; padding:6px 0; cursor:pointer; }
.dash-den-udalost + .dash-den-udalost { border-top:1px solid var(--border-hairline); }
.dash-den-tecka { flex:0 0 auto; width:10px; height:10px; border-radius:50%; }
.dash-den-cas { flex:0 0 auto; min-width:62px; font-size:13px; }
.dash-den-nazev { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:14px; }
.dash-den-udalost.hotovo .dash-den-nazev { color:var(--muted); text-decoration:line-through; }
.dash-den-vic { padding-top:4px; }

/* Edit lišta: přepínač velikosti dlaždice (vedle skrýt/šipek). */
.dash-edit-vel { display:inline-flex; align-items:center; justify-content:center;
  width:28px; height:28px; border-radius:var(--r-sm);
  border:1px solid var(--border-hairline); background:var(--surface-control);
  color:var(--text); cursor:pointer; transition:background .12s ease-out; }
.dash-edit-vel:hover { background:var(--surface-raised); }
.dash-edit-vel.velka { background:var(--accent); color:var(--accent-text); border-color:transparent; }
.dash-edit-vel.velka:hover { background:var(--accent); }
/* CSS-only indikátor: malá = jeden čtvereček, velká = široký obdélník */
.dash-edit-vel-ind { display:block; width:9px; height:9px; border-radius:2px;
  border:1.6px solid currentColor; }
.dash-edit-vel.velka .dash-edit-vel-ind { width:15px; }

@media (prefers-reduced-motion: reduce) {
  .dash-den-nav, .dash-den-dnes, .dash-edit-vel { transition:none; }
}

/* ===== PIN zámek (iPhone-styl) ===== */
.pin-wrap { min-height: calc(100vh - 140px); display: flex; align-items: center; justify-content: center; }
.pin-karta { width: 100%; max-width: 320px; text-align: center; padding: var(--sp-5) var(--sp-4); }
.pin-logo { width: 60px; height: 60px; margin: 0 auto var(--sp-3); display: flex; align-items: center; justify-content: center; border-radius: var(--r-lg); background: var(--accent); color: var(--accent-text); }
.pin-logo span { font-size: 34px; font-weight: 800; line-height: 1; letter-spacing: -0.02em; }
.pin-nadpis { margin: 0 0 var(--sp-1); }
.pin-popis { margin: 0 0 var(--sp-4); font-size: var(--fs-body); }
.pin-tecky { display: flex; justify-content: center; gap: 18px; margin-bottom: var(--sp-5); }
.pin-tecka { width: 14px; height: 14px; border-radius: 50%; border: 2px solid var(--text-tertiary); transition: background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out); }
.pin-tecka.plna { background: var(--accent); border-color: var(--accent); }
.pin-pad { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; max-width: 260px; margin: 0 auto; }
.pin-tlac { aspect-ratio: 1; width: 72px; max-width: 100%; margin: 0 auto; border-radius: 50%; border: 1px solid var(--line); background: var(--card2); color: var(--text); font-size: 26px; font-weight: 500; font-family: inherit; cursor: pointer; transition: background var(--dur-fast) var(--ease-out); }
.pin-tlac:active { background: var(--surface-raised, var(--bg2)); }
.pin-smaz { font-size: 20px; border-color: transparent; background: transparent; }
.pin-chyba { animation: pin-shake .4s; }
@keyframes pin-shake { 0%,100%{transform:translateX(0)} 20%,60%{transform:translateX(-8px)} 40%,80%{transform:translateX(8px)} }
@media (prefers-reduced-motion: reduce) { .pin-tecka{transition:none} .pin-chyba{animation:none} }

/* ===== KALENDÁŘ – měsíc vzhled v2 ===== */
/* Cíl: dny jako samostatné jemné karty (lepší odlišení než splývající hairline),
 * číslo dne čitelnější a odsazené (ne nalepené v rohu). Tmavý + lime styl, funguje i v light.
 * Cílíme přes .pl-month.v2, ať to přebije starší hairline mřížku výš v souboru. */
.pl-month.v2 {
  gap:3px;                 /* menší mezera → širší buňky = čitelnější názvy událostí */
  background:transparent;  /* žádné podkladové pozadí mřížky */
  border-radius:0;
  overflow:visible;        /* aby byly vidět zaoblené rohy karet */
  /* Mřížka vyplní většinu obrazovky: výšku řádku počítáme z výšky okna děleno
   * počtem týdnů v měsíci (--pl-rows, 4–6). Odečteno ~ horní lišty + tabbar.
   * max() drží rozumné minimum na malých displejích / když je hodně událostí. */
  grid-auto-rows:minmax(max(74px, calc((100dvh - 300px) / var(--pl-rows, 6))), auto);
}

.pl-month.v2 .pl-mcell {
  background:var(--surface-card);
  border:1px solid var(--border-hairline);
  border-radius:var(--r-sm);
  padding:0;               /* odsazení řeší vnitřní bloky (hlavička / akce) */
  overflow:hidden;
  display:flex;
  flex-direction:column;
  transition:background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);
}
.pl-month.v2 .pl-mcell:hover {
  background:color-mix(in srgb, var(--accent) 6%, var(--surface-card));
  border-color:color-mix(in srgb, var(--accent) 30%, var(--border-hairline));
}
/* dny mimo aktuální měsíc ztlumit (čitelně, ale jasně vedlejší) */
.pl-month.v2 .pl-mcell.mimo { opacity:.42; }

/* hlavička buňky s číslem dne: odsazená nahoře vlevo, ať nelepí v rohu */
.pl-month.v2 .pl-mcell-hl {
  display:flex; align-items:center;
  padding:6px 6px 0;
}
.pl-month.v2 .den-c {
  font-size:15px; line-height:1.3; font-weight:650;
  color:var(--text); font-variant-numeric:tabular-nums;
}
/* víkend (So/Ne) ztlumit – zachováno */
.pl-month.v2 .pl-mcell.vikend .den-c { color:var(--text-tertiary); }

/* dnešek: číslo v plném lime kolečku (zachováno), buňka s lime rámečkem pro extra odlišení */
.pl-month.v2 .pl-mcell.dnes {
  border-color:color-mix(in srgb, var(--accent) 55%, var(--border-hairline));
  background:color-mix(in srgb, var(--accent) 6%, var(--surface-card));
}
.pl-month.v2 .pl-mcell.dnes .den-c {
  display:inline-flex; align-items:center; justify-content:center;
  min-width:24px; height:24px; padding:0 6px;
  border-radius:50%;
  background:var(--accent); color:var(--accent-text);
  font-weight:700;
}

/* barevné pruhy událostí: odsazení dole/po stranách, mezera od čísla */
.pl-month.v2 .pl-mcell-akce {
  padding:2px 3px 5px;
  margin-top:2px;
}

@media (prefers-reduced-motion: reduce) {
  .pl-month.v2 .pl-mcell { transition:none !important; }
}

/* =====================================================================
 * DESKTOP / ŠIROKÁ OBRAZOVKA (≥820px)
 * Telefon zůstává beze změny (mobile-first styly výš). Na počítači:
 *  - spodní lišta se promění ve svislé boční menu vlevo,
 *  - obsah se roztáhne do širšího sloupce a vyplní obrazovku.
 * Žádná změna v JS – jen jiný vzhled stejných prvků přes media query.
 * ===================================================================== */
@media (min-width: 820px) {
  /* Celkové zvětšení UI na PC: obsah navržený pro telefon je na velkém monitoru
   * drobný, proto vše proporcionálně zvětšíme (zoom škáluje text, ikony, kruhy
   * i rozestupy najednou – menu i obsah). padding-left počítá s šířkou menu. */
  body { zoom: 1.18; padding-left: 300px; }            /* místo pro boční menu vlevo */

  /* spodní tabbar → svislé boční menu vlevo.
   * Pilulky odsazené od kraje okna (padding 26px) + lehce zaoblené pozadí menu,
   * ať navigace „nesedí" nalepená na hraně a působí profesionálně/symetricky. */
  .tabbar {
    top: 0; bottom: 0; left: 0; right: auto;
    flex-direction: column; justify-content: flex-start; align-items: stretch;
    gap: 6px;
    width: 300px; max-width: 300px; margin: 0;
    padding: 48px 26px calc(48px + env(safe-area-inset-bottom, 0px));
    border-top: none; border-right: 1px solid var(--line);
    overflow-y: auto;
  }
  .tab {
    flex: 0 0 auto; flex-direction: row; justify-content: flex-start; align-items: center;
    gap: 14px; width: 100%; padding: 14px 18px;
    border-radius: 14px; font-size: 1.0625rem; min-height: 56px;
    transition: background .12s ease-out, color .15s ease-out;
  }
  .tab .tab-ikona { font-size: 1.5rem; line-height: 1; }
  .tab.aktivni { background: color-mix(in srgb, var(--accent) 14%, transparent); }
  .tab:hover:not(.aktivni) { background: var(--surface-control); }

  /* obsah: čtený sloupec vycentrovaný v prostoru vedle menu.
   * Obsah je navržený mobile-first (~520px), takže ho na PC necháváme v užším
   * vystředěném sloupci místo roztažení přes celou šířku – působí to klidněji
   * a profesionálněji (styl Linear/Things) a karty neplavou v prázdnu.
   * Velkorysejší symetrické guttery (56px), ať obsah nesedí na hraně okna. */
  #screen {
    max-width: 740px; margin: 0 auto;
    padding: 56px 56px calc(64px + env(safe-area-inset-bottom, 0px));
  }

  /* Obrazovky s 2sloupcovým desktop rozložením dostanou víc šířky, ať se
   * vyplní prostor vedle menu (Úvod/Kalendář/Nastavení zůstávají úzké).
   * Cap < dostupná šířka → na širokých monitorech zůstanou symetrické okraje. */
  #screen[data-tab="food"],
  #screen[data-tab="sleep"],
  #screen[data-tab="fasting"],
  #screen[data-tab="gym"] {
    max-width: 1080px;
  }

  /* plovoucí „+" do pravého dolního rohu okna */
  .pl-fab { right: 48px; bottom: 48px; }

  /* ── Dashboard bento tiles ─────────────────────────────────────── */
  .dash-mriz                               { gap: 20px; }
  .dash-dlazdice                           { padding: var(--sp-5); }
  .dash-dlazdice:not(.hero) .dash-hodnota  { font-size: 30px; }
  .dash-popis                              { font-size: 15px; }
  .dash-dlazdice.hero .ring               { width: 136px !important; height: 136px !important; }
  .dash-dlazdice.hero .dash-hodnota       { font-size: 44px !important; }

  /* ── GYM – desktop vylepšení ─────────────────────────────────────
   * Měření: silueta vlevo, formulář vpravo. Na mobilu je .mereni-layout
   * obyčejný blok (beze změny). + drobné CSS-only úpravy pro lepší využití
   * šířky (filtry cviků na řádek, galerie fotek 4 sloupce). */
  .mereni-layout {
    display: grid;
    grid-template-columns: 380px 1fr;
    gap: 24px;
    align-items: start;
    margin-bottom: 4px;
  }
  .mereni-layout > .body-viz { margin-bottom: 0; }

  /* filtry cviků (4 selecty) na desktopu do jedné řady */
  #screen[data-tab="gym"] .filtr-mriz:not(.dva) { grid-template-columns: repeat(4, 1fr); }
  /* galerie fotek: víc sloupců na šířku */
  #screen[data-tab="gym"] .foto-galerie { grid-template-columns: repeat(4, 1fr); }
}

/* =====================================================================
 * MODUL JÍDLO (počítání kalorií)
 * ===================================================================== */
.jidlo-sub { display: flex; flex-direction: column; gap: 12px; }

/* přepínač data */
.jidlo-datum { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.jidlo-datum-popis {
  flex: 1; text-align: center; background: none; border: none; cursor: pointer;
  color: var(--text); font-family: inherit; font-size: 16px; font-weight: 590;
  text-transform: capitalize; padding: 8px;
}

/* prázdný stav / výzva k profilu */
.jidlo-empty { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.jidlo-empty p { margin: 0; color: var(--muted); }

/* pruh dnů (týden) */
.jidlo-dny { display: flex; gap: 4px; }
.jidlo-den { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 8px 2px; background: none; border: 0; border-radius: var(--r-md);
  color: var(--muted); font-family: inherit; cursor: pointer; }
.jidlo-den-nazev { font-size: 11px; text-transform: lowercase; }
.jidlo-den-cislo { font-size: 16px; font-weight: 650; width: 32px; height: 32px; line-height: 32px;
  border-radius: 50%; text-align: center; color: var(--text); }
.jidlo-den.dnes .jidlo-den-cislo { border: 1.5px solid var(--accent); }
.jidlo-den.aktivni .jidlo-den-cislo { background: var(--accent); color: var(--accent-text); }
.jidlo-den.aktivni .jidlo-den-nazev { color: var(--text); }

/* HERO kruh kalorií */
.jidlo-hero { display: flex; flex-direction: column; align-items: center; gap: 18px; padding: var(--sp-5) var(--sp-4) var(--sp-4); }
.jidlo-hero .ring-stred { gap: 3px; }
.jidlo-hero-cislo { font-size: 46px; font-weight: 780; letter-spacing: -0.03em; line-height: 1; }
.jidlo-hero-z { font-size: 12px; margin: 0; }
.jidlo-hero-pct { margin: 6px 0 0; padding: 2px 11px; border-radius: 999px; line-height: 1.5;
  background: color-mix(in srgb, var(--accent) 16%, transparent); color: var(--accent-ink);
  font-size: 12px; font-weight: 700; }
.jidlo-hero-radek { display: flex; width: 100%; }
.jidlo-hero-stat { flex: 1; text-align: center; }
.jidlo-hero-stat + .jidlo-hero-stat { border-left: 1px solid var(--border-hairline); }
.jidlo-hero-stat-h { font-size: 24px; font-weight: 720; letter-spacing: -0.02em; }
.jidlo-hero-stat-h.preci { color: var(--danger); }
.jidlo-hero-stat-j { font-size: 13px; font-weight: 500; color: var(--muted); }
.jidlo-hero-stat .small { font-size: 12px; }

/* NUTRIENTY karta */
.jidlo-nut-nadpis { font-size: 15px; font-weight: 600; margin-bottom: 14px; }
.jidlo-nut-mriz { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.jidlo-nut { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.jidlo-nut-nazev { font-size: 13px; font-weight: 510; }
.jidlo-nut-g { font-size: 12px; color: var(--muted); }
.jidlo-nut-pct { font-size: 13px; font-weight: 650; }
.jidlo-nut-cil { font-size: 11px; }
.jidlo-nut-radek2 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-top: 14px;
  padding-top: 14px; border-top: 1px solid var(--border-hairline); }
.jidlo-nut2 { text-align: center; }
.jidlo-nut2-nazev { font-size: 12px; }
.jidlo-nut2-g { font-size: 15px; font-weight: 600; margin-top: 2px; }

.jidlo-jidelnicek-nadpis { margin: 8px 0 2px; }

/* detail potraviny (modal) */
.jidlo-detail-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin: 10px 0 4px; }
.jidlo-detail-bunka { text-align: center; padding: 10px 4px; background: var(--surface-control); border-radius: var(--r-md); }
.jidlo-detail-bunka.hlavni { background: color-mix(in srgb, var(--accent) 14%, transparent); }
.jidlo-detail-hod { font-size: 17px; font-weight: 650; letter-spacing: -0.02em; }
.jidlo-detail-pop { font-size: 10px; margin-top: 2px; }
.jidlo-detail-sekce { margin: 14px 0 6px; }
.jidlo-detail-list { display: flex; flex-direction: column; }
.jidlo-detail-radek { display: flex; justify-content: space-between; padding: 7px 0; border-top: 1px solid var(--border-hairline); font-size: 14px; }

/* modal porce: množství + výběr porce + Vliv na příjem */
.jidlo-porce-radek { display: flex; gap: 10px; }
.jidlo-porce-radek .field { flex: 1; margin: 0; }
.jidlo-vliv { margin-top: 14px; }
.jidlo-vliv-mriz { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.jidlo-vliv-pol { display: flex; flex-direction: column; align-items: center; gap: 3px; }
.jidlo-vliv-nazev { font-size: 12px; }
.jidlo-vliv-pridano { font-size: 13px; font-weight: 650; }
.jidlo-vliv-pct { font-size: 12px; font-weight: 650; }
.jidlo-vliv-cil { font-size: 11px; }
/* AI foto tab */
.jidlo-foto { display: flex; flex-direction: column; gap: 12px; align-items: stretch; }
.jidlo-foto-nahled { width: 100%; max-height: 240px; object-fit: contain; border-radius: var(--r-md); background: #000; }
.jidlo-foto-popis { font-size: 13px; text-align: center; }

/* sekce jídel dne */
.jidlo-meal { display: flex; flex-direction: column; gap: 6px; }
.jidlo-meal-head { display: flex; align-items: baseline; justify-content: space-between; }
.jidlo-meal-nazev { font-size: 15px; font-weight: 600; }
.jidlo-meal-kcal { font-size: 13px; }
.jidlo-meal-makra { font-size: 12px; margin-top: -2px; }
.jidlo-meal-prazdno { font-size: 13px; margin: 2px 0; }
.jidlo-zaznam { display: flex; align-items: center; gap: 8px; padding: 6px 0; border-top: 1px solid var(--border-hairline); }
.jidlo-zaznam-info { flex: 1; display: flex; flex-direction: column; align-items: flex-start; min-width: 0;
  background: none; border: 0; padding: 0; cursor: pointer; color: var(--text); font-family: inherit; text-align: left; }
.jidlo-zaznam-nazev { font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jidlo-zaznam-detail { font-size: 12px; }
.jidlo-zaznam-x { background: none; border: none; color: var(--text-tertiary); cursor: pointer; padding: 4px; display: flex; }
.jidlo-zaznam-x:hover { color: var(--danger); }
.jidlo-pridat {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  margin-top: 4px; padding: 8px; width: 100%;
  background: none; border: 1px dashed var(--border-strong); border-radius: var(--r-md);
  color: var(--accent-ink); font-family: inherit; font-size: 13px; font-weight: 510; cursor: pointer;
}
.jidlo-pridat:hover { background: var(--surface-control); }
.jidlo-atribuce { font-size: 11px; text-align: center; margin: 6px 0 0; }

/* ── sheet pro přidání potraviny ── */
.jidlo-sheet {
  position: relative; width: 100%; max-width: 560px;
  max-height: 88vh; display: flex; flex-direction: column;
  background: var(--surface-card); border: 1px solid var(--line);
  border-radius: var(--r-xl) var(--r-xl) 0 0;
  padding: 16px 16px calc(16px + env(safe-area-inset-bottom, 0px));
}
.jidlo-sheet-overlay { align-items: flex-end; justify-content: center; }
.jidlo-sheet-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.jidlo-sheet-head h3 { margin: 0; font-size: 17px; }
.jidlo-sheet-x { background: none; border: none; color: var(--muted); cursor: pointer; padding: 4px; display: flex; }
.jidlo-sheet-taby { overflow-x: auto; }
.jidlo-sheet-telo { overflow-y: auto; flex: 1; padding-top: 12px; }

.jidlo-hledat-radek { display: flex; gap: 8px; }
.jidlo-hledat-radek input { flex: 1; }
.jidlo-vysledky { display: flex; flex-direction: column; gap: 6px; margin-top: 12px; }
.jidlo-vysledek {
  display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
  padding: 10px 12px; background: var(--surface-control); border: 1px solid var(--border-hairline);
  border-radius: var(--r-md); color: var(--text); cursor: pointer; font-family: inherit;
}
.jidlo-vysledek:hover { border-color: var(--border-strong); }
.jidlo-vysledek-info { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.jidlo-vysledek-nazev { font-size: 14px; font-weight: 510; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jidlo-vysledek-detail { font-size: 12px; }
.jidlo-vysledek .ic { color: var(--accent-ink); flex: 0 0 auto; }
.jidlo-chyba { color: var(--danger); font-size: 13px; }

/* sken */
.jidlo-sken { display: flex; flex-direction: column; gap: 10px; }
.jidlo-video {
  width: 100%; aspect-ratio: 4 / 3; background: #000;
  border-radius: var(--r-md); object-fit: cover;
}

/* formulář (ruční potravina + profil) */
.jidlo-form { display: flex; flex-direction: column; gap: 4px; }
.jidlo-form-radek { display: flex; gap: 10px; }
.jidlo-form-radek .field { flex: 1; }
.jidlo-nahled { font-size: 13px; margin: 6px 0 2px; }

.jidlo-vaha-info { font-size: 12px; margin-top: 4px; }

/* spočítané cíle */
.jidlo-cile-nadpis { margin: 0 0 12px; font-size: 16px; }
.jidlo-cile-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.jidlo-cile-bunka { text-align: center; padding: 12px 6px; background: var(--surface-control); border-radius: var(--r-md); }
.jidlo-cile-bunka.hlavni { background: color-mix(in srgb, var(--accent) 14%, transparent); }
.jidlo-cile-hod { font-size: 20px; font-weight: 650; letter-spacing: -0.02em; }
.jidlo-cile-pop { font-size: 12px; margin-top: 2px; }
.jidlo-cile-makra { display: flex; justify-content: space-between; gap: 8px; margin-top: 12px; font-size: 13px; flex-wrap: wrap; }
.jidlo-cile-makra span { color: var(--muted); }

.jidlo-seg { flex-wrap: wrap; }

/* desktop: sheet jako vystředěná karta, souhrn větší */
@media (min-width: 820px) {
  .jidlo-sheet-overlay { align-items: center; }
  .jidlo-sheet { border-radius: var(--r-xl); max-height: 80vh; }

  /* ── JÍDLO – desktop 2 sloupce ──────────────────────────────────────
   * Vlevo přehled (dny + kruh kalorií, sticky = pořád na očích), vpravo
   * detail (nutrienty, AI, jídelníček). Na mobilu jsou .jidlo-levy/pravy
   * obyčejné bloky, takže se tahle pravidla neuplatní. */
  .jidlo-desktop-wrap {
    display: grid;
    grid-template-columns: 360px 1fr;
    column-gap: 24px;
    align-items: start;
  }
  .jidlo-levy {
    position: sticky; top: 16px;
    display: flex; flex-direction: column; gap: 12px;
  }
  .jidlo-pravy { display: flex; flex-direction: column; gap: 12px; }

  /* nadpis Jídelníček: gap řeší rozestup, zruš horní margin */
  .jidlo-pravy .jidlo-jidelnicek-nadpis { margin-top: 0; }
}

/* === Spánek – desktop 2 sloupce (≥820px) ===
 * Vlevo přehled (skóre + dluh + týdenní pruh, sticky), vpravo grafy/analýza/
 * zápis. Na mobilu jsou .sp-levy/.sp-pravy obyčejné bloky (beze změny). */
@media (min-width: 820px) {
  .sp-desktop-wrap {
    display: grid;
    grid-template-columns: 380px 1fr;
    column-gap: 24px;
    align-items: start;
  }
  .sp-levy {
    position: sticky; top: 16px;
    display: flex; flex-direction: column; gap: 12px;
  }
  .sp-pravy { display: flex; flex-direction: column; gap: 12px; }
  /* první nadpis vpravo (Grafy) bez horního marginu – rozestup řeší gap */
  .sp-pravy > h2:first-child { margin-top: 0; }
}

/* === Detail noci (Spánek) – vystředěná hlavička + akce pod sebou === */
.sp-detail-head { text-align: center; padding: 4px 0 12px; }
.sp-detail-datum { font-size: 15px; margin: 0 0 8px; }
.sp-detail-skore { font-size: 52px; font-weight: 750; letter-spacing: -0.02em; line-height: 1; }
.sp-detail-skore-popis { margin-top: 4px; letter-spacing: 0.5px; }
.sp-detail-akce { display: flex; flex-direction: column; gap: 8px; margin-top: 18px; }
.sp-detail-akce .btn.danger { color: var(--danger); }
.sp-detail-akce .btn.danger .ic { color: var(--danger); }

/* === Přihlašovací obrazovka – vždy vystředěná přes celý viewport === */
/* Kryje celou obrazovku nezávisle na odsazení appky (boční lišta na PC,
 * padding #screen na mobilu), takže karta je symetricky uprostřed. */
.login-stranka {
  position: fixed; inset: 0; z-index: 5; box-sizing: border-box;
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
  padding-top: calc(24px + env(safe-area-inset-top, 0px));
  padding-bottom: calc(24px + env(safe-area-inset-bottom, 0px));
  overflow-y: auto; background: var(--bg);
}
.login-stranka .card { width: 100%; }
