/* Usa los tokens de tokens.css (D-030): nada de colores sueltos aquí. */
:root{font-family:var(--font-family-sans)}
*{box-sizing:border-box}body{margin:0;background:var(--color-bg-canvas);color:var(--color-text-primary);font-size:var(--font-size-base)}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px}header{height:88px;border-bottom:1px solid var(--color-border-subtle);padding:0 max(24px,calc((100% - var(--layout-page-max,1200px))/2));display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{display:flex;align-items:center;gap:9px;font-weight:750;letter-spacing:1px}.brand>span:last-child{font-weight:400;color:var(--color-text-secondary);font-size:var(--font-size-sm)}.mark{background:var(--color-accent);color:var(--color-text-on-accent);border-radius:var(--radius-md);padding:5px 10px;font-size:23px;letter-spacing:-3px;margin-right:8px}.badge{font-size:var(--font-size-2xs);letter-spacing:1.4px;color:var(--color-text-secondary);display:inline-flex;align-items:center;gap:8px}.badge i,.dot{display:inline-block;width:6px;height:6px;background:var(--color-accent);border-radius:100%}main{max-width:var(--layout-page-max,1200px);margin:0 auto;padding:56px 24px 24px}.eyebrow{font-size:var(--font-size-2xs);letter-spacing:2px;color:var(--color-accent);font-weight:650}.intro{display:flex;justify-content:space-between;align-items:center;padding:18px 0 42px;gap:24px}h1{font-size:clamp(32px,4.5vw,54px);font-weight:550;line-height:1.1;letter-spacing:-2px;margin:0 0 20px}h1 span{color:var(--color-text-secondary)}p{line-height:1.7;color:var(--color-text-secondary);margin:8px 0}h2{font-size:var(--font-size-2xl);letter-spacing:-.6px;font-weight:550;margin:8px 0}.connection{display:flex;align-items:flex-end;flex-direction:column;gap:18px}.button{display:inline-flex;justify-content:center;align-items:center;gap:20px;min-height:43px;padding:12px 18px;border-radius:var(--button-radius);border:1px solid transparent;white-space:nowrap;font-size:var(--font-size-sm);font-weight:600}.primary{color:var(--button-primary-text);background:var(--button-primary-bg)}.primary:hover{background:var(--button-primary-bg-hover)}.secondary{color:var(--color-text-primary);border-color:var(--button-secondary-border);background:transparent}.secondary:hover{background:var(--button-secondary-bg-hover)}.panel{border:1px solid var(--panel-border);border-radius:var(--panel-radius);background:var(--panel-bg);padding:var(--panel-padding);margin-bottom:24px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid var(--color-border-subtle);padding:30px 0 20px}.toolbar p{font-size:var(--font-size-sm)}.actions{display:flex;gap:10px}#notice:not(:empty){padding:12px 16px;background:var(--color-status-warning-bg);color:var(--color-status-warning-text);border:1px solid var(--color-status-warning-border);border-radius:var(--radius-md);margin-bottom:18px;line-height:1.6}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:4px 0 24px}.metric{border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);padding:22px;background:linear-gradient(140deg,var(--color-bg-surface-raised),var(--color-bg-surface))}.metric>div{font-size:9px;letter-spacing:1px;display:flex;align-items:center;justify-content:space-between;gap:8px}.metric strong{font-size:43px;font-weight:500;letter-spacing:-1.8px;display:block;margin:25px 0 5px}.metric p{font-size:var(--font-size-xs)}.green{background:var(--color-data-1)}.blue{background:var(--color-data-4)}.purple{background:var(--color-data-3)}.orange{background:var(--color-data-2)}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.panel-heading h2{font-size:var(--font-size-xl);margin-top:10px}.muted{color:var(--color-text-secondary);font-size:var(--font-size-xs)}.trend canvas{width:100%;display:block;margin-top:20px;height:220px}.tabs{display:flex;gap:20px;margin:20px 0 0;border-bottom:1px solid var(--color-border-subtle);overflow:auto}.tabs button{padding:14px 0;color:var(--color-text-secondary);background:transparent;border:0;border-bottom:2px solid transparent;white-space:nowrap;font-size:var(--font-size-sm)}.tabs button.active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.tabs span{background:var(--color-accent-bg-strong);color:var(--color-text-emphasis);border-radius:var(--radius-xs);font-size:var(--font-size-2xs);padding:3px 5px;margin-left:5px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:var(--font-size-sm);text-align:left;white-space:nowrap}th{font-size:var(--font-size-2xs);color:var(--color-text-secondary);font-weight:400;letter-spacing:.7px;padding:18px 14px}td{padding:16px 14px;border-top:1px solid var(--color-border-subtle)}td:first-child{color:var(--color-text-emphasis)}tbody tr:hover{background:var(--color-bg-surface-raised)}.archive>p{margin-top:18px}.bottom-note{display:flex;justify-content:space-between;align-items:center;font-size:var(--font-size-xs);color:var(--color-text-secondary);gap:20px}.text-button{background:none;border:0;color:var(--color-text-secondary);font-size:var(--font-size-xs);text-decoration:underline;padding:12px 0}footer{display:flex;justify-content:space-between;gap:16px;border-top:1px solid var(--color-border-subtle);margin-top:52px;padding-top:25px;color:var(--color-text-tertiary);font-size:var(--font-size-2xs)}footer>span:first-child{letter-spacing:2px}.setup h2{margin-top:15px}.setup ol{padding-left:22px;line-height:2.2;color:var(--color-text-secondary)}code{font-size:var(--font-size-sm);color:var(--color-text-emphasis);background:var(--color-accent-bg);padding:3px 5px;border-radius:var(--radius-xs)}.empty{text-align:center;padding:60px 20px}.empty-icon{font-size:40px;color:var(--color-accent)}.empty .button{margin-top:20px}.setup-label{font-size:var(--font-size-sm);color:var(--color-text-secondary)}
@media(max-width:800px){main{padding-top:32px}.metrics{grid-template-columns:repeat(2,1fr)}.toolbar{align-items:flex-start;flex-direction:column}.intro{align-items:flex-start}.connection{padding-top:10px}.actions{flex-wrap:wrap}.panel-heading{align-items:flex-start}.bottom-note{align-items:flex-start}.panel{padding:20px}.tabs{gap:18px}}@media(max-width:520px){header{height:70px}.brand>span:last-child{display:none}.intro{flex-direction:column}.connection{align-items:flex-start}.metrics{gap:10px}.metric{padding:17px 13px}.metric strong{font-size:36px}.metric>div{font-size:8px}.panel-heading{flex-direction:column;gap:10px}footer{flex-direction:column}.bottom-note{flex-direction:column;gap:0}.intro p br{display:none}}
.field{display:flex;flex-direction:column;gap:8px;font-size:var(--font-size-xs);color:var(--color-text-secondary)}input,select{font:inherit;font-size:var(--font-size-sm);min-height:40px;border:1px solid var(--input-border);background:var(--input-bg);color:var(--color-text-primary);border-radius:var(--input-radius);padding:9px 12px}input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.filters{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;margin:22px 0 8px}.pagination{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:22px}.pagination button{min-height:35px;padding:8px 12px}.detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin:22px 0}.detail-grid dt{color:var(--color-text-secondary);font-size:var(--font-size-xs);margin-bottom:8px}.detail-grid dd{margin:0;font-size:var(--font-size-base);overflow-wrap:anywhere;line-height:1.6}.record-detail h3{font-size:var(--font-size-base);font-weight:500;color:var(--color-accent);padding-top:20px;border-top:1px solid var(--color-border-subtle)}.record-detail{scroll-margin-top:24px}details{border-top:1px solid var(--color-border-subtle);padding-top:18px;margin-top:20px}summary{color:var(--color-text-secondary);cursor:pointer;font-size:var(--font-size-sm)}pre{font-size:var(--font-size-sm);line-height:1.6;overflow:auto;max-height:400px;background:var(--color-bg-input);padding:20px;border-radius:var(--radius-md);color:var(--color-text-emphasis)}.detail-button{color:var(--color-accent);background:none;border:0;font-size:var(--font-size-xs);white-space:nowrap;padding:6px}.metric-note{margin-top:-10px;margin-bottom:24px}.metric strong{font-size:clamp(26px,3.4vw,42px)}.detail-grid>div{min-width:0}#profile-fields{margin-top:28px}@media(max-width:800px){.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pagination{flex-wrap:wrap}}@media(max-width:520px){.filters .field{flex:1;min-width:120px}.pagination .actions{width:100%;justify-content:space-between}.detail-grid{gap:18px 12px}.trend .field{width:100%}}
.archive th:last-child,.archive td:last-child{position:sticky;right:0;background:var(--color-bg-surface);border-left:1px solid var(--color-border-subtle);z-index:1}.archive tbody tr:hover td:last-child{background:var(--color-bg-surface-raised)}
[hidden]{display:none!important}

