:root{
  color-scheme:dark;
  --ink:#0B0A0F; --panel:#14121B; --panel2:#1C1926; --panel3:#252131; --line:#2C2839; --line2:#3A3549;
  --mute:#8D87A2; --soft:#BDB7CF; --text:#F5F3FB; --white:#FFFFFF;
  --brand:#3F2870; --brand2:#553A94; --vio:#7C5CE6; --vio-hi:#A58EF8; --vio-lo:#2A1F4A;
  --ok:#43D190; --warn:#F2B544; --bad:#F0616D;
  --r:10px; --r2:16px;
  --f-display:"Big Shoulders Display","Barlow Condensed","Arial Narrow",Impact,sans-serif;
  --f-body:"Barlow",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--ink);color:var(--text);font:15px/1.5 var(--f-body);-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--vio-hi)}
:focus-visible{outline:2px solid var(--vio-hi);outline-offset:2px}
h1,h2,h3{margin:0;text-wrap:balance}
.num,.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.eyebrow{font:600 11px/1.2 var(--f-body);letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
.muted{color:var(--mute)}
.small{font-size:13px}

/* ---------- shell ---------- */
.shell{min-height:100%;display:grid;grid-template-columns:minmax(0,1fr)}
.side{display:none}
.topbar{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:rgba(11,10,15,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.main{padding:20px 16px calc(96px + env(safe-area-inset-bottom,0px));max-width:1280px;width:100%;margin:0 auto;min-width:0}
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;background:#0F0D15;border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px))}
.tabbar button{background:none;border:0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;color:var(--mute);font-size:11px;font-weight:600;border-radius:8px;cursor:pointer}
.tabbar button svg{width:22px;height:22px}
.tabbar button.on{color:var(--text)}
.tabbar button.on svg{color:var(--vio-hi)}
@media (min-width:960px){html:not(.fm) .shell{grid-template-columns:252px minmax(0,1fr)}html:not(.fm) .side{display:flex;flex-direction:column;position:sticky;top:0;height:100vh;padding:22px 14px 16px;background:linear-gradient(180deg,#171325 0%,#0E0C14 55%);border-right:1px solid var(--line)}html:not(.fm) .topbar,html:not(.fm) .tabbar{display:none}html:not(.fm) .main{padding:32px 36px 48px}
}
.side .brand{padding:0 8px 22px}
.nav{display:flex;flex-direction:column;gap:2px;flex:1}
.nav button{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:none;border:0;padding:10px 12px;border-radius:9px;color:var(--soft);font-weight:600;cursor:pointer}
.nav button svg{width:19px;height:19px;flex:none;color:var(--mute)}
.nav button:hover{background:var(--panel2);color:var(--text)}
.nav button.on{background:var(--vio-lo);color:var(--white);box-shadow:inset 3px 0 0 var(--vio)}
.nav button.on svg{color:var(--vio-hi)}
.nav .sep{height:1px;background:var(--line);margin:10px 8px}
.me{display:flex;align-items:center;gap:10px;padding:10px;border-radius:12px;background:var(--panel);border:1px solid var(--line)}
.me .who{flex:1;min-width:0}
.me .who b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px}
.role-tag{font:600 10px/1 var(--f-body);letter-spacing:.12em;text-transform:uppercase;color:var(--vio-hi)}

/* ---------- brand ---------- */
.logo{display:flex;align-items:center;gap:10px}
.logo svg.bear{flex:none}
.wordmark{font-family:var(--f-display);font-weight:800;line-height:.88;letter-spacing:.02em;text-transform:uppercase;color:var(--vio-hi)}
.wordmark small{display:block;font:600 9.5px/1 var(--f-body);letter-spacing:.2em;color:var(--mute);margin-top:6px}

/* ---------- common ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line2);background:var(--panel2);color:var(--text);padding:9px 14px;border-radius:9px;font-weight:600;cursor:pointer;white-space:nowrap;text-decoration:none;font-size:14px}
.btn:hover{border-color:var(--mute)}
.btn svg{width:17px;height:17px}
.btn.pri{background:var(--vio);border-color:var(--vio);color:#fff}
.btn.pri:hover{background:#8C70EE}
.btn.ghost{background:none;border-color:transparent;color:var(--soft)}
.btn.ghost:hover{background:var(--panel2)}
.btn.danger{color:var(--bad);border-color:#5A2A33;background:#1E1116}
.btn.sm{padding:6px 10px;font-size:13px}
.btn.icon{padding:7px;width:34px;height:34px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.spread{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.stack{display:flex;flex-direction:column;gap:14px;min-width:0}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r2);padding:18px;min-width:0}
.card h2{font:700 13px/1.2 var(--f-body);letter-spacing:.12em;text-transform:uppercase;color:var(--soft);margin-bottom:14px}
.grid2{display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}
.grid3{display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}
@media (min-width:760px){html:not(.fm) .grid3{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1100px){html:not(.fm) .grid2{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}html:not(.fm) .grid3{grid-template-columns:repeat(3,1fr)}}
.pagehead{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:22px}
.pagehead h1{font:800 clamp(34px,5vw,52px)/.92 var(--f-display);text-transform:uppercase;letter-spacing:.01em;margin-top:6px}
.pagehead p{margin:8px 0 0;color:var(--soft);max-width:60ch}
.chip{display:inline-flex;align-items:center;gap:6px;font:700 10.5px/1 var(--f-body);letter-spacing:.1em;text-transform:uppercase;padding:5px 8px;border-radius:6px;background:var(--panel3);color:var(--soft);white-space:nowrap}
.chip.v{background:var(--vio-lo);color:var(--vio-hi)}
.chip.ok{background:#12301F;color:var(--ok)}
.chip.warn{background:#35280E;color:var(--warn)}
.chip.bad{background:#351419;color:var(--bad)}
.dot{width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block}
.avatar{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(135deg,var(--brand2),var(--brand));font:800 15px/1 var(--f-display);color:#fff;flex:none;letter-spacing:.04em}
.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding:40px 18px;color:var(--soft)}
.empty h3{font:800 28px/1 var(--f-display);text-transform:uppercase;color:var(--text)}
.empty p{max-width:44ch;margin:0}

/* KPI tiles */
.kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:16px}
@media (min-width:900px){html:not(.fm) .kpis{grid-template-columns:repeat(4,1fr)}}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--r2);padding:14px 16px}
.kpi .v{font:800 40px/1 var(--f-display);margin-top:8px}
.kpi .v small{font:600 14px/1 var(--f-body);color:var(--mute);margin-left:4px}
.kpi .s{font-size:12.5px;color:var(--mute);margin-top:4px}
.kpi.hero{background:linear-gradient(140deg,var(--brand) 0%,#1D1433 100%);border-color:#4B3584}
.kpi.hero .eyebrow{color:#CBBDFB}

/* tables */
.tbl-wrap{overflow-x:auto;margin:0 -4px}
table.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:left;font:600 11px/1 var(--f-body);letter-spacing:.1em;text-transform:uppercase;color:var(--mute);padding:8px 6px;border-bottom:1px solid var(--line)}
.tbl td{padding:10px 6px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tr.click{cursor:pointer}
.tbl tr.click:hover td{background:var(--panel2)}
.who2{display:flex;align-items:center;gap:10px;min-width:160px}
.who2 b{display:block}
.meter{height:6px;border-radius:4px;background:var(--panel3);overflow:hidden;min-width:70px}
.meter i{display:block;height:100%;background:linear-gradient(90deg,var(--brand2),var(--vio-hi));border-radius:4px}

/* forms */
label.f{display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:600;color:var(--soft);min-width:0}
.inp,select.inp,textarea.inp{width:100%;background:var(--ink);border:1px solid var(--line2);border-radius:8px;padding:9px 11px;color:var(--text);font-size:14.5px;min-width:0}
.inp:focus{border-color:var(--vio);outline:none;box-shadow:0 0 0 3px rgba(124,92,230,.25)}
textarea.inp{resize:vertical;min-height:70px}
.fgrid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.check{display:flex;align-items:center;gap:10px;font-weight:600;cursor:pointer}
.check input{width:18px;height:18px;accent-color:var(--vio)}

/* ---------- load column (signature) ---------- */
.loadcol{display:flex;gap:6px;align-items:flex-end;overflow-x:auto;padding:4px 2px 2px}
.wk{position:relative;flex:1 0 34px;min-width:34px;height:120px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:6px;background:none;border:0;cursor:pointer;padding:0;color:var(--mute)}
.wk .track{position:relative;width:100%;flex:1;border-radius:7px;background:var(--panel2);overflow:hidden;border:1px solid var(--line)}
.wk .fill{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(0deg,var(--brand) 0%,var(--vio) 100%);border-radius:6px 6px 0 0}
.wk.deload .fill{background:linear-gradient(0deg,#2B2838,#5E5873)}
.wk .lbl{font:700 11px/1 var(--f-mono)}
.wk.on .track{border-color:var(--vio-hi);box-shadow:0 0 0 2px rgba(165,142,248,.35)}
.wk.on .lbl{color:var(--white)}
.wk.now .lbl::after{content:"";display:block;width:5px;height:5px;border-radius:50%;background:var(--ok);margin:4px auto 0}
.loadcol.mini .wk{height:34px;flex-basis:8px;min-width:8px;cursor:default}
.loadcol.mini{gap:3px;overflow:hidden;min-width:96px}
.loadcol.mini .wk .track{border:0;border-radius:3px}
.loadcol.mini .wk .fill{border-radius:3px}
.loadcol.mini .wk.now .track{outline:1.5px solid var(--vio-hi)}

/* builder */
.builder{display:grid;gap:18px;grid-template-columns:minmax(0,1fr)}
.bcol{display:none}
@media (min-width:1100px){html:not(.fm) .builder{grid-template-columns:92px minmax(0,1fr)}html:not(.fm) .bcol{display:flex;flex-direction:column;gap:8px;position:sticky;top:24px;align-self:start}html:not(.fm) .bcol .loadcol{flex-direction:column;align-items:stretch;overflow:visible;gap:5px}html:not(.fm) .bcol .wk{height:auto;flex:none;flex-direction:row-reverse;justify-content:flex-end;gap:8px;min-width:0}html:not(.fm) .bcol .wk .track{height:26px;flex:1}html:not(.fm) .bcol .wk .fill{top:0;bottom:0;right:auto;height:auto !important;border-radius:6px 0 0 6px;background:linear-gradient(90deg,var(--brand),var(--vio))}html:not(.fm) .bcol .wk.deload .fill{background:linear-gradient(90deg,#2B2838,#5E5873)}html:not(.fm) .bcol .wk .lbl{width:26px;text-align:right}html:not(.fm) .bcol .wk.now .lbl::after{display:inline-block;margin:0 0 1px 3px}html:not(.fm) .hcol{display:none}
}
.btool{display:flex;gap:10px;flex-wrap:wrap;align-items:center;justify-content:space-between;margin-bottom:14px}
.weektitle{font:800 34px/1 var(--f-display);text-transform:uppercase}
.weektitle span{color:var(--vio-hi)}
.daytabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;margin-bottom:14px}
.daytab{flex:none;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:9px 14px;border-radius:10px;border:1px solid var(--line);background:var(--panel);cursor:pointer;text-align:left;min-width:120px}
.daytab b{font:800 18px/1 var(--f-display);text-transform:uppercase}
.daytab small{color:var(--mute);font-size:12px;white-space:nowrap;max-width:170px;overflow:hidden;text-overflow:ellipsis}
.daytab.on{background:var(--vio-lo);border-color:var(--vio)}
.daytab.add{align-items:center;justify-content:center;color:var(--mute);min-width:56px;border-style:dashed}
.block{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px 16px;position:relative;overflow:hidden}
.block::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--line2)}
.block.t-strength::before{background:var(--vio)}
.block.t-metcon::before{background:var(--white)}
.block.t-skill::before{background:var(--vio-hi)}
.block.t-mobility::before{background:var(--ok)}
.block.t-accessory::before{background:var(--mute)}
.block header{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.block h3{font:800 22px/1 var(--f-display);text-transform:uppercase;letter-spacing:.01em;flex:1;min-width:140px}
.block .acts{display:flex;gap:2px}
.btext{margin:10px 0 0;color:var(--soft);font-weight:600}
.items{width:100%;border-collapse:collapse;margin-top:10px;font-size:14px}
.items td{padding:7px 4px;border-top:1px solid var(--line);vertical-align:top}
.items td.ex{font-weight:700}
.items td.sr{font-family:var(--f-mono);white-space:nowrap;color:var(--white)}
.items td.pc{font-family:var(--f-mono);color:var(--vio-hi);white-space:nowrap}
.items td.nt{color:var(--mute);font-size:13px}
.bmeta{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}

/* athlete session */
.today-hero{position:relative;border-radius:20px;padding:22px 20px;background:radial-gradient(120% 140% at 100% 0%,#4A3289 0%,#221840 38%,#0F0C18 75%);border:1px solid #3A2B63;overflow:hidden;margin-bottom:16px}
.today-hero h1{font:800 clamp(40px,9vw,64px)/.88 var(--f-display);text-transform:uppercase}
.today-hero .bear-bg{position:absolute;right:-18px;bottom:-26px;opacity:.16;pointer-events:none}
.ring{display:flex;align-items:center;gap:12px;margin-top:14px}
.ring .big{font:800 34px/1 var(--f-display)}
.logbox{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line2);display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));align-items:end}
.done-banner{margin-top:12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;border-radius:10px;background:#11271B;border:1px solid #1E4A31;color:#BDF2D5}
.done-banner b{font-family:var(--f-mono)}
.kg{font-family:var(--f-mono);color:var(--soft);font-size:12.5px}

/* PR */
.prgrid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}
.prc{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px;cursor:pointer;text-align:left;color:inherit}
.prc.on{border-color:var(--vio);background:var(--vio-lo)}
.prc .kgbig{font:800 44px/1 var(--f-display);margin-top:6px}
.prc .kgbig small{font:600 14px var(--f-body);color:var(--mute)}
.pcts{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px}
.pcts div{background:var(--panel2);border-radius:8px;padding:8px 10px}
.pcts b{display:block;font:700 18px/1.1 var(--f-mono)}
.pcts span{font-size:12px;color:var(--mute)}

/* habits */
.drops{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0}
.drops i{width:22px;height:30px;border-radius:50% 50% 50% 50%/60% 60% 40% 40%;background:var(--panel3);display:block}
.drops i.f{background:linear-gradient(180deg,var(--vio-hi),var(--vio))}
.habit{display:flex;align-items:center;gap:12px;padding:12px;border-radius:12px;border:1px solid var(--line);background:var(--panel2);cursor:pointer;width:100%;text-align:left}
.habit .box{width:26px;height:26px;border-radius:8px;border:2px solid var(--line2);display:grid;place-items:center;flex:none}
.habit.on{border-color:var(--vio);background:var(--vio-lo)}
.habit.on .box{background:var(--vio);border-color:var(--vio)}
.hgrid{display:grid;grid-template-columns:110px repeat(7,1fr);gap:5px;align-items:center;font-size:12.5px}
.hgrid .c{height:22px;border-radius:5px;background:var(--panel3)}
.hgrid .c.f{background:var(--vio)}
.hgrid .h{color:var(--mute);text-align:center;font-family:var(--f-mono);font-size:11px}

/* AI */
.ai-status{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600}
.change{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--panel2)}
.change.off{opacity:.55}
.change .diff{display:grid;gap:8px;grid-template-columns:1fr;margin-top:10px}
@media (min-width:700px){html:not(.fm) .change .diff{grid-template-columns:1fr 1fr}}
.diff .side-b{border-radius:8px;padding:8px 10px;background:var(--ink);border:1px solid var(--line);font-size:13px}
.diff .side-b.new{border-color:#4B3584}
.diff ul{margin:6px 0 0;padding-left:18px}
.qchips{display:flex;gap:6px;flex-wrap:wrap}
.qchips button{border:1px solid var(--line2);background:var(--panel2);border-radius:999px;padding:6px 12px;font-size:13px;cursor:pointer;color:var(--soft)}
.qchips button:hover{border-color:var(--vio);color:var(--text)}
.spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--line2);border-top-color:var(--vio-hi);animation:spin .8s linear infinite;display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}

/* list rows */
.lrow{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.lrow:last-child{border-bottom:0}
.lrow .grow{flex:1;min-width:0}
.lrow .grow b{display:block}
.feed .lrow .avatar{width:30px;height:30px;font-size:13px;border-radius:8px}

/* modal */
#modal:empty{display:none}
.backdrop{position:fixed;inset:0;z-index:60;background:rgba(5,4,9,.72);backdrop-filter:blur(4px);display:flex;align-items:flex-end;justify-content:center}
.sheet{background:var(--panel);border:1px solid var(--line2);width:100%;max-width:760px;max-height:92vh;overflow:auto;border-radius:18px 18px 0 0;padding:20px 16px calc(20px + env(safe-area-inset-bottom,0px))}
@media (min-width:760px){html:not(.fm) .backdrop{align-items:center}html:not(.fm) .sheet{border-radius:18px;padding:24px}}
.sheet.narrow{max-width:460px}
.sheet h2{font:800 28px/1 var(--f-display);text-transform:uppercase;margin-bottom:4px}
.sheet .foot{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}
.itemrow{display:grid;grid-template-columns:1fr;gap:6px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
@media (min-width:640px){html:not(.fm) .itemrow{grid-template-columns:2.2fr .7fr .9fr .7fr 1.6fr 34px;align-items:center}}

/* toast */
#toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(86px + env(safe-area-inset-bottom,0px));z-index:90;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:calc(100% - 32px);max-width:420px}
@media (min-width:960px){html:not(.fm) #toast{bottom:24px}}
.toast{background:var(--white);color:var(--ink);font-weight:700;padding:10px 16px;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.4);font-size:14px}
.toast.bad{background:var(--bad);color:#fff}
.toast.v{background:var(--vio);color:#fff}

/* timer overlay */
#timer:empty{display:none}
.tov{position:fixed;inset:0;z-index:80;background:#050408;display:flex;flex-direction:column;padding:calc(14px + env(safe-area-inset-top,0px)) 16px calc(18px + env(safe-area-inset-bottom,0px));transition:background .3s}
.tov.work{background:radial-gradient(90% 70% at 50% 45%,#3F2870 0%,#120C22 70%)}
.tov.rest{background:#15141B}
.tov.pre{background:radial-gradient(90% 70% at 50% 45%,#1F1834 0%,#050408 70%)}
.tov.fin{background:radial-gradient(90% 70% at 50% 45%,#2A1F4A 0%,#050408 70%)}
.tov .ttop{display:flex;justify-content:space-between;align-items:center;gap:10px}
.tmodes{display:flex;gap:6px;flex-wrap:wrap}
.tmodes button{border:1px solid var(--line2);background:transparent;color:var(--soft);padding:7px 12px;border-radius:999px;font-weight:700;font-size:13px;cursor:pointer}
.tmodes button.on{background:var(--white);color:var(--ink);border-color:var(--white)}
.tcenter{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px;min-height:0}
.tlabel{font:800 clamp(20px,4vw,34px)/1 var(--f-display);text-transform:uppercase;letter-spacing:.06em;color:var(--vio-hi)}
.tbig{font:800 min(30vw,46vh)/0.86 var(--f-display);font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:#fff}
.tsub{font:600 clamp(15px,2.4vw,20px)/1.3 var(--f-body);color:var(--soft)}
.tctl{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.tctl .btn{padding:16px 26px;font-size:17px;border-radius:14px;min-width:120px}
.tcfg{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin-bottom:14px}
.tcfg label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--mute);text-transform:uppercase;letter-spacing:.08em}
.tcfg input{width:96px;background:#0F0D15;border:1px solid var(--line2);border-radius:10px;padding:10px;font:700 22px var(--f-mono);text-align:center;color:#fff}

/* login */
.login{min-height:100%;display:grid;grid-template-columns:1fr}
.login .art{background:#F4F1FB;color:var(--brand);display:flex;flex-direction:column;justify-content:space-between;gap:28px;padding:28px 20px}
.login .art .wordmark{color:var(--brand);font-size:clamp(44px,8vw,86px)}
.login .art .wordmark small{color:#6E6488;font-size:12px}
.login .art .tag{font:800 22px/1 var(--f-display);letter-spacing:.14em;text-transform:uppercase;color:var(--brand)}
.login .pick{padding:28px 20px;display:flex;flex-direction:column;gap:18px;max-width:620px;width:100%;margin:0 auto}
.acct{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border-radius:12px;border:1px solid var(--line);background:var(--panel);cursor:pointer;text-align:left}
.acct:hover{border-color:var(--vio);background:var(--panel2)}
.acct .grow{flex:1;min-width:0}
@media (min-width:960px){html:not(.fm) .login{grid-template-columns:1.05fr 1fr}html:not(.fm) .login .art{padding:48px}html:not(.fm) .login .pick{padding:56px 48px;justify-content:center}}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- forced mobile preview (phone frame) ---------- */
html.fm body{background:radial-gradient(80% 60% at 50% 30%,#2A1F4A 0%,#0B0A0F 70%)}
html.fm .fmwrap{min-height:100%;display:flex;flex-direction:column;align-items:center;gap:14px;padding:18px 16px 24px}
.fmbar{display:none}
html.fm .fmbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;width:100%;max-width:430px}
html.fm #device{width:390px;max-width:100%;height:min(844px,calc(100vh - 110px));min-height:560px;overflow:auto;position:relative;transform:translateZ(0);border-radius:44px;border:10px solid #1B1824;box-shadow:0 0 0 2px #3A3549,0 30px 80px rgba(0,0,0,.6);background:var(--ink);overscroll-behavior:contain}
html.fm #device::-webkit-scrollbar{display:none}
html.fm #device .login{min-height:100%}
html.fm #device .shell{min-height:100%}
html.fm #toast{bottom:86px}
@media (max-width:480px){html.fm #device{border:0;border-radius:0;box-shadow:none;height:auto;min-height:0;overflow:visible;transform:none}html.fm .fmwrap{padding:0}html.fm .fmbar{padding:10px 16px 0}}
html.fm .tbig{font-size:min(118px,30vw)}
html.fm .tlabel{font-size:24px}
html.fm .pagehead h1{font-size:40px}
html.fm .today-hero h1{font-size:48px}
html.fm .fmbar{max-width:560px;justify-content:center}

/* ---------- v3 additions ---------- */
.impbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;margin-bottom:18px;border-radius:12px;background:var(--vio-lo);border:1px solid #4B3584;color:#DCD2FF;font-size:14px}
.impbar svg{width:18px;height:18px;flex:none}
.impbar span{flex:1;min-width:160px}
.coachtag{font:600 11px/1.3 var(--f-body);letter-spacing:.06em;color:var(--vio-hi);text-transform:uppercase}
.coachtag b{color:#fff;font-weight:700}
.seg{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:6px}
.seg button{padding:9px 0;border-radius:9px;border:1px solid var(--line2);background:var(--panel2);color:var(--soft);font:700 15px var(--f-mono);cursor:pointer}
.seg button.on{background:var(--vio);border-color:var(--vio);color:#fff}
.coachmsg{display:flex;gap:10px;align-items:flex-start;margin-top:8px;padding:10px 12px;border-radius:10px;background:var(--vio-lo);border:1px solid #4B3584;font-size:14px}
.coachmsg svg{color:var(--vio-hi);flex:none;margin-top:3px}
.coachmsg b{color:var(--vio-hi);font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.athpick{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin-top:8px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--ink)}
.cal{display:flex;flex-direction:column;gap:4px}
.cal .r{display:flex;gap:4px;align-items:center}
.cal .c,.c.lg{flex:1;height:16px;border-radius:4px;background:var(--panel3);min-width:12px}
.c.lg{display:inline-block;width:12px;height:12px;flex:none;vertical-align:-2px;margin-right:5px}
.c.done{background:var(--vio)}
.c.part{background:var(--brand2)}
.c.miss{background:#3A1D26}
.c.pend{background:var(--panel3)}
.c.fut{background:transparent;border:1px dashed var(--line2)}
.c.today{outline:2px solid #fff;outline-offset:1px}

/* ---------- v4: app-shell móvil (barra inferior fija) ---------- */
@media (max-width:959px){
  html,body{height:100%;overflow:hidden}
  html:not(.fm) .fmwrap,html:not(.fm) #device,#app{height:100%}
  .shell{height:100%;display:flex;flex-direction:column}
  .topbar{position:relative;top:0;flex:none}
  .main{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-bottom:28px}
  .tabbar{position:relative;flex:none}
  .login{height:100%;overflow-y:auto}
}
html.fm #device{overflow:hidden}
html.fm #app{height:100%}
html.fm .shell{height:100%;display:flex;flex-direction:column}
html.fm .topbar{position:relative;top:0;flex:none}
html.fm .main{flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;padding-bottom:28px}
html.fm .main::-webkit-scrollbar{display:none}
html.fm .tabbar{position:relative;flex:none}
html.fm .login{height:100%;overflow-y:auto}
@media (max-width:480px){html.fm .fmwrap{height:100%;padding:0;gap:0}html.fm .fmbar{display:none}html.fm #device{height:100%;min-height:0;border:0;border-radius:0;box-shadow:none;width:100%}}
.tabbar button{position:relative}
.tabbar button.on::before{content:"";position:absolute;top:-6px;left:30%;right:30%;height:3px;border-radius:0 0 3px 3px;background:var(--vio)}

/* ---------- v4: home del atleta ---------- */
.ahead{margin-bottom:14px}
.ahead h1{font:800 44px/.95 var(--f-display);text-transform:uppercase;margin:6px 0 6px}
.wstrip{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:16px}
.ws{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 0 7px;border-radius:12px;background:var(--panel);border:1px solid var(--line);color:var(--soft);cursor:pointer;font:inherit}
div.ws{cursor:default;opacity:.55}
.ws-d{font:700 10.5px/1 var(--f-body);letter-spacing:.1em;color:var(--mute)}
.ws-n{font-size:16px;font-weight:700;color:var(--text)}
.ws-dot{width:6px;height:6px;border-radius:50%;background:transparent}
.ws.plan .ws-dot{background:var(--line2)}
.ws.done .ws-dot{background:var(--vio-hi)}
.ws.part .ws-dot{background:var(--brand2);box-shadow:0 0 0 2px var(--vio-hi) inset}
.ws.miss .ws-dot{background:var(--bad)}
.ws.today{border-color:var(--vio);background:var(--vio-lo)}
.todaycard{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:8px;width:100%;text-align:left;padding:20px 18px 16px;border-radius:20px;border:1px solid #4B3584;background:radial-gradient(120% 140% at 100% 0%,#4A3289 0%,#221840 42%,#110D1C 80%);color:var(--text);cursor:pointer;font:inherit}
.todaycard:hover{border-color:var(--vio-hi)}
.todaycard.rest{cursor:default;background:linear-gradient(140deg,#1D1830,#110E19);border-color:var(--line2)}
.todaycard .eyebrow{color:#CBBDFB}
.tc-title{font:800 clamp(34px,8vw,48px)/.92 var(--f-display);text-transform:uppercase;position:relative;z-index:1;max-width:92%}
.tc-meta{color:#CBBDFB;font-size:14px;position:relative;z-index:1}
.tc-list{display:flex;flex-direction:column;gap:5px;margin-top:4px;position:relative;z-index:1}
.tc-list span{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:600}
.tc-list i{font-style:normal;width:22px;height:22px;border-radius:7px;display:grid;place-items:center;background:rgba(255,255,255,.08);font:700 11px var(--f-mono);color:#CBBDFB;flex:none}
.tc-list span.ok{color:#BDB7CF;text-decoration:line-through;text-decoration-color:rgba(255,255,255,.3)}
.tc-list span.ok i{background:var(--vio);color:#fff}
.tc-prog{display:flex;align-items:center;gap:10px;margin-top:6px;position:relative;z-index:1}
.tc-prog .meter{flex:1}
.tc-cta{display:flex;align-items:center;justify-content:space-between;margin-top:8px;padding-top:12px;border-top:1px solid rgba(255,255,255,.1);font-weight:700;color:#fff;position:relative;z-index:1}
.todaycard .bear-bg{position:absolute;right:-22px;top:-18px;opacity:.13;pointer-events:none}
.mobcard{background:linear-gradient(160deg,#16131F,#121018)}
.mob-title{display:block;font:800 26px/1 var(--f-display);text-transform:uppercase;margin:6px 0 4px}
.mob-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.mob-list span{font-size:13px;padding:6px 10px;border-radius:8px;background:var(--panel2);border:1px solid var(--line)}
.mob-list em{font-style:normal;color:var(--mute);margin-left:4px;font-size:11px}
.rdmini{display:flex;align-items:center;gap:14px;width:100%;color:var(--text);font:inherit}
.rdask{cursor:pointer;border-color:#4B3584;background:linear-gradient(140deg,#1F1834,#14121B)}
.rd-score{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;font:800 24px/1 var(--f-display);flex:none;background:var(--panel3)}
.rd-score.ok{background:#12301F;color:var(--ok)}.rd-score.warn{background:#35280E;color:var(--warn)}.rd-score.bad{background:#351419;color:var(--bad)}.rd-score.none{background:var(--vio);color:#fff}
.waterrow{display:flex;gap:14px;align-items:center}
.qchips button.on{background:var(--vio);border-color:var(--vio);color:#fff}
/* sesión: acordeón */
.sesshead{margin-bottom:16px}
.sesshead h1{font:800 clamp(34px,8vw,52px)/.92 var(--f-display);text-transform:uppercase;margin-top:6px}
.backbtn{margin-left:-8px}
.block.acc{padding:0}
.acc-h{display:flex;align-items:center;gap:12px;width:100%;padding:14px 14px 14px 18px;background:none;border:0;color:var(--text);text-align:left;cursor:pointer;font:inherit}
.acc-n{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:var(--panel3);font:700 14px var(--f-mono);flex:none;color:var(--soft)}
.acc-n.ok{background:var(--vio);color:#fff}
.acc-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.acc-t b{font:800 21px/1.05 var(--f-display);text-transform:uppercase}
.acc-t small{color:var(--mute);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.acc-c{color:var(--mute);flex:none}
.acc-b{padding:0 16px 16px 18px}
.block.acc.isdone:not(.open){opacity:.75}
.block.acc.open{border-color:var(--line2)}
.logbox{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}
/* semana */
.dayrow{display:flex;align-items:center;gap:14px;width:100%;padding:12px 14px;border-radius:14px;background:var(--panel);border:1px solid var(--line);color:var(--text);text-align:left;cursor:pointer;font:inherit}
.dayrow:hover{border-color:var(--line2)}
.dayrow.today{border-color:var(--vio);background:var(--vio-lo)}
.dayrow .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.dayrow .grow b{font:800 20px/1 var(--f-display);text-transform:uppercase}
.dayrow .grow small{color:var(--mute);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dr-date{display:flex;flex-direction:column;align-items:center;width:40px;flex:none}
.dr-date b{font:700 11px/1 var(--f-body);letter-spacing:.1em;color:var(--mute);text-transform:uppercase}
.dr-date span{font-size:20px;font-weight:700;margin-top:3px}
.dr-st{display:flex;align-items:center;gap:6px;color:var(--mute);flex:none}

/* ---------- v5 base ---------- */
button,a,.todaycard,.dayrow,.ws,.acard{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.btn:active,.todaycard:active,.dayrow:active,.ws:active,.acard:active,.acc-h:active,.librow:active{transform:scale(.98)}
.only-mob{display:none}
.tb-l{display:flex;align-items:center;gap:10px;min-width:0}
.tb-title{font:800 22px/1 var(--f-display);text-transform:uppercase;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rpe{display:grid;grid-template-columns:repeat(10,1fr);gap:4px;margin-top:6px}
.rpe button{padding:10px 0;border-radius:8px;border:1px solid var(--line2);background:var(--panel2);color:var(--soft);font:700 14px var(--f-mono);cursor:pointer}
.rpe button.on{background:var(--vio);border-color:var(--vio);color:#fff}
.rpebox{font-size:12.5px;font-weight:600;color:var(--soft)}
.itemrow .mini{display:flex;flex-direction:column;gap:3px;min-width:0}
.itemrow .mini span{display:none;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--mute)}
.acard{display:flex;gap:12px;align-items:flex-start;width:100%;padding:12px;border-radius:14px;border:1px solid var(--line);background:var(--panel2);color:var(--text);text-align:left;cursor:pointer;font:inherit}
.acard .grow{flex:1;min-width:0}
.acard b{font-size:15px}
.acard-p{display:flex;align-items:center;gap:10px;margin-top:8px}
.ucard{display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:14px;border:1px solid var(--line);background:var(--panel2)}
.ucard-r{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.librow{width:100%;background:none;border:0;border-bottom:1px solid var(--line);color:var(--text);text-align:left;cursor:pointer;font:inherit}
.dr-ic{width:24px;height:24px;border-radius:50%;display:grid;place-items:center}
.dr-ic.ok{background:var(--vio);color:#fff}
.dr-ic.miss{width:10px;height:10px;background:var(--bad)}
.prbtn{margin-bottom:16px}
.sheet > .spread:first-child{flex-wrap:nowrap;align-items:flex-start}
.quick{padding-top:14px;border-top:1px solid var(--line)}
.quick-g{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin-top:10px}
.qbtn{display:flex;flex-direction:column;gap:2px;align-items:flex-start;padding:10px 12px;border-radius:12px;border:1px solid var(--line2);background:var(--panel2);color:var(--text);cursor:pointer;font:inherit;text-align:left}
.qbtn:hover{border-color:var(--vio)}
.qbtn b{font-size:15px}
.qbtn span{font-size:12px;color:var(--mute)}

/* ---------- v6: pizarra, fuerza, videos ---------- */
.exl{display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:0;color:inherit;font:inherit;font-weight:700;cursor:pointer;text-align:left}
.exl:hover{color:var(--vio-hi)}
.exl-i{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--panel3);color:var(--mute);flex:none}
.exl-i.v{background:var(--vio);color:#fff}
.wb{margin-top:10px;padding:14px 16px;border-radius:12px;background:#0E0C14;border:1px solid var(--line2);font-size:16px}
.wb-h{font:800 22px/1.1 var(--f-display);text-transform:uppercase;letter-spacing:.02em;color:#fff;margin-bottom:8px}
.wb-l{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;padding:5px 0}
.wb-l>b{font:700 17px var(--f-mono);color:var(--vio-hi);min-width:0}
.wb-l .exl{font-size:16px}
.wb-l em{font-style:normal;color:var(--mute);font-size:13.5px}
.wb-f{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line2);font:700 12px var(--f-body);letter-spacing:.1em;text-transform:uppercase;color:var(--soft)}
.sl{margin-top:10px;display:flex;flex-direction:column}
.sl-r{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line)}
.sl-r:first-child{border-top:0}
.sl-n{display:flex;flex-direction:column;gap:2px;min-width:0}
.sl-n small{color:var(--mute);font-size:12.5px}
.sl-v{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:none}
.sl-v b{font-size:20px;color:#fff}
.sl-v span{font-size:12.5px;color:var(--vio-hi)}
.sl-v strong{color:#fff}
.wbta{font-size:15px;line-height:1.6;min-height:120px}
.exup{margin-top:14px;padding:12px;border-radius:12px;border:1px dashed var(--line2);display:flex;flex-direction:column;gap:10px}
.upbtn{cursor:pointer;justify-content:center}
.exvid{width:100%;max-width:100%;aspect-ratio:16/10;border-radius:12px;background:#000;object-fit:cover;display:block}
.exvid.ph{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#fff;font-size:13px;opacity:.95}
.excue{margin-top:14px;padding:12px 14px;border-radius:12px;background:var(--panel2)}
.excue p{margin:6px 0 0}
/* zonas: colores */
.z-hips{--zc:#7C5CE6}.z-ankles{--zc:#5B8DEF}.z-shoulders{--zc:#B45CE6}.z-tspine{--zc:#E65C9C}.z-hams{--zc:#43B38A}.z-hipflex{--zc:#E68A5C}.z-lats{--zc:#5CC8E6}.z-wrists{--zc:#C9A93B}.z-calves{--zc:#8A7CF0}.z-breath{--zc:#8D87A2}
.zchip{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;font:700 11px/1.2 var(--f-body);letter-spacing:.04em;background:color-mix(in srgb,var(--zc) 22%,transparent);color:color-mix(in srgb,var(--zc) 60%,#fff);border:1px solid color-mix(in srgb,var(--zc) 45%,transparent)}
.mthumb{width:34px;height:34px;border-radius:9px;flex:none;display:grid;place-items:center;color:#fff;background:linear-gradient(140deg,var(--zc),color-mix(in srgb,var(--zc) 35%,#0B0A0F))}
.exvid.ph,.mp-ph{background:radial-gradient(90% 90% at 70% 20%,color-mix(in srgb,var(--zc) 70%,#fff 0%),color-mix(in srgb,var(--zc) 25%,#0B0A0F) 70%)}
/* movilidad */
.mstat{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:999px;background:var(--panel2);border:1px solid var(--line);font-size:13px;color:var(--soft)}
.mstat b{color:#fff;font-family:var(--f-mono)}
.mhero{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:10px;padding:20px 18px 18px;border-radius:20px;border:1px solid #4B3584;background:radial-gradient(120% 140% at 100% 0%,#4A3289 0%,#221840 45%,#110D1C 85%)}
.mhero .bear-bg{position:absolute;right:-20px;top:-16px;opacity:.12;pointer-events:none}
.mh-title{font:800 clamp(30px,7vw,42px)/.95 var(--f-display);text-transform:uppercase;position:relative;z-index:1;max-width:92%}
.mh-why{color:#CBBDFB;font-size:14px;position:relative;z-index:1}
.seg3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;position:relative;z-index:1}
.seg3 button{padding:10px 4px;border-radius:10px;border:1px solid rgba(255,255,255,.14);background:rgba(0,0,0,.25);color:#DCD2FF;font-weight:700;font-size:13px;cursor:pointer}
.seg3 button.on{background:#fff;color:var(--ink);border-color:#fff}
.mh-moves{display:flex;flex-direction:column;gap:6px;position:relative;z-index:1;margin-top:2px}
.mh-moves span{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600}
.mh-moves .mthumb{width:28px;height:28px;border-radius:8px}
.mh-moves em{font-style:normal;color:#CBBDFB;font-weight:500;font-size:12px}
.mob-min{display:flex;flex-direction:column;align-items:center;flex:none;padding:6px 10px;border-radius:12px;background:var(--vio-lo);color:var(--vio-hi);font-size:11px;font-weight:700;text-transform:uppercase}
.mob-min b{font:800 26px/1 var(--f-display);color:#fff}
.mscore{display:flex;align-items:center;gap:14px}
.ms-big{width:74px;height:74px;border-radius:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;flex:none}
.ms-big b{font:800 34px/1 var(--f-display)}.ms-big span{font-size:11px;opacity:.8}
.ms-big.ok{background:#12301F;color:var(--ok)}.ms-big.warn{background:#35280E;color:var(--warn)}.ms-big.bad{background:#351419;color:var(--bad)}
.zbars{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.zbar{display:grid;grid-template-columns:118px 1fr 32px;align-items:center;gap:10px;background:none;border:0;padding:0;color:var(--text);font:inherit;text-align:left;cursor:pointer}
div.zbar{cursor:default}
.zb-l{font-size:13.5px;font-weight:600}
.zb-t{height:10px;border-radius:6px;background:var(--panel3);overflow:hidden}
.zb-t i{display:block;height:100%;border-radius:6px}
.zb-t i.ok{background:var(--ok)}.zb-t i.warn{background:var(--warn)}.zb-t i.bad{background:var(--bad)}
.zbar b{font-size:13px;text-align:right}
.zgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ztile{display:flex;flex-direction:column;justify-content:space-between;gap:14px;min-height:84px;padding:12px;border-radius:14px;border:1px solid color-mix(in srgb,var(--zc) 40%,transparent);background:linear-gradient(150deg,color-mix(in srgb,var(--zc) 30%,#14121B),#14121B 80%);color:#fff;text-align:left;cursor:pointer;font:inherit}
.ztile b{font:800 17px/1 var(--f-display);text-transform:uppercase}
.ztile span{display:flex;align-items:center;gap:6px;font:700 12px var(--f-mono);color:#DCD2FF}
.dotc{width:8px;height:8px;border-radius:50%;display:inline-block}.dotc.ok{background:var(--ok)}.dotc.warn{background:var(--warn)}.dotc.bad{background:var(--bad)}
.pcard{display:flex;align-items:center;gap:12px;padding:14px;border-radius:14px;border:1px solid var(--line);background:var(--panel)}
.pcard .grow{flex:1;min-width:0}
.pcard b{font:800 19px/1.05 var(--f-display);text-transform:uppercase}
.pc-prog{display:flex;align-items:center;gap:8px;margin-top:8px}
.wbars{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;align-items:end}
.wbars>div{display:flex;flex-direction:column;align-items:center;gap:4px}
.wb-bar{width:100%;height:70px;border-radius:7px;background:var(--panel3);display:flex;align-items:flex-end;overflow:hidden}
.wb-bar i{display:block;width:100%;background:linear-gradient(0deg,var(--brand),var(--vio-hi));border-radius:7px}
.mtest-cta{display:flex;flex-direction:column}
.tprog{display:flex;gap:4px;margin-top:10px}
.tprog i{flex:1;height:4px;border-radius:3px;background:var(--panel3)}
.tprog i.d{background:var(--vio)}.tprog i.c{background:#fff}
.topt{display:flex;align-items:center;gap:12px;width:100%;padding:14px;border-radius:12px;border:1px solid var(--line2);background:var(--panel2);color:var(--text);text-align:left;font:inherit;font-weight:600;cursor:pointer}
.topt.on{border-color:var(--vio);background:var(--vio-lo)}
.to-n{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font:700 14px var(--f-mono);flex:none}
.to-n.bad{background:#351419;color:var(--bad)}.to-n.warn{background:#35280E;color:var(--warn)}.to-n.ok{background:#12301F;color:var(--ok)}
/* reproductor de movilidad */
#mplayer:empty{display:none}
.mp{position:fixed;inset:0;z-index:85;display:flex;flex-direction:column;gap:10px;padding:calc(10px + env(safe-area-inset-top,0px)) 16px calc(16px + env(safe-area-inset-bottom,0px));background:radial-gradient(100% 60% at 50% 0%,#2A1F4A 0%,#0B0A0F 70%);overflow-y:auto}
.mp.prep{background:radial-gradient(100% 60% at 50% 0%,#1C1829 0%,#0B0A0F 70%)}
.mp-segs{display:flex;gap:3px}
.mp-segs i{flex:1;height:4px;border-radius:3px;background:rgba(255,255,255,.12);overflow:hidden;position:relative}
.mp-segs i.d{background:var(--vio-hi)}
.mp-segs i b{position:absolute;left:0;top:0;bottom:0;background:#fff;border-radius:3px}
.mp-top{display:flex;justify-content:space-between;align-items:center}
.mp-media{position:relative;width:100%;max-width:520px;margin:0 auto;flex:none}
.mp-vid,.mp-ph{width:100%;aspect-ratio:16/10;border-radius:18px;object-fit:cover;background:#000;display:block}
.mp-ph{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}
.mp-zone{font:800 22px/1 var(--f-display);text-transform:uppercase;letter-spacing:.06em;color:#fff}
.mp-demo{position:absolute;right:10px;bottom:10px;display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border-radius:999px;background:rgba(0,0,0,.55);color:#fff;font-size:12.5px;font-weight:700;text-decoration:none}
.mp-info{text-align:center;max-width:520px;margin:0 auto}
.mp-name{font:800 clamp(30px,8vw,44px)/.95 var(--f-display);text-transform:uppercase;margin-top:6px}
.mp-side{display:inline-block;margin-top:8px;padding:5px 12px;border-radius:999px;background:#fff;color:var(--ink);font-weight:800;font-size:13px}
.mp-cue{color:var(--soft);font-size:14.5px;margin:10px auto 0;max-width:40ch}
.mp-ringwrap{position:relative;width:min(46vw,190px);aspect-ratio:1;margin:4px auto 0;flex:none}
.mp-ringsvg{width:100%;height:100%}
.mp-secwrap{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.mp-secwrap b{font:800 clamp(48px,14vw,72px)/1 var(--f-display);font-variant-numeric:tabular-nums}
.mp-secwrap span{font-size:12px;color:var(--mute)}
.mp-ctl{display:flex;justify-content:center;align-items:center;gap:18px;margin-top:4px}
.mp-b{width:54px!important;height:54px!important;border-radius:50%}
.mp-play{width:74px;height:74px;border-radius:50%;padding:0}
.mp-play svg{width:28px;height:28px}
.pz{display:block;width:20px;height:22px;border-left:7px solid #fff;border-right:7px solid #fff}
.mp-next{text-align:center;color:var(--mute);font-size:13.5px}
.mp-next b{color:#fff}
.mp.done{justify-content:space-between}
.mp-done{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;margin:auto 0}
.mp-check{width:92px;height:92px;border-radius:50%;display:grid;place-items:center;background:var(--vio);color:#fff}
.mp-done h2{font:800 40px/1 var(--f-display);text-transform:uppercase}
.mp-done p{margin:0;color:var(--soft)}
.mp-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:100%;max-width:380px;margin:10px 0}
.mp-stats div{padding:12px 6px;border-radius:12px;background:var(--panel2)}
.mp-stats b{display:block;font:800 30px/1 var(--f-display)}.mp-stats span{font-size:12px;color:var(--mute)}

/* ---------- v7: perfil de movilidad ---------- */
.mseg{margin-top:12px}
.mobcard .seg3 button{background:var(--panel2);border-color:var(--line2);color:var(--soft)}
.mobcard .seg3 button.on{background:var(--vio);border-color:var(--vio);color:#fff}
.mlim{display:flex;align-items:center;gap:8px;margin-top:10px;padding:9px 11px;border-radius:10px;background:#2A2210;border:1px solid #4A3A14;color:#F5D98A;font-size:13px}
.mtest-link{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;margin-top:10px;padding:10px 0 0;border:0;border-top:1px solid var(--line);background:none;color:var(--vio-hi);font:inherit;font-size:13px;font-weight:600;text-align:left;cursor:pointer}
.mprof-name{display:flex;flex-direction:column;gap:2px;margin-top:14px;padding:10px 12px;border-radius:10px;background:var(--vio-lo)}
.mprof-name b{font:800 20px/1.1 var(--f-display);text-transform:uppercase;color:#fff}
.limcard{padding:12px;border-radius:12px;background:var(--panel2);border:1px solid var(--line);border-left:3px solid var(--zc)}
.mvchip{display:inline-flex;align-items:center;gap:8px;padding:4px 10px 4px 4px;border-radius:10px;border:1px solid var(--line2);background:var(--panel);color:var(--text);font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.mvchip .mthumb{width:26px;height:26px;border-radius:7px}
.mtip{margin-top:12px;padding:12px;border-radius:12px;background:linear-gradient(140deg,#1F1834,#15121E);border:1px solid #4B3584}
.mtip-h{display:flex;align-items:center;gap:8px;color:var(--vio-hi);margin-bottom:6px}
.mtip-h b{font:700 12px var(--f-body);letter-spacing:.1em;text-transform:uppercase}
.mtip p{margin:6px 0 10px;font-size:13.5px;line-height:1.45;color:var(--soft)}

/* ---------- v8: tarjeta de hoy ---------- */
.tc-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.ipill{display:inline-flex;align-items:flex-end;gap:2px;padding:5px 10px 5px 8px;border-radius:999px;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.14);font:700 11.5px/1 var(--f-body);color:#fff;letter-spacing:.02em}
.ipill i{width:3px;border-radius:2px;background:rgba(255,255,255,.25);display:inline-block}
.ipill i:nth-child(1){height:6px}.ipill i:nth-child(2){height:9px}.ipill i:nth-child(3){height:12px;margin-right:6px}
.ipill.low i:nth-child(1),.ipill.mid i:nth-child(-n+2),.ipill.high i{background:#fff}
.ipill.high{background:rgba(240,97,109,.22);border-color:rgba(240,97,109,.5)}
.ipill.low{background:rgba(67,209,144,.16);border-color:rgba(67,209,144,.45)}
.tc-go{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;padding:14px 14px 14px 18px;border-radius:14px;background:#fff;color:var(--ink);position:relative;z-index:1;box-shadow:0 8px 28px rgba(124,92,230,.45);animation:tcpulse 2.6s ease-in-out infinite}
.tc-go span{font:800 22px/1 var(--f-display);text-transform:uppercase;letter-spacing:.02em}
.tc-go i{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--vio);color:#fff;flex:none}
.tc-go.fin{background:rgba(255,255,255,.12);color:#fff;box-shadow:none;animation:none}
.tc-go.fin i{background:rgba(255,255,255,.2)}
@keyframes tcpulse{0%,100%{box-shadow:0 8px 28px rgba(124,92,230,.35)}50%{box-shadow:0 8px 34px rgba(165,142,248,.75)}}
.tc-go span{white-space:nowrap;font-size:clamp(17px,5.2vw,22px)}
/* pizarra: descansos, notas del coach, subtítulos y numeración (planes importados) */
.wb-l.wb-rest{color:var(--mute);font:500 12.5px/1.3 var(--f-mono,ui-monospace,monospace);padding:1px 0 4px}
.wb-l.wb-note{display:block;color:var(--soft);font-size:13.5px;font-style:italic;line-height:1.45;padding:6px 0 2px;white-space:pre-line}
.wb-l.wb-sub{display:block;color:#fff;font-weight:800;font-size:13px;letter-spacing:.06em;text-transform:uppercase;padding:12px 0 2px;border-top:1px dashed var(--line2);margin-top:6px}
.wb-l.wb-sub:first-child{border-top:0;margin-top:0;padding-top:0}
.wb-n{color:var(--vio-hi);font-weight:800;min-width:18px}
/* pizarra v2: una línea por ejercicio, cantidades en columna, descansos marcados */
.wb-h{font:800 21px/1.1 var(--f-display);color:#fff;margin:0 0 10px;padding-bottom:10px;border-bottom:1px solid var(--line2)}
.wbr{display:grid;grid-template-columns:minmax(56px,max-content) 1fr;align-items:center;column-gap:12px;padding:6px 0}
.wbr-q{justify-self:start;display:inline-flex;align-items:center;gap:5px;min-width:44px;justify-content:center;padding:4px 9px;border-radius:8px;background:rgba(124,92,255,.16);color:#E7E0FF;font:700 14.5px/1.15 var(--f-mono);white-space:nowrap}
.wbr-q small{display:inline-grid;place-items:center;width:17px;height:17px;border-radius:50%;background:var(--vio);color:#fff;font:800 10.5px/1 var(--f-body)}
.wbr-q.is-dot{background:none;min-width:44px;justify-content:center}
.wbr-q.is-dot i{width:6px;height:6px;border-radius:50%;background:var(--vio-hi)}
.wbr-t{min-width:0;line-height:1.35}
.wbr-t .exl{display:inline;font-size:15.5px;color:#fff}
.wbr-t .exl .exl-i{display:inline-grid;vertical-align:-3px;margin-left:6px;width:16px;height:16px}
.wbr-t em{font-style:normal;color:var(--soft);font-size:13.5px;font-weight:500;margin-left:4px}
.wbr-rest{display:block;padding:4px 0 8px}
.wbr-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:rgba(245,181,68,.12);border:1px solid rgba(245,181,68,.35);color:#F5C46B;font:700 12.5px/1.2 var(--f-body);letter-spacing:.01em}
.wbr-chip svg{flex:none}
.wbr-note{display:block;margin:6px 0 4px;padding:8px 12px;border-left:3px solid var(--vio);background:rgba(124,92,255,.07);border-radius:0 8px 8px 0;color:var(--soft);font-size:13.5px;font-style:italic;line-height:1.45}
.wbr-note.is-b{display:grid;grid-template-columns:10px 1fr;gap:8px;align-items:baseline;border-left:0;background:none;padding:2px 0 6px;margin:0;font-style:normal;color:var(--soft)}
.wbr-note.is-b i{width:6px;height:6px;border-radius:50%;background:var(--mute);transform:translateY(-2px)}
.wbr-sub{margin:14px 0 4px;padding:8px 0 0;border-top:1px dashed var(--line2);color:var(--vio-hi);font:800 12px/1.3 var(--f-body);letter-spacing:.08em;text-transform:uppercase}
.wbr-sub:first-child{margin-top:0;padding-top:0;border-top:0}
.wb-h+.wbr-sub{margin-top:4px;padding-top:0;border-top:0}
.wbr{grid-template-columns:84px 1fr;column-gap:10px;align-items:start;padding:5px 0}
.wbr-q{justify-self:stretch;min-width:0;padding:5px 6px;font-size:13.5px}
.wbr-q.is-dot{padding:9px 6px}
.wbr-t{padding-top:3px}
.wbr-rest{display:inline-block;margin:2px 6px 6px 0;padding:0;vertical-align:top}
.wbr-chip{font-size:12px;padding:3px 9px}
.wbr.wbr-sub{display:block}
.wbr{grid-template-columns:76px 1fr}
.wbr-q{padding:5px 4px}
.wbr-rest{margin-left:86px}
.wbr-note.is-b{margin-left:86px}
/* pizarra v3: número + ejercicio + % en la misma línea; colores configurables */
:root{--wb-num:#A58EF8;--wb-rest:#F5C46B;--wb-note:#7C5CFF}
.wbr.wbr-in{display:block;padding:6px 0;font-size:16px;line-height:1.4;color:#fff}
.wbr-in .wbr-n{color:var(--wb-num);font:800 16px/1.4 var(--f-body);margin-right:2px}
.wbr-in .exl{display:inline;font:700 16px/1.4 var(--f-body);color:#fff}
.wbr-in .exl .exl-i{display:inline-grid;vertical-align:-2px;margin-left:5px;width:16px;height:16px}
.wbr-in .exl .exl-i.v{background:var(--wb-num);color:#0B0A0F}
.wbr-lbl{display:inline-grid;place-items:center;width:20px;height:20px;margin-right:8px;border-radius:50%;background:var(--wb-num);color:#0B0A0F;font:800 11px/1 var(--f-body);vertical-align:1px}
.wbr-pct{color:var(--soft);font-size:15px;font-weight:500;margin-left:2px}
.wbr-pct b{color:var(--wb-num);font-weight:800}
.wbr-rest{display:block;margin:0 0 6px;padding:0}
.wbr-chip{background:color-mix(in srgb,var(--wb-rest) 13%,transparent);border-color:color-mix(in srgb,var(--wb-rest) 40%,transparent);color:var(--wb-rest)}
.wbr-note{border-left-color:var(--wb-note);background:color-mix(in srgb,var(--wb-note) 8%,transparent)}
.wbr-note.is-b{margin-left:0}
.wbr-note.is-b i{background:var(--wb-note)}
.swrow{display:flex;flex-wrap:wrap;gap:10px}
.sw{width:34px;height:34px;border-radius:50%;border:2px solid var(--line2);cursor:pointer;padding:0}
.sw.on{outline:3px solid #fff;outline-offset:2px}
.ytwrap{position:relative;width:100%;aspect-ratio:16/9;border-radius:12px;overflow:hidden;background:#000}
.ytwrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.ytadd{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end;margin-top:14px}
.wbr.wbr-note{padding:8px 12px}
.wbr.wbr-note.is-b{padding:2px 0 6px}
/* pizarra v4: número y ejercicio en la misma fila; detalle y kg abajo */
.wbr.wbr-in{display:block;padding:7px 0}
.wbr-top{display:flex;align-items:baseline;gap:8px;font:700 16px/1.35 var(--f-body);color:#fff}
.wbr-top .wbr-n{flex:none;color:var(--wb-num);font:800 16px/1.35 var(--f-body);margin:0}
.wbr-top .wbr-lbl{flex:none;align-self:center;margin:0}
.wbr-name{min-width:0}
.wbr-name>span{cursor:pointer}
.wbr-play{display:inline-grid;place-items:center;width:18px;height:18px;margin-left:6px;vertical-align:-2px;border:0;border-radius:50%;background:var(--panel3);color:var(--mute);cursor:pointer;padding:0}
.wbr-play.v{background:var(--wb-num);color:#0B0A0F}
.wbr-det{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:3px 0 0}
.wbr-top .wbr-lbl+.wbr-n,.wbr-top .wbr-lbl+.wbr-name{margin-left:0}
.wbr-in .wbr-lbl~.wbr-name,.wbr-in .wbr-n~.wbr-name{}
.wbr-det{padding-left:0}
.wbr-in:has(.wbr-lbl) .wbr-det{padding-left:28px}
.wbr-pct{font-size:14px;color:var(--soft);margin:0}
.wbr-kg{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;background:color-mix(in srgb,var(--wb-num) 16%,transparent);color:var(--wb-num);font:800 13px/1.3 var(--f-body);border:0}
.wbr-kg.none{background:none;border:1px dashed var(--line2);color:var(--mute);font-weight:600;cursor:pointer}
span.wbr-kg.none{cursor:default}
.wbr-in.is-rest .wbr-name{color:var(--mute);font-weight:600}
.wbr-rest{margin:2px 0 8px}
.wbr-name .nw{white-space:nowrap}
.wbr-name .wbr-det{display:flex;margin-top:4px;font-weight:500}
.wbr-in:has(.wbr-lbl) .wbr-det{padding-left:0}
.wbr-kg.none{font-size:12px;padding:1px 8px}
.wbr-top .wbr-lbl{align-self:flex-start;margin-top:2px}
/* v7: todo parejo — descansos como una línea más, subtítulos más grandes */
.wbr-rest{display:block;margin:0;padding:5px 0}
.wbr-chip{display:inline-flex;align-items:center;gap:8px;padding:0;border:0;border-radius:0;background:none;color:var(--wb-rest);font:700 16px/1.35 var(--f-body)}
.wbr-chip svg{width:16px;height:16px}
.wbr-note{font-size:15px}
.wbr-note.is-b{font-size:15px}
.wbr-name .wbr-det,.wbr-pct{font-size:15px}
.wbr-sub{font-size:15px;letter-spacing:.06em;margin-top:16px;padding-top:10px}
.wb-h{font-size:24px}
.mtags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.mtags i{font-style:normal;font-size:11px;font-weight:700;padding:1px 7px;border-radius:999px;background:var(--panel3);color:var(--soft)}
.mtags i.mt-activation{background:rgba(245,181,68,.15);color:#F5C46B}
.mtags i.mt-active{background:rgba(124,92,255,.18);color:#C9BBFF}
.mtags i.mt-passive{background:rgba(56,189,248,.14);color:#7DD3FC}
.mtags i.mt-massage{background:rgba(74,222,128,.14);color:#86EFAC}
.mtags i.mt-breath{background:rgba(255,255,255,.08);color:#fff}
.libcta{display:flex;align-items:center;gap:12px;width:100%;cursor:pointer;border:1px solid var(--line2);color:inherit;font:inherit}
.libcta b{display:block;font:800 20px/1.1 var(--f-display);text-transform:uppercase;margin:4px 0}
.minseg{grid-template-columns:repeat(3,1fr);margin-top:8px}
.softbox{flex-basis:100%;margin-top:10px;padding:10px 12px;border-radius:10px;background:rgba(245,181,68,.10);border:1px solid rgba(245,181,68,.35);display:flex;flex-direction:column;gap:4px}
.softbanner{padding:10px 12px;border-radius:10px;background:rgba(245,181,68,.10);border:1px solid rgba(245,181,68,.35);margin-bottom:12px;font-size:14px}
.mp-yt{position:relative;width:100%;aspect-ratio:16/9;border-radius:16px;overflow:hidden;background:#000}
.mp-yt iframe{position:absolute;inset:0;width:100%;height:100%;border:0;pointer-events:none}
.bguide{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:10px;padding:10px 12px;border-radius:12px;background:rgba(124,92,255,.10);border:1px solid rgba(124,92,255,.35)}

@media (max-width:700px){

.only-mob{display:block}
.only-mob.stack{display:flex}
.only-desk,.only-desk-flex{display:none!important}
.topbar{padding:8px 16px}
.main{padding-top:16px}
.inp,select.inp,textarea.inp{font-size:16px;padding:11px 12px}
.pagehead{margin-bottom:16px}
.pagehead h1{font-size:36px}
.pagehead p:not(.keep){display:none}
.pagehead .kpi{padding:10px 14px}
.pagehead .kpi .v{font-size:30px;margin-top:4px}
.card{padding:16px;border-radius:16px}
.kpi .v{font-size:32px}
.kpis{gap:10px}
.btn{min-height:40px}
.btn.icon{min-height:0;width:40px;height:40px}
.btn.sm{min-height:34px}
.items,.items tbody{display:block}
.items tr{display:grid;grid-template-columns:auto auto 1fr;gap:3px 12px;padding:10px 0;border-top:1px solid var(--line);align-items:baseline}
.items td{border:0!important;padding:0!important}
.items td.ex{grid-column:1/-1;font-size:15px}
.items td.sr{font-size:15px}
.items td.nt{grid-column:1/-1}
.items td:empty{display:none}
.items td.pc .kg{display:inline;margin-left:6px}
.logbox{grid-template-columns:1fr 1fr;gap:12px}
.logbox .row .btn.pri{padding:14px;font-size:16px}
.acc-h{padding:14px 12px 14px 16px}
.acc-b{padding:0 14px 16px 16px}
.acc-t b{font-size:20px}
.ahead h1{font-size:40px}
.todaycard{padding:18px 16px 14px}
.dayrow{padding:12px}
.dayrow .grow b{font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dr-date{width:34px}
.weektitle{font-size:28px}
.btool{margin-bottom:10px;flex-wrap:nowrap}
.btool>.row:first-child{flex-wrap:nowrap}
.loadcol .wk{height:64px;min-width:26px;flex-basis:26px}
.loadcol.mini .wk{height:34px;min-width:8px;flex-basis:8px}
.daytab{min-width:104px;padding:8px 12px}
.block{padding:12px 14px}
.block h3{font-size:20px;min-width:0}
.itemrow{grid-template-columns:repeat(3,1fr) 40px;gap:8px;padding:10px}
.itemrow .mini span{display:block}
.itemrow .ir-ex{grid-column:1/-1}
.itemrow .ir-nt{grid-column:1/4}
.itemrow .ir-del{align-self:end}
.sheet{padding:18px 16px calc(18px + env(safe-area-inset-bottom,0px));max-height:88vh}
.sheet h2{font-size:26px}
.sheet .foot{position:sticky;bottom:calc(-18px - env(safe-area-inset-bottom,0px));background:var(--panel);margin:16px -16px 0;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px))}
.sheet .foot .btn.pri{flex:1}
.grid2,.grid3{gap:12px}
.stack{gap:12px}
.prbtn{width:100%;padding:13px}
.prgrid{grid-template-columns:1fr 1fr;gap:10px}
.prc{padding:12px}
.prc .kgbig{font-size:34px}
.hgrid{grid-template-columns:92px repeat(7,1fr)}
.login .art{padding:22px 20px 18px;gap:12px}
.login .art svg.bear{width:64px;height:64px}
.login .art .wordmark{font-size:40px}
.login .art .tag{display:none}
.login .pick{padding:22px 20px 28px;gap:16px}
.login .pick h1{font-size:36px!important}
.tcfg input{width:84px}
.impbar{margin-bottom:12px;font-size:13px}
.zbar{grid-template-columns:104px 1fr 30px}
.mhero{padding:18px 16px 16px}
.wb{padding:12px 14px}
.sl-v b{font-size:18px}

}
html.fm .only-mob{display:block}
html.fm .only-mob.stack{display:flex}
html.fm .only-desk,html.fm .only-desk-flex{display:none!important}
html.fm .topbar{padding:8px 16px}
html.fm .main{padding-top:16px}
html.fm .inp,html.fm select.inp,html.fm textarea.inp{font-size:16px;padding:11px 12px}
html.fm .pagehead{margin-bottom:16px}
html.fm .pagehead h1{font-size:36px}
html.fm .pagehead p:not(.keep){display:none}
html.fm .pagehead .kpi{padding:10px 14px}
html.fm .pagehead .kpi .v{font-size:30px;margin-top:4px}
html.fm .card{padding:16px;border-radius:16px}
html.fm .kpi .v{font-size:32px}
html.fm .kpis{gap:10px}
html.fm .btn{min-height:40px}
html.fm .btn.icon{min-height:0;width:40px;height:40px}
html.fm .btn.sm{min-height:34px}
html.fm .items,html.fm .items tbody{display:block}
html.fm .items tr{display:grid;grid-template-columns:auto auto 1fr;gap:3px 12px;padding:10px 0;border-top:1px solid var(--line);align-items:baseline}
html.fm .items td{border:0!important;padding:0!important}
html.fm .items td.ex{grid-column:1/-1;font-size:15px}
html.fm .items td.sr{font-size:15px}
html.fm .items td.nt{grid-column:1/-1}
html.fm .items td:empty{display:none}
html.fm .items td.pc .kg{display:inline;margin-left:6px}
html.fm .logbox{grid-template-columns:1fr 1fr;gap:12px}
html.fm .logbox .row .btn.pri{padding:14px;font-size:16px}
html.fm .acc-h{padding:14px 12px 14px 16px}
html.fm .acc-b{padding:0 14px 16px 16px}
html.fm .acc-t b{font-size:20px}
html.fm .ahead h1{font-size:40px}
html.fm .todaycard{padding:18px 16px 14px}
html.fm .dayrow{padding:12px}
html.fm .dayrow .grow b{font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html.fm .dr-date{width:34px}
html.fm .weektitle{font-size:28px}
html.fm .btool{margin-bottom:10px;flex-wrap:nowrap}
html.fm .btool>.row:first-child{flex-wrap:nowrap}
html.fm .loadcol .wk{height:64px;min-width:26px;flex-basis:26px}
html.fm .loadcol.mini .wk{height:34px;min-width:8px;flex-basis:8px}
html.fm .daytab{min-width:104px;padding:8px 12px}
html.fm .block{padding:12px 14px}
html.fm .block h3{font-size:20px;min-width:0}
html.fm .itemrow{grid-template-columns:repeat(3,1fr) 40px;gap:8px;padding:10px}
html.fm .itemrow .mini span{display:block}
html.fm .itemrow .ir-ex{grid-column:1/-1}
html.fm .itemrow .ir-nt{grid-column:1/4}
html.fm .itemrow .ir-del{align-self:end}
html.fm .sheet{padding:18px 16px calc(18px + env(safe-area-inset-bottom,0px));max-height:88vh}
html.fm .sheet h2{font-size:26px}
html.fm .sheet .foot{position:sticky;bottom:calc(-18px - env(safe-area-inset-bottom,0px));background:var(--panel);margin:16px -16px 0;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px))}
html.fm .sheet .foot .btn.pri{flex:1}
html.fm .grid2,html.fm .grid3{gap:12px}
html.fm .stack{gap:12px}
html.fm .prbtn{width:100%;padding:13px}
html.fm .prgrid{grid-template-columns:1fr 1fr;gap:10px}
html.fm .prc{padding:12px}
html.fm .prc .kgbig{font-size:34px}
html.fm .hgrid{grid-template-columns:92px repeat(7,1fr)}
html.fm .login .art{padding:22px 20px 18px;gap:12px}
html.fm .login .art svg.bear{width:64px;height:64px}
html.fm .login .art .wordmark{font-size:40px}
html.fm .login .art .tag{display:none}
html.fm .login .pick{padding:22px 20px 28px;gap:16px}
html.fm .login .pick h1{font-size:36px!important}
html.fm .tcfg input{width:84px}
html.fm .impbar{margin-bottom:12px;font-size:13px}
html.fm .zbar{grid-template-columns:104px 1fr 30px}
html.fm .mhero{padding:18px 16px 16px}
html.fm .wb{padding:12px 14px}
html.fm .sl-v b{font-size:18px}

/* ---------- beta Supabase ---------- */
.linkbtn{background:none;border:0;padding:6px 0;color:var(--vio-hi);font:inherit;font-weight:600;font-size:14px;text-align:left;cursor:pointer}
.invcode{display:flex;flex-direction:column;gap:4px;padding:14px;border-radius:14px;background:var(--vio-lo);border:1px solid #4B3584;text-align:center}
.invcode b{font-size:34px;letter-spacing:.2em;color:#fff}

/* iOS 26 (app instalada): Safari informa una altura menor a la real. supa.js mide y fija --app-h. */
@media (display-mode: standalone) and (max-width:959px){
  html,body{background:#0F0D15}
  html:not(.fm),html:not(.fm) body,html:not(.fm) #app{height:var(--app-h,100%)}
  html:not(.fm),html:not(.fm) body{overscroll-behavior:none}
  .main{background:var(--ink)}
  .login{background:var(--ink)}
}
.dowpick{display:flex;flex-wrap:wrap;gap:6px}
.dowpick button{min-width:46px;padding:9px 10px;border-radius:10px;border:1px solid var(--line2);background:transparent;color:inherit;font-weight:700;font-size:13px;cursor:pointer}
.dowpick button.on{background:var(--vio);border-color:var(--vio);color:#fff}
/* 0.9.17 · sin zoom: bloquea pellizco, doble toque y el zoom automático de iOS al tocar un campo */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;touch-action:pan-x pan-y}
body{touch-action:pan-x pan-y}
@media (hover:none),(max-width:900px){input,select,textarea,.inp{font-size:16px !important}}
/* ===== 0.9.17 · Nutrición ===== */
.ntabs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:4px;margin:0 0 14px}
.ntabs button{padding:10px 4px;border:0;border-radius:9px;background:transparent;color:var(--soft);font-weight:700;font-size:13.5px;cursor:pointer}
.ntabs button.on{background:var(--vio);color:#fff}
.ndate{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 12px}
.ndate>div{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}
.ndate .chip{border:0;cursor:pointer}
.nsum{display:flex;gap:18px;align-items:center}
.nbars{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}
.nbar .spread{font-size:13px;margin-bottom:4px}
.nbar.p .meter i{background:var(--vio)}
.nbar.c .meter i{background:var(--vio-hi)}
.nbar.f .meter i{background:var(--soft)}
.nring{flex:none;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--vio) calc(var(--p)*1%),var(--panel3) 0)}
.nring.over{background:conic-gradient(var(--warn) calc(var(--p)*1%),var(--panel3) 0)}
.nring>div{width:78%;height:78%;border-radius:50%;background:var(--panel);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.nring b{font-size:26px;line-height:1}
.nring span{font-size:11.5px;color:var(--mute);margin-top:4px}
.nitem{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid var(--line)}
.nitem .grow{flex:1;min-width:0}
.nitem .grow b{font-weight:700;margin-right:6px}
.nmeal-act{margin-top:10px;flex-wrap:wrap;gap:6px}
.nmeal-act label.btn{cursor:pointer}
.nphoto{display:block;width:100%;max-height:220px;object-fit:cover;border-radius:10px;margin-top:10px}
.nsearch{position:relative;margin-top:12px}
.nsearch>span{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--mute);display:flex}
.nsearch>span svg{width:18px;height:18px}
.nsearch .inp{padding-left:36px}
.nlist{margin-top:10px;max-height:52vh;overflow:auto}
.nres{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:transparent;border:0;border-bottom:1px solid var(--line);padding:11px 2px;color:inherit;cursor:pointer}
.nres .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.nscan{position:relative;margin-top:12px;border-radius:14px;overflow:hidden;background:#000;aspect-ratio:4/3}
.nscan video{width:100%;height:100%;object-fit:cover}
.nscan i{position:absolute;left:12%;right:12%;top:50%;height:2px;background:var(--vio-hi);box-shadow:0 0 12px var(--vio-hi)}
.ncalc-res{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-top:14px}
.ncalc-res>div{background:var(--vio-lo);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:4px}
.ncalc-res b{font-size:22px;color:#fff}
.nopts{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.nopts button{text-align:left;padding:10px;border-radius:10px;border:1px solid var(--line2);background:transparent;color:inherit;cursor:pointer;display:flex;flex-direction:column;gap:2px}
.nopts button span{font-size:12px;color:var(--mute)}
.nopts button.on{border-color:var(--vio);background:var(--vio-lo)}
.nthumbs{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-top:10px}
.nthumbs img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;display:block}
.mpmeal{border:1px solid var(--line);border-radius:12px;padding:12px;margin-top:10px}
.fgrid.ntg{grid-template-columns:repeat(4,1fr)}
@media (max-width:700px){.nsum{flex-direction:column;align-items:stretch}.nsum .nring{align-self:center}.fgrid.ntg{grid-template-columns:repeat(2,1fr)}.nthumbs{grid-template-columns:repeat(3,1fr)}.nopts{grid-template-columns:1fr}}
.nf-lab{display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:600;color:var(--soft);min-width:0}
/* 0.9.17 · pizarrón alineado: números en columna fija por bloque, nombres siempre en la misma vertical */
.wbr-top .wbr-n{min-width:var(--wbn,0);font-variant-numeric:tabular-nums;text-align:left}
.wbr-top .wbr-n:empty{display:none}
.wb[style*="--wbn"] .wbr-top .wbr-n:empty{display:inline-block}
.wbr-top{gap:10px}
.wbr-name{flex:1}
.wbr-rest{padding:4px 0 6px}
.wbr-chip{gap:10px}
.wbr-chip svg{width:16px;min-width:16px}
.wbr-note{margin:6px 0}
.wbr-sub{margin:14px 0 2px}
.wb[style*="--wbn"] .wbr-top .wbr-n{min-width:max(16px,var(--wbn))}
.wbr-chip{display:grid;grid-template-columns:16px 1fr;column-gap:10px;align-items:center}
.wb[style*="--wbn"] .wbr-chip{grid-template-columns:max(16px,var(--wbn)) 1fr}
/* 0.9.17 · logo de la marca */
.brandbanner{display:flex;align-items:center;justify-content:space-between;gap:14px;background:#F4F1FB;border-radius:16px;padding:12px 16px;margin:0 0 16px}
.brandbanner img{height:64px;width:auto;display:block}
.brandbanner span{display:flex;flex-direction:column;align-items:center;gap:4px;font:800 11px/1.1 var(--f-display);letter-spacing:.14em;text-transform:uppercase;color:var(--brand);text-align:center}
.brandcard{background:#F4F1FB;border-radius:16px;padding:14px 18px}
.brandcard img{width:100%;height:auto;display:block}
.login .art .art-logo{width:100%;max-width:520px;height:auto;display:block}
.login .art .art-foot{display:flex;align-items:center;gap:12px}
@media (max-width:700px){.brandbanner img{height:54px}.brandbanner span{font-size:10px}}
/* 0.9.17.2 · entrada oscura, un solo logo chico, lo principal es el formulario */
.login .art{background:transparent;color:var(--text);align-items:center;justify-content:center;text-align:center;gap:10px;padding:calc(env(safe-area-inset-top,0px) + 28px) 24px 4px}
.login .art .art-logo{width:100%;max-width:210px;height:auto;display:block;margin:0 auto}
.login .art .tag{display:block!important;font:800 12px/1 var(--f-display);letter-spacing:.24em;text-transform:uppercase;color:var(--mute)}
@media (min-width:960px){html:not(.fm) .login .art{background:#0E0C14;border-right:1px solid var(--line)}html:not(.fm) .login .art .art-logo{max-width:380px}}
@media (max-width:959px){.login .pick{padding-top:22px!important}}
.pendbox{margin-top:10px;padding:12px;border:1px dashed var(--line2);border-radius:12px}
.wbr-side{font-size:.62em;font-weight:600;opacity:.8;margin-left:1px;letter-spacing:0}
/* 0.9.20: tamaño de letra (lupa) */
#app .main,.sheet{zoom:var(--uz,1)}
.fspop{position:fixed;z-index:60;top:calc(64px + env(safe-area-inset-top,0px));right:12px;width:min(300px,calc(100vw - 24px));background:#221D31;border:1px solid var(--line2);border-radius:16px;padding:14px;box-shadow:0 16px 40px rgba(0,0,0,.55)}
@media (min-width:960px){html:not(.fm) .fspop{top:auto;bottom:90px;left:24px;right:auto}}
.fspop-t{font-size:13px;color:var(--mute);font-weight:600;margin-bottom:10px}
.fsseg{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.fsseg button{height:48px;border-radius:12px;background:var(--panel2);border:1px solid var(--line2);color:var(--text);font-weight:800;cursor:pointer}
.fsseg button.on{background:var(--vio);border-color:var(--vio);color:#fff}
.topbar .btn.icon.on{background:var(--vio);border-color:var(--vio);color:#fff}
/* 0.9.20: menú inferior más grande y a salvo de la barra de Safari */
@media (max-width:959px){html,body{height:100dvh}.shell{height:100dvh}}
.tabbar{padding:8px 4px calc(10px + env(safe-area-inset-bottom,0px))}
.tabbar button{min-height:56px;gap:4px;font-size:12px;justify-content:center}
.tabbar button svg{width:28px;height:28px}
.tabbar button.on::before{top:-8px}
/* 0.9.20: todos los videos de movilidad del mismo tamaño */
.mp-vid,.mp-ph,.mp-yt{aspect-ratio:16/9;border-radius:16px}

/* 0.9.21: iOS no hace zoom automático al tocar un campo si la letra es >=16px */
@media (max-width:959px){input,select,textarea,.inp{font-size:16px!important}}
/* 0.9.25 · tira de videos abajo del bloque + colores más calmos */
.vstrip{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.vs-h{font:700 11px/1 var(--f-body);letter-spacing:.16em;text-transform:uppercase;color:var(--mute);margin-bottom:10px}
.vs-row{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.vs-row::-webkit-scrollbar{display:none}
.vs-it{flex:none;width:96px;background:none;border:0;padding:0;text-align:left;cursor:pointer;color:inherit}
.vs-th{position:relative;display:block;width:96px;height:62px;border-radius:12px;overflow:hidden;background:linear-gradient(135deg,var(--vio-lo),#121019 75%);border:1px solid var(--line2)}
.vs-th img{width:100%;height:100%;object-fit:cover;display:block;opacity:.85}
.vs-pb{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:30px;height:30px;border-radius:50%;background:var(--vio);color:#fff;display:grid;place-items:center;box-shadow:0 3px 10px rgba(0,0,0,.45)}
.vs-pb svg{margin-left:2px}
.vs-nm{display:block;margin-top:6px;font:600 11.5px/1.25 var(--f-body);color:var(--soft);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.vs-it:active .vs-th{transform:scale(.97)}
.wbr-pct b{color:var(--vio-hi)}
.wbr-kg{background:color-mix(in srgb,var(--vio-hi) 16%,transparent);color:var(--vio-hi)}
.wbr-name [data-act="exinfo"]{cursor:pointer}
.vs-row{align-items:flex-start}
.block.t-strength::before,.block.t-metcon::before,.block.t-skill::before,.block.t-mobility::before,.block.t-accessory::before{background:var(--vio)}
.wbr-sub{color:#CFC8E3}
.emptyblk{display:flex;align-items:center;gap:8px;padding:12px 14px;border:1px dashed var(--line2);border-radius:12px;color:var(--mute);font:600 14px/1.3 var(--f-body)}
