/* PlantIO · web del vendedor (/vender) — hoja «Brote digital» (RV-01).
   Fuente de verdad: docs/web-vendedor-mockup/web.css (tokens exactos, D-RV01-1).
   Portada a documento con scroll (el mockup es viewport fijo). Sin CDN. */
@font-face{font-family:'Space Grotesk';font-style:normal;font-weight:300 700;font-display:swap;src:url('/fonts/space-grotesk-latin-wght.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Newsreader';font-style:italic;font-weight:400;font-display:swap;src:url('/fonts/newsreader-latin-400-italic.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/ibm-plex-mono-latin-500.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/ibm-plex-mono-latin-600.woff2') format('woff2')}

*{box-sizing:border-box}
:root{
--bg:#F4F6F1;--panel:#FFFFFF;--panel2:#E9EEE4;--line:#CFD8C9;--txt:#0E1A12;--grey:#536056;
--teal:#1E6B2E;--teal-ink:#16542A;--teal-soft:#E3F3D8;--accent:#B9F227;
--green:#17773F;--green-soft:#E2F1E8;
--orange:#A45A14;--orange-soft:#F8EBDD;
--red:#B83A2A;--red-soft:#F8E4E0;
--blue:#2D5E9E;--blue-soft:#E3ECF7;
--e1:0 1px 2px rgba(14,26,18,.06),0 1px 3px rgba(14,26,18,.10);
--e2:0 18px 48px rgba(14,26,18,.22);
--ff:'Space Grotesk','Archivo',system-ui,-apple-system,'Segoe UI',sans-serif;
--sci:'Newsreader',Georgia,serif;--mono:'IBM Plex Mono',ui-monospace,monospace;
/* alias para las vistas legadas (no rediseñadas aun) */
--gold:var(--teal);
--tint-teal:var(--teal-soft);--tint-green:var(--green-soft);--tint-orange:var(--orange-soft);--tint-red:var(--red-soft);--tint-grey:var(--panel2);
--f-ui:var(--ff);--f-mono:var(--mono);--r:8px;--shadow:var(--e1)}

/* base del documento */
html{-webkit-text-size-adjust:100%}
body{margin:0;display:flex;align-items:flex-start;background:var(--bg);color:var(--txt);font-family:var(--ff);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}
body.auth{display:flex;min-height:100vh;align-items:center;justify-content:center;padding:16px}
a{color:var(--teal)}
.side a,.topb a,.nav a,.crumbs a,.tabs a,.btn,.iconbtn,.brand,.av,.status,.seg>*{color:inherit;text-decoration:none}
p{margin:0}
h1,h2,h3,h4{margin:0}
table{border-collapse:collapse;width:100%}
:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{transition:none !important}}

