/* resolvent — site theme for MkDocs Material, and the home page (.rs). */

/* ---------- tokens, per scheme ---------- */
[data-md-color-scheme="slate"]{
  --rs-bg:#0a0c10; --rs-panel:#11151b; --rs-panel2:#161b23; --rs-line:#232a33; --rs-line2:#313a46;
  --rs-ink:#e7eaf0; --rs-dim:#9aa4b4; --rs-faint:#667285;
  --rs-proved:#6ee7b7; --rs-link:#7dd3fc; --rs-kill:#fbbf24; --rs-open:#c4b5fd; --rs-unmet:#fb7185;

  --md-default-bg-color:#0a0c10;
  --md-default-fg-color:rgba(231,234,240,.92);
  --md-default-fg-color--light:rgba(231,234,240,.64);
  --md-code-bg-color:#11151b;
  --md-typeset-a-color:#7dd3fc;
  --md-footer-bg-color:#07090c;
  --md-footer-bg-color--dark:#050608;
}
[data-md-color-scheme="default"]{
  --rs-bg:#fbfaf7; --rs-panel:#ffffff; --rs-panel2:#f4f2ec; --rs-line:#e4e0d7; --rs-line2:#d3cec2;
  --rs-ink:#15181d; --rs-dim:#586273; --rs-faint:#8a93a1;
  --rs-proved:#047857; --rs-link:#0369a1; --rs-kill:#b45309; --rs-open:#6d28d9; --rs-unmet:#be123c;

  --md-default-bg-color:#fbfaf7;
  --md-code-bg-color:#f4f2ec;
  --md-typeset-a-color:#0369a1;
}
:root,[data-md-color-scheme]{
  --rs-serif:"Iowan Old Style","Palatino Linotype","Book Antiqua",Palatino,Georgia,serif;
  --rs-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
  --md-code-font-family:var(--rs-mono);
}
[data-md-color-primary="custom"]{
  --md-primary-fg-color:#0a0c10;
  --md-primary-fg-color--light:#161b23;
  --md-primary-fg-color--dark:#050608;
  --md-primary-bg-color:#e7eaf0;
  --md-primary-bg-color--light:rgba(231,234,240,.7);
}
[data-md-color-accent="custom"]{
  --md-accent-fg-color:#34d399;
  --md-accent-fg-color--transparent:rgba(52,211,153,.12);
}

/* ---------- site-wide typography ---------- */
.md-typeset h1,.md-typeset h2,.md-typeset h3{font-family:var(--rs-serif);letter-spacing:-.01em;color:var(--md-default-fg-color)}
.md-typeset h1{font-weight:600}
.md-typeset h2{font-weight:600}
.md-header__topic:first-child{font-family:var(--rs-serif);font-weight:600;letter-spacing:.01em}
.md-typeset table:not([class]){font-size:.72rem}
.md-typeset table:not([class]) th{white-space:nowrap}

/* ---------- home page ---------- */
.md-content:has(.rs) .md-content__inner>h1:first-child{display:none}
.rs{color:var(--rs-ink);font-size:.86rem;line-height:1.7}
.rs a{color:var(--rs-link)}
.rs var{font-family:var(--rs-serif);font-style:italic;font-size:1.06em}
.rs code{font-size:.84em;white-space:nowrap}

.rs .hero{text-align:center;padding:2.6rem 0 1rem;position:relative;overflow:hidden}
.rs .hero::before{content:"";position:absolute;left:-20%;right:-20%;top:-3rem;height:30rem;pointer-events:none;z-index:0;
  background:radial-gradient(ellipse at 50% 28%,color-mix(in srgb,var(--rs-proved) 14%,transparent),transparent 62%)}
.rs .hero>*{position:relative;z-index:1}
.rs .over{font:600 .6rem/1 var(--rs-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--rs-dim);margin:0 0 1.1rem}
.rs .over a{color:var(--rs-ink)}
.rs h1.title{font:600 clamp(2.6rem,8vw,4.6rem)/1 var(--rs-serif);letter-spacing:-.025em;margin:0 0 1rem;color:var(--rs-ink)}
.rs .thesis{font:500 clamp(1.05rem,2.4vw,1.3rem)/1.4 var(--rs-serif);max-width:38rem;margin:0 auto .7rem}
.rs .sub{color:var(--rs-dim);max-width:36rem;margin:0 auto 1.1rem}
.rs .pill{display:inline-block;font:.62rem/1 var(--rs-mono);color:var(--rs-dim);border:1px solid var(--rs-line2);
  border-radius:999px;padding:.34rem .65rem;margin:.15rem}
