:root{
  --bg:#f3f5f9; --panel:#ffffff; --panel2:#f8fafc; --ink:#14213a; --ink2:#43506b; --muted:#6b7690;
  --line:#e2e7ef; --line2:#d3dae6; --pri:#234e8c; --pri2:#2f66b3; --pri-soft:#e7eefa;
  --ok:#1f8a5b; --ok-soft:#e3f4ec; --warn:#b4690e; --warn-soft:#fdf1e1; --bad:#b9363a; --bad-soft:#fbe7e7;
  --r:#7b3fa0; --r-soft:#f2e9f8;
  --c1:#234e8c; --c2:#0f7c86; --c3:#7b3fa0; --c4:#c2771b; --c5:#2f8a4a; --c6:#b0436b;
  --shadow:0 1px 2px rgba(20,33,58,.05),0 4px 14px rgba(20,33,58,.06);
  --radius:12px; --side:252px; --top:60px;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0f1522; --panel:#161e2e; --panel2:#1b2436; --ink:#e6ebf4; --ink2:#b8c2d6; --muted:#8a96ad;
  --line:#253049; --line2:#2f3b57; --pri:#6d9be0; --pri2:#86afec; --pri-soft:#1d2b45;
  --ok:#4cc38a; --ok-soft:#14302a; --warn:#e3a14b; --warn-soft:#33270f; --bad:#ec6b6f; --bad-soft:#3a1c20;
  --r:#b98be0; --r-soft:#2b1f3a; --shadow:0 1px 2px rgba(0,0,0,.3),0 6px 18px rgba(0,0,0,.25);
}}
*{box-sizing:border-box} html{-webkit-text-size-adjust:100%}
html,body{overflow-x:hidden} body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 var(--font)}
a{color:var(--pri);text-decoration:none} a:hover{text-decoration:underline}
h1,h2,h3{line-height:1.25;margin:0 0 .4em} h1{font-size:1.7rem;letter-spacing:-.01em} h2{font-size:1.05rem} h3{font-size:.95rem}
code{font-family:var(--mono);font-size:.86em;background:var(--panel2);padding:.1em .35em;border-radius:5px;border:1px solid var(--line)}
.muted{color:var(--muted)} .small{font-size:.82rem}
.ic{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:-3px}

/* ---------- cabecera ---------- */
.top{position:sticky;top:0;z-index:30;height:var(--top);display:flex;align-items:center;gap:16px;padding:0 18px;
  background:var(--panel);border-bottom:1px solid var(--line);box-shadow:0 1px 0 rgba(0,0,0,.02)}
.brand{flex:none;display:flex;align-items:center;gap:10px;color:var(--ink);min-width:calc(var(--side) - 18px)}
.brand:hover{text-decoration:none} .brand b{display:block;font-size:1.02rem} .brand small{display:block;color:var(--muted);font-size:.72rem;margin-top:-2px}
.logo{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--pri),#3f7fd0);color:#fff;font-weight:800;font-size:1.05rem}
.logo-lg{width:64px;height:64px;font-size:2rem;border-radius:16px;margin-bottom:18px}
.topsearch{position:relative;flex:1;min-width:0;max-width:760px;display:flex;align-items:center;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:0 12px;gap:8px;color:var(--muted)}
.topsearch:focus-within{border-color:var(--pri2);box-shadow:0 0 0 3px var(--pri-soft)}
.topsearch input{flex:1;border:0;background:transparent;color:var(--ink);font:inherit;height:40px;outline:0;min-width:0}
.sugg{position:absolute;left:0;right:0;top:46px;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);overflow:hidden}
.sugg a{display:flex;justify-content:space-between;gap:10px;padding:9px 14px;color:var(--ink);border-bottom:1px solid var(--line)}
.sugg a:hover,.sugg a.sel{background:var(--pri-soft);text-decoration:none} .sugg a span{color:var(--muted);font-size:.8rem;white-space:nowrap}
.user{display:flex;align-items:center;gap:10px;margin-left:auto;color:var(--ink2);font-size:.9rem}
.btn-ic{display:grid;place-items:center;width:38px;height:38px;border-radius:9px;border:1px solid var(--line);background:var(--panel);color:var(--ink2);cursor:pointer}
.btn-ic:hover{background:var(--panel2);text-decoration:none}
.only-m{display:none}

