/* GENERADO POR tools/build-ds.mjs — NO EDITAR A MANO.
   Fuente: docs/ds-src/restimator/docs/ds-master.css.
   Todos los selectores scopeados bajo .re-doc: el original trae html,
   body, *, a, svg y clases genéricas (.hero .body .main .sub .card-h
   .tag .on .b .k .d .r .v) que romperían el portfolio sin scope.
   Los ajustes propios NO van acá — van en doc-overrides.css. */
/* ============================================================
   REstimator Design System — Master Documentation
   Documentation chrome only. All colour/type/space values come
   from the real system tokens (../styles.css).
   ============================================================ */
html:has(> body.es-ds-page){scroll-behavior:smooth}
.re-doc{margin:0;background:var(--re-canvas);color:var(--re-ink);font-family:var(--re-font-sans);font-size:14px;line-height:var(--re-lh-normal);letter-spacing:var(--re-ls-body);-webkit-font-smoothing:antialiased;font-feature-settings:"tnum" 1,"ss01" 1}
.re-doc, .re-doc *,.re-doc::before, .re-doc *::before,.re-doc::after, .re-doc *::after{box-sizing:border-box}
.re-doc svg{display:block}
.re-doc .num{font-variant-numeric:tabular-nums}
.re-doc .mono{font-family:var(--re-font-mono);font-variant-numeric:tabular-nums}
.re-doc a{color:var(--re-amber-ink);text-decoration:none}
.re-doc a:hover{color:var(--re-amber-bright)}

/* ---------- layout ---------- */
.re-doc .doc{display:grid;grid-template-columns:264px minmax(0,1fr)}
.re-doc .rail{position:sticky;top:0;height:100vh;overflow-y:auto;background:var(--re-surface);border-right:1px solid var(--re-line);padding:var(--re-s5) var(--re-s3) var(--re-s7);display:flex;flex-direction:column}
.re-doc .rail-brand{display:flex;align-items:center;gap:11px;padding:6px 10px var(--re-s5)}
.re-doc .lm{width:32px;height:32px;border-radius:var(--re-r-sm);background:var(--re-amber);color:#0d0e11;display:grid;place-items:center;font-weight:700;font-size:13px;letter-spacing:.5px;flex:none}
.re-doc .rail-brand .t{font-size:13.5px;font-weight:600;line-height:1.2}
.re-doc .rail-brand .t span{display:block;font-size:10.5px;color:var(--re-ink-4);font-weight:500;margin-top:2px}
.re-doc .rail-grp{font-size:10px;font-weight:600;letter-spacing:var(--re-ls-eyebrow);text-transform:uppercase;color:var(--re-ink-4);padding:var(--re-s4) 10px 6px}
.re-doc .rail a.nv{display:flex;align-items:baseline;gap:10px;padding:7px 10px;border-radius:var(--re-r-sm);color:var(--re-ink-2);font-size:13px;font-weight:500;position:relative}
.re-doc .rail a.nv .n{font-family:var(--re-font-mono);font-size:10.5px;color:var(--re-ink-4);min-width:18px}
.re-doc .rail a.nv:hover{background:var(--re-surface-2);color:var(--re-ink)}
.re-doc .rail a.nv.on{background:var(--re-surface-2);color:var(--re-ink);font-weight:600}
.re-doc .rail a.nv.on::before{content:"";position:absolute;left:-12px;top:7px;bottom:7px;width:3px;border-radius:3px;background:var(--re-amber)}
.re-doc .rail-foot{margin-top:auto;padding:var(--re-s5) 10px 0;border-top:1px solid var(--re-line);font-size:11px;color:var(--re-ink-4);line-height:1.5}
.re-doc .main{min-width:0}
.re-doc .pad{padding:var(--re-s8) var(--re-s8) var(--re-s10);max-width:1180px}

/* ---------- hero (portfolio entry) ---------- */
.re-doc .hero{background:var(--re-charcoal);border-bottom:1px solid var(--re-charcoal-line);padding:var(--re-s10) var(--re-s8)}
.re-doc .hero .in{max-width:1180px}
.re-doc .hero .eyebrow{font-size:11.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--re-amber-ink)}
.re-doc .hero h1{font-size:56px;font-weight:700;letter-spacing:-.03em;line-height:1.02;margin:var(--re-s4) 0 var(--re-s4);color:#fff;max-width:20ch}
.re-doc .hero .sub{font-size:18px;color:var(--re-on-dark-2);max-width:70ch;margin:0;text-wrap:pretty}
.re-doc .hero .facts{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--re-s5);margin-top:var(--re-s8);max-width:880px}
.re-doc .hero .facts div{border-top:1px solid var(--re-charcoal-line);padding-top:var(--re-s3)}
.re-doc .hero .facts .k{font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--re-on-dark-3)}
.re-doc .hero .facts .v{font-size:26px;font-weight:700;letter-spacing:-.02em;color:var(--re-amber-bright);margin-top:5px}
.re-doc .hero .facts .d{font-size:11.5px;color:var(--re-on-dark-3);margin-top:2px}

