
/* Layout: consola clínica — barra lateral verde profundo + espacio de trabajo fluido; app del paciente como columna de teléfono centrada */
:root{
 --bg:#F6F2E9;--surface:#FFFFFF;--surface-2:#FAF8F3;--surface-3:#EFEBE1;--line:#E3E0D6;--line-2:#D4D0C4;
 --ink:#14211B;--ink-2:#46564E;--ink-3:#627269;
 --brand:#3B5543;--brand-2:#0F2E23;--on-brand:#FFFFFF;--brand-soft:#E3EBE2;--brand-ink:#3B5543;
 --forest:#0F2E23;--salvia-m:#6E8A72;--salvia:#A3B49B;--crema:#F6F2E9;--logo:#6E8A72;--wm:#0F2E23;
 --warm:#A8763A;--warm-soft:#F6ECD9;
 --ok:#2F6B4F;--ok-soft:#E3EEE6;--warn:#8A5A12;--warn-soft:#F6ECD9;--bad:#A33D31;--bad-soft:#F6DEDA;--info:#3A6A8A;--info-soft:#E2ECF2;--ai:#6650AE;--ai-soft:#EEEAF8;
 --c1:#3B5543;--c2:#C29A5B;--c3:#3A6A8A;--c4:#6650AE;--track:#ECE8DE;
 --side:#0F2E23;--side-2:#183D2F;--side-ink:#E9EEE6;--side-ink-2:#A3B49B;--side-line:#21483A;--mint:#A3B49B;
 --av1b:#E3EBE2;--av1f:#3B5543;--av2b:#F6ECD9;--av2f:#8A5A12;--av3b:#E2ECF2;--av3f:#3A6A8A;--av4b:#EEEAF8;--av4f:#6650AE;--av5b:#F6DEDA;--av5f:#A33D31;--av6b:#ECEFE3;--av6f:#5A6B3E;
 --shadow:0 1px 2px rgba(15,46,35,.05),0 2px 10px rgba(15,46,35,.04);--shadow-lg:0 24px 64px rgba(15,46,35,.22);
 --r:16px;--r-s:10px;
 --f-display:'Bricolage Grotesque','Figtree',system-ui,sans-serif;
 --f-body:'Figtree',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
 --bg:#0A1712;--surface:#10221B;--surface-2:#142820;--surface-3:#1A3027;--line:#22392F;--line-2:#2E473C;
 --ink:#EEF1EA;--ink-2:#B5C2B5;--ink-3:#849585;
 --brand:#A3B49B;--brand-2:#BCCAB4;--on-brand:#0F2E23;--brand-soft:#1E3429;--brand-ink:#BCCAB4;
 --forest:#0F2E23;--salvia-m:#6E8A72;--salvia:#A3B49B;--crema:#F6F2E9;--logo:#A3B49B;--wm:#F6F2E9;
 --warm:#D9B57E;--warm-soft:#38291A;
 --ok:#7DBF99;--ok-soft:#173226;--warn:#E3B45E;--warn-soft:#382C13;--bad:#EE8A79;--bad-soft:#3B1C18;--info:#7FB0D4;--info-soft:#15283A;--ai:#A894E6;--ai-soft:#241E38;
 --c1:#A3B49B;--c2:#D9B57E;--c3:#7FB0D4;--c4:#A894E6;--track:#20362C;
 --side:#07130E;--side-2:#0F241B;--side-ink:#E2EAE0;--side-ink-2:#8FA38A;--side-line:#183026;--mint:#A3B49B;
 --av1b:#1E3429;--av1f:#BCCAB4;--av2b:#38291A;--av2f:#E3B45E;--av3b:#172A3C;--av3f:#93BFE7;--av4b:#261F3A;--av4f:#BCA9EE;--av5b:#3A1D19;--av5f:#F19B8B;--av6b:#262C1A;--av6f:#C1CD8F;
 --shadow:0 1px 2px rgba(0,0,0,.3),0 2px 10px rgba(0,0,0,.2);--shadow-lg:0 24px 64px rgba(0,0,0,.5);color-scheme:dark}}
:root[data-theme="dark"]{
 --bg:#0A1712;--surface:#10221B;--surface-2:#142820;--surface-3:#1A3027;--line:#22392F;--line-2:#2E473C;
 --ink:#EEF1EA;--ink-2:#B5C2B5;--ink-3:#849585;
 --brand:#A3B49B;--brand-2:#BCCAB4;--on-brand:#0F2E23;--brand-soft:#1E3429;--brand-ink:#BCCAB4;
 --forest:#0F2E23;--salvia-m:#6E8A72;--salvia:#A3B49B;--crema:#F6F2E9;--logo:#A3B49B;--wm:#F6F2E9;
 --warm:#D9B57E;--warm-soft:#38291A;
 --ok:#7DBF99;--ok-soft:#173226;--warn:#E3B45E;--warn-soft:#382C13;--bad:#EE8A79;--bad-soft:#3B1C18;--info:#7FB0D4;--info-soft:#15283A;--ai:#A894E6;--ai-soft:#241E38;
 --c1:#A3B49B;--c2:#D9B57E;--c3:#7FB0D4;--c4:#A894E6;--track:#20362C;
 --side:#07130E;--side-2:#0F241B;--side-ink:#E2EAE0;--side-ink-2:#8FA38A;--side-line:#183026;--mint:#A3B49B;
 --av1b:#1E3429;--av1f:#BCCAB4;--av2b:#38291A;--av2f:#E3B45E;--av3b:#172A3C;--av3f:#93BFE7;--av4b:#261F3A;--av4f:#BCA9EE;--av5b:#3A1D19;--av5f:#F19B8B;--av6b:#262C1A;--av6f:#C1CD8F;
 --shadow:0 1px 2px rgba(0,0,0,.3),0 2px 10px rgba(0,0,0,.2);--shadow-lg:0 24px 64px rgba(0,0,0,.5);color-scheme:dark}

html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
#app{height:100%}
*{box-sizing:border-box}
h1,h2,h3,h4,h5{font-family:var(--f-display);margin:0;letter-spacing:-.01em;text-wrap:balance;font-weight:600}
h1{font-size:28px;line-height:1.15}h2{font-size:21px}h3{font-size:16px}h4{font-size:15px}h5{font-size:13px;font-family:var(--f-body);font-weight:700}
p{margin:0}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0;text-align:left}
input,select,textarea{font:inherit;color:var(--ink)}
a{color:var(--brand-ink)}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}
.i{width:18px;height:18px;flex:none}.i.xs{width:14px;height:14px}
.muted{color:var(--ink-3)}.sm{font-size:12.5px}.c{text-align:center}.nowrap{white-space:nowrap}
.fine{font-size:12px;color:var(--ink-3);margin-top:10px;display:flex;gap:6px;align-items:flex-start}.fine.c{justify-content:center}
.eyebrow{font-size:11px;letter-spacing:.09em;text-transform:uppercase;font-weight:700;color:var(--brand-ink)}.eyebrow.light{color:var(--mint)}
.row{display:flex;align-items:center}.between{justify-content:space-between}.end{justify-content:flex-end}.gap-s{gap:8px}.wrap{flex-wrap:wrap}
.mt{margin-top:16px}.mt-s{margin-top:8px}.mb{margin-bottom:14px}
.pos{color:var(--ok)}.neg{color:var(--bad)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.empty{color:var(--ink-3);padding:14px 0;font-size:13px}

/* botones */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:38px;padding:0 15px;border-radius:11px;font-weight:600;font-size:13.5px;transition:background .15s,transform .1s,border-color .15s;white-space:nowrap;border:1px solid transparent}
.btn:active{transform:translateY(1px)}
.btn.primary{background:var(--brand);color:var(--on-brand)}.btn.primary:hover{background:var(--brand-2)}
.btn.ghost{background:var(--surface);border-color:var(--line-2);color:var(--ink)}.btn.ghost:hover{background:var(--surface-2)}
.btn.soft{background:var(--brand-soft);color:var(--brand-ink)}.btn.soft:hover{filter:brightness(.97)}
.btn.sm{height:32px;padding:0 11px;font-size:12.5px;border-radius:9px}.btn.xs{height:27px;padding:0 9px;font-size:12px;border-radius:8px}.btn.lg{height:46px;font-size:15px}
.btn.wide{width:100%}.btn.icon{width:40px;padding:0}
.link-btn{color:var(--brand-ink);font-weight:600;font-size:13px;display:inline-flex;align-items:center;gap:4px}
.icon-btn{width:36px;height:36px;border-radius:10px;display:inline-grid;place-items:center;color:var(--ink-2);position:relative;cursor:pointer;flex:none}
.icon-btn:hover{background:var(--surface-3)}.icon-btn.xs{width:28px;height:28px;border-radius:8px}.icon-btn.ok{color:var(--ok)}
.icon-btn .dot{position:absolute;top:7px;right:8px;width:8px;height:8px;border-radius:50%;background:var(--warm);border:2px solid var(--surface)}