/* Portada simplificada: marca, navegación y persona */
header{height:var(--layout-header-height)}.brand{font-size:var(--font-size-xl);font-weight:700;letter-spacing:-.4px;gap:6px}.brand>span:last-child{font-size:var(--font-size-xl);font-weight:400;letter-spacing:-.4px;color:var(--color-text-secondary)}
.nav{display:flex;align-items:center;gap:24px;font-size:var(--font-size-md)}.nav a{color:var(--color-text-secondary)}.nav a:hover,.nav a.active{color:var(--color-text-primary)}
.person{display:inline-flex;align-items:center;gap:8px;padding-left:20px;border-left:1px solid var(--color-border-subtle)}
.person i,.person-card i{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--color-accent);color:var(--color-text-on-accent);font-style:normal;font-weight:700;font-size:var(--font-size-sm)}
main{padding-top:36px}.toolbar{border-top:0;padding:0 0 24px}.toolbar h1{font-size:var(--font-size-3xl);letter-spacing:-1px;margin:0 0 2px}
.metric{--metric-tone:var(--color-accent);border-top:2px solid var(--metric-tone);background:var(--color-bg-surface)}.metric>div{font-size:var(--font-size-sm);letter-spacing:0;color:var(--color-text-secondary)}
.metric strong{margin:14px 0 2px}.metric.hrv{--metric-tone:var(--color-data-2)}.metric.sleep{--metric-tone:var(--color-data-3)}.metric.strain{--metric-tone:var(--color-data-4)}
.stats{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);margin:0 0 24px}
.stats>div{padding:16px 20px;display:grid;gap:4px}.stats>div+div{border-left:1px solid var(--color-border-subtle)}.stats span{font-size:var(--font-size-xs);color:var(--color-text-secondary)}
.stats strong{font-size:20px;font-weight:500}.stats small{font-size:var(--font-size-2xs);color:var(--color-text-secondary)}
.panel-heading h2{margin:0}.archive .tabs{margin-top:12px}.text-button:hover{color:var(--color-text-primary)}
.account summary{display:flex;justify-content:space-between;align-items:center;list-style:none}.account summary::-webkit-details-marker{display:none}
.account summary h2{margin:0;font-size:var(--font-size-xl)}.account summary h2::after{content:" ▾";color:var(--color-text-secondary);font-size:var(--font-size-md)}.account[open] summary h2::after{content:" ▴"}
.account{padding:20px 26px}.account .actions{margin-top:12px;flex-wrap:wrap}
.welcome{max-width:620px;margin:8vh auto 0;text-align:center}.welcome h1{font-size:40px}.people{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-top:32px}
.person-card{display:grid;justify-items:center;gap:10px;padding:32px 20px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-2xl);background:var(--color-bg-surface);transition:border-color var(--duration-fast)}
.person-card:hover{border-color:var(--color-accent)}.person-card i{width:56px;height:56px;font-size:22px}.person-card strong{font-size:var(--font-size-xl)}.person-card span{font-size:var(--font-size-sm);color:var(--color-accent)}
@media(max-width:800px){.stats{grid-template-columns:repeat(2,1fr)}.stats>div:nth-child(3){border-left:0}.stats>div:nth-child(n+3){border-top:1px solid var(--color-border-subtle)}}
@media(max-width:520px){.nav{gap:14px}.person{padding-left:12px}.person{font-size:0;gap:0}.person i{font-size:var(--font-size-sm)}}
.person-card{cursor:pointer;position:relative}.person-card input{position:absolute;opacity:0;pointer-events:none}.person-card:has(input:checked){border-color:var(--color-accent);box-shadow:0 0 0 1px var(--color-accent)}
.person-card:has(input:focus-visible){outline:2px solid var(--color-accent);outline-offset:3px}
.login{display:flex;gap:10px;max-width:420px;margin:20px auto 0}.login input{flex:1}.error{color:var(--color-status-warning-text)}
.connect-whoop{display:flex;justify-content:space-between;align-items:center;gap:16px}.connect-whoop h2{margin:0}
@media(max-width:520px){.connect-whoop{flex-direction:column;align-items:flex-start}}

