@font-face{font-family:pretendard;src:url(/_next/static/media/22d3ba4eeb94559f-s.woff2) format("woff2");font-display:optional;font-weight:45 920}@font-face{font-family:pretendard Fallback;src:local("Arial");ascent-override:93.76%;descent-override:23.75%;line-gap-override:0.00%;size-adjust:101.55%}.__className_4d37d1{font-family:pretendard,pretendard Fallback}.__variable_4d37d1{--font-pretendard:"pretendard","pretendard Fallback"}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-mono-cyrillic-ext-400-normal.66a2e865.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-cyrillic-ext-400-normal.88f8fd5b.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-mono-cyrillic-400-normal.651bc97e.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-cyrillic-400-normal.9533b520.woff) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-mono-vietnamese-400-normal.110e2a76.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-vietnamese-400-normal.7d495472.woff) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-mono-latin-ext-400-normal.9faee8e8.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-latin-ext-400-normal.f14ffb91.woff) format("woff");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-mono-latin-400-normal.06ac09dc.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-latin-400-normal.e32cf7a4.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/ibm-plex-mono-cyrillic-ext-600-normal.236eb3ca.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-cyrillic-ext-600-normal.82fdc3fb.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/ibm-plex-mono-cyrillic-600-normal.d0a72cc7.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-cyrillic-600-normal.e76cfc9a.woff) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/ibm-plex-mono-vietnamese-600-normal.a7123274.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-vietnamese-600-normal.60383d45.woff) format("woff");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/ibm-plex-mono-latin-ext-600-normal.41138a44.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-latin-ext-600-normal.bd68feb5.woff) format("woff");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_next/static/media/ibm-plex-mono-latin-600-normal.422bb707.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-latin-600-normal.0dcad33c.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer theme{:host,:root{--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components,utilities;:root{--page:#f1f3f1;--surface:#f7f8f7;--surface-strong:#e7ece8;--text:#102a23;--text-muted:#53615c;--text-tertiary:#606a65;--accent:#0b6847;--accent-contrast:#f2f7f4;--border:#d3d9d5;--border-control:#7a857f;--diagram-canvas:#fff;--dialog-scrim:#060807c7;--shadow:0 18px 60px #102a2314;--focus:#0b6847;--radius-card:14px;--radius-control:999px}:root[data-theme=dark]{--page:#111412;--surface:#191c1a;--surface-strong:#232725;--text:#eef1ef;--text-muted:#a7ada9;--text-tertiary:#858d88;--accent:#53b88a;--accent-contrast:#0b1511;--border:#343a37;--border-control:#626b66;--diagram-canvas:#f4f6f5;--dialog-scrim:#050706d1;--shadow:0 18px 60px #00000038;--focus:#72cea0}*{box-sizing:border-box}html{scroll-behavior:smooth}body,html{background:var(--page);color:var(--text)}body{min-width:320px;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-family:system-ui,sans-serif}@media (min-width:561px){body{font-family:var(--font-pretendard),"Pretendard Variable",Pretendard,system-ui,sans-serif}}a{color:inherit;text-decoration:none}a,button{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--focus);outline-offset:4px}::selection{background:var(--accent)}@supports (color:color-mix(in lab,red,red)){::selection{background:color-mix(in srgb,var(--accent) 24%,transparent)}}.content-reveal{animation:content-reveal var(--reveal-duration,.45s) var(--reveal-easing,cubic-bezier(.16,1,.3,1)) var(--reveal-delay,0s) both}@keyframes content-reveal{0%{transform:translateY(8px)}to{transform:translateY(0)}}.site-header{z-index:30;border-bottom:1px solid var(--border);position:sticky;top:0}@supports (color:color-mix(in lab,red,red)){.site-header{border-bottom:1px solid color-mix(in srgb,var(--border) 72%,transparent)}}.site-header{background:var(--page)}@supports (color:color-mix(in lab,red,red)){.site-header{background:color-mix(in srgb,var(--page) 88%,transparent)}}.site-header{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.site-header__inner{justify-content:space-between;align-items:center;max-width:1240px;min-height:64px;margin:0 auto;padding:0 40px;display:flex}.brand-mark{letter-spacing:-.06em;margin:0;font-size:25px;font-weight:800}.desktop-nav,.mobile-actions{align-items:center;gap:28px;display:flex}.desktop-nav a,.footer-link,.mobile-nav a{min-height:44px;color:var(--text);align-items:center;gap:6px;font-size:14px;font-weight:550;display:inline-flex}.desktop-nav a{position:relative}.desktop-nav a:after{background:var(--accent);content:"";transform-origin:100%;height:1px;transition:transform .22s;position:absolute;bottom:5px;left:0;right:0;transform:scaleX(0)}.desktop-nav a:hover:after{transform-origin:0;transform:scaleX(1)}.icon-button{border:1px solid var(--border-control);border-radius:var(--radius-control);background:var(--surface);width:44px;height:44px;color:var(--text);cursor:pointer;place-items:center;padding:0;transition:transform .18s,border-color .18s,background .18s;display:inline-grid}.icon-button:hover{border-color:var(--accent);background:var(--surface-strong)}.icon-button:active{transform:scale(.97)}.mobile-actions,.mobile-nav,.theme-icon--sun,:root[data-theme=dark] .theme-icon--moon{display:none}:root[data-theme=dark] .theme-icon--sun{display:block}.site-footer{border-top:1px solid var(--border);max-width:1240px;margin:0 auto;padding:12px 40px 10px}.site-footer__grid{grid-template-columns:1.4fr .9fr .9fr 1.2fr;align-items:start;gap:32px;display:grid}.footer-copy,.footer-handle,.footer-heading,.footer-statement{margin:6px 0 0}.footer-copy,.footer-handle,.footer-link,.footer-statement{color:var(--text-muted);font-size:13px;line-height:1.7}.footer-heading{font-size:13px;font-weight:700}.footer-link:hover{color:var(--accent)}.site-footer .footer-link{overflow-wrap:anywhere;width:fit-content;display:flex}.site-footer .footer-link+.footer-link{margin-top:4px}@media (max-width:767px){.site-header__inner{min-height:64px;padding:0 20px}.desktop-nav{display:none}.mobile-actions{gap:8px;display:flex}.mobile-menu>summary{list-style:none}.mobile-menu>summary::-webkit-details-marker{display:none}.mobile-nav{background:var(--page);padding:8px 20px 16px;display:grid;position:absolute;top:64px;left:0;right:0}.mobile-nav,.mobile-nav a{border-bottom:1px solid var(--border)}.mobile-nav a{justify-content:space-between}.site-footer{padding:28px 20px 40px}.site-footer__grid{grid-template-columns:1fr 1fr;gap:28px 20px}.footer-statement{grid-column:1/-1}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.article-shell,.blog-shell{max-width:1120px;min-height:70dvh;margin:0 auto;padding:88px 40px 48px}.blog-hero{max-width:850px;padding-bottom:72px}.blog-hero>p{color:var(--accent);letter-spacing:.12em;text-transform:uppercase;margin:0 0 18px;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600}.article-header h1,.blog-hero h1{letter-spacing:-.065em;text-wrap:balance;margin:0;font-size:clamp(44px,6.5vw,78px);font-weight:760;line-height:1.08}.article-header>p,.blog-hero>span{max-width:650px;color:var(--text-muted);margin-top:24px;font-size:17px;line-height:1.7;display:block}.post-row__tags,.tag-filter{flex-wrap:wrap;gap:7px;display:flex}.tag-filter{border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:22px 0}.post-row__tags span,.tag-filter span{border:1px solid var(--border);border-radius:var(--radius-control);min-height:30px;color:var(--text-muted);align-items:center;padding:4px 11px;font-family:IBM Plex Mono,monospace;font-size:10px;display:inline-flex}.post-list{margin-top:32px}.post-row{border-bottom:1px solid var(--border);grid-template-columns:160px minmax(0,1fr) 44px;align-items:start;gap:32px;min-height:220px;padding:36px 0;display:grid}.article-header__meta,.post-row__meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:8px 14px;font-family:IBM Plex Mono,monospace;font-size:11px;display:flex}.post-row__meta{flex-direction:column;align-items:start}.article-header__meta strong,.post-row__meta strong{color:var(--accent);font-weight:600}.post-row h2{letter-spacing:-.045em;margin:0;font-size:clamp(26px,3.4vw,38px);font-weight:730;line-height:1.2}.post-row h2 a:hover{color:var(--accent)}.post-row p{max-width:650px;color:var(--text-muted);margin:14px 0 20px;font-size:15px;line-height:1.7}.post-row__arrow{border:1px solid var(--border-control);border-radius:var(--radius-control);place-items:center;width:44px;height:44px;transition:transform .18s,border-color .18s,color .18s;display:grid}.post-row__arrow:hover{border-color:var(--accent);color:var(--accent);transform:translate(2px)}.blog-empty{text-align:center;align-content:center;place-items:center;min-height:340px;padding:48px 24px;display:grid}.blog-empty h1,.blog-empty h2{letter-spacing:-.05em;margin:0;font-size:clamp(30px,4vw,48px)}.blog-empty p{color:var(--text-muted);margin:14px 0 0}.blog-empty--page{min-height:65dvh}.article-back{min-height:44px;color:var(--text-muted);align-items:center;gap:8px;margin-bottom:48px;font-size:13px;font-weight:620;display:inline-flex}.article-back:hover{color:var(--accent)}.article-header{border-bottom:1px solid var(--border);max-width:880px;padding-bottom:56px}.article-header__meta{margin-bottom:24px}.article-header h1{font-size:clamp(42px,6vw,72px)}.article-header .post-row__tags{margin-top:24px}.article-layout{grid-template-columns:minmax(0,720px) 180px;align-items:start;gap:72px;margin-top:64px;display:grid}.prose{min-width:0}.prose h2{letter-spacing:-.04em;margin:64px 0 18px;scroll-margin-top:104px;font-size:clamp(26px,3.6vw,36px);font-weight:730}.prose h2:first-child{margin-top:0}.prose h3{letter-spacing:-.03em;margin:42px 0 14px;font-size:23px}.prose blockquote,.prose li,.prose p{color:var(--text-muted);word-break:keep-all;font-size:17px;line-height:1.9}.prose p{margin:0 0 24px}.prose strong{color:var(--text);font-weight:720}.prose a{color:var(--accent);text-underline-offset:4px;text-decoration:underline}.prose ol,.prose ul{gap:10px;margin:0 0 28px;padding-left:24px;display:grid}.prose blockquote{border-left:3px solid var(--accent);margin:36px 0;padding:8px 0 8px 24px}.prose pre{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface);max-width:100%;margin:32px 0;padding:22px;font-size:13px;line-height:1.75;overflow-x:auto}.prose :not(pre)>code,.prose pre{color:var(--text);font-family:IBM Plex Mono,monospace}.prose :not(pre)>code{background:var(--surface-strong);border-radius:5px;padding:2px 6px;font-size:.88em}.prose img{border:1px solid var(--border);border-radius:var(--radius-card);width:100%;height:auto;margin:36px 0}.toc{gap:12px;display:grid;position:sticky;top:104px}.toc>p{color:var(--text);margin:0 0 4px;font-weight:700}.toc a,.toc>p{font-size:12px}.toc a{color:var(--text-muted);line-height:1.5}.toc a:hover{color:var(--accent)}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (max-width:819px){.article-shell,.blog-shell{padding-left:24px;padding-right:24px}.article-layout{grid-template-columns:1fr}.toc{display:none}}@media (max-width:600px){.article-shell,.blog-shell{padding:56px 20px 32px}.blog-hero{padding-bottom:52px}.blog-hero h1{font-size:clamp(39px,12vw,54px)}.article-header>p,.blog-hero>span{font-size:15px}.post-row{grid-template-columns:minmax(0,1fr) 44px;gap:18px;min-height:0;padding:32px 0}.post-row__meta{flex-direction:row;grid-column:1/-1}.post-row h2{font-size:28px}.article-back{margin-bottom:34px}.article-header{padding-bottom:44px}.article-layout{margin-top:48px}.prose blockquote,.prose li,.prose p{font-size:16px;line-height:1.82}}