/* usuarios-v2.css — estilos del rediseño Usuarios v2 (P1-P5). USUARIOS v2 · F2D.
   Portado del mockup aprobado "Usuarios v2.html". CSS-001: SIN :root propio (consume
   atlas-tokens.css) y SIN fuentes (base.css sirve Plus Jakarta + DM Mono). Todo scoped
   bajo `.uv2` (el contenedor de la vista de detalle) para no clobber-ear globales.
   Solo clases ESPECÍFICAS de esta pantalla; toast/confirm reusan los de producción. */

.uv2 { --uv-num: var(--font-num); }
.uv2 .mono, .uv2 .num { font-family: var(--font-num); font-variant-numeric: tabular-nums; }

/* botones / badges / chips (nombres del mockup, scoped — no tocan los globales) */
.uv2 .btn { border:1px solid var(--border); background:var(--surface); color:var(--text-2); font-weight:600; font-size:13px; padding:9px 15px; border-radius:var(--radius-sm); transition:all .14s; display:inline-flex; align-items:center; gap:7px; white-space:nowrap; cursor:pointer; }
.uv2 .btn:hover { background:var(--hover); color:var(--text); border-color:var(--border-strong); }
.uv2 .btn--primary { border:0; background:var(--accent); color:#fff; }
.uv2 .btn--primary:hover { background:var(--accent-strong); color:#fff; }
.uv2 .btn--danger { border:1px solid var(--neg); background:var(--surface); color:var(--neg); }
.uv2 .btn--danger:hover { background:var(--neg); color:#fff; }
.uv2 .btn--sm { padding:6px 11px; font-size:12px; }
.uv2 .backlink { display:inline-flex; align-items:center; gap:6px; font-size:12.5px; font-weight:600; color:var(--text-3); margin-bottom:var(--s-3); background:none; border:0; cursor:pointer; }
.uv2 .backlink:hover { color:var(--text-2); }
.uv2 .badge { display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:600; padding:3px 9px; border-radius:var(--radius-pill); background:var(--surface-2); color:var(--text-2); }
.uv2 .badge--pos { background:var(--pos-bg); color:var(--accent-strong); }
.uv2 .badge--neg { background:var(--neg-bg); color:var(--neg); }
.uv2 .badge--warn { background:var(--warn-bg); color:var(--warn); }
.uv2 .badge--info { background:#e8eefb; color:#2563c9; }
.uv2 .badge--muted { background:var(--surface-2); color:var(--text-3); }
.uv2 .badge__dot { width:6px; height:6px; border-radius:50%; background:currentColor; }
.uv2 .chip { display:inline-flex; align-items:center; gap:5px; font-size:11.5px; font-weight:600; padding:4px 9px; border-radius:var(--radius-sm); border:1px solid var(--border); background:var(--surface); color:var(--text-2); }

/* switch */
.uv2 .switch { position:relative; display:inline-block; width:40px; height:23px; flex-shrink:0; }
.uv2 .switch input { opacity:0; width:0; height:0; position:absolute; }
.uv2 .switch__sl { position:absolute; inset:0; background:var(--surface-3); border-radius:22px; transition:.2s; cursor:pointer; }
.uv2 .switch__sl::before { content:""; position:absolute; height:17px; width:17px; left:3px; top:3px; background:#fff; border-radius:50%; transition:.2s; box-shadow:0 1px 3px rgba(0,0,0,.2); }
.uv2 .switch input:checked + .switch__sl { background:var(--accent); }
.uv2 .switch input:checked + .switch__sl::before { transform:translateX(17px); }
.uv2 .switch--danger input:checked + .switch__sl { background:var(--danger); }

/* cards / labels / inputs */
.uv2 .card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); box-shadow:var(--shadow-card); margin-bottom:var(--s-4); }
.uv2 .card__head { display:flex; align-items:center; justify-content:space-between; gap:var(--s-4); padding:var(--s-4) var(--s-5); border-bottom:1px solid var(--border); flex-wrap:wrap; }
.uv2 .card__head h2 { font-size:15px; font-weight:700; }
.uv2 .card__head .sub { font-size:11.5px; color:var(--text-3); margin-top:2px; }
.uv2 .card__body { padding:var(--s-5); }
.uv2 .lbl { display:block; font-size:9.5px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--text-3); margin-bottom:6px; }
.uv2 .input { width:100%; border:1px solid var(--border); background:var(--surface); color:var(--text); font-family:inherit; font-size:13.5px; padding:9px 12px; border-radius:var(--radius-sm); transition:border .14s, box-shadow .14s; }
.uv2 .input::placeholder { color:var(--text-3); }
.uv2 .input:focus { outline:none; border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-weak); }
.uv2 .input--mono { font-family:var(--font-num); letter-spacing:.02em; }
.uv2 .opt-tag { font-size:9px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--text-3); border:1px solid var(--border); border-radius:5px; padding:1px 5px; margin-left:6px; vertical-align:middle; }
.uv2 .hint { font-size:11px; color:var(--text-3); margin-top:5px; line-height:1.4; }

