.dashboard{display:flex;flex-direction:column;gap:var(--sp-8)}.dashboard-loading{min-height:60vh}.dashboard-athlete{display:flex;flex-direction:column;gap:var(--sp-8)}.dashboard-continue-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--sp-4);padding:var(--sp-5);border-left:3px solid var(--continue-accent,var(--gold));color:inherit;text-decoration:none}.dashboard-continue-card:before{display:none}.dashboard-continue-card:active{background:var(--bg-hover)}.dashboard-continue-icon{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-md);color:var(--continue-accent,var(--gold));background:color-mix(in srgb,var(--continue-accent,var(--gold)) 12%,transparent)}.dashboard-continue-icon svg{width:22px;height:22px}.dashboard-continue-body{min-width:0;display:flex;flex-direction:column;gap:3px}.dashboard-continue-eyebrow{font-size:var(--text-xs);color:var(--continue-accent,var(--gold));text-transform:uppercase;letter-spacing:0}.dashboard-continue-title{font-family:var(--font-heading);font-size:var(--text-xl);color:var(--text-primary);line-height:1.25}.dashboard-continue-context{font-size:var(--text-xs);color:var(--text-muted);line-height:1.5}.dashboard-continue-action{min-height:38px;display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);background:var(--gold);color:var(--bg-deep);font-size:var(--text-sm);font-weight:600;white-space:nowrap}[data-theme=light] .dashboard-continue-action{background:linear-gradient(135deg,var(--action-primary-start),var(--action-primary-end));color:var(--text-on-primary);box-shadow:var(--action-primary-shadow)}.dashboard-practice,.dashboard-week{display:flex;flex-direction:column;gap:var(--sp-3)}.dashboard-practice-heading{position:relative;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.dashboard-accuracy-label{display:inline-flex;align-items:center;gap:var(--sp-1);color:var(--text-muted);font-size:var(--text-xs);white-space:nowrap}.dashboard-accuracy-help{position:relative;display:inline-flex}.dashboard-accuracy-help>summary{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:var(--text-muted);cursor:pointer;list-style:none}.dashboard-accuracy-help>summary::-webkit-details-marker{display:none}.dashboard-accuracy-help>summary:focus-visible,.dashboard-accuracy-help>summary:hover,.dashboard-accuracy-help[open]>summary{color:var(--text-primary);background:var(--bg-hover)}.dashboard-accuracy-help>summary:focus-visible{outline:2px solid var(--gold);outline-offset:1px}.dashboard-accuracy-help-text{position:absolute;z-index:3;top:calc(100% + var(--sp-1));right:0;width:min(280px,calc(100vw - 48px));padding:var(--sp-2) var(--sp-3);border:1px solid var(--border-accent-subtle);border-radius:var(--radius-sm);background:var(--bg-elevated,var(--bg-surface));box-shadow:var(--shadow-md);color:var(--text-secondary);font-size:var(--text-xs);line-height:1.45;white-space:normal}.dashboard-accuracy-help:not([open]):not(:hover):not(:focus-within) .dashboard-accuracy-help-text{display:none}@media (max-width:767px),(pointer:coarse){.dashboard-accuracy-help>summary{width:40px;height:40px}}.dashboard-athlete .hub-info-title{letter-spacing:0}.dashboard-practice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-2)}.dashboard-practice-metric{min-width:52px;display:flex;flex-direction:column;align-items:flex-end;color:var(--text-primary);text-align:right}.dashboard-practice-metric-value{font-family:var(--font-mono);font-size:var(--text-base);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1.2}.dashboard-week-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--border-accent-subtle);border-bottom:1px solid var(--border-accent-subtle)}.dashboard-week-stat{min-height:72px;display:flex;flex-direction:column;justify-content:center;padding:var(--sp-3) var(--sp-4);border-right:1px solid var(--border-accent-subtle)}.dashboard-week-stat:last-child{border-right:0}.dashboard-week-stat strong{font-family:var(--font-mono);font-size:var(--text-lg);color:var(--text-primary);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.dashboard-week-stat span{font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.dashboard-continue-card{transition:border-color .15s ease-out,background .15s ease-out,transform 80ms ease-out}.dashboard-continue-action svg{transition:transform .16s ease-out}.dashboard-continue-card:focus-visible .dashboard-continue-action svg,.dashboard-continue-card:hover .dashboard-continue-action svg{transform:translateX(2px)}.dashboard-continue-card:active{transform:translateY(1px)}}.athlete-heatmap-section{display:flex;flex-direction:column;gap:var(--sp-2);--hm-hue:var(--success);--hm-cell-inset:5px}.athlete-heatmap-body{display:flex;flex-direction:column;gap:var(--sp-3)}.athlete-heatmap-scroll{overflow-x:auto;padding:var(--sp-2) 0}.athlete-heatmap-layout{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto 1fr;gap:4px;min-width:max-content}.athlete-heatmap-corner{grid-column:1;grid-row:1}.athlete-heatmap-corner,.athlete-heatmap-dow{position:sticky;left:0;z-index:2;background:var(--bg-deep)}.athlete-heatmap-months{grid-column:2;grid-row:1;display:flex;gap:3px}.athlete-heatmap-month{width:24px;font-family:var(--font-mono);font-size:.625rem;color:var(--text-muted);line-height:1;text-align:left;white-space:nowrap;overflow:visible}.athlete-heatmap-dow{grid-column:1;grid-row:2;display:flex;flex-direction:column;gap:3px;padding-right:var(--sp-1)}.athlete-heatmap-dow-label{height:24px;display:flex;align-items:center;font-family:var(--font-mono);font-size:.625rem;color:var(--text-muted);line-height:1}.athlete-heatmap-grid{grid-column:2;grid-row:2;display:flex;gap:3px}.athlete-heatmap-col{display:flex;flex-direction:column;gap:3px}.athlete-heatmap-cell{--hm-cell-color:var(--bg-hover);position:relative;width:24px;height:24px;background:transparent;flex-shrink:0;box-sizing:border-box;padding:0;border:0;font:inherit;color:inherit;cursor:default}.athlete-heatmap-cell:before{content:"";position:absolute;inset:var(--hm-cell-inset);border-radius:2px;background:var(--hm-cell-color)}.athlete-heatmap-cell.is-interactive{cursor:pointer}.athlete-heatmap-cell.intensity-0{--hm-cell-color:var(--bg-hover)}.athlete-heatmap-cell.intensity-1{--hm-cell-color:color-mix(in srgb,var(--hm-hue) 25%,var(--bg-hover))}.athlete-heatmap-cell.intensity-2{--hm-cell-color:color-mix(in srgb,var(--hm-hue) 50%,var(--bg-hover))}.athlete-heatmap-cell.intensity-3{--hm-cell-color:color-mix(in srgb,var(--hm-hue) 75%,var(--bg-hover))}.athlete-heatmap-cell.intensity-4{--hm-cell-color:var(--hm-hue)}.athlete-heatmap-cell.is-future{--hm-cell-color:transparent;outline:none;box-shadow:none;pointer-events:none}.athlete-heatmap-cell.is-today:before{outline:1.5px solid var(--text-primary);outline-offset:1px}.athlete-heatmap-cell.is-selected:before{box-shadow:0 0 0 1.5px var(--gold)}.athlete-heatmap-cell:focus-visible{outline:2px solid var(--gold);outline-offset:1px}@media (pointer:coarse){.athlete-heatmap-section{--hm-cell-inset:7px}.athlete-heatmap-cell,.athlete-heatmap-month{width:32px}.athlete-heatmap-cell,.athlete-heatmap-dow-label{height:32px}}.athlete-heatmap-details{display:grid;grid-template-columns:minmax(170px,1fr) 140px minmax(240px,2fr) 32px;grid-template-areas:"date sessions accuracy close";align-items:center;column-gap:0;min-height:58px;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border-accent-subtle);border-left:2px solid var(--gold);border-radius:var(--radius-sm);background:var(--bg-surface)}.athlete-heatmap-details-date{grid-area:date;min-width:0;font-family:var(--font-heading);font-size:var(--text-sm);color:var(--text-primary);font-weight:500}.athlete-heatmap-details-stat{display:flex;flex-direction:column;gap:1px;padding-left:var(--sp-4);border-left:1px solid var(--border-accent-subtle);color:var(--text-muted);font-size:var(--text-xs);line-height:1.3}.athlete-heatmap-details-stat strong{color:var(--text-primary);font-family:var(--font-mono);font-size:var(--text-sm);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.athlete-heatmap-details-accuracy{grid-area:accuracy}.athlete-heatmap-details-sessions{grid-area:sessions}.athlete-heatmap-details-close{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:0;color:var(--text-muted);font-size:var(--text-lg);line-height:1;cursor:pointer;padding:0;grid-area:close;border-radius:50%}.athlete-heatmap-details-close:focus-visible,.athlete-heatmap-details-close:hover{color:var(--text-primary);background:var(--bg-hover)}.athlete-heatmap-details-close:focus-visible{outline:2px solid var(--gold);outline-offset:1px}.athlete-heatmap-stats{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2) var(--sp-3)}.athlete-heatmap-stat{display:flex;flex-direction:column;gap:2px}.athlete-heatmap-stat-label{font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:0}.athlete-heatmap-stat-value{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-primary)}.dashboard-history-section{display:flex;flex-direction:column;gap:var(--sp-2)}.dashboard-history{border-top:1px solid var(--border-accent-subtle);border-bottom:1px solid var(--border-accent-subtle)}.dashboard-history>summary{min-height:72px;display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;color:var(--text-secondary);cursor:pointer;list-style:none}.dashboard-history>summary::-webkit-details-marker{display:none}.dashboard-history>summary:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.dashboard-history-summary-text{min-width:0;display:flex;flex:1 1;flex-direction:column;gap:2px}.dashboard-history-title{font-family:var(--font-heading);font-size:var(--text-lg);color:var(--text-primary)}.dashboard-history-subtitle{font-size:var(--text-xs);color:var(--text-muted)}.dashboard-history-chevron{flex-shrink:0;transition:transform var(--transition-fast)}.dashboard-history[open] .dashboard-history-chevron{transform:rotate(180deg)}.dashboard-history-content{display:flex;flex-direction:column;gap:var(--sp-8);padding:var(--sp-4) 0 var(--sp-6)}@keyframes dashboard-history-reveal{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:no-preference){.dashboard-history[open] .dashboard-history-content{animation:dashboard-history-reveal .16s ease-out}.athlete-heatmap-details{animation:dashboard-history-reveal .14s ease-out}}@media (max-width:640px){.dashboard-practice-grid{grid-template-columns:1fr}.athlete-heatmap-details{grid-template-columns:minmax(96px,.55fr) minmax(0,1fr) 32px;grid-template-areas:"date date close" "sessions accuracy accuracy";gap:var(--sp-2) var(--sp-3)}.athlete-heatmap-details-date{grid-area:date}.athlete-heatmap-details-stat{padding-left:0;border-left:0}.athlete-heatmap-details-sessions{grid-area:sessions}.athlete-heatmap-details-accuracy{grid-area:accuracy}.athlete-heatmap-details-close{grid-area:close}}@media (max-width:520px){.dashboard-continue-card{grid-template-columns:auto minmax(0,1fr);gap:var(--sp-3)}.dashboard-continue-action{grid-column:1/-1;width:100%}.dashboard-week-stat{min-height:68px;padding:var(--sp-3) var(--sp-2)}}@media (max-width:360px){.dashboard-practice .exercise-tile{grid-template-columns:auto minmax(0,1fr) auto}.dashboard-practice .exercise-tile-arrow{display:none}.dashboard-accuracy-label{font-size:0}}@media (min-width:768px){.athlete-heatmap-dow-label,.athlete-heatmap-month{font-size:var(--text-xs)}.athlete-heatmap-body{flex-direction:row;align-items:flex-start;gap:var(--sp-6)}.athlete-heatmap-scroll{flex:1 1 auto;min-width:0}.athlete-heatmap-stats{display:flex;flex-direction:column;gap:var(--sp-2);flex:0 0 auto;min-width:180px;max-width:220px}}