/* The console's one visual system (redesign proposal, 2026-09-03): a working ledger, ink on
   paper. Words a customer wrote or will read are set in the serif; everything the console
   computes is in the sans. One accent for what can be clicked; semantic colour only for a
   state that is good, needs a person or is real trouble. Nothing under 12 px, no uppercase
   transformation, no letter-spacing. The class names are the ones the templates, the tests
   and the walk already use; the legacy variable names at the end keep the pages not yet
   rebuilt on the same palette. */

:root{
  color-scheme:light dark;
  --bg:#f6f5f1; --surface:#ffffff; --surface-2:#efede8;
  --line:#d9d6ce; --line-strong:#1a1a1a;
  --text:#1a1a1a; --text-2:#54524d; --text-3:#767370;
  --accent:#2554c7; --accent-hover:#1f47ad; --accent-ink:#ffffff; --accent-soft:#e6ecfa;
  --good:#1b7a45; --good-soft:#e4f3ea;
  --warn:#8f5b00; --warn-soft:#fbf0d9;
  --crit:#b42318; --crit-soft:#fce9e6;
  --serif:"Source Serif 4","Iowan Old Style","Palatino Linotype",Georgia,serif;
  --sans:"IBM Plex Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
  --gutter:clamp(16px,3vw,32px);
  /* the page gutter, grown so the content stays under 1360 px and centred on a wide screen */
  --edge:max(var(--gutter),calc((100% - 1360px) / 2));
  --logo-invert:0;
  --chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2354524d' stroke-width='1.5'/%3E%3C/svg%3E");
  /* the names the pages not yet rebuilt still use */
  --paper-0:var(--bg); --paper-1:var(--surface);
  --ink-900:var(--text); --ink-700:var(--text); --ink-500:var(--text-2); --ink-400:var(--text-3);
  --ink-300:var(--line); --ink-200:var(--line); --ink-100:var(--line); --ink-50:var(--surface-2);
  --rule:var(--line); --live:var(--good); --live-soft:var(--good-soft);
  --err:var(--crit); --err-soft:var(--crit-soft);
  --font-sans:var(--sans); --pad-x:var(--edge);
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#161615; --surface:#1f1f1e; --surface-2:#292927;
    --line:#39393a; --line-strong:#ecebe6;
    --text:#ecebe6; --text-2:#b4b2ab; --text-3:#8c8a83;
    --accent:#8fb0ff; --accent-hover:#a6c1ff; --accent-ink:#0e1a3a; --accent-soft:#22304f;
    --good:#63cf92; --good-soft:#173226;
    --warn:#e7b04f; --warn-soft:#3a2d12;
    --crit:#f28b80; --crit-soft:#3f1c19;
    --logo-invert:1;
    --chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23b4b2ab' stroke-width='1.5'/%3E%3C/svg%3E");
  }
}

