/* CORDA · Estilos de componentes
   Solo usa var(--token) de styles/tokens.css. Los únicos px que quedan son
   medidas de maquetación que el brand book no cubre (anchos de columna,
   tamaños de avatar, alturas de mapa o gráfica, cortes responsivos). */
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=Space+Grotesk:wght@600;700&display=swap');

/* ============ Base ============ */
*{box-sizing:border-box}
html{background:var(--surface)}
body{margin:0;background:var(--surface);color:var(--ink);font-family:var(--font-sans);font-size:var(--body-size);line-height:var(--body-line);font-weight:var(--body-weight)}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none;padding:0}
h1,h2,h3,p{margin:0}
h1{font-family:var(--font-display);font-size:var(--h1-size);line-height:var(--h1-line);font-weight:var(--h1-weight);letter-spacing:var(--h1-tracking)}
h2{font-family:var(--font-display);font-size:var(--h2-size);line-height:var(--h2-line);font-weight:var(--h2-weight);letter-spacing:var(--h2-tracking)}
h3{font-family:var(--font-display);font-size:var(--h3-size);line-height:var(--h3-line);font-weight:var(--h3-weight)}
p{font-size:var(--body-size);line-height:var(--body-line)}
small{font-size:var(--small-size);line-height:var(--small-line);font-weight:var(--small-weight);color:var(--ink-muted)}
b,strong{font-weight:600}
a{color:var(--ink);text-underline-offset:4px}
.muted,.hint{color:var(--ink-muted)}
.hint{font-size:var(--small-size);line-height:var(--small-line);margin:var(--space-4) 0}
.eyebrow{display:block;font-family:var(--font-display);font-size:var(--eyebrow-size);line-height:var(--eyebrow-line);font-weight:var(--eyebrow-weight);letter-spacing:var(--eyebrow-tracking);text-transform:uppercase;color:var(--ink-muted)}
.metric{font-family:var(--font-display);font-size:var(--metric-size);line-height:var(--metric-line);font-weight:var(--metric-weight);letter-spacing:var(--metric-tracking);font-variant-numeric:tabular-nums;margin:var(--space-4) 0 var(--space-2)}
.metric small{font-family:var(--font-sans)}
.divider{margin:var(--space-6) 0;border:0;border-top:1px solid var(--line)}
.full{grid-column:1/-1}
.row{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3)}
.empty{padding:var(--space-12) var(--space-4);color:var(--ink-muted)}
[hidden]{display:none!important}

/* Foco visible en todo elemento interactivo */
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
:where(input,select,textarea):focus{outline:2px solid var(--focus-ring);outline-offset:2px}

/* ============ Logotipo ============ */
.brand,.welcome-logo,.footer-brand{font-family:var(--font-display);font-weight:700;letter-spacing:var(--logo-tracking);text-transform:uppercase;color:var(--ink);min-width:72px}
.brand{font-size:var(--h2-size);line-height:var(--h2-line)}
.brand span,.welcome-logo span,.footer-brand span{color:var(--logo-dot)}

/* ============ Íconos ============ */
.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* ============ Botones ============ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:48px;padding:0 var(--space-6);border-radius:var(--radius-md);border:1px solid var(--line);background:transparent;color:var(--ink);font-family:var(--font-sans);font-size:var(--label-size);line-height:var(--label-line);font-weight:var(--label-weight);text-decoration:none}
.btn.lime{background:var(--lima);border-color:var(--lima);color:var(--on-lima)}
.btn:disabled{opacity:.5;cursor:default}
.link{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--ink);font-size:var(--label-size);line-height:var(--label-line);font-weight:var(--label-weight);text-decoration:underline;text-underline-offset:4px;padding:var(--space-2) 0}
.link+.link{margin-left:var(--space-4)}

/* ============ Formularios ============ */
label{display:block;font-size:var(--label-size);line-height:var(--label-line);font-weight:var(--label-weight);color:var(--ink)}
input,select,textarea{display:block;width:100%;min-height:48px;margin-top:var(--space-2);padding:var(--space-3);background:var(--surface-deep);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);font-family:var(--font-sans);font-size:var(--body-size);line-height:var(--body-line);font-weight:var(--body-weight)}
input::placeholder,textarea::placeholder{color:var(--ink-muted)}
textarea{min-height:96px;resize:vertical}
input[type=checkbox],input[type=radio]{width:auto;min-height:0;margin:0;accent-color:var(--lima)}
input[type=file]{padding:var(--space-2)}
.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}
.formactions{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);margin-top:var(--space-8)}
.optional{font-weight:400;color:var(--ink-muted)}
.utr-field{margin-top:var(--space-4)}
#utr-tip{display:block;margin-top:var(--space-2)}

/* ============ Badge / estado ============ */
.badge{display:inline-block;padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--surface-deep);color:var(--ink);font-size:var(--caption-size);line-height:var(--caption-line);font-weight:var(--caption-weight)}
.badge.clay{background:var(--arena);border-color:var(--arena);color:var(--on-lima)}
.badge.gray{color:var(--ink-muted)}

/* ============ Avatar ============ */
.avatar{width:40px;height:40px;border-radius:var(--radius-pill);background:var(--surface-deep);border:1px solid var(--line);color:var(--ink);display:inline-grid;place-items:center;font-family:var(--font-display);font-size:var(--label-size);font-weight:600;object-fit:cover;flex:none}

/* ============ Tarjetas ============ */
.card,.agenda-main{background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-6)}
.card h2{margin:var(--space-2) 0}
.sectiontitle{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);margin-bottom:var(--space-6)}
.heading{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-8)}
.heading p{margin-top:var(--space-2)}
.columns,.portal-grid,.flow-week{display:grid;gap:var(--space-8);margin-bottom:var(--space-8)}
.columns{grid-template-columns:1.6fr 1fr}
.portal-grid{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}
.flow-week{grid-template-columns:1.35fr 1fr}
.flow-week .card b,.progress-entry b{display:block;margin-top:var(--space-4)}

/* Bloque de nota (sin borde lateral de color) */
.note,.rain-note,.coach-pinned,.month-observation,.fee-reference,.coach-month>div{margin:var(--space-4) 0;padding:var(--space-4);background:var(--surface-deep);border:1px solid var(--line);border-radius:var(--radius-md)}
.note small,.rain-note small,.coach-pinned small,.guide-frame small{display:block;font-family:var(--font-display);font-size:var(--eyebrow-size);line-height:var(--eyebrow-line);font-weight:var(--eyebrow-weight);letter-spacing:var(--eyebrow-tracking);text-transform:uppercase;color:var(--ink-muted)}
.rain-note h3,.coach-pinned h3{margin:var(--space-2) 0}
.rain-note b{display:block;margin:var(--space-2) 0 var(--space-1)}

/* Feedback del coach: arena con texto on-lima */
.coach-month>div.monthly-gain,.coach-pinned{background:var(--arena);border-color:var(--arena);color:var(--on-lima)}
.coach-month .monthly-gain b{display:flex;align-items:center;gap:var(--space-2);margin:0 0 var(--space-2);color:var(--on-lima)}
.coach-month .monthly-gain p,.coach-pinned p,.coach-pinned h3{color:var(--on-lima)}
.coach-pinned small{color:var(--on-lima)}
.gain-check{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:var(--radius-pill);background:var(--on-lima);color:var(--lima);font-size:var(--caption-size)}
.card.coach-month>div b{margin-top:0}
.review-period{display:block;margin-top:var(--space-1)}

/* ============ Toast y modal (flotantes: única sombra permitida) ============ */
#toast{position:fixed;bottom:var(--space-8);left:50%;transform:translateX(-50%);z-index:100;display:none;padding:var(--space-3) var(--space-6);background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--radius-md);color:var(--ink);font-size:var(--small-size);line-height:var(--small-line);box-shadow:var(--shadow-card)}
dialog{max-width:560px;width:calc(100% - var(--space-8));padding:var(--space-8);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-raised);color:var(--ink);box-shadow:var(--shadow-card)}
dialog::backdrop{background:color-mix(in srgb,var(--verde-noche) 65%,transparent)}
dialog form{margin-top:var(--space-6)}
#close,#meet-close{width:48px;height:48px;border-radius:var(--radius-md);color:var(--ink)}

/* ============ Intro con video ============ */
.welcome{position:relative;min-height:100svh;display:flex;align-items:center;justify-content:center;padding:var(--space-20) var(--space-6) var(--space-20);background:var(--verde-noche);isolation:isolate;overflow:hidden}
.welcome-film{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:55% center;z-index:-3}
.welcome-shade{position:absolute;inset:0;background:color-mix(in srgb,var(--verde-noche) 65%,transparent);z-index:-2}
.welcome-core{width:100%;max-width:420px;text-align:center}
.welcome-logo{font-size:var(--display-size);line-height:var(--display-line);letter-spacing:var(--display-tracking)}
.welcome-slogan{margin-top:var(--space-4);font-size:var(--body-lg-size);line-height:var(--body-lg-line);color:var(--ink)}
.welcome-actions{display:grid;gap:var(--space-3);max-width:320px;margin:var(--space-12) auto 0}
.welcome-personal{margin-top:var(--space-6);font-size:var(--small-size);line-height:var(--small-line);color:var(--ink-muted)}
.welcome-footer{position:absolute;left:0;right:0;bottom:var(--space-4);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-8);font-family:var(--font-display);font-size:var(--eyebrow-size);line-height:var(--eyebrow-line);font-weight:var(--eyebrow-weight);letter-spacing:var(--eyebrow-tracking);text-transform:uppercase;color:var(--ink-muted)}
.club-play,.banner-play{min-height:48px;padding:0 var(--space-4);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--verde-noche);color:var(--ink);font-size:var(--label-size);line-height:var(--label-line);font-weight:var(--label-weight)}
#access-content{display:contents}
.cover-language{position:absolute;z-index:4;top:var(--space-6);right:var(--space-6);display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-3);background:var(--verde-noche);border:1px solid var(--line);border-radius:var(--radius-md);color:var(--ink)}
.cover-language select{width:auto;min-height:44px;margin:0;padding:0 var(--space-2);border:0;background:transparent;font-size:var(--label-size);font-weight:var(--label-weight)}
.cover-language span{color:var(--ink-muted)}