/* P1 ficha */
.uv2 .ficha { display:grid; grid-template-columns:auto 1fr auto; gap:var(--s-5); align-items:start; padding:var(--s-5); }
.uv2 .ficha__ava { width:66px; height:66px; border-radius:18px; background:var(--accent); color:#fff; display:grid; place-items:center; font-size:26px; font-weight:700; flex-shrink:0; }
.uv2 .ficha__id { min-width:0; }
.uv2 .ficha__name { font-size:22px; font-weight:700; letter-spacing:-.02em; line-height:1.1; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.uv2 .ficha__user { font-family:var(--font-num); font-size:13px; color:var(--text-2); margin-top:4px; }
.uv2 .ficha__meta { display:flex; flex-wrap:wrap; gap:var(--s-2) var(--s-4); margin-top:var(--s-3); }
.uv2 .metacell { font-size:12px; }
.uv2 .metacell b { display:block; font-size:9.5px; font-weight:600; letter-spacing:.07em; text-transform:uppercase; color:var(--text-3); margin-bottom:2px; }
.uv2 .metacell span { color:var(--text-2); font-weight:500; }
.uv2 .ficha__state { display:flex; flex-direction:column; align-items:flex-end; gap:10px; }
.uv2 .state-row { display:flex; align-items:center; gap:9px; font-size:12.5px; font-weight:600; color:var(--text-2); }
.uv2 .ficha.is-inactive { opacity:.62; filter:saturate(.6); }
.uv2 .ficha.is-inactive .ficha__ava { background:var(--text-3); }
.uv2 .formgrid { display:grid; grid-template-columns:repeat(2,1fr); gap:var(--s-4); padding:0 var(--s-5) var(--s-5); }
.uv2 .formgrid .full { grid-column:1/-1; }
.uv2 .subtle-row { display:flex; flex-wrap:wrap; gap:var(--s-4); padding:var(--s-4) var(--s-5); border-top:1px solid var(--border); background:var(--surface-2); border-radius:0 0 var(--radius-lg) var(--radius-lg); align-items:center; }

/* tabs */
.uv2 .tabs { display:flex; gap:4px; border-bottom:1px solid var(--border); margin:var(--s-5) 0; flex-wrap:wrap; }
.uv2 .tab { position:relative; border:0; background:transparent; color:var(--text-2); font-size:13.5px; font-weight:600; padding:11px 16px 13px; border-radius:8px 8px 0 0; display:inline-flex; align-items:center; gap:8px; transition:color .14s; cursor:pointer; }
.uv2 .tab:hover { color:var(--text); }
.uv2 .tab.is-active { color:var(--accent-strong); }
.uv2 .tab.is-active::after { content:""; position:absolute; left:8px; right:8px; bottom:-1px; height:2.5px; background:var(--accent); border-radius:2px; }
.uv2 .tab__n { font-size:10px; font-weight:700; color:var(--text-3); border:1px solid var(--border); border-radius:5px; padding:1px 5px; }
.uv2 .tab.is-active .tab__n { color:var(--accent-strong); border-color:var(--accent-weak); background:var(--accent-weak); }
.uv2 .tab--future { color:var(--text-3); }
.uv2 .tabpanel { display:none; }
.uv2 .tabpanel.is-active { display:block; }

/* P2 matriz */
.uv2 .matrix-toolbar { display:flex; align-items:center; justify-content:space-between; gap:var(--s-4); flex-wrap:wrap; padding:var(--s-4) var(--s-5); border-bottom:1px solid var(--border); }
.uv2 .matrix-legend { display:flex; flex-wrap:wrap; gap:var(--s-4); font-size:11px; color:var(--text-3); align-items:center; }
.uv2 .leg { display:inline-flex; align-items:center; gap:6px; font-weight:600; }
.uv2 .leg__sw { width:22px; height:14px; border-radius:4px; border:1px solid var(--border); }
.uv2 .mtx { width:100%; border-collapse:collapse; font-size:var(--fs-table); }
.uv2 .mtx thead th { background:var(--thead-bg); color:var(--text-3); font-size:10px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; text-align:left; padding:11px var(--s-4); border-bottom:1px solid var(--border-strong); white-space:nowrap; }
.uv2 .mtx thead th.c-acc { width:270px; } .uv2 .mtx thead th.c-lvl { width:230px; } .uv2 .mtx thead th.c-emp { width:270px; }
.uv2 .mtx tbody td { padding:10px var(--s-4); border-bottom:1px solid var(--row-border); vertical-align:middle; }
.uv2 .mrow--sec { background:var(--surface-2); cursor:pointer; }
.uv2 .mrow--sec>td { font-weight:700; color:var(--text); border-bottom:1px solid var(--border); }
.uv2 .mrow--sec:hover { background:var(--surface-3); }
.uv2 .mrow--mod:hover { background:var(--row-hover); }
.uv2 .mrow.is-collapsed { display:none; }
.uv2 .mrow--locked { opacity:.72; }
.uv2 .concept { display:inline-flex; align-items:center; gap:9px; }
.uv2 .tw { width:12px; font-size:10px; color:var(--text-3); transition:transform .18s; display:inline-block; }
.uv2 .mrow--sec.is-open .tw { transform:rotate(90deg); }
.uv2 .mod-indent { padding-left:34px; }
.uv2 .mod-name { font-weight:600; color:var(--text); }
.uv2 .mod-sub { font-size:10.5px; color:var(--text-3); font-weight:500; margin-top:1px; }
.uv2 .mod-agg { font-size:9px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--accent-strong); background:var(--accent-weak); border-radius:4px; padding:1px 5px; margin-left:7px; }
.uv2 .lock { color:var(--text-3); font-size:12px; }
/* tri-state */
.uv2 .tri { display:inline-flex; gap:2px; padding:3px; background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-sm); }
.uv2 .tri__b { border:0; background:transparent; color:var(--text-3); font-size:11.5px; font-weight:600; padding:5px 10px; border-radius:6px; transition:all .13s; display:inline-flex; align-items:center; gap:5px; cursor:pointer; }
.uv2 .tri__b:hover { color:var(--text-2); }
.uv2 .tri__b.on-inh { background:var(--surface); color:var(--text-2); box-shadow:0 1px 2px rgba(0,0,0,.08); }
.uv2 .tri__b.on-allow { background:var(--accent); color:#fff; }
.uv2 .tri__b.on-deny { background:var(--neg); color:#fff; }
.uv2 .tri--disabled { opacity:.55; pointer-events:none; }
.uv2 .inh-view { display:inline-flex; align-items:center; gap:8px; font-size:11.5px; color:var(--text-3); font-weight:600; }
.uv2 .inh-view .dot { width:8px; height:8px; border-radius:50%; }
.uv2 .inh-view .dot--allow { background:var(--accent); } .uv2 .inh-view .dot--deny { background:var(--neg); }
.uv2 .inh-view em { font-style:normal; color:var(--text-2); }
.uv2 .explicit-tag { font-size:8.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--accent-strong); border:1px solid var(--accent-weak); background:var(--accent-weak); border-radius:4px; padding:1px 4px; margin-left:2px; }
/* nivel */
.uv2 .lvl { display:inline-flex; gap:2px; padding:2px; background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-sm); }
.uv2 .lvl__b { border:0; background:transparent; color:var(--text-3); font-size:11px; font-weight:600; padding:5px 9px; border-radius:6px; transition:all .13s; cursor:pointer; }
.uv2 .lvl__b:hover { color:var(--text-2); }
.uv2 .lvl__b.is-active { background:var(--surface); color:var(--text); box-shadow:0 1px 2px rgba(0,0,0,.1); }
.uv2 .lvl__b.is-active[data-lvl="escritura"] { color:var(--warn); }
.uv2 .lvl__b.is-active[data-lvl="gestion"] { color:var(--accent-strong); }
.uv2 .lvl.is-off { opacity:.4; pointer-events:none; }
.uv2 .lvl-na { font-size:11px; color:var(--text-3); font-style:italic; }
/* empresas */
.uv2 .emp-cell { display:inline-flex; align-items:center; gap:7px; flex-wrap:wrap; }
.uv2 .emp-btn { border:1px dashed var(--border-strong); background:var(--surface); color:var(--text-2); font-size:11.5px; font-weight:600; padding:5px 10px; border-radius:var(--radius-sm); display:inline-flex; align-items:center; gap:7px; cursor:pointer; }
.uv2 .emp-btn:hover { border-color:var(--accent); color:var(--accent-strong); }
.uv2 .emp-btn.is-custom { border-style:solid; border-color:var(--accent-weak); background:var(--accent-weak); color:var(--accent-strong); }
.uv2 .emp-default { font-size:10.5px; color:var(--text-3); font-style:italic; }
.uv2 .emp-cell.is-off { opacity:.4; pointer-events:none; }
/* efectivo read mode */
.uv2 .mtx.is-effective .tri, .uv2 .mtx.is-effective .lvl, .uv2 .mtx.is-effective .emp-btn { display:none; }
.uv2 .eff { display:none; align-items:center; gap:8px; font-size:12px; font-weight:600; }
.uv2 .mtx.is-effective .eff { display:inline-flex; }
.uv2 .eff--yes { color:var(--accent-strong); } .uv2 .eff--no { color:var(--text-3); }
.uv2 .eff__lvl { font-size:10px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--text-2); background:var(--surface-2); border-radius:5px; padding:2px 6px; }

