@font-face { font-family: "Manrope"; font-style: normal; font-weight: 200 800; font-display: swap; src: url("./fonts/manrope-cyrillic-wght-normal.woff2") format("woff2-variations"), url("./fonts/manrope-cyrillic-wght-normal.woff2") format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Manrope"; font-style: normal; font-weight: 200 800; font-display: swap; src: url("./fonts/manrope-latin-wght-normal.woff2") format("woff2-variations"), url("./fonts/manrope-latin-wght-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
:root {
  font-family: "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  color: #1d222a;
  background: #f2f3f7;
  font-synthesis: none;
}
* { box-sizing: border-box; }
html { min-height: 100%; }
body { margin: 0; min-height: 100vh; background: #f2f3f7; }
button, input { font: inherit; }
button { cursor: pointer; }
button:focus-visible, a:focus-visible, summary:focus-visible { outline: 2px solid #435067; outline-offset: 2px; }
a { color: inherit; }
.app-shell { width: min(100%, 820px); margin: auto; padding: 0 24px 108px; }

.topbar { height: 64px; border-bottom: 1px solid #d9dce1; display: flex; align-items: center; justify-content: space-between; }
.brand { display: flex; align-items: center; gap: 8px; font-size: 22px; font-weight: 750; letter-spacing: -.04em; }
.topbar-meta { color: #525764; font-size: 12px; }
.page-heading { padding: 22px 0 16px; }
.page-heading h1 { font-size: clamp(32px, 6vw, 42px); line-height: 1.1; letter-spacing: -.045em; margin: 4px 0 6px; }
.page-heading p:not(.kicker) { color: #515761; line-height: 1.45; margin: 0; font-size: 14px; }
.home-heading { padding: 14px 0 5px; }
.home-heading h1 { margin: 0; }
.kicker, .eyebrow { font-size: 12px; font-weight: 650; color: #545b68; margin: 0; }

.hero-panel { border-bottom: 1px solid #d9dce1; padding: 0 0 10px; }
.hero-label { color: #4b5362; font-size: 12px; font-weight: 700; }
.hero-panel h2 { font-size: 22px; letter-spacing: -.025em; margin: 5px 0 3px; }
.hero-panel p { margin: 0; color: #4f5560; font-size: 14px; }
.hero-panel + .section-title { margin-top: 15px; }
.section-title, .section-heading h2 { font-size: 18px; letter-spacing: -.02em; margin: 20px 0 10px; font-weight: 700; }
.section-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin: 22px 0 8px; }
.section-heading h2 { margin: 0; }
.section-heading span { color: #535964; font-size: 13px; white-space: nowrap; }

.today-workout, .rest-today { background: #fff; border: 1px solid #d9dce2; border-radius: 10px; padding: 17px 18px; }
.today-workout { padding: 14px 15px 10px; }
.today-workout h2 { font-size: clamp(24px, 4vw, 30px); line-height: 1.15; letter-spacing: -.035em; margin: 8px 0 5px; }
.today-direction { color: #4f5a6e; font-size: 13px; font-weight: 700; }
.today-duration { color: #4c5666; font-weight: 700; margin: 0 0 9px; }
.today-goal { color: #363d48; line-height: 1.48; margin: 0 0 11px; font-size: 14px; }
.today-brief { color: #525764; line-height: 1.42; font-size: 13px; margin: 0 0 12px; }
.today-workout .primary-btn { width: 100%; }
.rest-today h3 { font-size: 20px; letter-spacing: -.02em; margin: 0 0 4px; }
.rest-today p { color: #525764; margin: 0; line-height: 1.45; font-size: 14px; }
.quick-actions, .week-actions { display: flex; align-items: center; gap: 8px; }
.quick-actions { margin-top: 8px; }
.quick-actions button, .week-actions button { min-height: 44px; border: 1px solid #d3d7de; border-radius: 9px; background: #fff; padding: 8px 14px; color: #323d4f; font-size: 13px; font-weight: 700; }
.quick-actions button:hover, .week-actions button:hover { border-color: #677896; }
.inline-status { color: #555f71; font-size: 13px; font-weight: 700; }
.completed-status { color: #3e5274; }
.skipped-status { color: #6e7687; }
.today-workout > .inline-status { display: block; margin-top: 11px; }

.week-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: stretch; gap: 10px; }
.week-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; min-width: 0; background: #fff; border: 1px solid #d6d8dd; border-radius: 10px; overflow: hidden; }
.week-item.is-today { border-color: #68768e; box-shadow: inset 3px 0 #68768e; }
.week-item-main { display: block; width: 100%; text-align: left; border: 0; background: transparent; padding: 10px 11px; color: #1d222a; min-width: 0; }
.week-item-main:hover strong { text-decoration: underline; }
.week-date { display: block; color: #273142; font-size: 14px; font-weight: 650; margin-bottom: 7px; }
.week-kind { display: block; font-weight: 600; font-size: 14px; }
.week-item-main strong { display: block; font-size: 13px; font-weight: 500; color: #505660; margin-top: 1px; }
.week-item-main small { display: block; color: #8b715e; margin-top: 4px; }
.week-actions { flex-direction: column; align-items: stretch; gap: 4px; padding: 6px 7px 6px 0; }
.week-actions button { min-height: 36px; padding: 4px 6px; font-size: 11.5px; white-space: nowrap; background: #fff; border-color: #d1d3d8; font-weight: 600; border-radius: 6px; }
.week-actions button:last-child { color: #555b68; }
.week-actions button:hover { background: #fbedd9; border-color: #68768e; }
.week-item > .inline-status { display: block; grid-column: 1 / -1; padding: 0 11px 10px; font-weight: 500; }
.badge { display: inline-flex; color: #646b7a; font-size: 12px; font-weight: 700; white-space: nowrap; }
.badge-completed { color: #3e5274; }
.badge-skipped { color: #6e7687; }

.bottom-nav { position: fixed; z-index: 10; left: 50%; bottom: 0; transform: translateX(-50%); width: min(100%, 820px); display: grid; grid-template-columns: repeat(4, 1fr); background: #fff; border-top: 1px solid #dadde2; padding: 5px 8px calc(5px + env(safe-area-inset-bottom)); box-shadow: 0 -3px 16px #1922310c; }
.bottom-nav button { border: 0; background: transparent; color: #646b7b; display: flex; flex-direction: column; align-items: center; gap: 1px; min-height: 51px; padding: 4px 1px; font-size: 11px; font-weight: 650; }
.bottom-nav button span { font-size: 20px; line-height: 1.2; }
.bottom-nav button.active { color: #26334a; background: #e5eaf3; border-radius: 9px; }

.calendar-panel { padding: 0; }
.calendar-layout { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 18px; align-items: start; }
.calendar-preview { min-width: 0; padding: 13px; border: 1px solid #d6d8dd; border-radius: 10px; background: #fff; }
.calendar-preview h2 { font-size: 15px; margin: 0 0 9px; color: #273142; }
.calendar-preview h3 { font-size: 18px; margin: 4px 0 8px; line-height: 1.3; }
.preview-type { font-size: 13px; margin: 0; color: #525764; }
.preview-unmarked { display: block; color: #636a79; font-size: 13px; font-weight: 600; }
.preview-moved { font-size: 13px; color: #826a56; margin: 7px 0 0; }
.preview-rest { margin: 0; font-size: 18px; }
.calendar-preview .primary-btn { width: 100%; margin-top: 10px; font-size: 13px; }
.calendar-preview-session + .calendar-preview-session { border-top: 1px solid #d6d8dd; margin-top: 12px; padding-top: 12px; }
.calendar-day[aria-pressed="true"] { outline: 2px solid #49576e; outline-offset: 1px; background: #cfd9eb; }
.calendar-toolbar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.calendar-toolbar h2 { font-size: 18px; margin: 0; }
.calendar-toolbar button, .icon-btn { border: 1px solid #d5d9df; background: #fff; width: 42px; height: 42px; border-radius: 9px; font-size: 20px; }
.calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 5px; }
.weekdays span { text-align: center; color: #555b66; font-size: 12px; font-weight: 650; padding-bottom: 8px; }
.calendar-day { position: relative; min-width: 0; min-height: 55px; padding: 4px 0; border: 1px solid transparent; background: transparent; border-radius: 5px; display: flex; align-items: center; justify-content: flex-start; gap: 3px; flex-direction: column; color: #616877; font-size: 13px; }
.calendar-day.has-session { background: #e3e7ef; border-color: #cbd2dc; color: #262e3d; }
.calendar-day.has-session.is-unmarked { background: #ebecef; border-color: #ced0d6; color: #414650; }
.calendar-day.is-unmarked[aria-pressed="true"] { background: #dee0e4; outline-color: #384254; }
.calendar-day.is-today { border-color: #384254; }
.calendar-number { display: inline-flex; align-items: center; justify-content: center; min-width: 23px; height: 23px; border-radius: 50%; }
.calendar-day.is-today .calendar-number { background: #263042; color: #fff; }
.calendar-workout { max-width: 100%; overflow: hidden; text-overflow: ellipsis; font-size: 12px; line-height: 1.2; font-weight: 600; white-space: nowrap; }
.calendar-workout.completed { color: #364b6f; text-decoration: underline; text-underline-offset: 3px; }
.calendar-workout.skipped { color: #676e7e; text-decoration: line-through; font-weight: 400; }
.calendar-moved { position: absolute; top: 2px; right: 1px; display: inline-flex; align-items: center; justify-content: center; width: 11px; height: 11px; border: 1px solid #ddcab9; border-radius: 3px; background: #f7eee5; color: #765941; font-size: 9px; line-height: 1; }
.calendar-blank { min-height: 55px; }

.detail-back-bar { position: sticky; top: 0; z-index: 9; display: flex; align-items: center; min-height: 48px; margin: 0 -24px; padding: 0 24px; background: #f2f3f7; border-bottom: 1px solid #d9dce1; }
.back-link { border: 0; background: transparent; color: #455165; font-weight: 700; padding: 0; min-height: 44px; }
.detail-back-bar + .page-heading { padding-top: 9px; }
.detail-panel, .content-panel, .notice-panel { background: #fff; border: 1px solid #d9dce2; border-radius: 10px; padding: 16px 18px; margin: 9px 0; }
.detail-panel { background: #1b222f; border-color: #1b222f; color: #fff; }
.detail-top { display: flex; align-items: center; justify-content: space-between; }
.detail-duration { margin-left: auto; font-size: 22px; font-weight: 700; }
.detail-panel .eyebrow { color: #fecc80; margin-top: 12px; }
.detail-panel h2 { font-size: 16px; margin: 14px 0 4px; }
.detail-panel p { color: #d9dce2; line-height: 1.48; margin: 0; }
.detail-panel .moved-note { border-top: 1px solid #444e5e; margin-top: 13px; padding-top: 10px; font-size: 13px; }
.detail-panel .badge { color: #ffc773; }
.content-panel h2, .notice-panel h2 { font-size: 18px; margin: 0 0 10px; letter-spacing: -.02em; }
.content-panel p, .notice-panel p { line-height: 1.5; }
.panel-intro { color: #656c7b; font-size: 13px; }
.video-row { display: flex; align-items: center; gap: 11px; text-decoration: none; padding: 13px 0; border-top: 1px solid #e7e9ec; }
.video-row:hover strong { text-decoration: underline; }
.video-number { width: 26px; height: 26px; border-radius: 50%; background: #fae6c7; color: #384254; display: grid; place-items: center; font-size: 12px; font-weight: 700; flex: none; }
.video-row > span:nth-child(2) { flex: 1; }
.video-row strong, .video-row small { display: block; }
.video-row strong { font-size: 14px; }
.video-row small { color: #646b7b; line-height: 1.45; margin-top: 3px; font-size: 12px; }
.interval-list { padding-left: 22px; line-height: 1.7; margin: 0; }
.notice-panel { background: #f0eee5; }
.notice-panel p { color: #5e6574; margin: 0; font-size: 14px; }
.action-stack { display: grid; gap: 8px; margin: 18px 0; }
.primary-btn, .secondary-btn, .action-pair button { min-height: 46px; border-radius: 9px; padding: 11px 14px; border: 1px solid #d1d6de; font-weight: 700; }
.primary-btn { background: #ffc773; border-color: #ffc773; color: #1b2332; }
.primary-btn:hover { background: #febd5c; }
.secondary-btn, .action-pair button { background: #fff; color: #303b4e; }
.action-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.text-btn { min-height: 44px; border: 0; background: transparent; color: #616776; font-weight: 700; }
.data-history-link { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 48px; padding: 12px 16px; margin: 9px 0; border: 1px solid #d9dce2; border-radius: 10px; background: #fff; color: #273142; font-weight: 700; text-align: left; }
.data-history-link span { color: #616776; font-size: 20px; line-height: 1; }
.small-action { border: 0; background: #dce3ee; color: #32425e; border-radius: 8px; padding: 8px 10px; min-height: 40px; font-size: 13px; font-weight: 700; }
.section-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.section-row h2 { margin: 0; }
.subtle-note { color: #666d7d; font-size: 13px; line-height: 1.5; }

.session-card { display: block; width: 100%; text-align: left; background: #fff; color: #1d222a; border: 1px solid #dadde2; border-radius: 9px; padding: 14px; margin: 8px 0; }
.session-card:hover strong { text-decoration: underline; }
.session-card strong { display: block; font-size: 17px; margin: 6px 0; }
.session-card .card-meta { color: #636a7a; font-size: 13px; }
.card-line { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.history-card { display: block; width: 100%; min-width: 0; text-align: left; color: #1d222a; background: #fff; border: 1px solid #dadde2; border-radius: 9px; padding: 9px 14px; margin: 8px 0; }
.history-card:hover .history-main { text-decoration: underline; }
.history-card-top { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 3px 10px; }
.history-date { color: #273142; font-size: 13px; font-weight: 650; }
.history-status { color: #3e5274; font-size: 12px; font-weight: 700; white-space: nowrap; }
.history-main { display: block; margin-top: 7px; font-size: 16px; line-height: 1.25; }
.history-description { display: block; margin-top: 2px; color: #525764; font-size: 13px; }
.history-badges { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 9px; }
.history-load, .history-moved { display: inline-flex; align-items: center; max-width: 100%; border: 1px solid #dddfe4; border-radius: 6px; background: #f2f4f7; padding: 3px 7px; color: #4a525f; font-size: 11px; line-height: 1.25; }
.history-moved { border-color: #e8ddd0; background: #faf6f0; color: #826a56; }
.empty-state { background: #fff; border: 1px solid #d9dce2; border-radius: 10px; padding: 20px; }
.empty-state > span { color: #818c9e; font-size: 26px; }
.empty-state h2 { font-size: 19px; margin: 8px 0 4px; }
.empty-state p { color: #666d7d; margin: 0; font-size: 14px; }
.progress-summary { padding: 15px 16px 13px; border: 1px solid #d9dce2; border-radius: 10px; background: #fff; }
.progress-summary > strong { display: block; margin-bottom: 11px; font-size: clamp(21px, 4vw, 26px); letter-spacing: -.025em; }
.progress-summary > .progress-track { height: 9px; }
.progress-summary-meta { display: flex; flex-wrap: wrap; gap: 5px 18px; margin-top: 10px; color: #525764; font-size: 12px; }
.progress-breakdown { margin: 18px 0 0; padding-top: 13px; border-top: 1px solid #d9dce1; }
.progress-breakdown h2 { margin: 0 0 6px; font-size: 18px; letter-spacing: -.02em; }
.progress-row { display: grid; grid-template-columns: minmax(124px, 1fr) minmax(56px, 1.2fr) 38px; align-items: center; gap: 9px; padding: 6px 0; font-size: 13px; }
.progress-row strong { text-align: right; white-space: nowrap; }
.direction-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 10px; }
.direction-card { min-width: 0; padding: 10px 11px; border: 1px solid #d9dce2; border-radius: 9px; background: #fff; }
.direction-card-top { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; min-height: 19px; font-size: 13px; }
.direction-card-top strong { flex: none; font-size: 13px; white-space: nowrap; }
.direction-card > .progress-track { margin-top: 9px; }
.progress-track { display: block; height: 7px; border-radius: 10px; background: #e7eaef; overflow: hidden; }
.progress-track i { display: block; height: 100%; background: #7a95c3; }
.measure-latest { padding: 12px 0; border-top: 1px solid #e4e6ea; }
.measure-latest span { color: #6c7384; font-size: 12px; }
.measure-latest strong { display: block; font-size: 23px; margin-top: 4px; }
.measure-latest p { color: #656c7b; font-size: 13px; margin: 4px 0 0; }
.measure-latest .measure-delta { display: block; margin-top: 2px; color: #656c7b; font-size: 12px; font-weight: 400; }
.measure-latest .measure-changes { font-size: 12px; }
.measure-chart { padding: 12px 0 6px; border-top: 1px solid #e4e6ea; }
.measure-chart-title { margin: 0 0 6px; color: #6c7384; font-size: 12px; }
.measure-chart svg { display: block; width: 100%; height: auto; max-height: 190px; }
.measure-chart text { font-family: inherit; }
.measure-list > div { display: flex; justify-content: space-between; align-items: center; gap: 8px; border-top: 1px solid #e4e6ea; padding: 8px 0; color: #626978; font-size: 12px; }
.measure-list button { border: 0; background: transparent; font-size: 20px; color: #71798b; }
.toast { display: flex; justify-content: space-between; align-items: center; background: #f5e9dc; border-radius: 8px; padding: 9px 12px; margin-top: 12px; font-size: 13px; }
.toast button { border: 0; background: transparent; font-size: 19px; }

dialog { width: min(92vw, 460px); border: 0; border-radius: 14px; padding: 0; box-shadow: 0 20px 60px #0c121c55; }
dialog::backdrop { background: #11172199; }
.dialog-content { padding: 20px; }
.dialog-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.dialog-head h2 { font-size: 21px; letter-spacing: -.025em; margin: 0; }
.dialog-content > p { color: #626877; line-height: 1.5; }
.rating-options { display: grid; grid-template-columns: repeat(3, 1fr); gap: 7px; }
.rating-options button { min-height: 48px; border: 1px solid #d2d8e1; border-radius: 9px; background: #f2f4f8; font-weight: 700; }
.rating-options button.selected, .rating-options button:hover { background: #ffc773; }
.dialog-note { color: #686f7f; font-size: 12px; }
.field-label { display: grid; gap: 6px; font-size: 13px; font-weight: 700; margin: 13px 0; }
.field-label input { width: 100%; min-height: 42px; border: 1px solid #cacfd7; border-radius: 8px; padding: 9px; }
.measure-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 0 10px; }
.dialog-content > .primary-btn { width: 100%; margin-top: 8px; }

@media (max-width: 600px) {
  .app-shell { padding: 0 16px 94px; }
  .detail-back-bar { margin: 0 -16px; padding: 0 16px; }
  .topbar { height: 58px; }
  .topbar-meta { font-size: 11px; }
  .page-heading { padding: 19px 0 15px; }
  .page-heading h1 { font-size: 32px; }
  .home-heading { padding: 13px 0 5px; }
  .hero-panel { padding: 0 0 10px; }
  .hero-panel h2 { font-size: 20px; }
  .today-workout, .rest-today { padding: 16px; }
  .today-workout { padding: 13px 13px 10px; }
  .today-workout h2 { font-size: 24px; }
  .week-list { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .week-item { grid-template-columns: minmax(0, 1fr); }
  .week-actions { flex-direction: row; padding: 0 11px 8px; }
  .week-actions button { min-height: 44px; }
  .calendar-layout { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .calendar-grid { gap: 3px; }
  .calendar-day, .calendar-blank { min-height: 50px; }
  .calendar-workout { font-size: 10px; letter-spacing: -.2px; }
  .direction-grid { grid-template-columns: minmax(0, 1fr); }
  .content-panel, .detail-panel, .notice-panel { padding: 15px; }
  .bottom-nav button { font-size: 10px; }
}
@media (min-width: 601px) and (max-width: 760px) {
  .calendar-workout { font-size: 10px; letter-spacing: -.3px; }
}
@media (max-width: 360px) {
  .calendar-workout { font-size: 9px; letter-spacing: -.4px; }
}

.cycle-overview { margin-top: 26px; }
.cycle-overview > h2 { font-size: 18px; margin: 0 0 10px; }
.cycle-week { border-top: 1px solid #d6d8dd; }
.cycle-week:last-child { border-bottom: 1px solid #d6d8dd; }
.cycle-week h3 { margin: 0; }
.cycle-week-toggle { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 44px; padding: 6px 8px; border: 0; background: transparent; color: #273142; text-align: left; }
.cycle-week-heading { display: flex; flex: 1 1 auto; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; min-width: 0; }
.cycle-week-heading strong { font-size: 15px; font-weight: 700; }
.cycle-week-heading small, .cycle-week-count { color: #535964; font-size: 12px; font-weight: 500; }
.cycle-week-count { flex: 0 0 auto; white-space: nowrap; }
.cycle-week-chevron { flex: 0 0 16px; text-align: right; font-size: 19px; font-weight: 400; }
.cycle-week-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 0 0 12px; }
.cycle-week-grid[hidden] { display: none; }
.cycle-session { display: flex; flex-direction: column; align-items: flex-start; width: 100%; min-width: 0; min-height: 44px; padding: 7px 10px; border: 1px solid #d6d8dd; border-radius: 10px; background: #fff; text-align: left; color: #1d222a; line-height: 1.3; }
.cycle-session:hover { background: #f4f6f9; border-color: #b2bac9; }
.cycle-session.is-selected { border-color: #68768e; box-shadow: inset 3px 0 #68768e; }
.cycle-session-top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; width: 100%; min-width: 0; margin-bottom: 4px; }
.cycle-session-date { color: #273142; font-size: 14px; font-weight: 650; }
.cycle-session-status { flex: 0 0 auto; font-size: 11px; font-weight: 700; white-space: nowrap; color: #5e6473; }
.cycle-session-status.completed { color: #3e5274; }
.cycle-session-kind { font-size: 14px; font-weight: 600; }
.cycle-session-title { color: #505660; font-size: 13px; margin-top: 1px; overflow-wrap: anywhere; }
.cycle-notes { display: flex; flex-wrap: wrap; gap: 4px; max-width: 100%; margin-top: 4px; }
.cycle-note { display: inline-flex; align-items: center; max-width: 100%; padding: 1px 5px; border: 1px solid; border-radius: 5px; font-size: 11px; line-height: 1.2; white-space: nowrap; }
.cycle-unmarked { color: #636a79; border-color: #dfe1e5; background: #f3f4f6; }
.cycle-moved { color: #8b715e; border-color: #e8ddd0; background: #faf6f1; }
@media (max-width: 600px) {
  .cycle-week-grid { grid-template-columns: minmax(0, 1fr); }
}

/* Compact skill controls are scoped to the Friday workout detail. */
.skill-section { border-top: 1px solid #c8ccd4; margin-top: 24px; padding-top: 14px; }
.skill-section h2 { font-size: 20px; margin: 3px 0 4px; }
.skill-section p { font-size: 13px; line-height: 1.45; }
.skill-overline { margin: 0; color: #555c69; font-weight: 700; }
.skill-meta { margin: 0; color: #364052; }
.skill-intro { margin: 8px 0 4px; }
.skill-section .skill-equipment { margin: 0 0 9px; color: #636a79; font-size: 12px; }
.skill-equipment strong { font-weight: 600; }
.skill-section summary { cursor: pointer; }
.skill-help { margin: 0 0 6px; font-size: 13px; }
.skill-help > summary { display: inline-flex; align-items: center; gap: 5px; min-height: 34px; color: #394458; font-weight: 650; list-style: none; }
.skill-help > summary::-webkit-details-marker { display: none; }
.skill-help-arrow::after { content: '▾'; }
.skill-help[open] .skill-help-arrow::after { content: '▴'; }
.skill-help-item { max-width: 65ch; margin: 7px 0 12px; }
.skill-help-item h3 { margin: 0 0 3px; color: #273142; font-size: 13px; font-weight: 700; }
.skill-help-item p { margin: 0; color: #525764; }
.skill-exercise { position: relative; border-top: 1px solid #d9dce1; padding: 8px 0; min-width: 0; }
.skill-exercise > summary { display: block; list-style: none; min-height: 44px; padding: 3px 92px 3px 17px; font-size: 15px; font-weight: 700; line-height: 1.3; }
.skill-exercise > summary::-webkit-details-marker { display: none; }
.skill-exercise > summary::before { content: '▾'; position: absolute; left: 0; color: #586272; }
.skill-exercise:not([open]) > summary::before { content: '▸'; }
.skill-exercise-name { overflow-wrap: anywhere; }
.skill-done { display: inline-block; color: #3a4c6c; font-size: 12px; margin-left: 8px; white-space: nowrap; }
.skill-exercise.is-complete:not([open]) { background: #eff1f4; }
.skill-video { position: absolute; right: 0; top: 9px; display: inline-flex; align-items: center; min-height: 44px; font-size: 13px; font-weight: 700; white-space: nowrap; }
.skill-exercise-body { padding: 0 0 0 17px; }
.skill-dose { margin: 0 0 6px; color: #464c56; }
.skill-dose strong { color: #252c38; }
.skill-band { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 10px; margin-bottom: 4px; font-size: 13px; }
.skill-band label { display: inline-flex; align-items: center; gap: 7px; font-weight: 600; }
.skill-band select, .skill-other-doses select { max-width: min(100%, 190px); min-height: 40px; border: 1px solid #bcc1ca; background: #fff; border-radius: 6px; padding: 5px 8px; font: inherit; color: #1d222a; }
.skill-band small { color: #525764; }
.skill-progression { display: flex; align-items: center; flex-wrap: wrap; gap: 2px 14px; margin: 0 0 3px; font-size: 12px; }
.skill-progression button, .skill-other-doses > summary { border: 0; background: transparent; color: #404c61; padding: 5px 0; font-size: 12px; font-weight: 650; text-decoration: underline; text-underline-offset: 2px; }
.skill-other-doses > summary { list-style: none; }
.skill-other-doses > summary::-webkit-details-marker { display: none; }
.skill-other-doses label { display: block; margin: 4px 0; font-size: 12px; }
.skill-other-doses select { display: block; margin-top: 4px; width: min(100%, 240px); }
.skill-sets { margin: 0 0 2px; }
.skill-set { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 0 6px; min-width: 0; font-size: 13px; }
.skill-set-check { display: flex; align-items: center; gap: 8px; min-width: 0; min-height: 44px; cursor: pointer; }
.skill-set-check span { min-width: 0; }
.skill-set input[type=checkbox] { flex: none; width: 21px; height: 21px; margin: 0; accent-color: #3d4e6c; }
.skill-reps-trigger, .skill-reps-editor button { flex: none; min-height: 40px; border: 0; background: transparent; padding: 0 2px; color: #455063; font-size: 12px; font-weight: 600; }
.skill-reps-editor { display: inline-flex; align-items: center; flex: none; gap: 5px; margin-left: auto; min-height: 44px; font-size: 12px; }
.skill-reps-editor label { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
.skill-reps-editor input { width: 49px; min-height: 36px; border: 1px solid #bcc1ca; border-radius: 6px; padding: 3px 5px; color: #1d222a; }
.skill-technique-note > summary { display: inline-flex; align-items: center; min-height: 30px; color: #525764; font-size: 12px; }
.skill-technique-note p { margin: 0 0 4px; color: #525764; }
.skill-skip { min-height: 44px; margin-top: 5px; padding: 4px 0; border: 0; background: transparent; color: #525764; font-size: 13px; text-decoration: underline; text-underline-offset: 2px; }
.skill-section summary:focus-visible, .skill-section button:focus-visible, .skill-section select:focus-visible, .skill-section input:focus-visible { outline: 2px solid #435067; outline-offset: 2px; }
@media (max-width: 600px) { .skill-done { display: block; margin: 2px 0 0; } }
.asanas-entry { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 56px; padding: 12px 16px; margin: 9px 0; border: 1px solid #d9dce2; border-radius: 10px; background: #fff; color: #273142; text-align: left; }
.asanas-entry-text { display: grid; gap: 2px; }
.asanas-entry small { color: #525764; font-size: 13px; }
.asanas-entry > span[aria-hidden] { color: #616776; font-size: 20px; line-height: 1; }
.asanas-summary { display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: baseline; margin: 6px 0 10px; }
.asanas-summary strong { font-size: 20px; letter-spacing: -.02em; }
.asanas-summary span { color: #525764; font-size: 13px; }
.asana-filters { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 6px; }
.asana-filters button { min-height: 40px; padding: 8px 12px; border: 1px solid #d1d6de; border-radius: 999px; background: #fff; color: #303b4e; font-size: 13px; font-weight: 700; }
.asana-filters button[aria-pressed="true"] { background: #dce3ee; border-color: #435067; }
.asana-group h2 { font-size: 18px; margin: 18px 0 6px; letter-spacing: -.02em; }
.asana-group h2 small { color: #525764; font-size: 13px; font-weight: 600; }
.asana-sanskrit { margin: 2px 0 0; color: #616776; font-size: 12px; }
.asana-tags { display: flex; flex-wrap: wrap; gap: 5px; margin: 8px 0 0; }
.asana-tag { padding: 3px 8px; border-radius: 999px; background: #eceef2; color: #3f4754; font-size: 12px; }
.asana-tag-top { background: #dce3ee; font-weight: 700; }
.asana-video { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; margin: 9px 0 0; }
.asana-video a { color: #32425e; font-weight: 700; min-height: 32px; display: inline-flex; align-items: center; }
.asana-video small { color: #525764; font-size: 12px; }
.asana-checks { display: grid; gap: 2px; margin-top: 8px; }
.asana-checks label { display: flex; align-items: center; gap: 10px; min-height: 44px; }
.asana-checks input { width: 22px; height: 22px; flex: none; accent-color: #32425e; }
.asana-art { margin: 8px 0; background: #fbfaf6; border-radius: 8px; }
.asana-art img { display: block; width: 100%; height: auto; max-height: 170px; object-fit: contain; }
.asana-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 8px 0; }
.asana-tile { position: relative; display: block; padding: 0; background: #fff; border: 1px solid #d9dce2; border-radius: 10px; text-align: center; color: #273142; }
.asana-tile.is-can { background: #ebeff6; border-color: #abb9d1; }
.asana-tile-art { position: relative; display: block; background: #fbfaf6; border-radius: 7px; }
.asana-tile-art img { display: block; width: 100%; height: auto; }
.asana-tile-name { display: flex; align-items: center; justify-content: center; min-height: 2.4em; font-size: 12px; font-weight: 700; line-height: 1.2; overflow-wrap: anywhere; }
.asana-badge { position: absolute; top: 3px; display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; font-size: 11px; line-height: 1; }
.asana-badge-top { left: 3px; }
.asana-badge-can { right: 3px; background: #32425e; color: #fff; font-weight: 700; }
.asana-badge-support { right: 3px; background: #dce3ee; color: #32425e; border: 1px solid #abb9d1; }

.asana-tile { padding: 5px 5px 4px; gap: 3px; }
.asana-tile-name { padding: 0; min-height: 2.4em; }
.asana-tile .asana-sanskrit { display: block; margin: 0; font-size: 10px; line-height: 1.2; color: #616776; overflow-wrap: anywhere; }
.asana-emoji { display: flex; justify-content: center; gap: 4px; font-size: 12px; min-height: 16px; }
.asana-goal { font-size: 10px; padding: 1px 6px; border-radius: 999px; background: #eceef2; color: #3f4754; }
.asana-video-box { display: flex; flex-direction: column; align-items: center; gap: 1px; }
.asana-video-link { color: #32425e; font-weight: 700; font-size: 12px; min-height: 28px; display: inline-flex; align-items: center; }
.asana-video-note { color: #525764; font-size: 10px; line-height: 1.2; }
.asana-check { display: flex; align-items: center; gap: 6px; min-height: 36px; font-size: 12px; text-align: left; border-top: 1px solid #eaecf0; padding-left: 2px; }
.asana-check input { width: 20px; height: 20px; flex: none; accent-color: #32425e; }

.yoga-today { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; margin: 0 0 12px; padding: 12px 14px; background: #ebeff6; border: 1px solid #abb9d1; border-radius: 12px; color: #273142; text-align: left; font: inherit; }
.yoga-today strong, .yoga-today small { display: block; }
.yoga-today small { margin-top: 2px; color: #525764; font-size: 12px; }
.yoga-summary { margin: 4px 0 8px; }
.yoga-week { margin: 18px 0 4px; font-size: 17px; }
.yoga-tip, .yoga-links { margin: 2px 0; color: #525764; font-size: 13px; line-height: 1.4; }
.yoga-links a { color: #32425e; font-weight: 700; }
.yoga-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 8px; padding: 4px 12px; background: #fff; border: 1px solid #d9dce2; border-radius: 10px; }
.yoga-row.is-done { background: #ebeff6; border-color: #abb9d1; }
.yoga-row.is-today { border-color: #32425e; }
.yoga-check { display: flex; align-items: center; gap: 10px; min-height: 48px; flex: 1; }
.yoga-check input { width: 22px; height: 22px; accent-color: #32425e; flex: none; }
.yoga-min { display: flex; align-items: center; gap: 6px; font-size: 13px; color: #525764; }
.yoga-min input { width: 56px; min-height: 36px; padding: 0 6px; border: 1px solid #d9dce2; border-radius: 8px; font: inherit; text-align: center; }

.body-options { display: flex; gap: 8px; margin-top: 8px; }
.body-options button { flex: 1; min-height: 44px; border: 1px solid #d9dce2; border-radius: 10px; background: #fff; font: inherit; color: #273142; }
.body-options button.is-selected { background: #dce3ee; border-color: #32425e; font-weight: 700; }
.body-check { margin: 0 0 12px; padding: 12px 14px; background: #fff; border: 1px solid #d9dce2; border-radius: 12px; }
.body-check strong, .body-check small { display: block; }
.body-check small { margin-top: 2px; color: #525764; font-size: 12px; }
.decision-verdict { margin: 4px 0; font-size: 18px; font-weight: 700; }
.decision-grow .decision-verdict { color: #32425e; }
.decision-back .decision-verdict { color: #8a4b2a; }
.decision-reasons { margin: 6px 0; padding-left: 18px; color: #525764; font-size: 13px; line-height: 1.5; }

.c2-week { display: grid; gap: 2px; margin-top: 10px; padding: 10px 14px; background: #fff; border: 1px solid #d9dce2; border-radius: 12px; font-size: 14px; }
.c2-week strong { font-size: 15px; }
.c2-week span { color: #3f4754; }

.archive-row { display: grid; grid-template-columns: 90px 1fr; gap: 2px 10px; margin-top: 8px; padding: 10px 14px; background: #fff; border: 1px solid #d9dce2; border-radius: 12px; font-size: 14px; }
.archive-row small { grid-column: 2; color: #525764; }

.garmin-match-row{display:flex;flex-direction:column;gap:8px;padding:10px 0;border-top:1px solid var(--line,#e5e0d8)}
.garmin-match-row small{color:var(--muted,#606776)}
.garmin-match .rating-options{display:flex;gap:8px}
.garmin-match .rating-options button{flex:1}

.sync-panel .field-label{display:block;margin:10px 0}
.sync-panel input{width:100%;box-sizing:border-box}

/* Тон Savix: плотные заголовки, скруглённые кнопки, голубо-мятный прогресс */
.page-heading h1, .today-workout h2, .section-title, .section-heading h2, .hero-panel h2, .brand { font-weight: 800; }
.primary-btn, .secondary-btn, .action-pair button, .small-action, .rating-options button { border-radius: 99px; }
.today-workout, .rest-today, .content-panel, .direction-card, .progress-summary, .asanas-entry, .asana-tile { border-radius: 16px; }
.progress-track { border-radius: 99px; }
.progress-track i { background: linear-gradient(90deg, #82a7dd, #5fe0bc); border-radius: 99px; }
.completed-status, .badge-completed, .cycle-session-status.completed { color: #1b7f65; }
.bottom-nav button.active { border-radius: 14px; }
.quick-actions button, .week-actions button { border-radius: 99px; }
