﻿@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&family=Space+Grotesk:wght@500;600;700&display=swap');
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--bg-0:#0B0A08;--bg-1:#141210;--bg-2:#1C1916;--bg-3:#24201C;--bg-4:#2E2925;--bg-5:#3A342E;--bg-inset:#080706;--line:#2A2521;--line-strong:#37312B;--line-accent:#F97316;--text-0:#F6F1EA;--text-1:#B7AEA3;--text-2:#857D72;--text-3:#6A6259;--text-inv:#1A0D02;--fg-1:var(--text-0);--fg-2:var(--text-1);--fg-3:var(--text-2);--fg-on-accent:var(--text-inv);--accent:#F97316;--accent-hover:#FB8A3C;--accent-press:#E5670D;--accent-soft:rgba(249,115,22,.14);--accent-tint:rgba(249,115,22,.20);--accent-line:rgba(249,115,22,.34);--accent-glow:rgba(249,115,22,.35);--ok:#4FC98A;--ok-soft:rgba(79,201,138,.14);--warn:#F2B33D;--warn-soft:rgba(242,179,61,.14);--bad:#F0666B;--bad-soft:rgba(240,102,107,.14);--info:#5CA8F2;--info-soft:rgba(92,168,242,.14);--load-under:#5CA8F2;--load-opt:#4FC98A;--load-high:#F2B33D;--load-spike:#F0666B;--plan:#A78BFA;--plan-soft:rgba(167,139,250,.14);--plan-line:rgba(167,139,250,.38);--c-violet:#A97BF0;--c-indigo:#7B84F0;--c-teal:#34C6B4;--c-pink:#EE6FA8;--c-magenta:#D45FC8;--c-lime:#AEC94B;--c-plum:#8E6FD0;--c-steel:#6E92B8;--blk-warmup:#3EAFC0;--blk-strength:#9B7BE8;--blk-plyo:#E86AA6;--blk-mobility:#A98BE0;--blk-power:#EF7E63;--blk-core:#5FB87A;--blk-dse:#E0B84A;--blk-tactical:#6E8FD0;--blk-cooldown:#7E8AA0;--blk-custom:#D89A4A;--font-display:'Space Grotesk','Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--font-ui:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--font-mono:'JetBrains Mono',ui-monospace,'SF Mono',Menlo,Consolas,monospace;--font:var(--font-ui);--r-1:4px;--r-2:6px;--r-3:8px;--r-4:12px;--r-5:16px;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:20px;--r-pill:999px;--shadow-1:0 1px 0 rgba(255,255,255,.03) inset,0 1px 2px rgba(0,0,0,.4);--shadow-2:0 8px 24px -8px rgba(0,0,0,.6);--shadow-card:var(--shadow-1);--shadow-pop:0 18px 40px -12px rgba(0,0,0,.7),0 0 0 1px var(--line-strong);--shadow-glow:0 0 0 1px rgba(249,115,22,.45),0 0 24px -4px rgba(249,115,22,.45);--bg:var(--bg-1);--bg2:var(--bg-2);--bg3:var(--bg-3);--text:var(--text-0);--text2:var(--text-1);--text3:var(--text-2);--border:var(--line-strong);--sidebar-w:240px;--header-h:56px}
html{background:#0B0A08}body{font-family:var(--font);background:var(--bg-0);color:var(--text);min-height:100vh}
/* LOGIN — sistema cálido (scope de tokens, compartido coach+atleta) */
#login-screen{
  --bg-0:#0B0A08;--bg-1:#141210;--bg-2:#1C1916;--bg-3:#24201C;--bg-4:#2E2925;--bg-5:#3A342E;
  --accent:#F97316;--accent-hover:#FB8A3C;--accent-press:#E5670D;--accent-soft:rgba(249,115,22,.14);
  --line:#2A2521;--line-strong:#37312B;
  --text-0:#F6F1EA;--text-1:#B7AEA3;--text-2:#857D72;--text-3:#6A6259;
  --bg2:var(--bg-2);--text:var(--text-0);--text2:var(--text-1);--text3:var(--text-2);--border:var(--line-strong);
  min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;
  background:radial-gradient(115% 70% at 50% -6%,rgba(249,115,22,.13),transparent 55%),radial-gradient(90% 60% at 100% 108%,rgba(249,115,22,.06),transparent 60%),#0B0A08
}
.login-card{width:100%;max-width:380px;background:var(--bg-1);border:1px solid var(--line-strong);border-radius:22px;padding:34px 30px;box-shadow:0 30px 70px -25px rgba(0,0,0,.75)}
/* Lockup de marca (ícono 2 anillos + wordmark en Space Grotesk) */
.q-lockup{display:flex;align-items:center;justify-content:center;gap:11px;margin:6px 0 8px}
.q-logo-mark{height:30px;width:auto;flex-shrink:0;color:var(--text-0,#F6F1EA)}
.q-wordmark{font-family:'Space Grotesk','Inter',sans-serif;font-weight:700;letter-spacing:-.035em;color:var(--text-0,#F6F1EA);line-height:1}
.login-sub{text-align:center;font-size:13px;color:var(--text2);margin-bottom:30px}
.form-label{font-size:12px;color:var(--text2);font-weight:500;margin-bottom:6px;display:block;letter-spacing:.04em}
.form-input{width:100%;padding:12px 14px;border-radius:10px;border:1px solid var(--border);background:var(--bg2);color:var(--text);font-size:15px;font-family:var(--font);outline:none;margin-bottom:16px;transition:border-color .2s}
.form-input:focus{border-color:var(--accent)}
.login-btn{width:100%;padding:13px;background:var(--accent);color:#fff;border:none;border-radius:10px;font-size:15px;font-weight:600;cursor:pointer;font-family:var(--font);margin-top:4px}
.login-btn:disabled{opacity:.6;cursor:not-allowed}
.login-err{font-size:13px;color:#f87171;text-align:center;margin-top:12px;min-height:18px}
.login-footer{text-align:center;font-size:12px;color:var(--text3);margin-top:28px}
/* APP */
#app-screen{display:none;max-width:480px;margin:0 auto}
.header{background:var(--bg-1);padding:13px 16px;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}
.logo-badge{width:34px;height:34px;border-radius:9px;background:var(--accent);display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:800;color:#fff;flex-shrink:0}
.header-info{flex:1;min-width:0}
.header-club{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.07em}
.header-user{font-size:14px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}
.logout-btn,.back-btn{padding:5px 11px;border-radius:7px;background:var(--bg2);border:1px solid var(--border);color:var(--text2);font-size:12px;cursor:pointer;font-family:var(--font);flex-shrink:0}
.sync-bar{background:var(--bg-1);color:var(--text3);font-size:11px;padding:5px 14px;text-align:center;display:flex;align-items:center;justify-content:center;gap:6px;border-bottom:1px solid var(--border)}
.q-sidebar__sync{display:none}
.dot-green{width:6px;height:6px;border-radius:50%;background:#22c55e;display:inline-block;flex-shrink:0}
.dot-yellow{width:6px;height:6px;border-radius:50%;background:#f59e0b;display:inline-block;flex-shrink:0}
/* CARDS */
.wrap{padding:14px}
.team-card{border-radius:14px;padding:16px;margin-bottom:10px;cursor:pointer;border:1px solid var(--border);background:var(--bg-2);text-align:left;width:100%;position:relative;overflow:hidden}
.team-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:2px 0 0 2px}
.cat-card{border-radius:12px;padding:14px 16px;margin-bottom:8px;cursor:pointer;border:1px solid var(--border);background:var(--bg-2);text-align:left;width:100%;position:relative;overflow:hidden}
.cat-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:2px 0 0 2px}
/* ── Home multi-equipo (rediseño CD) ── */
.q-greet{display:flex;align-items:flex-end;gap:16px;margin-bottom:18px}
.q-greet .l{flex:1;min-width:0}
.q-greet .hi{font-family:var(--font-display);font-weight:700;font-size:26px;letter-spacing:-.03em;line-height:1.1;color:var(--text-0)}
.q-greet .hi span{color:var(--accent)}
.q-greet .dt{font:400 12px var(--font-mono);color:var(--text-2);margin-top:6px;letter-spacing:.01em}
.q-greet .acts{display:flex;gap:8px;flex-shrink:0}
.q-greet-eyebrow{display:flex;align-items:baseline;gap:10px;margin-bottom:12px}
.q-greet-eyebrow .t{font-family:var(--font-display);font-weight:600;font-size:14px;letter-spacing:-.01em;color:var(--text-1)}
.q-greet-eyebrow .m{font:400 11px var(--font-mono);color:var(--text-2)}
.team-grid-cd{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.teamcard{position:relative;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-5);padding:18px 18px 16px 22px;cursor:pointer;text-align:left;width:100%;overflow:hidden;color:inherit;font-family:inherit;transition:background .12s,border-color .12s,transform .12s}
.teamcard:hover{background:var(--bg-3);border-color:var(--line-strong);transform:translateY(-2px)}
.teamcard::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--rail)}
.teamcard .tc-top{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.teamcard .tc-logo{width:44px;height:44px;border-radius:12px;flex:0 0 auto;display:grid;place-items:center;font:700 15px var(--font-display);color:#141210}
.teamcard .nm{flex:1;min-width:0;line-height:1.25}
.teamcard .nm .n{font-family:var(--font-display);font-weight:700;font-size:16.5px;letter-spacing:-.02em;color:var(--text-0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.teamcard .nm .sp{font-size:12px;color:var(--text-2);margin-top:2px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.tc-flag{display:inline-flex;align-items:center;gap:5px;font:500 10.5px var(--font-mono);padding:3px 9px;border-radius:var(--r-pill);flex:0 0 auto;white-space:nowrap}
.tc-flag.bad{background:var(--bad-soft);color:var(--bad)}
.tc-flag.warn{background:var(--warn-soft);color:var(--warn)}
.teamcard .tc-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:2px}
.teamcard .tc-metrics .m{position:relative;padding-right:12px;min-width:0}
.teamcard .tc-metrics .m+.m{padding-left:14px}
.teamcard .tc-metrics .m+.m::before{content:"";position:absolute;left:0;top:3px;bottom:3px;width:1px;background:var(--line-strong)}
.teamcard .tc-metrics .k{font:500 9px var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--text-2);white-space:nowrap}
.teamcard .tc-metrics .v{font:600 21px var(--font-mono);letter-spacing:-.03em;margin-top:5px;color:var(--text-0);font-feature-settings:"tnum"}
.teamcard .tc-metrics .v .u{font-size:11px;color:var(--text-2);font-weight:400}
.teamcard .tc-metrics .v.good{color:var(--ok)}.teamcard .tc-metrics .v.warn{color:var(--warn)}.teamcard .tc-metrics .v.bad{color:var(--bad)}
/* ── Category state cards (rediseño CD) ── */
.cat-grid-cd{display:grid;grid-template-columns:1fr;gap:14px}
@media(min-width:900px){.cat-grid-cd{grid-template-columns:1fr 1fr}}
.catcard{position:relative;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-5);padding:18px 20px 16px 24px;cursor:pointer;text-align:left;width:100%;transition:background .12s,border-color .12s,transform .12s;overflow:hidden;display:flex;flex-direction:column;min-height:150px;color:inherit;font-family:inherit}
.catcard:hover{background:var(--bg-3);border-color:var(--line-strong);transform:translateY(-2px)}
.catcard::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--rail)}
.catcard .cc-top{display:flex;align-items:flex-start;gap:12px;margin-bottom:18px}
.catcard .cc-dot{width:11px;height:11px;border-radius:50%;flex:0 0 auto;margin-top:6px;background:var(--rail)}
.catcard .cc-id{flex:1;min-width:0}
.catcard .cc-id .n{font-family:var(--font-display);font-weight:700;font-size:18px;letter-spacing:-.02em;color:var(--text-0)}
.catcard .cc-id .m{font-family:var(--font-mono);font-size:11px;color:var(--text-2);margin-top:4px;display:flex;gap:10px;flex-wrap:wrap}
.healthchip{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-ui);font-size:12px;font-weight:600;padding:5px 11px;border-radius:var(--r-pill);flex:0 0 auto;white-space:nowrap}
.healthchip .d{width:7px;height:7px;border-radius:50%}
.healthchip.good{background:var(--ok-soft);color:var(--ok)}.healthchip.good .d{background:var(--ok)}
.healthchip.warn{background:var(--warn-soft);color:var(--warn)}.healthchip.warn .d{background:var(--warn)}
.healthchip.bad{background:var(--bad-soft);color:var(--bad)}.healthchip.bad .d{background:var(--bad)}
.healthchip.idle{background:var(--bg-4);color:var(--text-1)}.healthchip.idle .d{background:var(--text-2)}
.healthchip.info{background:var(--info-soft);color:var(--info)}.healthchip.info .d{background:var(--info)}
.catcard .cc-metrics{display:flex;align-items:flex-end;gap:22px;margin-top:auto}
.catcard .cc-metrics .m{line-height:1}
.catcard .cc-metrics .k{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-2);margin-bottom:7px}
.catcard .cc-metrics .v{font-family:var(--font-mono);font-weight:600;font-size:19px;letter-spacing:-.03em;color:var(--text-0)}
.catcard .cc-metrics .v.good{color:var(--ok)}.catcard .cc-metrics .v.warn{color:var(--warn)}.catcard .cc-metrics .v.bad{color:var(--bad)}.catcard .cc-metrics .v.info{color:var(--info)}
.acwr-mini{display:inline-flex;align-items:center;gap:7px}
.acwr-mini .band{font-family:var(--font-mono);font-size:9px;font-weight:500;padding:1px 6px;border-radius:5px}
.acwr-mini.b-info .v{color:var(--info)}.acwr-mini.b-info .band{background:var(--info-soft);color:var(--info)}
.acwr-mini.b-good .v{color:var(--ok)}.acwr-mini.b-good .band{background:var(--ok-soft);color:var(--ok)}
.acwr-mini.b-warn .v{color:var(--warn)}.acwr-mini.b-warn .band{background:var(--warn-soft);color:var(--warn)}
.acwr-mini.b-bad .v{color:var(--bad)}.acwr-mini.b-bad .band{background:var(--bad-soft);color:var(--bad)}
.catcard.risk{background:linear-gradient(105deg,var(--bad-soft),transparent 55%),var(--bg-2);border-color:rgba(240,102,107,.3)}
.catcard.risk::before{width:5px;background:var(--bad)}
.catcard.risk .cc-top{margin-bottom:12px}
.catcard .risk-line{display:flex;align-items:center;gap:9px;margin:0 0 14px}
.catcard .risk-line .ic{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;background:var(--bad-soft);color:var(--bad);flex:0 0 auto}
.catcard .risk-line .ic svg{width:15px;height:15px}
.catcard .risk-line .tx{font-size:12.5px;color:var(--text-1);line-height:1.45}
.catcard .risk-line .tx b{color:var(--bad);font-weight:600}
.addcard{border:1px dashed var(--line-strong);border-radius:var(--r-5);background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:11px;color:var(--text-2);cursor:pointer;min-height:150px;font-family:inherit}
.addcard:hover{background:var(--bg-1);color:var(--text-1);border-color:var(--bg-5)}
.addcard .ic{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--bg-2);border:1px solid var(--line-strong)}
/* ── Alertas jerarquizadas (Métricas · rediseño CD) ── */
.q-alerts{margin-bottom:16px}
.q-alerts-h{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.q-alerts-h .t{font-family:var(--font-display);font-weight:700;font-size:15px;letter-spacing:-.01em;color:var(--text-0)}
.q-alerts-h .n{font-family:var(--font-mono);font-size:11px;color:var(--text-2)}
.q-alerts-h .grow{flex:1}
.q-alerts-h .filt{font-family:var(--font-mono);font-size:11px;color:var(--text-2)}
.al-crit{display:flex;align-items:flex-start;gap:14px;padding:15px 17px;border-radius:var(--r-5);background:linear-gradient(100deg,var(--bad-soft),transparent 70%),var(--bg-2);border:1px solid rgba(240,102,107,.3);position:relative;overflow:hidden}
.al-crit::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--bad)}
.al-crit>.ic{width:38px;height:38px;border-radius:11px;flex:0 0 auto;display:grid;place-items:center;background:var(--bad-soft);color:var(--bad)}
.al-crit .bd{flex:1;min-width:0}
.al-crit .bd .tt{font-family:var(--font-display);font-weight:600;font-size:15px;letter-spacing:-.01em;display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:var(--text-0)}
.al-crit .bd .tt .tag{font-family:var(--font-mono);font-size:10px;font-weight:500;color:var(--bad);background:var(--bad-soft);padding:2px 8px;border-radius:var(--r-pill)}
.al-crit .bd .ms{font-size:12.5px;color:var(--text-1);margin-top:4px;line-height:1.5}
.al-crit .who{display:flex;align-items:center;gap:7px;margin-top:11px;flex-wrap:wrap}
.al-crit .who .a{display:inline-flex;align-items:center;gap:7px;background:var(--bg-3);border:1px solid var(--line-strong);border-radius:var(--r-pill);padding:3px 11px 3px 5px;font-size:12px;color:var(--text-0)}
.al-crit .who .a .av{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:9px;color:#1A0D02}
.al-crit .who .a .mono{font-family:var(--font-mono);font-size:11px;color:var(--bad)}
.al-sec{margin-top:12px;border:1px solid var(--line);border-radius:var(--r-5);background:var(--bg-2);overflow:hidden}
.al-sec>summary{display:flex;align-items:center;gap:11px;padding:12px 15px;cursor:pointer;list-style:none}
.al-sec>summary::-webkit-details-marker{display:none}
.al-sec>summary .ic{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex:0 0 auto}
.al-sec>summary .tt{font-weight:600;font-size:13.5px;color:var(--text-0)}
.al-sec>summary .n{font-family:var(--font-mono);font-size:11px;color:var(--text-2)}
.al-sec>summary .grow{flex:1}
.al-sec>summary .chev{color:var(--text-2);display:grid;transition:transform .15s}
.al-sec[open]>summary .chev{transform:rotate(180deg)}
.al-sec .list{border-top:1px solid var(--line)}
.al-sec .item{display:flex;align-items:center;gap:12px;padding:10px 15px;border-bottom:1px solid var(--line)}
.al-sec .item:last-child{border-bottom:0}
.al-sec .item .av{width:26px;height:26px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:10px;color:#1A0D02}
.al-sec .item .in{flex:1;min-width:0}
.al-sec .item .in .n{font-size:13px;font-weight:500;color:var(--text-0)}
.al-sec .item .in .m{font-family:var(--font-mono);font-size:10.5px;color:var(--text-2);margin-top:1px}
.al-sec .item .badge2{font-family:var(--font-mono);font-size:11px;padding:2px 8px;border-radius:var(--r-pill)}
/* ── Plantel · filas enriquecidas (rediseño CD) ── */
/* ── Tabla-instrumento (Métricas / carga · CD F2) ── */
.q-inst{--cols:minmax(160px,1.6fr) 44px 76px 104px 84px 84px minmax(110px,1fr) 104px;border:1px solid var(--line);border-radius:var(--r-4);overflow:hidden;min-width:820px;background:var(--bg-0)}
.q-inst__head{display:grid;grid-template-columns:var(--cols);gap:14px;padding:11px 16px;background:var(--bg-1);border-bottom:1px solid var(--line-strong)}
.q-inst__head span{font:500 10px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);white-space:nowrap}
.q-inst__head .r{text-align:right}
.q-inst__row{display:grid;grid-template-columns:var(--cols);gap:14px;padding:11px 16px;align-items:center;border-bottom:1px solid var(--line);font-size:13px;position:relative;transition:background .1s}
.q-inst__row:last-child{border-bottom:0}
.q-inst__row:hover{background:var(--bg-2)}
.q-inst__row:hover::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--accent)}
.q-inst__at{display:flex;align-items:center;gap:10px;min-width:0}
.q-inst__at .av{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font:700 10px var(--font-display);color:#1A0D02;flex-shrink:0}
.q-inst__at .av.avg-badge{background:var(--bg-3);border:1px dashed var(--line-strong);color:var(--text-2);border-radius:8px}
.q-inst__at .n{font-weight:500;color:var(--text-0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-inst__num{justify-self:end;font-family:var(--font-mono);font-feature-settings:"tnum";font-size:13.5px;letter-spacing:-.02em;color:var(--text-0);white-space:nowrap}
.q-inst__num .u{color:var(--text-2);font-size:10.5px}
.q-inst__dist{display:flex;align-items:flex-end;gap:2px;height:22px}
.q-inst__dist i{flex:1;border-radius:2px 2px 1px 1px;display:block}
.q-inst__row.avg{background:var(--bg-1);border-top:1px solid var(--line-strong)}
.q-inst__row.avg:hover{background:var(--bg-1)}
.q-inst__row.avg:hover::before{display:none}
.pl-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.pl-count{font:500 11.5px var(--font-mono);color:var(--text-2)}
.pl-cupos{font:500 11.5px var(--font-mono);padding:2px 8px;border-radius:var(--r-pill);background:var(--bg-2);border:1px solid var(--line);white-space:nowrap;flex:0 0 auto}
.pl-row--confirm{background:var(--bad-soft)}
.pl-row--confirm .pl-who .n,.pl-row--confirm .pl-who .p{display:block}
.pl-row--confirm .pl-who .p{color:var(--bad)}
.pl-row--confirm .pl-acts{display:flex;align-items:center;gap:8px;flex:0 0 auto}
/* Aviso de previsualización de plan (solo admin). Fijo arriba de todo y con el
   naranja de marca invertido, para que sea imposible confundirlo con la app. */
#app-preview-banner{position:fixed;top:0;left:0;right:0;z-index:9990;display:flex;align-items:center;justify-content:center;gap:12px;
  padding:7px 16px;background:var(--accent);color:var(--text-inv);font:500 12px var(--font-ui);box-shadow:0 2px 12px rgba(0,0,0,.4)}
#app-preview-banner b{font-weight:700}
#app-preview-banner button{border:1px solid rgba(26,13,2,.35);background:rgba(26,13,2,.12);color:var(--text-inv);
  font:600 11px var(--font-ui);padding:3px 10px;border-radius:var(--r-pill);cursor:pointer}
#app-preview-banner button:hover{background:rgba(26,13,2,.22)}
body.has-preview-banner{padding-top:32px}

/* Aviso de prueba. Tres pesos visuales para tres momentos: recordatorio (queda
   más de media prueba), urgencia (últimos 3 días) y estado (ya terminó). El
   último NO se pinta de rojo a propósito: no pasó nada malo ni se perdió nada,
   y una barra de error diría lo contrario justo cuando hay que dar confianza. */
.q-trial-banner{position:fixed;top:0;left:0;right:0;z-index:9989;display:flex;align-items:center;justify-content:center;
  gap:12px;padding:7px 16px;font:500 12px var(--font-ui);box-shadow:0 2px 12px rgba(0,0,0,.35)}
body.has-preview-banner .q-trial-banner{top:32px}
.q-trial-banner b{font-weight:700}
.q-trial-banner--soft{background:var(--bg-3);color:var(--text-0);border-bottom:1px solid var(--line-strong)}
.q-trial-banner--urge{background:var(--accent);color:var(--text-inv)}
/* La de "terminó" queda encendida para siempre hasta que compren, así que NO
   puede gritar: el pico de insistencia son los últimos 3 días, no el después.
   Se distingue de la suave por el acento, no por el brillo. */
.q-trial-banner--over{background:var(--bg-3);color:var(--text-1);border-bottom:2px solid var(--accent)}
.q-trial-banner--over b{color:var(--accent)}
.q-trial-banner__cta{border:none;background:var(--accent);color:var(--text-inv);
  font:600 11px var(--font-ui);padding:4px 12px;border-radius:var(--r-pill);cursor:pointer}
.q-trial-banner--urge .q-trial-banner__cta{background:rgba(26,13,2,.16);border:1px solid rgba(26,13,2,.35)}
.q-trial-banner__cta:hover{filter:brightness(1.08)}
.q-trial-banner__x{position:absolute;right:10px;border:none;background:transparent;color:inherit;
  opacity:.5;font-size:13px;line-height:1;padding:4px 6px;cursor:pointer}
.q-trial-banner__x:hover{opacity:1}
body.has-trial-banner{padding-top:32px}
body.has-preview-banner.has-trial-banner{padding-top:64px}

/* Cartel de cierre de beta. El número entra con una animación de una sola vez —
   el conteo en sí NO se anima porque no se mueve mientras lo mirás: cambia una
   vez por día. Un contador que tictaquea segundos convierte un aviso contractual
   en una oferta de infomercial. */
.q-beta-end__head{background:rgba(249,115,22,.08);border-bottom:1px solid rgba(249,115,22,.18);
  padding:20px 24px 18px;display:flex;align-items:center;gap:16px}
.q-beta-end__num{flex:0 0 auto;width:66px;height:66px;border-radius:var(--r-4);
  background:rgba(249,115,22,.12);border:1px solid rgba(249,115,22,.3);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  animation:q-beta-num .45s cubic-bezier(.2,1.3,.4,1) both}
.q-beta-end__num b{font:800 30px/1 var(--font-display);color:var(--accent);letter-spacing:-1px}
.q-beta-end__num span{font-size:9.5px;font-weight:600;color:var(--accent);opacity:.75;
  text-transform:uppercase;letter-spacing:.6px;margin-top:3px}
.q-beta-end__title{font-size:15px;font-weight:700;color:var(--text-0);line-height:1.3}
.q-beta-end__date{font-size:11.5px;color:var(--accent);font-weight:500;margin-top:3px}
@keyframes q-beta-num{from{opacity:0;transform:scale(.72)}to{opacity:1;transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.q-beta-end__num{animation:none}}

/* Módulos que el plan no incluye: se ven, con candado. Ocultarlos haría que el
   cliente nunca sepa que existen — y por lo tanto nunca los quiera. */
.q-tab--locked{opacity:.5}
.q-tab--locked:hover{opacity:.75}
.q-tab__lock{margin-left:5px;flex:0 0 auto;opacity:.9}
/* container-type: el componente vive a ~900px en la pestaña y a ~600px dentro
   del scroll de la ficha del atleta. Se adapta por su PROPIO ancho, no por el
   viewport, así que funciona igual en los dos contextos. */
.q-locked{container-type:inline-size;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-5);overflow:hidden;box-shadow:0 12px 32px -18px rgba(0,0,0,.9);margin:8px 0 16px}
.q-locked__head{padding:26px 26px 20px;display:flex;flex-direction:column;gap:11px}
.q-locked__chip{align-self:flex-start;display:flex;align-items:center;gap:7px;padding:5px 10px 5px 8px;border:1px solid var(--line);background:var(--bg-2);border-radius:var(--r-pill);font:500 10.5px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-2)}
.q-locked h2{margin:0;font:600 26px var(--font-display);letter-spacing:-.015em;line-height:1.1;color:var(--text-0)}
.q-locked p{margin:0;max-width:62ch;font-size:14.5px;line-height:1.55;color:var(--text-1)}
/* La vidriera: un fragmento real del módulo fundiéndose hacia el fondo. */
.q-locked__stage{position:relative;height:342px;padding:0 26px;overflow:hidden;border-top:1px solid var(--line)}
.q-locked__stage::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(20,18,16,0) 0%,rgba(20,18,16,.12) 52%,rgba(20,18,16,.72) 80%,var(--bg-1) 100%)}
.q-locked__frag{padding-top:18px;opacity:.85;user-select:none;pointer-events:none}
.q-locked__stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}
.q-locked__stat{border:1px solid var(--line);background:var(--bg-2);border-radius:var(--r-3);padding:9px 12px}
.q-locked__stat b{display:block;font:500 22px/1.15 var(--font-mono);letter-spacing:-.02em;color:var(--text-0)}
.q-locked__stat span{font-size:11px;color:var(--text-2)}
/* max-width: el módulo real tiene una TERCERA columna con la lista de lesiones;
   acá no va (serían fichas clínicas inventadas), así que sin tope los dos
   paneles se estiran y el cuerpo queda diminuto en el medio. */
.q-locked__bodies{display:grid;grid-template-columns:1fr 1fr;gap:8px;max-width:560px;margin:0 auto}
.q-locked__pane{border:1px solid var(--line);background:var(--bg-2);border-radius:var(--r-3);padding:9px 0 0;overflow:hidden}
.q-locked__pane em{display:block;margin-left:12px;font:500 9.5px var(--font-mono);font-style:normal;letter-spacing:.12em;text-transform:uppercase;color:var(--text-2)}
.q-locked__bm{height:278px;display:flex;justify-content:center;align-items:flex-start}
/* BodyChart le pone al <svg> un style inline (width:100%, max-width:400px) pensado
   para el módulo a pantalla completa. Acá el alto manda, así que hay que ganarle
   con !important: sin esto el cuerpo se desborda y se ve recortado al medio. */
