
:root{
  --bg:#f5f8fb;
  --surface:#ffffff;
  --surface-2:#f8fafc;
  --text:#152238;
  --muted:#7f8da1;
  --line:#e4eaf1;
  --line2:#d7e0e9;
  --nav:#102033;
  --nav2:#15314a;
  --green:#1fb86a;
  --green-dark:#0f8750;
  --green-soft:#e9f8f0;
  --red:#e56a74;
  --red-soft:#fff1f3;
  --shadow:0 8px 24px rgba(22,34,51,.055);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,"Segoe UI",Arial,sans-serif;font-size:14px}
a{text-decoration:none;color:inherit}
button,input,select,textarea{font:inherit}

.app-shell{min-height:100vh}
.sidebar{position:fixed;inset:0 auto 0 0;width:228px;padding:20px 14px;background:linear-gradient(180deg,var(--nav),#13243a);color:white;display:flex;flex-direction:column;z-index:30}
.brand{display:flex;align-items:center;gap:10px}
.brand-mark{width:36px;height:36px;border-radius:11px;background:var(--green);display:grid;place-items:center;font-weight:900}
.brand-copy{display:flex;flex-direction:column}.brand-copy b{font-size:16px}.brand-copy small{font-size:10px;color:#8fa2b8}
.sidebar-nav{display:grid;gap:5px;margin-top:25px}
.sidebar-nav a{display:flex;gap:10px;align-items:center;padding:11px 12px;border-radius:10px;color:#cad6e4;font-weight:650}
.sidebar-nav a.active,.sidebar-nav a:hover{background:rgba(31,184,106,.16);color:#fff}
.nav-icon{width:18px;text-align:center}
.sidebar-card{margin-top:22px;padding:13px;border:1px solid rgba(255,255,255,.08);border-radius:12px;background:rgba(255,255,255,.035)}
.sidebar-card-title{font-size:11px;font-weight:800}.sidebar-card-text{margin-top:4px;color:#9eacc0;font-size:10px;line-height:1.45}
.sidebar-card-button{display:block;margin-top:10px;padding:8px;background:rgba(31,184,106,.17);border-radius:8px;text-align:center;color:#dff7e9;font-size:11px;font-weight:800}
.sidebar-footer{margin-top:auto;padding-top:14px;border-top:1px solid rgba(255,255,255,.08);display:flex;align-items:center;justify-content:space-between}
.user-badge{display:flex;gap:8px;align-items:center}.user-avatar{width:30px;height:30px;border-radius:50%;background:#21354d;display:grid;place-items:center;font-size:11px;font-weight:800}
.user-copy{display:flex;flex-direction:column}.user-copy b{font-size:11px}.user-copy small{font-size:9px;color:#8fa2b8}.logout-link{color:#93a3b8}

.content{margin-left:228px;min-height:100vh}
.topbar{min-height:78px;padding:15px 28px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20}
.eyebrow{font-size:9px;letter-spacing:.16em;color:#96a1b0;font-weight:800}.topbar h1{margin:4px 0 0;font-size:25px}
.topbar-actions{display:flex;gap:8px;align-items:center}
.page-wrap{padding:24px 28px 40px;max-width:1900px;margin:auto}

.button{min-height:40px;padding:9px 14px;border-radius:9px;border:1px solid var(--line2);background:#fff;font-weight:800;cursor:pointer}
.button-primary{background:var(--green);color:#fff;border-color:var(--green)}
.button-secondary{background:#fff;color:#344054}
.button-danger-ghost{background:#fff;color:#d75c67;border-color:#f0cdd1}

.section-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:14px}
.section-head h2{margin:0;font-size:22px}.section-head p{margin:4px 0 0;color:var(--muted);font-size:12px}

.panel{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:18px}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.panel-head h3{margin:0;font-size:15px}

.year-inline-switch{display:flex;align-items:center;gap:7px}.year-inline-switch a,.year-inline-switch b{height:36px;min-width:36px;padding:0 10px;border:1px solid var(--line2);border-radius:8px;background:#fff;display:grid;place-items:center}.year-inline-switch b{background:#f8fafc}

.metric-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
.metric-tile{min-height:102px;padding:15px;border:1px solid var(--line);border-radius:13px;background:#fff;display:flex;align-items:center;gap:13px;box-shadow:var(--shadow)}
.metric-icon{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;font-weight:900}.metric-icon.green{background:#eaf8f1;color:#178850}.metric-icon.cyan{background:#e8f8fb;color:#209eb4}.metric-icon.blue{background:#eef6ff;color:#4089d9}.metric-icon.orange{background:#fff5e8;color:#ef9b27}
.metric-tile span{display:block;color:#7f8da1;font-size:11px}.metric-tile strong{display:block;font-size:28px;line-height:1;margin:5px 0 3px}.metric-tile small{color:#a0aab7;font-size:10px}

.overview-grid{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:14px;margin-bottom:14px}
.activity-panel{min-width:0}.mini-legend{display:flex;align-items:center;gap:4px;color:#9aa5b2;font-size:9px}.mini-legend i{width:11px;height:11px;border-radius:3px;background:#edf2f5}.mini-legend .l1{background:#cdeedc}.mini-legend .l2{background:#90dbb3}.mini-legend .l3{background:#45c37e}.mini-legend .l4{background:#178a51}
.heatmap-months{display:grid;grid-template-columns:repeat(12,1fr);font-size:9px;color:#9aa4b0;margin:0 0 6px 2px;max-width:780px}
.heatmap{display:flex;gap:4px}.heat-week{display:grid;grid-template-rows:repeat(7,12px);gap:4px}.heat-cell{width:12px;height:12px;border-radius:3px;background:#edf2f5}.heat-cell.level-1{background:#cdeedc}.heat-cell.level-2{background:#8bd9af}.heat-cell.level-3{background:#44c27d}.heat-cell.level-4{background:#178950}.heat-cell.rest{background:#f8c7ce}.heat-cell.outside{opacity:.18}
.year-summary-card h3{margin:0 0 15px;font-size:15px}.summary-list{display:grid}.summary-list div{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid #edf1f4}.summary-list div:last-child{border-bottom:0}.summary-list span{color:#7e8a9a;font-size:10.5px}.summary-list b{font-size:11.5px}
.recent-cards-panel{margin-bottom:14px}.recent-cards-panel .panel-head a{font-size:10.5px;color:var(--green-dark);font-weight:800}
.recent-mini-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:9px}.recent-mini-card{padding:11px;border:1px solid #edf1f4;border-radius:10px;background:#fafcfd;display:grid;grid-template-columns:48px 1fr;gap:10px}.recent-mini-date{display:flex;flex-direction:column;align-items:center;border-right:1px solid #edf1f4}.recent-mini-date b{font-size:20px}.recent-mini-date span{font-size:9px;color:#9aa4b2}.recent-mini-info{display:flex;flex-direction:column;gap:3px}.recent-mini-info strong{font-size:11px}.recent-mini-info span{font-size:9.5px;color:#7f8a99}

.calendar-toolbar,.calendar-toolbar-readable{display:grid;grid-template-columns:42px 1fr 42px;align-items:center;gap:10px;margin-bottom:12px}.calendar-title{text-align:center}.calendar-title h2{margin:3px 0;font-size:22px}.calendar-title p{margin:0;color:#8c98a8;font-size:11px}
.icon-button-lg{width:38px;height:38px;border:1px solid var(--line2);border-radius:9px;background:#fff;display:grid;place-items:center;font-size:18px}
.calendar-panel,.calendar-panel-readable{padding:14px}.calendar-weekdays,.calendar-weekdays-readable,.month-grid,.month-grid-readable{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.calendar-weekdays div,.calendar-weekdays-readable div{padding:5px 7px;font-size:10px;color:#8390a2;font-weight:800}
.calendar-day,.calendar-day-readable{min-height:220px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:9px;display:flex;flex-direction:column}.calendar-day.outside{opacity:.22;background:#fafbfd}.calendar-day.today{border:2px solid var(--green)}.calendar-day.rest{background:#fff7f8}.calendar-day.trained{background:#f8fdf9}
.calendar-day-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px}.calendar-day-number{font-weight:850;font-size:12px}.status-badge{padding:4px 7px;border-radius:999px;font-size:8px;font-weight:850}.status-success{background:var(--green-soft);color:var(--green-dark)}.status-rest{background:var(--red-soft);color:#c35b66}
.calendar-exercise-line{padding:6px 7px;border:1px solid #e8edf2;border-radius:8px;background:#f8fafc;margin-bottom:5px}.calendar-exercise-title-readable{font-size:10.5px;font-weight:800;line-height:1.2}.calendar-exercise-meta-readable{font-size:9.5px;color:#7c8999;margin-top:2px}.calendar-exercise-meta-readable b{color:var(--green-dark)}.calendar-footer-readable{margin-top:auto;padding-top:6px;border-top:1px solid #edf1f4;color:#7d8998;font-size:8.5px;display:flex;gap:6px}
.calendar-rest-readable{margin:auto;text-align:center;color:#c35b66}.rest-day-mark{font-size:8px;letter-spacing:.12em}.rest-day-title{font-size:13px;font-weight:850;margin-top:4px}.rest-day-subtitle{font-size:8.5px;color:#d48a92;margin-top:3px}

.workout-summary-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.workout-summary-bar>div{display:flex;gap:10px;align-items:center}.status-pill{padding:5px 8px;background:var(--green-soft);color:var(--green-dark);border-radius:999px;font-size:9px;font-weight:800}.workout-note{font-size:10.5px;color:#7e8998}
.workout-panel{padding:16px}.exercise-list{display:grid;gap:9px}.exercise-row-card{padding:11px;border:1px solid var(--line);border-radius:10px;background:#fbfcfd}.exercise-grid{display:grid;grid-template-columns:minmax(280px,2fr) 85px minmax(330px,2.3fr) 85px minmax(180px,1.3fr) 34px;gap:9px;align-items:start}
.field-block{display:flex;flex-direction:column;gap:5px;font-size:9.5px;color:#758295;font-weight:800}.input{min-height:36px;border:1px solid var(--line2);border-radius:8px;background:#fff;padding:7px 9px;color:#263246}
.previous-result{margin-top:5px;font-size:8.5px;color:#8b96a5}.sets-editor{display:flex;flex-wrap:wrap;gap:6px}.set-box{display:grid;grid-template-columns:18px 44px 14px;gap:3px;align-items:center}.set-number{width:18px;height:18px;border-radius:5px;background:var(--green-soft);color:var(--green-dark);display:grid;place-items:center;font-size:8px;font-weight:800}.set-reps{width:44px!important;min-height:36px!important;text-align:center;padding:5px!important}.remove-set{border:0;background:transparent;color:#a9b2bf}.text-button{border:0;background:transparent;color:var(--green-dark);font-size:9px;font-weight:800;padding:3px 0}.remove-exercise-button{margin-top:20px;width:32px;height:32px;border:1px solid #f0cfd3;border-radius:8px;background:#fff;color:#df6972}
.workout-actions{display:flex;justify-content:space-between;margin-top:12px}

.exercise-toolbar{display:flex;gap:8px;margin-bottom:10px}.search-input{max-width:340px}.filter-select{max-width:180px}
.exercise-table td{font-size:11px}.exercise-table th{font-size:9px}.exercise-name-cell{display:flex;align-items:center;gap:7px}.exercise-dot{width:7px;height:7px;border-radius:50%;background:var(--green)}
.row-actions{display:flex;gap:7px;justify-content:flex-end}.table-action{border:0;background:transparent;font-size:9.5px;color:#536173;font-weight:800}.table-action.danger{color:#df6670}

.stats-tabs{display:flex;gap:18px;margin-bottom:14px;border-bottom:1px solid var(--line)}.stats-tabs button{border:0;background:transparent;padding:0 0 10px;color:#8894a4;font-weight:700}.stats-tabs button.active{color:#223044;border-bottom:2px solid var(--green)}
.metric-grid.compact{display:grid;grid-template-columns:repeat(2,160px);gap:10px;margin-bottom:12px}.metric-card{padding:13px;border:1px solid var(--line);border-radius:11px;background:#fff}.metric-label{font-size:9.5px;color:#7e8998}.metric-card strong{display:block;font-size:24px;margin-top:4px}
.two-column-layout{display:grid;grid-template-columns:1.15fr .85fr;gap:14px}.max-weight-item{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid #edf1f4}.max-weight-name{font-size:10.5px;font-weight:800}.max-weight-date{font-size:8.5px;color:#96a0ad}.max-weight-value{color:var(--green-dark);font-size:17px;font-weight:900}.max-weight-value span{font-size:8.5px;color:#8b95a2}
.chart-wrap{min-height:280px}

.data-table{width:100%;border-collapse:collapse}.data-table th{padding:9px 10px;border-bottom:1px solid var(--line);font-size:9px;text-align:left;color:#8b96a5;letter-spacing:.05em}.data-table td{padding:10px;border-bottom:1px solid #edf1f4;font-size:10.5px}

.modal-overlay{position:fixed;inset:0;background:rgba(10,18,29,.45);display:grid;place-items:center;z-index:100}.modal-card{width:min(500px,90vw);background:#fff;border-radius:14px;padding:18px}
.form-stack{display:grid;gap:12px}.field{display:flex;flex-direction:column;gap:5px;font-size:10px;color:#788596}.modal-actions{display:flex;justify-content:flex-end;gap:8px}
[hidden]{display:none!important}

@media(min-width:2000px){
  body{font-size:15px}.sidebar{width:240px}.content{margin-left:240px}.page-wrap{padding:26px 30px}
  .metric-tile{min-height:108px}.metric-tile strong{font-size:30px}
  .calendar-day,.calendar-day-readable{min-height:240px}
  .recent-mini-grid{grid-template-columns:repeat(5,1fr)}
}
@media(max-width:1200px){
  .metric-strip{grid-template-columns:repeat(2,1fr)}
  .overview-grid,.two-column-layout{grid-template-columns:1fr}
  .recent-mini-grid{grid-template-columns:repeat(2,1fr)}
  .calendar-panel{overflow:auto}.month-grid,.calendar-weekdays{min-width:1000px}
}

/* v0.7.1 — readability/UI pass for 2K displays */
:root{--ui-font:"Segoe UI Variable Text","Segoe UI",Inter,Arial,sans-serif}
body{font-family:var(--ui-font);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased}
.sidebar{width:250px;padding:22px 16px}.content{margin-left:250px}
.brand-copy b{font-size:17px}.brand-copy small{font-size:12px}.sidebar-nav a{font-size:14px;padding:12px 13px}
.sidebar-card-title{font-size:13px}.sidebar-card-text{font-size:12px}.sidebar-card-button{font-size:13px;padding:9px}.user-copy b{font-size:13px}.user-copy small{font-size:11px}
.topbar{min-height:86px;padding:16px 32px}.eyebrow,.section-kicker{font-size:11px;letter-spacing:.13em;color:#8a97a8;font-weight:800}.topbar h1{font-size:27px}
.page-wrap{padding:26px 32px 44px;max-width:2100px}.button{min-height:42px;padding:10px 15px;font-size:14px}
.section-head h2{font-size:24px}.section-head p{font-size:14px}.panel{border-radius:16px;padding:20px}.panel-head h3{font-size:18px}.panel-head p{font-size:13px;color:var(--muted);margin:3px 0 0}
.metric-tile span{font-size:13px}.metric-tile strong{font-size:31px}.metric-tile small{font-size:12px}.summary-list span{font-size:13px}.summary-list b{font-size:14px}.year-summary-card h3{font-size:18px}
.recent-cards-panel .panel-head a{font-size:13px}.recent-mini-card{padding:14px}.recent-mini-date b{font-size:24px}.recent-mini-date span{font-size:11px}.recent-mini-info strong{font-size:14px}.recent-mini-info span{font-size:12px}

/* Calendar: prioritize legibility over squeezing the whole month vertically */
.calendar-title h2{font-size:26px}.calendar-title p{font-size:13px}.calendar-weekdays div,.calendar-weekdays-readable div{font-size:13px;padding:7px 9px}
.calendar-panel,.calendar-panel-readable{padding:16px}.calendar-weekdays,.calendar-weekdays-readable,.month-grid,.month-grid-readable{gap:7px}
.calendar-day,.calendar-day-readable{min-height:270px;padding:11px;border-radius:12px;overflow:hidden}.calendar-day-number{font-size:15px}.status-badge{font-size:10px;padding:4px 8px}
.calendar-exercise-line{padding:8px 9px;margin-bottom:6px}.calendar-exercise-title-readable{font-size:13px;line-height:1.25}.calendar-exercise-meta-readable{font-size:12px;line-height:1.35}.calendar-footer-readable{font-size:11px;gap:8px;padding-top:8px}.calendar-more{font-size:11px;color:var(--muted);font-weight:700}
.rest-day-mark{font-size:10px}.rest-day-title{font-size:17px}.rest-day-subtitle{font-size:11px}.calendar-empty-readable{margin:auto;color:#9aa5b2;font-size:12px}
/* Auto-fit may reduce spacing, never the type to unreadable sizes. */
.auto-fit-card.fit-compact-1 .calendar-exercise-line{padding:6px 8px;margin-bottom:4px}.auto-fit-card.fit-compact-2 .calendar-exercise-line,.auto-fit-card.fit-compact-3 .calendar-exercise-line{padding:5px 7px;margin-bottom:3px}
.auto-fit-card.fit-compact-2 .calendar-exercise-title-readable,.auto-fit-card.fit-compact-3 .calendar-exercise-title-readable{font-size:12px}
.auto-fit-card.fit-compact-2 .calendar-exercise-meta-readable,.auto-fit-card.fit-compact-3 .calendar-exercise-meta-readable{font-size:11px}

/* Workout editor */
.workout-note{font-size:13px}.status-pill{font-size:11px}.workout-panel{padding:20px}.exercise-list{gap:12px}.exercise-row-card{padding:14px;border-radius:12px}
.exercise-grid{grid-template-columns:minmax(320px,2fr) 105px minmax(390px,2.25fr) 100px minmax(210px,1.25fr) 40px;gap:12px}.field-block{gap:6px;font-size:12px}.input{min-height:42px;padding:9px 11px;font-size:14px}.previous-result{font-size:11px;margin-top:7px}
.sets-editor{gap:8px}.set-box{grid-template-columns:22px 52px 18px;gap:4px}.set-number{width:22px;height:22px;font-size:10px}.set-reps{width:52px!important;min-height:42px!important;font-size:14px}.text-button{font-size:12px}.remove-exercise-button{width:38px;height:38px;margin-top:24px}

/* Exercises/statistics/tables */
.exercise-table td,.data-table td{font-size:14px}.exercise-table th,.data-table th{font-size:11px}.table-action{font-size:12px}.metric-label{font-size:12px}.metric-card strong{font-size:28px}.max-weight-name{font-size:14px}.max-weight-date{font-size:11px}.max-weight-value{font-size:21px}.max-weight-value span{font-size:11px}

/* Calendar day details drawer — fixes unstyled block appearing under calendar */
.day-drawer-backdrop{position:fixed;inset:0;background:rgba(15,27,42,.28);z-index:70;backdrop-filter:blur(2px)}
.day-drawer{position:fixed;top:0;right:0;bottom:0;width:min(470px,92vw);background:#fff;z-index:80;box-shadow:-18px 0 45px rgba(18,32,51,.16);transform:translateX(102%);transition:transform .22s ease;display:flex;flex-direction:column;padding:0}
.day-drawer.open{transform:translateX(0)}.day-drawer-head{padding:24px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:16px}.day-drawer-head h3{font-size:23px;margin:4px 0}.day-drawer-head p{font-size:13px;color:var(--muted);margin:0}.day-drawer-close{width:40px;height:40px;border:1px solid var(--line2);background:#fff;border-radius:10px;font-size:22px;cursor:pointer}.day-drawer-body{padding:20px 24px;overflow:auto;flex:1}.day-drawer-footer{padding:18px 24px;border-top:1px solid var(--line)}
.drawer-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:18px}.drawer-stat{padding:12px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px}.drawer-stat span{display:block;font-size:11px;color:var(--muted)}.drawer-stat b{display:block;font-size:19px;margin-top:3px}.drawer-exercise{padding:14px 0;border-bottom:1px solid var(--line)}.drawer-exercise-name{font-size:15px;font-weight:800;margin-bottom:7px}.drawer-exercise-result{display:flex;gap:10px;align-items:center;font-size:13px}.drawer-exercise-result b{color:var(--green-dark)}.drawer-exercise-target,.drawer-empty,.drawer-loading{font-size:13px;color:var(--muted);margin-top:5px}body.drawer-open{overflow:hidden}

@media(max-width:1500px){.sidebar{width:220px}.content{margin-left:220px}.page-wrap{padding:22px}.exercise-grid{grid-template-columns:minmax(260px,1.8fr) 90px minmax(310px,2fr) 85px minmax(160px,1fr) 38px}.calendar-day,.calendar-day-readable{min-height:250px}}
@media(max-width:1100px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:translateX(0)}.content{margin-left:0}.exercise-grid{grid-template-columns:1fr 100px}.field-block:nth-child(3),.field-block:nth-child(5){grid-column:1/-1}.calendar-panel-readable{overflow:auto}.month-grid-readable,.calendar-weekdays-readable{min-width:1100px}}


/* =========================================================
   v0.8.0 — Bootstrap responsive layer
   Bootstrap отвечает за сетку и формы, этот файл — за фирменный вид.
   ========================================================= */

:root{
  --bs-success:#1fb86a;
  --bs-success-rgb:31,184,106;
  --bs-body-bg:#f5f8fb;
  --bs-body-color:#152238;
  --bs-border-color:#e4eaf1;
  --bs-border-radius:.75rem;
}

body{
  font-size:15px;
}

.page-wrap{
  max-width:1920px;
  padding:24px 28px 40px;
}

.form-control,
.form-select{
  min-height:42px;
  font-size:14px;
  border-color:#d7e0e9;
}

.form-control:focus,
.form-select:focus{
  border-color:#67c792;
  box-shadow:0 0 0 .2rem rgba(31,184,106,.12);
}

.btn{
  --bs-btn-font-size:14px;
  --bs-btn-padding-y:.55rem;
  --bs-btn-padding-x:.9rem;
  border-radius:.65rem;
}

.table{
  --bs-table-bg:transparent;
  --bs-table-hover-bg:#f7faf9;
  color:#344054;
}

.table > :not(caption) > * > *{
  padding:.75rem .7rem;
  border-bottom-color:#edf1f4;
}

.exercise-toolbar .search-input{
  max-width:360px;
}

.exercise-toolbar .filter-select{
  max-width:190px;
}

.metric-tile{
  min-height:118px;
}

.metric-tile strong{
  font-size:32px;
}

.recent-mini-card{
  display:grid;
  grid-template-columns:58px 1fr;
  gap:12px;
  padding:14px;
  border:1px solid #edf1f4;
  border-radius:12px;
  background:#fafcfd;
  min-height:88px;
}

.recent-mini-date b{
  font-size:24px;
}

.recent-mini-info strong{
  font-size:13px;
}

.recent-mini-info span{
  font-size:11px;
}

/* Форма тренировки */
.exercise-row-card{
  padding:15px;
}

.exercise-grid{
  grid-template-columns:
    minmax(340px,2fr)
    105px
    minmax(420px,2.2fr)
    105px
    minmax(220px,1.2fr)
    40px;
  gap:12px;
}

.input{
  min-height:42px;
  font-size:14px;
}

.field-block{
  font-size:11px;
}

.set-reps{
  width:54px!important;
  min-height:42px!important;
  font-size:14px!important;
}

.previous-result{
  font-size:10.5px;
}

.text-button{
  font-size:11px;
}

/* Calendar остаётся CSS Grid, но шрифт масштабируется через media queries */
.calendar-day,
.calendar-day-readable{
  min-height:245px;
}

.calendar-exercise-title-readable{
  font-size:11.5px;
}

.calendar-exercise-meta-readable{
  font-size:10.5px;
}

/* 2K */
@media (min-width: 2000px){
  body{font-size:17px}

  .sidebar{width:260px}
  .content{margin-left:260px}

  .topbar{
    min-height:88px;
    padding:18px 32px;
  }

  .topbar h1{font-size:28px}

  .page-wrap{
    max-width:2100px;
    padding:30px 36px 48px;
  }

  .section-head h2{font-size:26px}
  .section-head p{font-size:14px}

  .btn{
    --bs-btn-font-size:15px;
    --bs-btn-padding-y:.65rem;
    --bs-btn-padding-x:1rem;
  }

  .form-control,
  .form-select{
    min-height:46px;
    font-size:15px;
  }

  .metric-tile{
    min-height:132px;
    padding:20px;
  }

  .metric-tile strong{font-size:37px}
  .metric-tile span{font-size:13px}
  .metric-tile small{font-size:11.5px}

  .panel{
    padding:22px;
  }

  .panel-head h3{font-size:18px}

  .recent-mini-card{
    min-height:102px;
    padding:17px;
  }

  .recent-mini-date b{font-size:28px}
  .recent-mini-info strong{font-size:15px}
  .recent-mini-info span{font-size:12.5px}

  .exercise-grid{
    grid-template-columns:
      minmax(390px,2.2fr)
      120px
      minmax(500px,2.6fr)
      120px
      minmax(250px,1.4fr)
      44px;
    gap:14px;
  }

  .input{min-height:46px;font-size:15px}
  .field-block{font-size:12px}
  .set-reps{width:62px!important;min-height:46px!important;font-size:15px!important}
  .previous-result{font-size:11.5px}
  .text-button{font-size:12px}

  .calendar-day,
  .calendar-day-readable{min-height:285px}

  .calendar-day-number{font-size:15px}
  .calendar-exercise-title-readable{font-size:13px}
  .calendar-exercise-meta-readable{font-size:11.5px}

  .table > :not(caption) > * > *{
    padding:.9rem .85rem;
    font-size:14px;
  }
}

/* ноутбуки / небольшие мониторы */
@media (max-width: 1399.98px){
  .exercise-grid{
    grid-template-columns:minmax(260px,2fr) 95px minmax(300px,2fr) 95px minmax(160px,1fr) 38px;
    gap:9px;
  }
}

@media (max-width: 1199.98px){
  .exercise-grid{
    grid-template-columns:1fr 110px 1.4fr;
  }
  .comment-field,
  .compact-field:last-of-type,
  .remove-exercise-button{
    margin-top:8px;
  }
}

@media (max-width: 767.98px){
  .sidebar{
    position:static;
    width:100%;
    min-height:auto;
  }
  .content{margin-left:0}
  .app-shell{display:block}
  .sidebar-card{display:none}
  .sidebar-footer{display:none}
  .sidebar-nav{
    display:flex;
    overflow:auto;
    margin-top:14px;
  }
  .sidebar-nav a{
    white-space:nowrap;
  }
  .topbar{
    position:static;
    padding:14px 16px;
  }
  .page-wrap{
    padding:16px;
  }
  .exercise-grid{
    grid-template-columns:1fr;
  }
  .calendar-panel,
  .calendar-panel-readable{
    overflow-x:auto;
  }
  .calendar-weekdays,
  .calendar-weekdays-readable,
  .month-grid,
  .month-grid-readable{
    min-width:1050px;
  }
}


/* =========================================================
   v0.8.1 — обзор + годовой календарь
   ========================================================= */

/* 1. Активность по дням занимает всю доступную ширину карточки */
.heatmap-scroll{
  width:100%;
  overflow-x:hidden;
}

.big-heatmap{
  width:100%;
  display:grid;
  grid-template-columns:repeat(53, minmax(0, 1fr));
  gap:4px;
}

.big-heatmap .heat-week{
  display:grid;
  grid-template-rows:repeat(7, 1fr);
  gap:4px;
  min-width:0;
}

.big-heatmap .heat-cell{
  width:100%;
  aspect-ratio:1 / 1;
  height:auto;
  min-width:0;
  border-radius:3px;
}

/* Подписи месяцев растягиваем на всю длину heatmap */
.heatmap-months{
  width:100%;
  max-width:none;
  display:grid;
  grid-template-columns:repeat(12, 1fr);
  gap:0;
  margin:0 0 7px;
  font-size:10px;
  color:#97a2b0;
}

/* Годовой календарь */
.year-calendar-page{
  width:100%;
}

.year-calendar-toolbar{
  display:grid;
  grid-template-columns:46px 1fr 46px;
  align-items:center;
  gap:12px;
}

.year-nav-btn{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  padding:0;
}

.year-calendar-title h2{
  margin:3px 0 4px;
  font-size:28px;
  line-height:1;
}

.year-calendar-title p{
  margin:0;
  color:#7f8da1;
  font-size:13px;
}

.year-calendar-legend{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:16px;
  color:#748196;
  font-size:12px;
}

.year-calendar-legend span{
  display:flex;
  align-items:center;
  gap:6px;
}

.legend-dot{
  width:12px;
  height:12px;
  border-radius:3px;
  display:inline-block;
  border:1px solid #dfe6ed;
  background:#f5f7f9;
}

.legend-dot.training{
  background:#dff6e9;
  border-color:#a8dfbf;
}

.legend-dot.rest{
  background:#fff0f2;
  border-color:#f0ccd1;
}

.year-month-card{
  background:#fff;
  border:1px solid #e4eaf1;
  border-radius:14px;
  padding:14px;
  box-shadow:0 6px 18px rgba(22,34,51,.04);
}

.year-month-head{
  margin-bottom:10px;
}

.year-month-head a{
  font-size:17px;
  font-weight:800;
  color:#1d293b;
}

.year-weekdays,
.year-month-grid{
  display:grid;
  grid-template-columns:repeat(7, 1fr);
  gap:4px;
}

.year-weekdays{
  margin-bottom:5px;
}

.year-weekdays span{
  text-align:center;
  font-size:9px;
  font-weight:800;
  color:#96a1ae;
}

.year-day{
  aspect-ratio:1 / 1;
  min-width:0;
  display:grid;
  place-items:center;
  border:1px solid #edf1f4;
  border-radius:6px;
  background:#fafbfd;
  color:#657286;
  font-size:10px;
  font-weight:700;
  text-decoration:none;
  transition:.12s ease;
}

.year-day:hover{
  transform:scale(1.06);
  border-color:#cbd5df;
  box-shadow:0 3px 10px rgba(22,34,51,.08);
  z-index:2;
}

.year-day.outside{
  opacity:.16;
}

.year-day.training{
  background:#eaf8f1;
  border-color:#b9e7cd;
  color:#147a48;
  font-weight:850;
}

.year-day.rest{
  background:#fff3f4;
  border-color:#efd2d7;
  color:#b65561;
}

.year-day.today{
  outline:2px solid #1fb86a;
  outline-offset:1px;
}

/* Более крупно на 2K */
@media (min-width:2000px){
  .big-heatmap{
    gap:5px;
  }

  .big-heatmap .heat-week{
    gap:5px;
  }

  .heatmap-months{
    font-size:11px;
  }

  .year-month-card{
    padding:16px;
  }

  .year-month-head a{
    font-size:19px;
  }

  .year-weekdays span{
    font-size:10px;
  }

  .year-day{
    font-size:11px;
    border-radius:7px;
  }
}

/* На маленьких экранах heatmap можно прокручивать */
@media (max-width:991.98px){
  .heatmap-scroll{
    overflow-x:auto;
  }

  .big-heatmap{
    min-width:950px;
  }

  .heatmap-months{
    min-width:950px;
  }
}


/* =========================================================
   v0.8.2 — личные максимумы на странице Обзор
   ========================================================= */

.max-weights-overview .panel-head{
  margin-bottom:14px;
}

.max-weights-overview .panel-head h3{
  margin:4px 0 3px;
}

.panel-subtitle{
  margin:0;
  color:#7f8da1;
  font-size:12px;
}

.max-weight-overview-card{
  min-height:78px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:13px 14px;
  border:1px solid #e8edf2;
  border-radius:11px;
  background:#fafcfd;
  transition:.14s ease;
}

.max-weight-overview-card:hover{
  background:#f7fbf9;
  border-color:#cfe8da;
  transform:translateY(-1px);
}

.max-weight-overview-copy{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:4px;
}

.max-weight-overview-copy strong{
  color:#263246;
  font-size:12.5px;
  line-height:1.25;
  font-weight:800;
}

.max-weight-overview-copy span{
  color:#96a1ae;
  font-size:10px;
}

.max-weight-overview-value{
  flex:0 0 auto;
  color:#12834d;
  font-size:21px;
  line-height:1;
  font-weight:900;
  white-space:nowrap;
}

.max-weight-overview-value small{
  color:#7c8998;
  font-size:10px;
  font-weight:700;
}

@media (min-width:2000px){
  .panel-subtitle{
    font-size:13px;
  }

  .max-weight-overview-card{
    min-height:90px;
    padding:16px 17px;
  }

  .max-weight-overview-copy strong{
    font-size:14px;
  }

  .max-weight-overview-copy span{
    font-size:11px;
  }

  .max-weight-overview-value{
    font-size:25px;
  }

  .max-weight-overview-value small{
    font-size:11px;
  }
}


/* =========================================================
   v0.9.0 — упрощение под личный силовой дневник
   ========================================================= */

/* Обзор */
.recent-simple-list,
.max-simple-list{
  display:grid;
}

.recent-simple-row{
  min-height:62px;
  display:grid;
  grid-template-columns:120px minmax(0,1fr) 18px;
  align-items:center;
  gap:12px;
  padding:10px 0;
  border-bottom:1px solid #edf1f4;
}

.recent-simple-row:last-child{
  border-bottom:0;
}

.recent-simple-date b{
  color:#263246;
  font-size:13px;
}

.recent-simple-info{
  display:flex;
  flex-wrap:wrap;
  gap:6px 14px;
  color:#6f7c8f;
  font-size:12px;
}

.recent-simple-info span{
  white-space:nowrap;
}

.recent-simple-arrow{
  color:#a1abb8;
  font-size:21px;
}

.max-simple-row{
  min-height:58px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:9px 0;
  border-bottom:1px solid #edf1f4;
}

.max-simple-row:last-child{
  border-bottom:0;
}

.max-simple-copy{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:3px;
}

.max-simple-copy strong{
  color:#263246;
  font-size:12.5px;
}

.max-simple-copy span{
  color:#96a1ae;
  font-size:10px;
}

.max-simple-value{
  color:#12834d;
  font-size:20px;
  font-weight:900;
  white-space:nowrap;
}

.max-simple-value small{
  color:#7c8998;
  font-size:10px;
  font-weight:700;
}

/* Тренировка: одинаковые упражнения визуально образуют одну группу */
.exercise-group-row.same-exercise-start{
  margin-top:14px;
  border-top-left-radius:12px;
  border-top-right-radius:12px;
}

.exercise-group-row.same-exercise-continuation{
  margin-top:-1px;
  border-top-left-radius:0;
  border-top-right-radius:0;
  background:#f9fbfc;
  border-top-color:#eef2f5;
}

.exercise-group-row.same-exercise-continuation .exercise-picker label,
.exercise-group-row.same-exercise-continuation .exercise-picker .previous-result{
  opacity:.58;
}

.exercise-group-row.same-exercise-continuation .exercise-picker select{
  background:#f8fafc;
}

.exercise-group-row.same-exercise-start::before{
  content:"";
  display:block;
  height:3px;
  margin:-15px -15px 12px;
  border-radius:12px 12px 0 0;
  background:#d9eee3;
}

/* Упражнения: статус скрыт, потому что для активных записей он избыточен */
.exercise-status-col,
.exercise-status-cell{
  display:none!important;
}

@media (min-width:2000px){
  .recent-simple-row{
    min-height:72px;
    grid-template-columns:145px minmax(0,1fr) 20px;
  }

  .recent-simple-date b{
    font-size:14px;
  }

  .recent-simple-info{
    font-size:13px;
  }

  .max-simple-copy strong{
    font-size:14px;
  }

  .max-simple-copy span{
    font-size:11px;
  }

  .max-simple-value{
    font-size:24px;
  }
}


/* =========================================================
   v0.9.1 — чистая страница тренировки
   ========================================================= */

.workout-page-bottom,
.workout-history-panel,
.workout-progress-panel,
.history-panel,
.progress-panel{
  display:none !important;
}

.workout-panel{
  margin-bottom:0;
}

.workout-actions{
  padding-bottom:4px;
}

/* После удаления истории и графика форма становится главным содержимым */
@media (min-width:1200px){
  .workout-panel{
    min-height:auto;
  }
}


/* =========================================================
   v0.9.2 — фикс добавления упражнения + новая авторизация
   ========================================================= */

.auth-shell{
  min-height:100vh;
  display:grid;
  place-items:center;
  padding:24px;
  background:
    radial-gradient(circle at 20% 20%, rgba(31,184,106,.08), transparent 30%),
    linear-gradient(180deg,#f8fbfd,#f2f6f9);
}

.auth-card{
  width:min(460px,100%);
  padding:32px;
  border:1px solid #e3e9ef;
  border-radius:18px;
  background:#fff;
  box-shadow:0 18px 50px rgba(20,34,51,.10);
}

.auth-brand{
  display:flex;
  align-items:center;
  gap:12px;
  margin-bottom:30px;
}

.auth-logo{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  border-radius:12px;
  background:#1fb86a;
  color:#fff;
  font-size:18px;
  font-weight:900;
}

.auth-brand div{
  display:flex;
  flex-direction:column;
}

.auth-brand strong{
  font-size:16px;
}

.auth-brand span:not(.auth-logo){
  color:#8a96a6;
  font-size:11px;
}

.auth-copy{
  margin-bottom:22px;
}

.auth-kicker{
  color:#8a96a6;
  font-size:10px;
  font-weight:800;
  letter-spacing:.12em;
}

.auth-copy h1{
  margin:5px 0 8px;
  font-size:30px;
  line-height:1.1;
}

.auth-copy p{
  margin:0;
  color:#748196;
  font-size:14px;
  line-height:1.5;
}

.auth-form{
  display:grid;
  gap:16px;
}

.auth-form .form-label{
  margin-bottom:6px;
  font-size:12px;
  font-weight:700;
  color:#536173;
}

.auth-footnote{
  margin-top:18px;
  color:#9aa5b2;
  text-align:center;
  font-size:10.5px;
}

#add-exercise{
  cursor:pointer;
}

@media(min-width:2000px){
  .auth-card{
    width:min(520px,100%);
    padding:38px;
  }

  .auth-copy h1{
    font-size:34px;
  }

  .auth-copy p{
    font-size:15px;
  }
}


/* v0.9.3 — кнопка добавления упражнения */
#add-row{
  cursor:pointer;
}

#add-row:active{
  transform:translateY(1px);
}


/* =========================================================
   v0.9.4 — маленькие числа дней в годовой активности
   ========================================================= */

.big-heatmap .heat-cell{
  position:relative;
  display:grid;
  place-items:center;
  overflow:hidden;
}

.heat-day-number{
  color:rgba(42,56,73,.56);
  font-size:8px;
  line-height:1;
  font-weight:700;
  pointer-events:none;
  user-select:none;
}

.big-heatmap .heat-cell.level-3 .heat-day-number,
.big-heatmap .heat-cell.level-4 .heat-day-number{
  color:rgba(255,255,255,.88);
}

.big-heatmap .heat-cell.rest .heat-day-number{
  color:rgba(143,67,75,.72);
}

/* На 2K цифры чуть крупнее, но не мешают цветовой карте */
@media (min-width:2000px){
  .heat-day-number{
    font-size:9px;
  }
}

/* На маленьком экране цифры не раздуваем */
@media (max-width:991.98px){
  .heat-day-number{
    font-size:8px;
  }
}


/* v0.9.5 — фильтры справочника упражнений */
.exercise-toolbar{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}

#exerciseFilter{
  min-width:280px;
  flex:0 1 360px;
}

#exerciseGroupFilter{
  width:auto;
  min-width:190px;
}


/* =========================================================
   v0.9.6 — читаемость страницы «Обзор»
   Увеличиваем только вторичный/мелкий текст, не масштабируя UI.
   ========================================================= */

.dashboard-page .section-title,
.dashboard-page h2,
.dashboard-page h3 {
  letter-spacing: -.01em;
}

.dashboard-page .section-title,
.dashboard-page .card-title {
  font-size: 18px;
  line-height: 1.25;
  font-weight: 750;
}

.dashboard-page .section-subtitle,
.dashboard-page .muted,
.dashboard-page .text-muted {
  font-size: 13px;
  line-height: 1.45;
}

/* Верхние KPI */
.dashboard-page .summary-card .label,
.dashboard-page .metric-card .label,
.dashboard-page .stat-label {
  font-size: 13px;
  line-height: 1.25;
}

.dashboard-page .summary-card .value,
.dashboard-page .metric-card .value {
  line-height: 1.05;
}

.dashboard-page .summary-card small,
.dashboard-page .metric-card small {
  font-size: 12px;
  line-height: 1.35;
}

/* Heatmap */
.dashboard-page .heat-month,
.dashboard-page .big-heatmap .month-label {
  font-size: 12px;
  font-weight: 600;
}

.dashboard-page .heat-day-number {
  font-size: 9px;
  font-weight: 700;
  opacity: .88;
}

/* Недавние тренировки */
.dashboard-page .recent-workouts .workout-date,
.dashboard-page .recent-workouts strong {
  font-size: 14px;
  font-weight: 750;
}

.dashboard-page .recent-workouts .workout-meta,
.dashboard-page .recent-workouts td,
.dashboard-page .recent-workouts .meta {
  font-size: 13px;
  line-height: 1.45;
}

.dashboard-page .recent-workouts .workout-row {
  min-height: 56px;
}

/* Личные максимумы */
.dashboard-page .personal-records .record-name,
.dashboard-page .personal-records strong {
  font-size: 14px;
  line-height: 1.3;
  font-weight: 750;
}

.dashboard-page .personal-records .record-date,
.dashboard-page .personal-records small {
  font-size: 12px;
  line-height: 1.3;
}

.dashboard-page .personal-records .record-value {
  font-size: 21px;
  line-height: 1;
  font-weight: 800;
}

.dashboard-page .personal-records .record-row {
  min-height: 54px;
}

/* Общая страховка для мелкого текста в карточках обзора */
.dashboard-page .card-body {
  font-size: 13px;
}

@media (min-width: 1600px) {
  .dashboard-page .section-subtitle,
  .dashboard-page .muted,
  .dashboard-page .text-muted {
    font-size: 14px;
  }

  .dashboard-page .recent-workouts .workout-meta,
  .dashboard-page .recent-workouts td,
  .dashboard-page .recent-workouts .meta {
    font-size: 14px;
  }

  .dashboard-page .personal-records .record-date,
  .dashboard-page .personal-records small {
    font-size: 13px;
  }

  .dashboard-page .heat-month,
  .dashboard-page .big-heatmap .month-label {
    font-size: 13px;
  }
}


/* =========================================================
   v0.9.8 — единая типографика
   Два основных размера: 14px и 18px.
   ========================================================= */

:root{
  --wd-font-base: 14px;
  --wd-font-title: 18px;
}

/* Основной текст и элементы управления */
body,
button,
input,
select,
textarea,
table,
.form-control,
.form-select,
.btn,
.nav-link,
.dropdown-item,
.card,
.modal,
.alert {
  font-size: var(--wd-font-base) !important;
}

/* Убираем россыпь слишком мелких подписей */
small,
.small,
.text-muted,
.muted,
label,
.form-label,
.form-text,
.card-subtitle,
.section-subtitle,
.stat-label,
.metric-card .label,
.summary-card .label,
.metric-card small,
.summary-card small,
.workout-meta,
.record-date,
.personal-records small,
.heat-month,
.big-heatmap .month-label {
  font-size: var(--wd-font-base) !important;
  line-height: 1.4;
}

/* Заголовки смысловых блоков */
h2,
h3,
h4,
.section-title,
.card-title,
.dashboard-page .section-title,
.dashboard-page .card-title {
  font-size: var(--wd-font-title) !important;
  line-height: 1.3;
  font-weight: 700;
}

/* Главный заголовок страницы — один допустимый акцент */
h1,
.page-title {
  font-size: 24px !important;
  line-height: 1.2;
  font-weight: 750;
}

/* Большие показатели остаются показателями, а не обычным текстом */
.summary-card .value,
.metric-card .value,
.record-value {
  font-size: 28px !important;
  line-height: 1.05;
  font-weight: 800;
}

/* Цифры внутри heatmap физически не помещаются при 14px.
   Это единственное техническое исключение. */
.heat-day-number,
.dashboard-page .heat-day-number {
  font-size: 9px !important;
  line-height: 1 !important;
  font-weight: 700;
}

/* Не увеличиваем служебные badge до громоздкого размера */
.badge {
  font-size: 12px !important;
}

/* Читаемость таблиц и списков */
td, th {
  line-height: 1.4;
}

.sidebar,
.sidebar a,
.sidebar button {
  font-size: var(--wd-font-base) !important;
}

@media (max-width: 767.98px){
  :root{
    --wd-font-base: 14px;
    --wd-font-title: 18px;
  }
}


/* =========================================================
   v0.9.9 — более крупная единая типографика
   Основной текст 16px, заголовки блоков 20px.
   ========================================================= */

:root{
  --wd-font-base: 16px;
  --wd-font-title: 20px;
}

body,
button,
input,
select,
textarea,
table,
.form-control,
.form-select,
.btn,
.nav-link,
.dropdown-item,
.card,
.modal,
.alert,
.sidebar,
.sidebar a,
.sidebar button {
  font-size: 16px !important;
}

small,
.small,
.text-muted,
.muted,
label,
.form-label,
.form-text,
.card-subtitle,
.section-subtitle,
.stat-label,
.metric-card .label,
.summary-card .label,
.metric-card small,
.summary-card small,
.workout-meta,
.record-date,
.personal-records small,
.heat-month,
.big-heatmap .month-label {
  font-size: 16px !important;
  line-height: 1.4;
}

h2,
h3,
h4,
.section-title,
.card-title,
.dashboard-page .section-title,
.dashboard-page .card-title {
  font-size: 20px !important;
  line-height: 1.3;
}

h1,
.page-title {
  font-size: 26px !important;
}

.summary-card .value,
.metric-card .value,
.record-value {
  font-size: 30px !important;
}

/* Heatmap — отдельное исключение из-за размера клеток */
.heat-day-number,
.dashboard-page .heat-day-number {
  font-size: 10px !important;
}

.badge {
  font-size: 13px !important;
}

/* Немного воздуха для более крупного текста */
td, th {
  line-height: 1.45;
}

.form-control,
.form-select,
.btn {
  min-height: 42px;
}


/* =========================================================
   v0.9.10 — все размеры шрифта +1 px
   ========================================================= */

:root{
  --wd-font-base: 17px;
  --wd-font-title: 21px;
}

body,
button,
input,
select,
textarea,
table,
.form-control,
.form-select,
.btn,
.nav-link,
.dropdown-item,
.card,
.modal,
.alert,
.sidebar,
.sidebar a,
.sidebar button {
  font-size: 17px !important;
}

small,
.small,
.text-muted,
.muted,
label,
.form-label,
.form-text,
.card-subtitle,
.section-subtitle,
.stat-label,
.metric-card .label,
.summary-card .label,
.metric-card small,
.summary-card small,
.workout-meta,
.record-date,
.personal-records small,
.heat-month,
.big-heatmap .month-label {
  font-size: 17px !important;
}

h2,
h3,
h4,
.section-title,
.card-title,
.dashboard-page .section-title,
.dashboard-page .card-title {
  font-size: 21px !important;
}

h1,
.page-title {
  font-size: 27px !important;
}

.summary-card .value,
.metric-card .value,
.record-value {
  font-size: 31px !important;
}

.heat-day-number,
.dashboard-page .heat-day-number {
  font-size: 11px !important;
}

.badge {
  font-size: 14px !important;
}

/* =========================================================
   v0.9.11 — читаемость списков обзора и страницы упражнений
   Мелкие локальные стили старых версий приводим к текущей
   типографике интерфейса.
   ========================================================= */

/* Обзор: недавние тренировки */
.dashboard-page .recent-simple-date b,
.dashboard-page .recent-simple-info,
.dashboard-page .recent-simple-info span {
  font-size: 17px !important;
  line-height: 1.45 !important;
}
.dashboard-page .recent-simple-date b { font-weight: 750; }
.dashboard-page .recent-simple-row { min-height: 70px; }

/* Обзор: личные максимумы */
.dashboard-page .max-simple-copy strong {
  font-size: 17px !important;
  line-height: 1.35 !important;
  font-weight: 750;
}
.dashboard-page .max-simple-copy span,
.dashboard-page .max-simple-value small {
  font-size: 15px !important;
  line-height: 1.35 !important;
}
.dashboard-page .max-simple-value {
  font-size: 24px !important;
  line-height: 1.1 !important;
}
.dashboard-page .max-simple-row { min-height: 66px; }

/* Упражнения: таблица должна читаться так же, как основной интерфейс */
.exercise-table,
.exercise-table th,
.exercise-table td,
.exercise-table b,
.exercise-table .exercise-name-cell,
.exercise-table .table-action {
  font-size: 17px !important;
  line-height: 1.45 !important;
}
.exercise-table th,
.exercise-table b { font-weight: 700; }
.exercise-table th,
.exercise-table td { padding-top: 15px !important; padding-bottom: 15px !important; }
.exercise-table .status-badge {
  font-size: 14px !important;
  line-height: 1.2 !important;
  padding: 5px 9px;
}
.exercise-list-head p,
.exercise-toolbar .form-control,
.exercise-toolbar .form-select {
  font-size: 17px !important;
}
.exercise-table .row-actions { gap: 18px; }


/* =========================================================
   v0.9.14 — недавние тренировки по неделям
   ========================================================= */

.weekly-summary-row{
  grid-template-columns: 155px minmax(0,1fr) 120px;
  min-height: 68px;
}

.weekly-period{
  display:flex;
  flex-direction:column;
  gap:3px;
}

.weekly-period b{
  font-size:17px !important;
}

.weekly-period span{
  color:#8a96a6;
  font-size:14px !important;
}

.weekly-summary-info{
  font-size:16px !important;
}

.weekly-volume{
  text-align:right;
  white-space:nowrap;
}

.weekly-volume strong{
  color:#263246;
  font-size:20px !important;
  font-weight:800;
}

.weekly-volume small{
  margin-left:3px;
  color:#7d8998;
  font-size:14px !important;
}

@media (max-width:767.98px){
  .weekly-summary-row{
    grid-template-columns:1fr auto;
  }

  .weekly-summary-info{
    grid-column:1 / -1;
  }
}


/* =========================================================
   v0.9.15 — упражнения внутри недельной сводки
   ========================================================= */

.weekly-summary-row{
  grid-template-columns:155px minmax(0,1fr) 120px;
}

.weekly-exercises{
  grid-column:1 / -1;
  display:flex;
  flex-wrap:wrap;
  gap:7px 10px;
  padding-top:2px;
}

.weekly-exercises span{
  display:inline-flex;
  align-items:center;
  min-height:28px;
  padding:3px 9px;
  border:1px solid #e5ebef;
  border-radius:7px;
  background:#f7f9fa;
  color:#596779;
  font-size:15px !important;
  line-height:1.25;
  font-weight:600;
}

@media (max-width:767.98px){
  .weekly-summary-row{
    grid-template-columns:1fr auto;
  }

  .weekly-summary-info,
  .weekly-exercises{
    grid-column:1 / -1;
  }
}


/* v0.9.15 — компактный список упражнений под неделей */
.weekly-exercises{
  grid-column:1 / -1;
  display:flex;
  flex-wrap:wrap;
  gap:4px 12px;
  padding-top:2px;
  color:#7b8795;
}

.weekly-exercises span{
  padding:0;
  border:0;
  background:transparent;
  color:#7b8795;
  font-size:12px !important;
  line-height:1.35;
  font-weight:500;
}

.weekly-exercises span:not(:last-child)::after{
  content:"•";
  margin-left:12px;
  color:#b5bdc6;
}


/* =========================================================
   v0.9.16 — просмотр тренировки по центру
   ========================================================= */

.day-drawer-backdrop{
  position:fixed;
  inset:0;
  background:rgba(15,27,42,.52);
  z-index:90;
  backdrop-filter:blur(3px);
}

.day-drawer.day-modal{
  position:fixed;
  left:50%;
  top:50%;
  right:auto;
  bottom:auto;
  width:min(960px, calc(100vw - 48px));
  max-height:min(820px, calc(100vh - 48px));
  background:#fff;
  z-index:100;
  box-shadow:0 28px 80px rgba(18,32,51,.28);
  border:1px solid var(--line);
  border-radius:18px;
  transform:translate(-50%,-46%) scale(.97);
  opacity:0;
  visibility:hidden;
  transition:opacity .16s ease, transform .16s ease, visibility .16s ease;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}

.day-drawer.day-modal.open{
  transform:translate(-50%,-50%) scale(1);
  opacity:1;
  visibility:visible;
}

.day-modal .day-drawer-head{
  padding:24px 28px 20px;
  border-bottom:1px solid var(--line);
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
}

.day-modal .day-drawer-head h3{
  margin:4px 0 5px;
  font-size:28px !important;
  line-height:1.15;
}

.day-modal .day-drawer-head p{
  margin:0;
  color:var(--muted);
  font-size:16px !important;
}

.day-modal .day-drawer-close{
  flex:0 0 auto;
  width:44px;
  height:44px;
  border:1px solid var(--line2);
  border-radius:11px;
  background:#fff;
  color:#586678;
  font-size:26px !important;
  line-height:1;
  cursor:pointer;
}

.day-modal .day-drawer-body{
  flex:1;
  overflow:auto;
  padding:24px 28px 18px;
}

.day-modal .day-drawer-footer{
  display:flex;
  justify-content:flex-end;
  padding:18px 28px 24px;
  border-top:1px solid var(--line);
  background:#fff;
}

.day-modal .day-drawer-footer .button{
  min-height:44px;
  padding:10px 18px;
  font-size:16px !important;
}

.day-modal .drawer-stats{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:12px;
  margin-bottom:22px;
}

.day-modal .drawer-stat{
  padding:15px 16px;
  background:var(--surface-2);
  border:1px solid var(--line);
  border-radius:12px;
}

.day-modal .drawer-stat span{
  display:block;
  color:var(--muted);
  font-size:14px !important;
}

.day-modal .drawer-stat b{
  display:block;
  margin-top:4px;
  font-size:24px !important;
}

.day-modal .drawer-exercise{
  padding:16px 0;
  border-bottom:1px solid var(--line);
}

.day-modal .drawer-exercise:last-child{
  border-bottom:0;
}

.day-modal .drawer-exercise-name{
  margin-bottom:9px;
  color:#1f2b3a;
  font-size:18px !important;
  line-height:1.25;
  font-weight:800;
}

.day-modal .drawer-exercise-result{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  align-items:center;
  margin-top:5px;
  font-size:16px !important;
}

.day-modal .drawer-exercise-result b{
  color:var(--green-dark);
  font-size:17px !important;
}

.day-modal .drawer-exercise-target,
.day-modal .drawer-empty,
.day-modal .drawer-loading{
  margin-top:7px;
  color:var(--muted);
  font-size:15px !important;
}

body.drawer-open{
  overflow:hidden;
}

@media (min-width:2000px){
  .day-drawer.day-modal{
    width:min(1080px, calc(100vw - 80px));
    max-height:min(900px, calc(100vh - 80px));
  }

  .day-modal .day-drawer-head h3{
    font-size:31px !important;
  }

  .day-modal .drawer-exercise-name{
    font-size:19px !important;
  }
}

@media (max-width:767.98px){
  .day-drawer.day-modal{
    width:calc(100vw - 20px);
    max-height:calc(100vh - 20px);
    border-radius:14px;
  }

  .day-modal .day-drawer-head{
    padding:18px;
  }

  .day-modal .day-drawer-body{
    padding:18px;
  }

  .day-modal .day-drawer-footer{
    padding:14px 18px 18px;
  }

  .day-modal .drawer-stats{
    grid-template-columns:1fr;
  }
}


/* =========================================================
   v0.9.17 — детальная недельная сводка по упражнениям
   ========================================================= */

.weekly-exercise-details{
  grid-column:1 / -1;
  display:grid;
  gap:7px;
  padding-top:5px;
}

.weekly-exercise-detail{
  display:grid;
  gap:3px;
  padding:7px 10px;
  border:1px solid #edf1f4;
  border-radius:8px;
  background:#fafcfd;
}

.weekly-exercise-head{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:12px;
}

.weekly-exercise-head strong{
  color:#334155;
  font-size:13px !important;
  line-height:1.3;
  font-weight:700;
}

.weekly-exercise-head span{
  flex:0 0 auto;
  color:#738196;
  font-size:12px !important;
  line-height:1.3;
}

.weekly-single-weight{
  color:#7b8795;
  font-size:11px !important;
  line-height:1.35;
}

.weekly-weight-rows{
  display:flex;
  flex-wrap:wrap;
  gap:3px 12px;
}

.weekly-weight-rows span{
  color:#7b8795;
  font-size:11px !important;
  line-height:1.35;
}

.weekly-weight-rows b{
  color:#258857;
  font-weight:700;
}

@media (max-width:767.98px){
  .weekly-exercise-head{
    display:grid;
    gap:2px;
  }

  .weekly-exercise-head span{
    white-space:normal;
  }
}


/* =========================================================
   v0.9.18 — гармоничная типографика упражнений в недельной сводке
   ========================================================= */

/* Название упражнения — заметное, но ниже по иерархии, чем заголовок недели. */
.weekly-exercise-head strong{
  color:#1f2b3a;
  font-size:15px !important;
  line-height:1.35;
  font-weight:700;
  letter-spacing:0;
}

/* Цифры упражнения чуть спокойнее, чтобы название читалось первым. */
.weekly-exercise-head span{
  color:#64748b;
  font-size:13px !important;
  line-height:1.35;
}

/* Детализация рабочих весов остаётся вторичным уровнем. */
.weekly-single-weight,
.weekly-weight-rows span{
  font-size:12px !important;
  line-height:1.4;
}


/* =========================================================
   v0.9.19 — тоннаж выделен жирным
   ========================================================= */

.weekly-exercise-tonnage{
  color:#263246;
  font-size:13px !important;
  font-weight:800 !important;
}

.weekly-total-tonnage{
  color:#10233e;
  font-size:20px !important;
  font-weight:900 !important;
  white-space:nowrap;
}


/* =========================================================
   v0.9.20 — выравнивание недельной сводки под макет
   ========================================================= */

.weekly-exercise-detail{
  padding:9px 12px;
  border:1px solid #e7edf2;
  border-radius:9px;
  background:#fafcfd;
}

.weekly-exercise-head{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:16px;
}

.weekly-exercise-name{
  color:#10233e;
  font-size:16px !important;
  line-height:1.3;
  font-weight:800 !important;
}

.weekly-exercise-summary{
  display:flex;
  align-items:center;
  gap:5px;
  white-space:nowrap;
  color:#6e7c8f;
  font-size:13px !important;
  line-height:1.3;
}

.weekly-exercise-summary span{
  color:#6e7c8f;
  font-size:13px !important;
}

.weekly-exercise-tonnage{
  color:#10233e;
  font-size:15px !important;
  font-weight:900 !important;
}

.weekly-weight-rows,
.weekly-single-weight{
  margin-top:4px;
}

.weekly-weight-rows span,
.weekly-single-weight{
  color:#7b8795;
  font-size:12px !important;
  line-height:1.4;
}

.weekly-weight-rows b{
  color:#0d8a4f;
  font-weight:800;
}

.weekly-summary-row{
  padding-top:14px;
  padding-bottom:14px;
}

.weekly-summary-row + .weekly-summary-row{
  border-top:1px solid #e8edf2;
}

.weekly-period b{
  color:#10233e;
  font-size:18px !important;
  font-weight:800;
}

.weekly-summary-info{
  color:#6f7d8f;
  font-size:16px !important;
}

.weekly-total-tonnage{
  color:#10233e;
  font-size:22px !important;
  font-weight:900 !important;
}

@media (max-width: 900px){
  .weekly-exercise-head{
    grid-template-columns:1fr;
    gap:4px;
  }

  .weekly-exercise-summary{
    white-space:normal;
  }
}


/* =========================================================
   v0.9.21 — просмотр тренировки без вертикальной прокрутки
   ========================================================= */

/* Делаем окно шире и немного ниже по высоте, чтобы контент
   раскладывался по горизонтали, а не тянулся вниз. */
.day-drawer.day-modal{
  width:min(1180px, calc(100vw - 56px));
  max-height:calc(100vh - 56px);
}

/* Внутреннюю прокрутку на обычном desktop убираем. */
.day-modal .day-drawer-body{
  overflow:visible;
  padding:18px 24px 14px;
}

/* Шапка чуть компактнее. */
.day-modal .day-drawer-head{
  padding:18px 24px 15px;
}

.day-modal .day-drawer-head h3{
  font-size:26px !important;
}

.day-modal .day-drawer-head p{
  font-size:14px !important;
}

/* Верхние показатели занимают меньше высоты. */
.day-modal .drawer-stats{
  gap:10px;
  margin-bottom:14px;
}

.day-modal .drawer-stat{
  padding:10px 13px;
}

.day-modal .drawer-stat span{
  font-size:12px !important;
}

.day-modal .drawer-stat b{
  margin-top:2px;
  font-size:24px !important;
}

/* Главный приём: упражнения идут в две колонки. */
.day-modal .drawer-exercises-grid{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:0 24px;
  align-items:start;
}

.day-modal .drawer-exercise{
  padding:10px 0;
  border-bottom:1px solid var(--line);
  min-width:0;
}

.day-modal .drawer-exercise-name{
  margin-bottom:5px;
  font-size:16px !important;
  line-height:1.2;
}

.day-modal .drawer-exercise-result{
  gap:8px;
  margin-top:3px;
  font-size:14px !important;
  line-height:1.25;
}

.day-modal .drawer-exercise-result b{
  font-size:15px !important;
}

.day-modal .drawer-exercise-target{
  margin-top:4px;
  font-size:12px !important;
}

/* Нижняя кнопка больше не съедает лишнюю высоту. */
.day-modal .day-drawer-footer{
  padding:12px 24px 16px;
}

.day-modal .day-drawer-footer .button{
  min-height:40px;
  padding:8px 16px;
  font-size:14px !important;
}

/* На 2K можно сделать 3 колонки — тогда даже большая тренировка
   обычно помещается целиком без прокрутки. */
@media (min-width:1900px){
  .day-drawer.day-modal{
    width:min(1360px, calc(100vw - 90px));
  }

  .day-modal .drawer-exercises-grid{
    grid-template-columns:repeat(3, minmax(0,1fr));
    gap:0 26px;
  }
}

/* На более низких desktop-экранах ещё чуть уплотняем. */
@media (min-width:900px) and (max-height:850px){
  .day-modal .day-drawer-head{
    padding:14px 22px 12px;
  }

  .day-modal .day-drawer-body{
    padding:12px 22px 10px;
  }

  .day-modal .drawer-stats{
    margin-bottom:10px;
  }

  .day-modal .drawer-stat{
    padding:8px 11px;
  }

  .day-modal .drawer-exercise{
    padding:7px 0;
  }

  .day-modal .drawer-exercise-name{
    font-size:15px !important;
  }

  .day-modal .drawer-exercise-result{
    font-size:13px !important;
  }

  .day-modal .day-drawer-footer{
    padding:10px 22px 12px;
  }
}

/* На телефоне прокрутка остаётся допустимой, иначе физически
   невозможно показать длинную тренировку на маленьком экране. */
@media (max-width:767.98px){
  .day-drawer.day-modal{
    width:calc(100vw - 16px);
    max-height:calc(100vh - 16px);
  }

  .day-modal .day-drawer-body{
    overflow:auto;
  }

  .day-modal .drawer-exercises-grid{
    grid-template-columns:1fr;
  }
}


/* =========================================================
   v0.9.22 — нормальная локальная авторизация
   ========================================================= */

.auth-card-compact{
  width:min(430px,100%);
}

.auth-brand-centered{
  margin-bottom:24px;
}

.setup-heading{
  margin-bottom:22px;
}

.setup-heading h1{
  margin:0 0 7px;
  color:#142238;
  font-size:25px !important;
  line-height:1.2;
  font-weight:800;
}

.setup-heading p{
  margin:0;
  color:#758297;
  font-size:14px !important;
  line-height:1.45;
}

.setup-hint{
  margin-top:5px;
  color:#8a96a6;
  font-size:12px !important;
}


.auth-card .form-control{
  min-height:48px;
}

.auth-card .btn{
  min-height:48px;
}


/* v0.9.26 — exercise modal */
.modal-close {
  position: relative;
  width: 40px;
  height: 40px;
  min-width: 40px;
  padding: 0;
  border: 1px solid var(--border, #dbe3ec);
  border-radius: 10px;
  background: #fff;
  font-size: 0;
  cursor: pointer;
}
.modal-close::before,
.modal-close::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 16px;
  height: 2px;
  border-radius: 2px;
  background: #64748b;
  transform-origin: center;
}
.modal-close::before { transform: translate(-50%, -50%) rotate(45deg); }
.modal-close::after  { transform: translate(-50%, -50%) rotate(-45deg); }
.modal-close:hover { background: #f8fafc; }

/* v0.9.27 — modal header / close button fix */
.modal-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  margin-bottom:16px;
}
.modal-head > div{min-width:0;}
.modal-head h3{margin:4px 0 0;}
.modal-head .modal-close{
  flex:0 0 40px;
  margin:0 0 0 auto;
  align-self:flex-start;
}


/* =========================================================
   v0.9.28 — навигация по датам тренировки
   ========================================================= */

.workout-date-nav{
  display:flex;
  align-items:center;
  gap:7px;
}

.workout-date-arrow{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  padding:0;
  border:1px solid #dbe3ec;
  border-radius:10px;
  background:#fff;
  color:#263246;
  font-size:27px !important;
  line-height:1;
  font-weight:600;
  cursor:pointer;
}

.workout-date-arrow:hover{
  background:#f7f9fb;
  border-color:#cbd6e2;
}

.workout-date-input{
  height:42px;
  min-width:160px;
  padding:0 11px;
  border:1px solid #dbe3ec;
  border-radius:10px;
  background:#fff;
  color:#263246;
  font-size:15px !important;
  font-weight:700;
  cursor:pointer;
}

.workout-date-input:focus{
  outline:0;
  border-color:#5dbf8c;
  box-shadow:0 0 0 3px rgba(31,184,106,.10);
}

@media (max-width:767.98px){
  .workout-date-input{
    min-width:142px;
  }

  .workout-date-arrow{
    width:40px;
    height:40px;
  }
}

/* =========================================================
   Рекомендуемые веса — улучшенное оформление
   ========================================================= */
.recommended-loads-panel{overflow:hidden;padding:0 !important;}
.recommended-loads-panel > .panel-head{padding:22px 24px 18px;margin:0;border-bottom:1px solid #e8eef4;background:linear-gradient(180deg,#ffffff 0%,#fbfcfe 100%);}
.recommended-loads-panel > .panel-head h3{margin:0 0 5px;font-size:24px !important;line-height:1.25;}
.recommended-loads-panel > .panel-head .panel-subtitle{max-width:1100px;margin:0;line-height:1.5;}
.recommended-loads-section{padding:20px 24px 22px;}
.recommended-loads-section + .recommended-loads-section{border-top:1px solid #e8eef4;background:#fbfcfe;}
.recommended-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:12px;}
.recommended-section-kicker{display:block;margin-bottom:2px;color:#8090a5;font-size:12px !important;line-height:1.2;font-weight:800;letter-spacing:.09em;text-transform:uppercase;}
.recommended-section-head h4{margin:0;color:#17263b;font-size:19px !important;line-height:1.25;font-weight:800;}
.recommended-section-note{color:#8794a7;font-size:13px !important;white-space:nowrap;}
.recommended-loads-wrap{overflow-x:auto;border:1px solid #e2e9f0;border-radius:14px;background:#fff;box-shadow:0 5px 18px rgba(24,39,58,.035);}
.recommended-loads-table{width:100%;margin:0;border-collapse:separate;border-spacing:0;color:#26364b;}
.recommended-loads-table th,.recommended-loads-table td{padding:12px 14px;border-right:1px solid #edf1f5;border-bottom:1px solid #e8edf2;vertical-align:middle;}
.recommended-loads-table th:last-child,.recommended-loads-table td:last-child{border-right:0;}
.recommended-loads-table tbody tr:last-child td{border-bottom:0;}
.recommended-loads-table thead th{background:#f7f9fc;color:#536277;font-size:13px !important;line-height:1.25;font-weight:800;text-align:center;white-space:nowrap;}
.recommended-loads-table thead th:first-child{text-align:left;}
.recommended-loads-table thead th span{display:block;margin-bottom:3px;color:#1d2d42;font-size:13px !important;}
.recommended-loads-table thead th small{display:inline-flex;align-items:center;justify-content:center;min-width:50px;padding:3px 7px;border-radius:999px;background:#edf2f7;color:#6f7f93;font-size:12px !important;font-weight:800;}
.recommended-loads-main{min-width:1180px;}
.recommended-loads-main tbody tr{transition:background .15s ease;}
.recommended-loads-main tbody tr:hover{background:#fbfdfc;}
.recommended-loads-main td{text-align:center;font-size:15px !important;}
.recommended-loads-main .recommended-exercise{min-width:260px;color:#15253a;text-align:left;font-size:16px !important;font-weight:800;background:#fcfdfe;}
.recommended-loads-main .recommended-base{min-width:120px;background:#f9fbfd;}
.recommended-loads-main .recommended-base strong{color:#17283f;font-size:18px !important;}
.recommended-loads-main td strong{color:#17283f;font-size:15px !important;font-weight:800;}
.recommended-loads-main td small{display:block;margin-top:3px;color:#7a899d;font-size:13px !important;line-height:1.3;}
.recommended-loads-main thead th:nth-child(3){background:#f3fbf7;}
.recommended-loads-main thead th:nth-child(4){background:#f5fbf3;}
.recommended-loads-main thead th:nth-child(5){background:#fbfaef;}
.recommended-loads-main thead th:nth-child(6){background:#f4f7ff;}
.recommended-loads-main thead th:nth-child(7){background:#fff7f1;}
.recommended-loads-main thead th:nth-child(8){background:#fff3f3;}
.recommended-loads-main tbody td:nth-child(3){background:rgba(63,174,117,.035);}
.recommended-loads-main tbody td:nth-child(4){background:rgba(125,177,72,.035);}
.recommended-loads-main tbody td:nth-child(5){background:rgba(192,164,52,.035);}
.recommended-loads-main tbody td:nth-child(6){background:rgba(73,107,193,.035);}
.recommended-loads-main tbody td:nth-child(7){background:rgba(210,126,54,.035);}
.recommended-loads-main tbody td:nth-child(8){background:rgba(203,73,73,.035);}
.recommended-guide-table{table-layout:fixed;}
.recommended-guide-table thead th{padding-top:10px;padding-bottom:10px;}
.recommended-guide-table td{padding-top:11px;padding-bottom:11px;font-size:15px !important;}
.recommended-guide-table td:first-child{width:19%;color:#1d2d42;}
.recommended-guide-table td:nth-child(2),.recommended-guide-table td:nth-child(3),.recommended-guide-table td:nth-child(4){width:14%;text-align:center;white-space:nowrap;}
.recommended-guide-table td:last-child{color:#56667a;}
.recommended-guide-table tbody tr:nth-child(1) td:first-child{border-left:4px solid #47a978;}
.recommended-guide-table tbody tr:nth-child(2) td:first-child{border-left:4px solid #7aae52;}
.recommended-guide-table tbody tr:nth-child(3) td:first-child{border-left:4px solid #c3a540;}
.recommended-guide-table tbody tr:nth-child(4) td:first-child{border-left:4px solid #5579c7;}
.recommended-guide-table tbody tr:nth-child(5) td:first-child{border-left:4px solid #d28648;}
.recommended-guide-table tbody tr:nth-child(6) td:first-child{border-left:4px solid #c95858;}
@media (max-width:767.98px){.recommended-loads-panel > .panel-head,.recommended-loads-section{padding-left:16px;padding-right:16px;}.recommended-section-head{align-items:flex-start;flex-direction:column;gap:5px;}.recommended-section-note{white-space:normal;}.recommended-loads-main{min-width:1050px;}.recommended-guide-table{min-width:760px;}}

/* Цветные индикаторы типа нагрузки в календаре и окне тренировки */
.load-style-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  width:max-content;
  max-width:100%;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  font-size:11px;
  line-height:1.35;
  font-weight:800;
  white-space:nowrap;
}
.load-style-badge::before{
  content:"";
  display:inline-block;
  flex:0 0 auto;
  width:10px;
  height:10px;
  border-radius:50%;
  background:#94a3b8;
  box-shadow:0 0 0 3px rgba(148,163,184,.14);
}
.load-style-recovery{color:#64748b}.load-style-recovery::before{background:#64748b;box-shadow:0 0 0 3px rgba(100,116,139,.14)}
.load-style-light{color:#0284c7}.load-style-light::before{background:#0ea5e9;box-shadow:0 0 0 3px rgba(14,165,233,.14)}
.load-style-volume{color:#059669}.load-style-volume::before{background:#10b981;box-shadow:0 0 0 3px rgba(16,185,129,.14)}
.load-style-hypertrophy{color:#7c3aed}.load-style-hypertrophy::before{background:#8b5cf6;box-shadow:0 0 0 3px rgba(139,92,246,.14)}
.load-style-heavy{color:#d97706}.load-style-heavy::before{background:#f59e0b;box-shadow:0 0 0 3px rgba(245,158,11,.15)}
.load-style-strength{color:#dc2626}.load-style-strength::before{background:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,.14)}

@media(max-width:767.98px){
  .load-style-badge{font-size:10px;gap:5px}
  .load-style-badge::before{width:9px;height:9px}
}

/* Personal maximums: make working weight and estimated 1RM visually distinct. */
.max-simple-list {
  display: grid;
  gap: 12px;
}

.max-simple-row {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) minmax(290px, 1.2fr);
  align-items: center;
  gap: 18px;
  padding: 14px 16px;
  border: 1px solid var(--border, #e3eaf2);
  border-radius: 12px;
  background: #fff;
}

.max-simple-copy {
  min-width: 0;
}

.max-simple-copy > strong {
  display: block;
  font-size: 16px;
  line-height: 1.25;
  margin-bottom: 5px;
}

.max-simple-copy > span {
  display: block;
  font-size: 13px;
  color: #8a98aa;
}

.max-metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.max-metric {
  min-height: 78px;
  padding: 10px 12px;
  border-radius: 10px;
  border: 1px solid #dfe7ef;
  background: #f8fafc;
}

.max-metric-working {
  border-left: 4px solid #21a366;
}

.max-metric-e1rm {
  border-left: 4px solid #2f6fed;
  background: #f7f9ff;
}

.max-metric-label {
  display: block;
  margin-bottom: 4px;
  font-size: 12px;
  font-weight: 700;
  color: #75849a;
  text-transform: uppercase;
  letter-spacing: .03em;
}

.max-metric-number {
  display: flex;
  align-items: baseline;
  gap: 5px;
  white-space: nowrap;
}

.max-metric-number strong {
  font-size: 24px;
  line-height: 1;
  color: #17263a;
}

.max-metric-working .max-metric-number strong {
  color: #159253;
}

.max-metric-e1rm .max-metric-number strong {
  color: #245fc7;
}

.max-metric-number span {
  font-size: 13px;
  font-weight: 700;
  color: #748297;
}

.max-metric-source {
  display: block;
  margin-top: 5px;
  font-size: 12px;
  color: #7b899b;
}

@media (max-width: 1500px) {
  .max-simple-row {
    grid-template-columns: 1fr;
    gap: 10px;
  }
}

@media (max-width: 640px) {
  .max-metrics {
    grid-template-columns: 1fr;
  }
  .max-metric {
    min-height: 68px;
  }
}
/* Графики прогресса упражнений в обзоре */
.exercise-progress-panel{overflow:hidden;padding:0!important;}
.exercise-progress-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:22px 24px 18px!important;margin:0!important;border-bottom:1px solid #e8eef4;}
.exercise-progress-head h3{margin-bottom:5px;}
.progress-exercise-picker{display:flex;flex-direction:column;gap:6px;min-width:320px;}
.progress-exercise-picker>span{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#7d8da2;}
.progress-exercise-picker .form-select{font-weight:700;border-color:#dbe4ed;border-radius:10px;min-height:42px;}
.exercise-progress-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;padding:18px 24px 24px;}
.progress-chart-card{min-width:0;padding:16px 18px 14px;border:1px solid #e1e8ef;border-radius:14px;background:#fbfcfe;}
.progress-chart-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px;}
.progress-chart-title div{display:flex;flex-direction:column;gap:2px;}
.progress-chart-title span{font-size:17px;font-weight:800;color:#17263b;}
.progress-chart-title small{font-size:13px;color:#8391a4;}
.progress-chart-title>b{display:inline-flex;align-items:center;justify-content:center;min-width:38px;padding:4px 8px;border-radius:999px;background:#eef3f7;color:#64758a;font-size:12px;}
.progress-chart-canvas{position:relative;height:300px;}
@media(max-width:991.98px){.exercise-progress-head{align-items:stretch;flex-direction:column;}.progress-exercise-picker{min-width:0;width:100%;}.exercise-progress-grid{grid-template-columns:1fr;}.progress-chart-canvas{height:270px;}}
@media(max-width:575.98px){.exercise-progress-head,.exercise-progress-grid{padding-left:16px!important;padding-right:16px!important;}.progress-chart-card{padding:14px 12px;}.progress-chart-canvas{height:240px;}}

/* v0.9.5 — годовая активность по типу тренировочного дня */
.load-day-legend{
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:5px 10px;
  font-size:9px;
}
.load-day-legend span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.load-day-legend i{display:inline-block;flex:0 0 auto}
.load-day-legend .recovery,.heat-cell.recovery{background:#86efac}
.load-day-legend .light,.heat-cell.light{background:#22c55e}
.load-day-legend .volume,.heat-cell.volume{background:#eab308}
.load-day-legend .hypertrophy,.heat-cell.hypertrophy{background:#f97316}
.load-day-legend .heavy,.heat-cell.heavy{background:#ea580c}
.load-day-legend .strength,.heat-cell.strength{background:#dc2626}
.load-day-legend .rest,.heat-cell.rest{background:#3b82f6}
.heat-cell.training-unknown{background:#cbd5e1}

.big-heatmap .heat-cell.recovery .heat-day-number,
.big-heatmap .heat-cell.light .heat-day-number,
.big-heatmap .heat-cell.volume .heat-day-number,
.big-heatmap .heat-cell.hypertrophy .heat-day-number,
.big-heatmap .heat-cell.heavy .heat-day-number,
.big-heatmap .heat-cell.strength .heat-day-number{
  color:rgba(255,255,255,.92);
}

/* v0.9.6 — единая спокойная палитра для «Активности по дням» и «Календаря» */
:root {
  --day-recovery: #d8eadc;
  --day-light: #b9d8c1;
  --day-volume: #e8dfb5;
  --day-hypertrophy: #e8cdb3;
  --day-heavy: #dfb29e;
  --day-strength: #d9a3a3;
  --day-rest: #b9cede;
  --day-unknown: #dce2e7;
  --day-text: #3f4b55;
}

/* Одна и та же заливка в легенде, годовой активности и календаре */
.load-day-legend .recovery,
.heat-cell.recovery,
.year-calendar-legend .recovery,
.calendar-day-readable.day-load-recovery { background: var(--day-recovery); }

.load-day-legend .light,
.heat-cell.light,
.year-calendar-legend .light,
.calendar-day-readable.day-load-light { background: var(--day-light); }

.load-day-legend .volume,
.heat-cell.volume,
.year-calendar-legend .volume,
.calendar-day-readable.day-load-volume { background: var(--day-volume); }

.load-day-legend .hypertrophy,
.heat-cell.hypertrophy,
.year-calendar-legend .hypertrophy,
.calendar-day-readable.day-load-hypertrophy { background: var(--day-hypertrophy); }

.load-day-legend .heavy,
.heat-cell.heavy,
.year-calendar-legend .heavy,
.calendar-day-readable.day-load-heavy { background: var(--day-heavy); }

.load-day-legend .strength,
.heat-cell.strength,
.year-calendar-legend .strength,
.calendar-day-readable.day-load-strength { background: var(--day-strength); }

.load-day-legend .rest,
.heat-cell.rest,
.year-calendar-legend .rest,
.calendar-day-readable.day-load-rest { background: var(--day-rest); }

.heat-cell.training-unknown,
.calendar-day-readable.day-load-training-unknown { background: var(--day-unknown); }

/* Спокойные рамки календаря — в тон заливке */
.calendar-day-readable.day-load-recovery { border-color: #bfd6c5; }
.calendar-day-readable.day-load-light { border-color: #9fc5aa; }
.calendar-day-readable.day-load-volume { border-color: #d4c98f; }
.calendar-day-readable.day-load-hypertrophy { border-color: #d5b18f; }
.calendar-day-readable.day-load-heavy { border-color: #cb967e; }
.calendar-day-readable.day-load-strength { border-color: #c58686; }
.calendar-day-readable.day-load-rest { border-color: #9db9cd; }
.calendar-day-readable.day-load-training-unknown { border-color: #c8d0d7; }

.big-heatmap .heat-cell.recovery .heat-day-number,
.big-heatmap .heat-cell.light .heat-day-number,
.big-heatmap .heat-cell.volume .heat-day-number,
.big-heatmap .heat-cell.hypertrophy .heat-day-number,
.big-heatmap .heat-cell.heavy .heat-day-number,
.big-heatmap .heat-cell.strength .heat-day-number,
.big-heatmap .heat-cell.rest .heat-day-number { color: var(--day-text); }

/* v0.9.7 — единая пастельная палитра активности и календаря */
:root {
  --day-empty: #edf1f4;
  --day-rest: #8fafc4;
  --day-recovery: #a8d5ba;
  --day-light: #78be91;
  --day-volume: #d8bd68;
  --day-hypertrophy: #d99a68;
  --day-heavy: #c87562;
  --day-strength: #b85f67;
  --day-unknown: #c7d0d7;
  --day-text: #263746;
  --day-text-on-strong: #ffffff;
}

/* Один источник цвета: легенда, годовая активность и месячный календарь. */
.load-day-legend .recovery,
.heat-cell.recovery,
.year-calendar-legend .recovery,
.calendar-day-readable.day-load-recovery { background: var(--day-recovery); }

.load-day-legend .light,
.heat-cell.light,
.year-calendar-legend .light,
.calendar-day-readable.day-load-light { background: var(--day-light); }

.load-day-legend .volume,
.heat-cell.volume,
.year-calendar-legend .volume,
.calendar-day-readable.day-load-volume { background: var(--day-volume); }

.load-day-legend .hypertrophy,
.heat-cell.hypertrophy,
.year-calendar-legend .hypertrophy,
.calendar-day-readable.day-load-hypertrophy { background: var(--day-hypertrophy); }

.load-day-legend .heavy,
.heat-cell.heavy,
.year-calendar-legend .heavy,
.calendar-day-readable.day-load-heavy { background: var(--day-heavy); }

.load-day-legend .strength,
.heat-cell.strength,
.year-calendar-legend .strength,
.calendar-day-readable.day-load-strength { background: var(--day-strength); }

.load-day-legend .rest,
.heat-cell.rest,
.year-calendar-legend .rest,
.calendar-day-readable.day-load-rest { background: var(--day-rest); }

.heat-cell.training-unknown,
.calendar-day-readable.day-load-training-unknown { background: var(--day-unknown); }

/* Календарь: мягкая заливка всей карточки и рамка чуть темнее основного цвета. */
.calendar-day-readable.day-load-recovery { border-color: #8fc5a4; }
.calendar-day-readable.day-load-light { border-color: #5ea979; }
.calendar-day-readable.day-load-volume { border-color: #c2a84f; }
.calendar-day-readable.day-load-hypertrophy { border-color: #c68152; }
.calendar-day-readable.day-load-heavy { border-color: #b55f4d; }
.calendar-day-readable.day-load-strength { border-color: #a64d58; }
.calendar-day-readable.day-load-rest { border-color: #789db5; }
.calendar-day-readable.day-load-training-unknown { border-color: #abb7c0; }

/* Выходной больше не красный внутри календаря — он всегда синий. */
.calendar-day-readable.day-load-rest .status-rest {
  background: rgba(255,255,255,.46);
  color: #3f677f;
}
.calendar-day-readable.day-load-rest .calendar-rest-readable,
.calendar-day-readable.day-load-rest .rest-day-subtitle {
  color: #4d7187;
}

/* Бейдж тренировки подстраивается под цвет дня и не спорит с фоном. */
.calendar-day-readable[class*="day-load-"] .status-success {
  background: rgba(255,255,255,.48);
  color: #315242;
}

/* Цвет обозначения нагрузки у упражнений совпадает с общей палитрой. */
.load-style-recovery{color:#5f8f71}.load-style-recovery::before{background:var(--day-recovery);box-shadow:0 0 0 3px rgba(168,213,186,.28)}
.load-style-light{color:#47885e}.load-style-light::before{background:var(--day-light);box-shadow:0 0 0 3px rgba(120,190,145,.25)}
.load-style-volume{color:#8b7424}.load-style-volume::before{background:var(--day-volume);box-shadow:0 0 0 3px rgba(216,189,104,.25)}
.load-style-hypertrophy{color:#9b5d34}.load-style-hypertrophy::before{background:var(--day-hypertrophy);box-shadow:0 0 0 3px rgba(217,154,104,.25)}
.load-style-heavy{color:#8d493d}.load-style-heavy::before{background:var(--day-heavy);box-shadow:0 0 0 3px rgba(200,117,98,.24)}
.load-style-strength{color:#84434c}.load-style-strength::before{background:var(--day-strength);box-shadow:0 0 0 3px rgba(184,95,103,.24)}

/* На маленькой годовой сетке текст остаётся читаемым. */
.big-heatmap .heat-cell.recovery .heat-day-number,
.big-heatmap .heat-cell.volume .heat-day-number,
.big-heatmap .heat-cell.rest .heat-day-number { color: var(--day-text); }
.big-heatmap .heat-cell.light .heat-day-number,
.big-heatmap .heat-cell.hypertrophy .heat-day-number,
.big-heatmap .heat-cell.heavy .heat-day-number,
.big-heatmap .heat-cell.strength .heat-day-number { color: var(--day-text-on-strong); }

/* v0.9.8 — месячный календарь: цвет только как акцент, без полной заливки */
.calendar-day-readable.day-load-recovery,
.calendar-day-readable.day-load-light,
.calendar-day-readable.day-load-volume,
.calendar-day-readable.day-load-hypertrophy,
.calendar-day-readable.day-load-heavy,
.calendar-day-readable.day-load-strength,
.calendar-day-readable.day-load-rest,
.calendar-day-readable.day-load-training-unknown {
  background: #fff;
  border-color: var(--line);
  border-left-width: 5px;
}
.calendar-day-readable.day-load-recovery { border-left-color: var(--day-recovery); }
.calendar-day-readable.day-load-light { border-left-color: var(--day-light); }
.calendar-day-readable.day-load-volume { border-left-color: var(--day-volume); }
.calendar-day-readable.day-load-hypertrophy { border-left-color: var(--day-hypertrophy); }
.calendar-day-readable.day-load-heavy { border-left-color: var(--day-heavy); }
.calendar-day-readable.day-load-strength { border-left-color: var(--day-strength); }
.calendar-day-readable.day-load-rest { border-left-color: var(--day-rest); }
.calendar-day-readable.day-load-training-unknown { border-left-color: var(--day-unknown); }

/* Бейджи сохраняют цвет категории, но остаются лёгкими. */
.calendar-day-readable.day-load-rest .status-rest {
  background: color-mix(in srgb, var(--day-rest) 22%, white);
  color: #4d7187;
}
.calendar-day-readable.day-load-recovery .status-success { background: color-mix(in srgb, var(--day-recovery) 24%, white); }
.calendar-day-readable.day-load-light .status-success { background: color-mix(in srgb, var(--day-light) 24%, white); }
.calendar-day-readable.day-load-volume .status-success { background: color-mix(in srgb, var(--day-volume) 24%, white); }
.calendar-day-readable.day-load-hypertrophy .status-success { background: color-mix(in srgb, var(--day-hypertrophy) 24%, white); }
.calendar-day-readable.day-load-heavy .status-success { background: color-mix(in srgb, var(--day-heavy) 24%, white); }
.calendar-day-readable.day-load-strength .status-success { background: color-mix(in srgb, var(--day-strength) 24%, white); }

/* Годовая «Активность по дням» по-прежнему использует полную заливку. */

/* v0.9.9 — месячный календарь: цветная рамка по всему периметру */
.calendar-day-readable.day-load-recovery,
.calendar-day-readable.day-load-light,
.calendar-day-readable.day-load-volume,
.calendar-day-readable.day-load-hypertrophy,
.calendar-day-readable.day-load-heavy,
.calendar-day-readable.day-load-strength,
.calendar-day-readable.day-load-rest,
.calendar-day-readable.day-load-training-unknown {
  background: #fff;
  border-width: 2px;
  border-style: solid;
}
.calendar-day-readable.day-load-recovery { border-color: var(--day-recovery); }
.calendar-day-readable.day-load-light { border-color: var(--day-light); }
.calendar-day-readable.day-load-volume { border-color: var(--day-volume); }
.calendar-day-readable.day-load-hypertrophy { border-color: var(--day-hypertrophy); }
.calendar-day-readable.day-load-heavy { border-color: var(--day-heavy); }
.calendar-day-readable.day-load-strength { border-color: var(--day-strength); }
.calendar-day-readable.day-load-rest { border-color: var(--day-rest); }
.calendar-day-readable.day-load-training-unknown { border-color: var(--day-unknown); }


/* v0.10.0 — календарь: отдых нейтральный, тренировки визуально приоритетны */
:root {
  --day-empty: #f1f3f5;
  --day-rest: #e7eaee;
  --day-recovery: #b9dfc6;
  --day-light: #79c99a;
  --day-volume: #e5c45f;
  --day-hypertrophy: #e69a61;
  --day-heavy: #d96f5d;
  --day-strength: #c94f5f;
  --day-unknown: #cbd3da;
  --day-text: #263746;
  --day-text-on-strong: #ffffff;
}

/* Отдых — намеренно почти фон: он не конкурирует с тренировками. */
.load-day-legend .rest,
.heat-cell.rest,
.year-calendar-legend .rest {
  background: var(--day-rest);
}
.calendar-day-readable.day-load-rest {
  background: #f7f8f9;
  border: 1px solid #e1e5e9;
}
.calendar-day-readable.day-load-rest .status-rest {
  background: #eceff2;
  color: #7a8490;
}
.calendar-day-readable.day-load-rest .calendar-rest-readable,
.calendar-day-readable.day-load-rest .rest-day-subtitle {
  color: #8b949e;
}

/* Тренировочные дни — насыщенность растёт вместе с нагрузкой. */
.load-day-legend .recovery,
.heat-cell.recovery,
.year-calendar-legend .recovery { background: var(--day-recovery); }
.load-day-legend .light,
.heat-cell.light,
.year-calendar-legend .light { background: var(--day-light); }
.load-day-legend .volume,
.heat-cell.volume,
.year-calendar-legend .volume { background: var(--day-volume); }
.load-day-legend .hypertrophy,
.heat-cell.hypertrophy,
.year-calendar-legend .hypertrophy { background: var(--day-hypertrophy); }
.load-day-legend .heavy,
.heat-cell.heavy,
.year-calendar-legend .heavy { background: var(--day-heavy); }
.load-day-legend .strength,
.heat-cell.strength,
.year-calendar-legend .strength { background: var(--day-strength); }

/* Месячный календарь остаётся светлым, но тренировка выделена цветной рамкой. */
.calendar-day-readable.day-load-recovery,
.calendar-day-readable.day-load-light,
.calendar-day-readable.day-load-volume,
.calendar-day-readable.day-load-hypertrophy,
.calendar-day-readable.day-load-heavy,
.calendar-day-readable.day-load-strength,
.calendar-day-readable.day-load-training-unknown {
  background: #fff;
  border-width: 2px;
  border-style: solid;
}
.calendar-day-readable.day-load-recovery { border-color: var(--day-recovery); }
.calendar-day-readable.day-load-light { border-color: var(--day-light); }
.calendar-day-readable.day-load-volume { border-color: var(--day-volume); }
.calendar-day-readable.day-load-hypertrophy { border-color: var(--day-hypertrophy); }
.calendar-day-readable.day-load-heavy { border-color: var(--day-heavy); }
.calendar-day-readable.day-load-strength { border-color: var(--day-strength); }
.calendar-day-readable.day-load-training-unknown { border-color: var(--day-unknown); }

/* Сегодня видно независимо от типа дня. */
.calendar-day-readable.today {
  box-shadow: 0 0 0 2px rgba(31,184,106,.18);
}

/* Цветовые маркеры у упражнений синхронизированы с календарём. */
.load-style-recovery{color:#568467}.load-style-recovery::before{background:var(--day-recovery)}
.load-style-light{color:#397d55}.load-style-light::before{background:var(--day-light)}
.load-style-volume{color:#826a18}.load-style-volume::before{background:var(--day-volume)}
.load-style-hypertrophy{color:#98572d}.load-style-hypertrophy::before{background:var(--day-hypertrophy)}
.load-style-heavy{color:#91483d}.load-style-heavy::before{background:var(--day-heavy)}
.load-style-strength{color:#8e3845}.load-style-strength::before{background:var(--day-strength)}

/* На годовой сетке сильные тренировки читаются белым, отдых — тёмно-серым. */
.big-heatmap .heat-cell.rest .heat-day-number,
.big-heatmap .heat-cell.recovery .heat-day-number,
.big-heatmap .heat-cell.volume .heat-day-number { color: var(--day-text); }
.big-heatmap .heat-cell.light .heat-day-number,
.big-heatmap .heat-cell.hypertrophy .heat-day-number,
.big-heatmap .heat-cell.heavy .heat-day-number,
.big-heatmap .heat-cell.strength .heat-day-number { color: var(--day-text-on-strong); }


/* v0.10.1 — единая семантика цвета во всех календарях.
   Серый = выходной/отдых. Тренировочные цвета одинаковы в месяце и году. */
:root {
  --calendar-rest: #e3e6e9;
  --calendar-recovery: #b9dfc6;
  --calendar-light: #79c99a;
  --calendar-volume: #e5c45f;
  --calendar-hypertrophy: #e69a61;
  --calendar-heavy: #d96f5d;
  --calendar-strength: #c94f5f;
}

/* Серый всегда означает именно день отдыха. */
.heat-cell.rest,
.load-day-legend .rest,
.year-calendar-legend .rest {
  background: var(--calendar-rest) !important;
  border-color: #d5d9dd !important;
}

/* Годовой календарь: те же цвета нагрузки, что и в месячном. */
.big-heatmap .heat-cell.recovery { background: var(--calendar-recovery) !important; }
.big-heatmap .heat-cell.light { background: var(--calendar-light) !important; }
.big-heatmap .heat-cell.volume { background: var(--calendar-volume) !important; }
.big-heatmap .heat-cell.hypertrophy { background: var(--calendar-hypertrophy) !important; }
.big-heatmap .heat-cell.heavy { background: var(--calendar-heavy) !important; }
.big-heatmap .heat-cell.strength { background: var(--calendar-strength) !important; }

/* Обычная heatmap на главной использует ту же шкалу. */
.heat-cell.recovery { background: var(--calendar-recovery) !important; }
.heat-cell.light { background: var(--calendar-light) !important; }
.heat-cell.volume { background: var(--calendar-volume) !important; }
.heat-cell.hypertrophy { background: var(--calendar-hypertrophy) !important; }
.heat-cell.heavy { background: var(--calendar-heavy) !important; }
.heat-cell.strength { background: var(--calendar-strength) !important; }

/* Месячный календарь: серый фон только у выходного, тренировка — белая
   карточка с цветной рамкой соответствующей интенсивности. */
.calendar-day-readable.day-load-rest {
  background: #f1f2f3 !important;
  border-color: var(--calendar-rest) !important;
}
.calendar-day-readable.day-load-recovery { border-color: var(--calendar-recovery) !important; }
.calendar-day-readable.day-load-light { border-color: var(--calendar-light) !important; }
.calendar-day-readable.day-load-volume { border-color: var(--calendar-volume) !important; }
.calendar-day-readable.day-load-hypertrophy { border-color: var(--calendar-hypertrophy) !important; }
.calendar-day-readable.day-load-heavy { border-color: var(--calendar-heavy) !important; }
.calendar-day-readable.day-load-strength { border-color: var(--calendar-strength) !important; }


/* v0.10.2 — единая цветовая шкала нагрузки в ГОДОВОМ календаре */
.year-day.rest {
  background: var(--calendar-rest, #e3e6e9) !important;
  border-color: #d3d8dd !important;
  color: #747e89 !important;
}
.year-day.training.load-recovery {
  background: var(--calendar-recovery, #b9dfc6) !important;
  border-color: #9dceb0 !important;
  color: #315f43 !important;
}
.year-day.training.load-light {
  background: var(--calendar-light, #79c99a) !important;
  border-color: #62b985 !important;
  color: #174d2e !important;
}
.year-day.training.load-volume {
  background: var(--calendar-volume, #e5c45f) !important;
  border-color: #d5b448 !important;
  color: #624f12 !important;
}
.year-day.training.load-hypertrophy {
  background: var(--calendar-hypertrophy, #e69a61) !important;
  border-color: #d9864a !important;
  color: #643819 !important;
}
.year-day.training.load-heavy {
  background: var(--calendar-heavy, #d96f5d) !important;
  border-color: #c85b49 !important;
  color: #fff !important;
}
.year-day.training.load-strength {
  background: var(--calendar-strength, #c94f5f) !important;
  border-color: #b63d4d !important;
  color: #fff !important;
}
.year-day.training.load-unknown {
  background: #fff !important;
  border: 2px solid #aeb9c4 !important;
  color: #536170 !important;
}
.year-calendar-legend .legend-dot.recovery { background: var(--calendar-recovery, #b9dfc6); border-color:#9dceb0; }
.year-calendar-legend .legend-dot.light { background: var(--calendar-light, #79c99a); border-color:#62b985; }
.year-calendar-legend .legend-dot.volume { background: var(--calendar-volume, #e5c45f); border-color:#d5b448; }
.year-calendar-legend .legend-dot.hypertrophy { background: var(--calendar-hypertrophy, #e69a61); border-color:#d9864a; }
.year-calendar-legend .legend-dot.heavy { background: var(--calendar-heavy, #d96f5d); border-color:#c85b49; }
.year-calendar-legend .legend-dot.strength { background: var(--calendar-strength, #c94f5f); border-color:#b63d4d; }


/* v0.10.3 — тренировки без расчёта 1ПМ всё равно явно видны.
   Голубой = тренировка есть, но интенсивность не рассчитывается.
   Серый = только отдых. */
:root {
  --calendar-training-unrated: #9dc9e8;
  --calendar-training-unrated-border: #78afd5;
  --calendar-training-unrated-text: #245777;
}

/* Главная годовая heatmap */
.big-heatmap .heat-cell.training-unknown,
.heat-cell.training-unknown {
  background: var(--calendar-training-unrated) !important;
  border-color: var(--calendar-training-unrated-border) !important;
}
.big-heatmap .heat-cell.training-unknown .heat-day-number {
  color: var(--calendar-training-unrated-text) !important;
}

/* Месячный календарь */
.calendar-day-readable.day-load-training-unknown {
  background: #eef7fd !important;
  border: 2px solid var(--calendar-training-unrated-border) !important;
}

/* Отдельный годовой календарь */
.year-day.training.load-unknown {
  background: var(--calendar-training-unrated) !important;
  border: 2px solid var(--calendar-training-unrated-border) !important;
  color: var(--calendar-training-unrated-text) !important;
  font-weight: 850;
}

/* Легенды */
.load-day-legend .training-unknown,
.year-calendar-legend .legend-dot.training-unknown {
  background: var(--calendar-training-unrated) !important;
  border-color: var(--calendar-training-unrated-border) !important;
}

/* Adaptive strength UX & accessibility refresh */
:root{--muted:#586b7e;--line:#dbe4ec;--green-dark:#086b42}
:focus-visible{outline:3px solid #188e65;outline-offset:3px}
button,a,input,select,textarea{transition:box-shadow .15s ease,border-color .15s ease,background-color .15s ease}
button:disabled{opacity:.55;cursor:not-allowed}
.recommended-loads-wrap{overflow-x:auto;overscroll-behavior-inline:contain}
.recommended-loads-table th,.recommended-loads-table td{line-height:1.5}
.panel-subtitle{line-height:1.6;max-width:90ch}
.progress-chart-card{min-width:0}
.progress-chart-canvas{min-width:0}
@media(min-width:992px){.exercise-progress-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:991.98px){.exercise-progress-grid{grid-template-columns:1fr 1fr}}
@media(max-width:767.98px){
  .exercise-progress-grid{grid-template-columns:1fr}
  .panel,.exercise-row-card{overflow-wrap:anywhere}
  .workout-summary-bar{flex-wrap:wrap;gap:12px}
  .recommended-loads-table{font-size:13px}
  .sidebar-nav a{min-height:44px}
  .field-block{font-size:13px}
  .previous-result{font-size:12px}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}

/* Выбор упражнения синхронизирует графики и рекомендуемые веса. */
.recommended-loads-table tr[hidden] { display: none !important; }

/* Подсказка нагрузки в редакторе тренировки */
.training-type-field { min-width: 230px; }
.training-recommendation { margin-top: 8px; padding: 10px 12px; border: 1px solid #cfe2f8; background: #f4f9ff; border-radius: 9px; font-size: 13px; line-height: 1.55; color: #284c72; }

/* Мгновенная оценка интенсивности непосредственно под весом */
.weight-percent-hint {display:block; margin-top:6px; font-size:12px; font-weight:600; line-height:1.4; color:#245e90;}

/* v8: resilient workout editor layout, separate controls and readable recommendations */
#workout-form .exercise-row-card { padding: 18px; overflow: hidden; }
#workout-form .exercise-grid { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:20px 16px; align-items:start; }
#workout-form .exercise-grid > * { min-width:0; max-width:100%; grid-column:auto; margin:0; }
#workout-form .exercise-picker { grid-column:span 5; }
#workout-form .training-type-field { grid-column:span 4; min-width:0; }
#workout-form .exercise-grid > .compact-field:has(input[name="weight"]) { grid-column:span 3; }
#workout-form .sets-field { grid-column:span 5; }
#workout-form .exercise-grid > .compact-field:has(.target-input) { grid-column:span 3; }
#workout-form .comment-field { grid-column:span 3; }
#workout-form .remove-exercise-button { grid-column:span 1; justify-self:end; align-self:start; margin-top:25px; }
#workout-form .exercise-grid .field-block { font-size:13px; line-height:1.4; gap:7px; color:#52647a; }
#workout-form .exercise-grid .input { width:100%; min-width:0; max-width:100%; min-height:44px; font-size:14px; }
#workout-form .previous-result { font-size:12px; line-height:1.5; overflow-wrap:anywhere; }
#workout-form .training-recommendation { margin-top:3px; padding:12px 14px; font-size:13px; line-height:1.6; font-weight:500; overflow-wrap:anywhere; }
#workout-form .weight-percent-hint { font-size:13px; font-weight:700; line-height:1.6; overflow-wrap:anywhere; }
#workout-form .sets-editor { gap:10px; }
#workout-form .set-box { grid-template-columns:22px 70px 20px; gap:5px; }
#workout-form .set-reps { width:70px!important; min-height:44px!important; }
#workout-form .set-number { width:22px; height:22px; font-size:11px; }
#workout-form .remove-set { font-size:19px; min-width:20px; cursor:pointer; }
#workout-form .text-button { font-size:13px; padding:6px 0; cursor:pointer; }
@media(max-width:1100px){
 #workout-form .exercise-picker {grid-column:span 6}
 #workout-form .training-type-field {grid-column:span 6}
 #workout-form .exercise-grid > .compact-field:has(input[name="weight"]) {grid-column:span 6}
 #workout-form .sets-field {grid-column:span 6}
 #workout-form .exercise-grid > .compact-field:has(.target-input) {grid-column:span 6}
 #workout-form .comment-field {grid-column:span 5}
}
@media(max-width:640px){
 #workout-form .exercise-row-card {padding:14px}
 #workout-form .exercise-grid {grid-template-columns:minmax(0,1fr);gap:14px}
 #workout-form .exercise-grid > * {grid-column:1/-1!important}
 #workout-form .remove-exercise-button {justify-self:end;margin-top:0}
 #workout-form .workout-actions {flex-wrap:wrap;gap:10px}
}

/* v9: one horizontal row of controls on wide screens; helper text stays under its field. */
@media (min-width: 1451px) {
  #workout-form .exercise-grid {
    grid-template-columns: minmax(215px,2.4fr) minmax(205px,2fr) minmax(110px,1fr) minmax(175px,1.65fr) minmax(100px,.9fr) minmax(135px,1.4fr) 32px;
    column-gap: 12px;
    row-gap: 10px;
  }
  #workout-form .exercise-grid > * {grid-column:auto !important; min-width:0;}
  #workout-form .remove-exercise-button {grid-column:7 !important; align-self:start; justify-self:end; margin-top:29px;}
  #workout-form .sets-editor {display:flex;flex-wrap:wrap;gap:5px;}
  #workout-form .set-box {flex:0 0 auto;}
  #workout-form .training-recommendation {padding:8px 10px;font-size:12px;line-height:1.45;}
  #workout-form .weight-percent-hint {font-size:12px;line-height:1.45;}
}
@media (min-width: 641px) and (max-width: 1450px) {
  #workout-form .exercise-grid { grid-template-columns:repeat(12,minmax(0,1fr)); }
  #workout-form .exercise-picker {grid-column:span 5;}
  #workout-form .training-type-field {grid-column:span 4;}
  #workout-form .exercise-grid > .compact-field:has(input[name="weight"]) {grid-column:span 3;}
  #workout-form .sets-field {grid-column:span 5;}
  #workout-form .exercise-grid > .compact-field:has(.target-input) {grid-column:span 3;}
  #workout-form .comment-field {grid-column:span 3;}
  #workout-form .remove-exercise-button {grid-column:span 1;}
}

/* v10: no manual goal field; derived from the selected loading zone. */
@media (min-width:1451px) {
 #workout-form .exercise-grid {grid-template-columns:minmax(205px,2.3fr) minmax(210px,2fr) minmax(125px,1.05fr) minmax(190px,1.7fr) minmax(155px,1.45fr) 32px;}
 #workout-form .remove-exercise-button {grid-column:6 !important;}
}
@media (min-width:641px) and (max-width:1450px) {
 #workout-form .sets-field {grid-column:span 6;}
 #workout-form .comment-field {grid-column:span 5;}
 #workout-form .remove-exercise-button {grid-column:span 1;}
}