.goal{background:linear-gradient(135deg,var(--color-accent-bg),var(--color-bg-surface) 70%);border:1px solid var(--color-accent);border-radius:var(--radius-3xl);padding:24px 28px;margin:0 0 24px;display:grid;grid-template-columns:1fr auto;gap:8px 32px;align-items:center}.goal h2{font-size:clamp(22px,3vw,30px);margin:6px 0 0}.goal p{margin:4px 0 0}.goal-numbers{text-align:right}.goal-numbers strong{font-size:clamp(32px,5vw,48px);font-weight:600;letter-spacing:-2px;color:var(--color-accent)}.goal-numbers small{font-size:var(--font-size-lg);margin-left:2px}.goal-numbers span{display:block;color:var(--color-text-secondary)}.goal-bar{grid-column:1/-1;height:10px;background:var(--color-border-subtle);border-radius:var(--radius-full);overflow:hidden}.goal-bar i{display:block;height:100%;background:var(--color-accent);border-radius:var(--radius-full)}.goal-pct{grid-column:1/-1;font-size:var(--font-size-sm)}@media(max-width:800px){.goal{grid-template-columns:1fr}.goal-numbers{text-align:left}}

/* Panorama (D-027): ancho hasta 1600 px en pantallas grandes, una columna en el celular. */
body:has(.board){--layout-page-max:var(--layout-page-max-wide)}
.board{display:grid;gap:20px;grid-template-columns:minmax(0,1fr);grid-template-areas:"today" "week" "body" "composition" "rackets" "coincidences";margin-bottom:24px}
.block{border:1px solid var(--block-border);border-radius:var(--block-radius);background:var(--block-bg);padding:var(--block-padding);min-width:0}
.today{grid-area:today}.week{grid-area:week}.body{grid-area:body}.composition{grid-area:composition}.rackets{grid-area:rackets}.coincidences{grid-area:coincidences}
.block-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.block-head h2{margin:0 0 14px}.block-head h3{margin:0;font-size:var(--font-size-base);font-weight:550}
.block-head a{text-decoration:underline}
.card{border:1px solid var(--card-border);border-radius:var(--card-radius);padding:var(--card-padding);background:var(--card-bg);min-width:0}
.card-label{font-size:var(--font-size-2xs);letter-spacing:1px;text-transform:uppercase;color:var(--color-text-secondary)}
.card strong{display:block;font-size:clamp(26px,2.6vw,36px);font-weight:500;letter-spacing:-1px;margin:10px 0 4px;font-variant-numeric:tabular-nums}
.card strong small{font-size:var(--font-size-base);color:var(--color-text-secondary);letter-spacing:0}
.card p{margin:4px 0 0;font-size:var(--font-size-sm);line-height:1.5}
.goals{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin-bottom:14px}
.goal-card{border-color:var(--card-goal-border);background:var(--card-goal-bg)}
.goal-line{display:flex;align-items:baseline;gap:4px;flex-wrap:wrap}.goal-line strong{color:var(--color-accent)}
.goal-card .left{color:var(--color-text-primary);font-weight:550}.goal-card .objective{font-size:var(--font-size-xs)}
.bar{height:10px;background:var(--bar-track);border-radius:var(--radius-full);overflow:hidden;margin:10px 0 6px}.bar i{display:block;height:100%;background:var(--bar-fill);border-radius:var(--radius-full);transition:width var(--duration-base)}
.bar.over i,.racket.warn .bar i{background:var(--bar-fill-warning)}
.balance strong{color:var(--color-text-primary)}
.week-grid,.comp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.exercise-card{display:block;color:inherit;text-decoration:none;grid-column:1/-1}.exercise-card:hover{border-color:var(--color-border-strong)}
@media(min-width:700px){.week-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.exercise-card{grid-column:auto}}
.trend{margin-top:18px;border-top:1px solid var(--color-border-subtle);padding-top:16px}
.chart-wrap{position:relative}.trend canvas{width:100%;height:240px;display:block;margin-top:12px}
.chart-tip{position:absolute;pointer-events:none;background:var(--tooltip-bg);border:1px solid var(--tooltip-border);border-radius:var(--radius-md);padding:8px 10px;font-size:var(--font-size-sm);display:grid;gap:2px;min-width:120px}
.chart-tip[hidden]{display:none}
.chart-legend{margin:6px 0 0}
.body-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.vs{color:var(--color-text-secondary)}.vs .arrow{font-size:var(--font-size-base)}
.alerts:not(:empty){display:grid;gap:8px;margin-bottom:14px}.alert{margin:0;padding:10px 14px;border:1px solid var(--color-status-warning-border);background:var(--color-status-warning-bg);color:var(--color-status-warning-text);border-radius:var(--radius-md);font-size:var(--font-size-sm)}
.racket-bars{display:grid;gap:16px}.racket-head{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.racket p{margin:0;font-size:var(--font-size-xs)}
.racket.warn .racket-head span{color:var(--color-status-warning-fg)}
.racket-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px;background:var(--racket-color)}
.racket-naranja{--racket-color:var(--racket-naranja)}.racket-verde{--racket-color:var(--racket-verde)}.racket-azul{--racket-color:var(--racket-azul)}
.racket-amarillo{--racket-color:var(--racket-amarillo)}.racket-morado{--racket-color:var(--racket-morado)}.racket-gris{--racket-color:var(--racket-gris)}
.more{text-align:right;margin:0 0 24px}.more a{text-decoration:underline}
.notice:not(:empty){padding:12px 16px;background:var(--color-status-warning-bg);color:var(--color-status-warning-text);border:1px solid var(--color-status-warning-border);border-radius:var(--radius-md);margin:12px 0;line-height:1.6}
@media(min-width:900px){.board{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"today today" "week week" "body body" "composition rackets" "coincidences coincidences"}}
@media(min-width:1280px){.board{grid-template-columns:minmax(0,5fr) minmax(0,7fr);grid-template-areas:"today week" "body body" "composition rackets" "coincidences coincidences"}}
@media(max-width:800px){.body-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.block{padding:16px}.week-grid,.comp-grid{gap:10px}.card{padding:14px}.card strong{font-size:24px}.goals{grid-template-columns:minmax(0,1fr)}}
.move:empty{display:none}.move{font-size:var(--font-size-md);font-weight:600;margin:6px 0 2px;cursor:help}.move .arrow{font-size:15px}.move.off{color:var(--color-status-warning-fg)}.move.ok{color:var(--color-accent)}.move.neutral{color:var(--color-text-secondary);font-weight:400;font-size:var(--font-size-sm);cursor:default}
.next-event{margin:0 0 14px;font-size:var(--font-size-md);color:var(--color-text-primary)}.next-event .chip{margin-left:var(--space-2)}
.symptoms-line{margin-top:14px;border-top:1px solid var(--color-border-subtle);padding-top:12px}.symptom{margin:6px 0 0;font-size:var(--font-size-md);color:var(--color-text-primary)}.symptom.muted{color:var(--color-text-secondary)}
.coincidence-list{display:grid;gap:var(--space-5) var(--space-6);grid-template-columns:repeat(auto-fill,minmax(240px,1fr));margin-top:var(--space-4)}
.coincidence{display:grid;gap:var(--space-2);align-content:start;min-width:0}
.coincidence-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-2);min-width:0}
.coincidence-head strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.coincidence-count{font-size:var(--font-size-sm);color:var(--color-text-secondary);white-space:nowrap;font-variant-numeric:tabular-nums}
.coincidence-detail{font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:var(--line-height-snug)}
.coincidence-more{grid-column:1/-1;justify-self:start;padding:0}
.pending{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--color-border-subtle)}.pending .muted{margin-right:var(--space-1)}
.chip{font-size:var(--font-size-xs);padding:3px var(--space-2);border-radius:var(--radius-full);border:1px solid var(--chip-border);background:var(--chip-bg);color:var(--chip-text);white-space:nowrap}
.split{display:flex;height:8px;border-radius:var(--radius-full);overflow:hidden;background:var(--color-border-subtle);gap:2px}.split .bad{background:var(--color-status-warning-fg)}.split .good{background:var(--color-accent)}
.coincidence-list>p{grid-column:1/-1;margin:0}
.pace{color:var(--color-status-warning-fg);font-size:var(--font-size-sm);margin-top:6px}

