/* Dara Whitlock Coaching (Spotter template). The member pages use the shared app kit (kit.css); this file sets the
   brand tokens (chalk line: slate blue, chalk white, highlighter lime), the few pieces a coaching app needs (session
   cards, check-in replies, lift cards, gym dots), the public page and the privacy notice. Fonts: Familjen Grotesk with Kalam (Google Fonts link in every page head). */
:root {
  --k-brand: #1f5a46;
  --k-brand-ink: #ffffff;
  --k-brand-soft: #e1efe8;
  --k-hero: #12261f;
  --k-hero-ink: #f2efe6;
  --k-gold: #c8f03c;
  --s-lime: #c8f03c;
  --s-lime-ink: #1d2a06;
  --s-board: #1f3b33;
  --k-bg: #e8ecee;
  --k-surface-2: #f1f4f5;
  --k-line: #d6dde1;
  --k-line-strong: #b9c4cb;
  --k-text: #0f1a22;
  --k-muted: #4c5b66;
}
@media (prefers-color-scheme: dark) {
  :root {
    --k-brand: #c8f03c;
    --k-brand-ink: #1d2a06;
    --k-brand-soft: rgba(200, 240, 60, .14);
    --k-hero: #12261f;
    --k-bg: #0d1318;
    --k-surface: #151d24;
    --k-surface-2: #1b252d;
    --k-line: #26323b;
    --k-line-strong: #3a4954;
    --k-text: #eef2f4;
    --k-muted: #b3c3cd;
  }
}

/* ---------- sessions (programme rows) ---------- */
.s-session .s-session-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: var(--k-t-foot); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--k-muted); }
.s-session-top > span, .k-hero-top > span { display: inline-flex; align-items: center; gap: 6px; }
.s-dur .k-i { width: 16px; height: 16px; }
.s-session [data-s-when]:empty { display: none; }
.s-session [data-s-when] { color: var(--s-lime); }
.s-session [data-s-when]::after { content: " ·"; }
.k-card.s-session [data-s-when] { color: var(--k-brand); }
.s-session-name { font-size: 1.5rem; font-weight: 800; letter-spacing: -.02em; margin-top: var(--k-3); }
.k-card .s-session-name { font-size: 1.1875rem; }
.s-ex { white-space: pre-line; margin-top: var(--k-3) !important; font-size: var(--k-t-sub); line-height: 1.6; }
.k-hero-card .s-ex { opacity: .9; }
.k-card .s-ex { color: var(--k-text) !important; }
.s-target { margin-top: var(--k-3) !important; padding: 10px 12px; border-radius: var(--k-r-s); font-size: var(--k-t-sub); background: rgba(200, 240, 60, .12); }
.s-target b { display: block; font-size: var(--k-t-cap); text-transform: uppercase; letter-spacing: .08em; color: var(--s-lime); }
.k-card .s-target { background: var(--k-surface-2); color: var(--k-text); }
.k-card .s-target b { color: var(--k-brand); }
.k-card.s-session .k-btn { margin-top: var(--k-4); }
.s-week-grid { display: grid; gap: var(--k-4); }
@media (min-width: 720px) { .s-week-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.s-week .s-session.s-today { box-shadow: 0 0 0 2px var(--k-brand), var(--k-shadow-2); }
.s-week .s-session.s-today .s-session-top::after { content: "Today"; margin-left: auto; padding: 2px 10px; border-radius: var(--k-r-pill); background: var(--k-brand); color: var(--k-brand-ink); letter-spacing: .02em; text-transform: none; }
.s-week .s-session.s-today .s-dur { display: none; }

/* ---------- stats, actions ---------- */
.k-stat b:empty::before { content: "0"; }
@media (min-width: 1024px) { .s-actions .k-action { flex-direction: column; justify-content: center; text-align: center; padding: 14px 4px 12px; } }
@media (max-width: 380px) { .k-stat b { font-size: 1.375rem; } }

/* ---------- log rows ---------- */
.k-list .s-memo { white-space: normal; font-style: italic; }
.s-trio { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--k-3); }
.k-list .k-empty, .k-list > .k-empty { padding: var(--k-5); }