/* ---------- estructura ---------- */
.shell{display:grid;grid-template-columns:var(--side) 1fr;min-height:calc(100vh - var(--top))}
.side{position:sticky;top:var(--top);height:calc(100vh - var(--top));overflow:auto;padding:14px 10px 30px;background:var(--panel);border-right:1px solid var(--line)}
.side a{display:flex;align-items:center;gap:11px;padding:8px 12px;border-radius:9px;color:var(--ink2);font-weight:500;font-size:.93rem}
.side a:hover{background:var(--panel2);text-decoration:none;color:var(--ink)}
.side a.on{background:var(--pri-soft);color:var(--pri);font-weight:650}
.side .sec{margin:18px 12px 6px;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700}
.main{padding:22px 28px 60px;min-width:0}
.scrim{display:none}
body.full .main{padding:0}

/* ---------- componentes ---------- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;min-width:0}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.card-h h2{margin:0;display:flex;align-items:center;gap:8px}
.btn{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border-radius:9px;background:var(--pri);color:#fff;border:0;font:600 .92rem var(--font);cursor:pointer;white-space:nowrap}
.btn:hover{background:var(--pri2);text-decoration:none} .btn-lg{padding:12px 20px;font-size:1rem;justify-content:center}
.btn-ghost{background:var(--panel);color:var(--pri);border:1px solid var(--line2)} .btn-ghost:hover{background:var(--pri-soft)}
.tag{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:99px;font-size:.75rem;font-weight:600;background:var(--panel2);color:var(--ink2);border:1px solid var(--line);white-space:nowrap}
.tag .ic{width:13px;height:13px} .tag-sm{font-size:.68rem;padding:1px 7px}
.tag-normativa{background:#e7eefa;color:#234e8c;border-color:#cfdcf3}.tag-reglamentos{background:#e3f3f4;color:#0f6c75;border-color:#c5e6e8}
.tag-convenios{background:#f2e9f8;color:#6c3591;border-color:#e2d0ef}.tag-procedimientos{background:#fbf0e1;color:#9a5c10;border-color:#f1dcbd}
.tag-rrhh{background:#e5f3e9;color:#25723c;border-color:#c8e5d0}.tag-planificacion,.tag-economia{background:#f9e6ee;color:#9b3a5e;border-color:#efcadb}
.tag-t-fuente{color:var(--c1)}.tag-t-concepto{color:var(--c4)}.tag-t-entidad{color:var(--c5)}.tag-t-sintesis,.tag-t-resumen{color:var(--c6)}.tag-t-texto{color:var(--c2)}.tag-t-heredado{color:var(--muted)}
.tag-r{background:var(--r-soft);color:var(--r);border-color:transparent}.tag-warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}
.tag-estado-vigente{background:var(--ok-soft);color:var(--ok)}.tag-estado-derogado,.tag-estado-sustituido{background:var(--bad-soft);color:var(--bad)}
@media (prefers-color-scheme:dark){.tag[class*="tag-normativa"],.tag-reglamentos,.tag-convenios,.tag-procedimientos,.tag-rrhh,.tag-planificacion,.tag-economia{background:var(--panel2);border-color:var(--line2);filter:brightness(1.6) saturate(.8)}}
.pill{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:6px;font-size:.7rem;font-weight:700;background:var(--panel2);color:var(--ink2);border:1px solid var(--line)}
.pill .ic{width:12px;height:12px} .pill-ok{background:var(--ok-soft);color:var(--ok);border-color:transparent}
.pill-warn{background:var(--warn-soft);color:var(--warn);border-color:transparent} .pill-r{background:var(--r-soft);color:var(--r);border-color:transparent}
.chip{display:inline-block;margin:0 4px 4px 0;padding:1px 8px;border-radius:6px;background:var(--panel2);border:1px solid var(--line);font-size:.78rem}
.count{display:inline-block;min-width:20px;padding:0 6px;border-radius:99px;background:var(--panel2);border:1px solid var(--line);font-size:.72rem;color:var(--muted);text-align:center;font-weight:600}
.flash{padding:10px 14px;border-radius:9px;margin-bottom:14px;font-size:.92rem}
.flash-ok{background:var(--ok-soft);color:var(--ok)}.flash-error{background:var(--bad-soft);color:var(--bad)}
.note{display:flex;gap:8px;align-items:flex-start;padding:9px 12px;border-radius:9px;background:var(--pri-soft);color:var(--ink2);font-size:.85rem;margin-top:10px}
.hint{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border-radius:9px;background:var(--r-soft);color:var(--ink2);font-size:.85rem}
ul.plain{list-style:none;margin:0;padding:0} ul.plain li{padding:6px 0;border-bottom:1px dashed var(--line);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
ul.plain li:last-child{border-bottom:0} ul.plain.cols{columns:2 260px;column-gap:24px} ul.plain.cols li{break-inside:avoid}
a.broken{color:var(--warn);text-decoration:underline dotted;text-underline-offset:3px}
.empty{text-align:center;padding:50px 20px;color:var(--ink2)} .empty.left{text-align:left;padding:10px 0 20px}
.sub{margin-top:18px;font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--panel)}
.seg a{padding:7px 12px;color:var(--ink2);font-size:.85rem;display:flex;align-items:center;gap:5px;border-right:1px solid var(--line)}
.seg a:last-child{border-right:0} .seg a.on{background:var(--pri-soft);color:var(--pri);font-weight:650} .seg a:hover{text-decoration:none;background:var(--panel2)}
.seg-wrap{flex-wrap:wrap;margin:6px 0 16px}

/* ---------- inicio ---------- */
.hero{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:18px;flex-wrap:wrap}
.hero p{margin:0;max-width:760px} .hero-actions{display:flex;gap:10px;flex-wrap:wrap}
.kpis{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:12px;margin-bottom:18px}
.kpis-6{grid-template-columns:repeat(6,minmax(0,1fr))}
.kpi{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:12px;align-items:center;padding:14px 16px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--ink)}
a.kpi:hover{text-decoration:none;border-color:var(--pri2);transform:translateY(-1px)} .kpi{transition:transform .12s,border-color .12s}
.kpi b{font-size:1.65rem;line-height:1.1;font-variant-numeric:tabular-nums} .kpi > span:last-child{grid-column:2;color:var(--muted);font-size:.8rem}
.k-ic{grid-row:span 2;display:grid;place-items:center;width:42px;height:42px;border-radius:11px;color:#fff}
.k-ic .ic{width:21px;height:21px}
.c1{background:var(--c1)}.c2{background:var(--c2)}.c3{background:var(--c3)}.c4{background:var(--c4)}.c5{background:var(--c5)}.c6{background:var(--c6)}.c-ok{background:var(--ok)}.c-warn{background:var(--warn)}
.grid-home{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;align-items:start}
.grid-home .span2{grid-column:span 2;grid-row:span 2}
.cats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.cat{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--panel2)}
.cat-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.doclist{list-style:none;margin:0;padding:0} .doclist li{display:flex;justify-content:space-between;gap:8px;padding:5px 0;border-bottom:1px dashed var(--line);font-size:.88rem}
.doclist li:last-child{border-bottom:0} .doclist .mini{display:flex;gap:4px;flex:none;align-items:center}
.meter{margin:6px 0 12px} .meter-h{display:flex;justify-content:space-between;font-size:.85rem;color:var(--ink2);margin-bottom:5px}
.bar{height:8px;background:var(--panel2);border:1px solid var(--line);border-radius:99px;overflow:hidden}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--pri),var(--c2));border-radius:99px}
.timeline{list-style:none;margin:0;padding:0 0 0 14px;border-left:2px solid var(--line)}
.timeline li{position:relative;padding:5px 0 9px 10px;font-size:.86rem;display:flex;flex-direction:column}
.timeline li:before{content:"";position:absolute;left:-20px;top:10px;width:10px;height:10px;border-radius:50%;background:var(--panel);border:2px solid var(--pri2)}
.t-d{color:var(--muted);font-size:.75rem;font-variant-numeric:tabular-nums}

