.menu-page-title[data-astro-cid-nen7h5rs],.menu-page-links[data-astro-cid-nen7h5rs]>[data-astro-cid-nen7h5rs],.menu-preferences[data-astro-cid-nen7h5rs]{opacity:0;transition:none;transform:translateY(12px)}.site-header[data-astro-cid-nen7h5rs]{overflow:visible!important}[data-astro-cid-nen7h5rs][data-menu-panel]{max-height:calc(100dvh - var(--header-height,60px) - 48px);overscroll-behavior:contain;overflow-y:hidden}[data-astro-cid-nen7h5rs][data-menu-panel][data-scrollable=true]{overflow-y:auto}[data-astro-cid-nen7h5rs][data-menu-panel]::-webkit-scrollbar{width:6px}[data-astro-cid-nen7h5rs][data-menu-panel]::-webkit-scrollbar-thumb{background:var(--line,#ccc);border-radius:10px}[data-astro-cid-nen7h5rs][data-menu-panel][aria-hidden=false] .menu-page[data-astro-cid-nen7h5rs][data-active] .menu-page-title[data-astro-cid-nen7h5rs]{opacity:1;transition:opacity .3s .1s,transform .4s cubic-bezier(.16,1,.3,1) .1s;transform:translateY(0)}[data-astro-cid-nen7h5rs][data-menu-panel][aria-hidden=false] .menu-page[data-astro-cid-nen7h5rs][data-active] .menu-page-links[data-astro-cid-nen7h5rs]>[data-astro-cid-nen7h5rs]:first-child{opacity:1;transition:opacity .3s .15s,transform .4s cubic-bezier(.16,1,.3,1) .15s;transform:translateY(0)}[data-astro-cid-nen7h5rs][data-menu-panel][aria-hidden=false] .menu-page[data-astro-cid-nen7h5rs][data-active] .menu-page-links[data-astro-cid-nen7h5rs]>[data-astro-cid-nen7h5rs]:nth-child(2){opacity:1;transition:opacity .3s .2s,transform .4s cubic-bezier(.16,1,.3,1) .2s;transform:translateY(0)}[data-astro-cid-nen7h5rs][data-menu-panel][aria-hidden=false] .menu-page[data-astro-cid-nen7h5rs][data-active] .menu-page-links[data-astro-cid-nen7h5rs]>[data-astro-cid-nen7h5rs]:nth-child(3){opacity:1;transition:opacity .3s .25s,transform .4s cubic-bezier(.16,1,.3,1) .25s;transform:translateY(0)}[data-astro-cid-nen7h5rs][data-menu-panel][aria-hidden=false] .menu-page[data-astro-cid-nen7h5rs][data-active] .menu-page-links[data-astro-cid-nen7h5rs]>[data-astro-cid-nen7h5rs]:nth-child(n+4){opacity:1;transition:opacity .3s .3s,transform .4s cubic-bezier(.16,1,.3,1) .3s;transform:translateY(0)}[data-astro-cid-nen7h5rs][data-menu-panel][aria-hidden=false] .menu-preferences[data-astro-cid-nen7h5rs]{opacity:1;transition:opacity .3s .35s,transform .4s cubic-bezier(.16,1,.3,1) .35s;transform:translateY(0)}#offline-indicator[data-astro-cid-jo6i4kqk][hidden]{display:none}.announcement[data-astro-cid-mpls5b2o]{inset:var(--header-height) 0 auto;z-index:45;background:var(--banner-bg,var(--surface));min-height:40px;color:var(--banner-text,inherit);border-bottom:1px solid var(--banner-border,var(--line));justify-content:center;align-items:center;padding:0 48px;transition:transform .6s cubic-bezier(.16,1,.3,1),opacity .3s;display:flex;position:fixed;overflow:hidden;transform:translateY(0)}.announcement[data-astro-cid-mpls5b2o] a{color:inherit;font-weight:500;text-decoration:underline}.announcement[data-astro-cid-mpls5b2o][data-open=false]{opacity:0;pointer-events:none;transform:translateY(-100%)}.announcement-window[data-astro-cid-mpls5b2o]{width:min(100%,1200px);overflow:hidden}.announcement[data-astro-cid-mpls5b2o][data-scrollable=true] .announcement-window[data-astro-cid-mpls5b2o]{-webkit-mask-image:linear-gradient(90deg,#0000,#000 6% 94%,#0000);mask-image:linear-gradient(90deg,#0000,#000 6% 94%,#0000)}.announcement-track[data-astro-cid-mpls5b2o]{white-space:nowrap;align-items:center;width:max-content;margin:0 auto;font-size:12px;line-height:1.4;display:flex}.announcement-duplicate[data-astro-cid-mpls5b2o]{margin-left:64px;display:none}.announcement[data-astro-cid-mpls5b2o][data-scrollable=true] .announcement-track[data-astro-cid-mpls5b2o]{min-width:max-content;margin:0;animation:18s linear infinite announcement-marquee;display:inline-flex}.announcement[data-astro-cid-mpls5b2o][data-scrollable=true] .announcement-duplicate[data-astro-cid-mpls5b2o]{display:block}.announcement-close[data-astro-cid-mpls5b2o]{right:max(12px, var(--gutter));cursor:pointer;width:28px;height:28px;color:inherit;background:0 0;border:0;place-items:center;padding:0;font-size:20px;line-height:1;display:grid;position:absolute;top:50%;transform:translateY(-50%)}@keyframes announcement-marquee{to{transform:translate(calc(-50% - 32px))}}@media (prefers-reduced-motion:reduce){.announcement[data-astro-cid-mpls5b2o][data-scrollable=true] .announcement-track[data-astro-cid-mpls5b2o]{animation:none}}@media (width<=640px){.announcement[data-astro-cid-mpls5b2o]{padding-inline:28px}.announcement-track[data-astro-cid-mpls5b2o]{font-size:11px}}:root{--background:#f5f5f7;--text-normal:#3d3d42;--text-slight:#6e6e73;--text-muted:#8a8a8f;--line:#0000001f;--control-hover:var(--text-normal);--control-active:var(--text-normal);--glass-rgb:250 250 252;--glass-alpha:.28;--surface:#f5f5f7;--card:#00000008;--card-hover:#0000000d;--card-active:#00000014;--glass-blur:6px;--menu-scrim:#0000001f;--menu-blur:6px;--header-height:48px;--announcement-height:0px;--content-width:1024px;--gutter:17px}:root[data-theme=dark]{--background:#101010;--text-normal:#e2e2e7;--text-slight:#a1a1a6;--text-muted:#7f7f84;--line:#ffffff1a;--control-hover:var(--text-normal);--control-active:var(--text-normal);--glass-rgb:30 30 32;--glass-alpha:.48;--surface:#141416;--card:#ffffff0a;--card-hover:#ffffff0f;--card-active:#ffffff1a;--menu-scrim:#00000057}:root[data-simplify=true]{--glass-rgb:245 245 247;--glass-alpha:.97;--glass-blur:0px;--menu-blur:0px}:root[data-theme=dark][data-simplify=true]{--glass-rgb:20 20 22}:root[data-menu-open=true][data-menu-mode=manual],:root[data-menu-open=true][data-menu-mode=manual] body{overflow:hidden}*{box-sizing:border-box}html{background:var(--background);color:var(--text-normal)}body{-webkit-font-smoothing:antialiased;background:var(--background);min-height:100vh;color:var(--text-normal);margin:0;font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,Arial,sans-serif}a{color:inherit}button{font:inherit}h1,h2,h3{color:var(--text-normal)}.glass{background:rgb(var(--glass-rgb) / var(--glass-alpha));backdrop-filter:blur(var(--glass-blur)) saturate(140%)}:root[data-simplify=true] .glass,:root[data-simplify=true] dialog.modal::backdrop{backdrop-filter:none!important}.tone-normal{color:var(--text-normal)}.tone-slight{color:var(--text-slight)}.tone-muted{color:var(--text-muted)}.tactile-text{-webkit-tap-highlight-color:transparent;color:var(--text-slight);cursor:pointer;background:0 0;border:0;align-items:center;padding:0;text-decoration:none;transition:color .1s,transform .1s;display:inline-flex}@media (hover:hover){.tactile-text:hover{color:var(--control-hover)}}.tactile-text:active{color:var(--control-active);transform:scale(.97)}.tactile-text:focus-visible{outline-offset:4px;outline:2px solid}.tactile-text:disabled{opacity:.45;cursor:default}.tactile-card{border:1px solid var(--line);background:var(--card);color:var(--text-normal);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:18px;text-decoration:none;transition:transform .14s,background-color .14s,border-color .14s;display:block}@media (hover:hover){.tactile-card:hover{background:var(--card-hover);transform:translateY(-2px)}}.tactile-card:active{background:var(--card-active);transform:scale(.985)}.tactile-card:focus-visible{outline-offset:3px;outline:2px solid}.modal-action{padding:3px;display:inline-block;border-radius:10px!important}.main-menu,.menu-content,.site-content,.site-footer{width:min(100%, var(--content-width));margin:0 auto}.site-header{z-index:50;border-bottom:1px solid var(--line);transition:background .18s,backdrop-filter .24s;position:fixed;inset:0 0 auto}.main-menu{height:var(--header-height);grid-template-columns:1fr auto 1fr;align-items:stretch;display:grid}.brand{width:max-content;color:var(--text-normal);padding:0 var(--gutter);letter-spacing:.02em;justify-self:start;gap:8px;font-size:12px}.brand-mark{background:var(--text-normal);flex:none;width:16px;height:16px;-webkit-mask:url(/favicon.svg) 50%/contain no-repeat;mask:url(/favicon.svg) 50%/contain no-repeat}.wide-nav{align-items:center;gap:28px;display:flex}.wide-nav .tactile-text,.menu-button{color:var(--text-slight);font-size:12px}.menu-button{padding:0 var(--gutter);justify-self:end}.menu-icon{flex-direction:column;justify-content:space-between;width:16px;height:12px;display:flex}.menu-icon i{background:currentColor;border-radius:999px;width:100%;height:1.5px;transition:transform .16s,opacity .16s;display:block}html[data-menu-open=true] .menu-icon i:first-child{transform:translateY(5.25px)rotate(45deg)}html[data-menu-open=true] .menu-icon i:nth-child(2){opacity:0}html[data-menu-open=true] .menu-icon i:last-child{transform:translateY(-5.25px)rotate(-45deg)}.loading-track{pointer-events:none;background:0 0;height:2px;transition:opacity .26s .12s;position:absolute;inset:auto 0 0;overflow:hidden}html.page-ready .loading-track{opacity:0}#loading-progress{background:var(--text-slight);width:100%;height:100%;transform:scaleX(var(--progress,0));transform-origin:0;transition:transform .22s cubic-bezier(.2,.7,.2,1),background-color .16s;display:block}html.page-ready #loading-progress{background:var(--text-normal)}html[data-menu-open=true] .site-header,html[data-modal-open=true] .site-header{background:var(--surface);-webkit-backdrop-filter:none}.menu-panel{opacity:0;visibility:hidden;background:0 0;height:0;transition:height .26s cubic-bezier(.2,.7,.2,1),opacity .16s,visibility .26s;overflow:hidden}html[data-menu-open=true] .menu-panel{height:min(35dvh, calc(100dvh - var(--header-height)));opacity:1;visibility:visible;overflow:auto}html[data-menu-open=true][data-menu-mode=manual] .menu-panel{height:calc(100dvh - var(--header-height))}.menu-backdrop{inset:calc(var(--header-height) + var(--announcement-height)) 0 0;z-index:40;backdrop-filter:blur(var(--menu-blur)) saturate(115%);background:var(--menu-scrim);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .26s,visibility .26s;position:fixed}html[data-menu-open=true] .menu-backdrop{opacity:1;visibility:visible;pointer-events:auto}.menu-content{min-height:100%;padding:32px var(--gutter) 40px;grid-template-columns:1fr auto;gap:48px;display:grid}.menu-pages{min-height:150px;position:relative}.menu-page{opacity:0;visibility:hidden;pointer-events:none;align-content:start;gap:14px;transition:opacity .18s,transform .18s,visibility .18s;display:grid;position:absolute;inset:0;transform:translateY(5px)}.menu-page[data-active]{opacity:1;visibility:visible;pointer-events:auto;transform:none}.menu-page-title,.menu-page-links .tactile-text{width:fit-content;color:var(--text-normal);text-decoration:none}.menu-page-title{letter-spacing:-.04em;font-size:clamp(32px,5vw,56px);line-height:.95}.menu-page-links{gap:10px;display:grid}.menu-page-links .tactile-text{font-size:16px}.menu-links{display:none}.menu-preferences{align-content:start;gap:10px;display:grid}.preference-toggle{border:1px solid var(--line);background:var(--card);cursor:pointer;user-select:none;border-radius:14px;justify-content:space-between;align-items:center;gap:18px;min-width:180px;min-height:44px;padding:8px 12px 8px 14px;font-size:12px;display:inline-flex}.preference-copy{pointer-events:none;flex-direction:column;align-items:flex-start;gap:2px;display:flex}.preference-name{color:var(--text-normal);font-size:13px}.preference-value{color:var(--text-slight);font-size:11px}.toggle-switch{background:var(--background);border:1px solid var(--line);pointer-events:none;border-radius:999px;flex:none;width:38px;height:22px;transition:background-color .16s,border-color .16s;position:relative}.toggle-thumb{background:var(--text-normal);border-radius:50%;width:16px;height:16px;transition:transform .16s,background-color .16s;position:absolute;top:2px;left:2px}.preference-toggle[aria-pressed=true] .toggle-switch{background:var(--text-normal);border-color:var(--text-normal)}.preference-toggle[aria-pressed=true] .toggle-thumb{background:var(--background);transform:translate(16px)}.site-content{min-height:calc(100vh - var(--header-height));padding:calc(var(--header-height) + var(--announcement-height) + 2px) var(--gutter) 88px;opacity:1;transition:opacity .3s}html.page-loading .site-content,html.page-loading .site-footer{opacity:0;pointer-events:none}.frontpage{min-height:calc(84vh - var(--header-height));text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:96px 0 72px;display:flex}.eyebrow{color:var(--text-slight);letter-spacing:.04em;margin:0 0 16px;font-size:11px}.cycle-title{--cycle-size:clamp(72px, 15vw, 190px);width:100%;height:calc(var(--cycle-size) * .84);color:var(--text-normal);font-size:var(--cycle-size);white-space:nowrap;letter-spacing:-.085em;overflow-anchor:none;margin:0;font-weight:900;line-height:.84;overflow:visible}.hero-subtitle{max-width:560px;color:var(--text-slight);margin:24px auto 0;font-size:clamp(18px,2vw,22px);line-height:1.45}.home-section{padding:48px 0 72px}.section-header{text-align:center;max-width:900px;margin:0 auto;padding:80px 0 44px}.section-header h1,.section-header h2,.post-header h1{letter-spacing:-.06em;margin:0;line-height:.94}.section-header h1,.post-header h1{font-size:clamp(48px,9vw,96px)}.section-header h2{font-size:clamp(40px,7vw,76px)}.project-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;display:grid}.post{padding:76px 0}.post-header{text-align:center;max-width:840px;margin-inline:auto;padding-bottom:52px}.lede{max-width:700px;color:var(--text-normal);margin:24px 0 0;font-size:21px;line-height:1.4}.post-content{max-width:720px;margin-inline:auto;font-size:18px;line-height:1.65}.post-content h2{letter-spacing:-.035em;margin-top:52px;font-size:32px;line-height:1}.post-content img{max-width:100%;height:auto;display:block}.post-list{gap:10px;display:grid}.post-card{justify-content:space-between;align-items:center;gap:16px;min-height:72px;padding:18px 20px;display:flex}.post-card time{color:var(--text-normal);font-size:11px}.site-footer{padding:28px var(--gutter) 48px;border-top:1px solid var(--line);color:var(--text-muted);grid-template-columns:1fr auto;gap:32px 48px;font-size:11px;transition:opacity .3s;display:grid}.site-footer .tactile-text:hover{color:var(--text-normal)}.footer-sitemap{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));align-items:start;gap:32px 48px;display:grid}.footer-group{align-content:start;gap:8px;min-width:100px;display:grid}.footer-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 3px;font-size:10px}.footer-group .tactile-text{width:fit-content}.footer-preferences{align-content:start;gap:6px;display:grid}.footer-credits{grid-column:1/-1;justify-items:start;gap:5px;display:grid}.footer-extra{grid-column:1/-1}.footer-extra:empty{display:none}dialog.modal{top:calc(var(--header-height) + 16px);width:min(680px,100% - 32px);max-height:calc(100dvh - var(--header-height) - 32px);border:1px solid var(--line);color:var(--text-normal);border-radius:16px;margin:auto;padding:0;position:fixed;bottom:16px}dialog.modal::backdrop{-webkit-backdrop-filter:none;background:0 0}html[data-modal-open=true]:after{content:"";backdrop-filter:blur(var(--menu-blur));inset:calc(var(--header-height) + var(--announcement-height)) 0 0;z-index:40;background:var(--menu-scrim);position:fixed}.modal-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:start;gap:24px;padding:24px;display:flex}.modal-header h2{margin:0;font-size:28px}.modal-body{padding:24px;overflow:auto}.wide-nav,.menu-button{opacity:0;pointer-events:none;transition:opacity .26s}html.page-ready .wide-nav,html.page-ready .menu-button{opacity:1;pointer-events:auto}html.page-loading .menu-panel{visibility:hidden}@media (width>=641px){.menu-page-arrow,.menu-button{display:none}}.menu-button-group{height:var(--header-height);align-items:center;gap:0;display:flex}.menu-page-arrow{width:var(--header-height);opacity:0;pointer-events:none;justify-content:center;padding:0;transition:opacity .22s;display:none}.menu-page-arrow-glyph{font-size:2rem;font-weight:300;line-height:1;display:block;transform:translateY(-.16rem)}@media (width<=640px){:root{--gutter:12px}.main-menu{grid-template-columns:1fr auto}.brand{padding-inline:var(--gutter)}.brand-mark{background:currentColor;width:17px;height:17px;display:block}.wide-nav,.brand>span:last-child{display:none}.brand{color:var(--text-normal)}.menu-button{width:var(--header-height);justify-content:center;padding:0}html[data-menu-open=true] .menu-page-arrow{opacity:1;pointer-events:auto;display:inline-flex}.menu-content{grid-template-columns:1fr;gap:36px;padding-top:28px}.menu-pages{min-height:180px}.menu-page-title{font-size:clamp(42px,15vw,64px)}.menu-preferences{justify-items:stretch;width:min(100%,320px)}.preference-toggle{width:100%}.site-footer{grid-template-columns:1fr;gap:26px}.footer-sitemap{flex-wrap:wrap;align-items:start;gap:32px;display:flex}.footer-preferences{order:3}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important}}
