/* ---------- Tokens: paleta completa en :root (tema claro) ---------- */
:root{
  --bg:#F1F4F2; --surface:#FFFFFF; --surface-2:#F7FAF8; --surface-3:#EDF1EE;
  --ink:#141F1B; --ink-2:#4C5D57; --ink-3:#7B8B84;
  --line:#DCE3DF; --line-2:#C2CEC8;
  --accent:#0B6B5E; --accent-ink:#FFFFFF; --accent-soft:#E0EFEC;
  --st-fin:#00815C; --st-proc:#C25E00; --st-por:#2C6FBF; --st-blo:#C0392F; --st-sby:#6B7770;
  --st-fin-bg:#E2F1EB; --st-proc-bg:#F7EADC; --st-por-bg:#E4ECF8; --st-blo-bg:#F8E6E4; --st-sby-bg:#ECEFED;
  --shadow:0 1px 2px rgba(20,31,27,.06), 0 8px 24px -12px rgba(20,31,27,.18);
  --radius:10px;
  --mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --sans:"IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --display:"Archivo", "IBM Plex Sans", -apple-system, sans-serif;
}
/* Tema oscuro por preferencia del sistema (salvo elección explícita de claro) */
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0E1412; --surface:#161D1A; --surface-2:#1C2522; --surface-3:#222C28;
    --ink:#E7EFEB; --ink-2:#A2B2AB; --ink-3:#74847D;
    --line:#28332F; --line-2:#3A4741;
    --accent:#3FB8A3; --accent-ink:#08201C; --accent-soft:#15302B;
    --st-fin:#2FA37B; --st-proc:#C4832A; --st-por:#5B92CD; --st-blo:#D2605A; --st-sby:#8A9790;
    --st-fin-bg:#12291F; --st-proc-bg:#2C2113; --st-por-bg:#141F2E; --st-blo-bg:#2E1817; --st-sby-bg:#1F2624;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
  }
}
/* Elección explícita de oscuro */
:root[data-theme="dark"]{
  --bg:#0E1412; --surface:#161D1A; --surface-2:#1C2522; --surface-3:#222C28;
  --ink:#E7EFEB; --ink-2:#A2B2AB; --ink-3:#74847D;
  --line:#28332F; --line-2:#3A4741;
  --accent:#3FB8A3; --accent-ink:#08201C; --accent-soft:#15302B;
  --st-fin:#2FA37B; --st-proc:#C4832A; --st-por:#5B92CD; --st-blo:#D2605A; --st-sby:#8A9790;
  --st-fin-bg:#12291F; --st-proc-bg:#2C2113; --st-por-bg:#141F2E; --st-blo-bg:#2E1817; --st-sby-bg:#1F2624;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
}

*{box-sizing:border-box}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:var(--sans); font-size:15px; line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
button,input,select,textarea{font:inherit; color:inherit}
:focus-visible{outline:2px solid var(--accent); outline-offset:2px; border-radius:4px}
@media (prefers-reduced-motion:reduce){*{animation:none!important; transition:none!important}}

.wrap{max-width:1360px; margin:0 auto; padding:0 24px}

/* ---------- Cabecera ---------- */
.top{
  position:sticky; top:0; z-index:40; background:var(--surface);
  border-bottom:1px solid var(--line);
}
.top-in{display:flex; align-items:center; gap:20px; padding:14px 0; flex-wrap:wrap}
.brand{display:flex; flex-direction:column; gap:2px; margin-right:auto}
.brand h1{
  font-family:var(--display); font-weight:700; font-size:20px; letter-spacing:-.02em;
  margin:0; text-wrap:balance;
}
.brand .sub{font-family:var(--mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-3)}
.actions{display:flex; gap:8px; align-items:center; flex-wrap:wrap}

