:root,[data-theme=dark]{--bg-000:#0d0b0b;--bg-100:#151313;--bg-200:#1d1b1b;--bg-300:#272424;--line-100:#2f2c2b;--line-200:#757070;--ink-100:#ffffff;--ink-200:#d8d4d3;--ink-300:#a29d9b;--ink-400:#918c8a;--on-ink:#0d0b0b;--focus-ring:#ffffff;--glass-fill:rgba(13,11,11,0.62);--glass-fill-fallback:rgba(21,19,19,0.94);--glass-edge:rgba(255,255,255,0.16);--glass-sheen:rgba(255,255,255,0.10);--scrim:rgba(13,11,11,0.72);--ok:#7cc4b8;--ok-tint:rgba(124,196,184,0.12);--warn:#e0b25c;--warn-tint:rgba(224,178,92,0.12);--danger:#f0956b;--danger-tint:rgba(240,149,107,0.12);--info:#9db6d6;--info-tint:rgba(157,182,214,0.12);--chart-1:var(--ink-100);--chart-2:#9db6d6;--chart-3:#cfa96e;--chart-4:#7d7876;--shadow-glass:inset 0 1px 0 rgba(255,255,255,0.10);--shadow-float:0 24px 48px -12px rgba(0,0,0,0.6),inset 0 1px 0 rgba(255,255,255,0.10)}:root{--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--space-12:48px;--space-16:64px;--space-24:96px;--space-40:160px;--radius-0:0;--radius-sm:4px;--radius-md:8px;--radius-pill:999px;--blur-glass:16px;--blur-glass-strong:28px;--grain-surface:0.06;--grain-glass:0.04;--disabled:0.4;--font-display:"Instrument Serif","MaruBuri","Noto Serif KR",serif;--font-sans:"Pretendard","Apple SD Gothic Neo","Noto Sans KR",system-ui,sans-serif;--font-mono:"IBM Plex Mono","Pretendard",ui-monospace,monospace}@font-face{font-family:Pretendard;src:url(/fonts/Pretendard-Regular.subset.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Pretendard;src:url(/fonts/Pretendard-Medium.subset.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Pretendard;src:url(/fonts/Pretendard-SemiBold.subset.woff2) format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Pretendard;src:url(/fonts/Pretendard-Bold.subset.woff2) format("woff2");font-weight:700;font-display:swap}@font-face{font-family:"Instrument Serif";src:url(/fonts/InstrumentSerif-Regular.latin.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"Instrument Serif";src:url(/fonts/InstrumentSerif-Italic.latin.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:MaruBuri;src:url(/fonts/MaruBuri-Light.woff2) format("woff2");font-weight:300;font-display:swap}@font-face{font-family:MaruBuri;src:url(/fonts/MaruBuri-Regular.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:MaruBuri;src:url(/fonts/MaruBuri-SemiBold.woff2) format("woff2");font-weight:600;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/IBMPlexMono-Regular.latin.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/IBMPlexMono-Medium.latin.woff2) format("woff2");font-weight:500;font-display:swap}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }
/* ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com */*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--font-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.right-2{right:.5rem}.z-50{z-index:50}.m-0{margin:0}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.-mb-px{margin-bottom:-1px}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-2{height:.5rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-\[18px\]{height:18px}.h-full{height:100%}.h-px{height:1px}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.min-h-\[96px\]{min-height:96px}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-2{width:.5rem}.w-4{width:1rem}.w-8{width:2rem}.w-\[18px\]{width:18px}.w-full{width:100%}.w-px{width:1px}.min-w-8{min-width:2rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-progress{cursor:progress}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-none{list-style-type:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-6{gap:1.5rem}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.whitespace-nowrap{white-space:nowrap}.rounded-md{border-radius:var(--radius-md)}.rounded-pill{border-radius:var(--radius-pill)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-t{border-top-width:1px}.border-border{border-color:var(--line-100)}.border-input{border-color:var(--line-200)}.border-transparent{border-color:transparent}.bg-\[var\(--glass-edge\)\]{background-color:var(--glass-edge)}.bg-background{background-color:var(--bg-000)}.bg-border{background-color:var(--line-100)}.bg-card{background-color:var(--bg-100)}.bg-danger-tint{background-color:var(--danger-tint)}.bg-destructive{background-color:var(--danger)}.bg-info-tint{background-color:var(--info-tint)}.bg-ink-1{background-color:var(--ink-100)}.bg-muted{background-color:var(--bg-200)}.bg-ok-tint{background-color:var(--ok-tint)}.bg-primary{background-color:var(--ink-100)}.bg-secondary{background-color:var(--bg-300)}.bg-surface-1{background-color:var(--bg-100)}.bg-surface-2{background-color:var(--bg-200)}.bg-surface-3{background-color:var(--bg-300)}.bg-transparent{background-color:transparent}.bg-warn-tint{background-color:var(--warn-tint)}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pl-2{padding-left:.5rem}.pr-8{padding-right:2rem}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[22px\]{font-size:22px}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-\[30px\]{line-height:30px}.tracking-\[-0\.01em\]{letter-spacing:-.01em}.tracking-\[0\.01em\]{letter-spacing:.01em}.tracking-\[0\.14em\]{letter-spacing:.14em}.text-card-foreground{color:var(--ink-200)}.text-current{color:currentColor}.text-danger{color:var(--danger)}.text-destructive-foreground{color:var(--on-ink)}.text-info{color:var(--info)}.text-ink-1{color:var(--ink-100)}.text-ink-2{color:var(--ink-200)}.text-ink-3{color:var(--ink-300)}.text-ink-4{color:var(--ink-400)}.text-muted-foreground{color:var(--ink-300)}.text-ok{color:var(--ok)}.text-primary-foreground{color:var(--on-ink)}.text-secondary-foreground{color:var(--ink-100)}.text-warn{color:var(--warn)}.no-underline{text-decoration-line:none}.underline-offset-4{text-underline-offset:4px}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-float{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-float{--tw-shadow:var(--shadow-float);--tw-shadow-colored:var(--shadow-float)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-wsl{transition-timing-function:cubic-bezier(.2,0,0,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.fade-in{--tw-enter-opacity:0}.duration-200{animation-duration:.2s}.ease-wsl{animation-timing-function:cubic-bezier(.2,0,0,1)}.\!running{animation-play-state:running!important}.running{animation-play-state:running}.\[transition-duration\:120ms\]{transition-duration:.12s}:root{--font-display-ko:"MaruBuri","Noto Serif KR",serif}html{scroll-padding-top:96px}body{margin:0;background:var(--bg-000)}a{color:var(--ink-100)}.site,a:hover{color:var(--ink-200)}.site{background:var(--bg-000);font-family:var(--font-sans);word-break:keep-all;position:relative}.site-header nav a.nav-link{color:var(--ink-300);text-decoration:none}.site-header nav a.nav-link:hover,.site-header nav a.nav-link[aria-current=page]{color:var(--ink-100)}.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line-100)}.hero-inner{position:relative;z-index:1;max-width:1280px;margin:0 auto;padding:96px 32px 48px;box-sizing:border-box}.hero-copy{display:flex;flex-direction:column;gap:32px;max-width:640px}.hero-scene{position:relative;height:440px}.hero-hint{display:none}.closing-scene{position:relative;height:380px;border-bottom:1px solid var(--line-100)}@media (min-width:1024px){.hero{min-height:860px}.hero-inner{padding:200px 32px 160px;pointer-events:none}.hero-inner a,.hero-inner button{pointer-events:auto}.hero-copy{max-width:600px}.hero-scene{position:absolute;inset:0;height:auto}.hero-hint{display:block;position:absolute;right:32px;bottom:28px;z-index:1;margin:0;font-family:var(--font-mono);font-size:12px;color:var(--ink-400)}.closing-scene{height:560px}}@keyframes wsl-rise{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}@keyframes wsl-fade{0%{opacity:0}to{opacity:1}}.rise{animation:wsl-rise 1.2s cubic-bezier(.2,0,0,1) both;animation-delay:var(--d,0s)}.fade{animation:wsl-fade 1.6s cubic-bezier(.2,0,0,1) both;animation-delay:var(--d,0s)}.kinetic{overflow:hidden;border-bottom:1px solid var(--line-100);padding:72px 0}.kinetic-row{white-space:nowrap;font-family:var(--font-display);font-weight:400;font-size:clamp(56px,9vw,136px);line-height:1.02;letter-spacing:-.02em}.field{transition:background-color .4s cubic-bezier(.2,0,0,1)}.field:hover{background:var(--bg-100)}.project{transition:background-color .4s cubic-bezier(.2,0,0,1)}.project h3{transition:transform .6s cubic-bezier(.2,0,0,1)}.project .go{opacity:0;transform:translateX(-8px);transition:opacity .4s cubic-bezier(.2,0,0,1),transform .6s cubic-bezier(.2,0,0,1)}.project:hover h3{transform:translateX(12px)}.project:hover .go{opacity:1;transform:none}.post{display:flex;flex-direction:column;gap:20px;text-decoration:none}.post,.post:hover{color:inherit}.cover{position:relative;aspect-ratio:16/10;border:1px solid var(--line-100);border-radius:8px;background:var(--bg-100);overflow:hidden;display:flex;align-items:center;justify-content:center;color:var(--ink-100);transition:border-color .4s cubic-bezier(.2,0,0,1)}.cover-label{position:absolute;left:16px;top:14px;font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--ink-300)}.cover-no{position:absolute;right:16px;bottom:10px;font-family:var(--font-display);font-size:40px;line-height:1;color:var(--ink-400)}.cover-glyph{transition:transform .7s cubic-bezier(.2,0,0,1)}.post h3{transition:color .3s cubic-bezier(.2,0,0,1)}.post:hover .cover{border-color:var(--line-200)}.post:hover .cover-glyph{transform:scale(1.08)}.post:hover h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}.post:focus-visible{outline:2px solid var(--focus-ring);outline-offset:4px;border-radius:8px}.lead{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,460px),1fr));gap:24px 48px;align-items:center}.lead .cover{aspect-ratio:16/9}.list-row{display:grid;grid-template-columns:120px minmax(0,1fr) 160px;gap:24px;align-items:baseline;padding:24px 0;border-bottom:1px solid var(--line-100);text-decoration:none}.list-row,.list-row:hover{color:inherit}.list-row:hover h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}@media (max-width:720px){.list-row{grid-template-columns:1fr;gap:8px}}.article-prose{font-size:18px;line-height:32px;color:var(--ink-200)}.article-prose p{margin:0 0 28px}.article-prose h2{margin:72px 0 24px;font-family:var(--font-display-ko);font-weight:400;font-size:40px;line-height:1.15;letter-spacing:-.01em}.article-prose h2,.article-prose h3{color:var(--ink-100);scroll-margin-top:96px}.article-prose h3{margin:40px 0 16px;font-size:22px;line-height:30px;font-weight:600}.article-prose strong{color:var(--ink-100);font-weight:600}.article-prose li a,.article-prose p a{color:var(--ink-100);text-decoration:underline;text-underline-offset:4px}.article-prose ul{margin:0 0 28px;padding-left:22px;list-style:disc}.article-prose li{margin:0 0 10px;padding-left:4px}.article-prose code{font-family:var(--font-mono);font-size:15px;background:var(--bg-200);border:1px solid var(--line-100);border-radius:4px;padding:1px 6px;color:var(--ink-100)}.toc a{display:block;padding:6px 0 6px 14px;border-left:1px solid var(--line-100);font-size:13px;line-height:20px;color:var(--ink-400);text-decoration:none;transition:color .2s cubic-bezier(.2,0,0,1),border-color .2s cubic-bezier(.2,0,0,1)}.toc a:hover{color:var(--ink-200)}.toc a.on{color:var(--ink-100);border-left-color:var(--ink-100)}.toc a.sub{padding-left:28px}.article-layout{display:grid;grid-template-columns:220px minmax(0,680px);gap:80px;justify-content:center}.toc-wrap{position:sticky;top:104px;align-self:start}@media (max-width:1040px){.article-layout{grid-template-columns:minmax(0,680px)}.toc-wrap{position:static}}.flow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border:1px solid var(--line-100);border-radius:8px;overflow:hidden}.flow>div{padding:20px 18px;border-right:1px solid var(--line-100);display:flex;flex-direction:column;gap:10px;background:var(--bg-100)}.flow>div:last-child{border-right:0}@media (max-width:720px){.flow{grid-template-columns:1fr 1fr}.flow>div:nth-child(2){border-right:0}.flow>div:nth-child(-n+2){border-bottom:1px solid var(--line-100)}}.rel{display:flex;flex-direction:column;gap:16px;text-decoration:none}.rel,.rel:hover{color:inherit}.rel .cover{aspect-ratio:16/10}.rel:hover .cover{border-color:var(--line-200)}.rel:hover h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}@media (prefers-reduced-motion:reduce){.fade,.rise{animation:none}.cover,.cover-glyph,.field,.post h3,.project .go,.project h3,.toc a{transition:none}.project .go{opacity:1;transform:none}}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:text-ink-1::file-selector-button{color:var(--ink-100)}.placeholder\:text-ink-4::-moz-placeholder{color:var(--ink-400)}.placeholder\:text-ink-4::placeholder{color:var(--ink-400)}.hover\:border-ink-3:hover{border-color:var(--ink-300)}.hover\:border-line-2:hover{border-color:var(--line-200)}.hover\:bg-accent:hover{background-color:var(--bg-300)}.hover\:bg-ink-2:hover{background-color:var(--ink-200)}.hover\:bg-surface-2:hover{background-color:var(--bg-200)}.hover\:bg-surface-3:hover{background-color:var(--bg-300)}.hover\:text-ink-1:hover{color:var(--ink-100)}.hover\:text-ink-2:hover{color:var(--ink-200)}.hover\:underline:hover{text-decoration-line:underline}.hover\:brightness-110:hover{--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus\:bg-surface-3:focus{background-color:var(--bg-300)}.focus-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--focus-ring)}.active\:translate-y-px:active{--tw-translate-y:1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-\[var\(--disabled\)\]:disabled{opacity:var(--disabled)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-\[var\(--disabled\)\]{opacity:var(--disabled)}.aria-\[invalid\=true\]\:border-danger[aria-invalid=true]{border-color:var(--danger)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom],.data-\[side\=top\]\:-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x:1.25rem}.data-\[state\=checked\]\:translate-x-5[data-state=checked],.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:0px}.data-\[state\=active\]\:border-ink-1[data-state=active],.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--ink-100)}.data-\[state\=checked\]\:bg-ink-on[data-state=checked]{background-color:var(--on-ink)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--ink-100)}.data-\[state\=selected\]\:bg-surface-3[data-state=selected]{background-color:var(--bg-300)}.data-\[state\=unchecked\]\:bg-ink-3[data-state=unchecked]{background-color:var(--ink-300)}.data-\[state\=unchecked\]\:bg-surface-2[data-state=unchecked]{background-color:var(--bg-200)}.data-\[placeholder\]\:text-ink-4[data-placeholder]{color:var(--ink-400)}.data-\[state\=active\]\:text-ink-1[data-state=active]{color:var(--ink-100)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--on-ink)}.data-\[disabled\]\:opacity-\[var\(--disabled\)\][data-disabled]{opacity:var(--disabled)}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}.motion-reduce\:transition-none{transition-property:none}}.\[\&\>span\]\:truncate>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\[\&\>svg\]\:mt-1>svg{margin-top:.25rem}.\[\&\>svg\]\:text-danger>svg{color:var(--danger)}.\[\&\>svg\]\:text-info>svg{color:var(--info)}.\[\&\>svg\]\:text-ink-1>svg{color:var(--ink-100)}.\[\&\>svg\]\:text-ok>svg{color:var(--ok)}.\[\&\>svg\]\:text-warn>svg{color:var(--warn)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}*,.\[\&_tr\]\:border-border tr,:after,:before{border-color:var(--line-100)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}body,html{background:var(--bg-000);color:var(--ink-200);font-family:var(--font-sans);margin:0}body{-webkit-font-smoothing:antialiased}.wsl-row{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}.wsl-stack{display:flex;flex-direction:column;gap:var(--space-4)}.wsl-glass{background:var(--glass-fill);backdrop-filter:blur(var(--blur-glass)) saturate(1.1);border:1px solid var(--glass-edge);box-shadow:var(--shadow-glass);color:var(--ink-100)}@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.wsl-glass{background:var(--glass-fill-fallback)}}@media (prefers-reduced-transparency:reduce){.wsl-glass{background:var(--glass-fill-fallback);backdrop-filter:none}}.wsl-grain{position:relative;isolation:isolate}.wsl-grain:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:-1;border-radius:inherit;opacity:var(--grain-surface);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 1 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}.wsl-glass.wsl-grain:after{opacity:var(--grain-glass)}.wsl-panel{border-radius:var(--radius-md);padding:var(--space-6);box-shadow:var(--shadow-float);max-width:360px}.wsl-panel-eyebrow{font-size:11px;line-height:16px;letter-spacing:.14em;text-transform:uppercase}.wsl-panel-eyebrow,.wsl-panel-title{font-weight:600;color:var(--ink-100);margin:0 0 var(--space-2)}.wsl-panel-title{font-size:22px;line-height:30px;letter-spacing:-.01em}.wsl-panel-body{font-size:15px;line-height:24px;color:var(--ink-100);margin:0}.wsl-panel-actions{display:flex;gap:var(--space-2);margin-top:var(--space-6)}.wsl-metric{background:var(--bg-100);border:1px solid var(--line-100);border-radius:var(--radius-md);padding:var(--space-6);min-width:220px}.wsl-metric-label{font-size:13px;line-height:20px;color:var(--ink-300);margin:0 0 var(--space-3);display:flex;justify-content:space-between;gap:var(--space-3);align-items:center}.wsl-metric-value{font-family:var(--font-display);font-size:56px;line-height:1.05;letter-spacing:-.01em;color:var(--ink-100);margin:0;font-weight:400}.wsl-metric-unit{font-family:var(--font-sans);font-size:15px;color:var(--ink-300);margin-left:var(--space-1);letter-spacing:0}.wsl-metric-meta{font-family:var(--font-mono);font-size:12px;line-height:20px;color:var(--ink-400);margin:var(--space-3) 0 0}.wsl-reveal{--wsl-ease:cubic-bezier(0.2,0,0,1)}.wsl-reveal--rise{opacity:0;transform:translate3d(0,32px,0);transition:opacity 1s var(--wsl-ease) var(--wsl-d),transform 1.2s var(--wsl-ease) var(--wsl-d)}.wsl-reveal--rise.is-in{opacity:1;transform:none}.wsl-reveal--fade{opacity:0;transition:opacity 1.4s var(--wsl-ease) var(--wsl-d)}.wsl-reveal--fade.is-in{opacity:1}.wsl-reveal--light{-webkit-mask-image:linear-gradient(100deg,#000,#000 42%,rgba(0,0,0,.35) 47%,transparent 54%);mask-image:linear-gradient(100deg,#000,#000 42%,rgba(0,0,0,.35) 47%,transparent 54%);-webkit-mask-size:320% 100%;mask-size:320% 100%;-webkit-mask-position:100% 0;mask-position:100% 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;transition:-webkit-mask-position 1.8s var(--wsl-ease) var(--wsl-d),mask-position 1.8s var(--wsl-ease) var(--wsl-d)}.wsl-reveal--light.is-in{-webkit-mask-position:0 0;mask-position:0 0}.wsl-reveal--line{transform:scaleX(0);transform-origin:0 50%;transition:transform 1.4s var(--wsl-ease) var(--wsl-d)}.wsl-reveal--line.is-in{transform:none}.wsl-reveal--draw svg :is(path,line,circle,rect,polyline,polygon,ellipse){stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.6s var(--wsl-ease) var(--wsl-d)}.wsl-reveal--draw.is-in svg :is(path,line,circle,rect,polyline,polygon,ellipse){stroke-dashoffset:0}.wsl-reveal--stagger [data-reveal-item]{opacity:0;transform:translate3d(0,24px,0);transition:opacity .9s var(--wsl-ease),transform 1.1s var(--wsl-ease);transition-delay:calc(var(--wsl-d) + var(--wsl-i, 0) * var(--wsl-step))}.wsl-reveal--stagger.is-in [data-reveal-item]{opacity:1;transform:none}.wsl-reveal--stagger.is-in [data-reveal-item] svg :is(path,line,circle,rect,polyline,polygon,ellipse){stroke-dashoffset:0}.wsl-reveal--stagger [data-reveal-item] svg :is(path,line,circle,rect,polyline,polygon,ellipse){stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.6s var(--wsl-ease);transition-delay:calc(var(--wsl-d) + .2s + var(--wsl-i, 0) * var(--wsl-step))}@media (prefers-reduced-motion:reduce){.wsl-reveal,.wsl-reveal [data-reveal-item]{opacity:1!important;transform:none!important;transition:none!important;-webkit-mask-image:none!important;mask-image:none!important}.wsl-reveal svg :is(path,line,circle,rect,polyline,polygon,ellipse){stroke-dashoffset:0!important;transition:none!important}}