@font-face{font-family:Noto Sans KR Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/noto-sans-kr-core.DkwD48cC.woff2)format("woff2");unicode-range:U+20-7E,U+A7,U+A9,U+B7,U+D7,U+2191-2193,U+2260,U+2264-2265,U+2318,U+2500,U+2502,U+2514,U+251C,U+25BC,U+AC00-AC01,U+AC04,U+AC08,U+AC10-AC12,U+AC14-AC15,U+AC19,U+AC1C-AC1D,U+AC2D,U+AC31,U+AC70,U+AC74,U+AC78,U+AC80,U+AC83,U+AC8C,U+ACA0,U+ACA8-ACAA,U+ACAC,U+ACB0,U+ACB9,U+ACBC-ACBD,U+ACC4,U+ACE0,U+ACE7-ACE8,U+ACF3,U+ACF5,U+ACFC,U+AD00,U+AD04,U+AD11,U+AD50,U+AD6C-AD6D,U+AD8C,U+ADDC,U+ADE0,U+ADF8-ADF9,U+ADFC,U+AE00,U+AE08-AE09,U+AE0B,U+AE30,U+AE34,U+AE38,U+AE41,U+AE45,U+AE4A,U+AE4C,U+AE68,U+AEBC,U+AED8,U+AEF4,U+AFB8,U+AFBC,U+AFC0,U+AFE8,U+B00C,U+B010,U+B014,U+B01C,U+B044,U+B04A,U+B04C,U+B055,U+B05D,U+B07C,U+B098,U+B09C,U+B0A0,U+B0A8-B0A9,U+B0AC,U+B0AE-B0AF,U+B0B4,U+B0B8,U+B0BC,U+B0C5,U+B0C8,U+B108,U+B110,U+B118,U+B123-B124,U+B150,U+B155,U+B17C,U+B192-B193,U+B204,U+B208,U+B20C,U+B215,U+B220,U+B258,U+B260,U+B269,U+B274,U+B290,U+B294,U+B298,U+B2A5-B2A6,U+B2C8-B2C9,U+B2CC,U+B2D8-B2D9,U+B2E4-B2E5,U+B2E8,U+B2EB-B2EC,U+B2F4-B2F5,U+B2F9,U+B300,U+B354,U+B358,U+B369,U+B370-B371,U+B378,U+B3C4-B3C5,U+B3CC,U+B3D5,U+B3D9,U+B3FC,U+B410,U+B418,U+B41C,U+B420,U+B428-B429,U+B450,U+B454,U+B458,U+B461,U+B4A4,U+B4DC-B4DD,U+B4E0,U+B4E4,U+B4ED,U+B4F1,U+B514,U+B529,U+B530,U+B54C,U+B5A4,U+B5BB,U+B610,U+B6F0,U+B701,U+B73B,U+B77C-B77D,U+B790,U+B798,U+B79C,U+B7A8,U+B7B5,U+B7C9,U+B7EC,U+B7F0,U+B7FC,U+B800,U+B807-B809,U+B824-B825,U+B828,U+B82C,U+B835,U+B838-B839,U+B840,U+B85C-B85D,U+B860,U+B864,U+B86D,U+B8B0,U+B8CC,U+B8E8,U+B8F8-B8F9,U+B904,U+B918,U+B958,U+B960,U+B974,U+B978,U+B97C,U+B984-B985,U+B9AC,U+B9B0,U+B9B4,U+B9BC-B9BD,U+B9C1,U+B9C8-B9C9,U+B9CC,U+B9CE,U+B9D0,U+B9DD-B9DE,U+B9E1,U+B9E4,U+BA38,U+BA3C,U+BA40,U+BA48,U+BA54,U+BA70-BA71,U+BA74,U+BA85,U+BAA8-BAA9,U+BAB0,U+BABB,U+BB34,U+BB36,U+BB38,U+BB3C,U+BB45,U+BBC0,U+BBF8,U+BBFC,U+BBFF-BC00,U+BC0B,U+BC0D,U+BC0F,U+BC14,U+BC18,U+BC1B-BC1C,U+BC29,U+BC30-BC31,U+BC84,U+BC88,U+BC94-BC95,U+BCA0,U+BCA4,U+BCC0,U+BCC4,U+BCD1,U+BCF4-BCF5,U+BCF8,U+BCFC,U+BD05,U+BD10,U+BD24,U+BD80,U+BD84,U+BD88,U+BD99,U+BE0C,U+BE14,U+BE44,U+BE48,U+BE4C,U+BE59,U+BE60,U+BE68,U+BE7D,U+BFD0,U+C0AC,U+C0B0,U+C0B4,U+C0BC-C0BD,U+C0C1,U+C0C8-C0C9,U+C0DD,U+C11C-C11E,U+C120,U+C124,U+C131,U+C138-C139,U+C14B,U+C158,U+C168,U+C170,U+C18C-C18D,U+C190,U+C194,U+C19F,U+C1A1,U+C218-C219,U+C21C,U+C220,U+C228,U+C26C,U+C27D,U+C2A4,U+C2B5,U+C2B9,U+C2DC-C2DD,U+C2E0,U+C2E4,U+C2EC,U+C2F1,U+C2F6,U+C2F8,U+C313,U+C368,U+C37C,U+C4F0,U+C4F4,U+C4F8,U+C500-C501,U+C529,U+C52C,U+C544,U+C548,U+C54A,U+C54C,U+C554,U+C558,U+C55E,U+C560,U+C57C-C57D,U+C591,U+C5B4-C5B5,U+C5B8,U+C5BB-C5BC,U+C5C4-C5C8,U+C5D0,U+C5D4,U+C5EC-C5ED,U+C5F0,U+C5F4,U+C600-C601,U+C608,U+C624,U+C628,U+C62C,U+C62E,U+C635,U+C640,U+C644,U+C654-C655,U+C65C,U+C678,U+C67C,U+C694,U+C6A9,U+C6B0,U+C6B4,U+C6C0-C6C1,U+C6C3,U+C6CC,U+C6D0,U+C6E0,U+C704,U+C708,U+C720,U+C728,U+C73C,U+C740,U+C744,U+C74C,U+C751,U+C758,U+C774-C775,U+C778,U+C77C-C77D,U+C783-C785,U+C788,U+C790-C791,U+C798,U+C7A0-C7A1,U+C7A5,U+C7AC-C7AD,U+C7C1,U+C800-C801,U+C804,U+C808,U+C810-C811,U+C815,U+C81C-C81D,U+C838,U+C84C,U+C870-C871,U+C874,U+C885,U+C88B,U+C8FC,U+C900,U+C904,U+C90D,U+C911,U+C918,U+C988-C989,U+C998,U+C99D,U+C9C0-C9C1,U+C9C4,U+C9C8,U+C9D1,U+C9E7,U+C9F8,U+CABD,U+CC0D,U+CC1D,U+CC28-CC29,U+CC2C,U+CC30,U+CC38,U+CC3D-CC3E,U+CC44-CC45,U+CC98,U+CCAB,U+CCAD,U+CCB4,U+CCD0,U+CCE4,U+CD08,U+CD1D,U+CD5C,U+CD94-CD95,U+CD98,U+CD9C,U+CDA5,U+CDA9,U+CDE8,U+CE21,U+CE35,U+CE58-CE59,U+CE5C,U+CE60,U+CE69,U+CE6D,U+CE78,U+CE90,U+CEA1,U+CEE4,U+CEE8,U+CEEC,U+CF00,U+CF13,U+CF1C,U+CF20,U+CF30,U+CF54,U+CF58,U+CF5C,U+D000,U+D050,U+D06C,U+D070,U+D074,U+D07C-D07D,U+D0A4,U+D0A8,U+D0AC,U+D0B5,U+D0B7,U+D0B9,U+D0C0,U+D0D5,U+D0DC-D0DD,U+D130,U+D134,U+D14C-D14D,U+D15C,U+D1A0,U+D1A4,U+D1B5,U+D2B8-D2B9,U+D2C8,U+D2F0,U+D300,U+D30C,U+D310,U+D328-D329,U+D37C,U+D398,U+D3B4,U+D3B8,U+D3C9,U+D3EC-D3ED,U+D45C,U+D504,U+D508,U+D50C,U+D53C-D53D,U+D544,U+D558-D559,U+D55C,U+D560,U+D568-D569,U+D56D,U+D574-D575,U+D578,U+D588-D589,U+D5A5,U+D5C8,U+D5D8,U+D5E4,U+D600,U+D604,U+D611,U+D614-D615,U+D638-D639,U+D63C,U+D648,U+D654-D655,U+D658,U+D65C,U+D669,U+D68C-D68D,U+D69F,U+D6A8,U+D6C4,U+D6E8,U+D718,U+D750,U+D754,U+D788,U+D78C,U+D790}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-vietnamese-wght-normal.D0rl6rjA.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-latin-ext-wght-normal.D9tNdqV9.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-latin-wght-normal.BhU9QXUp.woff2)format("woff2-variations");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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-greek-wght-normal.Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.woff2)format("woff2-variations");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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.woff2)format("woff2-variations");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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-wght-normal.B9CIFXIH.woff2)format("woff2-variations");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}:root{--bg:#fafbfc;--ink:#20252b;--muted:#65707c;--line:#dfe4e8;--surface:#f0f3f5;--accent:#20252b;--tint:#f0f3f5;--dialog-shadow:#0003;--menu-shadow:#0001;--display:"Space Grotesk Variable", sans-serif;--body:"Noto Sans KR Variable", sans-serif;--mono:"JetBrains Mono Variable", monospace;color-scheme:light}:root[data-theme=dark]{--bg:#191d22;--ink:#edf0f3;--muted:#a8b1bc;--line:#363e47;--surface:#242b33;--accent:#edf0f3;--tint:#242b33;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{background:var(--bg);color:var(--ink);font:16px/1.8 var(--body);word-break:keep-all;overflow-wrap:anywhere;flex-direction:column;min-height:100svh;margin:0;display:flex}button,input{font:inherit}button{cursor:pointer}a{color:inherit;text-underline-offset:4px;text-decoration:none}a:hover{color:var(--accent)}a,button{touch-action:manipulation}button:disabled{cursor:default}svg{flex-shrink:0}img,video{max-width:100%;height:auto}h1,h2,h3,p,ul,ol{margin:0}h1,h2,h3{letter-spacing:-.04em;line-height:1.45}h1{font-size:36px;font-weight:700}h2{font-size:24px;font-weight:700}h3{font-size:20px;font-weight:600}button{color:inherit}button,a{transition:color .15s,background-color .15s,border-color .15s}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.site-main:focus{outline:none}[hidden]{display:none!important}.container{--page-gutter:40px;width:min(1120px, calc(100% - var(--page-gutter) * 2));margin-inline:auto}.muted{color:var(--muted)}.accent,.text-link{color:var(--accent)}.text-link:hover{text-decoration:underline}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;background:var(--bg);border:2px solid var(--accent);padding:10px 20px;position:fixed;top:-100px;left:16px}.skip-link:focus{top:12px}.site-main{flex:1}.site-header{border-bottom:1px solid var(--line);grid-template-columns:1fr auto 1fr;align-items:center;min-height:80px;display:grid;position:relative}.wordmark{font:600 25px var(--display);letter-spacing:-1px;justify-self:start}.desktop-nav{gap:30px;font-size:14px;display:flex}.desktop-nav a{padding-block:12px}.desktop-nav [aria-current],.mobile-nav [aria-current]{color:var(--accent)}.header-tools{flex-shrink:0;justify-self:end;align-items:center;gap:8px;display:flex}.icon-button{min-width:44px;min-height:44px;color:var(--muted);background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;gap:16px;padding:8px;display:inline-flex}.icon-button:hover{background:var(--surface);color:var(--ink)}kbd{font:12px var(--mono);white-space:nowrap}.mobile-toggle,.mobile-nav,.moon-icon,[data-theme=dark] .sun-icon{display:none}[data-theme=dark] .moon-icon{display:block}.site-footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;gap:20px;margin-top:32px;padding:26px 0 30px;font-size:12px;display:flex}.site-footer>div{gap:28px;display:flex}.site-footer a{padding-block:8px}.preview-banner{text-align:center;background:var(--tint);color:var(--accent);padding:8px;font-size:13px}.eyebrow{font:12px/1.5 var(--mono);letter-spacing:1.2px;color:var(--muted);margin-bottom:22px}.section{padding-block:32px 8px}.section-heading{justify-content:space-between;align-items:center;gap:20px;margin-bottom:18px;display:flex}.section-heading>a{color:var(--muted);font-size:13px}.series-grid{display:grid}.series-card{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:24px;padding:18px 0;display:grid}.series-card+.series-card{border-top:1px solid var(--line)}.series-card h3{font-size:19px;font-weight:600;line-height:1.55}.series-card p{color:var(--muted);margin-top:7px;font-size:14px;line-height:1.8}.series-count{color:var(--muted);white-space:nowrap;padding-top:3px;font-size:13px}.card-meta{color:var(--muted);justify-content:space-between;gap:12px;font-size:12px;display:flex}.post-list{padding:0;list-style:none}.post-list>li{padding:22px 0}.post-information{flex:1;min-width:0}.post-title{font-size:20px;font-weight:600}.post-information .post-title a:hover{text-decoration:underline}.post-information>p{color:var(--muted);max-width:790px;margin-top:9px;font-size:14px;line-height:1.85}.post-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:10px;font-size:13px;display:flex}.post-meta>a{text-decoration:underline;text-decoration-color:var(--line)}.post-list time{font:inherit;color:inherit;white-space:nowrap}.page-content{max-width:976px;margin-inline:auto;padding-block:54px 40px}.page-header{margin-bottom:34px}.page-header p{color:var(--muted);margin-top:20px;line-height:1.85}.thoughts-empty p{color:var(--muted);margin-bottom:16px}.thoughts-empty .text-link{align-items:center;min-height:44px;display:inline-flex}.filters{flex-wrap:wrap;gap:12px;margin-bottom:24px;display:flex}.filters a{background:var(--surface);min-height:44px;color:var(--muted);border-radius:6px;padding:9px 15px;font-size:13px}.filters [aria-current]{background:var(--ink);color:var(--bg)}.list-status{color:var(--muted);margin-bottom:10px;font-size:12px}.pagination{flex-wrap:wrap;align-items:center;gap:12px;margin-top:32px;display:flex}.pagination a,.pagination span{border-radius:6px;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:8px;font-size:14px;display:inline-flex}.pagination [aria-current]{background:var(--surface);color:var(--accent)}.series-index-item{border-top:1px solid var(--line);padding:28px 0}.page-header+.series-index-item{border-top:0;padding-top:0}.series-index-item h2{margin:14px 0 10px;font-size:23px}.series-index-item p{color:var(--muted);margin:10px 0;font-size:15px}.series-index-item .section-heading{margin:20px 0 0}.series-index-item .text-link{font-size:14px}.back-link{color:var(--muted);margin-bottom:32px;font-size:13px;display:inline-block}.series-info{color:var(--muted);margin:22px 0;font-size:12px}.reading-guide{background:var(--surface);border-radius:6px;margin:26px 0;padding:22px}.reading-guide h2{font-size:16px}.reading-guide p{color:var(--muted);margin:8px 0;font-size:14px}.reading-guide a{color:var(--accent);font-size:14px}.chapter-list{counter-reset:chapter;padding:0;list-style:none}.chapter-list>li{border-bottom:1px solid var(--line)}.chapter-link{border-radius:8px;align-items:flex-start;gap:24px;margin-inline:-12px;padding:24px 12px;text-decoration:none;transition:none;display:flex}.chapter-link>div{min-width:0}.chapter-link:hover,.chapter-link:focus-visible{color:var(--ink);background:var(--surface);box-shadow:none;text-decoration:none}.chapter-link:focus-visible{outline:none}.chapter-list:has(.chapter-link:focus-visible) .chapter-link:hover:not(:focus-visible){background:0 0}@media (forced-colors:active){.chapter-link:focus-visible{outline-offset:-2px;outline:2px solid highlight}}.about-socials{gap:8px;margin-inline-start:-8px;display:flex}.about-socials .icon-button{color:var(--ink);transition:none}.about-socials .icon-button:focus-visible{background:var(--surface)}.chapter-number{background:var(--surface);min-width:40px;height:40px;color:var(--accent);font:13px var(--mono);border-radius:50%;justify-content:center;align-items:center;margin-top:3px;display:flex}.chapter-list h3{font-size:19px}.chapter-list p{color:var(--muted);margin-top:8px;font-size:14px}.project-row{border-top:1px solid var(--line);grid-template-columns:360px minmax(0,1fr);align-items:start;gap:36px;padding:32px 0;display:grid}.project-cover{aspect-ratio:16/10;background:var(--surface);border-radius:6px;display:block;overflow:hidden}.project-cover img{object-fit:cover;width:100%;height:100%;display:block}.project-row h2{font-size:25px}.project-row p{color:var(--muted);margin:12px 0;line-height:1.85}.project-links{flex-wrap:wrap;gap:22px;margin-top:16px;font-size:13px;display:flex}.project-links a{align-items:center;min-height:44px;display:inline-flex}.study-links{color:var(--accent);gap:16px;margin-top:24px;padding:0;list-style:none;display:grid}.feature-box{background:var(--surface);border-radius:8px;margin:28px 0;padding:26px}.feature-box h2{font-size:22px}.feature-box p{color:var(--muted);margin:12px 0}.tag-list{flex-wrap:wrap;gap:10px;display:flex}.tag-list a,.tag-list span{background:var(--surface);border-radius:5px;align-items:center;min-height:44px;padding:8px 12px;font-size:13px;display:inline-flex}.tag-list a:hover{background:var(--tint)}.reading-grid{grid-template-columns:minmax(0,680px) 230px;gap:80px;padding:48px 40px 40px;display:grid}.article-head h1{font-size:38px;line-height:1.4}.article-head .back-link{color:var(--accent);margin-bottom:24px}.article-byline{color:var(--muted);flex-wrap:wrap;gap:8px 16px;margin-top:24px;font-size:12px;display:flex}.series-progress{border-block:1px solid var(--line);margin:24px 0 28px;padding:12px 0}.series-progress summary{cursor:pointer;justify-content:space-between;align-items:center;gap:16px;min-height:44px;list-style:none;display:flex}.series-progress summary::-webkit-details-marker{display:none}.series-progress [open] summary{margin-bottom:18px}.series-progress summary .current-number{color:var(--accent);font:12px var(--mono);white-space:nowrap}.chapter-selector{gap:10px;margin-top:12px;padding:0;font-size:13px;list-style:none;display:grid}.chapter-selector a{padding:6px;display:block}.chapter-selector [aria-current]{color:var(--accent)}.desktop-toc{border-left:1px solid var(--line);align-self:start;margin-top:148px;padding:0 0 0 24px;font-size:13px;position:sticky;top:32px}.desktop-toc h2{margin-bottom:18px;font-size:13px}.toc-list{gap:12px;padding:0;list-style:none;display:grid}.toc-list a{color:var(--muted);line-height:1.6;display:block}.toc-list a:hover,.toc-list [aria-current]{color:var(--accent)}.toc-list .toc-sub{padding-left:12px;font-size:12px}.toc-top{color:var(--muted);margin-top:24px;font-size:12px;display:inline-block}.mobile-toc{border-bottom:1px solid var(--line);margin:20px 0 28px;padding-bottom:14px;font-size:14px;display:none}.mobile-toc summary{cursor:pointer;min-height:44px;padding:8px 0}.mobile-toc .toc-list{padding-top:16px}.article-end{border-top:1px solid var(--line);margin-top:42px;padding-top:24px}.article-pager{grid-template-columns:1fr 1fr;gap:32px;margin-top:26px;display:grid}.article-pager a{flex-direction:column;gap:8px;font-size:15px;display:flex}.article-pager small{color:var(--muted);font-size:12px}.article-pager a:last-child{grid-column:2}.text-button{color:var(--accent);background:0 0;border:0;min-height:44px;padding:8px 0;font-size:13px}.article-end>.text-button{margin-top:12px}.preview-label{background:var(--tint);color:var(--accent);margin-bottom:20px;padding:12px}.prose{font-size:17px;line-height:1.9}.prose>:first-child{margin-top:0}.prose p{margin:24px 0}.prose h2{margin:54px 0 22px;scroll-margin-top:28px;font-size:25px}.prose h3{margin:36px 0 18px;font-size:21px}.prose h4{margin:30px 0 16px;font-size:18px}.prose h1{margin:34px 0 20px;font-size:30px}.prose ul,.prose ol{margin:20px 0;padding-left:24px}.prose li{margin:8px 0;padding-left:4px}.prose li>p{margin:8px 0}.prose a{color:var(--accent);text-decoration:underline 1px}.prose blockquote{background:var(--tint);border-radius:0 6px 6px 0;margin:28px 0;padding:16px 22px;font-size:16px}.prose blockquote p{margin:8px 0}.prose code{font-family:var(--mono);background:var(--surface);overflow-wrap:anywhere;word-break:break-word;border-radius:4px;padding:2px 5px;font-size:.84em}.prose pre{border:1px solid var(--line);word-break:normal;overflow-wrap:normal;tab-size:2;border-radius:6px;margin:26px 0;padding:22px 24px;line-height:1.8;overflow-x:auto}.prose pre code{word-break:normal;overflow-wrap:normal;background:0 0;padding:0;font-size:13px}.prose pre code .line{white-space:pre}.prose table{border-collapse:collapse;text-align:left;word-break:normal;width:100%;font-size:14px;line-height:1.8}.prose th,.prose td{border-bottom:1px solid var(--line);vertical-align:top;min-width:100px;padding:12px 16px}.prose th{background:var(--surface);font-weight:600}.table-scroll{width:100%;margin:26px 0;overflow-x:auto}.prose img{background:#fff;border-radius:6px;margin:30px auto;display:block}.prose img[src*=mult-racingcar-game-main]{width:auto;max-width:100%;max-height:440px}.prose hr{border:0;border-top:1px solid var(--line);margin:38px 0}.code-wrapper{background:var(--surface);border-radius:6px;margin:26px 0;padding-top:44px;position:relative}.code-wrapper pre{border-top:0;border-radius:0 0 6px 6px;margin:0}.code-copy{min-height:44px;color:var(--muted);font:12px var(--body);background:0 0;border:0;padding:3px 8px;position:absolute;top:0;right:8px}.code-copy:hover{color:var(--accent)}[data-theme=dark] .astro-code,[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}.prose details{border:1px solid var(--line);border-radius:6px;margin:24px 0;padding:16px}.prose details summary{cursor:pointer}.prose video{border-radius:6px;margin:24px 0;display:block}.dialog-open{overflow:hidden}#search-dialog{border:1px solid var(--line);background:var(--bg);width:min(700px,100% - 32px);max-height:85dvh;color:var(--ink);box-shadow:0 20px 90px var(--dialog-shadow);border-radius:10px;padding:28px;overflow-y:auto}#search-dialog[open]{flex-direction:column;display:flex}#search-dialog>:not(#search-results){flex-shrink:0}#search-dialog::backdrop{backdrop-filter:blur(3px);background:#13182077}.search-heading{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.search-heading h2{font-size:20px}.search-field{border:1px solid var(--line);min-height:56px;color:var(--muted);border-radius:6px;align-items:center;gap:14px;padding:4px 14px;display:flex}.search-field:focus-within{border-color:var(--accent);outline:1px solid var(--accent)}.search-field input{width:100%;min-width:0;color:var(--ink);background:0 0;border:0;outline:none;padding:10px 0;font-size:17px}.search-field input::-webkit-search-cancel-button{display:none}#search-status{color:var(--muted);margin-top:22px;font-size:13px}#search-help{margin-top:8px;font-size:14px}#search-results{overscroll-behavior:contain;scrollbar-color:var(--muted) var(--surface);scrollbar-gutter:stable;min-height:0;margin:18px 0;padding:0;list-style:none;overflow-y:auto}#search-results a{border-radius:6px;padding:18px;display:block}#search-results a:focus-visible,#search-results a:hover{background:var(--tint);outline-offset:0;color:var(--ink)}#search-results h3{font-size:17px}#search-results p{color:var(--muted);margin-top:8px;font-size:13px;line-height:1.8}#search-results small{color:var(--accent);margin-top:8px;font-size:12px;display:block}.search-actions{color:var(--accent);align-items:center;gap:20px;font-size:13px;display:flex}.keyboard-help{border-top:1px solid var(--line);color:var(--muted);margin-top:20px;padding-top:18px;font-size:12px}.empty-page{padding:90px 0}.empty-page p{color:var(--muted);margin:24px 0}.empty-page .project-links{color:var(--accent)}@media (width<=1199px){.reading-grid{grid-template-columns:minmax(0,680px);justify-content:center;padding:40px 0}.desktop-toc{display:none}.mobile-toc{display:block}.series-card{padding:20px}.series-card h3{font-size:19px}.page-content{padding-inline:20px}}@media (width<=767px){.container{--page-gutter:24px}.site-header{grid-template-columns:1fr auto;min-height:76px}.desktop-nav{display:none}.mobile-toggle{display:inline-flex}.mobile-nav{top:100%;left:calc(-1 * var(--page-gutter));right:calc(-1 * var(--page-gutter));z-index:10;background:var(--bg);padding:12px var(--page-gutter) 20px;overscroll-behavior:contain;max-height:calc(100dvh - 100%);box-shadow:0 10px 14px var(--menu-shadow);border-bottom:1px solid var(--line);position:absolute;overflow-y:auto}.mobile-nav:not([hidden]){display:grid}.mobile-nav a{padding:12px 0;font-size:16px}.search-shortcut{display:none}.header-tools{gap:0}.wordmark{font-size:23px}.eyebrow{font-size:10px}.section-heading{gap:14px}.section-heading h2{font-size:20px}.section-heading>a{white-space:nowrap;font-size:12px}.series-grid{grid-template-columns:1fr;gap:16px}.series-card{gap:12px;min-height:0;padding:22px}.series-card h3{min-height:0}.post-list>li{flex-wrap:wrap;gap:12px;padding:24px 0}.post-information{flex-basis:100%}.post-information .post-title{font-size:20px}.post-information>p{font-size:14px}.post-list time{font-size:12px}.post-meta{margin-top:12px;font-size:12px}.page-content{padding:36px 0}.page-header h1,h1{font-size:29px}.page-header p{font-size:15px}.filters{gap:8px}.filters a{padding:9px 12px;font-size:12px}.post-list.compact h3{font-size:19px}.chapter-link{gap:16px}.chapter-list h3{font-size:18px}.chapter-list p{font-size:13px}.series-index-item .section-heading{flex-wrap:wrap}.series-index-item h2{font-size:21px}.project-row{grid-template-columns:1fr;gap:24px}.project-links{gap:18px}.feature-box{padding:22px}.feature-box h2{font-size:20px}.reading-grid{padding:30px 0}.article-head h1{font-size:29px;line-height:1.45}.article-byline{gap:8px 12px}.article-head .back-link{font-size:12px}.series-progress{padding:16px}.series-progress summary{font-size:12px}.prose{font-size:16px}.prose h2{margin-top:42px;font-size:23px}.prose h3{font-size:20px}.prose pre{padding:18px 16px}.prose pre code{font-size:12px}.prose blockquote{padding:12px 18px;font-size:15px}.prose th,.prose td{padding:10px 12px}.article-pager{gap:20px}.article-pager a{font-size:14px}.site-footer{margin-top:24px;font-size:12px}.site-footer>div{gap:20px}#search-dialog{max-height:90dvh;padding:20px}.keyboard-help{display:none}.empty-page{padding:60px 0}}@media (width<=379px){.container{--page-gutter:20px}.section-heading{flex-wrap:wrap}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}@media print{.site-header,.site-footer,.desktop-toc,.mobile-toc,.series-progress,.article-end,.code-copy{display:none!important}.container{width:100%}.reading-grid{padding:0;display:block}.prose{font-size:11pt}.prose pre,.prose pre code .line{white-space:pre-wrap}body{color:#000;background:#fff}}.home-series,.home-writing{grid-template-columns:160px minmax(0,1fr);column-gap:64px;display:grid}.home-series{border-bottom:1px solid var(--line);padding:36px 0 32px}.home-writing{padding:36px 0 44px}.home-series .section-heading,.home-writing .section-heading{flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:8px;margin:0;padding-top:18px;display:flex}.home-series .section-heading h2,.home-writing .section-heading h2{font-size:20px;font-weight:600}.home-series .section-heading a,.home-writing .section-heading a{color:var(--muted);font-size:13px}.home-series .series-card:first-child{padding-top:18px}.home-writing .post-information>p{max-width:680px}.home-writing .post-list>li+li{border-top:1px solid var(--line)}.post-meta:empty{display:none}.series-index-item h2{margin-bottom:12px}.series-index-meta{color:var(--muted);flex-wrap:wrap;gap:8px 20px;margin-top:18px;font-size:13px;display:flex}@media (width<=1023px){.home-series,.home-writing{grid-template-columns:1fr;gap:10px}.home-series .section-heading,.home-writing .section-heading{flex-direction:row;justify-content:space-between;align-items:center;padding-top:0}}@media (width<=767px){.home-series{padding:28px 0 20px}.home-writing{padding:24px 0 32px}.series-card{gap:16px;padding:18px 0}.series-card h3{font-size:18px}.series-card p{margin-top:5px;font-size:13px}.series-count{font-size:12px}.home-writing .post-title{font-size:19px;line-height:1.55}.home-writing .post-list>li{padding:20px 0}.post-meta,.post-list time{font-size:12px}.series-progress{padding:10px 0}}@media (hover:hover) and (pointer:fine){.series-card:hover h3{text-underline-offset:5px;text-decoration:underline 1px}.post-title a:hover,.text-link:hover{text-decoration:underline}}@media (prefers-reduced-motion:no-preference){.icon-button{transition:color .15s,background-color .15s,transform .12s cubic-bezier(.23,1,.32,1)}.icon-button:active:not(:focus-visible){transform:scale(.97)}}::selection{background:var(--tint);color:var(--ink)}input{caret-color:var(--accent)}.table-scroll{scrollbar-color:var(--muted) var(--surface)}.prose td,.prose th,time{font-variant-numeric:tabular-nums}.series-index-item .text-link,.feature-box>.text-link,.page-content>.text-link,.chapter-selector a,.mobile-toc .toc-list a{align-items:center;min-height:44px;display:flex}.series-card{align-items:center;gap:32px;padding:24px 0}.series-card h3{text-wrap:balance;font-size:22px;font-weight:650;line-height:1.5}.series-card p{margin-top:8px}.series-card .series-count{margin-top:8px;padding:0;font-size:12px;display:block}.series-index-visual{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:40px;display:grid}.series-index-visual h2,.article-head h1,.page-header h1,.prose h2,.prose h3{text-wrap:balance}.code-language{height:44px;color:var(--muted);align-items:center;font-size:12px;display:flex;position:absolute;top:0;left:16px}@media (width<=767px){.series-card{grid-template-columns:minmax(0,1fr) 104px;gap:16px;padding:20px 0}.series-card h3{text-wrap:wrap;font-size:18px}.series-card p{min-height:3.6em;margin-top:6px;font-size:13px}.series-card .series-count{margin-top:6px}.series-artwork{width:104px}.series-index-visual{gap:20px}}@media (width<=374px){.series-card{grid-template-columns:minmax(0,1fr) 88px;gap:12px}.series-artwork{width:88px}}.series-index-visual{grid-template-columns:minmax(0,1fr) 208px;row-gap:0}.series-index-visual>div{display:contents}.series-index-visual h2{grid-area:1/1}.series-index-visual p{grid-area:2/1}.series-index-visual .series-index-meta{grid-area:3/1}.series-index-visual>a{grid-area:1/2/4}@media (width<=767px){.series-artwork .art-label{display:none}.series-index-visual{grid-template-columns:minmax(0,1fr) 104px;gap:12px 16px}.series-index-visual h2{grid-column:1/-1;margin-bottom:0}.series-index-visual>a{grid-row:2}.series-index-visual .series-index-meta{grid-column:1/-1;margin-top:4px}}.visual-artwork{aspect-ratio:8/5;background:var(--surface);border-radius:6px;width:208px;overflow:hidden}.visual-artwork img{object-fit:cover;width:100%;height:100%;display:block}.post-list>.post-with-art{grid-template-columns:minmax(0,1fr) 208px;align-items:center;gap:32px;display:grid}.post-with-art .post-title{text-wrap:balance}@media (width<=767px){.visual-artwork{width:104px}.post-list>.post-with-art,.series-card{grid-template-columns:minmax(0,1fr) 104px;gap:8px 20px}.post-with-art .post-information,.series-card-copy{display:contents}.post-with-art .post-title,.series-card h3{text-wrap:balance;grid-area:1/1/auto/-1}.post-with-art .post-information>p,.series-card p{grid-area:2/1;min-height:3.6em;margin-top:0}.post-with-art .post-meta,.series-card .series-count{grid-area:3/1;margin-top:0}.post-with-art .post-art-link,.series-card .visual-artwork{grid-area:2/2/4;align-self:center}}@media (width<=374px){.post-list>.post-with-art,.series-card{grid-template-columns:minmax(0,1fr) 88px;column-gap:16px}.visual-artwork{width:88px}}.post-art-link{border-radius:6px;display:block}@media (width<=767px){.post-art-compact .post-meta,.post-art-compact .post-art-link{grid-row:2}}.desktop-nav a,.mobile-nav a{color:var(--muted);font-weight:400;text-decoration:none}.desktop-nav [aria-current],.mobile-nav [aria-current]{color:var(--ink);font-weight:600;text-decoration:none}.desktop-nav a:hover,.mobile-nav a:hover,.desktop-nav a:focus-visible,.mobile-nav a:focus-visible{color:var(--ink);text-decoration:none}.prose a{color:var(--ink);text-decoration-color:var(--muted)}.prose a:hover{text-decoration-color:var(--ink);text-decoration-thickness:2px}.compact-article-head{margin-bottom:28px}.article-context{color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 24px;margin-top:16px;font-size:13px;line-height:1.8;display:flex}.article-series-toggle{min-height:44px;color:var(--ink);font:inherit;cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;gap:8px;margin-left:auto;padding:8px 0 8px 12px;display:inline-flex}.article-series-toggle:hover span{text-decoration:none}.article-series-toggle svg{width:14px;height:14px}.article-series-toggle[aria-expanded=true] svg{transform:rotate(180deg)}.article-series-panel{border-top:1px solid var(--line);margin-top:12px;padding-top:20px}.article-series-panel h2{margin:0;font-size:15px;font-weight:600;line-height:1.6}.article-series-panel h2 a:hover{text-decoration:none}.article-series-panel .chapter-selector{gap:2px}.article-series-panel .chapter-selector a{border-radius:4px;padding:10px 12px;line-height:1.7;text-decoration:none}.article-series-panel .chapter-selector a:hover{background:var(--surface);color:var(--ink);text-decoration:none}.article-series-panel .chapter-selector [aria-current]{background:var(--surface);color:var(--ink);font-weight:600;text-decoration:none}.post-information .post-title a:hover,.series-card:hover h3,.series-index-item h2 a:hover,.project-row h2 a:hover,.article-pager a:hover,.article-series-panel h2 a:hover,.article-series-toggle:hover span,.desktop-nav a:hover:not([aria-current]),.mobile-nav a:hover:not([aria-current]){text-decoration:none}@media (hover:hover) and (pointer:fine){.post-information .post-title a:hover,.post-with-art:has(.post-art-link:hover) .post-title a,.series-card:hover h3,.series-index-item h2 a:hover,.project-row h2 a:hover,.article-pager a:hover,.article-series-panel h2 a:hover,.article-series-toggle:hover{opacity:.78}}.post-title a:focus-visible,.series-card:focus-visible h3,.article-series-toggle:focus-visible{opacity:1}@media (prefers-reduced-motion:no-preference){.post-title a,.series-card h3,.series-index-item h2 a,.project-row h2 a,.article-pager a,.article-series-panel h2 a,.article-series-toggle{transition:opacity .14s ease-out}}#search-results a{transition:none}#search-results a,#search-results a:hover,#search-results a:focus-visible{box-shadow:none;text-decoration:none}#search-results a:hover,#search-results a:focus-visible{background:var(--surface);color:var(--ink)}#search-results a:focus-visible{outline:none}#search-results:has(a:focus-visible) a:hover:not(:focus-visible){background:0 0}@media (forced-colors:active){#search-results a:focus-visible{outline-offset:-2px;outline:2px solid highlight}}.reading-grid{grid-template-columns:minmax(0,760px);justify-content:center;column-gap:0;padding-inline:0}.article-context{min-height:44px}.article-head:has(.article-cover){margin-bottom:36px}.article-cover{border:0;margin:24px 0 0;padding:0}.article-cover a{cursor:zoom-in;border-radius:8px;display:block;overflow:hidden}.article-cover a:focus-visible{outline:2px solid var(--ink);outline-offset:5px}.article-cover picture,.article-cover img{width:100%;height:auto;display:block}@media (width<=767px){.article-head:has(.article-cover){margin-bottom:28px}.article-cover{margin-top:20px}.article-cover a{border-radius:5px}}#search-dialog{inset:var(--search-viewport-top,0px) 0 auto;height:min(720px, calc(var(--search-viewport-height,100dvh) - clamp(12px, 6dvh, 56px) - 16px));max-height:none;margin:clamp(12px,6dvh,56px) auto 0;position:fixed;overflow-y:auto}#search-dialog>#search-results{flex:1 1 0;min-height:48px}@media (width<=767px){#search-dialog{height:calc(var(--search-viewport-height,100dvh) - 24px);margin-top:12px}}