/* clases legadas del shell previo (vistas aun no rediseñadas) */
.brand em{font-style:normal;color:var(--teal)}
.logout{font-family:inherit;font-size:13px;font-weight:600;color:var(--txt);background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:0 12px;height:34px;cursor:pointer;width:100%;text-align:left;display:flex;align-items:center;gap:10px}
.logout:hover{border-color:var(--red);color:var(--red)}
h1{color:var(--teal);font-size:1.4rem;font-weight:700;margin:0 0 .3rem}
.lede{color:var(--grey);font-size:.9rem;margin:.2rem 0 1.4rem;max-width:70ch}
.alert{border:1px solid;border-radius:var(--r);padding:.7rem .9rem;margin-bottom:1.1rem;font-size:.88rem;font-weight:500}
.alert--success{background:var(--green-soft);border-color:var(--green);color:var(--green)}
.alert--error{background:var(--red-soft);border-color:var(--red);color:var(--red)}
.alert--warn{background:var(--orange-soft);border-color:var(--orange);color:var(--orange)}
button{border:none;border-radius:6px;padding:.45rem 1rem;font:inherit;font-weight:600;color:#fff;background:var(--teal);cursor:pointer}
.btn{text-decoration:none}
button.ghost,.btn.ghost{background:var(--panel);color:var(--txt);border:1px solid var(--line)}
button.sm,.btn.sm{padding:.3rem .7rem;font-size:.82rem}
/* auth (login / home): tarjeta centrada */
body.auth .card{width:100%;max-width:400px;padding:32px;box-shadow:var(--e1);border-radius:14px;overflow:visible}
.logo{color:var(--txt);font-weight:700;font-size:1.4rem;letter-spacing:-.02em;text-align:center;margin-bottom:6px}
.logo em{font-style:normal;color:var(--teal)}
body.auth h1,body.auth h2{color:var(--teal);font-size:1.2rem;margin:0 0 6px;text-align:center}
.sub{color:var(--grey);margin:0 0 20px;text-align:center;font-size:.86rem}
body.auth .btn{display:block;width:100%;text-align:center;padding:10px 18px;border-radius:var(--r);height:auto}
body.auth .btn.ghost{color:var(--txt)}
.authfield{margin-bottom:16px}
.authfield label{display:block;color:var(--grey);font-size:.85rem;margin-bottom:6px}
.authfield input{width:100%;border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;font:inherit;color:var(--txt);background:var(--bg)}
.authfoot{margin-top:20px;padding-top:16px;border-top:1px solid var(--line);color:var(--grey);font-size:.78rem;text-align:center}

/* utilities */
.stack{display:flex;flex-direction:column}.rowx{display:flex;align-items:center}.wrapx{display:flex;flex-wrap:wrap}
.g2{gap:2px}.g4{gap:4px}.g6{gap:6px}.g8{gap:8px}.g10{gap:10px}.g12{gap:12px}.g14{gap:14px}.g16{gap:16px}.g20{gap:20px}.g24{gap:24px}.g32{gap:32px}
.grow{flex:1 1 auto;min-width:0}.between{justify-content:space-between}.end{justify-content:flex-end}.top{align-items:flex-start}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.grid5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px}
.split{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:24px;align-items:start}
.split.wide{grid-template-columns:minmax(0,1fr) 440px}
.h1{font-size:30px;font-weight:700;letter-spacing:-.02em;line-height:1.15}
.h2{font-size:22px;font-weight:700;letter-spacing:-.015em;line-height:1.2}
.h3{font-size:17px;font-weight:700;letter-spacing:-.01em;line-height:1.3}
.lead{font-size:15px;color:var(--grey);line-height:1.5}
.muted{color:var(--grey)}.small{font-size:13px}.xs{font-size:12px}.b{font-weight:700}.sb{font-weight:600}
.label{font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--grey)}
.sci{font-family:var(--sci);font-style:italic;color:var(--grey)}
.mono{font-family:var(--mono)}.tnum{font-variant-numeric:tabular-nums}
.teal{color:var(--teal)}.redt{color:var(--red)}.greent{color:var(--green)}.oranget{color:var(--orange)}
.ellip{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.divider{height:1px;background:var(--line);flex:none}
.rowx>.divider{flex:1 1 auto}
/* icons */
.i{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none}
.i.fill{fill:currentColor}
.i.s14{width:14px;height:14px}.i.s16{width:16px;height:16px}.i.s18{width:18px;height:18px}.i.s24{width:24px;height:24px}.i.s28{width:28px;height:28px}.i.s32{width:32px;height:32px}
/* shell */
.side{width:252px;flex:none;position:sticky;top:0;align-self:flex-start;height:100vh;overflow-y:auto;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:20px 14px 16px;gap:16px;z-index:10}
.brand{display:flex;align-items:center;gap:10px;padding:0 6px}
.mark{width:34px;height:34px;border-radius:10px;background:var(--teal);color:var(--accent);display:flex;align-items:center;justify-content:center;flex:none}
.word{font-weight:700;font-size:19px;letter-spacing:-.02em;line-height:1}
.word small{display:block;font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--grey);margin-top:4px}
.storecard{display:flex;gap:10px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:14px;background:var(--bg)}
.nav{display:flex;flex-direction:column;gap:1px}
.navmain{flex:1 1 auto;min-height:0}
.nav .grp{font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--grey);padding:10px 10px 3px}
.nav a{display:flex;align-items:center;gap:10px;min-height:36px;padding:0 10px;border-radius:10px;font-weight:500;color:var(--txt)}
.nav a .i,.nav .soon .i{color:var(--grey)}
.nav .soon{display:flex;align-items:center;gap:10px;min-height:36px;padding:0 10px;border-radius:10px;font-weight:500;color:var(--grey);opacity:.7;cursor:default}
.nav a.on{background:var(--teal-soft);color:var(--teal-ink);font-weight:700}
.nav a.on .i{color:var(--teal)}
.cnt{margin-left:auto;min-width:22px;height:20px;border-radius:10px;background:var(--teal);color:#fff;font-size:11.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;padding:0 6px}
.cnt.o{background:var(--orange)}
.lockic{margin-left:auto;color:var(--grey)}
.sidefoot{flex:none;border-top:1px solid var(--line);padding-top:8px}
.main{flex:1;min-width:0;min-height:100vh;display:flex;flex-direction:column;position:relative}
.topb{height:68px;flex:none;position:sticky;top:0;z-index:9;display:flex;align-items:center;gap:12px;padding:0 32px;border-bottom:1px solid var(--line);background:var(--panel)}
.content{flex:1;width:100%;max-width:1240px;margin:0 auto;padding:28px 36px 40px;display:flex;flex-direction:column;gap:22px}
.content>*{flex-shrink:0}
.crumbs{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--grey)}
.crumbs a{color:var(--grey)}.crumbs b{color:var(--txt);font-weight:600}
.pagehead{display:flex;align-items:flex-end;gap:16px}
.status{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:var(--bg);font-weight:600;font-size:13px}
.status .dot{width:8px;height:8px;border-radius:8px;background:var(--green)}
.status.vac{background:var(--orange-soft);border-color:transparent;color:var(--orange)}
.status.vac .dot{background:var(--orange)}
.iconbtn{width:40px;height:40px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;background:var(--panel);border:1px solid var(--line);color:var(--txt);position:relative;flex:none;cursor:pointer;padding:0;font:inherit}
.iconbtn.bare{border-color:transparent;background:transparent}
.badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;border-radius:9px;background:var(--red);color:#fff;font-size:10.5px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px;border:2px solid var(--panel)}
.av{width:40px;height:40px;border-radius:999px;background:var(--teal-soft);color:var(--teal-ink);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;flex:none}
.av.sm{width:32px;height:32px;font-size:12px}.av.lg{width:64px;height:64px;font-size:22px}
.av.solid{background:var(--teal);color:var(--accent)}
/* cards */
.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.cp{padding:20px}
.chead{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line)}
.chead .h3{flex:1}
.cfoot{display:flex;align-items:center;gap:12px;padding:14px 20px;border-top:1px solid var(--line);background:var(--bg)}
.card.sel{border:1.5px solid var(--teal);box-shadow:0 0 0 4px var(--teal-soft)}
.card.pro{border:1.5px solid var(--txt)}
.tile{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex:none;background:var(--teal-soft);color:var(--teal)}
.tile.o{background:var(--orange-soft);color:var(--orange)}.tile.r{background:var(--red-soft);color:var(--red)}.tile.g{background:var(--green-soft);color:var(--green)}.tile.n{background:var(--panel2);color:var(--txt)}.tile.b{background:var(--blue-soft);color:var(--blue)}
.tile.dark{background:var(--txt);color:var(--accent)}
.tile.lg{width:56px;height:56px;border-radius:16px}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:10px;font-family:inherit;font-size:14px;font-weight:600;border:1px solid var(--line);background:var(--panel);color:var(--txt);cursor:pointer;white-space:nowrap;line-height:1}
.btn.primary{background:var(--teal);border-color:var(--teal);color:#fff}
.btn.dark{background:var(--txt);border-color:var(--txt);color:#fff}
.btn.lime{background:var(--accent);border-color:var(--accent);color:var(--txt)}
.btn.danger{background:var(--red);border-color:var(--red);color:#fff}
.btn.dangerghost{color:var(--red)}
.btn.bare{border-color:transparent;background:transparent;color:var(--teal)}
.btn.lg{height:48px;padding:0 22px;font-size:15px;border-radius:12px}
.btn.sm{height:32px;padding:0 12px;font-size:13px;border-radius:8px}
.btn.full{width:100%}
.btn.off{opacity:.45;cursor:not-allowed}
/* pills */
.pill{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 9px;border-radius:999px;font-size:12px;font-weight:600;background:var(--panel2);color:var(--txt);white-space:nowrap;line-height:1}
.pill .dot{width:6px;height:6px;border-radius:6px;background:currentColor}
.pill.g{background:var(--green-soft);color:var(--green)}.pill.o{background:var(--orange-soft);color:var(--orange)}.pill.r{background:var(--red-soft);color:var(--red)}.pill.t{background:var(--teal-soft);color:var(--teal-ink)}.pill.b{background:var(--blue-soft);color:var(--blue)}
.pill.pro{background:var(--accent);color:var(--txt)}.pill.dark{background:var(--txt);color:#fff}.pill.line{background:transparent;border:1px solid var(--line)}
/* tabs & segmented */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line)}
.tabs a{display:flex;align-items:center;gap:6px;padding:10px 14px;font-weight:600;color:var(--grey);border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs a.on{color:var(--teal-ink);border-color:var(--teal)}
.tabs a .n{font-size:12px;background:var(--panel2);border-radius:10px;padding:1px 7px;color:var(--grey)}
.tabs a.on .n{background:var(--teal-soft);color:var(--teal-ink)}
.seg{display:inline-flex;background:var(--panel2);border-radius:10px;padding:3px;gap:2px}
.seg>*{height:32px;padding:0 12px;display:flex;align-items:center;border-radius:8px;font-weight:600;font-size:13px;color:var(--grey)}
.seg>.on{background:var(--panel);color:var(--txt);box-shadow:var(--e1)}
/* tables */
.tbl th{text-align:left;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--grey);padding:10px 16px;border-bottom:1px solid var(--line);background:var(--bg)}
.tbl td{padding:12px 16px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tr:last-child td{border-bottom:none}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums}
.tbl tr.hl td{background:color-mix(in srgb,var(--orange-soft) 60%,var(--panel))}
.tbl tr.selr td{background:var(--teal-soft)}
/* kpis */
.kpi{padding:18px 20px;display:flex;flex-direction:column;gap:6px}
.kpi .v{font-size:28px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.1}
.delta{font-size:12.5px;font-weight:600}.delta.up{color:var(--green)}.delta.dn{color:var(--red)}
/* banners */
.banner{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:14px;font-size:14px;line-height:1.45}
.banner>.i{margin-top:1px}
.banner.info{background:var(--teal-soft)}.banner.info>.i{color:var(--teal)}
.banner.warn{background:var(--orange-soft)}.banner.warn>.i{color:var(--orange)}
.banner.err{background:var(--red-soft)}.banner.err>.i{color:var(--red)}
.banner.ok{background:var(--green-soft)}.banner.ok>.i{color:var(--green)}
.banner.neutral{background:var(--panel2)}
.banner.pro{background:var(--txt);color:#fff}.banner.pro>.i{color:var(--accent)}
.banner .grow{display:flex;flex-direction:column;gap:2px}
/* forms */
.field{display:flex;flex-direction:column;gap:6px}
.flabel{font-size:13px;font-weight:600}
.inp{display:flex;align-items:center;gap:10px;height:42px;padding:0 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel);font-family:inherit;font-size:14px;color:var(--txt);width:100%}
.inp input,.inp select{border:none;outline:none;background:transparent;font:inherit;flex:1;min-width:0;width:100%;color:inherit;padding:0;height:38px}
.inp .i{color:var(--grey)}
.inp.focus{border:2px solid var(--teal);padding:0 11px;box-shadow:0 0 0 4px var(--teal-soft)}
.inp.err{border:2px solid var(--red);padding:0 11px}
.inp.ta{height:auto;min-height:96px;align-items:flex-start;padding:10px 12px}
.inp.sm{height:34px;font-size:13px}
.inp .pre{color:var(--grey);font-weight:600}
.help{font-size:12.5px;color:var(--grey)}
.errtxt{font-size:12.5px;color:var(--red);font-weight:600}
.check{display:flex;gap:10px;align-items:flex-start;line-height:1.45}
.box{width:20px;height:20px;border-radius:6px;border:1.5px solid var(--grey);background:var(--panel);flex:none;display:flex;align-items:center;justify-content:center;color:#fff}
.box.on{background:var(--teal);border-color:var(--teal)}
.radio{width:20px;height:20px;border-radius:10px;border:1.5px solid var(--grey);flex:none}
.radio.on{border:6px solid var(--teal)}
.toggle{width:44px;height:26px;border-radius:13px;background:#B8C2B1;position:relative;flex:none;border:none;padding:0;cursor:pointer}
.toggle::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:10px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.toggle.on{background:var(--teal)}.toggle.on::after{left:21px}
.cells{display:flex;gap:10px}
.cell{width:52px;height:62px;border-radius:12px;border:1.5px solid var(--line);background:var(--panel);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:26px;font-weight:600}
.cell.on{border-color:var(--teal)}.cell.cur{border:2px solid var(--teal);box-shadow:0 0 0 4px var(--teal-soft)}.cell.err{border:2px solid var(--red)}
.drop{border:1.5px dashed var(--line);border-radius:14px;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;color:var(--grey);padding:20px}
/* photo placeholder */
.photo{display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.82);flex:none;overflow:hidden;position:relative}
.photo>.i{width:38%;height:38%;stroke-width:1.4}
.p1{background:#5FAA78}.p2{background:#4F9A92}.p3{background:#8C9F4C}.p4{background:#B08A5A}.p5{background:#5F88AE}.p6{background:#A95F86}
.r8{border-radius:8px}.r10{border-radius:10px}.r12{border-radius:12px}.r16{border-radius:16px}.rf{border-radius:999px}
/* progress, bars, charts */
.bar{height:8px;border-radius:4px;background:var(--panel2);overflow:hidden;flex:none}
.bar>i{display:block;height:100%;background:var(--teal);border-radius:4px}
.bar.o>i{background:var(--orange)}.bar.r>i{background:var(--red)}.bar.g>i{background:var(--green)}.bar.lime>i{background:var(--accent)}
.bars{display:flex;align-items:flex-end;gap:14px;height:180px;padding-top:8px}
.bars>div{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}
.bars>div>i{display:block;width:100%;border-radius:8px 8px 3px 3px;background:var(--teal)}
.bars>div>i.lo{background:var(--teal-soft);border:1px solid var(--teal)}
.bars>div>span{font-size:11.5px;color:var(--grey)}
.band{position:relative;height:10px;border-radius:5px;background:var(--panel2)}
.band>.r{position:absolute;top:0;bottom:0;border-radius:5px;background:var(--teal-soft);border:1px solid var(--teal)}
.band>.m{position:absolute;top:-6px;width:4px;height:22px;border-radius:2px;background:var(--txt);margin-left:-2px}
.band>.you{position:absolute;top:-5px;width:20px;height:20px;border-radius:10px;background:var(--accent);border:2px solid var(--txt);margin-left:-10px}
/* timeline */
.tl{display:flex;gap:14px}
.tl .rail{display:flex;flex-direction:column;align-items:center}
.tl .rail>.ln{width:2px;flex:1;background:var(--line);min-height:14px}
.tl .knob{width:12px;height:12px;border-radius:6px;background:var(--green);margin-top:4px;flex:none}
.tl .knob.now{background:var(--teal);box-shadow:0 0 0 4px var(--teal-soft)}.tl .knob.off{background:var(--line)}
/* steps */
.steprow{display:flex;gap:14px;align-items:center;padding:16px 20px;border-top:1px solid var(--line)}
.steprow:first-child{border-top:none}
.stepn{width:30px;height:30px;border-radius:15px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex:none;border:1.5px solid var(--line);color:var(--grey);background:var(--panel)}
.stepn.done{background:var(--green);border-color:var(--green);color:#fff}.stepn.now{background:var(--teal);border-color:var(--teal);color:#fff;box-shadow:0 0 0 4px var(--teal-soft)}
/* kv */
.kv{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-top:1px solid var(--line);font-size:14px}
.kv:first-child{border-top:none}
.kv>span:first-child{color:var(--grey)}.kv>span:last-child{font-weight:600;text-align:right}
/* overlays */
.scrim[hidden]{display:none}
.scrim{position:fixed;inset:0;background:rgba(14,26,18,.46);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}
.dialog{width:540px;max-width:100%;max-height:92vh;background:var(--panel);border-radius:20px;box-shadow:var(--e2);display:flex;flex-direction:column;overflow:hidden}
.dialog.wide{width:720px}
.dialog .dbody{overflow-y:auto}
.dhead{display:flex;align-items:flex-start;gap:12px;padding:22px 24px 8px}
.dhead .grow{display:flex;flex-direction:column;gap:4px}
.dbody{padding:12px 24px 20px;display:flex;flex-direction:column;gap:16px}
.dfoot{display:flex;gap:10px;justify-content:flex-end;padding:16px 24px;border-top:1px solid var(--line);background:var(--bg)}
.drawer{position:absolute;top:0;right:0;bottom:0;width:500px;background:var(--panel);box-shadow:var(--e2);display:flex;flex-direction:column;z-index:6}
.pop{position:absolute;background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:var(--e2);z-index:6;overflow:hidden}
.toast{position:absolute;right:32px;bottom:32px;background:var(--txt);color:#fff;border-radius:14px;padding:14px 16px;display:flex;gap:12px;align-items:center;box-shadow:var(--e2);font-size:14px;z-index:7;max-width:440px}
.toast .i{color:var(--accent)}
/* chat */
.bubble{max-width:78%;padding:10px 14px;border-radius:16px;font-size:14px;line-height:1.4}
.bubble.me{align-self:flex-end;background:var(--teal);color:#fff;border-bottom-right-radius:5px}
.bubble.them{align-self:flex-start;background:var(--bg);border:1px solid var(--line);border-bottom-left-radius:5px}
.stars{display:flex;gap:2px;color:#B7790E}
.map{background:linear-gradient(90deg,transparent 47%,#fff 47%,#fff 53%,transparent 53%) 0 0/120px 120px,linear-gradient(0deg,transparent 47%,#fff 47%,#fff 53%,transparent 53%) 0 0/120px 120px,linear-gradient(20deg,transparent 60%,#CFE3C3 60%,#CFE3C3 70%,transparent 70%),#E4EDDC;position:relative;overflow:hidden}
.mpin{position:absolute;width:34px;height:34px;border-radius:17px 17px 17px 3px;transform:rotate(-45deg);background:var(--teal);border:3px solid #fff;box-shadow:var(--e1)}
.mpin.o{background:var(--orange)}
.blur{filter:blur(4px);opacity:.6;pointer-events:none}
.lockover{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:24px}
.week{display:grid;grid-template-columns:90px repeat(7,minmax(0,1fr));gap:6px}
.week>div{height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}
.slot{background:var(--panel2);color:var(--grey)}
.slot.on{background:var(--teal);color:#fff}
.hdr{color:var(--grey)}
/* mobile */
.mtop{height:60px;flex:none;display:flex;align-items:center;gap:10px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--line)}
.mbody{flex:1;min-height:0;padding:18px 16px;display:flex;flex-direction:column;gap:16px;overflow:hidden}
.mbody>*{flex-shrink:0}
.mdock{flex:none;padding:12px 16px 20px;background:var(--panel);border-top:1px solid var(--line);display:flex;gap:10px}

/* .btn sin modificador = primario (contrato legado de las vistas) */
.btn:not(.ghost):not(.lime):not(.dark):not(.bare):not(.dangerghost):not(.danger):not(.primary){background:var(--teal);border-color:var(--teal);color:#fff}
.btn.ghost{background:var(--panel);border-color:var(--line);color:var(--txt)}
.burger{display:none}
/* responsive base (RV-01; el pulido profundo es RV-49) */
@media (max-width: 900px) {
  body{display:block}
  .side{display:none;position:fixed;top:0;left:0;bottom:0;width:min(86vw,300px);height:100vh;box-shadow:var(--e2)}
  body.nav-open .side{display:flex}
  .burger{display:inline-flex}
  .topb{padding:0 16px;gap:8px;flex-wrap:wrap;height:auto;min-height:60px}
  .topb .btn .lbl{display:none}
  .content{padding:18px 16px 32px}
  .split,.split.wide,.grid2,.grid3,.grid4,.grid5{grid-template-columns:minmax(0,1fr)}
  .dialog,.dialog.wide{width:100%}
  /* tabla -> tarjeta (convencion: td con data-label) */
  .tbl thead{display:none}
  .tbl,.tbl tbody,.tbl tr,.tbl td{display:block;width:100%}
  .tbl tr{border:1px solid var(--line);border-radius:12px;margin-bottom:10px;background:var(--panel)}
  .tbl td{border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px}
  .tbl td::before{content:attr(data-label);color:var(--grey);font-weight:600}
}

/* ===== CSS bespoke de vistas legadas, namespaced por pagina (RV-01 D-RV01-2) ===== */
/* v-catalog (RV-01 D-RV01-2: CSS bespoke reubicado, sin rediseno) */
.v-catalog .pill { display: inline-flex; align-items: center; font-family: var(--f-mono); font-size: 0.62rem; letter-spacing: 0.05em; text-transform: uppercase; border-radius: 20px; padding: 0.18em 0.65em; border: 1px solid; white-space: nowrap; }
.v-catalog .pill.pos { background: var(--tint-green); border-color: var(--green); color: var(--green); }
.v-catalog .pill.warn { background: var(--tint-orange); border-color: var(--orange); color: var(--orange); }
.v-catalog .pill.acc { background: var(--tint-teal); border-color: var(--gold); color: var(--gold); }
.v-catalog .pill.neg { background: var(--tint-red); border-color: var(--red); color: var(--red); }
.v-catalog .btnrow { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.v-catalog .seg { display: inline-flex; border: 1px solid var(--line); border-radius: 999px; overflow: hidden; flex-wrap: wrap; }
.v-catalog .seg a { padding: 0.35rem 0.9rem; font-size: 0.82rem; font-weight: 600; color: var(--grey); text-decoration: none; }
.v-catalog .seg a.on { background: var(--gold); color: #fff; }
.v-catalog .muted { color: var(--grey); font-size: 0.86rem; }
.v-catalog .check { font-size: 0.82rem; color: var(--grey); margin: 0.9rem 0 0; }
.v-catalog .field { display: flex; flex-direction: column; gap: 0.25rem; min-width: 220px; margin: 0; }
.v-catalog .field label { font-size: 0.78rem; color: var(--grey); }
.v-catalog .field input { font: inherit; padding: 0.4rem 0.65rem; border: 1px solid var(--line); border-radius: 6px; background: var(--panel); color: var(--txt); }
.v-catalog .tw { border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; background: var(--panel); }
.v-catalog .tw table { border-collapse: collapse; width: 100%; font-size: 0.86rem; }
.v-catalog .tw thead th { background: var(--panel2); text-align: left; font-family: var(--f-mono); font-size: 0.64rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--grey); font-weight: 500; padding: 0.6rem 0.8rem; }
.v-catalog .tw tbody td { border-top: 1px solid var(--line); padding: 0.55rem 0.8rem; vertical-align: top; }
.v-catalog .tw .empty { padding: 1.2rem 0.9rem; text-align: center; color: var(--grey); }
.v-catalog .thumb { width: 42px; height: 42px; border-radius: 6px; object-fit: cover; display: block; background: var(--panel2); }
.v-catalog .thumb-placeholder { width: 42px; height: 42px; border-radius: 6px; background: var(--panel2); border: 1px solid var(--line); }
.v-catalog .rowform { margin: 0; }

/* v-catalog-detail (RV-01 D-RV01-2: CSS bespoke reubicado, sin rediseno) */
.v-catalog-detail .pill { display: inline-flex; align-items: center; font-family: var(--f-mono); font-size: 0.62rem; letter-spacing: 0.05em; text-transform: uppercase; border-radius: 20px; padding: 0.18em 0.65em; border: 1px solid; white-space: nowrap; }
.v-catalog-detail .pill.pos { background: var(--tint-green); border-color: var(--green); color: var(--green); }
.v-catalog-detail .pill.warn { background: var(--tint-orange); border-color: var(--orange); color: var(--orange); }
.v-catalog-detail .pill.acc { background: var(--tint-teal); border-color: var(--gold); color: var(--gold); }
.v-catalog-detail .pill.neg { background: var(--tint-red); border-color: var(--red); color: var(--red); }
.v-catalog-detail .scd-back { display: inline-block; margin-bottom: 0.9rem; font-size: 0.82rem; text-decoration: none; color: var(--grey); }
.v-catalog-detail .scd-back:hover { color: var(--gold); }
.v-catalog-detail .scd-meta { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; margin: 0.4rem 0 1.2rem; }
.v-catalog-detail .detailgrid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 1.2rem; align-items: start; }
@media (max-width: 900px) {
.v-catalog-detail .detailgrid { grid-template-columns: 1fr; }}
.v-catalog-detail .card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--r); padding: 1.1rem 1.2rem; margin-bottom: 1.2rem; }
.v-catalog-detail .card h3 { color: var(--gold); font-size: 0.95rem; margin: 0 0 0.7rem; }
.v-catalog-detail .kv { display: grid; grid-template-columns: auto 1fr; gap: 0.5rem 0.8rem; margin: 0; font-size: 0.86rem; }
.v-catalog-detail .kv dt { color: var(--grey); font-family: var(--f-mono); font-size: 0.68rem; letter-spacing: 0.05em; text-transform: uppercase; align-self: center; }
.v-catalog-detail .kv dd { margin: 0; }
.v-catalog-detail .variant-row { border-top: 1px solid var(--line); padding: 0.7rem 0; }
.v-catalog-detail .variant-row:first-child { border-top: none; padding-top: 0; }
.v-catalog-detail .variant-name { font-weight: 600; }
.v-catalog-detail .variant-meta { color: var(--grey); font-size: 0.82rem; margin-top: 0.15rem; }
.v-catalog-detail .sub { color: var(--grey); font-size: 0.82rem; }
.v-catalog-detail .field { margin-bottom: 0.7rem; }
.v-catalog-detail .field label { display: block; font-size: 0.78rem; color: var(--grey); margin-bottom: 0.3rem; font-weight: 600; }
.v-catalog-detail .field input { width: 100%; max-width: 220px; padding: 0.5rem 0.6rem; border: 1px solid var(--line); border-radius: 6px; font: inherit; background: var(--panel2); color: var(--txt); }
.v-catalog-detail .help { font-size: 0.78rem; color: var(--red); margin-top: 0.3rem; }
.v-catalog-detail .priceform { display: flex; align-items: flex-end; gap: 0.6rem; margin-top: 0.4rem; }

/* v-demand (RV-01 D-RV01-2: CSS bespoke reubicado, sin rediseno) */
.v-demand .tw { border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; background: var(--panel); }
.v-demand .tw table { border-collapse: collapse; width: 100%; font-size: 0.86rem; font-variant-numeric: tabular-nums; }
.v-demand .tw thead th {
            background: var(--panel2); text-align: left; font-family: var(--f-mono); font-size: 0.64rem;
            letter-spacing: 0.06em; text-transform: uppercase; color: var(--grey); font-weight: 500;
            padding: 0.6rem 0.8rem; white-space: nowrap;
        }
.v-demand .tw tbody td { border-top: 1px solid var(--line); padding: 0.55rem 0.8rem; vertical-align: top; }
.v-demand .tw tbody tr:hover { background: var(--panel2); }
.v-demand .tw .id { text-align: right; }
.v-demand .tw .empty { padding: 1.6rem 0.9rem; text-align: center; color: var(--grey); }
.v-demand .tw .sub { display: block; color: var(--grey); font-size: 0.76rem; margin-top: 0.15rem; }
.v-demand .tw .locked { color: var(--grey); font-size: 0.78rem; }
.v-demand .btnrow { display: flex; align-items: center; gap: 0.8rem; flex-wrap: wrap; margin-top: 1rem; }
.v-demand .muted { color: var(--grey); font-size: 0.82rem; }

/* v-fiscal (RV-01 D-RV01-2: CSS bespoke reubicado, sin rediseno) */
.v-fiscal .card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow); padding: 1.1rem 1.2rem; max-width: 560px; }
.v-fiscal .kv { display: grid; grid-template-columns: auto 1fr; gap: 0.6rem 1rem; margin: 0; font-size: 0.9rem; }
.v-fiscal .kv dt { color: var(--grey); font-size: 0.78rem; font-weight: 600; align-self: center; }
.v-fiscal .kv dd { margin: 0; font-weight: 500; }
.v-fiscal .check { font-size: 0.82rem; color: var(--grey); margin: 1.1rem 0 0; }
.v-fiscal .muted { color: var(--grey); font-size: 0.86rem; }
.v-fiscal .empty { padding: 1.2rem 0.9rem; text-align: center; color: var(--grey); border: 1px solid var(--line); border-radius: var(--r); background: var(--panel); max-width: 560px; }

/* v-fiscal-edit (RV-01 D-RV01-2: CSS bespoke reubicado, sin rediseno) */
.v-fiscal-edit .card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow); padding: 1.1rem 1.2rem; max-width: 560px; margin-bottom: 1.1rem; }
.v-fiscal-edit .field { margin-bottom: 0.9rem; }
.v-fiscal-edit .field label { display: block; font-size: 0.78rem; font-weight: 600; color: var(--grey); margin-bottom: 0.3rem; }
.v-fiscal-edit .field input,
.v-fiscal-edit .field select {
            width: 100%; font: inherit; font-size: 0.92rem; padding: 0.5rem 0.6rem;
            border: 1px solid var(--line); border-radius: 6px; background: var(--panel); color: var(--txt);
        }
.v-fiscal-edit .help { color: var(--red); font-size: 0.8rem; margin-top: 0.3rem; }
.v-fiscal-edit .step { display: flex; align-items: center; justify-content: space-between; gap: 0.8rem; padding: 0.6rem 0; border-bottom: 1px solid var(--line); }
.v-fiscal-edit .step:last-child { border-bottom: none; }
.v-fiscal-edit .step-copy { font-size: 0.86rem; }
.v-fiscal-edit .step-copy b { display: block; margin-bottom: 0.15rem; }
.v-fiscal-edit .muted { color: var(--grey); font-size: 0.86rem; }
.v-fiscal-edit .locked { padding: 0.9rem 1rem; border: 1px solid var(--line); border-radius: var(--r); background: var(--tint-orange); color: var(--orange); font-size: 0.86rem; margin-bottom: 1.1rem; }

/* v-invoice (F5-35d: pills/kv del shell RV-01; solo layout local del detalle) */
.v-invoice .siv-back { display: inline-block; margin-bottom: 0.9rem; font-size: 0.82rem; text-decoration: none; color: var(--grey); }
.v-invoice .siv-back:hover { color: var(--gold); }
.v-invoice .check { font-size: 0.82rem; color: var(--grey); margin: 0.9rem 0; }
.v-invoice .muted { color: var(--grey); font-size: 0.86rem; margin: 0 0 0.6rem; }
.v-invoice .btnrow { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.v-invoice button.primary,
.v-invoice .btn.primary { background: var(--gold); border: 1px solid var(--gold); color: #fff; }
.v-invoice .card { padding: 1.1rem 1.2rem; margin-bottom: 1.1rem; }
.v-invoice dl.kv { display: grid; grid-template-columns: auto 1fr; gap: 0.6rem 1rem; margin: 0; font-size: 0.9rem; padding: 0; border-top: none; }
.v-invoice dl.kv dt { color: var(--grey); font-size: 0.72rem; letter-spacing: 0.05em; text-transform: uppercase; align-self: center; }
.v-invoice dl.kv dd { margin: 0; font-weight: 500; }
.v-invoice .mono { font-size: 0.85rem; }
.v-invoice .cfoot { margin: 0 -1.2rem -1.1rem; flex-wrap: wrap; }

/* v-invoicing (F5-35d: pills, tabs, banner y .tbl salen del shell RV-01) */
.v-invoicing .check { font-size: 0.82rem; color: var(--grey); margin: 0.9rem 0 0; }
.v-invoicing .muted { color: var(--grey); font-size: 0.86rem; }
.v-invoicing .btnrow { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.v-invoicing button.primary,
.v-invoicing .btn.primary { background: var(--gold); border: 1px solid var(--gold); color: #fff; }
.v-invoicing .banner { margin-bottom: 1rem; }
.v-invoicing .inv-filter { margin-bottom: 1rem; }
.v-invoicing .tbl { width: 100%; border-collapse: collapse; font-size: 0.86rem; }
.v-invoicing .tbl .empty { padding: 1.2rem 0.9rem; text-align: center; color: var(--grey); }
.v-invoicing .tw td.num { font-weight: 600; text-align: right; }
.v-invoicing .tw td.mono { font-family: var(--f-mono); font-size: 0.8rem; color: var(--grey); }

/* v-notifications (RV-01 D-RV01-2: CSS bespoke reubicado, sin rediseno) */
.v-notifications .pill { display: inline-flex; align-items: center; font-family: var(--f-mono); font-size: 0.62rem; letter-spacing: 0.05em; text-transform: uppercase; border-radius: 20px; padding: 0.18em 0.65em; border: 1px solid; white-space: nowrap; }
.v-notifications .pill.pos { background: var(--tint-green); border-color: var(--green); color: var(--green); }
.v-notifications .pill.warn { background: var(--tint-orange); border-color: var(--orange); color: var(--orange); }
.v-notifications .pill.acc { background: var(--tint-teal); border-color: var(--gold); color: var(--gold); }
.v-notifications .pill.neg { background: var(--tint-red); border-color: var(--red); color: var(--red); }
.v-notifications .btnrow { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.v-notifications .seg { display: inline-flex; border: 1px solid var(--line); border-radius: 999px; overflow: hidden; flex-wrap: wrap; }
.v-notifications .seg button { border: none; background: none; padding: 0.35rem 0.9rem; font: inherit; font-size: 0.82rem; font-weight: 600; color: var(--grey); cursor: pointer; }
.v-notifications .seg button.on { background: var(--gold); color: #fff; }
.v-notifications .muted { color: var(--grey); font-size: 0.86rem; }
.v-notifications .check { font-size: 0.82rem; color: var(--grey); margin: 0.9rem 0 0; }
.v-notifications .feed { display: flex; flex-direction: column; gap: 0.65rem; }
.v-notifications .empty { padding: 1.2rem 0.9rem; text-align: center; color: var(--grey); border: 1px solid var(--line); border-radius: var(--r); background: var(--panel); }
.v-notifications .nitem { border: 1px solid var(--line); border-radius: var(--r); background: var(--panel); padding: 0.8rem 0.95rem; box-shadow: var(--shadow); }
.v-notifications .nitem.unread { border-color: var(--gold); background: linear-gradient(180deg, rgba(12, 125, 114, 0.06), rgba(12, 125, 114, 0.02)); }
.v-notifications .nitem .nhead { display: flex; gap: 0.55rem; align-items: center; flex-wrap: wrap; margin-bottom: 0.25rem; }
.v-notifications .nitem .ntime { margin-left: auto; font-size: 0.74rem; color: var(--grey); }
.v-notifications .nitem h3 { font-size: 0.98rem; margin: 0 0 0.15rem; }
.v-notifications .nitem p { margin: 0; font-size: 0.86rem; color: var(--grey); }
.v-notifications .nitem .nacts { display: flex; gap: 0.45rem; flex-wrap: wrap; margin-top: 0.6rem; }
.v-notifications .rowform { margin: 0; }

/* v-plans (RV-01 D-RV01-2: CSS bespoke reubicado, sin rediseno) */
.v-plans .card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow); padding: 1.1rem 1.2rem; }
.v-plans .card h3 { font-size: 1rem; margin: 0 0 0.2rem; }
.v-plans .kv { display: grid; grid-template-columns: auto 1fr; gap: 0.6rem 1rem; margin: 0; font-size: 0.9rem; }
.v-plans .kv dt { color: var(--grey); font-size: 0.78rem; font-weight: 600; align-self: center; }
.v-plans .kv dd { margin: 0; font-weight: 500; }
.v-plans .check { font-size: 0.82rem; color: var(--grey); margin: 0.9rem 0 0; }
.v-plans .muted { color: var(--grey); font-size: 0.86rem; }
.v-plans .btnrow { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.v-plans .pill { display: inline-flex; align-items: center; font-family: var(--f-mono); font-size: 0.62rem; letter-spacing: 0.05em; text-transform: uppercase; border-radius: 20px; padding: 0.18em 0.65em; border: 1px solid; white-space: nowrap; }
.v-plans .pill.pos { background: var(--tint-green); border-color: var(--green); color: var(--green); }
.v-plans .pill.warn { background: var(--tint-orange); border-color: var(--orange); color: var(--orange); }
.v-plans .pill.acc { background: var(--tint-teal); border-color: var(--gold); color: var(--gold); }
.v-plans .plan-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.1rem; margin-top: 1rem; }
.v-plans .plan { border: 1px solid var(--line); border-radius: 14px; padding: 1.25rem; background: var(--panel); display: flex; flex-direction: column; }
.v-plans .plan.hot { border-color: var(--gold); box-shadow: 0 0 0 1px var(--gold); }
.v-plans .plan h3 { font-size: 1.05rem; margin: 0; }
.v-plans .plan .n { font-size: 2rem; font-weight: 700; color: var(--gold); margin: 0.4rem 0; }
.v-plans .plan ul { padding-left: 1.1rem; margin: 0.6rem 0 1.2rem; color: var(--grey); font-size: 0.86rem; flex: 1; }
.v-plans .plan li { margin-bottom: 0.25rem; }
.v-plans .plan .btn,
.v-plans .plan form { width: 100%; }
.v-plans .plan form + form { margin-top: 0.5rem; }

/* v-promotions (RV-01 D-RV01-2: CSS bespoke reubicado, sin rediseno) */
.v-promotions .card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow); padding: 1.1rem 1.2rem; }
.v-promotions .card h3 { color: var(--gold); font-size: 0.95rem; margin: 0 0 0.9rem; }
.v-promotions .kv { display: grid; grid-template-columns: auto 1fr; gap: 0.6rem 1rem; margin: 0; font-size: 0.9rem; }
.v-promotions .kv dt { color: var(--grey); font-size: 0.78rem; font-weight: 600; align-self: center; }
.v-promotions .kv dd { margin: 0; font-weight: 500; }
.v-promotions .check { font-size: 0.82rem; color: var(--grey); margin: 0.9rem 0 0; }
.v-promotions .muted { color: var(--grey); font-size: 0.86rem; }
.v-promotions .btnrow { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.v-promotions .pill { display: inline-flex; align-items: center; font-family: var(--f-mono); font-size: 0.62rem; letter-spacing: 0.05em; text-transform: uppercase; border-radius: 20px; padding: 0.18em 0.65em; border: 1px solid; white-space: nowrap; }
.v-promotions .plan-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.1rem; margin-top: 1rem; }
.v-promotions .plan { border: 1px solid var(--line); border-radius: 14px; padding: 1.25rem; background: var(--panel); display: flex; flex-direction: column; }
.v-promotions .plan.hot { border-color: var(--gold); box-shadow: 0 0 0 1px var(--gold); }
.v-promotions .plan h3 { font-size: 1.05rem; margin: 0; }
.v-promotions .plan .n { font-size: 2rem; font-weight: 700; color: var(--gold); margin: 0.4rem 0; }
.v-promotions .plan ul { padding-left: 1.1rem; margin: 0.6rem 0 1.2rem; color: var(--grey); font-size: 0.86rem; flex: 1; }
.v-promotions .plan li { margin-bottom: 0.25rem; }
.v-promotions .plan .btn,
.v-promotions .plan form { width: 100%; }
.v-promotions .plan form + form { margin-top: 0.5rem; }
.v-promotions .plan label { display: block; font-size: 0.82rem; font-weight: 600; margin-bottom: 0.3rem; }
.v-promotions .plan select { width: 100%; margin-bottom: 0.8rem; }
.v-promotions .plan .radio-row { display: flex; align-items: center; gap: 0.4rem; font-size: 0.86rem; margin-bottom: 0.4rem; }
.v-promotions .tw { border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; background: var(--panel); }
.v-promotions .tw table { border-collapse: collapse; width: 100%; font-size: 0.86rem; font-variant-numeric: tabular-nums; }
.v-promotions .tw thead th { background: var(--panel2); text-align: left; font-family: var(--f-mono); font-size: 0.64rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--grey); font-weight: 500; padding: 0.6rem 0.8rem; }
.v-promotions .tw tbody td { border-top: 1px solid var(--line); padding: 0.55rem 0.8rem; vertical-align: top; }
.v-promotions .tw .empty { padding: 1.2rem 0.9rem; text-align: center; color: var(--grey); }
.v-promotions .tw .sub { color: var(--grey); }

/* v-reservation-file (RV-01 D-RV01-2: CSS bespoke reubicado, sin rediseno) */
.v-reservation-file .pill { display: inline-flex; align-items: center; font-family: var(--f-mono); font-size: 0.62rem; letter-spacing: 0.05em; text-transform: uppercase; border-radius: 20px; padding: 0.18em 0.65em; border: 1px solid; white-space: nowrap; }
.v-reservation-file .pill.pos { background: var(--tint-green); border-color: var(--green); color: var(--green); }
.v-reservation-file .pill.warn { background: var(--tint-orange); border-color: var(--orange); color: var(--orange); }
.v-reservation-file .pill.acc { background: var(--tint-teal); border-color: var(--gold); color: var(--gold); }
.v-reservation-file .pill.neg { background: var(--tint-red); border-color: var(--red); color: var(--red); }
.v-reservation-file .srf-back { display: inline-block; margin-bottom: 0.9rem; font-size: 0.82rem; text-decoration: none; color: var(--grey); }
.v-reservation-file .srf-back:hover { color: var(--gold); }
.v-reservation-file .srf-meta { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; margin: 0.4rem 0 1.2rem; }
.v-reservation-file .detailgrid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 1.2rem; align-items: start; }
@media (max-width: 900px) {
.v-reservation-file .detailgrid { grid-template-columns: 1fr; }}
.v-reservation-file .card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--r); padding: 1.1rem 1.2rem; margin-bottom: 1.2rem; }
.v-reservation-file .card h3 { color: var(--gold); font-size: 0.95rem; margin: 0 0 0.7rem; }
.v-reservation-file .kv { display: grid; grid-template-columns: auto 1fr; gap: 0.5rem 0.8rem; margin: 0; font-size: 0.86rem; }
.v-reservation-file .kv dt { color: var(--grey); font-family: var(--f-mono); font-size: 0.68rem; letter-spacing: 0.05em; text-transform: uppercase; align-self: center; }
.v-reservation-file .kv dd { margin: 0; }
.v-reservation-file .srf-reputation { display: block; color: var(--grey); font-size: 0.8rem; margin-top: 0.15rem; }
.v-reservation-file .srf-reputation .trusted { color: var(--green); font-weight: 600; }
.v-reservation-file .srf-reputation .new { color: var(--grey); font-weight: 600; }
.v-reservation-file .ro-val { background: var(--panel2); border: 1px solid var(--line); border-radius: 6px; padding: 0.55rem 0.7rem; font-family: var(--f-mono); font-size: 0.86rem; color: var(--txt); }
.v-reservation-file .timeline { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.6rem; }
.v-reservation-file .timeline li { border-left: 2px solid var(--line); padding-left: 0.7rem; font-size: 0.85rem; }
.v-reservation-file .timeline .t { font-family: var(--f-mono); font-size: 0.72rem; color: var(--grey); display: block; }
.v-reservation-file .timeline .s { font-weight: 600; }
.v-reservation-file .timeline .reason { color: var(--grey); }
.v-reservation-file .sub { color: var(--grey); font-size: 0.82rem; }
.v-reservation-file .btn.danger { background: var(--red); }
.v-reservation-file .field { margin-bottom: 0.7rem; }
.v-reservation-file .field label { display: block; font-size: 0.78rem; color: var(--grey); margin-bottom: 0.3rem; font-weight: 600; }
.v-reservation-file .field input,
.v-reservation-file .field select { width: 100%; max-width: 320px; padding: 0.5rem 0.6rem; border: 1px solid var(--line); border-radius: 6px; font: inherit; background: var(--panel2); color: var(--txt); }
.v-reservation-file .help { font-size: 0.78rem; color: var(--red); margin-top: 0.3rem; }
.v-reservation-file .check { font-size: 0.82rem; color: var(--grey); margin: 0.9rem 0 0; }

/* v-reservations (RV-01 D-RV01-2: CSS bespoke reubicado, sin rediseno) */
.v-reservations .pill { display: inline-flex; align-items: center; font-family: var(--f-mono); font-size: 0.62rem; letter-spacing: 0.05em; text-transform: uppercase; border-radius: 20px; padding: 0.18em 0.65em; border: 1px solid; white-space: nowrap; }
.v-reservations .pill.pos { background: var(--tint-green); border-color: var(--green); color: var(--green); }
.v-reservations .pill.warn { background: var(--tint-orange); border-color: var(--orange); color: var(--orange); }
.v-reservations .pill.acc { background: var(--tint-teal); border-color: var(--gold); color: var(--gold); }
.v-reservations .pill.neg { background: var(--tint-red); border-color: var(--red); color: var(--red); }
.v-reservations .btnrow { display: flex; align-items: center; gap: 0.5rem; }
.v-reservations .seg { display: inline-flex; border: 1px solid var(--line); border-radius: 999px; overflow: hidden; }
.v-reservations .seg a { padding: 0.35rem 0.9rem; font-size: 0.82rem; font-weight: 600; color: var(--grey); text-decoration: none; }
.v-reservations .seg a.on { background: var(--gold); color: #fff; }
.v-reservations .muted { color: var(--grey); font-size: 0.86rem; }
.v-reservations .sub { display: block; color: var(--grey); font-size: 0.78rem; margin-top: 0.15rem; }
.v-reservations .tw { border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; background: var(--panel); }
.v-reservations .tw table { border-collapse: collapse; width: 100%; font-size: 0.86rem; }
.v-reservations .tw thead th { background: var(--panel2); text-align: left; font-family: var(--f-mono); font-size: 0.64rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--grey); font-weight: 500; padding: 0.6rem 0.8rem; }
.v-reservations .tw tbody td { border-top: 1px solid var(--line); padding: 0.55rem 0.8rem; vertical-align: top; }
.v-reservations .tw .empty { padding: 1.2rem 0.9rem; text-align: center; color: var(--grey); }
.v-reservations .check { font-size: 0.82rem; color: var(--grey); margin: 0.9rem 0 0; }

/* v-store (RV-01 D-RV01-2: CSS bespoke reubicado, sin rediseno) */
.v-store .card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow); padding: 1.1rem 1.2rem; }
.v-store .card h3 { font-size: 1rem; margin: 0 0 0.2rem; }
.v-store .muted { color: var(--grey); font-size: 0.86rem; }
.v-store .pill { display: inline-flex; align-items: center; font-family: var(--f-mono); font-size: 0.62rem; letter-spacing: 0.05em; text-transform: uppercase; border-radius: 20px; padding: 0.18em 0.65em; border: 1px solid; white-space: nowrap; }
.v-store .pill.pos { background: var(--tint-green); border-color: var(--green); color: var(--green); }
.v-store .pill.warn { background: var(--tint-orange); border-color: var(--orange); color: var(--orange); }
.v-store .pill.acc { background: var(--tint-teal); border-color: var(--gold); color: var(--gold); }
.v-store .steps { margin: 0.2rem 0 0; padding: 0; list-style: none; }
.v-store .steps li { display: flex; gap: 0.6rem; align-items: flex-start; padding: 0.55rem 0; border-top: 1px solid var(--line); font-size: 0.9rem; }
.v-store .steps li:first-child { border-top: 0; }
.v-store .steps .n { flex: 0 0 24px; height: 24px; border-radius: 50%; border: 1px solid var(--gold); color: var(--gold); display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: 0.78rem; }
.v-store .steps .n.done { background: var(--tint-green); border-color: var(--green); color: var(--green); }
.v-store .steps .badge { margin-top: 0.3rem; }
.v-store .steps .note { display: block; color: var(--grey); font-size: 0.78rem; margin-top: 0.2rem; }
.v-store .grid2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 0.9rem; margin-top: 1rem; }
.v-store .tw { border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; background: var(--panel); }
.v-store .tw table { border-collapse: collapse; width: 100%; font-size: 0.86rem; }
.v-store .tw thead th { background: var(--panel2); text-align: left; font-family: var(--f-mono); font-size: 0.64rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--grey); font-weight: 500; padding: 0.6rem 0.8rem; }
.v-store .tw tbody td { border-top: 1px solid var(--line); padding: 0.55rem 0.8rem; vertical-align: top; }
.v-store .tw .empty { padding: 1.2rem 0.9rem; text-align: center; color: var(--grey); }
.v-store .check { font-size: 0.82rem; color: var(--grey); margin: 0.5rem 0 0; }