/* ---------------------------------------------------------------- base */
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
html,body{background:var(--bg);color:var(--text);font:400 14px/20px var(--sans);-webkit-font-smoothing:antialiased}
body{min-height:100vh;padding-bottom:32px}
a{color:var(--accent);text-decoration:none;transition:color 80ms}
a:hover{text-decoration:underline}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}
img{max-width:100%;height:auto}
b,strong{font-weight:600}
h1,h2,h3{font-weight:600;letter-spacing:0;text-transform:none}
h1{font-size:22px;line-height:28px}
h2{font-size:16px;line-height:24px}
h3{font-size:16px;line-height:24px}
ul,ol{padding-left:20px}
.num,[data-numeric]{font-variant-numeric:tabular-nums lining-nums}
.strong{font-weight:600}
.muted{color:var(--text-2)}
.small{font-size:13px;line-height:18px}
.tiny{font-size:12px;line-height:16px}
.meta-line{font-size:12px;line-height:16px;font-weight:500;color:var(--text-2)}
.eyebrow{font-size:13px;line-height:18px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--text-2)}
.lead,.tagline{font-size:14px;line-height:20px;color:var(--text-2);font-style:normal;font-weight:400;max-width:72ch}
.lead b,.tagline b{color:var(--text)}
.serif{font-family:var(--serif)}
.quiet{color:var(--accent);font-weight:500;white-space:nowrap}
a:focus-visible,button:focus-visible,summary:focus-visible,input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* ---------------------------------------------------------------- nav */
nav.cc-nav{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:24px;height:56px;padding:0 var(--edge);background:var(--bg);border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
nav.cc-nav::-webkit-scrollbar{display:none}
nav.cc-nav>a:first-child,.brand{display:flex;align-items:center;flex-shrink:0}
.brand-logo{display:block;height:18px;width:auto;flex-shrink:0;filter:invert(var(--logo-invert))}
.nav-links{display:flex;gap:20px;align-items:center;flex-shrink:0}
.nav-right{display:flex;gap:16px;align-items:center;flex-wrap:nowrap;white-space:nowrap;margin-left:auto;flex-shrink:0}
.nav-link{display:inline-flex;align-items:center;height:40px;font-size:14px;line-height:20px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--text);white-space:nowrap;padding-top:2px;border-bottom:2px solid transparent;transition:color 80ms}
.nav-link:hover{text-decoration:none;color:var(--accent)}
.nav-link.current{font-weight:600;border-bottom-color:var(--accent)}
.nav-link.current::after{content:none}
.nav-link.salir{font-weight:400;color:var(--text-2)}
.nav-meta{font-size:13px;line-height:18px;font-weight:400;letter-spacing:0;color:var(--text-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.nav-btn{display:inline-flex;align-items:center;height:36px;padding:0 12px;font-size:14px;font-weight:600;letter-spacing:0;text-transform:none;border:1px solid var(--line);border-radius:4px;background:var(--surface);color:var(--text);white-space:nowrap;transition:background-color 80ms}
.nav-btn:hover{background:var(--surface-2);color:var(--text)}

/* ---------------------------------------------------------------- page header */
.hero{padding:24px var(--edge) 16px;border-bottom:1px solid var(--line-strong)}
.hero-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px 24px;flex-wrap:wrap}
.hero-title{flex:1 1 0;min-width:min(100%,12rem)}
.hero-eyebrow{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.hero-eyebrow .dot{display:none}
.hero h1{font-size:22px;line-height:28px;font-weight:600;letter-spacing:0;text-transform:none;text-wrap:balance}
.hero .lead,.hero .tagline{margin-top:4px}
.hero .status,.status-line{display:flex;gap:8px 12px;align-items:center;flex-wrap:wrap;margin-top:8px;font-size:14px;line-height:20px;color:var(--text-2)}
.hero-meta{text-align:right;flex-shrink:0;margin-left:auto}
.hero-meta .label{font-size:13px;line-height:18px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--text-2)}
.hero-meta .val{font-size:28px;line-height:32px;font-weight:600;letter-spacing:0;font-variant-numeric:tabular-nums}
.hero-meta.lead-figure .val{font-size:40px;line-height:44px}
.hero-meta .val .pill{vertical-align:middle}
.toolbar{position:sticky;top:56px;z-index:9;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:8px var(--edge);border-bottom:1px solid var(--line);background:var(--bg)}

/* ---------------------------------------------------------------- notices */
.notice{padding:12px var(--edge);border-bottom:1px solid var(--line);background:var(--surface);font-size:14px;line-height:20px;color:var(--text);box-shadow:inset 3px 0 0 var(--accent)}
.notice b{font-weight:600;color:var(--text)}
.notice p+p{margin-top:4px}
.notice.jobs{font-variant-numeric:tabular-nums}
.notice.warn{background:var(--warn-soft);box-shadow:inset 3px 0 0 var(--warn)}
.notice.crit{background:var(--crit-soft);box-shadow:inset 3px 0 0 var(--crit)}
.notice.good{background:var(--good-soft);box-shadow:inset 3px 0 0 var(--good)}
.notice.inset{border:1px solid var(--line);border-radius:4px;padding:12px 16px;margin:0 0 16px}

/* ---------------------------------------------------------------- sections */
section{padding:0 var(--edge);margin:24px 0 32px}
.sec-head{display:flex;justify-content:space-between;align-items:baseline;gap:4px 16px;margin-bottom:12px;flex-wrap:wrap}
.sec-head h2{font-size:16px;line-height:24px;font-weight:600;letter-spacing:0;text-transform:none}
.sec-head .count{font-size:13px;line-height:18px;color:var(--text-2);letter-spacing:0;font-variant-numeric:tabular-nums}
.sec-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-left:auto}
.status-lines p{margin:0;font-size:14px;line-height:20px}
.status-lines p+p{margin-top:4px}
.status-lines .num{font-variant-numeric:tabular-nums}
.help{font-size:13px;line-height:18px;color:var(--text-2)}
.help+.help{margin-top:4px}
.note-line{font-size:13px;line-height:18px;color:var(--text-2);margin:8px 0 16px}
.line{font-size:14px;line-height:20px;max-width:72ch}
.line+.line{margin-top:4px}

/* ---------------------------------------------------------------- figure strip */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:6px;overflow:hidden}
.stat-grid.three{grid-template-columns:repeat(3,1fr)}
.stat-grid.four{grid-template-columns:repeat(4,1fr)}
.stat-grid.five{grid-template-columns:repeat(5,1fr)}
.stat{display:block;min-width:0;padding:16px;background:var(--surface);color:var(--text);transition:background-color 80ms}
.stat .k{font-size:13px;line-height:18px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--text-2)}
.stat .v{font-size:28px;line-height:32px;font-weight:600;letter-spacing:0;margin-top:4px;font-variant-numeric:tabular-nums}
.stat .s{font-size:13px;line-height:18px;color:var(--text-2);margin-top:6px;font-style:normal;font-weight:400}
.stat .s b{font-weight:600;color:var(--text)}
.stat.on{box-shadow:inset 0 3px 0 var(--accent)}
.stat.on .k,.stat.on .s{color:var(--text-2);opacity:1}
.stat.apart{background:var(--surface-2)}
a.stat:hover{background:var(--surface-2);text-decoration:none}
a.stat:hover .k{text-decoration:none}