.btn{
  display:inline-flex; align-items:center; gap:6px; cursor:pointer;
  background:var(--surface-2); color:var(--ink); border:1px solid var(--line-2);
  padding:7px 12px; border-radius:8px; font-size:13px; font-weight:500;
  transition:background .15s, border-color .15s;
}
.btn:hover{background:var(--surface-3); border-color:var(--ink-3)}
.btn-primary{background:var(--accent); color:var(--accent-ink); border-color:var(--accent)}
.btn-primary:hover{background:var(--accent); filter:brightness(1.08)}
.btn-primary[disabled]{opacity:.45; cursor:default; filter:none}
.btn-ghost{background:transparent; border-color:transparent; color:var(--ink-2)}
.btn-ghost:hover{background:var(--surface-3); border-color:transparent}
.btn-danger{color:var(--st-blo); border-color:var(--line-2); background:transparent}
.btn-danger:hover{background:var(--st-blo-bg); border-color:var(--st-blo)}

.dot{width:7px; height:7px; border-radius:50%; background:var(--st-proc); flex:none}
.save-state{font-family:var(--mono); font-size:11px; color:var(--ink-3); letter-spacing:.04em}

/* ---------- KPIs ---------- */
.kpis{display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:12px; margin:20px 0}
.kpi{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:14px 16px}
.kpi .lab{font-family:var(--mono); font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3)}
.kpi .val{font-family:var(--display); font-weight:700; font-size:30px; letter-spacing:-.03em; line-height:1.1; margin-top:6px; font-variant-numeric:tabular-nums}
.kpi .note{font-size:12px; color:var(--ink-2); margin-top:2px}
.kpi.accent .val{color:var(--accent)}

/* ---------- Barra de filtros ---------- */
.filters{
  display:flex; gap:8px; flex-wrap:wrap; align-items:center;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  padding:10px 12px; margin-bottom:18px; position:sticky; top:63px; z-index:30;
}
.filters select, .filters input[type="search"]{
  background:var(--surface-2); border:1px solid var(--line-2); border-radius:7px;
  padding:6px 9px; font-size:13px;
}
.filters input[type="search"]{min-width:220px; flex:1}
.tabs{display:flex; gap:2px; background:var(--surface-3); padding:3px; border-radius:8px}
.tab{
  border:none; background:transparent; padding:6px 12px; border-radius:6px; cursor:pointer;
  font-size:13px; font-weight:500; color:var(--ink-2);
}
.tab[aria-selected="true"]{background:var(--surface); color:var(--ink); box-shadow:var(--shadow)}
.chip-count{font-family:var(--mono); font-size:11px; color:var(--ink-3); margin-left:auto; white-space:nowrap}

/* ---------- Chips de estado / etiquetas ---------- */
.pill{
  display:inline-flex; align-items:center; gap:5px; border-radius:999px;
  padding:2px 9px; font-size:11px; font-weight:600; white-space:nowrap;
  font-family:var(--mono); letter-spacing:.02em;
}
.pill::before{content:""; width:6px; height:6px; border-radius:50%; background:currentColor; flex:none}
.pill.fin{color:var(--st-fin); background:var(--st-fin-bg)}
.pill.proc{color:var(--st-proc); background:var(--st-proc-bg)}
.pill.por{color:var(--st-por); background:var(--st-por-bg)}
.pill.blo{color:var(--st-blo); background:var(--st-blo-bg)}
.pill.sby{color:var(--st-sby); background:var(--st-sby-bg)}

.tag{
  display:inline-block; font-family:var(--mono); font-size:10px; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ink-2); background:var(--surface-3);
  border-radius:5px; padding:2px 6px; white-space:nowrap;
}
.tag.prio-ALTA{color:var(--st-blo); background:var(--st-blo-bg)}
.tag.prio-MEDIA{color:var(--ink-2)}
.tag.prio-BAJA{color:var(--ink-3)}
.tag.late{color:var(--st-blo); background:var(--st-blo-bg)}
.tag.block{color:var(--st-proc); background:var(--st-proc-bg)}