/* ---------- listas ---------- */
.list-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px;flex-wrap:wrap}
.list-head p{margin:0} .filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.filters input[type=search]{height:38px;border:1px solid var(--line);border-radius:9px;padding:0 12px;background:var(--panel);color:var(--ink);font:inherit;min-width:220px}
.groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(520px,1fr));gap:16px}
.tbl{width:100%;border-collapse:collapse;font-size:.9rem}
.tbl th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;padding:6px 8px;border-bottom:1px solid var(--line2)}
.tbl td{padding:8px;border-bottom:1px solid var(--line);vertical-align:top} .tbl tr:last-child td{border-bottom:0}
.tbl tbody tr:hover td{background:var(--panel2)}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}

/* ---------- página ---------- */
.page-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px;align-items:start}
.article{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px 34px 34px;min-width:0}
.crumbs{font-size:.82rem;color:var(--muted);margin-bottom:10px} .crumbs a{color:var(--muted)}
.a-head{border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:18px} .a-tags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.a-head h1{font-size:1.85rem}
.aside{position:sticky;top:calc(var(--top) + 18px);display:flex;flex-direction:column;gap:14px;max-height:calc(100vh - var(--top) - 36px);overflow:auto}
.box{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}
.box h3{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);display:flex;gap:8px;align-items:center}
.meta{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font-size:.84rem}
.meta dt{color:var(--muted);text-transform:capitalize} .meta dd{margin:0;word-break:break-word}
.prose{font-size:1rem;line-height:1.7;max-width:100%}
.prose h1{font-size:1.45rem;margin-top:1.4em} .prose h2{font-size:1.2rem;margin-top:1.6em;padding-bottom:.25em;border-bottom:1px solid var(--line)} .prose h3{font-size:1.05rem;margin-top:1.3em}
.prose p,.prose ul,.prose ol{margin:.6em 0} .prose li{margin:.2em 0}
.prose blockquote{margin:1em 0;padding:.4em 1em;border-left:3px solid var(--pri2);background:var(--pri-soft);border-radius:0 8px 8px 0;color:var(--ink2)}
.prose a[href^="/falta/"]{color:var(--warn);text-decoration:underline dotted;text-underline-offset:3px}
.prose hr{border:0;border-top:1px solid var(--line);margin:1.6em 0}
.prose pre{background:var(--panel2);border:1px solid var(--line);padding:12px;border-radius:9px;overflow:auto}
.tabla{overflow-x:auto;margin:1em 0;border:1px solid var(--line);border-radius:9px}
.prose table{border-collapse:collapse;width:100%;font-size:.88rem}
.prose th,.prose td{border-bottom:1px solid var(--line);padding:6px 10px;text-align:left;vertical-align:top}
.prose th{background:var(--panel2);font-weight:650} .prose tr:last-child td{border-bottom:0}
.prose-texto{font-size:.95rem}

