@layer reset,base,layout,components,utilities,groundy;@layer reset{*,:before,:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}@layer base{@font-face{font-family:"Noto Serif";src:url(/fonts/noto-serif-latin-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,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:Noto Sans;src:url(/fonts/noto-sans-latin-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,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:Noto Sans;src:url(/fonts/noto-sans-latin-400-italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap;unicode-range:U+0000-00FF,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:Noto Sans;src:url(/fonts/noto-sans-latin-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,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:Noto Sans;src:url(/fonts/noto-sans-latin-600.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,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:Noto Sans;src:url(/fonts/noto-sans-latin-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,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:Noto Sans Mono;src:url(/fonts/noto-sans-mono-latin-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,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:Noto Sans Mono;src:url(/fonts/noto-sans-mono-latin-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,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}:root{--color-slate:#2E4A3E;--color-slate-light:#3D6354;--color-slate-dark:#1F362D;--color-parchment:#F5F1E8;--color-parchment-dark:#E8E4DC;--color-terracotta:#C65D3B;--color-terracotta-light:#D97B5C;--color-terracotta-dark:#A0482E;--color-bg:var(--color-parchment);--color-bg-elevated:#FFFFFF;--color-bg-subtle:#F0EDE6;--color-text:#1A1A1A;--color-text-secondary:#6B6B6B;--color-text-muted:#767676;--color-text-tertiary:#8A857D;--color-primary:var(--color-slate);--color-primary-hover:var(--color-slate-light);--color-primary-subtle:rgba(46, 74, 62, .08);--color-accent:var(--color-terracotta);--color-accent-hover:var(--color-terracotta-light);--color-accent-subtle:rgba(198, 93, 59, .08);--color-tip:#4A5568;--color-tip-bg:rgba(74, 85, 104, .06);--color-tip-border:rgba(74, 85, 104, .15);--color-caution:#8B4513;--color-caution-bg:rgba(139, 69, 19, .06);--color-caution-border:rgba(139, 69, 19, .15);--color-danger:#A05040;--color-danger-bg:rgba(160, 80, 64, .06);--color-danger-border:rgba(160, 80, 64, .15);--color-note:#7C9885;--color-note-bg:rgba(124, 152, 133, .06);--color-note-border:rgba(124, 152, 133, .15);--color-border:#D9D4CA;--color-border-light:#E8E4DC;--color-border-subtle:rgba(26, 26, 26, .06);--font-serif:"Noto Serif", Georgia, serif;--font-sans:"Noto Sans", system-ui, -apple-system, sans-serif;--font-mono:"Noto Sans Mono", "SF Mono", monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--text-5xl:3rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-7:1.75rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--content-width:75ch;--header-height:56px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--transition-fast:.15s ease;--transition-base:.25s ease;--transition-slow:.35s ease;--z-header:300;--z-modal:400;--z-toast:500;--shadow-sm:0 2px 8px rgba(26, 26, 26, .04);--shadow-md:0 4px 16px rgba(26, 26, 26, .08);--shadow-lg:0 10px 30px rgba(26, 26, 26, .12)}[data-theme=dark]{--color-bg:#0F1419;--color-bg-elevated:#1A2024;--color-bg-subtle:#252B30;--color-text:#E8E4DC;--color-text-secondary:#A8A298;--color-text-muted:#918C84;--color-text-tertiary:#767168;--color-primary:#5A7A6E;--color-primary-hover:#6B8B7F;--color-primary-subtle:rgba(90, 122, 110, .15);--color-accent:#A05040;--color-accent-hover:#B5604F;--color-accent-subtle:rgba(160, 80, 64, .15);--color-tip:#6B7B8C;--color-tip-bg:rgba(74, 85, 104, .12);--color-caution:#A67C52;--color-caution-bg:rgba(139, 69, 19, .12);--color-danger:#C07060;--color-danger-bg:rgba(160, 80, 64, .12);--color-note:#8BA690;--color-note-bg:rgba(124, 152, 133, .12);--color-border:rgba(232, 228, 220, .08);--color-border-light:rgba(232, 228, 220, .04);--color-border-subtle:rgba(232, 228, 220, .06)}}@layer layout{body{font-family:var(--font-sans);font-size:1.0625rem;font-optical-sizing:auto;font-weight:400;line-height:1.7;color:var(--color-text);background:var(--color-bg);transition:background-color var(--transition-base),color var(--transition-base);overflow-wrap:break-word;word-wrap:break-word}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);font-weight:700;line-height:1.2;letter-spacing:-.02em;color:var(--color-text);overflow-wrap:break-word;text-wrap:pretty;font-optical-sizing:auto}h1{font-size:var(--text-4xl);line-height:1.1}h2{font-size:var(--text-3xl);line-height:1.15}h3{font-size:var(--text-2xl)}h4{font-size:var(--text-xl);line-height:1.3}h5{font-size:var(--text-lg);line-height:1.3}h6{font-size:var(--text-base);line-height:1.3}@media (min-width:768px){h1{font-size:var(--text-5xl)}h2{font-size:var(--text-4xl)}h3{font-size:var(--text-3xl)}}p{margin-bottom:var(--space-5);color:var(--color-text-secondary)}a{color:var(--color-slate);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;transition:color var(--transition-fast)}a:hover{color:var(--color-terracotta)}::selection{background:var(--color-primary-subtle);color:var(--color-text)}}@layer groundy{.article-content{max-width:var(--content-width);margin:0 auto}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{scroll-margin-top:calc(var(--header-height) + var(--space-6))}.article-content h2{margin-top:var(--space-10);margin-bottom:var(--space-5)}.article-content h3{margin-top:var(--space-8);margin-bottom:var(--space-4)}.article-content h4,.article-content h5,.article-content h6{margin-top:var(--space-6);margin-bottom:var(--space-3)}.article-content h1:first-child,.article-content h2:first-child{margin-top:0}.article-content>h1:first-child{font-family:var(--font-serif)}.article-content p{margin-bottom:var(--space-5);line-height:1.8}.article-content ul,.article-content ol{margin:var(--space-5)0;padding-left:var(--space-6)}.article-content li{margin:var(--space-2)0;color:var(--color-text-secondary);line-height:1.7}.article-content ul li{list-style:none;position:relative}.article-content ul li:before{content:"";position:absolute;left:calc(-1*var(--space-5));top:.6em;width:6px;height:6px;background:var(--color-terracotta);border-radius:50%;opacity:.8}.article-content ol li{padding-left:var(--space-2)}.article-content li>ul,.article-content li>ol{margin:var(--space-2)0}.article-content blockquote{margin:var(--space-8)0;padding:var(--space-6) var(--space-8);background:var(--color-bg-elevated);border-left:3px solid var(--color-terracotta);border-radius:0 var(--radius-lg) var(--radius-lg)0;font-style:italic;color:var(--color-text-secondary);position:relative}.article-content blockquote:before{content:'"';position:absolute;top:var(--space-4);left:var(--space-4);font-family:var(--font-serif);font-size:var(--text-4xl);color:var(--color-terracotta);opacity:.2;line-height:1}.article-content blockquote p:last-child{margin-bottom:0}.table-wrapper{overflow-x:auto;margin:var(--space-8)0;border-radius:var(--radius-lg);border:1px solid var(--color-border);background:var(--color-bg-elevated)}.article-content table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--text-sm)}.article-content thead{background:var(--color-bg-subtle)}.article-content th{padding:var(--space-4) var(--space-5);text-align:left;font-weight:600;font-size:var(--text-sm);color:var(--color-text);border-bottom:1px solid var(--color-border);white-space:nowrap}.article-content td{padding:var(--space-4) var(--space-5);font-size:var(--text-sm);color:var(--color-text-secondary);border-bottom:1px solid var(--color-border-light)}.article-content tr:last-child td{border-bottom:none}.article-content tbody tr:nth-child(2n){background:#2e4a3e05}[data-theme=dark] .article-content tbody tr:nth-child(2n){background:#5a7a6e0d}.article-content code{font-family:var(--font-mono);font-size:.9em;padding:var(--space-1) var(--space-2);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-slate)}.article-content pre code{padding:0;background:0 0;border:0;color:inherit}.article-content dl{margin:var(--space-6)0}.article-content dt{font-weight:600;color:var(--color-text);margin-top:var(--space-4);font-family:var(--font-sans)}.article-content dd{margin-left:0;color:var(--color-text-secondary);margin-top:var(--space-1);padding-left:var(--space-4);border-left:2px solid var(--color-terracotta)}.article-content hr{margin:var(--space-12)0;border:0;height:1px;background:linear-gradient(90deg,transparent,var(--color-border),transparent)}.aside{border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);margin:var(--space-8)0;border:1px solid var(--color-border);position:relative;overflow:hidden;background:var(--color-bg-elevated)}.aside:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px}.aside-title{font-family:var(--font-sans);font-weight:600;font-size:var(--text-base);margin-bottom:var(--space-3);display:flex;align-items:center;gap:var(--space-2)}.aside-content{color:var(--color-text-secondary);font-size:var(--text-sm);line-height:1.7}.aside-content p:last-child{margin-bottom:0}.aside-content>:first-child{margin-top:0}.aside-tip{border-color:var(--color-tip-border)}.aside-tip:before{background:var(--color-tip)}.aside-tip .aside-title{color:var(--color-tip)}.aside-caution{border-color:var(--color-caution-border)}.aside-caution:before{background:var(--color-caution)}.aside-caution .aside-title{color:var(--color-caution)}.aside-danger{border-color:var(--color-danger-border)}.aside-danger:before{background:var(--color-danger)}.aside-danger .aside-title{color:var(--color-danger)}.aside-note{border-color:var(--color-note-border)}.aside-note:before{background:var(--color-note)}.aside-note .aside-title{color:var(--color-note)}.expressive-code{margin:var(--space-8)0;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--color-border)}.expressive-code .copy{opacity:0;transition:opacity var(--transition-fast)}.expressive-code:hover .copy{opacity:1}.expressive-code .line-numbers{color:var(--color-text-muted);font-size:var(--text-sm)}.footnotes{margin-top:var(--space-12);padding-top:var(--space-8);border-top:1px solid var(--color-border)}.footnotes-title{font-family:var(--font-sans);font-size:var(--text-lg);font-weight:600;color:var(--color-text);margin-bottom:var(--space-4)}.footnotes ol{padding-left:var(--space-5)}.footnotes li{font-size:var(--text-sm);color:var(--color-text-secondary);margin:var(--space-3)0}.footnotes a[data-footnote-backref]{text-decoration:none;margin-left:var(--space-2)}sup a[data-footnote-ref]{text-decoration:none;font-weight:600;padding:0 var(--space-1);color:var(--color-terracotta)}.article-content input[type=checkbox]{appearance:none;width:1.2em;height:1.2em;border:2px solid var(--color-border);border-radius:var(--radius-sm);margin-right:var(--space-2);vertical-align:middle;position:relative;cursor:pointer}.article-content input[type=checkbox]:checked{background:var(--color-slate);border-color:var(--color-slate)}.article-content input[type=checkbox]:checked:after{content:"✓";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--color-parchment);font-size:.8em;font-weight:700}.article-content li:has(input[type=checkbox]){list-style:none;padding-left:0}.article-content li:has(input[type=checkbox]):before{display:none}.article-content li:has(input[type=checkbox]:checked){text-decoration:line-through;opacity:.6}.article-content h1:hover .anchor,.article-content h2:hover .anchor,.article-content h3:hover .anchor,.article-content h4:hover .anchor,.article-content h5:hover .anchor,.article-content h6:hover .anchor{opacity:1}.anchor{opacity:0;transition:opacity var(--transition-fast);margin-left:var(--space-2);text-decoration:none;color:var(--color-text-muted)}.anchor:hover{color:var(--color-terracotta)}}@layer utilities{:focus-visible{outline:2px solid var(--color-terracotta);outline-offset:2px;border-radius:var(--radius-sm)}@media (prefers-reduced-motion:reduce){*,:before,:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html{scroll-behavior:auto}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;top:-100px;left:var(--space-4);background:var(--color-slate);color:var(--color-parchment);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);text-decoration:none;font-family:var(--font-sans);font-weight:500;z-index:10000;transition:top var(--transition-fast)}.skip-link:focus{top:var(--space-3);outline:2px solid var(--color-terracotta);outline-offset:2px}}.theme-toggle{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;background:0 0;border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;color:var(--color-text-secondary);transition:all var(--transition-fast);position:relative;overflow:hidden}.theme-toggle:hover{background:var(--color-primary-subtle);border-color:var(--color-primary);color:var(--color-primary);transform:translateY(-1px)}.theme-toggle:active{transform:scale(.95)}.toggle-icon{display:flex;align-items:center;justify-content:center}.toggle-icon :global(svg){transition:all var(--transition-base)}@media (max-width:768px){.theme-toggle{width:48px;height:48px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.tm-masthead{border-bottom:1px solid var(--color-border);background:var(--color-bg);position:sticky;top:0;z-index:var(--z-header)}.tm-inner{max-width:1400px;margin:0 auto;padding:var(--space-4) var(--space-6);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);font-family:var(--font-mono)}.tm-wordmark{display:inline-flex;align-items:baseline;text-decoration:none;color:var(--color-text);font-weight:700;letter-spacing:-.03em}.tm-wordmark-text{font-size:1.25rem}.tm-cursor{display:inline-block;width:.55ch;margin-left:.05ch;color:var(--color-terracotta);font-weight:700;line-height:1;animation:tm-blink 1.1s steps(1) infinite}@keyframes tm-blink{0%,50%{opacity:1}51%,to{opacity:0}}@media (prefers-reduced-motion:reduce){.tm-cursor{animation:none}}.tm-actions{display:flex;align-items:center;gap:var(--space-3)}@media (max-width:768px){.tm-inner{padding:var(--space-3) var(--space-4)}}.t-footer{border-top:1px solid var(--color-border);padding:var(--space-5) var(--space-6) var(--space-6);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-12)}.t-footer-inner{max-width:1400px;margin:0 auto;display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.t-footer-brand{color:var(--color-text-secondary);font-weight:700}.t-footer-sep{opacity:.4}.t-footer a{color:var(--color-text-secondary);text-decoration:none;transition:color var(--transition-fast)}.t-footer a:hover{color:var(--color-terracotta)}.t-footer-meta{max-width:1400px;margin:var(--space-2) auto 0;color:var(--color-text-tertiary);font-size:.7rem}@media (max-width:768px){.t-footer{padding:var(--space-4) var(--space-4) var(--space-5)}}.terminal-body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);min-height:100vh}.terminal-main{max-width:1400px;margin:0 auto;padding:var(--space-6) var(--space-6) var(--space-12)}@media (max-width:768px){.terminal-main{padding:var(--space-4) var(--space-4) var(--space-8)}}.t-section-label{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;letter-spacing:.04em;color:var(--color-terracotta);margin-bottom:var(--space-3);display:flex;align-items:baseline;gap:var(--space-3);text-transform:lowercase}.t-section-label:before{content:"//";opacity:.55;font-weight:500}.t-section-label .t-section-meta{margin-left:auto;font-weight:400;font-size:.7rem;color:var(--color-text-muted);text-transform:none;letter-spacing:.02em}.t-rule{border:0;border-top:1px solid var(--color-border);margin:var(--space-6)0}.t-rule-light{border:0;border-top:1px dashed var(--color-border);margin:var(--space-4)0}.t-cat{font-family:var(--font-mono);font-size:.7rem;color:var(--color-text-muted);text-transform:lowercase;letter-spacing:.02em;white-space:nowrap}.t-cat:before{content:"[";opacity:.6}.t-cat:after{content:"]";opacity:.6}.t-ts{font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-muted);font-feature-settings:"tnum"1,"zero"1;white-space:nowrap}.terminal-body a.t-link,.terminal-body .t-link-host{color:inherit;text-decoration:none;transition:color var(--transition-fast)}.terminal-body a.t-link:hover,.terminal-body .t-link-host:hover .t-headline{color:var(--color-terracotta)}.terminal-body .t-headline{font-family:var(--font-mono);color:var(--color-text);font-weight:600;line-height:1.35;letter-spacing:-.015em;text-wrap:pretty;transition:color var(--transition-fast)}