/* ---------- Vista Proyectos ---------- */
.proj{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); margin-bottom:14px; overflow:hidden}
.proj-head{display:flex; align-items:center; gap:14px; padding:14px 16px; cursor:pointer; user-select:none}
.proj-head:hover{background:var(--surface-2)}
.proj-code{
  font-family:var(--mono); font-size:11px; font-weight:600; letter-spacing:.06em;
  color:var(--accent); background:var(--accent-soft); border-radius:6px; padding:3px 7px; flex:none;
}
.proj-title{font-family:var(--display); font-weight:700; font-size:18px; letter-spacing:-.02em; margin:0}
.proj-desc{font-size:12.5px; color:var(--ink-3); margin-top:1px}
.proj-meta{margin-left:auto; display:flex; align-items:center; gap:14px; flex:none}
.bar{width:130px; height:6px; background:var(--surface-3); border-radius:3px; overflow:hidden}
.bar > i{display:block; height:100%; background:var(--accent); border-radius:3px}
.pct{font-family:var(--mono); font-size:12px; color:var(--ink-2); font-variant-numeric:tabular-nums; min-width:38px; text-align:right}
.caret{color:var(--ink-3); font-size:11px; width:12px; text-align:center}

/* Jerarquia: proyecto (nivel 1) > subgrupo (nivel 2) > tarea (nivel 3) */
.proj.open{border-color:var(--line-2)}
.proj.open .proj-head{background:var(--surface); border-bottom:1px solid var(--line)}
.proj.open .proj-code{background:var(--accent); color:var(--accent-ink)}

.rows{background:var(--surface-2); padding:4px 16px 12px 0}
.grp{margin:10px 0 0 46px; border-left:1px solid var(--line-2)}
.grp:first-child{margin-top:8px}
.grp-plain{border-left-color:var(--line)}

.subhead{
  display:flex; align-items:center; gap:9px; padding:4px 8px 8px 16px;
  font-family:var(--mono); font-size:10.5px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--ink-2); background:none; border:none; cursor:pointer; user-select:none; border-radius:6px;
}
.subhead:hover{color:var(--ink)}
.subhead:hover .sh-mark{opacity:1}
.sh-caret{font-size:11px; color:var(--ink-2); width:10px; text-align:center; flex:none; line-height:1}
.grp.closed{border-left-color:transparent; padding-bottom:2px}
.grp.closed .sh-n{color:var(--ink-2)}
.sh-mark{
  width:9px; height:9px; border-radius:2px; background:var(--accent); opacity:.7;
  margin-left:-20px; flex:none; box-shadow:0 0 0 3px var(--surface-2);
}
.sh-name{font-weight:600}
.sh-n{font-size:10px; letter-spacing:.06em; color:var(--ink-3); font-variant-numeric:tabular-nums}