/* P3 plantillas */
.uv2 .tpl-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:var(--s-3); }
.uv2 .tpl { text-align:left; border:1.5px solid var(--border); background:var(--surface); border-radius:var(--radius); padding:var(--s-4); transition:all .15s; position:relative; cursor:pointer; }
.uv2 .tpl:hover { border-color:var(--border-strong); box-shadow:var(--shadow-card); }
.uv2 .tpl.is-applied { border-color:var(--accent); background:var(--accent-weak); }
.uv2 .tpl__ico { width:34px; height:34px; border-radius:var(--radius-sm); background:var(--surface-2); display:grid; place-items:center; font-size:16px; margin-bottom:var(--s-3); color:var(--text-2); }
.uv2 .tpl.is-applied .tpl__ico { background:var(--accent); color:#fff; }
.uv2 .tpl__name { font-size:13.5px; font-weight:700; }
.uv2 .tpl__desc { font-size:11px; color:var(--text-3); margin-top:3px; line-height:1.35; }
.uv2 .tpl__check { position:absolute; top:12px; right:12px; color:var(--accent); font-size:14px; display:none; }
.uv2 .tpl.is-applied .tpl__check { display:block; }
.uv2 .diffbar { display:flex; align-items:center; gap:var(--s-3); padding:var(--s-4) var(--s-5); background:var(--warn-bg); border-radius:var(--radius); margin-bottom:var(--s-4); flex-wrap:wrap; }

/* P4 vendedor */
.uv2 .union-note { display:flex; gap:12px; padding:var(--s-4) var(--s-5); background:var(--accent-weak); border-radius:var(--radius); margin-bottom:var(--s-4); }
.uv2 .union-note__ico { font-size:18px; color:var(--accent-strong); }
.uv2 .union-note p { font-size:12.5px; color:var(--accent-strong); line-height:1.5; }
.uv2 .vlink { display:grid; grid-template-columns:auto 1fr auto; gap:var(--s-4); align-items:center; padding:var(--s-4) var(--s-5); border:1px solid var(--border); border-radius:var(--radius); }
.uv2 .vlink__ava { width:44px; height:44px; border-radius:12px; background:#2563c9; color:#fff; display:grid; place-items:center; font-weight:700; font-size:16px; }
.uv2 .vlink__data { display:flex; flex-wrap:wrap; gap:var(--s-2) var(--s-5); }
.uv2 .dl { font-size:12.5px; }
.uv2 .dl b { display:block; font-size:9.5px; font-weight:600; letter-spacing:.07em; text-transform:uppercase; color:var(--text-3); margin-bottom:2px; }
.uv2 .dl span { color:var(--text); font-weight:600; }
.uv2 .vempty { border:1.5px dashed var(--border-strong); border-radius:var(--radius); padding:var(--s-6); text-align:center; color:var(--text-3); }
.uv2 .vempty h4 { font-size:14px; color:var(--text-2); margin-bottom:6px; }

/* P5 gates */
.uv2 .gate { display:grid; grid-template-columns:auto 1fr auto; gap:var(--s-4); align-items:center; padding:var(--s-4) var(--s-5); border:1px solid var(--border); border-radius:var(--radius); margin-bottom:var(--s-3); background:var(--surface); }
.uv2 .gate__ico { width:38px; height:38px; border-radius:var(--radius-sm); background:var(--surface-2); display:grid; place-items:center; font-size:16px; color:var(--text-2); }
.uv2 .gate__body h4 { font-size:13.5px; font-weight:700; display:flex; align-items:center; gap:8px; }
.uv2 .gate__body p { font-size:11.5px; color:var(--text-3); margin-top:3px; line-height:1.45; }
.uv2 .gate__body .links { font-size:10.5px; color:var(--text-2); margin-top:5px; }
.uv2 .gate__body .links code { font-family:var(--font-num); font-size:10px; background:var(--surface-2); padding:1px 5px; border-radius:4px; }
.uv2 .gate--danger { border:1.5px solid var(--danger); background:var(--danger-bg); }
.uv2 .gate--danger .gate__ico { background:var(--danger); color:#fff; }
.uv2 .gate--danger h4 { color:var(--neg); }
.uv2 .risk-tag { font-size:9px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:#fff; background:var(--danger); border-radius:5px; padding:2px 7px; }
.uv2 .gates-sec { font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--text-3); margin:var(--s-5) 0 var(--s-3); }
.uv2 .gates-sec:first-child { margin-top:0; }

/* P6 reserved */
.uv2 .reserved { border:1.5px dashed var(--border-strong); border-radius:var(--radius-lg); padding:var(--s-6); text-align:center; color:var(--text-3); }
.uv2 .reserved__inner { background:var(--surface); border-radius:var(--radius); padding:var(--s-6) var(--s-5); max-width:560px; margin:0 auto; }
.uv2 .reserved h3 { font-size:16px; color:var(--text-2); margin-bottom:8px; }

@media(max-width:1080px){ .uv2 .formgrid{grid-template-columns:1fr} .uv2 .ficha{grid-template-columns:auto 1fr} .uv2 .ficha__state{grid-column:1/-1;flex-direction:row;align-items:center} }
