:root { color-scheme: light; --ink: #141413; --on-ink: #fff; --muted: #6b6b66; --line: #e3e3de; --line-strong: #bdbdb6; --ok: #1d7a46; --bad: #b3261e; --warn: #8a5a00;
  --bg: #f6f6f3; --surface: #fff; --surface-2: #fafaf8; --code-bg: #ececf0; --ok-soft: #effaf3; --ok-line: #9fd8b3; --bad-soft: #fff5f4; --warn-soft: #fffaf0; --warn-line: #f2c97d; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { color-scheme: dark; --ink: #ecebe6; --on-ink: #141413; --muted: #a3a29b; --line: #34342f; --line-strong: #4a4a44; --ok: #5cc98a; --bad: #ff8a80; --warn: #f2c97d;
  --bg: #121211; --surface: #1c1c1a; --surface-2: #252522; --code-bg: #2a2a27; --ok-soft: #15261b; --ok-line: #2f6b45; --bad-soft: #2c1715; --warn-soft: #29220f; --warn-line: #6b5426; } }
:root[data-theme="dark"] { color-scheme: dark; --ink: #ecebe6; --on-ink: #141413; --muted: #a3a29b; --line: #34342f; --line-strong: #4a4a44; --ok: #5cc98a; --bad: #ff8a80; --warn: #f2c97d;
  --bg: #121211; --surface: #1c1c1a; --surface-2: #252522; --code-bg: #2a2a27; --ok-soft: #15261b; --ok-line: #2f6b45; --bad-soft: #2c1715; --warn-soft: #29220f; --warn-line: #6b5426; }
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--ink); font: 15px/1.55 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; }
.cv { max-width: 760px; margin: 0 auto; padding: 28px 18px 60px; }
.cv-domain { margin: 0 0 14px; padding: 10px 14px; border: 2px solid var(--ink); border-radius: 10px; background: var(--surface); font-size: 16px; }
.cv-domain small { color: var(--muted); }
h1 { margin: 6px 0 12px; font-size: 24px; letter-spacing: -.02em; }
h2 { margin: 22px 0 8px; font-size: 13px; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
.cv-state { padding: 10px 14px; border-radius: 10px; font-weight: 600; border: 1px solid var(--line); background: var(--surface); }
.cv-state.ok { border-color: var(--ok); color: var(--ok); } .cv-state.bad { border-color: var(--bad); color: var(--bad); background: var(--bad-soft); }
.cv-checks { list-style: none; margin: 0; padding: 0; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; }
.cv-checks li { padding: 10px 14px; border-bottom: 1px solid var(--line); } .cv-checks li:last-child { border-bottom: 0; }
.cv-checks li b { display: inline-block; width: 1.4em; } .cv-checks li.ok b { color: var(--ok); } .cv-checks li.bad b { color: var(--bad); }
.cv-checks small { display: block; margin-left: 1.4em; color: var(--muted); overflow-wrap: anywhere; }
.cv-grid { display: grid; grid-template-columns: 1fr 190px; gap: 18px; align-items: start; }
.cv-seal { text-align: center; } .cv-seal svg { width: 180px; height: 180px; background: #fff; border: 1px solid var(--line); border-radius: 50%; } .cv-seal small { display: block; color: var(--muted); }
.mono { font: 12px/1.5 ui-monospace, "SF Mono", Menlo, Consolas, monospace; overflow-wrap: anywhere; }
dl { margin: 0; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 6px 14px; } dt { margin-top: 8px; color: var(--muted); font-size: 12px; } dd { margin: 0 0 8px; overflow-wrap: anywhere; }
.cv-drop { margin-top: 12px; padding: 18px; border: 2px dashed var(--line-strong); border-radius: 12px; background: var(--surface); text-align: center; cursor: pointer; }
.cv-drop.over { border-color: var(--ink); }
.cv-drop:focus-visible { border-color: var(--ink); outline: 2px solid var(--ink); outline-offset: 2px; } .cv-drop input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
#cv-result.ok { color: var(--ok); font-weight: 600; } #cv-result.bad { color: var(--bad); font-weight: 600; }
.cv-private, .cv-cli { color: var(--muted); } code { background: var(--code-bg); color: var(--ink); padding: 2px 6px; border-radius: 6px; }
@media (max-width: 600px) { .cv-grid { grid-template-columns: 1fr; } }
.cv-ai { margin-top: 16px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.cv-ai h2 { margin-top: 0; } .cv-ai dd { overflow-wrap: anywhere; }
.cv-prompt { display: grid; gap: 6px; margin-top: 10px; font-size: .92em; }
.cv-prompt textarea { width: 100%; box-sizing: border-box; font: inherit; padding: 8px 10px; border: 1px solid var(--line-strong); border-radius: 8px; resize: vertical; }
.cv-prompt textarea:focus-visible { outline: 2px solid var(--ink); outline-offset: 1px; }
#cv-prompt-result.ok { color: var(--ok); font-weight: 600; } #cv-prompt-result.bad { color: var(--bad); font-weight: 600; }
.cv-ai h3 { margin: 14px 0 6px; font-size: 13px; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.cv-ai-files { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.cv-ai-file { display: grid; gap: 2px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; overflow-wrap: anywhere; transition: border-color .15s, background .15s; }
.cv-ai-file span { font-size: .9em; color: var(--muted); } .cv-ai-file span.mono { font-size: .8em; }
.cv-ai-file.match { border-color: var(--ok); background: var(--ok-soft); }
@media (prefers-reduced-motion: reduce) { .cv-ai-file { transition: none; } }
.cv-downloads { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0 0; }
.cv-download { display: inline-flex; align-items: center; min-height: 40px; padding: 8px 14px; border-radius: 10px; background: var(--ink); color: var(--on-ink); font-weight: 600; font-size: 14px; text-decoration: none; }
.cv-download--ghost { background: var(--surface); color: var(--ink); box-shadow: inset 0 0 0 1px var(--line); }
.cv-download:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.cv-offline { margin-top: 14px; padding: 12px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.cv-offline summary { cursor: pointer; font-weight: 600; }
.cv-offline ol { margin: 10px 0 0; padding-left: 20px; display: grid; gap: 8px; font-size: .94em; }
.cv-offline code { overflow-wrap: anywhere; }
/* /verificar-lote */
.cv-lead { margin: 0 0 14px; color: var(--muted); }
.cv-batch .cv-drop { margin-top: 0; }
.cvb-list { display: grid; gap: 8px; margin: 12px 0; }
.cvb-file { display: grid; grid-template-columns: minmax(0, 1.4fr) auto minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); }
.cvb-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; font-size: 14px; }
.cvb-hash { color: var(--muted); font-size: 12px; white-space: nowrap; }
.cvb-file input { width: 100%; min-height: 36px; padding: 6px 10px; border: 1px solid var(--line-strong); border-radius: 8px; font: 13px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; text-transform: uppercase; }
.cvb-file input:focus-visible, .cvb-remove:focus-visible, .cv-download:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.cvb-remove { width: 32px; height: 32px; border: 0; border-radius: 8px; background: transparent; color: var(--muted); font-size: 20px; cursor: pointer; }
.cvb-remove:hover { background: var(--surface-2); color: var(--ink); }
button.cv-download { border: 0; cursor: pointer; font: inherit; font-weight: 600; font-size: 14px; }
button.cv-download:disabled { opacity: .45; cursor: default; }
.cvb-status { min-height: 22px; margin: 8px 0; font-weight: 600; } .cvb-status.ok { color: var(--ok); } .cvb-status.bad { color: var(--bad); }
.cvb-scroll { overflow-x: auto; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.cvb-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.cvb-table th { padding: 9px 12px; text-align: left; font-size: 12px; color: var(--muted); font-weight: 600; border-bottom: 1px solid var(--line); background: var(--surface-2); }
.cvb-table td { padding: 10px 12px; border-bottom: 1px solid var(--line); vertical-align: top; overflow-wrap: anywhere; }
.cvb-table tr:last-child td { border-bottom: 0; }
.cvb-num, .cvb-verdict { white-space: nowrap; }
.cvb-table tr.ok .cvb-verdict { color: var(--ok); font-weight: 700; } .cvb-table tr.bad .cvb-verdict { color: var(--bad); font-weight: 700; }
@media (max-width: 640px) {
  .cvb-file { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "name remove" "hash hash" "num num"; row-gap: 6px; }
  .cvb-name { grid-area: name; } .cvb-remove { grid-area: remove; } .cvb-hash { grid-area: hash; justify-self: start; } .cvb-file input { grid-area: num; }
  .cvb-scroll { border: 0; background: transparent; overflow: visible; }
  .cvb-table thead { display: none; } .cvb-table, .cvb-table tbody, .cvb-table tr, .cvb-table td { display: block; width: 100%; }
  .cvb-table tr { margin-bottom: 10px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
  .cvb-table td { display: grid; grid-template-columns: 9.5em minmax(0, 1fr); gap: 8px; padding: 8px 12px; white-space: normal; }
  .cvb-table td::before { content: attr(data-label); color: var(--muted); font-size: 12px; font-weight: 600; }
}
/* /integraciones (developer guide) */
.cvd { max-width: 860px; }
.cvd section { scroll-margin-top: 16px; }
.cvd h2 { margin-top: 30px; color: var(--ink); font-size: 15px; letter-spacing: .02em; text-transform: none; }
.cvd-nav { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 10px; }
.cvd-nav a { padding: 6px 12px; border-radius: 999px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); color: var(--ink); font-size: 13px; font-weight: 600; text-decoration: none; }
.cvd-nav a:hover { box-shadow: inset 0 0 0 1px var(--ink); } .cvd-nav a:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.cvd-code { margin: 12px 0; border-radius: 12px; overflow: hidden; background: #141413; box-shadow: 0 1px 2px rgba(0,0,0,.06); }
.cvd-code figcaption { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 12px; background: #23231f; color: #c9c9c2; font-size: 12px; font-weight: 600; }
.cvd-copy { min-height: 28px; padding: 4px 10px; border: 0; border-radius: 6px; background: #3a3a35; color: #fff; font: inherit; font-size: 12px; cursor: pointer; }
.cvd-copy:hover { background: #4a4a44; } .cvd-copy:focus-visible { outline: 2px solid #fff; outline-offset: 2px; } .cvd-copy.ok { background: var(--ok); }
.cvd-code pre { margin: 0; padding: 14px 16px; overflow-x: auto; color: #f2f2ee; font: 12.5px/1.6 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; tab-size: 2; }
.cvd .cvd-code code { white-space: pre; background: none; color: inherit; padding: 0; border-radius: 0; font: inherit; box-shadow: none; }
.cvd-list { margin: 8px 0; padding-left: 20px; display: grid; gap: 6px; }
.cvd p code, .cvd-list code { overflow-wrap: anywhere; }
.cv-embed textarea { width: 100%; margin: 8px 0; padding: 8px 10px; border: 1px solid var(--line-strong); border-radius: 8px; font: 12px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace; resize: vertical; }
.cv-embed-preview { margin: 8px 0 0; } .cv-embed button { margin-top: 2px; }
.cv-ots { margin: 10px 0 0; padding: 10px 14px; border: 1px solid var(--warn-line); border-radius: 10px; background: var(--warn-soft); font-size: 14px; }
.cv-ots code { overflow-wrap: anywhere; }
.cv-ots--done { border-color: var(--ok-line); background: var(--ok-soft); } .cv-ots a { color: inherit; }
/* /transparencia */
.cvt-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; margin: 14px 0; }
.cvt-tile { display: grid; gap: 2px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.cvt-tile span { color: var(--muted); font-size: 12.5px; } .cvt-tile b { font-size: 26px; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.cvt-tile small { color: var(--muted); font-size: 12px; }
.cvt-dl { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 6px 14px; margin: 8px 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.cvt-dl dt { color: var(--muted); } .cvt-dl dd { margin: 0; overflow-wrap: anywhere; } .cvt-dl small { color: var(--muted); }
@media (max-width: 640px) { .cvt-dl { grid-template-columns: 1fr; } .cvt-dl dd { margin-bottom: 6px; } }

a { color: inherit; text-underline-offset: 2px; }
textarea, input { background: var(--surface); color: var(--ink); }
/* /verify › Credencial de contenido */
:root { --ai: #5a46c8; --ai-soft: #f1effd; --ai-line: #cfc8f5; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --ai: #b9adff; --ai-soft: #221d3d; --ai-line: #463c7d; } }
:root[data-theme="dark"] { --ai: #b9adff; --ai-soft: #221d3d; --ai-line: #463c7d; }
.cv-cc { margin-top: 16px; padding: 14px 16px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.cv-cc-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
.cv-cc-head h2 { margin: 0; }
.cv-cc-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; font-size: 12.5px; font-weight: 700; border: 1px solid var(--line); background: var(--surface-2); color: var(--ink); }
.cv-cc-chip::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.cv-cc-chip--assisted { border-color: var(--warn-line); background: var(--warn-soft); color: var(--warn); }
.cv-cc-chip--generated { border-color: var(--ai-line); background: var(--ai-soft); color: var(--ai); }
.cv-cc-lead { margin: 8px 0 10px; color: var(--muted); font-size: 14px; }
.cv-cc-rows { list-style: none; margin: 0; padding: 0; border: 1px solid var(--line); border-radius: 10px; }
.cv-cc-rows li { display: grid; grid-template-columns: 9.5em minmax(0, 1fr); gap: 12px; padding: 10px 12px; border-bottom: 1px solid var(--line); }
.cv-cc-rows li:last-child { border-bottom: 0; }
.cv-cc-rows li > span { color: var(--muted); font-size: 12.5px; padding-top: 2px; }
.cv-cc-rows li div { display: grid; gap: 2px; min-width: 0; overflow-wrap: anywhere; }
.cv-cc-rows small { color: var(--muted); font-size: 12.5px; }
.cv-cc-empty { color: var(--muted); font-style: italic; }
.cv-cc-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin: 12px 0 0; }
.cv-cc-actions small { color: var(--muted); font-size: 12.5px; min-width: 0; overflow-wrap: anywhere; }
@media (max-width: 520px) { .cv-cc-rows li { grid-template-columns: 1fr; gap: 2px; } }
.cv-cc-pdf { margin: 12px 0 0; padding: 10px 12px; border-radius: 10px; background: var(--surface-2); border: 1px solid var(--line); font-size: 13px; color: var(--muted); overflow-wrap: anywhere; }
.cv-cc-pdf b { color: var(--ink); }
/* /verificar-manifiesto */
.cvm-hidden { display: none; }
.cvm-drop { display: grid; gap: 4px; margin: 12px 0 0; text-align: left; }
.cvm-drop p { margin: 0; }
.cvm-drop--optional { border-style: dotted; }
.cvm-picked { color: var(--ink); font-weight: 600; font-size: 13.5px; overflow-wrap: anywhere; }
.cvm-picked:empty { display: none; }
.cvm .cv-state { margin: 14px 0 0; }
.cvm .cv-checks li.na b { color: var(--muted); }
.cvm-empty { display: grid; gap: 4px; place-items: center; margin-top: 14px; padding: 26px 16px; border: 1px dashed var(--line-strong); border-radius: 12px; text-align: center; color: var(--muted); }
.cvm-empty b { color: var(--ink); font-size: 14.5px; } .cvm-empty p { margin: 0; max-width: 46ch; font-size: 13.5px; }
.cv-state.warn { border-color: var(--warn-line); background: var(--warn-soft); color: var(--warn); }
/* /constancias (landing) */
.cvh { max-width: 960px; }
.cvh-hero { padding: 18px 0 6px; }
.cvh-eyebrow { margin: 0 0 6px; color: var(--muted); font-size: 12.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.cvh h1 { font-size: clamp(28px, 6vw, 40px); line-height: 1.12; letter-spacing: -.03em; margin: 0 0 12px; }
.cvh .cv-lead { max-width: 62ch; font-size: 16px; }
.cvh-cta { display: flex; flex-wrap: wrap; gap: 10px; margin: 18px 0 6px; }
.cvh-cta .cv-download { min-height: 44px; padding: 10px 18px; font-size: 15px; }
.cvh section { margin-top: 30px; }
.cvh h2 { color: var(--ink); font-size: 15px; letter-spacing: .02em; text-transform: none; margin-bottom: 12px; }
.cvh h3 { margin: 0 0 4px; font-size: 15px; letter-spacing: -.01em; }
.cvh h3 small { margin-left: 6px; padding: 2px 8px; border-radius: 999px; background: var(--surface-2); border: 1px solid var(--line); color: var(--muted); font-size: 11px; font-weight: 700; letter-spacing: .02em; vertical-align: 2px; }
.cvh p { margin: 0; }
.cvh-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 10px; }
.cvh-step { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 12px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.cvh-step-n { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--ink); color: var(--on-ink); font-weight: 700; font-size: 13px; }
.cvh-step p, .cvh-card p, .cvh-panel li { color: var(--muted); font-size: 14px; }
.cvh-cards { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 10px; }
.cvh-card { padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.cvh-two { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 10px; }
.cvh-panel { padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); }
.cvh-panel .cvd-list { margin-bottom: 0; }
.cvh-tools { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 10px; }
.cvh-tool { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "t i" "d i"; gap: 2px 12px; align-items: center; height: 100%; padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface); color: var(--ink); text-decoration: none; transition: border-color .15s, transform .15s; }
.cvh-tool b { grid-area: t; font-size: 15px; } .cvh-tool span { grid-area: d; color: var(--muted); font-size: 13.5px; } .cvh-tool i { grid-area: i; font-style: normal; color: var(--muted); font-size: 18px; }
.cvh-tool:hover { border-color: var(--ink); } .cvh-tool:hover i { color: var(--ink); }
.cvh-tool:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
@media (prefers-reduced-motion: no-preference) { .cvh-tool:hover { transform: translateY(-1px); } }
/* «Proyecto alojado» on /verify (step 5): pill-style card with the address and its action (adapted from Beautiful UI's
   status card), on the page tokens; stacks on phones. */
.cv-project { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 18px; margin: 14px 0 0; padding: 14px 16px; border: 1px solid var(--ok-line); border-radius: 12px; background: var(--ok-soft); }
.cv-project > div { min-width: 0; flex: 1 1 260px; }
.cv-project h2 { margin: 0 0 4px; }
.cv-project p { margin: 0 0 4px; font-size: 13px; color: var(--ink); }
.cv-project small { color: var(--muted); }
@media (max-width: 600px) { .cv-project .cv-download { flex: 1 1 100%; justify-content: center; } }
/* Mode B: a server declared by the owner, not covered by the constancia's hashes: neutral, not the green "verified" card. */
.cv-project--declared { border-color: var(--warn-line); background: var(--warn-soft); }
.cv-pill { display: inline-block; margin-left: 6px; padding: 0 8px; border-radius: 999px; border: 1px solid var(--line-strong); font: 600 11px/1.6 system-ui, sans-serif; color: var(--ink); vertical-align: 1px; }