/* v-support (RV-01 D-RV01-2: CSS bespoke reubicado, sin rediseno) */
.v-support .pill { display: inline-flex; align-items: center; font-family: var(--f-mono); font-size: 0.62rem; letter-spacing: 0.05em; text-transform: uppercase; border-radius: 20px; padding: 0.18em 0.65em; border: 1px solid; white-space: nowrap; }
.v-support .pill.pos { background: var(--tint-green); border-color: var(--green); color: var(--green); }
.v-support .pill.warn { background: var(--tint-orange); border-color: var(--orange); color: var(--orange); }
.v-support .pill.acc { background: var(--tint-teal); border-color: var(--gold); color: var(--gold); }
.v-support .pill.neg { background: var(--tint-red); border-color: var(--red); color: var(--red); }
.v-support .muted { color: var(--grey); font-size: 0.86rem; }
.v-support .check { font-size: 0.82rem; color: var(--grey); margin: 0.9rem 0 0; }
.v-support .grid2 { display: grid; grid-template-columns: 1fr 1.2fr; gap: 1.2rem; align-items: start; }
@media (max-width: 900px) {
.v-support .grid2 { grid-template-columns: 1fr; }}
.v-support .card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--r); padding: 1.1rem 1.2rem; }
.v-support .card h3 { color: var(--gold); font-size: 0.95rem; margin: 0 0 0.9rem; }
.v-support .field { display: flex; flex-direction: column; gap: 0.3rem; margin-bottom: 0.8rem; }
.v-support .field label { font-size: 0.78rem; color: var(--grey); font-weight: 600; }
.v-support .field input,
.v-support .field select,
.v-support .field textarea { font: inherit; padding: 0.5rem 0.65rem; border: 1px solid var(--line); border-radius: 6px; background: var(--panel2); color: var(--txt); }
.v-support .field textarea { resize: vertical; }
.v-support .help { font-size: 0.78rem; color: var(--red); margin-top: 0.3rem; }
.v-support .tw { border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; background: var(--panel); }
.v-support .tw table { border-collapse: collapse; width: 100%; font-size: 0.86rem; }
.v-support .tw thead th { background: var(--panel2); text-align: left; font-family: var(--f-mono); font-size: 0.64rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--grey); font-weight: 500; padding: 0.6rem 0.8rem; }
.v-support .tw tbody td { border-top: 1px solid var(--line); padding: 0.55rem 0.8rem; vertical-align: top; }
.v-support .tw .empty { padding: 1.2rem 0.9rem; text-align: center; color: var(--grey); }
.v-support .sub { color: var(--grey); font-size: 0.82rem; }