.row{
  position:relative; display:grid; grid-template-columns:72px 1fr 108px 88px 78px 120px 24px;
  gap:12px; align-items:center; margin:0 0 5px 16px; padding:9px 14px;
  background:var(--surface); border:1px solid var(--line); border-radius:9px;
  cursor:pointer; transition:border-color .12s, transform .12s;
}
.row::before{
  content:""; position:absolute; left:-16px; top:22px; width:13px; height:1px; background:var(--line-2);
}
.row:last-child{margin-bottom:0}
.row:hover{border-color:var(--accent); transform:translateX(1px)}
.row .id{font-family:var(--mono); font-size:11px; color:var(--ink-3); font-variant-numeric:tabular-nums}
.row .name{min-width:0}
.row .name b{font-weight:500; font-size:14px; display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.row .name .subline{font-size:11.5px; color:var(--ink-3); display:flex; gap:6px; align-items:center; flex-wrap:wrap; margin-top:2px}
.row .who{font-size:12px; color:var(--ink-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.row .hor{font-family:var(--mono); font-size:11px; color:var(--ink-2)}
.row .esf{font-family:var(--mono); font-size:11px; color:var(--ink-3); text-align:center}
.row .go{color:var(--ink-3); text-align:right; font-size:14px}

/* ---------- Vista Plan (columnas por horizonte) ---------- */
.board{display:grid; grid-template-columns:repeat(4,minmax(230px,1fr)); gap:14px; align-items:start}
.col{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:12px; min-height:80px}
.col > h3{
  font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  margin:0 0 4px; display:flex; justify-content:space-between; align-items:center; color:var(--ink-2);
}
.col .load{font-family:var(--mono); font-size:11px; color:var(--ink-3); margin-bottom:10px}
.card{
  background:var(--surface-2); border:1px solid var(--line); border-left:3px solid var(--line-2);
  border-radius:8px; padding:9px 10px; margin-bottom:8px; cursor:pointer;
}
.card:hover{border-color:var(--ink-3)}
.card.s-fin{border-left-color:var(--st-fin)} .card.s-proc{border-left-color:var(--st-proc)}
.card.s-por{border-left-color:var(--st-por)} .card.s-blo{border-left-color:var(--st-blo)}
.card.s-sby{border-left-color:var(--st-sby)}
.card .ct{font-size:13px; font-weight:500; line-height:1.35}
.card .cm{display:flex; gap:6px; align-items:center; margin-top:6px; flex-wrap:wrap; font-size:11px; color:var(--ink-3); font-family:var(--mono)}

/* ---------- Vista Tabla ---------- */
.tablewrap{overflow-x:auto; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius)}
table.grid{border-collapse:collapse; width:100%; min-width:1080px; font-size:13px}
table.grid th{
  text-align:left; font-family:var(--mono); font-size:10px; letter-spacing:.08em; text-transform:uppercase;
  color:var(--ink-3); font-weight:600; padding:10px 12px; border-bottom:1px solid var(--line-2);
  position:sticky; top:0; background:var(--surface); cursor:pointer; white-space:nowrap;
}
table.grid th:hover{color:var(--ink)}
table.grid td{padding:9px 12px; border-bottom:1px solid var(--line); vertical-align:top}
table.grid tr:hover td{background:var(--surface-2)}
table.grid tr{cursor:pointer}
td.mono{font-family:var(--mono); font-size:11.5px; color:var(--ink-2); font-variant-numeric:tabular-nums; white-space:nowrap}

/* ---------- Paneles de análisis ---------- */
.panels{display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:14px; margin-bottom:18px}
.panel{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:16px}
.panel h3{
  font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--ink-3); margin:0 0 4px;
}
.panel .lead{font-size:12.5px; color:var(--ink-2); margin:0 0 12px}
.matrix{border-collapse:separate; border-spacing:2px; width:100%}
.matrix th{font-family:var(--mono); font-size:10px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-3); font-weight:600; padding:4px}
.matrix td{
  background:var(--surface-3); border-radius:6px; text-align:center; padding:10px 4px;
  font-family:var(--mono); font-size:14px; font-variant-numeric:tabular-nums; cursor:pointer;
}
.matrix td[data-n="0"]{color:var(--ink-3); background:var(--surface-2)}
.matrix td.hot{background:var(--accent-soft); color:var(--accent); font-weight:600}
.matrix td:hover{outline:2px solid var(--accent)}
.list-min{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:7px}
.list-min li{display:flex; gap:8px; align-items:baseline; font-size:13px; cursor:pointer}
.list-min li:hover .lm-t{text-decoration:underline}
.list-min .lm-id{font-family:var(--mono); font-size:10.5px; color:var(--ink-3); flex:none; width:52px}
.list-min .lm-t{flex:1; min-width:0}
.list-min .lm-sub{display:block; font-family:var(--mono); font-size:10.5px; color:var(--ink-3); margin-top:2px}
.list-min .lm-x{font-size:11px; color:var(--ink-3); font-family:var(--mono); flex:none}
.who-bar{display:flex; flex-direction:column; gap:8px}
.who-row{display:grid; grid-template-columns:88px 1fr 46px; gap:10px; align-items:center; font-size:12.5px}
.who-row .wb{height:8px; background:var(--surface-3); border-radius:4px; overflow:hidden}
.who-row .wb > i{display:block; height:100%; background:var(--accent); border-radius:4px}
.who-row .wn{font-family:var(--mono); font-size:11px; color:var(--ink-2); text-align:right; font-variant-numeric:tabular-nums}