/* Secciones de portada (alineadas a la izquierda) */
.cover-mission,.cover-faq{padding:var(--space-20) var(--space-6)}
.cover-mission>*,.cover-faq>*{max-width:720px;margin-inline:auto}
.cover-mission{background:var(--surface)}
.cover-mission h2,.cover-faq h2{margin:var(--space-2) auto var(--space-6)}
.cover-mission p{font-size:var(--body-lg-size);line-height:var(--body-lg-line)}
.cover-faq{background:var(--surface-deep)}
.cover-faq details{border-bottom:1px solid var(--line)}
.cover-faq summary{padding:var(--space-4) 0;cursor:pointer;font-weight:600}
.cover-faq details p{padding:0 0 var(--space-4);color:var(--ink-muted)}
.founder-story{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1fr);align-items:center;gap:var(--space-12);max-width:1150px;margin:auto;padding:var(--space-20) var(--space-6)}
.founder-frame{aspect-ratio:1;display:grid;place-content:center;justify-items:center;gap:var(--space-3);background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--radius-lg)}
.founder-copy h2{margin:var(--space-2) 0 var(--space-4)}
.founder-copy p{margin-bottom:var(--space-4)}
.founder-copy strong,.founder-copy>small:last-child{display:block}

/* Pie de contacto */
.contact-footer{display:grid;grid-template-columns:.8fr 1fr 1.1fr;gap:var(--space-8);margin-top:var(--space-12);padding:var(--space-8) var(--space-6);background:var(--verde-noche);border-top:1px solid var(--line);border-radius:var(--radius-lg);color:var(--ink)}
#access-footer>.contact-footer{margin:0;border-radius:0;padding:var(--space-12) var(--space-6)}
.footer-brand{font-size:var(--h2-size);line-height:var(--h2-line)}
.footer-brand small{display:block;margin-top:var(--space-2);font-family:var(--font-sans);font-weight:400;letter-spacing:0;text-transform:none}
.contact-footer details{margin-bottom:var(--space-3)}
.contact-footer summary,.contact-info b{font-weight:600;cursor:pointer}
.contact-footer details p{margin-top:var(--space-2);color:var(--ink-muted)}
.contact-info{display:grid;align-content:start;gap:var(--space-2)}
.contact-info a{text-decoration:none}
.contact-info a:hover{text-decoration:underline}
.contact-channel{display:inline-flex;align-items:center;gap:var(--space-2)}
.contact-channel svg{width:20px;height:20px;stroke:currentColor;stroke-width:1.75;fill:none}

/* ============ Acceso y registro ============ */
.access-panel{position:relative;z-index:1;width:100%;max-width:480px}
.access-panel h1{margin:var(--space-3) 0}
.access-panel p{color:var(--ink-muted)}
.access-panel form label{margin-top:var(--space-4)}
.access-roles{display:grid;gap:var(--space-3);margin:var(--space-6) 0}
.access-roles button{display:grid;gap:var(--space-1);padding:var(--space-4);text-align:left;background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--radius-md);color:var(--ink)}
.access-roles button strong{font-size:var(--label-size);line-height:var(--label-line)}
.access-roles button:hover{border-color:var(--verde-medio);background:var(--verde-medio)}
.access-back{min-height:48px;color:var(--ink);font-size:var(--label-size);line-height:var(--label-line);font-weight:var(--label-weight);text-decoration:underline;text-underline-offset:4px}
.access-panel .formactions .access-back{text-decoration:none}
.auth-form .password-field{display:flex;align-items:flex-end;gap:var(--space-2)}
.auth-form .password-field input{flex:1}
.password-toggle{min-height:48px;padding:0 var(--space-4);border:1px solid var(--line);border-radius:var(--radius-md);font-size:var(--label-size);font-weight:var(--label-weight)}
.auth-form .remember-me{display:flex;align-items:center;gap:var(--space-3);font-weight:400}
.auth-error{margin-top:var(--space-4);padding:var(--space-3);border:1px solid var(--danger);border-radius:var(--radius-sm);color:var(--danger);font-size:var(--small-size);line-height:var(--small-line)}

/* Registro paso a paso */
.wizard{align-items:center;padding:var(--space-20) var(--space-6)}
.wizard-top{position:absolute;top:var(--space-6);left:var(--space-6);right:var(--space-6);display:flex;justify-content:space-between;align-items:center}
.wizard-panel{position:relative;width:100%;max-width:460px}
.wizard-progress{display:flex;gap:var(--space-2);margin-bottom:var(--space-6)}
.wizard-progress i{flex:1;height:4px;border-radius:var(--radius-sm);background:var(--line)}
.wizard-progress i.active{background:var(--ink)}
.wizard-count{display:flex;justify-content:space-between;margin-bottom:var(--space-4);font-family:var(--font-display);font-size:var(--eyebrow-size);line-height:var(--eyebrow-line);font-weight:var(--eyebrow-weight);letter-spacing:var(--eyebrow-tracking);color:var(--ink)}
.wizard-count span{color:var(--ink-muted)}
.wizard-panel h1{outline:none}
.wizard-description{margin:var(--space-3) 0 var(--space-8);color:var(--ink-muted)}
.wizard-helper{margin-top:var(--space-4);font-size:var(--small-size);line-height:var(--small-line);color:var(--ink-muted)}
.wizard-foot{position:absolute;bottom:var(--space-6);left:var(--space-6);right:var(--space-6);text-align:center;font-size:var(--caption-size);line-height:var(--caption-line);font-weight:var(--caption-weight);color:var(--ink-muted)}
.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-top:var(--space-3)}
.choice{position:relative;cursor:pointer}
.choice input{position:absolute;opacity:0;width:1px;height:1px}
.choice>span{display:block;height:100%;padding:var(--space-4);background:var(--surface-deep);border:1px solid var(--line);border-radius:var(--radius-md)}
.choice strong{display:block;font-size:var(--label-size);line-height:var(--label-line)}
.choice small{display:block;margin-top:var(--space-1);font-size:var(--caption-size);line-height:var(--caption-line);font-weight:400}
.choice input:checked+span{background:var(--verde-medio);border-color:var(--verde-medio)}
.choice input:checked+span small{color:var(--ink)}
.choice input:focus-visible+span{outline:2px solid var(--focus-ring);outline-offset:2px}
.wizard-photo{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-4)}
.wizard-photo .avatar{width:112px;height:112px;font-size:var(--h2-size)}
.photo-picker{display:inline-flex;align-items:center;min-height:48px;padding:0 var(--space-6);border:1px solid var(--line);border-radius:var(--radius-md);cursor:pointer}
.photo-picker input{position:absolute;width:1px;height:1px;opacity:0}
.photo-picker:focus-within{outline:2px solid var(--focus-ring);outline-offset:2px}

/* ============ App: marco ============ */
.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh;background:var(--surface)}
.shell>div{min-width:0}
.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:var(--space-8) var(--space-4);background:var(--verde-noche);border-right:1px solid var(--line)}
.sidebar>.brand{padding:0 var(--space-3) var(--space-8)}
.workspace{padding:var(--space-4) var(--space-3);margin-bottom:var(--space-6);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.workspace strong{display:block;margin:var(--space-2) 0;font-size:var(--small-size);line-height:var(--small-line)}
.nav{display:grid;gap:var(--space-1)}
.nav button{display:flex;align-items:center;gap:var(--space-3);min-height:48px;padding:0 var(--space-3);border-radius:var(--radius-md);text-align:left;color:var(--ink-muted);font-size:var(--label-size);line-height:var(--label-line);font-weight:var(--label-weight)}
.nav button:hover{color:var(--ink)}
.nav button.active{background:var(--verde-medio);color:var(--ink)}
.sidebarfooter{margin-top:auto;padding-top:var(--space-6)}
.demo{padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius-md);font-size:var(--caption-size);line-height:var(--caption-line);font-weight:var(--caption-weight);color:var(--ink-muted)}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) var(--space-8);background:var(--surface);border-bottom:1px solid var(--line)}
.topbar>.muted{font-size:var(--small-size);line-height:var(--small-line)}
.topbar strong{color:var(--ink)}
.mobilebrand{display:none}
.portal-tools{display:flex;align-items:center;gap:var(--space-2)}
.portal-tools .cover-language{position:static}
.main{max-width:1440px;margin:auto;padding:var(--space-12) var(--space-8)}
.account-link{margin-top:var(--space-8)}

