/* reset base */
*{box-sizing:border-box}
html,body{margin:0}
body{font:14px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}
img{max-width:100%}
[hidden]{display:none!important}
:root{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}

/* Layout: app shell — dark brand rail + bone workspace for the coach; a phone-sized column for the client */
:root{
  --bg:#F0EDE6; --surface:#FAF8F3; --surface-2:#E7E3D9; --ink:#0F1F1A; --muted:#55665E; --line:#D7D2C5;
  --forest:#294E43; --lime:#C8F060; --on-lime:#0F1F1A;
  --side:#0F1F1A; --side-2:#1B3129; --side-ink:#F0EDE6; --side-muted:#93A79D;
  --rev:#294E43; --form:#A8651C; --good:#2D7A4B; --bad:#B0402E; --train:#2F5D8A; --vid:#7A4A9E; --call:#17767C;
  --shadow:0 1px 2px rgba(15,31,26,.06),0 10px 30px rgba(15,31,26,.07);
  --f-display:"Space Grotesk",ui-sans-serif,system-ui,sans-serif;
  --f-body:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0F1F1A; --surface:#152A22; --surface-2:#1C352B; --ink:#F0EDE6; --muted:#9DB1A7; --line:#2B463A;
  --forest:#86BBA6; --lime:#C8F060; --on-lime:#0F1F1A;
  --side:#09140F; --side-2:#16291F; --side-ink:#F0EDE6; --side-muted:#8CA095;
  --rev:#86BBA6; --form:#E3A45A; --good:#7FD19B; --bad:#F08A76; --train:#8DB6E3; --vid:#C7A3E8; --call:#79CFD3;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 30px rgba(0,0,0,.25); color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0F1F1A; --surface:#152A22; --surface-2:#1C352B; --ink:#F0EDE6; --muted:#9DB1A7; --line:#2B463A;
  --forest:#86BBA6; --lime:#C8F060; --on-lime:#0F1F1A;
  --side:#09140F; --side-2:#16291F; --side-ink:#F0EDE6; --side-muted:#8CA095;
  --rev:#86BBA6; --form:#E3A45A; --good:#7FD19B; --bad:#F08A76; --train:#8DB6E3; --vid:#C7A3E8; --call:#79CFD3;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 30px rgba(0,0,0,.25); color-scheme:dark}

*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.5}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3{font-family:var(--f-display);text-wrap:balance;margin:0;letter-spacing:-.01em}
h1{font-size:30px;font-weight:600;line-height:1.15}
h2{font-size:20px;font-weight:600}
h3{font-size:16px;font-weight:600}
p{margin:0}
.eyebrow{font-family:var(--f-mono);font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--muted)}
.muted{color:var(--muted)}
.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.num{font-variant-numeric:tabular-nums}
:focus-visible{outline:2px solid var(--forest);outline-offset:2px}