/* ---------------------------------------------------------------- cards */
.card{border:1px solid var(--line);border-radius:6px;background:var(--surface);padding:16px}
.card+.card{margin-top:16px}
.callout{border:1px solid var(--line);border-radius:6px;background:var(--surface);padding:16px}
.callout p+p{margin-top:4px}

/* ---------------------------------------------------------------- tables */
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:6px;background:var(--surface)}
.tablewrap>table{border:0}
.tablewrap+.tablewrap{margin-top:16px}
table{width:100%;border-collapse:collapse;background:var(--surface);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
th{text-align:left;font-size:13px;line-height:18px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--text-2);padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:bottom}
td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top;font-size:14px;line-height:20px}
tr:last-child td{border-bottom:0}
tr:has(td):hover{background:var(--surface-2)}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
td.nowrap,th.nowrap{white-space:nowrap}
td.reason{min-width:28ch;width:100%}
td.situation{min-width:30ch}
td .second{display:block;font-size:13px;line-height:18px;color:var(--text-2);margin-top:2px}
td .second .pill{margin-top:2px}
td.dense,table.dense td{font-size:13px;line-height:18px;padding:8px 12px}
a.tiny.strong{white-space:nowrap;font-size:14px;line-height:20px}

/* ---------------------------------------------------------------- pills */
.pill{display:inline-block;font-size:12px;line-height:16px;font-weight:500;letter-spacing:0;text-transform:none;padding:3px 8px;border:0;border-radius:4px;background:var(--surface-2);color:var(--text-2);white-space:nowrap;vertical-align:middle}
.pill.good,.pill.ready,.pill.approved,.pill.live,.pill.aprobada{background:var(--good-soft);color:var(--good)}
.pill.warn,.pill.needs_data,.pill.proposed,.pill.pendiente{background:var(--warn-soft);color:var(--warn)}
.pill.crit{background:var(--crit-soft);color:var(--crit)}
.pill.no,.pill.flat,.pill.done,.pill.neutral,.pill.descartada{background:var(--surface-2);color:var(--text-2)}
a.pill:hover{text-decoration:underline}
.pills{display:flex;gap:6px;flex-wrap:wrap;align-items:center}