/* ---------- Drawer de edición ---------- */
.scrim{position:fixed; inset:0; background:rgba(10,18,15,.45); z-index:50; opacity:0; pointer-events:none; transition:opacity .18s}
.scrim.open{opacity:1; pointer-events:auto}
/* En pantalla ancha el panel no bloquea: se puede saltar de una tarea a otra directamente */
@media (min-width:1100px){
  .scrim.open{opacity:0; pointer-events:none}
  body:has(.drawer.open) .wrap{padding-right:calc(24px + min(520px, 40vw))}
}
.drawer{
  position:fixed; top:0; right:0; height:100%; width:min(520px,100%); z-index:60;
  background:var(--surface); border-left:1px solid var(--line); box-shadow:var(--shadow);
  transform:translateX(100%); transition:transform .2s ease; display:flex; flex-direction:column;
}
.drawer.open{transform:none}
.drawer-head{display:flex; align-items:center; gap:10px; padding:16px 18px; border-bottom:1px solid var(--line)}
.drawer-head .id{font-family:var(--mono); font-size:12px; color:var(--accent); font-weight:600}
.drawer-body{padding:18px; overflow-y:auto; flex:1; display:flex; flex-direction:column; gap:14px}
.drawer-foot{padding:12px 18px; border-top:1px solid var(--line); display:flex; gap:8px; align-items:center}
.field{display:flex; flex-direction:column; gap:5px}
.field > label{font-family:var(--mono); font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3)}
.field input, .field select, .field textarea{
  background:var(--surface-2); border:1px solid var(--line-2); border-radius:7px; padding:8px 10px; font-size:14px; width:100%;
}
.field textarea{resize:vertical; min-height:64px; line-height:1.45}
.grid2{display:grid; grid-template-columns:1fr 1fr; gap:12px}
.grid3{display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px}
.deps{display:flex; flex-wrap:wrap; gap:6px}
.deps .dep{
  font-family:var(--mono); font-size:11px; background:var(--surface-3); border:1px solid var(--line-2);
  border-radius:6px; padding:3px 7px; display:inline-flex; gap:6px; align-items:center;
}
.deps .dep button{border:none; background:none; cursor:pointer; color:var(--ink-3); padding:0; font-size:13px; line-height:1}
.hint{font-size:12px; color:var(--ink-3)}

/* ---------- Modo servidor: identidad y notas del dia ---------- */
.quien{
  font-family:var(--mono); font-size:11px; letter-spacing:.04em; color:var(--accent);
  background:var(--accent-soft); border-radius:999px; padding:4px 10px; white-space:nowrap;
}
a.btn{text-decoration:none}

.notas-wrap{display:flex; flex-direction:column; gap:14px}
.nota-nueva{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:14px}
.nota-nueva textarea{
  width:100%; background:var(--surface-2); border:1px solid var(--line-2); border-radius:8px;
  padding:10px 12px; font-size:14px; resize:vertical; min-height:56px; line-height:1.45;
}
.nota-nueva-pie{display:flex; gap:10px; margin-top:10px; align-items:center; flex-wrap:wrap}
.nota-nueva-pie select{
  flex:1; min-width:200px; background:var(--surface-2); border:1px solid var(--line-2);
  border-radius:8px; padding:8px 10px; font-size:13px;
}
.nota{
  display:flex; gap:12px; align-items:flex-start; padding:10px 0;
  border-bottom:1px solid var(--line);
}
.nota:last-child{border-bottom:none}
.nota-check{
  width:20px; height:20px; flex:none; margin-top:2px; border-radius:6px; cursor:pointer;
  border:1.5px solid var(--line-2); background:var(--surface-2); color:var(--accent-ink);
  font-size:12px; line-height:1; display:grid; place-items:center; padding:0;
}
.nota-check:hover{border-color:var(--accent)}
.nota.hecha .nota-check{background:var(--accent); border-color:var(--accent)}
.nota-cuerpo{flex:1; min-width:0}
.nota-texto{font-size:14px; line-height:1.5; white-space:pre-wrap; overflow-wrap:anywhere}
.nota.hecha .nota-texto{color:var(--ink-3); text-decoration:line-through}
.nota-pie{
  font-family:var(--mono); font-size:10.5px; letter-spacing:.04em; color:var(--ink-3); margin-top:4px;
}
.nota-tarea{color:var(--accent); cursor:pointer}
.nota-tarea:hover{text-decoration:underline}
.nota-x{flex:none; font-size:16px; line-height:1; padding:2px 8px; color:var(--ink-3)}

