:root{
  --bg:#f4f5f7; --panel:#ffffff; --ink:#1a2230; --muted:#5b6675; --line:#e2e6ec;
  --navy:#1f3864; --navy2:#2e5496; --accent:#2e5496;
  --red:#c0392b; --redbg:#fdecea; --amber:#b9770e; --amberbg:#fdf3e0;
  --teal:#177e79; --tealbg:#e6f4f3; --slate:#4b5563; --slatebg:#eef0f3;
  --blue:#2563a8; --bluebg:#e8f0fa; --green:#2f7d32; --greenbg:#e9f5ea;
  --note:#8a6d1a; --notebg:#fbf6e3;
  --shadow:0 1px 3px rgba(20,30,50,.08),0 1px 2px rgba(20,30,50,.06);
  box-sizing:border-box; padding-top:env(safe-area-inset-top,0px); padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0f141b; --panel:#171d27; --ink:#e6eaf0; --muted:#9aa6b6; --line:#28303c;
  --navy:#4a76c4; --navy2:#5b84cf; --accent:#5b84cf;
  --redbg:#3a1d1a; --amberbg:#3a2c14; --tealbg:#123330; --slatebg:#1e242e; --bluebg:#13263c; --greenbg:#14301a; --notebg:#2b2611;
  --shadow:0 1px 3px rgba(0,0,0,.4);
}}
:root[data-theme="dark"]{
  --bg:#0f141b; --panel:#171d27; --ink:#e6eaf0; --muted:#9aa6b6; --line:#28303c;
  --navy:#4a76c4; --navy2:#5b84cf; --accent:#5b84cf;
  --redbg:#3a1d1a; --amberbg:#3a2c14; --tealbg:#123330; --slatebg:#1e242e; --bluebg:#13263c; --greenbg:#14301a; --notebg:#2b2611;
}
*{box-sizing:border-box}
html{scroll-padding-top:env(safe-area-inset-top,0px); -webkit-text-size-adjust:100%}
body{margin:0; background:var(--bg); color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  font-size:14px; line-height:1.45; min-height:100%}
h1,h2,h3{font-family:Georgia,"Times New Roman",serif; font-weight:600; margin:0}
.wrap{max-width:1240px; margin:0 auto; padding:0 14px 60px}
header{background:var(--navy); color:#fff; position:sticky; top:0; z-index:30; padding-top:env(safe-area-inset-top,0px); box-shadow:var(--shadow)}
.hbar{max-width:1240px; margin:0 auto; padding:10px 14px; display:flex; align-items:center; gap:12px; flex-wrap:wrap}
.brand{display:flex; align-items:center; gap:10px; min-width:0}
.brand .em{font-size:22px}
.brand h1{font-size:16px; color:#fff; line-height:1.15}
.brand small{display:block; font-family:inherit; font-weight:400; opacity:.8; font-size:11px}
.htools{margin-left:auto; display:flex; gap:8px; align-items:center; flex-wrap:wrap}
.tabs{display:flex; gap:4px; background:rgba(255,255,255,.12); padding:3px; border-radius:9px}
.tab{padding:6px 13px; border-radius:7px; cursor:pointer; color:#e8edf6; font-weight:600; font-size:13px; border:none; background:transparent}
.tab.active{background:#fff; color:var(--navy)}
input,select,textarea{font:inherit; color:var(--ink); background:var(--panel); border:1px solid var(--line); border-radius:8px; padding:8px 10px; width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent); outline-offset:-1px}
.btn{border:1px solid var(--line); background:var(--panel); color:var(--ink); border-radius:8px; padding:8px 12px; cursor:pointer; font-weight:600; font-size:13px; white-space:nowrap}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:var(--navy); color:#fff; border-color:var(--navy)}
.btn.primary:hover{background:var(--navy2)}
.btn.sm{padding:5px 9px; font-size:12px}
.btn.ghost{background:transparent; color:#fff; border-color:rgba(255,255,255,.35)}
.btn.ghost:hover{background:rgba(255,255,255,.12)}
.modal .btn.ghost{color:var(--navy); border-color:var(--line)}
.modal .btn.ghost:hover{background:var(--bg)}
.btn.danger{color:var(--red); border-color:var(--red)}
.searchbox input{width:220px; max-width:46vw}
.menu{position:relative; display:inline-block}
.menu-pop{position:absolute; right:0; top:calc(100% + 6px); background:var(--panel); border:1px solid var(--line); border-radius:10px; box-shadow:var(--shadow); min-width:220px; padding:6px; display:none; z-index:50}
.menu-pop.open{display:block}
.menu-pop button{display:block; width:100%; text-align:left; background:transparent; border:none; color:var(--ink); padding:9px 10px; border-radius:7px; cursor:pointer; font-size:13px}
.menu-pop button:hover{background:var(--bg)}
.menu-pop .sep{height:1px; background:var(--line); margin:4px 2px}
.menu-pop .menu-lbl{font-size:11px; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.03em; padding:6px 10px 2px}
.acerca{text-align:center}
.acerca .em{font-size:40px; line-height:1}
.acerca h3{margin:8px 0 2px; font-size:20px; color:var(--ink)}
.acerca .ver{font-weight:700; color:var(--accent); margin-bottom:4px}
.acerca .dev{text-align:left; margin-top:16px; border-top:1px solid var(--line); padding-top:12px}
.acerca .dev .bt{font-size:11px; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.03em; margin-bottom:6px}
.acerca .fila{display:flex; justify-content:space-between; gap:12px; padding:6px 0; border-bottom:1px solid var(--line); user-select:text}
.acerca .fila .k{color:var(--muted)}
.grid{display:grid; gap:12px}
.kpis{grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); margin:14px 0}
.card{background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:14px; box-shadow:var(--shadow)}
.kpi{cursor:pointer}
.kpi .n{font-size:30px; font-weight:700; font-family:Georgia,serif; line-height:1}
.kpi .l{color:var(--muted); font-size:12.5px; margin-top:6px}
.kpi.red{border-left:4px solid var(--red)} .kpi.red .n{color:var(--red)}
.kpi.amber{border-left:4px solid var(--amber)} .kpi.amber .n{color:var(--amber)}
.kpi.navy{border-left:4px solid var(--navy)}
.sec-title{font-size:15px; margin:20px 0 10px; color:var(--ink); display:flex; align-items:center; gap:8px}
.two{display:grid; grid-template-columns:1fr 1fr; gap:12px}
@media (max-width:760px){.two{grid-template-columns:1fr}}
.list-row{display:flex; align-items:center; gap:10px; padding:9px 4px; border-bottom:1px solid var(--line)}
.list-row:last-child{border-bottom:none}
.list-row .rad{font-weight:700; font-variant-numeric:tabular-nums}
.spacer{flex:1}
.badge{display:inline-flex; align-items:center; gap:5px; padding:3px 9px; border-radius:999px; font-size:11.5px; font-weight:700; white-space:nowrap}
.b-red{background:var(--redbg); color:var(--red)} .b-amber{background:var(--amberbg); color:var(--amber)}
.b-teal{background:var(--tealbg); color:var(--teal)} .b-slate{background:var(--slatebg); color:var(--slate)}
.b-blue{background:var(--bluebg); color:var(--blue)} .b-gray{background:var(--slatebg); color:var(--muted)}
.b-green{background:var(--greenbg); color:var(--green)}
.chips{display:flex; gap:7px; flex-wrap:wrap; margin:10px 0}
.chip{padding:6px 11px; border-radius:999px; border:1px solid var(--line); background:var(--panel); cursor:pointer; font-size:12.5px; font-weight:600; color:var(--muted)}
.chip.active{background:var(--navy); color:#fff; border-color:var(--navy)}
.chip .c{opacity:.7; font-weight:700; margin-left:3px}
.filterbar{display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin:10px 0}
.filterbar .lbl{font-size:11px; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.03em; width:100%}
.tablewrap{overflow-x:auto; -webkit-overflow-scrolling:touch; border:1px solid var(--line); border-radius:12px; background:var(--panel)}
table{border-collapse:collapse; width:100%; font-size:13px; min-width:820px}
th,td{text-align:left; padding:10px 12px; border-bottom:1px solid var(--line); vertical-align:middle}
th{background:var(--navy); color:#fff; position:sticky; top:0; font-size:12px; font-weight:700}
tbody tr{cursor:pointer}
tbody tr:hover{background:var(--bg)}
td.rad{font-weight:700; font-variant-numeric:tabular-nums; white-space:nowrap}
.muted{color:var(--muted)} .tiny{font-size:11.5px}
.detail-head{display:flex; align-items:flex-start; gap:14px; flex-wrap:wrap}
.backlink{background:transparent; border:none; color:var(--accent); cursor:pointer; font-weight:700; padding:0; font-size:13.5px}
.meta{display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:10px 18px; margin-top:6px}
.meta .k{font-size:11px; color:var(--muted); text-transform:uppercase; letter-spacing:.03em}
.meta .v{font-weight:600}
.notes{margin-top:12px; border:1px dashed var(--note); background:var(--notebg); border-radius:12px; overflow:hidden}
.notes .nh{display:flex; align-items:center; gap:8px; padding:10px 14px; cursor:pointer; font-weight:700; color:var(--note); font-size:13px}
.notes .nh .chev{margin-left:auto; transition:transform .15s}
.notes.open .nh .chev{transform:rotate(90deg)}
.notes .nb{display:none; padding:0 14px 14px}
.notes.open .nb{display:block}
.notes textarea{background:var(--panel); min-height:90px; resize:vertical}
.cuaderno{margin-top:16px}
.cuaderno h3{font-size:14px; color:var(--navy2); display:flex; align-items:center; gap:8px; margin-bottom:8px; padding-bottom:6px; border-bottom:2px solid var(--line)}
.act{border:1px solid var(--line); border-radius:11px; padding:12px; margin-bottom:10px; background:var(--panel)}
.act.rz{border-left:4px solid var(--red)}
.act .top{display:flex; align-items:center; gap:10px; flex-wrap:wrap}
.act .desc{font-weight:600}
.timeline{display:flex; gap:0; flex-wrap:wrap; margin-top:10px}
.step{display:flex; flex-direction:column; gap:2px; padding:0 14px 0 0; margin-right:14px; border-right:1px solid var(--line); min-width:92px}
.step:last-child{border-right:none}
.step .sl{font-size:10.5px; color:var(--muted); text-transform:uppercase; letter-spacing:.02em}
.step .sd{font-weight:700; font-variant-numeric:tabular-nums; font-size:13px}
.step.pend .sd{color:var(--muted); font-weight:500}
.step.done .sd{color:var(--green)}
.overlay{position:fixed; inset:0; background:rgba(15,20,30,.5); display:none; z-index:100; padding:16px; overflow:auto}
.overlay.open{display:flex; align-items:flex-start; justify-content:center}
.modal{background:var(--panel); border-radius:14px; width:100%; max-width:700px; margin:24px auto; box-shadow:0 12px 40px rgba(0,0,0,.3); display:flex; flex-direction:column; max-height:calc(100dvh - 48px)}
.modal .mh{padding:16px 18px; border-bottom:1px solid var(--line); display:flex; align-items:center; gap:10px; background:var(--panel); border-radius:14px 14px 0 0; flex:0 0 auto}
.modal .mh h2{font-size:16px}
.modal .mb{padding:16px 18px; overflow:auto; min-height:0; flex:1 1 auto}
.modal .mf{padding:14px 18px; border-top:1px solid var(--line); display:flex; gap:10px; justify-content:flex-end; background:var(--panel); border-radius:0 0 14px 14px; flex:0 0 auto; flex-wrap:wrap}
.field{margin-bottom:12px}
.field label{display:block; font-size:12px; font-weight:700; color:var(--muted); margin-bottom:5px}
.field .hint{font-size:11px; color:var(--muted); margin-top:4px}
.frow{display:grid; grid-template-columns:1fr 1fr; gap:12px}
@media (max-width:560px){.frow{grid-template-columns:1fr}}
.block{border:1px solid var(--line); border-radius:10px; padding:12px; margin-bottom:12px}
.block .bt{font-weight:700; font-size:12px; color:var(--navy2); margin-bottom:10px; text-transform:uppercase; letter-spacing:.03em}
.previewbox{background:var(--bg); border-radius:8px; padding:10px 12px; font-size:13px; margin-top:6px}
.x{margin-left:auto; background:transparent; border:none; font-size:20px; cursor:pointer; color:var(--muted); line-height:1}
.empty{text-align:center; padding:40px 20px; color:var(--muted)}
.req{color:var(--red)}
.toast{position:fixed; left:50%; transform:translateX(-50%); bottom:24px; background:var(--ink); color:var(--bg); padding:10px 18px; border-radius:999px; font-size:13px; font-weight:600; z-index:200; opacity:0; transition:opacity .2s; box-shadow:var(--shadow)}
.toast.show{opacity:1}
/* documentos / plantillas */
.plt{border:1px solid var(--line); border-radius:10px; padding:12px; margin-bottom:10px}
.plt .pt{font-weight:700}
.firmante{display:flex; align-items:center; gap:10px; border:1px solid var(--line); border-radius:10px; padding:10px; margin-bottom:8px}
.firmante img{height:44px; border-radius:6px; background:#fff}
.tpl-actions{display:flex; gap:6px; flex-wrap:wrap}
#printArea{display:none}
@media print{
  header,.wrap,.overlay,.toast{display:none !important}
  #printArea{display:block !important}
  body{background:#fff; color:#000}
  @page{size:Letter; margin:2.2cm 2.6cm}
}
#printArea{font-family:"Times New Roman",Georgia,serif; color:#000; font-size:12.5pt; line-height:1.5}
#printArea .esc{text-align:center; margin-bottom:2pt}
#printArea .esc img{height:78px}
#printArea .jz{text-align:center; font-weight:bold; font-size:11pt; letter-spacing:.3px; margin-bottom:18pt}
#printArea .ti{text-align:center; font-weight:bold; text-decoration:underline; margin:6pt 0 14pt; font-size:13pt}
#printArea .ref p{margin:0 0 2pt}
#printArea .cuerpo{text-align:justify; margin:14pt 0; text-indent:0}
#printArea .lugar{margin:16pt 0 26pt}
#printArea .firma img{height:96px; display:block}
#printArea .fnom{font-weight:bold; margin:0}
#printArea .fcar{margin:0}
/* ===== multiusuario ===== */
.login{position:fixed; inset:0; background:var(--bg); display:none; align-items:center; justify-content:center; z-index:150; padding:16px; overflow:auto}
.login.open{display:flex}
.login .card{width:100%; max-width:380px; padding:22px}
.login h2{font-size:18px; margin-bottom:4px}
.login .btn{width:100%; margin-top:6px; padding:10px}
.login .err{color:var(--red); font-size:12.5px; min-height:18px; margin:4px 0}
.userchip{color:#fff; font-size:12px; opacity:.9; white-space:nowrap}
.checks{display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:4px 14px}
.checks label{display:flex; gap:6px; align-items:flex-start; font-weight:500; font-size:12.5px; color:var(--ink); margin:0}
.checks input{width:auto; margin-top:2px}
.checks .grp{grid-column:1/-1; font-size:11px; font-weight:700; color:var(--navy2); text-transform:uppercase; margin-top:8px}
.cambios{font-size:11.5px; color:var(--muted); max-width:420px; overflow-wrap:anywhere}
tbody tr.fija{cursor:default}

/* ===== v2: fases del formulario de actuación, filtros, contador y borradores ===== */
.phase{border:1px solid var(--line);border-left-width:4px;border-radius:8px;padding:10px 12px;margin:10px 0}
.phase-h{font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.3px;margin-bottom:8px}
.phase-in{border-left-color:#1f9d57;background:rgba(31,157,87,.06)}
.phase-in .phase-h{color:#1f9d57}
.phase-out{border-left-color:#e08600;background:rgba(224,134,0,.06)}
.phase-out .phase-h{color:#e08600}
.phase-aud{border-left-color:#2563c9;background:rgba(37,99,201,.06)}
.phase-aud .phase-h{color:#2563c9}
.tabdot{display:inline-block;background:var(--red);color:#fff;border-radius:9px;padding:0 5px;font-size:10px;line-height:15px;min-width:15px;text-align:center;vertical-align:middle;font-weight:700}
.fltsel{width:auto;padding:6px 10px;border-radius:999px;border:1px solid var(--line);background:var(--panel);font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer}
.draftbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--notebg);border:1px dashed var(--note);color:var(--note);border-radius:8px;padding:8px 10px;margin-bottom:10px;font-size:12.5px;font-weight:600}
.solrow{border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-bottom:8px;background:var(--panel)}
.solrow .sh{display:flex;align-items:center;gap:8px;font-weight:700;font-size:12px;color:var(--muted);margin-bottom:6px}
.paletas{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.paleta{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:4px 10px 4px 6px;cursor:pointer;font-size:12.5px;background:var(--panel)}
.paleta i{width:14px;height:14px;border-radius:50%;display:inline-block}