/* v-support-detail (RV-01 D-RV01-2: CSS bespoke reubicado, sin rediseno) */
.v-support-detail .pill { display: inline-flex; align-items: center; font-family: var(--f-mono); font-size: 0.62rem; letter-spacing: 0.05em; text-transform: uppercase; border-radius: 20px; padding: 0.18em 0.65em; border: 1px solid; white-space: nowrap; }
.v-support-detail .pill.pos { background: var(--tint-green); border-color: var(--green); color: var(--green); }
.v-support-detail .pill.warn { background: var(--tint-orange); border-color: var(--orange); color: var(--orange); }
.v-support-detail .pill.acc { background: var(--tint-teal); border-color: var(--gold); color: var(--gold); }
.v-support-detail .pill.neg { background: var(--tint-red); border-color: var(--red); color: var(--red); }
.v-support-detail .scd-back { display: inline-block; margin-bottom: 0.9rem; font-size: 0.82rem; text-decoration: none; color: var(--grey); }
.v-support-detail .scd-back:hover { color: var(--gold); }
.v-support-detail .scd-meta { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; margin: 0.4rem 0 1.2rem; }
.v-support-detail .card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--r); padding: 1.1rem 1.2rem; margin-bottom: 1.2rem; }
.v-support-detail .card h3 { color: var(--gold); font-size: 0.95rem; margin: 0 0 0.7rem; }
.v-support-detail .sub { color: var(--grey); font-size: 0.82rem; }
.v-support-detail .thread { display: flex; flex-direction: column; gap: 0.7rem; }
.v-support-detail .thread-msg { border-top: 1px solid var(--line); padding-top: 0.6rem; }
.v-support-detail .thread-msg:first-child { border-top: none; padding-top: 0; }
.v-support-detail .thread-author { font-weight: 600; font-size: 0.82rem; color: var(--grey); }
.v-support-detail .thread-time { font-size: 0.74rem; color: var(--grey); margin-left: 0.5rem; }
.v-support-detail .thread-body { margin: 0.2rem 0 0; }