.rs .pill b{color:var(--rs-ink);font-weight:600}
.rs .cta{display:inline-block;margin:1.1rem .25rem 0;background:var(--rs-proved);color:#04120c!important;font-weight:650;
  padding:.6rem 1.15rem;border-radius:.5rem;font-size:.8rem}
.rs .cta:hover{filter:brightness(1.08);text-decoration:none}
.rs .cta.ghost{background:transparent;color:var(--rs-ink)!important;border:1px solid var(--rs-line2)}

.rs .contents{display:flex;flex-wrap:wrap;justify-content:center;gap:.25rem 1.1rem;margin:1.8rem 0 0;padding:.7rem 0;
  border-top:1px solid var(--rs-line);border-bottom:1px solid var(--rs-line);font-size:.72rem}
.rs .contents a{color:var(--rs-dim)}
.rs .contents a:hover{color:var(--rs-ink);text-decoration:none}
.rs .contents .n{font-family:var(--rs-mono);color:var(--rs-faint);margin-right:.3rem;font-size:.64rem}

.rs h2.sec{font:600 clamp(1.4rem,3.2vw,1.8rem)/1.2 var(--rs-serif);margin:3.4rem 0 .4rem;color:var(--rs-ink)}
.rs h2.sec .num{font:500 .78rem var(--rs-mono);color:var(--rs-proved);margin-right:.65rem;vertical-align:middle}
.rs h3{font:600 1.05rem/1.3 var(--rs-serif);margin:2rem 0 .35rem;color:var(--rs-ink)}
.rs .lede{color:var(--rs-dim);font-size:.94rem;max-width:42rem;margin:0 0 1.1rem}

.rs .abstract{background:var(--rs-panel);border:1px solid var(--rs-line);border-radius:.8rem;padding:1.3rem 1.5rem;margin:1.6rem 0 .4rem}
.rs .abstract .label{font:600 .62rem var(--rs-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--rs-dim);margin:0 0 .6rem}
.rs .abstract p{font:.95rem/1.72 var(--rs-serif);margin:0 0 .7rem}
.rs .kw{color:var(--rs-dim);font-size:.72rem;margin:.6rem 0 0!important;font-family:inherit!important}
.rs .kw b{color:var(--rs-ink)}

.rs pre.result{font:.64rem/1.62 var(--rs-mono);color:var(--rs-ink);background:var(--rs-panel);border:1px solid var(--rs-line);
  border-radius:.7rem;padding:.9rem 1.1rem;overflow-x:auto;margin:1.4rem auto 0;text-align:left;max-width:46rem}
.rs pre.result .r{color:var(--rs-dim)}.rs pre.result .g{color:var(--rs-proved)}.rs pre.result .a{color:var(--rs-kill)}

.rs figure{margin:1.3rem 0;padding:1.2rem;background:var(--rs-panel);border:1px solid var(--rs-line);border-radius:.8rem;overflow-x:auto;display:block;width:auto;max-width:none}
.rs figcaption{color:var(--rs-dim);font-size:.72rem;margin-top:.8rem;text-align:center;line-height:1.55;max-width:none}
.rs svg{max-width:100%;height:auto;display:block;margin:0 auto}
.rs .t-mono{font:600 12.5px var(--rs-mono);fill:var(--rs-ink)}
.rs .t-dim{font:11.5px var(--rs-mono);fill:var(--rs-dim)}
.rs .t-serif{font:italic 15px var(--rs-serif);fill:var(--rs-ink)}
.rs .live{fill:none;stroke:var(--rs-proved);stroke-width:1.8;stroke-linecap:round}
.rs .dead{fill:none;stroke:var(--rs-unmet);stroke-width:1.4;stroke-dasharray:4 5;opacity:.75}
.rs .tok{fill:var(--rs-panel2);stroke:var(--rs-line2);stroke-width:1.4}
.rs .tok.q{fill:color-mix(in srgb,var(--rs-proved) 22%,var(--rs-panel2));stroke:var(--rs-proved)}
.rs .tok.bad{fill:color-mix(in srgb,var(--rs-unmet) 22%,var(--rs-panel2));stroke:var(--rs-unmet)}
.rs .gate{stroke:var(--rs-kill);stroke-width:4;stroke-linecap:round}
.rs .edge{stroke:var(--rs-line2);stroke-width:1.4;fill:none}
.rs .edge.back{stroke-dasharray:3 4}
/* A filled interval/zone on a plot — the wall figure's disagreement interval
   between the bf16 and float32 ticks, the detector-inversion figure's "no
   threshold fits between them" gap. Deliberately its own rect/polygon class
   with a real fill, never combined onto .edge/.live/.dead/.gatetick/[data-j]:
   those are all fill:none (stroke-only), and a shaded region drawn with one
   of them applied would render invisible. */