/* ---------- section scaffolding ---------- */
.re-doc section.sec{scroll-margin-top:0;padding-top:var(--re-s9)}
.re-doc section.sec:first-of-type{padding-top:0}
.re-doc .sec-h{border-bottom:1px solid var(--re-line);padding-bottom:var(--re-s4);margin-bottom:var(--re-s6);display:flex;align-items:flex-end;gap:var(--re-s4)}
.re-doc .sec-h .num-badge{font-family:var(--re-font-mono);font-size:12px;font-weight:600;color:var(--re-amber-ink);border:1px solid var(--re-amber-line);background:var(--re-amber-soft);border-radius:6px;padding:3px 9px}
.re-doc .sec-h h2{font-size:28px;font-weight:600;letter-spacing:-.025em;margin:0}
.re-doc .sec-h .cnt{margin-left:auto;font-size:11.5px;color:var(--re-ink-4);font-family:var(--re-font-mono)}
.re-doc .lede{font-size:15.5px;color:var(--re-ink-2);max-width:76ch;margin:0 0 var(--re-s6);text-wrap:pretty}
.re-doc h3.sub{font-size:17px;font-weight:600;letter-spacing:-.015em;margin:var(--re-s7) 0 var(--re-s4);display:flex;align-items:center;gap:10px}
.re-doc h3.sub .tick{width:4px;height:15px;border-radius:2px;background:var(--re-amber);flex:none}
.re-doc h4.mini{font-size:11px;font-weight:600;letter-spacing:var(--re-ls-eyebrow);text-transform:uppercase;color:var(--re-ink-4);margin:var(--re-s6) 0 var(--re-s3)}
.re-doc p.body{font-size:14px;color:var(--re-ink-2);max-width:78ch;margin:0 0 var(--re-s4);line-height:var(--re-lh-relaxed)}
.re-doc p.body b,.re-doc li b{color:var(--re-ink);font-weight:600}
.re-doc ul.body{margin:0 0 var(--re-s4);padding-left:20px;max-width:78ch}
.re-doc ul.body li{font-size:14px;color:var(--re-ink-2);margin-bottom:7px;line-height:var(--re-lh-relaxed)}
.re-doc ul.body li::marker{color:var(--re-ink-4)}

/* ---------- cards / panels ---------- */
.re-doc .card{background:var(--re-surface);border:1px solid var(--re-line);border-radius:var(--re-r-lg);box-shadow:var(--re-shadow-sm)}
.re-doc .card-h{padding:var(--re-s4) var(--re-s5);border-bottom:1px solid var(--re-line);display:flex;align-items:center;gap:11px}
.re-doc .card-h .ic{width:28px;height:28px;border-radius:var(--re-r-sm);background:var(--re-surface-2);border:1px solid var(--re-line);display:grid;place-items:center;color:var(--re-ink-2);flex:none}
.re-doc .card-h .ic svg{width:15px;height:15px}
.re-doc .card-h .tt{font-size:14.5px;font-weight:600;letter-spacing:var(--re-ls-tight)}
.re-doc .card-h .hint{font-size:11.5px;color:var(--re-ink-4)}
.re-doc .card-h .r{margin-left:auto}
.re-doc .card-b{padding:var(--re-s5)}
.re-doc .grid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--re-s4)}
.re-doc .grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--re-s4)}
.re-doc .stack{display:flex;flex-direction:column;gap:var(--re-s4)}