/* etiquetas */
.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:3px 9px 3px 7px;border-radius:99px;white-space:nowrap}
.pill i{width:7px;height:7px;border-radius:50%;background:currentColor}
.pill.ok,.tag.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn,.tag.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad,.tag.bad{background:var(--bad-soft);color:var(--bad)}.pill.neutral,.tag.neutral{background:var(--surface-3);color:var(--ink-2)}
.tag{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;padding:3px 8px;border-radius:7px;white-space:nowrap}
.tag.info{background:var(--info-soft);color:var(--info)}.tag.ai{background:var(--ai-soft);color:var(--ai)}
.chip{display:inline-block;padding:3px 9px;border-radius:7px;background:var(--surface-3);font-size:12.5px;margin:2px 4px 2px 0}
.chip.ok{background:var(--ok-soft);color:var(--ok)}.chip.warn{background:var(--warn-soft);color:var(--warn)}.chip.bad{background:var(--bad-soft);color:var(--bad)}
.chip-btn{padding:6px 12px;border-radius:99px;border:1px solid var(--line-2);background:var(--surface);font-size:12.5px;font-weight:500;white-space:nowrap}
.chip-btn.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.chips-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.nb{display:inline-grid;place-items:center;min-width:19px;height:19px;padding:0 5px;border-radius:99px;font-size:11px;font-weight:700;background:var(--warm);color:#fff;font-style:normal}
.nb.warn{background:var(--warn)}.nb.soft{background:var(--ai-soft);color:var(--ai)}
.count{font-family:var(--f-body);font-size:12px;font-weight:700;color:var(--ink-3);background:var(--surface-3);padding:1px 7px;border-radius:99px;margin-left:4px}
.demo-chip{font-size:11px;font-weight:600;color:var(--warm);background:var(--warm-soft);padding:4px 9px;border-radius:99px;white-space:nowrap}

/* avatares */
.av{width:38px;height:38px;border-radius:50%;display:inline-grid;place-items:center;font-weight:700;font-size:13px;flex:none;letter-spacing:.02em}
.av.xs{width:24px;height:24px;font-size:9.5px}.av.sm{width:32px;height:32px;font-size:11.5px}.av.lg{width:64px;height:64px;font-size:21px;font-family:var(--f-display)}
.av1{background:var(--av1b);color:var(--av1f)}.av2{background:var(--av2b);color:var(--av2f)}.av3{background:var(--av3b);color:var(--av3f)}.av4{background:var(--av4b);color:var(--av4f)}.av5{background:var(--av5b);color:var(--av5f)}.av6{background:var(--av6b);color:var(--av6f)}
.av-me{background:var(--mint);color:var(--side);width:36px;height:36px;font-size:12.5px}

/* formularios */
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;min-width:0}
.field>span{font-size:12.5px;font-weight:600;color:var(--ink-2)}
.field input,.field select,.field textarea,.fsel select,input#ck-fd{height:40px;border:1px solid var(--line-2);border-radius:10px;padding:0 12px;background:var(--surface);width:100%}
.field textarea{height:auto;padding:10px 12px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus,.search input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}.form-grid.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.fh{margin:6px 0 10px;font-size:13px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;font-family:var(--f-body)}
.check{display:inline-flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}.check input{width:16px;height:16px;accent-color:var(--brand)}
.checks{border:0;padding:0;margin:4px 0 14px;display:flex;flex-wrap:wrap;gap:8px 18px}.checks legend{font-size:12.5px;font-weight:600;color:var(--ink-2);margin-bottom:8px;padding:0}
.fsel{display:flex;flex-direction:column;gap:4px}.fsel span{font-size:11.5px;color:var(--ink-3);font-weight:600}.fsel select{height:36px;min-width:140px}
.fsel.inline select{height:32px;font-size:12.5px;min-width:0}
.search{display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border:1px solid var(--line-2);border-radius:11px;background:var(--surface);flex:1;min-width:200px}
.search input{border:0;outline:0;background:transparent;flex:1;min-width:0;height:100%}
.search .i{color:var(--ink-3)}
.seg{display:inline-flex;background:var(--surface-3);border-radius:11px;padding:3px;gap:2px}
.seg button{padding:6px 12px;border-radius:8px;font-size:12.5px;font-weight:600;color:var(--ink-2);white-space:nowrap;display:inline-flex;align-items:center;gap:4px}
.seg button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}
.seg.wide{display:flex;width:100%}.seg.wide button{flex:1;justify-content:center}
.tg{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;cursor:pointer;position:relative}
.tg span{display:flex;flex-direction:column}.tg small{color:var(--ink-3);font-size:12px}
.tg input{position:absolute;opacity:0;width:1px;height:1px}
.tg i{width:40px;height:23px;border-radius:99px;background:var(--line-2);position:relative;flex:none;transition:background .2s}
.tg i::after{content:'';position:absolute;top:3px;left:3px;width:17px;height:17px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.tg input:checked+i{background:var(--brand)}.tg input:checked+i::after{transform:translateX(17px)}
.tg input:focus-visible+i{outline:2px solid var(--brand);outline-offset:2px}
.tg.inline{padding:0 0 0 8px;gap:8px}.tg.inline b{font-size:12.5px;font-weight:600}
.toggles .tg+.tg,.tg-row+.tg-row{border-top:1px solid var(--line)}
.tg-row{padding:4px 0}.tg-opts{display:flex;align-items:center;gap:10px;padding-bottom:8px}.tg-opts select{height:30px;border:1px solid var(--line-2);border-radius:8px;padding:0 8px;background:var(--surface);font-size:12.5px}
.pwd-meter{height:5px;border-radius:9px;background:var(--track);overflow:hidden;margin:-4px 0 6px}.pwd-meter span{display:block;height:100%;background:var(--ok)}
.hint{font-size:12px;color:var(--ink-3);margin-bottom:12px}

/* tarjetas y estructura */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;min-width:0}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.card-h h3{display:flex;align-items:center}
.card-act{display:flex;gap:6px}
.card-sub{color:var(--ink-3);font-size:12.5px;margin:-6px 0 8px}
.grid{display:grid;gap:16px;margin-bottom:16px}.g-2{grid-template-columns:repeat(2,minmax(0,1fr))}.g-3{grid-template-columns:repeat(3,minmax(0,1fr))}.g-2-1{grid-template-columns:minmax(0,2fr) minmax(0,1fr);align-items:start}
.side-stack{display:flex;flex-direction:column;gap:16px;min-width:0}
.sticky-card{position:sticky;top:12px}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.page-head p{margin-top:4px}.ph-act{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow-x:auto;scrollbar-width:none}
.tabs button{padding:10px 14px;font-weight:600;color:var(--ink-3);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;display:inline-flex;gap:6px;align-items:center}
.tabs button.on{color:var(--ink);border-color:var(--brand)}.tabs button:hover{color:var(--ink)}
.toolbar{display:flex;gap:12px;align-items:center;margin-bottom:12px;flex-wrap:wrap}
.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-bottom:16px}
.banner{display:flex;gap:10px;align-items:flex-start;padding:11px 14px;border-radius:12px;font-size:13px;margin-bottom:14px}
.banner .i{margin-top:1px}.banner.info{background:var(--info-soft);color:var(--ink)}.banner.info .i{color:var(--info)}.banner.warn{background:var(--warm-soft)}.banner.warn .i{color:var(--warm)}.banner.ai{background:var(--ai-soft)}.banner.ai .i{color:var(--ai)}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-2);margin-bottom:6px}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.legend i.ok{background:var(--ok)}.legend i.warn{background:var(--warn)}.legend i.bad{background:var(--bad)}
.lg-c1{background:var(--brand-soft);border-left:3px solid var(--c1)}.lg-c2{background:var(--warm-soft);border-left:3px solid var(--c2)}.lg-c3{background:var(--info-soft);border-left:3px solid var(--c3)}.lg-x{background:var(--surface-3);border-left:3px solid var(--ink-3)}
.bar{height:7px;border-radius:99px;background:var(--track);overflow:hidden;flex:1}.bar span{display:block;height:100%;border-radius:99px;background:var(--brand);transition:width .5s}
.bar.warn span{background:var(--warn)}.bar.water span{background:var(--c3)}
.hbars{display:flex;flex-direction:column;gap:9px}.hb{display:grid;grid-template-columns:110px 1fr 54px;align-items:center;gap:10px;font-size:12.5px}.hb b{text-align:right}.hb>span:first-child{color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stack-bar{display:flex;height:30px;border-radius:9px;overflow:hidden;gap:2px;margin:6px 0 10px}.stack-bar span{display:grid;place-items:center;color:#fff;font-weight:700;font-size:12px}
.stack-bar .ok{background:var(--ok)}.stack-bar .warn{background:var(--warn)}.stack-bar .bad{background:var(--bad)}
.kvs{margin:0;display:grid;gap:0}.kv{display:grid;grid-template-columns:150px 1fr;gap:12px;padding:8px 0;border-bottom:1px dashed var(--line)}.kv:last-child{border:0}
.kv dt{color:var(--ink-3);font-size:12.5px}.kv dd{margin:0;font-weight:500;min-width:0;overflow-wrap:anywhere}
.kvs.compact .kv{grid-template-columns:130px 1fr;padding:6px 0}
.list{display:flex;flex-direction:column}
.li{display:flex;align-items:center;gap:11px;padding:9px 8px;border-radius:11px;width:100%;margin:0 -8px;width:calc(100% + 16px)}
button.li:hover,.li[data-a]:hover{background:var(--surface-2)}
.li-tx{flex:1;min-width:0;display:flex;flex-direction:column}.li-tx b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.li-tx small{color:var(--ink-3);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.li-ic{width:34px;height:34px;border-radius:10px;background:var(--surface-3);display:grid;place-items:center;color:var(--ink-2);flex:none}
.li-n{font-weight:700;white-space:nowrap}
.thumb{width:40px;height:40px;border-radius:10px;object-fit:cover;flex:none}
.date-badge{width:42px;height:44px;border-radius:10px;background:var(--brand-soft);color:var(--brand-ink);display:flex;flex-direction:column;align-items:center;justify-content:center;flex:none;line-height:1}
.date-badge b{font-size:16px;font-family:var(--f-display)}.date-badge small{font-size:10.5px;text-transform:uppercase;font-weight:700;margin-top:2px}

/* shell nutricionista */
.shell{display:grid;grid-template-columns:252px minmax(0,1fr);height:100%}
.side{background:var(--side);color:var(--side-ink);display:flex;flex-direction:column;padding:18px 12px 14px;overflow-y:auto;--brand:var(--mint);--on-brand:var(--side)}
.side-top{padding:0 8px 18px}
.brand-row{display:flex;align-items:center;gap:9px}.logo-mark{width:30px;height:30px;flex:none}.logo-mark path{fill:var(--logo)}.side .logo-mark path,.login-brand .logo-mark path,.goal-card .logo-mark path{fill:var(--salvia)}
.wordmark{font-family:var(--f-display);font-weight:700;font-size:23px;letter-spacing:-.025em;color:var(--wm);line-height:1;white-space:nowrap}.wm-i{position:relative;display:inline-block}.wm-drop{position:absolute;left:50%;bottom:calc(100% - .22em);width:.27em;height:.37em;transform:translateX(-50%)}.wm-drop path{fill:var(--logo)}.side .wordmark,.login-brand .wordmark{color:var(--crema)}.side .wm-drop path,.login-brand .wm-drop path{fill:var(--salvia)}
.env{font-size:10.5px;font-weight:700;padding:2px 6px;border-radius:6px;background:var(--side-2);color:var(--mint);letter-spacing:.04em}
.side-nav{display:flex;flex-direction:column;gap:2px;flex:1}
.nav-it{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:10px;color:var(--side-ink-2);font-weight:500;font-size:14px}
.nav-it:hover{background:var(--side-2);color:var(--side-ink)}.nav-it.on{background:var(--side-2);color:var(--crema);box-shadow:inset 3px 0 0 var(--mint)}
.nav-it span:not(.nb){flex:1}.nav-it.on .i{color:var(--mint)}
.side-foot{border-top:1px solid var(--side-line);padding-top:14px;display:flex;flex-direction:column;gap:8px}
.me{display:flex;gap:10px;align-items:center;padding:0 4px 6px}.me b{font-size:13px;display:block;color:#fff}.me small{font-size:11px;color:var(--side-ink-2)}
.side .btn.soft{background:var(--side-2);color:var(--mint)}.side .btn.ghost{background:transparent;border-color:var(--side-line);color:var(--side-ink-2)}
.work{display:flex;flex-direction:column;min-width:0;height:100%}
.topbar{height:62px;display:flex;align-items:center;gap:14px;padding:0 24px;border-bottom:1px solid var(--line);background:var(--surface);flex:none}
.crumbs{display:flex;align-items:center;gap:6px;font-size:14px;min-width:0;white-space:nowrap;overflow:hidden}.crumbs a{color:var(--ink-3);text-decoration:none}.crumbs .i{color:var(--ink-3)}
.top-search{display:flex;align-items:center;gap:8px;margin-left:auto;height:36px;padding:0 12px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;width:260px}
.top-search input{border:0;background:transparent;outline:0;flex:1;min-width:0}.top-search .i{color:var(--ink-3)}
.top-act{display:flex;align-items:center;gap:10px}.sm-av{width:34px;height:34px}
.dd{position:relative}.dd-menu{position:absolute;right:0;top:44px;width:360px;max-width:calc(100vw - 32px);background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);padding:8px;z-index:30}
.dd-h{display:flex;justify-content:space-between;padding:6px 8px 8px}
.main{flex:1;overflow-y:auto;overflow-x:hidden}
.page{max-width:1320px;margin:0 auto;padding:26px clamp(16px,3vw,34px) 56px}
.only-m{display:none!important}
.scrim{position:fixed;inset:0;background:rgba(5,15,11,.45);z-index:39}

/* KPIs */
.kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:16px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:2px;transition:border-color .15s,transform .15s;min-width:0}
.kpi:hover{border-color:var(--brand);transform:translateY(-1px)}
.kpi-ic{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand-ink);margin-bottom:10px}
.kpi.warn .kpi-ic{background:var(--warn-soft);color:var(--warn)}.kpi.info .kpi-ic{background:var(--info-soft);color:var(--info)}
.kpi-n{font-family:var(--f-display);font-size:32px;font-weight:600;line-height:1;letter-spacing:-.02em}
.kpi-l{font-weight:600;font-size:13px;margin-top:6px}.kpi-s{font-size:12px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* timeline / alertas */
.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.timeline li{display:grid;grid-template-columns:78px 1fr;gap:10px;align-items:center}
.tl-time{font-size:12.5px;font-weight:700;color:var(--ink-2);white-space:nowrap}
.tl-card{display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;width:100%;min-width:0;flex-wrap:wrap}.tl-card:hover{border-color:var(--brand)}
.tl-tx{flex:1;min-width:140px;display:flex;flex-direction:column}.tl-tx small{color:var(--ink-3);font-size:12px}
.timeline li.past{opacity:.55}
.alerts{display:flex;flex-direction:column;gap:6px}
.alert-row{display:flex;align-items:center;gap:11px;padding:10px;border-radius:12px;width:100%;background:var(--surface-2);border:1px solid transparent}
.alert-row:hover{border-color:var(--line-2)}
.al-ic{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;flex:none}
.alert-row.warn .al-ic{background:var(--warn-soft);color:var(--warn)}.alert-row.bad .al-ic{background:var(--bad-soft);color:var(--bad)}.alert-row.info .al-ic{background:var(--info-soft);color:var(--info)}
.al-tx{flex:1;min-width:0;display:flex;flex-direction:column}.al-tx b{font-weight:600;font-size:13px}.al-tx small{color:var(--ink-3);font-size:12px}

/* gráficos */
.chart{position:relative;width:100%}
.chart svg{display:block;overflow:visible}
.chart .grid{stroke:var(--line);stroke-width:1}
.chart .tick{fill:var(--ink-3);font-size:11px;font-family:var(--f-body)}
.chart .goal{stroke:var(--warm);stroke-dasharray:5 5;stroke-width:1.5}.chart .goal-t{fill:var(--warm);font-size:11px;font-weight:700}
.chart .end-t{fill:var(--ink);font-size:12px;font-weight:700}
.chart .xh{stroke:var(--ink-3);stroke-dasharray:3 3}
.tip{position:absolute;pointer-events:none;background:var(--ink);color:var(--surface);padding:7px 10px;border-radius:9px;font-size:12px;min-width:120px;transition:opacity .12s;display:flex;flex-direction:column;gap:2px;z-index:5;box-shadow:var(--shadow-lg)}
.tip span{display:flex;align-items:center;gap:6px}.tip i{width:8px;height:8px;border-radius:2px}
.empty-chart{display:grid;place-items:center;height:100%;color:var(--ink-3);font-size:13px;background:var(--surface-2);border-radius:12px}
.ring{position:relative;flex:none}.ring svg{display:block}.ring-arc{transition:stroke-dashoffset .8s cubic-bezier(.2,.8,.2,1)}
.ring-in{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;line-height:1.1}
.ring-in b{font-family:var(--f-display);font-size:24px;font-weight:600}.ring-in small{font-size:11.5px;color:var(--ink-3)}
.spark{display:block;margin-top:6px}

/* pacientes tabla */
.ptable{padding:6px}
.pt-row{display:grid;grid-template-columns:minmax(210px,2.1fr) minmax(130px,1.4fr) 112px 120px 80px 150px 84px 92px;gap:12px;align-items:center;padding:11px 12px;border-radius:12px;width:100%}
.pt-row:not(.pt-head):hover{background:var(--surface-2)}
.pt-head{font-size:11.5px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em;padding-top:8px;padding-bottom:8px}
.pt-name{display:flex;align-items:center;gap:11px;min-width:0}.pt-name>span{display:flex;flex-direction:column;min-width:0}.pt-name b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-name small{color:var(--ink-3);font-size:12px}
.pt-obj{font-size:13px;color:var(--ink-2)}
.pt-w{display:flex;flex-direction:column}.pt-w small,.pt-d small{color:var(--ink-3);font-size:11.5px;display:block}
.pt-pg{display:flex;align-items:center;gap:8px}.pt-pg small{font-weight:700;font-size:12px;width:32px;text-align:right}
.pt-adh{font-weight:700}.pt-adh.ok{color:var(--ok)}.pt-adh.warn{color:var(--warn)}.pt-adh.bad{color:var(--bad)}
.pt-d{font-size:13px}
.status-seg button{font-weight:500}
.empty-state{display:flex;flex-direction:column;align-items:center;gap:6px;padding:40px;text-align:center}.empty-state .i{width:28px;height:28px;color:var(--ink-3)}

/* encabezado paciente */
.phead{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:18px 24px;align-items:center;margin-bottom:16px}
.ph-id{display:flex;gap:16px;align-items:center;min-width:0}.ph-id h1{font-size:25px}
.ph-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.ph-stats>div{display:flex;flex-direction:column;padding:10px 12px;background:var(--surface-2);border-radius:12px;min-width:0}
.ph-stats small{color:var(--ink-3);font-size:11.5px}.ph-stats b{font-family:var(--f-display);font-size:22px;font-weight:600;line-height:1.2}.ph-stats b i{font-style:normal;font-size:13px;color:var(--ink-3);margin-left:2px}.ph-stats span{font-size:11.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ph-stats span.pos{color:var(--ok)}.ph-stats span.neg{color:var(--bad)}
.ph-act{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.phead .ph-act{grid-column:1/-1}.ph-meta{grid-column:1/-1;margin-top:-8px}
.metric-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.mg{padding:10px 12px;background:var(--surface-2);border-radius:11px;display:flex;flex-direction:column;min-width:0}
.mg small{font-size:11.5px;color:var(--ink-3)}.mg b{font-family:var(--f-display);font-size:19px;font-weight:600}.mg span{font-size:11.5px;color:var(--ink-3)}
.kvs.tags .kv{grid-template-columns:150px 1fr}
.note-area{width:100%;border:1px solid var(--line-2);border-radius:11px;padding:10px 12px;background:var(--surface-2);resize:vertical}
.ctl{list-style:none;margin:0;padding:0 0 0 6px;position:relative}
.ctl::before{content:'';position:absolute;left:11px;top:8px;bottom:8px;width:2px;background:var(--line)}
.ctl li{display:flex;gap:14px;padding:6px 0 14px;position:relative}
.ctl-dot{width:12px;height:12px;border-radius:50%;background:var(--surface);border:3px solid var(--brand);flex:none;margin-top:4px;position:relative;z-index:1}.ctl-dot.ev{border-color:var(--warm)}
.ctl-b{flex:1;min-width:0}.ctl-b p{color:var(--ink-2);font-size:13px;margin-top:6px}
.ctl-m{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:6px;font-size:13px;font-weight:600}.ctl-m small{display:block;font-size:11px;color:var(--ink-3);font-weight:500}.ctl-m em{font-style:normal;font-size:12px;margin-left:4px}

/* evolución */
.progress-block{display:flex;flex-direction:column;gap:12px}
.pb-nums{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.pb-nums>div{display:flex;flex-direction:column}.pb-nums small{color:var(--ink-3);font-size:12px}.pb-nums b{font-family:var(--f-display);font-size:22px;font-weight:600}
.pb-nums>div:nth-child(2){align-items:center}.pb-nums>div:nth-child(3){align-items:flex-end}.pb-now b{color:var(--brand-ink)}
.pb-track{position:relative;height:12px;border-radius:99px;background:var(--track)}.pb-track span{position:absolute;left:0;top:0;bottom:0;border-radius:99px;background:linear-gradient(90deg,var(--brand),var(--mint))}
.pb-track i{position:absolute;top:50%;width:20px;height:20px;border-radius:50%;background:var(--surface);border:4px solid var(--brand);transform:translate(-50%,-50%)}
.pb-msg{font-size:14.5px}.pb-msg b{color:var(--brand-ink);font-weight:700}
.card.pad-l{padding:22px;margin-bottom:16px}
.evo-ctl{margin-bottom:12px}
.delta{font-family:var(--f-body);font-size:12px;font-weight:700;padding:2px 8px;border-radius:99px;margin-left:8px;background:var(--surface-3)}
.delta.pos{color:var(--ok);background:var(--ok-soft)}.delta.neg{color:var(--bad);background:var(--bad-soft)}
.mini-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:16px 0}
.mm{background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:12px;display:flex;flex-direction:column;min-width:0}
.mm.on{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.mm-l{font-size:12px;color:var(--ink-3)}.mm b{font-family:var(--f-display);font-size:20px;font-weight:600}.mm b i{font-style:normal;font-size:12px;color:var(--ink-3);margin-left:2px}.mm-d{font-size:11.5px;color:var(--ink-2)}
.tscroll{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);font-weight:700;text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:10px;border-bottom:1px solid var(--line);vertical-align:middle}.tbl tr:last-child td{border-bottom:0}
.tbl .n{text-align:right;font-variant-numeric:tabular-nums}
.tbl.hover tbody tr{cursor:pointer}.tbl.hover tbody tr:hover td{background:var(--surface-2)}
.tbl.edit input{width:100%;height:32px;border:1px solid var(--line-2);border-radius:8px;padding:0 8px;background:var(--surface)}.tbl.edit td.n input{text-align:right;width:76px}
.tbl tfoot td{border-top:1px solid var(--line-2)}

/* plan */
.plan-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px 20px;margin-bottom:14px;align-items:center}
.plan-head h2{font-size:20px}
.plh-tg{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.plh-tg>div{display:flex;flex-direction:column;line-height:1.2}.plh-tg small{font-size:11px;color:var(--ink-3)}.plh-tg b{font-family:var(--f-display);font-size:18px;font-weight:600}.plh-tg span{font-size:11.5px;color:var(--ink-3)}
.plh-act{grid-column:1/-1;display:flex;gap:12px;align-items:center;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:12px}.plh-act .muted{flex:1}
.days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-bottom:14px}
.day{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px 10px;display:flex;flex-direction:column;align-items:center;position:relative}
.day span{font-size:12px;color:var(--ink-3);font-weight:600}.day b{font-family:var(--f-display);font-size:16px;font-weight:600}
.day i{position:absolute;top:8px;right:8px;width:6px;height:6px;border-radius:50%}.day i.ok{background:var(--ok)}.day i.warn{background:var(--warn)}
.day.on{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.day.on span{color:var(--on-brand);opacity:.8}
.plan-grid{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:16px;align-items:start}
.meals{display:flex;flex-direction:column;gap:12px;min-width:0}
.meal{padding:14px 16px}.meal header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.meal header div{display:flex;align-items:baseline;gap:8px}
.meal-k{font-weight:700;font-size:13px;background:var(--surface-3);padding:3px 9px;border-radius:7px}
.frow{display:grid;grid-template-columns:minmax(0,1fr) 168px 54px 44px 44px 44px 64px;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px}
.frow.fhead{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);font-weight:700;border-bottom:1px solid var(--line-2)}
.frow .n{text-align:right}.fname{font-weight:500;min-width:0}
.src{font-style:normal;font-size:10px;font-weight:700;color:var(--warn);background:var(--warn-soft);padding:1px 5px;border-radius:5px;margin-left:6px;vertical-align:1px}
.qty{display:inline-flex;align-items:center;gap:4px;background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:2px;justify-self:start}
.qty em{font-style:normal;font-weight:600;font-size:12.5px;min-width:86px;text-align:center;white-space:nowrap}
.qb{width:24px;height:24px;border-radius:7px;display:grid;place-items:center;color:var(--ink-2)}.qb:hover{background:var(--surface)}.qb .i{width:14px;height:14px}
.fact{display:flex;justify-content:flex-end;gap:2px}
.add-food{display:flex;align-items:center;gap:6px;color:var(--brand-ink);font-weight:600;font-size:13px;padding:10px 0 2px}
.totals{position:sticky;top:12px;display:flex;flex-direction:column;align-items:stretch;gap:12px}.totals .ring{align-self:center}
.macro{display:flex;flex-direction:column;gap:5px;font-size:12.5px}
.pick-list{display:flex;flex-direction:column;gap:2px;margin-top:10px;max-height:380px;overflow-y:auto}
.pick{display:flex;align-items:center;gap:10px;padding:10px;border-radius:10px;width:100%}.pick:hover{background:var(--surface-2)}
.pick>span:first-child{flex:1;display:flex;flex-direction:column;min-width:0}.pick small{color:var(--ink-3);font-size:12px}
.pk-n{text-align:right;font-weight:700;font-size:13px;display:flex;flex-direction:column}.pick .i{color:var(--brand)}

/* check-ins */
.ck-list{display:flex;flex-direction:column;gap:12px;min-width:0}
.ck.new{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.ck.pend{background:var(--surface-2);border-style:dashed}
.scores{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.sc{display:flex;flex-direction:column;padding:7px 11px;border-radius:10px;min-width:72px;line-height:1.2}.sc small{font-size:11px;opacity:.85}.sc b{font-family:var(--f-display);font-size:18px}
.sc.ok{background:var(--ok-soft);color:var(--ok)}.sc.warn{background:var(--warn-soft);color:var(--warn)}.sc.bad{background:var(--bad-soft);color:var(--bad)}.sc.neutral{background:var(--surface-3);color:var(--ink-2)}

/* agenda */
.agenda-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}
.agenda-side{display:flex;flex-direction:column;gap:16px}
.cal{padding:0;overflow:hidden}
.cal-h{display:grid;grid-template-columns:62px repeat(6,minmax(0,1fr));border-bottom:1px solid var(--line)}
.cal-h span{padding:10px;text-align:center;display:flex;flex-direction:column}.cal-h small{color:var(--ink-3);font-size:11.5px;text-transform:uppercase;font-weight:700}.cal-h b{font-family:var(--f-display);font-size:19px;font-weight:600}
.cal-h .today b{color:var(--on-brand);background:var(--brand);border-radius:99px;width:32px;height:32px;display:grid;place-items:center;margin:2px auto 0}
.cal-b{display:grid;grid-template-columns:62px repeat(6,minmax(0,1fr));position:relative;overflow:hidden}
.cal-hours{position:relative}.cal-hours span{position:absolute;right:8px;font-size:11px;color:var(--ink-3);transform:translateY(-6px);white-space:nowrap}.cal-hours span:first-child{transform:none}
.cal-col{position:relative;border-left:1px solid var(--line);cursor:copy}.cal-col.today{background:color-mix(in srgb,var(--brand-soft) 45%,transparent)}
.cal-col>i{position:absolute;left:0;right:0;border-top:1px solid var(--line)}
.ev{position:absolute;left:4px;right:4px;border-radius:9px;padding:5px 8px;background:var(--brand-soft);border-left:3px solid var(--c1);overflow:hidden;display:flex;flex-direction:column;font-size:12px;line-height:1.25;cursor:pointer;z-index:1}
.ev b{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ev small{color:var(--ink-2);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev.virt{background:var(--info-soft);border-color:var(--c3)}.ev.eval{background:var(--warm-soft);border-color:var(--c2)}.ev.cancel{background:var(--surface-3);border-color:var(--ink-3);opacity:.7;text-decoration:line-through}.ev.done{opacity:.6}
.ev:hover{filter:brightness(.97);box-shadow:var(--shadow)}
.now{position:absolute;left:0;right:0;height:2px;background:var(--bad);z-index:2}.now::before{content:'';position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:50%;background:var(--bad)}
.cal-list{display:none}
.cl-day{margin-bottom:14px}.cl-day h4{font-size:13px;text-transform:capitalize;margin-bottom:8px;color:var(--ink-2)}.cl-day.today h4{color:var(--brand-ink)}.cl-day .li.card{margin:0 0 6px;width:100%;padding:10px 12px}
.appt-d .seg button{font-size:12px;padding:6px 8px}
.slots{display:grid;grid-template-columns:1fr 1fr;gap:8px}.slot{border:1px solid var(--line-2);border-radius:12px;padding:12px;display:flex;flex-direction:column}.slot:hover{border-color:var(--brand);background:var(--brand-soft)}.slot b{text-transform:capitalize}.slot span{color:var(--ink-3);font-size:12.5px}

/* alimentos / súper / restaurantes */
.prod-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.prod{display:flex;flex-direction:column;gap:4px}.prod h4{font-size:14.5px;margin-top:6px}
.prod-top{display:flex;justify-content:space-between;align-items:center}
.store-tag{font-size:11px;font-weight:700;padding:3px 8px;border-radius:6px;background:var(--surface-3);color:var(--ink-2)}
.price{font-family:var(--f-display);font-size:19px;font-weight:600;color:var(--brand-ink)}
.nut-mini{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-top:8px}.nut-mini span{background:var(--surface-2);border-radius:8px;padding:5px 6px;font-weight:700;font-size:12.5px;display:flex;flex-direction:column;line-height:1.2}.nut-mini small{font-size:10.5px;color:var(--ink-3);font-weight:600}
.rest-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.rest header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}.rest-ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--warm-soft);color:var(--warm)}
.ri{padding:10px 0;border-top:1px solid var(--line)}.ri b{font-weight:600;font-size:13px}

/* compras */
.shop{padding:6px 18px 18px}
.sg h4{display:flex;justify-content:space-between;align-items:baseline;padding:14px 0 6px;font-size:13px;text-transform:uppercase;letter-spacing:.06em;font-family:var(--f-body);font-weight:700;color:var(--ink-2);border-bottom:1px solid var(--line)}
.si{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px dashed var(--line);cursor:pointer}
.si input{position:absolute;opacity:0;width:1px;height:1px}
.box{width:20px;height:20px;border-radius:6px;border:1.5px solid var(--line-2);display:grid;place-items:center;flex:none;color:transparent;transition:.15s}
.si input:checked+.box{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.si input:focus-visible+.box{outline:2px solid var(--brand);outline-offset:2px}
.si-tx{flex:1;min-width:0}.si-tx b{font-weight:700}.si-tx small{display:block;color:var(--ink-3);font-size:12px}
.si-c{font-weight:600;font-size:13px;color:var(--ink-2)}
.si.done .si-tx{text-decoration:line-through;color:var(--ink-3)}
.budget{display:flex;flex-direction:column;gap:10px}
.bg-top{display:flex;justify-content:space-between;align-items:flex-end}.bg-top small{display:block;color:var(--ink-3);font-size:12px}.bg-top .big{font-family:var(--f-display);font-size:30px;font-weight:600;line-height:1}.bg-top .r{text-align:right}
.bg-bar{position:relative;height:10px;border-radius:99px;background:var(--track)}.bg-bar span{position:absolute;inset:0 auto 0 0;border-radius:99px;background:var(--brand)}.bg-bar.over span{background:var(--bad)}
.bg-bar i{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink)}
.bg-msg{font-size:13px;display:flex;gap:6px;align-items:flex-start}.bg-msg b{font-weight:700}
.alts{display:flex;flex-direction:column;gap:12px}.alt{padding-bottom:12px;border-bottom:1px dashed var(--line)}.alt:last-child{border:0;padding:0}
.alt-opts{display:flex;flex-direction:column;gap:6px;margin-top:8px}.ao{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:13px}.ao small{color:var(--ink-3)}

/* IA */
.ai-wrap{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}
.ai-main{display:flex;flex-direction:column;padding:0;height:calc(100vh - 230px);min-height:520px}
.ai-scroll{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:16px}
.ai-side{display:flex;flex-direction:column;gap:16px}
.ai-input{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line)}.ai-input input{flex:1;height:42px;border:1px solid var(--line-2);border-radius:11px;padding:0 14px;background:var(--surface-2);min-width:0}
.ai-main>.fine{margin:0 0 12px}
.ai-badge{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(135deg,var(--ai-soft),var(--brand-soft));color:var(--ai);flex:none}
.ai-badge.lg{width:52px;height:52px;border-radius:15px}.ai-badge.lg .i{width:26px;height:26px}
.spin .i{animation:spin 1.6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.ai-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;margin:auto;max-width:520px;padding:20px}
.sugs{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:8px}.sugs.col{flex-direction:column}
.sug{padding:9px 13px;border:1px solid var(--line-2);border-radius:12px;font-size:13px;background:var(--surface);text-align:left}.sug:hover{border-color:var(--ai);background:var(--ai-soft)}
.aiq{align-self:flex-end;max-width:75%}.aiq span{display:block;background:var(--ink);color:var(--surface);padding:10px 14px;border-radius:16px 16px 4px 16px}
.aia{display:flex;gap:10px;align-items:flex-start;max-width:100%}
.aia-b{flex:1;min-width:0;background:var(--surface-2);border:1px solid var(--line);border-radius:4px 16px 16px 16px;padding:16px;display:flex;flex-direction:column;gap:10px}
.aia-b h4{font-size:15.5px}.aia-b h5{margin-top:4px}
.ai-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.ai-kpis>div{background:var(--surface);border-radius:11px;padding:10px 12px;border:1px solid var(--line)}.ai-kpis small{display:block;font-size:11.5px;color:var(--ink-3)}.ai-kpis b{font-family:var(--f-display);font-size:20px;font-weight:600}
.ai-list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:5px}.ai-list.warn li::marker{color:var(--warn)}
.ai-act{display:flex;gap:8px;flex-wrap:wrap}
.ai-disc{font-size:11.5px;color:var(--ink-3);display:flex;gap:6px;align-items:flex-start;border-top:1px solid var(--line);padding-top:10px}
.alerts.mini .alert-row{background:var(--surface)}
.typing{display:flex;align-items:center;gap:5px;padding:12px 14px;background:var(--surface-2);border-radius:4px 16px 16px 16px;font-size:12.5px;color:var(--ink-3)}
.typing i{width:7px;height:7px;border-radius:50%;background:var(--ai);animation:blink 1.2s infinite}.typing i:nth-child(2){animation-delay:.2s}.typing i:nth-child(3){animation-delay:.4s}.typing span{margin-left:6px}
@keyframes blink{0%,80%,100%{opacity:.25}40%{opacity:1}}
.steps{list-style:none;display:flex;gap:6px;padding:0;margin:0 0 16px;flex-wrap:wrap}
.steps li{display:flex;align-items:center;gap:8px;padding:6px 12px 6px 6px;border-radius:99px;background:var(--surface);border:1px solid var(--line);font-size:13px;font-weight:600;color:var(--ink-3)}
.steps li span{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--surface-3);font-size:12px}
.steps li.cur{color:var(--ink);border-color:var(--brand)}.steps li.cur span{background:var(--brand);color:var(--on-brand)}.steps li.done{color:var(--ok)}.steps li.done span{background:var(--ok-soft);color:var(--ok)}
.gen-wrap{display:grid;grid-template-columns:minmax(0,400px) minmax(0,1fr);gap:16px;align-items:start}
.gen-out{min-height:520px;display:flex;flex-direction:column;gap:12px}.gen-out.center{justify-content:center}
.gen-loading{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}
.gen-sum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.gen-sum>div{background:var(--surface-2);border-radius:11px;padding:10px 12px;display:flex;flex-direction:column}.gen-sum small{font-size:11px;color:var(--ink-3)}.gen-sum b{font-family:var(--f-display);font-size:19px;font-weight:600}.gen-sum span{font-size:11px;color:var(--ink-3)}
.gen-out .days{margin:0}
.gmeal h5{font-size:14px;font-family:var(--f-display);font-weight:600;margin:4px 0 6px;display:flex;gap:8px;align-items:baseline}
.gitem{display:grid;grid-template-columns:minmax(0,1fr) 84px auto;gap:10px;align-items:center;padding:7px 10px;border-radius:10px;border:1px solid var(--line);margin-bottom:5px;border-left:3px solid var(--ai)}
.gitem.st-aceptado{border-left-color:var(--ok);background:color-mix(in srgb,var(--ok-soft) 50%,transparent)}.gitem.st-editado,.gitem.st-sustituido{border-left-color:var(--info)}
.gi-n{display:flex;flex-direction:column;min-width:0}.gi-n small{color:var(--ink-3);font-size:12px}
.gi-st{font-size:11.5px;font-weight:700;color:var(--ink-3)}.st-aceptado .gi-st{color:var(--ok)}.st-editado .gi-st,.st-sustituido .gi-st{color:var(--info)}
.gi-a{display:flex;gap:2px}
.gen-foot{display:flex;gap:8px;justify-content:flex-end;align-items:flex-end;border-top:1px solid var(--line);padding-top:12px;margin-top:auto;flex-wrap:wrap}
.rev-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.rev{padding:0;overflow:hidden}.rev img{width:100%;height:170px;object-fit:cover;display:block}.rev-b{padding:14px;display:flex;flex-direction:column;gap:8px}
.rev-items{list-style:none;padding:0;margin:4px 0;font-size:13px}.rev-items li{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px dashed var(--line)}.rev-items .tot{border:0;font-weight:700}
.ai-review{display:grid;grid-template-columns:240px minmax(0,1fr);gap:18px}.ai-photo{width:100%;border-radius:14px;aspect-ratio:4/3;object-fit:cover}

