/* GENERATED by `manage.py build_v2_css` from website/css_src/ (design reply4 §2.1).
   Edit the sources, then rebuild; tests fail when this file drifts from its sources. */
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/plex-mono/plex-mono-400.1b69a4b34f68.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/plex-mono/plex-mono-500.0d37a66452ad.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 600; font-display: swap; src: url("../fonts/plex-mono/plex-mono-600.ea5a5ecd6e53.woff2") format("woff2"); }
@font-face { font-family: "Schibsted Grotesk"; font-style: normal; font-weight: 400 900; font-display: swap; src: url("../fonts/schibsted-grotesk/schibsted-var-latin.c5e9a9901938.woff2") format("woff2"); }
:root { --color-dark: #0f172a;
  --color-text: #0f172a;
  --color-text-muted: #64748b;
  --color-text-label: #475569;
  --color-text-light: #94a3b8;
  --color-primary: #2563eb;
  --color-primary-hover: #1d4ed8;
  --color-primary-on-dark: #93c5fd;
  --color-bg: #ffffff;
  --color-bg-light: #f8fafc;
  --color-section-rule: #cbd5e1;
  --color-rule-subtle: #e2e8f0;
  --color-rule-strong: #0f172a;
  --color-track: #f1f5f9;
  --color-success: #22c55e;
  --color-success-dark: #16a34a;
  --color-preview: #b45309;
  --color-preview-bg: #fffbeb;
  
  --cov-none: #d3d1c7;
  --cov-low: #ef9f27;
  --cov-mid: #5dcaa5;
  --cov-deep: #0f6e56;
  --font-sans: "Schibsted Grotesk", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  
  --font-display: var(--font-sans);
  --font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --radius-card: 0;
  --radius-sm: 0;
  --space-xs: 4px;
  --space-sm: 8px;
  --space-12: 12px;
  --space-md: 16px;
  --space-lg: 24px;
  --space-xl: 32px;
  --space-2xl: 48px;
  --space-3xl: 64px;
  --space-4xl: 80px;
  --section-y: 64px;
  --section-y-sm: 40px;
  --container: 1200px;
  --gutter: 16px;
  
  --ink: var(--color-dark);
  --card-radius: 14px;
  
  --select-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='%230f172a' stroke-width='1.6'/%3E%3C/svg%3E");
  --card-shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 8px 24px rgba(15, 23, 42, .08); }
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font-family: var(--font-sans); font-size: 16px; line-height: 26px;
  color: var(--color-text); background: var(--color-bg); }
img { max-width: 100%; height: auto; }
a { color: var(--color-primary); text-decoration: none; }
a:hover { text-decoration: underline; color: var(--color-primary-hover); }
a:focus-visible, button:focus-visible, summary:focus-visible, select:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
h1, h2, h3, h4 { font-family: var(--font-display); font-weight: 700; margin: 0; color: var(--color-text); letter-spacing: -.01em; }
h1 { font-size: 48px; line-height: 1; font-weight: 800; letter-spacing: -.03em; }
h2 { font-size: 36px; line-height: 1.1; letter-spacing: -.02em; }
h3 { font-size: 18px; line-height: 1.1; letter-spacing: -.02em; }
p { margin: 0 0 var(--space-md); }
.small { font-size: 14px; line-height: 20px; }
.label, .mono, th { font-family: var(--font-mono); font-size: 12px; line-height: 16px; text-transform: uppercase;
  letter-spacing: .08em; color: var(--color-text-label); font-weight: 500; }
.wrap { max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter); }
.band { padding: var(--section-y) 0; background: var(--color-bg); }
.preview-bar { background: var(--color-preview-bg); color: var(--color-preview); font-size: 13px;
  line-height: 20px; padding: var(--space-xs) 0; border-bottom: 1px solid #fde68a; }
.inert-tag { display: inline-block; margin-left: var(--space-xs); padding: 0 6px; border: 1px dashed var(--color-preview);
  border-radius: var(--radius-sm); color: var(--color-preview); font-size: 11px; line-height: 16px;
  text-transform: uppercase; letter-spacing: .05em; vertical-align: middle; font-weight: 500; }
.site-header { border-bottom: 1px solid var(--color-section-rule); background: #fff; position: sticky; top: 0; z-index: 100; }
html { scroll-padding-top: 72px; }
.site-header .wrap { display: flex; align-items: center; justify-content: space-between; min-height: 60px; gap: var(--space-md); }
.brand { display: inline-flex; align-items: center; gap: var(--space-sm); min-height: 44px; font-weight: 500; color: var(--color-dark); }
.brand img { height: 36px; width: auto; display: block; }
.site-header nav { margin-left: auto; }
.nav { display: flex; gap: var(--space-lg); list-style: none; margin: 0; padding: 0; }
.nav a { color: var(--color-text); font-weight: 500; font-size: 15px; }
.site-footer { background: var(--color-dark); color: var(--color-text-light); padding: var(--space-2xl) 0; font-size: 14px; }
.site-footer a { color: var(--color-primary-on-dark); }
.site-footer ul { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: var(--space-lg); }
.site-footer__grid { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--space-lg); }
.site-footer__grid > div { flex: 1 1 320px; }
.site-footer__logo { height: 36px; width: auto; flex: none; margin-left: auto; filter: brightness(0) invert(1); }
details > summary { cursor: pointer; }
@media (max-width: 640px) {
  h1 { font-size: 30px; }
  h2 { font-size: 26px; }
  h3 { font-size: 16px; line-height: 22px; }
  body { font-size: 15px; line-height: 24px; }
  .band { padding: var(--section-y-sm) 0; }
  .nav { gap: var(--space-md); }
  .site-header .wrap { flex-wrap: wrap; padding-top: var(--space-xs); padding-bottom: var(--space-xs); }
}
@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; }
}
@keyframes v3-scroll { to { transform: translateX(-50%) } }