/* ============ Agenda y sesiones ============ */
.plan-tabs{display:flex;gap:var(--space-2);margin-bottom:var(--space-6)}
.plan-tabs button{min-height:48px;padding:0 var(--space-6);border:1px solid var(--line);border-radius:var(--radius-md);font-size:var(--label-size);font-weight:var(--label-weight);color:var(--ink)}
.plan-tabs button[aria-pressed=true]{background:var(--verde-medio);border-color:var(--verde-medio)}
.days-strip{display:flex;gap:var(--space-1);margin:var(--space-4) 0 var(--space-6)}
.days-strip button{flex:1;display:grid;justify-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-1);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-deep);color:var(--ink)}
.days-strip button small{font-size:var(--caption-size);line-height:var(--caption-line)}
.days-strip b{font-family:var(--font-display);font-size:var(--h3-size);line-height:var(--h3-line);font-variant-numeric:tabular-nums}
.days-strip button.chosen{background:var(--verde-medio);border-color:var(--verde-medio)}
.days-strip button.chosen small{color:var(--ink)}
.days-strip i{width:4px;height:4px;border-radius:var(--radius-pill)}
.days-strip .booked{background:var(--ink-muted)}
.days-strip .chosen .booked{background:var(--ink)}
.agenda-event{display:flex;gap:var(--space-4);padding:var(--space-6) 0;border-bottom:1px solid var(--line)}
.agenda-event:last-child{border:0}
.agenda-event h3{margin:var(--space-2) 0}
.agenda-event h3+small{display:block;margin:var(--space-1) 0 var(--space-2)}
.agenda-event p{font-size:var(--small-size);line-height:var(--small-line);color:var(--ink-muted)}
.event-clock b{font-family:var(--font-display);font-size:var(--h3-size);line-height:var(--h3-line);font-weight:600;font-variant-numeric:tabular-nums}
.event-clock small{display:block;margin:var(--space-1) 0}
.past-session{color:var(--ink-muted);text-decoration-thickness:1px}
.session{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4) 0;border-bottom:1px solid var(--line)}
.session:last-child{border:0;padding-bottom:0}
.session h3{margin-top:var(--space-2)}
.session>div:not(.time){flex:1}
.time{width:64px;flex:none;font-family:var(--font-display);font-weight:600}
.time small{display:block;margin-top:var(--space-1);font-family:var(--font-sans)}
.sessioninfo{flex:1}
.sessioninfo p{margin-top:var(--space-2);font-size:var(--small-size);line-height:var(--small-line);color:var(--ink-muted)}
.session .btn{flex:none}

/* Tarjeta de próxima sesión */
.next-card{position:relative;isolation:isolate;overflow:hidden;padding:var(--space-6);background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--radius-md)}
.next-card>small{display:block;font-family:var(--font-display);font-size:var(--eyebrow-size);line-height:var(--eyebrow-line);font-weight:var(--eyebrow-weight);letter-spacing:var(--eyebrow-tracking);text-transform:uppercase;color:var(--ink)}
.next-card h3{margin:var(--space-3) 0 var(--space-2)}
.next-card p{margin-top:var(--space-2)}
.next-card .next-meta{font-size:var(--small-size);line-height:var(--small-line)}
.next-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-4);margin-top:var(--space-6)}
.next-confirm{display:inline-flex;align-items:center;min-height:48px;padding:0 var(--space-6);border:1px solid var(--lima);border-radius:var(--radius-md);background:var(--lima);color:var(--on-lima);font-size:var(--label-size);line-height:var(--label-line);font-weight:var(--label-weight)}
.next-confirm[aria-pressed=true]{background:transparent;border-color:var(--line);color:var(--ink)}
.session-when{display:flex;align-items:center;gap:var(--space-4);margin:var(--space-4) 0}
.session-when b{font-family:var(--font-display);font-size:var(--metric-size);line-height:var(--metric-line);font-weight:var(--metric-weight);letter-spacing:var(--metric-tracking);font-variant-numeric:tabular-nums}
.session-when span{font-size:var(--small-size);line-height:var(--small-line);color:var(--ink)}
.next-photo .activity-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 42%;z-index:-2}
.next-photo:before{content:'';position:absolute;inset:0;z-index:-1;background:color-mix(in srgb,var(--verde-noche) 65%,transparent)}

/* Torneo: tarjeta destacada en arena */
.tournament{align-self:start;background:var(--arena);border-color:var(--arena);color:var(--on-lima)}
.tournament .eyebrow,.tournament p,.tournament small,.tournament .link{color:var(--on-lima)}
.tournament h2{margin:var(--space-4) 0 var(--space-2)}
.countdown{margin:var(--space-6) 0;font-family:var(--font-display);font-size:var(--metric-size);line-height:var(--metric-line);font-weight:var(--metric-weight);letter-spacing:var(--metric-tracking);font-variant-numeric:tabular-nums}
.countdown small{font-family:var(--font-sans);letter-spacing:0}
.tourney-road{display:grid;grid-template-columns:repeat(4,1fr);list-style:none;padding:0;margin:var(--space-4) 0 0}
.tourney-road li{position:relative;display:grid;align-content:start;gap:var(--space-2);padding-right:var(--space-2)}
.tourney-road li:before{content:'';position:absolute;left:0;right:0;top:4px;border-top:1px solid var(--on-lima)}
.tourney-road li:last-child:before{display:none}
.tourney-road i{position:relative;width:10px;height:10px;border-radius:var(--radius-pill);background:var(--arena);border:1px solid var(--on-lima)}
.tourney-road b{font-size:var(--caption-size);line-height:var(--caption-line)}
.tourney-road small{font-size:var(--caption-size);line-height:var(--caption-line)}
.tourney-road .reached i{background:var(--on-lima)}
.tourney-road .current i{outline:2px solid var(--on-lima);outline-offset:2px}

/* Banner de la academia */
.player-banner{position:relative;isolation:isolate;overflow:hidden;display:flex;align-items:center;min-height:160px;margin-bottom:var(--space-8);background:var(--verde-noche);border:1px solid var(--line);border-radius:var(--radius-lg)}
.player-banner video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:52% 32%;z-index:-2}
.player-banner:before{content:'';position:absolute;inset:0;background:color-mix(in srgb,var(--verde-noche) 65%,transparent);z-index:-1}
.banner-copy{padding:var(--space-6)}
.banner-copy small{display:block;font-family:var(--font-display);font-size:var(--eyebrow-size);line-height:var(--eyebrow-line);font-weight:var(--eyebrow-weight);letter-spacing:var(--eyebrow-tracking);color:var(--ink)}
.banner-copy h2{margin:var(--space-2) 0}
.banner-copy button{min-height:48px;font-size:var(--label-size);font-weight:var(--label-weight);text-decoration:underline;text-underline-offset:4px}
.banner-play{position:absolute;right:var(--space-4);bottom:var(--space-4)}

/* Guía de la sesión */
.mini-guide{padding:var(--space-4);background:var(--surface-deep);border:1px solid var(--line);border-radius:var(--radius-md)}
.guide-frames{min-height:96px;padding:var(--space-4) 0 var(--space-1)}
.guide-frame p{margin-top:var(--space-2)}
.guide-controls{display:flex;align-items:center;justify-content:space-between;font-size:var(--caption-size);line-height:var(--caption-line);color:var(--ink-muted)}
.guide-controls button{min-width:48px;min-height:48px;border:1px solid var(--line);border-radius:var(--radius-md);color:var(--ink)}

/* ============ Progreso ============ */
.goal{padding:var(--space-4) 0;border-bottom:1px solid var(--line)}
.goal:last-child{border:0}
.goal h3{margin:var(--space-2) 0}
.goal p{font-size:var(--small-size);line-height:var(--small-line);color:var(--ink-muted)}
.progress{height:6px;margin:var(--space-3) 0 var(--space-2);overflow:hidden;border-radius:var(--radius-sm);background:var(--surface-deep)}
.progress i{display:block;height:100%;background:var(--lima)}
.progress-entry{padding:var(--space-4) 0;border-top:1px solid var(--line)}
.progress-entry h3{margin-top:var(--space-2)}
.annual-example{margin-bottom:var(--space-8)}
.annual-top{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-6)}
.annual-top p,.next-target p{color:var(--ink-muted)}
.annual-score{font-family:var(--font-display);font-size:var(--metric-size);line-height:var(--metric-line);font-weight:var(--metric-weight);letter-spacing:var(--metric-tracking);color:var(--accent-text);white-space:nowrap;font-variant-numeric:tabular-nums}
.annual-score small{display:block;font-family:var(--font-sans);letter-spacing:0;font-size:var(--caption-size);line-height:var(--caption-line)}
.annual-chart{display:block;width:100%;height:auto;margin:var(--space-4) 0}
.annual-chart text{font-family:var(--font-sans);font-size:var(--caption-size);fill:var(--ink-muted)}
.chart-grid{stroke:var(--line)}
.chart-line{fill:none;stroke:var(--lima);stroke-width:2.5;stroke-linejoin:round}
.chart-area{display:none}
.chart-dot{fill:var(--verde-medio);stroke:var(--ink);stroke-width:1}
.chart-dot.selected{fill:var(--ink)}
.chart-milestone{fill:var(--lima);stroke:var(--on-lima);stroke-width:1.5}
.chart-hit{fill:transparent}
.chart-point{cursor:pointer}
.chart-range{display:inline-flex;align-items:center;gap:var(--space-2);margin:0 0 var(--space-2);padding:0 var(--space-3);min-height:48px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-deep);color:var(--ink)}
.chart-range:hover,.chart-range:focus-within{border-color:var(--ink)}
.chart-range span{font-size:var(--caption-size);line-height:var(--caption-line);color:var(--ink-muted)}
.chart-range select{width:auto;min-height:46px;margin:0;padding:0 var(--space-2);border:0;background:transparent;color:var(--ink);font-size:var(--label-size);font-weight:var(--label-weight);cursor:pointer}
.chart-months{display:grid;grid-template-columns:repeat(auto-fit,minmax(48px,1fr));gap:var(--space-1)}
.chart-months button{min-height:48px;padding:var(--space-1);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-deep);color:var(--ink)}
.chart-months small,.chart-months b{display:block;font-size:var(--caption-size);line-height:var(--caption-line)}
.chart-months b{font-family:var(--font-display);font-variant-numeric:tabular-nums}
.chart-months button[aria-pressed=true]{background:var(--verde-medio);border-color:var(--verde-medio)}
.chart-months button[aria-pressed=true] small{color:var(--ink)}
.tournament-key span,.chart-months small span{color:var(--lima)}
.month-observation b{display:block;margin:var(--space-2) 0 var(--space-1)}
.tournament-note{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--line)}
.tournament-note p{margin:0 0 var(--space-2)}
.next-target{padding-top:var(--space-4);border-top:1px solid var(--line)}
.next-target h3{margin:var(--space-2) 0}
.coach-month h2{margin:var(--space-2) 0}