.q-locked__bm svg{height:100%!important;width:auto!important;max-height:none!important;max-width:none!important}
/* Qoore Live */
.q-locked__board{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:18px;border:1px solid var(--line);background:var(--bg-2);border-radius:var(--r-4);padding:14px 18px;margin-bottom:10px}
.q-locked__team{display:flex;align-items:center;gap:12px;font-weight:600;font-size:14px;color:var(--text-0)}
.q-locked__team .q-locked__score{margin-left:auto}
.q-locked__team--r{justify-content:flex-end}
.q-locked__team--r .q-locked__score{margin-left:0}
.q-locked__score{font:600 30px var(--font-mono);letter-spacing:-.03em}
.q-locked__crest{width:28px;height:28px;border-radius:var(--r-3);border:1px solid var(--line);background:var(--bg-3);display:grid;place-items:center;font:500 10px var(--font-mono);color:var(--text-2)}
.q-locked__clock{text-align:center}
.q-locked__clock b{display:block;font:500 22px var(--font-mono);color:var(--accent)}
.q-locked__clock span{font:500 9.5px var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-2)}
.q-locked__min{display:grid;grid-template-columns:30px 1fr 58px auto;align-items:center;gap:12px;padding:8px 14px;border:1px solid var(--line);border-radius:var(--r-3);background:var(--bg-2);margin-bottom:7px}
.q-locked__av{font:500 10px var(--font-mono);color:var(--text-1)}
.q-locked__bar{position:relative;height:14px;border-radius:var(--r-1);background:var(--bg-inset);overflow:hidden}
.q-locked__bar i{position:absolute;inset:0 auto 0 0;border-radius:var(--r-1);background:linear-gradient(90deg,#6B5A44,var(--warn))}
.q-locked__num{font:400 14px var(--font-mono);text-align:right;color:var(--text-0)}
.q-locked__num i{font-style:normal;color:var(--text-2);font-size:10px}
.q-locked__tag{font:500 10px var(--font-mono);letter-spacing:.06em;padding:3px 9px;border-radius:var(--r-pill);white-space:nowrap}
/* Pie: el precio es dato secundario; la acción es el botón más fuerte que hay. */
.q-locked__foot{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;padding:0 26px 24px}
.q-locked__price{font:400 12.5px/1.5 var(--font-mono);color:var(--text-2)}
.q-locked__price b{color:var(--text-1);font-weight:500}
.q-locked__price span{color:var(--text-0);font-weight:500}
@container (max-width:680px){
  .q-locked__head{padding:20px 18px 16px;gap:9px}
  .q-locked h2{font-size:21px}
  .q-locked p{font-size:13.5px}
  .q-locked__stage{height:236px;padding:0 18px}
  .q-locked__stat{padding:7px 9px}
  .q-locked__stat b{font-size:17px}
  .q-locked__stat span{font-size:10px}
  .q-locked__bm{height:172px}
  .q-locked__score{font-size:25px}
  .q-locked__min{grid-template-columns:26px 1fr 50px auto;gap:9px;padding:7px 11px}
  .q-locked__foot{padding:0 18px 18px;flex-direction:column;align-items:stretch;gap:12px}
  .q-locked__foot .q-btn{width:100%;justify-content:center}
}
.pl-toolbar .sm-btn{white-space:nowrap;flex:0 0 auto}
.pl-row--arch{opacity:.62}
.pl-row--arch .pl-who .n,.pl-row--arch .pl-who .p{display:block}
.pl-row--arch .pl-av{color:var(--text-2)}
.pl-arch{margin-top:14px}
.pl-arch__head{font:500 10.5px var(--font-mono);color:var(--text-3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}
.pl-toolbar .roster-input{flex:0 1 auto;font-size:13px;padding:7px 12px;border-radius:var(--r-2);border:1px solid var(--line-strong);background:var(--bg-2);color:var(--text-0);font-family:var(--font-ui);outline:none}
.pl-toolbar .roster-input:focus{border-color:var(--accent-line)}
.pl-list{border:1px solid var(--line);border-radius:var(--r-4);overflow:hidden;margin-top:4px}
.pl-row{display:flex;align-items:center;gap:12px;padding:11px 14px;border-bottom:1px solid var(--line);transition:background .1s}
.pl-row:last-child{border-bottom:0}
.pl-row:hover{background:var(--bg-2)}
.pl-idx{font-family:var(--font-mono);font-size:12px;color:var(--text-2);width:20px;text-align:center;flex:0 0 auto}
.pl-av{width:38px;height:38px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:14px;color:#1A0D02}
.pl-who{flex:1;min-width:0;line-height:1.25}
.pl-who .n{font-size:14.5px;font-weight:500;color:var(--text-0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-who .p{font-family:var(--font-mono);font-size:10.5px;color:var(--text-2);margin-top:1px}
.pl-status{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.pl-well{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:11.5px;color:var(--text-2)}
.pl-acts{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.pl-ficha{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-ui);font-size:12px;font-weight:600;color:var(--text-1);padding:7px 12px;border-radius:var(--r-3);border:1px solid var(--line-strong);background:var(--bg-2);cursor:pointer}
.pl-ficha svg{width:13px;height:13px}
.pl-row:hover .pl-ficha{background:var(--bg-3);color:var(--text-0)}
.pl-kebab{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:var(--text-2);cursor:pointer;border:0;background:transparent}
.pl-kebab svg{width:15px;height:15px}
.pl-kebab:hover{color:var(--bad);background:var(--bad-soft)}
/* ── Permisos · acciones masivas (rediseño CD) ── */
.perm-bulk{display:flex;align-items:center;gap:6px;margin-bottom:8px;padding:8px 10px;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-2)}
.perm-bulk-lb{font-family:var(--font-mono);font-size:11px;color:var(--text-2);margin-right:2px}
/* ── Ficha del atleta · glance header (rediseño CD) ── */
.fh{padding:20px 20px 0;border-bottom:1px solid var(--line);background:radial-gradient(120% 150% at 0% 0%,rgba(249,115,22,.06),transparent 55%),var(--bg-1)}
.fh-top{display:flex;align-items:flex-start;gap:14px}
.fh-back{width:36px;height:36px;border-radius:var(--r-3);flex:0 0 auto;display:grid;place-items:center;color:var(--text-1);background:var(--bg-2);border:1px solid var(--line-strong);cursor:pointer}
.fh-back svg{width:18px;height:18px}
.fh-avwrap{position:relative;flex:0 0 auto}
.fh-av{width:72px;height:72px;border-radius:20px;display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:28px;color:#1A0D02;overflow:hidden}
.fh-idn{flex:1;min-width:0;padding-top:2px}
.fh-idn .crumb{font-size:12px;color:var(--text-2);display:flex;align-items:center;gap:7px;margin-bottom:5px;flex-wrap:wrap}
.fh-idn .crumb .sep{opacity:.5}
.fh-idn h1{margin:0;font-family:var(--font-display);font-weight:700;font-size:25px;letter-spacing:-.03em;color:var(--text-0)}
.fh-meta{display:flex;align-items:center;gap:8px;margin-top:9px;flex-wrap:wrap}
.fh-meta .mt{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--text-1);background:var(--bg-2);border:1px solid var(--line-strong);padding:4px 11px;border-radius:var(--r-pill)}
.fh-meta .mt b{color:var(--text-0);font-weight:600}
.fh-meta .mt .d{width:7px;height:7px;border-radius:50%}
.fh-acts{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.fh-acts .tp-btn{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-ui);font-weight:600;font-size:12.5px;padding:9px 13px;border-radius:var(--r-3);cursor:pointer;color:var(--text-1);background:var(--bg-2);border:1px solid var(--line-strong)}
.fh-acts .tp-btn:hover{background:var(--bg-3);color:var(--text-0)}
.fh-acts .tp-btn svg{width:15px;height:15px}
.fh-glance{display:flex;align-items:stretch;margin-top:18px;border-top:1px solid var(--line)}
.fh-glance .g{flex:1;padding:14px 18px 16px;position:relative;min-width:0}
.fh-glance .g+.g::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:1px;background:var(--line)}
.fh-glance .g .k{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-2)}
.fh-glance .g .big{display:flex;align-items:baseline;gap:8px;margin-top:8px;flex-wrap:wrap}
.fh-glance .g .big .v{font-family:var(--font-mono);font-weight:600;font-size:26px;letter-spacing:-.03em;color:var(--text-0)}
.fh-glance .g .big .w{font-family:var(--font-display);font-weight:600;font-size:13px}
.fh-glance .g .big .band{font-family:var(--font-mono);font-size:10px;font-weight:500;padding:1px 7px;border-radius:5px}
.fh-injchip{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-ui);font-weight:600;font-size:13px;padding:6px 12px;border-radius:var(--r-pill);margin-top:8px}
.fh-injchip .d{width:8px;height:8px;border-radius:50%}
.fh-injsub{font-size:11px;color:var(--text-2);margin-top:6px}
@media(max-width:640px){.fh-glance{flex-wrap:wrap}.fh-glance .g{flex:1 1 45%}.fh-glance .g:nth-child(3)::before,.fh-glance .g:nth-child(3){border-top:1px solid var(--line)}}
/* Ficha · sección Resumen (hero cards) */
.fh-sec-h{display:flex;align-items:baseline;gap:10px;margin-bottom:14px}
.fh-sec-h .t{font-family:var(--font-display);font-weight:700;font-size:17px;letter-spacing:-.02em;color:var(--text-0)}
.fh-sec-h .m{font-family:var(--font-mono);font-size:11px;color:var(--text-2)}
.fh-hero5{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
@media(max-width:900px){.fh-hero5{grid-template-columns:repeat(2,1fr)}}
.fh-h5{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-4);padding:15px 15px 14px}
.fh-h5 .k{font-size:11.5px;color:var(--text-1)}
.fh-h5 .row{display:flex;align-items:baseline;gap:6px;margin-top:10px}
.fh-h5 .v{font-family:var(--font-mono);font-weight:600;font-size:27px;letter-spacing:-.035em;line-height:.95;color:var(--text-0)}
.fh-h5 .v .u{font-family:var(--font-mono);font-size:13px;color:var(--text-2);font-weight:400;margin-left:1px}
.fh-h5 .d{display:inline-flex;align-items:center;gap:3px;font-family:var(--font-mono);font-size:11px;margin-top:10px;padding:2px 7px;border-radius:6px}
.fh-h5 .d.up{color:var(--ok);background:var(--ok-soft)}
.fh-h5 .d.down{color:var(--bad);background:var(--bad-soft)}
.fh-h5 .d.flat{color:var(--text-2);background:var(--bg-4)}
/* Ficha · Carga & Wellness */
.fh-cw{display:grid;grid-template-columns:1.3fr 1fr;gap:14px;align-items:start}
@media(max-width:900px){.fh-cw{grid-template-columns:1fr}}
.fh-cw .fcard{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-4);padding:16px}
.fh-cw .fcard-h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px;font-family:var(--font-display);font-weight:600;font-size:14px;color:var(--text-1)}
.fh-cw .fcard-h .mono{font-family:var(--font-mono);font-size:10.5px;color:var(--text-2);font-weight:400}
.fh-cbars{display:flex;align-items:flex-end;gap:6px;height:110px;justify-content:center}
.fh-cb{flex:1;border-radius:3px 3px 1px 1px;min-height:4px}
.fh-dp{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-content:start}
.fh-dp .dp{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3);padding:12px 13px}
.fh-dp .dp .k{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-2)}
.fh-dp .dp .row{display:flex;align-items:baseline;gap:7px;margin-top:6px}
.fh-dp .dp .v{font-family:var(--font-mono);font-weight:600;font-size:21px;letter-spacing:-.03em;color:var(--text-0)}
.fh-dp .dp .band{font-family:var(--font-mono);font-size:9.5px;font-weight:500;padding:1px 6px;border-radius:5px}
/* Ficha · Médico + Asistencia */
.fh-medleg{display:flex;gap:16px;margin-bottom:14px;flex-wrap:wrap}
.fh-medleg .it{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--text-1)}
.fh-medleg .it i{width:9px;height:9px;border-radius:50%}
.fh-injlist{display:flex;flex-direction:column;gap:10px}
.fh-inj{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3);padding:13px 15px}
.fh-inj .top{display:flex;align-items:flex-start;gap:11px}
.fh-inj .sev{width:4px;align-self:stretch;border-radius:3px;flex:0 0 auto;min-height:32px}
.fh-inj .who{flex:1;min-width:0}
.fh-inj .who .n{font-family:var(--font-display);font-weight:600;font-size:15px;letter-spacing:-.01em;color:var(--text-0)}
.fh-inj .who .z{font-size:12.5px;color:var(--text-1);margin-top:2px}
.fh-inj .sevchip{font-family:var(--font-mono);font-weight:600;font-size:11px;padding:3px 8px;border-radius:5px;flex:0 0 auto}
.fh-inj .meta{font-family:var(--font-mono);font-size:11px;color:var(--text-2);margin-top:9px}
.fh-empty{font-family:var(--font-mono);font-size:12.5px;color:var(--text-2);padding:16px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3)}
.fh-acal{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.fh-adow{text-align:center;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.04em;color:var(--text-2);padding-bottom:2px}
.fh-acell{min-height:56px;border-radius:7px;background:var(--bg-3);display:flex;align-items:flex-start;justify-content:flex-end;padding:6px 9px}
.fh-acell .dn{font-family:var(--font-mono);font-size:11px;color:var(--text-1)}
.fh-acell.pres{background:var(--ok-soft)}.fh-acell.pres .dn{color:var(--ok)}
.fh-acell.aus{background:var(--bad-soft)}.fh-acell.aus .dn{color:var(--bad)}
.fh-acell.just{background:var(--warn-soft)}.fh-acell.just .dn{color:var(--warn)}
.fh-acell.fut{opacity:.3}
.fh-acell.today{box-shadow:inset 0 0 0 1.5px var(--accent)}
/* Ficha · scroll único (sub-nav, body, evaluaciones, detalle) */
.fnav{display:flex;gap:5px;padding:11px 20px;border-bottom:1px solid var(--line);overflow-x:auto;background:var(--bg-0)}
.fnav::-webkit-scrollbar{display:none}
.fnav .p{background:transparent;border:0;color:var(--text-1);font-family:var(--font-ui);font-size:13px;font-weight:500;padding:8px 13px;border-radius:var(--r-pill);cursor:pointer;white-space:nowrap}
.fnav .p:hover{background:var(--bg-2);color:var(--text-0)}
.fh-body{padding:18px 20px 30px}
.fh-body>div{scroll-margin-top:14px}
.fh-detbar{display:flex;align-items:center;gap:14px;padding:12px 20px;border-bottom:1px solid var(--line)}
.fh-back2{display:inline-flex;align-items:center;gap:7px;background:var(--bg-2);border:1px solid var(--line-strong);color:var(--text-1);font-family:var(--font-ui);font-weight:600;font-size:12.5px;padding:8px 13px;border-radius:var(--r-3);cursor:pointer}
.fh-back2 svg{width:16px;height:16px}
.fh-back2:hover{background:var(--bg-3);color:var(--text-0)}
.fh-detbar .ttl{font-family:var(--font-display);font-weight:600;font-size:15px;color:var(--text-0)}
.fh-evgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media(max-width:640px){.fh-evgrid{grid-template-columns:1fr}}
.fh-evbtn{display:flex;align-items:center;gap:12px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3);padding:14px 15px;cursor:pointer;text-align:left;color:inherit;font-family:inherit;transition:background .12s,border-color .12s}
.fh-evbtn:hover{background:var(--bg-3);border-color:var(--line-strong)}
.fh-evbtn .ic{width:38px;height:38px;border-radius:11px;flex:0 0 auto;display:grid;place-items:center;background:var(--bg-3);border:1px solid var(--line-strong);color:var(--accent)}
.fh-evbtn .ic svg{width:19px;height:19px}
.fh-evbtn .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.fh-evbtn .tx .n{font-family:var(--font-display);font-weight:600;font-size:14px;color:var(--text-0)}
.fh-evbtn .tx .d{font-family:var(--font-mono);font-size:10.5px;color:var(--text-2)}
.fh-evbtn .chev{width:18px;height:18px;color:var(--text-2);flex:0 0 auto}
/* Ficha · sección Datos (inline) */
.fh-editbtn{background:var(--bg-2);border:1px solid var(--line-strong);color:var(--text-1);font-family:var(--font-ui);font-weight:600;font-size:12px;padding:6px 12px;border-radius:var(--r-3);cursor:pointer}
.fh-editbtn:hover{background:var(--bg-3);color:var(--text-0)}
.fh-dcard2{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-4);overflow:hidden;padding-bottom:4px}
.fh-dgrp{grid-column:1/-1;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);padding:13px 16px 5px}
.fh-drows{display:grid;grid-template-columns:1fr 1fr}
@media(max-width:640px){.fh-drows{grid-template-columns:1fr}}
.drow2{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 16px;border-top:1px solid var(--line)}
.drow2 .dk{font-size:12.5px;color:var(--text-2)}
.drow2 .dv2{font-family:var(--font-mono);font-size:12.5px;color:var(--text-0);font-weight:500;text-align:right}
.drow2 .dv2.big{font-size:15px;font-weight:600;letter-spacing:-.02em}
.fh-asleg{display:flex;gap:16px;margin-top:12px;font-size:11.5px;color:var(--text-2)}
.fh-asleg span{display:inline-flex;align-items:center;gap:6px}
.fh-asleg i{width:8px;height:8px;border-radius:2px}
.fh-asleg i.pres{background:var(--ok)}.fh-asleg i.just{background:var(--warn)}.fh-asleg i.aus{background:var(--bad)}
/* BADGES */
.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:500}
.badge-ok{background:var(--ok-soft);color:var(--ok)}
.badge-mid{background:var(--warn-soft);color:var(--warn)}
.badge-bad{background:var(--bad-soft);color:var(--bad)}
.badge-today{background:var(--ok-soft);color:var(--ok)}
.badge-nottoday{background:var(--bg2);color:var(--text3)}
/* SECTION HEADER */
.sec-header{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--bg-1);flex-wrap:nowrap;position:sticky;top:57px;z-index:90}
.sec-title{font-size:15px;font-weight:500;color:var(--text);flex:1;min-width:0}
.sec-back-btn{width:32px;height:32px;border-radius:8px;background:var(--bg2);border:1px solid var(--border);color:var(--text2);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}
.sec-back-btn:active{background:var(--bg3)}
.sec-team-identity{display:flex;align-items:center;gap:10px;flex:1;min-width:0;overflow:hidden}
.sec-team-avatar{width:36px;height:36px;border-radius:10px;background:var(--accent);color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}
.sec-team-info{min-width:0;overflow:hidden}
.sec-team-name{font-size:15px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}
.sec-team-sport{font-size:11px;color:var(--text3);margin-top:1px}
.sec-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.sec-action-btn{width:32px;height:32px;border-radius:8px;background:var(--bg2);border:1px solid var(--border);color:var(--text2);display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;flex-shrink:0}
.sec-action-btn:active{background:var(--bg3)}
.sec-action-notif{position:absolute;top:-5px;right:-5px;background:#ef4444;color:#fff;border-radius:50%;width:16px;height:16px;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;pointer-events:none}
.tabs{display:flex;background:var(--bg2);border-bottom:1px solid var(--border);overflow-x:auto;-webkit-overflow-scrolling:touch;position:sticky;top:101px;z-index:89}
.tabs::-webkit-scrollbar{display:none}
.tab-btn{flex:1;min-width:55px;padding:9px 4px;border:none;background:transparent;cursor:pointer;font-size:12px;color:var(--text2);font-family:var(--font);border-bottom:2px solid transparent;white-space:nowrap}
.tab-btn.active{color:var(--text);font-weight:600;border-bottom-color:var(--accent)}
/* INPUTS */
.date-row{display:flex;align-items:center;gap:6px;background:var(--bg2);border-radius:10px;padding:6px 8px;margin-bottom:12px;border:1px solid var(--border)}
.arrow-btn{width:32px;height:32px;border:1px solid var(--border);border-radius:7px;background:var(--bg-2);cursor:pointer;font-size:16px;color:var(--text2);display:flex;align-items:center;justify-content:center;flex-shrink:0}
input[type=date]{font-size:13px;border:none;background:transparent;color:var(--text);font-family:var(--font);text-align:center;width:100%;cursor:pointer}
input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1) opacity(.5)}
input[type=number]{font-size:15px;border:1px solid var(--border);background:var(--bg-2);color:var(--text);font-family:var(--font);border-radius:8px;padding:7px 10px;text-align:center;width:80px}
/* BUTTONS */
.quick-row{display:flex;gap:8px;margin-bottom:12px}
.quick-btn{flex:1;padding:8px 0;border-radius:8px;font-size:12px;font-weight:500;cursor:pointer;font-family:var(--font);border:1px solid}
.quick-p{background:var(--ok-soft);color:var(--ok);border-color:var(--ok)}
.quick-a{background:var(--bad-soft);color:var(--bad);border-color:var(--bad)}
.save-btn{padding:10px 20px;background:var(--accent);color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;font-family:var(--font)}
.add-btn{padding:9px 14px;background:var(--accent);color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;font-family:var(--font);white-space:nowrap}
.sm-btn{padding:3px 10px;border-radius:6px;font-size:12px;cursor:pointer;font-family:var(--font);border:1px solid var(--border);background:transparent;color:var(--text2)}
.del-confirm-btn{padding:3px 10px;border-radius:6px;font-size:12px;cursor:pointer;font-family:var(--font);background:#2d0a0a;color:#fca5a5;border:1px solid #991b1b}
.sub-tab{padding:5px 12px;border-radius:20px;font-size:12px;cursor:pointer;font-family:var(--font);font-weight:500;border:1px solid var(--border);background:transparent;color:var(--text2)}
.sub-tab.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.icon-btn{width:34px;height:34px;border-radius:9px;background:var(--bg2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:16px;flex-shrink:0}
/* PLAYER ROWS */
.player-row{display:flex;align-items:center;gap:8px;background:var(--bg-2);border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin-bottom:6px}
.player-name{flex:1;font-size:14px;color:var(--text)}
.status-group{display:flex;gap:3px}
.status-btn{width:36px;height:36px;border-radius:7px;font-size:13px;font-weight:500;cursor:pointer;font-family:var(--font);border:1px solid var(--border);background:transparent;color:var(--text3)}
.status-btn.active-p{background:var(--ok-soft);color:var(--ok);border-color:var(--ok)}
.status-btn.active-a{background:var(--bad-soft);color:var(--bad);border-color:var(--bad)}
.save-row{margin-top:12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.save-counts{flex:1;display:flex;gap:5px;flex-wrap:wrap}
.count-chip{font-size:12px;padding:3px 9px;border-radius:20px}
.chip-p{background:var(--ok-soft);color:var(--ok)}
.chip-a{background:var(--bad-soft);color:var(--bad)}
/* RPE */
.sub-tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.dur-row{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.rpe-section{margin-bottom:16px}
.rpe-title{font-size:12px;color:var(--text2);margin-bottom:8px;font-weight:500;text-transform:uppercase;letter-spacing:.06em}
.rpe-picker{display:flex;gap:3px}
.rpe-btn{flex:1;min-width:0;height:42px;border:none;border-radius:6px;cursor:pointer;font-size:13px;font-weight:700;font-family:var(--font);background:var(--bg2);color:var(--text3);transition:transform .1s}
.rpe-btn.sel{transform:scale(1.1);box-shadow:0 2px 8px rgba(0,0,0,.5)}
.rpe-label-box{text-align:center;font-size:12px;font-weight:600;margin-top:6px;min-height:18px;padding:4px 12px;border-radius:8px}
.rpe-mode-row{display:flex;gap:6px;margin-bottom:12px}
.rpe-mode-btn{flex:1;padding:7px 0;border-radius:8px;font-size:12px;font-weight:500;cursor:pointer;font-family:var(--font);border:1px solid var(--border);background:transparent;color:var(--text2)}
.rpe-mode-btn.active{background:var(--bg-1);color:var(--text);border-color:var(--text3)}
.load-est{font-size:12px;color:var(--text2);text-align:center;margin-top:6px;padding:6px;background:var(--bg2);border-radius:8px}
.p-rpe-row{background:var(--bg-2);border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin-bottom:8px}
.p-rpe-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}
.p-rpe-name{font-size:14px;color:var(--text);font-weight:500}
/* WELLNESS */
.well-player-row{background:var(--bg-2);border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin-bottom:6px;cursor:pointer}
.well-player-top{display:flex;align-items:center;gap:8px}
.well-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.well-expand{margin-top:10px;border-top:1px solid var(--border);padding-top:10px;cursor:default}
.well-item{margin-bottom:10px}
.well-key{font-size:12px;color:var(--text2);font-weight:500;display:block;margin-bottom:5px}
.well-opts{display:flex;gap:4px}
.well-btn{width:36px;height:34px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:700;font-family:var(--font);background:transparent;border:1px solid}
.well-btn.w-sel{color:#fff!important}
.well-tip{font-size:11px;color:var(--text3);margin-top:3px;display:block}
.section-label{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}
/* METRICS */
.metric-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:14px}
.metric{background:var(--bg2);border-radius:10px;padding:12px;border:1px solid var(--border)}
.metric-label{font-size:11px;color:var(--text2);margin-bottom:3px}
.metric-val{font-size:22px;font-weight:500;color:var(--text);font-family:var(--font-mono)}
.alert-banner{background:linear-gradient(100deg,var(--bad-soft),transparent 70%),var(--bg-2);border:1px solid rgba(240,102,107,.3);border-radius:var(--r-3);padding:10px 12px;margin-bottom:12px;font-size:13px;color:var(--bad);display:flex;gap:6px;flex-direction:column}
.alert-banner-title{display:flex;align-items:center;gap:6px;font-weight:500}
.metrics-card{background:var(--bg-2);border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin-bottom:8px}
.metrics-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.metrics-name{font-size:14px;font-weight:500;color:var(--text)}
.metrics-row{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:8px}
.m-cell{background:var(--bg2);border-radius:7px;padding:5px 6px;text-align:center}
.m-cell-label{font-size:10px;color:var(--text3);margin-bottom:2px}
.m-cell-val{font-size:13px;font-weight:600;color:var(--text);font-family:var(--font-mono)}
.zone-legend{display:flex;flex-wrap:wrap;gap:5px}
.zone-chip{font-size:11px;padding:3px 8px;border-radius:20px;font-weight:500}
.empty-state{text-align:center;padding:40px 20px;font-size:14px;color:var(--text2);line-height:1.7}
/* REPORTS */
.report-row{background:var(--bg-2);border:1px solid var(--border);border-radius:10px;padding:11px 13px;margin-bottom:6px}
.rep-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.rep-name{font-size:14px;font-weight:500;color:var(--text)}
.rep-detail{display:flex;gap:8px;font-size:12px;color:var(--text2);margin-top:3px;flex-wrap:wrap}
.pbar{height:4px;background:var(--bg2);border-radius:2px;overflow:hidden;margin-top:6px}
.pbar-fill{height:100%;border-radius:2px}
/* ROSTER */
.roster-add{display:flex;gap:8px;margin-bottom:12px}
.roster-input{flex:1;font-size:14px;padding:9px 12px;border-radius:8px;border:1px solid var(--border);background:var(--bg-2);color:var(--text);font-family:var(--font)}
.roster-row{background:var(--bg-2);border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin-bottom:6px;display:flex;align-items:center;gap:8px}
.roster-num{font-size:12px;color:var(--text3);min-width:20px}
.roster-name{flex:1;font-size:14px;color:var(--text)}
/* LOADING */
#loading-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#0B0A08}
.spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
/* CHARTS */
.chart-card{background:var(--bg-2);border:1px solid var(--border);border-radius:12px;padding:14px 12px 10px;margin-bottom:12px}
.chart-title{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center}
.chart-legend{display:flex;flex-wrap:wrap;gap:8px}
.chart-legend-item{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text2)}
.chart-legend-dot{width:10px;height:3px;border-radius:2px;flex-shrink:0}
/* SEARCH OVERLAY */
.q-search-overlay{position:fixed;inset:0;background:rgba(5,6,8,.78);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;justify-content:center;padding-top:80px;z-index:1000;}
.q-search-modal{width:720px;max-width:92%;background:var(--bg-1);border:1px solid var(--line-strong);border-radius:14px;box-shadow:0 32px 80px -16px rgba(0,0,0,.7),0 0 0 1px rgba(255,255,255,.02);max-height:78vh;display:flex;flex-direction:column;overflow:hidden;}
.q-search-irow{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line);}
.q-search-input{flex:1;background:transparent;border:0;color:var(--text-0);font-size:17px;font-family:var(--font);outline:none;letter-spacing:-.01em;}
.q-search-input::placeholder{color:var(--text-3);}
.q-search-chips{padding:10px 18px;border-bottom:1px solid var(--line);display:flex;gap:6px;align-items:center;}
.q-search-chip{padding:4px 10px;border-radius:999px;border:1px solid var(--line);color:var(--text-1);font-size:12px;font-weight:500;display:inline-flex;align-items:center;gap:6px;background:transparent;cursor:default;}
.q-search-chip.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent);}
.q-search-body{flex:1;overflow-y:auto;padding:8px 0 12px;}
.q-search-sec{padding:12px 18px 4px;display:flex;justify-content:space-between;align-items:center;font-size:10.5px;color:var(--text-2);text-transform:uppercase;letter-spacing:.1em;font-weight:600;}
.q-search-row{display:flex;align-items:center;gap:12px;padding:10px 18px;cursor:pointer;border-left:2px solid transparent;background:transparent;width:100%;text-align:left;font-family:var(--font);border-top:0;border-right:0;border-bottom:0;color:var(--text-0);}
.q-search-row:hover{background:var(--accent-soft);border-left-color:var(--accent);}
.q-search-av{width:32px;height:32px;border-radius:6px;background:var(--bg-3);border:1px solid var(--line-strong);display:grid;place-items:center;font-size:11px;font-weight:600;color:var(--text-1);flex-shrink:0;}
.q-search-name{font-size:13.5px;font-weight:500;color:var(--text-0);}
.q-search-name mark{background:var(--accent-soft);color:var(--accent);padding:0 2px;border-radius:2px;font-weight:600;font-style:normal;}
.q-search-sub{font-size:11.5px;color:var(--text-2);margin-top:2px;}
.q-search-badge{font-size:9.5px;font-weight:700;letter-spacing:.1em;padding:2px 6px;border-radius:3px;font-family:var(--font-mono);flex-shrink:0;}
.q-search-foot{padding:10px 18px;border-top:1px solid var(--line);background:var(--bg-0);display:flex;gap:18px;font-size:11px;color:var(--text-2);align-items:center;}
.q-search-foot kbd{font:500 10px var(--font-mono);background:var(--bg-3);border:1px solid var(--line-strong);border-radius:3px;padding:1px 5px;color:var(--text-1);}
/* legacy - kept for backwards compat */
.s-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.s-name{flex:1;font-size:14px;font-weight:500;color:var(--text)}
.s-cat{font-size:11px;padding:2px 8px;border-radius:20px;font-weight:600}
/* ATHLETE */
.ath-header{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--bg-1)}
.ath-avatar{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:800;color:#fff;flex-shrink:0}
.ath-name-block{flex:1;min-width:0}
.ath-fullname{font-size:14px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ath-sub{font-size:11px;color:var(--text2);margin-top:1px}
.eval-card{background:var(--bg-2);border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin-bottom:8px}
.eval-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.eval-date{font-size:12px;color:var(--text2);font-weight:500}
.eval-del{font-size:11px;padding:2px 8px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--text3);cursor:pointer;font-family:var(--font)}
.eval-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.eval-grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}
.eval-cell{background:var(--bg2);border-radius:7px;padding:6px 7px;text-align:center}
.eval-cell-label{font-size:10px;color:var(--text3);margin-bottom:2px}
.eval-cell-val{font-size:13px;font-weight:600;color:var(--text);font-family:var(--font-mono)}
.eval-delta{font-size:10px;margin-top:1px}
.delta-up{color:#22c55e}
.delta-dn{color:#ef4444}
.form-card{background:var(--bg2);border:1px solid var(--accent);border-radius:12px;padding:14px;margin-bottom:12px}
.form-card-title{font-size:12px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.05em;margin-bottom:12px;display:flex;justify-content:space-between;align-items:center}
.form-section-label{font-size:10px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.06em;margin:10px 0 6px}
.form-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.form-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}
.form-field{display:flex;flex-direction:column;gap:3px}
.form-field label{font-size:11px;color:var(--text2)}
.form-field input,.form-field select,.form-field textarea{padding:8px 10px;border-radius:8px;border:1px solid var(--border);background:var(--bg-2);color:var(--text);font-size:13px;font-family:var(--font);outline:none;width:100%}
.form-field input:focus,.form-field select:focus{border-color:var(--accent)}
.form-field select option{background:#1e293b}
.form-row{display:flex;gap:8px;align-items:flex-end;margin-top:10px}
.jump-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}
.jump-cell{background:var(--bg2);border-radius:8px;padding:8px 5px;text-align:center}
.jump-lbl{font-size:10px;color:var(--text3);margin-bottom:3px}
.jump-val{font-size:18px;font-weight:700;color:var(--text);font-family:var(--font-mono)}
.jump-unit{font-size:10px;color:var(--text3)}
.fold-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px solid var(--border);font-size:13px}
.fold-row:last-child{border-bottom:none}
.fold-name{color:var(--text2)}
.fold-val{color:var(--text);font-weight:500}
/* TEAM MANAGEMENT */
.team-manage-btn{padding:6px 12px;border-radius:8px;font-size:12px;font-weight:500;cursor:pointer;font-family:var(--font);border:1px solid;white-space:nowrap}
.sport-badge{font-size:10px;padding:2px 7px;border-radius:12px;font-weight:600;background:var(--bg2);color:var(--text3);border:1px solid var(--border)}
.team-logo{width:48px;height:48px;border-radius:12px;object-fit:cover;flex-shrink:0}
.logo-upload-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:8px;background:var(--bg2);border:1px solid var(--border);color:var(--text2);font-size:12px;cursor:pointer;font-family:var(--font)}
.logo-preview{width:64px;height:64px;border-radius:12px;object-fit:cover;border:2px solid var(--accent)}
/* ── PERMISOS & INVITACIONES ─────────────────────────────── */
.role-pill{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:var(--r-pill);font:600 10px var(--font-ui);letter-spacing:.03em;text-transform:uppercase;flex-shrink:0;}
.role-owner{background:var(--info-soft);color:var(--info);}
.role-editor{background:var(--ok-soft);color:var(--ok);}
.role-viewer{background:var(--bg-4);color:var(--text-1);}
.role-athlete{background:var(--accent-soft);color:var(--accent);}
.access-panel{background:var(--bg-1);border:1px solid var(--line-strong);border-radius:var(--r-5);padding:18px;margin-bottom:14px;}
.access-panel-title{font-family:var(--font-display);font-size:16px;font-weight:700;letter-spacing:-.02em;color:var(--text-0);margin-bottom:14px;display:flex;justify-content:space-between;align-items:center;gap:10px;}
.access-panel-title .ic{display:inline-flex;align-items:center;gap:9px;}
.access-panel-title .ic svg{color:var(--accent);}
.q-access-eyebrow{font:500 9.5px var(--font-mono);letter-spacing:.07em;text-transform:uppercase;color:var(--text-2);}
.member-row{display:flex;align-items:center;gap:8px;padding:9px 11px;background:var(--bg-2);border-radius:var(--r-3);margin-bottom:6px;border:1px solid var(--line);}
.member-email{flex:1;font-size:13px;color:var(--text-0);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.invite-link-box{background:var(--bg-2);border:1px solid var(--line-strong);border-radius:var(--r-3);padding:9px 10px;font:400 11px var(--font-mono);color:var(--text-1);word-break:break-all;margin:8px 0;line-height:1.5;}
.cat-perm-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--line);}
.cat-perm-row:last-child{border-bottom:none;}
.perm-btn{padding:4px 11px;border-radius:7px;font:600 11px var(--font-ui);cursor:pointer;border:1px solid var(--line-strong);background:transparent;color:var(--text-2);transition:background .1s,color .1s;}
.perm-btn:hover{color:var(--text-0);}
.perm-btn.sel-edit{background:var(--accent);color:#1A0D02;border-color:transparent;}
.perm-btn.sel-view{background:var(--info-soft);color:var(--info);border-color:rgba(92,168,242,.34);}
.perm-btn.sel-none{background:var(--bg-5);color:var(--text-0);border-color:transparent;}
.invite-modal{position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:999;display:flex;align-items:center;justify-content:center;padding:20px;}
.invite-modal-card{background:var(--bg-2);border:1px solid var(--accent);border-radius:16px;padding:24px;width:100%;max-width:380px;max-height:90vh;overflow-y:auto;}
.readonly-overlay{pointer-events:none;opacity:.45;}
.readonly-banner{background:#1c1400;border:1px solid #92400e;border-radius:8px;padding:8px 12px;font-size:12px;color:#fcd34d;margin-bottom:10px;display:flex;align-items:center;gap:6px;}
/* LOGIN TABS */
.login-tabs{display:flex;background:var(--bg2);border-radius:10px;padding:3px;margin-bottom:20px;gap:2px;}
.login-tab-btn{flex:1;padding:8px;border:none;background:transparent;color:var(--text2);font-size:13px;font-weight:500;cursor:pointer;border-radius:8px;font-family:var(--font);transition:background .15s;}
.login-tab-btn.active{background:var(--bg-1);color:var(--text);}
.invite-banner{background:#052e16;border:1px solid #166534;border-radius:10px;padding:10px 12px;margin-bottom:16px;font-size:13px;color:#86efac;}
.invite-banner-title{font-weight:600;margin-bottom:2px;}
.invite-banner-sub{font-size:11px;color:#4ade80;opacity:.8;}
/* ── DESKTOP LAYOUT ─────────────────────────────────────── */
#nx-sidebar,#nx-stats-bar{display:none}
@media(min-width:900px){
  /* Sidebar */
  body.is-auth #nx-sidebar{display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;width:240px;background:var(--bg-1);border-right:1px solid var(--line);z-index:200;overflow:hidden}
  /* Sidebar q-* internals */
  .q-sidebar__brand{height:68px;padding:0 12px;display:flex;align-items:center;border-bottom:1px solid var(--line);flex-shrink:0}
  .q-sidebar__search{padding:10px 12px;border-bottom:1px solid var(--line)}
  .q-input{width:100%;height:30px;background:var(--bg-2);border:1px solid var(--line);color:var(--text-0);border-radius:var(--r-2);padding:0 46px 0 28px;font-size:12px;outline:none;transition:border-color .12s,background .12s;font-family:var(--font-ui)}
  .q-kbd{position:absolute;right:7px;top:50%;transform:translateY(-50%);font:500 9px var(--font-mono);letter-spacing:.02em;color:var(--text-2);border:1px solid var(--line-strong);border-radius:4px;padding:1px 5px;pointer-events:none;background:var(--bg-1)}
  .q-input:focus{border-color:var(--accent-line);background:var(--bg-3)}
  .q-input::placeholder{color:var(--text-2)}
  .q-input-wrap{position:relative}
  .q-input-wrap svg{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--text-2);pointer-events:none}
  .q-sidebar__section{padding:14px 12px 8px;display:flex;align-items:center;justify-content:space-between;font-family:var(--font-display);font-size:12px;color:var(--text-2);letter-spacing:-.005em;font-weight:600}
  .q-sidebar__section button{background:transparent;border:0;color:var(--text-2);cursor:pointer;width:18px;height:18px;border-radius:4px;display:grid;place-items:center}
  .q-sidebar__section button:hover{background:var(--bg-3);color:var(--text-0)}
  .q-tree{flex:1;overflow-y:auto;padding:0 6px 12px}
  .q-tree__group{margin-bottom:2px}
  .q-tree__team{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--r-2);cursor:pointer;font-size:12.5px;color:var(--text-1);transition:background .12s,color .12s}
  .q-tree__team:hover{background:var(--bg-3);color:var(--text-0)}
  .q-tree__team .chev{width:12px;color:var(--text-2);transition:transform .15s;flex-shrink:0}
  .q-tree__team.open .chev{transform:rotate(90deg)}
  .q-tree__team .crest{width:22px;height:22px;border-radius:6px;background:var(--bg-3);flex:0 0 auto;display:grid;place-items:center;font:700 9.5px var(--font-display);color:#141210;overflow:hidden}
  .q-tree__team .crest img{width:100%;height:100%;object-fit:cover}
  .q-tree__mng{background:transparent;border:0;color:var(--text-2);cursor:pointer;width:22px;height:22px;border-radius:5px;display:grid;place-items:center;flex:0 0 auto;opacity:0;transition:opacity .12s,background .12s,color .12s}
  .q-tree__team:hover .q-tree__mng{opacity:1}
  .q-tree__mng:hover{background:var(--bg-4);color:var(--text-0)}
  .q-tree__team .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .q-tree__team .count{font:500 10px var(--font-mono);color:var(--text-2)}
  .q-tree__cats{padding:2px 0 2px 22px;display:flex;flex-direction:column;gap:1px}
  .q-tree__cat{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:var(--r-1);font-size:12px;color:var(--text-1);cursor:pointer;position:relative}
  .q-tree__cat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background:var(--line)}
  .q-tree__cat:hover{background:var(--bg-3);color:var(--text-0)}
  .q-tree__cat.active{background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--accent)}
  .q-tree__cat.active .label{color:var(--accent);font-weight:600}
  .q-tree__cat .dot{width:6px;height:6px;border-radius:50%;background:var(--text-3);flex:0 0 auto}
  .q-tree__cat.active .dot{background:var(--accent)}
  .q-tree__cat .label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .q-tree__cat .n{font:500 10px var(--font-mono);color:var(--text-2)}
  .q-tree__cat.active .n{color:var(--accent)}
  /* Eyebrows + biblioteca/cuenta (CD F1) */
  .q-tree__eyebrow{font-family:var(--font-display);font-size:12px;font-weight:600;letter-spacing:-.005em;color:var(--text-2);padding:16px 8px 7px}
  .q-lib-sub{display:flex;align-items:center;gap:6px;font:500 9.5px var(--font-mono);letter-spacing:.07em;text-transform:uppercase;color:var(--text-2);padding:8px 8px 4px;cursor:pointer;user-select:none}
  .q-lib-sub:hover{color:var(--text-1)}
  .q-lib-sub .chev{display:inline-flex;transition:transform .15s}
  .q-lib-sub.open .chev{transform:rotate(90deg)}
  .q-nav-item{display:flex;align-items:center;gap:10px;padding:7px 10px;margin-left:6px;border-radius:var(--r-2);cursor:pointer;color:var(--text-1);font-size:12.5px}
  .q-nav-item>svg{color:var(--text-2);flex:0 0 auto}
  .q-nav-item:hover{background:var(--bg-3);color:var(--text-0)}
  .q-nav-item .label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .q-nav-item .n{font:500 10px var(--font-mono);color:var(--text-2)}
  .q-nav-item.active{background:var(--accent-soft)}
  .q-nav-item.active .label{color:var(--accent);font-weight:600}
  .q-nav-item.active>svg{color:var(--accent)}
  .q-sidebar__foot{border-top:1px solid var(--line);padding:10px 12px 12px;flex-shrink:0}
  .q-me{display:flex;align-items:center;gap:10px;padding:8px;border-radius:var(--r-3);background:var(--bg-2);border:1px solid var(--line-strong)}
  .q-me .avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#F97316,#B4460C);display:grid;place-items:center;font:600 13px var(--font-ui);color:#fff;flex-shrink:0;overflow:hidden}
  .q-me .who{flex:1;min-width:0}
  .q-me .who .n{font-family:var(--font-display);font-size:13px;font-weight:600;letter-spacing:-.01em;color:var(--text-0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .q-me .who .r{font-size:10.5px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .q-foot-btn{background:transparent;border:0;color:var(--text-2);cursor:pointer;width:28px;height:28px;border-radius:var(--r-1);display:grid;place-items:center;flex-shrink:0;transition:background .12s,color .12s}
  .q-foot-btn:hover{background:var(--bg-3);color:var(--text-0)}
  .q-me__out:hover{background:var(--bad-soft);color:var(--bad)}
  .q-sidebar__footrow{display:flex;align-items:center;gap:6px;margin-top:8px;padding:0 2px}
  .q-sidebar__sync{flex:1;min-width:0;font-size:10.5px;color:var(--text-3);display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden}
  /* ── KPI strip contextual (CD F1: tiles hairline, no cards flotantes) ── */
  body.is-auth #nx-stats-bar{display:grid;grid-template-columns:repeat(4,1fr);margin-left:240px;background:var(--bg-1);border-bottom:1px solid var(--line)}
  .q-kpi{padding:15px 22px 16px;position:relative;min-width:0}
  .q-kpi+.q-kpi::before{content:"";position:absolute;left:0;top:15px;bottom:15px;width:1px;background:var(--line-strong)}
  .q-kpi--link{cursor:pointer;transition:background .12s}
  .q-kpi--link:hover{background:var(--bg-2)}
  .q-kpi__row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:18px}
  .q-kpi__lab{font:500 10px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-2);white-space:nowrap}
  .q-kpi__num{font-family:var(--font-mono);font-size:30px;font-weight:600;letter-spacing:-.03em;line-height:1.05;color:var(--text-0);margin-top:7px;font-feature-settings:"tnum"}
  .q-kpi__num .u{font-size:14px;color:var(--text-2);font-weight:400;margin-left:2px}
  .q-kpi__num.good{color:var(--ok)}.q-kpi__num.warn{color:var(--warn)}.q-kpi__num.bad{color:var(--bad)}.q-kpi__num.info{color:var(--info)}
  .q-kpi__ctx{font-size:11.5px;color:var(--text-2);margin-top:6px;display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;min-height:16px}
  .q-kpi__pin{font:500 10px var(--font-mono);padding:1px 7px;border-radius:var(--r-pill);background:var(--bg-4);color:var(--text-1);flex-shrink:0}
  .q-kpi__pin.good{background:var(--ok-soft);color:var(--ok)}
  .q-kpi__pin.warn{background:var(--warn-soft);color:var(--warn)}
  .q-kpi__pin.bad{background:var(--bad-soft);color:var(--bad)}
  .q-kpi__pin.info{background:var(--info-soft);color:var(--info)}
  .q-kpi__seg{display:flex;gap:3px}
  .nx-stat-card{background:var(--bg-2);border:1px solid var(--line-strong);border-radius:var(--r-md);padding:13px 16px;box-shadow:var(--shadow-card)}
  .nx-stat-val{font-family:var(--font-mono);font-size:26px;font-weight:600;color:var(--fg-1);letter-spacing:-.03em;line-height:1}
  .nx-stat-lbl{font-size:10px;font-weight:500;color:var(--fg-3);letter-spacing:.05em;text-transform:uppercase;margin-top:6px}
  /* Main area */
  #app-screen{max-width:100%;margin-left:240px}
  /* Cards grid */
  .wrap{padding:16px 20px;display:grid;grid-template-columns:1fr 1fr;gap:12px;align-content:start}
  .wrap>*{grid-column:1/-1}
  .wrap>.team-card,.wrap>.cat-card{grid-column:auto;margin-bottom:0}
  .team-card,.cat-card{box-shadow:var(--shadow-card)}
  /* Header: completamente oculto en desktop, el sidebar lo reemplaza */
  body.is-auth .header{display:none!important}
  body.is-auth .sync-bar{display:none!important}
  .q-sidebar__sync{display:flex;}
  .header-info{padding-left:0}
  .nxs-pd{background:var(--bg-3);border:1px solid var(--line);border-radius:4px;color:var(--fg-3);font-size:10px;font-weight:500;padding:2px 6px;cursor:pointer;font-family:var(--font-ui);transition:background .15s,color .15s,border-color .15s;}
  .nxs-pd.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);}
  /* Sidebar tree */
  .nx-team-group{margin-bottom:6px;}
  .nx-team-row{display:flex;align-items:center;border-radius:var(--r-sm);padding-right:4px;}
  .nx-team-row:hover{background:var(--bg-3);}
  .nx-team-hdr{flex:1;display:flex;align-items:center;gap:8px;padding:6px 4px 6px 10px;font-size:10px;font-weight:600;color:var(--fg-3);background:transparent;border:none;cursor:pointer;text-align:left;font-family:var(--font-ui);letter-spacing:.06em;text-transform:uppercase;min-width:0;overflow:hidden;}
  .nx-team-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
  .nx-team-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .nx-perms-btn{background:none;border:none;cursor:pointer;font-size:11px;padding:3px 5px;border-radius:4px;color:var(--fg-3);flex-shrink:0;opacity:0;line-height:1;transition:opacity .15s,background .15s;}
  .nx-team-row:hover .nx-perms-btn{opacity:1;}
  .nx-perms-btn:hover{background:var(--accent-soft);color:var(--accent);}
  .nx-cat-item{display:flex;align-items:center;gap:8px;padding:6px 10px 6px 22px;border-radius:var(--r-sm);font-size:13px;font-weight:400;color:var(--fg-2);background:transparent;border:none;cursor:pointer;width:100%;text-align:left;font-family:var(--font-ui);transition:background .12s,color .12s;line-height:1.4;}
  .nx-cat-item:hover{background:var(--bg-3);color:var(--fg-1);}
  .nx-cat-item.nx-cat-active{background:var(--accent-soft);color:var(--accent);font-weight:500;}
  .nx-cat-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
  .nx-new-team-btn{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:var(--r-sm);font-size:12px;color:var(--fg-3);background:transparent;border:1px dashed var(--line);cursor:pointer;width:100%;text-align:left;font-family:var(--font-ui);margin-top:8px;transition:background .12s,color .12s,border-color .12s;}
  .nx-new-team-btn:hover{background:var(--bg-3);color:var(--fg-1);border-color:var(--line-strong);}
  /* Sticky headers on desktop — top header is hidden, so anchor to 0 */
  .sec-header{top:0}
  .tabs{top:44px}
}
@keyframes nx-pulse{0%,100%{opacity:.35}50%{opacity:.8}}
/* ── Category view ──────────────────────────────────────── */
.q-section-h{display:flex;align-items:center;gap:10px;margin-bottom:14px;}
.q-section-h__l{flex:1;min-width:0;}
.q-section-h__l h2{font-size:16px;font-weight:600;letter-spacing:-.01em;margin:0;color:var(--text-0);}
.q-section-h__l p{margin:2px 0 0;font-size:12px;color:var(--text-2);}
.q-section-h__r{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.q-btn{height:32px;padding:0 12px;display:inline-flex;align-items:center;gap:6px;background:var(--bg-3);color:var(--text-0);border:1px solid var(--line-strong);border-radius:var(--r-2);font-size:12.5px;font-weight:500;cursor:pointer;transition:background .12s,border-color .12s,color .12s;font-family:var(--font-ui);}
.q-btn:hover{background:var(--bg-4);}
.q-btn--ghost{background:transparent;border-color:var(--line);}
.q-btn--ghost:hover{background:var(--bg-3);}
.q-btn--primary{background:var(--accent);color:#1A0A02;border-color:transparent;font-weight:600;}
.q-btn--primary:hover{background:var(--accent-hover);}
.q-btn--sm{height:26px;padding:0 8px;font-size:11.5px;gap:5px;}
/* ── Topbar de categoría (CD F1) ── */
.q-cathead{display:flex;align-items:center;gap:13px;padding:4px 0 16px;}
.q-cathead__back{width:36px;height:36px;border-radius:var(--r-2);flex:0 0 auto;display:grid;place-items:center;color:var(--text-1);background:var(--bg-2);border:1px solid var(--line-strong);cursor:pointer;transition:background .12s,color .12s;}
.q-cathead__back:hover{background:var(--bg-3);color:var(--text-0);}
.q-cathead__back svg{width:17px;height:17px;}
.q-cathead__av{width:46px;height:46px;border-radius:12px;flex:0 0 auto;display:grid;place-items:center;font:700 14px var(--font-display);letter-spacing:-.02em;color:#141210;}
.q-cathead__id{flex:1;min-width:0;line-height:1.2;}
.q-cathead__id .crumb{font-size:12px;color:var(--text-2);display:flex;align-items:center;gap:6px;margin-bottom:2px;white-space:nowrap;overflow:hidden;}
.q-cathead__id .crumb .sep{opacity:.5;}
.q-cathead__id .name{font-family:var(--font-display);font-weight:700;font-size:23px;letter-spacing:-.03em;color:var(--text-0);display:flex;align-items:center;gap:10px;min-width:0;}
.q-cathead__id .sub{font-size:12.5px;color:var(--text-1);margin-top:3px;}
.q-cathead__acts{display:flex;align-items:center;gap:8px;flex:0 0 auto;}
@media(max-width:640px){
  .q-cathead{gap:10px;}
  .q-cathead__av{width:38px;height:38px;border-radius:10px;font-size:12px;}
  .q-cathead__id .name{font-size:18px;}
  .q-cathead__id .crumb{display:none;}
  .q-cathead__actlbl{display:none;}
  .q-cathead__acts .q-btn{padding:0 9px;}
}
/* ── Tabs (instrumento de navegación, CD F1) ── */
.q-tabs{display:flex;align-items:stretch;gap:2px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow-x:auto;scrollbar-width:none;}
.q-tabs::-webkit-scrollbar{display:none;}
.q-tab{height:42px;padding:0 13px;background:transparent;border:0;color:var(--text-2);font:500 13px var(--font-ui);cursor:pointer;display:inline-flex;align-items:center;gap:8px;position:relative;white-space:nowrap;flex-shrink:0;border-radius:var(--r-3) var(--r-3) 0 0;transition:color .12s,background .12s;}
.q-tab svg{flex-shrink:0;}
.q-tab:hover{color:var(--text-0);background:var(--bg-1);}
.q-tab.active{color:var(--accent);font-weight:600;}
.q-tab.active::after{content:"";position:absolute;left:10px;right:10px;bottom:0;height:3px;border-radius:3px 3px 0 0;background:var(--accent);}
.q-tab .tnum{font:600 10px var(--font-mono);color:var(--text-1);background:var(--bg-4);padding:1px 6px;border-radius:var(--r-pill);}
.q-tab.active .tnum{color:var(--accent);background:var(--accent-soft);}
.cat-wrap{padding:16px 20px;}
.q-att-head{display:flex;gap:8px;align-items:center;margin-bottom:14px;}
.q-date{display:flex;align-items:center;gap:4px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-2);padding:4px;}
.q-date__btn{width:26px;height:26px;display:grid;place-items:center;background:transparent;border:0;color:var(--text-1);border-radius:var(--r-1);cursor:pointer;}
.q-date__btn:hover{background:var(--bg-3);color:var(--text-0);}
.q-date__btn:disabled{opacity:.3;cursor:default;}
.q-date__main{padding:0 10px;display:flex;flex-direction:column;align-items:center;line-height:1.1;position:relative;}
.q-date__main .d{font:500 13px var(--font-mono);color:var(--text-0);letter-spacing:-.02em;white-space:nowrap;}
.q-date__picker{position:absolute;inset:0;opacity:0;cursor:pointer;border:0;width:100%;height:100%;}
.q-att-summary{display:grid;grid-template-columns:repeat(5,1fr);background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3);margin-bottom:14px;overflow:hidden;}
.q-att-summary .cell{padding:12px 16px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:3px;}
.q-att-summary .cell:last-child{border-right:0;}
.q-att-summary .cell .lbl{font-size:10px;color:var(--text-2);text-transform:uppercase;letter-spacing:.08em;font-weight:600;display:flex;align-items:center;gap:6px;}
.q-att-summary .cell .lbl .sw{width:8px;height:8px;border-radius:2px;flex-shrink:0;}
.q-att-summary .cell .v{font:500 22px var(--font-mono);letter-spacing:-.03em;color:var(--text-0);}
.q-att-summary .cell .pct{color:var(--text-2);font-size:12px;margin-left:3px;}
.q-att-summary .cell .sub{font-size:11px;color:var(--text-2);}
.q-att-summary .cell.featured{background:linear-gradient(180deg,rgba(249,115,22,.07),transparent);}
.q-att-summary .cell.featured .v{color:var(--accent);}
.q-roster{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3);overflow:hidden;}
.q-roster__head,.q-roster__row{display:grid;grid-template-columns:minmax(0,1fr) 160px 52px 80px 160px;align-items:center;gap:12px;padding:0 16px;height:44px;}
.q-roster__head{background:var(--bg-1);border-bottom:1px solid var(--line);font-size:10.5px;color:var(--text-2);text-transform:uppercase;letter-spacing:.08em;font-weight:600;height:36px;}
.q-roster__row{border-bottom:1px solid var(--line);transition:background .1s;}
.q-roster__row:last-child{border-bottom:0;}
.q-roster__row:hover{background:var(--bg-3);}
.q-roster__row .ath{display:flex;align-items:center;gap:10px;min-width:0;}
.q-roster__row .ath .av{width:28px;height:28px;border-radius:50%;background:var(--bg-4);display:grid;place-items:center;font:600 10px var(--font-ui);color:var(--text-1);flex:0 0 auto;}
.q-roster__row .ath .nm{font-weight:500;color:var(--text-0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.q-roster__row .ath .pos{font-size:11px;color:var(--text-2);margin-left:6px;flex-shrink:0;}
.q-roster__row .nmono{font:500 13px var(--font-mono);color:var(--text-0);letter-spacing:-.02em;}
.q-roster__row .nmono.muted{color:var(--text-2);}
.q-att-toggle{display:inline-flex;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-2);padding:2px;gap:1px;}
.q-att-toggle .b{height:24px;min-width:26px;padding:0 6px;border:0;background:transparent;font:500 11.5px var(--font-ui);color:var(--text-2);border-radius:var(--r-1);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;}
.q-att-toggle .b:hover{color:var(--text-0);}
.q-att-toggle .b:disabled{cursor:default;opacity:.5;}
.q-att-toggle .b.on.p{background:var(--ok-soft);color:var(--ok);box-shadow:inset 0 0 0 1px rgba(79,201,138,.3);}
.q-att-toggle .b.on.t{background:var(--warn-soft);color:var(--warn);box-shadow:inset 0 0 0 1px rgba(242,179,61,.3);}
.q-att-toggle .b.on.a{background:var(--bad-soft);color:var(--bad);box-shadow:inset 0 0 0 1px rgba(240,102,107,.3);}
.q-att-toggle .b.on.l{background:var(--info-soft);color:var(--info);box-shadow:inset 0 0 0 1px rgba(92,168,242,.3);}
.q-att-toggle .b.on.j{background:var(--bg-5);color:var(--text-0);box-shadow:inset 0 0 0 1px var(--line-strong);}
/* ── Cards & Stats (session / metrics) ─────────────────── */
.q-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-bottom:18px;background:var(--line);border:1px solid var(--line);border-radius:var(--r-3);overflow:hidden;}
.q-stat{background:var(--bg-1);border:0;border-radius:0;padding:15px 18px;position:relative;overflow:hidden;}
.q-stat__row{display:flex;align-items:center;justify-content:space-between;}
.q-stat__label{font-size:11px;color:var(--text-2);text-transform:uppercase;letter-spacing:.08em;font-weight:600;}
.q-stat__ic{width:24px;height:24px;border-radius:var(--r-1);background:var(--bg-3);color:var(--text-1);display:grid;place-items:center;}
.q-stat__val{font-family:var(--font-mono);font-size:28px;font-weight:500;letter-spacing:-.03em;color:var(--text-0);margin-top:6px;line-height:1;}
.q-stat__val .u{font-size:14px;color:var(--text-2);margin-left:4px;}
.q-stat__sub{margin-top:8px;display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--text-2);}
.q-stat__delta{font-family:var(--font-mono);font-size:11px;font-weight:500;padding:2px 6px;border-radius:var(--r-1);}
.q-stat__delta.up{background:var(--ok-soft);color:var(--ok);}
.q-stat__delta.down{background:var(--bad-soft);color:var(--bad);}
.q-stat__delta.flat{background:var(--bg-3);color:var(--text-1);}
.q-card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3);overflow:hidden;margin-bottom:12px;}
.q-card__h{padding:12px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:var(--bg-1);}
.q-card__h h3{font-size:13px;font-weight:600;color:var(--text-0);margin:0;letter-spacing:-.005em;}
.q-card__h .meta{font:500 11px var(--font-mono);color:var(--text-2);}
.q-card__b{padding:16px;}
.q-iconbtn{width:28px;height:28px;display:grid;place-items:center;background:transparent;border:1px solid transparent;color:var(--text-1);border-radius:var(--r-1);cursor:pointer;}
.q-iconbtn:hover{background:var(--bg-3);color:var(--text-0);}
/* ── Session ────────────────────────────────────────────── */
.q-sess-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
/* ── Sesión · Resumen: cards de estado (CD F3) ── */
.q-sess-ov-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-top:4px;}
.q-sov{display:flex;flex-direction:column;gap:13px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-5);cursor:pointer;text-align:left;width:100%;padding:16px;position:relative;overflow:hidden;color:inherit;font-family:inherit;transition:background .14s,border-color .14s,transform .14s;}
.q-sov:hover{background:var(--bg-3);border-color:var(--line-strong);transform:translateY(-1px);}
.q-sov:active{transform:translateY(1px);}
.q-sov__top{display:flex;align-items:flex-start;gap:11px;}
.q-sov__ic{width:38px;height:38px;border-radius:11px;flex:0 0 auto;display:grid;place-items:center;}
.q-sov__ic.i-orange{background:var(--accent-soft);color:var(--accent);}
.q-sov__ic.i-warn{background:var(--warn-soft);color:var(--warn);}
.q-sov__ic.i-info{background:var(--info-soft);color:var(--info);}
.q-sov__ic.i-good{background:var(--ok-soft);color:var(--ok);}
.q-sov__ic.i-bad{background:var(--bad-soft);color:var(--bad);}
.q-sov__t{flex:1;min-width:0;}
.q-sov__t .lab{font-family:var(--font-display);font-weight:600;font-size:14px;letter-spacing:-.01em;color:var(--text-0);}
.q-sov__t .sub{font-size:11.5px;color:var(--text-2);margin-top:1px;}
.q-sov__go{flex:0 0 auto;color:var(--text-2);opacity:.6;transition:opacity .14s,transform .14s;margin-top:2px;}
.q-sov:hover .q-sov__go{opacity:1;transform:translateX(2px);}
.q-sov__big{display:flex;align-items:baseline;gap:8px;min-width:0;}
.q-sov__big .n{font-family:var(--font-mono);font-weight:600;font-size:34px;letter-spacing:-.03em;line-height:1;color:var(--text-0);font-feature-settings:"tnum";}
.q-sov__big .of{font-family:var(--font-mono);font-size:12.5px;color:var(--text-2);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.q-sov__footwrap{margin-top:auto;}
.q-sov__foot{display:flex;align-items:center;justify-content:space-between;gap:8px;font-family:var(--font-mono);font-size:10.5px;color:var(--text-2);margin-bottom:8px;}
.q-sov__foot .good{color:var(--ok);}
.q-sov__foot .warn{color:var(--warn);}
.q-sov__foot .bad{color:var(--bad);}
.q-sov__prog{height:5px;border-radius:var(--r-pill);background:var(--bg-4);overflow:hidden;}
.q-sov__prog span{display:block;height:100%;border-radius:var(--r-pill);transition:width .4s cubic-bezier(.4,0,.2,1);}
@media(max-width:960px){.q-sess-ov-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:560px){.q-sess-ov-grid{grid-template-columns:1fr;}}
.q-well-alert-strip{display:flex;align-items:center;gap:10px;width:100%;margin-top:10px;padding:9px 14px;border-radius:var(--r-3);background:var(--bg-2);border:1px solid rgba(239,68,68,.25);cursor:pointer;text-align:left;transition:border-color .15s,background .15s;}
.q-well-alert-strip:hover{background:var(--bg-3);}
.q-well-alert-strip__text{flex:1;font-size:12px;color:var(--text-1);}
/* ── Wellness · alertas jerarquizadas (CD F3) ── */
.q-well-alerts{background:linear-gradient(100deg,var(--warn-soft),transparent 65%),var(--bg-1);border:1px solid rgba(242,179,61,.3);border-radius:var(--r-4);padding:14px 15px;margin-bottom:14px;}
.q-well-alerts.red{background:linear-gradient(100deg,var(--bad-soft),transparent 65%),var(--bg-1);border-color:rgba(240,102,107,.3);}
.q-well-alerts .ah{display:flex;align-items:center;gap:9px;margin-bottom:11px;}
.q-well-alerts .ah .ic{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--warn-soft);color:var(--warn);flex-shrink:0;}
.q-well-alerts.red .ah .ic{background:var(--bad-soft);color:var(--bad);}
.q-well-alerts .ah .t{font-family:var(--font-display);font-weight:700;font-size:14px;letter-spacing:-.01em;color:var(--text-0);}
.q-well-alerts .ah .n{font:500 11px var(--font-mono);color:var(--text-2);}
.q-well-alert-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:9px;}
.wa{display:flex;align-items:center;gap:10px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3);padding:9px 12px;}
.wa .av{width:28px;height:28px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;background:var(--bg-4);font:700 10px var(--font-display);color:var(--text-1);}
.wa .in{flex:1;min-width:0;}
.wa .in .n{font-size:12.5px;font-weight:500;color:var(--text-0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.wa .flags{display:flex;gap:4px;margin-top:3px;flex-wrap:wrap;}
.wa .fl{font:500 9.5px var(--font-mono);padding:1px 6px;border-radius:5px;}
.wa .fl.bad{background:var(--bad-soft);color:var(--bad);}
.wa .fl.warn{background:var(--warn-soft);color:var(--warn);}
.wa .score{font:600 17px var(--font-mono);letter-spacing:-.03em;flex-shrink:0;}
.wa .score .u{font-size:10px;color:var(--text-2);font-weight:400;}
.wa .score.bad{color:var(--bad);}
.wa .score.warn{color:var(--warn);}
.q-period-note{display:inline-flex;align-items:center;gap:8px;margin-top:11px;font-size:11.5px;color:var(--c-pink);background:rgba(238,111,168,.12);border:1px solid rgba(238,111,168,.28);padding:6px 12px;border-radius:var(--r-pill);line-height:1.4;}
.q-period-note .d{width:7px;height:7px;border-radius:50%;background:var(--c-pink);flex-shrink:0;}
.q-period-note b{color:var(--c-pink);}
.q-zone-chip{font-size:10px;padding:2px 8px;border-radius:10px;background:var(--accent-soft);color:var(--accent);font-weight:500;}
.q-dur-row{display:flex;align-items:center;gap:10px;padding:14px 16px;background:var(--bg-1);border-top:1px solid var(--line);}
.q-dur-row label{font-size:12px;color:var(--text-2);font-weight:500;}
.q-dur-input{width:72px;padding:6px 10px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-2);color:var(--text-0);font:500 14px var(--font-mono);text-align:center;outline:none;}
.q-dur-input:focus{border-color:var(--accent);}
.q-pdur-input{width:50px;padding:3px 6px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-1);color:var(--text-1);font:500 12px var(--font-mono);text-align:center;outline:none;transition:border-color .15s,color .15s;}
.q-pdur-input:focus{border-color:var(--accent);}
.q-pdur-input:disabled{opacity:.45;cursor:default;}
/* ── Team card KPIs ────────────────────────────────────────── */
.q-ckpi{display:flex;flex-direction:column;gap:3px;padding-right:14px;}
.q-ckpi__lbl{font-size:9px;font-weight:700;color:var(--text-2);text-transform:uppercase;letter-spacing:.09em;white-space:nowrap;}
.q-ckpi__val{font-size:20px;font-weight:600;font-family:var(--font-mono);letter-spacing:-.02em;color:var(--text-0);line-height:1;}
/* ── Home alerts strip ─────────────────────────────────────── */
.q-alerts-strip{display:flex;align-items:center;gap:10px;margin-bottom:16px;min-width:0;}
.q-alerts-strip__hd{font-size:11px;font-weight:700;color:var(--text-2);white-space:nowrap;flex-shrink:0;}
.q-alerts-strip__scroll{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;padding-bottom:2px;min-width:0;flex:1;}
.q-alerts-strip__scroll::-webkit-scrollbar{display:none;}
.q-alert-chip{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:20px;font-size:12px;font-weight:500;white-space:nowrap;flex-shrink:0;cursor:default;}
.q-alert-chip--danger{background:#dc262614;border:1px solid #dc262645;color:#fca5a5;}
.q-alert-chip--warn{background:#d9770614;border:1px solid #d9770645;color:#fdba74;}
/* ── Reports player dashboard ──────────────────────────────── */
.q-rpd{display:flex;gap:0;min-height:420px;border:1px solid var(--line);border-radius:var(--r-4);overflow:hidden;background:var(--bg-2);}
.q-rpd-list{width:180px;flex-shrink:0;overflow-y:auto;border-right:1px solid var(--line);background:var(--bg-1);}
.q-rpd-player{display:flex;align-items:center;gap:8px;width:100%;padding:9px 12px;background:transparent;border:0;border-bottom:1px solid var(--line);cursor:pointer;color:var(--text-0);text-align:left;transition:background .12s;}
.q-rpd-player:hover{background:var(--bg-2);}
.q-rpd-player--sel{background:var(--bg-3)!important;}
.q-rpd-dash{flex:1;min-width:0;overflow-y:auto;border:0;border-radius:0;margin:0;}
@media(max-width:899px){.q-rpd{flex-direction:column;min-height:0;}.q-rpd-list{width:100%;height:auto;max-height:180px;border-right:0;border-bottom:1px solid var(--line);}.q-rpd-dash{min-height:320px;}}
.q-rpe-grid{display:flex;align-items:center;gap:4px;flex-wrap:wrap;}
.q-rpe-btn{width:38px;height:38px;border:1px solid var(--line);border-radius:var(--r-2);background:var(--bg-3);color:var(--text-2);font:600 14px var(--font-mono);cursor:pointer;display:grid;place-items:center;transition:background .12s,color .12s,border-color .12s;}
.q-rpe-btn:hover{background:var(--bg-4);color:var(--text-0);}
.q-rpe-btn.sel{border-color:currentColor;}
.q-ind-row{display:flex;align-items:center;gap:14px;padding:10px 16px;border-bottom:1px solid var(--line);transition:background .1s;}
.q-ind-row:hover{background:var(--bg-2);}
.q-ind-row:last-child{border-bottom:0;}
.q-ind-row.absent{opacity:.4;pointer-events:none;}
.q-ind-ath{display:flex;align-items:center;gap:10px;flex:1;min-width:0;}
.q-ind-ath .av{width:28px;height:28px;border-radius:50%;background:var(--bg-4);display:grid;place-items:center;font:700 10px var(--font-display);color:var(--text-1);flex-shrink:0;}
.q-ind-ath .nm{font-weight:500;font-size:13.5px;color:var(--text-0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* Chip "entrenó con otra categoría" */
.q-ext-add{display:inline-flex;align-items:center;gap:3px;height:20px;padding:0 8px;border:1px dashed var(--line);background:transparent;border-radius:10px;font:500 10.5px var(--font-ui);color:var(--text-3);cursor:pointer;white-space:nowrap;flex-shrink:0;}
.q-ext-add:hover{color:var(--accent);border-color:var(--accent);}
.q-ext-chip{display:inline-flex;align-items:center;gap:3px;height:20px;padding:0 3px 0 8px;border-radius:10px;background:var(--accent-soft);font:600 10.5px var(--font-ui);color:var(--accent);flex-shrink:0;}
.q-ext-chip .q-ext-ic{font-size:11px;color:var(--accent);line-height:1;}
.q-pext-input{width:78px;height:16px;border:0;background:transparent;font:600 10.5px var(--font-ui);color:var(--accent);padding:0;}
.q-pext-input:focus{outline:none;}
.q-pext-input::placeholder{color:var(--accent);opacity:.5;}
.q-ext-x{border:0;background:transparent;color:var(--accent);font-size:14px;line-height:1;cursor:pointer;padding:0 3px;opacity:.6;}
.q-ext-x:hover{opacity:1;}
.q-ind-rpe{display:flex;gap:4px;}
.q-ind-rpe .b{width:30px;height:30px;border:1px solid var(--line-strong);border-radius:var(--r-3);background:var(--bg-3);color:var(--text-2);font:700 12.5px var(--font-display);cursor:pointer;display:grid;place-items:center;transition:background .1s,color .1s;}
.q-ind-rpe .b:hover{background:var(--bg-4);color:var(--text-0);}
.q-ind-rpe .b.sel{border-color:currentColor;}
/* ── Sesión · Carga RPE: setup + totales (CD F3) ── */
.q-rpe-setup{display:flex;align-items:flex-end;gap:22px;flex-wrap:wrap;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-4);padding:13px 16px;margin-bottom:14px;}
.q-rpe-setup .fld{display:flex;flex-direction:column;gap:7px;}
.q-rpe-setup .fld .lab{font:500 9.5px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);}
.q-rpe-setup__meta{margin-left:auto;font:500 11px var(--font-mono);color:var(--text-2);align-self:flex-end;padding-bottom:7px;white-space:nowrap;}
/* ── Constructor de sesiones del día (N por día) ─────────────── */
.q-units{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-4);padding:12px 14px;margin-bottom:14px;}
.q-units__h{display:flex;align-items:baseline;gap:10px;margin-bottom:10px;}
.q-units__t{font:500 9.5px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);}
.q-units__meta{margin-left:auto;font:500 11px var(--font-mono);color:var(--text-2);}
.q-units__list{display:flex;flex-direction:column;gap:7px;}
.q-units__empty{font-size:12.5px;color:var(--text-2);padding:10px 2px;}
.q-unit-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.q-unit-n{width:20px;height:20px;flex-shrink:0;border-radius:6px;background:var(--bg-3);color:var(--text-2);display:grid;place-items:center;font:600 10px var(--font-mono);}
.q-unit-row input,.q-unit-row select{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-2);color:var(--text-0);font-size:12.5px;padding:5px 8px;font-family:var(--font);}
.q-unit-row input:focus,.q-unit-row select:focus{outline:none;border-color:var(--accent);}
.q-unit-time{width:96px;flex-shrink:0;font-family:var(--font-mono)!important;}
.q-unit-name{flex:1;min-width:120px;}
.q-unit-type{flex-shrink:0;cursor:pointer;}
.q-unit-dur-wrap{display:inline-flex;align-items:center;gap:5px;flex-shrink:0;}
.q-unit-dur{width:58px;text-align:center;font-family:var(--font-mono)!important;}
.q-unit-dur-wrap .u{font-size:11px;color:var(--text-2);}
.q-unit-del{width:26px;height:26px;flex-shrink:0;border:none;background:transparent;color:var(--text-3);border-radius:6px;display:grid;place-items:center;cursor:pointer;transition:background .12s,color .12s;}
.q-unit-del:hover{background:var(--bad-soft);color:var(--bad);}
.q-units__add{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:6px 12px;border-radius:var(--r-2);border:1px dashed var(--line);background:transparent;color:var(--text-2);font-size:12.5px;font-weight:500;cursor:pointer;font-family:var(--font);transition:border-color .12s,color .12s;}
.q-units__add:hover{border-color:var(--accent);color:var(--accent);}
/* ── Fila compacta de RPE: un chip por sesión ────────────────── */
.q-ind-row--chips{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.q-ind-chips{display:flex;align-items:center;gap:6px;flex-wrap:wrap;flex:1;min-width:0;}
.q-ind-total{font:500 11px var(--font-mono);color:var(--text-2);white-space:nowrap;flex-shrink:0;text-align:right;min-width:132px;}
.q-ind-total b{color:var(--accent);font-weight:700;}
.q-ind-total.is-pend{color:var(--text-3);font-style:italic;}
.q-uchip{display:inline-flex;align-items:center;gap:6px;padding:4px 7px 4px 9px;border-radius:9px;border:1px solid var(--line);background:var(--bg-1);font-size:11.5px;cursor:pointer;font-family:var(--font);transition:border-color .12s,background .12s;line-height:1;}
.q-uchip:hover{background:var(--bg-3);}
.q-uchip .l{color:var(--text-1);font-weight:500;white-space:nowrap;}
.q-uchip .m{font:400 10.5px var(--font-mono);color:var(--text-3);}
.q-uchip .n{min-width:22px;height:22px;padding:0 5px;border-radius:6px;display:inline-grid;place-items:center;font:700 12.5px var(--font-mono);}
.q-uchip .v{font:600 11px var(--font-mono);color:var(--text-3);}
.q-uchip.is-empty{border-style:dashed;}
.q-uchip.is-empty .v{color:var(--text-3);}
.q-uchip.is-out{border-style:dashed;opacity:.6;}
.q-uchip.is-out .v{color:var(--bad);}
.q-out-btn{flex-shrink:0;display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--text-3);font-size:10.5px;font-weight:500;cursor:pointer;font-family:var(--font);white-space:nowrap;transition:border-color .12s,color .12s,background .12s;}
.q-out-btn:hover{border-color:var(--bad);color:var(--bad);}
.q-out-btn.on{background:var(--bad-soft);border-color:transparent;color:var(--bad);}
/* ── Editor flotante de RPE (desktop) ────────────────────────── */
.q-pop__ov{position:fixed;inset:0;z-index:600;background:transparent;}
.q-pop{position:fixed;width:286px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3);box-shadow:0 12px 32px rgba(0,0,0,.5);padding:12px;animation:qpopin .12s ease-out;}
@keyframes qpopin{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:none;}}
.q-pop__h{display:flex;align-items:flex-start;gap:8px;margin-bottom:10px;}
.q-pop__t{display:flex;flex-direction:column;gap:2px;min-width:0;}
.q-pop__t b{font-size:13px;font-weight:600;color:var(--text-0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.q-pop__t span{font:400 10.5px var(--font-mono);color:var(--text-2);}
.q-pop__x{margin-left:auto;width:22px;height:22px;flex-shrink:0;border:none;background:transparent;color:var(--text-3);border-radius:5px;display:grid;place-items:center;cursor:pointer;}
.q-pop__x:hover{background:var(--bg-3);color:var(--text-0);}
.q-pop__grid{display:grid;grid-template-columns:repeat(6,1fr);gap:5px;}
.q-pop__b{height:36px;border-radius:7px;border:1px solid var(--line);background:var(--bg-1);color:var(--text-1);font:700 14px var(--font-mono);cursor:pointer;transition:border-color .1s,background .1s;}
.q-pop__b:hover{border-color:var(--text-3);background:var(--bg-3);}
.q-pop__lbl{text-align:center;font-size:12px;font-weight:500;margin-top:9px;min-height:16px;}
.q-pop__lbl--empty{color:var(--text-3);font-weight:400;}
.q-pop__dur{display:flex;align-items:center;gap:7px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line);}
.q-pop__dur .k{font-size:11px;color:var(--text-2);}
.q-pop__dur input{flex:1;min-width:0;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-2);color:var(--text-0);font:500 13px var(--font-mono);padding:5px 8px;text-align:center;}
.q-pop__dur input:focus{outline:none;border-color:var(--accent);}
.q-pop__outmsg{text-align:center;font-size:12.5px;color:var(--text-2);padding:14px 0;}
/* Chip de config del día en Carga RPE: solo lectura, lleva al overview a cambiarla */
.q-sess-cfg-chip{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border-radius:var(--r-2);background:var(--bg-2);border:1px solid var(--line);font-size:12.5px;font-weight:500;color:var(--text-1);cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s;}
.q-sess-cfg-chip:hover{background:var(--bg-3);border-color:var(--text-3);}
.q-sess-cfg-chip .dot{width:7px;height:7px;border-radius:50%;background:var(--text-3);flex-shrink:0;}
.q-sess-cfg-chip .dot.st-practica{background:var(--cal-train)}
.q-sess-cfg-chip .dot.st-partido{background:var(--cal-match)}
.q-sess-cfg-chip .dot.st-recuperacion{background:var(--cal-recov)}
.q-sess-cfg-chip .dot.st-libre{background:var(--cal-libre)}
.q-pillseg{display:inline-flex;background:var(--bg-2);border:1px solid var(--line-strong);border-radius:var(--r-3);padding:3px;gap:2px;flex-wrap:wrap;}
.q-pillseg__o{font:500 12px var(--font-ui);color:var(--text-1);padding:6px 11px;border-radius:var(--r-2);cursor:pointer;background:transparent;border:0;white-space:nowrap;transition:background .1s,color .1s;}
.q-pillseg__o:hover{color:var(--text-0);}
.q-pillseg__o.on{background:var(--accent-soft);color:var(--accent);font-weight:600;box-shadow:inset 0 0 0 1px var(--accent-line);}
.q-pillseg__o:disabled{cursor:default;}
.q-rpe-totals{display:grid;grid-template-columns:repeat(3,1fr);background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-4);overflow:hidden;margin-bottom:14px;}
.q-rpe-totals .cell{padding:13px 18px;position:relative;display:flex;flex-direction:column;gap:3px;}
.q-rpe-totals .cell+.cell::before{content:"";position:absolute;left:0;top:13px;bottom:13px;width:1px;background:var(--line-strong);}
.q-rpe-totals .k{font:500 9.5px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);}
.q-rpe-totals .v{font:600 26px var(--font-mono);letter-spacing:-.03em;color:var(--text-0);font-feature-settings:"tnum";line-height:1.1;}
.q-rpe-totals .v .u{font-size:13px;color:var(--text-2);font-weight:400;}
.q-rpe-totals .sub{font-size:11px;color:var(--text-2);}
@media(max-width:640px){.q-rpe-totals{grid-template-columns:1fr;}.q-rpe-totals .cell+.cell::before{left:14px;right:14px;top:0;bottom:auto;width:auto;height:1px;}}
.q-well-row{display:flex;align-items:center;gap:14px;padding:10px 16px;border-bottom:1px solid var(--line);cursor:pointer;transition:background .1s;}
.q-well-row:last-child{border-bottom:0;}
.q-well-row:hover{background:var(--bg-3);}
.q-well-head{display:flex;align-items:center;gap:10px;flex:1;min-width:0;}
.q-well-minis{display:flex;gap:13px;flex-shrink:0;}
.q-well-minis .m{display:flex;flex-direction:column;align-items:center;gap:1px;font:400 9.5px var(--font-mono);color:var(--text-2);}
.q-well-minis .m b{font:600 12.5px var(--font-mono);letter-spacing:-.02em;}
.q-well-score{font:600 16px var(--font-mono);letter-spacing:-.03em;}
@media(max-width:820px){.q-well-minis{display:none;}}
.q-well-expand{padding:12px 16px;border-top:1px solid var(--line);background:var(--bg-1);}
.q-well-item .wkey{font-size:12px;color:var(--text-2);display:flex;align-items:center;gap:5px;}
/* ── MOBILE RESPONSIVE ──────────────────────────────────── */
#mob-tabbar{display:none}
@media(max-width:899px){
  #nx-sidebar,#nx-stats-bar{display:none!important}
  #app-screen{max-width:100%;margin-left:0}
  #app-body{padding-bottom:80px}
  .tabs{top:56px}
  #mob-tabbar{
    display:flex!important;position:fixed;left:0;right:0;bottom:0;
    background:var(--bg-1);border-top:1px solid var(--line);
    padding:6px 4px;padding-bottom:calc(6px + env(safe-area-inset-bottom,0px));
    justify-content:space-around;z-index:150;
  }
  .mob-tab{
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:3px;padding:4px 8px;border-radius:8px;min-width:52px;min-height:44px;
    background:transparent;border:0;cursor:pointer;color:var(--text-2);
    font-family:var(--font-ui);-webkit-tap-highlight-color:transparent;
  }
  .mob-tab svg{flex-shrink:0}
  .mob-tab span{font-size:10px;font-weight:600;letter-spacing:.02em}
  .mob-tab.active{color:var(--accent);background:var(--accent-soft)}
  .header{padding:8px 12px;height:50px;gap:8px}
  .logout-btn{display:none}
  .icon-btn{width:36px;height:36px;font-size:14px}
  .wrap{padding:10px 12px;display:block}
  .wrap>.team-card,.wrap>.cat-card{margin-bottom:8px}
  .cat-wrap{padding:12px 14px}
  .q-section-h{gap:8px}
  .q-section-h__r{flex-shrink:0}
  .q-stats{grid-template-columns:1fr 1fr;gap:1px}
  .q-stat__val{font-size:22px}
  .q-att-summary{grid-template-columns:repeat(3,1fr)}
  .q-att-summary .cell:nth-child(4),.q-att-summary .cell:nth-child(5){border-top:1px solid var(--line)}
  .q-roster-wrap{position:relative}
  .q-roster-wrap::after{content:'';position:absolute;top:0;right:0;bottom:0;width:44px;background:linear-gradient(to right,transparent,var(--bg-0));pointer-events:none;border-radius:0 var(--r-3) var(--r-3) 0}
  .q-roster{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .q-roster__head,.q-roster__row{grid-template-columns:minmax(110px,1fr) 160px 46px 72px 90px;min-width:520px}
  .q-roster__row>span:first-child,.q-roster__head>span:first-child{position:sticky;left:0;z-index:2}
  .q-roster__row>span:first-child{background:var(--bg-2)}
  .q-roster__head>span:first-child{background:var(--bg-1)}
  .q-sess-grid{grid-template-columns:1fr}
  .q-rpe-grid{flex-wrap:wrap}
  .q-att-head{flex-direction:column;align-items:center;gap:8px}
  .q-att-head .q-date{width:100%;justify-content:center}
  .q-att-head .q-att-toggle{width:100%;margin-left:0!important}
  .q-att-head .q-att-toggle .b{flex:1;white-space:nowrap}
  .q-btn{height:38px;min-height:38px}
  .q-rpe-btn{width:36px;height:36px}
  .q-ind-rpe .b{width:30px;height:30px}
  .q-att-toggle .b{height:30px;min-width:28px}
  .status-btn{width:44px;height:44px}
  .q-iconbtn{width:36px;height:36px}
  .chart-card{padding:12px 10px 8px}
  .q-search-overlay{padding-top:0;align-items:flex-end}
  .q-search-modal{width:100%;max-width:100%;border-radius:16px 16px 0 0;max-height:88vh}
  .q-tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .q-tab{padding:0 10px;font-size:12px;gap:5px;white-space:nowrap}
  .sub-tabs{flex-wrap:nowrap;overflow-x:auto}
  /* Plan card — actions en segunda línea */
  .q-plan-card__head{flex-wrap:wrap;row-gap:8px;padding:10px 12px}
  .q-plan-actions{flex-basis:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px}
}
/* ══════════════════════════════════════════════════════════════ */
/* ██  MÉDICO / LESIONES  ██                                     */
/* ══════════════════════════════════════════════════════════════ */
.q-medical{padding:16px 0}
.q-medical__topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:16px}
.q-medical__legend{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--text-2)}
.bm-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.q-medical__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* Body map layout */
.q-bodymap-wrap{display:grid;grid-template-columns:1fr 320px;gap:16px;align-items:start}
.q-bodymap-views{display:flex;gap:12px}
.q-bodymap-panel{flex:1;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3);padding:12px 8px 8px;display:flex;flex-direction:column;align-items:center}
.q-bodymap-panel__label{font-size:10px;font-weight:600;letter-spacing:.1em;color:var(--text-3);text-transform:uppercase;margin-bottom:8px;align-self:flex-start}
/* Contenedor para la librería body-muscles */
.bm-chart{width:100%;max-width:190px;margin:0 auto}
.bm-chart .body-chart-container{height:auto!important}
.bm-chart .body-chart-svg{cursor:pointer}