.rs .band{fill:color-mix(in srgb,var(--rs-kill) 16%,transparent);stroke:none}
/* ---------- the figures are instruments ---------- */
.rs [data-j]{fill:none;transition:stroke-width .35s ease,opacity .35s ease,stroke .35s ease}
.rs .pkt{fill:var(--rs-proved);opacity:0;transition:opacity .35s ease}
.rs .pkt.on{opacity:1}
.rs .gatetick{stroke:var(--rs-line2);stroke-width:2.5;stroke-linecap:round;
  transition:stroke .25s ease,stroke-width .25s ease}
.rs .gatetick.closed{stroke:var(--rs-kill);stroke-width:5}
.rs .hit{fill:transparent;cursor:pointer}
.rs .hit:hover{fill:color-mix(in srgb,var(--rs-link) 14%,transparent)}
.rs [tabindex]:focus-visible,.rs .stop:focus-visible{outline:2px solid var(--rs-link);outline-offset:2px;border-radius:.3rem}
.rs .out{font:600 11.5px var(--rs-mono);fill:var(--rs-proved)}
.rs .out.zero{fill:var(--rs-unmet)}
.rs .state{font-size:11.5px;fill:var(--rs-dim)}
.rs .marker{fill:none;stroke:var(--rs-proved);stroke-width:2.5;
  transition:transform .85s cubic-bezier(.45,.05,.2,1),stroke .4s ease}
.rs .stop{cursor:pointer}
.rs .stop text{transition:opacity .35s ease}
.rs .stop:not(.on) text{opacity:.5}

/* ---------- the six teaching figures (row, beta, absorb, wall, fold, blocks) ----------
   Each is a self-contained <div class="rs fig" data-rs="…"> with a <figure> (styled
   already, above), an optional .ctl control strip, and a .cap caption in place of a
   figcaption. Their SVGs reuse the classes above (.tok, .live, .dead, .edge, .marker,
   .stop, .hit, .out, .t-mono, .t-dim, .gatetick) rather than inventing new ones. */
.rs.fig{margin:1.3rem 0}
.rs.fig figure{margin:0 0 .7rem}
.rs.fig .ctl{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.1rem;
  padding:.6rem .9rem;background:var(--rs-panel);border:1px solid var(--rs-line);
  border-radius:.6rem;font-size:.78rem}
.rs.fig .ctl label{display:flex;align-items:center;gap:.5rem;color:var(--rs-dim);white-space:nowrap}
.rs.fig input[type=range][data-ctl]{width:9rem;max-width:40vw;accent-color:var(--rs-proved);cursor:pointer}
.rs.fig input[type=range][data-ctl]:focus-visible{outline:2px solid var(--rs-link);outline-offset:3px;border-radius:.3rem}
.rs.fig .ctl button:focus-visible,.rs.fig .ctl select:focus-visible,.rs.fig .ctl input:focus-visible{outline:2px solid var(--rs-link);outline-offset:2px;border-radius:.3rem}
.rs.fig output[data-out]{font:600 .78rem var(--rs-mono);color:var(--rs-proved);white-space:nowrap}
.rs.fig .cap{color:var(--rs-dim);font-size:.72rem;line-height:1.55;margin:.6rem 0 0;text-align:center}
/* A caption's inline <code> (e.g. a reproduction command) must never force the
   figure — and via it, the document — wider than the viewport. Wrap it like
   any other caption text instead of the site-wide nowrap in .rs code; this
   only changes line breaks, not the copyable text, so the command still
   pastes as one line. overflow-wrap covers a token with no spaces to break on. */
