@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/dm-sans-latin-ext-400-normal.BtiwyxMk.woff2)format("woff2"),url(/_astro/dm-sans-latin-ext-400-normal.BjWJ59Pq.woff)format("woff");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:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/dm-sans-latin-400-normal.CW0RaeGs.woff2)format("woff2"),url(/_astro/dm-sans-latin-400-normal.BwCSEQnW.woff)format("woff");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:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/dm-sans-latin-ext-500-normal.BJfUCQsA.woff2)format("woff2"),url(/_astro/dm-sans-latin-ext-500-normal.DR84L5F-.woff)format("woff");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:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/dm-sans-latin-500-normal.B9HHJjqV.woff2)format("woff2"),url(/_astro/dm-sans-latin-500-normal.Dr3UlScf.woff)format("woff");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:DM Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/dm-sans-latin-ext-700-normal.CJIcxD6K.woff2)format("woff2"),url(/_astro/dm-sans-latin-ext-700-normal.BLI3TTWz.woff)format("woff");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:DM Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/dm-sans-latin-700-normal.DvUfVpUG.woff2)format("woff2"),url(/_astro/dm-sans-latin-700-normal.CUSSCpQX.woff)format("woff");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:DM Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/dm-mono-latin-ext-400-normal.C2zvOubV.woff2)format("woff2"),url(/_astro/dm-mono-latin-ext-400-normal.1aZr6b2b.woff)format("woff");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:DM Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/dm-mono-latin-400-normal.4GdczIuU.woff2)format("woff2"),url(/_astro/dm-mono-latin-400-normal.-0xN8mdc.woff)format("woff");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:DM Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/dm-mono-latin-ext-500-normal.BtRyHRi6.woff2)format("woff2"),url(/_astro/dm-mono-latin-ext-500-normal.Dw3M13d8.woff)format("woff");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:DM Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/dm-mono-latin-500-normal.DRMDZjhP.woff2)format("woff2"),url(/_astro/dm-mono-latin-500-normal.CN8Miw6E.woff)format("woff");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{--ink:#18231f;--muted:#58635d;--paper:#f2f0e9;--acid:#d8f45f;--accent-green:#435c00;--line:#18231f29;--sans:"DM Sans", sans-serif;--mono:"DM Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:hidden}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;width:100%;margin:0;position:relative;overflow-x:hidden}img,svg,picture{max-width:100%;height:auto}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible{outline:2px solid var(--accent-green);outline-offset:3px}.skip-link{background:var(--ink);color:var(--paper);font-family:var(--mono);text-transform:uppercase;letter-spacing:.05em;z-index:1000;border:2px solid var(--acid);padding:12px 18px;font-size:13px;font-weight:700;transition:top .2s ease-in-out;position:absolute;top:-100px;left:20px}.skip-link:focus-visible{outline:none;top:20px}.page-noise{pointer-events:none;opacity:.045;z-index:5;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.35'/%3E%3C/svg%3E");position:fixed;inset:0}.site-header,.section-wrap{width:min(1080px,100% - 64px);margin:0 auto}.site-header{border-bottom:1px solid var(--line);font-family:var(--mono);text-transform:uppercase;letter-spacing:.05em;justify-content:space-between;align-items:center;padding:24px 0;font-size:12px;display:flex}.wordmark{font:700 22px var(--mono);letter-spacing:-.06em}.wordmark span,.section-kicker,.contact-email span{color:var(--accent-green)}nav{align-items:center;gap:26px;display:flex}nav a{transition:color .15s}nav a:hover,.text-link:hover{color:var(--accent-green)}.nav-contact{border-bottom:1px solid var(--ink);padding-bottom:2px}.hero{grid-template-columns:1.25fr .75fr;align-items:center;gap:56px;padding:72px 0 88px;display:grid;position:relative}.eyebrow,.section-kicker{font:500 12px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent-green);margin:0 0 18px}.hero h1{letter-spacing:-.045em;margin:0;font-size:clamp(36px,4.8vw,60px);font-weight:700;line-height:1.04}h2{letter-spacing:-.04em;margin:0;font-size:clamp(28px,3.6vw,44px);font-weight:700;line-height:1.06}em{font-style:italic}.hero-summary{color:var(--muted);max-width:540px;margin:28px 0 32px;font-size:17px;line-height:1.65}.hero-actions{align-items:center;gap:24px;display:flex}.button{font-family:var(--mono);letter-spacing:.02em;align-items:center;gap:14px;padding:13px 18px;font-size:13px;font-weight:500;transition:background .15s,color .15s;display:inline-flex}.button-primary{background:var(--ink);color:var(--paper)}.button-primary:hover{background:var(--accent-green)}.text-link{font-family:var(--mono);text-transform:uppercase;letter-spacing:.05em;font-size:12px}.hero-portrait{justify-self:end;width:min(100%,340px);position:relative}.portrait-figure{margin:0}.portrait-frame{aspect-ratio:4/5;border:1px solid var(--ink);overflow:hidden}.portrait-frame img{object-fit:cover;object-position:72% center;width:100%;height:100%}.portrait-figure figcaption{color:var(--muted);font:11.5px var(--mono);letter-spacing:.04em;margin-top:10px}.intro-band{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:220px 1fr;gap:28px 48px;padding:76px 0 84px;display:grid}.intro-band .section-kicker{grid-column:1;margin:4px 0 0}.intro-statement{letter-spacing:-.03em;grid-column:2;max-width:720px;font-size:clamp(22px,2.8vw,32px);font-weight:500;line-height:1.25}.intro-details{color:var(--muted);grid-column:2;grid-template-columns:1fr 1fr;gap:36px;font-size:15.5px;line-height:1.65;display:grid}.intro-details p{margin:0}.intro-details a{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.intro-details a:hover{color:var(--accent-green)}.work-section,.capabilities-section{padding:96px 0 88px}.capabilities-section{border-top:1px solid var(--line)}.section-heading{justify-content:space-between;align-items:flex-end;margin-bottom:44px;display:flex}.project-row{border-top:1px solid var(--line);color:inherit;cursor:pointer;grid-template-columns:56px 1fr 32px;gap:20px;padding:26px 0 30px;text-decoration:none;transition:background .15s,padding .15s;display:grid}.project-row:last-child{border-bottom:1px solid var(--line)}@media (hover:hover){.project-row:hover{background:#18231f0a;padding-left:14px;padding-right:14px}.project-row:hover .project-arrow{color:var(--accent-green);transform:translate(4px)}}.project-row:focus-visible{outline:2px solid var(--ink);outline-offset:-2px;background:#18231f0a;padding-left:14px;padding-right:14px}.project-number{font:12px var(--mono);color:var(--muted);padding-top:6px}.project-content h3{letter-spacing:-.03em;margin:0 0 8px;font-size:clamp(20px,2.2vw,26px)}.project-content p{color:var(--muted);max-width:620px;margin:0 0 14px;font-size:15.5px;line-height:1.6}.tag-list{flex-wrap:wrap;gap:6px;display:flex}.tag-list span,.skill-pill{border:1px solid var(--line);font:11.5px var(--mono);color:var(--ink);background:#18231f05;border-radius:2px;padding:4px 9px}.project-arrow{font:18px var(--mono);justify-self:end;padding-top:4px;transition:transform .15s,color .15s}.skill-groups{border-top:1px solid var(--line);flex-direction:column;display:flex}.skill-group{border-bottom:1px solid var(--line);grid-template-columns:220px 1fr;align-items:baseline;gap:24px;padding:20px 0;display:grid}.skill-label{font:500 12px var(--mono);color:var(--ink);text-transform:uppercase;letter-spacing:.06em;display:block}.skill-list{flex-wrap:wrap;gap:8px;display:flex}.skill-pill{display:inline-block}.contact-section{border-top:1px solid var(--line);padding:88px 0 36px}.contact-section h2{margin-bottom:16px}.contact-lead{color:var(--muted);max-width:520px;margin:0 0 32px;font-size:16px;line-height:1.6}.contact-email{font:500 clamp(16px, 2.2vw, 22px) var(--mono);border-bottom:1px solid var(--ink);align-items:center;gap:14px;padding-bottom:6px;display:inline-flex}.contact-email:hover{color:var(--accent-green);border-color:var(--accent-green)}.contact-footer{border-top:1px solid var(--line);font:12px var(--mono);color:var(--muted);text-transform:uppercase;justify-content:space-between;margin-top:96px;padding-top:20px;display:flex}.contact-footer div{gap:22px;display:flex}.contact-footer a:hover,.wiki-footer a:hover{color:var(--ink)}.wiki-footer{border-top:1px solid var(--line);font:12px var(--mono);color:var(--muted);text-transform:uppercase;justify-content:space-between;align-items:center;margin-top:80px;padding-top:22px;display:flex}.back-to-top-btn{z-index:80;background:var(--ink);color:var(--paper);font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;cursor:pointer;opacity:0;pointer-events:none;border:1px solid #18231f33;border-radius:2px;align-items:center;gap:8px;padding:9px 14px;font-size:11.5px;font-weight:500;transition:opacity .2s,transform .2s,background .15s,color .15s;display:inline-flex;position:fixed;bottom:28px;right:28px;transform:translateY(12px)}.back-to-top-btn.is-visible{opacity:1;pointer-events:auto;transform:translateY(0)}.back-to-top-btn:hover{background:var(--accent-green);color:var(--paper)}.back-to-top-btn:focus-visible{outline:2px solid var(--accent-green);outline-offset:3px}@media (width<=700px){.back-to-top-btn{padding:8px 12px;font-size:11px;bottom:20px;right:20px}}.wiki-shell{width:min(820px,100% - 64px);margin:0 auto;padding:48px 0 110px}.wiki-back{color:var(--muted);font:12px var(--mono);text-transform:uppercase;letter-spacing:.06em;display:inline-block}.wiki-back:hover{color:var(--ink)}.wiki-navigation{gap:24px;margin-bottom:36px;display:flex}.wiki-content{border-top:1px solid var(--line);padding-top:36px}.wiki-content h1{letter-spacing:-.045em;max-width:740px;margin:0 0 28px;font-size:clamp(34px,5vw,54px);line-height:1.04}.wiki-content h2{letter-spacing:-.03em;margin:52px 0 16px;font-size:clamp(22px,3vw,30px);line-height:1.15}.wiki-content h3{letter-spacing:-.02em;margin:34px 0 12px;font-size:19px}.wiki-content p,.wiki-content li{color:#2c3833;max-width:700px;font-size:16.5px;line-height:1.72}.wiki-content li{margin-bottom:8px}.wiki-content ul,.wiki-content ol{margin:16px 0 24px;padding-left:22px}.wiki-content a{color:var(--accent-green);text-underline-offset:3px;text-decoration:underline}.wiki-content a:hover{color:var(--ink)}.wiki-content code{font-family:var(--mono);background:#18231f13;border-radius:2px;padding:2px 5px;font-size:.85em}.code-block-wrapper{margin:24px 0;position:relative}.wiki-content pre{-webkit-overflow-scrolling:touch;background:var(--ink);color:var(--paper);font:13px/1.65 var(--mono);border-radius:2px;margin:24px 0;padding:18px 20px;position:relative;overflow-x:auto}.code-block-wrapper pre{margin:0}.wiki-content pre code{color:inherit;background:0 0;padding:0}.copy-code-btn{color:var(--paper);font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;cursor:pointer;z-index:2;background:#f2f0e91f;border:1px solid #f2f0e933;border-radius:2px;padding:4px 9px;font-size:11px;transition:all .15s;position:absolute;top:10px;right:10px}.copy-code-btn:hover,.copy-code-btn.copied{background:var(--acid);color:var(--ink);border-color:var(--acid)}.wiki-content table{-webkit-overflow-scrolling:touch;border-collapse:collapse;border:1px solid var(--line);background:#18231f04;width:100%;max-width:100%;margin:28px 0;display:block;overflow-x:auto}.wiki-content thead{background:#18231f0b}.wiki-content th,.wiki-content td{border:1px solid var(--line);text-align:left;vertical-align:top;padding:11px 14px}.wiki-content th{font-family:var(--mono);text-transform:uppercase;letter-spacing:.05em;color:var(--ink);white-space:nowrap;font-size:11.5px;font-weight:500}.wiki-content td{color:#2c3833;min-width:130px;font-size:14px;line-height:1.55}.wiki-content tr:nth-child(2n) td{background:#18231f05}.wiki-pager{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:16px;margin-top:68px;padding-top:36px;display:grid}.pager-card{border:1px solid var(--line);color:inherit;background:0 0;flex-direction:column;padding:18px 20px;text-decoration:none;transition:background .15s,border-color .15s;display:flex}.pager-card.prev{grid-column:1}.pager-card.next{text-align:right;grid-column:2}@media (hover:hover){.pager-card:hover{border-color:var(--ink);background:#18231f0a}}.pager-card:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.pager-direction{font:11px var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.pager-title{letter-spacing:-.02em;color:var(--ink);font-size:16px;font-weight:700}.wiki-content blockquote{border-left:3px solid var(--accent-green);background:#18231f09;margin:28px 0;padding:14px 20px}.wiki-content blockquote p{color:var(--ink);margin:0;font-size:15.5px}::view-transition-old(root),::view-transition-new(root){animation-duration:.2s;animation-timing-function:ease-out}@media (width<=860px){.site-header,.section-wrap{width:min(100% - 48px,1080px)}.wiki-shell{width:min(100% - 48px,820px);padding:40px 0 80px}.intro-band{grid-template-columns:1fr;gap:20px;padding:60px 0}.intro-band .section-kicker,.intro-statement,.intro-details{grid-column:1/-1}.intro-details{gap:28px}.skill-group{grid-template-columns:180px 1fr;gap:16px}}@media (width<=640px){.site-header,.section-wrap{width:calc(100% - 32px)}.site-header{gap:12px;padding:16px 0}.wordmark{font-size:20px}nav{gap:12px;font-size:11px}nav a[href=\#work],nav a[href="/#work"],nav a[href=\#capabilities],nav a[href="/#capabilities"],.search-kbd{display:none}.search-trigger{gap:6px;padding:5px 10px;font-size:11px}.hero{grid-template-columns:1fr;gap:32px;padding:36px 0 52px}.hero-copy{width:100%;min-width:0}.hero-copy .eyebrow{margin-bottom:12px;font-size:11px}.hero h1{letter-spacing:-.04em;overflow-wrap:anywhere;max-width:100%;font-size:clamp(30px,8.5vw,44px);line-height:1.06}.hero-summary{overflow-wrap:anywhere;max-width:100%;margin:18px 0 24px;font-size:15.5px;line-height:1.6}.hero-actions{flex-direction:column;align-items:stretch;gap:12px;width:100%;display:flex}.hero-actions .button{text-align:center;justify-content:center;width:100%;padding:13px 16px;font-size:13px}.hero-actions .text-link{text-align:center;width:100%;padding:8px 0}.hero-portrait{justify-self:start;width:min(100%,260px)}.intro-band{padding:48px 0;display:block}.intro-statement{margin:14px 0 20px;font-size:clamp(20px,5.8vw,28px);line-height:1.25}.intro-details{flex-direction:column;gap:16px;font-size:15px;line-height:1.6;display:flex}.work-section,.capabilities-section{padding:56px 0}.section-heading{margin-bottom:28px}h2{letter-spacing:-.04em;overflow-wrap:anywhere;font-size:clamp(26px,7vw,38px);line-height:1.08}.project-row{grid-template-columns:1fr auto;grid-template-areas:"number arrow""content content";gap:8px;padding:20px 0 24px;display:grid}.project-number{grid-area:number;padding-top:0;font-size:11px}.project-arrow{grid-area:arrow;align-self:center;padding-top:0;font-size:16px}.project-content{grid-area:content;min-width:0}.project-content h3{overflow-wrap:anywhere;margin-bottom:6px;font-size:clamp(19px,5vw,24px)}.project-content p{overflow-wrap:anywhere;margin-bottom:12px;font-size:14.5px}.tag-list span{padding:4px 8px;font-size:11px}.skill-group{grid-template-columns:1fr;gap:10px;padding:16px 0}.skill-pill{padding:4px 8px;font-size:11.5px}.contact-section{padding:56px 0 24px}.contact-email{gap:10px;font-size:clamp(14px,4.2vw,20px)}.contact-footer{flex-direction:column;align-items:flex-start;gap:14px;margin-top:52px;line-height:1.6}.contact-footer div{flex-wrap:wrap;gap:16px}.wiki-shell{width:calc(100% - 32px);padding:28px 0 60px}.wiki-navigation{flex-wrap:wrap;gap:16px;margin-bottom:24px}.wiki-content h1{word-break:break-word;overflow-wrap:break-word;margin-bottom:20px;font-size:clamp(28px,8vw,44px);line-height:1.08}.wiki-content h2{word-break:break-word;overflow-wrap:break-word;margin:38px 0 12px;font-size:clamp(20px,5.5vw,28px);line-height:1.15}.wiki-content h3{margin-top:26px;font-size:clamp(17px,4.5vw,20px)}.wiki-content p,.wiki-content li{max-width:100%;font-size:15.5px;line-height:1.68}.wiki-content ul,.wiki-content ol{padding-left:20px}.wiki-content pre{margin:20px 0;padding:14px 12px;font-size:12px;line-height:1.6}.copy-code-btn{padding:2px 6px;font-size:9.5px;top:6px;right:6px}.wiki-content blockquote{margin:22px 0;padding:12px 16px}.wiki-pager{grid-template-columns:1fr;gap:12px;margin-top:44px;padding-top:24px}.pager-card.next{text-align:left;grid-column:1}.pager-card{padding:14px 16px}.wiki-footer{flex-direction:column;align-items:flex-start;gap:12px;margin-top:52px}}@media (width<=400px){.site-header{gap:8px}.wordmark{font-size:18px}nav{gap:8px;font-size:10.5px}.search-trigger{padding:4px 8px;font-size:10px}.hero-actions .button{padding:12px 14px;font-size:12.5px}.hero-portrait{width:min(100%,230px)}.wiki-content table th,.wiki-content table td{padding:8px 10px;font-size:12px}}.reading-progress-bar{background:var(--accent-green);transform-origin:0;z-index:1000;pointer-events:none;width:100%;height:2px;transition:transform 50ms linear;position:fixed;top:0;left:0;transform:scaleX(0)}.search-trigger{border:1px solid var(--line);font-family:var(--mono);color:var(--muted);cursor:pointer;text-transform:uppercase;letter-spacing:.05em;background:0 0;border-radius:2px;align-items:center;gap:8px;padding:5px 10px;font-size:11px;transition:all .15s;display:inline-flex}.search-trigger:hover{border-color:var(--ink);color:var(--ink);background:#18231f0a}.search-trigger:focus-visible{outline:2px solid var(--accent-green);outline-offset:2px}.search-kbd{letter-spacing:.04em;color:var(--ink);background:#18231f14;border-radius:2px;align-items:center;padding:2px 5px;font-size:10px;display:inline-flex}.search-dialog{z-index:2000;background:0 0;border:none;justify-content:center;align-items:flex-start;width:100%;max-width:100%;height:100%;max-height:100%;margin:0 auto;padding:80px 0 0;display:none;position:fixed;inset:0}.search-dialog[open]{display:flex}.search-dialog::backdrop{backdrop-filter:blur(4px);background:#18231f8c}.search-panel{background:var(--paper);border:1px solid var(--ink);flex-direction:column;width:min(640px,100% - 32px);max-height:70vh;display:flex;overflow:hidden;box-shadow:0 20px 40px #18231f40}.search-header{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:16px 20px;display:flex}.search-input{font-family:var(--sans);color:var(--ink);background:0 0;border:none;outline:none;flex:1;font-size:18px}.search-input::placeholder{color:var(--muted)}.search-close-btn{border:1px solid var(--line);font-family:var(--mono);color:var(--muted);cursor:pointer;text-transform:uppercase;background:0 0;border-radius:2px;justify-content:center;align-items:center;padding:4px 8px;font-size:11px;display:inline-flex}.search-close-btn .mobile-close{display:none}.search-close-btn:hover{background:var(--ink);color:var(--paper)}.search-results{flex-direction:column;gap:8px;padding:12px 16px 20px;display:flex;overflow-y:auto}.search-result-item{border:1px solid var(--line);color:inherit;flex-direction:column;gap:4px;padding:12px 16px;text-decoration:none;transition:all .15s;display:flex}.search-result-item:hover,.search-result-item:focus-visible{border-color:var(--ink);background:#18231f0a;outline:none}.search-result-title{font-family:var(--sans);letter-spacing:-.02em;font-size:16px;font-weight:700}.search-result-excerpt{color:var(--muted);font-size:13px;line-height:1.5}.search-result-item:hover .search-result-excerpt{color:var(--ink)}.search-result-excerpt mark{color:var(--ink);background:#435c002e;padding:0 2px;font-weight:600}.search-empty{text-align:center;color:var(--muted);font-family:var(--mono);padding:40px 20px;font-size:13px}.search-footer{border-top:1px solid var(--line);font-family:var(--mono);color:var(--muted);text-transform:uppercase;background:#18231f05;justify-content:space-between;align-items:center;padding:10px 20px;font-size:11px;display:flex}@media (width<=640px){.search-dialog{padding-top:max(16px, env(safe-area-inset-top));padding-bottom:16px}.search-panel{border-radius:2px;width:calc(100% - 24px);max-height:85dvh}.search-header{gap:10px;padding:12px 14px}.search-input{font-size:16px}.search-footer{padding:8px 14px;font-size:10px}.search-footer span:first-child,.search-close-btn .desktop-esc{display:none}.search-close-btn .mobile-close{font-size:13px;line-height:1;display:inline}}.wiki-toc{border:1px solid var(--line);background:#18231f05;border-radius:2px;margin:0 0 36px;padding:16px 20px}.wiki-toc summary.toc-title{cursor:pointer;font:11px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--accent-green);user-select:none;justify-content:space-between;align-items:center;list-style:none;display:flex}.wiki-toc summary::-webkit-details-marker{display:none}.wiki-toc .toc-toggle-icon{font-size:12px;transition:transform .2s;display:inline-block}.wiki-toc[open] .toc-toggle-icon{transform:rotate(180deg)}.wiki-toc[open] .toc-list{margin-top:14px}.toc-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.toc-link{font-family:var(--sans);color:var(--muted);align-items:center;gap:8px;font-size:14px;text-decoration:none;transition:color .15s;display:inline-flex}.toc-link:hover{color:var(--ink)}.toc-link.is-active{color:var(--ink);font-weight:700}.toc-link.is-active:before{content:"→";color:var(--accent-green);font-family:var(--mono)}@media (width<=640px){.wiki-toc{margin:0 0 28px;padding:14px 16px}.toc-link{font-size:13.5px}}.not-found-section{flex-direction:column;justify-content:center;min-height:60vh;padding:60px 0 100px;display:flex}.not-found-code{font:700 clamp(64px, 14vw, 150px) var(--mono);letter-spacing:-.06em;color:var(--ink);margin-bottom:24px;line-height:.9}.not-found-code span{color:var(--accent-green)}.not-found-title{letter-spacing:-.04em;margin:0 0 20px;font-size:clamp(28px,5vw,56px);line-height:1.05}.not-found-text{color:var(--muted);max-width:480px;margin-bottom:35px;font-size:16px;line-height:1.6}.not-found-actions{flex-wrap:wrap;align-items:center;gap:16px;display:flex}@media (width<=640px){.not-found-section{padding:40px 0 70px}.not-found-actions{flex-direction:column;align-items:stretch;width:100%}.not-found-actions .button,.not-found-actions .search-trigger{text-align:center;justify-content:center;width:100%}}.flappy-trigger{font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:0;display:inline-flex}.flappy-trigger:hover{color:var(--accent-green)}.flappy-dialog{z-index:2100;background:0 0;border:none;justify-content:center;align-items:center;width:100%;max-width:100%;height:100%;max-height:100%;margin:0 auto;padding:0;display:none;position:fixed;inset:0}.flappy-dialog[open]{display:flex}.flappy-dialog::backdrop{backdrop-filter:blur(4px);background:#18231f9e}.flappy-panel{background:var(--paper);border:1px solid var(--ink);flex-direction:column;width:min(980px,100vw - 48px);height:min(680px,100dvh - 48px);display:flex;box-shadow:0 24px 48px #18231f4d}.flappy-header{border-bottom:1px solid var(--line);font:12px var(--mono);text-transform:uppercase;letter-spacing:.04em;background:#18231f06;flex-shrink:0;justify-content:space-between;align-items:center;gap:10px;padding:12px 18px;display:flex}.flappy-title-group{align-items:center;gap:8px;min-width:0;display:flex}.flappy-status-dot{background:var(--accent-green);border-radius:50%;flex-shrink:0;width:8px;height:8px}.flappy-title{white-space:nowrap;text-overflow:ellipsis;color:var(--ink);font-weight:500;overflow:hidden}.flappy-hud{color:var(--muted);flex-shrink:0;align-items:center;gap:16px;display:flex}.flappy-hud strong{color:var(--ink)}.flappy-close-btn{border:1px solid var(--line);font:11px var(--mono);color:var(--muted);cursor:pointer;text-transform:uppercase;background:0 0;border-radius:2px;padding:4px 10px}.flappy-close-btn:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}.flappy-canvas-wrap{background:var(--paper);flex:1;min-height:0;padding:16px;display:flex}#flappy-canvas{border:1px solid var(--ink);cursor:pointer;touch-action:manipulation;user-select:none;width:100%;height:100%;display:block}.flappy-footer{border-top:1px solid var(--line);font:11px var(--mono);color:var(--muted);background:#18231f05;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:10px 18px;display:flex}@media (width<=640px){.flappy-dialog{padding:0}.flappy-panel{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;box-shadow:none;border:none}.flappy-header{padding:max(12px, env(safe-area-inset-top)) 14px 12px;font-size:11px}.flappy-close-btn{border-color:var(--ink);color:var(--ink);padding:6px 10px;font-size:11px}.flappy-canvas-wrap{padding:0}#flappy-canvas{border:none}.flappy-footer{padding:10px 14px max(12px, env(safe-area-inset-bottom));flex-direction:column;align-items:flex-start;gap:4px;font-size:10.5px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
