/* hackwither.co.in
   Loud hero, quiet body. The name is cut and pasted; everything you read is typeset straight.
   Credibility lives in the content (sourced, linked). Play lives in the details. */

@font-face { font-family: "Redaction"; src: url("/assets/fonts/redaction-latin-400-normal.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Redaction"; src: url("/assets/fonts/redaction-latin-400-italic.woff2") format("woff2"); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: "Redaction"; src: url("/assets/fonts/redaction-latin-700-normal.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: "Redaction 35"; src: url("/assets/fonts/redaction-35-latin-400-normal.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "Redaction 100"; src: url("/assets/fonts/redaction-100-latin-400-normal.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "Departure Mono"; src: url("/assets/fonts/departure-mono-regular.woff2") format("woff2"); font-weight: 400; font-display: swap; }

:root {
  --paper: #FFFFFF;
  --ink: #111114;
  --muted: #56565D;
  --rule: rgba(17, 17, 20, .15);
  --pink: #BF2C72;
  --pink-hot: #FF3D9A;
  --hl: rgba(255, 61, 154, .32);
  --tape: rgba(255, 61, 154, .42);
  --graph: rgba(40, 110, 190, .13);
  /* paper scraps in the hero are paper: they keep their colour in both themes */
  --sheet: #FFFFFF;
  --sheet-ink: #111114;
  --label: #0B0B0C;
  --label-ink: #FFFFFF;
  --serif: "Redaction", "Times New Roman", Times, serif;
  --worn: "Redaction 35", "Redaction", serif;
  --gone: "Redaction 100", "Redaction 35", serif;
  --meta: 13px; /* links, dates, notes, nav: the small mono layer */
  --mono: "Departure Mono", ui-monospace, "SF Mono", Menlo, monospace;
  --measure: 64ch;
  --margin: 220px;
  --grain: 0;
  --shadow: drop-shadow(0 1px 1px rgba(0, 0, 0, .14)) drop-shadow(0 8px 14px rgba(0, 0, 0, .09));
  --torn: polygon(0% 1.6px, 2.5% 0.8px, 5% 3.3px, 7.5% 0.4px, 10% 2.7px, 12.5% 1.8px, 15% 0.3px, 17.5% 2.5px, 20% 0.2px, 22.5% 2.2px, 25% 0.3px, 27.5% 0.5px, 30% 2.1px, 32.5% 4.1px, 35% 0.6px, 37.5% 1.1px, 40% 3.1px, 42.5% 4.7px, 45% 2.9px, 47.5% 2.0px, 50% 4.9px, 52.5% 0.2px, 55% 4.3px, 57.5% 1.4px, 60% 0.7px, 62.5% 0.6px, 65% 1.5px, 67.5% 4.1px, 70% 0.9px, 72.5% 2.9px, 75% 3.2px, 77.5% 1.9px, 80% 2.7px, 82.5% 0.3px, 85% 0.3px, 87.5% 1.0px, 90% 3.4px, 92.5% 2.1px, 95% 1.6px, 97.5% 2.9px, 100% 2.3px, 100% calc(100% - 1.5px), 97.5% calc(100% - 4.0px), 95% calc(100% - 3.5px), 92.5% calc(100% - 1.2px), 90% calc(100% - 2.9px), 87.5% calc(100% - 2.6px), 85% calc(100% - 4.4px), 82.5% calc(100% - 3.6px), 80% calc(100% - 1.4px), 77.5% calc(100% - 4.9px), 75% calc(100% - 0.6px), 72.5% calc(100% - 2.1px), 70% calc(100% - 3.8px), 67.5% calc(100% - 0.8px), 65% calc(100% - 2.4px), 62.5% calc(100% - 0.2px), 60% calc(100% - 3.3px), 57.5% calc(100% - 3.8px), 55% calc(100% - 2.9px), 52.5% calc(100% - 4.4px), 50% calc(100% - 1.6px), 47.5% calc(100% - 3.5px), 45% calc(100% - 3.0px), 42.5% calc(100% - 2.9px), 40% calc(100% - 2.3px), 37.5% calc(100% - 4.2px), 35% calc(100% - 4.7px), 32.5% calc(100% - 2.4px), 30% calc(100% - 3.3px), 27.5% calc(100% - 0.3px), 25% calc(100% - 3.5px), 22.5% calc(100% - 3.2px), 20% calc(100% - 5.0px), 17.5% calc(100% - 4.1px), 15% calc(100% - 1.4px), 12.5% calc(100% - 1.9px), 10% calc(100% - 3.3px), 7.5% calc(100% - 0.1px), 5% calc(100% - 2.3px), 2.5% calc(100% - 0.8px), 0% calc(100% - 0.6px));
  color-scheme: light;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --paper: #0E0E10; --ink: #EDEDEA; --muted: #9C9CA3; --rule: rgba(237, 237, 234, .16);
    --pink: #F05AA5; --hl: rgba(255, 61, 154, .36); --graph: rgba(120, 170, 230, .14);
    --label: #EDEDEA; --label-ink: #0B0B0C; --grain: .05;
    --shadow: drop-shadow(0 2px 2px rgba(0, 0, 0, .5)) drop-shadow(0 10px 18px rgba(0, 0, 0, .45));
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --paper: #0E0E10; --ink: #EDEDEA; --muted: #9C9CA3; --rule: rgba(237, 237, 234, .16);
  --pink: #F05AA5; --hl: rgba(255, 61, 154, .36); --graph: rgba(120, 170, 230, .14);
  --label: #EDEDEA; --label-ink: #0B0B0C; --grain: .05;
  --shadow: drop-shadow(0 2px 2px rgba(0, 0, 0, .5)) drop-shadow(0 10px 18px rgba(0, 0, 0, .45));
  color-scheme: dark;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--serif);
  font-size: 1.1875rem;
  line-height: 1.55;
  text-rendering: optimizeLegibility;
  font-variant-numeric: proportional-nums;
  overflow-x: hidden;
}

/* photocopier toner, barely there */
body::before {
  content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 100; opacity: var(--grain);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -.6'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

::selection { background: var(--pink-hot); color: #fff; }
a { color: inherit; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; text-decoration-color: var(--rule); }
a:hover { text-decoration-color: currentColor; }
a:focus-visible, button:focus-visible, summary:focus-visible { outline: 2px solid var(--pink-hot); outline-offset: 3px; }

.wrap { max-width: 1180px; margin: 0 auto; padding: 0 32px; }
@media (max-width: 640px) { .wrap { padding: 0 16px; } }
.mono { font-family: var(--mono); font-size: var(--meta); letter-spacing: .02em; }
.muted { color: var(--muted); }
.skip { position: absolute; left: -9999px; }
.skip:focus { left: 16px; top: 16px; background: #000; color: #fff; padding: 8px 12px; z-index: 101; }
.print-only { display: none; }
p { margin: 0 0 1em; }

/* ---------- masthead ---------- */
.masthead .wrap { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 24px; padding-top: 18px; font-family: var(--mono); font-size: var(--meta); letter-spacing: .04em; }
.masthead .brand { text-decoration: none; font-size: 22px; letter-spacing: 0; }
.masthead .brand span { color: var(--pink); animation: blink 1.1s steps(1) infinite; }
@keyframes blink { 50% { opacity: 0; } }
.nav { display: flex; gap: 4px 20px; flex-wrap: wrap; }
.nav a, .theme-toggle { font-family: var(--mono); font-size: var(--meta); letter-spacing: .04em; color: var(--muted); text-decoration: none; }
.nav a:hover, .nav a[aria-current="page"] { color: var(--ink); background: none; }
.nav a[aria-current="page"] { text-decoration: underline; text-decoration-color: var(--pink); }
.theme-toggle { background: none; border: 0; padding: 0; cursor: pointer; }
.masthead hr { flex-basis: 100%; border: 0; border-top: 3px double var(--ink); margin: 6px 0 0; opacity: .75; }
@media (max-width: 640px) { .nav .hide-sm { display: none; } }

/* ---------- hero: the one loud moment ---------- */
.hero { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 32px 64px; padding-top: 48px; padding-bottom: 64px; align-items: start; }
.name { margin: 0; font-weight: 400; font-size: clamp(2.9rem, 7.2vw, 5.75rem); line-height: .9; letter-spacing: -.03em; }
.strip { display: inline-block; filter: var(--shadow); }
.strip > .cut { display: inline-block; padding: .07em .17em .12em; clip-path: var(--torn); }
.strip.white { transform: rotate(-1.6deg); }
.strip.white > .cut { background: var(--sheet); color: var(--sheet-ink); }
.strip.black { transform: rotate(1.2deg) translateX(.45em); margin-top: .02em; }
.strip.black > .cut { background: #0B0B0C; color: #F2F2EE; }
.name sup { font-family: var(--mono); font-size: 11px; letter-spacing: .04em; color: var(--pink-hot); vertical-align: top; position: relative; top: .5em; margin-left: 4px; }
.name:hover .glitch { animation: degrade .5s steps(1) 1; }
@keyframes degrade { 0% { font-family: var(--gone); } 30% { font-family: var(--worn); } 60% { font-family: var(--gone); } 85% { font-family: var(--worn); } 100% { font-family: var(--serif); } }

.scribble { font-family: var(--mono); font-size: var(--meta); line-height: 1.5; color: var(--pink); letter-spacing: .02em; }
.scribble svg { display: inline-block; vertical-align: bottom; overflow: visible; }
.scribble path { fill: none; stroke: var(--pink); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.alias { margin: 14px 0 34px 1.1em; display: flex; align-items: flex-end; gap: 6px; }

.affils { list-style: none; margin: 0 0 12px; padding: 0; font-size: 1.0625rem; line-height: 1.55; }
.affils sup { font-family: var(--mono); font-size: 11px; color: var(--muted); margin-right: 5px; }
.contact { list-style: none; margin: 0 0 32px; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 20px; font-family: var(--mono); font-size: 14px; letter-spacing: .02em; }
.contact a { color: var(--ink); }
.contact a:hover { color: var(--pink); }
.abstract-h { font-family: var(--mono); font-size: var(--meta); letter-spacing: .16em; text-transform: uppercase; font-weight: 400; color: var(--muted); margin: 0 0 6px; }
.abstract { font-size: clamp(1.25rem, 2vw, 1.5rem); line-height: 1.38; margin: 0; max-width: 34em; }
.abstract-more { font-size: 1.125rem; line-height: 1.5; margin: 10px 0 0; max-width: 34em; }
.ledger .sub.kw { color: var(--pink); }
.disc-line { margin: 20px 0 8px; }
.disc-line .prose { margin: 0; color: var(--muted); font-size: 1.0625rem; line-height: 1.5; }
.disc-line b { color: var(--ink); font-weight: 700; }

.photo { margin: 8px 0 0; }
.photo img { display: block; width: 100%; height: auto; }

@media (max-width: 860px) {
  .hero { grid-template-columns: 1fr; padding-top: 28px; padding-bottom: 40px; }
  .photo { width: 170px; margin: 4px 0 0; }
}

/* ---------- body: straight and calm ---------- */
.sec { padding: 0 0 72px; }
.dymo { display: inline-block; font-family: var(--mono); font-size: 22px; line-height: 1; letter-spacing: .12em; text-transform: uppercase; font-weight: 400;
  color: var(--label-ink); background: var(--label); padding: 7px 14px 6px; margin: 0 0 28px; border-radius: 3px; transform: rotate(-1deg);
  box-shadow: 0 2px 3px rgba(0, 0, 0, .2); }
.dymo.pink { background: var(--pink); color: #fff; }
@media (max-width: 640px) { .dymo { font-size: 11px; padding: 6px 10px 5px; margin-bottom: 20px; } .sec { padding-bottom: 52px; } }

.row { display: grid; grid-template-columns: minmax(0, 1fr) var(--margin); column-gap: 56px; align-items: start; }
.row > * { grid-column: 1; min-width: 0; }
.row > .note { grid-column: 2; }
.note { font-family: var(--mono); font-size: var(--meta); line-height: 1.6; color: var(--pink); letter-spacing: .02em; padding-top: 6px; }
.note a { color: var(--pink); text-decoration-color: currentColor; }
.note::before { content: "↳ "; }
@media (max-width: 900px) {
  .row { grid-template-columns: 1fr; }
  .row > .note { grid-column: 1; padding: 0 0 18px; margin-top: -6px; }
}

.prose { max-width: var(--measure); }
.lead-in { font-weight: 700; }
.statement { font-size: clamp(1.25rem, 2vw, 1.5rem); line-height: 1.38; max-width: 34em; }
.hero .name + .statement { margin-top: 36px; }

/* ---------- redaction ---------- */
.redacted-block { display: inline-block; background: var(--ink); height: .82em; vertical-align: -.06em; }
.redacted-block.w-title { width: min(14em, 70%); }
.redacted-block.w-sm { width: 3.6em; }

.stamp { display: inline-block; font-family: var(--mono); font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--pink-hot); border: 2px solid var(--pink-hot); padding: 4px 9px 3px; transform: rotate(-5deg); margin-top: 4px; }

@media (prefers-reduced-motion: reduce) {
  .masthead .brand span, .name:hover .glitch { animation: none; }
}

/* ---------- ledger tables (record, talks, disclosures) ---------- */
.ledger { width: 100%; border-collapse: collapse; font-size: 1.0625rem; line-height: 1.42; }
.ledger th { font-family: var(--mono); font-size: var(--meta); font-weight: 400; letter-spacing: .06em; color: var(--muted); text-align: left; padding: 0 16px 10px 0; }
.ledger td { border-top: 1px solid var(--rule); padding: 11px 16px 11px 0; vertical-align: baseline; }
.ledger tr:last-child td { border-bottom: 1px solid var(--rule); }
.ledger td:last-child, .ledger th:last-child { padding-right: 0; }
.ledger .y, .ledger .src, .ledger .k { font-family: var(--mono); font-size: var(--meta); color: var(--muted); letter-spacing: .02em; white-space: nowrap; }
.ledger .y { width: 9ch; }
.ledger .src { text-align: right; }
.ledger .src a { color: var(--ink); }
.ledger .sub { color: var(--muted); }
.ledger .pts { margin: 6px 0 2px; padding-left: 1.1em; font-size: .9375rem; line-height: 1.5; color: var(--muted); }
.ledger .pts li { margin-bottom: .25em; }
.ledger .pts a { color: var(--ink); }
@media (max-width: 640px) {
  .ledger thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .ledger, .ledger tbody, .ledger tr, .ledger td { display: block; width: auto; }
  .ledger tr { border-top: 1px solid var(--rule); padding: 10px 0; }
  .ledger tr:last-child { border-bottom: 1px solid var(--rule); }
  .ledger td, .ledger tr:last-child td { border: 0; padding: 1px 0; }
  .ledger .src { text-align: left; }
}

/* ---------- citations ---------- */
.cites { list-style: none; margin: 0; padding: 0; counter-reset: cite; }
.cite { counter-increment: cite; position: relative; padding: 0 0 40px 3.2em; }
.cite::before { content: "[" counter(cite) "]"; position: absolute; left: 0; top: .25em; font-family: var(--mono); font-size: var(--meta); color: var(--muted); }
.ref { margin: 0 0 8px; }
.ref .t { font-style: italic; }
.sum { color: var(--muted); font-size: 1.0625rem; margin: 0 0 12px; max-width: var(--measure); }
.sum b { color: var(--ink); font-weight: 700; }
.links-inline { font-family: var(--mono); font-size: var(--meta); letter-spacing: .02em; color: var(--muted); margin: 0; overflow-wrap: anywhere; }
.links-inline a { color: var(--ink); }
.links-inline .sep { margin: 0 6px; }
.more { font-family: var(--mono); font-size: var(--meta); letter-spacing: .02em; }

/* ---------- figures: plain graph paper ---------- */
.fig { margin: 6px 0 14px; padding: 14px 14px 10px; max-width: 520px; border: 1px solid var(--rule);
  background-image: linear-gradient(var(--graph) 1px, transparent 1px), linear-gradient(90deg, var(--graph) 1px, transparent 1px); background-size: 12px 12px; }
.fig svg { display: block; width: 100%; height: auto; overflow: visible; }
.fig figcaption { font-size: .9375rem; line-height: 1.45; color: var(--muted); margin-top: 8px; }
.fig figcaption b { color: var(--ink); }
.fig .ink { fill: var(--ink); }
.fig .pink { fill: var(--pink-hot); }
.fig .out { fill: none; stroke: var(--muted); stroke-width: 1; }
.fig .axis { stroke: var(--ink); stroke-width: 1; fill: none; }
.fig .tick { stroke: var(--pink-hot); stroke-width: 2; }
.fig .hatch-line { stroke: var(--pink-hot); stroke-width: 1.2; }
.fig .lbl { font-family: var(--mono); font-size: 11px; fill: var(--muted); }
.fig .lbl-ink { font-family: var(--mono); font-size: 11px; fill: var(--ink); }
.fig .lbl-pink { font-family: var(--mono); font-size: 11px; fill: var(--pink); }

/* ---------- bibtex ---------- */
details.bib { display: inline; }
details.bib summary { display: inline; cursor: pointer; list-style: none; text-decoration: underline; text-decoration-color: var(--rule); text-underline-offset: 3px; color: var(--ink); }
details.bib summary::-webkit-details-marker { display: none; }
details.bib[open] summary { text-decoration-color: var(--pink); }
.bib-box { position: relative; margin: 10px 0 4px; display: flex; align-items: flex-start; gap: 16px; }
.bib-box > pre { flex: 1; min-width: 0; }
.bib-box > .copy { position: static; flex: none; }
.bib-box pre { font-family: var(--mono); font-size: var(--meta); line-height: 1.6; border-left: 3px solid var(--pink-hot); padding: 4px 0 4px 14px; margin: 0; overflow-x: auto; color: var(--ink); }
.copy { position: absolute; top: 0; right: 0; font-family: var(--mono); font-size: var(--meta); background: none; color: var(--muted); border: 0; padding: 2px 0; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.copy:hover { color: var(--pink); }

/* ---------- work with me ---------- */
.offers { list-style: none; margin: 0 0 28px; padding: 0; }
.offers li { display: grid; grid-template-columns: minmax(0, 1fr) var(--margin); column-gap: 56px; padding: 14px 0; border-top: 1px solid var(--rule); }
.offers li:last-child { border-bottom: 1px solid var(--rule); }
.offers h3 { font-size: 1.1875rem; font-weight: 700; margin: 0 0 2px; }
.offers p { margin: 0; color: var(--muted); font-size: 1.0625rem; max-width: var(--measure); }
.offers .fmt { font-family: var(--mono); font-size: var(--meta); color: var(--muted); padding-top: 6px; grid-column: 2; grid-row: 1 / span 2; }
@media (max-width: 900px) { .offers li { grid-template-columns: 1fr; } .offers .fmt { grid-column: 1; grid-row: auto; padding-top: 4px; } }

/* ---------- inner pages ---------- */
.page-head { padding-top: 48px; padding-bottom: 56px; }
.page-head .name { font-size: clamp(3rem, 8vw, 6rem); margin-bottom: 36px; }
.e404 { padding-top: 64px; padding-bottom: 120px; }
.e404 .glitch { font-family: var(--gone); }
.e404 .code { font-family: var(--mono); font-size: var(--meta); color: var(--pink); letter-spacing: .06em; margin-bottom: 24px; }

/* ---------- footer ---------- */
.site-footer .wrap { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px 28px; padding-top: 18px; padding-bottom: 40px; }
.site-footer .wrap::before { content: ""; flex-basis: 100%; border-top: 3px double var(--ink); opacity: .75; margin-bottom: 8px; }
.links { display: flex; flex-wrap: wrap; gap: 6px 18px; list-style: none; margin: 0; padding: 0; }
.links a, .colophon { font-family: var(--mono); font-size: var(--meta); letter-spacing: .02em; color: var(--muted); }
.links a { text-decoration: none; }
.links a:hover { color: var(--ink); }
.colophon { margin: 0; }
.colophon a { color: var(--muted); }
.colophon .c { font-family: var(--serif); font-size: 13px; }

/* ---------- print: the page is also the CV ---------- */
@media print {
  @page { margin: 14mm 16mm; }
  :root, :root[data-theme="dark"] { --paper: #fff; --ink: #000; --muted: #444; --rule: #bbb; --pink: #000; --pink-hot: #000; --hl: transparent; --label: #fff; --label-ink: #000; --shadow: none; }
  body { font-size: 10pt; line-height: 1.4; background: #fff; overflow: visible; }
  body::before, .nav, .skip, .photo, .scribble, .stamp, .copy, .fig, .no-print, .more, details.bib { display: none !important; }
  .print-only { display: block; }
  .wrap { max-width: none; padding: 0; }
  .masthead .wrap { padding: 0 0 3mm; } .masthead hr { display: none; } .masthead .brand { font-size: 11px; }
  .hero, .page-head { display: block; padding: 0 0 4mm; }
  .name { font-size: 26pt; line-height: 1.1; margin-bottom: 2mm; }
  .strip { display: inline; transform: none !important; filter: none; }
  .strip > .cut { display: inline; padding: 0; clip-path: none; background: none !important; color: #000 !important; }
  .dymo { font-size: 13pt; color: #000; background: none; padding: 0; transform: none; box-shadow: none; letter-spacing: .04em; margin: 0 0 2mm; }
  .sec { padding: 0 0 4mm; }

  .row { display: block; }
  .note, .row > .note { padding: 0; margin: 0 0 2mm; color: #444; }
  .note::before { content: "— "; }
  .cite { padding-bottom: 3mm; break-inside: avoid; }
  .ledger { font-size: 9.5pt; } .ledger td { padding: 1.2mm 3mm 1.2mm 0; } .ledger tr { break-inside: avoid; }
  .ledger a[href^="http"]::after { content: " <" attr(href) ">"; font-family: var(--mono); font-size: 7pt; color: #444; word-break: break-all; }
  .offers li { display: block; padding: 1.5mm 0; } .offers .fmt { padding: 0; }
  .site-footer .wrap { padding: 4mm 0 0; } .site-footer .wrap::before { display: none; }
  .site-footer .links, .site-footer .colophon:not(.print-only) { display: none; }
  a { text-decoration: none; }
}
.e404 .name { font-size: clamp(2.6rem, 8vw, 6rem); margin-bottom: 36px; }

/* on a dark desk the black strip disappears: print it on pink stock instead */
:root[data-theme="dark"] .strip.black > .cut { background: var(--pink-hot); color: #0B0B0C; }
:root[data-theme="dark"] .strip.black sup { color: #0B0B0C; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .strip.black > .cut { background: var(--pink-hot); color: #0B0B0C; }
  :root:not([data-theme="light"]) .strip.black sup { color: #0B0B0C; }
}

/* ---------- added with the multi-page site ---------- */
.nav a[aria-current="true"] { color: var(--ink); }
code { font-family: var(--mono); font-size: .78em; letter-spacing: 0; overflow-wrap: anywhere; }
.kicker { font-family: var(--mono); font-size: var(--meta); letter-spacing: .04em; color: var(--pink); margin: 0 0 14px; }
.kicker a { color: var(--pink); }
.title { font-weight: 400; font-size: clamp(2rem, 4.6vw, 3.4rem); line-height: 1.08; letter-spacing: -.015em; margin: 0 0 18px; max-width: 22em; }
.byline { margin: 0; }
.paper-head .title { max-width: 26em; }
.tool-name { font-size: 1.1875rem; font-weight: 700; margin: 0 0 6px; }
.tool-name .mono { font-weight: 400; margin-left: 6px; }
.plain { padding-left: 1.1em; }
.plain li, .findings li { margin-bottom: .4em; }
.findings { padding-left: 1.4em; }

/* command and code boxes reuse .bib-box */
.bib-box.cmd { margin: 6px 0 14px; max-width: 760px; }

.bib-box pre.wrap-text { white-space: pre-wrap; font-family: var(--serif); font-size: 1rem; line-height: 1.5; }
.install h3 { font-family: var(--mono); font-size: var(--meta); font-weight: 400; letter-spacing: .06em; color: var(--muted); margin: 18px 0 0; text-transform: uppercase; }
.bio { margin: 0 0 18px; max-width: 760px; }
.bio h3 { font-weight: 400; margin: 0 0 4px; }

/* scan transcripts: printed listing, not a fake terminal */
details.scan { margin: 4px 0 24px; }
details.scan summary { cursor: pointer; color: var(--ink); padding: 6px 0; }
details.scan summary::marker { color: var(--pink); }
.term { font-family: var(--mono); font-size: var(--meta); line-height: 1.55; margin: 6px 0 0; padding: 16px 18px; border: 1px solid var(--rule); border-left: 3px solid var(--pink-hot); overflow-x: auto; max-height: 34em; overflow-y: auto; color: var(--ink); }
.term b { font-weight: 400; color: var(--ink); text-decoration: underline; text-decoration-color: var(--rule); text-underline-offset: 3px; }
.sev { display: inline-block; min-width: 4.5ch; }
.sev-high { color: var(--pink-hot); }
.sev-med { color: var(--pink); }
.sev-low, .sev-info { color: var(--muted); }
.verdict { color: var(--pink-hot); }

/* rules */
.rule-group { font-family: var(--mono); font-size: var(--meta); font-weight: 400; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); margin: 26px 0 8px; }
.rule-group:first-child { margin-top: 0; }
.ledger.rules .k a { color: var(--ink); }
.ledger.rules .k { width: 34ch; }
.rule-id { margin: 0; display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: baseline; }
.rule-id code { font-size: 13px; }
.tag { font-family: var(--mono); font-size: var(--meta); color: var(--muted); border: 1px solid var(--rule); padding: 2px 7px 1px; border-radius: 3px; }
.pager { display: flex; justify-content: space-between; gap: 16px; font-family: var(--mono); font-size: var(--meta); padding-bottom: 56px; }
.exit-codes { margin-top: 24px; max-width: 760px; }
@media (max-width: 640px) { .ledger.rules .k { width: auto; } }

/* talks list: titles are the headings */
.offers.talks .fmt { line-height: 1.6; }

/* notes */
.post-body h2 { font-size: 1.375rem; font-weight: 700; margin: 1.6em 0 .5em; }
.post-body ul { padding-left: 1.2em; }
.post-body li { margin-bottom: .3em; }
.post-body hr { border: 0; border-top: 1px solid var(--rule); margin: 2em 0 1.2em; }
.post-body { padding-bottom: 64px; }

@media print {
  details.scan, .pager, .bib-box.cmd { display: none !important; }
}

.prose .bib-box:not(.cmd), .row .bib-box:not(.cmd) { margin-bottom: 1.1em; }
@media (max-width: 900px) { .row { grid-template-columns: minmax(0, 1fr); } }
.bib-box, details.scan, .install { min-width: 0; max-width: 100%; }

/* section headings: quiet serif with a thin rule (replaces the label-maker look) */
.dymo { display: block; font-family: var(--serif); font-size: 1.5rem; line-height: 1.2; letter-spacing: -.005em; text-transform: none; font-weight: 400;
  color: var(--ink); background: none; padding: 0 0 10px; margin: 0 0 24px; border-radius: 0; transform: none; box-shadow: none; border-bottom: 1px solid var(--rule); }
.dymo.pink { background: none; color: var(--ink); border-bottom-color: var(--pink); }
@media (max-width: 640px) { .dymo { font-size: 1.3rem; padding: 0 0 8px; margin-bottom: 18px; } }
@media print { .dymo { border: 0; padding: 0; font-size: 13pt; } }

/* vulnerability research list */
.findings-list li:first-child { border-top: 0; }
/* the heading's rule already separates; don't stack a second one under it */
.dymo + .ledger > tbody:first-child > tr:first-child,
.dymo + .ledger > tbody:first-child > tr:first-child > td,
.dymo + .offers > li:first-child { border-top: 0; }
.findings-list h3 a { text-decoration-color: var(--rule); }
.findings-list .press { font-family: var(--mono); font-size: var(--meta); color: var(--pink); margin-top: 6px; }
.findings-list .press::before { content: "↳ "; }
.findings-list .fmt a { color: var(--ink); }