.rs .cap code{white-space:normal;overflow-wrap:break-word;word-break:break-word}

/* ---------- the compact index ---------- */
.rs .index{margin:1.2rem 0 .8rem}
.rs .ix{display:grid;grid-template-columns:8.5rem 1fr;gap:.3rem 1.1rem;align-items:baseline;
  padding:.7rem 0;border-top:1px solid var(--rs-line)}
.rs .ix:last-child{border-bottom:1px solid var(--rs-line)}
.rs .ixk{font:600 .6rem var(--rs-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--rs-faint)}
.rs .ixv{font-size:.82rem;line-height:2}
.rs .ixv a{white-space:nowrap}
.rs .ixv .sep{color:var(--rs-faint);margin:0 .45rem}

/* ---------- definition lists in the teaching sections ---------- */
.rs .defs{display:grid;grid-template-columns:minmax(7rem,auto) 1fr;gap:.55rem 1.3rem;margin:1.1rem 0 1.3rem;font-size:.84rem}
.rs .defs dt{font:600 .72rem var(--rs-mono);color:var(--rs-ink);padding-top:.12rem}
.rs .defs dd{margin:0;color:var(--rs-dim);line-height:1.62}
.rs h4{font:600 .95rem/1.35 var(--rs-serif);margin:1.4rem 0 .3rem;color:var(--rs-ink)}

@media (prefers-reduced-motion:reduce){
  .rs .pkt,.rs .pkt.on{opacity:0}
}
@media (prefers-reduced-motion:no-preference){
  .rs .bars .fill{transition:width .95s cubic-bezier(.3,.7,.2,1)}
}

.rs .eq{font:.98rem/1.9 var(--rs-serif);background:var(--rs-panel);border:1px solid var(--rs-line);border-radius:.7rem;
  padding:.9rem 1.2rem;margin:1rem 0;overflow-x:auto;white-space:nowrap}
.rs .eq .row{display:flex;gap:1.2rem;align-items:baseline}
.rs .eq .lhs{min-width:6.5rem;text-align:right}
.rs .eq .note{font:.64rem var(--rs-mono);color:var(--rs-dim);margin-left:auto;padding-left:1.3rem}

.rs .tw{overflow-x:auto;margin:1rem 0}
.rs table.t{width:100%;border-collapse:collapse;font-size:.74rem;display:table}
.rs table.t th,.rs table.t td{text-align:left;padding:.55rem .65rem;border-bottom:1px solid var(--rs-line);vertical-align:top}
.rs table.t th{color:var(--rs-dim);font-weight:600;font-size:.6rem;text-transform:uppercase;letter-spacing:.07em;white-space:nowrap;background:none}
.rs table.t td.n{font-family:var(--rs-mono);white-space:nowrap}
.rs table.t td.c{text-align:center}
.rs .yes{color:var(--rs-proved);font-weight:700}.rs .no{color:var(--rs-unmet);font-weight:700}.rs .na{color:var(--rs-faint)}

.rs .chip{display:inline-block;font:700 .56rem/1 var(--rs-mono);letter-spacing:.1em;text-transform:uppercase;
  padding:.28rem .45rem;border-radius:.3rem;border:1px solid currentColor;vertical-align:middle;white-space:nowrap}
