/* Shared by the app and the static pages (about, terms, privacy, 404): fonts + theme tokens. data-theme is set by theme.js before first paint */
/* IBM Plex (OFL 1.1, /fonts/IBMPlex-OFL.txt): the UI font; Plex Serif Italic only for field notes in the light theme (loads only when one shows). Outfit SemiBold (OFL 1.1, /fonts/Outfit-OFL.txt): only the wordmark */
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400 600;font-display:swap;src:url("/fonts/IBMPlexSans-Var.woff2") format("woff2");ascent-override:100%;descent-override:27.8%;line-gap-override:0%}@font-face{font-family:"IBM Plex Sans Condensed";font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/IBMPlexSansCondensed-SemiBold.woff2") format("woff2");ascent-override:100%;descent-override:27.8%;line-gap-override:0%}/* Plex Sans: ascent/descent overrides put the line-box centre on the cap-height centre (native 1025/275 sits ~0.026em low); 27.8% rather than 30% keeps every rounded line box at 10-19.5px the same height as before */
@font-face{font-family:"IBM Plex Serif";font-style:italic;font-weight:400;font-display:swap;src:url("/fonts/IBMPlexSerif-Italic.woff2") format("woff2")}
@font-face{font-family:Outfit;font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/Outfit-SemiBold.woff2") format("woff2"),url("/fonts/Outfit-SemiBold.ttf") format("truetype")}
[hidden]{display:none!important}   /* the hidden attribute always wins over author display rules (one rule for every page and component) */
/* theme tokens: :root = dark glass (today's look); [data-theme=light] = field-guide paper. --grain = the light theme's paper texture on panels (a tiny SVG noise tile, none in dark); --fam-* = the 4 layer-family colours (preset defaults); --accent = the curiosities one (tentative magenta); --route = the route tool (line, active buttons), --route-tx its on-text, --route-ink text on a solid --route button */
:root{--font:"IBM Plex Sans",system-ui,sans-serif;--font-note:var(--font);--font-cond:"IBM Plex Sans Condensed","IBM Plex Sans",system-ui,sans-serif;--compass-ink:#E2E8F0;--compass-disc:rgba(27,34,45,.86);--bg:rgba(27,34,45,.82);--bg-solid:rgba(27,34,45,.95);--bg2:rgba(15,23,42,.38);--field:var(--bg2);--line:rgba(148,163,184,.16);--line2:rgba(148,163,184,.28);--tx0:#f1f5f9;--tx:#e2e8f0;--tx1:#cbd5e1;--tx2:#94a3b8;--tx3:#64748b;--head:#93c5fd;--acc:#7dd3fc;--acc-tx:#e0f2fe;--acc-ink:#0f172a;--accent:#F27AD3;--fam-land:#6EDB8F;--fam-route:#F59266;--fam-camp:#7DD3FC;--fam-curio:var(--accent);--route:#22d3ee;--route-tx:#cffafe;--route-ink:#062a33;--danger:#fca5a5;--danger-c:#f87171;--warn:#fcd34d;--warn2:#fde68a;--warn-c:#fbbf24;--sug:#c4b5fd;--ok:#86efac;--slate:#94a3b8;--inset:#0f172a;--page:#1f2733;--attr-bg:rgba(28,36,48,.6);--attr-tx:#7b8798;--shadow:0 10px 32px rgba(0,0,0,.32);--r:12px;--scheme:dark;--grain:none}
:root[data-theme=light]{--font-note:"IBM Plex Serif",Georgia,serif;--compass-ink:#3B3428;--compass-disc:#FBF8F1;--bg:#FBF8F1;--bg-solid:#FBF8F1;--bg2:#F3EDE1;--field:#FFFDF8;--line:#E4DAC6;--line2:#C9BB9F;--tx0:#1E1B16;--tx:#29251E;--tx1:#3E372C;--tx2:#5E5545;--tx3:#6E6455;--head:#3E372C;--acc:#4F46E5;--acc-tx:#3730A3;--acc-ink:#fff;--accent:#A3367F;--fam-land:#3F7A4A;--fam-route:#B4532A;--fam-camp:#2C6A93;--route:#0891b2;--route-tx:#155e75;--danger:#B42318;--danger-c:#D92D20;--warn:#8A5A00;--warn2:#7A4E00;--warn-c:#D99A1E;--sug:#5B3FB0;--ok:#2B7043;--slate:#8A7A5E;--inset:#D9CFBB;--page:#F3EBDD;--attr-bg:rgba(251,248,241,.85);--attr-tx:#5E5545;--shadow:0 1px 2px rgba(58,44,20,.16),0 8px 24px -6px rgba(58,44,20,.22);--scheme:light;--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .27 0 0 0 0 .15 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.2'/%3E%3C/svg%3E")}