/* Injury list panel */
.q-bodymap-list{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3);overflow:hidden}
.q-bodymap-list__hdr{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--line)}
.q-badge--neutral{background:var(--bg-4);color:var(--text-1);border-radius:var(--r-pill);padding:1px 8px;font-size:11px;font-weight:600}

/* Injury cards */
.q-inj-card{padding:10px 14px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:4px}
.q-inj-card:last-child{border-bottom:none}
.q-inj-card__row1{display:flex;align-items:center;justify-content:space-between;gap:8px}
.q-inj-card__player{font-size:12px;font-weight:600;color:var(--text-0)}
.q-sev-badge{font-size:10px;font-weight:700;padding:2px 7px;border-radius:var(--r-pill);flex-shrink:0}
.q-inj-card__region{font-size:12px;color:var(--text-1);font-weight:500}
.q-inj-card__meta{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-2);flex-wrap:wrap}
.q-inj-status--activa{color:var(--bad)}
.q-inj-status--en_rehab{color:var(--warn)}
.q-inj-status--recuperada{color:var(--ok)}
.q-inj-card__notes{font-size:11px;color:var(--text-2);font-style:italic;line-height:1.4}
.q-inj-card__foot{display:flex;align-items:center;justify-content:space-between;margin-top:2px}
.q-inj-card__date{font-size:11px;color:var(--text-3)}

