/* ============================================================================
   Themis V1 · componentes (Dirección B·Bench)
   Extraído de los mockups de Raúl (design/v1-bench). Las variables replican el
   sistema del brandbook; tokens.css (canónico, --bg-*) se carga aparte.
   ============================================================================ */
:root{
  --paper:#FAFAF7; --card:#FFFFFF; --mist:#E8ECEF;
  --ink:#0D1117; --slate:#1F2937; --steel:#5A6B80; --faint:#8A97A6;
  --midnight:#0D3B66; --action:#1C5D99;
  --verified:#2D6A4F; --verified-bg:#E7F1EC; --contested:#9C2A2A; --contested-bg:#F7E9E7; --caution:#B8860B; --caution-bg:#F7EFD8;
  --line:#E4E7EA; --line2:#D3D7DB;
  --frau:"Fraunces",Georgia,"Times New Roman",serif;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --r:8px; --shadow-sm:0 1px 2px rgba(13,17,23,.05); --shadow-md:0 1px 3px rgba(13,17,23,.05),0 10px 26px rgba(13,17,23,.045);
  --side:246px; --rail:378px;
}
*{ box-sizing:border-box; } html,body{ height:100%; margin:0; }
body{ background:var(--paper); color:var(--ink); font-family:var(--sans); font-size:14.5px; line-height:1.55; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; font-variant-numeric:tabular-nums; overflow:hidden; }
::selection{ background:#cfe0f0; } a{ color:inherit; text-decoration:none; }
.app{ display:grid; grid-template-columns:var(--side) minmax(0,1fr) var(--rail); height:100vh; background:radial-gradient(1200px 420px at 12% -8%, #ffffff 0%, rgba(255,255,255,0) 60%), var(--paper); }
@keyframes rise{ from{ opacity:0; transform:translateY(9px); } to{ opacity:1; transform:none; } }
.rise{ animation:rise .6s cubic-bezier(.2,.7,.2,1) both; }
@media (prefers-reduced-motion:reduce){ .rise{ animation:none; } }

/* SIDEBAR (shell compartido) */
.side{ border-right:1px solid var(--line); display:flex; flex-direction:column; padding:18px 14px 14px; min-height:0; overflow:hidden; }
.sidescroll{ flex:1 1 auto; min-height:0; overflow-y:auto; display:flex; flex-direction:column; scrollbar-width:thin; scrollbar-color:var(--line2) transparent; margin:0 -6px; padding:0 6px; }
.brand{ display:inline-flex; align-items:baseline; gap:6px; font-family:var(--frau); font-weight:600; font-size:23px; letter-spacing:-.012em; color:var(--ink); padding:6px 8px 4px; }
.brand .dot{ width:8px; height:8px; border-radius:50%; background:var(--midnight); display:inline-block; }
.navlabel{ font-family:var(--mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--faint); padding:18px 9px 7px; }
.nav{ display:flex; flex-direction:column; gap:2px; }
.nav a{ display:flex; align-items:center; gap:11px; padding:8px 10px; border-radius:var(--r); color:var(--slate); font-weight:500; font-size:13.5px; position:relative; transition:background .14s ease, box-shadow .14s ease, color .14s ease; }
.nav a svg{ width:18px; height:18px; color:var(--steel); flex:none; }
.nav a:hover{ background:var(--card); box-shadow:var(--shadow-sm); }
.nav a.active{ background:var(--card); box-shadow:var(--shadow-sm); color:var(--ink); }
.nav a.active svg{ color:var(--midnight); }
.nav a.active::before{ content:""; position:absolute; left:0; top:9px; bottom:9px; width:3px; background:var(--midnight); border-radius:0 3px 3px 0; }
.nav a .badge{ margin-left:auto; background:var(--midnight); color:#fff; font-family:var(--mono); font-size:10.5px; padding:1px 7px; border-radius:999px; line-height:1.5; }
.nav a .count{ margin-left:auto; color:var(--faint); font-family:var(--mono); font-size:11px; }
.navsep{ height:1px; background:var(--line); margin:14px 9px; }
.nav a.locked{ color:var(--faint); cursor:default; } .nav a.locked svg{ color:var(--faint); } .nav a.locked:hover{ background:transparent; box-shadow:none; }
.nav a.locked .lk{ margin-left:auto; display:inline-flex; } .nav a.locked .lk svg{ width:13px; height:13px; color:var(--caution); }
.side .spacer{ flex:1 1 auto; min-height:14px; }
.plan{ border:1px solid var(--line); border-radius:10px; background:var(--card); padding:12px 13px; box-shadow:var(--shadow-sm); }
.plan .pt{ display:flex; align-items:center; justify-content:space-between; } .plan .pt b{ font-size:12.5px; font-weight:600; } .plan .pt .seat{ font-family:var(--mono); font-size:10px; color:var(--faint); }
.plan .meterlbl{ display:flex; justify-content:space-between; font-family:var(--mono); font-size:10px; color:var(--steel); margin:11px 0 5px; }
.meter{ height:5px; border-radius:3px; background:var(--mist); overflow:hidden; } .meter i{ display:block; height:100%; width:64%; background:var(--midnight); border-radius:3px; }
.mtr{ margin-top:14px; } .mtr-lbl{ display:flex; justify-content:space-between; align-items:baseline; font-size:12.5px; color:var(--slate); margin-bottom:5px; } .mtr-lbl b{ font-weight:600; color:var(--ink); font-variant-numeric:tabular-nums; }
.mtr-unl{ display:flex; align-items:center; gap:7px; margin-top:16px; padding-top:12px; border-top:1px solid var(--line); color:var(--verified); font-size:12.5px; font-weight:600; } .mtr-unl svg{ width:15px; height:15px; flex:none; }
.user{ display:flex; align-items:center; gap:10px; padding:14px 6px 12px; border-top:1px solid var(--line); margin-top:10px; }
.avatar{ width:31px; height:31px; border-radius:50%; background:var(--midnight); color:#fff; display:grid; place-items:center; font-weight:600; font-size:12px; flex:none; }
.user .un{ font-size:12.5px; font-weight:600; line-height:1.25; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.user .ue{ font-family:var(--mono); font-size:10px; color:var(--faint); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.user .logout{ margin-left:auto; flex:none; font-family:var(--mono); font-size:10px; color:var(--faint); border:1px solid var(--line2); border-radius:5px; padding:3px 8px; cursor:pointer; background:var(--card); }

/* botón de acción en filas de tabla (sigue el sistema B·Bench: ghost chico) */
.tbtn{ font:12px var(--sans); font-weight:500; color:var(--action); background:var(--card); border:1px solid var(--line2); border-radius:6px; padding:4px 11px; cursor:pointer; white-space:nowrap; transition:border-color .14s ease, background .14s ease, color .14s ease; }
.tbtn + .tbtn{ margin-left:6px; }
.tbtn:hover{ border-color:var(--action); background:var(--paper); }
.tbtn.danger{ color:var(--contested); } .tbtn.danger:hover{ border-color:var(--contested); background:var(--contested-bg); }
.tbtn:disabled{ opacity:.5; cursor:not-allowed; }

/* CENTRO */
.center{ display:flex; flex-direction:column; min-width:0; min-height:0; }
.topbar{ display:flex; align-items:center; gap:12px; padding:12px 26px; border-bottom:1px solid var(--line); }
.modes{ display:flex; gap:4px; background:var(--mist); padding:3px; border-radius:9px; }
.modes a{ font-size:12.5px; font-weight:500; color:var(--steel); padding:6px 12px; border-radius:6px; } .modes a.on{ background:var(--card); color:var(--ink); box-shadow:var(--shadow-sm); }
.qc{ position:relative; flex:1 1 auto; max-width:440px; margin-left:auto; display:flex; gap:8px; }
.qc .qcin{ position:relative; flex:1 1 auto; }
.qc .qcin svg{ position:absolute; left:12px; top:50%; transform:translateY(-50%); width:16px; height:16px; color:var(--steel); }
.qc input{ width:100%; font-family:var(--sans); font-size:13px; color:var(--ink); padding:9px 12px 9px 36px; border:1px solid var(--line2); border-radius:var(--r); background:var(--card); }
.qc input::placeholder{ color:var(--faint); } .qc input:focus{ outline:none; border-color:var(--action); box-shadow:0 0 0 3px rgba(28,93,153,.12); }
.btn{ font-family:var(--sans); font-weight:600; font-size:13px; padding:9px 14px; border-radius:var(--r); border:1px solid transparent; cursor:pointer; display:inline-flex; align-items:center; gap:7px; white-space:nowrap; transition:transform .12s ease, filter .15s ease, border-color .15s ease; }
.btn:active{ transform:translateY(1px); } .btn.navy{ background:var(--midnight); color:#fff; } .btn.navy:hover{ filter:brightness(1.08); }
.btn.ghost{ background:var(--card); color:var(--slate); border-color:var(--line2); font-weight:500; } .btn.ghost:hover{ border-color:var(--steel); color:var(--ink); } .btn svg{ width:15px; height:15px; }
.btn.block{ width:100%; justify-content:center; } .btn:disabled{ opacity:.5; cursor:not-allowed; }

.scroll{ overflow-y:auto; padding:24px 26px 44px; flex:1 1 auto; min-height:0; scrollbar-width:thin; scrollbar-color:var(--line2) transparent; }
.chip{ font-family:var(--mono); font-size:11px; letter-spacing:.02em; padding:5px 10px; border-radius:999px; display:inline-flex; align-items:center; gap:6px; white-space:nowrap; }
.chip .d{ width:7px; height:7px; border-radius:50%; }
.chip.ok{ color:var(--verified); background:var(--verified-bg); } .chip.ok .d{ background:var(--verified); }
.chip.derog{ color:var(--contested); background:var(--contested-bg); } .chip.derog .d{ background:var(--contested); }

/* panel de la norma */
.artcard{ background:var(--card); border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow-sm); padding:22px 24px; }
.artcard .ah{ display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.artcard .code{ font-family:var(--mono); font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--action); }
.artcard .atitle{ font-family:var(--frau); font-weight:500; font-size:24px; letter-spacing:-.015em; margin:6px 0 0; }
.arttext{ font-size:15px; line-height:1.85; color:var(--slate); margin:16px 0 0; padding:14px 18px; border-left:3px solid var(--midnight); background:var(--paper); border-radius:0 8px 8px 0; }
.artmeta{ display:flex; gap:18px; flex-wrap:wrap; margin-top:14px; padding-top:13px; border-top:1px solid var(--line); }
.artmeta .m .k{ font-family:var(--mono); font-size:9px; letter-spacing:.09em; text-transform:uppercase; color:var(--faint); } .artmeta .m .v{ font-family:var(--mono); font-size:11.5px; color:var(--slate); margin-top:3px; }

/* jurisprudencia */
.jhead{ display:flex; align-items:baseline; justify-content:space-between; margin:28px 0 12px; }
.jhead h3{ font-family:var(--frau); font-weight:500; font-size:19px; letter-spacing:-.01em; margin:0; } .jhead h3 b{ color:var(--action); font-weight:500; }
.fallos{ display:flex; flex-direction:column; gap:10px; }
.fallo{ background:var(--card); border:1px solid var(--line); border-radius:11px; padding:15px 17px; box-shadow:var(--shadow-sm); }
.fallo .fr1{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.fallo .fid{ font-family:var(--mono); font-size:12px; color:var(--midnight); font-weight:500; }
.fallo .fmeta{ font-family:var(--mono); font-size:10.5px; color:var(--faint); }
.otag{ font-family:var(--mono); font-size:10px; letter-spacing:.03em; padding:3px 9px; border-radius:999px; margin-left:auto; }
.otag.si{ color:var(--verified); background:var(--verified-bg); } .otag.no{ color:var(--steel); background:var(--mist); } .otag.parc{ color:var(--caution); background:var(--caution-bg); }
.fallo .crit{ font-size:13.5px; color:var(--slate); line-height:1.55; margin:9px 0 9px; }
.fallo .fr2{ display:flex; align-items:center; gap:12px; }
.fallo .ver{ font-family:var(--mono); font-size:10.5px; color:var(--verified); display:inline-flex; align-items:center; gap:5px; } .fallo .ver svg{ width:12px; height:12px; }

/* estados: banner derogada / vacío / error / cargando */
.banner{ border-radius:10px; padding:12px 15px; font-size:13px; margin:0 0 16px; }
.banner.derog{ background:var(--contested-bg); border:1px solid #e6c9c5; color:var(--contested); }
.banner.aviso{ background:var(--paper); border:1px solid var(--line); color:var(--steel); font-size:12px; }
.empty{ text-align:center; color:var(--steel); font-size:13.5px; padding:40px 20px; }
.empty .big{ font-family:var(--frau); font-size:18px; color:var(--slate); margin-bottom:6px; }
.errbox{ background:var(--contested-bg); border:1px solid #e6c9c5; color:var(--contested); border-radius:10px; padding:12px 15px; font-size:13px; }
.loading{ color:var(--steel); font-family:var(--mono); font-size:12px; padding:30px; text-align:center; }

/* anotación inline de citas en el escrito (Validar) */
.cm{ border-radius:3px; padding:0 2px; cursor:help; border-bottom:2px solid; }
.cm-si{ border-color:var(--verified); background:var(--verified-bg); }
.cm-parc{ border-color:var(--caution); background:var(--caution-bg); }
.cm-no{ border-color:var(--contested); background:var(--contested-bg); }

/* modal (detalle de auditoría) */
.modal-bg{ position:fixed; inset:0; background:rgba(13,17,23,.35); display:none; place-items:center; z-index:50; padding:24px; }
.modal-bg.on{ display:grid; }
.modal-card{ background:var(--card); border:1px solid var(--line); border-radius:14px; box-shadow:var(--shadow-md); width:560px; max-width:94vw; max-height:86vh; overflow:auto; padding:22px 24px; }
.modal-card h3{ font-family:var(--frau); font-weight:500; font-size:19px; margin:0 0 4px; }
.kv{ display:grid; grid-template-columns:150px 1fr; gap:6px 14px; margin-top:14px; font-size:13px; }
.kv .kk{ font-family:var(--mono); font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--faint); padding-top:2px; }
.kv .vv{ color:var(--slate); word-break:break-word; }
.kv .vv.mono{ font-family:var(--mono); font-size:12px; }
.filtros{ display:flex; gap:10px; flex-wrap:wrap; align-items:flex-end; margin-bottom:18px; background:var(--card); border:1px solid var(--line); border-radius:12px; padding:14px 16px; box-shadow:var(--shadow-sm); }
.filtros .fld{ display:flex; flex-direction:column; gap:4px; }
.filtros label{ font-family:var(--mono); font-size:9.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--faint); }
.filtros input, .filtros select{ font:13px var(--sans); padding:7px 10px; border:1px solid var(--line2); border-radius:var(--r); background:var(--card); }

/* encabezado de página con acción (Nuevo…) + formularios dentro del modal */
.page-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.modal-card .ff{ margin-top:14px; }
.modal-card .ff label{ display:block; font:10px var(--mono); letter-spacing:.08em; text-transform:uppercase; color:var(--faint); margin-bottom:5px; }
.modal-card .ff input, .modal-card .ff select{ width:100%; font:14px var(--sans); padding:9px 12px; border:1px solid var(--line2); border-radius:var(--r); background:var(--card); }
.modal-card .ff input:focus, .modal-card .ff select:focus{ outline:none; border-color:var(--action); box-shadow:0 0 0 3px rgba(28,93,153,.12); }
.modal-card .ff2{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.modal-actions{ display:flex; gap:10px; justify-content:flex-end; margin-top:22px; }
.modal-msg{ font-size:12.5px; margin-top:10px; }

/* RAIL — verificación cruzada */
.rail{ border-left:1px solid var(--line); background:var(--card); display:flex; flex-direction:column; min-height:0; }
.rhead{ padding:16px 20px 15px; border-bottom:1px solid var(--line); } .rhead .rl{ font-family:var(--mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--faint); } .rhead .rt{ font-weight:600; font-size:14px; margin-top:8px; color:var(--ink); }
.rscroll{ overflow-y:auto; padding:18px 20px 8px; flex:1 1 auto; min-height:0; scrollbar-width:thin; scrollbar-color:var(--line2) transparent; }
.xrow{ display:flex; gap:12px; padding:14px 0; border-bottom:1px solid var(--line); }
.xrow .g{ width:30px; height:30px; border-radius:8px; flex:none; display:grid; place-items:center; font-family:var(--mono); font-size:10px; font-weight:500; }
.xrow .g.e1{ background:#E4ECF4; color:var(--midnight); } .xrow .g.e0{ background:var(--verified-bg); color:var(--verified); }
.xrow .xt{ font-weight:600; font-size:13.5px; } .xrow .xs{ color:var(--steel); font-size:12.5px; margin-top:2px; line-height:1.45; } .xrow .xok{ font-family:var(--mono); font-size:10.5px; color:var(--verified); margin-top:5px; display:inline-flex; align-items:center; gap:5px; }
.xrow .xok.cau{ color:var(--caution); }
.moat{ margin:16px 0 4px; padding:13px 15px; background:var(--paper); border:1px solid var(--line); border-left:3px solid var(--midnight); border-radius:0 9px 9px 0; }
.moat .mt{ font-weight:600; font-size:13px; color:var(--midnight); } .moat .md{ font-size:12.5px; color:var(--slate); margin-top:5px; line-height:1.5; }
.fuentes{ margin-top:16px; } .fuentes .fl{ font-family:var(--mono); font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:var(--faint); margin-bottom:8px; }
.fuentes .fr{ display:flex; align-items:center; gap:8px; font-family:var(--mono); font-size:11px; color:var(--slate); padding:3px 0; } .fuentes .fr .fd{ width:5px; height:5px; border-radius:50%; background:var(--midnight); flex:none; }
.rfoot{ padding:15px 20px; border-top:1px solid var(--line); background:var(--card); } .rfoot .dnote{ font-family:var(--mono); font-size:10px; color:var(--faint); text-align:center; margin-top:9px; line-height:1.5; }
.rail .railempty{ color:var(--faint); font-size:12.5px; padding:24px 20px; line-height:1.6; }

/* ============ LOGIN ============ */
.login-wrap{ height:100vh; display:grid; place-items:center; background:radial-gradient(1000px 400px at 50% -10%, #fff 0%, rgba(255,255,255,0) 60%), var(--paper); overflow:auto; }
.login-card{ width:360px; max-width:92vw; background:var(--card); border:1px solid var(--line); border-radius:14px; box-shadow:var(--shadow-md); padding:32px 30px; }
.login-card .brand{ font-size:27px; padding:0 0 6px; }
.login-card .sub{ color:var(--steel); font-size:13px; margin-bottom:22px; }
.login-card label{ display:block; font-family:var(--mono); font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:var(--faint); margin:14px 0 6px; }
.login-card input{ width:100%; font-family:var(--sans); font-size:14px; padding:10px 12px; border:1px solid var(--line2); border-radius:var(--r); background:var(--card); }
.login-card input:focus{ outline:none; border-color:var(--action); box-shadow:0 0 0 3px rgba(28,93,153,.12); }
.login-card .btn{ margin-top:22px; }
.login-card .err{ background:var(--contested-bg); color:var(--contested); font-size:12.5px; border-radius:8px; padding:9px 12px; margin-top:16px; }

/* ============ DASHBOARDS ============ */
.dash{ padding:26px 30px 50px; overflow-y:auto; }
.dash h1{ font-family:var(--frau); font-weight:500; font-size:26px; letter-spacing:-.015em; margin:0 0 4px; }
.dash .subt{ color:var(--steel); font-size:13px; margin-bottom:22px; }
.cards{ display:flex; gap:14px; flex-wrap:wrap; margin-bottom:26px; }
.kpi{ background:var(--card); border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow-sm); padding:16px 18px; min-width:150px; flex:1; }
.kpi .k{ font-family:var(--mono); font-size:9.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--faint); }
.kpi .v{ font-family:var(--frau); font-size:24px; color:var(--ink); margin-top:6px; } .kpi .v small{ font-family:var(--mono); font-size:12px; color:var(--steel); }
.kpi-s{ font-size:11px; color:var(--steel); margin-top:6px; line-height:1.35; }
.tbl{ width:100%; border-collapse:collapse; background:var(--card); border:1px solid var(--line); border-radius:12px; overflow:hidden; box-shadow:var(--shadow-sm); }
.tbl th{ font-family:var(--mono); font-size:9.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--faint); text-align:left; padding:11px 14px; border-bottom:1px solid var(--line); background:var(--paper); }
.tbl td{ padding:11px 14px; border-bottom:1px solid var(--line); font-size:13px; color:var(--slate); vertical-align:top; }
.tbl tr:last-child td{ border-bottom:none; }
.tbl td.num, .tbl th.num{ text-align:right; font-family:var(--mono); }
.tbl .mut{ color:var(--faint); font-family:var(--mono); font-size:11px; }
.sec-title{ font-family:var(--frau); font-size:18px; margin:26px 0 12px; }
.badge-estado{ font-family:var(--mono); font-size:10px; padding:2px 8px; border-radius:999px; }
.badge-estado.activo{ color:var(--verified); background:var(--verified-bg); } .badge-estado.trial{ color:var(--caution); background:var(--caution-bg); } .badge-estado.suspendido{ color:var(--contested); background:var(--contested-bg); }

@media (max-width:1180px){ .app{ grid-template-columns:var(--side) minmax(0,1fr); } .rail{ display:none; } }
@media (max-width:900px){ .app{ grid-template-columns:1fr; } .side{ display:none; } .modes{ display:none; } }

/* ── Redactar (F9) — borrador fundado: doc + hueco + apoyo + stats del rail ── */
.rd-honest{ display:flex; gap:9px; align-items:flex-start; padding:11px 15px; background:var(--caution-bg); border:1px solid #ecdcae; border-radius:9px; margin-bottom:16px; }
.rd-honest svg{ width:16px; height:16px; color:var(--caution); flex:none; margin-top:2px; }
.rd-honest .t{ font-size:12.5px; color:#7a5c08; line-height:1.5; } .rd-honest .t b{ color:#5f4806; }
.rd-doc{ background:var(--bg-card); border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow-sm); padding:30px 36px; }
.rd-doc .dt{ font-family:var(--font-display); font-weight:500; font-size:21px; letter-spacing:-.015em; margin:0 0 4px; color:var(--ink); }
.rd-doc .dm{ font-family:var(--font-mono); font-size:10.5px; color:var(--ink-faint); margin-bottom:18px; }
.rd-doc p{ font-size:15px; line-height:1.95; color:var(--ink-slate); margin:0 0 14px; white-space:pre-wrap; }
.rd-doc .cm sup{ font-family:var(--font-mono); font-size:9px; margin-left:1px; }
.rd-gap{ background:var(--caution-bg); border:1.5px dashed var(--caution); border-radius:5px; padding:1px 8px; color:#7a5c08; font-size:13.5px; font-weight:500; cursor:help; }
.rd-support{ margin:2px 0 16px; padding:11px 14px; background:var(--bg-paper); border:1px solid var(--line); border-radius:9px; }
.rd-support .sl{ font-family:var(--font-mono); font-size:9.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:7px; }
.rd-support .chips{ display:flex; gap:7px; flex-wrap:wrap; }
.rd-support .note{ font-size:11px; color:var(--ink-faint); margin-top:7px; }
.rd-stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:16px; }
.rd-stat{ border:1px solid var(--line); border-radius:8px; padding:9px 10px; background:var(--bg-paper); text-align:center; }
.rd-stat .num{ font-family:var(--font-display); font-weight:500; font-size:21px; line-height:1; }
.rd-stat .lb{ font-family:var(--font-mono); font-size:9px; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-faint); margin-top:5px; }
.rd-stat.v .num{ color:var(--verified); } .rd-stat.g .num{ color:var(--caution); } .rd-stat.u .num{ color:var(--ink-steel); }
.rd-gaprow{ background:var(--caution-bg); border-radius:8px; padding:10px 11px; margin-bottom:8px; }
.rd-gaprow .t{ font-size:12.5px; color:#5f4806; line-height:1.45; } .rd-gaprow .s{ font-family:var(--font-mono); font-size:10.5px; color:#7a5c08; margin-top:4px; }
.rd-guard{ margin:14px 0 4px; padding:12px 14px; background:var(--bg-paper); border:1px solid var(--line); border-left:3px solid var(--verified); border-radius:0 9px 9px 0; }
.rd-guard .gt{ font-weight:600; font-size:12.5px; color:var(--verified); } .rd-guard .gd{ font-size:12px; color:var(--ink-slate); margin-top:6px; line-height:1.5; }
.rd-locked{ text-align:center; padding:40px 30px; }
.rd-locked .lk{ width:46px; height:46px; border-radius:50%; background:var(--caution-bg); display:inline-grid; place-items:center; margin-bottom:14px; } .rd-locked .lk svg{ width:22px; height:22px; color:var(--caution); }

/* ── Asuntos (F44) — lista de carpetas + detalle ── */
.as-list{ display:flex; flex-direction:column; gap:8px; margin-top:6px; }
.as-case{ display:flex; align-items:center; gap:14px; padding:13px 16px; background:var(--bg-card); border:1px solid var(--line); border-radius:10px; box-shadow:var(--shadow-sm); text-decoration:none; transition:border-color .12s ease, box-shadow .12s ease; }
.as-case:hover{ border-color:var(--ink-steel); }
.as-folder{ width:34px; height:34px; border-radius:8px; background:var(--bg-mist); display:grid; place-items:center; flex:none; } .as-folder svg{ width:18px; height:18px; color:var(--midnight); }
.as-case .as-body{ flex:1; min-width:0; } .as-case .as-ttl{ font-weight:600; font-size:14.5px; color:var(--ink); }
.as-case .as-sub{ font-size:12.5px; color:var(--ink-steel); margin-top:3px; }
.as-tag{ font-family:var(--mono); font-size:10px; letter-spacing:.04em; text-transform:uppercase; color:var(--ink-faint); border:1px solid var(--line); border-radius:5px; padding:1px 6px; }
.as-loose{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:18px; padding:12px 15px; background:var(--caution-bg); border:1px solid #ecdcae; border-radius:9px; font-size:13px; color:#7a5c08; }
.as-loose a{ color:var(--action); font-weight:600; white-space:nowrap; }
.as-sec{ font-weight:600; font-size:13px; letter-spacing:.02em; color:var(--ink-slate); text-transform:uppercase; margin:22px 0 8px; }
.as-piece{ display:flex; align-items:center; gap:12px; padding:11px 14px; background:var(--bg-card); border:1px solid var(--line); border-radius:9px; margin-bottom:6px; }
.as-piece .pt{ flex:1; min-width:0; } .as-piece .pt a{ color:var(--action); font-weight:600; }
.as-nota{ padding:11px 14px; background:var(--bg-paper); border:1px solid var(--line); border-radius:9px; margin-bottom:6px; }
.as-nota .meta{ font-family:var(--mono); font-size:10.5px; color:var(--ink-faint); margin-top:5px; }
.ff-lbl{ font-family:var(--mono); font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-faint); display:block; margin:12px 0 4px; }
.ff-in{ width:100%; font:14px var(--sans); padding:9px 12px; border:1px solid var(--line2); border-radius:var(--r); background:var(--bg-card); }
/* Grilla de campos de formulario: los inputs se alinean ABAJO aunque un label ocupe 2 líneas
   (align-items:end), así no se descuadran las filas. Las columnas se fijan por inline-style. */
.fgrid{ display:grid; gap:14px; align-items:end; margin-top:12px; }
.fgrid .ff{ margin:0; min-width:0; }
.fgrid .ff label{ display:block; margin-bottom:5px; line-height:1.25; }
@media (max-width:640px){ .fgrid{ grid-template-columns:1fr !important; } }

/* ── Planes (cliente) — cards de pricing calcadas del mockup B·Bench ── */
.pl-ancla{ display:flex; align-items:center; gap:10px; padding:12px 16px; background:var(--verified-bg); border:1px solid #cfe3d8; border-radius:10px; color:#1e5038; font-size:13px; margin-bottom:20px; }
.pl-ancla svg{ width:18px; height:18px; flex:none; color:var(--verified); }
.pl-pill{ display:inline-block; padding:5px 12px; background:var(--paper); border:1px solid var(--line2); border-radius:999px; color:var(--steel); font-size:12px; margin:-6px 0 18px; }
.pl-founders{ display:inline-block; padding:3px 9px; background:#fdf3d8; border:1px solid #e8d29a; border-radius:999px; color:#8a6d1f; font-size:10.5px; font-weight:600; letter-spacing:.02em; margin-bottom:8px; }
.tipills{ display:flex; flex-wrap:wrap; gap:7px; margin-bottom:16px; }
.tipill{ padding:4px 11px; border:1px solid var(--line2); border-radius:999px; font-size:12px; color:var(--steel); text-decoration:none; background:var(--card); }
.tipill:hover{ border-color:var(--steel); }
.tipill.on{ background:var(--midnight); border-color:var(--midnight); color:#fff; }
.badge-tipo{ display:inline-block; padding:2px 9px; border-radius:999px; background:#eef2f7; border:1px solid var(--line2); color:var(--slate); font-size:11px; font-weight:600; }
.cons-txt{ display:-webkit-box; -webkit-line-clamp:2; line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.cons-txt.open{ -webkit-line-clamp:unset; line-clamp:unset; }
.cons-mas{ display:inline-block; margin-top:2px; font-size:11.5px; color:var(--action); cursor:pointer; }
.cons-mas:hover{ text-decoration:underline; }
.rd-ctx{ display:flex; align-items:center; justify-content:space-between; gap:12px; background:#eef4fb; border:1px solid #cfe0f0; border-radius:10px; padding:11px 14px; margin-bottom:14px; }
.rd-ctx .ct{ font-size:13px; color:var(--slate); } .rd-ctx .cs{ font-size:12px; color:var(--steel); margin-top:2px; }
.ctx-x{ flex:none; border:none; background:transparent; color:var(--steel); font-size:15px; cursor:pointer; padding:2px 6px; border-radius:6px; } .ctx-x:hover{ background:#dce8f5; }
.cli-ini{ display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px; flex:none; border-radius:50%; background:var(--midnight); color:#fff; font:600 11px var(--sans); }
.pl-lista{ font-size:11.5px; color:var(--steel); margin-top:-2px; }
.pl-lista s{ opacity:.7; }
.os-sello{ display:flex; gap:14px; align-items:center; background:var(--verified-bg); border:1px solid #cfe3d8; border-radius:12px; padding:16px 18px; }
.os-sello-ic{ width:42px; height:42px; flex:none; border-radius:10px; background:#fff; border:1px solid #cfe3d8; display:flex; align-items:center; justify-content:center; } .os-sello-ic svg{ width:22px; height:22px; color:var(--verified); }
.os-sello-t{ font:600 15px var(--sans); color:#1e5038; } .os-sello-s{ font-size:12.5px; color:var(--slate); margin-top:3px; line-height:1.45; }
.os-cupo{ display:inline-block; margin-top:10px; padding:5px 12px; background:#fdf3d8; border:1px solid #e8d29a; border-radius:999px; color:#8a6d1f; font-size:12px; font-weight:600; }
.os-cards{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-top:16px; }
@media (max-width:680px){ .os-cards{ grid-template-columns:1fr; } }
.pl-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:14px; align-items:start; }
.pl-card{ position:relative; background:var(--bg-card); border:1px solid var(--line); border-radius:14px; box-shadow:var(--shadow-sm); padding:22px 22px 18px; }
.pl-card.pro{ border-color:var(--midnight); box-shadow:var(--shadow-md); }
.pl-rec{ position:absolute; top:-10px; left:50%; transform:translateX(-50%); background:var(--midnight); color:#fff; font:600 10.5px var(--mono); letter-spacing:.06em; text-transform:uppercase; border-radius:999px; padding:3px 12px; }
.pl-name{ font-family:var(--font-display); font-weight:600; font-size:20px; color:var(--ink); }
.pl-tag{ font-size:12.5px; color:var(--ink-steel); margin-top:3px; min-height:34px; }
.pl-price{ margin:12px 0 2px; } .pl-price .cur{ font:600 13px var(--sans); color:var(--ink-steel); margin-right:4px; }
.pl-price .amt{ font-family:var(--font-display); font-weight:600; font-size:30px; letter-spacing:-.01em; color:var(--ink); }
.pl-price .per{ font:12.5px var(--sans); color:var(--ink-faint); margin-left:3px; }
.pl-seats{ font:11px var(--mono); color:var(--ink-faint); margin-bottom:14px; }
.pl-feat{ list-style:none; margin:16px 0 0; padding:0; display:flex; flex-direction:column; gap:8px; }
.pl-feat li{ display:flex; gap:8px; align-items:flex-start; font-size:13px; color:var(--ink-slate); line-height:1.45; }
.pl-feat svg{ width:14px; height:14px; flex:none; margin-top:2px; color:var(--verified); }