/* Toasts (D-030): entran por la derecha, se van solos; pausa al pasar el mouse o con foco. */
.toasts{position:fixed;top:var(--toast-top);right:var(--toast-offset);z-index:var(--z-toast);display:grid;gap:var(--space-2);width:min(var(--toast-width),calc(100vw - 2*var(--toast-offset)));pointer-events:none}
.toast{--toast-tone:var(--color-status-info-fg);pointer-events:auto;position:relative;overflow:hidden;display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--toast-padding);background:var(--toast-bg);color:var(--toast-text);border:1px solid var(--color-border-strong);border-left:3px solid var(--toast-tone);border-radius:var(--toast-radius);box-shadow:var(--toast-shadow);animation:toast-in var(--toast-enter-duration) var(--ease-out) both}
.toast.success{--toast-tone:var(--color-status-success-fg)}.toast.warning{--toast-tone:var(--color-status-warning-fg)}
.toast::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--toast-tone);opacity:.5;transform-origin:left;animation:toast-timer var(--toast-duration,60s) linear both}
.toast:hover::after,.toast:focus-within::after{animation-play-state:paused}
.toast-text{flex:1;min-width:0}.toast strong{display:block;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold)}.toast p{margin:2px 0 0;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text-secondary)}
.toast-close{background:none;border:0;color:var(--color-text-secondary);font-size:var(--font-size-xl);line-height:1;padding:0 var(--space-1)}.toast-close:hover{color:var(--color-text-primary)}
.toast.leaving{animation:toast-out var(--toast-exit-duration) var(--ease-in) both}
@keyframes toast-in{from{transform:translateX(calc(100% + var(--toast-offset)));opacity:0}to{transform:none;opacity:1}}
@keyframes toast-out{to{transform:translateX(calc(100% + var(--toast-offset)));opacity:0}}
@keyframes toast-timer{from{transform:scaleX(1)}to{transform:scaleX(0)}}
@media(prefers-reduced-motion:reduce){.toast,.toast.leaving{animation-name:toast-fade}.toast.leaving{animation-direction:reverse}.toast::after{display:none}}
@keyframes toast-fade{from{opacity:0}to{opacity:1}}