/* ---------- Aviso / toast ---------- */
.toast{
  position:fixed; left:50%; bottom:24px; transform:translate(-50%,16px); z-index:70;
  background:var(--ink); color:var(--bg); padding:10px 16px; border-radius:8px; font-size:13px;
  opacity:0; pointer-events:none; transition:opacity .2s, transform .2s; max-width:min(520px,90vw);
}
.toast.show{opacity:1; transform:translate(-50%,0)}
.banner{
  display:flex; gap:10px; align-items:flex-start; background:var(--st-proc-bg); color:var(--st-proc);
  border:1px solid var(--st-proc); border-radius:var(--radius); padding:10px 14px; font-size:13px; margin-bottom:14px;
}
.empty{padding:40px; text-align:center; color:var(--ink-3); font-size:14px}

/* ---------- Aviso de edicion simultanea ---------- */
.conflicto{
  position:fixed; right:20px; bottom:20px; z-index:80; max-width:min(420px,92vw);
  background:var(--surface); border:1px solid var(--st-proc); border-left:4px solid var(--st-proc);
  border-radius:var(--radius); padding:14px 16px; box-shadow:var(--shadow); font-size:13.5px; line-height:1.5;
}
.conflicto-txt{color:var(--ink)}
.conflicto-btns{display:flex; gap:8px; margin-top:12px; justify-content:flex-end}

/* ---------- Impresión / PDF ---------- */
.print-only{display:none}
@media print{
  @page{size:A4 landscape; margin:12mm}
  :root{--surface:#fff; --surface-2:#fff; --surface-3:#f2f2f2; --bg:#fff; --ink:#000; --ink-2:#333; --ink-3:#666; --line:#ccc; --line-2:#999; --accent:#0B6B5E}
  body{background:#fff; color:#000; font-size:10pt}
  .top, .filters, .actions, .drawer, .scrim, .toast, .no-print, .caret, .row .go{display:none!important}
  .wrap{max-width:none; padding:0}
  .print-only{display:block}
  .print-head{margin-bottom:10mm; border-bottom:2px solid #000; padding-bottom:4mm}
  .print-head h1{font-family:var(--display); font-size:20pt; margin:0 0 2mm}
  .print-head p{margin:0; font-size:9pt; color:#444}
  .kpis{grid-template-columns:repeat(5,1fr); gap:4mm; margin:0 0 8mm}
  .kpi{border:1px solid #999; box-shadow:none; padding:3mm}
  .kpi .val{font-size:16pt}
  .proj{break-inside:avoid; border:1px solid #999; margin-bottom:5mm; box-shadow:none}
  .proj .rows{display:block!important; background:#fff; padding:2mm 3mm 3mm 0}
  .grp{margin:3mm 0 0 10mm; border-left:1px solid #999}
  .sh-mark{box-shadow:0 0 0 3px #fff}
  .row{
    grid-template-columns:58px 1fr 110px 70px 52px 96px; gap:6px;
    margin:0 0 1mm 4mm; padding:1.2mm 2.5mm; border:1px solid #ccc; border-radius:2mm; break-inside:avoid;
  }
  .row::before{background:#999}
  .row .name b{white-space:normal}
  .pill{border:1px solid currentColor}
  .board{grid-template-columns:repeat(4,1fr)}
  .card{break-inside:avoid; border:1px solid #999}
  .panel{break-inside:avoid; border:1px solid #999}
  table.grid{min-width:0; font-size:8pt}
  table.grid th{position:static}
}

@media (max-width:900px){
  .rows{padding-right:10px}
  .grp{margin-left:22px}
  .row{grid-template-columns:1fr 100px 24px}
  .row .id, .row .who, .row .esf{display:none}
  .board{grid-template-columns:1fr}
  .grid3{grid-template-columns:1fr}
  .proj-meta .bar{width:70px}
}
