@layer reset,tokens,layout,animations,components,contact,cv,in-view,wip,forms,a11y,blog;@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/v24-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwgknk-6nFg.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/v24-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwgknk-6nFg.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/v24-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwgknk-6nFg.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/v24-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwgknk-6nFg.woff2) format("woff2");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:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/v24-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwgknk-6nFg.woff2) format("woff2");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:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/v24-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwgknk-4.woff2) format("woff2");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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/v24-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwgknk-6nFg.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/v24-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwgknk-6nFg.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/v24-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwgknk-6nFg.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/v24-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwgknk-6nFg.woff2) format("woff2");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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/v24-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwgknk-6nFg.woff2) format("woff2");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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/v24-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwgknk-4.woff2) format("woff2");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:Plus Jakarta Sans;font-style:normal;font-weight:300;font-display:swap;src:url(/fonts/v12-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko70yygg_vbd-E.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:300;font-display:swap;src:url(/fonts/v12-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko50yygg_vbd-E.woff2) format("woff2");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:Plus Jakarta Sans;font-style:normal;font-weight:300;font-display:swap;src:url(/fonts/v12-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko40yygg_vbd-E.woff2) format("woff2");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:Plus Jakarta Sans;font-style:normal;font-weight:300;font-display:swap;src:url(/fonts/v12-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko20yygg_vb.woff2) format("woff2");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:Plus Jakarta Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/v12-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko70yygg_vbd-E.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/v12-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko50yygg_vbd-E.woff2) format("woff2");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:Plus Jakarta Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/v12-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko40yygg_vbd-E.woff2) format("woff2");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:Plus Jakarta Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/v12-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko20yygg_vb.woff2) format("woff2");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:Plus Jakarta Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/v12-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko70yygg_vbd-E.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/v12-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko50yygg_vbd-E.woff2) format("woff2");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:Plus Jakarta Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/v12-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko40yygg_vbd-E.woff2) format("woff2");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:Plus Jakarta Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/v12-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko20yygg_vb.woff2) format("woff2");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}@layer tokens{:root{color-scheme:dark;--hue-bg: 274;--hue-accent: 258;--hue-warm: 85;--hue-ok: 145;--bg: oklch(20% .052 var(--hue-bg));--surface: oklch(25% .069 var(--hue-bg));--surface-2: oklch(32% .092 var(--hue-bg));--ink: oklch(95% .005 var(--hue-warm));--muted: oklch(72% .03 var(--hue-accent));--muted-2: oklch(48% .046 var(--hue-accent));--accent: oklch(73% .07 var(--hue-accent));--accent-deep: oklch(62% .096 var(--hue-accent));--accent-fg: oklch(20% .052 var(--hue-bg));--rule: oklch(32% .092 var(--hue-bg));--rule-2: oklch(36% .092 var(--hue-bg));--ok: oklch(70% .1 var(--hue-ok));--nav-h: 4rem}.card .num,.card .lnk,.foot-inner,.scroll-cue .label,.rail-dot:before{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Consolas,monospace!important}*,*:before,*:after{box-sizing:border-box}html{margin:0;padding:0;background:var(--surface);scroll-snap-type:y mandatory;scroll-padding-top:var(--nav-h);scroll-behavior:smooth}body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:Plus Jakarta Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--accent);text-decoration:none}a:hover{opacity:.85}}@layer layout{.nav-bar{position:sticky;top:0;z-index:10;height:var(--nav-h);background:var(--surface);border-bottom:1px solid var(--rule)}.nav-inner{max-width:1100px;margin:0 auto;height:100%;padding:0 max(1.5rem,env(safe-area-inset-right)) 0 max(1.5rem,env(safe-area-inset-left));display:flex;justify-content:space-between;align-items:center;gap:2rem}.wordmark{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Consolas,monospace;font-weight:500;font-size:.95rem;letter-spacing:-.01em;color:var(--ink);text-decoration:none}.wordmark:hover{color:var(--accent)}.nav-links{display:flex;gap:1.5rem;font-size:.85rem;align-items:baseline}.nav-links a{color:var(--ink);text-decoration:none}.nav-links a:hover{color:var(--accent)}.menu-btn,.site-menu{display:none}@media (max-width:760px){.menu-btn{display:grid;place-items:center;width:44px;height:44px;margin-right:-11px;padding:0;background:none;border:0;cursor:pointer;color:var(--ink)}.menu-btn span,.menu-btn span:before,.menu-btn span:after{display:block;width:20px;height:1.5px;border-radius:1px;background:currentColor;transition:transform .2s ease,background-color .15s ease}.menu-btn span{position:relative}.menu-btn span:before,.menu-btn span:after{content:"";position:absolute;left:0}.menu-btn span:before{top:-6px}.menu-btn span:after{top:6px}.menu-btn[aria-expanded=true] span{background-color:transparent}.menu-btn[aria-expanded=true] span:before{transform:translateY(6px) rotate(45deg)}.menu-btn[aria-expanded=true] span:after{transform:translateY(-6px) rotate(-45deg)}.site-menu:not([hidden]){display:block;position:absolute;left:0;right:0;top:100%;max-height:calc(100dvh - var(--nav-h));overflow-y:auto;background:var(--surface);border-bottom:1px solid var(--rule);box-shadow:0 18px 40px #00000059;animation:menu-in .18s ease-out}.site-menu ol{list-style:none;margin:0;padding:.5rem max(1.5rem,env(safe-area-inset-right)) 1rem max(1.5rem,env(safe-area-inset-left))}.site-menu a{display:grid;grid-template-columns:3.2rem minmax(0,1fr);align-items:baseline;column-gap:.5rem;padding:.8rem 0;border-bottom:1px solid var(--rule);color:var(--ink);text-decoration:none}.site-menu li:last-child a{border-bottom:0}.site-menu .num{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.78rem;color:var(--accent);letter-spacing:.04em}.site-menu .title{font-size:1.05rem}.site-menu .brief{display:none}.site-menu a[aria-current=page] .title{color:var(--accent)}body.menu-open:after{content:"";position:fixed;inset:0;z-index:9;background:#00000073}}@keyframes menu-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.site-menu:not([hidden]){animation:none}.menu-btn span,.menu-btn span:before,.menu-btn span:after{transition:none}}.page{min-height:calc(100vh - var(--nav-h));min-height:calc(100svh - var(--nav-h));min-height:calc(100dvh - var(--nav-h));scroll-snap-align:start;scroll-snap-stop:always;display:flex;flex-direction:column;justify-content:flex-start;position:relative;max-width:1100px;margin:0 auto;padding:4.5rem max(1.5rem,env(safe-area-inset-right)) 7rem max(1.5rem,env(safe-area-inset-left))}.page.last{min-height:calc(100vh - var(--nav-h) - 4.5rem);min-height:calc(100svh - var(--nav-h) - 4.5rem);min-height:calc(100dvh - var(--nav-h) - 4.5rem);justify-content:flex-start;scroll-snap-stop:normal;padding:2.75rem max(1.5rem,env(safe-area-inset-right)) 3rem max(1.5rem,env(safe-area-inset-left))}@media (hover:none){.page.last{min-height:calc(100vh - var(--nav-h) - 6rem);min-height:calc(100svh - var(--nav-h) - 6rem);min-height:calc(100dvh - var(--nav-h) - 6rem)}}html:has(#page-1) footer{scroll-snap-align:end}.scroll-cue{position:absolute;bottom:2.5rem;left:50%;transform:translate(-50%);display:flex;align-items:center;justify-content:center;height:3rem;min-width:9rem;padding:0 1rem;border-radius:999px;color:var(--accent);text-decoration:none;transition:background .15s ease,color .15s ease}.scroll-cue .arrow,.scroll-cue .label{position:absolute;display:flex;align-items:center;justify-content:center;inset:0;transition:opacity .15s ease}.scroll-cue .arrow{font-size:1.6rem;line-height:1;opacity:1}.scroll-cue .arrow:before{content:"\2193";display:inline-block;animation:bob 2s ease-in-out infinite}.scroll-cue .label{font-family:JetBrains Mono,monospace;font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;opacity:0}.scroll-cue:hover{background:#94b0da1f;color:var(--accent-deep);opacity:1}.scroll-cue:hover .arrow{opacity:0}.scroll-cue:hover .label{opacity:1}#page-2 .section-h{margin-bottom:3rem}@media (max-width: 760px){.nav-bar .nav-links{display:none}.wordmark{white-space:nowrap}.nav-inner{padding:0 max(1.25rem,env(safe-area-inset-right)) 0 max(1.25rem,env(safe-area-inset-left))}.page,.page.last{padding:3rem max(1.5rem,env(safe-area-inset-right)) 4rem max(1.5rem,env(safe-area-inset-left))}}@media (hover: none) and (pointer: coarse){html{scroll-snap-type:none}.page.last{min-height:auto;scroll-snap-align:none;padding-bottom:4rem}footer{scroll-snap-align:none}.scroll-cue{display:none}}}@layer animations{.scroll-cue:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(.3rem)}}.side-rail{position:fixed;right:1.5rem;top:50%;transform:translateY(-50%);z-index:5;display:flex;flex-direction:column;gap:1.25rem;align-items:center;padding:.5rem}@media (max-width:760px){.side-rail{display:none}}.rail-dot{position:relative;width:.55rem;height:.55rem;border-radius:50%;background:var(--muted-2);border:0;padding:0;cursor:pointer;transition:background .2s ease,width .2s ease,height .2s ease}}@layer components{.rail-dot:hover{background:var(--muted)}.rail-dot.active{background:var(--accent);width:.7rem;height:.7rem}.rail-dot:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.rail-dot:before{content:attr(data-label);position:absolute;right:calc(100% + .85rem);top:50%;transform:translateY(-50%) translate(.4rem);font-family:JetBrains Mono,monospace;font-size:.72rem;color:var(--ink);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;background:var(--surface-2);padding:.4rem .7rem;border-radius:4px;border:1px solid var(--rule);opacity:0;pointer-events:none;transition:opacity .15s ease,transform .15s ease}.rail-dot:hover:before{opacity:1;transform:translateY(-50%) translate(0)}.section-h{font-family:Plus Jakarta Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-weight:400;font-size:clamp(2rem,5vw,2.8rem);line-height:1.1;margin:0 0 2.25rem;letter-spacing:-.012em;color:var(--ink)}.section-h .dots{letter-spacing:.15em;margin-left:.08em;font-weight:300}.signature{display:block;width:clamp(18rem,50vw,24rem);aspect-ratio:1035 / 342;margin:0;background-color:var(--accent);-webkit-mask-image:url(/assets/signature-mask.svg);mask-image:url(/assets/signature-mask.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:left center;mask-position:left center}.tagline{font-size:1.2rem;line-height:1.5;color:var(--muted);max-width:42ch;margin:2rem 0 0}.tagline strong{color:var(--ink);font-weight:500}.intro{font-size:1.05rem;line-height:1.7;color:var(--muted);max-width:60ch;margin:2.5rem 0 0}.signup{margin:3rem 0 0;max-width:60ch}.signup-prompt{margin:0 0 1rem;color:var(--muted);font-size:.95rem}.signup form{display:flex;align-items:stretch;gap:0;margin:0;border:1px solid var(--rule);border-radius:6px;background:var(--bg);overflow:hidden;transition:border-color .12s ease,box-shadow .12s ease}.signup form:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #94b0da26}.signup input[type=email]{flex:1 1 0;min-width:0;border:0;background:transparent;padding:.7rem .95rem;font:inherit;color:var(--ink);border-radius:0;outline:none}.signup input[type=email]::placeholder{color:var(--muted-2)}.signup button[type=submit]{flex:0 0 auto;border:0;background:var(--accent);color:var(--accent-fg);padding:.7rem 1.4rem;font:inherit;font-weight:500;border-radius:0;cursor:pointer;transition:background .12s ease}.signup button[type=submit]:hover{background:var(--accent-deep);opacity:.85}.cards{display:flex;flex-direction:column;gap:.75rem;max-width:62ch}.card{background:var(--surface);border:1px solid var(--rule);padding:.85rem 1.25rem;border-radius:6px;display:grid;grid-template-columns:auto 1fr auto;gap:1.25rem;align-items:center;transition:border-color .12s ease,transform .12s ease;text-decoration:none;color:inherit}.card:hover{border-color:var(--accent);transform:translate(2px);opacity:1}.card .num{font-family:JetBrains Mono,monospace;color:var(--accent);font-size:.82rem;letter-spacing:.04em}.card .card-line{margin:0;color:var(--ink);font-size:.98rem;line-height:1.4;display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap}.card .title{font-weight:500;color:var(--ink);width:5.25rem;display:inline-block;flex-shrink:0}.card .sep{color:var(--accent);font-weight:400}.card .brief{color:var(--muted);font-size:.92rem;font-weight:400}.card .lnk{font-family:JetBrains Mono,monospace;color:var(--accent);font-size:1.05rem;white-space:nowrap;letter-spacing:.04em;line-height:1}.card .lnk:after{content:"";display:inline-block;width:1.05em;height:1.05em;vertical-align:-.15em;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M18 16v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M18 16v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E") center/contain no-repeat}@media (max-width:600px){.card{padding:.75rem 1rem;gap:.85rem}.card .title{width:auto}.card .brief,.card .sep{display:none}}.about-body{max-width:60ch}.about-page{min-height:calc(100vh - var(--nav-h));min-height:calc(100svh - var(--nav-h));min-height:calc(100dvh - var(--nav-h));max-width:1100px;margin:0 auto;padding:4.5rem max(1.5rem,env(safe-area-inset-left)) 7rem max(1.5rem,env(safe-area-inset-right))}.about-col{max-width:62ch}.start{font-size:1.05rem;line-height:1.7;margin:2.3125rem 0 0}.start a{display:inline-flex;align-items:center;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--ink);text-decoration:none;white-space:nowrap;font-size:min(calc((.72rem * 1.7 + .1rem + 4px) / 1.1 * .7),calc((100vw - 3rem) / 17.4))}.start .pp{display:inline-flex;align-items:center;margin-right:.75em}.start .pp i{font-style:normal;letter-spacing:-.18em}.start .pp i:nth-child(1){color:color-mix(in oklch,var(--accent) 35%,transparent)}.start .pp i:nth-child(2){color:color-mix(in oklch,var(--accent) 65%,transparent)}.start .pp i:nth-child(3){color:var(--accent)}.start .cmd{display:inline-block;overflow:hidden;max-width:0;transition:color .15s ease;animation:start-type 1.4s steps(24,end) 2.4s forwards,start-typed .01s linear 3.8s forwards}.start .cur{display:inline-block;width:.55em;height:1.1em;margin-left:.15em;background:var(--accent)}.start a:hover .cmd,.start a:focus-visible .cmd{color:var(--accent)}@keyframes start-type{to{max-width:24ch}}@keyframes start-typed{to{max-width:none;overflow:visible}}@keyframes start-press{0%,84%,to{transform:none;border-bottom-width:3px}89%,94%{transform:translateY(2px);border-bottom-width:1px}}@media (hover:hover) and (pointer:fine){.start a:after{content:"\21b5  enter";content:"\21b5  enter" / "";font-size:.72rem;font-weight:600;color:var(--accent-fg);background:var(--accent);border:1px solid var(--accent-deep);border-bottom-width:3px;border-radius:5px;padding:.05rem .45rem;margin-left:.9rem;letter-spacing:.04em;opacity:0;animation:fade-up .4s ease-out 3.9s forwards,start-press 3s ease-in-out 5s infinite}}@media (prefers-reduced-motion:reduce){.start .cmd{animation:none;max-width:none;overflow:visible}.start a:after{animation:none;opacity:1}}.about-body p{margin:0 0 1.25rem;line-height:1.7;font-size:1.02rem;color:var(--muted)}.about-body strong{color:var(--ink);font-weight:500}.about-body a{border-bottom:1px solid var(--accent)}footer{border-top:1px solid var(--rule);background:var(--surface);padding:1.5rem 0 max(1.5rem,env(safe-area-inset-bottom))}.foot-inner{max-width:1100px;margin:0 auto;padding:0 max(1.5rem,env(safe-area-inset-right)) 0 max(1.5rem,env(safe-area-inset-left));font-family:JetBrains Mono,monospace;font-size:.78rem;color:var(--muted);line-height:1;display:flex;justify-content:space-between;align-items:center;gap:1rem}.foot-left{position:relative}.self-hosted{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.72rem;letter-spacing:.04em;color:var(--muted-2);white-space:nowrap;user-select:none}.foot-inner .copy{color:var(--ink);font-weight:500}.foot-inner a{color:var(--ink);font-weight:500;text-decoration:none}.foot-inner a:hover{color:var(--accent)}.foot-inner .dot{color:var(--accent);margin:0 .5rem}@media (max-width:600px){.foot-inner{align-items:baseline}.foot-inner .row-original{display:flex;flex-wrap:wrap;align-items:baseline}.foot-inner .copy{flex-basis:100%}.foot-inner .copy+.dot{display:none}}@media (max-width:340px){.foot-inner .dot-privacy{display:none}.foot-inner .foot-privacy{flex-basis:100%}}.scroll-cue .arrow-up{transform:rotate(180deg)}.signature-wrap{position:relative;display:block;width:clamp(18rem,50vw,24rem);aspect-ratio:1035 / 342;margin:0;cursor:default}.signature-wrap .signature{position:absolute;inset:0;width:100%;height:100%;margin:0}@media (prefers-reduced-motion: reduce){.signature-wrap{transition:none}}.signature-glare{position:absolute;inset:0;width:100%;height:100%;display:block;-webkit-mask-image:url(/assets/signature-mask.svg);mask-image:url(/assets/signature-mask.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:left center;mask-position:left center;background:linear-gradient(105deg,transparent 6%,rgba(242,241,236,.1) 40%,rgba(255,255,255,.8) 50%,transparent 54%);background-size:340% 100%;background-position:94% 0;background-repeat:no-repeat;pointer-events:none;opacity:0}@keyframes glare-loop{0%{opacity:0;background-position:71% 0}4%{opacity:1}38%{opacity:1}42.86%{opacity:0;background-position:29% 0}to{opacity:0;background-position:71% 0}}@media (prefers-reduced-motion: reduce){.signature-glare{animation:none;opacity:0}}.about-body .triad-list{list-style:none;padding:0;margin:0 0 1.25rem;max-width:60ch}.about-body .triad-list li{position:relative;margin:0;padding:0 0 0 3rem;line-height:1.7;font-size:1.02rem;color:var(--muted)}.about-body .triad-list li:before{content:attr(data-n);position:absolute;left:0;top:0;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--accent);font-size:.78rem;letter-spacing:.05em;line-height:1.7;padding-top:.18rem}@media (hover: none){.foot-inner a{display:inline-block;padding:.5rem 0;min-height:44px}.wordmark{display:inline-block;padding:.25rem 0;min-height:44px;line-height:44px}}footer{position:relative}.self-hosted{appearance:none;-webkit-appearance:none;background:none;border:0;padding:.25rem 0;cursor:help}.self-hosted:hover,.self-hosted:focus-visible{color:var(--accent);outline:none}.self-hosted:focus-visible{text-decoration:underline;text-underline-offset:3px}.stack-pop{position:absolute;right:var(--pop-right,1.5rem);bottom:var(--pop-bottom, calc(100% + 14px) );font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;white-space:nowrap;color:var(--muted);background:var(--surface-2);border:1px solid var(--rule-2);border-radius:6px;padding:.6rem .85rem;font-size:.74rem;letter-spacing:.02em;box-shadow:0 8px 24px #00000059;opacity:0;transform:translateY(6px);pointer-events:none;transition:opacity .15s ease,transform .18s cubic-bezier(.18,.78,.32,1);z-index:20}.stack-pop .s{color:var(--ink)}.stack-pop .sep{color:var(--accent);margin:0 .45rem}.stack-pop:before,.stack-pop:after{content:"";position:absolute;width:0;height:0;pointer-events:none}.stack-pop:before{right:var(--tx,24px);top:100%;border:9px solid transparent;border-top-color:var(--rule-2)}.stack-pop:after{right:calc(var(--tx,24px) + 1px);top:calc(100% - 1px);border:8px solid transparent;border-top-color:var(--surface-2)}footer:has(.self-hosted:hover) .stack-pop,footer:has(.self-hosted:focus-visible) .stack-pop,.stack-pop.open{opacity:1;transform:translateY(0);pointer-events:auto}@media (prefers-reduced-motion:reduce){.stack-pop{transition:opacity .12s ease;transform:none}}@media (max-width:600px){.stack-pop{white-space:normal;max-width:78vw}.stack-pop .brk{display:block;height:0;overflow:hidden;visibility:hidden}}.foot-right{display:flex;align-items:baseline;white-space:nowrap}.foot-inner a.rss{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.72rem;font-weight:400;letter-spacing:.06em;color:var(--muted-2)}.foot-inner a.rss .rss-g{display:inline-block;width:.95em;height:.95em;margin-right:.45em;vertical-align:-.12em;background:var(--accent);-webkit-mask:var(--feed-glyph) center/contain no-repeat;mask:var(--feed-glyph) center/contain no-repeat}.foot-inner a.rss:hover,.foot-inner a.rss[aria-expanded=true]{color:var(--accent)}.foot-right .dot-rss{font-size:.72rem;margin:0 .5rem}@media (max-width:600px){.foot-right{flex-direction:column-reverse;align-items:flex-end;margin-bottom:-2px}.foot-right .dot-rss{display:none}.foot-inner a.rss{position:relative;top:1px}}.feed-pop[hidden]{display:none}.feed-pop{position:absolute;left:var(--fp-left,1.5rem);bottom:var(--fp-bottom, calc(100% + 14px) );z-index:20;width:max-content;max-width:min(18.5rem,calc(100vw - 32px));background:var(--surface-2);border:1px solid var(--rule-2);border-radius:6px;padding:.8rem .85rem .85rem;box-shadow:0 8px 24px #00000059;opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity .15s ease,transform .18s cubic-bezier(.18,.78,.32,1),visibility 0s linear .18s}.feed-pop.open{opacity:1;visibility:visible;transform:translateY(0);transition:opacity .15s ease,transform .18s cubic-bezier(.18,.78,.32,1)}.feed-pop:before,.feed-pop:after{content:"";position:absolute;width:0;height:0;pointer-events:none}.feed-pop:before{left:var(--tx,24px);top:100%;border:9px solid transparent;border-top-color:var(--rule-2)}.feed-pop:after{left:calc(var(--tx,24px) + 1px);top:calc(100% - 1px);border:8px solid transparent;border-top-color:var(--surface-2)}.feed-pop .fp-line{margin:0 0 .65rem;font-size:.84rem;line-height:1.5;color:var(--muted);text-wrap:pretty}.feed-pop .fp-url{position:relative;overflow:hidden;display:block;width:100%;margin:0;padding:0;background:var(--bg);border:1px solid var(--rule);border-radius:4px;font:inherit;color:var(--ink);cursor:copy;text-align:left;transition:border-color .12s ease,box-shadow .12s ease}.feed-pop .fp-url:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #94b0da26}.feed-pop .fp-url .row,.feed-pop .fp-url .done{display:flex;align-items:center;gap:1rem;padding:.55rem .7rem;font-family:var(--mono);font-size:.76rem;letter-spacing:.01em;transition:transform .4s cubic-bezier(.18,.78,.32,1)}.feed-pop .fp-url .row{justify-content:space-between}.feed-pop .fp-url .u{-webkit-user-select:text;user-select:text}.feed-pop .fp-url .ic{flex:none;width:.9rem;height:.9rem;background:var(--accent);-webkit-mask:var(--copy-glyph) center/contain no-repeat;mask:var(--copy-glyph) center/contain no-repeat}.feed-pop .fp-url .done{position:absolute;inset:0;justify-content:center;background:var(--bg);color:var(--ok);font-size:.7rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase;transform:translateY(100%)}.feed-pop.copied .fp-url,.feed-pop.copied .fp-url:hover{border-color:color-mix(in oklch,var(--ok) 45%,var(--rule))}.feed-pop.copied .fp-url .row{transform:translateY(-100%)}.feed-pop.copied .fp-url .done{transform:translateY(0)}@media (hover:hover){.feed-pop .fp-url:hover{border-color:var(--accent)}}@media (hover:none){.feed-pop .fp-url .row,.feed-pop .fp-url .done{min-height:44px}}@media (prefers-reduced-motion:reduce){.feed-pop,.feed-pop.open{transition:opacity .12s ease;transform:none}.feed-pop .fp-url .row,.feed-pop .fp-url .done{transition:none}}.eyebrow{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.72rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin:0 0 1.1rem;line-height:1.2}.eyebrow.reserve{visibility:hidden}.eyebrow.reserve:after{content:"\a0"}}@layer contact{.contact-page{min-height:calc(100vh - var(--nav-h));min-height:calc(100svh - var(--nav-h));min-height:calc(100dvh - var(--nav-h));display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;max-width:1100px;margin:0 auto;padding:4.5rem max(1.5rem,env(safe-area-inset-left)) 7rem max(1.5rem,env(safe-area-inset-right))}.contact-col{max-width:60ch}.contact-intro{font-size:1.12rem;color:var(--muted);line-height:1.6;text-wrap:pretty;margin:0 0 3.2rem}.contact-intro em{color:var(--ink);font-style:normal;font-weight:500}.contact-cards .card .ico{display:grid;place-items:center}.contact-cards .card .ico svg{width:24px;height:24px;display:block;fill:var(--ink);transition:fill .12s ease}.contact-cards .card:hover .ico svg,.contact-cards .card:focus-visible .ico svg{fill:var(--accent)}.contact-cards .card .path{color:var(--muted);font-size:.92rem;font-weight:400;font-family:JetBrains Mono,monospace;letter-spacing:.01em}.contact-cards .card:nth-child(2){--i:1}.contact-cards .card:nth-child(3){--i:2}.contact-cards .card:nth-child(4){--i:3}.contact-cards .card:nth-child(5){--i:4}.contact-cards .card:nth-child(6){--i:5}.contact-cards .card:nth-child(7){--i:6}.contact-cards .card{animation:fade-up .55s ease-out both;animation-delay:calc(.15s + var(--i, 0) * .08s);will-change:opacity,transform}@media (max-width:600px){.contact-cards .card .title{width:auto}}@media (prefers-reduced-motion:reduce){.contact-cards .card .ico svg{transition:none}.contact-cards .card{animation:none!important;opacity:1;transform:none}}}@layer cv{.cv-page{max-width:1100px;margin:0 auto;padding:4.5rem max(1.5rem,env(safe-area-inset-left)) 7rem max(1.5rem,env(safe-area-inset-right));display:grid;grid-template-columns:1fr 1.55fr;gap:4rem;align-items:start}.cv-page .cv-rail{position:sticky;top:calc(var(--nav-h) + 4.5rem);align-self:start;display:flex;flex-direction:column;gap:0}.cv-page .cv-intro{color:var(--muted);font-size:1.05rem;line-height:1.6;margin:0 0 1.8rem;max-width:34ch}.cv-page .cv-pdf{display:inline-flex;align-items:center;gap:.6rem;align-self:flex-start;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-size:.8rem;letter-spacing:.04em;color:var(--accent);text-decoration:none;border:1px solid color-mix(in oklch,var(--accent) 38%,var(--rule-2));border-radius:6px;padding:.6rem .95rem;margin:0 0 1.8rem;transition:border-color .14s ease,background .14s ease}.cv-page .cv-pdf:hover{border-color:var(--accent);background:#94b0da12}.cv-page .cv-pdf svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}.cv-page .cv-pdf .meta{color:var(--muted-2)}.cv-page .chapters{list-style:none;margin:0;padding:0}.cv-page .chapters a{display:flex;align-items:center;gap:.9rem;padding:.55rem 0;text-decoration:none;font-size:.98rem;color:var(--muted-2);transition:color .15s ease}.cv-page .chapters a .rule{display:inline-block;width:1.5rem;height:1px;background:var(--muted-2);flex:none;transition:width .22s cubic-bezier(.22,.61,.36,1),background .15s ease}.cv-page .chapters a:hover{color:var(--muted)}.cv-page .chapters a:hover .rule{width:2rem}.cv-page .chapters a.active{color:var(--accent);font-weight:600}.cv-page .chapters a.active .rule{width:3rem;height:2px;background:var(--accent)}.cv-page .cv-content{min-width:0}.cv-page .cv-sec{margin:0 0 4.5rem;scroll-margin-top:calc(var(--nav-h) + 2rem)}.cv-page .lab{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-size:.72rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin:0 0 1.4rem;padding-left:1.25rem;display:block}.cv-page .cv-ph{border:1px dashed var(--rule-2);border-radius:14px;background:#ffffff05;padding:1.8rem 1.4rem;color:var(--muted-2);font-family:JetBrains Mono,monospace;font-size:.78rem;line-height:1.7}.cv-page .cv-content:has(.xp:hover) .xp{opacity:.5}.cv-page .cv-content:has(.xp:hover) .xp:hover{opacity:1}.cv-page .xp{display:grid;grid-template-columns:9rem 1fr;gap:1.4rem;padding:1.25rem;border:1px solid transparent;border-radius:14px;text-decoration:none;color:inherit;position:relative;transition:opacity .2s ease,background .2s ease,border-color .2s ease;margin:0 0 .3rem}.cv-page .xp:hover{background:var(--surface);border-color:var(--rule-2)}.cv-page .xp-left{display:flex;flex-direction:column;align-items:flex-start;gap:.95rem}.cv-page .xp-cert{align-items:center}.cv-page .xp-cert .xp-left{flex-direction:row;align-items:center;gap:2.2rem}.cv-page .xp-when{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;line-height:1.5}.cv-page .xp-when .yr{color:var(--accent);font-size:.78rem;font-weight:500}.cv-page .xp-when .yr.stack{line-height:1.45}.cv-page .xp-when .win{color:var(--muted-2);font-size:.62rem;letter-spacing:.04em;margin-top:.3rem;font-weight:500}.cv-page .dh{display:inline-block;width:.95em;border-top:1px solid currentColor;vertical-align:.3em;margin:0 .26em}.cv-page .xp-logo{display:flex;align-items:center;height:2.4rem}.cv-page .xp-logo img{width:auto;display:block}.cv-page .xp-logo.sq img{height:2.52rem}.cv-page .xp-logo.wd img{height:1.5rem;max-width:8.2rem}.cv-page .xp-logo.wd.prisma img{height:1.235rem}.cv-page .xp-logo.sq.exeter img{height:3.1752rem;margin-left:-4px}.cv-page .xp-logo.sq.warminster img{height:2.6334rem}.cv-page .xp-logo.mono img{filter:grayscale(1) brightness(0) invert(.82)}.cv-page .xp-role{font-size:1.05rem;font-weight:600;color:var(--ink);margin:0;line-height:1.3}.cv-page .xp:hover .xp-role{color:var(--accent)}.cv-page .xp-co{display:block;color:var(--muted);font-size:.92rem;margin:.2rem 0 0}.cv-page .xp-co .arr{color:var(--accent);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;margin-left:.4rem;display:inline-block;transition:transform .2s cubic-bezier(.22,.61,.36,1)}.cv-page .xp:hover .xp-co .arr{transform:translate(2px,-2px)}.cv-page .xp-desc{color:var(--muted);font-size:.93rem;line-height:1.6;margin:.85rem 0 .8rem;max-width:54ch}.cv-page .xp-tags{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem;margin:0;padding:0}.cv-page .xp-tags li{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-size:.68rem;letter-spacing:.01em;color:var(--accent);background:#94b0da0f;border:1px solid rgba(148,176,218,.16);border-radius:999px;padding:.24rem .64rem;transition:border-color .16s ease,background .16s ease}.cv-page .xp:hover .xp-tags li{border-color:#94b0da42;background:#94b0da1a}.cv-page .xp-tags .stars{font-size:.82rem;line-height:1;letter-spacing:.05em;vertical-align:-.07em}@media (max-width:900px){.cv-page{grid-template-columns:1fr;gap:2.4rem}.cv-page .cv-rail{position:static}}@media (max-width:680px){.cv-page .xp{grid-template-columns:1fr;gap:.9rem}}@media (prefers-reduced-motion:reduce){.cv-page .xp,.cv-page .xp-co .arr,.cv-page .chapters a .rule{transition:none}}@media print{@page{size:A4;margin:1.5cm 2cm}html,body{background:#fff!important;color:#1b1e3b!important}.nav-bar,footer,.skip-link,.spotlight,.cv-page .cv-foot,.cv-page .chapters,.cv-page .xp-co .arr{display:none!important}.cv-page{display:block!important;max-width:none!important;padding:0!important}.cv-page .cv-rail{position:static!important;margin:0 0 .8cm!important}.cv-page .cv-content{width:100%}.cv-page .eyebrow{color:#6b7194!important;margin-bottom:.2cm!important}.cv-page .section-h{color:#1b1e3b!important;margin-bottom:.3cm!important;font-size:18pt!important}.cv-page .cv-intro{color:#1b1e3b!important;font-size:10pt!important}.cv-page .cv-sec{margin-bottom:.6cm!important;page-break-inside:avoid;padding-top:.3cm}.cv-page .lab{color:#1b1e3b!important;padding-left:0!important;border-bottom:1px solid #ccc;padding-bottom:.1cm;margin-bottom:.3cm!important}.cv-page .cv-content:has(.xp:hover) .xp,.cv-page .xp{opacity:1!important;background:transparent!important;border:none!important;padding:0 0 .35cm!important;margin:0 0 .35cm!important;page-break-inside:avoid;grid-template-columns:7rem 1fr!important;gap:.8rem!important}.cv-page .xp-left{gap:.2rem!important}.cv-page .xp-when .yr{color:#1b1e3b!important}.cv-page .xp-when .win{color:#6b7194!important}.cv-page .xp-logo{display:none!important}.cv-page .xp-role{color:#1b1e3b!important;font-size:11pt!important}.cv-page .xp-co{color:#6b7194!important;font-size:9pt!important}.cv-page .xp-desc{color:#1b1e3b!important;font-size:10pt!important;max-width:none!important}.cv-page .xp-tags li{background:transparent!important;border:1px solid #aaa!important;color:#1b1e3b!important;font-size:8pt!important}}.cv-page .skill-cloud{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem;margin:0;padding:0 0 0 1.25rem}.cv-page .skill-wrap{position:relative;display:inline-flex}.cv-page{overflow-x:clip}.cv-page .skill{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-size:.72rem;letter-spacing:.01em;color:var(--accent);background:#94b0da12;border:1px solid rgba(148,176,218,.18);border-radius:999px;padding:.3rem .72rem;cursor:help;appearance:none;-webkit-appearance:none;transition:border-color .16s ease,background .16s ease,color .16s ease}.cv-page .skill:hover,.cv-page .skill:focus-visible,.cv-page .skill[aria-expanded=true]{color:#fff;font-weight:600;background:#94b0da2b;border-color:var(--accent);outline:none}.cv-page .skill:focus-visible{box-shadow:0 0 0 2px #94b0da59}.cv-page .skill-pop{position:absolute;left:50%;bottom:calc(100% + 11px);transform:translate(calc(-50% + var(--shift,0px))) translateY(6px);width:max-content;max-width:min(280px,78vw);font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:.78rem;line-height:1.5;color:var(--muted);text-align:left;background:var(--surface-2);border:1px solid var(--rule-2);border-radius:8px;padding:.6rem .8rem;box-shadow:0 10px 28px #00000061;opacity:0;pointer-events:none;z-index:30;transition:opacity .15s ease,transform .18s cubic-bezier(.18,.78,.32,1)}.cv-page .skill-pop:before,.cv-page .skill-pop:after{content:"";position:absolute;left:calc(50% - var(--shift,0px));width:0;height:0;pointer-events:none}.cv-page .skill-pop:before{top:100%;transform:translate(-50%);border:8px solid transparent;border-top-color:var(--rule-2)}.cv-page .skill-pop:after{top:calc(100% - 1px);transform:translate(-50%);border:7px solid transparent;border-top-color:var(--surface-2)}.cv-page .skill-wrap:focus-within .skill-pop,.cv-page .skill-pop.open{opacity:1;transform:translate(calc(-50% + var(--shift,0px))) translateY(0);pointer-events:auto}@media (hover:hover){.cv-page .skill-wrap:hover .skill-pop{opacity:1;transform:translate(calc(-50% + var(--shift,0px))) translateY(0);pointer-events:auto}}.cv-page .skill-stack{display:flex;flex-direction:column;gap:1.4rem}.cv-page .skill-pop .sk-hd{display:flex;align-items:center;gap:.35rem;margin-bottom:.42rem}.cv-page .skill-pop .sk-sector{font-family:JetBrains Mono,ui-monospace,monospace;font-size:.66rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}.cv-page .skill-pop .sk-dot{font-family:JetBrains Mono,ui-monospace,monospace;font-size:.66rem;font-weight:600;color:var(--accent)}.cv-page .skill-pop .sk-lvl{font-family:JetBrains Mono,ui-monospace,monospace;font-size:.66rem;font-weight:500;letter-spacing:.04em;color:var(--ink)}.cv-page .skill-pop .sk-desc{display:block;color:var(--muted)}@media (prefers-reduced-motion:reduce){.cv-page .skill,.cv-page .skill-pop{transition:opacity .12s ease}.cv-page .skill-pop,.cv-page .skill-wrap:hover .skill-pop,.cv-page .skill-wrap:focus-within .skill-pop,.cv-page .skill-pop.open{transform:translate(calc(-50% + var(--shift,0px)))}}@media print{.cv-page .skill-pop{display:none!important}.cv-page .skill-cloud{gap:.2cm!important}.cv-page .skill{background:transparent!important;border:1px solid #aaa!important;color:#1b1e3b!important;font-size:8pt!important;padding:.05cm .22cm!important}}.cv-page #cv-chapters{position:relative;padding-left:1.5rem}.cv-page #cv-chapters .cv-rail{display:contents}.cv-page .cv-railtrack{position:absolute;left:.5rem;top:0;width:1px;height:0;background:var(--rule-2,rgba(148,176,218,.18))}.cv-page .cv-railfill{position:absolute;left:.5rem;top:0;width:1px;height:0;background:linear-gradient(var(--accent-deep,#7896C5),var(--accent,#94B0DA));transition:height .1s linear}.cv-page .cv-raildot{position:absolute;left:.5rem;top:0;width:7px;height:7px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--accent,#94B0DA);box-shadow:0 0 10px #94b0dad9;transition:top .1s linear}.cv-page #cv-chapters a .rule{display:none}.cv-page #cv-chapters a{transition:color .15s ease}.cv-page #cv-chapters a.active{color:var(--accent,#94B0DA);font-weight:600}.cv-page .cv-more{display:flex;align-items:center;justify-content:space-between;margin:1.6rem 0 0 1.25rem}.cv-page .cv-more,.cv-page .cv-pdf{position:relative;overflow:hidden;border:1px solid transparent;border-radius:7px;background:linear-gradient(var(--bg,#1B1E3B),var(--bg,#1B1E3B)) padding-box,linear-gradient(90deg,var(--accent-deep),var(--accent)) border-box;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-size:.82rem;letter-spacing:.02em;padding:.6rem .95rem;color:var(--accent);text-decoration:none;transition:color .2s ease,box-shadow .25s ease,transform .2s ease}.cv-page .cv-more:before,.cv-page .cv-pdf:before{content:"";position:absolute;inset:0;background:var(--accent-deep);transform:scaleX(0);transform-origin:left;transition:transform .42s cubic-bezier(.22,.61,.36,1);z-index:0}.cv-page .cv-more:hover:before,.cv-page .cv-pdf:hover:before{transform:scaleX(1)}.cv-page .cv-more>*,.cv-page .cv-pdf>*{position:relative;z-index:1}.cv-page .cv-more:hover,.cv-page .cv-pdf:hover{color:#10132c;border-color:transparent;background:linear-gradient(var(--bg,#1B1E3B),var(--bg,#1B1E3B)) padding-box,linear-gradient(90deg,var(--accent-deep),var(--accent)) border-box}.cv-page .cv-more:hover .meta,.cv-page .cv-pdf:hover .meta{color:#10132c}.cv-page .cv-more svg,.cv-page .cv-pdf svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}.cv-page .cv-more:hover svg,.cv-page .cv-pdf:hover svg{stroke:#10132c;transform:translate(2px,-2px)}.cv-page .cv-pdf .meta{color:var(--muted-2)}.cv-page .cv-foot{position:relative;display:flex;align-items:center;justify-content:space-between;margin:1.8rem 0 2.4rem;padding-left:1.25rem}.cv-page .cv-foot .cv-pdf{margin:0 0 0 5px;position:relative;z-index:1}.cv-page .cv-foot .cv-sign{margin-left:0;margin-right:calc(10px + .5rem + clamp(3.2rem,9vw,3.9rem))}:is(.cv-page,.post-page,.about-page) .cv-sign{display:inline-flex;align-items:center;gap:.5rem;flex:none;margin-left:5px;position:relative;z-index:0}:is(.cv-page,.post-page,.about-page) .cv-sign-dash{width:2.8rem;height:2.5px;background:var(--accent);opacity:.9;flex:none}:is(.cv-page,.post-page,.about-page) .cv-sign-mark{display:block;width:clamp(3.2rem,9vw,3.9rem);aspect-ratio:250/366;background:url(/assets/cv/signature-hj.png?v=2) center/contain no-repeat;opacity:.9;position:absolute;left:3.3rem;top:50%;z-index:0;transform:translateY(calc(-50% + 10px))}}@layer in-view{.page .signature{clip-path:inset(0 100% 0 0)}.page .tagline,.page .intro,.page .start,.page .eyebrow,.page .section-h,.page .section-intro,.page .card,.page .about-body p,.page .about-body .triad-list li{opacity:0;transform:translateY(.5rem);will-change:opacity,transform}#page-1 .tagline{animation:fade-up .5s ease-out 1.5s forwards}#page-1 .intro{animation:fade-up .5s ease-out 1.65s forwards}#page-1 .start{animation:fade-up .5s ease-out 1.8s forwards}.page.in-view .signature{animation:sign-draw 1.5s cubic-bezier(.4,0,.2,1) forwards}.page.in-view .signature-glare{animation:glare-loop 7s linear 1.4s infinite}.page.in-view .eyebrow{animation:fade-up .6s ease-out 0ms forwards}.page.in-view .section-h{animation:fade-up .6s ease-out 80ms forwards}.page.in-view .section-intro{animation:fade-up .6s ease-out .15s forwards}.page.in-view .card{animation:fade-up .55s ease-out forwards}.page.in-view .card:nth-of-type(1){animation-delay:.2s}.page.in-view .card:nth-of-type(2){animation-delay:.3s}.page.in-view .card:nth-of-type(3){animation-delay:.4s}.page.in-view .card:nth-of-type(4){animation-delay:.5s}.page.in-view .card:nth-of-type(5){animation-delay:.6s}.page.in-view .card:nth-of-type(6){animation-delay:.7s}.page.in-view .card:nth-of-type(7){animation-delay:.8s}.page.in-view .about-body p{animation:fade-up .55s ease-out forwards}.page.in-view .about-body p:nth-of-type(1){animation-delay:80ms}.page.in-view .about-body p:nth-of-type(2){animation-delay:.28s}.page.in-view .about-body p:nth-of-type(3){animation-delay:.38s}.page.in-view .about-body .triad-list li{animation:fade-up .5s ease-out forwards}.page.in-view .about-body .triad-list li:nth-child(1){animation-delay:.18s}.page.in-view .about-body .triad-list li:nth-child(2){animation-delay:.24s}.page.in-view .about-body .triad-list li:nth-child(3){animation-delay:.3s}@keyframes sign-draw{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0% 0 0)}}@keyframes fade-up{0%{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.page .signature{clip-path:none}.page .signature-glare{animation:none!important;opacity:0}.page .tagline,.page .intro,.page .start,.page .eyebrow,.page .section-h,.page .section-intro,.page .card,.page .about-body p,.page .about-body .triad-list li{opacity:1;transform:none;animation:none!important}}}@layer wip{.wip-page{min-height:calc(100vh - var(--nav-h));min-height:calc(100svh - var(--nav-h));display:flex;flex-direction:column;justify-content:center;align-items:flex-start;max-width:1100px;margin:0 auto;padding:4.5rem 1.5rem 4rem}.wip-page .section-h{font-family:Plus Jakarta Sans,system-ui,sans-serif;font-style:italic;font-weight:400;font-size:clamp(2.5rem,6vw,3.6rem);line-height:1.1;margin:0 0 1.5rem;letter-spacing:-.012em;color:var(--ink)}.wip-brief{font-size:1.2rem;line-height:1.5;color:var(--muted);max-width:48ch;margin:0 0 1.5rem}.wip-status{font-family:JetBrains Mono,monospace;font-size:.88rem;line-height:1.6;color:var(--muted-2);letter-spacing:.02em;max-width:60ch;margin:0 0 3rem}.wip-status a{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent)}.wip-back{font-family:JetBrains Mono,monospace;font-size:.82rem;color:var(--accent);text-decoration:none;letter-spacing:.04em;transition:opacity .12s ease}.wip-back:hover{opacity:.7}}@layer forms{.honeypot{position:absolute;left:-9999px;top:-9999px;width:1px;height:1px;overflow:hidden}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.status{margin-top:1rem;padding:.65rem 1rem;border-radius:6px;font-size:.92rem;line-height:1.5;display:none;font-family:Plus Jakarta Sans,system-ui,sans-serif}.status.pending,.status.success,.status.info,.status.error{display:block}.status.pending{background:#a8aec81a;color:var(--muted)}.status.success{background:#94b0da24;color:var(--ink);border:1px solid rgba(148,176,218,.3)}.status.info{background:#a8aec81a;color:var(--muted-2)}.status.error{background:#f4a5a51a;color:#f4a5a5;border:1px solid rgba(244,165,165,.25)}}@layer a11y{:root{--muted-2:#8E96B6}.skip-link{position:absolute;top:-100px;left:1rem;z-index:100;background:var(--accent);color:var(--bg);padding:.6rem 1rem;border-radius:4px;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-weight:600;font-size:.9rem;text-decoration:none;transition:top .15s ease-out}.skip-link:focus{top:1rem;outline:2px solid var(--ink);outline-offset:2px}.nav-links a:focus-visible,.foot-inner a:focus-visible,.card:focus-visible,.wordmark:focus-visible,.rail-dot:focus-visible,.signup input:focus-visible,.signup button:focus-visible,.start a:focus-visible,.menu-btn:focus-visible,.site-menu a:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.banner{max-width:60ch;margin:0 0 1.25rem;padding:.75rem 1.25rem;border:1px solid var(--rule);border-radius:6px;font-size:.92rem;background:var(--surface);color:var(--ink)}.banner-success{border-color:var(--accent);background:#94b0da1a}.banner-info{color:var(--muted)}.banner-error{border-color:#e07a5f;background:#e07a5f14}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.noscript-notice{margin:0 0 1.25rem;padding:.6rem .85rem;background:var(--surface);border-left:2px solid var(--accent);color:var(--muted);font-size:.85rem;line-height:1.55}::selection{background:var(--accent);color:var(--accent-fg)}::-moz-selection{background:var(--accent);color:var(--accent-fg)}.foot-inner{position:relative;overflow:hidden;line-height:1.6}.foot-inner .row-original,.foot-inner .row-confirm{transition:transform .4s cubic-bezier(.18,.78,.32,1);will-change:transform}.foot-inner .row-confirm{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--surface);color:var(--ok, #7EBA8F);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-size:.78rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase;transform:translateY(100%)}footer.copied .row-original{transform:translateY(-100%)}footer.copied .row-confirm{transform:translateY(0)}@media (prefers-reduced-motion: reduce){.foot-inner .row-original,.foot-inner .row-confirm{transition:none}}:root{--ok: #7EBA8F }.spotlight{position:fixed;inset:0;pointer-events:none;z-index:1;background:radial-gradient(450px circle at var(--mx, -200px) var(--my, -200px),rgba(148,176,218,.06),transparent 78%);transition:background .3s ease}@media (prefers-reduced-motion: reduce){.spotlight{transition:none}}@media (hover: none),(max-width: 760px){.spotlight{display:none}}.card,.signup form,.banner,.nl-page .nl-form button,.blog-index .shelf .row,.blog-index .shelf .bk,.fig-page figure.dg,.start,.blog-index .status,.feed-pop .fp-box,.cv-page .xp,.cv-page .cv-more,.cv-page .cv-pdf,.cv-page .skill{position:relative;z-index:2}.scroll-cue{z-index:2}.scroll-cue:hover{background:color-mix(in srgb,rgb(148 176 218) 12%,var(--bg))}.blog-index .banner-success{background:color-mix(in srgb,rgb(148 176 218) 10%,var(--bg))}.blog-index .banner-error{background:color-mix(in srgb,rgb(224 122 95) 8%,var(--bg))}.blog-index .status.pending,.blog-index .status.info{background:color-mix(in srgb,rgb(168 174 200) 10%,var(--bg))}.blog-index .status.success{background:color-mix(in srgb,rgb(148 176 218) 14%,var(--bg))}.blog-index .status.error{background:color-mix(in srgb,rgb(244 165 165) 10%,var(--bg))}.cv-page .skill{background:color-mix(in srgb,rgb(148 176 218) 7%,var(--bg))}.cv-page .skill:hover,.cv-page .skill:focus-visible,.cv-page .skill[aria-expanded=true]{background:color-mix(in srgb,rgb(148 176 218) 17%,var(--bg))}.cv-page .xp-tags li{background:color-mix(in srgb,rgb(148 176 218) 6%,var(--bg))}.cv-page .xp:hover .xp-tags li{background:color-mix(in srgb,rgb(148 176 218) 10%,var(--surface))}.page-404{background:var(--bg);min-height:100vh;margin:0;display:flex;align-items:center;justify-content:center;font-family:Plus Jakarta Sans,system-ui,-apple-system,sans-serif}.not-found{display:flex;align-items:center;gap:1.25rem;color:var(--ink);position:relative;z-index:1}.nf-code{font-size:1.5rem;font-weight:500;letter-spacing:-.01em;color:var(--ink)}.nf-rule{display:inline-block;width:1px;height:2.25rem;background:var(--rule-2, #3F4577)}.nf-msg{font-size:.92rem;color:var(--muted);font-weight:300;letter-spacing:.01em}footer{position:relative;z-index:10}@media print{@page{size:A4;margin:2cm}html,body{background:#f2f1ec!important;color:#1b1e3b!important;height:auto!important;overflow:visible!important;scroll-snap-type:none!important;font-family:Plus Jakarta Sans,system-ui,sans-serif!important;font-size:11pt!important;line-height:1.55!important}.nav-bar,footer,.side-rail,.scroll-cue,.spotlight,.signup,#signup,.start,.signature-glare,.copy-toast,.row-confirm,.skip-link,.noscript-notice{display:none!important}*,*:before,*:after{animation:none!important;transition:none!important;filter:none!important}.page{min-height:auto!important;height:auto!important;max-width:100%!important;padding:0 0 1cm!important;margin:0 0 1.5cm!important;scroll-snap-align:none!important;page-break-after:always;page-break-inside:avoid;break-after:page;break-inside:avoid}.page.last,main>.page:last-child{page-break-after:auto;break-after:auto}.signature{background-color:#1b1e3b!important;background-image:none!important;width:14cm!important;margin:0 0 1cm!important}.signature-wrap,.signature-wrap:hover{filter:none!important}.signature-wrap{cursor:default!important}.tagline{font-size:16pt!important;line-height:1.4!important;color:#1b1e3b!important;margin:0 0 1cm!important;max-width:14cm!important}.tagline strong{color:#1b1e3b!important;font-weight:600!important}.intro{font-size:11pt!important;line-height:1.55!important;color:#4a5478!important;max-width:14cm!important;margin:0!important}.section-h{font-family:"Instrument Serif",Georgia,serif!important;font-weight:400!important;font-size:24pt!important;line-height:1.15!important;color:#1b1e3b!important;margin:0 0 1cm!important}.section-h .dots{color:#4a5478!important}.about-body{max-width:14cm!important}.about-body p{font-size:11pt!important;line-height:1.6!important;color:#1b1e3b!important;margin:0 0 .5cm!important}.about-body strong{color:#1b1e3b!important;font-weight:600!important}.about-body .triad-list{margin:.3cm 0 .6cm!important;padding:0!important}.about-body .triad-list li{font-size:11pt!important;line-height:1.6!important;color:#1b1e3b!important;padding:0 0 0 2.5cm!important;margin:0 0 .15cm!important}.about-body .triad-list li:before{color:#3d5a8a!important;font-family:JetBrains Mono,ui-monospace,monospace!important;font-size:9pt!important}.cards{max-width:14cm!important}.card{background:transparent!important;border:none!important;border-bottom:1px solid #C5C2B5!important;border-radius:0!important;padding:.4cm 0!important;gap:1cm!important;transform:none!important}.card .num{color:#3d5a8a!important;font-size:9pt!important}.card .title{color:#1b1e3b!important;font-weight:600!important}.card .sep{color:#3d5a8a!important}.card .brief{color:#4a5478!important;font-size:10pt!important}.card .lnk{color:#3d5a8a!important}a{color:#3d5a8a!important;text-decoration:underline!important;text-underline-offset:2px!important}::selection{background:transparent!important;color:inherit!important}.wip-page{min-height:auto!important;max-width:14cm!important;padding:0!important;margin:0!important}.wip-page .section-h{font-style:italic!important;font-size:32pt!important;line-height:1.1!important;margin:0 0 .8cm!important}.wip-brief{font-size:14pt!important;line-height:1.5!important;color:#1b1e3b!important;max-width:14cm!important;margin:0 0 .8cm!important}.wip-status{font-family:JetBrains Mono,monospace!important;font-size:10pt!important;line-height:1.6!important;color:#4a5478!important;max-width:14cm!important;margin:0 0 1cm!important}.wip-status a{color:#3d5a8a!important}.wip-back{display:none!important}}.section-h,.tagline,.wip-page .section-h{text-wrap:balance}.intro,.about-body p,.wip-brief,.wip-status,.nf-msg{text-wrap:pretty}@view-transition{navigation: auto;}.nav-bar{view-transition-name:site-nav}footer{view-transition-name:site-footer}::view-transition-old(root),::view-transition-new(root){animation-duration:.22s;animation-timing-function:cubic-bezier(.4,0,.2,1)}::view-transition-old(site-nav),::view-transition-new(site-nav),::view-transition-old(site-footer),::view-transition-new(site-footer){animation-duration:.18s;animation-timing-function:ease}@media (prefers-reduced-motion: reduce){::view-transition-old(*),::view-transition-new(*){animation-duration:.01ms!important}}.signup form:has(input[type=email]:user-invalid:not(:placeholder-shown)){border-color:#db8e7a}.signup form:has(input[type=email]:user-valid:not(:placeholder-shown)){border-color:color-mix(in oklch,var(--ok) 75%,var(--accent))}}@layer blog{:root{--stopwatch-glyph:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='10' x2='14' y1='2' y2='2'/%3E%3Cline x1='12' x2='15' y1='14' y2='11'/%3E%3Ccircle cx='12' cy='14' r='8'/%3E%3C/svg%3E");--box-arrow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M18 16v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E");--feed-glyph:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11a9 9 0 0 1 9 9'/%3E%3Cpath d='M4 4a16 16 0 0 1 16 16'/%3E%3Ccircle cx='5' cy='19' r='1.1'/%3E%3C/svg%3E");--copy-glyph:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='13' height='13' x='9' y='9' rx='2'/%3E%3Cpath d='M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1'/%3E%3C/svg%3E");--mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Consolas,monospace;--warn:oklch(78% .1 35)}.blog-index .eyebrow a,.post-page .eyebrow a{color:inherit;text-decoration:none}.blog-index .eyebrow a:hover,.post-page .eyebrow a:hover{color:var(--ink)}.owner-note{font-family:var(--mono);font-size:.72rem;letter-spacing:.06em;color:var(--warn);margin:0 0 1.5rem}.blog-index .signup,.post-page .signup{margin:3rem 0 0;max-width:none;padding:1.5rem 0 0;border-top:1px solid var(--rule)}.blog-index .signup{margin-top:2.75rem;padding-top:0;border-top:0}.blog-index{min-height:calc(100vh - var(--nav-h));min-height:calc(100svh - var(--nav-h));max-width:1100px;margin:0 auto;padding:4.5rem max(1.5rem,env(safe-area-inset-right)) 7rem max(1.5rem,env(safe-area-inset-left))}.blog-index .blog-col{max-width:62ch}.blog-index .intro{font-size:1.12rem;line-height:1.6;color:var(--muted);text-wrap:pretty;margin:0 0 2.75rem}.blog-index .intro p{margin:0}.blog-index .intro p+p{margin-top:1.25rem}@media (min-width:761px){.blog-index .intro p{text-align:justify}}.blog-index .shelf{margin:2.75rem 0 0}.blog-index .now-label{margin:0 0 1rem;padding:0;font-family:var(--mono);font-size:.72rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}.blog-index .blog-col:has(>.shelf) .group{margin-right:24px}.blog-index .shelf .row{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(min(18rem,100%),1fr);gap:1.25rem;align-items:start;overflow-x:auto;padding:0 12px 14px 0;scroll-snap-type:x proximity}.blog-index .shelf .row:has(>details[open]){display:block;overflow:visible}.blog-index .shelf .row:has(>details[open])>details:not([open]){display:none}.blog-index .shelf .row.more{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 3rem),rgb(0 0 0 / .15));mask-image:linear-gradient(to right,#000 calc(100% - 3rem),#00000026)}.blog-index .shelf .bk{min-width:0;scroll-snap-align:start;margin:0 12px 12px 0;background:var(--surface);border:1px solid var(--rule);border-radius:10px;box-shadow:6px 6px 0 -1px var(--surface),6px 6px 0 0 var(--rule),12px 12px 0 -1px var(--surface),12px 12px 0 0 var(--rule);transition:border-color .12s ease}.blog-index .shelf .bk[open]{border-color:var(--accent)}@media (hover:hover){.blog-index .shelf .bk:hover{border-color:var(--accent)}}.blog-index .shelf .bk[open]{animation:menu-in .18s ease-out}.blog-index .shelf summary{list-style:none;cursor:pointer;position:relative;display:flex;flex-direction:column;gap:.35rem;padding:1.1rem 3rem 1.1rem 1.25rem;border-radius:10px}.blog-index .shelf summary::-webkit-details-marker{display:none}.blog-index .shelf summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.blog-index .shelf .ttl{font-size:1.25rem;font-weight:500;color:var(--ink)}.blog-index .shelf .meta{font-family:var(--mono);font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-2)}.blog-index .shelf .tg{position:absolute;right:1.15rem;top:1.25rem;width:14px;height:14px}.blog-index .shelf .tg:before,.blog-index .shelf .tg:after{content:"";position:absolute;left:0;top:6.25px;width:14px;height:1.5px;background:var(--accent)}.blog-index .shelf .tg:after{transform:rotate(90deg);transition:transform .2s ease}.blog-index .shelf details[open]>summary .tg:after{transform:rotate(0)}.blog-index .shelf .parts{list-style:none;margin:0;padding:.15rem 1.25rem .9rem;border-top:1px solid var(--rule)}.blog-index .shelf .parts li{display:grid;grid-template-columns:3.4rem minmax(0,1fr);align-items:baseline;padding:.6rem 0;border-bottom:1px solid var(--rule);color:var(--ink);font-size:.95rem}.blog-index .shelf .parts li:last-child{border-bottom:0}.blog-index .shelf .parts .k{font-family:var(--mono);font-size:.74rem;letter-spacing:.06em;color:var(--accent)}.blog-index .shelf .parts a.t{justify-self:stretch;display:flex;justify-content:space-between;align-items:baseline;gap:1rem;color:var(--ink);text-decoration:underline 2px color-mix(in oklch,var(--accent) 45%,transparent);text-underline-offset:6px;transition:color .12s ease,text-decoration-color .12s ease}.blog-index .shelf .parts a.t:after{content:"";flex:none;align-self:center;width:1.05em;height:1.05em;background:var(--accent);-webkit-mask:var(--box-arrow) center/contain no-repeat;mask:var(--box-arrow) center/contain no-repeat}.blog-index .shelf .parts a.t:hover{color:var(--accent);text-decoration-color:var(--accent)}.blog-index .shelf .parts .more{color:var(--muted-2)}@media (max-width:600px){.blog-index .shelf .row:has(>:nth-child(2)){grid-auto-columns:82%}}@media (prefers-reduced-motion:reduce){.blog-index .shelf .bk[open]{animation:none}}.blog-index .empty{font-family:var(--mono);font-size:.88rem;line-height:1.6;color:var(--muted-2);letter-spacing:.02em;margin:0}.blog-index .group+.group{margin-top:2.25rem}.blog-index .group-head{display:flex;align-items:center;gap:1rem;margin:0 0 1rem;padding:0;font-family:var(--mono);font-size:.72rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}.blog-index .group-head .rule{flex:1 1 auto;height:1px;background:var(--rule-2)}.blog-index .group-head .n{color:var(--muted-2);letter-spacing:.06em;text-transform:none;font-weight:400}.blog-index .blog-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.blog-index .blog-rows>li{margin:0}.blog-index .post{padding:1rem 1.25rem;align-items:baseline;column-gap:1.25rem;row-gap:.4rem;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"num meta lnk" "title title title" "brief brief brief"}.blog-index .post:hover{transform:none}.blog-index .post:focus-visible{border-radius:6px}.blog-index .post .card-line{display:contents}.blog-index .post .num{grid-area:num}.blog-index .post .lnk{grid-area:lnk;align-self:center}.blog-index .post .title{grid-area:title;width:auto;display:block;margin:.15rem 0 0;min-width:0;font-size:1.05rem;line-height:1.35;font-weight:500;color:var(--ink);text-wrap:balance}.blog-index .post .brief{grid-area:brief;display:block;margin:0;font-size:.92rem;line-height:1.55;color:var(--muted);text-wrap:pretty}.blog-index .post-meta{grid-area:meta;margin:0;white-space:nowrap;font-family:var(--mono);font-size:.78rem;letter-spacing:.02em;line-height:1.5;color:var(--muted-2)}.blog-index .post-meta time{color:var(--accent);font-weight:500}.blog-index .post-meta .dot{color:var(--accent);margin:0 .5rem}.blog-index .post.is-draft .rt{color:var(--warn)}@media (max-width:760px){.blog-index{padding:3rem max(1.5rem,env(safe-area-inset-right)) 4rem max(1.5rem,env(safe-area-inset-left))}}@media (max-width:600px){.blog-index .post{padding:.9rem 1rem 1rem;column-gap:.85rem;row-gap:.35rem}.blog-index .post .brief{display:block}}.post-page{max-width:1100px;margin:0 auto;padding:4.5rem max(1.5rem,env(safe-area-inset-right)) 6rem max(1.5rem,env(safe-area-inset-left))}.post-page{min-height:calc(100vh - var(--nav-h));min-height:calc(100svh - var(--nav-h));min-height:calc(100dvh - var(--nav-h))}.post-page .sheet{max-width:calc(66ch + 8rem);margin:0 auto;background:var(--surface);border:1px solid var(--rule);border-radius:10px;padding:3.5rem 4rem;box-shadow:0 1px #ffffff08 inset,0 18px 50px #00000047}.post-page .col{max-width:66ch;margin:0 auto}.post-page .post-title{font-weight:400;font-size:clamp(2rem,5vw,2.8rem);line-height:1.12;letter-spacing:-.012em;color:var(--ink);margin:0 0 1.1rem;text-wrap:balance}.post-page .standfirst{font-size:1.2rem;line-height:1.5;color:var(--muted);margin:0 0 1.25rem;max-width:52ch;text-wrap:pretty}.post-page .post-top{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap}.post-page .post-top time,.post-page .post-top .rt{text-transform:none;letter-spacing:.06em;font-size:.78rem}.post-page .post-top .dot{margin:0 .5rem}.post-page .head>.post-title:last-child{margin-bottom:0}.post-page .head{margin:0 0 3.25rem}.post-page .head .owner-note{margin:1rem 0 0}:is(.post-page,.about-page) .end{display:flex;justify-content:flex-end;margin:2.5rem 0 0;padding:1.4rem 0 2.2rem}:is(.post-page,.about-page) .end .cv-sign{margin-left:0;margin-right:calc(.5rem + clamp(3.2rem,9vw,3.9rem))}.post-page .follow{--mail-glyph:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='m3.5 6.5 8.5 6.5 8.5-6.5'/%3E%3C/svg%3E");margin:2.5rem 0 0}.post-page .follow>summary{display:inline-flex;align-items:center;gap:.45em;list-style:none;cursor:pointer;font-family:var(--mono);font-size:.72rem;letter-spacing:.06em;color:var(--muted-2);transition:color .12s ease}.post-page .follow>summary::-webkit-details-marker{display:none}.post-page .follow>summary:hover,.post-page .follow[open]>summary{color:var(--ink)}.post-page .follow>summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:3px}.post-page .follow .mail-g{display:inline-block;width:.95em;height:.95em;background:var(--accent);-webkit-mask:var(--mail-glyph) center/contain no-repeat;mask:var(--mail-glyph) center/contain no-repeat}.post-page .follow-box{position:relative;width:min(19rem,100%);margin:14px 0 0;padding:.8rem .9rem .9rem;background:var(--surface-2);border:1px solid var(--rule-2);border-radius:6px;box-shadow:0 10px 30px -12px #0009}.post-page .follow-box:before,.post-page .follow-box:after{content:"";position:absolute;width:0;height:0;pointer-events:none}.post-page .follow-box:before{left:24px;bottom:100%;border:9px solid transparent;border-bottom-color:var(--rule-2)}.post-page .follow-box:after{left:25px;bottom:calc(100% - 1px);border:8px solid transparent;border-bottom-color:var(--surface-2)}.post-page .follow[open] .follow-box{animation:follow-in .18s cubic-bezier(.18,.78,.32,1)}@keyframes follow-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.post-page .follow[open] .follow-box{animation:none}}.post-page .follow-box .signup{margin:0;padding:0;border:0;max-width:none}.post-page .follow-box .signup-prompt{margin:0 0 .7rem;font-size:.84rem;line-height:1.5;color:var(--muted)}.post-page .follow-box .signup form{border-radius:5px}.post-page .follow-box .signup input[type=email]{padding:.55rem .7rem;font-size:.82rem}.post-page .follow-box .signup button[type=submit]{padding:.55rem .85rem;font-size:.82rem}.post-page .follow-box .status{font-size:.8rem}.post-page .article{position:relative;font-size:1.075rem;line-height:1.75;color:color-mix(in oklch,var(--ink) 80%,var(--muted))}.post-page .article p{margin:0 0 1.35rem;text-wrap:pretty}.post-page .article a{color:var(--accent);text-decoration:none;border-bottom:1px solid color-mix(in oklch,var(--accent) 45%,transparent)}.post-page .article a:hover{border-bottom-color:var(--accent)}.post-page .article strong{color:var(--ink);font-weight:500}.post-page .article h2{font-weight:500;font-size:1.45rem;line-height:1.3;color:var(--ink);margin:3rem 0 1rem;scroll-margin-top:calc(var(--nav-h) + 2rem);text-wrap:balance}.post-page .article>h2:first-child{margin-top:0}.post-page .article h3{font-weight:500;font-size:1.15rem;line-height:1.35;color:var(--ink);margin:2.25rem 0 .75rem;scroll-margin-top:calc(var(--nav-h) + 2rem)}.post-page .article :not(pre)>code{font-family:var(--mono);font-size:.86em;background:var(--bg);border:1px solid var(--rule-2);border-radius:4px;padding:.05em .35em}.post-page .article ul,.post-page .article ol{margin:0 0 1.35rem;padding-left:1.4rem}.post-page .article li{margin:.35rem 0;padding-left:.3rem}.post-page .article li>p{margin:0 0 .5rem}.post-page .article ul li::marker{color:var(--accent)}.post-page .article ol li::marker{color:var(--accent);font-family:var(--mono);font-size:.85em}.post-page .article blockquote{margin:2rem 0;padding:1.25rem 1.5rem 1.2rem 3.25rem;position:relative;background:var(--surface-2);border-radius:6px}.post-page .article blockquote:before{content:"\201c";position:absolute;left:1.05rem;top:.55rem;font-size:2.6rem;line-height:1;color:var(--accent);font-family:Georgia,serif}.post-page .article blockquote p{margin:0 0 .6rem;font-size:1.15rem;line-height:1.55;color:var(--ink)}.post-page .article blockquote p:last-child{margin-bottom:0}.post-page .article blockquote cite{display:block;font-style:normal;font-family:var(--mono);font-size:.74rem;color:var(--muted);margin-top:.2rem}.post-page .article hr{border:0;height:1px;background:var(--rule-2);margin:2.5rem 0}.post-page .code{position:relative;margin:1.75rem 0;background:var(--bg);border:1px solid var(--rule-2);border-radius:6px}.post-page .code .copy{position:absolute;top:.55rem;right:.7rem;font-family:var(--mono);font-size:.7rem;color:var(--muted-2);background:var(--bg);border:1px solid var(--rule-2);border-radius:4px;padding:.1rem .45rem;cursor:pointer;line-height:1.5}.post-page .code .copy:hover,.post-page .code .copy:focus-visible{color:var(--accent);border-color:var(--accent);outline:none}.post-page .code .copy.done{color:var(--ok)}.post-page .code pre{margin:0;padding:1rem 1.1rem;overflow-x:auto;font-family:var(--mono);font-size:.86rem;line-height:1.7;color:var(--ink)}.post-page .codehilite{background:transparent}.post-page .codehilite .c,.post-page .codehilite .c1,.post-page .codehilite .cm,.post-page .codehilite .ch,.post-page .codehilite .cp,.post-page .codehilite .cpf,.post-page .codehilite .cs{color:#8e96b6}.post-page .codehilite .k,.post-page .codehilite .kc,.post-page .codehilite .kd,.post-page .codehilite .kn,.post-page .codehilite .kp,.post-page .codehilite .kr,.post-page .codehilite .kt,.post-page .codehilite .nt,.post-page .codehilite .nb,.post-page .codehilite .na,.post-page .codehilite .nf,.post-page .codehilite .fm{color:var(--accent)}.post-page .codehilite .s,.post-page .codehilite .s1,.post-page .codehilite .s2,.post-page .codehilite .sa,.post-page .codehilite .sb,.post-page .codehilite .sc,.post-page .codehilite .sd,.post-page .codehilite .se,.post-page .codehilite .sh,.post-page .codehilite .si,.post-page .codehilite .sx,.post-page .codehilite .sr,.post-page .codehilite .ss,.post-page .codehilite .l,.post-page .codehilite .ld,.post-page .codehilite .dl{color:#7eba8f}.post-page .codehilite .m,.post-page .codehilite .mi,.post-page .codehilite .mf,.post-page .codehilite .mh,.post-page .codehilite .mo,.post-page .codehilite .mb,.post-page .codehilite .il{color:#d8ba79}.post-page .codehilite .p,.post-page .codehilite .o,.post-page .codehilite .ow,.post-page .codehilite .pi{color:var(--ink)}.post-page .codehilite .nv,.post-page .codehilite .vi,.post-page .codehilite .vg,.post-page .codehilite .nc,.post-page .codehilite .nn{color:#b7ccec}.post-page .codehilite .gd{color:#f4a5a5}.post-page .codehilite .gi{color:#7eba8f}.post-page .codehilite .err{color:#f4a5a5}.post-page .tbl{margin:1.75rem 0;overflow-x:auto;background:var(--bg);border:1px solid var(--rule-2);border-radius:6px}.post-page .tbl table{width:100%;border-collapse:collapse;font-size:.95rem}.post-page .tbl th{text-align:left;font-family:var(--mono);font-size:.7rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);padding:.7rem .9rem;background:var(--surface-2)}.post-page .tbl td{padding:.65rem .9rem;border-top:1px solid var(--rule);color:var(--ink);vertical-align:top}.post-page .tbl tbody tr:nth-child(2n) td{background:color-mix(in oklch,var(--surface) 60%,var(--bg))}.post-page .tbl td.num{font-family:var(--mono);font-size:.85rem;color:var(--accent)}.post-page figure{margin:2rem 0}.post-page figure img{display:block;width:100%;height:auto}.post-page figure figcaption{font-family:var(--mono);font-size:.74rem;color:var(--muted-2)}.post-page figure figcaption .fn{color:var(--accent)}.post-page figure.dg{background:var(--bg);border:1px solid var(--rule-2);border-radius:6px;overflow:hidden}.post-page figure.dg img{padding:1.25rem}.post-page figure.dg figcaption{padding:.6rem .9rem;border-top:1px solid var(--rule-2)}.post-page figure.dg a.zoom{display:block;cursor:zoom-in;border:0;text-decoration:none}.post-page figure.dg a.zoom:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.post-page figure.im img{border-radius:6px}.fig-page .fig-head{margin:0 0 1.5rem}.fig-page .fig-back{margin:.35rem 0 0;font-size:1.05rem}.fig-page .fig-back a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--rule-2)}.fig-page .fig-back a:hover{border-bottom-color:var(--accent)}.fig-page figure.dg{margin:0;background:var(--bg);border:1px solid var(--rule-2);border-radius:6px;overflow:hidden}.fig-page .dg-scroll{overflow-x:auto}.fig-page .dg-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.fig-page .dg-scroll img{display:block;width:max(100%,960px);max-width:none;height:auto;padding:1.5rem}.fig-page figure.dg figcaption{font-family:var(--mono);font-size:.74rem;color:var(--muted-2);padding:.6rem .9rem;border-top:1px solid var(--rule-2)}.fig-page figure.dg figcaption .fn{color:var(--accent)}.post-page figure.im figcaption{margin-top:.7rem}.post-page .fnref a{font-family:var(--mono);font-size:.72em;color:var(--accent);text-decoration:none;border:0;padding:0 .1em}.post-page .side{float:right;clear:right;width:10rem;margin:0 -15rem 1rem 0;font-size:.82rem;line-height:1.5;color:var(--muted);border-left:1px solid var(--rule-2);padding-left:.8rem}.post-page .side .n{font-family:var(--mono);color:var(--accent);margin-right:.35rem}.post-page .side:target{border-left-color:var(--accent)}.post-page .fnn{display:contents}@media (max-width:1300px){.post-page .fnp{display:flex;flex-direction:column-reverse}.post-page .fnn{display:block}.post-page .fnp>p{margin-bottom:0}.post-page .side{float:none;display:block;width:auto;margin:.75rem 0 1.35rem;background:var(--bg);border:1px solid var(--rule-2);border-radius:6px;padding:.6rem .8rem}}.post-page :is(aside,details).nb{margin:1.5rem 0;padding:.9rem 1.1rem;background:#94b0da14;border-radius:6px}.post-page :is(aside,details).nb.warn{background:color-mix(in oklch,oklch(80% .09 85) 10%,transparent)}.post-page :is(aside,details).nb p{margin:0 0 .5rem;font-size:.95rem}.post-page :is(aside,details).nb p:last-child{margin-bottom:0}.post-page :is(aside,details).nb .nl{font-family:var(--mono);font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin:0 0 .35rem}.post-page :is(aside,details).nb.warn .nl{color:#d8ba79}.post-page{--tick:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E");--chev:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.5 6l6 6-6 6'/%3E%3C/svg%3E");--play:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 4.5v15l13-7.5z'/%3E%3C/svg%3E");--expand:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5'/%3E%3C/svg%3E");--pause:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.5 4.5h4v15h-4zM13.5 4.5h4v15h-4z'/%3E%3C/svg%3E")}.post-page .article mark{background:color-mix(in oklch,var(--accent) 26%,transparent);color:var(--ink);border-radius:3px;padding:.02em .12em;-webkit-box-decoration-break:clone;box-decoration-break:clone}.post-page .article del{color:var(--muted-2);text-decoration-thickness:1px;text-decoration-color:var(--muted)}.post-page .article .tag{font-family:var(--mono);font-size:.7em;letter-spacing:.02em;color:var(--accent);background:#94b0da0f;border:1px solid rgba(148,176,218,.16);border-radius:999px;padding:.12em .6em;white-space:nowrap;vertical-align:.12em}.post-page .article sub,.post-page .article sup:not(.fnref){font-size:.72em;line-height:0}.post-page .article math{font-size:1.05em;color:var(--ink)}.post-page .article h4{font-weight:500;font-size:1em;line-height:1.45;color:var(--ink);margin:2rem 0 .6rem}.post-page .article h5{font-weight:500;font-size:.95rem;line-height:1.5;color:var(--muted);margin:1.75rem 0 .5rem}.post-page .article h6{font-family:var(--mono);font-weight:500;font-size:.7rem;line-height:1.5;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-2);margin:1.5rem 0 .5rem}@property --task-mid{syntax:"<length>";inherits:true;initial-value:.95em}.post-page .article ul:has(>li.task){padding-left:0}.post-page .article li.task{list-style:none;position:relative;padding-left:1.85rem;--task-mid: calc(.5lh + .07em) }.post-page .article li.task:before{content:"";position:absolute;left:0;top:calc(var(--task-mid) - .525rem);width:1.05rem;height:1.05rem;box-sizing:border-box;border:1.5px solid var(--muted-2);border-radius:4px;background:var(--bg)}.post-page .article li.task.x{color:var(--muted)}.post-page .article li.task.x:before{border-color:var(--accent);background:var(--accent)}.post-page .article li.task:is(.x,.later):after{content:"";position:absolute;left:.175rem;top:calc(var(--task-mid) - .35rem);width:.7rem;height:.7rem;background:var(--accent-fg);-webkit-mask:var(--tick) center/contain no-repeat;mask:var(--tick) center/contain no-repeat}.post-page .article li.task.half:before{border-color:var(--accent);background:linear-gradient(90deg,var(--accent) 50%,var(--bg) 50%)}.post-page .article li.task.dash{color:var(--muted-2);text-decoration:line-through;text-decoration-color:var(--muted-2)}.post-page .article li.task.dash:before{border-style:dashed;border-color:var(--muted-2)}.post-page .article li.task.later:before{border-color:var(--accent)}.post-page .article li.task.later:after{background:var(--accent);-webkit-mask-image:var(--chev);mask-image:var(--chev)}.post-page .article li.task.other:before{border-color:var(--accent)}.post-page .article li.task.other:after{content:attr(data-mark);position:absolute;left:0;top:calc(var(--task-mid) - .525rem);width:1.05rem;height:1.05rem;display:grid;place-items:center;font:600 .68rem/1 var(--mono);color:var(--accent)}.post-page :is(aside,details).nb.ok{background:color-mix(in oklch,var(--ok) 11%,transparent)}.post-page :is(aside,details).nb.ok .nl{color:var(--ok)}.post-page :is(aside,details).nb.bad{background:color-mix(in oklch,oklch(72% .12 25) 11%,transparent)}.post-page :is(aside,details).nb.bad .nl{color:#e6857e}.post-page :is(aside,details).nb :is(aside,details).nb{margin:.75rem 0 .25rem;box-shadow:inset 0 0 0 1px color-mix(in oklch,var(--ink) 7%,transparent)}.post-page details.nb{padding:0}.post-page details.nb>summary.nl{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:0;padding:.9rem 1.1rem;border-radius:6px}.post-page details.nb>summary.nl::-webkit-details-marker{display:none}.post-page details.nb>summary.nl:after{content:"";flex:none;width:.6rem;height:.6rem;background:linear-gradient(currentColor,currentColor) center/100% 1.5px no-repeat,linear-gradient(currentColor,currentColor) center/1.5px 100% no-repeat}.post-page details.nb[open]>summary.nl{padding-bottom:.35rem}.post-page details.nb[open]>summary.nl:after{background-size:100% 1.5px,1.5px 0}.post-page details.nb>summary.nl:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.post-page details.nb>.body{padding:0 1.1rem .9rem}.post-page .tbl [align=center]{text-align:center}.post-page .tbl [align=right]{text-align:right}.post-page .math{margin:1.75rem 0;overflow-x:auto;text-align:center}.post-page .math math{font-size:1.2em}.post-page .em{margin:1.75rem 0;padding:.15rem 0 .15rem 1.05rem;border-left:1px solid var(--rule-2)}.post-page .em .src{font-family:var(--mono);font-size:.7rem;letter-spacing:.06em;color:var(--muted-2);margin:0 0 .5rem}.post-page .em>:last-child{margin-bottom:0}.post-page .article .qr{font-family:var(--mono);font-size:.7rem;letter-spacing:.06em;color:var(--muted-2);margin:2rem 0 .55rem}.post-page .article .qr+.tbl{margin-top:0}.post-page figure.au{background:var(--bg);border:1px solid var(--rule-2);border-radius:6px;overflow:hidden}.post-page figure.au audio{display:block;width:100%;height:3rem;color-scheme:dark;accent-color:var(--accent)}.post-page figure.au figcaption{padding:.6rem .9rem;border-top:1px solid var(--rule-2)}.post-page figure:is(.au,.vd) .pl{display:grid;grid-template-columns:2.5rem 1fr auto;align-items:center;column-gap:1rem;padding:.75rem .9rem}.post-page figure:is(.au,.vd) .pp{width:2.5rem;height:2.5rem;border-radius:999px;border:1px solid var(--rule-2);background:var(--surface-2);cursor:pointer;position:relative;padding:0}.post-page figure:is(.au,.vd) .pp:after{content:"";position:absolute;inset:0;margin:auto;width:1.05rem;height:1.05rem;background:var(--accent);-webkit-mask:var(--play) 60% 50%/contain no-repeat;mask:var(--play) 60% 50%/contain no-repeat}.post-page figure:is(.au,.vd) .pp.on:after{-webkit-mask-image:var(--pause);mask-image:var(--pause);-webkit-mask-position:center;mask-position:center}.post-page figure:is(.au,.vd) .pp:hover{border-color:var(--accent)}.post-page figure:is(.au,.vd) .pp:focus-visible{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:2px}.post-page figure:is(.au,.vd) .tr{position:relative;height:1.5rem;cursor:pointer;touch-action:none}.post-page figure:is(.au,.vd) .tr:before{content:"";position:absolute;left:0;right:0;top:50%;height:2px;margin-top:-1px;background:color-mix(in oklch,var(--muted-2) 65%,transparent);border-radius:2px}.post-page figure:is(.au,.vd) .tr i{position:absolute;left:0;top:50%;height:2px;margin-top:-1px;width:0;background:var(--accent);border-radius:2px}.post-page figure:is(.au,.vd) .tr:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.post-page figure:is(.au,.vd) .tm{font-family:var(--mono);font-size:.74rem;color:var(--muted);font-variant-numeric:tabular-nums}.post-page figure.vd{background:var(--bg);border:1px solid var(--rule-2);border-radius:6px;overflow:hidden}.post-page figure.vd video{display:block;width:100%;height:auto;background:var(--bg);color-scheme:dark;accent-color:var(--accent);cursor:pointer}.post-page figure.vd .pl{grid-template-columns:2.5rem 1fr auto auto;border-top:1px solid var(--rule-2)}.post-page figure.vd .fs{width:1.75rem;height:1.75rem;padding:0;border:0;background:var(--muted-2);cursor:pointer;-webkit-mask:var(--expand) center/1rem no-repeat;mask:var(--expand) center/1rem no-repeat}.post-page figure.vd .fs:hover,.post-page figure.vd .fs:focus-visible{background:var(--accent);outline:none}.post-page figure.vd figcaption{margin:0;padding:.6rem .9rem;border-top:1px solid var(--rule-2)}.post-page figure.im.w img{width:revert-layer;max-width:100%}.post-page .article a.card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;column-gap:1rem;margin:1.5rem 0;padding:.85rem 1.25rem;background:var(--surface-2);border:1px solid var(--rule-2);border-radius:6px;color:var(--ink);text-decoration:none;transition:border-color .16s ease}.post-page .article a.card:hover{border-color:var(--accent)}.post-page .article a.card:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.post-page .article a.card .num{font-family:var(--mono);font-size:.78rem;font-weight:500;color:var(--accent);letter-spacing:.06em;text-transform:uppercase}.post-page .article a.card .t{display:flex;flex-direction:column;gap:.1rem;min-width:0}.post-page .article a.card .t b{font-weight:500;color:var(--ink);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.35}.post-page .article a.card .t small{font-family:var(--mono);font-size:.72rem;color:var(--muted);letter-spacing:.02em}.post-page .article a.card .lnk{width:1.05rem;height:1.05rem;background:var(--accent);-webkit-mask:var(--box-arrow) center/contain no-repeat;mask:var(--box-arrow) center/contain no-repeat}.post-page .article a.card:is(.file,.yt){grid-template-columns:7rem 1fr auto;padding:.65rem 1.25rem .65rem .65rem}.post-page .article a.card.yt .th{position:relative;display:block;aspect-ratio:16/9;border-radius:4px;overflow:hidden;background:var(--bg);outline:1px solid var(--rule-2);outline-offset:-1px}.post-page .article a.card.file .num{display:grid;place-items:center;aspect-ratio:16/9;background:var(--bg);border:1px solid var(--rule);border-radius:4px}.post-page .article a.card :is(.th) img{display:block;width:100%;height:100%;object-fit:cover}.post-page figure.dg{position:relative}.post-page figure.dg a.zoom:after{content:"";position:absolute;top:.65rem;right:.65rem;width:.95rem;height:.95rem;background:var(--accent);-webkit-mask:var(--box-arrow) center/contain no-repeat;mask:var(--box-arrow) center/contain no-repeat;opacity:0;transition:opacity .16s ease}.post-page figure.dg a.zoom:hover:after,.post-page figure.dg a.zoom:focus-visible:after{opacity:1}@media (hover:none){.post-page figure.dg a.zoom:after{opacity:.85}}.post-page :is(.article a:not(.card,.zoom),.eyebrow a):focus-visible,.post-page .code .copy:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.post-page .code pre{padding-right:4.5rem}@media (hover:none){.post-page .code .copy:before{content:"";position:absolute;inset:-11px -4px}.post-page figure:is(.au,.vd) .pl{grid-template-columns:2.75rem 1fr auto}.post-page figure.vd .pl{grid-template-columns:2.75rem 1fr auto auto}.post-page figure.vd .fs{width:2.75rem;height:2.75rem}.post-page figure:is(.au,.vd) .pp{width:2.75rem;height:2.75rem}.post-page figure:is(.au,.vd) .tr{height:2.75rem}.post-page .eyebrow a{display:inline-block;padding:.9rem 0;margin:-.9rem 0}.post-page .fnref a{padding:.3em .35em}}.post-page .mc{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:2rem;margin:1.75rem 0}.post-page .mc.n3{grid-template-columns:repeat(3,minmax(0,1fr))}.post-page .mc>div+div{border-left:1px solid var(--rule);padding-left:2rem}.post-page .mc>div>:last-child{margin-bottom:0}.post-page .article ul{padding-left:1.55rem}.post-page .article ol{padding-left:1.85rem}.post-page .article ol>li{padding-left:0}.post-page .article :is(h2,h3,h4,h5,h6)+:is(aside,details,.code,.tbl,figure,.math,.em,.mc,blockquote,a.card,.qr){margin-top:1.25rem}.post-page .article sup.fnref{line-height:0}.post-page .article :not(pre)>code{-webkit-box-decoration-break:clone;box-decoration-break:clone}.post-page .tbl td.num{white-space:nowrap}.post-page .tbl td{vertical-align:baseline}.note-page .meta{font-family:var(--mono);font-size:.78rem;letter-spacing:.02em;color:var(--muted-2);margin:0}.note-page .meta time{color:var(--accent);font-weight:500}.note-page .meta .dot{color:var(--accent);margin:0 .5rem}@media (max-width:600px){.post-page .tbl th,.post-page .tbl td{padding-left:.6rem;padding-right:.6rem}.post-page .tbl td.num{font-size:.78rem}}@media (max-width:400px){.post-page .tbl th,.post-page .tbl td{padding-left:.5rem;padding-right:.5rem}}.post-page .tbl.more{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 3rem),rgb(0 0 0 / .15));mask-image:linear-gradient(to right,#000 calc(100% - 3rem),#00000026)}@media (min-width:1301px){.post-page .side{margin-top:.6rem}}@media (max-width:1300px){.post-page .side{background:none;border:0;border-left:1px solid var(--rule-2);border-radius:0;padding:0 0 0 .8rem;margin:.6rem 0 1.35rem}}@media (max-width:760px){.post-page figure.im.w.wide img{width:100%}}@media (max-width:760px){.post-page{padding:3rem max(1rem,env(safe-area-inset-right)) 4rem max(1rem,env(safe-area-inset-left))}.post-page .sheet{padding:2.25rem 1.15rem 2.5rem;border-radius:10px}.post-page .article{font-size:1.02rem}.post-page .mc,.post-page .mc.n3{grid-template-columns:1fr;row-gap:1.25rem}.post-page .mc>div+div{border-left:0;padding-left:0;border-top:1px solid var(--rule);padding-top:1.25rem}.post-page .article a.card:is(.file,.yt){grid-template-columns:6rem 1fr auto}}@media print{.post-page .sheet{background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important}.post-page .signup,.post-page .follow,.post-page .code .copy{display:none!important}.post-page .side{float:none!important;margin:.4cm 0!important}}.nl-page .nl-form{margin:1.5rem 0 0}.nl-page .nl-form button{border:0;border-radius:6px;background:var(--accent);color:var(--accent-fg);padding:.7rem 1.4rem;font:inherit;font-weight:500;cursor:pointer;transition:background .12s ease}.nl-page .nl-form button:hover{background:var(--accent-deep);opacity:.85}.nl-page .nl-form button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.privacy-page h2{font-size:1.1rem;font-weight:600;color:var(--ink);margin:2.4rem 0 .7rem;text-wrap:balance}.privacy-page p{color:var(--muted);line-height:1.7;margin:0 0 .85rem}.privacy-page .legal{font-size:.88rem;color:var(--muted-2)}.privacy-page a{color:var(--accent);text-decoration:none;border-bottom:1px solid color-mix(in oklch,var(--accent) 45%,transparent)}.privacy-page a:hover{border-bottom-color:var(--accent)}.read-progress{position:absolute;left:0;right:0;bottom:-1px;height:2px;pointer-events:none}.read-progress span{display:block;height:100%;background:var(--accent);transform:scaleX(0);transform-origin:0 50%}.post-page .sheet{position:relative;z-index:2}.sw{display:inline-block;width:1.05em;height:1.05em;margin-right:.4em;vertical-align:-.17em;background:currentColor;-webkit-mask:var(--stopwatch-glyph) center/contain no-repeat;mask:var(--stopwatch-glyph) center/contain no-repeat}}