/* Gimnasio */
.exercise{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-3);padding:var(--space-4);background:var(--surface-deep);border:1px solid var(--line);border-radius:var(--radius-md)}
.exercise h3{margin-bottom:var(--space-1)}
.exercise>div{flex:1}
.exercise .number{font-family:var(--font-display);font-size:var(--h2-size);line-height:var(--h2-line);color:var(--ink-muted)}
.check{width:48px;height:48px;flex:none;display:grid;place-items:center;border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--on-lima)}
.check.done{background:var(--lima);border-color:var(--lima)}

/* Perfil */
.profileheader{display:flex;align-items:center;gap:var(--space-6);margin-bottom:var(--space-6)}
.profileheader h2{margin-top:var(--space-2)}
.profileheader .avatar{width:80px;height:80px;font-size:var(--h2-size)}
.columns .formgrid h3{margin-top:var(--space-2)}

/* Jugadores (vista coach) */
.athlete-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:var(--space-8)}
.athlete-list .row{justify-content:flex-start}
.athlete-list small{display:block;margin:var(--space-4) 0 var(--space-1)}
.athlete-name{color:var(--ink);text-align:left;font:inherit}
.athlete-name:hover{text-decoration:underline;text-underline-offset:4px}

/* ============ Mi academia ============ */
.club-cover{position:relative;isolation:isolate;overflow:hidden;display:flex;align-items:flex-end;min-height:420px;margin-bottom:var(--space-12);background:var(--verde-noche);border-radius:var(--radius-lg);color:var(--ink)}
.club-background{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.club-cover:after{content:'';position:absolute;inset:0;background:color-mix(in srgb,var(--verde-noche) 65%,transparent);z-index:-1}
.club-identity{width:100%;max-width:800px;padding:var(--space-8)}
.club-identity h1{margin:var(--space-3) 0 var(--space-6);overflow-wrap:anywhere}
.club-mark{max-width:160px;height:64px;margin-bottom:var(--space-4);object-fit:contain;object-position:left}
.club-actions{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap}
.club-play{position:absolute;top:var(--space-4);right:var(--space-4)}
.club-scroll{position:absolute;right:var(--space-4);bottom:var(--space-4);min-height:48px;display:inline-flex;align-items:center;gap:var(--space-2);color:var(--ink);font-size:var(--label-size);font-weight:var(--label-weight)}
#academic-board,#academic-map,#academic-roster{margin-top:var(--space-12)}
#academic-board h2{margin:var(--space-2) 0 var(--space-4)}
.group-feed{overflow:auto}
.group-post{padding:var(--space-3) 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}
.group-post p{white-space:pre-wrap}
.group-post h3{margin:var(--space-2) 0}
.roster-section{margin:var(--space-8) 0}
.roster-section>h2{margin-bottom:var(--space-4)}
.directory-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr));gap:var(--space-8)}
.directory-card h2{margin:var(--space-4) 0 var(--space-2)}
.club-person{display:flex;flex-direction:column;align-items:flex-start}
.club-person .person-photo .avatar{width:96px;height:96px;font-size:var(--h2-size)}
.club-person .badge{margin-top:var(--space-3)}
.bio,.person-contact{overflow-wrap:anywhere}
.club-person .bio{margin-bottom:var(--space-4);color:var(--ink-muted)}
.person-contact{display:grid;gap:var(--space-2);justify-items:start;width:100%;margin-top:auto;padding-top:var(--space-4);border-top:1px solid var(--line)}
.member-edit{margin-top:var(--space-3)}
#academic-map iframe{width:100%;height:260px;margin:var(--space-4) 0;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-deep)}
.academy-columns>section,#academic-roster,#academic-map{scroll-margin-top:var(--space-4)}

/* ============ Citas ============ */
.meeting-card>.btn{margin-top:var(--space-2)}
.meeting-card>.link{margin-left:var(--space-4)}
.meeting-receipt{margin-top:var(--space-3);padding:var(--space-3) 0;border-top:1px solid var(--line)}
.meeting-receipt b,.meet-people small{display:block}
.meet-people{display:grid;gap:var(--space-2);margin:var(--space-4) 0}
.meet-people button,.meet-slots button,.meet-week button{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-deep);color:var(--ink)}
.meet-people button{display:flex;align-items:center;gap:var(--space-3);min-height:56px;padding:var(--space-2) var(--space-3);text-align:left}
.meet-people [aria-pressed=true],.meet-week [aria-pressed=true],.meet-slots [aria-pressed=true]{background:var(--verde-medio);border-color:var(--verde-medio)}
.meet-people .meet-circle{width:24px;height:24px;flex:none;display:grid;place-items:center;border:1px solid var(--ink-muted);border-radius:var(--radius-pill);font-size:var(--caption-size);color:var(--on-lima)}
.meet-people [aria-pressed=true] .meet-circle{background:var(--lima);border-color:var(--lima)}
.meet-people [aria-pressed=true] .meet-circle:after{content:'✓'}
.meet-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--space-1);margin:var(--space-4) 0}
.meet-week button{padding:var(--space-2) var(--space-1)}
.meet-week b,.meet-week small{display:block}
.meet-week small{font-size:var(--caption-size);line-height:var(--caption-line)}
.meet-slots{display:grid;gap:var(--space-2);max-height:32vh;margin:var(--space-3) 0;overflow:auto}
.meet-slots button{display:flex;align-items:center;gap:var(--space-3);min-height:48px;padding:var(--space-2) var(--space-3);text-align:left}
.meet-slots button:disabled,.meet-week button:disabled{opacity:.5}
.office-row{display:grid;grid-template-columns:1fr 96px auto 96px;align-items:center;gap:var(--space-2);margin:var(--space-2) 0}
.office-row label{display:flex;align-items:center;gap:var(--space-2)}
.office-row select{margin:0}
.meeting-person,#office-form>.btn{margin-top:var(--space-4)}

/* ============ Mensualidad ============ */
.fee-months{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2);margin-top:var(--space-4)}
.fee-months button{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);text-align:left;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-deep);color:var(--ink)}
.fee-months button[aria-pressed=true]{background:var(--verde-medio);border-color:var(--verde-medio)}
.fee-months button[aria-pressed=true] small{color:var(--ink)}
.fee-months b,.fee-months small{display:block}
.fee-months b::first-letter,.fee-detail h2::first-letter{text-transform:uppercase}
.fee-dot{width:24px;height:24px;flex:none;display:grid;place-items:center;border:1px solid var(--ink-muted);border-radius:var(--radius-pill);font-size:var(--caption-size);color:var(--ink)}
.fee-dot.paid{background:var(--lima);border-color:var(--lima);color:var(--on-lima)}
.fee-dot.review{border-color:var(--arena);color:var(--arena)}
.fee-detail{margin-top:var(--space-8)}
.fee-detail h2{margin:var(--space-2) 0}
.fee-steps{padding-left:var(--space-6)}
.fee-steps li{margin-bottom:var(--space-3)}
.fee-reference b,.fee-reference small{display:block}
.fee-reference b{font-family:var(--font-display);font-size:var(--h3-size);line-height:var(--h3-line)}
.bank-info{display:grid;grid-template-columns:auto 1fr;gap:var(--space-2) var(--space-4);font-size:var(--small-size);line-height:var(--small-line)}
.bank-info dt{color:var(--ink-muted)}
.bank-info dd{margin:0;overflow-wrap:anywhere}
.fee-upload{margin:var(--space-4) 0}
.fee-upload small{display:block;margin:var(--space-2) 0}

/* Pagos privados */
.private-week,.private-totals,.private-receipt{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}
.private-totals{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--line)}
.private-totals b,.private-totals small{display:block}
.private-totals b{font-family:var(--font-display);font-size:var(--h3-size);line-height:var(--h3-line);font-variant-numeric:tabular-nums}
.private-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr));gap:var(--space-8);margin-top:var(--space-8)}
.private-list h3,.private-file{margin:var(--space-4) 0}
.private-preview{display:block;width:100%;height:46vh;margin:var(--space-3) 0;object-fit:contain}
.private-receipt{flex-wrap:wrap;padding:var(--space-2) 0;border-top:1px solid var(--line);overflow-wrap:anywhere}