/* v-wallet (RV-01 D-RV01-2: CSS bespoke reubicado, sin rediseno) */
.v-wallet .card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow); padding: 1.1rem 1.2rem; }
.v-wallet .check { font-size: 0.82rem; color: var(--grey); margin: 0.9rem 0 0; }
.v-wallet .muted { color: var(--grey); font-size: 0.86rem; }
.v-wallet .btnrow { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.v-wallet .price { font-variant-numeric: tabular-nums; font-weight: 700; }
.v-wallet .price.neg { color: var(--red); }
.v-wallet .tw { border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; background: var(--panel); margin-top: 1rem; }
.v-wallet .tw table { border-collapse: collapse; width: 100%; font-size: 0.86rem; font-variant-numeric: tabular-nums; }
.v-wallet .tw thead th { background: var(--panel2); text-align: left; font-family: var(--f-mono); font-size: 0.64rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--grey); font-weight: 500; padding: 0.6rem 0.8rem; }
.v-wallet .tw tbody td { border-top: 1px solid var(--line); padding: 0.55rem 0.8rem; vertical-align: top; }
.v-wallet .tw .empty { padding: 1.2rem 0.9rem; text-align: center; color: var(--grey); }
.v-wallet .tw .sub { color: var(--grey); }

/* menu de cuenta del topbar (details/summary, sin JS) */
.acct{position:relative}
.acct>summary{list-style:none;cursor:pointer}
.acct>summary::-webkit-details-marker{display:none}
.acct .pop{right:0;top:44px;min-width:220px;padding:12px;display:flex;flex-direction:column;gap:10px}

