/* Ekipa — styl Garmin Connect: ciemne tło, karty, niebieski akcent, kolory stref tętna.
   Separacja: tło → odstęp → typografia. Ramka tylko znacząca (dzień kluczowy/start, fokus pola). */
:root{
  --paper:#000;--card:#1C1C1E;--card2:#2A2A2D;--card3:#38383C;
  --ink:#fff;--ink2:#D6D6DA;--muted:#9A9AA0;
  --signal:#11A9ED;--signal-d:#0B8FCB;--signal-bg:rgba(17,169,237,.14);
  --race:#FF453A;--race-bg:rgba(255,69,58,.14);--ok:#6DC24B;--ok-bg:rgba(109,194,75,.15);--warn:#FF9F0A;--warn-bg:rgba(255,159,10,.14);
  /* strefy jak w Garmin Connect: Z1 szary, Z2 niebieski, Z3 zielony, Z4 pomarańcz, Z5 czerwony */
  --z1:#8E8E93;--z2:#11A9ED;--z3:#6DC24B;--z4:#FF9F0A;--z5:#FF453A;--zx:#BF5AF2;
  --r:14px;--r-s:10px;
  --f-display:"Roboto",system-ui,-apple-system,"Segoe UI",sans-serif;--f-prose:"Roboto",system-ui,sans-serif;
  --f-data:"Roboto Condensed","Roboto",system-ui,sans-serif;
  color-scheme:dark}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;background:var(--paper)}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--f-display);line-height:1.5;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
a{color:var(--signal)}
.wrap{max-width:860px;margin:0 auto;padding:0 clamp(16px,4vw,40px) 56px}