/* ---------------------------------------------------------------- buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 12px;font-size:14px;line-height:20px;font-weight:600;letter-spacing:0;text-transform:none;border:1px solid var(--accent);border-radius:4px;background:var(--accent);color:var(--accent-ink);white-space:nowrap;cursor:pointer;transition:background-color 80ms,color 80ms,border-color 80ms}
.btn:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-ink);text-decoration:none}
.btn.ghost{background:var(--surface);color:var(--text);border-color:var(--line)}
.btn.ghost:hover{background:var(--surface-2);color:var(--text);border-color:var(--line)}
.btn.tall{height:44px}
.btn:disabled,.btn[aria-disabled=true]{opacity:.5;pointer-events:none}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:16px}
form.inline{display:inline}

/* ---------------------------------------------------------------- forms */
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:16px}
.filters.stack{flex-direction:column;align-items:stretch}
.filters .row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
select,input[type=text],input[type=search],input[type=email],input[type=number],textarea{font:400 14px/20px var(--sans);color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:7px 10px;height:36px;transition:border-color 80ms}
select{appearance:none;-webkit-appearance:none;padding-right:30px;background-image:var(--chevron);background-repeat:no-repeat;background-position:right 10px center}
select[multiple]{height:auto;background-image:none;padding-right:10px}
select:focus,input:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}
input::placeholder,textarea::placeholder{color:var(--text-3)}
textarea{width:100%;height:auto;min-height:200px;line-height:22px;max-width:72ch;resize:vertical;display:block}
input[type=checkbox],input[type=radio]{accent-color:var(--accent)}
.lbl,label.lbl{display:block;font-size:13px;line-height:18px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--text);margin:16px 0 8px}
.lbl .note{font-weight:400;color:var(--text-2);font-size:13px;letter-spacing:0;text-transform:none}
.field{display:block;margin-bottom:16px}
.field>.lbl{margin-top:0}
.legend{font-size:13px;line-height:18px;color:var(--text-2);margin-top:8px;max-width:72ch}
.legend b{color:var(--text);font-weight:600}
.fields2{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}
.checks{display:flex;flex-direction:column;gap:6px;font-size:14px;line-height:20px}
.checks label{display:flex;gap:8px;align-items:center;cursor:pointer}
.search{flex:1 1 320px;max-width:480px;min-width:200px;width:100%}
.chips{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.chips label{display:inline-flex;gap:8px;align-items:center;height:36px;padding:0 12px;border:1px solid var(--line);border-radius:4px;background:var(--surface);cursor:pointer;font-size:14px}
.chips label:has(input:checked){border-color:var(--accent);background:var(--accent-soft);font-weight:600}

/* ---------------------------------------------------------------- read and edit blocks */
pre.body,.read{white-space:pre-wrap;overflow-wrap:anywhere;font-family:var(--serif);font-size:16px;line-height:26px;font-weight:400;max-width:68ch;background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:16px;max-height:none;overflow:auto;color:var(--text)}
.read.team,pre.body.team{box-shadow:inset 3px 0 0 var(--accent)}
.caption{font-size:13px;line-height:18px;color:var(--text-2);margin-bottom:8px}
td pre.body,td .read{max-height:260px;padding:12px 16px}

/* ---------------------------------------------------------------- folds */
details>summary{cursor:pointer}
details.fold>summary,details.gate>summary,details.row>summary{display:flex;align-items:center;gap:8px;font-size:14px;line-height:20px;font-weight:600;padding:10px 0;list-style:none}
details.row>summary{font-weight:400;padding:0}
details.fold>summary::-webkit-details-marker,details.gate>summary::-webkit-details-marker,details.row>summary::-webkit-details-marker{display:none}
details.fold>summary::before,details.gate>summary::before,details.row>summary::before{content:"";flex-shrink:0;width:7px;height:7px;margin:0 6px 2px 2px;border:solid var(--text-2);border-width:0 1.5px 1.5px 0;transform:rotate(-45deg);transition:transform 80ms}
details.fold[open]>summary::before,details.gate[open]>summary::before,details.row[open]>summary::before{transform:rotate(45deg);margin-bottom:5px}
details.fold>summary .count,details.gate>summary .count{margin-left:auto;font-weight:400;font-size:13px;color:var(--text-2);font-variant-numeric:tabular-nums}
details.gate{border-top:1px solid var(--line)}
details.gate:last-child{border-bottom:1px solid var(--line)}
details.gate>.tablewrap,details.gate>table{margin:0 0 12px}
details.row>.read,details.row>pre.body{margin-top:8px}
details.row>.help{margin-top:8px}

/* ---------------------------------------------------------------- panels (the ficha) */
.split{display:grid;grid-template-columns:minmax(560px,1fr) 360px;gap:0 24px;align-items:start;padding:24px var(--edge) 0}
.split>div{min-width:0}
.panel{padding:16px;border:1px solid var(--line);border-radius:6px;background:var(--surface);margin-bottom:16px}
.panel h3{font-size:16px;line-height:24px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--text);margin-bottom:12px}
.panel h3.gap{margin-top:24px}
.panel>table{border-top:0}
.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;font-size:14px;line-height:20px}
.kv dt{color:var(--text-2);font-size:14px;letter-spacing:0}
.kv dd{margin:0;font-variant-numeric:tabular-nums}

/* ---------------------------------------------------------------- the ficha and the thread */
.hero .context{margin-top:6px;font-size:13px;line-height:18px;color:var(--text-2)}
.reason{font-size:16px;line-height:24px;font-weight:500;max-width:72ch}
.reason+.status-line{margin-top:8px}
.why{font-size:14px;line-height:20px;color:var(--text-2);max-width:72ch;margin-top:8px}
.why b{color:var(--text)}
.panel .caption{margin-bottom:8px}
.caption.meta{display:flex;gap:4px 12px;flex-wrap:wrap;align-items:center}
.caption.meta .strong{color:var(--text)}
.panel>.line+.line{margin-top:4px}
.panel>.help{margin-top:8px}
.panel>form{margin-top:12px}
.panel>.meta-line{margin-top:8px}
.panel>.fold{margin-top:12px}
.panel>details.fold>summary{padding:0}
.panel>details.fold[open]>summary{margin-bottom:12px}
.panel>.tablewrap{border:0;border-radius:0}
.panel>.tablewrap>table{border-top:0}
.panel .notice.inset{margin-bottom:12px}
.trace{font-size:13px;line-height:18px;color:var(--text-2);padding-left:18px}
.trace li+li{margin-top:4px}
.closest .serif{display:block;font-size:16px;line-height:26px;margin-top:2px}
.closest td .small{font-family:var(--sans)}
summary .n{font-weight:400;color:var(--text-2);font-variant-numeric:tabular-nums}
details.fold>.thread{margin:8px 0 12px}
.thread .panel{border:0;padding:0;background:none;margin:0 0 16px}
.thread .panel:last-child{margin-bottom:0}
.msg-head{display:flex;gap:4px 12px;flex-wrap:wrap;align-items:center;font-size:13px;line-height:18px;color:var(--text-2);margin-bottom:8px}
.msg-head .strong{color:var(--text)}
.notice .feedback{display:flex;gap:8px 12px;align-items:center;flex-wrap:wrap;margin-top:8px}
.notice .feedback .lbl{margin:0}
.notice .feedback input[type=text]{width:min(320px,100%)}
form.bar{padding:24px var(--edge) 0;border-top:1px solid var(--line);margin-top:8px}
form.bar .composer{max-width:72ch}
form.bar .composer>.lbl{margin-top:0}
form.bar .composer>.help{margin-top:8px}
form.bar textarea{max-width:none;width:100%}
form.bar .row{display:flex;gap:8px 12px;flex-wrap:wrap;align-items:center;margin-top:16px}
form.bar .tags{display:inline-flex;gap:8px;align-items:center;flex-wrap:wrap;margin-left:auto}
form.bar .tags .lbl{margin:0}
form.bar .tags input{width:280px;max-width:100%}
form.bar .legend{margin-top:12px}

