@font-face{font-family:'Bricolage Grotesque';font-style:normal;font-weight:200 800;font-display:swap;src:url("/fonts/bricolage-grotesque/bricolage-grotesque.woff2") format("woff2")}
@font-face{font-family:'Figtree';font-style:normal;font-weight:300 900;font-display:swap;src:url("/fonts/figtree/figtree.woff2") format("woff2")}
@font-face{font-family:'Fraunces';font-style:italic;font-weight:100 900;font-display:swap;src:url("/fonts/fraunces/fraunces-italic.woff2") format("woff2")}
@font-face{font-family:'Fraunces';font-style:normal;font-weight:100 900;font-display:swap;src:url("/fonts/fraunces/fraunces.woff2") format("woff2")}
@font-face{font-family:'Fredoka';font-style:normal;font-weight:300 700;font-display:swap;src:url("/fonts/fredoka/fredoka.woff2") format("woff2")}
@font-face{font-family:'Hanken Grotesk';font-style:normal;font-weight:100 900;font-display:swap;src:url("/fonts/hanken-grotesk/hanken-grotesk.woff2") format("woff2")}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/ibm-plex-sans/IBMPlexSans-Bold.woff2") format("woff2")}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url("/fonts/ibm-plex-sans/IBMPlexSans-Medium.woff2") format("woff2")}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/ibm-plex-sans/IBMPlexSans-Regular.woff2") format("woff2")}
@font-face{font-family:'Iosevka';font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/iosevka/Iosevka-Bold.woff2") format("woff2")}
@font-face{font-family:'Iosevka';font-style:normal;font-weight:500;font-display:swap;src:url("/fonts/iosevka/Iosevka-Medium.woff2") format("woff2")}
@font-face{font-family:'Iosevka';font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/iosevka/Iosevka-Regular.woff2") format("woff2")}
@font-face{font-family:'Iosevka Aile';font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/iosevka-aile/IosevkaAile-Bold.woff2") format("woff2")}
@font-face{font-family:'Iosevka Aile';font-style:normal;font-weight:500;font-display:swap;src:url("/fonts/iosevka-aile/IosevkaAile-Medium.woff2") format("woff2")}
@font-face{font-family:'Iosevka Aile';font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/iosevka-aile/IosevkaAile-Regular.woff2") format("woff2")}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:100 800;font-display:swap;src:url("/fonts/jetbrains-mono/jetbrains-mono.woff2") format("woff2")}
/* loom theme -- skin: loom, bed: auto (auto), beds: light dark, motion: auto */
:root{
  --loom-ground:#FAF4E7;
  --loom-surface:#F2EBDD;
  --loom-well:#E8DFCC;
  --loom-ink:#33271F;
  --loom-ink2:#6B5A4D;
  --loom-ink3:#9A8878;
  --loom-accent:#C4485B;
  --loom-accent2:#EB7660;
  --loom-line:#DFD3BD;
  --loom-relief:rgba(110,70,45,.18);
  --loom-lift:rgba(250,247,242,0.875);
  --loom-alert:#8A4B3C;
  --loom-good:#4C6B46;
  --loom-tone-accent-fg:#FFF3E9;
  --loom-tone-amber:#9A6700;
  --loom-tone-apricot:#EE8F63;
  --loom-tone-band:#E8DFCC;
  --loom-tone-clay:#A8502E;
  --loom-tone-coffee:#AD774E;
  --loom-tone-coffee-text:#8A5834;
  --loom-tone-coffee-tint:rgba(173,119,78,0.07);
  --loom-tone-cyan:#06798F;
  --loom-tone-cyan-text:#0B6174;
  --loom-tone-cyan-tint:rgba(6,121,143,0.06);
  --loom-tone-gold:#C98A2B;
  --loom-tone-green:#457F35;
  --loom-tone-hi:rgba(255,255,255,.9);
  --loom-tone-lead:#C4485B;
  --loom-tone-line-hard:#CBBFA6;
  --loom-tone-lo:rgba(110,70,45,.2);
  --loom-tone-mint:#1BBAA0;
  --loom-tone-now-band:rgba(154,103,0,.14);
  --loom-tone-pane-edge:rgba(255,255,255,0.55);
  --loom-tone-r-lg:20px;
  --loom-tone-r-md:14px;
  --loom-tone-rose:#D35D92;
  --loom-tone-rule:#33271F;
  --loom-tone-sand:#F5B27E;
  --loom-tone-scrim:rgba(51,43,36,.28);
  --loom-tone-sh-lift:0 2px 6px rgba(110,70,45,.10), 0 14px 30px rgba(110,70,45,.18);
  --loom-tone-shadow-lift:0 2px 4px rgba(26,24,22,0.05), 0 12px 28px rgba(26,24,22,0.08);
  --loom-tone-shadow-soft:0 1px 2px rgba(26,24,22,0.05), 0 8px 22px rgba(26,24,22,0.06);
  --loom-tone-teal:#00ACC1;
  --loom-tone-teal2:#0A8DA0;
  --loom-tone-tint:rgba(196,72,91,.12);
  --loom-tone-tint-hover:rgba(196,72,91,.08);
  --loom-tone-tint-sel:rgba(196,72,91,.16);
  --loom-paper:#FAF4E7;
  --loom-paper2:#F2EBDD;
  --loom-ink-soft:#6B5A4D;
  --loom-strawberry:#C4485B;
  --loom-coral:#EB7660;
  --loom-shadow:rgba(110,70,45,.18);
  --loom-slug:linear-gradient(90deg, #C4485B 0%, #EB7660 100%);
  --loom-material-relief:0.55;
  --loom-material-glass:0.28;
  --loom-material-heat:0.62;
  --loom-worktop-sampler:linen;
  --loom-worktop-dot-alpha:0.04;
  --loom-worktop-grid:22px;
  --loom-font-heading:Fredoka, system-ui, sans-serif;
  --loom-font-body:Hanken Grotesk, system-ui, sans-serif;
  --loom-font-mono:JetBrains Mono, ui-monospace, Menlo, monospace;
  --loom-font-wordmark:Fredoka, system-ui, sans-serif;
  --loom-radius-panel:14px;
  --loom-radius-control:10px;
  --loom-radius-chip:999px;
  --loom-ink-agent-fable:#8E6BC8;
  --loom-ink-agent-opus:#C2603E;
  --loom-ink-agent-sonnet:#2F7D8C;
  --loom-ink-agent-haiku:#C98A2B;
  --loom-ink-agent-sol:#EE8C22;
  --loom-ink-agent-scout:#5A8F5A;
  --loom-ink-agent-weever:#3B6EA5;
  --loom-ink-agent-unknown:#8A6B52;
  --loom-grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23g)' opacity='1'/%3E%3C/svg%3E");
  --loom-grain-opacity:0.04;
  --loom-mode:auto;
  --loom-motion:auto;
  --loom-ground-kind:color;
  --loom-wash-count:0;
  --loom-texture-sampler:linen;
  --loom-texture-cell:22px;
  --loom-texture-alpha:0.04;
  --loom-texture-ink:#9C8E81;
  --loom-relief-threshold:0.42;
  --loom-manifest-card:quiet;
  --loom-level-card-surface:#F2EBDD;
  --loom-level-card-hi:rgba(250,247,242,0.648);
  --loom-level-card-lo:rgba(100,95,85,0.287);
  --loom-level-card-radius:18px;
  --loom-manifest-band:quiet;
  --loom-level-band-surface:#F2EBDD;
  --loom-level-band-hi:rgba(250,247,242,0.648);
  --loom-level-band-lo:rgba(100,95,85,0.287);
  --loom-level-band-radius:18px;
  --loom-manifest-well:quiet;
  --loom-level-well-surface:#DFD3BD;
  --loom-level-well-hi:rgba(243,238,230,0.648);
  --loom-level-well-lo:rgba(100,95,85,0.287);
  --loom-level-well-radius:18px;
  --loom-manifest-chip:wash;
  --loom-level-chip-surface:#F2EBDD;
  --loom-level-chip-hi:rgba(250,247,242,0.648);
  --loom-level-chip-lo:rgba(100,95,85,0.287);
  --loom-level-chip-radius:999px;
  --loom-relief-in-hi:rgba(100,95,85,0.246);
  --loom-relief-in-lo:rgba(243,238,230,0.58);
  --loom-field:#F2EBDD;
  --loom-rule:#9C8E81;
  --loom-rule-hard:#DFD3BD;
  --loom-role-accent:#C4485B;
  --loom-role-accent2:#EB7660;
  --loom-role-alert:#8A4B3C;
  --loom-role-good:#4C6B46;
  --loom-role-slug:linear-gradient(90deg, #C4485B 0%, #EB7660 100%);
  --loom-bento-columns-phone:1;
  --loom-bento-columns-tablet:2;
  --loom-bento-columns-laptop:3;
  --loom-bento-columns-wide:4;
  --loom-bento-columns-ultrawide:6;
  --loom-bento-bp-phone:0px;
  --loom-bento-bp-tablet:640px;
  --loom-bento-bp-laptop:1024px;
  --loom-bento-bp-wide:1440px;
  --loom-bento-bp-ultrawide:1920px;
  --loom-bento-gap:18px;
  --loom-bento-radius:18px;
  --loom-influence-pointer-amplitude:0.35;
  --loom-influence-pointer-falloff:120px;
  --loom-influence-pointer-channels:push quiet;
  --loom-influence-glyph-amplitude:0.18;
  --loom-influence-glyph-falloff:26px;
  --loom-influence-glyph-channels:quiet push;
  --loom-influence-glyph-granularity:word;
  --loom-influence-chunk-amplitude:0.62;
  --loom-influence-chunk-falloff:46px;
  --loom-influence-chunk-channels:quiet push relief manifest;
  --loom-influence-chrome-amplitude:0.28;
  --loom-influence-chrome-falloff:30px;
  --loom-influence-chrome-channels:quiet relief;
  --loom-influence-cell-amplitude:0.58;
  --loom-influence-cell-falloff:40px;
  --loom-influence-cell-channels:quiet relief manifest;
  --loom-influence-wash-amplitude:1;
  --loom-influence-wash-falloff:0px;
  --loom-influence-wash-channels:tint;
  --loom-influence-capsule-amplitude:0.4;
  --loom-influence-capsule-falloff:34px;
  --loom-influence-capsule-channels:quiet relief;
  --loom-curve-falloff:smoothstep;
  --loom-curve-rise:ease-out-back;
  --loom-curve-settle:ease-out;
  --loom-motion-manifest-ms:220ms;
  --loom-motion-settle-ms:380ms;
  --loom-motion-lift-ms:140ms;
  --loom-motion-press-ms:90ms;
  --loom-glass-blur:0;
  --loom-glass-saturate:1;
  --loom-glass-bg-alpha:0;
  --loom-glass-edge:rgba(255,255,255,.6);
  --loom-glass-scope:none;
  --loom-chip-always-stained:false;
  --loom-chip-stain-alpha:0.13;
  --loom-chip-stain-edge-alpha:0.35;
  --loom-chip-radius:999px;
  --loom-radius-surface:18px;
  --loom-radius-card:18px;
  --loom-type-display:Fraunces, Iowan Old Style, Palatino, Georgia, serif;
  --loom-type-body:Hanken Grotesk, -apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif;
  --loom-type-mono:JetBrains Mono, SFMono-Regular, Menlo, Consolas, monospace;
  --loom-type-wordmark:Fredoka, Hanken Grotesk, -apple-system, system-ui, sans-serif;
  --loom-type-body-floor-px:16;
  --loom-type-meta-floor-px:12;
  --loom-type-weight-cap:600;
  --loom-type-line:1.5;
  --loom-bed:light;
  --loom-beds:"light dark";
  --loom-mode:auto;
  --loom-motion:auto;
  color-scheme:light dark;
}
@media (prefers-color-scheme: dark){:root:not([data-theme]){
  --loom-ground:#2A2320;
  --loom-surface:#332B27;
  --loom-well:#221C19;
  --loom-ink:#F2E8D8;
  --loom-ink2:#B8A796;
  --loom-ink3:#8A7A6C;
  --loom-accent:#E2707F;
  --loom-accent2:#F08F72;
  --loom-line:#4E4238;
  --loom-relief:rgba(0,0,0,.45);
  --loom-lift:rgba(188,183,179,0.875);
  --loom-alert:#E0A08C;
  --loom-good:#9CBE93;
  --loom-tone-accent-fg:#1B1512;
  --loom-tone-amber:#D9A94F;
  --loom-tone-apricot:#F8C08A;
  --loom-tone-band:#221C19;
  --loom-tone-clay:#E08A63;
  --loom-tone-coffee:#C08A5E;
  --loom-tone-coffee-text:#CF9A6E;
  --loom-tone-coffee-tint:rgba(198,144,102,0.09);
  --loom-tone-cyan:#3BBACE;
  --loom-tone-cyan-text:#4BC4D7;
  --loom-tone-cyan-tint:rgba(75,196,215,0.08);
  --loom-tone-gold:#F5B27E;
  --loom-tone-green:#7CB877;
  --loom-tone-hi:rgba(255,246,230,.05);
  --loom-tone-lead:#EB7660;
  --loom-tone-line-hard:#5C4F42;
  --loom-tone-lo:rgba(0,0,0,.5);
  --loom-tone-mint:#4FD8BC;
  --loom-tone-now-band:rgba(217,169,79,.14);
  --loom-tone-pane-edge:rgba(255,255,255,0.06);
  --loom-tone-r-lg:20px;
  --loom-tone-r-md:14px;
  --loom-tone-rose:#E274A6;
  --loom-tone-rule:#C2BCB2;
  --loom-tone-sand:#F8C08A;
  --loom-tone-scrim:rgba(0,0,0,.45);
  --loom-tone-sh-lift:0 2px 6px rgba(0,0,0,.3), 0 14px 32px rgba(0,0,0,.35);
  --loom-tone-shadow-lift:0 2px 4px rgba(0,0,0,0.3), 0 12px 28px rgba(0,0,0,0.45);
  --loom-tone-shadow-soft:0 1px 2px rgba(0,0,0,0.3), 0 8px 22px rgba(0,0,0,0.35);
  --loom-tone-teal:#2CC6DA;
  --loom-tone-teal2:#4ED4E4;
  --loom-tone-tint:rgba(235,118,96,.12);
  --loom-tone-tint-hover:rgba(235,118,96,.08);
  --loom-tone-tint-sel:rgba(235,118,96,.16);
  --loom-paper:#2A2320;
  --loom-paper2:#332B27;
  --loom-ink-soft:#B8A796;
  --loom-strawberry:#E2707F;
  --loom-coral:#F08F72;
  --loom-shadow:rgba(0,0,0,.45);
  --loom-slug:linear-gradient(90deg, #E2707F 0%, #F08F72 100%);
  --loom-material-relief:0.55;
  --loom-material-glass:0.28;
  --loom-material-heat:0.62;
  --loom-worktop-sampler:linen;
  --loom-worktop-dot-alpha:0.04;
  --loom-worktop-grid:22px;
  --loom-font-heading:Fredoka, system-ui, sans-serif;
  --loom-font-body:Hanken Grotesk, system-ui, sans-serif;
  --loom-font-mono:JetBrains Mono, ui-monospace, Menlo, monospace;
  --loom-font-wordmark:Fredoka, system-ui, sans-serif;
  --loom-radius-panel:14px;
  --loom-radius-control:10px;
  --loom-radius-chip:999px;
  --loom-ink-agent-fable:#8E6BC8;
  --loom-ink-agent-opus:#C2603E;
  --loom-ink-agent-sonnet:#2F7D8C;
  --loom-ink-agent-haiku:#C98A2B;
  --loom-ink-agent-sol:#EE8C22;
  --loom-ink-agent-scout:#5A8F5A;
  --loom-ink-agent-weever:#3B6EA5;
  --loom-ink-agent-unknown:#8A6B52;
  --loom-grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23g)' opacity='1'/%3E%3C/svg%3E");
  --loom-grain-opacity:0.04;
  --loom-mode:auto;
  --loom-motion:auto;
  --loom-ground-kind:color;
  --loom-wash-count:0;
  --loom-texture-sampler:linen;
  --loom-texture-cell:22px;
  --loom-texture-alpha:0.04;
  --loom-texture-ink:#887A6E;
  --loom-relief-threshold:0.42;
  --loom-manifest-card:quiet;
  --loom-level-card-surface:#4E4238;
  --loom-level-card-hi:rgba(133,125,118,0.648);
  --loom-level-card-lo:rgba(11,9,8,0.451);
  --loom-level-card-radius:18px;
  --loom-manifest-band:quiet;
  --loom-level-band-surface:#332B27;
  --loom-level-band-hi:rgba(114,109,106,0.648);
  --loom-level-band-lo:rgba(11,9,8,0.451);
  --loom-level-band-radius:18px;
  --loom-manifest-well:quiet;
  --loom-level-well-surface:#332B27;
  --loom-level-well-hi:rgba(114,109,106,0.648);
  --loom-level-well-lo:rgba(11,9,8,0.451);
  --loom-level-well-radius:18px;
  --loom-manifest-chip:wash;
  --loom-level-chip-surface:#4E4238;
  --loom-level-chip-hi:rgba(133,125,118,0.648);
  --loom-level-chip-lo:rgba(11,9,8,0.451);
  --loom-level-chip-radius:999px;
  --loom-relief-in-hi:rgba(11,9,8,0.4);
  --loom-relief-in-lo:rgba(114,109,106,0.58);
  --loom-field:#332B27;
  --loom-rule:#887A6E;
  --loom-rule-hard:#4E4238;
  --loom-role-accent:#E2707F;
  --loom-role-accent2:#F08F72;
  --loom-role-alert:#E0A08C;
  --loom-role-good:#9CBE93;
  --loom-role-slug:linear-gradient(90deg, #E2707F 0%, #F08F72 100%);
  --loom-bento-columns-phone:1;
  --loom-bento-columns-tablet:2;
  --loom-bento-columns-laptop:3;
  --loom-bento-columns-wide:4;
  --loom-bento-columns-ultrawide:6;
  --loom-bento-bp-phone:0px;
  --loom-bento-bp-tablet:640px;
  --loom-bento-bp-laptop:1024px;
  --loom-bento-bp-wide:1440px;
  --loom-bento-bp-ultrawide:1920px;
  --loom-bento-gap:18px;
  --loom-bento-radius:18px;
  --loom-influence-pointer-amplitude:0.35;
  --loom-influence-pointer-falloff:120px;
  --loom-influence-pointer-channels:push quiet;
  --loom-influence-glyph-amplitude:0.18;
  --loom-influence-glyph-falloff:26px;
  --loom-influence-glyph-channels:quiet push;
  --loom-influence-glyph-granularity:word;
  --loom-influence-chunk-amplitude:0.62;
  --loom-influence-chunk-falloff:46px;
  --loom-influence-chunk-channels:quiet push relief manifest;
  --loom-influence-chrome-amplitude:0.28;
  --loom-influence-chrome-falloff:30px;
  --loom-influence-chrome-channels:quiet relief;
  --loom-influence-cell-amplitude:0.58;
  --loom-influence-cell-falloff:40px;
  --loom-influence-cell-channels:quiet relief manifest;
  --loom-influence-wash-amplitude:1;
  --loom-influence-wash-falloff:0px;
  --loom-influence-wash-channels:tint;
  --loom-influence-capsule-amplitude:0.4;
  --loom-influence-capsule-falloff:34px;
  --loom-influence-capsule-channels:quiet relief;
  --loom-curve-falloff:smoothstep;
  --loom-curve-rise:ease-out-back;
  --loom-curve-settle:ease-out;
  --loom-motion-manifest-ms:220ms;
  --loom-motion-settle-ms:380ms;
  --loom-motion-lift-ms:140ms;
  --loom-motion-press-ms:90ms;
  --loom-glass-blur:0;
  --loom-glass-saturate:1;
  --loom-glass-bg-alpha:0;
  --loom-glass-edge:rgba(255,255,255,.6);
  --loom-glass-scope:none;
  --loom-chip-always-stained:false;
  --loom-chip-stain-alpha:0.13;
  --loom-chip-stain-edge-alpha:0.35;
  --loom-chip-radius:999px;
  --loom-radius-surface:18px;
  --loom-radius-card:18px;
  --loom-type-display:Fraunces, Iowan Old Style, Palatino, Georgia, serif;
  --loom-type-body:Hanken Grotesk, -apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif;
  --loom-type-mono:JetBrains Mono, SFMono-Regular, Menlo, Consolas, monospace;
  --loom-type-wordmark:Fredoka, Hanken Grotesk, -apple-system, system-ui, sans-serif;
  --loom-type-body-floor-px:16;
  --loom-type-meta-floor-px:12;
  --loom-type-weight-cap:600;
  --loom-type-line:1.5;
  --loom-bed:dark;
}}
:root[data-theme="light"]{
  --loom-ground:#FAF4E7;
  --loom-surface:#F2EBDD;
  --loom-well:#E8DFCC;
  --loom-ink:#33271F;
  --loom-ink2:#6B5A4D;
  --loom-ink3:#9A8878;
  --loom-accent:#C4485B;
  --loom-accent2:#EB7660;
  --loom-line:#DFD3BD;
  --loom-relief:rgba(110,70,45,.18);
  --loom-lift:rgba(250,247,242,0.875);
  --loom-alert:#8A4B3C;
  --loom-good:#4C6B46;
  --loom-tone-accent-fg:#FFF3E9;
  --loom-tone-amber:#9A6700;
  --loom-tone-apricot:#EE8F63;
  --loom-tone-band:#E8DFCC;
  --loom-tone-clay:#A8502E;
  --loom-tone-coffee:#AD774E;
  --loom-tone-coffee-text:#8A5834;
  --loom-tone-coffee-tint:rgba(173,119,78,0.07);
  --loom-tone-cyan:#06798F;
  --loom-tone-cyan-text:#0B6174;
  --loom-tone-cyan-tint:rgba(6,121,143,0.06);
  --loom-tone-gold:#C98A2B;
  --loom-tone-green:#457F35;
  --loom-tone-hi:rgba(255,255,255,.9);
  --loom-tone-lead:#C4485B;
  --loom-tone-line-hard:#CBBFA6;
  --loom-tone-lo:rgba(110,70,45,.2);
  --loom-tone-mint:#1BBAA0;
  --loom-tone-now-band:rgba(154,103,0,.14);
  --loom-tone-pane-edge:rgba(255,255,255,0.55);
  --loom-tone-r-lg:20px;
  --loom-tone-r-md:14px;
  --loom-tone-rose:#D35D92;
  --loom-tone-rule:#33271F;
  --loom-tone-sand:#F5B27E;
  --loom-tone-scrim:rgba(51,43,36,.28);
  --loom-tone-sh-lift:0 2px 6px rgba(110,70,45,.10), 0 14px 30px rgba(110,70,45,.18);
  --loom-tone-shadow-lift:0 2px 4px rgba(26,24,22,0.05), 0 12px 28px rgba(26,24,22,0.08);
  --loom-tone-shadow-soft:0 1px 2px rgba(26,24,22,0.05), 0 8px 22px rgba(26,24,22,0.06);
  --loom-tone-teal:#00ACC1;
  --loom-tone-teal2:#0A8DA0;
  --loom-tone-tint:rgba(196,72,91,.12);
  --loom-tone-tint-hover:rgba(196,72,91,.08);
  --loom-tone-tint-sel:rgba(196,72,91,.16);
  --loom-paper:#FAF4E7;
  --loom-paper2:#F2EBDD;
  --loom-ink-soft:#6B5A4D;
  --loom-strawberry:#C4485B;
  --loom-coral:#EB7660;
  --loom-shadow:rgba(110,70,45,.18);
  --loom-slug:linear-gradient(90deg, #C4485B 0%, #EB7660 100%);
  --loom-material-relief:0.55;
  --loom-material-glass:0.28;
  --loom-material-heat:0.62;
  --loom-worktop-sampler:linen;
  --loom-worktop-dot-alpha:0.04;
  --loom-worktop-grid:22px;
  --loom-font-heading:Fredoka, system-ui, sans-serif;
  --loom-font-body:Hanken Grotesk, system-ui, sans-serif;
  --loom-font-mono:JetBrains Mono, ui-monospace, Menlo, monospace;
  --loom-font-wordmark:Fredoka, system-ui, sans-serif;
  --loom-radius-panel:14px;
  --loom-radius-control:10px;
  --loom-radius-chip:999px;
  --loom-ink-agent-fable:#8E6BC8;
  --loom-ink-agent-opus:#C2603E;
  --loom-ink-agent-sonnet:#2F7D8C;
  --loom-ink-agent-haiku:#C98A2B;
  --loom-ink-agent-sol:#EE8C22;
  --loom-ink-agent-scout:#5A8F5A;
  --loom-ink-agent-weever:#3B6EA5;
  --loom-ink-agent-unknown:#8A6B52;
  --loom-grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23g)' opacity='1'/%3E%3C/svg%3E");
  --loom-grain-opacity:0.04;
  --loom-mode:auto;
  --loom-motion:auto;
  --loom-ground-kind:color;
  --loom-wash-count:0;
  --loom-texture-sampler:linen;
  --loom-texture-cell:22px;
  --loom-texture-alpha:0.04;
  --loom-texture-ink:#9C8E81;
  --loom-relief-threshold:0.42;
  --loom-manifest-card:quiet;
  --loom-level-card-surface:#F2EBDD;
  --loom-level-card-hi:rgba(250,247,242,0.648);
  --loom-level-card-lo:rgba(100,95,85,0.287);
  --loom-level-card-radius:18px;
  --loom-manifest-band:quiet;
  --loom-level-band-surface:#F2EBDD;
  --loom-level-band-hi:rgba(250,247,242,0.648);
  --loom-level-band-lo:rgba(100,95,85,0.287);
  --loom-level-band-radius:18px;
  --loom-manifest-well:quiet;
  --loom-level-well-surface:#DFD3BD;
  --loom-level-well-hi:rgba(243,238,230,0.648);
  --loom-level-well-lo:rgba(100,95,85,0.287);
  --loom-level-well-radius:18px;
  --loom-manifest-chip:wash;
  --loom-level-chip-surface:#F2EBDD;
  --loom-level-chip-hi:rgba(250,247,242,0.648);
  --loom-level-chip-lo:rgba(100,95,85,0.287);
  --loom-level-chip-radius:999px;
  --loom-relief-in-hi:rgba(100,95,85,0.246);
  --loom-relief-in-lo:rgba(243,238,230,0.58);
  --loom-field:#F2EBDD;
  --loom-rule:#9C8E81;
  --loom-rule-hard:#DFD3BD;
  --loom-role-accent:#C4485B;
  --loom-role-accent2:#EB7660;
  --loom-role-alert:#8A4B3C;
  --loom-role-good:#4C6B46;
  --loom-role-slug:linear-gradient(90deg, #C4485B 0%, #EB7660 100%);
  --loom-bento-columns-phone:1;
  --loom-bento-columns-tablet:2;
  --loom-bento-columns-laptop:3;
  --loom-bento-columns-wide:4;
  --loom-bento-columns-ultrawide:6;
  --loom-bento-bp-phone:0px;
  --loom-bento-bp-tablet:640px;
  --loom-bento-bp-laptop:1024px;
  --loom-bento-bp-wide:1440px;
  --loom-bento-bp-ultrawide:1920px;
  --loom-bento-gap:18px;
  --loom-bento-radius:18px;
  --loom-influence-pointer-amplitude:0.35;
  --loom-influence-pointer-falloff:120px;
  --loom-influence-pointer-channels:push quiet;
  --loom-influence-glyph-amplitude:0.18;
  --loom-influence-glyph-falloff:26px;
  --loom-influence-glyph-channels:quiet push;
  --loom-influence-glyph-granularity:word;
  --loom-influence-chunk-amplitude:0.62;
  --loom-influence-chunk-falloff:46px;
  --loom-influence-chunk-channels:quiet push relief manifest;
  --loom-influence-chrome-amplitude:0.28;
  --loom-influence-chrome-falloff:30px;
  --loom-influence-chrome-channels:quiet relief;
  --loom-influence-cell-amplitude:0.58;
  --loom-influence-cell-falloff:40px;
  --loom-influence-cell-channels:quiet relief manifest;
  --loom-influence-wash-amplitude:1;
  --loom-influence-wash-falloff:0px;
  --loom-influence-wash-channels:tint;
  --loom-influence-capsule-amplitude:0.4;
  --loom-influence-capsule-falloff:34px;
  --loom-influence-capsule-channels:quiet relief;
  --loom-curve-falloff:smoothstep;
  --loom-curve-rise:ease-out-back;
  --loom-curve-settle:ease-out;
  --loom-motion-manifest-ms:220ms;
  --loom-motion-settle-ms:380ms;
  --loom-motion-lift-ms:140ms;
  --loom-motion-press-ms:90ms;
  --loom-glass-blur:0;
  --loom-glass-saturate:1;
  --loom-glass-bg-alpha:0;
  --loom-glass-edge:rgba(255,255,255,.6);
  --loom-glass-scope:none;
  --loom-chip-always-stained:false;
  --loom-chip-stain-alpha:0.13;
  --loom-chip-stain-edge-alpha:0.35;
  --loom-chip-radius:999px;
  --loom-radius-surface:18px;
  --loom-radius-card:18px;
  --loom-type-display:Fraunces, Iowan Old Style, Palatino, Georgia, serif;
  --loom-type-body:Hanken Grotesk, -apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif;
  --loom-type-mono:JetBrains Mono, SFMono-Regular, Menlo, Consolas, monospace;
  --loom-type-wordmark:Fredoka, Hanken Grotesk, -apple-system, system-ui, sans-serif;
  --loom-type-body-floor-px:16;
  --loom-type-meta-floor-px:12;
  --loom-type-weight-cap:600;
  --loom-type-line:1.5;
  --loom-bed:light;
  color-scheme:light;
}
:root[data-theme="dark"]{
  --loom-ground:#2A2320;
  --loom-surface:#332B27;
  --loom-well:#221C19;
  --loom-ink:#F2E8D8;
  --loom-ink2:#B8A796;
  --loom-ink3:#8A7A6C;
  --loom-accent:#E2707F;
  --loom-accent2:#F08F72;
  --loom-line:#4E4238;
  --loom-relief:rgba(0,0,0,.45);
  --loom-lift:rgba(188,183,179,0.875);
  --loom-alert:#E0A08C;
  --loom-good:#9CBE93;
  --loom-tone-accent-fg:#1B1512;
  --loom-tone-amber:#D9A94F;
  --loom-tone-apricot:#F8C08A;
  --loom-tone-band:#221C19;
  --loom-tone-clay:#E08A63;
  --loom-tone-coffee:#C08A5E;
  --loom-tone-coffee-text:#CF9A6E;
  --loom-tone-coffee-tint:rgba(198,144,102,0.09);
  --loom-tone-cyan:#3BBACE;
  --loom-tone-cyan-text:#4BC4D7;
  --loom-tone-cyan-tint:rgba(75,196,215,0.08);
  --loom-tone-gold:#F5B27E;
  --loom-tone-green:#7CB877;
  --loom-tone-hi:rgba(255,246,230,.05);
  --loom-tone-lead:#EB7660;
  --loom-tone-line-hard:#5C4F42;
  --loom-tone-lo:rgba(0,0,0,.5);
  --loom-tone-mint:#4FD8BC;
  --loom-tone-now-band:rgba(217,169,79,.14);
  --loom-tone-pane-edge:rgba(255,255,255,0.06);
  --loom-tone-r-lg:20px;
  --loom-tone-r-md:14px;
  --loom-tone-rose:#E274A6;
  --loom-tone-rule:#C2BCB2;
  --loom-tone-sand:#F8C08A;
  --loom-tone-scrim:rgba(0,0,0,.45);
  --loom-tone-sh-lift:0 2px 6px rgba(0,0,0,.3), 0 14px 32px rgba(0,0,0,.35);
  --loom-tone-shadow-lift:0 2px 4px rgba(0,0,0,0.3), 0 12px 28px rgba(0,0,0,0.45);
  --loom-tone-shadow-soft:0 1px 2px rgba(0,0,0,0.3), 0 8px 22px rgba(0,0,0,0.35);
  --loom-tone-teal:#2CC6DA;
  --loom-tone-teal2:#4ED4E4;
  --loom-tone-tint:rgba(235,118,96,.12);
  --loom-tone-tint-hover:rgba(235,118,96,.08);
  --loom-tone-tint-sel:rgba(235,118,96,.16);
  --loom-paper:#2A2320;
  --loom-paper2:#332B27;
  --loom-ink-soft:#B8A796;
  --loom-strawberry:#E2707F;
  --loom-coral:#F08F72;
  --loom-shadow:rgba(0,0,0,.45);
  --loom-slug:linear-gradient(90deg, #E2707F 0%, #F08F72 100%);
  --loom-material-relief:0.55;
  --loom-material-glass:0.28;
  --loom-material-heat:0.62;
  --loom-worktop-sampler:linen;
  --loom-worktop-dot-alpha:0.04;
  --loom-worktop-grid:22px;
  --loom-font-heading:Fredoka, system-ui, sans-serif;
  --loom-font-body:Hanken Grotesk, system-ui, sans-serif;
  --loom-font-mono:JetBrains Mono, ui-monospace, Menlo, monospace;
  --loom-font-wordmark:Fredoka, system-ui, sans-serif;
  --loom-radius-panel:14px;
  --loom-radius-control:10px;
  --loom-radius-chip:999px;
  --loom-ink-agent-fable:#8E6BC8;
  --loom-ink-agent-opus:#C2603E;
  --loom-ink-agent-sonnet:#2F7D8C;
  --loom-ink-agent-haiku:#C98A2B;
  --loom-ink-agent-sol:#EE8C22;
  --loom-ink-agent-scout:#5A8F5A;
  --loom-ink-agent-weever:#3B6EA5;
  --loom-ink-agent-unknown:#8A6B52;
  --loom-grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23g)' opacity='1'/%3E%3C/svg%3E");
  --loom-grain-opacity:0.04;
  --loom-mode:auto;
  --loom-motion:auto;
  --loom-ground-kind:color;
  --loom-wash-count:0;
  --loom-texture-sampler:linen;
  --loom-texture-cell:22px;
  --loom-texture-alpha:0.04;
  --loom-texture-ink:#887A6E;
  --loom-relief-threshold:0.42;
  --loom-manifest-card:quiet;
  --loom-level-card-surface:#4E4238;
  --loom-level-card-hi:rgba(133,125,118,0.648);
  --loom-level-card-lo:rgba(11,9,8,0.451);
  --loom-level-card-radius:18px;
  --loom-manifest-band:quiet;
  --loom-level-band-surface:#332B27;
  --loom-level-band-hi:rgba(114,109,106,0.648);
  --loom-level-band-lo:rgba(11,9,8,0.451);
  --loom-level-band-radius:18px;
  --loom-manifest-well:quiet;
  --loom-level-well-surface:#332B27;
  --loom-level-well-hi:rgba(114,109,106,0.648);
  --loom-level-well-lo:rgba(11,9,8,0.451);
  --loom-level-well-radius:18px;
  --loom-manifest-chip:wash;
  --loom-level-chip-surface:#4E4238;
  --loom-level-chip-hi:rgba(133,125,118,0.648);
  --loom-level-chip-lo:rgba(11,9,8,0.451);
  --loom-level-chip-radius:999px;
  --loom-relief-in-hi:rgba(11,9,8,0.4);
  --loom-relief-in-lo:rgba(114,109,106,0.58);
  --loom-field:#332B27;
  --loom-rule:#887A6E;
  --loom-rule-hard:#4E4238;
  --loom-role-accent:#E2707F;
  --loom-role-accent2:#F08F72;
  --loom-role-alert:#E0A08C;
  --loom-role-good:#9CBE93;
  --loom-role-slug:linear-gradient(90deg, #E2707F 0%, #F08F72 100%);
  --loom-bento-columns-phone:1;
  --loom-bento-columns-tablet:2;
  --loom-bento-columns-laptop:3;
  --loom-bento-columns-wide:4;
  --loom-bento-columns-ultrawide:6;
  --loom-bento-bp-phone:0px;
  --loom-bento-bp-tablet:640px;
  --loom-bento-bp-laptop:1024px;
  --loom-bento-bp-wide:1440px;
  --loom-bento-bp-ultrawide:1920px;
  --loom-bento-gap:18px;
  --loom-bento-radius:18px;
  --loom-influence-pointer-amplitude:0.35;
  --loom-influence-pointer-falloff:120px;
  --loom-influence-pointer-channels:push quiet;
  --loom-influence-glyph-amplitude:0.18;
  --loom-influence-glyph-falloff:26px;
  --loom-influence-glyph-channels:quiet push;
  --loom-influence-glyph-granularity:word;
  --loom-influence-chunk-amplitude:0.62;
  --loom-influence-chunk-falloff:46px;
  --loom-influence-chunk-channels:quiet push relief manifest;
  --loom-influence-chrome-amplitude:0.28;
  --loom-influence-chrome-falloff:30px;
  --loom-influence-chrome-channels:quiet relief;
  --loom-influence-cell-amplitude:0.58;
  --loom-influence-cell-falloff:40px;
  --loom-influence-cell-channels:quiet relief manifest;
  --loom-influence-wash-amplitude:1;
  --loom-influence-wash-falloff:0px;
  --loom-influence-wash-channels:tint;
  --loom-influence-capsule-amplitude:0.4;
  --loom-influence-capsule-falloff:34px;
  --loom-influence-capsule-channels:quiet relief;
  --loom-curve-falloff:smoothstep;
  --loom-curve-rise:ease-out-back;
  --loom-curve-settle:ease-out;
  --loom-motion-manifest-ms:220ms;
  --loom-motion-settle-ms:380ms;
  --loom-motion-lift-ms:140ms;
  --loom-motion-press-ms:90ms;
  --loom-glass-blur:0;
  --loom-glass-saturate:1;
  --loom-glass-bg-alpha:0;
  --loom-glass-edge:rgba(255,255,255,.6);
  --loom-glass-scope:none;
  --loom-chip-always-stained:false;
  --loom-chip-stain-alpha:0.13;
  --loom-chip-stain-edge-alpha:0.35;
  --loom-chip-radius:999px;
  --loom-radius-surface:18px;
  --loom-radius-card:18px;
  --loom-type-display:Fraunces, Iowan Old Style, Palatino, Georgia, serif;
  --loom-type-body:Hanken Grotesk, -apple-system, system-ui, Segoe UI, Helvetica, Arial, sans-serif;
  --loom-type-mono:JetBrains Mono, SFMono-Regular, Menlo, Consolas, monospace;
  --loom-type-wordmark:Fredoka, Hanken Grotesk, -apple-system, system-ui, sans-serif;
  --loom-type-body-floor-px:16;
  --loom-type-meta-floor-px:12;
  --loom-type-weight-cap:600;
  --loom-type-line:1.5;
  --loom-bed:dark;
  color-scheme:dark;
}
:root{--loom-shimmer-ms:2700ms}
@media (prefers-reduced-motion: reduce){:root{--loom-shimmer-ms:0ms}}

/* loom brand sheet (F1). The tokens above this line are painted from
   config/loom-door.json -> brand by src/pages.js (brandTokensCss); every rule
   here reads them and nothing hard-codes a colour, a family or a radius.
   Served at brand.css_path (default /brand/brand.css).

   The law it carries, Ian 2026-09-06: chrome is low key. Paper surfaces, ink
   text, subtle grain and layered panels; strawberry appears only on things
   you can act on. Less accent, more texture. */

.loom-body,
body.loom {
  margin: 0;
  background: var(--loom-paper);
  color: var(--loom-ink);
  font-family: var(--loom-font-body);
  font-size: 15px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}

/* The grain: one fixed overlay, never a repeating paint per panel. It sits
   behind content and takes no pointer. */
.loom-grain::before,
body.loom::before {
  content: "";
  position: fixed;
  inset: 0;
  background-image: var(--loom-grain);
  opacity: var(--loom-grain-opacity);
  pointer-events: none;
  z-index: 0;
  mix-blend-mode: multiply;
}
@media (prefers-color-scheme: dark) {
  .loom-grain::before,
  body.loom::before { mix-blend-mode: screen; opacity: calc(var(--loom-grain-opacity) * 0.8); }
}
body.loom > * { position: relative; z-index: 1; }

h1, h2, h3, .loom-heading {
  font-family: var(--loom-font-heading);
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--loom-ink);
  margin: 0 0 0.5rem;
}
h1 { font-size: 1.5rem; }
h2 { font-size: 1.2rem; }
h3 { font-size: 1rem; }
p { margin: 0 0 0.9rem; }
small, .loom-soft { color: var(--loom-ink-soft); }
code, kbd, samp, .loom-mono, .loom-path {
  font-family: var(--loom-font-mono);
  font-size: 0.86em;
  color: var(--loom-ink-soft);
  word-break: break-all;
}

/* The mark (STEER-4 law 9): the shuttle-and-bead glyph, drawn inline so its
   two fills are tokens -- shuttle ink, bead accent. Monochrome by default,
   coloured only when a skin declares --loom-accent. No word, no display face. */
.loom-wordmark {
  display: inline-flex;
  align-items: center;
  line-height: 0;
  font-size: 1.6rem;
}
.loom-wordmark img, .loom-mark {
  height: var(--loom-mark-height, 1.15em);   /* config brand.mark_height */
  width: auto;
  vertical-align: -0.14em;
}
.loom-mark .shuttle { fill: var(--loom-ink, currentColor); }
.loom-mark .bead { fill: var(--loom-accent, var(--loom-ink, currentColor)); }

/* Panels: layered paper with a soft warm shadow, never a hard border box. */
.loom-panel {
  background: var(--loom-paper2);
  border: 1px solid var(--loom-line);
  border-radius: var(--loom-radius-panel);
  box-shadow: 0 2px 14px var(--loom-shadow);
  padding: 1.25rem 1.35rem;
}
.loom-panel + .loom-panel { margin-top: 1rem; }
.loom-stack > * + * { margin-top: 0.75rem; }

/* Anything you can act on is the only place the accent shows. */
a, .loom-link {
  color: var(--loom-strawberry);
  text-decoration-color: color-mix(in srgb, var(--loom-strawberry) 40%, transparent);
  text-underline-offset: 0.18em;
}
a:hover, .loom-link:hover { color: var(--loom-coral); }
.loom-button {
  display: inline-block;
  font: inherit;
  font-weight: 600;
  border: 0;
  border-radius: var(--loom-radius-control);
  padding: 0.6rem 1.1rem;
  background: var(--loom-strawberry);
  color: var(--loom-paper);
  cursor: pointer;
}
.loom-button:hover { background: var(--loom-coral); }
.loom-button[disabled] { opacity: 0.55; cursor: wait; }
.loom-button.quiet {
  background: transparent;
  color: var(--loom-ink);
  border: 1px solid var(--loom-line);
}
.loom-button.quiet:hover { border-color: var(--loom-strawberry); color: var(--loom-strawberry); }
.loom-input, input.loom, select.loom, textarea.loom {
  width: 100%;
  box-sizing: border-box;
  font: inherit;
  padding: 0.55rem 0.7rem;
  border: 1px solid var(--loom-line);
  border-radius: var(--loom-radius-control);
  background: var(--loom-paper);
  color: var(--loom-ink);
}
.loom-input:focus-visible, input.loom:focus-visible, select.loom:focus-visible, textarea.loom:focus-visible {
  outline: 2px solid var(--loom-strawberry);
  outline-offset: 1px;
}
:where(a, button, .loom-button, [tabindex]):focus-visible {
  outline: 2px solid var(--loom-strawberry);
  outline-offset: 2px;
}

/* Chips: a label, not a button -- ink on paper, accent only when live. */
.loom-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.35em;
  padding: 0.15em 0.6em;
  border-radius: var(--loom-radius-chip);
  border: 1px solid var(--loom-line);
  background: var(--loom-paper);
  color: var(--loom-ink-soft);
  font-size: 0.82em;
  line-height: 1.6;
}
.loom-chip.live { border-color: var(--loom-strawberry); color: var(--loom-strawberry); }
.loom-rule { border: 0; border-top: 1px solid var(--loom-line); margin: 1.2rem 0; }

@media (prefers-reduced-motion: reduce) {
  * { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; }
}

/* ---- the door's own chrome (F2) ----------------------------------------
   The login page, /me, the notices and the bar above a sandboxed page. The
   law again: paper and ink carry the surface, strawberry carries only what
   you can act on -- which is why the wordmark is a link home and never a
   decoration. */

.loom-wordmark { text-decoration: none; }
.loom-wordmark:hover .bead { fill: var(--loom-coral); }

/* The bar above a page: a hairline of paper over the page's own ground. */
.loom-bar {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  padding: 0 0.85rem;
  background: var(--loom-paper2);
  border-bottom: 1px solid var(--loom-line);
  box-shadow: 0 1px 8px var(--loom-shadow);
  font-family: var(--loom-font-body);
  font-size: 0.85rem;
  color: var(--loom-ink);
  overflow: hidden;
  white-space: nowrap;
}
.loom-bar .loom-wordmark { font-size: 1.25rem; flex: 0 0 auto; }
.loom-bar .spacer { flex: 1 1 auto; }
.loom-bar .where {
  font-family: var(--loom-font-mono);
  font-size: 0.76rem;
  color: var(--loom-ink-soft);
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
.loom-bar .where .sep { padding: 0 0.15em; opacity: 0.6; }
.loom-bar .who {
  flex: 0 0 auto;
  padding: 0.1rem 0.6rem;
  border: 1px solid var(--loom-line);
  border-radius: var(--loom-radius-chip);
  background: var(--loom-paper);
  color: var(--loom-ink-soft);
  font-size: 0.76rem;
  text-decoration: none;
}
.loom-bar .signout { flex: 0 0 auto; font-size: 0.8rem; }
@media (max-width: 30rem) {
  .loom-bar .where { display: none; }
}