/* Semáforo de Cuerpo hoy (D-030): línea de color arriba, punto y palabra; nada de fondos llenos. */
.card-head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2)}
.card[data-zone]{--zone-color:var(--card-border);border-top:var(--zone-indicator-width) solid var(--zone-color)}
.card.zone-good{--zone-color:var(--zone-good)}.card.zone-fair{--zone-color:var(--zone-fair)}.card.zone-poor{--zone-color:var(--zone-poor)}
.zone{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-xs);color:var(--zone-color);cursor:help;white-space:nowrap}
.zone::before{content:"";width:7px;height:7px;border-radius:var(--radius-full);background:currentColor}
.delta{font-weight:var(--font-weight-semibold)}.delta.better{color:var(--trend-better)}.delta.worse{color:var(--trend-worse)}.delta.same{color:var(--trend-same)}

/* Selector de período del gráfico (segmented control). */
.trend-controls{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}
.segmented{display:inline-flex;padding:3px;gap:2px;background:var(--segmented-bg);border:1px solid var(--segmented-border);border-radius:var(--segmented-radius);min-height:40px}
.segmented button{border:0;background:transparent;color:var(--segmented-text);font-size:var(--font-size-sm);padding:0 var(--space-3);border-radius:var(--radius-xs);transition:background var(--duration-fast),color var(--duration-fast)}
.segmented button:hover{color:var(--segmented-active-text)}.segmented button[aria-pressed="true"]{background:var(--segmented-active-bg);color:var(--segmented-active-text);font-weight:var(--font-weight-semibold)}