/* ---------------------------------------------------------------- the batch page */
.sec-head .count label{display:inline-flex;gap:8px;align-items:center;cursor:pointer;color:var(--text);font-size:14px;line-height:20px}
.shared .lbl:first-of-type{margin-top:0}
.batch{border-top:1px solid var(--line)}
.batch-row{display:grid;grid-template-columns:18px minmax(0,1fr);gap:12px;padding:12px 0;border-bottom:1px solid var(--line);align-items:start}
.batch-row input[type=checkbox]{width:18px;height:18px;margin-top:1px}
.batch-meta{display:flex;gap:4px 12px;flex-wrap:wrap;align-items:center;font-size:14px;line-height:20px}
.batch-meta .muted{color:var(--text-2)}
.batch-row details.row{margin-top:8px}
.batch-row details.row>summary{font-size:13px;line-height:18px;color:var(--accent);font-weight:500}
.batch-row textarea{min-height:120px;margin-top:8px}
div.bar{position:sticky;bottom:0;z-index:5;background:var(--surface);box-shadow:0 -1px 0 var(--line),0 -8px 24px rgba(0,0,0,.06);padding:12px var(--edge)}
.bar-row{display:flex;gap:8px 12px;align-items:center;flex-wrap:wrap}
.bar-row .count{font-size:13px;line-height:18px;color:var(--text-2);font-variant-numeric:tabular-nums;margin-right:auto}
.bar-row .who{display:inline-flex;gap:8px;align-items:center}
.bar-row .who .lbl{margin:0}
.bar-row .who input{width:160px}
div.bar .legend{margin-top:8px}

/* ---------------------------------------------------------------- the block section (Bloques) */
.case{margin-bottom:24px}
.case .card{padding:16px 16px 8px}
.case-head{display:flex;align-items:baseline;gap:4px 12px;flex-wrap:wrap;margin-bottom:4px}
.case-head h2{font-size:18px;line-height:24px;font-weight:600}
.case-head .n-case{font-size:18px;line-height:24px;font-weight:600;font-variant-numeric:tabular-nums}
.case-head .count{font-size:13px;line-height:18px;color:var(--text-2);font-variant-numeric:tabular-nums}
.case-head .count.nowrap{white-space:nowrap}
.answer{display:flex;justify-content:space-between;align-items:center;gap:8px 16px;flex-wrap:wrap;padding:12px 0}
.answer .who{display:flex;gap:6px 12px;align-items:center;flex-wrap:wrap;min-width:0}
.answer .n{font-size:18px;line-height:24px;font-weight:600;letter-spacing:0;font-variant-numeric:tabular-nums;margin-left:auto}
.answer+.tablewrap,.answer+table{margin-bottom:16px}
.out{margin-top:8px}
.out h3{font-size:14px;line-height:20px;font-weight:600;margin:0 0 4px}
.out h3 .count{margin-left:6px;font-weight:400;color:var(--text-2);font-size:13px}

/* ---------------------------------------------------------------- pager, empty state, misc */
.pager{display:flex;gap:8px;align-items:center;margin-top:16px;font-size:14px;line-height:20px;letter-spacing:0;text-transform:none;color:var(--text-2)}
.empty{padding:16px 0;text-align:left;color:var(--text);font-style:normal;font-weight:400;font-size:14px;line-height:20px;background:none;border:0;max-width:72ch}
body>.empty{padding:24px var(--edge) 0}
td>.empty{padding:6px 0}

/* ---------------------------------------------------------------- the door */
main.door-page{min-height:100vh;display:grid;place-items:center;padding:24px}
.door{width:min(400px,100%);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:32px}
.door.wide{width:min(640px,100%)}
.door h1{margin:4px 0 8px}
.door-logo{display:block;width:min(240px,70%);height:auto;margin:0 0 20px;filter:invert(var(--logo-invert))}
.door .door-note{margin:16px 0 0;font-size:13px;line-height:18px;color:var(--text-3)}
.door p{color:var(--text-2);margin-bottom:24px}
.door .read-copy p{font-family:var(--serif);font-size:16px;line-height:26px;color:var(--text);margin-bottom:16px}
.door .read-copy p b{font-weight:600}
.door .go{display:flex;align-items:center;justify-content:center;width:100%;height:44px;padding:0 16px;border-radius:4px;background:var(--accent);color:var(--accent-ink);font-weight:600;text-decoration:none;transition:background-color 80ms}
.door .go:hover{background:var(--accent-hover);text-decoration:none}
.door .msg{background:var(--crit-soft);color:var(--crit);box-shadow:inset 3px 0 0 var(--crit);border-radius:4px;padding:12px 16px;margin:0 0 16px;font-size:14px;line-height:20px}