/* ---------- búsqueda ---------- */
.bigsearch{display:flex;gap:10px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:6px 6px 6px 14px;margin-bottom:12px;box-shadow:var(--shadow);color:var(--muted)}
.bigsearch input{flex:1;border:0;outline:0;background:transparent;font:inherit;font-size:1.05rem;color:var(--ink);height:42px;min-width:0}
.results{display:grid;grid-template-columns:repeat(auto-fill,minmax(480px,1fr));gap:12px}
.result{display:block;color:var(--ink)} .result:hover{text-decoration:none;border-color:var(--pri2)}
.r-h{display:flex;gap:8px;align-items:center;flex-wrap:wrap} .snip{margin:6px 0;color:var(--ink2);font-size:.9rem}
mark{background:#ffe9a8;color:inherit;padding:0 2px;border-radius:3px} @media (prefers-color-scheme:dark){mark{background:#5c4a12}}

/* ---------- grafo ---------- */
.graph-wrap{position:relative;display:flex;flex-direction:column}
.graph-bar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 24px;border-bottom:1px solid var(--line);background:var(--panel);flex-wrap:wrap}
.graph-bar h1{font-size:1.25rem;margin:0} .graph-bar p{margin:0;font-size:.85rem}
.graph{flex:none;position:relative;overflow:hidden;min-height:320px;background:radial-gradient(circle at 50% 40%,var(--panel) 0,var(--bg) 70%)}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:.8rem;color:var(--ink2)} .legend span{display:flex;gap:5px;align-items:center}
.legend i{width:11px;height:11px;border-radius:50%;display:inline-block}
.chk{display:flex;gap:6px;align-items:center;font-size:.85rem;color:var(--ink2)}
.graph-info{position:absolute;right:20px;bottom:20px;width:320px;max-height:50vh;overflow:auto}

/* ---------- subir ---------- */
.upload{display:flex;flex-direction:column;gap:14px}
.drop{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:200px;border:2px dashed var(--line2);border-radius:12px;background:var(--panel2);cursor:pointer;text-align:center;padding:20px}
.drop .ic{width:38px;height:38px;color:var(--pri)} .drop.over{border-color:var(--pri2);background:var(--pri-soft)}
.drop input{position:absolute;inset:0;opacity:0;cursor:pointer}
.flist{font-size:.85rem;color:var(--ink)} .form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
label{display:flex;flex-direction:column;gap:5px;font-size:.85rem;font-weight:600;color:var(--ink2)}
select,textarea,input[type=text],input[type=password],input:not([type]){font:inherit;font-weight:400;color:var(--ink);background:var(--panel);border:1px solid var(--line2);border-radius:9px;padding:9px 11px}
select:focus,textarea:focus,input:focus{outline:0;border-color:var(--pri2);box-shadow:0 0 0 3px var(--pri-soft)}