/* demo bar */
.demo{background:var(--side);color:var(--side-ink);position:sticky;top:env(safe-area-inset-top,0px);z-index:40;border-bottom:1px solid var(--side-2)}
.demo-in{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;padding-block:8px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.demo .tag-proto{font-family:var(--f-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;background:var(--lime);color:var(--on-lime);padding:3px 8px;border-radius:6px}
.demo .spacer{flex:1}
.seg{display:inline-flex;background:var(--side-2);border-radius:9px;padding:3px}
.seg button{border:0;background:transparent;color:var(--side-muted);padding:5px 12px;border-radius:7px;font-weight:600;font-size:13px;cursor:pointer}
.seg button.on{background:var(--side-ink);color:var(--side)}
.demo select{background:var(--side-2);color:var(--side-ink);border:1px solid #2E4A3F;border-radius:8px;padding:5px 8px;font-size:13px}
.demo .link{background:none;border:0;color:var(--side-muted);font-size:13px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.demo .link.arm{color:var(--lime)}

/* coach shell */
.shell{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:calc(100vh - 50px)}
.side{background:var(--side);color:var(--side-ink);padding-block:22px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:16px;display:flex;flex-direction:column;gap:22px;position:sticky;top:50px;height:calc(100vh - 50px)}
.brand{display:flex;gap:10px;align-items:center}
.mark{width:46px;height:46px;border-radius:50%;background:#fff;display:block;flex:none;object-fit:contain}
.p-top .mark{width:44px;height:44px}
.brand b{font-family:var(--f-display);font-size:16px;display:block;line-height:1.1}
.brand small{color:var(--side-muted);font-size:12px}
.nav{display:flex;flex-direction:column;gap:2px}
.nav button{display:flex;align-items:center;gap:10px;border:0;background:transparent;color:var(--side-muted);padding:9px 10px;border-radius:9px;cursor:pointer;font-weight:500;text-align:left;white-space:nowrap}
.nav button:hover{color:var(--side-ink);background:var(--side-2)}
.nav button.on{color:var(--side-ink);background:var(--side-2)}
.nav button.on svg{color:var(--lime)}
.nav svg{width:18px;height:18px;flex:none}
.nbadge{margin-left:auto;background:var(--lime);color:var(--on-lime);font:600 11px var(--f-mono);border-radius:999px;padding:1px 7px;min-width:20px;text-align:center}
.nicon{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--surface-2);color:var(--forest)}
.nicon svg{width:18px;height:18px}
.nicon.form{color:var(--form);background:color-mix(in srgb,var(--form) 14%,transparent)}
.li.unread{background:color-mix(in srgb,var(--lime) 12%,var(--surface))}
.udot{width:9px;height:9px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 2px var(--surface);flex:none}
.alert{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;background:var(--lime);color:var(--on-lime);border-radius:14px;padding:12px 16px;font-weight:600}
.alert .btn{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.side-foot{margin-top:auto;font-size:12px;color:var(--side-muted);line-height:1.45}
.main{min-width:0;padding-block:30px 72px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.wrap{max-width:1120px;margin:0 auto;display:flex;flex-direction:column;gap:24px}
.head{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:flex-end;justify-content:space-between}
.head .t{display:flex;flex-direction:column;gap:4px;min-width:0}

@media (max-width:860px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .side{position:static;height:auto;flex-direction:column;gap:12px;padding-block:14px 10px;padding-right:max(16px,env(safe-area-inset-right,0px))}
  .side-foot{display:none}
  .nav{flex-direction:row;overflow-x:auto;gap:4px;padding-bottom:4px;scrollbar-width:none}
  .nav button{padding:8px 11px}
  .main{padding-block:22px 64px}
  h1{font-size:25px}
}

/* generic */
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px;min-width:0}
.card.pad0{padding:0}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:18px}
.grid3{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:16px}
.stack{display:flex;flex-direction:column;gap:12px;min-width:0}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.between{justify-content:space-between}
.btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:10px;padding:8px 14px;font-weight:600;font-size:14px;cursor:pointer;display:inline-flex;align-items:center;gap:7px;line-height:1.3;white-space:nowrap}
.btn:hover{border-color:var(--muted)}
.btn.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.btn.lime{background:var(--lime);color:var(--on-lime);border-color:var(--lime)}
.btn.sm{padding:5px 10px;font-size:13px;border-radius:8px}
.btn.ghost{background:transparent;border-color:transparent;color:var(--muted)}
.btn.ghost:hover{color:var(--ink);border-color:var(--line)}
.btn.danger{color:var(--bad)}
.btn svg{width:16px;height:16px}
.field{display:flex;flex-direction:column;gap:5px;min-width:0}
.field label,.lbl{font-size:12px;font-weight:600;color:var(--muted)}
.input,select.input,textarea.input{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:8px 10px;color:var(--ink);min-width:0}
textarea.input{resize:vertical;min-height:70px}
.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:3px 9px;border-radius:999px;background:var(--surface-2);color:var(--ink);white-space:nowrap;line-height:1.4}
.chip.out{background:transparent;border:1px solid var(--line);color:var(--muted)}
.chip.tg{background:color-mix(in srgb,var(--forest) 13%,transparent);color:var(--forest)}
.chip.t-revision{background:color-mix(in srgb,var(--rev) 15%,transparent);color:var(--rev)}
.chip.t-formulario{background:color-mix(in srgb,var(--form) 16%,transparent);color:var(--form)}
.chip.t-hito{background:var(--lime);color:var(--on-lime)}
.chip.late{background:color-mix(in srgb,var(--bad) 14%,transparent);color:var(--bad)}
.chip.done{background:transparent;color:var(--muted);border:1px dashed var(--line)}
button.chip{border:1px solid transparent;cursor:pointer}
button.chip.pick{background:transparent;border-color:var(--line);color:var(--muted)}
button.chip.pick.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.dot{width:8px;height:8px;border-radius:50%;flex:none}
.d-revision{background:var(--rev)}.d-formulario{background:var(--form)}.d-hito{background:var(--lime);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--on-lime) 25%,transparent)}
.empty{padding:22px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:12px;font-size:14px}

/* stats */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:14px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px 18px;display:flex;flex-direction:column;gap:4px}
.stat .v{font:600 30px/1.1 var(--f-display);font-variant-numeric:tabular-nums}
.stat.hl{background:var(--side);color:var(--side-ink);border-color:var(--side)}
.stat.hl .eyebrow{color:var(--side-muted)}
.stat.hl .v{color:var(--lime)}

/* lists */
.list{display:flex;flex-direction:column}
.li{display:flex;gap:12px;align-items:center;padding:12px 16px;border-top:1px solid var(--line);min-width:0}
.li:first-child{border-top:0}
.li .grow{flex:1;min-width:0}
.li .ttl{font-weight:600;overflow-wrap:anywhere}
.li .sub{font-size:13px;color:var(--muted)}
.li.click{cursor:pointer}
.ev-row{align-items:flex-start}
.ev-row .dot{margin-top:7px}
.ev-chips{gap:5px;margin-top:6px}
.ev-acts{display:flex;flex-direction:column;gap:6px;align-items:flex-end;flex:none}
.li.click:hover{background:var(--surface-2)}
.card-h{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.av{width:36px;height:36px;border-radius:50%;background:var(--surface-2);display:grid;place-items:center;font:600 13px var(--f-display);flex:none;color:var(--forest)}
.av.lg{width:56px;height:56px;font-size:19px;background:var(--side);color:var(--lime)}

/* client rows */
.crow{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) 92px;gap:14px;align-items:center;padding:13px 16px;border-top:1px solid var(--line);cursor:pointer}
.crow:hover{background:var(--surface-2)}
.crow.hdr{cursor:default;border-top:0;padding-block:10px}
.crow.hdr:hover{background:transparent}
@media (max-width:760px){.crow{grid-template-columns:minmax(0,1fr) auto}.crow .hide-s{display:none}.crow.hdr{display:none}}
.trend{font-weight:600;font-variant-numeric:tabular-nums;font-size:14px}
.good{color:var(--good)}.bad{color:var(--bad)}