/* ---------------------------------------------------------------- widths */
@media (max-width:1100px){.stat-grid.four{grid-template-columns:1fr 1fr}.stat-grid.five{grid-template-columns:1fr 1fr 1fr}}
@media (max-width:1024px){.split{grid-template-columns:1fr}}
@media (max-width:900px){.fields2{grid-template-columns:1fr}.stat-grid.three{grid-template-columns:1fr}}
@media (max-width:720px){
  nav.cc-nav{gap:16px}
  .nav-links{gap:16px}
  .nav-right{gap:12px}
  td,th{padding:12px 10px}
}
@media (max-width:520px){.stat-grid.four,.stat-grid.five{grid-template-columns:1fr}.brand-logo{height:16px}}

/* ---------------------------------------------------------------- part 3: aprobación, datos, ajustes */
/* an anchor lands under the sticky nav and the sub-bar, not behind them */
section[id],.grupo[id],.dec[id],.bloque[id],.caso[id],.tema[id],span[id]{scroll-margin-top:116px}
.nowrap{white-space:nowrap}
.crit-text{color:var(--crit)}
.warn-text{color:var(--warn)}
.intro{font-size:14px;line-height:20px;color:var(--text-2);max-width:72ch;margin-bottom:12px}
.intro b{color:var(--text)}

/* two or three figures side by side in the page header */
.hero-meta.figures{display:flex;gap:32px;text-align:right}
.hero-meta.figures>div{min-width:0}

/* the sub-bar of Aprobación y revisión: the view at the left, the six section links at the right */
.toolbar.filtro{gap:8px 24px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:4px;background:var(--surface);overflow:hidden;flex-shrink:0}
.seg a{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;font-weight:500;color:var(--text);border-right:1px solid var(--line);white-space:nowrap;transition:background-color 80ms}
.seg a:last-child{border-right:0}
.seg a:hover{background:var(--surface-2);text-decoration:none}
.seg a.on{background:var(--accent-soft);color:var(--accent);font-weight:600}
.seg a .num{font-weight:400;color:var(--text-2)}
.seg a.on .num{color:var(--accent);font-weight:600}
.jumps{display:flex;gap:16px;align-items:center;max-width:100%;overflow-x:auto;scrollbar-width:none;white-space:nowrap;margin-left:auto}
.jumps::-webkit-scrollbar{display:none}
.jumps a{display:inline-flex;align-items:center;height:34px;font-weight:500;color:var(--text-2);flex-shrink:0}
.jumps a:hover{color:var(--accent);text-decoration:none}

/* the groups inside Pendientes */
.grupo{padding:24px 0 8px;border-top:1px solid var(--line)}
.grupo:first-of-type{border-top:0;padding-top:4px}
.grupo-head{display:flex;justify-content:space-between;align-items:baseline;gap:4px 16px;flex-wrap:wrap;margin-bottom:4px}
.grupo-head h3{font-size:16px;line-height:24px;font-weight:600}
.grupo-head .count{font-size:13px;line-height:18px;color:var(--text-2);font-variant-numeric:tabular-nums}

/* a card that decides one thing: a policy, a norm, a warning */
.dec{position:relative;border:1px solid var(--line);border-radius:6px;background:var(--surface);padding:16px;margin-bottom:12px}
.dec h3{font-size:18px;line-height:24px;font-weight:600;text-wrap:balance}
.dec .who{font-size:14px;line-height:20px;color:var(--text-2);margin-top:4px;max-width:80ch}
.dec .who b{color:var(--text)}
.dec .who+.who{margin-top:4px}
details.dec>summary{list-style:none;cursor:pointer;padding-right:28px}
details.dec>summary::-webkit-details-marker{display:none}
details.dec>summary::after{content:"";position:absolute;right:20px;top:24px;width:8px;height:8px;border:solid var(--text-2);border-width:0 1.5px 1.5px 0;transform:rotate(45deg);transition:transform 80ms}
details.dec[open]>summary::after{transform:rotate(-135deg);top:28px}
.estado{display:flex;gap:6px 10px;align-items:center;flex-wrap:wrap;font-size:14px;line-height:20px;color:var(--text-2);margin-top:8px}
.estado b{color:var(--text);font-weight:600}
.estado .num{font-variant-numeric:tabular-nums}

