/* ═══════════════════════════════════════════════════════
   YANG SHENG 養生 · panel v1 — hoja de estilo única
   Marfil + azul cielo + tierra, con los 5 elementos de apoyo.
   Sin build, sin dependencias. Todo pensado para leerse cómodo
   en el móvil de Ale y en el portátil de Fede.
   ═══════════════════════════════════════════════════════ */
:root{
  --bg:#faf7f1; --bg2:#f3eee4; --bg3:#ebe4d6;
  --ink:#1f2328; --ink2:#4a4f55; --muted:#7a8088;
  --border:#e2dacb; --border2:#d6cbb6;
  --primary:#5b8fc7; --primary-soft:#e4eef9;
  --tierra:#b08a5a; --tierra-soft:#f1e6d3;
  --green:#6f9b6a;  --green-soft:#e8f0e6;   /* madera · hígado */
  --red:#c94a3d;    --red-soft:#f8e7e4;     /* fuego · corazón */
  --white:#ffffff;                          /* metal · pulmón */
  --water:#1f2f4a;  --water-soft:#e3e7ee;   /* agua · riñón */
  --amber:#c08a2e;  --amber-soft:#faefd8;   /* avisos */
  --r:16px; --r-sm:10px;
  --shadow:0 1px 2px rgba(60,45,25,.05),0 4px 18px rgba(60,45,25,.06);
  --shadow-lg:0 10px 44px rgba(40,30,15,.20);
  --font:ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',sans-serif;
  --display:Georgia,'Iowan Old Style','Times New Roman',serif;
}
*{margin:0;padding:0;box-sizing:border-box}
body{background:var(--bg2);color:var(--ink);font-family:var(--font);font-size:15px;min-height:100vh;overflow-x:hidden;-webkit-text-size-adjust:100%}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;font-size:inherit}
input,textarea,select{font-family:inherit;color:var(--ink);font-size:15px}
a{color:var(--primary)}
.display{font-family:var(--display)}
.hidden{display:none!important}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:5px}

/* ── Puerta ── */
.gate{position:fixed;inset:0;background:var(--bg2);z-index:400;display:none;align-items:center;justify-content:center;padding:20px}
.gate.on{display:flex}
.gatecard{background:var(--bg);border:1px solid var(--border);border-radius:24px;box-shadow:var(--shadow-lg);padding:38px 30px;max-width:400px;width:100%;text-align:center}
.gatecard .glogo{font-family:var(--display);font-size:46px;color:var(--primary);line-height:1.1}
.gatecard .gname{font-family:var(--display);font-size:25px;margin-top:6px}
.gatecard .gclaim{font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:var(--tierra);margin-top:3px}
.gatecard p{color:var(--muted);font-size:14px;margin:22px 0 16px}
.gatecard input{width:100%;border:1px solid var(--border2);border-radius:999px;padding:14px 20px;font-size:15px;outline:none;text-align:center;margin-bottom:12px;background:var(--bg)}
.gatecard input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.gatepw{position:relative;margin-bottom:12px}
.gatepw input{margin-bottom:0;padding-right:50px}
.gateeye{position:absolute;right:8px;top:50%;transform:translateY(-50%);padding:10px;border-radius:999px;color:var(--muted);line-height:0;display:flex;min-width:44px;min-height:44px;align-items:center;justify-content:center}
.gateeye:hover{color:var(--ink);background:var(--bg2)}
.gatemsg{color:var(--red);font-size:13.5px;margin-top:12px;min-height:18px}

