/* Self-hosted fonts — the site makes no third-party requests. */
@font-face{ font-family:'Inter'; font-weight:400; font-style:normal; font-display:swap; src:url('fonts/Inter-Regular.woff2') format('woff2') }
@font-face{ font-family:'Inter'; font-weight:500 600; font-style:normal; font-display:swap; src:url('fonts/Inter-SemiBold.woff2') format('woff2') }
@font-face{ font-family:'Inter'; font-weight:700; font-style:normal; font-display:swap; src:url('fonts/Inter-Bold.woff2') format('woff2') }
@font-face{ font-family:'JetBrains Mono'; font-weight:400; font-style:normal; font-display:swap; src:url('fonts/JetBrainsMono-Regular.woff2') format('woff2') }
@font-face{ font-family:'JetBrains Mono'; font-weight:500 600; font-style:normal; font-display:swap; src:url('fonts/JetBrainsMono-SemiBold.woff2') format('woff2') }
@font-face{ font-family:'JetBrains Mono'; font-weight:700; font-style:normal; font-display:swap; src:url('fonts/JetBrainsMono-Bold.woff2') format('woff2') }

:root{
  --s-base:1; --s-user:1; --s:calc(var(--s-base) * var(--s-user));
  --surface:#E3E5EC; --ink:#2D3142; --muted:#5C6070; --muted-app:#7C7F8E; --subtle:#B8BAC4;
  --accent:#4DBB96; --accent-soft:#8AC7B5; --accent-text:#17694E; --btn-ink:#2D3142;
  --sh-light:#FFFFFF; --sh-dark:#B6B9C4;
  --shot-plate:#E3E5EC; --focus:#17694E;
  --coral:#D89B82; --violet:#A796D6; --blue:#7CB6D6;
  --raise-xs: calc(-3px*var(--s)) calc(-3px*var(--s)) calc(8px*var(--s)) var(--sh-light), calc(3px*var(--s)) calc(3px*var(--s)) calc(8px*var(--s)) var(--sh-dark);
  --raise-sm: calc(-5px*var(--s)) calc(-5px*var(--s)) calc(13px*var(--s)) var(--sh-light), calc(5px*var(--s)) calc(5px*var(--s)) calc(13px*var(--s)) var(--sh-dark);
  --raise-md: calc(-8px*var(--s)) calc(-8px*var(--s)) calc(22px*var(--s)) var(--sh-light), calc(8px*var(--s)) calc(8px*var(--s)) calc(22px*var(--s)) var(--sh-dark);
  --raise-lg: calc(-12px*var(--s)) calc(-12px*var(--s)) calc(32px*var(--s)) var(--sh-light), calc(12px*var(--s)) calc(12px*var(--s)) calc(32px*var(--s)) var(--sh-dark);
  --raise-xl: calc(-17px*var(--s)) calc(-17px*var(--s)) calc(45px*var(--s)) var(--sh-light), calc(17px*var(--s)) calc(17px*var(--s)) calc(45px*var(--s)) var(--sh-dark);
  --inset-sm: inset calc(5px*var(--s)) calc(5px*var(--s)) calc(13px*var(--s)) var(--sh-dark), inset calc(-5px*var(--s)) calc(-5px*var(--s)) calc(13px*var(--s)) var(--sh-light);
  --inset-md: inset calc(8px*var(--s)) calc(8px*var(--s)) calc(22px*var(--s)) var(--sh-dark), inset calc(-8px*var(--s)) calc(-8px*var(--s)) calc(22px*var(--s)) var(--sh-light);
  --groove: inset 0 2px 3px var(--sh-dark), inset 0 -2px 3px var(--sh-light);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --surface:#22242E; --ink:#E6E7EC; --muted:#8D8F9D; --muted-app:#8D8F9D; --subtle:#4A4C58;
    --accent:#52C8A3; --accent-soft:#6FB29C; --accent-text:#52C8A3; --btn-ink:#22242E;
    --sh-light:#2C2E38; --sh-dark:#13141B; --focus:#52C8A3;
  }
}
:root[data-theme="dark"]{
  --surface:#22242E; --ink:#E6E7EC; --muted:#8D8F9D; --muted-app:#8D8F9D; --subtle:#4A4C58;
  --accent:#52C8A3; --accent-soft:#6FB29C; --accent-text:#52C8A3; --btn-ink:#22242E;
  --sh-light:#2C2E38; --sh-dark:#13141B; --focus:#52C8A3;
}
@media (max-width:600px){ :root{ --s-base:0.72 } }
@media (min-width:1600px){ :root{ --s-base:1.12 } }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100% }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto } }
body{ margin:0; background:var(--surface); color:var(--ink);
  font-family:Inter,system-ui,sans-serif; font-size:17px; line-height:1.6;
  -webkit-font-smoothing:antialiased; }
a{ color:var(--accent-text); text-decoration-thickness:1px; text-underline-offset:3px }
a:hover{ color:var(--ink) }
:focus-visible{ outline:2px solid var(--focus); outline-offset:3px; border-radius:4px }
::selection{ background:var(--accent-soft); color:#12332A }
h1,h2,h3,h4{ margin:0; text-wrap:balance }
p{ margin:0; text-wrap:pretty }
ul{ margin:0; padding:0; list-style:none }
img{ display:block; max-width:100% }
[data-theme-pref="auto"] [data-opt="auto"],[data-theme-pref="light"] [data-opt="light"],[data-theme-pref="dark"] [data-opt="dark"]{
  box-shadow:var(--inset-sm); color:var(--ink); font-weight:600 }
summary::-webkit-details-marker{ display:none }
summary::marker{ content:"" }
details[open] summary{ color:var(--accent-text) }
nav a:hover{ color:var(--ink) }
@media (max-width:760px){ [data-navlink]{ display:none } }
@media (max-width:520px){ header nav{ display:none } }