/* the two values of a policy side by side, and the two texts of a warning: words, so the serif */
.sides{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}
.side{border:1px solid var(--line);border-radius:4px;padding:12px 16px;min-width:0}
.side .k{font-size:13px;line-height:18px;font-weight:500;color:var(--text-2)}
.side .v{font-family:var(--serif);font-size:16px;line-height:26px;margin-top:4px;overflow-wrap:anywhere;white-space:pre-wrap;max-height:320px;overflow:auto}
details.src{margin-top:8px}
details.src>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-size:13px;line-height:18px;font-weight:500;color:var(--text-2)}
details.src>summary::-webkit-details-marker{display:none}
details.src>summary::before{content:"";width:6px;height:6px;margin:0 2px 2px 0;border:solid var(--text-2);border-width:0 1.5px 1.5px 0;transform:rotate(-45deg);transition:transform 80ms}
details.src[open]>summary::before{transform:rotate(45deg);margin-bottom:4px}
details.src>summary:hover{color:var(--accent)}
details.src>p{font-size:13px;line-height:18px;color:var(--text-2);margin-top:6px;max-width:80ch;overflow-wrap:anywhere}
.dec>details.src{margin-top:12px}
.unblocks{margin-top:12px;font-size:14px;line-height:20px}
.unblocks b{font-weight:600}
@media (max-width:820px){.sides{grid-template-columns:1fr}}

/* the decision form: the choices as chips, then the fields and the one button */
form.decide{margin-top:16px}
form.decide .chips{margin-bottom:8px}
.decide-fields,.form-row{display:flex;gap:8px 12px;align-items:flex-end;flex-wrap:wrap;margin-top:8px}
.decide-fields .field,.form-row .field{margin:0;display:block;flex:1 1 200px;max-width:320px}
.decide-fields .field>.lbl,.form-row .field>.lbl{margin:0 0 6px}
.decide-fields .field.author,.form-row .field.author{flex:0 1 180px}
.decide-fields input[type=text],.form-row input[type=text]{width:100%}
.decide-fields .btn,.form-row .btn{flex-shrink:0}
/* the field for another answer shows once that chip is chosen; a browser without :has shows it always */
form.decide:has(input[value=otra]:not(:checked)) .field.otra-text{display:none}
tr.pend>td{border-bottom:0}
tr.pend:hover,tr.decide-row:hover{background:none}
tr.decide-row>td{padding-top:0}
tr.decide-row form.decide{margin-top:0}
tr.decide-row .estado{margin-top:0;margin-bottom:8px}
td .dep-line+.dep-line{margin-top:4px}

/* the cases: one fold per case, one row per sub-case inside */
details.tema{border:1px solid var(--line);border-radius:6px;background:var(--surface);padding:0 16px;margin-bottom:8px}
details.tema>summary{padding:12px 0}
details.tema>summary .meta{font-weight:400;color:var(--text-2);font-size:13px;line-height:18px;font-variant-numeric:tabular-nums}
.caso{display:grid;grid-template-columns:minmax(200px,280px) 1fr;gap:8px 24px;padding:16px 0;border-top:1px solid var(--line)}
.caso .name{font-weight:600}
.caso .need{font-size:13px;line-height:18px;color:var(--text-2);margin-top:4px}
.caso form.decide{margin-top:0}
.caso details.fold{margin-top:4px}
.caso details.fold>summary{padding:6px 0;font-weight:500;color:var(--text-2)}
.caso .form-row{margin-top:4px;margin-bottom:8px}
@media (max-width:900px){.caso{grid-template-columns:1fr}}

/* the block rows: a header row, then one fold per answer that reads like a table row */
.bloques{border:1px solid var(--line);border-radius:6px;background:var(--surface);overflow:hidden}
.bloques-head,details.bloque>summary{display:grid;grid-template-columns:minmax(180px,2fr) minmax(140px,1.5fr) minmax(160px,1.3fr) 64px 64px 150px;gap:0 16px;align-items:center}
.bloques-head{padding:10px 16px 10px 40px;font-size:13px;line-height:18px;font-weight:600;color:var(--text-2);border-bottom:1px solid var(--line)}
.bloques-head .num,details.bloque>summary .num{text-align:right}
details.bloque+details.bloque{border-top:1px solid var(--line)}
details.bloque>summary{position:relative;padding:10px 16px 10px 40px;min-height:44px;cursor:pointer;list-style:none;font-size:14px;line-height:20px;transition:background-color 80ms}
details.bloque>summary::-webkit-details-marker{display:none}
details.bloque>summary::before{content:"";position:absolute;left:16px;top:19px;width:7px;height:7px;border:solid var(--text-2);border-width:0 1.5px 1.5px 0;transform:rotate(-45deg);transition:transform 80ms}
details.bloque[open]>summary::before{transform:rotate(45deg);top:16px}
details.bloque>summary:hover,details.bloque[open]>summary{background:var(--surface-2)}
details.bloque>summary .cell{min-width:0}
details.bloque>summary .name{font-weight:600}
details.bloque>summary .name .second{display:block;font-size:13px;line-height:18px;font-weight:400;color:var(--text-2)}
.bloque-body{padding:4px 16px 16px 40px;border-top:1px solid var(--line)}
.rotulo{display:block;font-size:13px;line-height:18px;font-weight:500;color:var(--text-2);margin:16px 0 8px}
.dep{font-size:14px;line-height:20px;max-width:80ch}
.dep p+p{margin-top:4px}
.bloque-body .notice.inset{margin:12px 0 0}
.texto>.read,.texto>pre.body{max-height:320px}
.texto>.line{max-width:72ch}
.bloque-body details.fold{margin-top:12px}
.bloque-body details.fold>form>.lbl:first-child{margin-top:4px}
.macro-list{margin-top:8px}
.macro-list details{border-top:1px solid var(--line);padding:8px 0}
.macro-list details>summary{cursor:pointer;font-weight:600;font-size:14px;line-height:20px}
.macro-list details>summary .muted{font-weight:400}
.macro-list pre.body{margin-top:8px;max-height:220px}
.enlaces{display:flex;gap:16px;flex-wrap:wrap;margin-top:16px;font-size:14px;line-height:20px}
.nuevo>summary{margin-top:8px}
.nuevo .card{margin-top:12px}
.nuevo .card>form>.lbl:first-child{margin-top:0}
.nuevo .fields2{margin-top:8px}
@media (max-width:900px){
  .bloques-head{display:none}
  details.bloque>summary{grid-template-columns:1fr;gap:4px}
  details.bloque>summary .num{text-align:left}
  details.bloque>summary .cell[data-k]::before{content:attr(data-k) ": ";color:var(--text-2)}
  .bloque-body{padding-left:16px}
}