/* Selects (D-030): chevron propio con margen. En desktop, donde el navegador lo permite (appearance:
   base-select), la lista abierta también usa los tokens; en el celular queda el selector del sistema,
   que es más cómodo con el dedo. */
select{appearance:none;-webkit-appearance:none;padding-right:var(--select-padding-right);cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--select-icon) 50%),linear-gradient(135deg,var(--select-icon) 50%,transparent 50%);
  background-position:calc(100% - 20px) 50%,calc(100% - 15px) 50%;background-size:5px 5px;background-repeat:no-repeat}
select:hover{border-color:var(--color-text-tertiary)}
@supports (appearance:base-select){@media (hover:hover) and (pointer:fine){
  select,select::picker(select){appearance:base-select}
  select::picker-icon{display:none}
  select::picker(select){margin-top:var(--space-1);padding:var(--space-1);background:var(--menu-bg);border:1px solid var(--menu-border);border-radius:var(--menu-radius);box-shadow:var(--menu-shadow);color:var(--color-text-primary)}
  select option{padding:var(--space-2) var(--space-3);border-radius:var(--radius-xs);font-size:var(--font-size-sm);gap:var(--space-2)}
  select option:hover,select option:focus-visible{background:var(--menu-item-bg-hover);outline:none}
  select option:checked{color:var(--menu-item-text-selected);font-weight:var(--font-weight-semibold)}
  select option::checkmark{order:1;margin-left:auto}
}}
.coincidence-note{margin:var(--space-4) 0 0}