/* ============ Responsivo (móvil primero en márgenes y separaciones) ============ */
@media(max-width:1000px){
  .shell{grid-template-columns:200px 1fr}
  .columns,.portal-grid{grid-template-columns:1fr}
  .main{padding:var(--space-8) var(--space-6)}
}
@media(max-width:780px){
  .flow-week{grid-template-columns:1fr}
  .fee-months{grid-template-columns:repeat(3,1fr)}
  .contact-footer{grid-template-columns:1fr}
}
@media(max-width:680px){
  .shell{display:block}
  .sidebar{position:fixed;top:auto;bottom:0;z-index:20;width:100%;height:calc(72px + env(safe-area-inset-bottom));padding:var(--space-1) var(--space-1) env(safe-area-inset-bottom);border-right:0;border-top:1px solid var(--line)}
  .sidebar>.brand,.workspace,.sidebarfooter{display:none}
  .nav{display:flex;gap:0;overflow-x:auto}
  .nav button{flex:1 0 auto;flex-direction:column;justify-content:center;gap:var(--space-1);padding:0 var(--space-2);font-size:var(--caption-size);line-height:var(--caption-line);white-space:nowrap}
  .topbar{padding:var(--space-3) var(--space-4)}
  .topbar>.muted{display:none}
  .mobilebrand{display:block}
  .main{padding:var(--space-6) var(--space-4) calc(var(--space-20) + env(safe-area-inset-bottom))}
  .heading{align-items:flex-start;flex-direction:column}
  .formgrid,.choice-grid{grid-template-columns:1fr}
  .tourney-road{gap:var(--space-1)}
  .welcome-footer{padding:0 var(--space-4)}
  .welcome-social{top:var(--space-4);left:var(--space-4)}
  .welcome-scroll{bottom:var(--space-20)}
  .cover-language{top:var(--space-4);right:var(--space-4)}
  .cover-mission,.cover-faq,.founder-story{padding:var(--space-12) var(--space-4)}
  .founder-story{grid-template-columns:1fr;gap:var(--space-6)}
  .wizard{padding:var(--space-20) var(--space-4)}
  .wizard-top{top:var(--space-4);left:var(--space-4);right:var(--space-4)}
  .club-cover{min-height:360px}
  .club-identity{padding:var(--space-6)}
  .chart-months.is-dense{grid-template-columns:repeat(6,1fr)}
  .portal-tools .cover-language span{display:none}
  .directory-grid{grid-template-columns:1fr}
}
@media(max-width:520px){
  .fee-months{grid-template-columns:repeat(2,1fr)}
}

/* Pie de la portada: los tres textos con la misma caja y la misma línea base */
.welcome-links{display:flex;align-items:center;gap:var(--space-6)}
.welcome-footer__item{display:inline-flex;align-items:center;min-height:48px;padding:0;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;text-decoration:none}
a.welcome-footer__item:hover,button.welcome-footer__item:hover{color:var(--ink);text-decoration:underline;text-underline-offset:4px}

/* Accesos directos arriba a la izquierda */
.welcome-social{position:absolute;top:var(--space-6);left:var(--space-6);z-index:4;display:flex;gap:var(--space-2)}
.welcome-social a{width:48px;height:48px;display:grid;place-items:center;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--verde-noche);color:var(--ink)}
.welcome-social a:hover{border-color:var(--ink)}
.welcome-social svg,.welcome-scroll svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}

/* Flecha que invita a bajar a la misión y al fundador */
.welcome-scroll{position:absolute;left:0;right:0;bottom:var(--space-20);margin:0 auto;width:48px;height:48px;display:grid;place-items:center;color:var(--ink);animation:welcome-bounce 1.8s ease-in-out infinite}
.welcome-scroll svg{width:24px;height:24px}
@keyframes welcome-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(var(--space-2))}}
@media(prefers-reduced-motion:reduce){.welcome-scroll{animation:none}}
.welcome-footer__item{white-space:nowrap}
@media(max-width:520px){
  .welcome-footer{flex-direction:column;align-items:flex-start;gap:0}
  .welcome-scroll{bottom:calc(var(--space-20) + var(--space-12))}
}
.cover-mission .btn{margin-top:var(--space-6)}

/* ============ Reseñas (portada) ============ */
.cover-reviews{padding:var(--space-20) 0;background:var(--surface-deep);overflow:hidden}
.cover-reviews__head{max-width:720px;margin:0 auto var(--space-8);padding:0 var(--space-6)}
.cover-reviews__head h2{margin:var(--space-2) 0 var(--space-3)}
.reviews-viewport{overflow:hidden}
.reviews-track{display:flex;gap:var(--space-6);width:max-content;padding:0 var(--space-6);animation:reviews-scroll 60s linear infinite}
/* Se detiene al pasar el mouse o al enfocar con teclado, para poder leer con calma */
.reviews-viewport:hover .reviews-track,.reviews-viewport:focus-within .reviews-track{animation-play-state:paused}
@keyframes reviews-scroll{from{transform:translateX(0)}to{transform:translateX(calc(-50% + var(--space-3)))}}
.review-card{flex:none;width:320px;margin:0;display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-6);background:var(--surface-raised);border:1px solid var(--line);border-radius:var(--radius-md)}
.review-stars{display:flex;gap:var(--space-1);color:var(--lima)}
.review-stars svg{width:20px;height:20px;fill:currentColor}
.review-card blockquote{flex:1;margin:0;font-size:var(--body-size);line-height:var(--body-line);color:var(--ink)}
.review-card figcaption{display:flex;align-items:center;gap:var(--space-3)}
.review-card figcaption b{display:block;font-size:var(--label-size);line-height:var(--label-line)}
.review-card figcaption small{display:block}
.review-avatar{position:relative;width:48px;height:48px;overflow:hidden}
.review-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* Sin movimiento si la persona lo pidió en su sistema: fila que se desliza a mano */
@media(prefers-reduced-motion:reduce){
  .reviews-viewport{overflow-x:auto}
  .reviews-track{animation:none}
  .review-card[aria-hidden="true"]{display:none}
}
@media(max-width:680px){
  .cover-reviews{padding:var(--space-12) 0}
  .cover-reviews__head{padding:0 var(--space-4)}
  .reviews-track{gap:var(--space-4);padding:0 var(--space-4)}
  .review-card{width:280px}
  @keyframes reviews-scroll{from{transform:translateX(0)}to{transform:translateX(calc(-50% + var(--space-2)))}}
}

/* ============ Mi progreso · encuestas y tres gráficas (progress-hub.js) ============ */
.progress-hub{display:grid;gap:var(--space-6);margin-bottom:var(--space-8)}
.progress-hub .card{margin:0}
.hub-top{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-4);flex-wrap:wrap}
.hub-goal{margin:var(--space-4) 0;padding:var(--space-4);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-deep)}
.hub-goal small{display:block;font-size:var(--eyebrow-size);line-height:var(--eyebrow-line);letter-spacing:var(--eyebrow-tracking);font-weight:var(--eyebrow-weight);text-transform:uppercase;color:var(--accent-text)}
.hub-goal p{margin:var(--space-1) 0 0;font-size:var(--body-lg-size);line-height:var(--body-lg-line)}
.hub-now{display:flex;gap:var(--space-6);align-items:flex-start;flex-wrap:wrap;margin:var(--space-4) 0}
.hub-facts{margin:0;padding:0;list-style:none;display:grid;gap:var(--space-2);flex:1;min-width:220px}
.hub-up{color:var(--accent-text)}
.hub-down,.hub-tourney-dot,.hub-tourney span{color:var(--arena)}
.hub-notes{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}
.hub-notes>div{padding:var(--space-4);border:1px solid var(--line);border-radius:var(--radius-md)}
.hub-notes p{margin:var(--space-1) 0 0}
.hub-label{display:block;font-size:var(--label-size);line-height:var(--label-line)}
.hub-agree{margin:var(--space-4) 0;color:var(--ink-muted)}
.hub-empty{margin:var(--space-6) 0}
.hub-svg text{font-size:var(--caption-size)}
.chart-goal{stroke:var(--accent-text);stroke-dasharray:4 4}
.chart-line.is-player{stroke:var(--lima)}
.chart-line.is-coach{stroke:var(--ink);stroke-dasharray:6 4}
.chart-dot.is-player{fill:var(--lima);stroke:var(--verde-noche)}
.chart-dot.is-coach{fill:var(--ink);stroke:var(--verde-noche)}
.chart-dot.selected{stroke:var(--ink);stroke-width:2}
.chart-guide{stroke:var(--ink-muted);stroke-width:1}
.chart-tourney line{stroke:var(--arena);stroke-dasharray:2 3}
.chart-tourney circle{fill:var(--arena)}
.hub-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);margin:var(--space-2) 0 0;font-size:var(--small-size);line-height:var(--small-line)}
.hub-legend span{display:inline-flex;align-items:center;gap:var(--space-2)}
.hub-key{display:inline-block;width:16px;height:4px;margin-right:var(--space-2);vertical-align:middle;border-radius:var(--radius-pill)}
.hub-key.is-player{background:var(--lima)}
.hub-key.is-coach{background:var(--ink)}
.hub-key.is-tourney{width:10px;height:10px;background:var(--arena)}
.hub-step{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}
.hub-step .link{min-width:48px;min-height:48px;justify-content:center;font-size:var(--h3-size);text-decoration:none}
.hub-step .link:disabled{opacity:.35;cursor:default}
.hub-step b{margin:0;text-align:center}
.hub-step b::first-letter{text-transform:uppercase}
.hub-detail p{margin:var(--space-2) 0 0}
.hub-detail .hub-inline{display:inline;margin:0}
/* Encuesta */
.hub-notice{margin:0;padding:var(--space-4);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-deep)}
.hub-notice .eyebrow{display:block;margin-bottom:var(--space-1)}
.hub-range-value{display:block;margin-top:var(--space-2);font-family:var(--font-display);font-size:var(--metric-size);line-height:var(--metric-line);color:var(--accent-text)}
.hub-range input[type=range]{padding:0;min-height:48px;background:transparent;border:0;accent-color:var(--lima)}
.hub-range-scale{display:flex;justify-content:space-between;font-weight:400;font-size:var(--caption-size);line-height:var(--caption-line);color:var(--ink-muted)}
.mood-scale{margin:0;padding:0;border:0;display:flex;flex-wrap:wrap;gap:var(--space-2)}
.mood-scale legend{width:100%;margin-bottom:var(--space-2);font-size:var(--label-size);line-height:var(--label-line);font-weight:var(--label-weight)}
.mood-option{position:relative}
.mood-option input{position:absolute;opacity:0;width:1px;height:1px}
.mood-option span{display:inline-flex;align-items:center;min-height:48px;padding:0 var(--space-4);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-deep);cursor:pointer}
.mood-option input:checked+span{background:var(--verde-medio);border-color:var(--ink)}
.mood-option input:focus-visible+span{outline:2px solid var(--focus-ring);outline-offset:2px}
.checkin-banner{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-6)}
.checkin-banner h2{margin:var(--space-1) 0}
.checkin-people{display:flex;flex-wrap:wrap;gap:var(--space-4)}
@media(max-width:680px){.hub-notes{grid-template-columns:1fr}}
/* Recuadro del video de la explicación (session-guide.js) */
.guide-video{margin-top:var(--space-4);aspect-ratio:16/9;border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden;background:var(--verde-noche)}
.guide-video video{display:block;width:100%;height:100%;object-fit:contain}
.guide-video.is-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-1);border-style:dashed;color:var(--ink-muted)}
.guide-video.is-empty svg{width:48px;height:48px;fill:none;stroke:var(--ink);stroke-width:1.5;stroke-linejoin:round}
.guide-video.is-empty span{font-size:var(--label-size);line-height:var(--label-line);font-weight:var(--label-weight);color:var(--ink)}
.guide-video.is-empty small{font-size:var(--caption-size);line-height:var(--caption-line)}
.attend-rest[hidden]{display:none}
/* Paso 7 del registro: guía y ejemplos de metas */
.goal-tips{margin-bottom:var(--space-6);padding:var(--space-4);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-deep)}
.goal-tips b{font-size:var(--label-size);line-height:var(--label-line)}
.goal-tips ul{margin:var(--space-2) 0 0;padding-left:var(--space-6);display:grid;gap:var(--space-1);font-size:var(--small-size);line-height:var(--small-line)}
.goal-tips li span{font-weight:var(--label-weight);color:var(--accent-text)}