/* tabs */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.tabs button{border:0;background:none;padding:10px 12px;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.tabs button.on{color:var(--ink);border-bottom-color:var(--ink)}

/* chart */
.mcard{display:flex;flex-direction:column;gap:8px}
.mcard .val{font:600 26px/1 var(--f-display);font-variant-numeric:tabular-nums}
.mcard .val small{font:500 13px var(--f-body);color:var(--muted);margin-left:4px}
svg.chart{width:100%;height:auto;display:block;overflow:visible}
svg.chart .grid{stroke:var(--line);stroke-width:1}
svg.chart .ln{fill:none;stroke:var(--forest);stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}
svg.chart .ar{fill:var(--forest);opacity:.12}
svg.chart .pt{fill:var(--surface);stroke:var(--forest);stroke-width:2}
svg.chart .end{fill:var(--lime);stroke:var(--ink);stroke-width:1.5}
svg.chart text{fill:var(--muted);font:500 10px var(--f-mono)}
.chart-empty{font-size:13px;color:var(--muted);padding:20px 0}

/* photos */
.thumbs{display:flex;gap:6px;flex-wrap:wrap}
.thumb{width:54px;height:72px;border-radius:8px;object-fit:cover;background:var(--surface-2);border:1px solid var(--line);cursor:pointer}
.slots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.slot{aspect-ratio:3/4;max-width:100%;border:1.5px dashed var(--line);border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;overflow:hidden;background:var(--bg);color:var(--muted);font-size:13px;font-weight:600;position:relative}
.slot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.slot:hover{border-color:var(--forest)}

/* calendar */
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface)}
.cal .dw{font-family:var(--f-mono);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface-2)}
.cal .cd{min-height:104px;padding:6px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:3px;cursor:pointer;min-width:0}
.cal .cd:hover{background:var(--surface-2)}
.cal .cd.off{background:var(--bg);cursor:default}
.cal .cd .n{font:600 12px var(--f-mono);color:var(--muted)}
.cal .cd.today .n{background:var(--ink);color:var(--bg);border-radius:6px;padding:1px 6px;align-self:flex-start}
.cal .ev{font-size:11px;font-weight:600;padding:2px 5px;border-radius:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal .ev.t-revision{background:color-mix(in srgb,var(--rev) 15%,transparent);color:var(--rev)}
.cal .ev.t-formulario{background:color-mix(in srgb,var(--form) 16%,transparent);color:var(--form)}
.cal .ev.t-hito{background:var(--lime);color:var(--on-lime)}
.cal .ev.isdone{opacity:.45;text-decoration:line-through}
.cal .more{font-size:11px;color:var(--muted)}
.cal .dots{display:none;gap:3px;flex-wrap:wrap}
@media (max-width:640px){.cal .cd{min-height:56px}.cal .ev,.cal .more{display:none}.cal .dots{display:flex}.cal .dw{padding:6px 4px;font-size:10px}}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--muted)}
.legend span{display:inline-flex;gap:6px;align-items:center}

/* plan rules */
.rule{display:grid;grid-template-columns:130px minmax(0,1fr) 90px 90px 36px;gap:10px;align-items:end;padding:12px 16px;border-top:1px solid var(--line)}
@media (max-width:700px){.rule{grid-template-columns:1fr 1fr}.rule .wide{grid-column:1/-1}}
.timeline{display:flex;gap:2px;height:26px;align-items:stretch;border-radius:8px;overflow:hidden;background:var(--surface-2)}
.timeline i{flex:1;display:block;position:relative}
.timeline i b{position:absolute;left:0;right:0;height:6px}
.timeline i b.r{top:3px;background:var(--rev)}.timeline i b.f{top:10px;background:var(--form)}.timeline i b.h{top:17px;background:var(--lime)}

/* files */
.ficon{width:38px;height:42px;border-radius:7px;display:grid;place-items:center;font:600 10px var(--f-mono);text-transform:uppercase;flex:none;background:var(--surface-2);color:var(--forest);border:1px solid var(--line)}
.ficon.pdf{color:var(--bad)}.ficon.xlsx{color:var(--good)}.ficon.mp4,.ficon.mov{color:var(--form)}
.upl{position:relative;overflow:hidden}
.upl input{position:absolute;inset:0;opacity:0;cursor:pointer}