/* ── Estructura ── */
.shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh}
.side{background:var(--bg);border-right:1px solid var(--border);position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column;z-index:70}
.logo{padding:20px 16px 12px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.marca{display:flex;align-items:center;gap:10px}
.marca .ideo{font-family:var(--display);font-size:30px;color:var(--primary);line-height:1}
.marca .nom{font-family:var(--display);font-size:19px;line-height:1.15;display:flex;flex-direction:column}
.marca .nom small{font-family:var(--font);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--tierra);font-weight:600}
.side .cerrarmenu{display:none}
.nav{flex:1;padding:6px 10px 20px}
.nav button.nitem{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:11px 12px;border-radius:12px;font-size:15px;font-weight:600;color:var(--ink2);transition:.12s;margin-bottom:2px;min-height:44px}
.nav button.nitem:hover{background:var(--bg2)}
.nav button.nitem.on{background:var(--primary-soft);color:var(--water)}
.nav button.nitem .ic{width:22px;text-align:center;flex-shrink:0;font-size:16px}
.nav button.nitem .n{margin-left:auto;background:var(--tierra);color:#fff;font-size:11px;font-weight:700;border-radius:999px;padding:2px 8px;min-width:20px;text-align:center}
.nav .sub{padding:2px 0 8px 30px}
.nav .sub button{display:block;width:100%;text-align:left;padding:8px 12px;border-radius:9px;font-size:13.5px;color:var(--muted);font-weight:600;min-height:38px}
.nav .sub button:hover{background:var(--bg2);color:var(--ink)}
.nav .sub button.on{color:var(--primary);background:var(--primary-soft)}
.sideuser{padding:10px 14px;border-top:1px solid var(--border);font-size:13px;color:var(--ink2);display:flex;align-items:center;gap:9px;justify-content:space-between}
.sideuser .quien{display:flex;align-items:center;gap:8px;font-weight:700}
.sideuser .av{width:28px;height:28px;border-radius:50%;background:var(--tierra-soft);color:var(--tierra);display:grid;place-items:center;font-weight:800;font-size:12px}
.foot{padding:12px 14px;border-top:1px solid var(--border);font-size:12px;color:var(--muted);display:flex;align-items:center;gap:8px}
.syncdot{width:9px;height:9px;border-radius:50%;background:var(--muted);flex:none}
.syncdot.ok{background:var(--green)}
.syncdot.local{background:var(--amber)}
.syncdot.err{background:var(--red)}
.main{min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:12px;padding:12px 26px;background:var(--bg);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:60}
.top .spacer{flex:1}
.crumb{font-size:14px;color:var(--muted);display:flex;align-items:center;gap:7px;min-width:0;overflow:hidden;white-space:nowrap}
.crumb b{color:var(--ink);font-family:var(--display);font-size:18px;font-weight:400}
.burger{display:none}
.searchtrigger{display:flex;align-items:center;gap:10px;background:var(--bg2);border:1px solid var(--border);border-radius:999px;padding:10px 16px;color:var(--muted);font-size:14px;min-width:200px;min-height:44px}
.searchtrigger:hover{border-color:var(--primary)}
.searchtrigger kbd{margin-left:auto;background:var(--bg);border:1px solid var(--border2);border-radius:6px;padding:2px 7px;font-size:11px;font-family:inherit}
.view{display:none;padding:26px 30px 90px;width:100%;animation:fade .18s}
.view.on{display:block}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* ── Piezas sueltas ── */
.iconbtn{width:44px;height:44px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);background:var(--bg);transition:.15s;font-size:16px}
.iconbtn:hover{border-color:var(--primary)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:999px;padding:12px 20px;font-size:14.5px;font-weight:600;transition:.15s;border:1px solid transparent;min-height:44px}
.btn-p{background:var(--primary);color:#fff}
.btn-p:hover{filter:brightness(1.06)}
.btn-g{background:var(--bg);border-color:var(--border2);color:var(--ink)}
.btn-g:hover{border-color:var(--primary);color:var(--primary)}
.btn-t{background:var(--tierra);color:#fff}
.btn-r{background:var(--red);color:#fff}
.btn-sm{padding:8px 14px;font-size:13px;min-height:38px}
.btn-full{width:100%}
.btn:disabled{opacity:.45;cursor:not-allowed}
.linkbtn{color:var(--muted);font-size:13.5px;font-weight:600;padding:6px 2px}
.linkbtn:hover{color:var(--primary)}
.linkbtn.peligro:hover{color:var(--red)}
.card{background:var(--bg);border:1px solid var(--border);border-radius:var(--r);padding:20px;box-shadow:var(--shadow)}
.card h3{font-family:var(--display);font-size:19px;font-weight:400;margin-bottom:12px}
.badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;border-radius:999px;padding:4px 11px;white-space:nowrap;background:var(--bg3);color:var(--ink2)}
.badge.azul{background:var(--primary-soft);color:#2f5f96}
.badge.tierra{background:var(--tierra-soft);color:#7d5c2e}
.badge.verde{background:var(--green-soft);color:#3f6c3b}
.badge.rojo{background:var(--red-soft);color:#9c342a}
.badge.agua{background:var(--water-soft);color:var(--water)}
.badge.ambar{background:var(--amber-soft);color:#8a5f11}
.badge.gris{background:var(--bg3);color:var(--muted)}
.empty{color:var(--muted);text-align:center;padding:34px 20px;font-size:14px;border:1.5px dashed var(--border2);border-radius:var(--r);background:var(--bg)}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.h1{font-family:var(--display);font-size:30px;font-weight:400;letter-spacing:-.01em}
.h2{font-family:var(--display);font-size:21px;font-weight:400;margin:26px 0 12px}
.sub{color:var(--muted);font-size:14px;margin-top:4px}
.rowend{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.sep{height:1px;background:var(--border);margin:18px 0}

/* ── Campos ── */
.field{margin-bottom:16px}
.field label{display:block;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}
.field input[type=text],.field input[type=date],.field input[type=number],.field input[type=password],.field textarea,.field select{width:100%;background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);padding:12px 14px;outline:none;transition:.15s;min-height:44px}
.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.field textarea{resize:vertical;min-height:90px;line-height:1.6}
.pillselect{display:flex;gap:7px;flex-wrap:wrap}
.pillselect button{border:1px solid var(--border2);border-radius:999px;padding:9px 15px;font-size:13.5px;font-weight:600;color:var(--muted);transition:.12s;min-height:40px}
.pillselect button:hover{border-color:var(--primary)}
.pillselect button.on{background:var(--primary);border-color:var(--primary);color:#fff}
.pillselect button small{color:var(--muted);font-weight:600;margin-left:3px}
.pillselect button.on small{color:#fff9}
.filterbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px;align-items:center}
.filterbar .fl{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.filterbar select,.filterbar input{background:var(--bg);border:1px solid var(--border2);border-radius:999px;padding:9px 14px;font-size:13.5px;outline:none;min-height:40px}
.filterbar select:focus,.filterbar input:focus{border-color:var(--primary)}
.tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--border);margin-bottom:20px;overflow-x:auto}
.tabs button{padding:12px 16px;font-size:14.5px;font-weight:600;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;min-height:44px}
.tabs button:hover{color:var(--ink)}
.tabs button.on{color:var(--primary);border-color:var(--primary)}

/* ── Tablas ── */
.tblwrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:var(--r);background:var(--bg)}
.tbl{width:100%;border-collapse:collapse;min-width:760px}
.tbl th{text-align:left;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:12px 14px;border-bottom:1px solid var(--border);white-space:nowrap;background:var(--bg2)}
.tbl th.ord{cursor:pointer}
.tbl th.ord:hover{color:var(--primary)}
.tbl td{padding:12px 14px;border-bottom:1px solid var(--bg2);font-size:14px;vertical-align:middle}
.tbl tr:last-child td{border-bottom:none}
.tbl tbody tr{transition:.12s;cursor:pointer}
.tbl tbody tr:hover{background:var(--bg2)}
.tbl td select{border:1px solid transparent;background:transparent;border-radius:8px;padding:5px 6px;font-size:13px;min-height:34px}
.tbl td select:hover{border-color:var(--border2);background:var(--bg)}

/* ── Tablero (kanban) ── */
.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:250px;gap:12px;overflow-x:auto;padding-bottom:18px;align-items:start;-webkit-overflow-scrolling:touch}
.kcol{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:10px;min-height:150px}
.kcol.drop{border-color:var(--primary);background:var(--primary-soft)}
.kcol .kh{display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--ink2);padding:4px 6px 10px}
.kcol .kh .n{background:var(--bg3);border-radius:999px;padding:1px 8px;font-size:11px;color:var(--muted)}
.kcard{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:12px;margin-bottom:9px;cursor:grab;box-shadow:var(--shadow);border-left:4px solid var(--border2)}
.kcard:hover{border-color:var(--primary)}
.kcard.drag{opacity:.4}
.kcard .kt{font-weight:700;font-size:14px;line-height:1.35;margin-bottom:6px}
.kcard .km{font-size:12px;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.p-valor{border-left-color:var(--green)}
.p-venta{border-left-color:var(--red)}
.p-posicionamiento{border-left-color:var(--primary)}

/* ── Calendario ── */
.calhead{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.calhead .mes{font-family:var(--display);font-size:22px;text-transform:capitalize}
.calgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}
.calgrid .dow{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);text-align:center;padding:4px 0}
.cday{background:var(--bg);border:1px solid var(--border);border-radius:12px;min-height:104px;padding:7px 6px;font-size:12px}
.cday.fuera{background:var(--bg2);opacity:.55}
.cday.hoy{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}
.cday.drop{border-color:var(--primary);background:var(--primary-soft)}
.cday .dnum{font-weight:700;color:var(--muted);margin-bottom:5px;font-size:12px}
.cchip{display:block;width:100%;text-align:left;background:var(--bg2);border-left:3px solid var(--border2);border-radius:6px;padding:4px 6px;margin-bottom:4px;font-size:11.5px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:grab}
.cchip:hover{background:var(--bg3)}

/* ── Ficha (modal partido) ── */
.overlay{position:fixed;inset:0;background:rgba(31,35,40,.5);backdrop-filter:blur(3px);z-index:100;display:none;align-items:flex-start;justify-content:center;padding:30px 16px;overflow-y:auto}
.overlay.on{display:flex}
.modal{background:var(--bg);border-radius:20px;width:100%;max-width:1020px;box-shadow:var(--shadow-lg);animation:pop .18s;margin-bottom:40px;overflow:hidden}
.modal.estrecho{max-width:520px}
@keyframes pop{from{opacity:0;transform:scale(.98)}to{opacity:1;transform:none}}
.mtop{display:flex;align-items:center;gap:10px;padding:16px 22px;border-bottom:1px solid var(--border);background:var(--bg2);position:sticky;top:0;z-index:5}
.mtop .mtitle{font-family:var(--display);font-size:19px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msplit{display:grid;grid-template-columns:1fr 300px}
.mleft{padding:22px;min-width:0}
.mright{padding:20px;background:var(--bg2);border-left:1px solid var(--border)}
.mbody{padding:22px}
.mprops{display:flex;flex-direction:column;gap:14px}
.mprops .pr label{display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.mprops .pr select,.mprops .pr input{width:100%;background:var(--bg);border:1px solid var(--border2);border-radius:9px;padding:10px 12px;font-size:13.5px;outline:none;min-height:42px}
.mprops .pr select:focus,.mprops .pr input:focus{border-color:var(--primary)}
.ed{border:1px solid transparent;border-radius:10px;padding:10px 12px;margin:0 -12px 4px;line-height:1.65;white-space:pre-wrap;outline:none;min-height:24px;transition:.12s;overflow-wrap:anywhere}
.ed:hover{border-color:var(--border)}
.ed:focus{border-color:var(--primary);background:var(--bg);box-shadow:0 0 0 3px var(--primary-soft)}
.ed:empty:before{content:attr(data-ph);color:var(--muted)}
.ed.gancho{font-family:var(--display);font-size:23px;line-height:1.35;font-weight:400}
.ed.guion{font-size:15.5px;min-height:120px}
.edlbl{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:18px 0 5px}
.edlbl:first-child{margin-top:0}
.avisos{background:var(--amber-soft);border:1px solid #e8d29a;border-radius:10px;padding:11px 13px;font-size:13px;color:#7a5410;margin:2px 0 6px}
.avisos b{color:#5e4009}
.avisos .av{margin-top:4px}
.mal{background:#fbe0dc;border-bottom:2px wavy var(--red);border-radius:3px;padding:0 1px}
.contra{background:var(--amber-soft);border-left:4px solid var(--amber)}

/* ── Teleprompter ── */
.prompter{position:fixed;inset:0;background:#11151b;color:#f4efe4;z-index:500;display:none;flex-direction:column}
.prompter.on{display:flex}
.pmtop{display:flex;align-items:center;gap:10px;padding:12px 18px;border-bottom:1px solid #262c36;flex-wrap:wrap}
.pmtop .pmt{flex:1;min-width:120px;font-size:13px;color:#9aa3b0}
.pmtop button{border:1px solid #39424f;border-radius:999px;padding:10px 16px;color:#f4efe4;font-size:14px;font-weight:600;min-height:44px}
.pmtop button:hover{border-color:var(--primary);color:#bcd8f4}
.pmtop .listo{background:var(--green);border-color:var(--green);color:#fff}
.pmtop input[type=range]{width:130px;accent-color:var(--primary)}
.pmgancho{padding:26px 6vw 12px;font-family:var(--display);font-size:clamp(28px,5.4vw,54px);line-height:1.2;color:#fff}
.pmcontra{margin:0 6vw 10px;background:#3a2f12;border-left:5px solid #e0b73f;color:#f6dd9b;padding:12px 16px;border-radius:10px;font-size:clamp(15px,2vw,20px);line-height:1.5}
.pmscroll{flex:1;overflow-y:auto;padding:10px 6vw 60vh;font-size:clamp(19px,3vw,34px);line-height:1.7;white-space:pre-wrap;color:#e8e2d5}

/* ── Cerebro ── */
.arbol{list-style:none;margin:0;padding:0}
.arbol ul{list-style:none;margin:0;padding-left:18px;border-left:1px dashed var(--border2)}
.nodo{display:flex;align-items:flex-start;gap:8px;padding:8px 6px;border-radius:9px}
.nodo:hover{background:var(--bg2)}
.nodo .tw{width:22px;flex:none;color:var(--muted);text-align:center;min-height:24px}
.nodo .nt{font-weight:600;font-size:14.5px;cursor:pointer;flex:1;min-width:0}
.nodo .nc{font-size:13px;color:var(--muted);line-height:1.5;margin-top:2px}
.nodo .acc{opacity:0;display:flex;gap:4px}
.nodo:hover .acc{opacity:1}
.salud{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:6px 14px;font-weight:700;font-size:13.5px}
.salud.aldia{background:var(--green-soft);color:#3f6c3b}
.salud.deriva{background:var(--amber-soft);color:#8a5f11}
.salud.critico{background:var(--red-soft);color:#9c342a}
.mini{font-size:12.5px;color:var(--muted)}
.lista{display:flex;flex-direction:column;gap:9px}
.item{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:13px 15px;cursor:pointer;transition:.12s}
.item:hover{border-color:var(--primary)}
.item .it{font-weight:700;font-size:14.5px}
.item .im{font-size:12.5px;color:var(--muted);margin-top:3px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.mdprev{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:16px 18px;line-height:1.65;max-height:60vh;overflow:auto}
.mdh2{font-family:var(--display);font-size:19px;margin:16px 0 8px}
.mdh3{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin:14px 0 6px}
.mdp{margin:0 0 9px;line-height:1.7}
.mdlist{margin:0 0 10px 20px;line-height:1.7}
.mdquote{border-left:3px solid var(--tierra);padding:3px 0 3px 13px;color:var(--ink2);margin:0 0 10px}
.mdhr{border:none;border-top:1px solid var(--border);margin:16px 0}
.mdgap{height:5px}
.mdp code,.mdlist code{background:var(--bg3);padding:1px 6px;border-radius:5px;font-size:.9em;font-family:ui-monospace,Menlo,monospace}
.editor{width:100%;min-height:44vh;border:1px solid var(--border2);border-radius:12px;padding:14px;font-family:ui-monospace,Menlo,monospace;font-size:13.5px;line-height:1.65;outline:none;resize:vertical;background:var(--bg)}
.editor:focus{border-color:var(--primary)}

/* ── Buscador ── */
.searchov{position:fixed;inset:0;background:rgba(31,35,40,.45);backdrop-filter:blur(3px);z-index:250;display:none;align-items:flex-start;justify-content:center;padding:10vh 16px}
.searchov.on{display:flex}
.searchbox{background:var(--bg);border-radius:18px;box-shadow:var(--shadow-lg);width:100%;max-width:640px;overflow:hidden}
.searchbox input{width:100%;border:none;outline:none;padding:18px 22px;font-size:17px;background:transparent;border-bottom:1px solid var(--border)}
.sresults{max-height:56vh;overflow-y:auto;padding:8px}
.sres{display:flex;gap:10px;align-items:center;padding:11px 13px;border-radius:10px;cursor:pointer;min-height:44px}
.sres:hover,.sres.sel{background:var(--primary-soft)}
.sres .sk{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;flex:none}

/* ── Toast ── */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--water);color:#fff;border-radius:999px;padding:13px 24px;font-size:14px;font-weight:600;z-index:600;opacity:0;transition:.25s;pointer-events:none;box-shadow:var(--shadow-lg);max-width:92vw;text-align:center}
.toast.on{opacity:1}


/* ═══ Leer: la cara humana del cerebro ═══
   Índice a la izquierda, lector a la derecha. Tipografía de libro. */
.lector{display:grid;grid-template-columns:300px minmax(0,1fr);gap:20px;align-items:start}
.lrvelo{display:none}

/* ── el índice ── */
.lrindice{background:var(--bg);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow);
  position:sticky;top:80px;max-height:calc(100vh - 110px);display:flex;flex-direction:column;overflow:hidden}
.lrbuscar{display:flex;gap:6px;padding:11px;border-bottom:1px solid var(--border);flex:none}
.lrbuscar input{flex:1;min-width:0;background:var(--bg2);border:1px solid var(--border2);border-radius:999px;
  padding:9px 15px;font-size:13.5px;outline:none}
.lrbuscar input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.lrcerrarind{display:none}
.lrarbol{overflow-y:auto;padding:8px 6px 18px;flex:1}
.lrnada{color:var(--muted);font-size:12.5px;padding:10px 12px}
.lrgrupo{margin-bottom:2px}
.lrcab{display:flex;align-items:center;gap:7px;width:100%;text-align:left;padding:9px 8px;border-radius:10px;
  font-size:13.5px;font-weight:700;color:var(--ink2);min-height:40px}
.lrcab:hover{background:var(--bg2)}
.lrcab.sobre{background:var(--primary-soft);box-shadow:inset 0 0 0 1.5px var(--primary)}
.lrcab .lrtw{width:12px;color:var(--muted);flex:none}
.lrcab .lrgic{flex:none}
.lrcab .lrgtit{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lrcab .lrgn{font-size:11px;color:var(--muted);background:var(--bg3);border-radius:999px;padding:2px 8px;flex:none}
.lrgrupo.on>.lrcab{color:var(--ink)}
.lrgcuerpo{padding:2px 0 8px}
.lrsubcab{font-size:10.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);
  padding:10px 10px 4px}
.lrfila{display:flex;align-items:center;gap:7px;padding:7px 9px;border-radius:9px;cursor:pointer;
  font-size:13px;line-height:1.35;color:var(--ink2);min-height:34px}
.lrfila:hover{background:var(--bg2);color:var(--ink)}
.lrfila.sel{background:var(--primary-soft);color:#2f5f96;font-weight:700}
.lrfila.arrastrando{opacity:.4}
.lrfila.sobre{box-shadow:inset 0 0 0 1.5px var(--primary);background:var(--primary-soft)}
.lrfila .lrico{flex:none;font-size:12px;width:15px;text-align:center}
.lrfila .lrfx{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lrfila.esnodo{font-weight:600;color:var(--ink)}
.lrbolita{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--border2);vertical-align:middle}
.lrfila.sel .lrbolita{background:var(--primary)}
.lrpto{width:7px;height:7px;border-radius:50%;flex:none}
.lrpto.rojo{background:var(--red)}
.lrpto.ambar{background:var(--amber)}

/* ── el lector ── */
.lrlector{background:var(--bg);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow);
  display:flex;flex-direction:column;min-height:60vh}
.lrtop{display:flex;align-items:center;gap:10px;padding:12px 18px;border-bottom:1px solid var(--border);
  background:var(--bg2);flex-wrap:wrap;border-radius:var(--r) var(--r) 0 0;position:sticky;top:69px;z-index:6}
.lrbtnind{display:none}
.lrrepaso{font-size:12.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--tierra);
  background:var(--tierra-soft);border-radius:999px;padding:6px 14px}
.lrpapel{padding:34px 40px 30px;flex:1}
.lrtit{font-family:var(--display);font-size:34px;font-weight:400;line-height:1.2;letter-spacing:-.01em;max-width:26ch}
.lrtit2{font-family:var(--display);font-size:25px;font-weight:400;margin:6px 0 4px}
.lrmetas{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px}
.lrmeta{font-size:12.5px;color:var(--muted);background:var(--bg2);border-radius:999px;padding:4px 12px}
.lrmeta.alerta{background:var(--red-soft);color:#9c342a;font-weight:700}
.lrsello{margin-top:14px;background:var(--green-soft);border:1px solid #c6ddc2;border-radius:12px;
  padding:10px 14px;font-size:13px;color:#3f6c3b}
.lrsub{font-family:var(--display);font-size:13px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  color:var(--tierra);margin:30px 0 10px}
.lrpie{margin-top:34px;padding-top:14px;border-top:1px solid var(--border);font-size:11.5px;color:var(--muted);
  font-family:ui-monospace,Menlo,monospace}
.lrvacio{color:var(--muted);font-style:italic}
/* la tipografía de leer: serif, 18px, 72ch, aire */
.lrtexto{font-family:var(--display);font-size:18px;line-height:1.6;color:var(--ink);max-width:72ch;margin-top:20px}
.lrtexto .mdp{margin:0 0 14px;line-height:1.6}
.lrtexto .mdh1{font-size:27px;line-height:1.25;margin:30px 0 12px}
.lrtexto .mdh2{font-family:var(--display);font-size:22px;margin:26px 0 10px}
.lrtexto .mdh3{font-family:var(--font);font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
  color:var(--tierra);margin:24px 0 8px}
.lrtexto .mdlist{margin:0 0 14px 24px;line-height:1.6}
.lrtexto .mdlist li{margin-bottom:5px}
.lrtexto .mdquote{border-left:3px solid var(--tierra);background:var(--tierra-soft);border-radius:0 10px 10px 0;
  padding:10px 16px;margin:0 0 14px;font-size:16.5px;color:var(--ink2)}
.lrtexto .mdgap{height:2px}
.lrtexto code{font-family:ui-monospace,Menlo,monospace;font-size:.86em}
.mdh1{font-family:var(--display);font-size:24px;margin:18px 0 10px}
.mdtblwrap{overflow-x:auto;margin:0 0 16px;-webkit-overflow-scrolling:touch}
.mdtbl{border-collapse:collapse;width:100%;font-family:var(--font);font-size:14px}
.mdtbl th,.mdtbl td{border:1px solid var(--border);padding:9px 12px;text-align:left;vertical-align:top}
.mdtbl th{background:var(--bg2);font-weight:700;font-size:12.5px}
.lrdecidido{background:var(--green-soft);border:1px solid #c6ddc2;border-radius:var(--r);padding:18px 20px;margin-top:22px}
.lrdecidido b{font-family:var(--display);font-size:20px;font-weight:400}
.lrdecidido .lrsub{margin-top:0}
.lrpendiente{background:var(--amber-soft);border:1px solid #e8d3a4;border-radius:var(--r);padding:16px 18px;
  margin-top:22px;font-size:14px;color:#7d5c2e}
.lrnodecir{background:var(--red-soft);border:1px solid #eccec8;border-radius:var(--r);padding:16px 18px;
  margin-top:22px;font-size:15px;color:#9c342a}
.lrnodecir .lrsub{margin:0 0 6px;color:#9c342a}
.lrcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.lrcard{text-align:left;background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:14px 16px;
  display:flex;flex-direction:column;gap:5px;transition:.12s}
.lrcard:hover{border-color:var(--primary);background:var(--bg)}
.lrcard b{font-family:var(--display);font-size:16px;font-weight:400;line-height:1.3}
.lrcard .lrcx{font-size:12.5px;color:var(--muted);line-height:1.5}
.lrcard .lrcdoc{font-size:12px;color:var(--primary);font-weight:600}

/* ── editar dentro del lector ── */
.lredit{display:flex;flex-direction:column;gap:12px}
.lredittit{font-family:var(--display);font-size:26px;background:var(--bg);border:1px solid var(--border2);
  border-radius:12px;padding:12px 14px;outline:none;width:100%}
.lredittit:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.lrpestanas{display:none;gap:6px}
.lrpestanas button{flex:1;border:1px solid var(--border2);border-radius:999px;padding:10px;font-size:13.5px;
  font-weight:700;color:var(--muted);min-height:42px}
.lrpestanas button.on{background:var(--primary);border-color:var(--primary);color:#fff}
.lreditsplit{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
.lreditta{min-height:52vh;border:1px solid var(--border2);border-radius:12px;padding:14px;background:var(--bg);
  font-family:ui-monospace,Menlo,monospace;font-size:13.5px;line-height:1.7;outline:none;resize:vertical;width:100%}
.lreditta:focus{border-color:var(--primary)}
.lreditprev{margin-top:0;border:1px dashed var(--border2);border-radius:12px;padding:16px 18px;background:var(--bg2);
  max-height:62vh;overflow:auto;max-width:none}

/* ── la barra de acciones ── */
.lracciones{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:14px 18px;
  border-top:1px solid var(--border);background:var(--bg2);position:sticky;bottom:0;z-index:5;
  border-radius:0 0 var(--r) var(--r);box-shadow:0 -6px 18px rgba(60,45,25,.07)}
.lracciones .lrhueco{flex:1;min-width:8px}
.lropciones{display:flex;flex-direction:column;gap:10px}
.lropcion{text-align:left;border:1.5px solid var(--border2);border-radius:14px;padding:15px 18px;
  display:flex;flex-direction:column;gap:3px;transition:.12s}
.lropcion:hover{border-color:var(--primary)}
.lropcion.on{border-color:var(--primary);background:var(--primary-soft)}
.lropcion b{font-family:var(--display);font-size:18px;font-weight:400}
.lropcion span{font-size:13px;color:var(--muted)}

/* ── Cómo se graba (piezas de contenido) ── */
.prodops{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.prodop{text-align:left;border:1.5px solid var(--border2);border-radius:14px;padding:14px 16px;background:var(--bg);
  display:flex;flex-direction:column;gap:3px;transition:.12s}
.prodop:hover{border-color:var(--primary)}
.prodop.on{border-color:var(--primary);background:var(--primary-soft)}
.prodop .prodic{font-size:22px}
.prodop b{font-family:var(--display);font-size:16px;font-weight:400;line-height:1.25}
.prodmin{display:flex;align-items:center;gap:10px;margin-top:10px}
.prodmin label{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.prodmin input{width:100px;border:1px solid var(--border2);border-radius:9px;padding:9px 12px;min-height:42px;background:var(--bg)}
.cchip .cprod{margin-right:3px;font-size:9px}
.grabsem{background:var(--water-soft);border-radius:12px;padding:11px 15px;margin-bottom:14px;
  display:flex;flex-direction:column;gap:2px}
.grabsem b{font-size:14px;color:var(--water)}
.grabsem span{font-size:12.5px;color:var(--ink2)}
.grabcab{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--ink2);margin:16px 0 8px}
.grabcab .mini{margin-left:auto}

/* ── Móvil ── */
@media(max-width:900px){
  .msplit{grid-template-columns:1fr}
  .mright{border-left:none;border-top:1px solid var(--border)}
}
@media(max-width:760px){
  .shell{grid-template-columns:1fr}
  .side{position:fixed;left:0;top:0;width:84vw;max-width:300px;transform:translateX(-102%);transition:transform .22s;box-shadow:var(--shadow-lg)}
  .side.abierto{transform:none}
  .side .cerrarmenu{display:inline-flex}
  .burger{display:inline-flex}
  .view{padding:18px 14px 100px}
  .top{padding:10px 12px;gap:8px}
  .searchtrigger{min-width:0;padding:10px 12px}
  .searchtrigger span,.searchtrigger kbd{display:none}
  .searchtrigger:before{content:'🔍'}
  .top .btn-p{padding:12px 14px;font-size:0;gap:0}
  .top .btn-p:before{content:'＋ Pieza';font-size:14px;white-space:nowrap}
  .crumb span{display:none}
  .crumb b{font-size:16px}
  .h1{font-size:24px}
  .overlay{padding:0}
  .modal{border-radius:0;min-height:100vh;margin-bottom:0}
  .calgrid{gap:4px}
  .cday{min-height:72px;padding:4px 3px}
  .cchip{font-size:10px;padding:3px 4px}
  .kanban{grid-auto-columns:80vw}
  /* Leer: el índice pasa a ser un panel que se desliza */
  .lector{grid-template-columns:1fr;gap:0}
  .lrindice{position:fixed;left:0;top:0;bottom:0;width:88vw;max-width:340px;z-index:120;border-radius:0;
    max-height:none;transform:translateX(-102%);transition:transform .22s;box-shadow:var(--shadow-lg)}
  .lector.indiceon .lrindice{transform:none}
  .lrvelo{display:block;position:fixed;inset:0;background:rgba(30,24,14,.42);z-index:110;opacity:0;
    pointer-events:none;transition:.2s}
  .lector.indiceon .lrvelo{opacity:1;pointer-events:auto}
  .lrcerrarind{display:inline-flex}
  .lrbtnind{display:inline-flex}
  .lrlector{border-radius:12px;min-height:auto;padding-bottom:66px;overflow:visible}
  .lrpapel{padding:22px 18px 24px}
  .lrtit{font-size:26px}
  .lrtexto{font-size:17px}
  .lracciones{position:fixed;left:0;right:0;bottom:0;border-top:1px solid var(--border2);
    padding:10px 12px calc(10px + env(safe-area-inset-bottom));overflow-x:auto;flex-wrap:nowrap;z-index:65;
    box-shadow:0 -6px 20px rgba(60,45,25,.10)}
  .lracciones .btn{flex:none}
  .lracciones .lrhueco{display:none}
  .lrpestanas{display:flex}
  .lreditsplit{grid-template-columns:1fr}
  .lreditsplit.ver-escribir .lreditprev{display:none}
  .lreditsplit.ver-previa .lreditta{display:none}
  .prodops{grid-template-columns:1fr}
}

/* ═══ Módulo Web (Mi web · Productos · Personas y cobros) ═══ */
#v-web{padding:0}
.webframe{width:100%;height:calc(100vh - 62px);border:0;display:block;background:#f5f0e6}
.prtipo{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;cursor:pointer;min-height:120px}
.prtipo:hover{border-color:var(--primary)}
.prtipo-ico{font-size:28px}
.prtipo b{font-size:16px}
.prform{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.prform .field.ancho,.prform .mini.ancho{grid-column:1/-1}
.prform .field input[type=time],.prform .field input[type=search],.prform .field input[type=file]{width:100%;background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);padding:12px 14px;min-height:44px}
.leccion{border:1px solid var(--border);border-radius:14px;padding:14px 16px;margin-bottom:12px;background:var(--bg2)}
.leccion-cab{display:flex;align-items:center;gap:6px;margin-bottom:10px}
.leccion-cab b{font-size:14px;color:var(--primary)}
.leccion .prform .field{margin-bottom:10px}
.prfoto{width:100%;aspect-ratio:4/3;border-radius:12px;background:var(--bg3);display:grid;place-items:center;overflow:hidden;font-size:32px}
.prfoto img{width:100%;height:100%;object-fit:cover}
.lintbox:empty{display:none}
.lintbox{margin:-8px 0 12px;font-size:12.5px}
.lintav{display:inline-block;background:var(--amber-soft);color:#8a5f11;border-radius:8px;padding:3px 8px;margin:2px 4px 2px 0}
.correo{cursor:default}
.correo.pendiente{border-color:var(--amber)}
.correo-cuerpo{white-space:pre-wrap;font:13px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--bg2);padding:12px;border-radius:10px;margin-top:6px;max-height:280px;overflow:auto}
.wbhoy{margin:14px 0 18px}
code{font:13px ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--bg3);padding:2px 6px;border-radius:6px;letter-spacing:.08em}
@media (max-width:720px){.prform{grid-template-columns:1fr}.webframe{height:calc(100vh - 56px)}}

/* ═══════════════════════════════════════════════════════
   REVISIÓN — la lectura de Ale, a pantalla completa.
   Una cosa por pantalla, texto grande, dos flechas y
   cuatro botones. Pensado para el móvil, en la mano.
   ═══════════════════════════════════════════════════════ */
.revcaja{background:var(--white);border:1px solid var(--border);border-radius:var(--r);padding:22px;box-shadow:var(--shadow);margin-top:18px}
.revbarra{height:10px;border-radius:999px;background:var(--bg3);overflow:hidden}
.revbarra i{display:block;height:100%;background:var(--primary);border-radius:999px;transition:width .3s}
.revcuenta{margin-top:12px;color:var(--ink2);font-size:15px}
.revcuenta b{font-size:22px;font-family:var(--display);color:var(--ink)}
.revbotones{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.btn-grande{padding:16px 26px;font-size:16.5px}
.revnum{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.revnum b{font-family:var(--display);font-size:32px;font-weight:400;line-height:1}
.revnum span{color:var(--muted);font-size:13.5px}
.revindice{display:flex;flex-wrap:wrap;gap:6px}
.revchip{width:34px;height:34px;border-radius:9px;border:1px solid var(--border2);background:var(--white);
  color:var(--muted);font-size:12.5px;display:flex;align-items:center;justify-content:center}
.revchip.validada{background:var(--green-soft);border-color:var(--green);color:var(--ink)}
.revchip.cambiada{background:var(--primary-soft);border-color:var(--primary);color:var(--ink)}
.revchip.rechazada{background:var(--red-soft);border-color:var(--red);color:var(--ink)}
.revchip.pregunta{background:var(--amber-soft);border-color:var(--amber);color:var(--ink)}

.rev{position:fixed;inset:0;background:var(--bg);z-index:600;display:none;flex-direction:column}
.rev.on{display:flex}
.revtop{display:flex;align-items:center;gap:14px;padding:12px 18px;border-bottom:1px solid var(--border);background:var(--white)}
.revprog{flex:1;display:flex;align-items:center;gap:12px}
.revprog .revbarra{flex:1;height:8px}
.revprog span{color:var(--muted);font-size:13.5px;white-space:nowrap}
.revpapel{flex:1;overflow-y:auto;padding:30px 22px 40px;display:flex;flex-direction:column;align-items:center}
.revpapel>*{width:100%;max-width:680px}
.revtipo{color:var(--muted);font-size:13.5px;letter-spacing:.02em;margin-bottom:8px}
.revtit{font-family:var(--display);font-size:30px;font-weight:400;line-height:1.2;margin-bottom:14px}
.revsello{display:inline-block;background:var(--bg3);border-radius:999px;padding:6px 14px;font-size:13.5px;color:var(--ink2);margin-bottom:14px}
.revtexto{font-family:var(--display);font-size:19px;line-height:1.7;color:var(--ink)}
.revtexto .mdp{margin:0 0 14px}
.revvacio{color:var(--muted);font-style:italic}
.revnodecir{margin-top:20px;background:var(--red-soft);border-radius:var(--r-sm);padding:14px 16px;font-size:15px}
.revops{margin-top:26px;display:flex;flex-direction:column;gap:10px}
.revopstit{font-family:var(--display);font-size:19px;margin-bottom:4px}
.revop{text-align:left;background:var(--white);border:1px solid var(--border2);border-radius:var(--r-sm);
  padding:16px 18px;font-size:16px;line-height:1.45;box-shadow:var(--shadow)}
.revop:hover{border-color:var(--primary);background:var(--primary-soft)}
.revop b{font-weight:600}
.revopno{color:var(--muted);font-size:15px;box-shadow:none}
.revedit{display:flex;flex-direction:column;gap:12px;height:100%}
.revedittit{border:1px solid var(--border2);border-radius:var(--r-sm);padding:14px 16px;
  font-family:var(--display);font-size:22px;background:var(--white)}
.reveditta{flex:1;min-height:46vh;border:1px solid var(--border2);border-radius:var(--r-sm);padding:16px;
  font-family:var(--display);font-size:18px;line-height:1.65;background:var(--white);resize:vertical}
.revayuda{color:var(--muted);font-size:13.5px}
/* El documento final, editable a toques: cada bloque y cada celda se dejan tocar. */
.revvivo{background:var(--white);border:1px solid var(--border2);border-radius:var(--r-sm);padding:18px 18px 22px;overflow-y:auto}
.revvivo [data-l]{cursor:text;border-radius:6px;transition:background .12s,box-shadow .12s}
.revvivo [data-l]:hover{background:var(--primary-soft)}
.revvivo [data-l].editando{background:var(--white);box-shadow:0 0 0 2px var(--primary);outline:none;
  font-family:var(--font);font-size:16px;white-space:pre-wrap}
.revvivo td[data-l],.revvivo th[data-l]{position:relative}
.revvivo td[data-l].editando,.revvivo th[data-l].editando{box-shadow:inset 0 0 0 2px var(--primary);font-size:14px}
.revvivo .mdtbl td,.revvivo .mdtbl th{padding:8px 10px}
.revayuda .linkbtn{font-size:13.5px}
.revpie{display:flex;flex-direction:column;gap:10px;padding:12px 16px 14px;border-top:1px solid var(--border);
  background:var(--white);box-shadow:0 -6px 20px rgba(60,45,25,.06)}
.revacc{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.revnav{display:flex;gap:10px;justify-content:space-between}
.revflecha{flex:1;max-width:220px;font-size:15px}
.revfin{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;padding:40px 24px}
.revfinideo{font-family:var(--display);font-size:52px;color:var(--primary)}
.revfin h1{font-family:var(--display);font-size:30px;font-weight:400}
.revfin p{color:var(--ink2);max-width:46ch}
@media(max-width:760px){
  .revpapel{padding:22px 16px 30px}
  .revtit{font-size:25px}
  .revtexto{font-size:18px}
  .revacc{justify-content:flex-start}
  .revacc .btn{flex:1 1 46%;padding:14px 8px;font-size:13.5px}
  .revacc .btn-grande{flex:1 1 100%;font-size:16.5px}
  .revflecha{max-width:none;font-size:14.5px}
}
.revleyenda{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:12px;color:var(--muted);font-size:13px}
.revleyenda span{display:inline-flex;align-items:center;gap:6px}
.revpunto{width:12px;height:12px;border-radius:4px;border:1px solid var(--border2);background:var(--white);display:inline-block}
.revpunto.validada{background:var(--green-soft);border-color:var(--green)}
.revpunto.cambiada{background:var(--primary-soft);border-color:var(--primary)}
.revpunto.rechazada{background:var(--red-soft);border-color:var(--red)}
.revpunto.pregunta{background:var(--amber-soft);border-color:var(--amber)}

/* ═══ Rodaje: orden de grabación, sitio y notas ═══ */
/* El número del tablero se escribe sin abrir la pieza: es como se ordena una sesión de grabación. */
.kcard .ktop{display:flex;align-items:flex-start;gap:8px}
.kcard .ktop .kt{flex:1;min-width:0}
.kord{width:44px;flex:none;text-align:center;font-weight:700;font-size:14px;padding:3px 4px;
 border:1px solid var(--border2);border-radius:8px;background:var(--bg2);color:var(--ink);cursor:text}
.kord:hover{border-color:var(--primary)}
.kord:focus{outline:2px solid var(--primary);outline-offset:1px}
.kord::-webkit-outer-spin-button,.kord::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.kord{-moz-appearance:textfield}
.ordnum{display:inline-block;min-width:26px;text-align:center;font-weight:700;
 border:1px solid var(--border2);border-radius:8px;padding:2px 6px;background:var(--bg2)}
/* El bloc de notas de antes de grabar, encima de todo lo demás en la ficha. */
.notasbox{border:1px solid var(--border2);border-left:4px solid var(--primary);border-radius:12px;
 padding:12px 14px;margin-bottom:18px;background:var(--bg2)}
.notasbox .edlbl{margin-top:0}
/* El puntito del botón «Notas» cuando la pieza ya tiene notas escritas y el bloc está cerrado. */
.pip{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--primary);vertical-align:middle}
.btn.on{border-color:var(--primary);color:var(--primary)}

/* ═══ 22/09/2026 · LA FOTOTECA (app-fotos.js, prefijo ft) ═══ */
.h1row{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.ftdrop{border:2px dashed var(--border2);border-radius:var(--r);padding:16px 18px;color:var(--muted);font-size:13.5px;margin-bottom:14px;transition:.15s;background:var(--bg)}
.ftdrop b{color:var(--ink)}
.ftdrop.sobre{border-color:var(--primary);background:var(--primary-soft);color:var(--ink)}
.ftdrop.grande{display:flex;flex-direction:column;align-items:center;gap:6px;padding:34px 18px;text-align:center;cursor:pointer;margin:6px 0 0}
.ftdrop.grande small{max-width:520px;line-height:1.5}
.ftbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.ftbar input[type=search],.ftbar select,.ftselbar input[type=text],.ftselbar select{background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);padding:10px 13px;min-height:42px;outline:none;font-size:14px}
.ftbar input[type=search]{flex:1;min-width:200px}
.ftbar input:focus,.ftselbar input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.ftchips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.ftchips .chip{border:1px solid var(--border);background:var(--bg);border-radius:999px;padding:6px 12px;font-size:12.5px;font-weight:600;color:var(--ink2);transition:.12s}
.ftchips .chip small{color:var(--muted);font-weight:500;margin-left:2px}
.ftchips .chip:hover{border-color:var(--primary);color:var(--primary)}
.ftchips .chip.on{background:var(--primary);border-color:var(--primary);color:#fff}
.ftchips .chip.on small{color:#fff9}
.ftselbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--primary-soft);border:1px solid var(--primary);border-radius:var(--r);padding:10px 14px;margin-bottom:14px;font-size:13.5px}
.ftgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px}
.ftgrid.chica{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;max-height:62vh;overflow:auto;padding:2px}
.ftcard{margin:0;background:var(--bg);border:1px solid var(--border);border-radius:14px;overflow:hidden;cursor:pointer;transition:.12s;position:relative}
.ftcard:hover{border-color:var(--primary);box-shadow:var(--shadow)}
.ftcard.sel{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.ftimg{position:relative;aspect-ratio:1;background:var(--bg3)}
.ftimg img{width:100%;height:100%;object-fit:cover;display:block}
.ftuso{position:absolute;left:8px;bottom:8px;background:rgba(31,35,40,.72);color:#fff;font-size:11px;font-weight:700;border-radius:999px;padding:2px 8px;min-width:22px;text-align:center}
.ftuso:empty{display:none}
.ftcheck{position:absolute;top:8px;right:8px;width:24px;height:24px;border-radius:50%;background:#fff;border:1px solid var(--border2);color:var(--primary);font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;opacity:0;transition:.12s}
.ftcard:hover .ftcheck,.ftcard.sel .ftcheck{opacity:1}
.ftcard.sel .ftcheck{background:var(--primary);color:#fff;border-color:var(--primary)}
.ftcard figcaption{padding:8px 10px 10px;display:flex;flex-direction:column;gap:2px;min-width:0}
.ftcard figcaption b{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ftcard figcaption small{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ftgrande{display:block;border-radius:12px;overflow:hidden;background:var(--bg3)}
.ftgrande img{width:100%;max-height:60vh;object-fit:contain;display:block}
.ftcola{margin-bottom:14px}
.ftprog{height:8px;border-radius:999px;background:var(--bg3);overflow:hidden;margin-top:8px}
.ftprog i{display:block;height:100%;background:var(--primary);transition:width .3s}
#ftov{z-index:130}
@media (max-width:760px){.ftgrid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}}

/* ═══ 23/09/2026 · LA FOTOTECA REORGANIZADA: tipos, buscador, filtros, grupos y selector con vista previa ═══ */
.fttipos{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}
.fttipo{display:flex;align-items:center;gap:8px;background:var(--bg);border:1.5px solid var(--border);border-radius:14px;padding:10px 14px;text-align:left;min-height:50px;transition:.12s;font:inherit;color:var(--ink2)}
.fttipo .ic{font-size:20px}
.fttipo b{font-size:14px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fttipo small{margin-left:auto;background:var(--bg3);color:var(--muted);border-radius:999px;padding:2px 9px;font-size:12px;font-weight:700}
.fttipo:hover{border-color:var(--primary)}
.fttipo.on{border-color:var(--primary);background:var(--primary-soft)}
.fttipo.on small{background:var(--primary);color:#fff}
.ftfiltros{display:flex;gap:8px;flex-wrap:wrap;align-items:stretch;margin-bottom:10px}
.ftbuscar{flex:1 1 100%;position:relative;display:flex;align-items:center}
.ftbuscar .lupa{position:absolute;left:14px;font-size:16px;opacity:.7;pointer-events:none}
.ftbuscar input{width:100%;background:var(--bg);border:1.5px solid var(--border2);border-radius:14px;padding:13px 44px 13px 42px;min-height:48px;font-size:15px;outline:none}
.ftbuscar input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.ftbuscar .limpia{position:absolute;right:10px;width:28px;height:28px;border-radius:50%;background:var(--bg3);color:var(--ink2);font-size:13px;font-weight:700;display:grid;place-items:center}
.ftsel{display:flex;flex-direction:column;gap:3px;flex:1 1 140px;min-width:130px}
.ftsel span{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);padding-left:4px}
.ftsel select{width:100%;background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);padding:9px 10px;min-height:40px;font-size:13.5px;font:inherit;color:var(--ink)}
.ftactivos{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.ftactivos .chip{border:1px solid var(--primary);background:var(--primary);color:#fff;border-radius:999px;padding:5px 11px;font-size:12.5px;font-weight:600}
.ftactivos .chip i{font-style:normal;opacity:.75;margin-left:2px}
.ftayuda{margin-bottom:10px}
.ftchips .chip.mas{border-style:dashed;color:var(--muted)}
.ftgtipo{display:flex;align-items:center;gap:10px;margin:22px 0 8px;padding-bottom:8px;border-bottom:2px solid var(--border)}
.ftgtipo .ic{font-size:22px}
.ftgtipo b{font-family:var(--display);font-size:20px}
.ftgtipo small{color:var(--muted);font-size:12.5px}
.ftgtipo .linkbtn{margin-left:auto}
.ftgrupo{margin-bottom:16px}
.ftgcab{display:flex;align-items:center;gap:8px;margin:10px 0 8px}
.ftgcab b{font-size:14px}
.ftgcab small{background:var(--bg3);color:var(--muted);border-radius:999px;padding:1px 8px;font-size:11.5px;font-weight:700}
.ftforma{position:absolute;right:8px;bottom:8px;background:rgba(255,255,255,.85);color:var(--ink2);font-size:11px;border-radius:6px;padding:1px 5px;line-height:1.4}
.ftforma:empty{display:none}
#v-fotos.ftsobre{outline:3px dashed var(--primary);outline-offset:-6px;border-radius:var(--r)}
.fttiporadios{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.fttr{display:flex;flex-direction:column;gap:2px;border:1.5px solid var(--border);border-radius:12px;padding:10px 12px;cursor:pointer;transition:.12s;background:var(--bg)}
.fttr input{display:none}
.fttr .ic{font-size:20px}
.fttr b{font-size:13.5px}
.fttr small{font-size:11.5px;color:var(--muted);line-height:1.35}
.fttr:hover{border-color:var(--primary)}
.fttr.on{border-color:var(--primary);background:var(--primary-soft)}
.mprops .fttiporadios{grid-template-columns:1fr;gap:6px;margin-bottom:0}
.mprops .fttr{flex-direction:row;align-items:center;gap:8px;padding:7px 10px}
.mprops .fttr small{display:none}
.mprops .fttr b{text-transform:none;letter-spacing:0;font-size:13px}
/* el selector */
.ftmodal{max-width:1180px}
.ftsel-cuerpo{display:grid;grid-template-columns:1fr 300px;gap:0}
.ftsel-izq{padding:16px 18px 18px;min-width:0}
.ftsel-izq .fttipos{grid-template-columns:repeat(4,1fr)}
.ftsel-izq .fttipo{padding:8px 10px;min-height:42px}
.ftsel-izq .fttipo .ic{font-size:16px}
.ftsel-izq .fttipo b{font-size:12.5px}
.ftsel-izq .ftbuscar input{min-height:44px;padding-top:10px;padding-bottom:10px}
.ftsel-izq .ftgrid.chica{max-height:52vh}
.ftsel-der{background:var(--bg2);border-left:1px solid var(--border);padding:18px;position:sticky;top:0;align-self:start}
.ftprev-marco{width:100%;margin:0 auto;border-radius:12px;overflow:hidden;background:var(--bg3);box-shadow:var(--shadow)}
.ftprev-marco img{width:100%;height:100%;object-fit:cover;display:block}
.ftprev-marco.contain{background:#fff;padding:8px;box-sizing:border-box}
.ftprev-marco.contain img{object-fit:contain}
.ftprev-vacia{border:2px dashed var(--border2);border-radius:12px;padding:40px 14px;text-align:center;display:flex;flex-direction:column;gap:8px;align-items:center}
.ftprev-nombre{margin:10px 0 12px;display:flex;flex-direction:column;gap:2px;min-width:0}
.ftprev-nombre b{font-size:14px;overflow:hidden;text-overflow:ellipsis}
.ftprev-nombre small{color:var(--muted);font-size:12px}
.ftsel-subir{width:100%;margin-top:14px;text-align:center;display:block}
.ftsug{background:var(--amber-soft);border-radius:10px;padding:8px 12px;margin-bottom:10px;color:#7a5410}
.ftsug b{color:#5a3d08}
@media (max-width:860px){
 .fttipos,.ftsel-izq .fttipos{grid-template-columns:repeat(2,1fr)}
 .ftsel-cuerpo{grid-template-columns:1fr}
 .ftsel-der{border-left:0;border-top:1px solid var(--border);position:static}
 .ftsel-izq .ftgrid.chica{max-height:none}
 .fttipo{padding:8px 10px;min-height:44px;gap:6px}
 .fttipo .ic{font-size:16px}
 .fttipo b{font-size:12.5px;white-space:normal;line-height:1.2}
 .fttipo small{padding:1px 7px;font-size:11px}
 .fttiporadios{grid-template-columns:1fr}
 .fttr{flex-direction:row;align-items:center;gap:8px}
}

/* ═══ 22/09/2026 · REVISIÓN EN 17 FICHAS CON PREGUNTAS (D-2026-09-22-e) ═══ */
.revlista{display:flex;flex-direction:column;gap:8px}
.revficha{display:grid;grid-template-columns:36px 1fr auto auto;gap:12px;align-items:center;text-align:left;background:var(--white);border:1px solid var(--border);border-radius:12px;padding:12px 14px;transition:.12s;font:inherit}
.revficha:hover{border-color:var(--primary);box-shadow:var(--shadow)}
.revficha .n{width:32px;height:32px;border-radius:9px;background:var(--bg3);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px}
.revficha .t{font-family:var(--display);font-size:17px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.revficha .p{font-size:12.5px;color:var(--amber);font-weight:600;white-space:nowrap}
.revficha .e{font-size:12.5px;color:var(--muted);white-space:nowrap}
.revficha.validada .n{background:var(--green-soft);color:#3f6c3b}
.revficha.cambiada .n{background:var(--primary-soft);color:#2f5f96}
.revficha.rechazada .n{background:var(--red-soft);color:#9c342a}
.revficha.pregunta .n{background:var(--amber-soft);color:#8a5f11}
.revpregs{margin-top:34px;padding-top:24px;border-top:2px solid var(--border)}
.revpregstit{font-family:var(--display);font-size:24px;margin-bottom:6px;display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.revpregstit small{font-size:13.5px;color:var(--amber);font-family:var(--sans,inherit);font-weight:600}
.revpreg{background:var(--white);border:1px solid var(--border2);border-radius:14px;padding:16px 18px;margin-bottom:12px}
.revpreg.contestada{border-color:var(--green);background:var(--green-soft)}
.revpregq{font-size:16.5px;line-height:1.55;display:flex;gap:10px;align-items:flex-start}
.revpregq .n{flex:none;width:26px;height:26px;border-radius:50%;background:var(--bg3);display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:700;margin-top:2px}
.revpregops{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.revpregop{border:1px solid var(--border2);background:var(--white);border-radius:999px;padding:9px 16px;font-size:14.5px;font-weight:600;color:var(--ink);transition:.12s;min-height:40px}
.revpregop:hover{border-color:var(--primary);color:var(--primary)}
.revpregop.on{background:var(--primary);border-color:var(--primary);color:#fff}
.revpregtxt{display:flex;gap:8px;margin-top:10px;align-items:flex-start}
.revpregtxt textarea{flex:1;border:1px solid var(--border2);border-radius:10px;padding:10px 12px;font:inherit;font-size:14.5px;resize:vertical;min-height:44px;background:var(--white)}
.revpregtxt textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.revpregresp{margin-top:10px;font-size:14px;color:#3f6c3b}
@media (max-width:760px){.revficha{grid-template-columns:32px 1fr;} .revficha .p,.revficha .e{grid-column:2}}

/* ═══ 24/09/2026 · LA BARRA LATERAL EN GRUPOS, PLEGABLE, Y EL BOTÓN DE ATRÁS ═══
   Fede: «reorganiza la barra lateral: cosas arriba, otras abajo, desplegables; que el botón de arriba pliegue el
   panel; hiper navegable, con el atrás del navegador». Los grupos: Crear · Mi web · El cerebro; Hoy arriba y Ajustes
   abajo del todo. Plegada, la barra son solo iconos (72 px) y el nombre sale al pasar por encima. */
@media(min-width:761px){.shell{grid-template-columns:var(--sidew,250px) 1fr;transition:grid-template-columns .22s}}   /* solo en ordenador: en el móvil la barra es un cajón (línea ~431) */
html.nav-plegada .shell{--sidew:72px}
.side{transition:width .22s}
.logo .plegar{margin-left:auto;width:32px;height:32px;border-radius:9px;display:grid;place-items:center;color:var(--muted)}
.logo .plegar span{width:16px;height:12px;border:1.5px solid currentColor;border-radius:3px;position:relative;display:block}
.logo .plegar span::before{content:'';position:absolute;left:4px;top:0;bottom:0;border-left:1.5px solid currentColor}
.logo .plegar:hover{background:var(--bg2);color:var(--ink)}
html.nav-plegada .side .lb,html.nav-plegada .side .n,html.nav-plegada .ngt,html.nav-plegada .sideuser .linkbtn,html.nav-plegada .foot span:last-child{display:none}
html.nav-plegada .logo{padding:18px 0 10px;justify-content:center;flex-direction:column;gap:10px}
html.nav-plegada .marca{justify-content:center}
html.nav-plegada .logo .plegar{margin:0}
html.nav-plegada .nav{padding:6px 10px}
html.nav-plegada .nav button.nitem{justify-content:center;padding:11px 0;position:relative}
html.nav-plegada .nav button.nitem .ic{font-size:19px}
html.nav-plegada .nav button.nitem:hover::after{content:attr(title);position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);background:var(--ink);color:#fff;font-size:13px;font-weight:600;padding:6px 10px;border-radius:8px;white-space:nowrap;z-index:5;pointer-events:none}
html.nav-plegada .nav button.nitem .n{display:block;position:absolute;top:6px;right:6px;min-width:8px;height:8px;padding:0;font-size:0;border-radius:50%}
html.nav-plegada .sideuser{justify-content:center;padding:10px 6px}
html.nav-plegada .foot{justify-content:center}
/* los grupos */
.ngrupo{margin-bottom:6px}
.ngrupo.pie{margin-top:auto;padding-top:8px;border-top:1px solid var(--border)}
.nav{display:flex;flex-direction:column}
.ngt{display:flex;align-items:center;justify-content:space-between;width:100%;padding:12px 12px 4px;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--muted)}
.ngt i{font-style:normal;transition:transform .2s;transform:rotate(90deg);opacity:.6}
.ngrupo.cerrado .ngt i{transform:none}
.ngrupo.cerrado .ngi{display:none}
.nav button.nitem .n{background:var(--red);font-size:11px}
.nav button.nitem.on .n{background:var(--water)}
/* atrás */
.top .atras{width:36px;height:36px;border-radius:10px;font-size:26px;line-height:1;color:var(--muted);display:grid;place-items:center;padding-bottom:3px}
.top .atras:hover{background:var(--bg2);color:var(--ink)}
@media (max-width:760px){.logo .plegar,.top .atras{display:none} html.nav-plegada .shell{grid-template-columns:1fr} html.nav-plegada .side .lb,html.nav-plegada .side .n,html.nav-plegada .ngt{display:initial} html.nav-plegada .nav button.nitem{justify-content:flex-start;padding:11px 12px}}

/* ═══ 24/09/2026 · PRODUCTOS: LAS FICHAS CON PORTADA (5 por fila en ordenador) ═══ */
.prgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:16px}
@media (min-width:1200px){.prgrid{grid-template-columns:repeat(5,1fr)}}
.prficha{display:flex;flex-direction:column;text-align:left;background:var(--bg);border:1px solid var(--border);border-radius:16px;overflow:hidden;transition:transform .16s,box-shadow .16s,border-color .16s;padding:0}
.prficha:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--border2)}
.prficha .prport{position:relative;display:grid;place-items:center;aspect-ratio:3/4;padding:12px 12px 4px;background:radial-gradient(70% 70% at 50% 55%,color-mix(in srgb,var(--eb-acento) 30%,#FFFDF8) 0%,color-mix(in srgb,var(--eb-acento) 14%,#FFFDF8) 55%,#FFFDF8 100%)}
.prficha .prport img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply;background:none;-webkit-mask-image:radial-gradient(closest-side,#000 74%,transparent 100%);mask-image:radial-gradient(closest-side,#000 74%,transparent 100%)}
.prficha .prport-vacia{font-size:46px;opacity:.5}
.prficha:not(.tipo-ebook) .prport{aspect-ratio:4/3}
.prficha:not(.tipo-ebook) .prport img{object-fit:cover;mix-blend-mode:normal;border-radius:10px;-webkit-mask-image:none;mask-image:none}
.prficha .prest{position:absolute;left:8px;top:8px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;padding:4px 8px;border-radius:999px;background:#fffc;color:var(--muted);border:1px solid var(--border)}
.prficha .prest.verde{color:#3E5A2D;background:#E9EFDFee;border-color:#5E7F4544}
.prficha .prest.ambar{color:var(--amber);background:var(--amber-soft)}
.prficha .prels{position:absolute;right:8px;top:9px;display:flex;gap:3px}
.prel{width:12px;height:12px;border-radius:50%;border:1.5px solid #fff;box-shadow:0 0 0 1px #0002;display:block}
.prel-madera{background:#5E7F45}.prel-fuego{background:#C4553A}.prel-tierra{background:#A87A2A}.prel-metal{background:#6F7A86}.prel-agua{background:#2F5A86}
.prficha .prtx{display:flex;flex-direction:column;gap:3px;padding:10px 12px 12px}
.prficha .prtx b{font-family:var(--display);font-weight:400;font-size:15px;line-height:1.2;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.prficha .prtx small{font-size:11.5px;color:var(--muted)}
.pillselect.chica button{padding:6px 11px;min-height:34px;font-size:15px}
.sub{color:var(--muted);font-size:14px;margin-top:4px}
/* la ficha del ebook: cajas de elementos y marco del lector (24/09/2026) */
.prlibro{border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--bg2)}
.prlibro-frame{display:block;width:100%;height:min(74vh,760px);border:0;background:transparent}
@media (max-width:760px){.prelgrid{grid-template-columns:1fr 1fr}.prlibro-frame{height:70vh}}
.prelgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.prelcaja{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;padding:16px 12px 14px;border-radius:16px;border:1.5px solid var(--border);background:var(--bg);transition:.14s}
.prelcaja img{width:64px;height:64px;object-fit:contain;mix-blend-mode:multiply}
.prelcaja b{font-family:var(--display);font-weight:400;font-size:18px;color:var(--ink)}
.prelcaja small{font-size:12px;color:var(--muted);line-height:1.3}
.prelcaja:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.prelcaja.on{border-color:var(--ink);box-shadow:0 0 0 2px var(--bg),0 0 0 3.5px var(--ink)}
.prelcaja .num{position:absolute;top:-9px;right:-9px;width:24px;height:24px;border-radius:50%;background:var(--ink);color:#fff;font-size:12px;font-weight:700;display:grid;place-items:center}
.prelcaja-madera.on{background:#E9EFDF}.prelcaja-fuego.on{background:#F8E6DD}.prelcaja-tierra.on{background:#F5EAD3}.prelcaja-metal.on{background:#ECEEF0}.prelcaja-agua.on{background:#E1EAF3}
.prelcaja-no{justify-content:center;min-height:120px}
.prels-linea{display:inline-flex;gap:4px;align-items:center;flex-wrap:wrap}.prels-linea .prel{display:inline-block;margin-right:3px}
/* Hoy: la fila de ebooks con portada (24/09/2026) */
.hoylibros{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:12px;margin-top:12px}
.hoylibro{display:flex;flex-direction:column;gap:6px;text-align:center;padding:0;background:none;border-radius:12px}
.hoylibro img{width:100%;aspect-ratio:3/4;object-fit:contain;border-radius:10px;mix-blend-mode:multiply;background:radial-gradient(70% 70% at 50% 55%,color-mix(in srgb,var(--eb-acento) 28%,#FFFDF8),#FFFDF8 100%);transition:transform .16s}
.hoylibro:hover img{transform:translateY(-3px)}
.hoylibro b{font-family:var(--display);font-weight:400;font-size:12.5px;line-height:1.2;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hoylibro.borr img{opacity:.75}
.hoylibro span{font-size:40px;aspect-ratio:3/4;display:grid;place-items:center;background:var(--bg2);border-radius:10px}
/* Editar la web (24/09/2026): el editor ocupa toda la pantalla del panel; la barra de arriba del panel se esconde
   (el editor tiene la suya) y queda una pestañita para volver. */
html.vista-web .top{display:none}
html.vista-web #v-web{padding:0}
html.vista-web .webframe{height:100vh}
html.vista-web .main{position:relative}

/* ═══ 24/09/2026 · EL EBOOK A PANTALLA COMPLETA ═══
   Fede: «en vez de un pop-up, una pantalla entera con lo de ver, editar, datos y elementos en un panel a la
   izquierda, y una cruz grande arriba a la derecha para salir». */
html.vista-ebook .top{display:none}
html.vista-ebook #v-productos{padding:0}
.ebm{display:grid;grid-template-columns:250px 1fr;min-height:100vh;background:var(--bg2)}
.ebm-side{background:var(--bg);border-right:1px solid var(--border);padding:16px 14px;display:flex;flex-direction:column;gap:10px;position:sticky;top:0;height:100vh;overflow:auto}
.ebm-port{width:120px;margin:4px auto 0;aspect-ratio:3/4;display:grid;place-items:center;border-radius:12px;background:radial-gradient(70% 70% at 50% 55%,color-mix(in srgb,var(--eb-acento) 28%,#FFFDF8),#FFFDF8 100%)}
.ebm-port img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply;background:none;-webkit-mask-image:radial-gradient(closest-side,#000 74%,transparent 100%);mask-image:radial-gradient(closest-side,#000 74%,transparent 100%)}
.ebm-port span{font-size:40px}
.ebm-nom{font-family:var(--display);font-size:16px;line-height:1.25;text-align:center;color:var(--ink)}
.ebm-meta{display:flex;justify-content:center;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.ebm-nav{display:flex;flex-direction:column;gap:4px;border-top:1px solid var(--border);padding-top:10px}
.ebm-it{display:flex;align-items:center;gap:10px;text-align:left;padding:10px 10px;border-radius:12px;transition:.12s}
.ebm-it .ico{width:26px;text-align:center;font-size:18px;flex:none}
.ebm-it .tx{display:flex;flex-direction:column;min-width:0}
.ebm-it b{font-size:14.5px;color:var(--ink2)}
.ebm-it small{font-size:11.5px;color:var(--muted);line-height:1.25}
.ebm-it:hover{background:var(--bg2)}
.ebm-it.on{background:var(--primary-soft)}
.ebm-it.on b{color:var(--water)}
.ebm-acc{margin-top:auto;display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--border);padding-top:12px}
.ebm-acc .btn{justify-content:center}
.ebm-guarda{display:flex;align-items:center;gap:6px;justify-content:center}
.ebm-guarda .syncdot{width:8px;height:8px;border-radius:50%;background:var(--green);display:inline-block}
.ebm-main{display:flex;flex-direction:column;min-width:0;min-height:100vh}
.ebm-cab{display:flex;align-items:center;gap:12px;padding:10px 12px 10px 22px;background:var(--bg);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:5}
.ebm-tit{flex:1;font-size:14px;color:var(--muted)}
.ebm-x{width:44px;height:44px;border-radius:12px;font-size:22px;color:var(--ink2);background:var(--bg2);border:1px solid var(--border);display:grid;place-items:center}
.ebm-x:hover{background:var(--red-soft);color:var(--red);border-color:var(--red)}
.ebm-cuerpo{flex:1;min-height:0;display:flex;flex-direction:column;padding:12px}
.ebm-frame{display:block;width:100%;flex:1;min-height:calc(100vh - 90px);border:0;border-radius:14px;background:var(--bg)}
.ebm-dev{display:inline-flex;align-self:center;border:1px solid var(--border2);border-radius:999px;overflow:hidden;background:var(--bg);margin-bottom:10px}
.ebm-dev button{padding:7px 14px;font-size:13px;font-weight:600;color:var(--muted)}
.ebm-dev button.on{background:var(--ink);color:#fff}
.ebm-marco{flex:1;min-height:0;display:flex;flex-direction:column}
.ebm-marco.movil{align-items:center}
.ebm-marco.movil .ebm-frame{width:390px;max-width:100%;min-height:calc(100vh - 130px);border-radius:28px;box-shadow:0 20px 60px -24px #0007;border:8px solid #2a2a2a}
.ebm-datos{max-width:1120px;width:100%;margin:0 auto;padding:10px 10px 40px}
.ebm-datos .msplit{border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--bg)}
@media (max-width:760px){
  .ebm{grid-template-columns:1fr}
  .ebm-side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px}
  .ebm-port{width:52px;margin:0}
  .ebm-nom{text-align:left;flex:1;font-size:14px}
  .ebm-meta{width:auto;margin:0}
  .ebm-nav{flex-direction:row;overflow-x:auto;width:100%;border-top:0;padding-top:4px;gap:6px;scrollbar-width:none}
  .ebm-it{flex:none;padding:8px 10px}
  .ebm-it small{display:none}
  .ebm-acc{display:none}
  .ebm-main{min-height:0}
  .ebm-frame{min-height:75vh}
}
/* las fichas de la rejilla, más pequeñas (24/09): 6 por fila en pantallas grandes, 5 en normales */
.prgrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
@media (min-width:1200px){.prgrid{grid-template-columns:repeat(6,1fr)}}
@media (min-width:1500px){.prgrid{grid-template-columns:repeat(7,1fr)}}
.prficha .prtx{padding:8px 10px 10px}
.prficha .prtx b{font-size:13.5px}
.prficha .prest{font-size:9px;padding:3px 7px}
/* Personas y cobros (24/09/2026): cifras arriba que son botones, una pestaña = una idea, estados en palabras. */
.pecifras{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:16px 0 8px}
.pecifra{display:flex;flex-direction:column;align-items:flex-start;gap:1px;text-align:left;padding:14px 16px 12px;border-radius:16px;border:1.5px solid var(--border);background:var(--bg);transition:.14s;min-height:104px}
.pecifra .pecifra-ico{font-size:18px;margin-bottom:4px}
.pecifra b{font-family:var(--display);font-weight:400;font-size:26px;line-height:1;color:var(--ink)}
.pecifra .pecifra-l{font-size:13px;font-weight:700;color:var(--ink);margin-top:4px}
.pecifra small{font-size:12px;color:var(--muted);line-height:1.3}
.pecifra small .rojo,.pesumas .rojo{color:var(--red);font-weight:700}
.pecifra:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:var(--shadow)}
.pecifra.on{border-color:var(--water);background:var(--primary-soft);box-shadow:0 0 0 1px var(--water) inset}
.pecifra.aviso{border-color:var(--amber,#d9a441)}
.pemontaje{font-size:12.5px;color:var(--muted);margin:0 0 18px;line-height:1.5}
.pemontaje .ok{color:#3f6c3b}.pemontaje .av{color:#8a5a12;font-weight:700}
.pesec h2{font-family:var(--display);font-weight:400;font-size:24px;margin:0 0 4px}
.peque{font-size:14px;color:var(--muted);line-height:1.55;margin:0 0 14px;max-width:820px}
.pebusca{flex:1;min-width:220px;padding:11px 14px;border:1px solid var(--border2);border-radius:999px;background:var(--bg);font:inherit;font-size:14px}
.pechips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.pechip{padding:7px 12px;border-radius:999px;border:1px solid var(--border2);background:var(--bg);font-size:13px;font-weight:700;color:var(--ink);transition:.12s}
.pechip span{font-weight:400;color:var(--muted);margin-left:3px}
.pechip:hover{border-color:var(--primary)}
.pechip.on{background:var(--ink);color:#fff;border-color:var(--ink)}.pechip.on span{color:#ddd}
.pe-tabla td .badge{margin:0 4px 3px 0}
.pe-lleva{margin-top:3px;max-width:420px;white-space:normal}
.pe-viejo{background:var(--red-soft)}
.pesumas{display:flex;flex-wrap:wrap;gap:10px 26px;margin:0 0 14px;padding:12px 16px;border-radius:14px;background:var(--bg2)}
.pesumas div{display:flex;flex-direction:column}
.pesumas b{font-family:var(--display);font-weight:400;font-size:22px;line-height:1.1}
.pesumas span{font-size:12px;color:var(--muted)}
.pesumas .aviso b{color:var(--red)}
.peaviso{padding:12px 16px;border-radius:14px;background:var(--amber-soft,#fbf1dc);color:#5a3f10;font-size:14px;line-height:1.5;margin:0 0 12px}
.pef-cab{padding:14px 22px;border-bottom:1px solid var(--border)}
@media (max-width:1100px){.pecifras{grid-template-columns:repeat(3,1fr)}}
@media (max-width:760px){.pecifras{grid-template-columns:1fr;gap:6px}.pecifra{flex-direction:row;align-items:center;gap:10px;padding:10px 14px;min-height:0}.pecifra .pecifra-ico{margin:0}.pecifra b{font-size:22px;min-width:44px}.pecifra .pecifra-l{margin:0}.pecifra small{margin-left:auto;text-align:right;max-width:46%}.pesec h2{font-size:21px}}

/* ═══ Newsletter (24/09/2026): la lista, las plantillas y el editor a pantalla entera ═══ */
html.vista-nl .top{display:none}
html.vista-nl #v-newsletter{padding:0}
.nlcard .it{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.nlplantillas{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.nlpl{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;padding:16px 16px 14px;border-radius:16px;border:1.5px solid var(--border);background:var(--bg);transition:.14s;min-height:130px}
.nlpl .ico{font-size:24px}
.nlpl b{font-family:var(--display);font-weight:400;font-size:19px;color:var(--ink)}
.nlpl small{font-size:12.5px;color:var(--muted);line-height:1.35}
.nlpl:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--ink)}
.nle{display:grid;grid-template-columns:250px minmax(340px,1fr) minmax(420px,1.15fr);min-height:100vh;background:var(--bg2)}
.nle-side .edlbl{margin-top:10px}
.nlsel{width:100%;background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);padding:10px 12px;min-height:42px;font-size:14px;margin-bottom:6px}
.nlprog{background:var(--primary-soft);border-radius:12px;padding:10px 12px;font-size:13.5px;line-height:1.4}
.nlaviso{background:var(--amber-soft);border-radius:12px;padding:10px 12px;font-size:12.5px;line-height:1.4;color:#8a5f11}
.nle-form{overflow:auto;height:100vh;position:sticky;top:0;border-right:1px solid var(--border);background:var(--bg)}
.nle-formin{padding:18px 20px 60px;max-width:640px}
.nle-form .field{margin-bottom:14px}
.nle-form textarea{font-size:15px;line-height:1.6}
.prelgrid.nlel{grid-template-columns:repeat(3,1fr)}
.prelgrid.nlel .prelcaja{padding:12px 8px 10px}
.prelgrid.nlel .prelcaja img{width:48px;height:48px}
.prelgrid.nlel .prelcaja b{font-size:16px}
.nle-prev{display:flex;flex-direction:column;min-width:0;min-height:100vh}
.nle-frame{background:#F3F1EC}
@media (max-width:1180px){.nle{grid-template-columns:230px 1fr}.nle-prev{grid-column:1/-1;min-height:70vh}.nle-form{height:auto;position:static;border-right:0;border-bottom:1px solid var(--border)}}
@media (max-width:760px){.nle{grid-template-columns:1fr}.nle-side{position:static;height:auto}.nle-side .ebm-acc{display:flex;margin-top:8px}.nlplantillas{grid-template-columns:1fr 1fr}}
/* con el editor abierto la barra lateral del panel se aparta: el correo necesita sitio para verse a tamaño real */
@media(min-width:761px){html.vista-nl .shell{grid-template-columns:1fr}html.vista-nl #side{display:none}}
.nle-volver{display:none}
@media (max-width:760px){.nle-volver{display:inline-flex;width:100%;justify-content:center;order:-1}}
/* la newsletter, segunda pasada (24/09 tarde): pasos, filtros, tarjetas con acciones, «qué falta», claro/oscuro */
.nlnota{background:var(--amber-soft);border-radius:12px;padding:10px 14px;font-size:13.5px;color:#8a5f11;margin-bottom:16px}
.nlpaso{margin-bottom:26px}
.nlpaso>.edlbl{margin-bottom:10px}
.nlplantillas{grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}
.nlpl{min-height:118px;padding:14px 14px 12px}
.nlpl b{font-size:18px}
.nlpl-mas{margin-top:auto;font-size:12.5px;font-weight:700;color:var(--water)}
.nlfiltros{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.nlfiltros input[type=search]{flex:1;min-width:220px;background:var(--bg);border:1px solid var(--border2);border-radius:999px;padding:10px 16px;min-height:42px}
.nlfiltros select{background:var(--bg);border:1px solid var(--border2);border-radius:999px;padding:9px 14px;min-height:42px;font-size:13.5px}
.nlgrupo h2 small{font-size:14px;color:var(--muted);font-family:var(--sans);font-weight:600;margin-left:6px}
.nlcard{display:flex;gap:14px;align-items:center}
.nlcard-ico{font-size:24px;width:40px;height:40px;border-radius:12px;background:var(--bg2);display:grid;place-items:center;flex:none}
.nlcard-cuerpo{flex:1;min-width:0}
.nlcard-acc{display:flex;gap:6px;flex:none}
.nlfalta{background:var(--amber-soft);border-radius:12px;padding:10px 12px;font-size:13px;color:#8a5f11;line-height:1.4}
.nlfalta ul{margin:4px 0 0 16px;padding:0}
.nlfalta.ok{background:var(--green-soft);color:#3f6c3b}
.nlesq{margin-left:6px}
@media (max-width:760px){.nlcard{flex-wrap:wrap}.nlcard-acc{width:100%;justify-content:flex-end}.nlplantillas{grid-template-columns:1fr 1fr}}
.nle-cab{flex-wrap:wrap}
.nle-asunto{display:flex;flex-direction:column;gap:2px;padding:10px 22px 8px;background:var(--bg);border-bottom:1px solid var(--border);font-size:14px;line-height:1.35}
.nle-asunto .nle-de{font-size:12px;color:var(--muted)}
.nle-asunto b{font-size:15px;color:var(--ink)}
.nle-asunto .nle-pre{color:var(--muted)}
/* ═══ Newsletter · el editor en dos pasos (24/09 tarde): «1 · El correo» (se escribe encima) y «2 · A quién y cuándo» ═══ */
.nle{display:flex;flex-direction:column;min-height:100vh;grid-template-columns:none}
.nle-top{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--bg);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:6;flex-wrap:wrap}
.nle-titulo{flex:1;min-width:160px;font-size:14px;color:var(--ink2);display:flex;gap:8px;align-items:center}
.nle-titulo b{font-family:var(--display);font-weight:500;font-size:17px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:38vw}
.nle-pasos{display:inline-flex;border:1px solid var(--border2);border-radius:999px;overflow:hidden;background:var(--bg)}
.nle-pasos button{padding:8px 16px;font-size:13.5px;font-weight:600;color:var(--muted);display:inline-flex;gap:8px;align-items:center}
.nle-pasos button .n{width:20px;height:20px;border-radius:50%;background:var(--bg3);color:var(--muted);font-size:12px;display:grid;place-items:center}
.nle-pasos button.on{background:var(--ink);color:#fff}
.nle-pasos button.on .n{background:#fff;color:var(--ink)}
.nle-top .ebm-dev{margin:0}
.nle-top .ebm-dev button{padding:7px 12px}
.nle-dos{display:grid;grid-template-columns:340px 1fr;flex:1;min-height:0}
.nle-lado{background:var(--bg);border-right:1px solid var(--border);padding:16px 18px 40px;overflow:auto;height:calc(100vh - 62px);position:sticky;top:62px}
.nlsec{padding:14px 0;border-bottom:1px solid var(--border)}
.nlsec:last-child{border-bottom:0}
.nlsec .edlbl{margin:0 0 8px}
.nlsec .edlbl small{font-weight:600;letter-spacing:0;text-transform:none;color:var(--muted)}
.nlsec .field{margin-bottom:10px}
.nlsec .field label small{font-weight:600;letter-spacing:0;text-transform:none}
.nldet summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px}
.nldet summary::before{content:'›';display:inline-block;transition:.15s;font-size:16px;color:var(--muted)}
.nldet[open] summary::before{transform:rotate(90deg)}
.nltogs{display:flex;flex-wrap:wrap;gap:7px}
.nltog{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--border2);border-radius:999px;padding:7px 12px 7px 8px;font-size:13px;font-weight:600;color:var(--muted);background:var(--bg)}
.nltog i{width:26px;height:16px;border-radius:999px;background:var(--border2);position:relative;transition:.15s;flex:none}
.nltog i::after{content:'';position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:#fff;transition:.15s}
.nltog.on{color:var(--ink);border-color:var(--green)}
.nltog.on i{background:var(--green)}
.nltog.on i::after{left:12px}
.nlels{display:flex;gap:6px;flex-wrap:wrap}
.nlel{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 6px 6px;border-radius:12px;border:1.5px solid var(--border);background:var(--bg);width:58px}
.nlel img{width:30px;height:30px;object-fit:contain;mix-blend-mode:multiply}
.nlel b{font-family:var(--display);font-weight:400;font-size:12px;color:var(--ink)}
.nlel.on{border-color:var(--ink);box-shadow:0 0 0 2px var(--bg),0 0 0 3px var(--ink)}
.nlel .num{position:absolute;top:-7px;right:-7px;width:18px;height:18px;border-radius:50%;background:var(--ink);color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center}
.nle-prev{display:flex;flex-direction:column;min-width:0;background:var(--bg2)}
.nle-envio{flex:1;padding:26px 18px 60px;background:var(--bg2)}
.nlenv-in{max-width:760px;margin:0 auto}
.nlenv-in h2{font-family:var(--display);font-weight:400;font-size:26px;margin:22px 0 10px}
.nlsegs{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.nlseg{display:flex;flex-direction:column;gap:4px;text-align:left;padding:14px 16px;border-radius:16px;border:1.5px solid var(--border);background:var(--bg);transition:.14s}
.nlseg b{font-size:15px;color:var(--ink)}
.nlseg small{font-size:12.5px;color:var(--muted);line-height:1.35}
.nlseg .n{margin-top:4px;font-size:13px;font-weight:700;color:var(--water)}
.nlseg:hover{border-color:var(--ink)}
.nlseg.on{border-color:var(--ink);background:var(--primary-soft);box-shadow:0 0 0 2px var(--bg),0 0 0 3.5px var(--ink)}
.nlcuando{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.nlcuando input{background:var(--bg);border:1px solid var(--border2);border-radius:var(--r-sm);padding:12px 14px;min-height:46px;font-size:16px}
.nlcuando .mini{flex-basis:100%}
.nlenv-btns{display:flex;flex-direction:column;gap:10px;margin-top:18px;align-items:stretch}
.nlenv-btns .btn{justify-content:center;font-size:16px;min-height:50px}
.nlenv-btns .linkbtn{align-self:center}
.nlenv-estado{border-radius:16px;padding:16px 18px;font-size:15px;line-height:1.5;margin-bottom:10px}
.nlenv-estado.azul{background:var(--primary-soft)}.nlenv-estado.verde{background:var(--green-soft)}.nlenv-estado.rojo{background:var(--red-soft);color:var(--red)}
.nlenv-pie{margin-top:34px;padding-top:14px;border-top:1px solid var(--border)}
.nlfalta{margin-top:16px}
@media (max-width:1180px){.nle-dos{grid-template-columns:300px 1fr}}
@media (max-width:760px){.nle-dos{grid-template-columns:1fr}.nle-lado{position:static;height:auto;border-right:0;border-bottom:1px solid var(--border)}.nle-titulo b{max-width:60vw}.nlsegs{grid-template-columns:1fr}.nle-top .ebm-x{order:-1}}