/* Modal */
.q-modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);z-index:500;display:flex;align-items:center;justify-content:center;padding:20px}
.q-modal{background:var(--bg-2);border:1px solid var(--line-strong);border-radius:var(--r-4);width:100%;max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-pop)}
.q-modal__header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line)}
.q-modal__header h3{font-size:15px;font-weight:600;color:var(--text-0)}
.q-modal__close{background:none;border:none;color:var(--text-2);cursor:pointer;font-size:16px;padding:4px;border-radius:var(--r-1)}
.q-modal__close:hover{color:var(--text-0)}
.q-modal__body{padding:16px 20px;display:flex;flex-direction:column;gap:12px}
.q-modal__footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:12px 20px;border-top:1px solid var(--line)}

@media(max-width:899px){
  .q-bodymap-wrap{grid-template-columns:1fr}
  .q-bodymap-views{justify-content:center}
  .q-bodymap-panel{max-width:160px}
  .bm-svg{max-width:120px}
}

/* ── Programs & Plan ────────────────────────────────────────── */
.q-tree__section-label{padding:8px 12px 4px;font-size:10px;font-weight:700;color:var(--text-2);letter-spacing:.8px;text-transform:uppercase;}
.q-prog-card{cursor:pointer;transition:border-color .15s;}
.q-prog-card:hover{border-color:var(--accent);}
.q-day-chip{display:inline-flex;align-items:center;padding:3px 10px;border-radius:var(--r-pill);background:var(--bg-3);border:1px solid var(--line);font-size:11px;font-weight:500;color:var(--text-1);cursor:pointer;transition:background .12s,border-color .12s;}
.q-day-chip:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);}
.q-empty-state{text-align:center;padding:40px 16px;color:var(--text-2);}

/* Plan cards in session */
.q-plan-card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-4);overflow:hidden;margin-bottom:12px;}
.q-plan-card__head{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--bg-1);}
/* Badge DÍA-N del plan (CD .plan-head .badge) */
.q-plan-day{width:44px;height:44px;border-radius:12px;flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(150deg,#F97316,#B4460C);color:#1A0D02;line-height:1;}
.q-plan-day small{font:600 7.5px var(--font-ui);letter-spacing:.06em;opacity:.8;}
.q-plan-day b{font:700 18px var(--font-display);margin-top:1px;}
.q-plan-day--ico{color:#1A0D02;}
/* Título del plan: clickeable para renombrar (solo esta sesión, no el programa) */
.q-plan-title.is-editable{border-radius:6px;margin:-2px -6px;padding:2px 6px;transition:background .12s;}
.q-plan-title.is-editable:hover{background:var(--bg-3);}
.q-plan-title.is-editable:hover .q-plan-title__pen{opacity:1 !important;}
.q-plan-collapse-btn{width:28px;height:28px;border-radius:6px;background:transparent;border:none;color:var(--text-2);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .12s,color .12s;}
.q-plan-collapse-btn:hover{background:var(--bg-3);color:var(--text-0);}
.q-plan-actions{display:flex;align-items:center;gap:6px;flex-shrink:0;}
.q-plan-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:var(--r-2);font-size:12px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:background .13s,border-color .13s,color .13s;white-space:nowrap;line-height:1;font-family:var(--font);}
.q-plan-btn--ghost{background:transparent;border-color:var(--line-strong);color:var(--text-2);}
.q-plan-btn--ghost:hover{background:var(--bg-3);border-color:var(--text-2);color:var(--text-0);}
.q-plan-btn--assign{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent);}
.q-plan-btn--assign:hover{background:var(--accent);border-color:var(--accent);color:#1A0D02;}
.q-plan-btn--danger{background:transparent;border-color:var(--line-strong);color:var(--text-2);}
.q-plan-btn--danger:hover{background:var(--bad-soft);border-color:var(--bad);color:var(--bad);}

/* Block cards */
.q-block-card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-2);margin-bottom:8px;overflow:hidden;position:relative;}
.q-block-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--bcol,var(--accent));z-index:1;}
.q-block-card__head{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--bg-1);border-bottom:1px solid var(--line);}
.q-plan-blocks{padding:12px 16px;display:flex;flex-direction:column;gap:8px;}
.q-add-block-btn{width:100%;margin-top:4px;font-size:13px;border-style:dashed;color:var(--text-2);}
.q-add-block-btn:hover{color:var(--text-0);border-color:var(--accent);}

/* Block type tag */
.q-block-type-tag{font-family:var(--font-display);font-size:10.5px;font-weight:700;padding:4px 10px;border-radius:var(--r-2);letter-spacing:.03em;text-transform:uppercase;flex-shrink:0;}