/* nagłówek i nawigacja */
.top{display:flex;align-items:center;gap:16px;padding:18px 0;position:sticky;top:0;z-index:20;background:rgba(0,0,0,.86);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.brand{font-family:var(--f-data);font-weight:700;font-size:22px;letter-spacing:.02em;color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:9px}
.brand::before{content:"";width:12px;height:12px;border-radius:50%;background:var(--signal);box-shadow:0 0 0 4px var(--signal-bg)}
.nav{margin-left:auto;display:flex;align-items:center;gap:4px}
.nav a,.link{font-family:var(--f-display);font-size:14px;font-weight:500;color:var(--muted);text-decoration:none;padding:8px 14px;background:none;border:0;cursor:pointer;border-radius:999px}
.nav a:hover,.link:hover{color:var(--ink)}
.nav a.on{color:var(--ink);background:var(--card2)}
.nav form{margin:0}
.card .link{color:var(--signal);padding-left:0;padding-right:0}

/* nagłówki */
.hero{padding:clamp(20px,5vw,44px) 0 clamp(16px,3vw,26px)}
.eyebrow,.k{font-family:var(--f-display);font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 10px}
h1{margin:0;font-size:clamp(38px,8vw,60px);font-weight:900;letter-spacing:-.025em;line-height:1}
h2{margin:0 0 8px;font-size:19px;font-weight:700;letter-spacing:-.005em}
.h1-s{font-size:clamp(30px,6vw,46px)}
.lead{font-size:clamp(16px,2vw,18px);max-width:52ch;margin:16px 0 0;color:var(--ink2)}
.sec{margin:36px 0 12px;font-size:13px;font-family:var(--f-display);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700}
.sec small{font-weight:400;letter-spacing:.02em;text-transform:none}

/* karty */
.card{background:var(--card);padding:20px 20px 22px;border-radius:var(--r)}
.card p{font-size:15.5px;line-height:1.55;margin:0 0 14px;color:var(--ink2)}
.card .k{font-size:12px;line-height:1.4;margin:0 0 12px;color:var(--muted)}
.card .k .oc{margin-left:4px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
.hint{font-size:13px!important;color:var(--muted)!important;margin:6px 0 0!important}
.ok{color:var(--ok);font-weight:600}
.err{color:var(--race);font-weight:600}
.prose{max-width:66ch}
.prose h2{margin-top:30px}
.prose p,.prose li{font-size:16.5px;line-height:1.62;color:var(--ink2)}

/* formularze — obrys pola dozwolony; tu: tło + niebieski fokus */
.form{max-width:440px;display:flex;flex-direction:column;gap:8px;margin-top:8px}
.form label,.fs label,.chips legend{font-size:12px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-top:8px}
input,select,textarea{font:inherit;font-size:16px;padding:12px 14px;background:var(--card2);border:1px solid transparent;color:var(--ink);width:100%;border-radius:var(--r-s)}
input::placeholder,textarea::placeholder{color:#6E6E73}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--signal);box-shadow:0 0 0 3px var(--signal-bg)}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 18px) 52%,calc(100% - 13px) 52%;background-size:5px 5px;background-repeat:no-repeat;padding-right:34px}
textarea{resize:vertical}
.btn{font:inherit;font-weight:700;font-size:15px;background:var(--signal);color:#fff;border:0;padding:13px 24px;cursor:pointer;margin-top:10px;align-self:flex-start;border-radius:999px}
.btn:hover{background:var(--signal-d)}
.btn:disabled{background:var(--card3);color:var(--muted);cursor:default}
a.btn{text-decoration:none;display:inline-block}
.pform{display:flex;flex-direction:column;gap:12px;margin-top:32px}
.pform .btn{align-self:flex-start}
.fs{display:flex;flex-direction:column;gap:6px}
.pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.pair>div,.trio>div{display:flex;flex-direction:column;gap:6px;min-width:0}
.duo{display:flex;gap:8px}.duo select{flex:1}.duo input{width:90px;flex:none}
.unit{position:relative}.unit span{position:absolute;right:14px;top:50%;transform:translateY(-50%);font-family:var(--f-data);font-size:14px;color:var(--muted)}
.chips{border:0;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px}
.chips legend{padding:0;margin-bottom:8px}
.chip{margin:0!important;cursor:pointer}
.chip input{position:absolute;opacity:0;width:1px;height:1px}
.chip span{display:inline-block;min-width:52px;text-align:center;padding:10px 14px;background:var(--card2);font-family:var(--f-data);font-size:14px;color:var(--ink);border-radius:999px}
.chip input:checked+span{background:var(--signal);color:#fff}
.chip input:focus-visible+span{box-shadow:0 0 0 3px var(--signal-bg)}

/* listy */
.list{display:flex;flex-direction:column;gap:2px;margin-bottom:28px;border-radius:var(--r);overflow:hidden}
.row{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;background:var(--card);padding:14px 16px}
.row strong{font-size:16px}
.row .sub{display:block;font-size:13px;color:var(--muted)}
.row .meta{font-family:var(--f-data);font-size:13px;color:var(--muted)}
.row form{margin:0}
.tag{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--signal);background:var(--signal-bg);padding:2px 7px;border-radius:999px;margin-left:6px}
.linkbox{margin-bottom:22px;background:var(--signal-bg)}
.linkbox input{font-family:var(--f-data);font-size:14px}
.foot{margin-top:56px;display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted)}
.foot a{color:var(--muted)}

/* K3 treningi — lista aktywności jak w Connect */
.trs{display:flex;flex-direction:column;gap:2px;border-radius:var(--r);overflow:hidden}
.tr{display:grid;grid-template-columns:92px 1fr 84px 84px 76px;gap:12px;align-items:center;background:var(--card);padding:14px 16px;color:var(--ink);text-decoration:none}
.tr:hover{background:var(--card2)}
.tr-d{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.tr-n{font-weight:700;font-size:15.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tr-n small{display:block;font-weight:400;font-size:12px;color:var(--muted)}
.tr-v{font-family:var(--f-data);font-size:12px;color:var(--muted);text-align:right;white-space:nowrap}
.tr-v b{font-size:17px;color:var(--ink);font-weight:700}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px}
.stat{background:var(--card);padding:16px 18px;border-radius:var(--r)}
.stat .k{margin:0 0 4px;font-size:11.5px}
.stat .v{margin:0;font-family:var(--f-data);font-size:32px;font-weight:700;letter-spacing:-.01em;line-height:1.1}
.stat .v small{font-size:14px;font-weight:400;color:var(--muted);margin-left:2px}
.stat .s{margin:6px 0 0;font-size:12.5px;color:var(--muted)}
.stat .s .ok{color:var(--ok)}.stat .s .sig{color:var(--signal);font-weight:700}.stat .s .warn{color:var(--warn);font-weight:700}.stat .s .err{color:var(--race)}
.laps{display:flex;flex-direction:column;gap:2px;font-family:var(--f-data);font-size:15px;border-radius:var(--r);overflow:hidden}
.lap{display:grid;grid-template-columns:36px repeat(4,1fr);gap:10px;background:var(--card);padding:10px 14px;text-align:right}
.lap span:first-child{text-align:left;color:var(--muted)}
.lap small{color:var(--muted)}
.lap-h{background:var(--card2);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding-top:8px;padding-bottom:8px}
.zones .lap{grid-template-columns:36px 1fr auto;text-align:left;position:relative}
.zones .lap span:last-child{text-align:right}
.zones .lap span:first-child{color:var(--signal)}
.zones.hr .lap:nth-child(1) span:first-child{color:var(--z1)}.zones.hr .lap:nth-child(2) span:first-child{color:var(--z2)}
.zones.hr .lap:nth-child(3) span:first-child{color:var(--z3)}.zones.hr .lap:nth-child(4) span:first-child{color:var(--z4)}
.zones.hr .lap:nth-child(5) span:first-child{color:var(--z5)}
.zones .lap span:first-child{font-weight:700}

/* K5 plan — kalendarz treningów */
.plan .week{margin-top:clamp(30px,5vw,48px)}
.week-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;padding-bottom:10px}
.week-head .n{font-size:clamp(22px,4vw,30px);font-weight:900;letter-spacing:-.015em;line-height:1}
.week-head .dates{font-size:13px;color:var(--muted)}
.week-head .vol{margin-left:auto;font-family:var(--f-data);font-size:13px;color:var(--muted)}
.week-head .vol b{color:var(--ink);font-size:16px}
.week-aim{font-size:15px;color:var(--muted);margin:0 0 12px}
.week-head+.day,.week-aim+.day{border-top-left-radius:var(--r);border-top-right-radius:var(--r)}
.week .day:last-child{border-bottom-left-radius:var(--r);border-bottom-right-radius:var(--r)}
.day{display:grid;grid-template-columns:62px 46px 1fr auto;gap:14px;align-items:start;padding:14px 16px 15px 14px;background:var(--card);margin-bottom:2px;border-left:3px solid transparent;position:relative}
.day .date{font-family:var(--f-data);font-size:13px;color:var(--muted);white-space:nowrap;padding-top:2px}
.day .date b{display:block;color:var(--ink);font-size:12px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:1px}
.zone{font-family:var(--f-data);font-size:12px;font-weight:700;padding:5px 0;text-align:center;color:var(--z1);background:var(--card2);margin-top:1px;border-radius:999px}
.zone.z-E,.zone.z-L{color:var(--z2);background:rgba(17,169,237,.16)}
.zone.z-MP{color:var(--z3);background:rgba(109,194,75,.16)}
.zone.z-T{color:var(--z4);background:rgba(255,159,10,.16)}
.zone.z-I,.zone.z-R{color:var(--z5);background:rgba(255,69,58,.16)}
.zone.z-X{color:var(--zx);background:rgba(191,90,242,.16)}
.day .body{min-width:0}
.day .body strong{display:block;font-size:16px;font-weight:700;margin-bottom:3px}
.day .body strong .sila{font-size:12px;font-weight:400;color:var(--muted)}
.day .body span{font-size:14.5px;color:var(--ink2);line-height:1.5;display:block}
.day .body .odc,.day .body .cel{font-family:var(--f-data);font-size:13px;color:var(--ink);margin-top:6px}
.day .body .cel{color:var(--muted)}
.day .body .ztr{font-family:var(--f-data);font-size:12.5px;color:var(--signal);margin-top:6px}
.day .body .oc{display:inline;font-size:10.5px;line-height:1.4;margin-left:6px;vertical-align:1px}
.day .done{display:block;margin-top:8px;font-family:var(--f-data);font-size:13px;color:var(--ink);text-decoration:none;background:var(--card2);padding:7px 11px;border-radius:var(--r-s)}
.day .done:hover,.day.today .done{background:var(--card3)}
.day .zmien{display:inline-block;margin-top:8px;font-size:12.5px;font-weight:500;color:var(--signal);text-decoration:none}
.day .dist{font-family:var(--f-data);font-size:17px;font-weight:700;white-space:nowrap;text-align:right;padding-top:1px}
.day.key{border-left-color:var(--signal)}
.day.key .body strong{color:var(--ink)}
.day.off{background:#121214}
.day.off .body strong{color:var(--muted);font-weight:500}
.day.race{border-left-color:var(--race);background:linear-gradient(90deg,rgba(255,69,58,.16),var(--card) 70%)}
.day.race .zone{background:var(--race);color:#fff}
.day.race .body strong{color:var(--race);font-size:19px;text-transform:uppercase;letter-spacing:.01em}
.day.today{padding-top:30px;background:var(--card2)}
.day.today::after{content:"DZIŚ";position:absolute;left:14px;top:9px;background:var(--signal);color:#fff;font-size:10px;font-weight:700;letter-spacing:.08em;padding:2px 8px;border-radius:999px}
.oc{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 8px;background:var(--card3);color:var(--ink2);white-space:nowrap;border-radius:999px}
.oc.ok{background:var(--ok-bg);color:var(--ok)}.oc.warn{background:var(--warn-bg);color:var(--warn)}.oc.sig{background:var(--signal-bg);color:var(--signal)}
.zasady{margin:0;padding-left:18px;font-size:15px;line-height:1.55;color:var(--ink2)}
.zasady li{margin-bottom:6px}
.warnbox{background:var(--warn-bg)}
.warnbox p{color:var(--ink)}

/* K6 przegląd tygodnia + czat z trenerem */
.przeglad{margin:12px 0 16px}
.przeglad .sumy,.msg .sumy{font-family:var(--f-data);font-size:13.5px;color:var(--ink);background:var(--card2);padding:7px 12px;display:inline-block;margin:0 0 14px;border-radius:var(--r-s)}
.zmiany{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:2px;border-radius:var(--r-s);overflow:hidden}
.zmiany li{display:grid;grid-template-columns:76px 1fr;gap:10px;background:var(--card2);padding:10px 12px;font-size:14px;line-height:1.45}
.zmiany .zd{font-family:var(--f-data);font-size:13px;color:var(--muted);text-transform:uppercase;padding-top:1px}
.zmiany s{color:var(--muted);text-decoration-thickness:1px}
.zmiany b{color:var(--signal)}
.zmiany small:not(.oc){display:block;font-size:13.5px;color:var(--ink2);margin-top:2px}
.zmiany li.zg{opacity:.55}.zmiany li.zg b{color:var(--ink)}
.warnlist{margin:0 0 14px;color:var(--warn)}
.akcje{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px}
.akcje form{margin:0}.akcje .link{padding-left:0;color:var(--signal)}
.akcje .btn{margin-top:0}
.czat{display:flex;flex-direction:column;gap:10px;margin-bottom:22px}
.msg{max-width:min(620px,92%);padding:13px 16px 10px;border-radius:18px}
.msg p{font-size:15.5px;line-height:1.55;margin:0 0 10px}
.msg .k{font-size:11px;line-height:1.4;margin:0 0 8px;color:var(--muted)}
.msg time{display:block;font-size:11px;color:var(--muted)}
.msg.od{background:var(--card);align-self:flex-start;border-bottom-left-radius:6px}
.msg.ja{background:var(--signal);color:#fff;align-self:flex-end;border-bottom-right-radius:6px}
.msg.ja time,.msg.ja .k{color:rgba(255,255,255,.75)}
.msg.ja time{text-align:right}
.msg.pisze p{color:var(--muted);font-style:italic}
.msg.blad p{color:var(--race)}
.msg .akcje{margin:4px 0 10px}
.czat-form{display:flex;flex-direction:column;gap:8px;background:var(--card);padding:14px 16px 16px;position:sticky;bottom:0;border-radius:var(--r);box-shadow:0 -12px 28px -8px #000}
.czat-form .k{margin:0}
.czat-form .btn{margin-top:2px}

/* telefon: dolny pasek zakładek jak w aplikacji Connect */
@media(max-width:560px){
  .wrap{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
  .top{padding:14px 0;position:static;background:none;-webkit-backdrop-filter:none;backdrop-filter:none}
  .nav{position:fixed;left:0;right:0;bottom:0;z-index:30;margin:0;justify-content:space-around;gap:0;background:rgba(20,20,22,.94);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);padding:6px 4px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -1px 0 rgba(255,255,255,.06)}
  .nav a,.nav .link{flex:1;text-align:center;font-size:11.5px;padding:10px 2px;border-radius:var(--r-s)}
  .nav a.on{background:none;color:var(--signal)}
  .nav a.on::before{content:"";display:block;width:22px;height:3px;border-radius:2px;background:var(--signal);margin:-6px auto 7px}
  .nav form{flex:1;display:flex}
  .row{grid-template-columns:1fr auto}.row .meta{display:none}
  .tr{grid-template-columns:1fr auto auto;row-gap:2px}.tr-d{grid-column:1/-1}.tr-hr{display:none}
  .lap{font-size:14px;gap:6px;padding:10px}
  .pair{grid-template-columns:1fr}.trio{gap:8px}.chip span{min-width:42px;padding:10px 10px}
  .day{grid-template-columns:54px 1fr;grid-template-rows:auto 1fr;gap:8px 12px;padding-left:11px;padding-right:12px}
  .day .zone{grid-column:1;grid-row:2;margin-top:4px;align-self:start}
  .day .body{grid-column:2;grid-row:1/span 2}
  .day .dist{grid-column:2;grid-row:3;text-align:left;padding-top:0}
  .day.today::after{left:11px}
  .zmiany li{grid-template-columns:1fr;gap:2px}
  .msg{max-width:100%}
  .czat-form{bottom:calc(64px + env(safe-area-inset-bottom));margin:0 -4px}
}

/* logowanie numerem: kod z SMS-a + telefon w Ekipie */
input.kod{font-family:var(--f-data);font-size:30px;font-weight:700;letter-spacing:.35em;text-align:center;padding:14px 10px}
input.kod::placeholder{letter-spacing:.3em}
.row-akcje{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.row-akcje form{margin:0}
details.tel summary{list-style:none;padding:6px 0}
details.tel summary::-webkit-details-marker{display:none}
details.tel[open] summary{color:var(--ink)}
.tel-form{display:flex;gap:6px;align-items:center;margin-top:4px}
.tel-form input{width:150px;padding:9px 12px;font-size:15px}
.tel-form .btn{margin:0;padding:9px 16px;font-size:14px}
.row .link{color:var(--signal);padding:6px 0}
@media(max-width:560px){.row-akcje{grid-column:1/-1;align-items:flex-start}.tel-form input{flex:1;width:auto}}
/* K7: kroki na zegarek */
.day .body .akcje{display:flex;flex-wrap:wrap;gap:4px 16px}
.kroki{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.kroki .krok{display:grid;grid-template-columns:28px 1fr auto;gap:12px;align-items:center;background:var(--card2);padding:11px 14px;border-radius:var(--r-s);position:relative;overflow:hidden}
.kroki .krok::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--z2)}
.kroki .k-WARMUP::before,.kroki .k-COOLDOWN::before{background:var(--z1)}
.kroki .k-RECOVERY::before{background:var(--card3)}
.kroki .k-ACTIVE::before{background:var(--signal)}
.kroki .nr{font-family:var(--f-data);font-size:13px;color:var(--muted);text-align:center}
.kroki .krok b{display:block;font-size:15px}
.kroki .krok div span{font-family:var(--f-data);font-size:14px;color:var(--ink2)}
.kroki .krok small{font-family:var(--f-data);font-size:12.5px;color:var(--muted);text-align:right}
.kroki .k-ACTIVE small{color:var(--signal)}
.kroki .powt{background:var(--card);padding:10px 0 4px}
.kroki .powt .k{margin:0 0 8px;font-family:var(--f-data);font-size:13px;color:var(--ink);text-transform:uppercase;letter-spacing:.06em}
.kroki .powt .kroki{padding-left:14px}
@media (max-width:520px){.kroki .krok{grid-template-columns:22px 1fr}.kroki .krok small{grid-column:2;text-align:left}}
/* K8: tydzień ekipy */
.tyg-nav{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:baseline;margin:-4px 0 12px}
.tyg-nav .hint{margin:0!important}
.legenda{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font-size:12.5px;color:var(--muted);margin-bottom:12px}
.legenda .dz{width:24px;height:24px;margin-left:6px}
.legenda .dz:first-child{margin-left:0}
.osoby{display:grid;gap:8px;margin-bottom:12px}
.os{display:grid;grid-template-columns:1fr auto;gap:10px 14px;background:var(--card);padding:16px;border-radius:var(--r);position:relative;overflow:hidden}
.os::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:transparent}
.os.uwaga::before{background:var(--warn)}.os.alarm::before{background:var(--race)}
.os-head strong{font-size:17px;display:block}
.os-head .sub{display:block;font-size:13px;color:var(--muted);margin-top:2px}
.os-km{text-align:right;font-family:var(--f-data);white-space:nowrap}
.os-km b{font-size:22px}.os-km small{font-size:13px;color:var(--muted);margin-left:4px}
.tyg{grid-column:1/-1;display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.tyg a{text-decoration:none;color:inherit}
.dz{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;height:46px;background:var(--card2);border-radius:var(--r-s);font-family:var(--f-data)}
.dz b{font-size:10.5px;font-weight:400;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
.dz i{font-style:normal;font-size:14px;font-weight:700;color:var(--muted)}
.dz.st-zrobione{background:var(--ok-bg)}.dz.st-zrobione i{color:var(--ok)}
.dz.st-opuszczone{background:var(--race-bg)}.dz.st-opuszczone i{color:var(--race)}
.dz.st-przyszle i,.dz.st-dzis i{color:var(--ink)}
.dz.st-extra{background:var(--signal-bg)}.dz.st-extra i{color:var(--signal)}
.dz.st-wolne{background:#121214}
.dz.teraz{box-shadow:inset 0 0 0 2px var(--signal)}
.alarmy{grid-column:1/-1;list-style:none;margin:0;padding:0;display:grid;gap:4px}
.alarmy li{font-size:13.5px;padding:7px 11px;border-radius:var(--r-s);background:var(--warn-bg);color:var(--warn)}
.alarmy li.err{background:var(--race-bg);color:var(--race)}
.os-linki{grid-column:1/-1}.os-linki:empty{display:none}

/* realizacja planu (/postep) — wynik 0–100: kolor stanu + słowo, nigdy sam kolor */
.pkt{font-family:var(--f-data);font-weight:700;font-size:15px;padding:2px 9px;border-radius:999px;background:var(--card3);color:var(--ink)}
.pkt.ok{background:var(--ok-bg);color:var(--ok)}.pkt.warn{background:var(--warn-bg);color:var(--warn)}.pkt.bad{background:var(--race-bg);color:var(--race)}
.pkt.big{font-size:22px;padding:2px 12px}
.oc.bad{background:var(--race-bg);color:var(--race)}
.day.rz .body .rz-oc{font-family:var(--f-data);font-size:13px;color:var(--muted);margin-top:4px}
.day.rz .body .rz-oc .oc{margin:0 6px 0 0}
.rz-wn ul{margin:0;padding:0;list-style:none}
.rz-wn li{font-size:15px;color:var(--ink2);padding:6px 0 6px 18px;position:relative;line-height:1.45}
.rz-wn li::before{content:"";position:absolute;left:0;top:13px;width:8px;height:8px;border-radius:50%;background:var(--muted)}
.rz-wn li.w-ok::before{background:var(--ok)}.rz-wn li.w-warn::before{background:var(--warn)}
.stats+.card{margin-top:12px}
.rz-chart{background:var(--card);border-radius:var(--r);padding:14px 16px;display:flex;flex-direction:column;gap:2px;margin-bottom:28px}
.rz-bar{display:grid;grid-template-columns:52px 1fr 92px 84px;gap:12px;align-items:center;padding:6px 0}
.rz-bar:hover{background:var(--card2);border-radius:var(--r-s)}
.rz-n{font-family:var(--f-data);font-weight:700;font-size:14px}
.rz-n small{display:block;font-weight:400;font-size:11px;color:var(--muted)}
.rz-tor{height:10px;background:var(--card2);border-radius:5px;overflow:hidden}
.rz-fill{display:block;height:100%;border-radius:5px;background:var(--muted)}
.rz-fill.ok{background:var(--ok)}.rz-fill.warn{background:var(--warn)}.rz-fill.bad{background:var(--race)}
.rz-v{font-family:var(--f-data);font-size:13px;color:var(--muted)}.rz-v b{color:var(--ink);font-size:16px}
.rz-km{font-family:var(--f-data);font-size:14px;text-align:right}.rz-km small{color:var(--muted)}
@media(max-width:560px){.rz-bar{grid-template-columns:40px 1fr 74px;gap:8px}.rz-km{display:none}}

/* plan: zwinięte tygodnie, filtry, kalendarz (22.10) */
.day[hidden],details.week[hidden],.week-aim[hidden],.cal[hidden],.plan[hidden]{display:none}
details.week>summary{list-style:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
details.week>summary::-webkit-details-marker{display:none}
.week-head .chev{width:18px;height:18px;flex:none;fill:none;stroke:var(--muted);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;align-self:center;transition:transform .2s}
details.week[open]>summary .chev{transform:rotate(180deg)}
.week-head .wk-sum{font-family:var(--f-data);font-size:13px;color:var(--muted);display:inline-flex;align-items:center;gap:8px}
.week-head .wk-sum .oc{font-size:11px}
.plan .week.closed{margin-top:8px}
.plan .week.closed:first-child{margin-top:clamp(30px,5vw,48px)}
.plan .week.closed+.week:not(.closed){margin-top:clamp(30px,5vw,48px)}
.week.closed>summary{background:var(--card);padding:14px 16px;border-radius:var(--r);align-items:center}
.week.closed>summary:hover{background:var(--card2)}
.week.closed>summary .n{font-size:18px}
.week.closed[open]>summary{border-radius:var(--r) var(--r) 0 0;margin-bottom:2px}
.week.closed[open]>.week-head+.day,.week.closed[open]>.week-aim+.day{border-radius:0}
.week.closed>.week-aim{background:var(--card);margin:0 0 2px;padding:0 16px 12px}
.day.flash{animation:flash 1.6s ease-out}
@keyframes flash{0%,30%{background:var(--signal-bg)}}

.plan-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:28px}
.seg{display:inline-flex;background:var(--card);padding:3px;border-radius:999px;flex:none}
.seg button,.filtry button{font-family:var(--f-display);font-size:13.5px;font-weight:500;border:0;cursor:pointer;border-radius:999px;white-space:nowrap}
.seg button{background:none;color:var(--muted);padding:8px 16px}
.seg button.on{background:var(--card3);color:var(--ink)}
.filtry{display:flex;flex-wrap:wrap;gap:6px;min-width:0;flex:1 1 320px}
.filtry::-webkit-scrollbar{display:none}
.filtry button{background:var(--card2);color:var(--ink2);padding:8px 13px;flex:none}
.filtry button:hover{color:var(--ink)}
.filtry button.on{background:var(--signal);color:#fff}
.seg button:focus-visible,.filtry button:focus-visible{outline:2px solid var(--signal);outline-offset:2px}
.filtr-pusto{margin-top:24px}

.cal-month{margin-top:clamp(28px,5vw,44px)}
.cal-h{font-size:clamp(20px,3.6vw,26px);font-weight:900;letter-spacing:-.01em;margin:0 0 12px;text-transform:capitalize}
.cal-h small{font-size:14px;font-weight:400;color:var(--muted);text-transform:none}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}
.cal-dow{font-family:var(--f-data);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:0 8px 6px}
.cal-day{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:5px;min-height:92px;padding:8px;background:var(--card);border-radius:var(--r-s);text-decoration:none;color:var(--ink);min-width:0}
a.cal-day:hover{background:var(--card2)}
.cal-day b{font-family:var(--f-data);font-size:13px;font-weight:700;color:var(--ink2)}
.cal-day.out{background:none;min-height:0;padding-top:2px;padding-bottom:2px}.cal-day.out b{color:var(--card3)}
.cal-day.off{background:#121214}
.cal-day.past b{color:var(--muted)}
.cal-day .zone{font-size:11px;padding:2px 8px;margin:0}
.cal-row{display:flex;align-items:center;gap:8px}
.cal-km{font-family:var(--f-data);font-size:15px;font-weight:700;line-height:1}
.cal-day.miss .cal-km{text-decoration:line-through;color:var(--muted)}
.cal-t{font-size:12px;line-height:1.3;color:var(--muted);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}
.cal-st{position:absolute;top:10px;right:9px;width:8px;height:8px;border-radius:50%;background:var(--muted)}
.cal-st.ok{background:var(--ok)}.cal-st.warn{background:var(--warn)}.cal-st.sig{background:var(--signal)}
.cal-day.today{background:var(--card2);box-shadow:inset 0 0 0 2px var(--signal)}
.cal-day.today b{color:var(--signal)}
.cal-day.race{background:linear-gradient(160deg,rgba(255,69,58,.22),var(--card) 80%)}
.cal-day.race .zone{background:var(--race);color:#fff}
.cal-day.dim{opacity:.22}
.cal-leg{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:16px;font-family:var(--f-data);font-size:12.5px;color:var(--muted)}
.cal-leg i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:1px}
@media(max-width:560px){
  .plan-bar{gap:10px}.filtry{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;flex-basis:100%;margin:0 -16px;padding:0 16px}
  .week.closed>summary{padding:12px 13px;gap:4px 10px}
  .week.closed>summary .wk-sum{order:5;flex-basis:100%}
  .cal-grid{gap:2px}.cal-dow{padding:0 0 4px;text-align:center;font-size:10.5px}
  .cal-day{min-height:62px;padding:5px 3px;align-items:center;gap:3px;border-radius:8px}
  .cal-day b{font-size:11.5px}
  .cal-day .zone{font-size:9.5px;padding:1px 5px}
  .cal-km{font-size:12.5px}
  .cal-t{display:none}.cal-row{flex-direction:column;gap:3px}
  .cal-st{top:5px;right:4px;width:6px;height:6px}
}

/* plan: zrobione treningi wyraźnie (kolor wg oceny), 23.10 */
.day .done{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;font-size:13.5px;padding:8px 12px}
.day .done .done-t{font-weight:700}
.day .done .oc{margin:0 0 0 auto!important}
.ico-done{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.day .done.ok{background:rgba(109,194,75,.22)}.day .done.ok .ico-done{color:var(--ok)}
.day .done.sig{background:rgba(17,169,237,.2)}.day .done.sig .ico-done{color:var(--signal)}
.day .done.warn{background:rgba(255,159,10,.2)}.day .done.warn .ico-done{color:var(--warn)}
.day .done.neu{background:var(--card3)}.day .done.neu .ico-done{color:var(--ink2)}
.day .done.ok:hover{background:rgba(109,194,75,.3)}.day .done.sig:hover{background:rgba(17,169,237,.28)}.day .done.warn:hover{background:rgba(255,159,10,.28)}