/* Espacio entre Competencias y el calendario en Mi plan */
.plan-competitions{margin-bottom:var(--space-4)}

/* Barra inferior en celular: que quepan todas las secciones, incluida «Mi perfil» */
@media(max-width:680px){
  .nav button{flex:1 1 0;min-width:0;padding:0 2px;font-size:11px;line-height:13px;white-space:normal;text-align:center}
}

/* ---------- Opción B · 60 % verde, 30 % arena, 10 % lima ----------
   Fondo y barra lateral en verde CORDA; las tarjetas en arena con texto verde oscuro.
   Lima sigue siendo solo para la acción principal. */
.shell main :is(.card,.agenda-main){--surface:#E8DCC2;--surface-raised:#E8DCC2;--surface-deep:#F1E8D4;--ink:#0E2A20;--ink-muted:#4A5C52;--accent-text:#2E6B1F;--line:#C9B88F;--danger:#B42318;--focus-ring:#1E6B4F;--logo-dot:#1E6B4F;--shadow-card:0 8px 24px rgba(4,20,14,.25);background:var(--surface-raised);border-color:var(--surface-raised);color:var(--ink);color-scheme:light}
#modal[data-theme="arena"]{--surface-raised:#E8DCC2;--surface-deep:#F1E8D4;--line:#C9B88F}
/* Opciones elegidas sobre verde medio: texto marfil */
:is([data-theme="arena"],.shell main .card,.shell main .agenda-main) :is(.plan-tabs button[aria-pressed=true],.days-strip button.chosen,.chart-months button[aria-pressed=true],.meet-people [aria-pressed=true],.meet-week [aria-pressed=true],.meet-slots [aria-pressed=true],.fee-months button[aria-pressed=true],.choice input:checked+span,.mood-option input:checked+span){--ink:#F4EFE3;--ink-muted:#CFE0D6;color:var(--ink)}
/* Bloques con foto o video: oscuros, con texto claro */
.shell main :is(.next-photo,.player-banner,.club-cover,.guide-video),.shell :is(.contact-footer,.club-play,.banner-play){--surface:#0F3B2C;--surface-raised:#164A38;--ink:#F4EFE3;--ink-muted:#B4C4B8;--line:#2A5E4A;--accent-text:#C8F03C;--surface-deep:#0A2920;--logo-dot:#C8F03C;color:var(--ink);color-scheme:dark}
.shell main .card.next-photo{border-color:var(--line)}
/* Arena sobre arena no se lee: tono arena oscuro */
:is([data-theme="arena"],.shell main .card,.shell main .agenda-main) :is(.hub-down,.hub-tourney-dot,.hub-tourney span){color:#7A5C22}
:is([data-theme="arena"],.shell main .card,.shell main .agenda-main) .chart-tourney line{stroke:#7A5C22}
:is([data-theme="arena"],.shell main .card,.shell main .agenda-main) :is(.chart-tourney circle,.hub-key.is-tourney){fill:#7A5C22;background:#7A5C22}
:is([data-theme="arena"],.shell main .card,.shell main .agenda-main) .fee-dot.review{border-color:#7A5C22;color:#7A5C22}
/* Lima como línea o texto no se ve sobre arena: verde medio */
:is([data-theme="arena"],.shell main .card,.shell main .agenda-main) :is(.chart-line,.chart-line.is-player){stroke:var(--verde-medio)}
:is([data-theme="arena"],.shell main .card,.shell main .agenda-main) :is(.hub-key.is-player,.progress i){background:var(--verde-medio)}
:is([data-theme="arena"],.shell main .card,.shell main .agenda-main) .chart-dot.is-player{stroke:var(--verde-noche);stroke-width:1.5}
:is([data-theme="arena"],.shell main .card,.shell main .agenda-main) :is(.tournament-key span,.chart-months small span){color:var(--accent-text)}
:is([data-theme="arena"],.shell main .card,.shell main .agenda-main) .chart-months button[aria-pressed=true] small span{color:var(--lima)}
:is([data-theme="arena"],.shell main .card,.shell main .agenda-main) :is(.check.done,.fee-dot.paid){border-color:var(--verde-medio)}
:is([data-theme="arena"],.shell main .card,.shell main .agenda-main) :is(input[type=checkbox],input[type=radio],.hub-range input[type=range]){accent-color:var(--verde-medio)}
:is([data-theme="arena"],.shell main .card,.shell main .agenda-main) .btn.lime{border-color:#A9CF26}

/* Mi perfil y Cerrar sesión: centrados al final de la página */
.account-links{display:flex;justify-content:center;align-items:center;gap:var(--space-8);margin-top:var(--space-8);padding-bottom:var(--space-4)}
.account-links .account-link{margin:0}

/* Competencias en Mi plan: el torneo más cercano destacado, los siguientes se desvanecen */
.comp-list{list-style:none;margin:var(--space-4) 0 0;padding:0}
.comp-item{padding:var(--space-4) 0;border-top:1px solid var(--line);opacity:var(--fade,1)}
.comp-item:first-child{border-top:0;padding-top:0}
.comp-item h3{margin:0 0 var(--space-1);font-size:var(--body-size);line-height:var(--body-line);font-weight:500}
.comp-item p{margin:0;font-size:var(--small-size);line-height:var(--small-line);color:var(--ink-muted)}
.comp-item.is-next h3{font-size:var(--h3-size);line-height:var(--h3-line);font-weight:700}
.comp-item.is-next p{font-size:var(--body-size);line-height:var(--body-line);color:var(--ink)}
.comp-item.is-next .eyebrow{margin-bottom:var(--space-1);color:var(--accent-text)}

.hub-unlock{margin:var(--space-2) 0 0}
.hub-facts:empty{display:none}

/* Mi academia: flecha que rebota, centrada abajo de la portada (como en la bienvenida) */
.club-scroll{left:0;right:0;bottom:var(--space-3);width:48px;height:48px;margin:0 auto;padding:0;display:grid;place-items:center;gap:0;animation:welcome-bounce 1.8s ease-in-out infinite}
.club-scroll svg{width:24px;height:24px}
.club-identity{padding-bottom:calc(var(--space-12) + var(--space-4))}
@media(prefers-reduced-motion:reduce){.club-scroll{animation:none}}

/* ---------- Mi academia: video de fondo en toda la página y equipo sin tarjetas ---------- */
.main{position:relative;z-index:1}
.topbar{position:relative;z-index:2}
@media(min-width:681px){.shell>.sidebar{z-index:3}}
.academy-backdrop{position:fixed;inset:0;z-index:-1;overflow:hidden;background:var(--verde-noche);pointer-events:none}
.academy-backdrop .club-background{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover}
.academy-backdrop::after{content:'';position:absolute;inset:0;background:color-mix(in srgb,var(--verde-noche) 72%,transparent)}
.shell main .club-cover{background:transparent}
.shell main .club-cover::after{display:none}
/* Integrantes: solo foto redonda, nombre y descripción sobre el video */
.shell main .card.club-person{--ink:#F4EFE3;--ink-muted:#CFE0D6;--line:#2A5E4A;--surface-deep:#164A38;--accent-text:#C8F03C;background:transparent;border-color:transparent;box-shadow:none;padding:0;align-items:center;text-align:center;color:var(--ink)}
.club-person .badge{display:none}
.club-person .person-photo .avatar{width:128px;height:128px;border:2px solid var(--arena);font-size:var(--h2-size);object-fit:cover}
.club-person .bio{margin-bottom:var(--space-3)}
.club-person .person-contact{justify-items:center;border-top:0;padding-top:0}
.club-person .person-contact small{display:none}
.club-person .person-contact:not(:has(a)){display:none}
@media(max-width:680px){.club-person .person-photo .avatar{width:96px;height:96px}#academic-roster .directory-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-6)}}

/* Mi academia: nombre de la academia centrado en la portada */
.shell main .club-cover{align-items:center;justify-content:center;text-align:center}
.club-cover .club-identity{display:flex;flex-direction:column;align-items:center;margin:0 auto}
.club-cover .club-mark{object-position:center}
.club-cover .club-actions{justify-content:center}
/* Botones secundarios sobre el video: arena; lima solo para la acción principal */
.club-cover .club-actions .btn:not(.lime),.club-person .member-edit{min-height:40px;padding:0 var(--space-4);border:1px solid var(--arena);border-radius:var(--radius-md);background:var(--arena);color:var(--on-lima);text-decoration:none;font-weight:var(--label-weight)}
.club-cover .club-actions .btn:not(.lime):hover,.club-person .member-edit:hover{background:#E8D7B2;border-color:#E8D7B2}

/* ---------- Clases particulares (comprobantes al coach) ---------- */
.private-lessons{margin-top:var(--space-4)}
.private-lessons .btn{margin:var(--space-2) 0 var(--space-3)}
.private-sent .private-receipt small,.private-inbox .private-receipt small{display:block;color:var(--ink-muted)}
.private-sent .private-receipt>div:last-child,.private-inbox .private-receipt>div:last-child{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}
.private-inbox{margin-bottom:var(--space-4)}

/* ---------- Saludo del día ---------- */
.demo.greeting{display:grid;gap:var(--space-1)}
.demo.greeting b{color:var(--ink);font-size:var(--body-size);line-height:var(--body-line)}

/* ---------- Foto de perfil junto al título de Inicio ---------- */
.heading-actions{display:flex;align-items:center;gap:var(--space-4)}
.heading-avatar{padding:0;border:0;background:none;cursor:pointer;border-radius:var(--radius-pill)}
.heading-avatar .avatar{width:72px;height:72px;border:2px solid var(--arena);object-fit:cover;font-size:var(--h3-size)}
.heading-avatar:hover .avatar{border-color:var(--lima)}
.heading-avatar:focus-visible{outline:2px solid var(--lima);outline-offset:3px}
@media(max-width:680px){
  .heading:has(.heading-avatar){flex-direction:row;align-items:center}
  .heading-avatar .avatar{width:56px;height:56px}
}

/* ---------- Torneos: editar ---------- */
.comp-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}
.comp-edit{flex:none;font-size:var(--small-size)}
.link.danger{color:#A33A2B}

/* Espacio entre las sesiones de tenis y la biblioteca de video */
.video-library{margin-top:var(--space-6)}

/* ---------- Biblioteca de video ---------- */
.video-filters{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-4) 0}
.video-filters button{padding:var(--space-1) var(--space-3);border:1px solid var(--line);border-radius:var(--radius-pill);background:transparent;color:var(--ink);font:inherit;font-size:var(--small-size);cursor:pointer}
.video-filters button[aria-pressed="true"]{background:var(--verde-medio);border-color:var(--verde-medio);color:var(--marfil)}
.video-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-6);margin-top:var(--space-4)}
.video-card{display:grid;gap:var(--space-3);align-content:start}
.video-card.is-seen .video-thumb img{opacity:.6}
.video-thumb{position:relative;display:block;width:100%;aspect-ratio:16/9;padding:0;border:0;border-radius:var(--radius-md);overflow:hidden;background:var(--verde-noche);cursor:pointer}
.video-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.video-play{position:absolute;inset:0;display:grid;place-items:center}
.video-play .icon{width:52px;height:52px;padding:14px;border-radius:50%;background:var(--lima);color:var(--on-lima);fill:currentColor}
.video-link{display:grid;place-items:center;align-content:center;gap:var(--space-2);color:var(--marfil);text-decoration:none}
.video-body{display:grid;gap:var(--space-1);justify-items:start}
.video-body h3{margin:0}
.video-note{margin:0;color:var(--ink-muted)}
.video-seen-by{margin:0;font-size:var(--small-size);color:var(--accent-text)}
.video-frame{position:relative;aspect-ratio:16/9;border-radius:var(--radius-md);overflow:hidden;background:#000}
.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

/* ---------- Físico: ejercicios de la temporada ---------- */
.season-exercises,.video-library{margin-top:var(--space-6)}
.exercise-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-6);margin-top:var(--space-4)}
.exercise-group{display:grid;gap:var(--space-2);align-content:start}
.exercise-group .badge{justify-self:start}
.exercise-group .exercise{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-top:1px solid var(--line)}
.exercise-group .exercise h3{margin:0;font-size:var(--body-size);line-height:var(--body-line)}
.exercise-group .exercise p{margin:var(--space-1) 0 0}

/* ---------- Inicio: perfil más grande, tarjeta de torneo más compacta ---------- */
.heading-avatar .avatar{width:120px;height:120px;border-width:3px;box-shadow:0 6px 20px rgb(0 0 0 / .28)}
.shell main .tournament{padding:var(--space-6)}
.shell main .tournament h2{margin:var(--space-3) 0 var(--space-1);font-size:22px;line-height:28px}
.shell main .tournament p{font-size:var(--small-size);line-height:var(--small-line)}
.shell main .tournament .countdown{margin:var(--space-4) 0;font-size:36px;line-height:40px}
@media(max-width:680px){.heading-avatar .avatar{width:84px;height:84px}}

/* Foto de perfil alineada arriba con «Mi entrenamiento» sin empujar las tarjetas */
@media(min-width:681px){
  .heading:has(.heading-avatar){position:relative;align-items:flex-start;padding-right:150px;min-height:0}
  .heading:has(.heading-avatar) .heading-actions{position:absolute;top:0;right:0}
  .shell main .tournament h2{font-size:20px;line-height:26px}
}
@media(min-width:681px){
  /* La foto baja un poco más que el título: solo la tarjeta del torneo deja ese espacio */
  .main:has(.heading-avatar) .portal-grid>.tournament{margin-top:var(--space-6)}
}
@media(min-width:1001px){
  /* Foto centrada sobre la columna de la tarjeta del torneo (columna derecha = 1/2.5 del ancho) */
  .heading:has(.heading-avatar) .heading-actions{right:calc((100% - var(--space-8)) * .2 - 60px)}
}

/* «Lo que mejoraste»: verde medio (el mismo de la selección del menú) con texto marfil */
.shell main .coach-month>div.monthly-gain{background:var(--verde-medio);border-color:var(--verde-medio);color:var(--marfil)}
.shell main .coach-month .monthly-gain b,.shell main .coach-month .monthly-gain p{color:var(--marfil)}
.coach-month .monthly-gain .gain-check{background:var(--verde-noche);color:var(--lima)}

/* ---------- Aviso del calendario ---------- */
.calendar-banner{align-items:flex-start}
.calendar-banner .calendar-help{margin-top:var(--space-1);font-size:var(--small-size)}
.calendar-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3) var(--space-4)}
.calendar-off{font-size:var(--small-size);color:var(--ink-muted)}
@media(max-width:680px){.calendar-actions{width:100%}.calendar-actions .btn{flex:1 1 100%}}
@media(min-width:681px){
  /* La foto de perfil ocupa un poco más que el título: el aviso baja para no chocar con ella */
  .heading:has(.heading-avatar)+.calendar-banner{margin-top:calc(var(--space-8) + var(--space-6))}
}

/* ---------- Avisos legales: lector, casillas de aceptación y aceptación pendiente ---------- */
#legal-dialog{max-width:760px;max-height:min(86vh,820px);overflow:auto;padding:var(--space-6)}
#legal-dialog .row{align-items:flex-start;gap:var(--space-3)}
.legal-tabs{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.legal-tabs button{border:1px solid var(--line);border-radius:999px;background:transparent;color:inherit;padding:var(--space-2) var(--space-4);font:inherit;font-size:var(--small-size);cursor:pointer}
.legal-tabs button[aria-pressed="true"]{background:var(--verde-medio);border-color:var(--verde-medio);color:var(--marfil)}
.legal-text{margin-top:var(--space-4);outline:0}
.legal-text h2{margin-bottom:var(--space-1)}
.legal-text h3{margin:var(--space-6) 0 var(--space-2);font-size:var(--body-lg-size);line-height:var(--body-lg-line)}
.legal-text p,.legal-text li{font-size:var(--body-size);line-height:var(--body-line)}
.legal-text ul,.legal-text ol{margin:var(--space-2) 0;padding-left:var(--space-6)}
.legal-text li{margin:var(--space-1) 0}
.legal-text a{color:inherit;text-decoration:underline}
.legal-meta{color:var(--muted,inherit);opacity:.7;font-size:var(--small-size)}
.legal-todo{background:var(--lima);color:var(--on-lima);padding:0 var(--space-1);border-radius:var(--radius-sm)}
#legal-dialog .formactions{position:sticky;bottom:calc(var(--space-6) * -1);margin:var(--space-6) calc(var(--space-6) * -1) calc(var(--space-6) * -1);padding:var(--space-4) var(--space-6);background:var(--surface-raised);border-top:1px solid var(--line)}
.legal-links{display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:center;margin-top:var(--space-4)}
.consent-box{border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-4);margin:var(--space-4) 0;display:grid;gap:var(--space-3)}
.consent-box legend{padding:0 var(--space-2);font-size:var(--caption-size);letter-spacing:var(--eyebrow-tracking);text-transform:uppercase;font-weight:600}
.consent-age{display:grid;gap:var(--space-3)}
.consent-row{display:flex;align-items:flex-start;gap:var(--space-3);font-weight:400;font-size:var(--small-size);line-height:var(--small-line);text-align:left}
.consent-row input{flex:none;margin-top:2px;width:18px;height:18px}
.consent-row .link{display:inline;padding:0;font:inherit;text-decoration:underline}
.consent-gate{max-width:560px}
.consent-gate .formactions{display:flex;justify-content:space-between;align-items:center}
.auth-form .consent-row .link,.consent-row .link{display:inline;margin:0;padding:0;border:0;background:none;font:inherit;text-align:inherit;text-decoration:underline;white-space:normal;min-height:0}
.consent-tutor[hidden]{display:none}
.consent-tutor{display:grid;gap:var(--space-2);font-size:var(--small-size);font-weight:400}
.consent-tutor small{opacity:.75}
.guardian-banner .calendar-actions .btn{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}

/* Códigos de acceso (coach) */
#access-dialog{max-width:640px;width:calc(100% - var(--space-6));max-height:min(88vh,860px);overflow:auto;padding:var(--space-6)}
#access-dialog .row{align-items:flex-start;justify-content:space-between;gap:var(--space-3)}
#access-dialog #access-close{border:0;background:transparent;color:inherit;font:inherit;cursor:pointer;padding:var(--space-2)}
.access-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em}
.access-code-big{font-size:var(--h2-size,1.6rem);font-weight:700;margin:var(--space-1) 0}
.access-fresh{margin:var(--space-4) 0;padding:var(--space-4);border-radius:var(--radius-md,12px);border:2px solid var(--lima)}
.access-fresh .access-code-big{color:var(--lima)}
.access-actions{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}
.access-list{margin-top:var(--space-6)}
.access-row{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) 0;border-top:1px solid var(--line)}
.access-row[data-status="usado"],.access-row[data-status="revocado"],.access-row[data-status="vencido"]{opacity:.65}
#access-form{margin-top:var(--space-4)}

/* Estado físico (Análisis del coach) */
.wellness .sectiontitle{align-items:flex-start;gap:var(--space-3)}
.well-alerts{list-style:none;margin:var(--space-3) 0;padding:0;display:grid;gap:var(--space-2)}
.well-alert{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm,8px);border:1px solid var(--line);font-weight:600}
.well-alert.sev-high{border-color:#B42318;color:#B42318;background:rgba(180,35,24,.08)}
.well-alert.sev-mid{border-color:#B7791F;color:#8a5a0f;background:rgba(183,121,31,.10)}
.well-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-2);margin:var(--space-3) 0 var(--space-1)}
.well-day{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-2) 0;border-radius:var(--radius-sm,8px);border:1px solid var(--line);text-align:center}
.well-day small{font-size:var(--caption-size);text-transform:uppercase;opacity:.75}
.well-day b{font-family:var(--font-display);font-size:1.15rem}
.well-day.ok{background:rgba(46,125,50,.18);border-color:rgba(46,125,50,.5)}
.well-day.mid{background:rgba(183,121,31,.16);border-color:rgba(183,121,31,.5)}
.well-day.low{background:rgba(180,35,24,.14);border-color:rgba(180,35,24,.5)}
.well-day.pain{border-color:#B42318}
.well-day.none{opacity:.55}
.well-scale-note{margin-top:0}
.well-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-3);margin:var(--space-3) 0}
.well-metrics>div{display:flex;flex-direction:column;gap:2px;padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius-sm,8px)}
.well-metrics small{font-size:var(--caption-size);text-transform:uppercase;opacity:.75}
.well-metrics b{font-family:var(--font-display);font-size:1.6rem;line-height:1.1}
.well-pains ul{margin:var(--space-2) 0;padding-left:var(--space-5)}
.well-absences{margin:var(--space-2) 0}
.well-ends{display:flex;justify-content:space-between;width:100%;margin-top:var(--space-1)}
.well-scale .mood-option{min-width:3rem}
.well-badge{margin:var(--space-2) 0 0;font-size:var(--small-size);font-weight:600}
.well-badge.sev-high{color:#B42318}
.well-badge.sev-mid{color:#8a5a0f}
.well-badge.none{opacity:.6;font-weight:400}
.well-badge.ok{color:#2E7D32}
.well-badge.mid{color:#8a5a0f}
.well-badge.low{color:#B42318}

/* Cómo se ha sentido: gráfica y desglose */
.well-periods{display:flex;gap:var(--space-2);margin:var(--space-3) 0 var(--space-1);flex-wrap:wrap}
.well-periods button{border:1px solid var(--line);border-radius:999px;background:transparent;color:inherit;padding:var(--space-2) var(--space-4);font:inherit;font-size:var(--small-size);cursor:pointer}
.well-periods button[aria-pressed="true"]{background:var(--verde-medio);border-color:var(--verde-medio);color:var(--marfil)}
.well-chart{margin:var(--space-2) 0}
.well-chartsvg{width:100%;height:auto;display:block;overflow:visible}
.well-chartsvg text{font-size:9px;fill:currentColor;opacity:.75}
.well-chartsvg .chart-grid{stroke:var(--line);stroke-width:1}
.well-chartsvg .well-val{font-weight:700;opacity:1;font-size:9px}
.well-hit{fill:transparent}
.well-col[data-well-pick]{cursor:pointer}
.well-bar.ok{fill:#2E7D32}.well-bar.mid{fill:#B7791F}.well-bar.low{fill:#B42318}.well-bar.none{fill:var(--line)}
.well-col.is-picked .well-bar{stroke:currentColor;stroke-width:2}
.well-col:focus{outline:0}.well-col:focus-visible .well-hit{stroke:currentColor;stroke-width:1}
.well-detail{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--line)}
.well-detail-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-3)}
.well-detail h3{margin:0}
.well-detail h3::first-letter{text-transform:uppercase}
.well-factor{display:grid;grid-template-columns:5.5rem 1fr 2.2rem;gap:var(--space-3);align-items:center;margin:var(--space-2) 0}
.well-meter{height:10px;border-radius:999px;background:var(--line);overflow:hidden}
.well-meter i{display:block;height:100%;border-radius:999px}
.well-meter i.ok{background:#2E7D32}.well-meter i.mid{background:#B7791F}.well-meter i.low{background:#B42318}.well-meter i.none{background:transparent}
.well-factor b{text-align:right;font-family:var(--font-display)}
.well-summary{margin:var(--space-2) 0}

/* Espacio entre las tarjetas de Análisis del coach */
.wellness,.well-trend{margin-bottom:var(--space-6)}

/* Seguimiento del coach (tarjeta corta de Mi estado) */
.coach-follow{margin-bottom:var(--space-6)}
.follow-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-3);margin-top:var(--space-3)}
.follow-box{padding:var(--space-4);border-radius:var(--radius-md,12px);border:1px solid var(--line);display:grid;grid-template-columns:2rem 1fr;align-items:center;gap:var(--space-2) var(--space-3)}
.follow-box p{grid-column:1/-1}
.follow-box b{font-family:var(--font-display);font-size:1.1rem}
.follow-box p{margin:0;font-size:var(--body-size);line-height:var(--body-line)}
.follow-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;font-weight:700}
.follow-box.is-good{background:rgba(46,125,50,.12);border-color:rgba(46,125,50,.45)}
.follow-box.is-good .follow-icon{background:#2E7D32;color:#fff}
.follow-box.is-next{background:rgba(183,121,31,.12);border-color:rgba(183,121,31,.45)}
.follow-box.is-next .follow-icon{background:#B7791F;color:#fff}
.follow-by{display:block;margin-top:var(--space-3)}

.follow-links{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-1)}
.follow-video{border:0;border-radius:999px;background:var(--lima);color:var(--on-lima);font:inherit;font-weight:700;font-size:var(--small-size);padding:var(--space-2) var(--space-4);cursor:pointer;text-align:left}
.follow-video:hover,.follow-video:focus-visible{filter:brightness(1.06);outline:2px solid currentColor;outline-offset:2px}

.video-filters{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-3) 0}
.video-filters button small{margin-left:6px;opacity:.7;font-size:.75em}
.video-subtopics{margin-top:0;padding-left:var(--space-3);border-left:3px solid var(--lima)}
.follow-video{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px;line-height:1.2}
.follow-sub{font-weight:500;font-size:.85em;opacity:.8}

/* ---------- Candado: funciones de CORDA Progreso en la versión Conecta ---------- */
.lockcard{display:flex;gap:var(--space-4);align-items:flex-start;border:1.5px dashed var(--lima,#C8F03C);background:linear-gradient(180deg,rgba(200,240,60,.10),rgba(200,240,60,.03))}
.lockcard .lockicon{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#0F3B2C;color:#C8F03C}
.lockcard .lockbody{display:grid;gap:var(--space-2);justify-items:start}
.lockcard h2{margin:0}
.lockcard .hint{margin:0}

/* Borrar cuenta */
.danger-link{color:#B3261E!important}
.btn.danger{background:#B3261E;color:#fff;border-color:#B3261E}
.btn.danger[disabled]{opacity:.45;cursor:not-allowed}

/* Foto de perfil editable */
.photo-edit{display:flex;align-items:center;gap:var(--space-4);margin:var(--space-4) 0}
.photo-edit-av .avatar{width:72px;height:72px;font-size:1.4rem}
.photo-edit-actions{display:grid;gap:var(--space-2);justify-items:start}
.photo-pick{cursor:pointer}