/* mensajes */
.msgs{display:grid;grid-template-columns:300px minmax(0,1fr);padding:0;height:calc(100vh - 120px);min-height:540px;overflow:hidden}
.threads{border-right:1px solid var(--line);overflow-y:auto;padding:8px}
.th-h{display:flex;justify-content:space-between;align-items:center;padding:8px 8px 10px}
.th{display:flex;gap:10px;align-items:center;padding:10px;border-radius:12px;width:100%}.th:hover{background:var(--surface-2)}.th.on{background:var(--brand-soft)}
.th-tx{flex:1;min-width:0;display:flex;flex-direction:column}.th-tx b{font-size:13.5px}.th-tx small{color:var(--ink-3);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.th-m{display:flex;flex-direction:column;align-items:flex-end;gap:4px;font-size:11px;color:var(--ink-3);white-space:nowrap}
.thread{display:flex;flex-direction:column;min-width:0;min-height:0}
.tr-h{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line)}.tr-h>div:nth-child(2){flex:1;min-width:0;display:flex;flex-direction:column}.tr-h small{display:flex;align-items:center;gap:4px;font-size:12px}.tr-act{display:flex;gap:6px}
.chat-scroll{flex:1;overflow-y:auto;padding:18px;display:flex;flex-direction:column;gap:10px;background:var(--surface-2);min-height:0}
.msg{display:flex;flex-direction:column;max-width:72%}.msg.me{align-self:flex-end;align-items:flex-end}.msg>small{font-size:11px;color:var(--ink-3);margin-top:3px;display:flex;align-items:center;gap:3px}
.bub{padding:9px 13px;border-radius:16px;background:var(--surface);border:1px solid var(--line);display:flex;flex-direction:column;gap:6px;overflow-wrap:anywhere}
.msg.me .bub{background:var(--brand);color:var(--on-brand);border-color:var(--brand);border-bottom-right-radius:5px}.msg.them .bub{border-bottom-left-radius:5px}
.msg-img{border-radius:11px;max-width:240px;display:block}
.audio{display:flex;align-items:center;gap:8px}.wave{display:flex;gap:2px;align-items:center}.wave i{width:3px;border-radius:2px;background:currentColor;opacity:.6}
.docm{display:flex;gap:10px;align-items:center}.docm>span{display:flex;flex-direction:column}.docm small{opacity:.75;font-size:11.5px}
.quick{display:flex;gap:6px;padding:10px 14px 0;overflow-x:auto;scrollbar-width:none}
.composer{display:flex;align-items:center;gap:4px;padding:10px 12px;border-top:1px solid var(--line);background:var(--surface)}
.composer input#msg-in{flex:1;height:40px;border:1px solid var(--line-2);border-radius:99px;padding:0 16px;background:var(--surface-2);min-width:0}
.rec{flex:1;display:flex;align-items:center;gap:8px;font-size:13px;color:var(--bad)}.rec i{width:10px;height:10px;border-radius:50%;background:var(--bad);animation:blink 1s infinite}