/* ---------- login ---------- */
.login-wrap{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}
.login-art{background:linear-gradient(145deg,#173866,#234e8c 45%,#0f7c86);color:#eaf1fb;display:grid;place-items:center;padding:40px}
.art-inner{max-width:440px} .art-inner h1{font-size:2.6rem;margin:0 0 8px} .art-inner p{font-size:1.1rem;opacity:.9}
.art-list{margin:26px 0 0;padding:0;list-style:none} .art-list li{padding:8px 0 8px 26px;position:relative;opacity:.9}
.art-list li:before{content:"";position:absolute;left:0;top:14px;width:12px;height:12px;border-radius:3px;background:rgba(255,255,255,.35)}
.login{align-self:center;justify-self:center;width:min(400px,92vw);display:flex;flex-direction:column;gap:14px;padding:30px}

/* ---------- responsive ---------- */
@media (max-width:1500px){.kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-home{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-home .span2{grid-row:auto}}
@media (max-width:1250px){.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}.page-grid{grid-template-columns:minmax(0,1fr) 290px}.kpis-6{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:980px){
  :root{--top:56px}
  .only-m{display:grid} .hide-s{display:none} .brand{min-width:0} .brand small{display:none}
  .shell{grid-template-columns:1fr}
  .side{position:fixed;left:0;top:var(--top);bottom:0;width:280px;height:auto;z-index:40;transform:translateX(-102%);transition:transform .2s;box-shadow:var(--shadow)}
  body.nav-open .side{transform:none} body.nav-open .scrim{display:block;position:fixed;inset:var(--top) 0 0 0;background:rgba(10,16,30,.35);z-index:35}
  .main{padding:16px 14px 50px}
  .page-grid{grid-template-columns:1fr} .aside{position:static;max-height:none}
  .article{padding:16px 16px 24px} .a-head h1{font-size:1.45rem}
  .grid-home,.grid-2,.grid-3,.cats{grid-template-columns:1fr} .grid-home .span2{grid-column:auto}
  .kpis,.kpis-6{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px} .kpi{padding:10px 12px} .kpi b{font-size:1.3rem} .k-ic{width:36px;height:36px}
  .groups,.results{grid-template-columns:1fr} .form-row{grid-template-columns:1fr}
  .login-wrap{grid-template-columns:1fr} .login-art{padding:34px 24px} .art-list{display:none} .art-inner h1{font-size:2rem}
  .graph-info{left:12px;right:12px;width:auto} .filters input[type=search]{min-width:0;flex:1}
  .top{gap:10px;padding:0 10px} .topsearch input::placeholder{font-size:.85rem}
}
@media (max-width:560px){.brand > span:last-child{display:none} h1{font-size:1.4rem} .user .pill-r{display:none} .user{gap:6px}}

.userlink{color:var(--ink2);font-weight:600} .userlink:hover{color:var(--pri)}
.grid-admin{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:16px;align-items:start}
.ucard{display:flex;flex-direction:column;gap:10px;padding:14px 0;border-bottom:1px dashed var(--line)}
.u-h{display:flex;gap:6px;align-items:center;flex-wrap:wrap} .u-h b{font-size:1rem;margin-right:4px}
.u-perm{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center}
.u-row{display:flex;gap:12px;justify-content:space-between;align-items:center;flex-wrap:wrap} .u-row .inline{flex:1;min-width:240px}
.ucard:last-child{border-bottom:0} .ucard .who b{display:block} .chks{display:flex;gap:14px;flex-wrap:wrap}
.chks label{flex-direction:row;align-items:center;gap:6px;font-weight:500}
.inline{display:flex;gap:8px;align-items:end} .inline input{min-width:0;flex:1}
.btn-sm{padding:7px 12px;font-size:.82rem} .btn-danger{background:var(--bad)} .btn-danger:hover{background:var(--bad);filter:brightness(1.1)}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.narrow{max-width:520px}
@media (max-width:980px){.grid-admin,.u-perm,.form-grid{grid-template-columns:1fr}.u-row .inline{min-width:0}}
