/* Pacesetter sample app. Layout only: every color, radius, space and type value resolves to a --29d-* token. */
* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body { background: var(--29d-bg); color: var(--29d-text-1); font-family: var(--29d-font-ui); font-feature-settings: var(--29d-font-features); font-size: var(--29d-body-size); line-height: var(--29d-body-lh); }
button, a { -webkit-tap-highlight-color: transparent; }
button:focus-visible, a:focus-visible { outline: none; box-shadow: var(--29d-focus-ring), var(--29d-focus-halo); }
.app { max-width: 68rem; margin: 0 auto; padding: 0 var(--29d-page-pad) var(--29d-s-16); }
.topbar { position: sticky; top: 0; z-index: 20; background: var(--29d-bg); border-bottom: 1px solid var(--29d-border); padding: var(--29d-s-3) 0; }
.topbar-inner { max-width: 68rem; margin: 0 auto; padding: 0 var(--29d-page-pad); display: flex; align-items: center; gap: var(--29d-s-3); }
.brand { display: flex; align-items: baseline; gap: var(--29d-s-2); min-width: 0; }
.brand-name { font-family: var(--29d-font-display); font-size: var(--29d-text-xl); line-height: var(--29d-lh-xl); font-weight: var(--29d-weight-xbold); letter-spacing: 0; white-space: nowrap; }
.brand-sub { color: var(--29d-text-3); font-size: var(--29d-text-xs); line-height: var(--29d-lh-xs); white-space: nowrap; }
.topbar-spacer { flex: 1; }
.theme-btn { min-height: var(--29d-control-h); padding: 0 var(--29d-s-3); }
.hero { padding: var(--29d-s-6) 0 var(--29d-s-4); }
.eyebrow-row { display: flex; align-items: center; gap: var(--29d-s-2); flex-wrap: wrap; margin-bottom: var(--29d-s-2); }
.title { font-family: var(--29d-font-display); font-size: var(--29d-text-3xl); line-height: var(--29d-lh-3xl); font-weight: var(--29d-weight-xbold); max-width: 34rem; }
.subtitle { color: var(--29d-text-2); margin-top: var(--29d-s-2); max-width: 38rem; }
.view { display: none; }
.view.is-active { display: block; }
.view-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--29d-s-3); margin: var(--29d-s-6) 0 var(--29d-s-4); }
.view-title { font-size: var(--29d-text-2xl); line-height: var(--29d-lh-2xl); font-weight: var(--29d-weight-bold); }
.view-sub { color: var(--29d-text-2); margin-top: var(--29d-s-1); max-width: 36rem; }
.stack { display: grid; gap: var(--29d-s-4); }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: var(--29d-s-4); }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--29d-s-4); }
.card-pad { padding: var(--29d-card-pad); }
.muted { color: var(--29d-text-2); }
.small { font-size: var(--29d-text-sm); line-height: var(--29d-lh-sm); }
.tnum { font-variant-numeric: tabular-nums; }
.big-number { font-size: var(--29d-text-3xl); line-height: var(--29d-lh-3xl); font-weight: var(--29d-weight-bold); font-variant-numeric: tabular-nums; }
.pace-line { border-left: var(--29d-s-1) solid var(--29d-coral-600); padding-left: var(--29d-s-3); font-size: var(--29d-text-lg); line-height: var(--29d-lh-lg); }
.loop { display: grid; grid-template-columns: repeat(6, 1fr); gap: var(--29d-s-2); }
.loop-step { border: 1px solid var(--29d-border); border-radius: var(--29d-r-3); background: var(--29d-surface); padding: var(--29d-s-3); min-height: var(--29d-s-16); }
.loop-step b { display: block; font-size: var(--29d-text-sm); }
.loop-step span { color: var(--29d-text-3); font-size: var(--29d-text-xs); line-height: var(--29d-lh-xs); }
.loop-num { color: var(--29d-coral-600); font-family: var(--29d-font-mono); font-size: var(--29d-text-xs); margin-bottom: var(--29d-s-1); }
.bar-row { display: grid; grid-template-columns: 1fr auto; gap: var(--29d-s-2); align-items: center; margin-top: var(--29d-s-3); }
.bar-track { height: var(--29d-s-2); background: var(--29d-sunken); border-radius: var(--29d-pill); overflow: hidden; grid-column: 1 / -1; }
.bar-fill { height: 100%; background: var(--29d-coral-600); border-radius: var(--29d-pill); }
.bar-fill-neutral { background: var(--29d-text-3); }
.peer-you { background: var(--29d-coral-50); }
.score-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--29d-s-3); }
.score { border: 1px solid var(--29d-border); border-radius: var(--29d-r-3); padding: var(--29d-s-3); background: var(--29d-surface); }
.score-value { font-size: var(--29d-text-2xl); line-height: var(--29d-lh-2xl); font-weight: var(--29d-weight-bold); font-variant-numeric: tabular-nums; }
.lesson { background: var(--29d-sunken); border-radius: var(--29d-r-3); padding: var(--29d-s-4); }
.actions { margin-top: var(--29d-s-4); display: flex; gap: var(--29d-s-2); flex-wrap: wrap; }
.actions .ds-btn { min-height: var(--29d-control-h); }
.bottomnav { position: fixed; left: 0; right: 0; bottom: 0; z-index: 30; background: var(--29d-surface); border-top: 1px solid var(--29d-border); }
.bottomnav-inner { max-width: 68rem; margin: 0 auto; display: grid; grid-template-columns: repeat(5, 1fr); }
.nav-btn { appearance: none; border: 0; background: transparent; color: var(--29d-text-3); font: inherit; font-size: var(--29d-text-xs); line-height: var(--29d-lh-xs); font-weight: var(--29d-weight-semibold); min-height: var(--29d-s-16); padding: var(--29d-s-2) var(--29d-s-1); cursor: pointer; border-top: var(--29d-s-0) solid transparent; transition: color var(--29d-t-fast) var(--29d-ease), background var(--29d-t-fast) var(--29d-ease); }
.nav-btn:hover { background: var(--29d-wash); color: var(--29d-text-1); }
.nav-btn:active { transform: scale(0.98); }
.nav-btn.is-active { color: var(--29d-text-1); border-top-color: var(--29d-coral-600); }
.nav-btn .nav-dot { display: block; width: var(--29d-s-2); height: var(--29d-s-2); border-radius: var(--29d-pill); background: var(--29d-border-strong); margin: 0 auto var(--29d-s-1); }
.nav-btn.is-active .nav-dot { background: var(--29d-coral-600); }
.footer { color: var(--29d-text-3); padding: var(--29d-s-8) 0 var(--29d-s-16); text-align: center; }
.trend-visual { height: var(--29d-s-12); border-radius: var(--29d-r-3); background: var(--29d-sunken); display: flex; align-items: flex-end; gap: var(--29d-s-2); padding: var(--29d-s-3); overflow: hidden; }
.trend-bar { flex: 1; background: var(--29d-coral-300); border-radius: var(--29d-r-1) var(--29d-r-1) 0 0; }
.trend-bar:last-child { background: var(--29d-coral-600); }
@media (max-width: 720px) {
  .ds-table th, .ds-table td { padding-left: var(--29d-s-2); padding-right: var(--29d-s-2); }
  .ds-table td:first-child { word-break: break-word; }
  .grid-2, .grid-3 { grid-template-columns: 1fr; }
  .loop { grid-template-columns: repeat(2, 1fr); }
  .score-grid { grid-template-columns: 1fr; }
  .brand-sub { display: none; }
  .title { font-size: var(--29d-text-2xl); line-height: var(--29d-lh-2xl); }
  .app { padding-bottom: var(--29d-s-16); }
}
@media (prefers-reduced-motion: reduce) { * { transition: none !important; scroll-behavior: auto !important; } }