/* client phone */
.phone-wrap{display:flex;justify-content:center;padding-block:28px 60px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.phone-col{display:flex;gap:36px;align-items:flex-start;max-width:980px;width:100%;justify-content:center}
.phone{width:100%;max-width:410px;background:var(--surface);border:1px solid var(--line);border-radius:30px;overflow:hidden;display:flex;flex-direction:column;min-height:780px;box-shadow:var(--shadow)}
.p-top{background:var(--side);color:var(--side-ink);padding:22px 20px 18px;display:flex;justify-content:space-between;align-items:center;gap:10px}
.p-top .hi{font:600 21px/1.15 var(--f-display)}
.p-top .eyebrow{color:var(--side-muted)}
.pscreen{flex:1;padding:18px 18px 24px;display:flex;flex-direction:column;gap:16px;min-width:0}
.tabbar{display:grid;grid-template-columns:repeat(6,1fr);border-top:1px solid var(--line);background:var(--surface);position:sticky;bottom:0;padding-bottom:env(safe-area-inset-bottom,0px)}
.tabbar button{border:0;background:none;padding:9px 2px 10px;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;font-weight:600;color:var(--muted);cursor:pointer}
.tabbar button svg{width:21px;height:21px}
.tabbar button.on{color:var(--ink)}
.tabbar button.on svg{color:var(--forest)}
.hero-c{background:var(--side);color:var(--side-ink);border-radius:16px;padding:18px;display:flex;flex-direction:column;gap:6px}
.hero-c .eyebrow{color:var(--side-muted)}
.hero-c .big{font:600 28px/1.1 var(--f-display)}
.hero-c .rel{color:var(--lime);font-weight:600}
.notes{max-width:330px;display:flex;flex-direction:column;gap:14px;padding-top:8px}
.notes h2{font-size:22px}
.notes li{margin-bottom:6px}
.notes ul{margin:0;padding-left:18px;color:var(--muted);font-size:14px}
@media (max-width:900px){.notes{display:none}}
@media (max-width:480px){.phone-wrap{padding-block:0 0;padding-left:0;padding-right:0}.phone{border-radius:0;border:0;box-shadow:none;min-height:calc(100vh - 92px)}.p-top,.pscreen{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}}
.prog{height:6px;border-radius:9px;background:var(--surface-2);overflow:hidden}
.prog i{display:block;height:100%;background:var(--forest)}
.vplay{width:34px;height:34px;border-radius:50%;background:var(--ink);color:var(--bg);display:grid;place-items:center;flex:none;border:0;cursor:pointer}
.vplay svg{width:14px;height:14px}
.check{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--line);display:grid;place-items:center;flex:none;color:var(--on-lime)}
.check.on{background:var(--lime);border-color:var(--lime)}
.check svg{width:13px;height:13px}