.rs .chip.met,.rs .chip.built{color:var(--rs-proved)}.rs .chip.part,.rs .chip.dead{color:var(--rs-kill)}
.rs .chip.unmet{color:var(--rs-unmet)}.rs .chip.open{color:var(--rs-open)}
.rs .grid{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(13.5rem,1fr));margin:1.1rem 0}
.rs .card{background:var(--rs-panel);border:1px solid var(--rs-line);border-radius:.75rem;padding:1rem 1.15rem}
.rs .card h4{margin:0 0 .45rem;font:600 .95rem/1.3 var(--rs-serif);color:var(--rs-ink)}
.rs .card p{margin:0 0 .45rem;color:var(--rs-dim);font-size:.76rem;line-height:1.6}
.rs .card p:last-child{margin-bottom:0}
.rs .card .k{font:600 .58rem var(--rs-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--rs-faint);margin:0 0 .55rem}
.rs .star{border-top:3px solid var(--rs-line2)}
.rs .star.met{border-top-color:var(--rs-proved)}.rs .star.part{border-top-color:var(--rs-kill)}.rs .star.unmet{border-top-color:var(--rs-unmet)}
.rs .note{border-left:3px solid var(--rs-proved);background:var(--rs-panel);padding:.8rem 1rem;border-radius:0 .55rem .55rem 0;margin:1.2rem 0}
.rs .note.warn{border-left-color:var(--rs-kill)}.rs .note.open{border-left-color:var(--rs-open)}
.rs .note p:last-child{margin:0}

.rs .bars{display:grid;grid-template-columns:minmax(7rem,auto) 1fr auto;gap:.55rem .8rem;align-items:center;margin:.4rem 0}
.rs .bars .lab{font-size:.76rem;color:var(--rs-dim)}
.rs .bars .track{height:.65rem;border-radius:99px;background:var(--rs-panel2);border:1px solid var(--rs-line);overflow:hidden;display:block}
.rs .bars .fill{height:100%;background:var(--rs-kill);border-radius:99px;min-width:2px;display:block}
.rs .bars .fill.ok{background:var(--rs-proved)}
.rs .bars .val{font:.7rem var(--rs-mono)}

.rs ol.tl{list-style:none;margin:1.4rem 0;padding:0;position:relative}
.rs ol.tl::before{content:"";position:absolute;left:.6rem;top:.35rem;bottom:.35rem;width:2px;background:var(--rs-line)}
.rs ol.tl>li{position:relative;padding:0 0 1.4rem 2.3rem;margin:0;list-style:none}
.rs ol.tl>li::before{content:"";position:absolute;left:.2rem;top:.4rem;width:.85rem;height:.85rem;border-radius:50%;
  background:var(--rs-bg);border:2px solid var(--rs-line2)}
.rs ol.tl>li.built::before{border-color:var(--rs-proved)}
.rs ol.tl>li.dead::before{border-color:var(--rs-kill)}
.rs ol.tl>li.open::before{border-color:var(--rs-open);background:color-mix(in srgb,var(--rs-open) 30%,var(--rs-bg))}
.rs .tl .when{font:.64rem var(--rs-mono);color:var(--rs-faint);letter-spacing:.04em}
.rs .tl h4{font:600 1rem/1.3 var(--rs-serif);margin:.15rem 0 .35rem;color:var(--rs-ink)}
.rs .tl p{color:var(--rs-dim);font-size:.8rem;margin:0 0 .35rem}
.rs .tl .num{font:.68rem var(--rs-mono);color:var(--rs-ink);background:var(--rs-panel);border:1px solid var(--rs-line);
  border-radius:.45rem;padding:.4rem .6rem;display:inline-block;margin-top:.1rem}

.rs .docs{display:grid;gap:.55rem;grid-template-columns:repeat(auto-fit,minmax(14.5rem,1fr));margin:.8rem 0 1.4rem}
.rs a.doc{display:block;background:var(--rs-panel);border:1px solid var(--rs-line);border-radius:.6rem;padding:.7rem .85rem;color:var(--rs-ink)}
.rs a.doc:hover{border-color:var(--rs-line2);text-decoration:none;background:var(--rs-panel2)}
.rs .doc .p{font:600 .68rem var(--rs-mono);color:var(--rs-link);word-break:break-all;display:block}
.rs .doc .d{display:block;color:var(--rs-dim);font-size:.72rem;line-height:1.5;margin-top:.2rem}

@media (max-width:44em){
  .rs .eq{font-size:.88rem}
  .rs .bars{grid-template-columns:minmax(5.5rem,auto) 1fr auto;gap:.5rem .6rem}
  .rs .bars .lab small{display:block}
  .rs .ix{grid-template-columns:1fr;gap:.1rem;padding:.8rem 0}
  .rs .ixv{line-height:1.9}
  .rs .defs{grid-template-columns:1fr;gap:.1rem}
  .rs .defs dd{margin:0 0 .7rem}
}
