@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/32687112bd2dd8db-s.cfdd66c2.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/28868e710e86be81-s.c30238d4.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.4564287c.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_d7b50fc5-module__qeW00a__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_d7b50fc5-module__qeW00a__variable{--font-space-grotesk:"Space Grotesk","Space Grotesk Fallback"}
@font-face{font-family:Playfair Display;font-style:italic;font-weight:400;font-display:swap;src:url(../media/35161b7740c25d33-s.c0314740.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:italic;font-weight:400;font-display:swap;src:url(../media/391e53907fa6d8ec-s.1942ea8f.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:italic;font-weight:400;font-display:swap;src:url(../media/ae8872c8a32e309c-s.bd3beac6.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Playfair Display;font-style:italic;font-weight:400;font-display:swap;src:url(../media/70e3db2de7f94926-s.p.347f98aa.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Playfair Display;font-style:italic;font-weight:700;font-display:swap;src:url(../media/35161b7740c25d33-s.c0314740.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:italic;font-weight:700;font-display:swap;src:url(../media/391e53907fa6d8ec-s.1942ea8f.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:italic;font-weight:700;font-display:swap;src:url(../media/ae8872c8a32e309c-s.bd3beac6.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Playfair Display;font-style:italic;font-weight:700;font-display:swap;src:url(../media/70e3db2de7f94926-s.p.347f98aa.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Playfair Display;font-style:italic;font-weight:900;font-display:swap;src:url(../media/35161b7740c25d33-s.c0314740.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:italic;font-weight:900;font-display:swap;src:url(../media/391e53907fa6d8ec-s.1942ea8f.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:italic;font-weight:900;font-display:swap;src:url(../media/ae8872c8a32e309c-s.bd3beac6.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Playfair Display;font-style:italic;font-weight:900;font-display:swap;src:url(../media/70e3db2de7f94926-s.p.347f98aa.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Playfair Display;font-style:normal;font-weight:400;font-display:swap;src:url(../media/65c558afe41e89d6-s.e2c8389a.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:normal;font-weight:400;font-display:swap;src:url(../media/14e23f9b59180572-s.9c448f3c.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:normal;font-weight:400;font-display:swap;src:url(../media/b49b0d9b851e4899-s.4f3fa681.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Playfair Display;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2a65768255d6b625-s.p.d19752fb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Playfair Display;font-style:normal;font-weight:700;font-display:swap;src:url(../media/65c558afe41e89d6-s.e2c8389a.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:normal;font-weight:700;font-display:swap;src:url(../media/14e23f9b59180572-s.9c448f3c.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:normal;font-weight:700;font-display:swap;src:url(../media/b49b0d9b851e4899-s.4f3fa681.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Playfair Display;font-style:normal;font-weight:700;font-display:swap;src:url(../media/2a65768255d6b625-s.p.d19752fb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Playfair Display;font-style:normal;font-weight:900;font-display:swap;src:url(../media/65c558afe41e89d6-s.e2c8389a.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:normal;font-weight:900;font-display:swap;src:url(../media/14e23f9b59180572-s.9c448f3c.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:normal;font-weight:900;font-display:swap;src:url(../media/b49b0d9b851e4899-s.4f3fa681.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Playfair Display;font-style:normal;font-weight:900;font-display:swap;src:url(../media/2a65768255d6b625-s.p.d19752fb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Playfair Display Fallback;src:local(Times New Roman);ascent-override:97.25%;descent-override:22.56%;line-gap-override:0.0%;size-adjust:111.26%}.playfair_display_6cae169-module__3NBypq__className{font-family:Playfair Display,Playfair Display Fallback}.playfair_display_6cae169-module__3NBypq__variable{--font-playfair:"Playfair Display","Playfair Display Fallback"}
@font-face{font-family:OpenDyslexic;font-style:normal;font-display:swap;font-weight:400;src:url(../media/opendyslexic-latin-400-normal.112a79ce.woff2)format("woff2"),url(../media/opendyslexic-latin-400-normal.85cf64e2.woff)format("woff")}
:root{--font-serif:var(--font-playfair),"Playfair Display",Georgia,serif;--font-sans:var(--font-space-grotesk),"Space Grotesk",sans-serif;--font-dyslexic:"OpenDyslexic",sans-serif;--bg:#f5f0e8;--surface:#faf7f2;--surface-dark:#2e3a2a;--text:#1c1c1a;--text-light:#faf7f2;--muted:#5a5a50;--accent:#6b7c4d;--accent-dark:#4e5c36;--accent-hover:#7d9059;--line:#ddd8cc;--shadow-soft:0 2px 12px #1c1c1a0f;--radius-sm:4px;--radius-md:8px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px}.skip-link{top:-100%;left:var(--space-4);z-index:9999;background:var(--text);color:var(--bg);border-radius:var(--radius-sm);padding:10px 16px;font-size:14px;font-weight:600;text-decoration:none;transition:top .15s;position:absolute}.skip-link:focus{top:var(--space-3)}*{box-sizing:border-box;margin:0;padding:0}html,body{max-width:100vw;overflow-x:clip}body{color:var(--text);background-color:var(--bg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:radial-gradient(900px 600px at 10% -10%,#6b7c4d12,#0000 60%),radial-gradient(800px 500px at 90% 0,#2e3a2a0d,#0000 55%)}body.theme-programmer{color-scheme:dark;--font-sans:ui-monospace,"SFMono-Regular","SF Mono",Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--font-serif:var(--font-sans);--bg:#0f1115;--surface:#151923;--surface-dark:#090b10;--text:#f0f4f9;--text-light:#fff;--muted:#a8b5c2;--accent:#00c48c;--accent-dark:#00a978;--accent-hover:#00d79a;--line:#273041;--shadow-soft:0 10px 24px #01081273;background-image:radial-gradient(1200px 700px at 12% -18%,#00c48c24,#0000 60%),radial-gradient(900px 600px at 92% 0,#3b82f61c,#0000 62%)}a{color:inherit;text-decoration:none}a:hover{color:var(--accent-dark)}img{max-width:100%;height:auto;display:block}main{display:block}.container{max-width:1140px;padding:0 var(--space-5);margin:0 auto}@media (max-width:720px){.container{padding:0 var(--space-4)}}.editor-callout{border-radius:var(--radius-md);margin:var(--space-4)0;border-left:4px solid;padding:14px 16px;font-size:.95em;line-height:1.65}.editor-callout--info{color:#2563eb;background:#3b82f612}.editor-callout--success{color:#16a34a;background:#22c55e12}.editor-callout--warning{color:#92400e;background:#f59e0b12}.editor-callout--danger{color:#b91c1c;background:#ef444412}.editor-callout--tip{color:#6d28d9;background:#a855f712}.editor-video-wrap{margin:var(--space-4)0}.editor-table-wrap{margin:var(--space-4)0;overflow-x:auto}.editor-table{border-collapse:collapse;width:100%;font-size:.9em}.editor-table th,.editor-table td{border:1px solid var(--line);text-align:left;padding:8px 12px;line-height:1.5}.editor-table th{background:color-mix(in srgb,var(--surface-dark)6%,var(--surface));font-weight:600}.no-text-select *{-webkit-user-select:none;user-select:none}
.CookieBanner-module__3JinOG__backdrop{z-index:9990;backdrop-filter:blur(2px);background:#00000059;position:fixed;inset:0}.CookieBanner-module__3JinOG__banner{bottom:var(--space-4);z-index:9999;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-4)var(--space-5);align-items:center;gap:var(--space-5);max-width:700px;width:calc(100% - var(--space-6));display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 8px 32px #0000002e}.CookieBanner-module__3JinOG__bannerBody{flex:1;min-width:0}.CookieBanner-module__3JinOG__bannerTitle{color:var(--text);margin:0 0 4px;font-size:14px;font-weight:600}.CookieBanner-module__3JinOG__bannerText{color:var(--muted);margin:0;font-size:13px;line-height:1.6}.CookieBanner-module__3JinOG__privacyLink{color:var(--accent-dark);font-size:13px;text-decoration:underline}.CookieBanner-module__3JinOG__bannerActions{gap:var(--space-2);flex-direction:column;flex-shrink:0;display:flex}.CookieBanner-module__3JinOG__modal{z-index:9999;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);width:min(640px,calc(100vw - var(--space-5)));flex-direction:column;max-height:80vh;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 16px 48px #00000038}.CookieBanner-module__3JinOG__modalHeader{padding:var(--space-5)var(--space-5)var(--space-4);border-bottom:1px solid var(--line);flex-shrink:0}.CookieBanner-module__3JinOG__modalTitle{color:var(--text);margin:0 0 6px;font-size:18px;font-weight:700}.CookieBanner-module__3JinOG__modalSubtitle{color:var(--muted);margin:0;font-size:13px;line-height:1.6}.CookieBanner-module__3JinOG__modalScroll{padding:var(--space-4)var(--space-5);gap:var(--space-4);flex:1;display:grid;overflow-y:auto}.CookieBanner-module__3JinOG__modalFooter{padding:var(--space-4)var(--space-5);border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:var(--space-3);flex-shrink:0;display:flex}.CookieBanner-module__3JinOG__footerRight{gap:var(--space-2);display:flex}.CookieBanner-module__3JinOG__category{border:1px solid var(--line);border-radius:var(--radius-sm);padding:var(--space-4);gap:var(--space-3);display:grid}.CookieBanner-module__3JinOG__catHeader{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.CookieBanner-module__3JinOG__catMeta{align-items:center;gap:10px;display:flex}.CookieBanner-module__3JinOG__catLabel{color:var(--text);font-size:14px;font-weight:600}.CookieBanner-module__3JinOG__alwaysOn{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);background:color-mix(in srgb,var(--accent)12%,transparent);border-radius:999px;padding:2px 7px;font-size:11px;font-weight:600}.CookieBanner-module__3JinOG__catDesc{color:var(--muted);margin:0;font-size:13px;line-height:1.65}.CookieBanner-module__3JinOG__toggle{background:var(--line);cursor:pointer;border:none;border-radius:999px;flex-shrink:0;width:40px;height:22px;padding:0;transition:background .2s;position:relative}.CookieBanner-module__3JinOG__toggleOn{background:var(--accent)}.CookieBanner-module__3JinOG__toggleLocked{background:var(--accent);cursor:not-allowed;opacity:.6}.CookieBanner-module__3JinOG__knob{background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .2s;display:block;position:absolute;top:3px;left:3px}.CookieBanner-module__3JinOG__toggleOn .CookieBanner-module__3JinOG__knob,.CookieBanner-module__3JinOG__toggleLocked .CookieBanner-module__3JinOG__knob{transform:translate(18px)}.CookieBanner-module__3JinOG__table{border-collapse:collapse;width:100%;font-size:12px}.CookieBanner-module__3JinOG__table th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line);padding:5px 8px;font-size:11px;font-weight:600}.CookieBanner-module__3JinOG__table td{color:var(--muted);vertical-align:top;border-bottom:1px solid color-mix(in srgb,var(--line)50%,transparent);padding:6px 8px}.CookieBanner-module__3JinOG__table tr:last-child td{border-bottom:none}.CookieBanner-module__3JinOG__code{font-family:var(--font-mono,monospace);background:color-mix(in srgb,var(--line)40%,transparent);white-space:nowrap;border-radius:3px;padding:1px 5px;font-size:11px}.CookieBanner-module__3JinOG__btnPrimary{border-radius:var(--radius-sm);background:var(--text);color:var(--surface);cursor:pointer;white-space:nowrap;border:1px solid #0000;padding:8px 16px;font-size:13px;font-weight:600;transition:opacity .15s}.CookieBanner-module__3JinOG__btnPrimary:hover{opacity:.85}.CookieBanner-module__3JinOG__btnSecondary{border-radius:var(--radius-sm);border:1px solid var(--line);color:var(--text);cursor:pointer;white-space:nowrap;background:0 0;padding:8px 16px;font-size:13px;transition:background .15s}.CookieBanner-module__3JinOG__btnSecondary:hover{background:color-mix(in srgb,var(--line)50%,transparent)}.CookieBanner-module__3JinOG__btnGhost{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:8px 0;font-size:13px;transition:color .15s}.CookieBanner-module__3JinOG__btnGhost:hover{color:var(--text)}@media (max-width:600px){.CookieBanner-module__3JinOG__banner{border-radius:var(--radius-md)var(--radius-md)0 0;width:100%;max-width:100%;padding:var(--space-4);flex-direction:column;align-items:stretch;bottom:0;left:0;right:0;transform:none}.CookieBanner-module__3JinOG__bannerActions{flex-flow:wrap}.CookieBanner-module__3JinOG__bannerActions .CookieBanner-module__3JinOG__btnPrimary,.CookieBanner-module__3JinOG__bannerActions .CookieBanner-module__3JinOG__btnSecondary{text-align:center;flex:1}.CookieBanner-module__3JinOG__modal{border-radius:var(--radius-md)var(--radius-md)0 0;width:100%;max-width:100%;max-height:90vh;inset:auto 0 0;transform:none}.CookieBanner-module__3JinOG__table{display:none}.CookieBanner-module__3JinOG__modalFooter{align-items:stretch;gap:var(--space-2);flex-direction:column}.CookieBanner-module__3JinOG__footerRight{width:100%}.CookieBanner-module__3JinOG__footerRight .CookieBanner-module__3JinOG__btnPrimary,.CookieBanner-module__3JinOG__footerRight .CookieBanner-module__3JinOG__btnSecondary{text-align:center;flex:1}}