/* ---------- lifts ---------- */
.s-lifts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--k-3); }
@media (min-width: 720px) { .s-lifts { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--k-4); } }
@media (min-width: 1200px) { .s-lifts { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.s-lifts > .k-empty { grid-column: 1 / -1; }
.s-lift { padding: var(--k-4); }
.s-lift > * + * { margin-top: 4px !important; }
.s-lift-name { font-weight: 700; color: var(--k-text) !important; font-size: var(--k-t-sub) !important; }
.s-lift-top b { font-size: 2rem; font-weight: 800; letter-spacing: -.03em; color: var(--k-text); font-variant-numeric: tabular-nums; }
.s-lift-top small { font-size: var(--k-t-foot); }
.s-lift-sub { font-size: var(--k-t-foot) !important; }

/* ---------- check-ins ---------- */
.s-cis { display: grid; gap: var(--k-3); }
.s-ci-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.s-ci-head .k-row-title { white-space: normal; }
.s-ci-dl { margin: var(--k-3) 0 0; display: grid; gap: 8px; }
.s-ci-dl div { display: grid; grid-template-columns: 72px 1fr; gap: 10px; font-size: var(--k-t-sub); }
.s-ci-dl dt { color: var(--k-muted); font-size: var(--k-t-foot); font-weight: 600; padding-top: 2px; }
.s-ci-dl dd { margin: 0; }
.s-ci-dl div:has(dd:empty) { display: none; }
.s-reply { margin-top: var(--k-4); display: flex; gap: 12px; align-items: flex-start; }
.s-reply .k-avatar { width: 34px; height: 34px; font-size: .8125rem; background: var(--k-brand); color: var(--k-brand-ink); flex: none; }
.s-reply p { background: var(--k-brand-soft); border-radius: 4px var(--k-r-m) var(--k-r-m) var(--k-r-m); padding: 12px 14px; font-size: var(--k-t-sub); color: var(--k-text); }
.s-reply p b { display: block; font-size: var(--k-t-foot); color: var(--k-brand); margin-bottom: 4px; }
.s-reply:has(span:empty) { display: none; }

/* ---------- gym dots and card ---------- */
.s-month b { font-family: var(--k-font-display); font-size: 2.25rem; font-weight: 800; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.s-month span { color: var(--k-muted); font-weight: 600; }
.k-hero-card .s-month b { font-size: 3rem; }
.k-hero-card .s-month small { font-size: 1.125rem; font-weight: 600; opacity: .7; margin-left: 8px; }
.s-dots { list-style: none; margin: var(--k-3) 0; padding: 0; display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 6px; }
.s-dots li { height: 10px; border-radius: var(--k-r-pill); background: var(--k-line-strong); }
.s-dots li.on { background: var(--k-brand); }
.s-dots-hero li { height: 12px; background: rgba(255, 255, 255, .14); }
.s-dots-hero li.on { background: var(--s-lime); }
.s-hours { list-style: none; margin: var(--k-3) 0; padding: 0; display: grid; gap: 8px; font-size: var(--k-t-sub); }
.s-hours li { display: flex; justify-content: space-between; gap: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--k-line); }
.s-hours b { font-variant-numeric: tabular-nums; }

/* ---------- walls, plans ---------- */
.s-wall { text-align: center; padding: var(--k-6) var(--k-5); }
.s-wall .k-empty-art { width: 64px; height: 64px; margin: 0 auto var(--k-4); border-radius: 50%; display: grid; place-items: center; background: var(--k-brand-soft); color: var(--k-brand); }
.s-wall p { max-width: 40ch; margin: var(--k-2) auto 0; }
.s-wall .k-btn-row { justify-content: center; margin-top: var(--k-5); }
.s-plan-tag { align-self: flex-start; }

/* ---------- tap targets ---------- */
.k-foot a, .k-section-head a, .s-foot a { display: inline-flex; align-items: center; min-height: 44px; }
.k-app input[type="file"] { width: 100%; }

/* ---------- the public page ---------- */
.s-pub .k-top .k-brand { display: flex; }
.s-pub .k-top .k-btn { white-space: nowrap; }
.s-pub-nav { display: flex; align-items: center; gap: 4px; }
.s-pub-nav a:not(.k-btn) { color: var(--k-muted); text-decoration: none; font-weight: 600; font-size: var(--k-t-sub); padding: 10px; }
@media (max-width: 600px) { .s-pub-nav a:not(.k-btn) { display: none; } }
.s-pub main { width: 100%; max-width: var(--k-max); margin: 0 auto; padding: 8px 16px 48px; }
@media (min-width: 1024px) { body.s-pub { display: block; } .s-pub .k-top { padding: 14px 40px; } .s-pub main { padding: 16px 40px 64px; } }
.s-hero { display: grid; gap: var(--k-6); align-items: center; padding: var(--k-5) 0 var(--k-6); }
@media (min-width: 900px) { .s-hero { grid-template-columns: 1.15fr 1fr; gap: 56px; padding: var(--k-7) 0; } }
.s-hero h1 { font-size: clamp(2.125rem, 1.6rem + 2.6vw, 3.25rem); font-weight: 800; line-height: 1.05; letter-spacing: -.035em; }
.s-hero .k-lead { color: var(--k-muted); font-size: 1.125rem; margin-top: var(--k-4); max-width: 46ch; }
.s-hero .k-btn-row { margin-top: var(--k-5); }
.s-hero-note { margin-top: var(--k-3); color: var(--k-muted); font-size: var(--k-t-foot); }
.s-phone { max-width: 360px; width: 100%; margin: 0 auto; border-radius: 44px; padding: 12px; background: #0d141b; box-shadow: var(--k-shadow-3); }
.s-phone-screen { border-radius: 34px; background: var(--k-bg); padding: 18px 14px 20px; display: grid; gap: 12px; }
.s-phone .k-hero-card { padding: 18px; border-radius: 22px; }
.s-phone .s-session-name { font-size: 1.25rem; }
.s-phone .k-btn { min-height: 44px; margin-top: 14px; font-size: .9375rem; }
.s-mini { padding: 14px 16px; border-radius: 18px; }
.s-mini p:last-child { font-size: .875rem; }
.s-band { margin-top: var(--k-7); }
.s-band > h2, .s-about h2 { font-size: var(--k-t-2); font-weight: 800; }
.s-band > .k-plans, .s-band > .s-steps, .s-band > .k-grid { margin-top: var(--k-5); }
.s-band-note { margin-top: var(--k-4); }
.s-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--k-3); counter-reset: s; }
@media (min-width: 720px) { .s-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .s-steps { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.s-steps li { counter-increment: s; background: var(--k-surface); border-radius: var(--k-r-l); box-shadow: var(--k-shadow-1); padding: var(--k-5); }
.s-steps li::before { content: counter(s); display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: var(--k-hero); color: var(--s-lime); font-weight: 800; margin-bottom: var(--k-3); }
.s-steps b { display: block; font-size: 1.0625rem; }
.s-steps li > span { display: block; color: var(--k-muted); font-size: var(--k-t-sub); margin-top: 4px; }
.s-about { display: grid; gap: var(--k-5); align-items: center; }
@media (min-width: 900px) { .s-about { grid-template-columns: 1.1fr 1fr; gap: 48px; } }
.s-about .k-muted { margin-top: var(--k-2); }
.s-frame { margin: 0; border-radius: var(--k-r-l); overflow: hidden; box-shadow: var(--k-shadow-2); }
.s-quote { margin: 0; }
.s-quote p { font-size: 1.125rem !important; color: var(--k-text) !important; line-height: 1.5; }
.s-quote figcaption { margin-top: var(--k-3); color: var(--k-muted); font-size: var(--k-t-foot); }
.s-foot { margin-top: var(--k-7); padding-top: var(--k-4); border-top: 1px solid var(--k-line); color: var(--k-faint); font-size: var(--k-t-foot); display: flex; flex-wrap: wrap; gap: 0 16px; align-items: center; }
.s-foot a { color: var(--k-muted); }

/* ---------- privacy notice (plain page on the kit's tokens) ---------- */
body:not(.k-app) { margin: 0; background: var(--k-bg); color: var(--k-text); font: 400 1.0625rem/1.55 var(--k-font); }
body:not(.k-app) a { color: var(--k-brand); }
body:not(.k-app) .skip { position: absolute; left: -9999px; }
body:not(.k-app) .skip:focus { left: 8px; top: 8px; background: var(--k-surface); padding: 8px; }
.header { background: var(--k-hero); color: var(--k-hero-ink); }
.wrap { width: 100%; max-width: 760px; margin: 0 auto; padding: 0 16px; }
.header-inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 16px; min-height: 64px; }
.wordmark { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; color: inherit !important; text-decoration: none; font-weight: 800; }
.wordmark img { border-radius: 8px; }
.p-nav { display: flex; flex-wrap: wrap; gap: 0 14px; }
.p-nav a { display: inline-flex; align-items: center; min-height: 44px; color: var(--k-hero-ink) !important; text-decoration: none; font-weight: 600; font-size: var(--k-t-sub); }
.p-nav a[aria-current="page"] { color: var(--s-lime) !important; }
.prose { padding: 32px 0 64px; }
.prose h1 { font-size: 2rem; margin: 0 0 16px; letter-spacing: -.02em; }
.prose h2 { font-size: 1.25rem; margin: 28px 0 8px; }
.prose p { margin: 0 0 12px; }
.blank { background: #fde9a6; color: #3d2a00; padding: 0 4px; border-radius: 4px; }
.tip { background: var(--k-brand-soft); border-radius: var(--k-r-m); padding: 12px 16px; }
footer .wrap { padding-top: 16px; padding-bottom: 32px; color: var(--k-muted); font-size: var(--k-t-foot); }
footer .wrap a { display: inline-flex; align-items: center; min-height: 44px; }
.s-week [data-s-when] { display: none; }

/* ---------- exercises in a session (programme and log) ---------- */
.s-exl { list-style: none; margin: var(--k-3) 0 0; padding: 0; display: grid; gap: 6px; font-size: var(--k-t-sub); }
.s-exl li { display: flex; justify-content: space-between; gap: 12px; padding-bottom: 6px; border-bottom: 1px solid var(--k-line); }
.k-hero-card .s-exl li { border-bottom-color: rgba(255, 255, 255, .1); }
.s-exl li:last-child { border-bottom: 0; padding-bottom: 0; }
.s-exl li:has(> b:empty) { display: none; }
.s-exl b { font-weight: 600; }
.s-exl li > span { font-variant-numeric: tabular-nums; white-space: nowrap; opacity: .85; }
.s-kg:has(span:empty), .s-reps:has(span:empty), .s-secs:has(span:empty) { display: none; }
.s-done-line { margin-top: var(--k-3); font-size: var(--k-t-sub); font-weight: 600; color: var(--k-ok); }
.k-hero-card .s-done-line { color: var(--s-lime); }
.s-session.s-done .s-state { color: var(--k-ok); }
.s-session.s-missed .s-state { color: var(--k-warn); }
.k-card.s-session.s-done { background: color-mix(in srgb, var(--k-ok) 6%, var(--k-surface)); }
.s-week .s-session.s-done.s-today .s-session-top::after { content: none; }
.s-logs { display: grid; gap: var(--k-3); }
.s-logcard .s-memo { margin-top: var(--k-3) !important; font-size: var(--k-t-sub) !important; font-style: italic; }
.s-logcard .s-memo:empty { display: none; }
.s-logcard .k-badge .k-i { width: 14px; height: 14px; }
.k-stat b .s-of, .k-stat b small { font-size: .9375rem; font-weight: 600; color: var(--k-muted); }
.k-stat b span, .k-stat b small span { display: inline; margin: 0; font-size: inherit; color: inherit; }

/* ---------- the session form ---------- */
.s-pick { margin-top: var(--k-4); }
.s-pick .k-chip { flex-direction: column; align-items: flex-start; justify-content: center; gap: 0; min-height: 52px; padding: 6px 16px; line-height: 1.2; }
.s-pick .k-chip > span:first-child { font-size: var(--k-t-cap); text-transform: uppercase; letter-spacing: .06em; color: var(--k-muted); }
.s-pick .s-chip-sess { font-size: var(--k-t-sub); }
.s-exin { border: 0; margin: 0; padding: 12px; border-radius: var(--k-r-m); background: var(--k-surface-2); }
.s-exin legend { float: left; width: 100%; padding: 0 0 8px; font-size: var(--k-t-foot); font-weight: 700; color: var(--k-muted); }
.s-exin-grid { clear: both; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.s-exin-grid .s-exname { grid-column: 1 / -1; }
.s-exin .k-field > label { font-size: var(--k-t-cap); }
.s-exin input, .s-exin select { min-height: 44px !important; padding: 8px 10px !important; }

/* ---------- lift trend ---------- */
.s-lift-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.s-trend { list-style: none; margin: 8px 0 0; padding: 0; display: flex; align-items: flex-end; gap: 4px; height: 36px; }
.s-trend li { flex: 1; max-width: 18px; border-radius: 3px 3px 0 0; background: var(--k-brand-soft); }
.s-trend li:last-child { background: var(--k-brand); }
.s-best .s-trend li:last-child { background: var(--k-ok); }
.s-trend li[data-h="40"] { height: 40%; } .s-trend li[data-h="50"] { height: 50%; } .s-trend li[data-h="60"] { height: 60%; } .s-trend li[data-h="70"] { height: 70%; } .s-trend li[data-h="80"] { height: 80%; } .s-trend li[data-h="90"] { height: 90%; } .s-trend li[data-h="100"] { height: 100%; }
.s-trend:empty { display: none; }

/* ---------- redesign 2026-10-22: the coach's chalkboard and logbook ---------- */
/* Mono figures, square plates, hairline cards, a slate chalkboard for the session, lime only for the live set. */
.k-app { --s-chalk: rgba(242, 239, 230, .55); }
.k-app h1, .k-app h2, .k-app h3 { letter-spacing: -.02em; }
.k-app .k-pagehead h1 { font-size: 1.875rem; }
.k-app .k-kicker { font-family: var(--k-font-mono); text-transform: uppercase; letter-spacing: .08em; font-size: .75rem; }
.k-app .k-section-head h2 { font-size: 1.125rem; font-family: var(--k-font-mono); text-transform: uppercase; letter-spacing: .04em; }
.k-app .k-btn { text-transform: none; }

/* the chalkboard */
.k-app .k-hero-card { background: var(--s-board); background-image: repeating-linear-gradient(0deg, transparent 0 31px, rgba(255, 255, 255, .035) 31px 32px); border-radius: var(--k-r-l); box-shadow: 0 0 0 3px #0f241d, 0 6px 18px rgba(0, 0, 0, .16), inset 0 0 0 5px var(--s-board), inset 0 0 0 6px var(--s-chalk); margin: 5px; padding: var(--k-6) var(--k-5) var(--k-5); }
.k-app .k-hero-card .k-hero-top { font-family: var(--k-font-mono); letter-spacing: .08em; font-size: .75rem; }
.k-app .k-hero-card .k-hero-top > span:first-child { color: var(--s-lime); font-weight: 700; }
.k-app .k-hero-card .s-session-name { font-size: clamp(1.5rem, 1.1rem + 1.6vw, 2.125rem); line-height: 1.1; font-weight: 800; color: #f6f4ec; margin-top: var(--k-4); }
.k-app .s-session .s-exl { margin-top: var(--k-4); gap: 0; font-size: 1rem; }
.k-app .s-exl li { align-items: baseline; padding: 10px 0; }
.k-app .s-exl li > span { font-family: var(--k-font-mono); font-size: .9375rem; }
.k-app .k-hero-card .s-exl li { border-bottom: 1px dashed rgba(242, 239, 230, .3); }
.k-app .k-hero-card .s-exl li:last-child { border-bottom: 0; }
.k-app .k-hero-card .s-exl li > span { color: #f6f4ec; opacity: 1; }
.k-app .s-session .s-target { background: transparent; border-radius: 0; border-left: 3px solid var(--s-lime); padding: 2px 0 2px 12px; }
.k-app .k-hero-card .s-target { color: #eee9dc; }
.k-app .k-hero-card .s-target b, .k-app .s-target b { font-family: var(--k-font-mono); letter-spacing: .08em; }
.k-app .k-hero-card .s-target b { color: var(--s-lime); }
.k-app .k-hero-card .k-btn-on-hero { background: var(--s-lime); color: var(--s-lime-ink); border-radius: var(--k-r-m); font-weight: 800; margin-top: var(--k-4); }
.k-app .k-hero-card .s-done-line { color: var(--s-lime); font-family: var(--k-font-mono); font-size: .875rem; }

/* sessions on the week page: plates with a chalk heading */
.k-app .s-week-grid { gap: var(--k-4); }
@media (min-width: 720px) { .k-app .s-week-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.k-app .s-week .s-session.k-card { padding: 0; overflow: hidden; display: flex; flex-direction: column; }
.k-app .s-week .s-session .s-session-top { padding: 10px var(--k-4); background: var(--s-board); color: var(--s-lime); font-family: var(--k-font-mono); font-size: .75rem; }
.k-app .s-week .s-session.s-today { box-shadow: 0 0 0 2px var(--s-lime), 0 0 0 3px var(--s-board); }
.k-app .s-week .s-session.s-today .s-session-top::after { background: var(--s-lime); color: var(--s-lime-ink); border-radius: var(--k-r-s); }
.k-app .s-week .s-session > :not(.s-session-top) { margin-left: var(--k-4); margin-right: var(--k-4); }
.k-app .s-week .s-session-name { font-size: 1.25rem; margin-top: var(--k-4); }
.k-app .s-week .s-session .s-target { margin-top: var(--k-4) !important; margin-bottom: var(--k-4); }
.k-app .s-week .s-session .s-done-line { margin-bottom: 0; }
.k-app .s-week .s-session .k-btn { margin: var(--k-4) var(--k-4) var(--k-4) !important; align-self: flex-start; margin-top: auto !important; }
.k-app .s-week .s-session .s-target + .s-done-line { margin-top: var(--k-3); }
.k-app .s-week .s-session.s-done .s-session-top { background: color-mix(in srgb, var(--s-board) 70%, var(--k-ok)); color: #fff; }
.k-app .k-card.s-session.s-done { background: var(--k-surface); }
.k-app .s-week .s-state { color: inherit !important; }
.k-app .s-week .s-session.s-missed .s-session-top { color: #ffd37a; }

/* metrics strip */
.k-app .s-metrics { padding: var(--k-4) var(--k-5); background: var(--k-surface); border-radius: var(--k-r-l); box-shadow: var(--k-shadow-1); margin-top: var(--k-4); }
.k-app .s-metrics > * { padding: 0 var(--k-3); min-width: 0; }
.k-app .s-metrics > :first-child { padding-left: 0; }
.k-app .s-metrics b { font-size: 1.625rem; }
.k-app .s-metrics .s-of, .k-app .s-metrics b small { font-size: .875rem; font-weight: 600; color: var(--k-muted); }
.k-app .s-metrics b span { font: inherit; display: inline; margin: 0; color: inherit; }
.k-app .s-metrics > * > span:last-child:not([data-pl-view="numbers"]) { font-size: .8125rem; }
.k-app .s-week + .k-help, .k-app .s-metrics + .s-week { margin-top: var(--k-4); }
@media (max-width: 480px) { .k-app .s-metrics { padding: var(--k-3) var(--k-4); } .k-app .s-metrics b { font-size: 1.375rem; } .k-app .s-metrics > * { padding: 0 8px; } }

/* quick actions: a slim strip, not tiles */
.k-app .s-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--k-2); margin-top: var(--k-4); }
@media (min-width: 720px) { .k-app .s-actions { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.k-app .s-actions .k-action { flex-direction: row; justify-content: flex-start; text-align: left; gap: 10px; min-height: 48px; padding: 8px 12px; font-size: .9375rem; font-weight: 700; border-radius: var(--k-r-m); }
.k-app .s-actions .k-tile { width: 30px; height: 30px; flex: none; border-radius: var(--k-r-s); }
@media (min-width: 1024px) { .k-app .s-actions .k-action { flex-direction: row; justify-content: flex-start; text-align: left; padding: 8px 12px; } }

/* check-ins and log cards: ruled records */
.k-app .s-ci, .k-app .s-logcard { border-radius: var(--k-r-l); }
.k-app .s-ci-dl dt { font-family: var(--k-font-mono); font-size: .6875rem; text-transform: uppercase; letter-spacing: .06em; }
.k-app .s-ci .k-steps { margin-top: var(--k-4); }
.k-app .s-reply p { border-radius: var(--k-r-m); background: var(--k-surface-2); border-left: 3px solid var(--k-brand); }
.k-app .s-reply .k-avatar { border-radius: var(--k-r-m); }
.k-app .s-logcard .s-exl li > span { font-size: .875rem; }

/* gym month: eight plates */
.k-app .s-month b { font-size: 2rem; }
.k-app .s-dots li { border-radius: 2px; height: 14px; }
.k-app .s-dots li.on { background: var(--k-brand); }
.k-app .k-hero-card .s-dots li.on { background: var(--s-lime); }

/* lifts: a plate per exercise */
.k-app .s-lift { border-top: 4px solid var(--k-line-strong); border-radius: var(--k-r-m); }
.k-app .s-lift.s-best { border-top-color: var(--k-ok); }
.k-app .s-lift-top b { font-family: var(--k-font-display); font-size: 2.25rem; }
.k-app .s-trend li { border-radius: 1px 1px 0 0; background: var(--k-line-strong); }
.k-app .s-trend li:last-child { background: var(--k-brand); }
.k-app .s-rule { --k-c: var(--k-brand); background: var(--k-surface); box-shadow: var(--k-shadow-1); margin-top: var(--k-5); }
.k-app .s-rule b { font-family: var(--k-font-mono); font-size: .875rem; text-transform: uppercase; letter-spacing: .04em; }

/* the session sheet */
.k-app .k-sheet { border-radius: var(--k-r-l); }
.k-app .k-sheet h2 { font-size: 1.25rem; }
.k-app .s-exin { border: 1px dashed var(--k-line-strong); background: transparent; border-radius: var(--k-r-m); }
.k-app .s-exin legend { font-family: var(--k-font-mono); text-transform: uppercase; letter-spacing: .06em; font-size: .6875rem; }
.k-app .s-pick .k-chip { border-radius: var(--k-r-m); }
@media (min-width: 720px) { .k-app .s-exin-grid { grid-template-columns: minmax(0, 2.2fr) repeat(3, minmax(0, 1fr)); align-items: end; } .k-app .s-exin-grid .s-exname { grid-column: auto; } }
.k-app .s-exin { padding: 10px 12px; }
.k-app .s-exin-hold .s-exin-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (min-width: 720px) { .k-app .s-exin-hold .s-exin-grid { grid-template-columns: minmax(0, 2.2fr) repeat(4, minmax(0, .75fr)); } }
.k-app .s-exin legend { padding-bottom: 6px; }

/* gym card and account */
.k-app .s-wall { border-radius: var(--k-r-l); }
.k-app .s-wall .k-empty-art { border-radius: var(--k-r-m); }
.k-app .s-hours li { font-family: var(--k-font-mono); font-size: .875rem; }
.k-app .k-plan { border-radius: var(--k-r-l); }
@media (min-width: 1024px) { .k-app .k-board > .k-span-8 .k-plans { grid-template-columns: repeat(2, minmax(0, 1fr)); } }


/* round 2 */
.k-app .s-pick { flex-wrap: wrap; overflow: visible; }
.k-app .s-pick .k-chip { flex: 1 1 auto; max-width: 100%; }

.k-app .s-more { margin: var(--k-4) 0 0; }
.k-app .s-more a { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-weight: 700; }
.k-app .s-more .k-i { width: 18px; height: 18px; }
.k-app .s-lift-head { flex-wrap: wrap; row-gap: 4px; }
.k-app .s-lift-head .k-badge { font-size: .6875rem; padding: 2px 8px; }
.k-app .s-lift { min-height: 150px; }
.k-app .s-lift-head { min-height: 28px; }
.k-app .k-hero-card .k-btn-on-hero:hover { filter: brightness(1.05); }

/* round 3 */
.k-app .s-pick { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--k-2); }
@media (min-width: 560px) and (max-width: 1023px) { .k-app .s-pick { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .k-app .s-pick { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.k-app .s-pick .k-chip { min-width: 0; }
@media (max-width: 720px) { .k-app .s-last .s-exl li:nth-child(n+3) { display: none; } }
@media (max-width: 480px) { .k-app .s-ci-head { flex-direction: column; gap: 8px; } }
@media (min-width: 1024px) { .k-app .k-board > .k-sheet.k-span-5 { position: sticky; top: var(--k-4); } }
.k-app .k-hero-card .k-note + .k-note { display: none; }
.k-app .s-pick .k-chip { white-space: normal; text-align: left; }
.k-app .s-pick .s-chip-sess { overflow-wrap: anywhere; }

/* round 4 */
.k-app .s-table { --k-cols: minmax(0, 2fr) minmax(0, 1.3fr) minmax(0, 1.1fr) 72px; }
.k-app .s-table-s { --k-cols: minmax(0, 1.6fr) minmax(0, 1.6fr) 56px; }
.k-app .s-table .k-td-main small { font-family: var(--k-font-mono); }
.k-app .s-table .k-td-num { font-family: var(--k-font-mono); color: var(--k-text); }
.k-app .s-table .k-td-end { color: var(--k-text); font-weight: 700; }
.k-app .s-lift-best { align-self: flex-start; }
.k-app .s-lift { display: flex; flex-direction: column; }
.k-app .s-lift-sub { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
@media (min-width: 1024px) { .k-app .k-board > .k-col.k-span-5 { position: sticky; top: var(--k-4); } }
.k-app .s-week .s-done-line { color: var(--k-text); font-weight: 600; }
.k-app .s-week .s-session .s-done-line + .k-btn { margin-top: var(--k-3) !important; }
.k-app .k-card .k-help { margin-top: var(--k-3); }
.k-app .k-card > .k-kv { margin: 0; }
.k-app .s-table-s { --k-cols: minmax(0, 1fr) auto 36px; }
@media (min-width: 1024px) { .k-app .s-table-s .k-td-num { white-space: nowrap; font-size: .8125rem; } .k-app .s-table-s .k-tr, .k-app .s-table-s .k-thead { gap: 12px; padding-left: 16px; padding-right: 16px; } }

/* round 5 */
.k-app .s-table-s { --k-cols: minmax(0, 1fr) 56px; }
.k-app .s-table-s .k-td-main small { display: block; }
.k-app .s-week-grid { align-items: stretch; }
@media (prefers-color-scheme: dark) { .k-app .k-hero-card { box-shadow: 0 0 0 2px rgba(200, 240, 60, .45), inset 0 0 0 5px var(--s-board), inset 0 0 0 6px var(--s-chalk); background-color: #1f4136; } }

/* round 6 */
.k-app .s-lrow .s-lex { grid-column: 1 / -1; flex-basis: 100%; width: 100%; margin: 6px 0 0; gap: 0; order: 3; font-size: .875rem; }
.k-app .s-lrow .s-lex li { padding: 5px 0; }
.k-app .s-lrow .s-lex li > span { font-family: var(--k-font-mono); font-size: .8125rem; }
.k-app .s-lrow .s-lmemo { grid-column: 1 / -1; flex-basis: 100%; order: 4; margin: 6px 0 0 !important; font-size: .8125rem !important; font-style: italic; color: var(--k-muted); }
.k-app .s-lrow .s-lmemo:empty { display: none; }
.k-app .s-lrow { align-items: start; }
.k-app .s-table-s .k-tr { padding-top: 14px; padding-bottom: 14px; }
@media (min-width: 1024px) { .k-app .s-acc-wide { grid-column: 1 / -1; } .k-app .s-acc-wide .k-account { columns: 2; column-gap: var(--k-5); } .k-app .s-acc-wide .k-account > * { break-inside: avoid; } }

/* round 7 */
@media (max-width: 720px) {
  .k-app section[aria-labelledby="ci-h"] .s-ci:nth-child(n+2) { display: none; }
}
.k-app .s-week .s-session.s-is-next { box-shadow: 0 0 0 2px var(--s-lime), 0 0 0 3px var(--s-board); }
.k-app .s-week .s-session.s-is-next .s-session-top { background: var(--s-lime); color: var(--s-lime-ink); }
.k-app .s-week .s-session.s-is-next .k-btn { background: var(--k-brand); color: var(--k-brand-ink); }
.k-app .s-metrics { max-width: 560px; }
.k-app section[aria-labelledby="gym-h"] .s-metrics, .k-app .k-col .s-metrics { max-width: none; }
.k-app .s-table .k-td[data-label="Lift:"]::before { display: none; }
.k-app .s-lift { min-height: 176px; }
@media (min-width: 1024px) { .k-app .s-side { position: sticky; top: var(--k-4); } }
@media (prefers-color-scheme: dark) { .k-app .k-avatar { background: var(--k-brand); color: var(--k-brand-ink); } }
@media (max-width: 720px) { .k-app .s-exin { border: 0; border-top: 1px solid var(--k-line-strong); border-radius: 0; padding: 10px 0 0; } }

/* follow-up pass (kit v3) */
/* Week: the sessions strip and the Sunday check-in share the top row. */
.k-app .s-weektop { display: grid; gap: var(--k-3); margin-top: var(--k-4); }
.k-app .s-weektop .s-metrics { margin-top: 0; max-width: none; }
.s-weekcta { display: flex; align-items: center; gap: 14px; }
.s-weekcta > span:nth-child(2) { flex: 1; min-width: 0; }
.s-weekcta b { display: block; }
.s-weekcta b + span { display: block; font-size: var(--k-t-foot); color: var(--k-muted); }
.k-app .s-weektop + .s-week { margin-top: var(--k-4); }
@media (min-width: 1024px) { .k-app .s-weektop { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: stretch; } }
/* Account: the sign-in part reads as one ruled sheet. */
.k-account[data-pl-part="signin"] { gap: 0; background: var(--k-surface); border: 1px solid var(--k-line); border-radius: var(--k-r-l); overflow: hidden; }
.k-account[data-pl-part="signin"] > * { margin: 0 !important; background: transparent !important; box-shadow: none !important; border: 0 !important; border-radius: 0 !important; }
.k-account[data-pl-part="signin"] > * + * { border-top: 1px solid var(--k-line) !important; }
.k-account[data-pl-part="signin"] > form > button { background: transparent !important; box-shadow: none !important; border: 0 !important; border-radius: 0 !important; }
.k-account[data-pl-part="signin"] > form > button:hover { background: var(--k-surface-2) !important; }
.k-account[data-pl-part="signin"] > h3 { padding: 14px 20px 4px; font-size: var(--k-t-foot); color: var(--k-muted); }
.k-account[data-pl-part="signin"] > h3 + ul { border-top: 0 !important; }
.k-account[data-pl-part="signin"] li { padding-inline: 20px; }
/* Log on phones: each exercise is one row (name, sets, reps, kg); the column labels show once, on the main lift. */
@media (max-width: 719px) {
  .k-app .s-exin-grid { grid-template-columns: minmax(0, 1fr) 44px 44px 54px; gap: 5px; align-items: end; }
  .k-app .s-exin-grid .s-exname { grid-column: auto; }
  .k-app .s-exin input, .k-app .s-exin select { padding: 8px 6px !important; } .k-app .s-exname input, .k-app .s-exname select { font-size: .875rem; padding-inline: 8px !important; } .k-app .s-exin input[type="number"] { text-align: center; }
  .k-app .s-exin + .s-exin { padding-top: 6px; border-top: 0; }
  .k-app .s-exin + .s-exin legend, .k-app .s-exin + .s-exin .k-field > label { position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; white-space: nowrap; padding: 0 !important; margin: -1px !important; }
}
/* Week: today's session first on phones; cards in a row end level with the button at the foot. */
.s-week-grid > .s-is-next { order: -1; }
.s-week-grid > .s-session { display: flex; flex-direction: column; }
.s-week-grid > .s-session > .k-btn { margin-top: auto; align-self: flex-start; }
.s-week-grid > .s-session > .k-btn { margin-top: auto !important; } .s-week-grid > .s-session > .k-btn::before { content: none; } .s-week-grid > .s-session > :nth-last-child(2) { margin-bottom: var(--k-4); }
@media (max-width: 480px) { .s-acct .k-kv { grid-template-columns: minmax(0, 1fr); gap: 2px; } .s-acct .k-kv dd + dt { margin-top: 10px; } }
.k-app .s-week .s-week-grid > .s-session > .s-done-line + .k-btn { margin-top: auto !important; }
.k-app .s-week .s-week-grid > .s-session > .s-done-line:not([hidden]) { margin-bottom: var(--k-4); }
@media (min-width: 1024px) {
  .s-hours-card { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 0 var(--k-6, 32px); }
  .s-hours-card > * { margin: 0 !important; }
  .s-hours-card .s-hours { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 24px; }
  .s-hours-card .s-hours li { display: grid; gap: 2px; border-bottom: 0; padding-bottom: 0; border-left: 1px solid var(--k-line); padding-left: 16px; }
  .s-hours-card .s-hours li span { color: var(--k-muted); } .s-hours-card .s-hours b { white-space: nowrap; }
  .s-hours-card .k-help { max-width: 22ch; }
}
.k-hero-card .s-month small { opacity: .9; }
@media (max-width: 719px) { .s-weekcta { padding: 12px 16px; } }
.s-ci-help { margin-top: var(--k-4); }
.k-app .s-sofar { margin: var(--k-3) 0 0; font-size: var(--k-t-sub); }
.k-app .s-sofar b { font-variant-numeric: tabular-nums; }
.s-ci-help ul { margin: var(--k-2) 0 0; padding-left: 1.1em; font-size: var(--k-t-sub); color: var(--k-muted); display: grid; gap: 6px; }
.s-ci-help { padding-top: var(--k-4); border-top: 1px dashed var(--k-line-strong); } .s-ci-help h3 { font-size: var(--k-t-sub); }
@media (max-width: 719px) { section[aria-labelledby="all-h"] [data-pl-view="cards"][data-pl-list="workouts"] > .s-lrow:nth-child(n+3) { display: none; } }
.k-hero-card .k-scan [data-pl-wallet] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.k-hero-card .k-scan [data-pl-wallet] button { min-height: 40px; background: transparent; border-color: rgba(255, 255, 255, .4); font-size: .75rem; }

/* ---------- art direction 2026-10-25: the training notebook ----------
   White ruled paper on a pale desk, graphite ink, ruled blue for actions, a red margin, highlighter lime only for a
   best or the live tab; Familjen Grotesk for everything typed, Kalam for Dara's handwriting. Contrast: graphite on
   paper 14.6, white on ruled blue 4.7, margin red on paper 4.7, graphite on lime 11.4; dark: #eef0f2 on #1d2024 14.9,
   #8fb3ff on #1d2024 7.6, #1d2a06 on lime 12.3. */
:root, .k-app[data-k-type] { --k-font-display: "Familjen Grotesk", "Helvetica Neue", Arial, sans-serif; --k-font: var(--k-font-display); --k-font-mono: var(--k-font-display); --s-hand: "Kalam", "Comic Sans MS", cursive; --k-head-w: 700; --k-head-ls: -.02em;
  --k-brand: #235dc5; --k-brand-ink: #fff; --k-brand-soft: #e6eefc; --k-hero: #ffffff; --k-hero-ink: #26292e; --k-gold: #c6f432;
  --s-lime: #c6f432; --s-lime-ink: #1d2a06; --s-paper: #ffffff; --s-rule: rgba(47, 111, 222, .2); --s-red: #c0262c; --s-ink: #235dc5;
  --k-bg: #f1f1ec; --k-surface: #ffffff; --k-surface-2: #f5f5f1; --k-line: #e1e1da; --k-line-strong: #c6c6bd; --k-text: #26292e; --k-muted: #565a61; --k-faint: #6b6f76; }
@media (prefers-color-scheme: dark) { :root, .k-app[data-k-type] { --k-brand: #8fb3ff; --k-brand-ink: #10213f; --k-brand-soft: rgba(143, 179, 255, .14); --k-hero: #1d2024; --k-hero-ink: #eef0f2;
  --s-paper: #1d2024; --s-rule: rgba(143, 179, 255, .14); --s-red: #ff7377; --s-ink: #8fb3ff;
  --k-bg: #131518; --k-surface: #1d2024; --k-surface-2: #24282d; --k-line: #2e3238; --k-line-strong: #454a52; --k-text: #eef0f2; --k-muted: #b8bdc4; --k-faint: #9da3ab; } }
.k-app { font-family: var(--k-font); font-variant-numeric: tabular-nums; }
.k-app :is(h1, h2, h3) { font-family: var(--k-font-display); }
.k-app .k-pagehead h1 { font-size: 2.25rem; font-weight: 700; letter-spacing: -.03em; }
@media (min-width: 1024px) { .k-app .k-pagehead h1 { font-size: 3rem; } }
.k-app .k-kicker { font-family: var(--k-font); color: var(--s-red); font-weight: 600; letter-spacing: .06em; }
.k-app .k-section-head h2 { font-family: var(--k-font-display); text-transform: none; letter-spacing: -.01em; font-size: 1.25rem; font-weight: 700; }
.k-app .k-btn { border-radius: 8px; font-weight: 600; }
.k-app :is(.k-card, .k-panel, .k-table) { border-radius: 8px; }
/* nav: a light rail and a highlighter on the current page */
.k-app .k-tabs a[aria-current="page"] { background: var(--s-lime); color: var(--s-lime-ink); box-shadow: none; }
.k-app .k-tabs a[aria-current="page"] .k-i { color: var(--s-lime-ink); }
@media (min-width: 1024px) { .k-app .k-tabs { background: var(--k-surface); border-right: 1px solid var(--k-line); } .k-app .k-tabs a[aria-current="page"] { border-radius: 4px 14px 6px 12px; } }

/* the notebook page (session, gym card, the phone on the public page) */
.k-app .k-hero-card { margin: 0; padding: 26px 22px 24px 62px; border-radius: 6px; color: var(--k-text);
  background-color: var(--s-paper);
  background-image: radial-gradient(circle, var(--k-bg) 0 6px, var(--k-line-strong) 6.5px 7.5px, transparent 8px), linear-gradient(90deg, transparent 0 46px, var(--s-red) 46px 47.5px, transparent 47.5px), repeating-linear-gradient(180deg, transparent 0 35px, var(--s-rule) 35px 36px);
  background-size: 16px 72px, auto, auto; background-position: 15px 22px, 0 0, 0 18px; background-repeat: repeat-y, no-repeat, repeat;
  box-shadow: 0 0 0 1px var(--k-line), 0 14px 28px -12px rgba(38, 41, 46, .22); }
.k-app .k-hero-card .k-hero-top { font-family: var(--k-font); font-size: .8125rem; letter-spacing: .06em; color: var(--k-muted); }
.k-app .k-hero-card .k-hero-top > span:first-child { color: var(--s-red); }
.k-app .k-hero-card .s-state { color: var(--k-muted); }
.k-app .k-hero-card .s-session-name { color: var(--k-text); font-weight: 700; letter-spacing: -.03em; font-size: clamp(1.75rem, 1.2rem + 1.8vw, 2.5rem); line-height: 1.05; }
.k-app .k-hero-card .s-exl li { border-bottom: 0; min-height: 36px; padding-top: 0; padding-bottom: 0; align-items: center; }
.k-app .k-hero-card .s-exl li > span, .k-app .k-hero-card .s-exl b { color: var(--k-text); }
.k-app .k-hero-card .s-exl b { font-weight: 600; }
.k-app .s-session .s-target, .k-app .k-hero-card .s-target { border: 0; padding: 4px 0 0; background: none; color: var(--s-ink); font: 400 1.25rem/1.45 var(--s-hand); }
.k-app .k-hero-card .s-target b, .k-app .s-target b { display: inline; font: 700 1.25rem var(--s-hand); letter-spacing: 0; text-transform: none; color: var(--s-red); }
.k-app .k-hero-card .s-done-line { font: 600 .9375rem var(--k-font); color: var(--k-text); }
.k-app .k-hero-card .s-done-line:not([hidden]) { display: inline; background: linear-gradient(transparent 45%, var(--s-lime) 45% 92%, transparent 92%); padding: 0 4px; color: #26292e; }
.k-app .k-hero-card .k-btn-on-hero { background: var(--k-brand); color: var(--k-brand-ink); border-radius: 8px; font-weight: 600; }
.k-app .k-hero-card :is(.s-month small, .k-note, .k-help) { color: var(--k-muted); opacity: 1; }
.k-app .k-hero-card .s-dots-hero li, .k-app .s-dots li { height: 12px; border-radius: 2px; background: transparent; box-shadow: inset 0 0 0 1.5px var(--k-line-strong); }
.k-app .k-hero-card .s-dots-hero li.on, .k-app .s-dots li.on { background: var(--k-brand); box-shadow: none; }
.k-app .k-hero-card .k-btn-line, .k-app .k-hero-card .k-btn-2 { color: var(--k-text); background: var(--k-surface); box-shadow: inset 0 0 0 1.5px var(--k-line-strong); }
/* the signature: a logged session's lifts are struck through with a pen stroke */
.k-app .s-session.s-done .s-exl li b { background: linear-gradient(var(--s-ink), var(--s-ink)) no-repeat 0 58% / 100% 2px; }
@media (prefers-reduced-motion: no-preference) { .k-app .s-session.s-done .s-exl li b { animation: s-strike .5s ease-out both; } .k-app .s-session.s-done .s-exl li:nth-child(2) b { animation-delay: .12s; } .k-app .s-session.s-done .s-exl li:nth-child(3) b { animation-delay: .24s; } .k-app .s-session.s-done .s-exl li:nth-child(4) b { animation-delay: .36s; } }
@keyframes s-strike { from { background-size: 0 2px; } to { background-size: 100% 2px; } }
/* numbers and notes */
.k-app .s-metrics b { font: 700 2.25rem/1 var(--k-font-display); letter-spacing: -.03em; }
.k-app .s-metrics > div:last-child b { background: linear-gradient(transparent 52%, var(--s-lime) 52% 94%, transparent 94%); padding: 0 3px; color: var(--k-text); }
@media (prefers-color-scheme: dark) { .k-app .s-metrics > div:last-child b, .k-app .k-hero-card .s-done-line:not([hidden]) { color: #1d2a06; } }
.k-app :is(.s-memo, .s-logcard .s-memo) { font: 400 1.125rem/1.45 var(--s-hand) !important; font-style: normal !important; color: var(--s-ink); }
.k-app .s-reply p { background: var(--s-paper); background-image: repeating-linear-gradient(180deg, transparent 0 27px, var(--s-rule) 27px 28px); box-shadow: inset 3px 0 0 var(--s-red), 0 0 0 1px var(--k-line); border-radius: 4px; font: 400 1.125rem/28px var(--s-hand); color: var(--s-ink); }
.k-app .s-reply p b { font: 700 1rem var(--s-hand); color: var(--s-red); }
.k-app .s-reply .k-avatar { background: var(--s-red); color: #fff; }
@media (prefers-color-scheme: dark) { .k-app .s-reply .k-avatar { color: #2a0a0b; } }
.k-app .s-ci-dl dt { font-family: var(--k-font); color: var(--s-red); }

/* public page: the first page of the notebook */
.s-pub .s-hero { position: relative; }
.s-pub .s-hero h1 { font-family: var(--k-font-display); font-weight: 700; letter-spacing: -.04em; line-height: 1; font-size: clamp(2.5rem, 5.2vw, 4.75rem); }
.s-hl { background: linear-gradient(transparent 50%, var(--s-lime) 50% 92%, transparent 92%); color: inherit; padding: 0 .06em; }
@media (prefers-color-scheme: dark) { .s-hl { color: #1d2a06; } }
.s-pub .k-kicker { color: var(--s-red); }
.s-pub .s-band h2 { font-family: var(--k-font-display); letter-spacing: -.03em; }
.k-app .s-session [data-s-when] { color: var(--s-red); }
.k-app .s-metrics > div:last-child b { display: inline-block; width: fit-content; }
.k-app .k-hero-card .k-scan [data-pl-wallet] button { color: var(--k-text); border: 1.5px solid var(--k-line-strong); background: var(--k-surface); }
.k-app .k-hero-card .k-scan [data-pl-wallet] button * { color: inherit; }
@media (prefers-color-scheme: dark) { .k-app .k-hero-card .s-done-line:not([hidden]), .k-app .s-metrics > div:last-child b, .s-hl { background: var(--s-lime); color: #1d2a06; } }
.s-steps li::before { background: transparent; color: var(--s-red); font: 700 1.75rem/1 var(--s-hand); width: auto; height: auto; place-items: start; border-radius: 0; }
.s-pub .s-frame { border-radius: 10px; background: none; box-shadow: none; padding: 0; }

/* ---------- review round 2 (2026-10-25): the notebook on every page ---------- */
.k-app .k-hero-card .k-hero-top { opacity: 1; }
.k-app[data-k-tabs~="float"] .k-tabs a[aria-current="page"], .k-app .k-tabs a[aria-current="page"] { background: var(--s-lime) !important; color: var(--s-lime-ink) !important; }
.k-app .k-tabs a[aria-current="page"] :is(span, .k-i) { color: var(--s-lime-ink) !important; }
.p-nav a[aria-current="page"] { color: var(--s-red) !important; }
@media (max-width: 479px) { .k-app .k-hero-card .k-scan [data-pl-wallet] { grid-template-columns: 1fr; } }
/* rules drawn between rows (they line up with the text) instead of a repeating background */
.k-app .k-hero-card, .k-app .s-paper { background-image: radial-gradient(circle, var(--k-bg) 0 6px, var(--k-line-strong) 6.5px 7.5px, transparent 8px), linear-gradient(90deg, transparent 0 46px, var(--s-red) 46px 47.5px, transparent 47.5px); background-size: 16px 72px, auto; background-position: 15px 22px, 0 0; background-repeat: repeat-y, no-repeat; background-color: var(--s-paper); }
.k-app .k-hero-card .s-exl li, .k-app .s-paper .s-exin { border-bottom: 1px solid var(--s-rule) !important; }
.k-app .k-hero-card .s-session-name, .k-app .k-hero-card .s-month { padding-bottom: 10px; border-bottom: 1px solid var(--s-rule); }
.k-app .k-hero-card .s-done-line:not([hidden]) { display: inline-block; margin-top: 12px; }
.k-app .s-session.s-done .k-btn-on-hero { background: transparent; color: var(--k-brand); box-shadow: inset 0 0 0 1.5px var(--k-line-strong); }
/* desktop: no empty band above the page title */
@media (min-width: 1024px) { .k-app .k-top { min-height: 0; padding-top: 10px; padding-bottom: 0; } .k-app .k-main { padding-top: 4px; } }
/* week: each day is a notebook page, not a chalkboard */
.k-app .s-week .s-session { background-color: var(--s-paper); background-image: linear-gradient(90deg, transparent 0 30px, var(--s-red) 30px 31.5px, transparent 31.5px); padding-left: 46px; border-radius: 6px; }
.k-app .s-week .s-session .s-session-top, .k-app .s-week .s-session.s-done .s-session-top { background: none; color: var(--s-red); padding: 0 0 8px; margin: 0; font-family: var(--k-font); font-weight: 600; letter-spacing: .06em; border-bottom: 1px solid var(--s-rule); }
.k-app .s-week .s-session .s-session-top .s-state { color: var(--k-muted); }
.k-app .s-week .s-session.s-done .s-session-top .s-day { background: linear-gradient(transparent 45%, var(--s-lime) 45% 92%, transparent 92%); color: var(--s-lime-ink); padding: 0 4px; }
.k-app .s-week .s-session.s-today, .k-app .s-week .s-session.s-is-next { box-shadow: 0 0 0 2px var(--k-brand), 0 14px 28px -16px rgba(38, 41, 46, .3); }
.k-app .s-week .s-session.s-done { background-color: var(--s-paper); }
.k-app .s-week .s-session .s-exl li { border-bottom: 1px solid var(--s-rule); }
.k-app .k-card.s-session.s-done { background-color: var(--s-paper); }
/* lifts: a best is circled in red pen and highlighted, no green */
.k-app .s-lift, .k-app .s-lift.s-best { border-top: 0; box-shadow: 0 0 0 1px var(--k-line); }
.k-app .s-lift.s-best .s-lift-top b { background: linear-gradient(transparent 52%, var(--s-lime) 52% 94%, transparent 94%); padding: 0 4px; border-radius: 40% 46% 38% 50%; box-shadow: 0 0 0 2px var(--s-red); color: #26292e; }
.k-app .s-lift .k-badge-ok, .k-app .s-best .k-badge { background: transparent; color: var(--s-red); box-shadow: inset 0 0 0 1.5px var(--s-red); }
.k-app .s-best .s-trend li:last-child { background: var(--s-red); }
.k-app .k-tile-ok, .k-app .k-tile { background: var(--k-brand-soft); color: var(--k-brand); }
/* check-in reply: a single red margin */
.k-app .s-reply p { box-shadow: inset 3px 0 0 var(--s-red), 0 0 0 1px var(--k-line) !important; border-left: 0 !important; }
/* log: the session sheet is a notebook page, one ruled line per exercise, save always in reach */
.k-app #log.k-sheet { background-color: var(--s-paper); background-image: radial-gradient(circle, var(--k-bg) 0 6px, var(--k-line-strong) 6.5px 7.5px, transparent 8px), linear-gradient(90deg, transparent 0 40px, var(--s-red) 40px 41.5px, transparent 41.5px); background-size: 16px 72px, auto; background-position: 12px 22px, 0 0; background-repeat: repeat-y, no-repeat; padding-left: 56px; border-radius: 6px; }
.k-app #log .s-exin { border: 0; border-radius: 0; margin: 0; padding: 6px 0; background: none; }
.k-app #log .s-exin legend { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.k-app #log .s-exin-grid { align-items: center; }
.k-app #log .s-exin :is(input, select) { min-height: 44px; border-radius: 4px; border-color: var(--k-line-strong); background: transparent; }
.k-app #log .s-exin .s-exname :is(input, select) { border: 0; border-bottom: 1.5px solid transparent; padding-left: 0; font-weight: 600; font-size: 1rem; }
.k-app #log .s-exin .s-exname input::placeholder { color: var(--k-faint); font-weight: 500; }
.k-app #log h2 { font-size: 1.5rem; }
.k-app #log .s-pick { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; padding-bottom: 4px; }
.k-app #log .s-pick .k-chip { flex: none; }
@media (max-width: 1023px) {
  .k-app #log .k-pair-stack { display: grid; grid-template-columns: minmax(0, 9.5rem) minmax(0, 1fr); gap: 10px; }
  .k-app #log button[type="submit"] { position: sticky; bottom: calc(env(safe-area-inset-bottom, 0px) + 92px); z-index: 5; box-shadow: 0 10px 24px -10px rgba(38, 41, 46, .5); }
  .k-app section[aria-labelledby="hist-h"] { display: none; }
}
@media (max-width: 479px) { .k-app #log.k-sheet { padding-left: 50px; padding-right: 14px; } .k-app #log { background-position: 10px 22px, -6px 0; } }
.k-app .s-week .k-card.s-session { padding-left: 46px !important; }
.k-app .s-week .k-card.s-session .s-session-top { margin: 0 0 4px !important; }
.k-app #log .s-exin-grid { grid-template-columns: minmax(0, 1fr) 50px 50px 58px !important; gap: 6px; }
.k-app .s-week .k-card.s-session > :not(.s-session-top) { margin-left: 0; }
.k-app .s-week .k-card.s-session .s-session-top { margin: 0 16px 4px 0 !important; padding-top: 14px !important; }
.k-app .s-week .s-session.s-missed .s-session-top, .k-app .s-week .s-session.s-is-next .s-session-top { background: none; color: var(--s-red); }
.k-app .s-week .s-session.s-today .s-session-top::after { background: var(--k-brand); color: var(--k-brand-ink); }
.k-app .s-week .k-card.s-session.s-done, .k-app .s-week .k-card.s-session.s-today { background-image: linear-gradient(90deg, transparent 0 30px, var(--s-red) 30px 31.5px, transparent 31.5px) !important; }
.k-app .s-week .k-card.s-session .k-btn { margin-left: 0 !important; }

/* ---------- review round 3 (2026-10-25) ---------- */
/* paper page ground; every card is a flat notebook page with a margin rule */
:root, .k-app[data-k-type] { --k-bg: #f7f7f3; }
@media (prefers-color-scheme: dark) { :root, .k-app[data-k-type] { --k-bg: #131518; } }
.k-app :is(.s-ci, .s-logcard, .k-card[aria-labelledby="gym-h"], .s-lift, .k-metrics, .k-panel, .k-list, .s-weekcta) { box-shadow: 0 0 0 1px var(--k-line) !important; border-radius: 6px; }
.k-app :is(.s-ci, .s-logcard, .k-card[aria-labelledby="gym-h"]) { background-image: linear-gradient(90deg, transparent 0 26px, var(--s-red) 26px 27.5px, transparent 27.5px); padding-left: 42px; }
/* punch holes spaced to the card, never cut at an edge */
.k-app .k-hero-card, .k-app .s-paper, .k-app #log.k-sheet { background-repeat: no-repeat space, no-repeat !important; background-position: 15px 0, 0 0 !important; background-size: 16px 64px, auto !important; }
.k-app #log.k-sheet { background-position: 12px 0, 0 0 !important; }
/* log rows: the exercise on its own line above sets, reps and kg on phones; a tidy grid on desktop */
.k-app #log .s-exin .s-exname :is(input, select) { font-weight: 600; color: var(--k-text); }
@media (max-width: 719px) {
  .k-app #log .s-exin-grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
  .k-app #log .s-exin-grid .s-exname { grid-column: 1 / -1; }
  .k-app #log .k-pair-stack { grid-template-columns: minmax(0, 1fr) !important; }
}
@media (min-width: 720px) { .k-app #log .s-exin-grid { grid-template-columns: minmax(0, 1fr) 84px 84px 92px !important; } }
/* lifts: the pen loop sits outside the number */
.k-app .s-lift.s-best .s-lift-top b { padding: 2px 12px; margin-left: -6px; border-radius: 48% 52% 44% 56% / 58% 50% 52% 44%; }
/* phones: drop Last logged on Home (the notebook above already shows it) */
@media (max-width: 1023px) { .k-app .s-last { display: none; } }
/* dark: the primary button is lime on graphite, never pale */
@media (prefers-color-scheme: dark) { .k-app .k-btn:not(.k-btn-line):not(.k-btn-2):not(.k-btn-ghost):not(.k-chip), .k-app .k-hero-card .k-btn-on-hero { background: var(--s-lime); color: var(--s-lime-ink); } .k-app .s-session.s-done .k-btn-on-hero { background: transparent; color: var(--k-brand); } }

/* ---------- review round 4 (2026-10-25) ---------- */
.k-app .s-session.s-done [data-s-when] { display: none; }
.k-app .s-session.s-done .k-btn-on-hero { background: var(--k-brand) !important; color: var(--k-brand-ink) !important; box-shadow: none !important; }
@media (prefers-color-scheme: dark) { .k-app .s-session.s-done .k-btn-on-hero { background: var(--s-lime) !important; color: var(--s-lime-ink) !important; } .k-app .k-hero-card .s-done-line:not([hidden]) { background: color-mix(in srgb, var(--s-lime) 72%, transparent); } }
@media (max-width: 1023px) { .k-app form[data-pl-view="new"][data-pl-list="checkins"] button[type="submit"] { position: sticky; bottom: calc(env(safe-area-inset-bottom, 0px) + 92px); z-index: 5; box-shadow: 0 10px 24px -10px rgba(38, 41, 46, .5); } }
.k-app #log .s-exin .s-exname :is(input, select) { padding-left: 0; margin-left: 0; text-indent: 0; }
.k-app #log .s-exin .s-exname input::placeholder { color: var(--k-text); font-weight: 600; opacity: .85; }
.k-app #log .s-exin input[type="number"]::placeholder { color: var(--k-text); opacity: .7; }
@media (min-width: 720px) { .k-app #log .s-exin-grid { align-items: end; } .k-app #log .s-exin .s-exname { align-self: end; padding-bottom: 4px; } }
.k-app .s-week .k-card.s-session { background-image: linear-gradient(90deg, transparent 0 18px, var(--s-red) 18px 19.5px, transparent 19.5px) !important; padding-left: 34px !important; }
.k-app .s-lift.s-best .s-lift-top b { margin-left: 0; }
.s-weektop .s-metrics > div:last-child b { background: none; }
.k-app .k-hero-card .k-scan [data-pl-wallet] button { font-size: .875rem; }
.s-phone .s-target, .s-phone .s-target b { font-size: 1rem !important; }
.k-app .k-plan { background-image: linear-gradient(90deg, transparent 0 18px, var(--s-red) 18px 19.5px, transparent 19.5px); padding-left: 34px; }

/* ---------- final pass (2026-10-25) ---------- */
/* Log: the hold row (exercise 5) has Secs; its labels always show */
.k-app #log .s-exin-hold .s-exin-grid { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
.k-app #log .s-exin-hold .k-field > label:not(.k-sr) { position: static !important; width: auto !important; height: auto !important; overflow: visible !important; clip: auto !important; margin: 0 !important; padding: 0 !important; }
@media (min-width: 720px) {
  .k-app #log .s-exin-hold .s-exin-grid { grid-template-columns: minmax(0, 1fr) 64px 64px 64px 68px !important; }
  /* the exercise name runs on a dotted leader to its numbers, so name and inputs read as one line */
  .k-app #log .s-exin .s-exname { padding-bottom: 0 !important; align-self: end; }
  .k-app #log .s-exin .s-exname :is(input, select) { border-bottom: 2px dotted var(--k-line-strong) !important; border-radius: 0; }
  /* the column labels show once, on the main lift (and on the hold row) */
  .k-app #log .s-exin + .s-exin:not(.s-exin-hold) .k-field > label { position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; white-space: nowrap; margin: -1px !important; padding: 0 !important; }
}

/* ---------- review round 5 (2026-10-25) ---------- */
/* week: the streak number is ink on dark, not the dark green of light mode's lime band */
@media (prefers-color-scheme: dark) { .k-app .s-weektop .s-metrics > div:last-child b { color: var(--k-text); } }
/* week: today's and next session's highlighted day label keeps its full line box and is not clipped */
@media (prefers-color-scheme: dark) {
  .k-app .s-week .s-session.s-today .s-session-top .s-day, .k-app .s-week .s-session.s-is-next .s-session-top .s-day { background: linear-gradient(transparent 45%, var(--s-lime) 45% 92%, transparent 92%); color: #1b1d20; line-height: 1.4; padding: 0 4px; overflow: visible; }
  .k-app .s-week .s-session.s-today .s-session-top, .k-app .s-week .s-session.s-is-next .s-session-top { overflow: visible; }
  /* week: next and today's primary button is lime, not the pale brand blue of the dark theme */
  .k-app .s-week .s-session.s-is-next .k-btn, .k-app .s-week .s-session.s-today .k-btn { background: var(--s-lime); color: var(--s-lime-ink); }
  /* account: the primary (saving) buttons are lime, not pale blue */
  .k-app .k-account form:has(input:not([type="hidden"]):not([type="checkbox"]), select, textarea) button { background: var(--s-lime) !important; color: var(--s-lime-ink) !important; }
}
/* lifts: a best is a full lime highlight in dark (the number sits on the band, ink text) */
@media (prefers-color-scheme: dark) { .k-app .s-lift.s-best .s-lift-top b { background: var(--s-lime); color: var(--s-lime-ink); } }
/* public page: the highlight stays on the lower part of the line in dark so descenders above stay clear */
@media (prefers-color-scheme: dark) { .s-hl { background: linear-gradient(transparent 45%, var(--s-lime) 45% 92%, transparent 92%); } }
/* public page: the phone's bezel stands out from the dark background */
@media (prefers-color-scheme: dark) { .s-phone { background: #3a3e45; box-shadow: 0 0 0 1px #3a3e45, var(--k-shadow-3); } }
/* public page: the notebook illustration is not a bright white block in dark */
@media (prefers-color-scheme: dark) { .s-frame img { filter: brightness(.85); } }
/* dark: the margin rule on check-in, gym and home cards is the red pen, as on the session cards */
@media (prefers-color-scheme: dark) { .k-app :is(.s-ci, .s-logcard, .k-card[aria-labelledby="gym-h"]) { background-image: linear-gradient(90deg, transparent 0 26px, var(--s-red) 26px 27.5px, transparent 27.5px) !important; } }
/* top bar avatar: a graphite disc in light, a lime disc in dark */
.k-app[data-k-shape] .k-top .k-avatar { border-radius: 50%; background: #26292e; color: #fff; }
@media (prefers-color-scheme: dark) { .k-app[data-k-shape] .k-top .k-avatar { background: var(--s-lime); color: var(--s-lime-ink); } }
/* check-in: the three-step bar shows only while the check-in is open (not on answered ones) */
.k-app .s-ci[data-k-state="ok"] .k-steps { display: none; }
/* dark: the day label is a solid highlighter block, so dark ink never sits on the dark page */
@media (prefers-color-scheme: dark) { .k-app .s-week .s-session:is(.s-done, .s-today, .s-is-next) .s-session-top .s-day { background: var(--s-lime) !important; color: var(--s-lime-ink) !important; padding: 1px 5px; line-height: 1.3; border-radius: 2px; } }