/* RV-02: estilos migrados desde atributos style= (CSP sin unsafe-inline). */
.v-catalog-detail-1 {
  margin-bottom: 0;
}
.v-catalog-detail-2 {
  margin: 0.3rem 0 0;
}
.v-catalog-detail-3 {
  margin-top: 0.6rem;
}
.v-catalog-1 {
  margin-bottom: 0.9rem;
}
.v-catalog-2 {
  margin-left: auto;
}
.v-catalog-3 {
  margin: 0.3rem 0 0;
}
.v-demand-1 {
  display:inline-flex;
  align-items:center;
  font-family:var(--f-mono);
  font-size:0.66rem;
  padding:0.18em 0.65em;
  border-radius:20px;
  background:var(--tint-teal);
  color:var(--gold);
  border:1px solid var(--gold);
  margin-right:0.4rem;
}
.v-error-404-1 {
  max-width: 520px;
}
.v-fiscal-edit-1 {
  font-size: 1rem;
  margin-bottom: 0.7rem;
}
.v-fiscal-edit-2 {
  margin: 0 0 0.8rem;
}
.v-fiscal-edit-3 {
  display: flex;
  gap: 0.5rem;
  align-items: flex-start;
}
.v-fiscal-edit-4 {
  margin-bottom: 0;
}
.v-fiscal-1 {
  margin: 0.3rem 0 0;
}
.v-invoicing-1 {
  margin-top: 0.9rem;
}
.v-login-1 {
  margin-top: 12px;
}
.v-login-2 {
  margin-top: 12px;
  display: block;
}
.v-notifications-1 {
  margin-bottom: 0.9rem;
}
.v-notifications-2 {
  margin-left: auto;
}
.v-notifications-3 {
  margin: 0.3rem 0 0;
}
.v-notifications-4 {
  margin-top: 0.9rem;
}
.v-plans-1 {
  margin-bottom: 1rem;
}
.v-plans-2 {
  margin-left: 0.3rem;
}
.v-plans-3 {
  margin-top: 0.9rem;
}
.v-plans-4 {
  font-size: 0.9rem;
}
.v-plans-5 {
  margin-top: 1rem;
}
.v-promotions-1 {
  margin-bottom: 1rem;
}
.v-promotions-2 {
  margin-top: 1rem;
}
.v-reservation-file-1 {
  margin-top: 0.8rem;
}
.v-reservation-file-2 {
  width: 100%;
  max-width: 480px;
  min-height: 5rem;
  padding: 0.5rem 0.6rem;
  border: 1px solid var(--line);
  border-radius: 6px;
  font: inherit;
  background: var(--panel2);
  color: var(--txt);
}
.v-reservation-file-3 {
  margin-top: 0.9rem;
}
.v-reservation-file-4 {
  color: var(--grey);
}
.v-reservations-1 {
  margin-bottom: 0.9rem;
}
.v-reservations-2 {
  margin-left: auto;
}
.v-reservations-3 {
  margin: 0.3rem 0 0;
}
.v-store-1 {
  margin-bottom: 1rem;
}
.v-store-2 {
  margin: 0.2rem 0 0.8rem;
}
.v-store-3 {
  margin-left: 0.4rem;
}
.v-support-1 {
  margin: 0.3rem 0 0;
}
.v-wallet-1 {
  margin-bottom: 1rem;
}
.v-wallet-2 {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
.v-wallet-3 {
  font-size: 1.6rem;
}
.v-wallet-4 {
  margin-top: 1rem;
}
.v-wallet-5 {
  margin-top: 0.8rem;
}