/* ---------- tables ---------- */
.re-doc table.tb{width:100%;border-collapse:collapse;font-size:13px;border:1px solid var(--re-line);border-radius:var(--re-r-lg);overflow:hidden}
.re-doc table.tb th,.re-doc table.tb td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--re-line);vertical-align:top}
.re-doc table.tb thead th{font-size:10.5px;font-weight:600;letter-spacing:var(--re-ls-caps);text-transform:uppercase;color:var(--re-ink-4);background:var(--re-surface-2);white-space:nowrap}
.re-doc table.tb tbody td{color:var(--re-ink-2);line-height:1.5}
.re-doc table.tb tbody td:first-child{color:var(--re-ink);font-weight:600}
.re-doc table.tb tbody tr:last-child td{border-bottom:0}
.re-doc table.tb tbody tr:hover td{background:var(--re-surface-2)}
.re-doc table.tb .tok{font-family:var(--re-font-mono);font-size:11.5px;color:var(--re-amber-ink);white-space:nowrap}
.re-doc table.tb .mono{font-family:var(--re-font-mono);font-size:11.5px;color:var(--re-ink-3)}
.re-doc table.tb.dense th,.re-doc table.tb.dense td{padding:8px 12px}
.re-doc .scrollx{overflow-x:auto;border-radius:var(--re-r-lg)}

/* ---------- swatches ---------- */
.re-doc .sw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:var(--re-s3)}
.re-doc .sw{border:1px solid var(--re-line);border-radius:var(--re-r);overflow:hidden;background:var(--re-surface)}
.re-doc .sw .chip{height:62px;border-bottom:1px solid var(--re-line)}
.re-doc .sw .meta{padding:9px 11px}
.re-doc .sw .nm{font-family:var(--re-font-mono);font-size:11px;color:var(--re-ink);font-weight:500}
.re-doc .sw .hx{font-family:var(--re-font-mono);font-size:10.5px;color:var(--re-ink-4);margin-top:3px}
.re-doc .sw .use{font-size:10.5px;color:var(--re-ink-3);margin-top:5px;line-height:1.35}

/* ---------- spec dl ---------- */
.re-doc dl.spec{margin:0;display:grid;grid-template-columns:1fr auto;gap:8px 14px}
.re-doc dl.spec dt{font-size:12.5px;color:var(--re-ink-2)}
.re-doc dl.spec dd{margin:0;font-family:var(--re-font-mono);font-size:11.5px;color:var(--re-ink);text-align:right}
.re-doc dl.spec dd.am{color:var(--re-amber-ink)}

/* ---------- specimen stage ---------- */
.re-doc .stage{background:var(--re-canvas);border:1px dashed var(--re-line-strong);border-radius:var(--re-r);padding:var(--re-s5);display:flex;flex-wrap:wrap;gap:var(--re-s3);align-items:center}
.re-doc .stage.col{flex-direction:column;align-items:stretch}
.re-doc .stage.tight{padding:var(--re-s4)}
.re-doc .stage-lab{font-size:10px;font-weight:600;letter-spacing:var(--re-ls-eyebrow);text-transform:uppercase;color:var(--re-ink-4);margin-bottom:9px}