/* Menú del perfil (D-030): popover anclado bajo el encabezado, a la derecha. */
.person{background:none;border:0;border-left:1px solid var(--color-border-subtle);color:var(--color-text-primary);padding:var(--space-1) 0 var(--space-1) var(--space-5)}
.person::after{content:"▾";color:var(--color-text-secondary);font-size:var(--font-size-2xs);transition:transform var(--duration-fast)}
.person:hover::after,.person[aria-expanded="true"]::after{color:var(--color-text-primary)}.person[aria-expanded="true"]::after{transform:rotate(180deg)}
.profile-menu{position:fixed;inset:auto;top:calc(var(--layout-header-height) - var(--space-2));right:max(var(--layout-gutter),calc((100% - var(--layout-page-max,1200px))/2));margin:0;width:min(var(--menu-width),calc(100vw - 2*var(--space-4)));padding:var(--space-2);background:var(--menu-bg);color:var(--color-text-primary);border:1px solid var(--menu-border);border-radius:var(--menu-radius);box-shadow:var(--menu-shadow)}
.profile-head{display:flex;gap:var(--space-3);align-items:center;padding:var(--space-3)}.profile-head>div{display:grid;gap:2px;min-width:0}
.profile-head i{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--color-accent);color:var(--color-text-on-accent);font-style:normal;font-weight:700}
.profile-section{display:grid;gap:2px;padding:var(--space-1) 0;border-top:1px solid var(--color-border-subtle)}
.menu-item{display:grid;gap:2px;text-align:left;width:100%;padding:var(--space-2) var(--space-3);border:0;border-radius:var(--radius-sm);background:none;color:var(--color-text-primary);font-size:var(--font-size-md)}
.menu-item small{font-size:var(--font-size-xs);color:var(--color-text-secondary)}
.menu-item:hover:not(:disabled),.menu-item:focus-visible{background:var(--menu-item-bg-hover);outline:none}
.menu-item.danger{color:var(--menu-item-text-danger)}
.button.danger{background:var(--button-danger-bg);color:var(--button-danger-text)}.button.danger:hover{filter:brightness(1.08)}
/* Confirmación antes de desconectar o salir. */
.confirm{max-width:min(420px,calc(100vw - 2*var(--space-4)));padding:var(--space-6);background:var(--dialog-bg);color:var(--color-text-primary);border:1px solid var(--dialog-border);border-radius:var(--dialog-radius);box-shadow:var(--shadow-lg)}
.confirm::backdrop{background:var(--dialog-backdrop)}
.confirm h2{margin:0 0 var(--space-2)}.confirm p{margin:0 0 var(--space-6)}
.confirm-actions{display:flex;justify-content:flex-end;gap:var(--space-2)}
@media(max-width:520px){.person{padding-left:var(--space-3)}.person::after{font-size:var(--font-size-2xs);margin-left:var(--space-1)}.confirm-actions{flex-direction:column-reverse}.confirm-actions .button{width:100%}}