/* Plan table */
.q-plan-table{width:100%;border-collapse:collapse;font-size:13px;}
.q-plan-table th{padding:5px 8px;text-align:center;font:500 9.5px var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--text-2);border-bottom:1px solid var(--line);}
.q-plan-table td{padding:0;}
.q-ex-name{padding:8px 10px;font-weight:500;color:var(--text-0);min-width:170px;max-width:240px;}
.q-ex-wrap{display:flex;align-items:center;gap:10px;min-width:0;}
.q-ex-nm{font-size:13.5px;font-weight:500;color:var(--text-0);min-width:0;}
/* Thumb de video (CD .thumb): caja con play; neutra si no hay video */
.q-ex-thumb{width:46px;height:34px;border-radius:8px;flex:0 0 auto;display:grid;place-items:center;background:linear-gradient(135deg,#2a2521,#17140f);border:1px solid var(--line-strong);cursor:pointer;padding:0;transition:border-color .12s;}
.q-ex-thumb:hover{border-color:var(--accent-line);}
.q-ex-thumb .play{width:20px;height:20px;border-radius:50%;background:rgba(246,241,234,.92);display:grid;place-items:center;color:#141210;}
.q-ex-thumb .play svg{margin-left:1px;}
.q-ex-thumb--none{cursor:default;color:var(--text-3);background:var(--bg-2);}
.q-ex-thumb--none:hover{border-color:var(--line-strong);}
.q-set-cell{padding:5px 6px;text-align:center;color:var(--text-0);border-left:1px solid var(--line);font:500 13px var(--font-mono);letter-spacing:-.01em;font-feature-settings:"tnum";min-width:86px;}
.q-set-cell.clickable{cursor:pointer;}
/* Chip-instrumento de serie (CD .serie): valor grande + detalle chico, tinte del bloque */
.q-set-chip{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:68px;padding:6px 9px;border-radius:var(--r-3);background:color-mix(in srgb,var(--bcol,var(--accent)) 9%,var(--bg-3));border:1px solid color-mix(in srgb,var(--bcol,var(--accent)) 38%,transparent);}
.q-set-chip b{font:600 15px var(--font-mono);letter-spacing:-.02em;color:var(--text-0);line-height:1.15;font-feature-settings:"tnum";}
.q-set-chip i{font:400 9px var(--font-mono);font-style:normal;color:var(--text-2);white-space:nowrap;max-width:110px;overflow:hidden;text-overflow:ellipsis;}
.q-set-chip.empty{background:var(--bg-2);border:1px dashed var(--line-strong);opacity:.45;}
.q-set-cell.clickable:hover .q-set-chip{border-color:var(--bcol,var(--accent));background:color-mix(in srgb,var(--bcol,var(--accent)) 16%,var(--bg-3));}
@supports not (background: color-mix(in srgb, red 10%, blue)){
  .q-set-chip{background:var(--bg-3);border:1px solid var(--line-strong);}
  .q-set-cell.clickable:hover .q-set-chip{border-color:var(--bcol,var(--accent));}
}
.q-set-cell.editing{background:var(--bg-3);padding:4px 6px;min-width:160px;}
.q-set-input{width:52px !important;padding:3px 6px !important;font-size:12px !important;height:28px;}
.q-plan-table tr:not(:last-child) td{border-bottom:1px solid var(--line);}

/* Icon button (small action button) */
.q-icon-btn{background:transparent;border:none;cursor:pointer;padding:4px 6px;border-radius:var(--r-1);color:var(--text-2);font-size:14px;line-height:1;transition:color .12s,background .12s;}
.q-icon-btn:hover{background:var(--bg-3);color:var(--text-0);}

/* Set edit form — expanded cell */
.q-set-cell--expanded{vertical-align:top;padding:6px 8px !important;}
.q-set-form{display:flex;flex-direction:column;gap:4px;min-width:160px;}
.q-set-type-row{display:flex;gap:4px;}
.q-set-type-btn{flex:1;padding:3px 6px;border-radius:var(--r-1);font-size:11px;font-weight:600;border:1px solid var(--line);background:var(--bg-3);color:var(--text-2);cursor:pointer;transition:background .1s;}
.q-set-type-btn.active{background:var(--accent);color:#1A0D02;border-color:var(--accent);}
.q-set-inputs{display:grid;grid-template-columns:1fr 1fr;gap:4px;}
.q-set-inputs input{width:100% !important;}

/* My exercises library row */
.q-ex-lib-row{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;border-top:1px solid var(--line);}
.q-ex-lib-row:first-child{border-top:none;}

/* Set action pills — visible add/remove per exercise */
.q-set-actions{white-space:nowrap;vertical-align:middle;}
.q-set-pill{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:7px;cursor:pointer;border:1px solid;transition:background .12s,opacity .12s;margin-right:3px;padding:0;}
.q-set-pill--add{background:var(--bg-3);border-color:var(--line-strong);color:var(--ok);}
.q-set-pill--add:hover{background:var(--ok);color:#141210;border-color:var(--ok);}
.q-set-pill--rem{background:var(--bg-3);border-color:var(--line-strong);color:var(--text-2);}
.q-set-pill--rem:hover{background:var(--bg-4);color:var(--bad);}
/* Agregar ejercicio — pill dashed (CD .add-ex) */
.q-add-ex{display:inline-flex;align-items:center;gap:7px;font:600 12.5px var(--font-ui);color:var(--text-1);cursor:pointer;padding:7px 12px;border-radius:var(--r-3);border:1px dashed var(--line-strong);background:transparent;transition:background .12s,color .12s;}
.q-add-ex:hover{background:var(--bg-2);color:var(--text-0);}

/* Exercise picker modal */
.q-modal__head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line);}
.q-ex-pick-item{padding:8px 12px;border-radius:var(--r-1);cursor:pointer;font-size:13px;color:var(--text-1);transition:background .1s;}
.q-ex-pick-item:hover{background:var(--bg-3);color:var(--text-0);}

@media(max-width:899px){
  /* Exercise table → card layout */
  .q-plan-table,.q-plan-table tbody{display:block}
  .q-plan-table thead{display:none}
  .q-plan-table tr{display:block;padding:8px 10px;border-bottom:1px solid var(--line)}
  .q-plan-table tr:last-child{border-bottom:none}
  .q-plan-table tr:not(:last-child) td{border-bottom:none}
  .q-ex-name{display:block;min-width:0;max-width:100%;white-space:normal;padding:0 0 5px 0;border:none;font-size:13px}
  .q-set-cell{display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;font-size:11.5px;padding:0;margin:0 3px 3px 0;min-width:0}
  .q-set-chip{min-width:52px;padding:4px 7px}
  .q-set-chip b{font-size:13px}
  .q-set-cell.editing,.q-set-cell.q-set-cell--expanded{display:block;width:100%;box-sizing:border-box;margin:4px 0;border-radius:var(--r-2)}
  .q-set-actions{display:flex;flex-wrap:wrap;gap:4px;padding:6px 0 0 0;border:none;min-width:0}
}

/* RPE Bottom Sheet (mobile) */
.rpe-bs-overlay{display:flex;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:200;align-items:flex-end}
.rpe-bs{background:var(--bg-1);border-radius:16px 16px 0 0;width:100%;padding-bottom:env(safe-area-inset-bottom,12px);overflow-y:auto}
.rpe-bs__drag{width:36px;height:4px;background:var(--line);border-radius:2px;margin:12px auto 0}
.rpe-bs__head{padding:12px 16px 10px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}
.rpe-bs__name{font-size:15px;font-weight:600;color:var(--text-0)}
.rpe-bs__close{width:28px;height:28px;border-radius:50%;background:var(--bg-3);border:none;cursor:pointer;display:grid;place-items:center;color:var(--text-2);flex-shrink:0}
.rpe-bs__body{padding:14px 16px 16px}
.rpe-bs-dur-row{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.rpe-bs-dur-label{font-size:12px;color:var(--text-2)}
.rpe-bs-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-bottom:8px}
.rpe-bs-btn{height:42px;border:1px solid var(--line);border-radius:8px;background:var(--bg-3);color:var(--text-1);font:600 15px var(--font-mono);cursor:pointer;display:grid;place-items:center}
.rpe-bs-btn.sel{border-color:currentColor}
.rpe-bs-label{text-align:center;font-size:12px;font-weight:600;min-height:18px;margin-top:4px;padding:4px 12px;border-radius:8px}

/* Program picker modal */
.q-prog-day-pick{width:100%;display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-radius:var(--r-2);background:none;border:1px solid var(--line);cursor:pointer;margin-bottom:6px;transition:background .12s,border-color .12s;text-align:left;}
.q-prog-day-pick:hover{background:var(--bg-3);border-color:var(--accent);}
.q-prog-day-pick:last-child{margin-bottom:0;}

/* Video modal */
#app-video-modal .q-modal{width:calc(100vw - 40px);}
@media(max-width:899px){#app-video-modal .q-modal{border-radius:10px;}}

/* Custom confirm overlay */
#app-confirm-overlay .q-modal-backdrop{cursor:default;}
#app-confirm-overlay .q-modal{animation:q-pop-in .15s ease;}
@keyframes q-pop-in{from{opacity:0;transform:scale(.93)}to{opacity:1;transform:scale(1)}}

/* Tier badge — sidebar header */
.q-sidebar__brand{position:relative;display:flex;align-items:center;justify-content:space-between;padding-right:12px;}
.q-tier-badge{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;padding:3px 8px;border-radius:100px;cursor:pointer;transition:opacity .15s;white-space:nowrap;flex-shrink:0;}
.q-tier-badge:hover{opacity:.8;}
.q-tier-badge--beta{background:rgba(249,115,22,.15);color:#F97316;border:1px solid rgba(249,115,22,.3);}
.q-tier-badge--free{background:var(--bg-4);color:var(--text-2);border:1px solid var(--line);}
.q-tier-badge--pro{background:rgba(99,102,241,.15);color:#818cf8;border:1px solid rgba(99,102,241,.3);}
.q-tier-badge--elite{background:rgba(234,179,8,.12);color:#eab308;border:1px solid rgba(234,179,8,.25);}

/* Tier pill — sidebar nav row */
.q-tier-pill{font-size:9px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;padding:2px 6px;border-radius:100px;margin-left:auto;}
.q-tier-pill--beta{background:rgba(249,115,22,.15);color:#F97316;}
.q-tier-pill--free{background:var(--bg-4);color:var(--text-3);}
.q-tier-pill--pro{background:rgba(99,102,241,.15);color:#818cf8;}
.q-tier-pill--elite{background:rgba(234,179,8,.12);color:#eab308;}
/* Los tiers de la grilla v2 no tenían variante: sin esto, apagada la beta, la
   píldora de todo cliente que paga queda sin fondo ni color. */
.q-tier-badge--trial,.q-tier-pill--trial{background:rgba(249,115,22,.15);color:#F97316;border:1px solid rgba(249,115,22,.3);}
.q-tier-badge--coach,.q-tier-pill--coach{background:rgba(249,115,22,.15);color:#F97316;}
.q-tier-badge--club,.q-tier-pill--club{background:rgba(139,92,246,.15);color:#a78bfa;}
.q-tier-badge--clubplus,.q-tier-pill--clubplus{background:rgba(34,197,94,.14);color:#4ade80;}

/* Subscription modal */
.q-sub-modal{max-width:560px;padding:0;overflow:hidden;}
.q-sub-modal__head{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;}
.q-sub-modal__title{font-size:16px;font-weight:700;color:var(--text-0);}
.q-sub-beta-banner{margin:0 24px 16px;background:rgba(249,115,22,.1);border:1px solid rgba(249,115,22,.25);border-radius:var(--r-2);padding:8px 12px;font-size:12px;color:#F97316;text-align:center;}
/* auto-fit en vez de un número fijo: la grilla de planes se arma desde
   TIER_CONFIG, así que el CSS no puede tener hardcodeada la cantidad. */
.q-sub-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:8px;padding:0 24px 16px;}
.q-sub-col{border:1px solid var(--line);border-radius:var(--r-3);padding:14px 8px;text-align:center;}
.q-sub-col__scope{font-size:9px;color:var(--text-3);margin-top:4px;line-height:1.2;}
.q-sub-col--active{border-color:#F97316;background:rgba(249,115,22,.06);}
.q-sub-col__name{font-size:12px;font-weight:600;color:var(--text-1);margin-bottom:4px;}
.q-sub-col__price{font-size:20px;font-weight:800;color:var(--text-0);line-height:1;}
.q-sub-col__price span{font-size:11px;font-weight:400;color:var(--text-3);}
.q-sub-col__badge{font-size:9px;font-weight:600;color:#F97316;margin-top:5px;text-transform:uppercase;letter-spacing:.4px;}
.q-sub-note{padding:12px 24px 0;font-size:10px;line-height:1.5;color:var(--text-3);}
.q-sub-table-wrap{overflow-x:auto;padding:0 24px;}
.q-sub-table{width:100%;border-collapse:collapse;font-size:12px;}
.q-sub-th{padding:6px 10px;text-align:center;font-size:10px;font-weight:600;color:var(--text-2);text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--line);}
.q-sub-th--label{text-align:left;}
.q-sub-td{padding:7px 10px;text-align:center;border-bottom:1px solid var(--line);color:var(--text-2);}
.q-sub-td--label{text-align:left;color:var(--text-1);font-weight:500;}
.q-sub-td--active{background:rgba(249,115,22,.04);}
.q-sub-tr--even td{background:rgba(255,255,255,.015);}
.q-sub-footer{padding:16px 24px;display:flex;justify-content:flex-end;border-top:1px solid var(--line);}

/* Admin panel */
.q-admin-panel{margin-top:16px;border:1px solid rgba(249,115,22,.25);border-radius:var(--r-3);overflow:hidden;}
.q-admin-panel__header{display:flex;align-items:center;gap:7px;padding:10px 16px;background:rgba(249,115,22,.08);font-size:12px;font-weight:700;color:#F97316;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid rgba(249,115,22,.15);}
.q-admin-section{padding:14px 16px;border-bottom:1px solid var(--line);}
.q-admin-section:last-child{border-bottom:none;}
.q-admin-section__label{font-size:10px;font-weight:700;color:var(--text-2);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px;}
.q-admin-beta-row{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.q-admin-toggle{width:40px;height:22px;border-radius:100px;background:var(--bg-4);border:1px solid var(--line);position:relative;cursor:pointer;transition:background .2s,border-color .2s;flex-shrink:0;}
.q-admin-toggle--on{background:#F97316;border-color:#F97316;}
.q-admin-toggle__dot{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.3);}
.q-admin-toggle--on .q-admin-toggle__dot{transform:translateX(18px);}
/* wrap: el formulario de cesión entra como una fila propia debajo, en vez de
   pelearle el ancho a los controles. */
.q-admin-team-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.q-admin-team-row:last-child{border-bottom:none;}
.q-admin-team-row--dead{opacity:.55;}
.q-admin-team-info{display:flex;align-items:center;gap:6px;min-width:0;flex-wrap:wrap;}
/* Fecha y motivo del override. Sin la fecha a la vista, un acceso regalado no
   se olvida: se traspapela. */
.q-admin-team-ctl{display:flex;align-items:center;gap:6px;flex-shrink:0;}
.q-admin-until{font:500 9.5px var(--font-mono);color:var(--text-3);background:var(--bg-3);border:1px solid var(--line);padding:1px 6px;border-radius:100px;white-space:nowrap;}
.q-admin-until--soon{color:var(--warn);border-color:rgba(242,179,61,.35);background:var(--warn-soft);}
.q-admin-until--dead{color:var(--bad);border-color:rgba(240,102,107,.35);background:var(--bad-soft);}
.q-admin-reason{flex-basis:100%;font-size:10.5px;color:var(--text-2);line-height:1.3;}
.q-admin-until-input,.q-admin-reason-input{background:var(--bg-3);border:1px solid var(--line);border-radius:var(--r-2);color:var(--text-0);font-size:11px;padding:4px 6px;color-scheme:dark;}
/* Va con `input` adelante a propósito. El estilo global de la línea 479 es
   `input[type=date]`, y un selector de atributo + elemento le gana en
   especificidad a una clase sola: sin esto, el campo heredaba ancho 100%, texto
   centrado y sin borde — se veía como una etiqueta suelta en el medio del panel
   en vez de un campo, y encima empujaba a los controles de al lado. */
input.q-admin-until-input{width:124px;text-align:left;background:var(--bg-3);
  border:1px solid var(--line);border-radius:var(--r-2);padding:4px 6px;}
.q-admin-reason-input{width:110px;}
.q-admin-until-input:focus,.q-admin-reason-input:focus{outline:none;border-color:var(--accent);}
.q-admin-own-btn{background:var(--bg-3);border:1px solid var(--line);border-radius:var(--r-2);color:var(--text-1);font-size:11px;padding:4px 9px;cursor:pointer;white-space:nowrap;}
.q-admin-own-btn:hover{border-color:var(--accent);color:var(--text-0);}
.q-admin-own{flex-basis:100%;margin:8px 0 4px;padding:12px;border:1px solid var(--accent-line);background:var(--accent-soft);border-radius:var(--r-3);}
.q-admin-own__hint,.q-admin-own__warn{font-size:11px;line-height:1.45;color:var(--text-1);margin-bottom:10px;}
.q-admin-own__warn{color:var(--warn);}
.q-admin-own__row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.q-admin-team-name{font-size:13px;color:var(--text-0);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.q-admin-override-badge{font-size:9px;font-weight:600;color:#F97316;background:rgba(249,115,22,.1);border:1px solid rgba(249,115,22,.2);padding:1px 5px;border-radius:100px;white-space:nowrap;flex-shrink:0;}
.q-admin-tier-select{background:var(--bg-3);border:1px solid var(--line);border-radius:var(--r-2);color:var(--text-0);font-size:12px;padding:4px 8px;cursor:pointer;flex-shrink:0;}
.q-admin-tier-select:focus{outline:none;border-color:var(--accent);}
.q-admin-load-btn{width:100%;padding:8px;background:var(--bg-3);border:1px solid var(--line);border-radius:var(--r-2);color:var(--text-1);font-size:12px;font-weight:500;cursor:pointer;transition:border-color .15s;}
.q-admin-load-btn:hover{border-color:var(--accent);color:var(--text-0);}
/* Bug Report FAB */
.bug-fab{position:fixed;bottom:24px;right:24px;width:46px;height:46px;border-radius:50%;background:var(--bg-3);border:1px solid var(--border);color:var(--text-2);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:900;box-shadow:0 4px 16px rgba(0,0,0,.4);transition:background .15s,color .15s;padding:0;flex-shrink:0;}
@media(max-width:899px){.bug-fab{bottom:calc(64px + env(safe-area-inset-bottom,0px));right:16px;}}
.bug-fab:hover{background:var(--bg-4);color:var(--text-0);}
.bug-fab__badge{position:absolute;top:-5px;right:-5px;background:var(--bad);color:#fff;font-size:10px;font-weight:700;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;line-height:1;border:2px solid var(--bg-0);}
/* Bug Report Modal */
.bug-report-modal{background:var(--bg-2);border:1px solid var(--line-strong);border-radius:14px;width:calc(100% - 32px);max-width:400px;overflow:hidden;box-shadow:var(--shadow-pop);animation:q-pop-in .15s ease;}
.bug-report-modal__header{padding:14px 18px 12px;font-size:14px;font-weight:600;color:var(--text-0);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);}
.bug-report-modal__header button{background:none;border:none;color:var(--text-2);cursor:pointer;font-size:18px;padding:0;line-height:1;}
.bug-report-modal__body{padding:14px 18px;display:flex;flex-direction:column;gap:6px;}
.bug-report-modal__body label{font-size:11px;font-weight:600;color:var(--text-2);text-transform:uppercase;letter-spacing:.04em;}
.bug-report-modal__body select,.bug-report-modal__body textarea{background:var(--bg-3);border:1px solid var(--border);border-radius:8px;color:var(--text-0);font-size:13px;padding:8px 10px;outline:none;font-family:var(--font);width:100%;box-sizing:border-box;}
.bug-report-modal__body select:focus,.bug-report-modal__body textarea:focus{border-color:var(--accent);}
.bug-report-modal__body textarea{resize:vertical;min-height:80px;}
.bug-report-modal__body input[type="file"]{font-size:12px;color:var(--text-2);}
.bug-report-modal__footer{padding:10px 18px 14px;display:flex;gap:8px;justify-content:flex-end;border-top:1px solid var(--line);}
/* Admin bug report rows */
.q-bug-section-label{font-size:10px;font-weight:700;color:var(--text-2);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;}
.q-bug-row{background:var(--bg-3);border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin-bottom:8px;}
.q-bug-row--done{opacity:.5;}
.q-bug-row__top{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:5px;}
.q-bug-cat{font-size:10px;font-weight:700;padding:2px 7px;border-radius:20px;text-transform:uppercase;letter-spacing:.04em;flex-shrink:0;}
.q-bug-user{font-size:12px;color:var(--text-1);font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.q-bug-date{font-size:10px;color:var(--text-3);flex-shrink:0;}
.q-bug-msg{font-size:13px;color:var(--text-0);line-height:1.5;margin-bottom:3px;}
.q-bug-ctx{font-size:11px;color:var(--text-3);margin-bottom:3px;}
.q-bug-ss{font-size:11px;color:var(--text-2);cursor:pointer;margin-top:3px;}

/* Upgrade modal */
.q-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(5px);z-index:600;display:flex;align-items:center;justify-content:center;padding:20px;}
.q-upgrade-modal{background:var(--bg-2);border:1px solid var(--line-strong);border-radius:var(--r-4);width:100%;max-width:440px;padding:28px 24px 24px;box-shadow:var(--shadow-pop);animation:q-pop-in .18s ease;}
.q-upgrade-modal__icon{width:52px;height:52px;border-radius:50%;background:rgba(249,115,22,.12);border:1px solid rgba(249,115,22,.25);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;color:#F97316;}
.q-upgrade-modal__title{font-size:18px;font-weight:700;color:var(--text-0);text-align:center;margin-bottom:8px;}
.q-upgrade-modal__body{font-size:13px;color:var(--text-2);text-align:center;line-height:1.55;margin-bottom:20px;}
.q-upgrade-modal__body strong{color:var(--text-0);}
.q-upgrade-modal__tiers{display:flex;gap:8px;margin-bottom:22px;}
.q-upgrade-tier{flex:1;border:1px solid var(--line);border-radius:var(--r-3);padding:12px 8px;text-align:center;position:relative;transition:border-color .15s;}
.q-upgrade-tier--current{border-color:var(--line-strong);background:var(--bg-3);}
.q-upgrade-tier--target{border-color:#F97316;background:rgba(249,115,22,.07);}
.q-upgrade-tier__name{font-size:12px;font-weight:600;color:var(--text-1);margin-bottom:4px;}
.q-upgrade-tier__price{font-size:15px;font-weight:700;color:var(--text-0);}
.q-upgrade-tier__price span{font-size:10px;font-weight:400;color:var(--text-3);}
.q-upgrade-tier__badge{font-size:9px;font-weight:600;color:var(--text-3);margin-top:6px;text-transform:uppercase;letter-spacing:.4px;}
.q-upgrade-tier__badge--target{color:#F97316;}
.q-upgrade-modal__actions{display:flex;flex-direction:column;gap:8px;}
.q-upgrade-btn{width:100%;padding:11px;border-radius:var(--r-2);font-size:13px;font-weight:600;cursor:pointer;border:none;transition:opacity .15s;}
.q-upgrade-btn--primary{background:#F97316;color:#fff;}
.q-upgrade-btn--primary:hover{opacity:.88;}
.q-upgrade-btn--ghost{background:var(--bg-4);color:var(--text-2);}
.q-upgrade-btn--ghost:hover{color:var(--text-0);}

/* Toast notification */
#app-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:9995;pointer-events:none;}
.q-toast{background:var(--bg-5,#1e293b);color:var(--text-0,#f1f5f9);font-size:13px;font-weight:500;padding:10px 18px;border-radius:var(--r-pill,100px);box-shadow:0 4px 16px rgba(0,0,0,.35);white-space:nowrap;animation:q-toast-in .2s ease;border:1px solid var(--line-strong,rgba(255,255,255,.12));}
@keyframes q-toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* ── ATHLETE PORTAL ──────────────────────────────────────────── */
body.is-auth.athlete #nx-sidebar,
body.is-auth.athlete #nx-stats-bar,
body.is-auth.athlete #mob-tabbar{display:none!important}
@media(min-width:900px){
  body.is-auth.athlete .header{display:flex!important}
  body.is-auth.athlete #app-screen{max-width:480px!important;margin-left:auto!important;margin-right:auto!important}
}

/* ════════════════════════════════════════════════════════════
   ATLETA V2 · "El vestuario de un club profesional de noche"
   Tokens dark-cálido — override scoped a body.athlete
   ════════════════════════════════════════════════════════════ */
body.athlete{
  --bg-0:#0B0A08;--bg-1:#141210;--bg-2:#1C1916;--bg-3:#24201C;--bg-4:#2E2925;--bg-5:#3A342E;--bg-inset:#080706;
  --line:#2A2521;--line-strong:#37312B;--line-accent:#F97316;
  --text-0:#F6F1EA;--text-1:#B7AEA3;--text-2:#857D72;--text-3:#6A6259;
  --accent:#F97316;--accent-hover:#FB8A3C;--accent-press:#E5670D;
  --accent-soft:rgba(249,115,22,.14);--accent-tint:rgba(249,115,22,.20);--accent-line:rgba(249,115,22,.34);--accent-glow:rgba(249,115,22,.35);
  --ok:#4FC98A;--ok-soft:rgba(79,201,138,.14);
  --warn:#F2B33D;--warn-soft:rgba(242,179,61,.14);
  --bad:#F0666B;--bad-soft:rgba(240,102,107,.14);
  --info:#5CA8F2;--info-soft:rgba(92,168,242,.14);
  --r-1:8px;--r-2:12px;--r-3:16px;--r-4:18px;--r-5:22px;
  --font-display:'Space Grotesk','Inter',system-ui,sans-serif;
  background:var(--bg-0);
}
body.athlete .header-user{font-family:var(--font-display);font-weight:600;font-size:16px;letter-spacing:-.02em}

/* Layout */
.ap-layout{display:flex;flex-direction:column;min-height:60vh}
.ap-body{padding-bottom:84px}

/* Bottom nav */
.ap-nav{
  position:fixed;bottom:0;left:50%;transform:translateX(-50%);
  width:100%;max-width:480px;
  background:var(--bg-1);border-top:1px solid var(--line);
  display:flex;z-index:100;
  padding-bottom:env(safe-area-inset-bottom,0px)
}
.ap-nav-btn{
  flex:1;display:flex;flex-direction:column;align-items:center;
  padding:10px 4px 9px;gap:5px;
  border:none;background:transparent;color:var(--text-2);
  cursor:pointer;font-size:11px;font-weight:500;font-family:var(--font-ui);
  position:relative;transition:color .15s
}
.ap-nav-btn::before{
  content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:26px;height:3px;
  border-radius:0 0 3px 3px;background:var(--accent);
  opacity:0;transition:opacity .15s
}
.ap-nav-btn.on{color:var(--accent)}
.ap-nav-btn.on::before{opacity:1}
.ap-nav-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px}
/* Athlete profile modal */
.ap-pm-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:200}
.ap-pm-card{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;background:var(--bg-1);border-radius:20px 20px 0 0;border-top:1px solid var(--line);padding:28px 24px 40px;z-index:201;text-align:center}
.ap-pm-avatar{width:64px;height:64px;border-radius:50%;background:var(--accent);color:#fff;font-size:22px;font-weight:700;display:flex;align-items:center;justify-content:center;margin:0 auto 14px}
.ap-pm-name{font-size:18px;font-weight:700;color:var(--text-0);margin-bottom:4px}
.ap-pm-team{font-size:13px;color:var(--text-2);margin-bottom:2px}
.ap-pm-cat{font-size:12px;color:var(--text-3);margin-bottom:24px}
.ap-pm-tutorial-btn{width:100%;padding:11px;border-radius:var(--r-2);background:transparent;border:1px solid var(--line);color:var(--text-2);font-size:13px;font-weight:500;cursor:pointer;margin-bottom:10px;display:flex;align-items:center;justify-content:center;gap:7px;font-family:var(--font-ui)}
.ap-pm-tutorial-btn:active{background:var(--bg-3)}
.ap-pm-logout{width:100%;padding:13px;border-radius:var(--r-2);background:var(--bg-3);border:1px solid var(--line);color:var(--text-1);font-size:14px;font-weight:600;cursor:pointer}
.ap-pm-logout:active{background:var(--bg-4)}
.ap-pm-avatar-wrap{position:relative;display:inline-block;margin:0 auto 14px}
.ap-pm-avatar-cam{position:absolute;bottom:-3px;right:-3px;width:22px;height:22px;border-radius:50%;background:var(--accent);border:2px solid var(--bg-1);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:10px;line-height:1}
.pf-avatar-wrap{position:relative;display:inline-block;flex-shrink:0}
.pf-avatar-cam{position:absolute;bottom:-3px;right:-3px;width:20px;height:20px;border-radius:50%;background:var(--accent);border:2px solid var(--bg-1);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:9px;line-height:1}
.ap-pm-edit-btn{width:100%;padding:12px;border-radius:var(--r-2);background:var(--accent);border:none;color:#fff;font-size:14px;font-weight:600;cursor:pointer;margin-bottom:10px}
.ap-pm-edit-btn:active{opacity:.85}
.ap-pm-info-rows{width:100%;margin-bottom:20px;border-top:1px solid var(--line);padding-top:10px}
.ap-pm-info-row{display:flex;justify-content:space-between;padding:5px 0;font-size:13px;color:var(--text-2)}
.ap-pm-info-row span:last-child{color:var(--text-1);font-weight:500}
.ap-pm-form{text-align:left;width:100%;margin-bottom:14px;max-height:52vh;overflow-y:auto}
.ap-pm-form-label{display:block;font-size:12px;color:var(--text-3);margin-bottom:10px}
.ap-pm-form-label input,.ap-pm-form-label select{display:block;width:100%;margin-top:4px;padding:8px 10px;border-radius:var(--r-1);border:1px solid var(--line);background:var(--bg-2);color:var(--text-1);font-size:14px;box-sizing:border-box}
.ap-pm-form-btns{display:flex;flex-direction:column;gap:8px;width:100%}
.ap-pm-save{padding:12px;border-radius:var(--r-2);background:var(--accent);border:none;color:#fff;font-size:14px;font-weight:600;cursor:pointer}
.ap-pm-save:active{opacity:.85}
.ap-pm-cancel{padding:12px;border-radius:var(--r-2);background:var(--bg-3);border:1px solid var(--line);color:var(--text-2);font-size:14px;font-weight:600;cursor:pointer}
.ap-pm-cancel:active{background:var(--bg-4)}
.ap-pm-notif-row{display:flex;align-items:center;gap:12px;text-align:left;padding:12px 0;border-top:1px solid var(--line);margin-bottom:12px;width:100%}
.ap-pm-notif-info{flex:1;font-size:13px;font-weight:600;color:var(--text-1);line-height:1.3}
.ap-pm-notif-info div:last-child{font-size:11px;font-weight:400;color:var(--text-2);margin-top:2px}
.ap-pm-notif-on{padding:6px 14px;border-radius:var(--r-1);background:var(--accent);border:none;color:#fff;font-size:12px;cursor:pointer;font-weight:600;white-space:nowrap;font-family:var(--font-ui)}
.ap-pm-notif-off{padding:6px 14px;border-radius:var(--r-1);background:transparent;border:1px solid var(--line);color:var(--text-2);font-size:12px;cursor:pointer;font-weight:500;white-space:nowrap;font-family:var(--font-ui)}

/* Wellness check-in cards */
/* Today's routine banner */
.ap-today-banner{margin:8px 16px;background:var(--bg-2);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--r-2);overflow:hidden}
.ap-today-banner__head{display:flex;align-items:center;gap:7px;padding:10px 14px 4px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--accent)}
.ap-today-plan{padding:3px 14px 8px}
.ap-today-plan__name{font-size:14px;font-weight:600;color:var(--text-0)}
.ap-today-plan__meta{font-size:11px;color:var(--text-2);margin-top:2px}
.ap-today-banner__btn{width:100%;padding:10px 14px;background:transparent;border:none;border-top:1px solid var(--line);color:var(--accent);font-size:13px;font-weight:600;text-align:left;cursor:pointer;font-family:var(--font-ui);display:block}
.ap-today-banner__btn:active{background:var(--bg-3)}
.ap-well-card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-2);margin:10px 16px}
.ap-rpe-flash{animation:apRpeFlash 2.6s ease}
@keyframes apRpeFlash{
  0%,55%{border-color:var(--accent);box-shadow:0 0 0 3px rgba(249,115,22,.22)}
  100%{border-color:var(--line);box-shadow:none}
}
.ap-well-card__h{
  padding:11px 16px;border-bottom:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap
}
.ap-well-card__h h3{font-size:14px;font-weight:600;color:var(--text-0);margin:0}
.ap-well-card__b{padding:14px 16px}
/* Athlete wellness — slider layout */
.ap-well-row{margin-bottom:20px}
.ap-well-row:last-child{margin-bottom:0}
.ap-well-slider-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.ap-well-label{font-size:12px;color:var(--text-1);display:flex;align-items:center;gap:5px}
.ap-well-label svg{opacity:.8}
.ap-well-val{font-size:22px;font-weight:700;font-family:var(--font-mono);line-height:1}
.ap-well-val-unit{font-size:11px;font-weight:400;color:var(--text-2);margin-left:1px}
.ap-well-slider{
  -webkit-appearance:none;appearance:none;
  width:100%;height:6px;border-radius:4px;outline:none;cursor:pointer;
  background:linear-gradient(to right,var(--track,#64748b) var(--pct,50%),var(--bg-4,#1e293b) var(--pct,50%));
  margin:4px 0
}
.ap-well-slider::-webkit-slider-thumb{
  -webkit-appearance:none;width:22px;height:22px;border-radius:50%;
  background:#fff;border:2.5px solid var(--track,#64748b);
  cursor:pointer;box-shadow:0 1px 5px rgba(0,0,0,.35)
}
.ap-well-slider::-moz-range-thumb{
  width:22px;height:22px;border-radius:50%;
  background:#fff;border:2.5px solid var(--track,#64748b);
  cursor:pointer;box-shadow:0 1px 5px rgba(0,0,0,.35)
}
.ap-slider-labels{display:flex;justify-content:space-between;font-size:10px;color:var(--text-3);margin-top:3px}
.ap-well-tip{font-size:10px;font-weight:500;white-space:nowrap}
@media(max-width:360px){.ap-well-tip{display:none}}
/* Coach compact slider */
.q-well-item{margin-bottom:14px}
.q-well-item:last-child{margin-bottom:0}
.q-well-item__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.q-well-val{font-size:15px;font-weight:700;font-family:var(--font-mono)}
.q-well-slider{
  -webkit-appearance:none;appearance:none;
  width:100%;height:4px;border-radius:2px;outline:none;cursor:pointer;
  background:linear-gradient(to right,var(--track,#64748b) var(--pct,50%),var(--bg-4,#1e293b) var(--pct,50%));
  margin:4px 0 2px
}
.q-well-slider::-webkit-slider-thumb{
  -webkit-appearance:none;width:16px;height:16px;border-radius:50%;
  background:#fff;border:2px solid var(--track,#64748b);cursor:pointer;
  box-shadow:0 1px 3px rgba(0,0,0,.3)
}
.q-well-slider::-moz-range-thumb{
  width:16px;height:16px;border-radius:50%;
  background:#fff;border:2px solid var(--track,#64748b);cursor:pointer;
  box-shadow:0 1px 3px rgba(0,0,0,.3)
}

/* RPE — 6-column grid so botones son tocables en mobile */
.ap-rpe-grid{
  display:grid;grid-template-columns:repeat(6,1fr);
  gap:5px;padding:12px 16px
}
.ap-rpe-btn{
  height:40px;border-radius:7px;
  border:1.5px solid var(--line);background:var(--bg-3);
  color:var(--text-2);font-size:14px;font-weight:700;
  cursor:pointer;transition:all .12s
}
.ap-rpe-btn:active{transform:scale(.92)}
.ap-rpe-btn.sel{border-width:2px}

/* Attendance */
/* Attendance calendar */
.ap-cal{margin:0 16px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-2);overflow:hidden}
.ap-cal-nav{display:flex;align-items:center;justify-content:space-between;padding:12px 10px 6px}
.ap-cal-nbtn{background:none;border:none;color:var(--text-1);cursor:pointer;padding:5px 8px;border-radius:6px;display:flex;align-items:center;line-height:1}
.ap-cal-nbtn:active{background:var(--bg-3)}
.ap-cal-nbtn--dim{opacity:.25;cursor:default}
.ap-cal-title{font-size:14px;font-weight:600;color:var(--text-0)}
.ap-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);padding:0 6px 8px;gap:2px}
.ap-cal-dh{text-align:center;font-size:9px;color:var(--text-3);font-weight:600;padding:4px 0;text-transform:uppercase}
.ap-cal-day{display:flex;flex-direction:column;align-items:center;padding:3px 1px;gap:3px;position:relative;min-height:42px}
.ap-cal-day--future .ap-cal-num{opacity:.25}
.ap-cal-num{font-size:12px;color:var(--text-1);width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-variant-numeric:tabular-nums}
.ap-cal-day--today .ap-cal-num{background:var(--accent);color:#fff;font-weight:700}
.ap-cal-dot{width:5px;height:5px;border-radius:50%;background:transparent;flex-shrink:0}
.ap-cal-dot--present{background:var(--ok)}
.ap-cal-dot--absent{background:var(--bad)}
.ap-cal-dot--justified{background:#eab308}
.ap-cal-wdot{position:absolute;top:2px;right:4px;width:5px;height:5px;border-radius:50%;background:var(--accent)}
.ap-cal-legend{display:flex;gap:10px;padding:8px 14px;border-top:1px solid var(--line);flex-wrap:wrap}
.ap-cal-leg{font-size:10px;color:var(--text-2);display:flex;align-items:center;gap:4px}
.ap-att-list{padding:8px 16px;display:flex;flex-direction:column;gap:6px}
.ap-att-row{
  display:flex;align-items:center;gap:10px;
  padding:9px 13px;background:var(--bg-2);
  border-radius:var(--r-2);border:1px solid var(--line)
}
.ap-att-date{flex:1;font-size:13px;color:var(--text-1)}
.ap-att-badge{font-size:11px;font-weight:600;padding:3px 10px;border-radius:20px}
.ap-att-P,.ap-att-T{background:#052e16;color:#22c55e}
.ap-att-A{background:#2d0a0a;color:#ef4444}
.ap-att-L{background:#1c0533;color:#c084fc}
.ap-att-J{background:#1c1c0a;color:#eab308}

/* Routine plan cards */
.ap-plan-card{margin:8px 16px;background:var(--bg-2);border-radius:var(--r-2);border:1px solid var(--line);overflow:hidden}
.ap-plan-head{padding:10px 14px;display:flex;justify-content:space-between;align-items:flex-start;gap:8px;flex-wrap:wrap}
.ap-plan-name{font-size:14px;font-weight:600;color:var(--text-0)}
.ap-plan-date{font-size:11px;color:var(--text-2)}
.ap-block{border-top:1px solid var(--line)}
.ap-block-head{padding:11px 14px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none}
.ap-block-head:active{opacity:.7}
.ap-block--done .ap-block-head{opacity:.55}
.ap-block-chevron{transition:transform .2s;flex-shrink:0}
.ap-block-chevron.open{transform:rotate(0deg)}
.ap-block-chevron:not(.open){transform:rotate(-90deg)}
.ap-block-count{font-size:10px;color:var(--text-3);font-weight:400;text-transform:none;letter-spacing:0}
.ap-exercise{padding:9px 14px;border-top:1px solid rgba(255,255,255,.04)}
.ap-ex-top{display:flex;align-items:center;gap:8px}
.ap-exercise-name{font-size:13.5px;color:var(--text-0);font-weight:500;flex:1;line-height:1.3}
.ap-ex-detail{font-size:12px;color:var(--text-2);margin-top:3px;font-variant-numeric:tabular-nums}
.ap-vid-btn{font-size:10px;padding:2px 7px;border-radius:var(--r-pill);background:var(--bg-4);border:1px solid var(--line);color:var(--accent);cursor:pointer;font-family:var(--font-ui);flex-shrink:0}

/* Progress */
.ap-chart-card{margin:10px 16px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-2);padding:14px 16px}
.ap-chart-card h3{font-size:13px;font-weight:600;color:var(--text-1);margin:0 0 12px}
.ap-ex-select{width:100%;background:var(--bg-3);border:1px solid var(--line);border-radius:var(--r-1);color:var(--text-1);font-size:13px;padding:8px 10px;appearance:none;-webkit-appearance:none;font-family:var(--font-ui);cursor:pointer}
.ap-well-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 16px}
.ap-well-stat{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-2);padding:10px 8px;text-align:center}
.ap-well-stat__icon{display:flex;align-items:center;justify-content:center;height:26px}
.ap-well-stat__icon svg{width:24px;height:24px;opacity:.85}
.ap-well-label svg{vertical-align:middle;margin-right:4px;opacity:.8}
.ap-well-stat__label{font-size:10px;color:var(--text-2);margin-top:2px}
.ap-well-stat__val{font-size:18px;font-weight:700;font-family:var(--font-mono);margin-top:2px}

/* Athlete invite picker */
.ap-roster-pick{display:flex;flex-direction:column;gap:8px;margin-top:6px}

/* Day navigator — Rutinas tab */
.ap-day-nav{display:flex;align-items:center;gap:4px;padding:8px 10px 6px;border-bottom:1px solid var(--line)}
.ap-day-nav__btn{background:none;border:none;color:var(--text-1);cursor:pointer;padding:6px 10px;border-radius:var(--r-2);display:flex;align-items:center;flex-shrink:0}
.ap-day-nav__btn:active{background:var(--bg-3)}
.ap-day-nav__center{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px}
.ap-day-nav__date{font-size:14px;font-weight:600;color:var(--text-0)}
.ap-day-nav__badge{font-size:10px;font-weight:700;padding:1px 8px;border-radius:20px;background:var(--accent);color:#fff}
.ap-day-nav__badge--dim{background:var(--bg-4);color:var(--text-2);font-weight:400}
.ap-day-nav__today{background:none;border:none;font-size:11px;color:var(--accent);cursor:pointer;font-family:var(--font-ui);padding:0 4px;text-decoration:underline}

/* Workout logging — athlete portal */
.ap-plan-log-bar{padding:8px 14px;border-top:1px solid var(--line)}
.ap-log-start-btn{width:100%;padding:9px 12px;background:var(--accent);color:#fff;border:none;border-radius:var(--r-2);font-size:13px;font-weight:600;cursor:pointer;font-family:var(--font-ui)}
.ap-log-edit-btn{width:100%;padding:9px 12px;background:var(--bg-4);color:var(--text-0);border:1px solid var(--line);border-radius:var(--r-2);font-size:13px;font-weight:600;cursor:pointer;font-family:var(--font-ui)}
.ap-log-item{padding:10px 14px;border-top:1px solid rgba(255,255,255,.05)}
.ap-log-item-name{font-size:13.5px;color:var(--text-0);font-weight:500}
.ap-log-item-prescribed{font-size:11px;color:var(--text-3);margin-top:2px;font-variant-numeric:tabular-nums}
.ap-log-sets{display:flex;flex-direction:column;gap:7px;margin-top:10px}
.ap-log-set-row{display:flex;align-items:center;gap:10px}
.ap-log-set-num{font-size:11px;font-weight:700;color:var(--text-3);width:22px;flex-shrink:0;font-variant-numeric:tabular-nums}
.ap-log-label{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10px;color:var(--text-2);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.ap-log-input{width:68px;padding:6px 8px;background:var(--bg-3);border:1px solid var(--line);border-radius:var(--r-1);color:var(--text-0);font-size:15px;font-family:var(--font-mono);text-align:center;-moz-appearance:textfield}
.ap-log-input::-webkit-inner-spin-button,.ap-log-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.ap-log-input--sm{width:56px}
.ap-log-input:focus{outline:none;border-color:var(--accent);background:var(--bg-4)}
/* Inline edit durante la rutina (atleta) */
.ap-il-sets{margin-top:8px;display:flex;flex-direction:column;gap:6px}
.ap-il-row{display:flex;align-items:center;gap:8px}
.ap-il-snum{font-size:11px;font-weight:700;color:var(--text-3);width:24px;flex-shrink:0;font-family:var(--font-mono)}
.ap-il-input{width:64px;padding:7px 8px;background:var(--bg-3);border:1px solid var(--line);border-radius:var(--r-1);color:var(--text-0);font-size:15px;font-family:var(--font-mono);text-align:center;-moz-appearance:textfield}
.ap-il-input::-webkit-inner-spin-button,.ap-il-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.ap-il-input:focus{outline:none;border-color:var(--accent);background:var(--bg-4)}
.ap-il-x{color:var(--text-3);font-size:12px}
.ap-il-unit{font-size:12px;color:var(--text-2)}
.ap-il-time{font-size:14px;color:var(--info);font-family:var(--font-mono);font-weight:600}
.ap-il-note{width:100%;margin-top:8px;padding:8px 10px;background:var(--bg-3);border:1px solid var(--line);border-radius:var(--r-1);color:var(--text-0);font-size:13px;font-family:inherit;resize:vertical;min-height:38px;box-sizing:border-box}
.ap-il-note:focus{outline:none;border-color:var(--accent)}
.ap-il-note::placeholder{color:var(--text-3)}
.ap-il-note-ro{margin-top:8px;padding:7px 10px;background:var(--accent-soft);border-radius:var(--r-1);font-size:12.5px;color:var(--text-1);line-height:1.4}
.ap-log-time-badge{font-size:13px;color:var(--text-3);font-variant-numeric:tabular-nums;padding:6px 10px;background:var(--bg-3);border-radius:var(--r-1);border:1px solid var(--line)}
.ap-log-actions{display:flex;gap:8px;padding:12px 14px;border-top:1px solid var(--line);margin-top:4px}
.ap-log-cancel-btn{flex:1;padding:10px;background:var(--bg-3);border:1px solid var(--line);color:var(--text-1);border-radius:var(--r-2);font-size:13px;cursor:pointer;font-family:var(--font-ui)}
.ap-log-save-btn{flex:2;padding:10px;background:var(--accent);border:none;color:#fff;border-radius:var(--r-2);font-size:13px;font-weight:600;cursor:pointer;font-family:var(--font-ui)}
.ap-log-later-btn{flex:2;padding:10px;background:transparent;border:1px solid var(--line);color:var(--text-1);border-radius:var(--r-2);font-size:13px;cursor:pointer;font-family:var(--font-ui)}
.ap-push-banner{display:flex;align-items:center;gap:10px;margin:8px 16px 0;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-2);padding:10px 12px;font-size:12px;color:var(--text-1);}
.ap-push-btn{margin-left:auto;background:var(--accent);color:#fff;border:none;border-radius:var(--r-1);padding:6px 14px;font-size:12px;cursor:pointer;font-family:var(--font-ui);white-space:nowrap;font-weight:600;}
.ap-ex-thumb{width:100%;height:110px;object-fit:cover;border-radius:var(--r-1);margin-bottom:8px;cursor:pointer;display:block}
.ap-exercise--done .ap-exercise-name{text-decoration:line-through;color:var(--text-3)}
.ap-exercise--done{opacity:.6}
.ap-switch{display:inline-flex;align-items:center;cursor:pointer;flex-shrink:0;-webkit-tap-highlight-color:transparent}
.ap-switch input{display:none}
.ap-switch-track{width:38px;height:22px;background:var(--bg-4);border:1.5px solid var(--line);border-radius:11px;position:relative;transition:background .2s,border-color .2s}
.ap-switch-track::after{content:'';position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--text-2);border-radius:50%;transition:transform .2s,background .2s}
.ap-switch input:checked+.ap-switch-track{background:var(--accent);border-color:var(--accent)}
.ap-switch input:checked+.ap-switch-track::after{transform:translateX(16px);background:#fff}
.ap-progress-wrap{padding:10px 14px 4px;border-top:1px solid var(--line)}
.ap-progress-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:12px;color:var(--text-2)}
.ap-progress-pct{font-weight:700;color:var(--text-0)}
.ap-progress-track{height:5px;background:var(--bg-4);border-radius:3px;overflow:hidden}
.ap-progress-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .25s}
.ap-complete-btn{width:100%;padding:12px;border:none;border-radius:var(--r-2);font-size:14px;font-weight:700;cursor:pointer;font-family:var(--font-ui);margin-top:8px;margin-bottom:6px;background:var(--accent);color:#fff}
.ap-complete-btn:disabled{background:var(--bg-4);color:var(--text-3);cursor:default}

/* Session logs view — coach */
.q-logs-player-row{padding:10px 16px;border-top:1px solid var(--line)}
.q-logs-player-name{font-size:13px;font-weight:600;color:var(--text-0);margin-bottom:8px}
.q-logs-item{display:flex;align-items:baseline;gap:6px;padding:3px 0;flex-wrap:wrap}
.q-logs-item-block{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;flex-shrink:0}
.q-logs-item-name{font-size:12.5px;color:var(--text-1);flex:1;min-width:0}
.q-logs-item-sets{font-size:12px;color:var(--text-2);font-variant-numeric:tabular-nums;flex-shrink:0}

/* ── Onboarding overlay ── */
#ap-onboarding-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(0,0,0,.8);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.ap-obd-card{position:relative;background:var(--bg-2);border:1px solid var(--line);border-radius:20px;padding:36px 28px 28px;max-width:340px;width:100%;text-align:center}
.ap-obd-skip{position:absolute;top:16px;right:16px;background:none;border:none;color:var(--text-3);font-size:13px;cursor:pointer;padding:4px 8px;font-family:var(--font-ui)}
.ap-obd-icon{display:flex;align-items:center;justify-content:center;width:88px;height:88px;border-radius:50%;background:rgba(249,115,22,.12);margin:0 auto 20px}
.ap-obd-title{font-size:21px;font-weight:700;color:var(--text-0);margin-bottom:10px}
.ap-obd-body{font-size:14px;color:var(--text-2);line-height:1.65;margin-bottom:24px}
.ap-obd-dots{display:flex;align-items:center;justify-content:center;gap:6px;margin-bottom:24px}
.ap-obd-dot{width:7px;height:7px;border-radius:4px;background:var(--line);transition:width .2s,background .2s}
.ap-obd-dot.on{width:22px;background:var(--accent)}
.ap-obd-actions{display:flex;align-items:center;gap:10px}
.ap-obd-back{flex:1;padding:11px 16px;background:transparent;border:1px solid var(--line);color:var(--text-1);border-radius:var(--r-2);font-size:14px;font-weight:500;cursor:pointer;font-family:var(--font-ui)}
.ap-obd-next{flex:2;padding:11px 16px;background:var(--accent);border:none;color:#fff;border-radius:var(--r-2);font-size:14px;font-weight:700;cursor:pointer;font-family:var(--font-ui)}

/* ── Calendar ────────────────────────────────────────────────── */
:root{--cal-train:var(--ok);--cal-match:var(--bad);--cal-recov:var(--info);--cal-libre:var(--text-2)}
.q-cal-wrap{padding:0}
/* toolbar */
.q-cal__bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 0 12px;border-bottom:1px solid var(--line)}
.q-cal__mnav{display:flex;align-items:center;gap:8px;margin-right:4px}
.q-cal__navbtn{width:28px;height:28px;border-radius:6px;border:1px solid var(--line);background:var(--bg-3);color:var(--text-1);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s}
.q-cal__navbtn:hover{background:var(--bg-4);color:var(--text-0)}
.q-cal__mlbl{display:flex;flex-direction:column;min-width:160px;text-align:center}
.q-cal__mname{font-size:14px;font-weight:600;color:var(--text-0)}
.q-cal__msub{font-size:11px;color:var(--text-2)}
.q-cal__legend{display:flex;align-items:center;gap:12px;margin-left:auto;flex-wrap:wrap}
.q-cal__leg{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--text-2)}
.q-cal__legsw{width:8px;height:8px;border-radius:2px;flex-shrink:0}
/* weekday header */
.q-cal__wdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;padding:10px 0 4px}
.q-cal__wd{font-size:10.5px;font-weight:600;color:var(--text-2);text-align:center;letter-spacing:.06em}
/* month grid — continuo con hairlines (CD) */
.q-cal__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:0;border:1px solid var(--line);border-radius:var(--r-4);overflow:hidden;background:var(--bg-0)}
.q-cal__cell{min-height:96px;min-width:0;overflow:hidden;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--bg-0);padding:8px 9px 7px;cursor:pointer;transition:background .12s;display:flex;flex-direction:column;gap:3px}
.q-cal__cell:nth-child(7n){border-right:0}
.q-cal__grid .q-cal__cell:nth-last-child(-n+7){border-bottom:0}
.q-cal__cell:hover{background:var(--bg-1)}
.q-cal__cell.is-out{opacity:.35;cursor:default;pointer-events:none;background:var(--bg-1)}
.q-cal__cell.is-sel{background:var(--accent-soft);box-shadow:inset 0 0 0 1.5px var(--accent-line)}
.q-cal__cell.is-sel:hover{background:var(--accent-soft)}
.q-cal__cell.is-empty:hover .q-cal__add{opacity:1}
/* cell internals */
.q-cal__ch{display:flex;align-items:flex-start;justify-content:space-between;gap:4px}
.q-cal__dn{font:500 12.5px var(--font-mono);color:var(--text-1);line-height:1;min-width:20px}
.q-cal__dn.today{width:21px;height:21px;border-radius:50%;background:var(--accent);color:#1A0D02;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;margin:-2px 0}
.q-cal__plan{font-size:11.5px;color:var(--text-0);font-weight:500;line-height:1.3;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-top:1px}
.q-cal__metrics{display:flex;align-items:center;gap:8px;margin-top:auto;padding-top:4px}
.q-cal__met{display:flex;align-items:center;gap:3px;font-size:10.5px;color:var(--text-2);font-family:var(--font-mono)}
.q-cal__met--load{color:var(--warn)}
.q-cal__add{opacity:0;color:var(--accent);display:flex;align-items:center;justify-content:center;flex:1;transition:opacity .12s;margin-top:4px}
/* pills */
.q-cal__pill{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:600;padding:2px 6px;border-radius:4px;white-space:nowrap;flex-shrink:0}
.q-cal__pill--train{background:var(--ok-soft);color:var(--cal-train)}
.q-cal__pill--match{background:var(--bad-soft);color:var(--cal-match)}
.q-cal__pill--recov{background:var(--info-soft);color:var(--cal-recov)}
.q-cal__pill--libre{background:var(--bg-4);color:var(--cal-libre)}
/* totals strip — banda hairline (CD mcal-foot) */
.q-cal__tots{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:0;margin-top:14px;padding:0;background:var(--bg-1);border-radius:var(--r-4);overflow:hidden;border:1px solid var(--line)}
.q-cal__tot{display:flex;align-items:center;gap:10px;padding:13px 18px;position:relative;min-width:0}
.q-cal__tot+.q-cal__tot::before{content:"";position:absolute;left:0;top:13px;bottom:13px;width:1px;background:var(--line-strong)}
.q-cal__tot-sw{width:9px;height:9px;border-radius:3px;flex-shrink:0}
.q-cal__tot-sw--train{background:var(--cal-train)}
.q-cal__tot-sw--match{background:var(--cal-match)}
.q-cal__tot-sw--recov{background:var(--cal-recov)}
.q-cal__tot-sw--libre{background:var(--cal-libre)}
.q-cal__tot-l{font:500 9.5px var(--font-mono);color:var(--text-2);text-transform:uppercase;letter-spacing:.06em}
.q-cal__tot-v{font-size:24px;font-weight:600;color:var(--text-0);font-family:var(--font-mono);letter-spacing:-.03em;font-feature-settings:"tnum";line-height:1.15;margin-top:2px}
.q-cal__tot-u{font-size:11px;font-weight:400;color:var(--text-2);margin-left:3px}
.q-cal__foot{font-size:11px;color:var(--text-2);margin-top:12px;padding-bottom:4px}
/* Desktop/Mobile toggle */
.q-cal-desktop{display:block}
.q-cal-mobile{display:none}
@media(max-width:680px){
  .q-cal-desktop{display:none}
  .q-cal-mobile{display:block}
}
/* ── Mobile calendar ─────────────────────────────────────────── */
.q-mcal__topbar{display:flex;align-items:center;gap:8px;padding:14px 0 10px}
.q-mcal__toplbl{flex:1;text-align:center}
.q-mcal__topmonth{display:block;font-size:13px;font-weight:700;color:var(--text-0);letter-spacing:.04em}
.q-mcal__topsub{display:block;font-size:11px;color:var(--text-2);margin-top:1px}
/* week strip */
.q-mcal__strip{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:4px 0 12px}
.q-mcal__sday{display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;padding:6px 2px;border-radius:8px}
.q-mcal__sdow{font-size:10px;font-weight:600;color:var(--text-2);text-transform:uppercase}
.q-mcal__snum{font-size:17px;font-weight:700;color:var(--text-0);line-height:1;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%}
.q-mcal__snum.today{background:var(--accent);color:#fff}
.q-mcal__sdot{width:6px;height:6px;border-radius:50%}
/* mini month */
.q-mcal__mini{background:var(--bg-2);border-radius:10px;padding:10px;margin-bottom:12px}
.q-mcal__miniwdays{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:4px}
.q-mcal__miniwdays div{font-size:9px;font-weight:600;color:var(--text-3);text-align:center;padding:2px 0}
.q-mcal__minigrid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}
.q-mcal__mc{display:flex;flex-direction:column;align-items:center;gap:1px;padding:3px 1px;border-radius:4px;cursor:pointer;font-size:10px;color:var(--text-2)}
.q-mcal__mc.out{color:var(--text-3);opacity:.4;pointer-events:none}
.q-mcal__mc.cw{background:var(--bg-4)}
.q-mcal__mc.today span:first-child{width:16px;height:16px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700}
.q-mcal__mpip{width:4px;height:4px;border-radius:50%}
/* cards */
.q-mcal__cards{display:flex;flex-direction:column;gap:8px;padding-bottom:16px}
.q-mcal__card{border-radius:10px;padding:12px 14px;background:var(--bg-2);border:1px solid var(--line);border-left-width:4px;cursor:pointer;transition:background .12s}
.q-mcal__card:active{background:var(--bg-3)}
.q-mcal__card--train{border-left-color:var(--cal-train)}
.q-mcal__card--match{border-left-color:var(--cal-match)}
.q-mcal__card--recov{border-left-color:var(--cal-recov)}
.q-mcal__card--libre{border-left-color:var(--cal-libre)}
.q-mcal__card--empty{border-left-color:var(--line);cursor:pointer}
.q-mcal__card.today{background:var(--accent-soft)}
.q-mcal__ch{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
.q-mcal__clbl{font-size:12px;font-weight:700;color:var(--text-0)}
.q-mcal__cplan{font-size:13px;color:var(--text-0);font-weight:500;margin-bottom:6px}
.q-mcal__cempty{font-size:12px;color:var(--text-2)}
.q-mcal__cmet{display:flex;align-items:center;gap:12px;margin-top:4px}
.q-mcal__cmet span{display:flex;align-items:center;gap:3px;font-size:11.5px;color:var(--text-2);font-family:var(--font-mono)}
.q-mcal__cmet span.load{color:var(--warn)}

/* ── TESTS HUB ───────────────────────────────────────────── */
.q-test-hub{padding:0 0 80px;}
.q-test-type-nav{display:flex;gap:6px;flex-wrap:wrap;padding:12px 16px 8px;}
.q-test-pill{padding:6px 14px;border-radius:var(--r-pill);border:1px solid var(--line);background:var(--bg-3);color:var(--text-1);font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;font-family:var(--font-ui);transition:background .12s,color .12s;}
.q-test-pill:hover{color:var(--text-0);background:var(--bg-4);}
.q-test-pill.active{background:var(--accent);border-color:transparent;color:#1A0D02;}
.q-test-controls{padding:0 16px 10px;display:flex;gap:8px;align-items:center;}
.q-test-pos-select{width:auto;min-width:140px;font-size:12px;padding:6px 10px;}
.q-vam-zones{display:flex;flex-direction:column;gap:4px;}
.q-vam-zone-row{display:grid;grid-template-columns:34px 1fr auto auto auto;align-items:center;gap:8px;padding:6px 8px;background:var(--bg-2);border-radius:var(--r-2);}
.q-vam-zone-tag{font-size:10px;font-weight:700;padding:2px 5px;border-radius:4px;text-align:center;letter-spacing:.02em;}
.q-vam-zone-label{font-size:12px;color:var(--text-1);}
.q-vam-zone-pct{font-size:11px;color:var(--text-2);font-family:var(--font-mono);}
.q-vam-zone-range{font-size:11px;font-weight:600;color:var(--text-0);font-family:var(--font-mono);}
.q-vam-thresholds{display:flex;flex-direction:column;gap:3px;}
.q-vam-threshold-row{display:grid;grid-template-columns:1fr auto auto auto auto;align-items:center;gap:8px;padding:5px 8px;background:var(--bg-2);border-radius:var(--r-2);border-left:2px solid var(--accent);}
.q-vam-threshold-label{font-size:11px;color:var(--text-1);}
.q-vam-threshold-pct{font-size:10px;color:var(--text-3);font-family:var(--font-mono);}
.q-vam-threshold-val{font-size:11px;font-weight:600;color:var(--text-0);font-family:var(--font-mono);}
.q-vam-threshold-note{font-size:10px;color:var(--text-3);font-family:var(--font-mono);}
.q-test-compare-seg{display:flex;border:1px solid var(--line);border-radius:6px;overflow:hidden;flex-shrink:0;}
.q-test-compare-btn{background:transparent;border:none;padding:5px 12px;font-size:11px;font-weight:500;color:var(--text-2);cursor:pointer;transition:background .15s,color .15s;white-space:nowrap;}
.q-test-compare-btn:hover{background:var(--bg-3);}
.q-test-compare-btn.active{background:var(--bg-3);color:var(--text-0);font-weight:600;}
.q-test-table-card{margin:0 0 16px;}
.q-test-count{font-size:11px;font-weight:400;color:var(--text-2);margin-left:6px;}
.q-test-table{width:100%;border-collapse:collapse;font-size:13px;}
.q-test-table th{padding:8px 12px;text-align:right;font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-2);font-weight:600;border-bottom:1px solid var(--line);white-space:nowrap;}
.q-test-table th:first-child{text-align:left;}
.q-test-th-unit{font-size:9px;color:var(--text-3);font-weight:400;}
.q-test-row{border-bottom:1px solid var(--line);transition:background .1s;}
.q-test-row:hover{background:var(--bg-3);}
.q-test-row.no-data{opacity:.65;}
.q-test-name-cell{padding:10px 12px;display:flex;align-items:center;gap:9px;}
.q-test-avatar{width:28px;height:28px;border-radius:50%;background:var(--catc,var(--bg-4));display:grid;place-items:center;font:700 10px var(--font-display);color:#1A0D02;flex-shrink:0;}
.q-test-player-name{font-size:13px;font-weight:500;}
.q-test-player-pos{font-size:10px;color:var(--text-2);}
.q-test-val-cell{padding:10px 12px;text-align:right;font-family:var(--font-mono);font-size:14px;color:var(--text-0);font-variant-numeric:tabular-nums;font-feature-settings:"tnum";white-space:nowrap;}
.q-test-no-data{padding:10px 12px;text-align:right;color:var(--text-3);font-size:14px;font-family:var(--font-mono);}
.q-test-date-cell{padding:10px 12px;text-align:right;font-size:11px;color:var(--text-2);white-space:nowrap;font-family:var(--font-mono);}
.q-test-badge-missing{background:var(--bg-4);color:var(--text-3);font-size:10px;padding:2px 7px;border-radius:var(--r-pill);}
.q-test-delta{font-size:10px;margin-left:5px;font-family:var(--font-mono);font-weight:500;padding:1px 5px;border-radius:5px;font-variant-numeric:tabular-nums;}
.q-test-delta.good{color:var(--ok);background:var(--ok-soft);}
.q-test-delta.bad{color:var(--bad);background:var(--bad-soft);}
.q-test-avg-row td{padding:9px 12px;text-align:right;font-size:12px;font-weight:500;color:var(--text-1);border-top:1px solid var(--line-strong);background:var(--bg-1);font-family:var(--font-mono);font-variant-numeric:tabular-nums;}
.q-test-avg-row td:first-child{text-align:left;}
.q-test-avg-cell{padding:8px 12px;text-align:right;font-family:var(--font-mono);font-size:13px;font-weight:600;color:var(--text-1);font-feature-settings:"tnum";}
.q-test-panel-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:200;display:flex;justify-content:flex-end;}
.q-test-panel{width:min(420px,100vw);height:100%;background:var(--bg-1);border-left:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden;}
.q-test-panel__head{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;background:var(--bg-2);}
.q-test-panel__body{flex:1;overflow-y:auto;padding:0;}
.q-test-panel-section{padding:16px;border-bottom:1px solid var(--line);}
.q-test-panel-section-title{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-2);font-weight:600;margin-bottom:12px;}
.q-test-hist-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);}
.q-test-hist-row:last-child{border-bottom:0;}
.q-test-hist-row.editing{background:var(--bg-3);margin:0 -16px;padding:8px 16px;}
.q-test-hist-info{flex:1;min-width:0;}
.q-test-hist-date{font-size:12px;font-weight:600;color:var(--text-1);display:block;}
.q-test-hist-summary{font-size:11px;color:var(--text-2);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.q-test-hist-actions{display:flex;gap:4px;flex-shrink:0;}
.q-test-evo-delta{display:flex;flex-direction:column;gap:5px;}
.q-test-evo-row{display:grid;grid-template-columns:1fr auto auto auto auto;align-items:center;gap:8px;padding:6px 10px;background:var(--bg-3);border-radius:var(--r-2);}
.q-test-evo-label{font-size:12px;color:var(--text-1);font-weight:500;}
.q-test-evo-prev{font-size:11px;color:var(--text-2);font-family:var(--font-mono);}
.q-test-evo-curr{font-size:12px;color:var(--text-0);font-weight:700;font-family:var(--font-mono);}
.q-test-evo-diff{font-size:11px;font-weight:700;font-family:var(--font-mono);white-space:nowrap;min-width:40px;text-align:right;}
@media(max-width:600px){.q-test-panel{width:100vw;}.q-test-type-nav{gap:4px;padding:10px 10px 6px;}.q-test-pill{padding:5px 10px;font-size:11px;}}
.q-test-subtype-nav{display:flex;gap:4px;padding:2px 16px 10px;border-bottom:1px solid var(--line);margin-bottom:4px;}
.q-test-sub-pill{padding:4px 12px;border-radius:var(--r-pill);border:1px solid var(--line);background:transparent;color:var(--text-2);font-size:11px;font-weight:600;cursor:pointer;font-family:var(--font-ui);}
.q-test-sub-pill.active{background:var(--bg-3);border-color:var(--accent);color:var(--accent);}
.q-test-form-sec{font-size:10px;color:var(--text-2);text-transform:uppercase;letter-spacing:.06em;font-weight:600;margin:10px 0 6px;padding-top:6px;border-top:1px solid var(--line);}
.q-test-form-sec:first-child{border-top:0;margin-top:0;padding-top:0;}
.q-pdf-modal{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-2);width:min(480px,95vw);max-height:85vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 8px 32px rgba(0,0,0,.4);}
.q-pdf-modal__head{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;font-size:14px;font-weight:600;background:var(--bg-2);}
.q-pdf-modal__body{flex:1;overflow-y:auto;padding:16px;}
.q-pdf-modal__foot{padding:12px 16px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end;flex-shrink:0;background:var(--bg-2);}
.q-pdf-group-title{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-2);font-weight:700;margin-bottom:8px;}
.q-pdf-checks-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:8px;}
.q-pdf-check{display:flex;align-items:center;gap:6px;font-size:13px;cursor:pointer;padding:4px 6px;border-radius:var(--r-1);}
.q-pdf-check:hover{background:var(--bg-3);}
.q-pdf-check input{accent-color:var(--accent);cursor:pointer;flex-shrink:0;}
.q-pdf-antro-wrap{border:1px solid var(--line);border-radius:var(--r-1);padding:8px 10px;}
.q-pdf-antro-subs{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px;padding-left:20px;}
.q-pdf-check--sub{font-size:12px;color:var(--text-2);}
.q-pdf-checks-players{display:grid;grid-template-columns:repeat(2,1fr);gap:4px;max-height:180px;overflow-y:auto;border:1px solid var(--line);border-radius:var(--r-1);padding:8px;}

/* ════════════════════════════════════════════════════════════
   ATLETA V2 · Componentes P1 "Hoy" (dirección B + injertos A)
   ════════════════════════════════════════════════════════════ */
.apv-body{padding:8px 20px 20px;display:flex;flex-direction:column;gap:16px}
.apv-greet .hi{font-family:var(--font-display);font-weight:600;font-size:28px;letter-spacing:-.025em;color:var(--text-0);line-height:1.15}
.apv-greet .date{color:var(--text-2);font-size:13px;margin-top:3px}
/* Chips estado (color + palabra) */
.apv-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;font-size:12.5px;font-weight:600;font-family:var(--font-ui)}
.apv-chip .dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex-shrink:0}
.apv-chip--good{background:var(--ok-soft);color:var(--ok)}
.apv-chip--warn{background:var(--warn-soft);color:var(--warn)}
.apv-chip--bad{background:var(--bad-soft);color:var(--bad)}
.apv-chip--info{background:var(--info-soft);color:var(--info)}
.apv-chip--neutral{background:var(--bg-4);color:var(--text-1)}
/* Botones */
.apv-btn{font-family:var(--font-ui);font-weight:600;font-size:15px;border:0;border-radius:var(--r-3);padding:15px 20px;width:100%;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;letter-spacing:-.01em}
.apv-btn svg{width:18px;height:18px}
.apv-btn--primary{background:var(--accent);color:#1A0D02}
.apv-btn--primary:active{background:var(--accent-press)}
.apv-btn--ghost{background:transparent;color:var(--text-1);box-shadow:inset 0 0 0 1px var(--line-strong)}
.apv-btn--ghost:active{background:var(--bg-2)}
.apv-link{background:none;border:none;color:var(--text-2);font-size:12.5px;cursor:pointer;font-family:var(--font-ui);text-decoration:underline;text-underline-offset:3px;padding:4px;align-self:center}
/* Sliders wellness — número héroe a la izquierda */
.apv-sl{display:flex;gap:16px;align-items:center;padding:13px 0;border-bottom:1px solid var(--line)}
.apv-sl.last{border-bottom:0}
.apv-sl .n{font-family:var(--font-display);font-weight:700;font-size:38px;letter-spacing:-.03em;width:54px;text-align:center;flex:0 0 auto;line-height:1}
.apv-sl .c{flex:1;min-width:0}
.apv-sl .lb{font-size:15px;font-weight:500;color:var(--text-0)}
.apv-sl .desc{font-size:12px;color:var(--text-2);margin:1px 0 8px;min-height:15px}
.apv-range{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:999px;outline:none;cursor:pointer;display:block;background:linear-gradient(to right,var(--track,#857D72) var(--pct,50%),var(--bg-4) var(--pct,50%))}
.apv-range::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:var(--track,#857D72);border:none;box-shadow:0 0 0 4px var(--bg-0);cursor:pointer}
.apv-range::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--track,#857D72);border:none;box-shadow:0 0 0 4px var(--bg-0);cursor:pointer}
/* Zonas de dolor */
.apv-zones{margin:2px 0;padding:14px;background:var(--bg-2);border-radius:var(--r-3)}
.apv-zones .zh{font-size:13px;color:var(--text-1);margin-bottom:10px}
.apv-zrow{display:flex;flex-wrap:wrap;gap:8px}
.apv-zchip{padding:7px 13px;border-radius:999px;font-size:13px;font-weight:500;background:var(--bg-3);color:var(--text-1);border:1px solid var(--line-strong);cursor:pointer;font-family:var(--font-ui)}
.apv-zchip.on{background:var(--bad-soft);color:var(--bad);border-color:rgba(240,102,107,.3)}
/* Hero número (estado 2 y cierre) */
.apv-hero{text-align:center;padding:12px 0 2px}
.apv-hero .big{font-family:var(--font-display);font-weight:700;font-size:96px;line-height:.85;letter-spacing:-.05em}
.apv-hero .cap{font-family:var(--font-mono);font-size:12px;color:var(--text-2);margin-top:8px}
.apv-hero .chiprow{margin-top:12px}
.apv-dimrow{display:flex;justify-content:center;gap:22px;margin-top:16px;flex-wrap:wrap}
.apv-dimrow .d{text-align:center}
.apv-dimrow .dn{font-family:var(--font-display);font-weight:700;font-size:20px}
.apv-dimrow .dk{font-size:10.5px;color:var(--text-2);margin-top:2px}
/* Rutina protagonista + teaser strip */
.apv-rhero{background:radial-gradient(120% 90% at 100% 0%,rgba(249,115,22,.10),transparent 55%),var(--bg-3);border:1px solid var(--line-strong);border-radius:var(--r-5);padding:20px}
.apv-rhero .k{font-family:var(--font-mono);font-size:11px;color:var(--accent);margin-bottom:6px}
.apv-rhero .n{font-family:var(--font-display);font-weight:700;font-size:23px;letter-spacing:-.02em;color:var(--text-0)}
.apv-rhero .m{font-size:13px;color:var(--text-1);margin-top:4px;font-family:var(--font-mono)}
.apv-rhero .apv-btn{margin-top:18px}
.apv-strip{display:flex;align-items:center;gap:14px;padding:15px 18px;border-radius:var(--r-3);background:var(--bg-2);border:1px solid var(--line);cursor:pointer;width:100%;text-align:left;font-family:var(--font-ui)}
.apv-strip .k{font-family:var(--font-mono);font-size:11px;color:var(--accent)}
.apv-strip .n{font-family:var(--font-display);font-weight:700;font-size:18px;letter-spacing:-.02em;color:var(--text-0);margin-top:2px}
.apv-strip .m{font-size:12px;color:var(--text-2);font-family:var(--font-mono);margin-top:2px}
.apv-strip .go{margin-left:auto;width:38px;height:38px;border-radius:50%;background:var(--accent);color:#1A0D02;display:grid;place-items:center;flex:0 0 auto}
/* RPE */
.apv-rpehero{text-align:center;padding:2px 0 0}
.apv-rpehero .big{font-family:var(--font-display);font-weight:700;font-size:80px;line-height:.9;letter-spacing:-.05em}
.apv-rpehero .cap{font-family:var(--font-mono);font-size:12px;color:var(--text-2);margin-top:6px}
.apv-rpescale{height:8px;border-radius:999px;margin:14px 0 12px;background:linear-gradient(90deg,#4FC98A,#F2B33D 55%,#F0666B)}
.apv-rpegrid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
.apv-rpegrid .lbl{display:grid;place-items:center}
.apv-rpebtn{aspect-ratio:1;border-radius:var(--r-2);border:1px solid var(--line-strong);background:var(--bg-3);color:var(--text-1);font-family:var(--font-display);font-weight:700;font-size:18px;display:grid;place-items:center;cursor:pointer;transition:transform .1s}
.apv-rpebtn:active{transform:scale(.93)}
.apv-rpebtn.on{color:#1A0D02;border-color:transparent}
.apv-rpelegend{display:flex;justify-content:space-between;font-size:11px;color:var(--text-2);margin-top:10px}
/* Input numérico grande + stepper */
.apv-numin{display:flex;align-items:center;justify-content:space-between;background:var(--bg-3);border-radius:var(--r-3);padding:12px 16px;border:1px solid var(--line);gap:10px}
.apv-numin .k{font-size:13px;color:var(--text-1)}
.apv-numin .field{display:flex;align-items:baseline;gap:6px}
.apv-numin input{width:84px;background:transparent;border:none;outline:none;color:var(--text-0);font-family:var(--font-display);font-weight:700;font-size:34px;letter-spacing:-.03em;text-align:right;padding:0;-moz-appearance:textfield}
.apv-numin input::-webkit-outer-spin-button,.apv-numin input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.apv-numin input::placeholder{color:var(--text-3)}
.apv-numin .u{font-family:var(--font-mono);font-size:13px;color:var(--text-2)}
.apv-step{display:flex;gap:6px}
.apv-step button{width:38px;height:38px;border-radius:var(--r-2);border:1px solid var(--line-strong);background:var(--bg-4);color:var(--text-0);font-size:20px;cursor:pointer;line-height:1}
/* Cierre del día */
.apv-close .huge{font-family:var(--font-display);font-weight:700;font-size:92px;line-height:.9;letter-spacing:-.05em;color:var(--accent)}
.apv-close .u{font-family:var(--font-mono);font-size:13px;color:var(--text-2);margin-top:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.apv-bars{display:flex;align-items:flex-end;gap:6px;height:60px;margin-top:14px}
.apv-bars .bar{flex:1;border-radius:4px 4px 0 0;background:var(--bg-4);min-height:3px}
.apv-bars .bar.hi{background:var(--accent)}
.apv-barcap{font-family:var(--font-mono);font-size:10.5px;color:var(--text-2);margin-top:4px}
.apv-msg{font-size:14px;color:var(--text-1);line-height:1.5}
.apv-msg b{color:var(--text-0);font-weight:600}
.apv-metric{background:var(--bg-2);border-radius:var(--r-3);padding:14px 16px;border:1px solid var(--line);flex:1;min-width:0}
.apv-metric .k{font-size:12px;color:var(--text-1)}
.apv-metric .v{font-family:var(--font-display);font-weight:700;font-size:32px;letter-spacing:-.03em;margin-top:4px;color:var(--text-0)}
.apv-metric .u{font-family:var(--font-mono);font-size:13px;color:var(--text-2)}
/* Card genérica + turnos + jornada */
.apv-card{background:var(--bg-2);border-radius:var(--r-3);padding:14px}
.apv-turno{display:flex;align-items:center;gap:10px;margin-bottom:-6px}
.apv-turno .t{font-family:var(--font-display);font-weight:600;font-size:15px;color:var(--text-0)}
.apv-turno .ln{flex:1;height:1px;background:var(--line)}
.apv-turno .m{font-family:var(--font-mono);font-size:11px;color:var(--text-2)}
.apv-jornada{display:flex;align-items:center;justify-content:space-between;background:var(--bg-3);border:1px solid var(--line-strong);border-radius:var(--r-3);padding:14px 16px;gap:10px}
.apv-jornada .k{font-size:12px;color:var(--text-2)}
.apv-jornada .v{font-family:var(--font-display);font-weight:700;font-size:20px;color:var(--text-0);margin-top:2px}
/* Ciclo menstrual */
.apv-cycle{display:flex;gap:14px;align-items:center;padding:14px 16px;background:var(--bg-2);border-radius:var(--r-3);border:1px solid var(--line)}
.apv-cycle .ph{width:42px;height:42px;border-radius:50%;flex:0 0 auto;position:relative;display:grid;place-items:center}
.apv-cycle .ph::after{content:"";position:absolute;inset:6px;border-radius:50%;background:var(--bg-2)}
.apv-cycle .ph b{position:relative;font-family:var(--font-mono);font-size:11px;z-index:1}
.apv-cycle .c{flex:1;min-width:0}
.apv-cycle .n{font-weight:600;font-size:14px;color:var(--text-0)}
.apv-cycle .tip{font-size:12px;color:var(--text-1);margin-top:3px;line-height:1.4}
.apv-cycle .gear{background:none;border:none;color:var(--text-2);cursor:pointer;padding:6px;flex-shrink:0;line-height:0}
.apv-body .ap-push-banner{margin:0}

/* ════════════════════════════════════════════════════════════
   ATLETA V2 · Componentes P2 "Rutinas" + celebración + vacío
   ════════════════════════════════════════════════════════════ */
/* Navegación por día */
.apv-daynav{display:flex;align-items:center;gap:8px;margin-bottom:2px}
.apv-daynav .arr{width:40px;height:40px;border-radius:var(--r-2);background:var(--bg-2);border:1px solid var(--line);display:grid;place-items:center;color:var(--text-1);cursor:pointer;flex:0 0 auto}
.apv-daynav .arr:active{background:var(--bg-3)}
.apv-daynav .arr svg{width:20px;height:20px}
.apv-daynav .mid{flex:1;text-align:center}
.apv-daynav .mid .d{font-family:var(--font-display);font-weight:600;font-size:16px;color:var(--text-0)}
.apv-badgeday{display:inline-block;margin-top:3px;font-size:10px;font-weight:700;letter-spacing:.05em;padding:2px 9px;border-radius:999px;font-family:var(--font-ui)}
.apv-badgeday.now{background:var(--accent-soft);color:var(--accent)}
.apv-badgeday.past{background:var(--bg-4);color:var(--text-2)}
.apv-badgeday.next{background:var(--info-soft);color:var(--info)}
.apv-todaylink{display:block;text-align:center;margin:4px 0;color:var(--accent);font-size:12.5px;background:none;border:none;cursor:pointer;width:100%;font-family:var(--font-ui)}
/* Header de sesión */
.apv-sesshead{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin:10px 0 2px}
.apv-sesshead .nm{font-family:var(--font-display);font-weight:700;font-size:20px;letter-spacing:-.02em;color:var(--text-0)}
.apv-sesshead .mt{font-family:var(--font-mono);font-size:11.5px;color:var(--text-2);margin-top:3px}
/* Barra de progreso de sesión */
.apv-sessprog{margin:8px 0 4px}
.apv-sessprog .top{display:flex;justify-content:space-between;font-size:12px;margin-bottom:6px}
.apv-sessprog .top .l{color:var(--text-1)}
.apv-sessprog .top .p{font-family:var(--font-display);font-weight:700;color:var(--text-1)}
.apv-sessprog .track{height:7px;border-radius:999px;background:var(--bg-3);overflow:hidden}
.apv-sessprog .fill{height:100%;border-radius:999px;background:var(--accent);transition:width .3s}
/* Bloque */
.apv-block{background:var(--bg-2);border-radius:var(--r-3);overflow:hidden;margin-bottom:10px;border:1px solid var(--line)}
.apv-block-h{display:flex;align-items:center;gap:11px;padding:13px 14px;cursor:pointer;user-select:none}
.apv-donecheck{width:26px;height:26px;border-radius:8px;border:1.5px solid var(--line-strong);display:grid;place-items:center;flex:0 0 auto;color:transparent;background:transparent;cursor:pointer;transition:all .15s}
.apv-donecheck svg{width:15px;height:15px}
.apv-donecheck.on{background:var(--ok);border-color:var(--ok);color:#0B0A08}
.apv-btag{font-family:var(--font-display);font-weight:700;font-size:10.5px;letter-spacing:.03em;padding:4px 9px;border-radius:7px;flex:0 0 auto;text-transform:uppercase}
.apv-bname{flex:1;min-width:0}
.apv-bname .n{font-size:14px;font-weight:600;color:var(--text-0);line-height:1.2}
.apv-dse-timing{font-family:var(--font-mono);font-size:11px;color:var(--text-2);margin-top:2px}
.apv-bcnt{font-family:var(--font-mono);font-size:11px;color:var(--text-2);flex:0 0 auto}
.apv-chev{color:var(--text-2);transition:transform .2s;flex:0 0 auto;display:flex}
.apv-chev svg{width:18px;height:18px}
.apv-block.open .apv-chev{transform:rotate(180deg)}
.apv-block--done .apv-block-h .apv-bname .n,.apv-block--done .apv-btag{opacity:.6}
.apv-block-body{padding:0 14px 4px}
/* Ejercicio */
.apv-ex{padding:13px 0;border-top:1px solid var(--line)}
.apv-ex-top{display:flex;gap:11px;align-items:center}
.apv-ex-thumb{width:54px;height:40px;border-radius:8px;background:var(--bg-4);flex:0 0 auto;position:relative;overflow:hidden;background-size:cover;background-position:center;cursor:pointer;border:none;padding:0}
.apv-ex-thumb .play{position:absolute;inset:0;display:grid;place-items:center;color:#fff}
.apv-ex-thumb .play svg{width:18px;height:18px;filter:drop-shadow(0 1px 3px rgba(0,0,0,.7))}
.apv-ex-thumb.novid{cursor:default;color:var(--text-2)}
.apv-ex-info{flex:1;min-width:0}
.apv-ex-name{font-size:14px;font-weight:600;color:var(--text-0);line-height:1.25}
.apv-ex-presc{font-family:var(--font-mono);font-size:11.5px;color:var(--text-2);margin-top:3px}
.apv-ex-presc b{color:var(--accent);font-weight:600}
.apv-sets{display:flex;flex-direction:column;gap:7px;margin-top:11px}
.apv-setrow{display:flex;align-items:center;gap:8px}
.apv-sn{font-family:var(--font-mono);font-size:11px;color:var(--text-2);width:22px;flex:0 0 auto}
.apv-setin{flex:1;display:flex;align-items:baseline;gap:5px;background:var(--bg-3);border:1px solid var(--line-strong);border-radius:9px;padding:8px 12px}
.apv-setin input{width:100%;min-width:0;background:transparent;border:none;outline:none;color:var(--text-0);font-family:var(--font-display);font-weight:700;font-size:17px;-moz-appearance:textfield}
.apv-setin input::-webkit-outer-spin-button,.apv-setin input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.apv-setin input::placeholder{color:var(--text-3)}
.apv-setin .u{font-family:var(--font-mono);font-size:11px;color:var(--text-2);flex:0 0 auto}
.apv-setin.time{justify-content:center;color:var(--text-1);font-family:var(--font-display);font-weight:700;font-size:16px}
.apv-setx{color:var(--text-3);font-size:13px;flex:0 0 auto}
.apv-note{width:100%;margin-top:10px;background:var(--bg-3);border:1px solid var(--line);border-radius:10px;padding:9px 12px;color:var(--text-1);font-family:var(--font-ui);font-size:12.5px;resize:none;outline:none}
.apv-note::placeholder{color:var(--text-3)}
.apv-note-ro{margin-top:10px;background:var(--bg-3);border-radius:10px;padding:9px 12px;color:var(--text-1);font-size:12.5px;line-height:1.4}
/* Botón completar con progreso */
.apv-complete{margin-top:6px}
.apv-complete:disabled{background:var(--bg-3);color:var(--text-2);cursor:default}
/* Celebración (momento firma) */
.apv-overlay{position:fixed;inset:0;background:var(--bg-0);z-index:200;display:flex;flex-direction:column;justify-content:center;padding:32px 24px;max-width:480px;margin:0 auto;left:50%;transform:translateX(-50%)}
.apv-celebrate{text-align:center;display:flex;flex-direction:column;align-items:center}
.apv-bigcheck{width:88px;height:88px;border-radius:50%;background:var(--ok);color:#0B0A08;display:grid;place-items:center;margin-bottom:16px;animation:apvpop .45s cubic-bezier(.2,.9,.3,1.5)}
.apv-bigcheck svg{width:44px;height:44px}
@keyframes apvpop{0%{transform:scale(0);opacity:0}60%{transform:scale(1.12)}100%{transform:scale(1);opacity:1}}
.apv-cel-ti{font-family:var(--font-display);font-weight:700;font-size:27px;letter-spacing:-.02em;color:var(--text-0)}
.apv-cel-st{font-family:var(--font-mono);font-size:12px;color:var(--text-2);margin-top:4px}
.apv-cel-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%;margin-top:24px}
.apv-cel-stat{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3);padding:15px}
.apv-cel-stat .v{font-family:var(--font-display);font-weight:700;font-size:30px;letter-spacing:-.03em;color:var(--accent);line-height:1}
.apv-cel-stat .v .u{font-size:14px;color:var(--text-2);font-weight:600}
.apv-cel-stat .k{font-size:11px;color:var(--text-2);margin-top:5px}
.apv-overlay .apv-btn{margin-top:0}
.apv-overlay .apv-btn+.apv-btn{margin-top:10px}
/* Estado vacío */
.apv-empty{text-align:center;padding:44px 24px;display:flex;flex-direction:column;align-items:center;gap:10px}
.apv-empty .ic{width:64px;height:64px;border-radius:50%;background:var(--bg-2);display:grid;place-items:center;color:var(--text-2);margin-bottom:4px}
.apv-empty .ic svg{width:28px;height:28px}
.apv-empty .t{font-family:var(--font-display);font-weight:600;font-size:18px;color:var(--text-0)}
.apv-empty .d{font-size:13px;color:var(--text-1);line-height:1.5;max-width:290px}

/* ════════════════════════════════════════════════════════════
   ATLETA V2 · Componentes P3 "Progreso"
   ════════════════════════════════════════════════════════════ */
.apv-prog{padding:8px 20px 24px;display:flex;flex-direction:column;gap:24px}
.apv-psec{display:flex;flex-direction:column}
.apv-psec-h{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:12px}
.apv-psec-h .t{font-family:var(--font-display);font-weight:600;font-size:17px;letter-spacing:-.02em;color:var(--text-0)}
.apv-psec-h .m{font-family:var(--font-mono);font-size:11px;color:var(--text-2)}
/* Héroes */
.apv-heroes{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.apv-herocard{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3);padding:16px}
.apv-herocard.lead{background:radial-gradient(120% 100% at 100% 0%,rgba(249,115,22,.12),transparent 60%),var(--bg-2);border-color:var(--line-strong)}
.apv-herocard .k{font-size:11.5px;color:var(--text-2)}
.apv-herocard .v{font-family:var(--font-display);font-weight:700;font-size:36px;letter-spacing:-.03em;color:var(--text-0);line-height:1;margin-top:6px}
.apv-herocard.lead .v{color:var(--accent)}
.apv-herocard .v .u{font-family:var(--font-mono);font-size:15px;color:var(--text-2);font-weight:600}
.apv-herocard .d{font-size:11px;color:var(--text-2);margin-top:6px}
.apv-herocard .d.up{color:var(--ok);font-family:var(--font-mono)}
/* Card genérica de progreso */
.apv-pcard{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3);padding:16px}
.apv-load-state{display:flex;align-items:center;justify-content:space-between;gap:10px}
.apv-load-state .tech{font-family:var(--font-mono);font-size:10.5px;color:var(--text-2)}
.apv-prog canvas{margin-top:6px}
/* Bienestar */
.apv-wsum-inline{display:flex;align-items:baseline;gap:10px;margin-bottom:14px}
.apv-wsum-inline .big{font-family:var(--font-display);font-weight:700;font-size:40px;letter-spacing:-.03em;line-height:1}
.apv-wsum-inline .lab{font-size:12.5px;color:var(--text-1)}
.apv-wdims{display:flex;gap:6px;margin-bottom:6px}
.apv-wdim{flex:1;background:var(--bg-3);border-radius:var(--r-2);padding:9px 4px;text-align:center}
.apv-wdim .n{font-family:var(--font-display);font-weight:700;font-size:17px}
.apv-wdim .k{font-size:9.5px;color:var(--text-2);margin-top:1px}
/* Selector de ejercicio (pills) */
.apv-exsel{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:12px}
.apv-exsel .p{padding:6px 13px;border-radius:999px;font-size:12.5px;font-weight:500;background:var(--bg-3);color:var(--text-1);border:1px solid var(--line-strong);cursor:pointer;font-family:var(--font-ui);white-space:nowrap}
.apv-exsel .p.on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-line)}
.apv-weighthero{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}
.apv-weighthero .v{font-family:var(--font-display);font-weight:700;font-size:34px;letter-spacing:-.03em;color:var(--accent);line-height:1}
.apv-weighthero .v .u{font-family:var(--font-mono);font-size:13px;color:var(--text-2);font-weight:400}
.apv-weighthero .delta{font-family:var(--font-mono);font-size:11px;color:var(--ok)}
/* Calendario */
.apv-attnum{display:flex;align-items:baseline;gap:10px;margin-bottom:14px}
.apv-attnum .big{font-family:var(--font-display);font-weight:700;font-size:40px;letter-spacing:-.03em;line-height:1;color:var(--text-0)}
.apv-attnum .lab{font-size:12.5px;color:var(--text-1)}
.apv-calnav{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.apv-calnav .arr{width:32px;height:32px;border-radius:9px;background:var(--bg-3);display:grid;place-items:center;color:var(--text-1);cursor:pointer}
.apv-calnav .arr svg{width:18px;height:18px}
.apv-calnav .arr.dim{opacity:.3;cursor:default}
.apv-calnav .m{font-family:var(--font-display);font-weight:600;font-size:15px;color:var(--text-0)}
.apv-calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.apv-caldow{text-align:center;font-family:var(--font-mono);font-size:9px;color:var(--text-3);padding:2px 0}
.apv-calday{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:12px;color:var(--text-1);position:relative;gap:3px}
.apv-calday.out{color:var(--text-3);opacity:.4}
.apv-calday.today{background:var(--accent);color:#1A0D02;border-radius:9px;font-weight:700}
.apv-cdot{width:5px;height:5px;border-radius:50%;background:transparent}
.apv-cdot.pres{background:var(--ok)}
.apv-cdot.aus{background:var(--bad)}
.apv-cdot.just{background:var(--warn)}
.apv-cin{position:absolute;top:5px;right:5px;width:4px;height:4px;border-radius:50%;background:var(--info)}
.apv-callegend{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.apv-callegend .l{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--text-2)}
.apv-callegend .l .d{width:7px;height:7px;border-radius:50%}
.apv-calcycle{display:flex;align-items:center;gap:10px;margin-top:12px}
.apv-calcycle .bar{flex:1;display:flex;height:6px;border-radius:999px;overflow:hidden}
.apv-calcycle .bar span{height:100%}
/* Mi cuerpo */
.apv-seclabel{font-family:var(--font-mono);font-size:11px;color:var(--accent);margin-bottom:12px;letter-spacing:.02em}
.apv-bodygrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.apv-bodycell .k{font-size:11px;color:var(--text-2)}
.apv-bodycell .v{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:-.02em;color:var(--text-0);margin-top:3px}
.apv-bodycell .v .u{font-family:var(--font-mono);font-size:12px;color:var(--text-2);font-weight:400}
.apv-bodycell .sub2{font-size:10px;color:var(--text-3);margin-top:2px}
.apv-jumprow{display:flex;gap:8px;flex-wrap:wrap}
.apv-jump{flex:1;min-width:64px;text-align:center}
.apv-jump .v{font-family:var(--font-display);font-weight:700;font-size:22px;color:var(--text-0);letter-spacing:-.02em}
.apv-jump .v .u{font-family:var(--font-mono);font-size:11px;color:var(--text-2);font-weight:400}
.apv-jump .k{font-size:9.5px;color:var(--text-2);margin-top:3px}
.apv-mobrow{display:flex;align-items:center;gap:14px}
.apv-mobrow .score{font-family:var(--font-display);font-weight:700;font-size:32px;letter-spacing:-.03em;color:var(--text-0)}
.apv-mobrow .score .u{font-family:var(--font-mono);font-size:13px;color:var(--text-2);font-weight:400}
.apv-injury{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--line)}
.apv-injury:first-of-type{border-top:0}
.apv-injury .sev{width:4px;align-self:stretch;border-radius:3px;flex:0 0 auto;min-height:34px}
.apv-injury .in{flex:1;min-width:0}
.apv-injury .in .n{font-size:13px;font-weight:600;color:var(--text-0)}
.apv-injury .in .m{font-size:11px;color:var(--text-2);margin-top:2px}
.apv-prog-empty{text-align:center;padding:20px 16px;font-size:13px;color:var(--text-2)}

/* ════════════════════════════════════════════════════════════
   ATLETA V2 · Componentes P4 "Chrome" (onboarding + perfil)
   ════════════════════════════════════════════════════════════ */
/* Onboarding — takeover a pantalla completa */
body.athlete #ap-onboarding-overlay{background:var(--bg-0);backdrop-filter:none;-webkit-backdrop-filter:none;align-items:stretch;padding:0}
.apv-ob{flex:1;display:flex;flex-direction:column;padding:calc(env(safe-area-inset-top,0px) + 20px) 26px calc(env(safe-area-inset-bottom,0px) + 26px);max-width:480px;margin:0 auto;width:100%}
.apv-ob-top{display:flex;align-items:center;justify-content:space-between;min-height:28px}
.apv-ob-dots{display:flex;gap:7px}
.apv-ob-dots .d{width:7px;height:7px;border-radius:999px;background:var(--bg-5);transition:width .2s,background .2s}
.apv-ob-dots .d.on{width:22px;background:var(--accent)}
.apv-ob-skip{background:none;border:none;font-size:13.5px;color:var(--text-2);font-weight:500;cursor:pointer;font-family:var(--font-ui)}
.apv-ob-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px}
.apv-ob-icon{width:92px;height:92px;border-radius:26px;display:grid;place-items:center;margin-bottom:12px;background:radial-gradient(120% 100% at 30% 20%,rgba(249,115,22,.22),transparent 60%),var(--bg-3);border:1px solid var(--accent-line);color:var(--accent)}
.apv-ob-icon svg{width:42px;height:42px}
.apv-ob-title{font-family:var(--font-display);font-weight:700;font-size:27px;letter-spacing:-.03em;color:var(--text-0)}
.apv-ob-text{font-size:15px;color:var(--text-1);line-height:1.55;max-width:300px}
.apv-ob-text b{color:var(--text-0);font-weight:600}
.apv-ob .apv-btn{margin-top:8px}
/* Loop del ritual diario */
.apv-loop{position:relative;width:250px;height:214px;margin:6px auto 14px}
.apv-loop .ring{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.apv-loop .node{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:6px;width:84px}
.apv-loop .node .ic{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:var(--bg-3);border:2px solid var(--ncol);color:var(--ncol)}
.apv-loop .node .ic svg{width:25px;height:25px}
.apv-loop .node .lb{font-family:var(--font-display);font-weight:600;font-size:13.5px;color:var(--text-0)}
.apv-loop .node .cap{font-family:var(--font-mono);font-size:9.5px;color:var(--text-2);margin-top:-3px}
.apv-loop .arw{position:absolute;color:var(--text-2);transform:translate(-50%,-50%)}
.apv-loop .arw svg{width:16px;height:16px}
.apv-loop .core{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-family:var(--font-mono);font-size:9.5px;color:var(--text-2);letter-spacing:.04em;text-align:center;line-height:1.3}

/* Perfil — bottom sheet V2 */
.apv-pm-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:200}
.apv-pm-sheet{position:fixed;left:50%;transform:translateX(-50%);bottom:0;width:100%;max-width:480px;background:var(--bg-1);border-radius:26px 26px 0 0;border-top:1px solid var(--line-strong);padding:10px 22px calc(env(safe-area-inset-bottom,0px) + 26px);box-shadow:0 -20px 50px -20px rgba(0,0,0,.7);z-index:201;max-height:94vh;overflow-y:auto}
.apv-grab{width:40px;height:4px;border-radius:999px;background:var(--bg-5);margin:4px auto 16px}
.apv-pm-head{display:flex;align-items:center;gap:15px;margin-bottom:20px}
.apv-pm-av{width:64px;height:64px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:26px;color:#fff;background:linear-gradient(150deg,#F97316,#B4460C);overflow:hidden}
.apv-pm-av img{width:100%;height:100%;object-fit:cover}
.apv-pm-nm{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:-.02em;color:var(--text-0)}
.apv-pm-sub{font-size:13px;color:var(--text-1);margin-top:2px}
.apv-datalist{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3);padding:2px 16px}
.apv-drow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.apv-drow:last-child{border-bottom:0}
.apv-drow .k{font-size:13.5px;color:var(--text-2)}
.apv-drow .v{font-size:14px;font-weight:500;color:var(--text-0);text-align:right}
.apv-drow .v.mono{font-family:var(--font-mono)}
.apv-notif{display:flex;align-items:center;gap:12px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-3);padding:14px 16px;margin-top:12px}
.apv-notif .ic{color:var(--text-1);display:grid;flex:0 0 auto}
.apv-notif .ic svg{width:20px;height:20px}
.apv-notif .t{flex:1;font-size:14px;font-weight:500;color:var(--text-0)}
.apv-notif button{border:none;border-radius:999px;padding:6px 13px;font-size:12.5px;font-weight:600;cursor:pointer;font-family:var(--font-ui);white-space:nowrap}
.apv-notif .on{background:var(--accent);color:#1A0D02}
.apv-notif .off{background:transparent;color:var(--text-2);box-shadow:inset 0 0 0 1px var(--line-strong)}
.apv-pm-actions{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.apv-btn--danger{background:transparent;color:var(--bad);box-shadow:inset 0 0 0 1px rgba(240,102,107,.3)}
/* Perfil edición */
.apv-photo{display:flex;flex-direction:column;align-items:center;gap:10px;margin:6px 0 4px}
.apv-photo .av{position:relative;width:88px;height:88px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:34px;color:#fff;background:linear-gradient(150deg,#F97316,#B4460C);overflow:hidden}
.apv-photo .av img{width:100%;height:100%;object-fit:cover}
.apv-photo .cam{position:absolute;right:-2px;bottom:-2px;width:32px;height:32px;border-radius:50%;background:var(--bg-4);border:2px solid var(--bg-1);display:grid;place-items:center;color:var(--text-0);cursor:pointer}
.apv-photo .cam svg{width:16px;height:16px}
.apv-photo .lk{font-size:13px;color:var(--accent);font-weight:600}
.apv-fsec{margin-top:20px}
.apv-fsec-t{font-family:var(--font-display);font-weight:600;font-size:12px;color:var(--accent);letter-spacing:.02em;margin-bottom:12px}
.apv-ff{display:flex;flex-direction:column;gap:7px}
.apv-ff+.apv-ff{margin-top:13px}
.apv-ff .lab{font-size:12.5px;color:var(--text-1);font-weight:500}
.apv-ff .box{display:flex;align-items:center;gap:10px;background:var(--bg-2);border:1px solid var(--line-strong);border-radius:var(--r-2);padding:11px 13px}
.apv-ff .box input,.apv-ff .box select,.apv-ff .box textarea{flex:1;min-width:0;background:none;border:0;outline:none;color:var(--text-0);font-family:var(--font-ui);font-size:15px;resize:none}
.apv-ff .box select{appearance:none;cursor:pointer}
.apv-ff .box textarea{line-height:1.4}
.apv-ff .box input::placeholder,.apv-ff .box textarea::placeholder{color:var(--text-3)}
.apv-ff .box input[type=date]::-webkit-calendar-picker-indicator{filter:invert(.7)}
.apv-pm-formbtns{display:flex;gap:10px;margin-top:22px}
.apv-pm-formbtns .apv-btn{flex:1}

/* ══════════════════════════════════════════════════════════════ */
/* ██  QOORELIVE — VISTA EN VIVO · diseño CD (Dirección A)     ██ */
/* ══════════════════════════════════════════════════════════════ */
/* "El tablero del banco de suplentes". Se usa PARADO, tablet en una mano,
   a un brazo de distancia, mirando la cancha y no la pantalla.
   Portado del output de Claude Design. Cambios respecto del original:
   · tokens propios (--tx-* → --text-*, --good → --ok, --orange → --accent)
   · radios remapeados: CD usa --r-3 ≈ 16px y acá --r-3 son 8px, así que
     los mapeo a --r-5 / --r-4 para no dejar todo filoso.
   · encuadre del banco tomado de la Dirección B ("Próximos en entrar"). */

/* Tokens de borde de estado que el sistema no tenía */
.q-lv{--ok-line:rgba(79,201,138,.34);--warn-line:rgba(242,179,61,.34);
      --bad-line:rgba(240,102,107,.34);--info-line:rgba(92,168,242,.34)}

.q-lv{display:flex;flex-direction:column;min-height:0;background:var(--bg-0);color:var(--text-0)}
.q-lv *{box-sizing:border-box}

/* Badge EN VIVO */
.q-lv-live{display:inline-flex;align-items:center;gap:7px;font:600 11px var(--font-mono);
  letter-spacing:.06em;color:var(--bad);text-transform:uppercase}
.q-lv-live .d{width:8px;height:8px;border-radius:50%;background:var(--bad);
  box-shadow:0 0 0 4px var(--bad-soft);animation:q-lv-blink 1.6s ease-in-out infinite}
@keyframes q-lv-blink{0%,100%{opacity:1}50%{opacity:.35}}
@media(prefers-reduced-motion:reduce){.q-lv-live .d{animation:none}}

/* ── COMMAND BAR: cuarto/rival · reloj (hero) · marcador ─────── */
.q-lv-cmd{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;
  padding:16px 24px;background:var(--bg-1);border-bottom:1px solid var(--line);flex:0 0 auto}
.q-lv-match{display:flex;align-items:center;gap:16px;min-width:0}
.q-lv-q{width:66px;height:66px;border-radius:var(--r-5);flex:0 0 auto;background:var(--bg-4);
  border:1px solid var(--line-strong);display:flex;flex-direction:column;align-items:center;
  justify-content:center;line-height:1}
.q-lv-q .n{font:700 26px var(--font-display);letter-spacing:-.03em;color:var(--text-0)}
.q-lv-q .k{font:400 9px var(--font-mono);color:var(--text-2);text-transform:uppercase;letter-spacing:.08em;margin-top:3px}
.q-lv-q.ot{background:var(--info-soft);border-color:var(--info-line)}
.q-lv-q.ot .n,.q-lv-q.ot .k{color:var(--info)}
.q-lv-fixture{min-width:0;line-height:1.25}
.q-lv-fixture .op{font:700 21px var(--font-display);letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-lv-fixture .cmp{font:400 11px var(--font-mono);color:var(--text-2);margin-top:2px}

/* Reloj hero */
.q-lv-clock{display:flex;flex-direction:column;align-items:center;gap:12px}
/* CD lo diseñó a 82px sobre una tablet de 1196px SIN sidebar. Acá el shell nos
   come ~240px, así que el reloj escala con el viewport y no aplasta al rival. */
.q-lv-clock .time{font:600 clamp(52px,5.4vw,82px)/.86 var(--font-mono);letter-spacing:-.05em;
  color:var(--text-0);font-variant-numeric:tabular-nums}
.q-lv-clock.paused .time{color:var(--text-2)}
.q-lv-clock.last .time{color:var(--bad);animation:q-lv-pulse 1s ease-in-out infinite}
@keyframes q-lv-pulse{0%,100%{opacity:1}50%{opacity:.55}}
@media(prefers-reduced-motion:reduce){.q-lv-clock.last .time{animation:none}}
.q-lv-clock-ctrls{display:flex;align-items:center;gap:10px}
.q-lv-playpause{width:56px;height:56px;border-radius:50%;flex:0 0 auto;cursor:pointer;
  border:1px solid var(--line-strong);background:var(--bg-4);color:var(--text-0);
  display:grid;place-items:center;transition:background .12s,color .12s,border-color .12s}
.q-lv-playpause:hover{background:var(--bg-5)}
.q-lv-playpause svg{width:24px;height:24px}
.q-lv-clock.paused .q-lv-playpause{background:var(--ok-soft);border-color:var(--ok-line);color:var(--ok)}
.q-lv-adjust{height:40px;padding:0 14px;border-radius:var(--r-4);cursor:pointer;background:transparent;
  border:1px solid var(--line-strong);color:var(--text-2);display:inline-flex;align-items:center;gap:7px;
  font:500 12.5px var(--font-ui)}
.q-lv-adjust:hover{color:var(--text-1);background:var(--bg-2)}
.q-lv-adjust svg{width:15px;height:15px}

/* Marcador editable */
.q-lv-score{display:flex;align-items:flex-start;justify-content:flex-end;gap:18px}
.q-lv-team{display:flex;flex-direction:column;align-items:center;gap:8px}
.q-lv-team .tag{font:400 10px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-2)}
.q-lv-team.home .tag{color:var(--accent)}
.q-lv-team .pts{font:600 clamp(34px,3.4vw,52px)/.9 var(--font-mono);letter-spacing:-.04em;color:var(--text-0);font-variant-numeric:tabular-nums}
.q-lv-addrow{display:flex;gap:5px}
.q-lv-add{width:42px;height:44px;border-radius:var(--r-4);cursor:pointer;background:var(--bg-3);
  border:1px solid var(--line-strong);color:var(--text-0);font:700 15px var(--font-display);
  display:grid;place-items:center;transition:background .1s,transform .05s}
.q-lv-add:hover{background:var(--bg-4)}
.q-lv-add:active{transform:scale(.94)}
.q-lv-sub-pt{width:42px;height:44px;border-radius:var(--r-4);cursor:pointer;background:transparent;
  border:1px solid var(--line-strong);color:var(--text-2);display:grid;place-items:center}
.q-lv-sub-pt:hover{color:var(--bad);border-color:var(--bad-line)}
.q-lv-sub-pt svg{width:16px;height:16px}
.q-lv-score-sep{align-self:flex-start;font:600 30px var(--font-mono);color:var(--text-3);margin-top:26px}
.q-lv-undo{width:44px;height:44px;border-radius:var(--r-4);cursor:pointer;background:transparent;
  border:1px solid var(--line-strong);color:var(--text-2);display:grid;place-items:center;align-self:center;margin-top:14px}
.q-lv-undo:hover:not(:disabled){color:var(--warn);border-color:var(--warn-line)}
.q-lv-undo:disabled{opacity:.35;cursor:default}
.q-lv-undo svg{width:17px;height:17px}

/* ── CUERPO ──────────────────────────────────────────────────── */
/* padding-bottom generoso: la barra de acciones es sticky y si no tapa la
   última fila del banco */
.q-lv-body{flex:1;min-height:0;padding:18px 24px 90px}
.q-lv-sec-h{display:flex;align-items:baseline;gap:10px;margin:0 0 12px}
.q-lv-sec-h .t{font:600 16px var(--font-display);letter-spacing:-.01em;color:var(--text-0)}
.q-lv-sec-h .m{font:400 11px var(--font-mono);color:var(--text-2)}
.q-lv-sec-h .m.r{margin-left:auto}

/* ── TARJETA EN CANCHA. Héroe = minutos SEGUIDOS ahora ───────── */
.q-lv-court-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.q-lv-p{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-5);
  padding:13px 13px 12px;display:flex;flex-direction:column;position:relative;
  transition:border-color .12s,background .12s}
.q-lv-p .p-top{display:flex;align-items:center;gap:10px}
.q-lv-num{width:34px;height:34px;border-radius:var(--r-4);flex:0 0 auto;background:var(--bg-4);
  border:1px solid var(--line-strong);display:grid;place-items:center;
  font:700 15px var(--font-display);color:var(--text-0);letter-spacing:-.02em}
.q-lv-p .p-id{flex:1;min-width:0;line-height:1.2}
.q-lv-p .p-id .nm{display:block;font:600 15px var(--font-display);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-lv-p .p-id .pos{display:block;font:400 10.5px var(--font-mono);color:var(--text-2);margin-top:1px}
.q-lv-stint{margin:12px 0 4px;text-align:center}
.q-lv-stint .v{font:600 42px/1 var(--font-mono);letter-spacing:-.04em;color:var(--text-0);font-variant-numeric:tabular-nums}
.q-lv-stint.long .v,.q-lv-stint.long .k{color:var(--warn)}
.q-lv-stint .k{font:400 10px var(--font-mono);color:var(--text-2);text-transform:uppercase;letter-spacing:.08em;margin-top:4px}

/* Fatiga: chip (color + palabra) + barra */
.q-lv-fat{margin-top:8px}
.q-lv-fat-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}
.q-lv-flag{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--r-pill);
  font:600 12px var(--font-ui)}
.q-lv-flag .d{width:7px;height:7px;border-radius:50%}
.q-lv-flag.fresco{background:var(--ok-soft);color:var(--ok)}      .q-lv-flag.fresco .d{background:var(--ok)}
.q-lv-flag.atencion{background:var(--warn-soft);color:var(--warn)}.q-lv-flag.atencion .d{background:var(--warn)}
.q-lv-flag.limite{background:var(--bad-soft);color:var(--bad)}    .q-lv-flag.limite .d{background:var(--bad)}
.q-lv-mins{font:400 12px var(--font-mono);color:var(--text-1);font-variant-numeric:tabular-nums}
.q-lv-mins .pct{color:var(--text-2)}
.q-lv-fatbar{height:5px;border-radius:var(--r-pill);background:var(--bg-inset);overflow:hidden}
.q-lv-fatbar>i{display:block;height:100%;border-radius:var(--r-pill);transition:width .3s ease}
.q-lv-fatbar>i.fresco{background:var(--ok)}
.q-lv-fatbar>i.atencion{background:var(--warn)}
.q-lv-fatbar>i.limite{background:var(--bad)}

/* Faltas */
.q-lv-fouls{display:flex;align-items:center;gap:10px;margin-top:12px;padding-top:11px;border-top:1px solid var(--line)}
.q-lv-fouls .lbl{font:400 10px var(--font-mono);color:var(--text-2);text-transform:uppercase;letter-spacing:.06em}
.q-lv-dots{display:flex;gap:5px;flex:1}
.q-lv-dots i{width:10px;height:10px;border-radius:50%;background:var(--bg-5);border:1px solid var(--line-strong)}
.q-lv-dots i.on{background:var(--warn);border-color:var(--warn)}
.q-lv-dots i.crit{background:var(--bad);border-color:var(--bad)}
.q-lv-foul-add,.q-lv-foul-sub{width:34px;height:34px;border-radius:var(--r-4);flex:0 0 auto;cursor:pointer;
  background:var(--bg-3);border:1px solid var(--line-strong);color:var(--text-1);display:grid;place-items:center}
.q-lv-foul-add:hover{background:var(--bg-4);color:var(--text-0)}
.q-lv-foul-sub{background:transparent;color:var(--text-3)}
.q-lv-foul-sub:hover{color:var(--bad);border-color:var(--bad-line)}
.q-lv-foul-add svg,.q-lv-foul-sub svg{width:15px;height:15px}

/* Eliminado */
.q-lv-p.elim{border-color:var(--bad-line);background:linear-gradient(180deg,var(--bad-soft),transparent 60%),var(--bg-2)}
.q-lv-p.elim .q-lv-num{background:var(--bad-soft);border-color:var(--bad-line);color:var(--bad)}
.q-lv-elim-tag{display:inline-flex;align-items:center;gap:6px;margin:12px auto 4px;padding:6px 14px;
  border-radius:var(--r-pill);background:var(--bad-soft);color:var(--bad);
  font:700 13px var(--font-display);letter-spacing:.02em}
.q-lv-elim-tag svg{width:15px;height:15px}
.q-lv-elim-note{text-align:center;font:400 10px var(--font-mono);color:var(--text-2);margin-top:2px}

/* ── SUGERENCIA DE ROTACIÓN ──────────────────────────────────── */
.q-lv-sug{display:flex;align-items:center;gap:16px;margin:16px 0 4px;padding:12px 16px 12px 14px;
  border-radius:var(--r-5);background:var(--bg-3);border:1px solid var(--info-line);position:relative}
.q-lv-sug .ic{width:40px;height:40px;border-radius:var(--r-4);flex:0 0 auto;background:var(--info-soft);
  color:var(--info);display:grid;place-items:center}
.q-lv-sug .ic svg{width:20px;height:20px}
.q-lv-sug .tx{flex:1;min-width:0}
.q-lv-sug .tx .h{font:400 10px var(--font-mono);color:var(--info);text-transform:uppercase;letter-spacing:.08em;margin-bottom:3px}
.q-lv-sug .tx .b{font-size:13.5px;color:var(--text-1);line-height:1.4}
.q-lv-sug .tx .b b{color:var(--text-0);font-weight:600}
.q-lv-sug .tx .b .swap{color:var(--info);margin:0 6px}
.q-lv-sug-btn{height:40px;padding:0 16px;border-radius:var(--r-4);flex:0 0 auto;cursor:pointer;
  background:var(--bg-4);border:1px solid var(--line-strong);color:var(--text-0);
  font:600 13px var(--font-ui);display:inline-flex;align-items:center;gap:7px}
.q-lv-sug-btn:hover{background:var(--bg-5)}
.q-lv-sug-btn svg{width:15px;height:15px}
.q-lv-sug .x{color:var(--text-2);cursor:pointer;display:grid;padding:6px;border-radius:8px;flex:0 0 auto;
  background:transparent;border:0}
.q-lv-sug .x:hover{color:var(--text-0);background:var(--bg-4)}
.q-lv-sug .x svg{width:16px;height:16px}
.q-lv-sug.none{background:var(--bg-1);border:1px dashed var(--line-strong)}
.q-lv-sug.none .ic{background:var(--bg-3);color:var(--text-2)}
.q-lv-sug.none .tx .h,.q-lv-sug.none .tx .b{color:var(--text-2)}

/* ── BANCO ("Próximos en entrar", encuadre de la Dirección B) ── */
.q-lv-bench-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:10px}
.q-lv-b{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-5);
  padding:11px 11px 10px;display:flex;flex-direction:column;position:relative}
/* padding-right: el badge/botón va absoluto arriba a la derecha y si no se
   monta encima del nombre */
.q-lv-b .b-top{display:flex;align-items:center;gap:8px;padding-right:58px}
.q-lv-b .q-lv-num{width:28px;height:28px;font-size:13px;border-radius:9px}
.q-lv-b .b-id{min-width:0;line-height:1.15}
.q-lv-b .b-id .nm{display:block;font:600 13px var(--font-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-lv-b .b-id .pos{display:block;font:400 9.5px var(--font-mono);color:var(--text-2)}
.q-lv-b .b-mins{margin:9px 0 3px;display:flex;align-items:baseline;gap:5px}
.q-lv-b .b-mins .v{font:600 24px var(--font-mono);letter-spacing:-.03em;color:var(--text-0);font-variant-numeric:tabular-nums}
.q-lv-b .b-mins .k{font:400 10px var(--font-mono);color:var(--text-2)}
.q-lv-b .b-foot{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:6px}
.q-lv-flag.mini{padding:2px 8px;font-size:11px}
.q-lv-dots.mini i{width:7px;height:7px}
.q-lv-b .b-add{position:absolute;top:10px;right:10px;width:26px;height:26px;border-radius:8px;cursor:pointer;
  background:var(--bg-3);border:1px solid var(--line-strong);color:var(--text-2);display:grid;place-items:center}
.q-lv-b .b-add:hover{background:var(--bg-4);color:var(--text-0)}
.q-lv-b .b-add svg{width:13px;height:13px}
.q-lv-b .b-ready{position:absolute;top:10px;right:10px;font:600 9px var(--font-mono);letter-spacing:.06em;
  text-transform:uppercase;color:var(--ok);background:var(--ok-soft);border:1px solid var(--ok-line);
  padding:2px 7px;border-radius:var(--r-pill)}
.q-lv-b.elim{opacity:.62}
.q-lv-b.elim .q-lv-num{background:var(--bad-soft);border-color:var(--bad-line);color:var(--bad)}
.q-lv-b .b-elim{position:absolute;top:10px;right:10px;font:600 9px var(--font-mono);letter-spacing:.04em;
  color:var(--bad);background:var(--bad-soft);border:1px solid var(--bad-line);padding:2px 7px;border-radius:var(--r-pill)}

/* ── BARRA DE ACCIONES ───────────────────────────────────────── */
.q-lv-actions{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:14px 24px;
  background:var(--bg-1);border-top:1px solid var(--line);position:sticky;bottom:0;z-index:4}
.q-lv-actions .spacer{flex:1}
.q-lv-endq{height:48px;padding:0 20px;border-radius:var(--r-5);cursor:pointer;background:var(--bg-4);
  border:1px solid var(--line-strong);color:var(--text-0);display:inline-flex;align-items:center;gap:8px;
  font:600 14.5px var(--font-ui)}
.q-lv-endq:hover{background:var(--bg-5)}
.q-lv-endq svg{width:17px;height:17px}
.q-lv-do-sub{height:48px;padding:0 26px;border-radius:var(--r-5);cursor:pointer;background:var(--accent);
  border:0;color:var(--text-inv);display:inline-flex;align-items:center;gap:9px;font:700 15.5px var(--font-ui)}
.q-lv-do-sub:hover{background:var(--accent-press)}
.q-lv-do-sub svg{width:19px;height:19px}

/* ── MODO SUSTITUCIÓN (2 pasos, inline — sin modal) ──────────── */
.q-lv.subout .q-lv-court-grid .q-lv-p:not(.elim){cursor:pointer}
.q-lv.subout .q-lv-court-grid .q-lv-p:not(.elim):hover{border-color:var(--bad-line)}
.q-lv.subin .q-lv-bench-grid .q-lv-b:not(.elim){cursor:pointer}
.q-lv.subin .q-lv-bench-grid .q-lv-b:not(.elim):hover{border-color:var(--ok-line)}
.q-lv-p.sel-out{border-color:var(--bad);box-shadow:0 0 0 1px var(--bad)}
.q-lv-seltag{position:absolute;top:-9px;left:50%;transform:translateX(-50%);font:700 9px var(--font-mono);
  letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:var(--r-pill);white-space:nowrap}
.q-lv-seltag.out{background:var(--bad);color:var(--text-inv)}
.q-lv-subprompt{display:flex;align-items:center;gap:14px;margin:0 0 14px;padding:12px 16px;
  border-radius:var(--r-5);background:var(--accent-soft);border:1px solid var(--accent-line)}
.q-lv-subprompt .step{width:24px;height:24px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;
  background:var(--accent);color:var(--text-inv);font:700 12px var(--font-mono)}
.q-lv-subprompt .t{flex:1;font-size:14px;font-weight:600;color:var(--text-0)}
.q-lv-subprompt .t b{color:var(--accent)}
.q-lv-subprompt .cancel{cursor:pointer;font:600 13px var(--font-ui);color:var(--text-1);padding:7px 12px;
  border-radius:var(--r-4);border:1px solid var(--line-strong);background:transparent}
.q-lv-subprompt .cancel:hover{color:var(--text-0);background:var(--bg-2)}

/* ── FINALIZADO (solo lectura) ───────────────────────────────── */
.q-lv-final{display:inline-flex;align-items:center;gap:10px;font:700 15px var(--font-display);color:var(--text-0)}
.q-lv-final .res{padding:4px 12px;border-radius:var(--r-pill);font-size:13px}
.q-lv-final .res.win{background:var(--ok-soft);color:var(--ok)}
.q-lv-final .res.lose{background:var(--bad-soft);color:var(--bad)}

@media(max-width:1100px){
  .q-lv-cmd{grid-template-columns:1fr;gap:14px;justify-items:center}
  .q-lv-match{justify-self:start}
  .q-lv-clock .time{font-size:56px}
  .q-lv-court-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
  .q-lv-team .pts{font-size:40px}
}

/* ── Lista de partidos ────────────────────────────────────────── */
.q-gl__card{display:flex;align-items:center;gap:14px;padding:14px 16px;margin-bottom:8px;
  background:var(--bg-2);border:1px solid var(--line);border-left:3px solid var(--line-strong);
  border-radius:var(--r-3);transition:border-color .12s,background .12s}
.q-gl__card:hover{background:var(--bg-3)}
.q-gl__card--live{border-left-color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}
.q-gl__card--win{border-left-color:var(--ok)}
.q-gl__card--loss{border-left-color:var(--bad)}
.q-gl__main{flex:1;min-width:0}
.q-gl__opp{font:600 15px var(--font-ui);color:var(--text-0);margin-bottom:3px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-gl__meta{display:flex;gap:10px;flex-wrap:wrap;font:400 11.5px var(--font-mono);color:var(--text-2)}
.q-gl__badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;
  font:700 9.5px var(--font-ui);letter-spacing:.06em;margin-bottom:6px}
.q-gl__badge--live{background:var(--accent);color:var(--text-inv)}
.q-gl__badge--live .dot{width:5px;height:5px;border-radius:50%;background:currentColor;animation:qlvpulse 1.4s infinite}
@keyframes qlvpulse{0%,100%{opacity:1}50%{opacity:.25}}
.q-gl__badge--done{background:var(--bg-4);color:var(--text-2)}
.q-gl__badge--setup{background:var(--bg-4);color:var(--text-3)}
.q-gl__res{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0}
.q-gl__sc{font:800 20px/1 var(--font-mono);color:var(--text-0);font-variant-numeric:tabular-nums}
.q-gl__wl{font:700 9.5px var(--font-ui);letter-spacing:.08em}
.q-gl__wl--w{color:var(--ok)}
.q-gl__wl--l{color:var(--bad)}
.q-gl__acts{display:flex;gap:6px;align-items:center;flex-shrink:0}
.q-gl__del{width:34px;height:34px;border-radius:var(--r-2);border:1px solid var(--line);
  background:transparent;color:var(--text-3);display:grid;place-items:center;cursor:pointer;transition:.12s}
.q-gl__del:hover{background:var(--bad-soft);border-color:rgba(240,102,107,.35);color:var(--bad)}
@media(max-width:640px){
  .q-gl__card{flex-wrap:wrap}
  .q-gl__acts{width:100%;justify-content:flex-end}
}

/* ── Alta de partido: convocatoria y titulares ────────────────── */
.q-gs__chips{display:flex;flex-wrap:wrap;gap:8px;min-height:38px}
.q-gs__chip{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:0 13px;
  border-radius:var(--r-2);cursor:pointer;font-family:var(--font-ui);font-size:13px;
  background:var(--bg-3);border:1px solid var(--line);color:var(--text-1);
  transition:background .12s,border-color .12s,color .12s}
.q-gs__chip:hover{background:var(--bg-4);color:var(--text-0)}
.q-gs__chip.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--text-0);font-weight:500}
.q-gs__chip:disabled{opacity:.3;pointer-events:none}
.q-gs__chip .n{font:600 10.5px var(--font-mono);color:var(--text-3)}
.q-gs__chip.on .n{color:var(--accent)}
.q-gs__sec{display:flex;align-items:center;gap:8px;margin-bottom:9px}
.q-gs__sect{font:600 10px var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-2)}
.q-gs__count{font:700 12px var(--font-mono);color:var(--text-2)}
.q-gs__count.is-full{color:var(--accent)}
.q-gs__note{font-size:11.5px;color:var(--accent)}

/* ══════════════════════════════════════════════════════════════ */
/* ██  QOORELIVE — REPORTE POST-PARTIDO · diseño CD (Fase 3)   ██ */
/* ══════════════════════════════════════════════════════════════ */
/* "Mesa de comando": denso, analítico, se lee al otro día en desktop.
   UN componente, DOS temas: pantalla (dark) y PDF (light, data-theme).
   Los tokens están scopeados a .q-pc a propósito: así el mismo markup
   se imprime sobre fondo claro sin tocar una línea de HTML.
   Namespace: q-pc-* (partido cerrado). */

.q-pc{
  /* tema PANTALLA · carbón cálido */
  --s0:#0B0A08;--s1:#141210;--s2:#1C1916;--s3:#24201C;--s4:#2E2925;--s5:#3A342E;
  --inset:#080706;
  --t0:#F6F1EA;--t1:#B7AEA3;--t2:#857D72;--t3:#6A6259;
  --ln:#2A2521;--ln2:#37312B;
  --acc:#F97316;--acc-soft:rgba(249,115,22,.14);--acc-line:rgba(249,115,22,.34);
  --ok:#4FC98A;--warn:#F2B33D;--bad:#F0666B;--info:#5CA8F2;
  --ok-soft:rgba(79,201,138,.15);--warn-soft:rgba(242,179,61,.15);
  --bad-soft:rgba(240,102,107,.15);--info-soft:rgba(92,168,242,.15);
  --bar:#544B43;--bar-2:#6B6157;
  --fd:var(--font-display);--fu:var(--font-ui);--fm:var(--font-mono);
  box-sizing:border-box;background:var(--s0);color:var(--t0);
  font-family:var(--fu);letter-spacing:-.006em;
}
.q-pc *{box-sizing:border-box}

/* tema PDF · fondo claro (la jerarquía sobrevive la impresión) */
.q-pc[data-theme="light"]{
  --s0:#EFEBE4;--s1:#FFFFFF;--s2:#FFFFFF;--s3:#FBF9F5;--s4:#F3EEE6;--s5:#E9E2D6;
  --inset:#EDE7DD;
  --t0:#211B16;--t1:#5E554B;--t2:#8B8176;--t3:#A99F92;
  --ln:#E8E2D8;--ln2:#D8D0C3;
  --acc:#D65E0B;--acc-soft:rgba(214,94,11,.10);--acc-line:rgba(214,94,11,.28);
  --ok:#1C9A55;--warn:#B0781C;--bad:#CE3F4A;--info:#2C74CC;
  --ok-soft:rgba(28,154,85,.12);--warn-soft:rgba(176,120,28,.12);
  --bad-soft:rgba(206,63,74,.12);--info-soft:rgba(44,116,204,.12);
  --bar:#CDC3B4;--bar-2:#B7AC9B;
}

.q-pc-doc{padding:22px 26px 30px;display:flex;flex-direction:column;gap:18px}

/* ── Header ──────────────────────────────────────────────────── */
.q-pc-head{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:24px;
  padding-bottom:20px;border-bottom:1px solid var(--ln)}
.q-pc-head .crumb{font:400 11px var(--fm);color:var(--t2);letter-spacing:.04em;display:flex;align-items:center;gap:7px;margin-bottom:8px}
.q-pc-head .crumb .sep{opacity:.5}
.q-pc-fixture{display:flex;align-items:center;gap:16px}
.q-pc-crest{width:54px;height:54px;border-radius:14px;flex:0 0 auto;display:grid;place-items:center;
  font:700 18px var(--fd);color:#12100e;background:linear-gradient(150deg,#F97316,#B4460C)}
.q-pc-fixture .ttl{font:700 26px var(--fd);letter-spacing:-.03em;line-height:1.1}
.q-pc-fixture .meta{font:400 12px var(--fm);color:var(--t2);margin-top:4px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.q-pc-fixture .meta .dot{opacity:.5}
.q-pc-scorebox{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.q-pc-score{display:flex;align-items:baseline;gap:12px;font:600 46px var(--fm);font-variant-numeric:tabular-nums}
.q-pc-score .h{letter-spacing:-.04em;color:var(--t0)}
.q-pc-score .sep{font-size:26px;color:var(--t3)}
.q-pc-score .a{letter-spacing:-.04em;color:var(--t1)}
.q-pc-result{display:inline-flex;align-items:center;gap:7px;padding:5px 13px;border-radius:999px;
  font:700 13px var(--fd)}
.q-pc-result .d{width:8px;height:8px;border-radius:50%}
.q-pc-result.win{background:var(--ok-soft);color:var(--ok)}  .q-pc-result.win .d{background:var(--ok)}
.q-pc-result.lose{background:var(--bad-soft);color:var(--bad)} .q-pc-result.lose .d{background:var(--bad)}
.q-pc-result.draw{background:var(--s4);color:var(--t1)}       .q-pc-result.draw .d{background:var(--t2)}
.q-pc-pdf{align-self:center;height:42px;padding:0 18px;border-radius:12px;cursor:pointer;
  background:var(--acc);border:0;color:#1a0d02;font:700 14px var(--fu);display:inline-flex;align-items:center;gap:9px}
.q-pc-pdf svg{width:17px;height:17px}

/* ── Paneles ─────────────────────────────────────────────────── */
.q-pc-sh{display:flex;align-items:baseline;gap:10px;margin-bottom:2px}
.q-pc-sh .t{font:700 17px var(--fd);letter-spacing:-.02em}
.q-pc-sh .m{font:400 11px var(--fm);color:var(--t2)}
.q-pc-sh .m.r{margin-left:auto}
.q-pc-grid{display:grid;grid-template-columns:1.62fr 1fr;gap:18px;align-items:start}
.q-pc-panel{background:var(--s1);border:1px solid var(--ln);border-radius:16px;padding:18px 20px 16px}
.q-pc[data-theme="light"] .q-pc-panel{box-shadow:0 1px 2px rgba(30,20,10,.04)}
.q-pc-col{display:flex;flex-direction:column;gap:18px}

/* ── Minutos por jugador (el corazón) ────────────────────────── */
.q-pc-min{display:flex;flex-direction:column}
.q-pc-min-row{display:grid;grid-template-columns:38px minmax(130px,1.05fr) 2fr auto minmax(92px,auto) auto;
  align-items:center;gap:14px;padding:11px 0;border-bottom:1px solid var(--ln)}
.q-pc-min-row:last-child{border-bottom:0}
.q-pc-min-row.dnp{opacity:.5}
/* avatar: foto o iniciales — los dos igual de dignos */
.q-pc-av{width:38px;height:38px;border-radius:50%;flex:0 0 auto;position:relative;overflow:hidden;
  display:grid;place-items:center}
.q-pc-av img{width:100%;height:100%;object-fit:cover;display:block}
.q-pc-av .ini{font:700 14px var(--fd);color:#fff;letter-spacing:-.02em}
.q-pc-min-id{min-width:0}
.q-pc-min-id .nm{font:600 14.5px var(--fd);letter-spacing:-.01em;display:flex;align-items:center;gap:7px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-pc-min-id .nm .starter{width:6px;height:6px;border-radius:50%;background:var(--acc);flex:0 0 auto}
.q-pc-num{font:400 11px var(--fm);color:var(--t2)}
.q-pc-num.none{color:var(--t3)}
.q-pc-min-id .sub{font:400 10.5px var(--fm);color:var(--t2);margin-top:2px;display:flex;align-items:center;
  gap:5px;flex-wrap:nowrap;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-pc-min-id .sub .elim{color:var(--bad);font-weight:600}
/* barra neutra con marca de límite (nunca una pared roja) */
.q-pc-barwrap{position:relative}
.q-pc-bar{height:22px;border-radius:6px;background:var(--inset);position:relative;overflow:hidden}
.q-pc-bar>i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--bar),var(--bar-2))}
.q-pc-bar.over>i{background:linear-gradient(90deg,var(--bar-2),var(--warn))}
.q-pc-limit{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--bad);border-radius:2px}
.q-pc-limit::after{content:attr(data-lbl);position:absolute;top:-14px;left:50%;transform:translateX(-50%);
  font:400 8.5px var(--fm);color:var(--bad);white-space:nowrap}
.q-pc-min-tot{text-align:right;font:600 20px var(--fm);letter-spacing:-.03em;color:var(--t0);
  font-variant-numeric:tabular-nums;min-width:52px}
.q-pc-min-tot .u{font-size:11px;color:var(--t2);font-weight:400;margin-left:1px}
.q-pc-min-tot.dnp{font:500 12px var(--fu);color:var(--t2);letter-spacing:0}
/* semáforo (color + palabra) */
.q-pc-flag{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;
  font:600 11.5px var(--fu);white-space:nowrap}
.q-pc-flag .d{width:7px;height:7px;border-radius:50%}
.q-pc-flag.fresco{background:var(--ok-soft);color:var(--ok)}     .q-pc-flag.fresco .d{background:var(--ok)}
.q-pc-flag.atencion{background:var(--warn-soft);color:var(--warn)}.q-pc-flag.atencion .d{background:var(--warn)}
.q-pc-flag.limite{background:var(--bad-soft);color:var(--bad)}   .q-pc-flag.limite .d{background:var(--bad)}
.q-pc-flag.dnpf{background:var(--s4);color:var(--t2)}            .q-pc-flag.dnpf .d{background:var(--t3)}
/* ± con jerarquía (antes vivía enterrado en la última columna) */
.q-pc-pm{text-align:right;font:600 19px var(--fm);letter-spacing:-.03em;min-width:46px;font-variant-numeric:tabular-nums}
.q-pc-pm.pos{color:var(--ok)} .q-pc-pm.neg{color:var(--bad)} .q-pc-pm.zero{color:var(--t2)}
.q-pc-pm .k{display:block;font:500 8.5px var(--fm);color:var(--t3);letter-spacing:.06em;text-transform:uppercase;margin-top:1px}

/* ── Carga del partido (el puente al ACWR) ───────────────────── */
.q-pc-loadsum{display:flex;flex-direction:column;gap:12px}
.q-pc-loadbig{display:flex;align-items:baseline;gap:10px}
.q-pc-loadbig .v{font:700 40px var(--fd);letter-spacing:-.04em;color:var(--bad);line-height:1}
.q-pc-loadbig .v.none{color:var(--ok)}
.q-pc-loadbig .k{font-size:13px;color:var(--t1);line-height:1.35}
.q-pc-loadbars{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.q-pc-loadcell{background:var(--s2);border:1px solid var(--ln);border-radius:12px;padding:11px 12px}
.q-pc-loadcell .n{font:600 22px var(--fm);letter-spacing:-.03em}
.q-pc-loadcell .n.fresco{color:var(--ok)} .q-pc-loadcell .n.atencion{color:var(--warn)} .q-pc-loadcell .n.limite{color:var(--bad)}
.q-pc-loadcell .l{font-size:10.5px;color:var(--t2);margin-top:3px}
.q-pc-bridge{display:flex;align-items:center;gap:12px;padding:13px 14px;border-radius:12px;
  background:var(--acc-soft);border:1px solid var(--acc-line)}
.q-pc-bridge .ic{width:34px;height:34px;border-radius:10px;flex:0 0 auto;display:grid;place-items:center;
  background:var(--acc);color:#1a0d02}
.q-pc-bridge .ic svg{width:18px;height:18px}
.q-pc-bridge .tx{font-size:12.5px;color:var(--t1);line-height:1.4}
.q-pc-bridge .tx b{color:var(--t0);font-weight:600}

/* ── Quinteto más usado ──────────────────────────────────────── */
.q-pc-unit{background:var(--s2);border:1px solid var(--ln);border-radius:14px;padding:16px}
.q-pc-unit-h{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px;gap:10px}
.q-pc-unit-h .t{font:700 14px var(--fd)}
.q-pc-unit-h .pm{font:600 22px var(--fm);letter-spacing:-.03em}
.q-pc-unit-h .pm.pos{color:var(--ok)} .q-pc-unit-h .pm.neg{color:var(--bad)} .q-pc-unit-h .pm.zero{color:var(--t2)}
.q-pc-unit-faces{display:flex;margin-bottom:12px}
.q-pc-unit-faces .q-pc-av{width:40px;height:40px;border:2px solid var(--s2);margin-left:-8px}
.q-pc-unit-faces .q-pc-av:first-child{margin-left:0}
.q-pc-unit-names{font-size:12px;color:var(--t1);line-height:1.5}
.q-pc-unit-foot{margin-top:12px;padding-top:12px;border-top:1px solid var(--ln);display:flex;gap:18px;flex-wrap:wrap}
.q-pc-unit-foot .kv .v{font:600 16px var(--fm);letter-spacing:-.02em}
.q-pc-unit-foot .kv .k{font-size:10px;color:var(--t2);margin-top:2px}
.q-pc-unit-empty{font-size:12.5px;color:var(--t2);line-height:1.5}

/* ── Matriz por cuarto (no una tabla cruda) ──────────────────── */
.q-pc-matrix{width:100%;overflow-x:auto}
.q-pc-mrow{display:grid;align-items:center;border-bottom:1px solid var(--ln)}
.q-pc-mrow.head{border-bottom:1px solid var(--ln2)}
.q-pc-mrow.head .mc{font:400 10px var(--fm);color:var(--t2);text-transform:uppercase;letter-spacing:.06em;padding:10px 0}
.q-pc-mrow.dnp{opacity:.5}
.q-pc-mrow:last-child{border-bottom:0}
.q-pc-mc-name{display:flex;align-items:center;gap:10px;padding:9px 12px 9px 0;min-width:0}
.q-pc-mc-name .q-pc-av{width:28px;height:28px}
.q-pc-mc-name .q-pc-av .ini{font-size:11px}
.q-pc-mc-name .nm{font:600 13px var(--fd);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-pc-mc-name .nn{font:400 10px var(--fm);color:var(--t2);flex-shrink:0}
.q-pc .mc{text-align:center;font:400 13.5px var(--fm);color:var(--t1);padding:9px 0;
  font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.q-pc .mc.q{color:var(--t0)}
.q-pc .mc.dnq{color:var(--t3)}
.q-pc .mc.tot{color:var(--t0);font-weight:600}
.q-pc .mc.foul.crit{color:var(--bad);font-weight:600}
.q-pc .mc.pm{font-weight:600;font-size:14px;background:var(--s2)}
.q-pc .mc.pm.pos{color:var(--ok)} .q-pc .mc.pm.neg{color:var(--bad)} .q-pc .mc.pm.zero{color:var(--t2)}
.q-pc-mrow.head .mc.pm{background:var(--acc-soft);color:var(--acc)}

/* ── Registro de sustituciones ───────────────────────────────── */
.q-pc-log{display:flex;flex-direction:column}
.q-pc-log-row,.q-pc-log-q{break-inside:avoid;-webkit-column-break-inside:avoid}
.q-pc-log-q{font:400 10px var(--fm);color:var(--t2);text-transform:uppercase;letter-spacing:.08em;
  padding:12px 0 8px;display:flex;align-items:center;gap:8px}
.q-pc-log-q::after{content:"";flex:1;height:1px;background:var(--ln)}
.q-pc-log-q:first-child{padding-top:0}
.q-pc-log-row{display:grid;grid-template-columns:56px 1fr auto;align-items:center;gap:12px;padding:8px 0}
.q-pc-log-min{font:600 13px var(--fm);color:var(--t1);letter-spacing:-.02em}
.q-pc-log-sub{display:flex;align-items:center;gap:9px;font-size:12.5px;min-width:0;flex-wrap:wrap}
.q-pc-log-sub .out{color:var(--t2);display:inline-flex;align-items:center;gap:5px}
.q-pc-log-sub .in{color:var(--t0);font-weight:600;display:inline-flex;align-items:center;gap:5px}
.q-pc-log-sub .ar-out{color:var(--bad);display:grid} .q-pc-log-sub .ar-out svg{width:15px;height:15px}
.q-pc-log-sub .ar-in{color:var(--ok);display:grid}   .q-pc-log-sub .ar-in svg{width:15px;height:15px}
.q-pc-log-score{font:600 12.5px var(--fm);color:var(--t2);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.q-pc-log-row.lineup .q-pc-log-sub{color:var(--t1)}
.q-pc-log-row.lineup .q-pc-log-sub .tag{font:400 10px var(--fm);color:var(--info);background:var(--info-soft);
  padding:2px 8px;border-radius:999px}

@media(max-width:1080px){
  .q-pc-grid{grid-template-columns:1fr}
  .q-pc-head{grid-template-columns:1fr;gap:14px}
  .q-pc-scorebox{align-items:flex-start}
  .q-pc-min-row{grid-template-columns:34px minmax(110px,1fr) 1.4fr auto;gap:10px}
  .q-pc-min-row .q-pc-flag,.q-pc-min-row .q-pc-pm{display:none}
}
/* En el PDF el ancho es fijo: nunca colapsar el layout */
.q-pc[data-theme="light"] .q-pc-grid{grid-template-columns:1.62fr 1fr}
.q-pc[data-theme="light"] .q-pc-head{grid-template-columns:1fr auto auto}

/* ── Por encima del tope + "elegí quiénes ocupan los cupos" ──── */
.pl-sobre{margin:10px 0 14px;padding:14px 16px;border-radius:var(--r-3);
  background:var(--bad-soft);box-shadow:inset 0 0 0 1px rgba(240,102,107,.28);}
.pl-sobre__t{font-weight:700;font-size:14px;color:var(--text-0);margin-bottom:5px;}
.pl-sobre__d{font-size:12.5px;line-height:1.55;color:var(--text-1);max-width:78ch;}
.pl-sobre__d b{color:var(--text-0);font-variant-numeric:tabular-nums;}
.pl-sobre__a{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap;}

.q-cupos-modal{max-width:620px;padding:0;overflow:hidden;display:flex;flex-direction:column;max-height:86vh;}
.q-cupos__head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 24px 14px;}
.q-cupos__title{font-size:16px;font-weight:700;color:var(--text-0);}
.q-cupos__sub{font-size:12px;color:var(--text-2);margin-top:3px;font-variant-numeric:tabular-nums;}
.q-cupos__note{margin:0 24px 14px;padding:11px 13px;border-radius:var(--r-2);background:var(--bg-1);
  font-size:12px;line-height:1.6;color:var(--text-2);}
.q-cupos__note b{color:var(--text-1);font-weight:600;}
/* La lista es lo único que scrollea: el pie con el contador queda siempre a la
   vista, porque es el dato que dice si ya se puede confirmar. */
.q-cupos__list{overflow-y:auto;padding:0 24px;flex:1;min-height:120px;}
.q-cupo-grp{margin-bottom:14px;}
.q-cupo-grp__h{font-size:10.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  color:var(--text-3);padding:6px 2px;position:sticky;top:0;background:var(--bg-2);z-index:1;}
.q-cupo-row{display:grid;grid-template-columns:18px 1fr auto;gap:11px;align-items:center;
  padding:9px 11px;border-radius:9px;cursor:pointer;background:var(--bg-1);margin-bottom:5px;}
.q-cupo-row:hover{background:var(--bg-3);}
.q-cupo-row.is-on{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-line);}
.q-cupo-row input{width:15px;height:15px;accent-color:var(--accent);cursor:pointer;}
.q-cupo-row .n{font-size:13px;color:var(--text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.q-cupo-row.is-on .n{color:var(--text-0);font-weight:600;}
.q-cupo-row .a{font-size:11px;color:var(--text-3);white-space:nowrap;font-variant-numeric:tabular-nums;}
.q-cupos__foot{display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:14px 24px;background:var(--bg-1);flex-wrap:wrap;}
/* El texto del botón cambia de largo con la cantidad ("Archivar 9 atletas" /
   "Elegí quiénes se quedan"): sin esto se parte en dos líneas y descoloca el pie. */
.q-cupos__foot .q-upgrade-btn{white-space:nowrap;}
.q-cupos__count{font-size:12.5px;color:var(--text-2);font-variant-numeric:tabular-nums;}
.q-cupos__count b{color:var(--text-0);font-size:14px;}
@media(max-width:640px){
  .q-cupos-modal{max-height:92vh;}
  .q-cupos__head,.q-cupos__list,.q-cupos__foot{padding-left:16px;padding-right:16px;}
  .q-cupos__note{margin-left:16px;margin-right:16px;}
  .q-cupo-row{grid-template-columns:18px 1fr;row-gap:2px;}
  .q-cupo-row .a{grid-column:2;}
}

/* ══ SUSCRIPCIÓN — estado de cuenta ═══════════════════════════ */
/* Identidad de plan = escalera violeta. NO se toca la paleta de estados: verde
   es "todo bien" y ámbar es "atención" en el resto de la app, y un plan pintado
   de verde compite con ese semáforo. */
.q-sb{max-width:1360px;margin:0 auto;padding:24px 28px 48px;display:flex;flex-direction:column;gap:24px}
.q-sb-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.q-sb-head h1{font-size:22px;font-weight:700;margin:0;color:var(--text-0)}
.q-sb-sub{font-size:12.5px;color:var(--text-2)}
.q-sb-sec{display:flex;flex-direction:column;gap:12px}
.q-sb-sechead{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap}
.q-sb-sechead h2{font-size:15px;font-weight:600;margin:0;color:var(--text-0)}
.q-sb-sechead span{font-size:12.5px;color:var(--text-2)}
.q-sb .mono{font-variant-numeric:tabular-nums;letter-spacing:-.01em}

.q-sb-acct{background:var(--bg-2);border-radius:16px;overflow:hidden}
.q-sb-acct__main{display:grid;grid-template-columns:minmax(260px,1fr) 1.2fr;gap:28px;padding:22px 26px}
.q-sb-total{display:flex;flex-direction:column;gap:6px}
.q-sb-total .lbl{font-size:12.5px;color:var(--text-2)}
.q-sb-total .amt{font-size:38px;font-weight:600;line-height:1;color:var(--text-0);display:flex;align-items:baseline;gap:8px}
.q-sb-total .amt u{text-decoration:none;font-size:14px;color:var(--text-2);font-weight:400}
.q-sb-total .brk{font-size:12.5px;color:var(--text-1)}
.q-sb-total .brk b{color:var(--text-0);font-variant-numeric:tabular-nums}
.q-sb-kv{display:flex;flex-direction:column;gap:9px;justify-content:center;
  padding-left:28px;border-left:1px solid var(--line)}
.q-sb-kv .kv{display:flex;align-items:baseline;gap:10px;font-size:13px;color:var(--text-2)}
.q-sb-kv .kv b{color:var(--text-0);font-weight:500;font-variant-numeric:tabular-nums}
.q-sb-nota{font-size:11.5px;line-height:1.55;color:var(--text-3);max-width:56ch;margin-top:2px}

.q-sb-strip{display:flex;align-items:center;gap:14px;padding:14px 26px;font-size:13.5px;line-height:1.5}
.q-sb-strip .txt{flex:1}
.q-sb-strip .txt b{font-weight:700}
.q-sb-strip .acts{flex:none}
.q-sb-strip .dias{font-size:22px;font-weight:600;display:flex;align-items:baseline;gap:5px;flex:none}
.q-sb-strip .dias span{font-size:12px;color:var(--text-2);font-weight:400}
.q-sb-strip.warn{background:var(--warn-soft);color:#F6D493}
.q-sb-strip.info{background:var(--info-soft);color:#C7DFFA}
.q-sb-strip.beta{background:linear-gradient(90deg,rgba(249,115,22,.18),rgba(249,115,22,.05));color:#FBCDA6}

.q-sb-lic{background:var(--bg-2);border-radius:16px;padding:18px 22px;display:grid;
  grid-template-columns:1fr auto auto;gap:26px;align-items:center;
  box-shadow:inset 0 0 0 1px var(--plan-line)}
.q-sb-lic .who h3{font-size:14.5px;font-weight:600;margin:0 0 6px;display:flex;align-items:center;gap:10px;color:var(--text-0)}
.q-sb-lic .who p{margin:0;font-size:12.5px;line-height:1.55;color:var(--text-1);max-width:64ch}

.q-sb-teams{background:var(--bg-2);border-radius:16px;overflow:hidden}
.q-sb-row{display:grid;grid-template-columns:minmax(190px,1.2fr) 132px 240px minmax(160px,1fr) 92px auto;
  align-items:center;gap:20px;padding:16px 22px;position:relative}
.q-sb-row+.q-sb-row{box-shadow:inset 0 1px 0 var(--line)}
.q-sb-row.head{padding:11px 22px;background:var(--bg-1);font-size:10.5px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--text-3);font-weight:700}
.q-sb-row.alert,.q-sb-row.over{background:linear-gradient(90deg,rgba(240,102,107,.09),transparent 42%)}
.q-sb-row.alert::before,.q-sb-row.over::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--bad)}
.q-sb-row .id{display:flex;align-items:center;gap:12px;min-width:0}
.q-sb-row .av{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;
  font-size:13px;font-weight:700;flex:none}
.q-sb-row .nm{min-width:0;display:flex;flex-direction:column}
.q-sb-row .nm b{font-size:14.5px;font-weight:600;color:var(--text-0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-sb-row .nm span{font-size:12px;color:var(--text-2)}
.q-sb-row .st{display:flex;flex-direction:column;gap:3px;align-items:flex-start}
.q-sb-row .pr{font-size:14px;text-align:right;color:var(--text-0);font-variant-numeric:tabular-nums}
.q-sb-row .pr u{display:block;text-decoration:none;font-size:10px;color:var(--text-3);letter-spacing:.03em}
.q-sb-row .act{display:flex;justify-content:flex-end}

.q-sb-det{font-size:11.5px;color:var(--text-2)}
.q-sb-det b{color:var(--text-1);font-variant-numeric:tabular-nums}
/* Marca cuadrada, distinta del punto redondo del estado: "de dónde sale el
   plan" no es lo mismo que "cómo está el plan". */
.q-sb-marca{position:relative;padding-left:15px;font-size:11.5px;color:var(--text-2)}
.q-sb-marca::before{content:"";position:absolute;left:0;top:.42em;width:8px;height:8px;
  border-radius:3px;box-shadow:inset 0 0 0 1.5px var(--text-3)}

.q-sb-chip{display:inline-flex;align-items:center;gap:6px;height:23px;padding:0 10px;border-radius:999px;
  font-size:11.5px;font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}
.q-sb-chip.free{background:var(--bg-4);color:var(--text-2)}
.q-sb-chip.plan{background:var(--plan-soft);color:#D6C8FF}
.q-sb-chip.trial{background:var(--info-soft);color:#BFDCFA}
.q-sb-chip.beta{background:var(--accent-soft);color:#FDBA74;box-shadow:inset 0 0 0 1px var(--accent-line)}

.q-sb-state{display:inline-flex;align-items:center;gap:7px;font-size:13px;white-space:nowrap}
.q-sb-state i{width:7px;height:7px;border-radius:50%;flex:none;background:currentColor}
.q-sb-state.ok{color:var(--ok)}.q-sb-state.warn{color:var(--warn)}
.q-sb-state.bad{color:var(--bad)}.q-sb-state.info{color:var(--info)}
.q-sb-state.mute{color:var(--text-2)}

.q-sb-cupos{display:flex;flex-direction:column;gap:6px;min-width:0}
.q-sb-cupos .t{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.q-sb-cupos .n{font-size:15px;color:var(--text-0)}
.q-sb-cupos .n i{font-style:normal;color:var(--text-2)}
.q-sb-cupos .tag{font-size:11.5px;white-space:nowrap}
.q-sb-bar{height:8px;border-radius:999px;background:var(--bg-inset,#0F0D0B);position:relative;overflow:hidden}
.q-sb-bar i{position:absolute;left:0;top:0;bottom:0;border-radius:999px;display:block}
.q-sb-bar i.ghost{opacity:.35}
.q-sb-bar i.over{background:repeating-linear-gradient(115deg,var(--bad) 0 5px,rgba(120,40,44,.95) 5px 10px)}
.q-sb-cupos.g-ok .q-sb-bar i{background:var(--ok)}
.q-sb-cupos.g-ok .tag{color:var(--ok)}
.q-sb-cupos.g-warn .q-sb-bar i{background:var(--warn)}
.q-sb-cupos.g-warn .tag{color:var(--warn)}
.q-sb-cupos.g-bad .q-sb-bar i{background:var(--bad)}
.q-sb-cupos.g-bad .tag{color:var(--bad)}

.q-sb-solo{background:var(--bg-2);border-radius:16px;overflow:hidden}
.q-sb-solo__h{display:flex;align-items:center;gap:16px;padding:20px 24px;flex-wrap:wrap}
.q-sb-solo__h .av{width:50px;height:50px;border-radius:14px;display:grid;place-items:center;font-size:16px;font-weight:700;flex:none}
.q-sb-solo__h h2{font-size:20px;font-weight:700;margin:0;color:var(--text-0)}
.q-sb-solo__h .meta{display:flex;align-items:center;gap:12px;margin-top:6px;flex-wrap:wrap}
.q-sb-solo__b{display:grid;grid-template-columns:1.2fr 1fr;gap:20px;padding:0 24px 22px}
.q-sb-solo__b .pane{background:var(--bg-1);border-radius:12px;padding:16px 18px;display:flex;flex-direction:column;gap:10px}
.q-sb-solo__b .ttl{font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-3);font-weight:700}
.q-sb-feats{display:flex;flex-direction:column;gap:7px;font-size:12.5px;color:var(--text-1)}
.q-sb-feats .si::before{content:"\2713  ";color:var(--ok);font-weight:700}
.q-sb-feats .no{color:var(--text-3)}
.q-sb-feats .no::before{content:"\2715  ";color:var(--text-3)}

.q-sb-planes{display:grid;grid-template-columns:1fr 1.6fr;gap:16px;align-items:start}
.q-sb-planes .grp{background:var(--bg-1);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:12px}
.q-sb-planes .gh b{display:block;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--plan)}
.q-sb-planes .gh span{font-size:12.5px;color:var(--text-2)}
.q-sb-planes .cards{display:grid;gap:12px}
.q-sb-planes .cards.dos{grid-template-columns:1fr 1fr}
.q-sb-pcard{background:var(--bg-2);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:12px}
.q-sb-pcard .ph{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.q-sb-pcard h4{font-size:17px;font-weight:700;margin:0;color:var(--text-0)}
.q-sb-pcard .pr{font-size:20px;font-weight:600;text-align:right;line-height:1.1;color:var(--text-0)}
.q-sb-pcard .pr u{display:block;text-decoration:none;font-size:10px;color:var(--text-3);letter-spacing:.03em}
.q-sb-pcard ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--text-1)}
.q-sb-pcard ul b{color:var(--text-0);font-weight:600;font-variant-numeric:tabular-nums}
.q-sb-pbtn{width:100%;padding:10px;border-radius:9px;border:0;cursor:pointer;font-size:13px;font-weight:700;
  background:var(--plan-soft);color:#D6C8FF;box-shadow:inset 0 0 0 1px var(--plan-line)}
.q-sb-pbtn:hover{background:rgba(167,139,250,.22)}

.q-sb-pop{background:var(--bg-3);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:10px;
  box-shadow:inset 0 0 0 1px var(--plan-line)}
.q-sb-pop h4{font-size:14px;font-weight:600;margin:0;color:var(--text-0)}
.q-sb-pop .hint{font-size:12px;color:var(--text-2)}
.q-sb-pop .opt{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;
  border-radius:10px;background:var(--bg-2);border:0;cursor:pointer;text-align:left;font-size:13px;color:var(--text-1)}
.q-sb-pop .opt:hover:not(.dis){background:var(--plan-soft)}
.q-sb-pop .opt.dis{opacity:.75;cursor:not-allowed}
.q-sb-pop .opt .l{display:flex;flex-direction:column;gap:2px}
.q-sb-pop .opt b{color:var(--text-0);font-weight:600}
.q-sb-pop .opt .rt{color:var(--text-1);font-variant-numeric:tabular-nums;flex:none}
.q-sb-cmp-btn{width:100%;padding:11px;border-radius:10px;background:transparent;cursor:pointer;
  border:1px solid var(--line);color:var(--text-2);font-size:13px;font-weight:500}
.q-sb-cmp-btn:hover{color:var(--text-0);background:var(--bg-3)}

.q-sb-empty{background:var(--bg-2);border-radius:16px;padding:44px;display:flex;flex-direction:column;
  align-items:flex-start;gap:14px}
.q-sb-empty h2{font-size:22px;font-weight:700;margin:0;color:var(--text-0)}
.q-sb-empty p{margin:0;font-size:14px;line-height:1.55;color:var(--text-1);max-width:52ch}
.q-sb-empty .fine{font-size:12px;color:var(--text-2)}

@media(max-width:1080px){
  .q-sb-acct__main{grid-template-columns:1fr}
  .q-sb-kv{padding-left:0;border-left:0;border-top:1px solid var(--line);padding-top:16px}
  .q-sb-planes{grid-template-columns:1fr}
  .q-sb-lic{grid-template-columns:1fr}
  .q-sb-solo__b{grid-template-columns:1fr}
}
/* La fila se desarma en tarjeta: la grilla de 6 columnas no entra en un teléfono
   y comprimirla deja los números ilegibles, que es lo contrario de lo que esta
   pantalla viene a hacer. */
@media(max-width:820px){
  .q-sb{padding:16px 14px 40px}
  .q-sb-row{grid-template-columns:1fr auto;gap:12px;padding:16px}
  .q-sb-row.head{display:none}
  .q-sb-row .id{grid-column:1}
  .q-sb-row>div:nth-child(2){grid-column:2;justify-self:end}
  .q-sb-cupos{grid-column:1/-1}
  .q-sb-row .st{grid-column:1}
  .q-sb-row .pr{grid-column:2;justify-self:end;text-align:right}
  .q-sb-row .act{grid-column:1/-1}
  .q-sb-row .act .q-btn{width:100%;justify-content:center}
  .q-sb-strip{flex-wrap:wrap;padding:14px 16px}
  .q-sb-acct__main{padding:18px 16px}
  .q-sb-planes .cards.dos{grid-template-columns:1fr}
}