/* ---------- real component replicas (token-driven) ---------- */
.re-doc .b{font-family:var(--re-font-sans);font-size:14px;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:var(--re-r-sm);border:1px solid var(--re-line-2);background:var(--re-surface);color:var(--re-ink-2);padding:0 14px;height:var(--re-control-h);white-space:nowrap;cursor:pointer;transition:background .13s ease,border-color .13s ease}
.re-doc .b:hover{background:var(--re-surface-2);border-color:var(--re-line-strong);color:var(--re-ink)}
.re-doc .b svg{width:16px;height:16px;flex:none}
.re-doc .b.pri{background:var(--re-charcoal);border-color:var(--re-charcoal-line);color:#fff;font-weight:600}
.re-doc .b.acc{background:var(--re-amber);border-color:var(--re-amber);color:#0d0e11;font-weight:600}
.re-doc .b.acc:hover{background:var(--re-amber-strong);border-color:var(--re-amber-strong);color:#0d0e11}
.re-doc .b.gh{background:transparent;border-color:transparent}
.re-doc .b.sm{height:var(--re-control-h-sm);font-size:13px;padding:0 11px}
.re-doc .b.lg{height:46px;font-size:15px;padding:0 18px}
.re-doc .b[disabled],.re-doc .b.dis{opacity:.45;pointer-events:none}
.re-doc .b.foc{border-color:var(--re-amber);box-shadow:var(--re-ring)}
.re-doc .ib{width:34px;height:34px;border-radius:var(--re-r-sm);border:1px solid var(--re-line-2);background:var(--re-surface);color:var(--re-ink-2);display:grid;place-items:center;cursor:pointer}
.re-doc .ib svg{width:16px;height:16px}
.re-doc .ib.bare{width:30px;height:30px;border-color:transparent;background:transparent}
.re-doc .ib.dgr:hover{color:var(--re-crit);border-color:var(--re-crit-line);background:var(--re-crit-soft)}
.re-doc .fld{display:flex;flex-direction:column;gap:7px;min-width:0}
.re-doc .fld > .lb{font-size:12.5px;font-weight:500;color:var(--re-ink-2);display:flex;gap:7px;align-items:baseline}
.re-doc .fld > .lb .op{font-size:11px;color:var(--re-ink-4);font-weight:400}
.re-doc .ctl{width:100%;font-family:var(--re-font-sans);font-size:14px;color:var(--re-ink);background:var(--re-surface);border:1px solid var(--re-line-2);border-radius:var(--re-r-sm);height:var(--re-control-h);display:flex;align-items:center;padding:0 12px;gap:8px}
.re-doc .ctl.ph{color:var(--re-ink-4)}
.re-doc .ctl.foc{border-color:var(--re-amber);box-shadow:var(--re-ring)}
.re-doc .ctl.dis{opacity:.45}
.re-doc .ctl .pfx,.re-doc .ctl .sfx{color:var(--re-ink-4);font-size:13px;flex:none}
.re-doc .ctl .val{flex:1;min-width:0}
.re-doc .ctl .val.r{text-align:right;font-variant-numeric:tabular-nums}
.re-doc .ctl.sel{justify-content:space-between;color:var(--re-ink-2);cursor:pointer}
.re-doc .ctl.sel svg{width:15px;height:15px;color:var(--re-ink-3);flex:none}
.re-doc .ta{min-height:76px;align-items:flex-start;padding:10px 12px;line-height:1.5}
.re-doc .note{display:flex;gap:8px;align-items:flex-start;font-size:11.5px;color:var(--re-ink-4);line-height:1.45}
.re-doc .note svg{width:13px;height:13px;flex:none;margin-top:2px}
.re-doc .tg{width:38px;height:22px;border-radius:var(--re-r-pill);background:var(--re-surface-3);border:1px solid var(--re-line-2);position:relative;flex:none;transition:background .13s ease}
.re-doc .tg i{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--re-ink-3);transition:transform .13s ease,background .13s ease}
.re-doc .tg.on{background:var(--re-charcoal);border-color:var(--re-charcoal-line)}
.re-doc .tg.on i{transform:translateX(16px);background:#fff}
.re-doc .tg.on.am{background:var(--re-amber);border-color:var(--re-amber)}
.re-doc .tg.on.am i{background:#0d0e11}
.re-doc .tg.sm{width:32px;height:19px}
.re-doc .tg.sm i{width:13px;height:13px}
.re-doc .tg.sm.on i{transform:translateX(13px)}
.re-doc .seg{display:inline-flex;background:var(--re-surface-2);border:1px solid var(--re-line-2);border-radius:var(--re-r-sm);padding:3px;gap:3px}
.re-doc .seg span{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--re-ink-3);padding:6px 13px;border-radius:5px;cursor:pointer}
.re-doc .seg span svg{width:15px;height:15px}
.re-doc .seg span.on{background:var(--re-surface);color:var(--re-ink);font-weight:600;box-shadow:var(--re-shadow-sm)}
.re-doc .bdg{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500;color:var(--re-ink-2);background:var(--re-surface);border:1px solid var(--re-line-2);border-radius:var(--re-r-pill);padding:3px 10px}
.re-doc .bdg .d{width:6px;height:6px;border-radius:50%;background:var(--re-ink-4);flex:none}
.re-doc .bdg.ok{color:var(--re-ok-bright);background:var(--re-ok-soft);border-color:var(--re-ok-line)}
.re-doc .bdg.wn{color:var(--re-warn-ink);background:var(--re-warn-soft);border-color:var(--re-warn-line)}
.re-doc .bdg.cr{color:var(--re-crit);background:var(--re-crit-soft);border-color:var(--re-crit-line)}
.re-doc .bdg.inf{color:var(--re-info);background:var(--re-info-soft);border-color:var(--re-info-line)}
.re-doc .bdg.sq{border-radius:5px;font-family:var(--re-font-mono);font-size:11px;padding:3px 8px}
.re-doc .al{display:flex;gap:11px;align-items:flex-start;border-radius:var(--re-r);padding:12px 14px;font-size:13px;line-height:1.5;border:1px solid var(--re-warn-line);background:var(--re-warn-soft);color:var(--re-ink-2)}
.re-doc .al svg{width:16px;height:16px;flex:none;margin-top:2px;color:var(--re-warn)}
.re-doc .al b{display:block;color:var(--re-ink);font-weight:600;margin-bottom:2px}
.re-doc .al.ok{border-color:var(--re-ok-line);background:var(--re-ok-soft)}.re-doc .al.ok svg{color:var(--re-ok-bright)}
.re-doc .al.inf{border-color:var(--re-info-line);background:var(--re-info-soft)}.re-doc .al.inf svg{color:var(--re-info)}
.re-doc .al.cr{border-color:var(--re-crit-line);background:var(--re-crit-soft)}.re-doc .al.cr svg{color:var(--re-crit)}
.re-doc .al.nt{border-color:var(--re-line-2);background:var(--re-surface-2)}.re-doc .al.nt svg{color:var(--re-ink-3)}
.re-doc .stt{background:var(--re-surface);border:1px solid var(--re-line);border-radius:var(--re-r);padding:13px 15px}
.re-doc .stt .k{font-size:10px;font-weight:600;letter-spacing:var(--re-ls-eyebrow);text-transform:uppercase;color:var(--re-ink-4)}
.re-doc .stt .v{font-size:22px;font-weight:700;letter-spacing:-.02em;margin-top:6px;font-variant-numeric:tabular-nums}
.re-doc .stt .s{font-size:11.5px;color:var(--re-ink-4);margin-top:3px}
.re-doc .stt.acc{background:var(--re-charcoal);border-color:var(--re-charcoal-line)}
.re-doc .stt.acc .k{color:var(--re-on-dark-3)}
.re-doc .stt.acc .v{color:#fff}
.re-doc .stt.acc .v.am{color:var(--re-amber-bright)}
.re-doc .stt.acc .s{color:var(--re-on-dark-3)}
.re-doc .sech{display:flex;align-items:center;gap:11px}
.re-doc .sech .ix{width:22px;height:22px;border-radius:6px;background:var(--re-surface-2);border:1px solid var(--re-line);display:grid;place-items:center;font-size:11px;font-weight:600;color:var(--re-ink-3);flex:none}
.re-doc .sech .tt{font-size:15px;font-weight:600;letter-spacing:var(--re-ls-tight)}
.re-doc .sech .hn{font-size:11.5px;color:var(--re-ink-4)}
.re-doc .navi{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:var(--re-r-sm);color:var(--re-ink-2);font-size:13.5px;font-weight:500;position:relative}
.re-doc .navi svg{width:18px;height:18px;color:var(--re-ink-3);flex:none}
.re-doc .navi.on{background:var(--re-surface-2);color:var(--re-ink);font-weight:600}
.re-doc .navi.on svg{color:var(--re-ink)}
.re-doc .navi.on::before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--re-amber)}
.re-doc .uchip{display:inline-flex;align-items:center;gap:10px;padding:5px 12px 5px 5px;border-radius:var(--re-r-pill);border:1px solid var(--re-line);background:var(--re-surface)}
.re-doc .av{width:30px;height:30px;border-radius:50%;background:var(--re-surface-3);color:var(--re-ink);display:grid;place-items:center;font-size:11px;font-weight:600;flex:none}
.re-doc .uchip .w b{display:block;font-size:13px;font-weight:600}
.re-doc .uchip .w span{display:block;font-size:11px;color:var(--re-ink-3)}
.re-doc .crumb{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--re-ink-3)}
.re-doc .crumb b{color:var(--re-ink);font-weight:600}
.re-doc .crumb .sp{color:var(--re-ink-4)}
.re-doc .pgn{display:flex;align-items:center;gap:6px}
.re-doc .pgn .pg{min-width:32px;height:32px;padding:0 9px;border-radius:var(--re-r-sm);border:1px solid var(--re-line-2);background:var(--re-surface);color:var(--re-ink-2);font-size:13px;display:inline-flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums}
.re-doc .pgn .pg.on{background:var(--re-amber);border-color:var(--re-amber);color:#0d0e11;font-weight:600}
.re-doc .pgn .pg.dots{border-color:transparent;background:transparent;color:var(--re-ink-4)}
.re-doc .dt-tb{width:100%;border-collapse:collapse;font-size:13px}
.re-doc .dt-tb th{text-align:left;padding:9px 13px;font-size:10.5px;font-weight:600;letter-spacing:var(--re-ls-caps);text-transform:uppercase;color:var(--re-ink-4);background:var(--re-surface-2);border-bottom:1px solid var(--re-line);white-space:nowrap}
.re-doc .dt-tb td{padding:11px 13px;border-bottom:1px solid var(--re-line);color:var(--re-ink-2);vertical-align:middle}
.re-doc .dt-tb tbody tr:last-child td{border-bottom:0}
.re-doc .dt-tb .strong{color:var(--re-ink);font-weight:600}
.re-doc .dt-tb .sub{font-size:11.5px;color:var(--re-ink-4);margin-top:2px}
.re-doc .dt-tb .r{text-align:right;font-variant-numeric:tabular-nums}
.re-doc .tbar{display:flex;align-items:center;gap:11px;padding:13px 15px;border-bottom:1px solid var(--re-line)}
.re-doc .tbar .tt{font-size:14.5px;font-weight:600}
.re-doc .tbar .ct{font-size:11px;color:var(--re-ink-3);border:1px solid var(--re-line-2);border-radius:var(--re-r-pill);padding:2px 9px}
.re-doc .tbar .r{margin-left:auto;display:flex;gap:8px}

/* ---------- pill / status helpers ---------- */
.re-doc .st{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;font-weight:500;color:var(--re-ink-2);border:1px solid var(--re-line-2);border-radius:var(--re-r-pill);padding:3px 10px;background:var(--re-surface)}
.re-doc .st .d{width:6px;height:6px;border-radius:50%;flex:none}
.re-doc .d-draft{background:var(--re-st-draft)}.re-doc .d-sent{background:var(--re-st-sent)}.re-doc .d-appr{background:var(--re-st-appr)}.re-doc .d-rej{background:var(--re-st-rej)}.re-doc .d-cancel{background:var(--re-st-cancel)}

/* ---------- status tag (inventory) ---------- */
.re-doc .tag{display:inline-flex;align-items:center;font-size:10px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;border-radius:5px;padding:3px 7px;white-space:nowrap}
.re-doc .tag.stable{color:var(--re-ok-bright);background:var(--re-ok-soft);border:1px solid var(--re-ok-line)}
.re-doc .tag.ext{color:var(--re-info);background:var(--re-info-soft);border:1px solid var(--re-info-line)}
.re-doc .tag.new{color:var(--re-amber-ink);background:var(--re-amber-soft);border:1px solid var(--re-amber-line)}
.re-doc .tag.rev{color:var(--re-crit);background:var(--re-crit-soft);border:1px solid var(--re-crit-line)}

/* ---------- needs-review callout ---------- */
.re-doc .nr{display:flex;gap:12px;align-items:flex-start;background:var(--re-surface);border:1px solid var(--re-line-2);border-left:3px solid var(--re-crit);border-radius:var(--re-r);padding:12px 15px}
.re-doc .nr .id{font-family:var(--re-font-mono);font-size:11px;font-weight:600;color:var(--re-crit);flex:none;padding-top:1px}
.re-doc .nr p{margin:0;font-size:13px;color:var(--re-ink-2);line-height:1.5}
.re-doc .nr p b{color:var(--re-ink);font-weight:600}
.re-doc .callout{display:flex;gap:12px;align-items:flex-start;background:var(--re-surface);border:1px solid var(--re-line-2);border-left:3px solid var(--re-amber);border-radius:var(--re-r);padding:13px 16px;margin:var(--re-s4) 0}
.re-doc .callout svg{width:17px;height:17px;flex:none;margin-top:2px;color:var(--re-amber-ink)}
.re-doc .callout p{margin:0;font-size:13.5px;color:var(--re-ink-2);line-height:1.55}
.re-doc .callout p b{color:var(--re-ink);font-weight:600}

/* ---------- rules list ---------- */
.re-doc .rules{display:grid;grid-template-columns:1fr 1fr;gap:var(--re-s3)}
.re-doc .rule{display:flex;gap:12px;align-items:flex-start;background:var(--re-surface);border:1px solid var(--re-line);border-radius:var(--re-r);padding:13px 15px}
.re-doc .rule .n{width:22px;height:22px;border-radius:6px;background:var(--re-amber-soft);border:1px solid var(--re-amber-line);color:var(--re-amber-ink);display:grid;place-items:center;font-size:11px;font-weight:600;flex:none}
.re-doc .rule .tx{font-size:13px;color:var(--re-ink-2);line-height:1.5}
.re-doc .rule .tx b{display:block;color:var(--re-ink);font-weight:600;font-size:13.5px;margin-bottom:2px}

/* ---------- principles ---------- */
.re-doc .prin{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--re-s3)}
.re-doc .prin .p{background:var(--re-surface);border:1px solid var(--re-line);border-radius:var(--re-r);padding:var(--re-s4)}
.re-doc .prin .p .k{font-size:15px;font-weight:600;letter-spacing:-.01em}
.re-doc .prin .p .d{font-size:12.5px;color:var(--re-ink-3);margin-top:6px;line-height:1.5}

/* ---------- architecture chain ---------- */
.re-doc .chain{display:grid;grid-template-columns:repeat(5,1fr);gap:0;border:1px solid var(--re-line);border-radius:var(--re-r-lg);overflow:hidden}
.re-doc .chain .lk{padding:var(--re-s5) var(--re-s4);background:var(--re-surface);border-right:1px solid var(--re-line);position:relative}
.re-doc .chain .lk:last-child{border-right:0}
.re-doc .chain .lk .st{background:none;border:0;padding:0;font-family:var(--re-font-mono);font-size:10.5px;color:var(--re-ink-4)}
.re-doc .chain .lk .k{font-size:14.5px;font-weight:600;margin:7px 0 6px;letter-spacing:-.01em}
.re-doc .chain .lk .ex{font-family:var(--re-font-mono);font-size:11px;color:var(--re-amber-ink);line-height:1.5;word-break:break-word}
.re-doc .chain .lk .d{font-size:12px;color:var(--re-ink-3);margin-top:7px;line-height:1.45}

/* ---------- screen frames ---------- */
.re-doc .shots{display:grid;grid-template-columns:1fr 1fr;gap:var(--re-s5)}
.re-doc .shot{background:var(--re-surface);border:1px solid var(--re-line);border-radius:var(--re-r-lg);overflow:hidden}
.re-doc .shot .cap{display:flex;align-items:center;gap:10px;padding:12px 15px;border-bottom:1px solid var(--re-line)}
.re-doc .shot .cap .nm{font-size:14px;font-weight:600}
.re-doc .shot .cap .fl{font-family:var(--re-font-mono);font-size:10.5px;color:var(--re-ink-4)}
.re-doc .shot .cap .r{margin-left:auto}
.re-doc .vp{position:relative;overflow:hidden;background:var(--re-canvas);border-top:0}
.re-doc .vp iframe{border:0;transform-origin:top left;display:block;pointer-events:none}
.re-doc .vp .ov{position:absolute;inset:0}
.re-doc .mob-row{display:flex;gap:var(--re-s5);flex-wrap:wrap}

@media (max-width:1100px){
  .re-doc .doc{grid-template-columns:1fr}
  .re-doc .rail{position:static;height:auto;border-right:0;border-bottom:1px solid var(--re-line)}
  .re-doc .rail-foot{display:none}
  .re-doc .hero h1{font-size:38px}
  .re-doc .hero .facts,.re-doc .prin,.re-doc .chain{grid-template-columns:1fr 1fr}
  .re-doc .grid2,.re-doc .grid3,.re-doc .rules,.re-doc .shots{grid-template-columns:1fr}
  .re-doc .pad,.re-doc .hero{padding-left:var(--re-s5);padding-right:var(--re-s5)}
}
@media print{
  .re-doc .rail{display:none}.re-doc .doc{grid-template-columns:1fr}
}