/* reportes */
.rep-wrap{display:grid;grid-template-columns:280px minmax(0,1fr);gap:16px;align-items:start}
.rep-side{position:sticky;top:12px}.rep-side h4{margin-bottom:10px}
.rep-types{display:flex;flex-direction:column;gap:4px}
.rt{display:flex;align-items:center;gap:10px;padding:10px;border-radius:11px;font-weight:500}.rt:hover{background:var(--surface-2)}.rt.on{background:var(--brand-soft);color:var(--brand-ink);font-weight:700}
.doc-scroll{overflow-x:auto;background:var(--surface-3);border-radius:var(--r);padding:24px}
.doc{background:#FFFFFF;color:#1A2620;max-width:820px;margin:0 auto;padding:44px 48px;border-radius:6px;box-shadow:var(--shadow-lg);min-width:600px;--ink:#1A2620;--ink-2:#4A5951;--ink-3:#7C8A83;--line:#E3E8E2;--line-2:#CFD9CE;--surface:#FFFFFF;--surface-2:#F5F7F4;--surface-3:#ECF0EB;--brand:#1D6A4D;--brand-ink:#155E43;--on-brand:#fff;--track:#E4EBE3;--c1:#1D6A4D;--warm:#C9741E;--mint:#93DDB5;--ok:#23724B;--bad:#A93B2B}
.doc-h{display:flex;justify-content:space-between;align-items:flex-start;padding-bottom:18px;border-bottom:2px solid #1D6A4D}
.doc-pro{display:flex;flex-direction:column;text-align:right;font-size:12px;color:#4A5951}.doc-pro b{font-size:14px;color:#1A2620}
.doc-title{padding:22px 0 14px}.doc-title h2{font-size:26px;margin-top:4px}
.doc-meta{display:flex;gap:28px;margin-top:12px;font-size:13px;flex-wrap:wrap}.doc-meta small{display:block;font-size:11px;color:#7C8A83;text-transform:uppercase;letter-spacing:.05em}
.doc-b{display:flex;flex-direction:column;gap:14px;font-size:13.5px}.doc-b h4{margin-top:6px}
.doc-tbl{font-size:12px}.doc-tbl td{vertical-align:top}
.doc-cols{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.doc-list{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}
.doc-shop{display:grid;grid-template-columns:1fr 1fr;gap:16px}.doc-shop ul{list-style:none;padding:0;margin:6px 0 0}.doc-shop li{display:flex;justify-content:space-between;gap:8px;padding:3px 0;font-size:12.5px;border-bottom:1px dotted #CFD9CE}
.doc-sign{margin:36px 0 0 auto;width:240px;display:flex;flex-direction:column;align-items:center;text-align:center}.doc-sign span{width:100%;border-top:1px solid #1A2620;margin-bottom:6px}.doc-sign small{font-size:11px;color:#7C8A83}
.doc-f{display:flex;justify-content:space-between;gap:16px;margin-top:28px;padding-top:12px;border-top:1px solid #E3E8E2;font-size:10.5px;color:#7C8A83}
.doc .ai-kpis>div{background:#F5F7F4}

/* configuración */
.sec-card{display:flex;flex-direction:column;gap:4px}.sec-card small{color:var(--ink-3)}
.sec-ic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;margin-bottom:6px}.sec-ic.ok{background:var(--ok-soft);color:var(--ok)}
.logo-prev{display:flex;align-items:center;gap:10px;padding:24px;background:var(--surface-2);border-radius:12px;margin-bottom:10px;justify-content:center}.logo-prev .logo-mark{width:42px;height:42px}.logo-prev .wordmark{font-size:32px}
.notif-prev{background:linear-gradient(160deg,#1F4A3A,#0E241B);border-radius:22px;padding:18px 12px;display:flex;flex-direction:column;gap:8px}
.np{display:flex;gap:10px;align-items:flex-start;background:rgba(255,255,255,.88);color:#14211B;border-radius:14px;padding:10px 12px;backdrop-filter:blur(8px)}
.np-app{width:28px;height:28px;border-radius:8px;background:#fff;display:grid;place-items:center;flex:none}.np-app .logo-mark{width:20px;height:20px}
.np>div{flex:1;min-width:0;display:flex;flex-direction:column}.np b{font-size:13px}.np small{font-size:12px;color:#46564E}.np-t{font-size:11px;color:#77877E}
.plain{margin:6px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:4px}

/* modal / toast */
.overlay{position:fixed;inset:0;background:rgba(6,18,13,.5);display:grid;place-items:center;padding:16px;z-index:50;animation:fade .15s}
.modal{background:var(--surface);border-radius:20px;width:100%;max-width:540px;max-height:calc(100% - 20px);display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:pop .2s cubic-bezier(.2,.9,.3,1.2)}
.modal.sm{max-width:420px}.modal.md{max-width:620px}.modal.lg{max-width:860px}
.modal>header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 22px 10px}.modal>header p{color:var(--ink-3);font-size:13px;margin-top:3px}
.modal-body{padding:6px 22px 18px;overflow-y:auto}
.modal>footer{display:flex;justify-content:flex-end;gap:8px;padding:14px 22px;border-top:1px solid var(--line)}
@keyframes fade{from{opacity:0}}@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.98)}}
#toasts{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;z-index:80;width:max-content;max-width:calc(100vw - 32px)}
.toast{display:flex;align-items:center;gap:10px;background:#14211B;color:#F1F6F2;padding:11px 16px;border-radius:13px;font-size:13.5px;box-shadow:var(--shadow-lg);animation:pop .25s}
.toast .i{color:#93DDB5}.toast.ai .i{color:#C3B4F2}.toast.warn .i{color:#F2C46B}.toast.out{opacity:0;transform:translateY(8px);transition:.4s}
.prose p{margin-bottom:10px}.note{font-size:12px;color:var(--ink-3);background:var(--surface-2);padding:10px;border-radius:10px}

/* login */
.login{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);min-height:100%}
.login-brand{background:var(--side);color:var(--side-ink);padding:40px clamp(24px,5vw,64px);display:flex;flex-direction:column;justify-content:space-between;gap:32px;position:relative;overflow:hidden;--brand:var(--mint);--on-brand:var(--side)}
.login-brand .wordmark{font-size:28px}.login-brand .logo-mark{width:36px;height:36px}
.login-copy{max-width:520px;position:relative;z-index:1}.login-copy h1{font-size:clamp(28px,3.4vw,42px);color:#fff;margin:12px 0 16px;line-height:1.1;font-weight:600}.login-copy p{color:var(--side-ink-2);font-size:15.5px;max-width:460px}
.login-points{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;position:relative;z-index:1}.login-points li{display:flex;gap:12px;align-items:center;font-size:14px}.login-points .i{color:var(--mint);width:20px;height:20px}
.login-leaves{position:absolute;right:-60px;bottom:-40px;width:420px;height:420px;color:var(--mint);opacity:.13}
.login-form{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 16px;gap:18px}
.login-card{width:100%;max-width:400px;display:flex;flex-direction:column;gap:12px}
.login-card h2{font-size:26px;margin-top:10px}.login-card .muted{margin-bottom:8px}
.pw{display:flex;align-items:center;border:1px solid var(--line-2);border-radius:10px;background:var(--surface);padding-right:3px}.pw input{border:0!important;box-shadow:none!important}
.otp{display:flex;gap:8px;justify-content:space-between;margin:8px 0}.otp input{width:48px;height:56px;text-align:center;font-family:var(--f-display);font-size:24px;border:1px solid var(--line-2);border-radius:12px;background:var(--surface)}
.legal{font-size:12px;color:var(--ink-3);text-align:center}.link{color:var(--brand-ink);font-weight:600;font-size:13px;text-decoration:none}

/* paciente: marco */
.pwrap{display:grid;grid-template-columns:minmax(0,380px) auto;justify-content:center;align-items:center;gap:56px;min-height:100%;padding:24px;background:radial-gradient(1200px 600px at 80% 0%,var(--brand-soft),transparent),var(--bg)}
.pdemo{display:flex;flex-direction:column;gap:14px;max-width:380px}.pdemo h2{font-size:30px}.pdemo .brand-row{margin-bottom:12px}.pdemo .demo-chip{align-self:flex-start}
.try{list-style:none;margin:4px 0;padding:0;display:flex;flex-direction:column;gap:10px}.try li{display:flex;gap:10px;align-items:center;font-weight:500}.try .i{color:var(--brand)}
.phone{width:390px;height:min(844px,calc(100vh - 48px));border-radius:48px;border:11px solid #0E1713;background:var(--bg);position:relative;overflow:hidden;box-shadow:var(--shadow-lg),0 0 0 1px #24342C;display:flex;flex-direction:column}
.notch{position:absolute;top:8px;left:50%;transform:translateX(-50%);width:110px;height:30px;border-radius:99px;background:#0E1713;z-index:20}
.pscreen{flex:1;overflow-y:auto;overflow-x:hidden;scrollbar-width:none}
.pbody{padding:48px 16px 104px;display:flex;flex-direction:column;gap:14px}
.p-top{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:6px;padding:46px 10px 8px;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px)}
.p-top h2{flex:1;font-size:18px;padding-left:6px}
.p-top+.pbody{padding-top:8px}
.bnav{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-around;align-items:flex-end;padding:8px 6px calc(16px + env(safe-area-inset-bottom,0px));background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(12px);border-top:1px solid var(--line);z-index:15}
.bnav button{display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--ink-3);font-size:10.5px;font-weight:600;min-width:58px}
.bnav button.on{color:var(--brand-ink)}
.bnav .fab span{width:52px;height:52px;border-radius:18px;background:var(--brand);color:var(--on-brand);display:grid;place-items:center;margin-top:-26px;box-shadow:0 8px 20px color-mix(in srgb,var(--brand) 40%,transparent)}
.bnav .fab .i{width:22px;height:22px}
/* paciente: componentes */
.p-hello{display:flex;justify-content:space-between;align-items:flex-start}.p-hello h1{font-size:27px}
.goal-card{background:var(--side);color:#fff;border-radius:22px;padding:18px;display:flex;align-items:center;gap:12px;--track:rgba(255,255,255,.12);--gc-ring:var(--mint);position:relative;overflow:hidden}
.goal-card::after{content:'';position:absolute;right:-40px;top:-60px;width:180px;height:180px;border-radius:50%;background:radial-gradient(var(--mint),transparent 70%);opacity:.12}
.gc-tx{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}.gc-tx small{color:var(--mint);font-size:12px;font-weight:600}.gc-tx>b{font-family:var(--f-display);font-size:23px;font-weight:600}.gc-tx p{color:#C8D3C4;font-size:13px}
.goal-card .ring-in small{color:#C8D3C4}.goal-card .ring-in b{color:#fff}
.streak{display:inline-flex;align-items:center;gap:5px;align-self:flex-start;margin-top:6px;background:rgba(163,180,155,.22);color:#DCE4D6;font-size:12px;font-weight:700;padding:4px 9px;border-radius:99px}
.p-card{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:8px;min-width:0}
.next-meal{cursor:pointer}.next-meal h3{font-size:18px}.next-meal p{font-size:13px;color:var(--ink-2)}
.mini-macros{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.mini-macros div{background:var(--surface-2);border-radius:10px;padding:7px 9px;display:flex;flex-direction:column}.mini-macros small{font-size:11px;color:var(--ink-3)}.mini-macros b{font-size:15px}.mini-macros i{font-style:normal;font-size:11px;color:var(--ink-3);font-weight:500}
.water-q{flex-direction:row;align-items:center;gap:12px}.water-q>div{flex:1;display:flex;flex-direction:column;gap:6px}.water-q b{display:inline-flex;gap:5px;align-items:center;color:var(--c3)}.water-q small{color:var(--ink-3)}
.p-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.p-tile{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:13px;display:flex;flex-direction:column;gap:2px;position:relative;min-width:0;transition:transform .15s,border-color .15s}
.p-tile:active{transform:scale(.98)}.p-tile:hover{border-color:var(--brand)}
.p-tile .emo{font-size:22px;width:40px;height:40px;border-radius:12px;background:var(--surface-2);display:grid;place-items:center;margin-bottom:6px}
.p-tile b{font-size:14px}.p-tile small{color:var(--ink-3);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.badge-dot{position:absolute;top:12px;right:12px;width:9px;height:9px;border-radius:50%;background:var(--warm)}
.p-sec{display:flex;flex-direction:column;gap:10px}.p-sec h3{font-size:16px}
.badges{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.badges.wrap{grid-template-columns:repeat(3,minmax(0,1fr))}
.bdg{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:10px 6px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:1px}.bdg span{font-size:22px}.bdg b{font-size:12px;margin-top:2px}.bdg small{font-size:10.5px;color:var(--ink-3);line-height:1.2}
.bdg.locked{opacity:.45;filter:grayscale(1)}
.week-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.week-strip button{display:flex;flex-direction:column;align-items:center;padding:8px 0;border-radius:13px;background:var(--surface);border:1px solid var(--line)}.week-strip small{font-size:11px;color:var(--ink-3);font-weight:600}.week-strip b{font-family:var(--f-display);font-size:16px}
.week-strip .today{border-color:var(--brand)}.week-strip .on{background:var(--brand);color:var(--on-brand);border-color:var(--brand)}.week-strip .on small{color:var(--on-brand);opacity:.8}
.plan-sum{flex-direction:row;justify-content:space-between;align-items:center}.plan-sum small{font-size:12px;color:var(--ink-3)}.plan-sum b{font-family:var(--f-display);font-size:20px;display:block}
.pm{display:flex;flex-direction:column;gap:2px;font-size:12px;font-weight:600}.pm span{display:flex;align-items:center;gap:6px}.pm i{width:8px;height:8px;border-radius:2px}.pm .c1{background:var(--c1)}.pm .c2{background:var(--c2)}.pm .c3{background:var(--c3)}
.p-meal{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:12px 14px}
.p-meal header{display:flex;justify-content:space-between;align-items:center}.p-meal header div{display:flex;flex-direction:column}.p-meal header small{color:var(--ink-3);font-size:12px}
.p-meal ul{list-style:none;padding:0;margin:8px 0 0}.p-meal li{display:flex;justify-content:space-between;gap:8px;padding:6px 0;border-top:1px dashed var(--line);font-size:13px}.p-meal li b{white-space:nowrap;font-weight:600;color:var(--ink-2)}
.p-meal.done{background:color-mix(in srgb,var(--ok-soft) 60%,var(--surface));border-color:color-mix(in srgb,var(--ok) 30%,var(--line))}
.chk{width:32px;height:32px;border-radius:50%;border:1.5px solid var(--line-2);display:grid;place-items:center;color:transparent;transition:.15s}.chk.on{background:var(--ok);border-color:var(--ok);color:#fff}
.p-links{display:flex;flex-direction:column;gap:8px}
.p-link{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:14px;font-weight:600;width:100%}.p-link>span{margin-left:auto;display:flex;align-items:center;gap:4px;color:var(--ink-3);font-weight:500;font-size:12.5px}
.p-card .p-link{border:0;padding:10px 0;border-radius:0;border-top:1px solid var(--line)}
.ai-cta{background:linear-gradient(135deg,var(--ai-soft),var(--brand-soft));border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:12px}
.ai-cta>div:first-child{display:flex;gap:10px;align-items:flex-start}.ai-cta>div:first-child>div{display:flex;flex-direction:column}.ai-cta small{color:var(--ink-2);font-size:12.5px}
.ai-cta .row .btn{flex:1}
.pf-res{display:flex;flex-direction:column;gap:6px}
.pf{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:13px;width:100%}.pf>span{flex:1;display:flex;flex-direction:column;min-width:0}.pf small{color:var(--ink-3);font-size:12px}.pf .i{color:var(--brand)}
.draft{border-color:var(--brand)}
.dr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;padding:6px 0;border-top:1px dashed var(--line)}.dr>span:first-child{display:flex;flex-direction:column;font-size:13px;font-weight:500}.dr small{color:var(--ink-3);font-size:11.5px}.dr .qty em{min-width:72px}.dr .r{grid-column:2;text-align:right;font-size:12.5px}
.scan .dr{grid-template-columns:minmax(0,1fr) auto 64px}.scan .dr .r{grid-column:auto}
.log-row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:14px}.log-row>span:nth-child(2){flex:1;min-width:0;display:flex;flex-direction:column}.log-row small{color:var(--ink-3);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.log-row .r{text-align:right;display:flex;flex-direction:column;align-items:flex-end}
.ai-t{color:var(--ai)!important;font-weight:600}.ok-t{color:var(--ok)!important;font-weight:600}
.log-row .li-ic{font-size:18px}
.scan{display:flex;flex-direction:column;gap:14px}
.scan-img{position:relative;border-radius:20px;overflow:hidden;aspect-ratio:4/3;background:var(--surface-3)}.scan-img.sm{aspect-ratio:16/9}.scan-img img{width:100%;height:100%;object-fit:cover;display:block}
.scan-line{position:absolute;left:0;right:0;height:3px;background:linear-gradient(90deg,transparent,var(--mint),transparent);box-shadow:0 0 18px var(--mint);animation:scanl 1.6s ease-in-out infinite}
@keyframes scanl{0%{top:6%}50%{top:92%}100%{top:6%}}
.scan-corners{position:absolute;inset:14px;border-radius:14px;box-shadow:inset 0 0 0 2px rgba(255,255,255,.55)}
.scan-steps{display:flex;flex-direction:column;gap:8px;font-size:14px}.scan-steps p:first-child{display:flex;gap:6px;align-items:center;color:var(--ai);font-weight:600}
.scan-tot{display:flex;justify-content:space-between;align-items:baseline;padding-top:8px;border-top:1px solid var(--line-2)}.scan-tot b{font-family:var(--f-display);font-size:22px}
.p-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}.p-stats.two{grid-template-columns:1fr 1fr}
.p-stats>div{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:11px 12px;display:flex;flex-direction:column;gap:2px}.p-stats small{font-size:11.5px;color:var(--ink-3)}.p-stats b{font-family:var(--f-display);font-size:20px;font-weight:600}.p-stats span{font-size:11.5px;color:var(--ink-3)}
.water-hero{display:flex;flex-direction:column;align-items:center;gap:10px;padding:8px 0}.water-hero .ring-in b{font-size:34px;color:var(--c3)}.water-hero p{font-weight:600}
.water-btns{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.wb{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px 6px;display:flex;flex-direction:column;align-items:center;gap:2px;transition:transform .1s}.wb:active{transform:scale(.95)}.wb span{width:36px;height:36px;border-radius:12px;background:var(--info-soft);color:var(--c3);display:grid;place-items:center}.wb small{font-size:11px;color:var(--ink-3)}
.tip{flex-direction:row;align-items:flex-start;gap:10px;font-size:13px;background:var(--surface-2)}.tip .i{color:var(--brand);margin-top:1px}
.act-types{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.act-types button{display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 4px;border:1px solid var(--line);border-radius:12px;font-size:12px;font-weight:600}.act-types span{font-size:20px}.act-types .on{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-ink)}
.health small{display:block}
.sl input[type=range]{width:100%;accent-color:var(--brand);margin-top:6px}.sl-v{font-family:var(--f-display);font-size:22px;color:var(--brand-ink);font-weight:600}.sl-s{display:flex;justify-content:space-between;font-size:11px;color:var(--ink-3)}
.ck-done{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding:40px 8px}.big-ic{width:72px;height:72px;border-radius:50%;background:var(--ok-soft);color:var(--ok);display:grid;place-items:center}.big-ic .i{width:36px;height:36px}
.pbody.chat{padding:0 0 78px;height:calc(100% - 86px);display:flex}
.pchat{flex:1;display:flex;flex-direction:column;min-height:0}
.pc-h{display:flex;gap:10px;align-items:center;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--surface)}.pc-h .logo-mark{width:34px;height:34px}.pc-h div{display:flex;flex-direction:column}.pc-h small{color:var(--ink-3);font-size:11.5px}
.pchat .msg{max-width:82%}.pchat .msg-img{max-width:200px}
.pchat .composer{padding:8px}
.appt-hero{background:var(--side);color:#fff;border-radius:20px;padding:16px;display:flex;gap:14px;align-items:center}
.ah-date{width:64px;height:76px;border-radius:14px;background:var(--mint);color:var(--side);display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;flex:none}.ah-date b{font-family:var(--f-display);font-size:28px}.ah-date small{font-size:11px;font-weight:700;text-transform:uppercase}
.appt-hero h3{font-size:18px;margin:4px 0 2px}.appt-hero p{color:#C8D3C4;font-size:13px;display:flex;gap:4px;align-items:center}
.p-shop .sg h4{padding-top:10px}
.notif-list{display:flex;flex-direction:column;gap:8px}.nl{display:flex;gap:10px;align-items:flex-start;padding:12px;background:var(--surface);border:1px solid var(--line);border-radius:14px}.nl-ic{font-size:20px;width:36px;height:36px;border-radius:11px;background:var(--surface-2);display:grid;place-items:center;flex:none}.nl>div{flex:1;min-width:0;display:flex;flex-direction:column}.nl div small{color:var(--ink-3);font-size:12.5px}.nl>small{white-space:nowrap;font-size:11px}
.pp-head{display:flex;gap:14px;align-items:center}
.my-n{flex-direction:row;align-items:center;gap:12px}.my-n .logo-mark{width:38px;height:38px}.my-n>div{flex:1;display:flex;flex-direction:column}.my-n small{color:var(--ink-3);font-size:11.5px}
.pbody .kvs.compact .kv{grid-template-columns:120px 1fr}
.pbody .rest-grid{grid-template-columns:1fr}.pbody .chips-row{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}
.pbody .budget .seg{display:none}


/* supermercados */
.stores{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;margin-bottom:16px}
.store-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:2px;min-width:0;transition:border-color .15s}
.store-card:hover{border-color:var(--line-2)}.store-card.on{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.store-card b{font-size:13.5px}.store-card small{font-size:11.5px;color:var(--ink-3);line-height:1.3}.store-card em{font-style:normal;font-size:11px;color:var(--ink-2);margin-top:4px}
.sc-ic{width:32px;height:32px;border-radius:9px;background:var(--surface-3);display:grid;place-items:center;font-weight:800;font-size:12px;color:var(--ink-2);margin-bottom:6px}
.store-card.on .sc-ic{background:var(--brand);color:var(--on-brand)}
.stores.m{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:140px;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:0 16px 4px}
.prod{text-align:left;cursor:pointer;transition:border-color .15s,transform .15s}.prod:hover{border-color:var(--brand);transform:translateY(-1px)}
.prod-price{display:flex;align-items:baseline;gap:6px;margin-top:10px;flex-wrap:wrap}.prod-price small{width:100%;font-size:11px;color:var(--ink-3)}.prod-price b{font-family:var(--f-display);font-size:24px;font-weight:600;color:var(--brand-ink);line-height:1}.prod-price span{font-size:12.5px;color:var(--ink-2)}
.best-line{font-size:12px;color:var(--ink-3);display:flex;gap:4px;align-items:center}.best-line.is-best{color:var(--ok);font-weight:600}
.prod-more{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--brand-ink);font-weight:600;margin-top:8px}
.pd{display:grid;grid-template-columns:280px minmax(0,1fr);gap:22px}
.nlabel{border:2px solid var(--ink);border-radius:6px;padding:10px 12px;align-self:start;background:var(--surface)}
.nlabel h4{font-family:var(--f-body);font-weight:800;font-size:19px;border-bottom:1px solid var(--ink);padding-bottom:4px;margin-bottom:4px}
.nl-row{display:flex;justify-content:space-between;gap:8px;font-size:13px;padding:4px 0;border-bottom:1px solid var(--line-2)}.nl-row.b span:first-child{font-weight:700}.nl-row.ind{padding-left:14px}
.nl-thick{height:7px;background:var(--ink);margin:4px 0}.nl-foot{font-size:10.5px;color:var(--ink-3);margin-top:8px}
.pd-r{display:flex;flex-direction:column;gap:10px;min-width:0}
.price-cmp{display:flex;flex-direction:column;gap:6px}
.pc-row{display:grid;grid-template-columns:110px 1fr 62px 84px;gap:10px;align-items:center;font-size:13px}.pc-row b{text-align:right}.pc-row.best b{color:var(--ok)}.pc-row .tag{font-style:normal;justify-self:start}
.pc-row.na{grid-template-columns:110px 1fr}
.pd-add{border-top:1px solid var(--line);padding-top:12px;display:flex;flex-direction:column;gap:8px}.pd-add .row{align-items:flex-end}
/* comer fuera */
.rest-sum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px;padding:14px}
.rest-sum>div{display:flex;flex-direction:column;padding:4px 8px;border-left:2px solid var(--line)}.rest-sum>div:first-child{border-color:var(--brand)}
.rest-sum small{font-size:11.5px;color:var(--ink-3)}.rest-sum b{font-family:var(--f-display);font-size:20px;font-weight:600}.rest-sum b.sm-b{font-size:14px;font-family:var(--f-body);padding:4px 0}.rest-sum span{font-size:11.5px;color:var(--ink-3)}
.rest-ctl{display:flex;gap:16px;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.chip-btn small{opacity:.6;margin-left:3px}
.fit-tg{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px 12px;min-width:280px}
.eyebrow.rec{margin:2px 0 4px;color:var(--ink-3)}
.ri.no{opacity:.65}.ri-why{font-size:12px;color:var(--ink-2);margin-top:6px}.ri-tip{display:block;color:var(--brand-ink);margin-top:2px}.ri-price{font-size:11.5px;color:var(--ink-3);margin-top:2px}
.nut-mini.est span{background:var(--warm-soft)}
/* compras */
.gen-line{display:flex;align-items:center;gap:8px;background:var(--brand-soft);color:var(--brand-ink);border-radius:11px;padding:8px 10px;margin:12px 0 4px;font-size:13px}.gen-line span{flex:1}.gen-line.m{margin:0}
.shop-total{display:flex;justify-content:space-between;align-items:flex-end;padding:14px 0 6px;border-bottom:2px solid var(--ink)}
.shop-total small{display:block;font-size:12px;color:var(--ink-3)}.shop-total b{font-family:var(--f-display);font-size:32px;font-weight:600;line-height:1.05}.shop-total span{display:block;font-size:12px;color:var(--ink-3)}.shop-total .r{text-align:right}.shop-total .r b{font-size:20px}
.shop-total.m{border:0;padding:4px 0}.shop-total.m b{font-size:26px}
.gen-list{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 20px;text-align:center}
.gl-steps{text-align:left;font-size:13px;color:var(--ink-3);display:flex;flex-direction:column;gap:6px;margin:0;padding-left:20px}.gl-steps .done{color:var(--ok)}
.alt-from{display:flex;flex-direction:column;font-size:13.5px}.alt-from small{color:var(--ink-3);font-size:12px}
.ao{background:var(--surface-2);border-radius:10px;padding:8px 10px}.ao>span{display:flex;flex-direction:column}.ao small{color:var(--ok);font-size:12px}
.cmp{display:flex;flex-direction:column;gap:4px}
.cmp-row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) 64px;gap:8px;align-items:center;font-size:12.5px;padding:6px 8px;border-radius:9px;width:100%;position:relative}
.cmp-row:hover{background:var(--surface-2)}.cmp-row.on{background:var(--brand-soft)}.cmp-row b{text-align:right}.cmp-row .tag{font-style:normal;font-size:10.5px;padding:1px 6px;margin-left:4px}
.bub span{white-space:pre-line}
@media (max-width:1280px){.stores:not(.m){grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:720px){.stores:not(.m){grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:150px;overflow-x:auto;scrollbar-width:none;margin-left:-16px;margin-right:-16px;padding:0 16px 4px}.rest-sum{grid-template-columns:repeat(2,minmax(0,1fr))}.pd{grid-template-columns:minmax(0,1fr)}.pc-row{grid-template-columns:96px 1fr 56px}.pc-row .tag{display:none}.fit-tg{min-width:0;width:100%}}
/* paciente: compactar */
.pbody .rest-sum{grid-template-columns:1fr 1fr;padding:10px}.pbody .fit-tg{min-width:0;width:100%}.pbody .rest-ctl{gap:10px}
.pbody .prod-grid{grid-template-columns:1fr}.pbody .alts{margin-top:6px}.pbody .budget{margin-top:6px}

/* responsive */
@media (max-width:1280px){.kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.mini-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:1100px){
 .g-2-1,.agenda-grid,.ai-wrap,.gen-wrap,.rep-wrap{grid-template-columns:minmax(0,1fr)}
 .sticky-card,.rep-side{position:static}
 .plan-grid{grid-template-columns:minmax(0,1fr)}.totals{position:static;flex-direction:row;flex-wrap:wrap;align-items:center}.totals .macro{flex:1;min-width:160px}.totals h4{width:100%}
 .pt-row{grid-template-columns:minmax(200px,2fr) minmax(120px,1.3fr) 110px 110px 80px 150px}.pt-row>:nth-child(7),.pt-row>:nth-child(8){display:none}
 .phead{grid-template-columns:minmax(0,1fr)}
 .ai-main{height:620px}
}
@media (max-width:900px){
 .shell{grid-template-columns:minmax(0,1fr)}
 .side{position:fixed;left:0;top:0;bottom:0;width:272px;z-index:40;transform:translateX(-100%);transition:transform .25s}.side.open{transform:none}
 .only-m{display:inline-grid!important}.btn.only-m{display:inline-flex!important}
 .topbar{padding:0 12px;gap:8px}.top-search{display:none}.demo-chip{display:none}
 .g-2,.g-3{grid-template-columns:minmax(0,1fr)}
 .msgs{grid-template-columns:minmax(0,1fr);height:auto}.threads{display:flex;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line);gap:4px}.th-h{display:none}.th{min-width:200px}.thread{height:70vh}
 .cal{display:none}.cal-list{display:block}
 .login{grid-template-columns:minmax(0,1fr)}.login-brand{padding:28px 20px}.login-points,.login-leaves{display:none}.login-copy h1{font-size:26px}
}
@media (max-width:720px){
 h1{font-size:23px}
 .page{padding:18px 16px 48px}
 .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi-n{font-size:27px}
 .ph-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
 .form-grid,.form-grid.g3{grid-template-columns:minmax(0,1fr)}
 .kv,.kvs.tags .kv{grid-template-columns:minmax(0,1fr);gap:2px}
 .metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .mini-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
 .ptable{padding:4px}.pt-head{display:none}
 .pt-row{grid-template-columns:minmax(0,1fr) auto;gap:6px 10px;padding:12px;border-bottom:1px solid var(--line);border-radius:0}
 .pt-row>:nth-child(n+2){display:none}.pt-row>.pt-w{display:flex;text-align:right;align-items:flex-end}.pt-row>.pt-pg{display:flex;grid-column:1/-1}
 .days{grid-template-columns:repeat(7,minmax(44px,1fr));overflow-x:auto}.day{padding:6px 2px}.day b{font-size:13px}
 .frow{grid-template-columns:minmax(0,1fr) auto auto;row-gap:4px}.frow.fhead{display:none}.frow>.n{display:none}.frow>.n:nth-of-type(3){display:block}
 .frow .qty{grid-column:1/2;grid-row:2}.frow .fact{grid-row:1/3;grid-column:3}.frow .fname{grid-column:1/3}
 .plan-head{grid-template-columns:minmax(0,1fr)}
 .gen-sum,.ai-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
 .gitem{grid-template-columns:minmax(0,1fr) auto}.gi-st{display:none}
 .ai-review{grid-template-columns:minmax(0,1fr)}
 .modal{border-radius:18px}
 .hb{grid-template-columns:92px 1fr 48px}
 .doc-scroll{padding:10px}
 .timeline li{grid-template-columns:minmax(0,1fr)}.tl-time{padding-left:2px}
 .pwrap{display:block;padding:0;background:var(--bg);height:100%}
 .pdemo{display:none}
 .phone{width:100%;height:100%;border:0;border-radius:0;box-shadow:none}.notch{display:none}
 .pbody{padding-top:20px}.p-top{padding-top:12px}.pbody.chat{height:calc(100% - 52px);padding-top:0}
}
@media (max-width:1060px) and (min-width:721px){.pdemo{display:none}.pwrap{grid-template-columns:auto}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
/* ---- versión real ---- */
.boot{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}.boot .logo-mark{width:46px;height:46px;animation:pulse 1.4s ease-in-out infinite}
@keyframes pulse{50%{opacity:.45;transform:scale(.94)}}
.pwrap.real{grid-template-columns:auto;padding:24px}
.login-card .brand-row{margin-bottom:6px}.login-card .brand-row .logo-mark{width:32px;height:32px}.login-card .brand-row .wordmark{font-size:24px}
.plan-name{font:600 20px var(--f-display);border:1px solid transparent;border-radius:8px;padding:2px 6px;margin-left:-6px;background:transparent;color:var(--ink);min-width:0;max-width:100%}
.plan-name:hover,.plan-name:focus{border-color:var(--line-2);outline:none;background:var(--surface)}
.plh-main input[type=date]{border:1px solid var(--line-2);border-radius:7px;padding:2px 6px;font-size:12px;background:var(--surface)}
.meal-time{border:1px solid transparent;background:transparent;font-size:12.5px;color:var(--ink-3);width:92px;border-radius:6px;padding:1px 4px}.meal-time:hover,.meal-time:focus{border-color:var(--line-2);outline:none}
.sg h4{display:flex;justify-content:space-between}
code{font-family:ui-monospace,Menlo,monospace;font-size:12px;background:var(--surface-2);border:1px solid var(--line);padding:1px 6px;border-radius:6px;overflow-wrap:anywhere}
.log-row .r{display:flex;align-items:center;gap:6px;flex-direction:row}
textarea#cred-msg{font-size:12.5px;line-height:1.45}
.checks label.check{display:flex}
@media (max-width:720px){#toasts{top:calc(12px + env(safe-area-inset-top,0px));bottom:auto}}
.pwrap.real ~ #toasts,.pwrap.real #toasts{bottom:auto}

/* ---------- SAVIA: secciones nuevas ---------- */
.p-hello{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.icon-btn.bell{position:relative;flex:none;margin-top:6px}
.icon-btn.bell .nb{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--warm);color:#fff;font-size:11px;font-style:normal;font-weight:700;display:grid;place-items:center}
.photo-cta{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:16px;background:var(--brand-soft);color:var(--ink);cursor:pointer;border:1px solid transparent}
.photo-cta:hover,.photo-cta:focus-within{border-color:var(--brand)}
.photo-cta .pc-ic{width:40px;height:40px;border-radius:12px;background:var(--brand);color:var(--on-brand);display:grid;place-items:center;flex:none}
.photo-cta>span:nth-of-type(2){flex:1;min-width:0;display:flex;flex-direction:column}.photo-cta small{color:var(--ink-2);font-size:12.5px}
.log-ph{width:40px;height:40px;border-radius:10px;object-fit:cover;flex:none}
.photo-prev{width:100%;max-height:260px;object-fit:cover;border-radius:14px;display:block}
.rev-modal{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:18px;align-items:start}
.rev-modal>img{width:100%;border-radius:14px;object-fit:cover;max-height:420px}
.rev-modal .dr{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--line)}
.rev-modal .dr small{display:block;color:var(--ink-3);font-size:12px}
.pick-list.sm-list{max-height:200px;overflow:auto;margin-top:6px}
@media (max-width:720px){.rev-modal{grid-template-columns:minmax(0,1fr)}}
.preview-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;margin-bottom:16px}
.preview-bar .pt-name small{display:block}
.pwrap.preview{display:flex;justify-content:center;padding:8px 0 24px;min-height:0;background:none}
.pwrap.preview .phone{height:min(780px,calc(100vh - 190px));min-height:560px}
@media (max-width:720px){.pwrap.preview .phone{width:100%;height:72vh;min-height:0;border:8px solid #0E1713;border-radius:32px}}
.login .pro-tag{margin-left:10px;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:4px 10px;border-radius:999px;background:rgba(255,255,255,.12);color:var(--mint,#93DDB5)}
.seg.sm-seg{margin:8px 0 4px}.seg.sm-seg button{font-size:12.5px;padding:6px 4px}
.notif-list .nl{width:100%;text-align:left;cursor:pointer;font:inherit;color:inherit;align-items:center}
.notif-list .nl>div{flex:1;min-width:0}
a.btn{text-decoration:none}
.top-search{position:relative}
.gs-res{position:absolute;top:calc(100% + 6px);left:0;right:0;min-width:260px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg,0 12px 30px rgba(0,0,0,.12));z-index:60;padding:6px;display:flex;flex-direction:column;gap:2px}
.gs-res .li{width:100%}
.warn-t{color:var(--warn,#B7791F);font-style:normal;font-weight:600}
.nb.warn{background:var(--warm,#D9822B);color:#fff}
.av.sm-av{border:0;cursor:pointer}
.gs-res[hidden]{display:none}
/* ---------- Evaluación nutricional ---------- */
.span2{grid-column:1/-1}.form-grid.g3 .span2{grid-column:span 2}
.field textarea{height:auto;min-height:64px;padding:9px 12px;resize:vertical;line-height:1.45}
.fsel-l{font-size:12.5px;color:var(--ink-3);font-weight:600;align-self:center}
.unit-seg button{min-width:38px;justify-content:center}
.ev-saved{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--ink-3);margin-left:6px}
.ev-steps{display:flex;gap:6px;overflow-x:auto;padding:2px 0 12px;margin-bottom:6px;scrollbar-width:thin}
.ev-steps button{display:flex;align-items:center;gap:8px;padding:8px 13px 8px 8px;border-radius:12px;border:1px solid var(--line);background:var(--surface);font-size:13px;font-weight:600;color:var(--ink-2);white-space:nowrap}
.ev-steps button span{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--surface-3);font-size:12px;font-weight:700}
.ev-steps button.done span{background:var(--ok-soft);color:var(--ok)}
.ev-steps button.on{border-color:var(--brand);color:var(--ink);box-shadow:var(--shadow)}.ev-steps button.on span{background:var(--brand);color:var(--on-brand)}
.ev-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}
.ev-main{display:flex;flex-direction:column;gap:14px;min-width:0}
.ev-side{position:sticky;top:76px}
.ev-sec .card-h{margin-bottom:10px}
.ev-sumcard{font-size:13px}
.evs-r{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px dashed var(--line)}
.evs-r span{color:var(--ink-3)}.evs-r b{text-align:right;font-weight:600}.evs-r.warn b{color:var(--warn)}.evs-r.bad b{color:var(--bad)}
.evs-r small{font-weight:400}
.evs-big{font-family:var(--f-display);font-size:22px}
.evs-sep{height:8px}
.evs-mac{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:8px 0}
.evs-mac div{background:var(--surface-2);border-radius:10px;padding:7px 8px;display:flex;flex-direction:column}
.evs-mac small{font-size:11px;color:var(--ink-3)}.evs-mac b{font-size:15px}.evs-mac span{font-size:11px;color:var(--ink-3)}
.evs-alerts{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.evs-alerts p{margin:0;padding:7px 9px;border-radius:9px;font-size:12.5px;display:flex;gap:6px;align-items:flex-start}
.evs-alerts p.warn{background:var(--warn-soft);color:var(--warn)}.evs-alerts p.bad{background:var(--bad-soft);color:var(--bad)}
.ev-tbl td,.ev-tbl th{padding:6px 6px;vertical-align:middle}
.ev-tbl input{width:100%;min-width:70px;height:34px;border:1px solid var(--line-2);border-radius:8px;padding:0 8px;background:var(--surface);font-size:13px}
.ev-tbl td.n input{text-align:right;min-width:0;width:68px}.ev-tbl th.n{white-space:nowrap}.ev-tbl .c{text-align:center}.ev-tbl input[type=radio]{width:18px;height:18px;min-width:0;accent-color:var(--brand)}
.lab-tbl td:first-child{min-width:180px}.lab-tbl input{max-width:110px}
.r24-tbl .r24-h td{background:var(--surface-2);padding:7px 8px}.r24-tbl{table-layout:fixed;min-width:640px}.r24-tbl .r24-h td>div{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.r24-tbl td.n input{width:100%}.r24-tbl td,.r24-tbl th{padding:5px 3px}.r24-act{display:inline-flex;gap:12px}
.r24-tbl td:first-child,.r24-tbl th:first-child{padding:0}.r24-tbl input{min-width:0}
.pct-in{max-width:76px;margin-left:auto}
.ok-t{color:var(--ok)}.bad-t{color:var(--bad)}
.ev-formulas{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.ev-formulas div,.ev-vet div{border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column}
.ev-formulas div.on{border-color:var(--brand);background:var(--brand-soft)}
.ev-formulas small,.ev-vet small{font-size:11.5px;color:var(--ink-3)}.ev-formulas b,.ev-vet b{font-family:var(--f-display);font-size:22px}.ev-formulas span,.ev-vet span{font-size:11.5px;color:var(--ink-3)}
.ev-vet{display:grid;grid-template-columns:1fr 1.3fr 1fr;gap:10px;margin-top:4px}
.ev-vet div.main{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.ev-vet div.main small,.ev-vet div.main span{color:inherit;opacity:.85}.ev-vet div.main b{font-size:28px}
.card-in{border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px}
.pes-st{margin:2px 0 0;padding:8px 10px;border-radius:9px;background:var(--surface-2);font-style:italic;color:var(--ink-2)}.pes-st:empty{display:none}.pes-st.sm{font-size:12.5px}
.ev-apply{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px;font-size:13.5px}.ev-apply li{display:flex;gap:8px;align-items:flex-start}
.ev-nav{display:flex;justify-content:space-between;gap:10px;padding:4px 0 20px}
.ev-banner{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}.ev-banner span{flex:1;min-width:220px}
.ev-li{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
@media (max-width:1100px){.ev-grid{grid-template-columns:1fr}.ev-side{position:static}}
@media (max-width:720px){.form-grid.g3{grid-template-columns:repeat(2,minmax(0,1fr))}.ev-vet{grid-template-columns:1fr}.ev-formulas{grid-template-columns:1fr}.ev-head .ph-act{flex-wrap:wrap}}
@media (max-width:480px){.form-grid.g3,.form-grid{grid-template-columns:1fr}.form-grid.g3 .span2{grid-column:auto}}
.ev-formulas.f3{grid-template-columns:repeat(3,1fr)}
.rap-chips{grid-column:span 2}.rap-chips>div{display:flex;flex-wrap:wrap;gap:6px}
@media (max-width:720px){.ev-formulas.f3{grid-template-columns:1fr}.rap-chips{grid-column:1/-1}}
/* ---------- Catálogo propio: escáner, productos y lugares ---------- */
.form-grid.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.mt-xs{margin-top:6px}.mr-auto{margin-right:auto}.danger-t{color:var(--bad)!important}.align-end{align-self:end;margin-bottom:12px}
.cat-photo{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.cat-photo img{width:72px;height:72px;object-fit:cover;border-radius:10px;border:1px solid var(--line)}.cat-photo img[hidden]{display:none}
.chk-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--line-2);border-radius:99px;font-size:12.5px;cursor:pointer;margin:0 6px 6px 0}.chk-chip input{accent-color:var(--brand)}
.scan-ov{position:fixed;inset:0;z-index:1000;background:rgba(10,20,16,.72);display:flex;align-items:center;justify-content:center;padding:16px}
.scan-box{background:var(--surface);border-radius:18px;width:100%;max-width:440px;padding:14px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow-lg)}
.scan-h{display:flex;align-items:center;justify-content:space-between}.scan-h b{font-size:16px}
.scan-cam{position:relative;border-radius:14px;overflow:hidden;background:#0b1310;aspect-ratio:4/3}
.scan-cam video{width:100%;height:100%;object-fit:cover;display:block}
.scan-frame{position:absolute;left:12%;right:12%;top:32%;bottom:32%;border:3px solid rgba(255,255,255,.9);border-radius:12px;box-shadow:0 0 0 999px rgba(0,0,0,.25)}
.scan-cam.off .scan-frame{display:none}
.scan-st{position:absolute;left:0;right:0;bottom:0;margin:0;padding:8px 12px;font-size:12.5px;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.7));text-align:center}
.scan-cam.off .scan-st{top:0;display:flex;align-items:center;justify-content:center;background:none;padding:20px}
.scan-alt{display:flex;flex-direction:column;gap:8px;align-items:stretch}.scan-alt>label{justify-content:center}
.scan-man{display:flex;gap:8px}.scan-man input{flex:1;height:38px;border:1px solid var(--line-2);border-radius:10px;padding:0 12px;background:var(--surface);min-width:0}
.src-seg{flex-shrink:0}
.rec-tag{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:700;color:var(--ai);background:var(--ai-soft);padding:2px 8px;border-radius:99px}
.prod.mine{border-color:var(--ai-soft);box-shadow:inset 0 0 0 1px var(--ai-soft)}
.prod-ph{width:100%;height:110px;object-fit:cover;border-radius:10px;margin-bottom:4px}
.prod-top{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pd-ph{width:100%;max-height:180px;object-fit:cover;border-radius:12px;margin-bottom:12px}
.rec-note{display:flex;gap:8px;align-items:flex-start;background:var(--ai-soft);color:var(--ink);padding:10px 12px;border-radius:12px;margin-bottom:12px;font-size:13.5px}
.hist{margin-top:10px;font-size:13px}.hist summary{cursor:pointer;font-weight:600;color:var(--brand-ink)}
.hist-r{display:grid;grid-template-columns:auto 1fr auto auto;gap:10px;align-items:center;padding:5px 0;border-bottom:1px dashed var(--line)}
.rest.mine{border-color:var(--ai-soft);box-shadow:inset 0 0 0 1px var(--ai-soft)}
.rest-ph{width:calc(100% + 36px);margin:-18px -18px 10px;height:130px;object-fit:cover;border-radius:16px 16px 0 0;display:block}
.rest-nota{font-size:13px;color:var(--ink-2);margin:4px 0 0}
.ri-ph{width:100%;height:120px;object-fit:cover;border-radius:10px;margin-bottom:8px}
.dish-calc{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:4px 0 10px}.dish-calc summary{cursor:pointer;font-weight:600;display:flex;align-items:center;gap:6px}
.dc-res{display:flex;flex-direction:column;gap:4px;margin-top:6px}
.dc-list{margin-top:8px;display:flex;flex-direction:column;gap:4px}
.dc-r{display:grid;grid-template-columns:1fr auto auto auto;gap:8px;align-items:center;padding:4px 0;border-bottom:1px dashed var(--line);font-size:13px}
.dc-r .qty{display:inline-flex;align-items:center;gap:6px}
.dc-tot{font-size:13px;padding-top:6px}
@media (max-width:720px){.form-grid.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.toolbar .src-seg{width:100%;overflow-x:auto}}
.field .chk-chip input,.chk-chip input{width:16px;height:16px;min-width:0;padding:0;flex:none;margin:0}