/* entreno */
.chip.t-entreno{background:color-mix(in srgb,var(--train) 15%,transparent);color:var(--train)}
.d-entreno{background:var(--train)}
.cal .ev.t-entreno{background:color-mix(in srgb,var(--train) 14%,transparent);color:var(--train)}
.nicon.train{color:var(--train);background:color-mix(in srgb,var(--train) 14%,transparent)}
.ritem{grid-template-columns:minmax(0,2fr) 80px 90px 110px 36px}
@media (max-width:700px){.ritem{grid-template-columns:1fr 1fr 1fr}.ritem .wide{grid-column:1/-1}}
.setrow{display:grid;grid-template-columns:44px minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:center}
.lastbox{background:var(--bg);border-radius:10px;padding:8px 12px;font-size:13px;color:var(--muted);line-height:1.5}
.lastbox b{color:var(--ink);font-weight:500}
.thread{display:flex;flex-direction:column;gap:8px}
.msg{padding:8px 11px;border-radius:12px;font-size:14px;max-width:88%;background:var(--surface-2);overflow-wrap:anywhere}
.msg.coach{align-self:flex-start;background:color-mix(in srgb,var(--forest) 13%,var(--surface))}
.msg.client{align-self:flex-end}
.mwho{font-size:11px;font-weight:600;color:var(--muted);margin-bottom:2px}
.coachnote{background:color-mix(in srgb,var(--forest) 11%,var(--surface));border-radius:10px;padding:8px 12px;font-size:13px}
.exh{display:flex;align-items:center;gap:12px;width:100%;background:none;border:0;padding:14px 16px;text-align:left;cursor:pointer;color:inherit;border-radius:14px}
.exh:hover{background:var(--surface-2)}
.exh .chev{width:18px;height:18px;color:var(--muted);flex:none}
.exh[aria-expanded="true"] .chev{transform:rotate(180deg)}
@media (prefers-reduced-motion:no-preference){.exh .chev{transition:transform .2s}}
.exb{padding:2px 16px 16px;display:flex;flex-direction:column;gap:10px}
.pc{font:600 12px var(--f-mono);padding:3px 8px;border-radius:999px;background:var(--surface-2);color:var(--muted);flex:none;font-variant-numeric:tabular-nums}
.pc.full{background:var(--lime);color:var(--on-lime)}
.qa{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:10px 18px;background:var(--bg);border-radius:10px;padding:10px 12px;font-size:14px}
.qa .lbl{display:block;margin-bottom:2px}
.allergy{display:flex;gap:10px;align-items:center;background:color-mix(in srgb,var(--bad) 13%,var(--surface));color:var(--bad);border:1px solid color-mix(in srgb,var(--bad) 40%,transparent);border-radius:12px;padding:10px 14px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;font-size:14px}
.allergy svg{width:20px;height:20px;flex:none}
.chip.alrg{background:color-mix(in srgb,var(--bad) 14%,transparent);color:var(--bad)}
.hdate{width:66px;flex:none;display:flex;flex-direction:column;gap:2px}
.hdate b{font:600 22px/1 var(--f-display);font-variant-numeric:tabular-nums}
.hdate span{font:500 11px var(--f-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.private{display:inline-flex;gap:6px;align-items:center;font-size:12px;font-weight:600;color:var(--muted)}
.private svg{width:14px;height:14px}
.fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:12px 16px}
.fgrid .full{grid-column:1/-1}
.click-card{cursor:pointer}.click-card:hover{border-color:var(--forest)}

/* calendario */
.calbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}
.caltitle{font-size:24px;margin-left:6px;white-space:nowrap}
.seg2{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.seg2 button{border:0;background:var(--surface);padding:6px 14px;font-weight:600;font-size:13px;cursor:pointer;color:var(--muted)}
.seg2 button.on{background:var(--ink);color:var(--bg)}
button.chip.pick.tchip.on{background:var(--surface);color:var(--ink);border-color:var(--ink)}
button.chip.pick.tchip:not(.on) .dot{opacity:.35}
.mo,.wk{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--surface)}
.mo-h{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:1px solid var(--line)}
.mo-h span{padding:9px 6px;font:500 11px var(--f-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);text-align:center}
.mo-g{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.mcell{min-height:122px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px 6px 8px;display:flex;flex-direction:column;gap:3px;min-width:0;cursor:pointer}
.mcell:nth-child(7n){border-right:0}
.mcell:nth-last-child(-n+7){border-bottom:0}
.mcell:hover{background:color-mix(in srgb,var(--surface-2) 45%,var(--surface))}
.mcell.out{background:var(--bg)}.mcell.out .mnum{opacity:.55}
.mnum{font:600 12px var(--f-body);color:var(--muted);align-self:center;min-width:26px;height:26px;display:grid;place-items:center;border-radius:999px;padding:0 7px;margin-bottom:2px;white-space:nowrap}
.mcell.today .mnum,.wcol.today .wnum{background:var(--ink);color:var(--bg)}
.cev{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:500;padding:3px 7px;border-radius:6px;min-width:0;cursor:grab;color:var(--ink);user-select:none}
.cev .cev-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.cev .dot{width:7px;height:7px}
.cev.t-revision{background:color-mix(in srgb,var(--rev) 15%,var(--surface))}
.cev.t-formulario{background:color-mix(in srgb,var(--form) 17%,var(--surface))}
.cev.t-hito{background:color-mix(in srgb,var(--lime) 45%,var(--surface))}
.cev.t-entreno{background:color-mix(in srgb,var(--train) 15%,var(--surface))}
.cev:hover{box-shadow:inset 0 0 0 1px var(--line)}
.cev.isdone{opacity:.5}.cev.isdone .cev-t{text-decoration:line-through}
.cev.dragging{opacity:.35}
.cev.big{align-items:flex-start;padding:7px 9px;border-radius:8px}
.cev.big .cev-t{white-space:normal;display:flex;flex-direction:column;gap:1px;overflow-wrap:anywhere}
.cev.big b{font-weight:600}
.cev.big .dot{margin-top:5px;flex:none}
.dropover{background:color-mix(in srgb,var(--lime) 25%,var(--surface))!important;outline:2px dashed var(--forest);outline-offset:-3px}
.more{border:0;background:none;color:var(--muted);font-size:12px;font-weight:600;text-align:left;padding:2px 7px;cursor:pointer}
.more:hover{color:var(--ink)}
.mdots{display:none}
.wk{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.wcol{border-right:1px solid var(--line);display:flex;flex-direction:column;min-width:0;min-height:480px}
.wcol:last-child{border-right:0}
.whd{display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 6px;border-bottom:1px solid var(--line)}
.wnum{font:600 21px var(--f-display);width:40px;height:40px;display:grid;place-items:center;border-radius:50%}
.wcol.today .whd .eyebrow{color:var(--ink)}
.wbody{flex:1;padding:8px 6px;display:flex;flex-direction:column;gap:6px;cursor:pointer;min-width:0}
.addhint{font-size:12px;color:var(--muted);opacity:0;padding:2px 6px}
.wbody:hover .addhint{opacity:1}
@media (max-width:640px){
  .mcell{min-height:58px;padding:4px}.mcell .cev,.mcell .more{display:none}.mdots{display:flex;gap:3px;flex-wrap:wrap;justify-content:center}.mnum{font-size:11px;min-width:22px;height:22px;padding:0 4px}
  .wk{grid-template-columns:minmax(0,1fr)}.wcol{min-height:0;border-right:0;border-bottom:1px solid var(--line);flex-direction:row}.wcol:last-child{border-bottom:0}
  .whd{border-bottom:0;border-right:1px solid var(--line);width:62px;flex:none;justify-content:flex-start}.wnum{font-size:17px;width:34px;height:34px}.addhint{opacity:1}
  .caltitle{font-size:19px}
}

/* agenda cliente */
.cseg{display:grid;grid-template-columns:repeat(3,1fr)}
.cseg button{padding:8px 6px}
.cag-day{align-items:flex-start}
.cag-d{display:flex;flex-direction:column;align-items:center;gap:2px;width:42px;flex:none}
.wnum.sm{width:32px;height:32px;font-size:16px}
.cag-day.today .wnum{background:var(--ink);color:var(--bg)}
.cmo .mcell{min-height:52px;padding:4px;background:none;border-top:0;border-left:0;font:inherit;color:inherit;align-items:center}
.cmo .mcell.out{background:var(--bg)}
.cmo .mdots{display:flex;gap:3px;flex-wrap:wrap;justify-content:center}
.cmo .mnum{min-width:26px;height:26px;padding:0 4px}
.cmo .mcell.sel .mnum{box-shadow:0 0 0 2px var(--forest)}
.tabbar button{font-size:10.5px}

/* modal */
.ov{position:fixed;inset:0;background:rgba(9,20,15,.55);z-index:60;display:flex;align-items:center;justify-content:center;padding:max(16px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) max(16px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}
.modal{background:var(--surface);border-radius:18px;width:100%;max-width:520px;max-height:100%;overflow:auto;display:flex;flex-direction:column;box-shadow:var(--shadow);border:1px solid var(--line)}
.modal .mh{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:18px 20px 12px}
.modal .mb{padding:4px 20px 18px;display:flex;flex-direction:column;gap:14px}
.modal .mf{padding:14px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.cbx{display:flex;gap:9px;align-items:center;padding:7px 0;font-size:14px;cursor:pointer}
.cbx input{width:17px;height:17px;accent-color:var(--forest)}
.player{aspect-ratio:16/9;max-width:100%;background:var(--side);border-radius:12px;display:grid;place-items:center;color:var(--side-muted);text-align:center;padding:20px;font-size:13px}
.player .pb{width:56px;height:56px;border-radius:50%;background:var(--lime);color:var(--on-lime);display:grid;place-items:center;margin:0 auto 10px}
.bigphoto{max-width:100%;border-radius:12px;display:block;margin:0 auto}

.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(24px + env(safe-area-inset-bottom,0px));background:var(--ink);color:var(--bg);padding:11px 18px;border-radius:12px;font-weight:600;font-size:14px;z-index:80;box-shadow:var(--shadow);max-width:calc(100% - 32px)}
@media (prefers-reduced-motion:no-preference){.toast{animation:up .25s ease-out}@keyframes up{from{transform:translate(-50%,10px);opacity:0}}}

/* app real */
.demo .save{font:500 12px var(--f-mono);color:var(--side-muted)}
.demo .save[data-st="error"]{color:#F08A76}
.link-side{background:none;border:0;color:var(--side-ink);padding:6px 0 0;font:600 13px var(--f-body);cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.login{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding-block:24px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));background:var(--side)}
.lcard{width:100%;max-width:400px;background:var(--surface);border-radius:20px;padding:28px 24px;display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;box-shadow:var(--shadow)}
.lcard .field{text-align:left}
.lcard h1{font-size:26px}
.lmark{width:132px;height:132px;border-radius:50%;background:#fff;object-fit:contain}
.lerr{background:color-mix(in srgb,var(--bad) 12%,var(--surface));color:var(--bad);border-radius:10px;padding:10px 12px;font-size:13px;text-align:left}
.vframe{position:relative;aspect-ratio:16/9;max-width:100%;border-radius:12px;overflow:hidden;background:#000}
.vframe iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
button[disabled]{opacity:.6;cursor:default}
@media (max-width:480px){.phone{min-height:100vh;min-height:100dvh}}

/* versión 2 */
.lok{background:color-mix(in srgb,var(--good) 12%,var(--surface));color:var(--good);border-radius:10px;padding:10px 12px;font-size:13px;text-align:left}
.restabs{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.rtab{display:flex;gap:10px;align-items:center;text-align:left;border:1.5px solid var(--line);background:var(--surface);border-radius:14px;padding:12px;cursor:pointer;color:var(--ink);font:inherit;min-width:0}
.rtab.on{border-color:var(--ink);background:var(--bg)}
.rtab b{display:block;font-size:14px;line-height:1.25}
.rtab small{color:var(--muted);font-size:12px}
.rti{width:36px;height:36px;border-radius:50%;background:var(--ink);color:var(--bg);display:grid;place-items:center;flex:none}
.rti svg{width:16px;height:16px}
.rtab:not(.on) .rti{background:var(--surface-2);color:var(--forest)}
.ficon.lnk{color:var(--train);font-size:9px}
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:16px}
.pcard{display:flex;flex-direction:column;gap:14px}
.pcard-main{all:unset;display:flex;flex-direction:column;gap:10px;cursor:pointer}
.pcard-main:focus-visible{outline:2px solid var(--forest);outline-offset:4px;border-radius:8px}
.pcard-main h2{font-size:20px}
.pcard-main:hover h2{text-decoration:underline;text-underline-offset:4px}
.myear{display:grid;gap:2px}
.myear i{display:block;height:9px;border-radius:2px;background:var(--surface-2)}
.myear i.m-revision{background:var(--rev)}
.myear i.m-formulario{background:var(--form)}
.myear i.m-hito{background:var(--lime)}
.ycols{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:16px;align-items:start}
.ycol{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:8px 10px}
.ywk{display:grid;grid-template-columns:36px repeat(7,minmax(0,1fr));gap:3px;align-items:center}
.ywk+.ywk{margin-top:3px}
.ywk:nth-child(4n+2):not(.yhd){margin-top:8px}
.yhd span{font:500 10px var(--f-mono);color:var(--muted);text-align:center;text-transform:uppercase;padding:2px 0}
.ywl{font:600 11px var(--f-mono);color:var(--muted)}
.ycell{height:30px;border:1px solid transparent;background:var(--bg);border-radius:6px;cursor:pointer;display:flex;gap:2px;align-items:center;justify-content:center;padding:0 2px;min-width:0;font:inherit}
.ycell:hover{border-color:var(--forest)}
.ycell.has{background:var(--surface-2)}
.yb{font:700 10px/1 var(--f-mono);width:17px;height:17px;border-radius:4px;display:inline-grid;place-items:center;flex:none}
.legend .yb{margin-right:2px}
.yb.t-revision{background:var(--rev);color:var(--bg)}
.yb.t-formulario{background:var(--form);color:var(--surface)}
.yb.t-hito{background:var(--lime);color:var(--on-lime)}
.dchk{position:relative;display:inline-block}
.dchk input{position:absolute;opacity:0;width:1px;height:1px}
.dchk span{display:inline-grid;place-items:center;min-width:38px;height:34px;border-radius:999px;border:1px solid var(--line);font-weight:600;font-size:13px;cursor:pointer}
.dchk input:checked+span{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.dchk input:focus-visible+span{outline:2px solid var(--forest);outline-offset:2px}
@media (max-width:480px){.ycell{height:34px}}

/* comparar fotos */
.pcmp{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-width:640px;width:100%}
.pcmp-f{margin:0;display:flex;flex-direction:column;gap:8px;min-width:0}
.pcmp-f img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:12px;background:var(--surface-2);cursor:zoom-in;display:block}
.pcmp-none{aspect-ratio:3/4;max-width:100%;border:1.5px dashed var(--line);border-radius:12px;display:grid;place-items:center;text-align:center;color:var(--muted);font-size:13px;padding:10px}
.pcmp-f select{font-size:13px;padding:6px 8px}
.pcd{white-space:nowrap}
.pstrip{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px}
.pst{border:2px solid transparent;background:none;padding:0;border-radius:10px;cursor:pointer;flex:none;width:66px;display:flex;flex-direction:column;gap:3px;font:500 11px var(--f-mono);color:var(--muted);text-align:center}
.pst img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:8px;display:block}
.pst.on{border-color:var(--forest);color:var(--ink)}
.pst.on.a{border-color:var(--form)}

/* registro por fechas */
.mlog-wrap{overflow-x:auto;max-width:100%}
.mlog{border-collapse:separate;border-spacing:0;font-size:14px;min-width:100%}
.mlog th,.mlog td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:center;white-space:nowrap;vertical-align:middle}
.mlog thead th{font:600 12px var(--f-mono);color:var(--muted);background:var(--surface-2)}
.mlog thead th small,.mlog th small{display:block;font:500 10px var(--f-mono);color:var(--muted)}
.mlog tbody th{text-align:left;font-weight:600;position:sticky;left:0;background:var(--surface);z-index:1}
.mlog thead th:first-child{position:sticky;left:0;z-index:2;text-align:left}
.mlog td small{display:block;font-size:11px;font-weight:600}
.mlog-ph img{width:64px;aspect-ratio:3/4;object-fit:cover;border-radius:8px;cursor:zoom-in;display:block;margin:0 auto;background:var(--surface-2)}

/* biblioteca de ejercicios */
.exrow{flex-wrap:wrap}
.exrow .grow{flex:1 1 220px}
.exv{flex:1 1 240px;max-width:360px;font-size:13px;padding:6px 9px}
@media (max-width:640px){.exv{max-width:none}}

/* buscador de ejercicios */
.combo{position:relative}
.combo-list{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:30;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);max-height:300px;overflow:auto}
.combo-opt{padding:9px 12px;cursor:pointer;display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:14px}
.combo-opt small{color:var(--muted);font-size:12px;white-space:nowrap}
.combo-opt.on,.combo-opt:hover{background:var(--surface-2)}
.combo-opt.new{color:var(--forest);font-weight:600}
.combo-empty{padding:10px 12px;color:var(--muted);font-size:13px}

/* v9 · vídeo, videollamada y formularios */
.chip.t-video{background:color-mix(in srgb,var(--vid) 15%,transparent);color:var(--vid)}
.chip.t-llamada{background:color-mix(in srgb,var(--call) 15%,transparent);color:var(--call)}
.d-video{background:var(--vid)}.d-llamada{background:var(--call)}
.cal .ev.t-video{background:color-mix(in srgb,var(--vid) 15%,transparent);color:var(--vid)}
.cal .ev.t-llamada{background:color-mix(in srgb,var(--call) 15%,transparent);color:var(--call)}
.cev.t-video{background:color-mix(in srgb,var(--vid) 15%,var(--surface))}
.cev.t-llamada{background:color-mix(in srgb,var(--call) 15%,var(--surface))}
.myear i.m-video{background:var(--vid)}.myear i.m-llamada{background:var(--call)}
.yb.t-video{background:var(--vid);color:var(--surface)}.yb.t-llamada{background:var(--call);color:var(--surface)}
.hcard.h-formulario{border-color:color-mix(in srgb,var(--form) 45%,var(--line))}
.hcard.h-video{border-color:color-mix(in srgb,var(--vid) 45%,var(--line))}
.hcard.h-llamada{border-color:color-mix(in srgb,var(--call) 45%,var(--line))}
.fq{display:flex;flex-direction:column;gap:8px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.fq:last-child{border-bottom:0;padding-bottom:0}
.fq-l{display:flex;gap:10px;align-items:flex-start;font-weight:600;font-size:15px;line-height:1.35}
.fq-n{flex:none;min-width:24px;height:24px;padding:0 5px;border-radius:7px;background:var(--surface-2);color:var(--muted);font:600 12px/24px var(--f-mono);text-align:center}
.fq textarea.input{min-height:84px}
.scale{display:flex;flex-wrap:wrap;gap:6px}
.sc,.opt{position:relative;cursor:pointer}
.sc input,.opt input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.sc span{display:grid;place-items:center;min-width:38px;height:38px;padding:0 6px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font:600 14px var(--f-mono)}
.opts{display:flex;flex-wrap:wrap;gap:6px}
.opt span{display:inline-block;padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-size:13px;font-weight:600}
.sc input:checked+span,.opt input:checked+span{background:var(--forest);border-color:var(--forest);color:var(--surface)}
.sc input:focus-visible+span,.opt input:focus-visible+span{outline:2px solid var(--forest);outline-offset:2px}
.qa-list{display:flex;flex-direction:column;gap:2px}
.qa-i{padding:10px 0;border-bottom:1px solid var(--line)}
.qa-i:last-child{border-bottom:0}
.qa-q{font-size:13px;color:var(--muted);margin-bottom:3px}
.qa-a{font-size:15px;white-space:pre-wrap;overflow-wrap:anywhere}
.fqe{display:flex;flex-direction:column;gap:10px}
.fqe textarea.input{min-height:52px;font-weight:600}

/* v10 */
.req{color:var(--bad)}
.algdet{font-size:12px;color:var(--bad)}
.algdet b{font-weight:700}
.input.sm{padding:7px 10px;font-size:14px}
.pvid{flex-wrap:wrap;gap:10px}
.pvid-w{flex:1 1 220px;min-width:0;display:flex;flex-direction:column;gap:4px}
.pvid select.input{flex:1 1 220px;max-width:340px}

/* v12 · barra de guardar cambios */
.edbar{position:sticky;bottom:14px;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:12px 16px;border-radius:14px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow)}
.edbar.on{background:var(--side);color:var(--side-ink);border-color:var(--side)}
.edbar-t{display:flex;flex-direction:column;gap:3px;font-size:13px;min-width:0}
.edbar-t b{font-size:15px}
.edbar.on .edbar-t span,.edbar.on .cbx{color:var(--side-muted)}
.edbar.on .btn.ghost{color:var(--side-ink);border-color:color-mix(in srgb,var(--side-ink) 30%,transparent)}
.edbar .btn[disabled]{opacity:.45;cursor:default}

/* v13 · app de cliente a pantalla completa */
.phone-wrap.app{display:block;padding:0}
.phone-wrap.app .phone-col{display:block;max-width:none;gap:0}
.phone-wrap.app .phone{max-width:560px;margin:0 auto;border:0;border-radius:0;box-shadow:none;min-height:100vh;min-height:100dvh;overflow:visible}
@media (min-width:561px){.phone-wrap.app .phone{border-left:1px solid var(--line);border-right:1px solid var(--line)}}
.phone-wrap.app .p-top{position:sticky;top:0;z-index:30;padding:calc(12px + env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) 12px max(16px,env(safe-area-inset-left,0px))}
.phone-wrap.app .p-top .hi{font-size:19px}
.phone-wrap.app .p-top .mark{width:44px;height:44px}
.phone-wrap.app .pscreen{padding:16px max(16px,env(safe-area-inset-right,0px)) calc(86px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}
.phone-wrap.app .tabbar{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:560px;z-index:30;box-shadow:0 -6px 18px rgba(15,31,26,.06)}
.phone-wrap.app ~ .toast{bottom:calc(84px + env(safe-area-inset-bottom,0px))}
.list.h15{max-height:min(330px,42vh);max-height:min(330px,42dvh);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin}

/* v14 · gráficos interactivos */
.modal.wide{max-width:760px}
.mopen{font-size:12px;font-weight:600;color:var(--forest);align-self:flex-end}
.ichart{position:relative;touch-action:pan-y;outline:none;border-radius:10px}
.ichart:focus-visible{box-shadow:0 0 0 2px var(--forest)}
svg.chart.big{width:100%;height:auto;display:block;cursor:crosshair}
svg.chart.big text{font-size:11px}
svg.chart.big .pt{stroke-width:2}
svg.chart .guide{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 3}
svg.chart .hl{fill:var(--lime);stroke:var(--ink);stroke-width:2.5}
.ctip{position:absolute;transform:translate(-50%,calc(-100% - 14px));pointer-events:none;background:var(--ink);color:var(--bg);border-radius:10px;padding:7px 11px;display:flex;flex-direction:column;align-items:center;gap:1px;white-space:nowrap;box-shadow:var(--shadow);z-index:5;font-size:12px}
.ctip.below{transform:translate(-50%,16px)}
.ctip b{font:600 17px/1.2 var(--f-display);font-variant-numeric:tabular-nums}
.ctip b small{font:500 12px var(--f-body);opacity:.75}
.ct-date{opacity:.75}
.ct-d{font-weight:600;opacity:.9}
.ct-d.good{color:color-mix(in srgb,var(--good) 55%,var(--bg))}.ct-d.bad{color:color-mix(in srgb,var(--bad) 55%,var(--bg))}
.mstats .v small{font-size:13px;color:var(--muted);font-weight:500}
.tgood{color:var(--good)}.tbad{color:var(--bad)}
.mlist{max-height:260px;overflow-y:auto;overscroll-behavior:contain}
.mlist .li{gap:12px}
.mdelta{min-width:64px;text-align:right;font:600 13px var(--f-mono);color:var(--muted)}
.mstats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.mstats .stat{padding:10px 12px}
.mstats .v{font-size:22px}
@media (max-width:600px){svg.chart.big text{font-size:17px}svg.chart.big .pt{r:5}}

/* v16 · archivados */
.archnote{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:14px}

/* v17 · perfil y notificaciones */
.pavatar{border:0;background:none;padding:0;border-radius:50%;cursor:pointer;flex:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--side-ink) 25%,transparent)}
.pavatar.on{box-shadow:0 0 0 2px var(--lime)}
.pavatar .av{width:42px;height:42px;font-size:15px;background:var(--side-2);color:var(--lime)}
.p-top{gap:12px}
.av.avimg{object-fit:cover;padding:0;background:var(--surface-2)}
.av.xl{width:84px;height:84px;font-size:28px;background:var(--side);color:var(--lime)}
.pfhead{display:flex;align-items:center;gap:16px}
.pushhint{position:relative;display:flex;flex-direction:column;gap:2px;border-color:color-mix(in srgb,var(--forest) 40%,var(--line));padding-right:44px}
.pushx{position:absolute;top:8px;right:8px;padding:4px}
.pushx svg{width:16px;height:16px}
.p-top .grow{flex:1;text-align:left}