/* Malestares (D-031): resumen arriba e intensidad como punto y palabra con su color. */
.symptoms-summary{margin:6px 0 2px;font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}
.intensity{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.intensity::before{content:"";width:7px;height:7px;border-radius:var(--radius-full);background:currentColor}
.intensity.mild{color:var(--intensity-mild)}.intensity.moderate{color:var(--intensity-moderate)}.intensity.strong{color:var(--intensity-strong)}.intensity.none{color:var(--intensity-none)}.intensity.none::before{display:none}
.enzyme{color:var(--color-accent);white-space:nowrap}
.pace-ok{font-size:var(--font-size-sm);margin-top:6px}
.goals>.card:last-child:nth-child(odd){grid-column:1/-1}
.alert.info{border-color:var(--color-status-info-border);background:var(--color-status-info-bg);color:var(--color-text-secondary)}
.toast-hide{display:inline-block;margin-top:var(--space-2);padding:0;background:none;border:0;color:var(--color-text-secondary);font-size:var(--font-size-xs);text-decoration:underline}.toast-hide:hover{color:var(--color-text-primary)}

/* Ejercicio (D-039). */
.ex-toolbar{flex-direction:row;align-items:flex-end;flex-wrap:wrap}
.ex-board{display:grid;gap:20px;grid-template-columns:minmax(0,1fr);margin-bottom:24px}
.ex-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-top:12px}
.ex-grid .card p{margin:4px 0 0}
.ex-list{display:grid;gap:12px;margin-top:12px}
.ex-session{border:1px solid var(--card-border);border-radius:var(--card-radius);background:var(--card-bg);padding:14px 16px}
.ex-session p{margin:0}
.ex-session-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}
.ex-session-head .muted{margin-left:auto}
.ex-racket{margin-right:var(--space-2);color:var(--color-text-primary)}
.chip-partido{border-color:var(--chip-match-border)}.chip-entreno{border-color:var(--chip-practice-border)}
.zone-bar{display:flex;height:10px;border-radius:var(--radius-full);overflow:hidden;background:var(--bar-track);margin:10px 0 8px}
.zone-bar i{display:block;height:100%;min-width:2px}
.zone-0{background:var(--zone-0)}.zone-1{background:var(--zone-1)}.zone-2{background:var(--zone-2)}
.zone-3{background:var(--zone-3)}.zone-4{background:var(--zone-4)}.zone-5{background:var(--zone-5)}
.ex-weeks{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px;align-items:end;height:160px;margin-top:16px}
.ex-week{display:flex;flex-direction:column;justify-content:flex-end;height:100%;gap:2px;position:relative}
.ex-week i{display:block;border-radius:var(--radius-xs);min-height:2px}
.ex-week span{font-size:var(--font-size-2xs);color:var(--color-text-secondary);text-align:center;margin-top:4px}
.ex-week.now span{color:var(--color-text-primary);font-weight:600}
.area-tenis{background:var(--area-tenis)}.area-gym{background:var(--area-gym)}.area-sim_racing{background:var(--area-sim_racing)}
.area-padel{background:var(--area-padel)}.area-otro{background:var(--area-otro)}
.ex-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin:0 6px 0 12px;vertical-align:middle}
.ex-legend i:first-child{margin-left:0}
.ex-table{width:100%}.ex-table td,.ex-table th{text-align:left;padding:8px 6px}
@media(min-width:900px){.ex-board{grid-template-columns:repeat(2,minmax(0,1fr))}.ex-summary,.ex-sessions,.ex-wide{grid-column:1/-1}}
