@font-face{font-family:Atkinson Hyperlegible Next Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/atkinson-hyperlegible-next-latin-ext-wght-normal.C6vrW8VD.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible Next Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/atkinson-hyperlegible-next-latin-wght-normal.BcXVPD7q.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible Mono Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/atkinson-hyperlegible-mono-latin-ext-wght-normal.CXgNM06D.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible Mono Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/atkinson-hyperlegible-mono-latin-wght-normal.CoA7y8X5.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--color-bg:#f7f8f6;--color-band:#eef1ec;--color-surface:#fff;--color-sunk:#e8ece6;--color-bar:#f7f8f6;--color-field:#fff;--color-heading:#1b2320;--color-text:#2a322e;--color-text-light:#36403b;--color-text-muted:#56615b;--color-label:#616c66;--color-brand:#17503f;--color-brand-hover:#0f3d30;--color-on-brand:#fff;--color-brand-text:#156049;--color-brand-soft:#17503f14;--color-brand-line:#17503f59;--color-accent:#8a5300;--color-error:#a3261b;--color-line:#1b23201f;--color-line-strong:#1b232047;--color-focus:#156049;--tip-bg:#1b2320;--tip-text:#fff;--code-bg:#1b2320;--code-text:#e6ece8;--preview-bg:#1b2320;--preview-fg:#ffffffbf;--area-research:#2d5a4c;--area-r:#6b3a5e;--area-ml:#29497c;--area-apps:#1e5e63;--area-re:#7c3a2a;--area-games:#9a3f25;--area-web:#574683;--area-code:#6b4a24;--on-area:#fff;--on-area-soft:#ffffffc7;--area-grid:#ffffff17;--area-dashed:#ffffff73;--field-1:#2f6b4f;--field-2:#4c8a57;--field-3:#8db35e;--field-4:#d6b35a;--field-5:#c4793a;--field-6:#94402b;--field-soil:#e4e1d6;--dots-lift:0;--shadow-1:0 1px 2px #1b23200f, 0 2px 8px #1b23200d;--shadow-2:0 2px 6px #1b232014, 0 14px 32px #1b23201f;--shadow-3:0 20px 48px #1b232038;--shadow-bar:0 1px 0 #1b23201a;--shadow-lift:0 10px 24px #1b232024;--font-text:"Atkinson Hyperlegible Next Variable", "Atkinson Hyperlegible Next", "Segoe UI", system-ui, sans-serif;--font-display:var(--font-text);--font-label:"Atkinson Hyperlegible Mono Variable", "Atkinson Hyperlegible Mono", ui-monospace, "SF Mono", Menlo, monospace;--step--2:.75rem;--step--1:.875rem;--step-0:1.125rem;--step-1:clamp(1.1875rem, 1.1rem + .4vw, 1.375rem);--step-2:clamp(1.375rem, 1.2rem + .8vw, 1.875rem);--step-3:clamp(2rem, 1.5rem + 2vw, 3rem);--step-4:clamp(2.5rem, 1.6rem + 4vw, 4.5rem);--step-5:clamp(2.75rem, 1.6rem + 5.5vw, 6rem);--weight-display:800;--leading-display:1.04;--leading-tight:1.2;--leading-text:1.75;--tracking-display:-.025em;--tracking-label:.1em;--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-s:1rem;--space-m:1.5rem;--space-l:2rem;--space-xl:3rem;--space-2xl:5rem;--space-3xl:8rem;--gutter:1rem;--page-max:76rem;--rail:11rem;--measure:44rem;--bar-h:4.5rem;--target:44px;--radius-s:3px;--radius-m:6px;--radius-l:10px;--radius-pill:800px;--line-thin:1px;--line-thick:3px;--motion-fast:.15s;--motion-base:.3s;--motion-slow:.6s;--ease-out:cubic-bezier(.2, .7, .2, 1)}:root[data-theme=dark]{color-scheme:dark;--color-bg:#111614;--color-band:#161c19;--color-surface:#1b2320;--color-sunk:#1f2824;--color-bar:#111614;--color-field:#1b2320;--color-heading:#f1f4f2;--color-text:#d7deda;--color-text-light:#c6cec9;--color-text-muted:#9ca8a2;--color-label:#95a19b;--color-brand:#5cc98f;--color-brand-hover:#79d6a4;--color-on-brand:#0c1210;--color-brand-text:#6fd3a0;--color-brand-soft:#5cc98f1a;--color-brand-line:#5cc98f66;--color-accent:#f0b35a;--color-error:#ff8f80;--color-line:#ffffff1a;--color-line-strong:#ffffff42;--color-focus:#6fd3a0;--tip-bg:#f1f4f2;--tip-text:#111614;--code-bg:#0a0d0c;--field-soil:#1d2420;--dots-lift:.4;--shadow-1:0 1px 2px #0006, 0 0 0 1px #ffffff0d;--shadow-2:0 2px 6px #0006, 0 16px 36px #0006, 0 0 0 1px #ffffff0f;--shadow-3:0 24px 48px #0000008c;--shadow-bar:0 1px 0 #ffffff14;--shadow-lift:0 10px 24px #00000073}@media (prefers-reduced-motion:reduce){:root{--motion-fast:0s;--motion-base:0s;--motion-slow:0s}}@media print{:root{color-scheme:light;--color-bg:#fff;--color-band:#fff;--color-surface:#fff;--color-heading:#000;--color-text:#111;--color-text-muted:#444;--color-line:#ccc}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--bar-h) + var(--space-s))}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}@view-transition{navigation:auto}}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-text);font-size:var(--step-0);line-height:var(--leading-text);overflow-wrap:break-word;margin:0}main{overflow-x:clip}button,input,textarea,select{font:inherit}img,svg,video,canvas{max-width:100%;display:block}img{height:auto}h1,h2,h3{color:var(--color-heading);font-weight:700;line-height:var(--leading-tight);text-wrap:balance;margin:0}p,ul,ol,dl,dd{margin:0}a{color:var(--color-brand-text);text-decoration:none}a:hover{text-underline-offset:.2em;text-decoration:underline}:is(.prose,.lede,.about-text,.form-note,figcaption,.note-text) a:not(.btn){text-underline-offset:.2em;text-decoration:underline 1px}:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px;border-radius:var(--radius-s)}code{font-family:var(--font-label);color:var(--color-text-light);background:var(--color-sunk);border-radius:var(--radius-s);padding:.12em .4em;font-size:.85em}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.skip-link{left:var(--gutter);z-index:60;padding:var(--space-xs) var(--space-s);border-radius:var(--radius-s);background:var(--color-brand);color:var(--color-on-brand);font-weight:700;position:absolute;top:-100px}.skip-link:focus{top:var(--space-xs)}.page{max-width:var(--page-max);padding-inline:var(--gutter);margin-inline:auto}@media (width>=36rem){:root{--gutter:1.5rem}}@media (width>=62rem){:root{--gutter:2.5rem}}.section{padding-block:var(--space-2xl)}.section.band{background:var(--color-band)}.display{font-family:var(--font-display);font-size:var(--step-4);font-weight:var(--weight-display);line-height:var(--leading-display);letter-spacing:var(--tracking-display)}.display-s{font-size:var(--step-3);font-weight:var(--weight-display);line-height:var(--leading-display);letter-spacing:var(--tracking-display)}.lede{max-width:var(--measure);color:var(--color-text-light);font-size:var(--step-1);line-height:1.6}.label{font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-label);font-weight:400}.btn{border:var(--line-thin) solid transparent;border-radius:var(--radius-s);min-height:3rem;font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;cursor:pointer;transition:background-color var(--motion-fast) var(--ease-out), color var(--motion-fast) var(--ease-out), border-color var(--motion-fast) var(--ease-out), box-shadow var(--motion-base) var(--ease-out), transform var(--motion-base) var(--ease-out);justify-content:center;align-items:center;gap:.6em;padding:.8rem 1.4rem;font-weight:500;line-height:1.2;text-decoration:none;display:inline-flex}.btn:hover{text-decoration:none;transform:translateY(-2px)}.btn:active{transform:none}.btn-solid{background:var(--color-brand);color:var(--color-on-brand);box-shadow:var(--shadow-1)}.btn-solid:hover{background:var(--color-brand-hover);box-shadow:var(--shadow-lift)}.btn-line{border-color:var(--color-line-strong);color:var(--color-heading)}.btn-line:hover{border-color:var(--color-heading)}.btn .arrow{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--motion-base) var(--ease-out);flex:none}.btn:hover .arrow{transform:translate(4px)}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none;transform:none}.btn-placeholder{border:var(--line-thin) dashed var(--color-accent);color:var(--color-accent);cursor:default}.btn-placeholder:hover{transform:none}.actions{gap:var(--space-xs);flex-wrap:wrap;display:flex}.page-head{gap:var(--space-s);padding-block:var(--space-2xl) var(--space-xl);display:grid}.page-head .display{margin-bottom:var(--space-2xs)}.rail-layout{gap:var(--space-m);display:grid}.rail{align-content:start;gap:var(--space-m);display:grid}.main-col{min-width:0;max-width:var(--measure)}@media (width>=62rem){.rail-layout{grid-template-columns:var(--rail) minmax(0, 1fr);column-gap:var(--space-xl)}.rail-layout>.head-col{grid-area:1/2}.rail-layout>.rail{text-align:right;grid-area:2/1}.rail-layout>.main-col{grid-area:2/2}.rail-layout:not(:has(>.head-col))>:is(.rail,.main-col){grid-row:1}.rail-sticky{top:calc(var(--bar-h) + var(--space-l));position:sticky}}.prose{max-width:var(--measure)}.prose>*+*{margin-top:var(--space-s)}.prose h2{font-size:var(--step-2);font-weight:var(--weight-display);letter-spacing:-.015em;margin-top:var(--space-xl)}.prose h2+*{margin-top:var(--space-xs)}.prose ul,.prose ol{padding-left:1.3em}.prose li+li{margin-top:var(--space-2xs)}.prose li::marker{color:var(--color-text-muted)}.prose pre{padding:var(--space-s) var(--space-m);border-radius:var(--radius-m);font-family:var(--font-label);white-space:pre-wrap;overflow-wrap:anywhere;font-size:.8125rem;line-height:1.6}.prose pre code{color:inherit;font-size:inherit;background:0 0;padding:0}.prose table{border-collapse:collapse;width:100%;margin-block:var(--space-m);font-size:1rem;line-height:1.5}.prose th,.prose td{text-align:left;vertical-align:top;padding:var(--space-xs) var(--space-s) var(--space-xs) 0}.prose th{font-family:var(--font-label);font-size:var(--step--1);letter-spacing:.04em;color:var(--color-label);border-bottom:var(--line-thin) solid var(--color-line-strong);font-weight:400}.prose td{color:var(--color-text-light);border-top:var(--line-thin) solid var(--color-line)}.prose td:not(:first-child){font-variant-numeric:tabular-nums}.prose tr{transition:background-color var(--motion-fast) var(--ease-out)}.prose tbody tr:hover{background:var(--color-brand-soft)}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.reveal{animation-name:rise;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view();animation-range:entry entry 40%}}}@keyframes rise{0%{opacity:0;transform:translateY(1.5rem)}}.form{gap:var(--space-s);max-width:36rem;display:grid}.form fieldset{gap:var(--space-s);border:0;min-width:0;margin:0;padding:0;display:grid}.form-row label{font-family:var(--font-label);font-size:var(--step--1);letter-spacing:.04em;color:var(--color-label)}.form-row input,.form-row textarea{width:100%;margin-top:var(--space-3xs);border:var(--line-thin) solid var(--color-line-strong);border-radius:var(--radius-s);background:var(--color-field);color:var(--color-text);padding:.75rem .9rem;display:block}.form-row input:focus,.form-row textarea:focus{outline:2px solid var(--color-focus);outline-offset:0;border-color:#0000}.form fieldset:disabled{opacity:.6}.form-note{color:var(--color-text-muted);font-size:1rem;line-height:1.6}.form .cf-turnstile:empty{display:none}.form-status{color:var(--color-text-muted);font-size:1rem;line-height:1.6}.form-status:empty{display:none}.form-status[data-state=ok]{color:var(--color-brand-text);font-weight:600}.form-status[data-state=error]{color:var(--color-error)}.facts{gap:var(--space-s);display:grid}.facts dt{font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-label)}.facts dd{color:var(--color-text-light);font-size:1rem;line-height:1.5}.facts a{min-height:var(--target);text-underline-offset:.2em;align-items:center;text-decoration:underline;display:inline-flex}.crumbs{font-family:var(--font-label);font-size:var(--step--1);color:var(--color-label);flex-wrap:wrap;align-items:center;padding:0;list-style:none;display:flex}.crumbs li+li:before{content:"/";color:var(--color-line-strong);margin-inline:.6em}.crumbs a{min-height:var(--target);min-width:var(--target);color:var(--color-text-muted);align-items:center;display:inline-flex}.crumbs a:hover{color:var(--color-brand-text)}.work-head{padding-block:var(--space-xl) var(--space-l)}.closing{gap:var(--space-m);display:grid}.closing .actions{margin-top:var(--space-2xs)}.list-page{gap:var(--space-2xl);padding-bottom:var(--space-2xl);display:grid}.rows{border-bottom:var(--line-thin) solid var(--color-line)}.after-kicker,.rows{margin-top:var(--space-m)}.thesis{gap:var(--space-s);max-width:var(--measure);display:grid}.thesis .kicker+*{margin-top:var(--space-xs)}.project-head{gap:var(--space-s);padding-block:var(--space-m) var(--space-xl);display:grid}.project-head .lede{max-width:48rem}.project-body{padding-block:var(--space-xl) var(--space-2xl)}.project-body .main-col{gap:var(--space-xl);align-content:start;display:grid}.rail-stack{gap:var(--space-l);display:grid}@media (width>=62rem){.project-body .rail{text-align:left}.project-body .rail-layout{column-gap:var(--space-2xl);grid-template-columns:14rem minmax(0,1fr)}}.about{gap:var(--space-xl);padding-block:var(--space-xl) var(--space-2xl);display:grid}.about-main{gap:var(--space-l);min-width:0;display:grid}.about-text p{font-size:var(--step-1);line-height:1.65}.about-section{margin-top:var(--space-l)}.about-section .kicker+*{margin-top:var(--space-m)}.about-toc{display:none}@media (width>=62rem){.about{gap:var(--space-2xl);grid-template-columns:19rem minmax(0,1fr)}.about-card{align-self:stretch}.about-toc{top:calc(var(--bar-h) + var(--space-l));margin-top:var(--space-xl);display:block;position:sticky}}.section-lede{margin-bottom:var(--space-2xs);color:var(--color-text-muted)}.papers{padding:0;list-style:none;display:grid}.papers li{gap:var(--space-3xs);padding-block:var(--space-m);border-top:var(--line-thin) solid var(--color-line);display:grid}.cite{color:var(--color-text-muted);font-size:1rem;line-height:1.55}.cite strong{color:var(--color-heading)}.paper-title{color:var(--color-heading);font-size:var(--step-1);font-weight:var(--weight-display);line-height:1.35}.paper-title a{color:inherit;text-decoration:underline;text-decoration-color:var(--color-brand-line);text-underline-offset:.2em;text-decoration-thickness:2px}.paper-title a:hover{text-decoration-color:currentColor}.cv-band{justify-content:space-between;align-items:center;gap:var(--space-s) var(--space-l);margin-top:var(--space-xl);padding:var(--space-l);border-radius:var(--radius-l);background:var(--color-band);flex-wrap:wrap;display:flex}.cv-band p{color:var(--color-heading);font-size:var(--step-1);font-weight:700}.confirm{font-family:var(--font-label);font-size:var(--step--1);color:var(--color-accent)}.tool-groups{gap:var(--space-l);grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));display:grid}.contact{gap:var(--space-2xl);padding-bottom:var(--space-2xl);display:grid}.ways{gap:var(--space-m);margin-top:var(--space-m);display:grid}.ways>div{gap:var(--space-3xs);padding-top:var(--space-s);border-top:var(--line-thin) solid var(--color-line);display:grid}.ways dt{font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-label)}.ways dd{font-size:var(--step-1);font-weight:700}.ways a{min-height:var(--target);overflow-wrap:anywhere;text-underline-offset:.2em;align-items:center;text-decoration:underline;display:inline-flex}.small-note{color:var(--color-text-muted);font-size:1rem;font-weight:400}@media (width>=62rem){.contact{gap:var(--space-2xl);grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)}}.site-header[data-astro-cid-wpvy4v7s]{z-index:50;background:var(--color-bar);box-shadow:var(--shadow-bar);view-transition-name:site-header;position:sticky;top:0}@supports (animation-timeline:scroll()){.site-header[data-astro-cid-wpvy4v7s]{animation-name:hairline;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:scroll(root);animation-range:0 4rem}}@keyframes hairline{0%{box-shadow:none}}.bar[data-astro-cid-wpvy4v7s]{justify-content:space-between;align-items:center;gap:var(--space-s);max-width:var(--page-max);min-height:var(--bar-h);padding-inline:var(--gutter);margin-inline:auto;display:flex}a[data-astro-cid-wpvy4v7s]{color:var(--color-heading);text-decoration:none}.name[data-astro-cid-wpvy4v7s]{min-height:var(--target);font-size:1.125rem;font-weight:var(--weight-display);letter-spacing:-.01em;white-space:nowrap;align-items:center;gap:.6rem;display:inline-flex}.wide[data-astro-cid-wpvy4v7s]{display:none}.wide[data-astro-cid-wpvy4v7s] ul[data-astro-cid-wpvy4v7s],.menu[data-astro-cid-wpvy4v7s] ul[data-astro-cid-wpvy4v7s]{margin:0;padding:0;list-style:none}.wide[data-astro-cid-wpvy4v7s] ul[data-astro-cid-wpvy4v7s]{gap:var(--space-3xs);display:flex}.wide[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s]{min-height:var(--target);transition:color var(--motion-fast) var(--ease-out);align-items:center;padding-inline:.9rem;font-weight:700;display:inline-flex;position:relative}.wide[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s]:after{content:"";background:var(--color-brand);transform-origin:0;height:2px;transition:transform var(--motion-base) var(--ease-out);position:absolute;bottom:.45rem;left:.9rem;right:.9rem;transform:scaleX(0)}.wide[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s]:hover:after,.wide[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s][aria-current=page]:after{transform:scaleX(1)}.wide[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s]:hover,.menu[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s]:hover{color:var(--color-brand-text)}.end[data-astro-cid-wpvy4v7s]{margin-right:calc(-1 * var(--space-2xs));align-items:center;display:flex}.icon[data-astro-cid-wpvy4v7s],.toggle[data-astro-cid-wpvy4v7s]{width:var(--target);height:var(--target);color:var(--color-heading);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon[data-astro-cid-wpvy4v7s]{transition:color var(--motion-fast) var(--ease-out), background-color var(--motion-fast) var(--ease-out);border-radius:50%}.icon[data-astro-cid-wpvy4v7s]:hover{background:var(--color-brand-soft);color:var(--color-brand-text)}.theme-toggle[data-astro-cid-wpvy4v7s][hidden]{display:none}.sun[data-astro-cid-wpvy4v7s],.moon[data-astro-cid-wpvy4v7s]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--motion-slow) var(--ease-out)}.sun[data-astro-cid-wpvy4v7s]{display:none}:root[data-theme=dark] .sun[data-astro-cid-wpvy4v7s]{display:block}:root[data-theme=dark] .moon[data-astro-cid-wpvy4v7s]{display:none}.theme-toggle[data-astro-cid-wpvy4v7s]:hover .sun[data-astro-cid-wpvy4v7s]{transform:rotate(45deg)}.theme-toggle[data-astro-cid-wpvy4v7s]:hover .moon[data-astro-cid-wpvy4v7s]{transform:rotate(-20deg)}@supports (animation-timeline:scroll()){body[data-register] .site-header[data-astro-cid-wpvy4v7s]:after{content:"";background:var(--color-brand);transform-origin:0;height:3px;animation-name:read;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:scroll(root);position:absolute;bottom:0;left:0;right:0}}@keyframes read{0%{transform:scaleX(0)}}.bars[data-astro-cid-wpvy4v7s]{width:24px;height:16px;display:block;position:relative}.bars[data-astro-cid-wpvy4v7s] span[data-astro-cid-wpvy4v7s]{width:100%;height:2px;transition:transform var(--motion-base) var(--ease-out), opacity var(--motion-fast) var(--ease-out);background:currentColor;position:absolute;left:0}.bars[data-astro-cid-wpvy4v7s] span[data-astro-cid-wpvy4v7s]:first-child{top:0}.bars[data-astro-cid-wpvy4v7s] span[data-astro-cid-wpvy4v7s]:nth-child(2){top:7px}.bars[data-astro-cid-wpvy4v7s] span[data-astro-cid-wpvy4v7s]:nth-child(3){top:14px}.site-header[data-astro-cid-wpvy4v7s]:has(.menu:popover-open) .bars[data-astro-cid-wpvy4v7s] span[data-astro-cid-wpvy4v7s]:first-child{transform:translateY(7px)rotate(45deg)}.site-header[data-astro-cid-wpvy4v7s]:has(.menu:popover-open) .bars[data-astro-cid-wpvy4v7s] span[data-astro-cid-wpvy4v7s]:nth-child(2){opacity:0}.site-header[data-astro-cid-wpvy4v7s]:has(.menu:popover-open) .bars[data-astro-cid-wpvy4v7s] span[data-astro-cid-wpvy4v7s]:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.menu[data-astro-cid-wpvy4v7s]{inset:var(--bar-h) 0 auto 0;width:100%;max-width:none;padding:0 var(--gutter) var(--space-xs);border:0;border-top:var(--line-thin) solid var(--color-line);background:var(--color-bar);color:var(--color-heading);box-shadow:var(--shadow-lift);opacity:0;transition:opacity var(--motion-base) var(--ease-out), transform var(--motion-base) var(--ease-out), display var(--motion-base) allow-discrete, overlay var(--motion-base) allow-discrete;margin:0;position:fixed;transform:translateY(-.5rem)}.menu[data-astro-cid-wpvy4v7s]:popover-open{opacity:1;transform:none}@starting-style{.menu[data-astro-cid-wpvy4v7s]:popover-open{opacity:0;transform:translateY(-.5rem)}}.menu[data-astro-cid-wpvy4v7s] li[data-astro-cid-wpvy4v7s]+li[data-astro-cid-wpvy4v7s]{border-top:var(--line-thin) solid var(--color-line)}.menu[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s]{min-height:3.25rem;font-size:var(--step-1);align-items:center;font-weight:700;display:flex}.menu[data-astro-cid-wpvy4v7s] a[data-astro-cid-wpvy4v7s][aria-current=page]{color:var(--color-brand-text)}@media (width>=52rem){.wide[data-astro-cid-wpvy4v7s]{margin-left:auto;display:block}.toggle[data-astro-cid-wpvy4v7s],.menu[data-astro-cid-wpvy4v7s]{display:none}}.site-footer[data-astro-cid-jo6i4kqk]{border-top:var(--line-thin) solid var(--color-line)}.inner[data-astro-cid-jo6i4kqk]{gap:var(--space-s) var(--space-l);padding-block:var(--space-xl);display:grid}.who[data-astro-cid-jo6i4kqk]{min-height:var(--target);color:var(--color-heading);font-weight:var(--weight-display);justify-self:start;align-items:center;gap:.6rem;text-decoration:none;display:inline-flex}ul[data-astro-cid-jo6i4kqk]{margin-left:calc(-1 * var(--space-s));flex-wrap:wrap;padding:0;list-style:none;display:flex}ul[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{min-height:var(--target);padding-inline:var(--space-s);color:var(--color-text-light);align-items:center;font-weight:700;display:inline-flex}ul[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:var(--color-brand-text)}.small[data-astro-cid-jo6i4kqk]{font-size:var(--step--1);color:var(--color-text-muted)}@media (width>=52rem){.inner[data-astro-cid-jo6i4kqk]{grid-template-columns:auto 1fr;align-items:center}ul[data-astro-cid-jo6i4kqk]{margin-left:0;margin-right:calc(-1 * var(--space-s));justify-self:end}.small[data-astro-cid-jo6i4kqk]{grid-column:1/-1}}.to-top[data-astro-cid-vy5be4ad]{right:var(--space-s);bottom:var(--space-s);z-index:40;width:var(--target);height:var(--target);background:var(--color-surface);color:var(--color-heading);box-shadow:var(--shadow-lift);opacity:0;visibility:hidden;transition:opacity var(--motion-base) var(--ease-out), transform var(--motion-base) var(--ease-out), visibility var(--motion-base);border-radius:50%;place-items:center;display:grid;position:fixed;transform:translateY(.5rem)}.to-top[data-astro-cid-vy5be4ad].show{opacity:1;visibility:visible;transform:none}.to-top[data-astro-cid-vy5be4ad]:hover{color:var(--color-brand-text);text-decoration:none}html:not(.js) .to-top[data-astro-cid-vy5be4ad]{display:none}.ring[data-astro-cid-vy5be4ad]{width:100%;height:100%;position:absolute;inset:0;transform:rotate(-90deg)}.ring[data-astro-cid-vy5be4ad] circle[data-astro-cid-vy5be4ad]{fill:none;stroke-width:2px}.track[data-astro-cid-vy5be4ad]{stroke:var(--color-line)}.fill[data-astro-cid-vy5be4ad]{stroke:var(--color-brand);stroke-dasharray:100;stroke-dashoffset:100px}@supports (animation-timeline:scroll()){.fill[data-astro-cid-vy5be4ad]{animation-name:fill;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:scroll(root)}}@keyframes fill{to{stroke-dashoffset:0}}.to-top[data-astro-cid-vy5be4ad]:hover{transform:translateY(-2px)}.chev[data-astro-cid-vy5be4ad]{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.dots[data-astro-cid-sjzslmpt]{align-content:start;align-items:center;column-gap:var(--space-xs);grid-template-columns:minmax(0,1fr) auto;margin:0;display:grid}.area[data-astro-cid-sjzslmpt]{aspect-ratio:var(--dots-ratio,16 / 10);border-radius:var(--radius-l);background:var(--field-soil);grid-column:1/-1;overflow:hidden}canvas[data-astro-cid-sjzslmpt]{width:100%;height:100%}.note[data-astro-cid-sjzslmpt]{margin-top:var(--space-2xs);font-family:var(--font-label);font-size:var(--step--2);letter-spacing:.04em;color:var(--color-label);grid-area:2/1}.toggle[data-astro-cid-sjzslmpt]{width:var(--target);height:var(--target);margin-top:var(--space-3xs);margin-right:calc(-1 * var(--space-2xs));color:var(--color-label);cursor:pointer;transition:color var(--motion-fast) var(--ease-out), background-color var(--motion-fast) var(--ease-out);background:0 0;border:0;border-radius:50%;grid-area:2/2;justify-content:center;align-items:center;padding:0;display:inline-flex}.toggle[data-astro-cid-sjzslmpt][hidden]{display:none}.toggle[data-astro-cid-sjzslmpt]:hover{background:var(--color-brand-soft);color:var(--color-brand-text)}.toggle[data-astro-cid-sjzslmpt] svg[data-astro-cid-sjzslmpt]{fill:currentColor;stroke:currentColor;stroke-width:2.6px;stroke-linecap:round;stroke-linejoin:round}.toggle[data-astro-cid-sjzslmpt] .pause[data-astro-cid-sjzslmpt]{fill:none}[data-astro-cid-sjzslmpt][data-state=playing] .play[data-astro-cid-sjzslmpt],[data-astro-cid-sjzslmpt][data-state=paused] .pause[data-astro-cid-sjzslmpt]{display:none}.hero[data-astro-cid-ge2uvauf]{padding-block:var(--space-xl) var(--space-2xl);align-items:center;display:grid}.grid[data-astro-cid-ge2uvauf]{gap:var(--space-xl);width:100%;display:grid}.text[data-astro-cid-ge2uvauf]{align-content:center;gap:var(--space-s);max-width:40rem;display:grid}.hi[data-astro-cid-ge2uvauf]{color:var(--color-text-light);font-size:var(--step-1)}.name[data-astro-cid-ge2uvauf]{font-size:var(--step-5);font-weight:var(--weight-display);letter-spacing:-.035em;margin-bottom:var(--space-xs);line-height:.98}.line[data-astro-cid-ge2uvauf]{color:var(--color-text-light);font-size:var(--step-1);line-height:1.6}.links[data-astro-cid-ge2uvauf]{margin-top:var(--space-xs)}.links[data-astro-cid-ge2uvauf] a[data-astro-cid-ge2uvauf]{text-decoration:underline 2px;text-decoration-color:var(--color-brand-line);text-underline-offset:.25em;transition:text-decoration-color var(--motion-fast) var(--ease-out);font-weight:700}.links[data-astro-cid-ge2uvauf] a[data-astro-cid-ge2uvauf]:hover{text-decoration-color:currentColor}@media (width>=62rem){.hero[data-astro-cid-ge2uvauf]{min-height:min(calc(100svh - var(--bar-h) - 3rem), 52rem)}.grid[data-astro-cid-ge2uvauf]{align-items:center;gap:var(--space-2xl);grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}.field[data-astro-cid-ge2uvauf]{--dots-ratio:1 / 1.05}}@media (prefers-reduced-motion:no-preference){.rise[data-astro-cid-ge2uvauf]{animation:rise-in .7s var(--ease-out) both;animation-delay:calc(var(--d) * 80ms)}}@keyframes rise-in{0%{opacity:0;transform:translateY(16px)}}.band[data-astro-cid-vsq434ie]{padding:var(--space-xl) var(--gutter);background-color:var(--area);background-image:linear-gradient(var(--area-grid) 1px, transparent 1px), linear-gradient(90deg, var(--area-grid) 1px, transparent 1px);isolation:isolate;background-position:50%;background-size:48px 48px;place-items:center;display:grid;position:relative}.frame[data-astro-cid-vsq434ie]{aspect-ratio:16/9;border-radius:var(--radius-m);width:min(100%,56rem);color:var(--on-area);transition:transform var(--motion-slow) var(--ease-out), box-shadow var(--motion-slow) var(--ease-out);text-decoration:none;display:block}.wide[data-astro-cid-vsq434ie] .frame[data-astro-cid-vsq434ie]{width:min(100%,64rem)}.media[data-astro-cid-vsq434ie]{object-fit:cover;border-radius:var(--radius-m);width:100%;height:100%;box-shadow:var(--shadow-3)}.screens[data-astro-cid-vsq434ie]{justify-content:center;align-items:center;gap:clamp(.5rem,2.5vw,1.75rem);height:100%;display:flex}.screen[data-astro-cid-vsq434ie]{width:auto;height:88%;box-shadow:var(--shadow-3);transition:transform var(--motion-slow) var(--ease-out);border-radius:clamp(8px,1.6vw,18px)}.screen[data-astro-cid-vsq434ie]:nth-child(2n){transform:translateY(6%)}.screen[data-astro-cid-vsq434ie]:nth-child(n+4){display:none}@media (width>=40rem){.screen[data-astro-cid-vsq434ie]:nth-child(n+4){display:block}}.placeholder[data-astro-cid-vsq434ie]{justify-content:center;align-items:flex-start;gap:var(--space-2xs);height:100%;padding:var(--space-m) var(--space-l);border:var(--line-thin) dashed var(--area-dashed);border-radius:var(--radius-m);flex-direction:column;display:flex}.ph-label[data-astro-cid-vsq434ie]{font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--on-area)}.ph-need[data-astro-cid-vsq434ie]{max-width:34rem;color:var(--on-area-soft);font-size:1rem;line-height:1.5}a[data-astro-cid-vsq434ie].frame:not(.has-screens):hover{transform:translateY(-6px)}a[data-astro-cid-vsq434ie].frame:hover .screen[data-astro-cid-vsq434ie]{transform:translateY(-4%)}a[data-astro-cid-vsq434ie].frame:hover .screen[data-astro-cid-vsq434ie]:nth-child(2n){transform:translateY(2%)}@media (width>=48rem){.band[data-astro-cid-vsq434ie]{padding-block:var(--space-2xl)}}.kicker[data-astro-cid-ywabuju3]{min-height:1.5rem;font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-label);align-items:center;margin:0;font-weight:400;line-height:1.4;display:flex;position:relative}.kicker[data-astro-cid-ywabuju3]:before{content:"";top:50%;right:calc(100% + var(--space-m));border-top:var(--line-thin) solid var(--color-line-strong);transform-origin:100%;width:100vw;position:absolute}.inline[data-astro-cid-ywabuju3]{gap:var(--space-s)}.inline[data-astro-cid-ywabuju3]:before{display:none}.inline[data-astro-cid-ywabuju3]:after{content:"";border-top:var(--line-thin) solid var(--color-line-strong);transform-origin:0;flex:1}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.kicker[data-astro-cid-ywabuju3]:before,.inline[data-astro-cid-ywabuju3]:after{animation-name:draw;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view();animation-range:entry 10% cover 35%}}}@keyframes draw{0%{transform:scaleX(0)}}.tools[data-astro-cid-pmgndozx]{align-items:center;gap:var(--space-2xs) var(--space-s);flex-wrap:wrap;display:flex}.tools-label[data-astro-cid-pmgndozx]{font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-label)}ul[data-astro-cid-pmgndozx]{gap:var(--space-2xs);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}li[data-astro-cid-pmgndozx]{border-radius:var(--radius-s);background:var(--color-brand);color:var(--color-on-brand);font-family:var(--font-label);font-size:var(--step--2);letter-spacing:.08em;text-transform:uppercase;padding:.4rem .65rem;line-height:1.3}.start[data-astro-cid-pmgndozx]{align-items:flex-start;gap:var(--space-xs);flex-direction:column}@media (width>=62rem){.end[data-astro-cid-pmgndozx]{align-items:flex-end;gap:var(--space-xs);flex-direction:column}.end[data-astro-cid-pmgndozx] ul[data-astro-cid-pmgndozx]{flex-direction:column;align-items:flex-end}}.stats[data-astro-cid-23gkgyqt]{gap:var(--space-m);grid-template-columns:repeat(auto-fit,minmax(min(100%,11rem),1fr));display:grid}.stat[data-astro-cid-23gkgyqt]{align-content:start;gap:var(--space-3xs);padding-top:var(--space-s);border-top:var(--line-thick) solid var(--color-brand);display:grid}.value[data-astro-cid-23gkgyqt]{color:var(--color-heading);font-size:var(--step-3);font-weight:var(--weight-display);font-variant-numeric:tabular-nums;letter-spacing:-.02em;order:-1;line-height:1.05}.what[data-astro-cid-23gkgyqt]{color:var(--color-text-muted);font-size:1rem;line-height:1.45}.body[data-astro-cid-blxnnlkt]{gap:var(--space-l);padding-block:var(--space-xl) var(--space-2xl);display:grid}.display[data-astro-cid-blxnnlkt] a[data-astro-cid-blxnnlkt]{color:var(--color-heading);text-underline-offset:.12em;transition:text-decoration-color var(--motion-base) var(--ease-out);text-decoration:underline .06em #0000}.display[data-astro-cid-blxnnlkt] a[data-astro-cid-blxnnlkt]:hover{text-decoration-color:var(--color-brand)}.main-col[data-astro-cid-blxnnlkt]{gap:var(--space-l);display:grid}.summary[data-astro-cid-blxnnlkt]{font-size:var(--step-0)}@media (width>=62rem){.body[data-astro-cid-blxnnlkt]{padding-block:var(--space-2xl) var(--space-3xl)}.rail[data-astro-cid-blxnnlkt]{padding-top:.35rem}}.row[data-astro-cid-kvy7xguz]{gap:var(--space-s);padding-block:var(--space-l);border-top:var(--line-thin) solid var(--color-line);display:grid;position:relative}.meta[data-astro-cid-kvy7xguz]{align-items:center;gap:var(--space-2xs) var(--space-s);flex-wrap:wrap;display:flex}.years[data-astro-cid-kvy7xguz]{font-family:var(--font-label);font-size:var(--step--1);color:var(--color-label);font-variant-numeric:tabular-nums}.badge[data-astro-cid-kvy7xguz]{border-radius:var(--radius-s);background:var(--area);color:var(--on-area);font-family:var(--font-label);font-size:var(--step--2);letter-spacing:.08em;text-transform:uppercase;padding:.2rem .5rem;line-height:1.4}.text[data-astro-cid-kvy7xguz]{gap:var(--space-2xs);min-width:0;display:grid}.title[data-astro-cid-kvy7xguz]{font-size:var(--step-2);font-weight:var(--weight-display);letter-spacing:-.015em;line-height:1.15}.stretch[data-astro-cid-kvy7xguz]{color:var(--color-heading);text-underline-offset:.18em;transition:text-decoration-color var(--motion-base) var(--ease-out);text-decoration:underline 2px #0000}.stretch[data-astro-cid-kvy7xguz]:after{content:"";position:absolute;inset:0}.row[data-astro-cid-kvy7xguz]:hover .stretch[data-astro-cid-kvy7xguz]{text-decoration-color:var(--color-brand)}.summary[data-astro-cid-kvy7xguz]{color:var(--color-text);max-width:38rem}.tools-line[data-astro-cid-kvy7xguz]{font-family:var(--font-label);font-size:var(--step--1);color:var(--color-label);line-height:1.5}.thumb[data-astro-cid-kvy7xguz]{aspect-ratio:16/9;border-radius:var(--radius-m);background-color:var(--area);background-image:linear-gradient(var(--area-grid) 1px, transparent 1px), linear-gradient(90deg, var(--area-grid) 1px, transparent 1px);transition:transform var(--motion-slow) var(--ease-out), box-shadow var(--motion-slow) var(--ease-out);background-size:24px 24px;order:-1;grid-template:minmax(0,1fr)/minmax(0,1fr);place-items:center;display:grid;overflow:hidden}.thumb[data-astro-cid-kvy7xguz] img{object-fit:cover;width:100%;height:100%}.phone[data-astro-cid-kvy7xguz] img{object-fit:contain;width:auto;height:86%;box-shadow:var(--shadow-2);border-radius:8px}.ph[data-astro-cid-kvy7xguz]{font-family:var(--font-label);font-size:var(--step--2);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--on-area-soft)}.row[data-astro-cid-kvy7xguz]:hover .thumb[data-astro-cid-kvy7xguz]{box-shadow:var(--shadow-2);transform:translateY(-4px)}@media (width>=48rem){.row[data-astro-cid-kvy7xguz]{column-gap:var(--space-l);grid-template-columns:minmax(0,1fr) 15rem}.meta[data-astro-cid-kvy7xguz]{grid-column:1/-1}.thumb[data-astro-cid-kvy7xguz]{order:0;align-self:start}}@media (width>=62rem){.row[data-astro-cid-kvy7xguz]{column-gap:var(--space-xl);padding-block:var(--space-xl);grid-template-columns:11rem minmax(0,1fr) 17rem}.meta[data-astro-cid-kvy7xguz]{flex-direction:column;grid-column:auto;align-content:start;align-items:flex-start;padding-top:.4rem}}.profile[data-astro-cid-kie4ijr3]{justify-items:center;gap:var(--space-2xs);padding:var(--space-l) var(--space-m);border-radius:var(--radius-l);background:var(--color-surface);box-shadow:var(--shadow-1);text-align:center;display:grid}.portrait[data-astro-cid-kie4ijr3]{aspect-ratio:1;width:9rem;margin-bottom:var(--space-xs);border:var(--line-thin) dashed var(--color-line-strong);background:var(--color-sunk);border-radius:50%;place-items:center;display:grid}.photo[data-astro-cid-kie4ijr3]{object-fit:cover;border:var(--line-thin) solid var(--color-line);height:auto}.ph[data-astro-cid-kie4ijr3]{max-width:6rem;font-family:var(--font-label);font-size:var(--step--2);letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent);line-height:1.4}.who[data-astro-cid-kie4ijr3]{color:var(--color-heading);font-size:var(--step-2);font-weight:var(--weight-display);letter-spacing:-.015em;line-height:1.15}.role[data-astro-cid-kie4ijr3]{max-width:16rem;font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-label);line-height:1.5}.place[data-astro-cid-kie4ijr3]{color:var(--color-text-muted);font-size:1rem}.links[data-astro-cid-kie4ijr3]{gap:var(--space-3xs);margin-top:var(--space-3xs);padding:0;list-style:none;display:flex}.links[data-astro-cid-kie4ijr3] a[data-astro-cid-kie4ijr3]{width:var(--target);height:var(--target);color:var(--color-text-light);transition:color var(--motion-fast) var(--ease-out), background-color var(--motion-fast) var(--ease-out);border-radius:50%;place-items:center;display:inline-grid}.links[data-astro-cid-kie4ijr3] a[data-astro-cid-kie4ijr3]:hover{background:var(--color-brand-soft);color:var(--color-brand-text)}.github[data-astro-cid-kie4ijr3],.linkedin[data-astro-cid-kie4ijr3]{fill:currentColor}.mail[data-astro-cid-kie4ijr3]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linejoin:round}.cv[data-astro-cid-kie4ijr3]{margin-top:var(--space-xs)}.btn[data-astro-cid-kie4ijr3]:hover .arrow[data-astro-cid-kie4ijr3]{transform:translateY(2px)}.cv-note[data-astro-cid-kie4ijr3]{font-family:var(--font-label);font-size:var(--step--2);letter-spacing:.06em;color:var(--color-label)}.cv[data-astro-cid-kocz5gle]{margin:0;padding:0;list-style:none;display:grid}li[data-astro-cid-kocz5gle]{gap:var(--space-3xs);border-top:var(--line-thin) solid var(--color-line);transition:background-color var(--motion-fast) var(--ease-out);display:grid}.timeline[data-astro-cid-kocz5gle] li[data-astro-cid-kocz5gle]{padding-block:var(--space-m)}.compact[data-astro-cid-kocz5gle] li[data-astro-cid-kocz5gle]{padding-block:var(--space-xs)}.when[data-astro-cid-kocz5gle]{font-family:var(--font-label);font-size:var(--step--1);letter-spacing:.04em;font-variant-numeric:tabular-nums;color:var(--color-brand-text)}.what[data-astro-cid-kocz5gle]{gap:var(--space-3xs);min-width:0;display:grid}.title[data-astro-cid-kocz5gle]{font-size:var(--step-1);font-weight:var(--weight-display);line-height:1.3}.compact[data-astro-cid-kocz5gle] .title[data-astro-cid-kocz5gle]{font-size:1.0625rem;font-weight:700}.title[data-astro-cid-kocz5gle] a[data-astro-cid-kocz5gle]{color:var(--color-heading);text-decoration:underline;text-decoration-color:var(--color-brand-line);text-underline-offset:.2em;text-decoration-thickness:2px}.title[data-astro-cid-kocz5gle] a[data-astro-cid-kocz5gle]:hover{text-decoration-color:currentColor}.where[data-astro-cid-kocz5gle]{color:var(--color-text-muted);font-size:1rem}.text[data-astro-cid-kocz5gle]{max-width:40rem;color:var(--color-text);font-size:1.0625rem;line-height:1.65}@media (width>=48rem){.timeline[data-astro-cid-kocz5gle] li[data-astro-cid-kocz5gle]{gap:var(--space-l);grid-template-columns:9.5rem minmax(0,1fr)}.compact[data-astro-cid-kocz5gle] li[data-astro-cid-kocz5gle]{gap:var(--space-l);grid-template-columns:minmax(0,1fr) auto;align-items:baseline}.compact[data-astro-cid-kocz5gle] .when[data-astro-cid-kocz5gle]{text-align:right;color:var(--color-label);order:2}}.chips[data-astro-cid-e7c7q4v4]{margin:0 0 var(--space-l);border:0;min-width:0;padding:0}legend[data-astro-cid-e7c7q4v4]{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.row[data-astro-cid-e7c7q4v4]{gap:var(--space-2xs);flex-wrap:wrap;display:flex}.chip[data-astro-cid-e7c7q4v4]{position:relative}input[data-astro-cid-e7c7q4v4]{opacity:0;pointer-events:none;margin:0;position:absolute;inset:0}label[data-astro-cid-e7c7q4v4]{min-height:var(--target);min-width:var(--target);padding-inline:var(--space-s);border:var(--line-thin) solid var(--color-line-strong);border-radius:var(--radius-s);color:var(--color-text-light);font-family:var(--font-label);font-size:var(--step--1);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:color var(--motion-fast) var(--ease-out), border-color var(--motion-fast) var(--ease-out), background-color var(--motion-fast) var(--ease-out);justify-content:center;align-items:center;display:inline-flex}label[data-astro-cid-e7c7q4v4]:hover{border-color:var(--color-heading);color:var(--color-heading)}input[data-astro-cid-e7c7q4v4]:checked+label[data-astro-cid-e7c7q4v4]{border-color:var(--color-brand);background:var(--color-brand);color:var(--color-on-brand);view-transition-name:active-chip}input[data-astro-cid-e7c7q4v4]:focus-visible+label[data-astro-cid-e7c7q4v4]{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:var(--radius-s)}.seasons[data-astro-cid-raeyfvor]{margin:0}figcaption[data-astro-cid-raeyfvor]{max-width:var(--measure);margin:0 0 var(--space-l);color:var(--color-text-muted)}.chart[data-astro-cid-raeyfvor]{gap:var(--space-xs);padding:var(--space-m);border-radius:var(--radius-l);background:var(--color-surface);box-shadow:var(--shadow-1);max-width:54rem;display:grid}.row[data-astro-cid-raeyfvor]{gap:var(--space-3xs);display:grid}.area[data-astro-cid-raeyfvor]{color:var(--color-label);font-family:var(--font-label);font-size:var(--step--1);letter-spacing:.04em}.cells[data-astro-cid-raeyfvor]{grid-template-columns:repeat(var(--weeks), minmax(0, 1fr));max-width:calc(var(--weeks) * 32px);gap:4px;display:grid}.month[data-astro-cid-raeyfvor]{font-size:var(--step--2);color:var(--color-text-muted);white-space:nowrap;line-height:1.2}.months[data-astro-cid-raeyfvor] .area[data-astro-cid-raeyfvor]{display:none}.cell[data-astro-cid-raeyfvor]{aspect-ratio:1;background:var(--color-band);transition:transform var(--motion-fast) var(--ease-out);border-radius:3px;position:relative}.cell[data-astro-cid-raeyfvor][data-tip]:hover{z-index:2;box-shadow:0 0 0 2px var(--color-bg), 0 0 0 4px var(--color-text-light)}.cell[data-astro-cid-raeyfvor][data-tip]:after{content:attr(data-tip);border-radius:var(--radius-s);background:var(--tip-bg);width:max-content;max-width:14rem;color:var(--tip-text);box-shadow:var(--shadow-3);font-size:var(--step--2);text-align:left;white-space:normal;pointer-events:none;padding:.35rem .6rem;line-height:1.4;display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.cell[data-astro-cid-raeyfvor][data-tip]:hover:after{display:block}.tip-start[data-astro-cid-raeyfvor][data-tip]:after{left:0;transform:none}.tip-end[data-astro-cid-raeyfvor][data-tip]:after{left:auto;right:0;transform:none}@media (prefers-reduced-motion:no-preference){.cell[data-astro-cid-raeyfvor][data-tip]:hover:after{animation:tip-in var(--motion-fast) var(--ease-out)}}@keyframes tip-in{0%{opacity:0}}.legend[data-astro-cid-raeyfvor]{gap:var(--space-2xs) var(--space-m);margin-top:var(--space-s);color:var(--color-text-muted);font-size:var(--step--2);flex-wrap:wrap;display:flex}.legend[data-astro-cid-raeyfvor] span[data-astro-cid-raeyfvor]{align-items:center;gap:.5em;display:inline-flex}.legend[data-astro-cid-raeyfvor] .cell[data-astro-cid-raeyfvor]{width:12px}.l1[data-astro-cid-raeyfvor]{background:var(--color-brand-line)}.l2[data-astro-cid-raeyfvor]{background:var(--color-brand)}@media (width>=40rem){.row[data-astro-cid-raeyfvor]{align-items:center;gap:var(--space-s);grid-template-columns:10rem 1fr}.months[data-astro-cid-raeyfvor] .area[data-astro-cid-raeyfvor]{display:block}}@media (prefers-reduced-motion:no-preference){.l1[data-astro-cid-raeyfvor],.l2[data-astro-cid-raeyfvor]{animation:grow var(--motion-slow) var(--ease-out) backwards;animation-delay:calc(var(--i) * 25ms)}}@keyframes grow{0%{transform:scale(.6)}}.margin-note[data-astro-cid-zvzs4mdk]{padding:var(--space-s) var(--space-m);border-left:var(--line-thick) solid var(--color-brand);border-radius:0 var(--radius-s) var(--radius-s) 0;background:var(--color-surface);color:var(--color-text-muted);font-size:1rem;line-height:1.65}.flagged[data-astro-cid-zvzs4mdk]{border-left-color:var(--color-accent)}.label[data-astro-cid-zvzs4mdk]{margin-bottom:var(--space-3xs);color:var(--color-accent);font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;font-weight:500;display:block}.prose .margin-note[data-astro-cid-zvzs4mdk]{margin-block:var(--space-l)}.figure[data-astro-cid-khyig4bw]{margin:var(--space-l) 0}.portrait[data-astro-cid-khyig4bw]{max-width:18rem}.portrait[data-astro-cid-khyig4bw].has-media{max-width:28rem}.zoom[data-astro-cid-khyig4bw]{border-radius:var(--radius-m);cursor:zoom-in;display:block}.media[data-astro-cid-khyig4bw],.placeholder[data-astro-cid-khyig4bw]{border-radius:var(--radius-m);width:100%}.media[data-astro-cid-khyig4bw]{border:var(--line-thin) solid var(--color-line);height:auto;box-shadow:var(--shadow-1);transition:box-shadow var(--motion-base) var(--ease-out)}.zoom[data-astro-cid-khyig4bw]:hover .media[data-astro-cid-khyig4bw]{box-shadow:var(--shadow-2)}.placeholder[data-astro-cid-khyig4bw]{aspect-ratio:var(--ratio);justify-content:center;gap:var(--space-2xs);padding:var(--space-m);border:var(--line-thin) dashed var(--color-line-strong);background:var(--color-sunk);flex-direction:column;display:flex}.ph-label[data-astro-cid-khyig4bw]{font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-accent);font-weight:500}.ph-ratio[data-astro-cid-khyig4bw]{color:var(--color-text-muted);margin-left:.8em}.ph-need[data-astro-cid-khyig4bw]{color:var(--color-text-muted);max-width:30rem;font-size:1rem;line-height:1.45}figcaption[data-astro-cid-khyig4bw]{margin-top:var(--space-2xs);font-size:var(--step--1);color:var(--color-text-muted);line-height:1.45}.toc[data-astro-cid-fe2noxmf]{margin-bottom:var(--space-xl)}h2[data-astro-cid-fe2noxmf]{margin-bottom:var(--space-xs);font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-label);font-weight:400}ul[data-astro-cid-fe2noxmf]{border-left:var(--line-thin) solid var(--color-line);margin:0;padding:0;list-style:none}a[data-astro-cid-fe2noxmf]{min-height:var(--target);padding-left:var(--space-s);color:var(--color-text-muted);transition:color var(--motion-fast) var(--ease-out), border-color var(--motion-fast) var(--ease-out);border-left:2px solid #0000;align-items:center;margin-left:-1px;font-size:1rem;line-height:1.4;display:flex}a[data-astro-cid-fe2noxmf]:hover{color:var(--color-heading);text-decoration:none}a[data-astro-cid-fe2noxmf][aria-current]{border-left-color:var(--color-brand);color:var(--color-heading);font-weight:700}.post[data-astro-cid-5cxrjv24]{min-width:0}html:has([data-post]){scroll-padding-top:calc(var(--bar-h) + 5.5rem)}html.js .post[data-astro-cid-5cxrjv24]:not([data-ready]) .post-body[data-astro-cid-5cxrjv24]>h2:not(:first-child),html.js .post[data-astro-cid-5cxrjv24]:not([data-ready]) .post-body[data-astro-cid-5cxrjv24]>h2:not(:first-child)~*,html:not(.js) .topic-bar[data-astro-cid-5cxrjv24],html:not(.js) .up-next[data-astro-cid-5cxrjv24]{display:none}.topic-bar[data-astro-cid-5cxrjv24]{top:calc(var(--bar-h) + var(--space-2xs));z-index:30;align-items:center;gap:var(--space-3xs);max-width:var(--measure);margin-bottom:var(--space-l);padding:var(--space-3xs);border:var(--line-thin) solid var(--color-line);border-radius:var(--radius-m);background:var(--color-surface);box-shadow:var(--shadow-1);view-transition-name:topic-bar;display:flex;position:sticky}.tb-button[data-astro-cid-5cxrjv24]{width:var(--target);height:var(--target);border-radius:var(--radius-s);color:var(--color-heading);cursor:pointer;transition:background-color var(--motion-fast) var(--ease-out), color var(--motion-fast) var(--ease-out);background:0 0;border:0;flex:none;place-items:center;padding:0;display:inline-grid}.tb-button[data-astro-cid-5cxrjv24]:hover{background:var(--color-brand-soft);color:var(--color-brand-text)}.tb-button[data-astro-cid-5cxrjv24][aria-disabled=true]{color:var(--color-line-strong);cursor:default;background:0 0}.tb-button[data-astro-cid-5cxrjv24] svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.tb-title[data-astro-cid-5cxrjv24]{min-width:0;padding-inline:var(--space-2xs);flex:1;line-height:1.25;display:grid}.tb-post[data-astro-cid-5cxrjv24]{font-family:var(--font-label);font-size:var(--step--2);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-label)}.tb-current[data-astro-cid-5cxrjv24]{color:var(--color-heading);font-weight:700}.tb-count[data-astro-cid-5cxrjv24]{padding-inline:var(--space-2xs);font-family:var(--font-label);font-size:var(--step--1);font-variant-numeric:tabular-nums;color:var(--color-label);flex:none;display:none}@media (width>=26rem){.tb-count[data-astro-cid-5cxrjv24]{display:block}}.topic-menu[data-astro-cid-5cxrjv24]{max-height:min(70vh,32rem);padding:var(--space-2xs);border:var(--line-thin) solid var(--color-line);border-radius:var(--radius-m);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-2);opacity:0;transition:opacity var(--motion-base) var(--ease-out), transform var(--motion-base) var(--ease-out), display var(--motion-base) allow-discrete, overlay var(--motion-base) allow-discrete;margin:0;position:fixed;inset:auto;overflow:auto;transform:translateY(-.4rem)}.topic-menu[data-astro-cid-5cxrjv24]:popover-open{opacity:1;transform:none}@starting-style{.topic-menu[data-astro-cid-5cxrjv24]:popover-open{opacity:0;transform:translateY(-.4rem)}}ol[data-astro-cid-5cxrjv24]{margin:0;padding:0;list-style:none}.topic-menu[data-astro-cid-5cxrjv24] a[data-astro-cid-5cxrjv24]{align-items:center;gap:var(--space-s);min-height:var(--target);padding:.4rem var(--space-xs);border-radius:var(--radius-s);color:var(--color-text);line-height:1.35;text-decoration:none;display:flex}.topic-menu[data-astro-cid-5cxrjv24] a[data-astro-cid-5cxrjv24]:hover{background:var(--color-brand-soft);color:var(--color-heading)}.topic-menu[data-astro-cid-5cxrjv24] a[data-astro-cid-5cxrjv24][aria-current]{color:var(--color-heading);font-weight:700}.n[data-astro-cid-5cxrjv24]{font-family:var(--font-label);font-size:var(--step--1);font-variant-numeric:tabular-nums;color:var(--color-label);flex:none}.topic-menu[data-astro-cid-5cxrjv24] a[data-astro-cid-5cxrjv24][aria-current] .n[data-astro-cid-5cxrjv24]{color:var(--color-brand-text)}.post-body[data-astro-cid-5cxrjv24]>.topic>*+*{margin-top:var(--space-s)}.post-body[data-astro-cid-5cxrjv24]>.topic+.topic:not([hidden]){margin-top:var(--space-xl)}.post-body[data-astro-cid-5cxrjv24]>.topic>h2+*{margin-top:var(--space-xs)}.post[data-astro-cid-5cxrjv24][data-ready] .post-body[data-astro-cid-5cxrjv24]>.topic>h2{font-size:var(--step-3);line-height:var(--leading-display);letter-spacing:var(--tracking-display);margin-top:0}.post[data-astro-cid-5cxrjv24][data-ready] .post-body[data-astro-cid-5cxrjv24]>.topic>h2:focus{outline:none}.post-foot[data-astro-cid-5cxrjv24]{gap:var(--space-xl);max-width:var(--measure);margin-top:var(--space-2xl);display:grid}.up-next[data-astro-cid-5cxrjv24]{align-items:center;gap:var(--space-3xs) var(--space-m);padding:var(--space-m) var(--space-l);border-radius:var(--radius-m);background:var(--color-brand);color:var(--color-on-brand);box-shadow:var(--shadow-1);transition:transform var(--motion-base) var(--ease-out), box-shadow var(--motion-base) var(--ease-out), background-color var(--motion-fast) var(--ease-out);grid-template-columns:minmax(0,1fr) auto;text-decoration:none;display:grid}.up-next[data-astro-cid-5cxrjv24]:hover{background:var(--color-brand-hover);box-shadow:var(--shadow-lift);text-decoration:none;transform:translateY(-2px)}.up-next[data-astro-cid-5cxrjv24][hidden]{display:none}.un-label[data-astro-cid-5cxrjv24]{font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;opacity:.85;grid-column:1}.un-title[data-astro-cid-5cxrjv24]{font-size:var(--step-2);font-weight:var(--weight-display);letter-spacing:-.015em;grid-column:1;line-height:1.15}.up-next[data-astro-cid-5cxrjv24] svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:28px;height:28px;transition:transform var(--motion-base) var(--ease-out);grid-area:1/2/span 2}.up-next[data-astro-cid-5cxrjv24]:hover svg{transform:translate(4px)}.tl-label[data-astro-cid-5cxrjv24]{margin-bottom:var(--space-2xs);font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-label)}.topic-list[data-astro-cid-5cxrjv24] li[data-astro-cid-5cxrjv24]{border-top:var(--line-thin) solid var(--color-line)}.topic-list[data-astro-cid-5cxrjv24] a[data-astro-cid-5cxrjv24]{align-items:center;gap:var(--space-s);min-height:var(--target);color:var(--color-text);padding-block:.35rem;text-decoration:none;display:flex;position:relative}.topic-list[data-astro-cid-5cxrjv24] a[data-astro-cid-5cxrjv24]:before{content:"+" / "";width:1rem;color:var(--color-brand-text);font-family:var(--font-label);text-align:center;transition:transform var(--motion-base) var(--ease-out);flex:none;font-weight:500}.topic-list[data-astro-cid-5cxrjv24] a[data-astro-cid-5cxrjv24]:hover:before{transform:rotate(90deg)}.topic-list[data-astro-cid-5cxrjv24] a[data-astro-cid-5cxrjv24]:hover{color:var(--color-heading)}.topic-list[data-astro-cid-5cxrjv24] a[data-astro-cid-5cxrjv24][aria-current]{color:var(--color-heading);font-weight:700}.phones[data-astro-cid-atyndiuf]{margin:var(--space-l) 0}.phones[data-astro-cid-atyndiuf] ul[data-astro-cid-atyndiuf]{gap:var(--space-m) var(--space-s);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.phones[data-astro-cid-atyndiuf] li[data-astro-cid-atyndiuf]{align-content:start;justify-items:center;gap:var(--space-2xs);min-width:0;margin:0;display:grid}.shot[data-astro-cid-atyndiuf]{border:var(--line-thin) solid var(--color-line);width:100%;height:auto;box-shadow:var(--shadow-1);border-radius:clamp(10px,2vw,16px)}.label[data-astro-cid-atyndiuf]{font-family:var(--font-label);font-size:var(--step--2);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-label);text-align:center}figcaption[data-astro-cid-atyndiuf]{margin-top:var(--space-s);font-size:var(--step--1);color:var(--color-text-muted);line-height:1.45}@media (width>=48rem){.phones[data-astro-cid-atyndiuf] ul[data-astro-cid-atyndiuf]{grid-template-columns:repeat(var(--n), minmax(0, 1fr))}}.shelf[data-astro-cid-mlqm4rwu]{gap:var(--space-s);display:grid}.intro[data-astro-cid-mlqm4rwu]{max-width:var(--measure);color:var(--color-text-light);font-size:var(--step-1);line-height:1.6}.cards[data-astro-cid-mlqm4rwu]{gap:var(--space-m);margin-top:var(--space-s);grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));padding:0;list-style:none;display:grid}.card[data-astro-cid-mlqm4rwu]{gap:var(--space-2xs);padding:var(--space-m);border-top:4px solid var(--area);border-radius:var(--radius-s) var(--radius-s) var(--radius-l) var(--radius-l);background:var(--color-surface);box-shadow:var(--shadow-1);transition:transform var(--motion-base) var(--ease-out), box-shadow var(--motion-base) var(--ease-out);grid-template-rows:auto auto 1fr auto;display:grid;position:relative}.card[data-astro-cid-mlqm4rwu]:hover{box-shadow:var(--shadow-2);transform:translateY(-4px)}.kind[data-astro-cid-mlqm4rwu]{font-family:var(--font-label);font-size:var(--step--2);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-label)}.title[data-astro-cid-mlqm4rwu]{font-size:var(--step-2);font-weight:var(--weight-display);letter-spacing:-.015em;line-height:1.15}.stretch[data-astro-cid-mlqm4rwu]{color:var(--color-heading);text-underline-offset:.18em;transition:text-decoration-color var(--motion-base) var(--ease-out);text-decoration:underline 2px #0000}.stretch[data-astro-cid-mlqm4rwu]:after{content:"";position:absolute;inset:0}.card[data-astro-cid-mlqm4rwu]:hover .stretch[data-astro-cid-mlqm4rwu]{text-decoration-color:var(--color-brand)}.text[data-astro-cid-mlqm4rwu]{color:var(--color-text);font-size:1rem;line-height:1.6}.links[data-astro-cid-mlqm4rwu]{z-index:1;gap:0 var(--space-s);margin-top:var(--space-2xs);flex-wrap:wrap;padding:0;list-style:none;display:flex;position:relative}.links[data-astro-cid-mlqm4rwu] a[data-astro-cid-mlqm4rwu]{min-height:var(--target);font-family:var(--font-label);font-size:var(--step--1);letter-spacing:.02em;text-underline-offset:.2em;align-items:center;text-decoration:underline;display:inline-flex}.install[data-astro-cid-mlqm4rwu]{gap:var(--space-2xs);max-width:var(--measure);margin-top:var(--space-m);display:grid}.install-label[data-astro-cid-mlqm4rwu]{font-family:var(--font-label);font-size:var(--step--1);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-label)}pre[data-astro-cid-mlqm4rwu]{padding:var(--space-s) var(--space-m);border-radius:var(--radius-m);background:var(--code-bg);color:var(--code-text);font-family:var(--font-label);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:.8125rem;line-height:1.6}code[data-astro-cid-mlqm4rwu]{color:inherit;font-size:inherit;background:0 0;padding:0}