/* Datos: cards that are doors */
.doors{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
.door-card{position:relative;border:1px solid var(--line);border-radius:6px;background:var(--surface);padding:16px;transition:background-color 80ms}
.door-card:hover{background:var(--surface-2)}
.door-card a.strong{font-size:16px;line-height:24px}
.door-card a.strong::after{content:"";position:absolute;inset:0}
.door-card p{margin-top:4px;font-size:14px;line-height:20px;color:var(--text-2)}

/* Ajustes del modelo: the meter of the month and the value rows */
.gasto p+p{margin-top:8px}
.barra{position:relative;height:8px;background:var(--surface-2);border-radius:4px;margin:12px 0 12px}
.barra .lleno{height:100%;background:var(--text-2);border-radius:4px}
.barra .lleno.aviso{background:var(--warn)}
.barra .lleno.agotado{background:var(--crit)}
.barra .marca{position:absolute;top:-4px;width:1px;height:16px;background:var(--text)}
.ajuste{display:grid;grid-template-columns:200px 1fr;gap:8px 24px;padding:16px 0;border-top:1px solid var(--line)}
.ajuste:first-of-type{border-top:0;padding-top:4px}
.ajuste .k{font-size:14px;line-height:20px;font-weight:600;padding-top:24px}
.ajuste .k.flat{padding-top:0}
.ajuste .fila{display:flex;gap:8px 12px;flex-wrap:wrap;align-items:flex-end}
.ajuste .fila+.fila{margin-top:12px}
.ajuste .fila .field{margin:0;display:block;flex:1 1 200px;max-width:360px}
.ajuste .fila .field.model{flex:1 1 320px;max-width:520px}
.ajuste .fila .field.short{flex:0 1 140px}
.ajuste .fila .field>.lbl{margin:0 0 6px}
.ajuste .fila input[type=text],.ajuste .fila select{width:100%}
.ajuste .quien{font-size:13px;line-height:18px;color:var(--text-2);margin-top:8px;max-width:80ch}
.ajuste .preset{font-size:14px;line-height:20px;margin-top:6px;max-width:72ch}
.ajuste .preset b{font-weight:600}
.ajuste .switch{display:inline-flex;gap:8px;align-items:center;font-size:14px;line-height:20px;min-height:36px;cursor:pointer}
@media (max-width:820px){.ajuste{grid-template-columns:1fr}.ajuste .k{padding-top:0}}
td>.estado{margin-top:0}
.grupo+.grupo{border-top:1px solid var(--line);padding-top:24px}
.grupo{border-top:0;padding-top:4px}
.subhead{font-size:14px;line-height:20px;font-weight:600;margin:16px 0 8px}
.form-row select{width:100%}
.form-row .field.author{flex:0 1 180px}
.nuevo input.wide{width:100%;display:block}
.bloques+.card,.card+details.nuevo,.bloques+details.nuevo{margin-top:16px}
.ajuste{border-top:0;padding-top:4px}
.ajuste+.ajuste{border-top:1px solid var(--line);padding-top:16px}
.dec .read{margin-top:0}
.dec .help{margin-top:8px}
/* the decision form on one line where it fits: the chips, then the fields and the button */
form.decide{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:flex-end}
form.decide .chips{margin:0;flex:0 1 auto}
form.decide .decide-fields{margin:0;flex:1 1 480px}
table.decisions{min-width:640px}
textarea[rows="3"]{min-height:120px}
