:root{color-scheme:light dark;--font-sans:"InterVariable", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--step--2:clamp(.7rem, .68rem + .12vw, .78rem);--step--1:clamp(.875rem, .83rem + .22vw, 1rem);--step-0:clamp(1rem, .95rem + .27vw, 1.125rem);--step-1:clamp(1.125rem, 1.05rem + .38vw, 1.313rem);--step-2:clamp(1.375rem, 1.24rem + .68vw, 1.625rem);--step-3:clamp(1.75rem, 1.52rem + 1.14vw, 2.25rem);--step-4:clamp(2.125rem, 1.74rem + 1.93vw, 3.125rem);--step-5:clamp(2.625rem, 2.05rem + 2.87vw, 4.125rem);--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--color-bg:#0b0c10;--color-surface:#121419;--color-surface-raised:#171b24;--color-border:#1f232b;--color-border-strong:#2e3340;--color-rule:#1f232b;--color-text:#f2f5f7;--color-text-muted:#9aa3ab;--color-text-faint:#8b95a1;--color-accent:#06b6d4;--color-accent-strong:#22d3ee;--color-accent-ink:#0b0c10;--color-focus:#06b6d4;--color-danger:#f87171;--shadow-sm:0 1px 2px #00000073;--shadow-md:0 4px 12px #00000080;--shadow-lg:0 12px 40px #0009;--shadow-xl:0 20px 60px #000000b3}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){color-scheme:light;--color-bg:#fff;--color-surface:#f6f7f9;--color-surface-raised:#fff;--color-border:#e6e8ec;--color-border-strong:#c8cdd6;--color-rule:#e6e8ec;--color-text:#0d1014;--color-text-muted:#5b6670;--color-text-faint:#68737d;--color-accent:#0e7490;--color-accent-strong:#155e75;--color-accent-ink:#fff;--color-focus:#0891b2;--color-danger:#dc2626;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 12px #00000012;--shadow-lg:0 12px 40px #0000001a;--shadow-xl:0 20px 60px #00000021}}:root[data-theme=light]{color-scheme:light;--color-bg:#fff;--color-surface:#f6f7f9;--color-surface-raised:#fff;--color-border:#e6e8ec;--color-border-strong:#c8cdd6;--color-rule:#e6e8ec;--color-text:#0d1014;--color-text-muted:#5b6670;--color-text-faint:#68737d;--color-accent:#0e7490;--color-accent-strong:#155e75;--color-accent-ink:#fff;--color-focus:#0891b2;--color-danger:#dc2626;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 12px #00000012;--shadow-lg:0 12px 40px #0000001a;--shadow-xl:0 20px 60px #00000021}:root[data-theme=dark]{color-scheme:dark}@font-face{font-family:InterVariable;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/InterVariable-Latin.woff2)format("woff2");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:InterVariable;font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/InterVariable-Italic-Latin.woff2)format("woff2");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}*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}html{-webkit-text-size-adjust:100%;tab-size:4;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height,4rem) + 1rem)}body{text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100svh}img,picture,video,canvas,svg{max-width:100%;height:auto;display:block}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0}ul[role=list],ol[role=list]{list-style:none}:target{scroll-margin-block-start:calc(var(--header-height,4rem) + 1rem)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}body{font-family:var(--font-sans);font-size:var(--step-0);color:var(--color-text);background-color:var(--color-bg);font-feature-settings:"ss01", "cv11";line-height:1.6}h1,h2,h3,h4,h5,h6{font-weight:var(--weight-bold);letter-spacing:-.02em;color:var(--color-text);text-wrap:balance;line-height:1.15}h1{font-size:var(--step-4);letter-spacing:-.03em}h2{font-size:var(--step-3)}h3{font-size:var(--step-2)}h4{font-size:var(--step-1)}h5{font-size:var(--step-0);text-transform:uppercase;letter-spacing:.06em;font-size:var(--step--1)}h6{font-size:var(--step--1);color:var(--color-text-muted);font-weight:var(--weight-semibold)}p,li{text-wrap:pretty}em{font-style:italic}strong{font-weight:var(--weight-semibold)}small{font-size:var(--step--1);color:var(--color-text-muted)}code,kbd,pre{font-family:var(--font-mono);font-size:.9em}code{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:.25rem;padding:.1em .35em}pre{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:.5rem;padding:1rem 1.25rem;line-height:1.55;overflow-x:auto}pre code{background:0 0;border:0;border-radius:0;padding:0}pre[class*=language-]{color:#e1e4e8;background-color:#24292e}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#fdaeb7;font-style:italic}.token.punctuation,.token.operator{color:#e1e4e8}.token.tag,.token.boolean,.token.number,.token.deleted{color:#f97583}.token.property,.token.constant,.token.symbol,.token.attr-name,.token.selector,.token.string,.token.char,.token.builtin,.token.inserted{color:#85e89d}.token.function,.token.class-name,.token.keyword{color:#b392f0}.token.attr-value,.token.regex,.token.variable{color:#9ecbff}blockquote{border-inline-start:3px solid var(--color-accent);color:var(--color-text-muted);padding-inline-start:1rem;font-style:italic}hr{border:0;border-top:1px solid var(--color-border);margin-block:2rem}:root{--header-height:4rem}body{background-color:var(--color-bg);min-height:100svh;color:var(--color-text);flex-direction:column;transition:background-color .2s,color .2s;display:flex}main{flex:1 0 auto}::selection{background-color:var(--color-text);color:var(--color-bg)}a{color:inherit;text-decoration:none}.prose a,.editorial a{color:var(--color-text);text-underline-offset:.2em;text-decoration:underline 1px;text-decoration-color:var(--color-text-faint);transition:color .12s,text-decoration-color .12s}.prose a:hover,.editorial a:hover{color:var(--color-accent);text-decoration-color:var(--color-accent)}.skip-link{background-color:var(--color-text);color:var(--color-bg);font-size:var(--step--1);z-index:50;padding:.5rem 1rem;transition:transform .2s;position:absolute;inset-block-start:.5rem;inset-inline-start:.5rem;transform:translateY(-200%)}.skip-link:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:inherit;transform:translateY(0)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:inherit}.container{width:100%;max-width:72rem;margin-inline:auto;padding-inline:clamp(1.25rem,4vw,2rem)}.container--narrow{max-width:58rem}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.stack>*+*{margin-block-start:var(--stack-space,1rem)}.flow>*+*{margin-block-start:var(--flow-space,1em)}.muted{color:var(--color-text-muted)}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.lede{font-size:var(--step-1);color:var(--color-text-muted);max-width:60ch}.eyebrow{font-size:var(--step--1);font-weight:var(--weight-medium);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);display:inline-block}.divider{background-color:var(--color-border);border:0;height:1px;margin:0}:root:lang(es) [lang=en],:root:lang(en) [lang=es]{display:none!important}.site-header__sentinel{pointer-events:none;block-size:1px;inline-size:1px;position:absolute;inset-block-start:.5rem;inset-inline-start:0}.site-header{z-index:40;background:color-mix(in oklab, var(--color-bg) 96%, transparent);border-block-end:1px solid #0000;height:4rem;transition:background .2s,backdrop-filter .2s,box-shadow .2s,border-color .2s;position:fixed;inset-block-start:0;inset-inline:0}.site-header[data-scrolled=true]{background:color-mix(in oklab, var(--color-bg) 82%, transparent);-webkit-backdrop-filter:saturate(150%)blur(18px);box-shadow:0 8px 30px color-mix(in oklab, var(--color-bg) 55%, transparent);border-color:color-mix(in oklab, var(--color-border) 78%, transparent)}body{padding-block-start:4rem}body.site-nav-open{overflow:hidden}.site-header__inner{justify-content:space-between;align-items:center;gap:1.5rem;height:100%;display:flex;position:relative}@media (width>=48rem){.site-header__inner{grid-template-columns:1fr auto 1fr;display:grid}}.site-header__brand{min-block-size:2.5rem;color:var(--color-text-muted);justify-content:center;justify-self:start;align-items:center;padding-inline:.1rem;transition:color .12s;display:inline-flex}.site-header__brand:hover{color:var(--color-text)}.site-header__brand-name{font-size:.95rem;font-weight:var(--weight-semibold);letter-spacing:-.045em;line-height:1}.site-header__nav{display:none}@media (width>=48rem){.site-header__nav{gap:.25rem;display:flex}}.site-header__link{color:var(--color-text-muted);font-size:var(--step--1);font-weight:var(--weight-medium);padding:.4rem .6rem;transition:color .12s;position:relative}.site-header__link:after{content:"";background-color:var(--color-accent);transform-origin:100%;height:2px;transition:transform .4s cubic-bezier(.16,1,.3,1);position:absolute;bottom:.1rem;left:.6rem;right:.6rem;transform:scaleX(0)}.site-header__link:hover{color:var(--color-text)}.site-header__link:hover:after{transform-origin:0;transform:scaleX(1)}.site-header__link[aria-current=page]{color:var(--color-text)}.site-header__link[aria-current=page]:after{transform-origin:0;transform:scaleX(1)}.site-header__actions{border:1px solid color-mix(in oklab, var(--color-border) 88%, transparent);background:color-mix(in oklab, var(--color-surface) 72%, transparent);box-shadow:inset 0 1px 0 color-mix(in oklab, var(--color-text) 5%, transparent);border-radius:999px;justify-self:end;align-items:center;gap:.125rem;padding:.2rem;display:inline-flex}.lang-switch{block-size:2.25rem;min-inline-size:2.25rem;color:var(--color-text-muted);font-size:var(--step--2);font-weight:var(--weight-semibold);letter-spacing:.06em;border:0;border-radius:999px;justify-content:center;align-items:center;padding:0 .65rem;transition:color .12s,background .12s;display:inline-flex}.lang-switch:hover{color:var(--color-text);background:color-mix(in oklab, var(--color-accent) 12%, transparent)}.theme-toggle{block-size:2.25rem;inline-size:2.25rem;color:var(--color-text-muted);background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;transition:color .12s,background .12s,transform .12s;display:inline-flex}.theme-toggle:hover{color:var(--color-text);background:color-mix(in oklab, var(--color-accent) 12%, transparent)}.theme-toggle:hover svg{transform:rotate(-12deg)}.theme-toggle .theme-toggle__icon{justify-content:center;align-items:center}.theme-toggle svg{transition:transform .2s}.theme-toggle__icon{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme]) .theme-toggle__icon--dark{display:inline-flex}}@media (prefers-color-scheme:light){:root:not([data-theme]) .theme-toggle__icon--light{display:inline-flex}}:root[data-theme=light] .theme-toggle__icon--light,:root[data-theme=dark] .theme-toggle__icon--dark{display:inline-flex}.site-header__toggle{cursor:pointer;background:0 0;border:none;border-radius:999px;flex-direction:column;justify-content:center;gap:5px;block-size:2.25rem;inline-size:2.25rem;padding:.55rem;transition:background .12s;display:flex}.site-header__toggle:hover{background:color-mix(in oklab, var(--color-accent) 12%, transparent)}@media (width>=48rem){.site-header__toggle{display:none}}.site-header__toggle .hamburger-line{background:var(--color-text-muted);border-radius:2px;block-size:2px;inline-size:100%;transition:transform .2s,opacity .2s;display:block}.site-header__toggle[aria-expanded=true] .hamburger-line:first-child{transform:translateY(7px)rotate(45deg)}.site-header__toggle[aria-expanded=true] .hamburger-line:nth-child(2){opacity:0}.site-header__toggle[aria-expanded=true] .hamburger-line:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.site-header__drawer{z-index:39;background:color-mix(in oklab, var(--color-bg) 97%, transparent);-webkit-backdrop-filter:blur(20px);opacity:0;visibility:hidden;flex-direction:column;justify-content:center;align-items:center;padding:5rem clamp(1.25rem,4vw,2rem) 2rem;transition:opacity .2s,visibility .2s,transform .2s;display:flex;position:fixed;inset:0;transform:translateY(-.75rem)}.site-header__drawer[data-open=true]{opacity:1;visibility:visible;transform:translateY(0)}@media (width>=48rem){.site-header__drawer{display:none!important}}.site-header__drawer ul{text-align:center;gap:clamp(1.25rem,4vh,2rem);margin:0;padding:0;list-style:none;display:grid}.site-header__drawer a{font-size:var(--step-3);font-weight:var(--weight-bold);color:var(--color-text);letter-spacing:-.02em;padding:.25rem .5rem .45rem;transition:color .12s;display:inline-block;position:relative}.site-header__drawer a:after{content:"";background:var(--color-accent);border-radius:999px;block-size:2px;transition:transform .2s;position:absolute;inset-block-end:0;inset-inline:22%;transform:scaleX(0)}.site-header__drawer a:hover{color:var(--color-accent-strong)}.site-header__drawer a:hover:after{transform:scaleX(1)}.site-header__drawer a[aria-current=page]{color:var(--color-accent-strong)}.site-header__drawer a[aria-current=page]:after{transform:scaleX(1)}.site-footer{border-block-start:1px solid var(--color-border);font-size:var(--step--1);color:var(--color-text-muted);margin-block-start:clamp(3rem,8vw,6rem);padding-block:2.5rem}.site-footer__grid{border-block-end:1px solid var(--color-border);gap:2.5rem;padding-block-end:2rem;display:grid}@media (width>=48rem){.site-footer__grid{grid-template-columns:2fr 1fr 1fr;align-items:start;gap:3rem}}.site-footer__colofon{flex-direction:column;gap:.5rem;display:flex}.site-footer__mark{font-size:var(--step-1);font-weight:var(--weight-bold);letter-spacing:-.02em;color:var(--color-accent);line-height:1.1}.site-footer__bio{font-size:var(--step--1);color:var(--color-text-muted);max-width:50ch;line-height:1.5}.site-footer__availability{font-size:var(--step--1);color:var(--color-text-muted);align-items:center;gap:.4rem;display:flex}.site-footer__availability svg{width:.9em;height:.9em;color:var(--color-accent);opacity:.7}.site-footer__title{font-family:var(--font-mono);font-size:var(--step--2);text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-faint);margin-block-end:.85rem;font-weight:500}.site-footer__nav ul,.site-footer__social ul{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.site-footer__nav a,.site-footer__social a{color:var(--color-text-muted);font-size:var(--step--1);transition:color .12s}.site-footer__nav a:hover,.site-footer__social a:hover{color:var(--color-accent)}.site-footer__foot{font-size:var(--step--2);color:var(--color-text-faint);text-align:center;flex-direction:column;align-items:center;gap:1rem;padding-block-start:1.5rem;display:flex}@media (width>=48rem){.site-footer__foot{text-align:start;flex-direction:row;justify-content:space-between;align-items:center}}.site-footer__legal ul{flex-wrap:wrap;justify-content:center;gap:.5rem 1.5rem;margin:0;padding:0;list-style:none;display:flex}@media (width>=48rem){.site-footer__legal ul{justify-content:flex-end}}.site-footer__legal a{color:var(--color-text-muted);transition:color .12s}.site-footer__legal a:hover{color:var(--color-accent)}.section{padding-block:clamp(3rem,6vw,5rem)}.section--compact{padding-block:clamp(2rem,4vw,3rem)}.grid-auto{grid-template-columns:repeat(auto-fill,minmax(18rem,1fr));gap:1.5rem;display:grid}.stack-lg{gap:1.5rem;display:grid}.stack-md{gap:1rem;display:grid}.button{border:1px solid var(--color-border);color:var(--color-text);font-family:var(--font-sans);font-weight:var(--weight-semibold);font-size:var(--step--1);cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;gap:.45rem;padding:.7rem 1.25rem;line-height:1;text-decoration:none;transition:transform .12s,background .12s,border-color .12s,box-shadow .12s,color .12s;display:inline-flex}.button:hover{box-shadow:var(--shadow-sm);transform:translateY(-2px)}.button:active{transform:translateY(0)}.button svg{flex-shrink:0;block-size:1em;inline-size:1em}.button--primary{background:var(--color-accent);color:var(--color-accent-ink);border-color:#0000}.button--primary:hover{background:var(--color-accent-strong);color:var(--color-accent-ink);box-shadow:0 4px 14px color-mix(in oklab, var(--color-accent) 45%, transparent)}.button--secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.button--secondary:hover{border-color:var(--color-accent);background:var(--color-surface-raised)}.button--ghost{color:var(--color-text);border-color:var(--color-border);background:0 0}.button--ghost:hover{background:var(--color-surface);border-color:var(--color-accent);color:var(--color-accent)}.tag,.pill{border:1px solid var(--color-border);font-size:var(--step--2);font-weight:var(--weight-medium);color:var(--color-text-muted);background:0 0;border-radius:999px;align-items:center;padding:.3rem .7rem;transition:border-color .12s,color .12s,background .12s;display:inline-flex}.tag-list,.pill-list{flex-wrap:wrap;gap:.4rem;display:flex}.card{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:.75rem;padding:1.5rem;transition:border-color .2s,background-color .2s}.card--interactive:hover{border-color:var(--color-border-strong);background-color:var(--color-surface-raised)}.card{background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-md);border-radius:1.25rem;flex-direction:column;padding:.75rem;transition:transform .2s,box-shadow .2s,border-color .2s;display:flex}.card:hover{box-shadow:var(--shadow-xl);border-color:var(--color-border-strong);transform:translateY(-4px)}.card:hover .card__thumb img{transform:scale(1.03)}.card__thumb{aspect-ratio:16/10;background:var(--color-bg);border-radius:.75rem;display:block;overflow:hidden}.card__thumb img{object-fit:cover;width:100%;height:100%;transition:transform .36s;display:block}.card__body{flex:1;gap:.75rem;padding:1.25rem .5rem .5rem;display:grid}.card__title{font-size:var(--step-1);font-weight:var(--weight-bold);letter-spacing:-.01em;text-wrap:wrap;margin:0}.card__title a{color:var(--color-text)}.card__title a:hover{color:var(--color-accent)}.card__tagline{color:var(--color-text-muted);font-size:var(--step--1);-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.6;display:-webkit-box;overflow:hidden}.card__actions{flex-wrap:wrap;gap:.5rem;margin-block-start:auto;padding-block-start:.5rem;display:flex}@media (width>=48rem){.card--featured{grid-column:1/-1}.card--featured .card__thumb{aspect-ratio:21/9}}@media (width>=64rem){.card--featured{grid-template-rows:1fr;grid-template-columns:1.4fr 1fr;display:grid}.card--featured .card__thumb{aspect-ratio:auto;height:100%}.card--featured .card__body{flex-direction:column;justify-content:center;padding:1rem 1.5rem;display:flex}.card--featured .card__title{font-size:var(--step-2)}.card--featured .card__tagline{font-size:var(--step-0)}}.project-entry{border:1px solid var(--color-border);background:var(--color-surface);block-size:100%;box-shadow:var(--shadow-sm);border-radius:1.25rem;flex-direction:column;gap:1.25rem;padding:1rem;transition:border-color .2s,box-shadow .2s,transform .2s;display:flex;position:relative;overflow:hidden}.project-entry:hover{border-color:color-mix(in oklab, var(--color-accent) 45%, var(--color-border));box-shadow:var(--shadow-md);transform:translateY(-2px)}.project-entry:hover .project-entry__image{transform:scale(1.025)}.project-entry:hover .project-entry__title a{color:var(--color-accent)}.project-entry__meta{border-block-end:1px solid var(--color-border);color:var(--color-text-faint);font-family:var(--font-mono);font-size:var(--step--2);font-variant-numeric:tabular-nums;letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:1rem;margin-block-end:1rem;padding-block-end:.75rem;display:flex}.project-entry__thumb{aspect-ratio:16/10;background:var(--color-bg);border-radius:.75rem;display:block;overflow:hidden}.project-entry__thumb .project-entry__backdrop{display:none}.project-entry__thumb .project-entry__image{object-fit:cover;block-size:100%;inline-size:100%;transition:transform .36s;display:block}.project-entry__body{flex-direction:column;flex:1;min-inline-size:0;padding:.5rem .25rem .25rem;display:flex}.project-entry__stack{flex-wrap:wrap;gap:.4rem;margin-block-end:1.25rem;display:flex}.project-entry__stack span{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text-faint);font-family:var(--font-mono);font-size:var(--step--2);border-radius:999px;padding:.25rem .55rem;line-height:1.2}.project-entry__title{font-size:clamp(var(--step-2), 3.5vw, var(--step-3));font-weight:var(--weight-semibold);letter-spacing:-.035em;text-wrap:balance;margin:0;line-height:1.2}.project-entry__title a{color:var(--color-text);transition:color .12s}.project-entry__tagline{color:var(--color-text-muted);font-size:var(--step--1);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-block-start:.85rem;line-height:1.6;display:-webkit-box;overflow:hidden}.project-entry__actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;margin-block-start:auto;padding-block-start:1.5rem;display:grid}.project-entry__link{border:1px solid var(--color-border);background:var(--color-bg);min-block-size:2.6rem;color:var(--color-text-faint);font-size:var(--step--2);font-weight:var(--weight-medium);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:.5rem;padding:.65rem .8rem;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.project-entry__link svg{flex:none;block-size:1rem;inline-size:1rem;transition:transform .12s}.project-entry__link:hover{border-color:color-mix(in oklab, var(--color-accent) 45%, var(--color-border));background:color-mix(in oklab, var(--color-accent) 6%, var(--color-bg));color:var(--color-accent)}.project-entry__link:hover svg{transform:translate(.12rem,-.12rem)}.project-entry__link--primary{border-color:color-mix(in oklab, var(--color-accent) 30%, var(--color-border));background:color-mix(in oklab, var(--color-accent) 8%, var(--color-surface));min-block-size:3rem;color:var(--color-text);font-size:var(--step--1);font-weight:var(--weight-semibold);grid-column:1/-1;justify-content:center;padding-inline:1rem}.project-entry__link--primary:hover svg{transform:translate(.2rem)}.project-entry__link:nth-child(2):last-child{grid-column:1/-1}.project-entry--lead .project-entry__thumb{aspect-ratio:1901/831}@media (width>=48rem){.project-entry--lead{grid-column:1/-1}}@media (width>=64rem){.project-entry--lead{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(1.5rem,4vw,3rem);padding:1.25rem;display:grid}.project-entry--lead .project-entry__thumb{aspect-ratio:auto;align-self:stretch;min-block-size:22rem;position:relative}.project-entry--lead .project-entry__thumb .project-entry__backdrop{object-fit:cover;filter:blur(14px);opacity:.55;block-size:calc(100% + 2rem);inline-size:calc(100% + 2rem);max-inline-size:none;display:block;position:absolute;inset:-1rem;transform:scale(1.04)}.project-entry--lead .project-entry__thumb .project-entry__image{z-index:1;object-fit:contain;position:relative}.project-entry--lead .project-entry__body{justify-content:center;padding:clamp(.75rem,2vw,1.5rem) clamp(.5rem,2vw,1.25rem) clamp(.75rem,2vw,1.5rem) 0}.project-entry--lead .project-entry__title{font-size:var(--step-3)}}@media (prefers-reduced-motion:reduce){.project-entry,.project-entry__image,.project-entry__title a,.project-entry__link,.project-entry__link svg{transition:none}}.post-card{border-block-end:1px solid var(--color-border);flex-direction:column;gap:.5rem;padding:1.5rem 0;transition:border-color .2s;display:flex;position:relative}.post-card:last-child{border-block-end:0}.post-card:hover{border-block-end-color:var(--color-border-strong)}.post-card__meta{font-size:var(--step--1);color:var(--color-text-muted);align-items:center;gap:.5rem;display:flex}.post-card__title{font-size:var(--step-2);margin:0}.post-card__title a{color:inherit}.post-card__title a:after{content:"";position:absolute;inset:0}.post-card__title a:hover{color:var(--color-accent)}.post-card__summary{color:var(--color-text-muted);max-width:65ch}.prose{max-width:58rem}.prose>*+*,.prose>div>*+*{margin-block-start:1.25em}.prose h2{font-size:var(--step-3);margin-block-start:2rem}.prose h3{font-size:var(--step-2);margin-block-start:1.5rem}.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{text-wrap:wrap}.prose h2+p,.prose h3+p,.prose h2+ul,.prose h3+ul{margin-block-start:.75em}.prose ul,.prose ol{padding-inline-start:1.5em}.prose ul li{list-style:outside}.prose ol li{list-style:decimal}.prose li+li{margin-block-start:.35em}.prose li::marker{color:var(--color-text-faint)}.prose a{color:var(--color-accent);text-underline-offset:.2em;text-decoration:underline 1px}.prose a:hover{text-decoration-thickness:2px}.prose img{border:1px solid var(--color-border);border-radius:.5rem;margin-block:2em}.prose figure{margin-block:2em}.prose figcaption{font-size:var(--step--1);color:var(--color-text-muted);text-align:center;margin-block-start:.5em}.prose table{border-collapse:collapse;width:100%;font-size:var(--step--1)}.prose table th,.prose table td{border:1px solid var(--color-border);text-align:start;padding:.6rem .9rem}.prose table th{background-color:var(--color-surface);font-weight:var(--weight-semibold)}.article-prose{max-inline-size:none;color:color-mix(in oklab, var(--color-text) 82%, var(--color-text-muted));font-size:clamp(1.03rem,.99rem + .2vw,1.125rem);line-height:1.78}.article-prose>div>*+*{margin-block-start:1.4em}.article-prose>div>p:first-child{color:var(--color-text);font-size:var(--step-1);line-height:1.7}.article-prose h2,.article-prose h3{scroll-margin-block-start:6rem}.article-prose h2{border-block-end:1px solid var(--color-border);font-size:clamp(var(--step-2), 4vw, var(--step-3));font-weight:var(--weight-semibold);letter-spacing:-.035em;text-wrap:balance;margin-block-start:clamp(3.5rem,8vw,5.5rem);padding-block-end:.7rem;line-height:1.2}.article-prose h3{font-size:var(--step-2);font-weight:var(--weight-semibold);letter-spacing:-.025em;margin-block-start:2.75rem;line-height:1.3}.article-prose h2+p,.article-prose h3+p,.article-prose h2+ul,.article-prose h3+ul,.article-prose h2+ol,.article-prose h3+ol{margin-block-start:1rem}.article-prose p,.article-prose li{color:inherit}.article-prose strong{color:var(--color-text)}.article-prose ul,.article-prose ol{gap:.45rem;padding-inline-start:1.4rem;display:grid}.article-prose li+li{margin-block-start:0}.article-prose li::marker{color:var(--color-accent);font-weight:var(--weight-semibold)}.article-prose a{text-decoration-color:color-mix(in oklab, var(--color-accent) 55%, transparent);text-underline-offset:.22em;text-decoration-thickness:1px}.article-prose a:hover{text-decoration-color:var(--color-accent);text-decoration-thickness:1px}.article-prose :not(pre)>code{border-color:color-mix(in oklab, var(--color-accent) 16%, var(--color-border));background:color-mix(in oklab, var(--color-accent) 6%, var(--color-surface));color:color-mix(in oklab, var(--color-text) 82%, var(--color-accent));padding:.14em .38em;font-size:.86em}.article-prose pre{border-color:var(--color-border-strong);box-shadow:var(--shadow-sm);font-size:var(--step--1);tab-size:2;border-radius:.75rem;margin-block:2rem;padding:clamp(1rem,3vw,1.4rem);line-height:1.65}.article-prose blockquote{border:0;border-inline-start:3px solid var(--color-accent);background:var(--color-surface);color:var(--color-text-muted);border-radius:0 .5rem .5rem 0;margin-block:2.25rem;padding:1.1rem 1.25rem;font-style:normal}.article-prose table{border:1px solid var(--color-border);border-collapse:separate;border-spacing:0;inline-size:100%;font-size:var(--step--1);border-radius:.5rem;margin-block:2rem;display:block;overflow-x:auto}.article-prose table th,.article-prose table td{border:0;border-block-end:1px solid var(--color-border);text-align:start;vertical-align:top;min-inline-size:10rem;padding:.8rem 1rem}.article-prose table th{background:var(--color-surface-raised);color:var(--color-text)}.article-prose table tr:last-child td{border-block-end:0}.article-prose table th+th,.article-prose table td+td{border-inline-start:1px solid var(--color-border)}.article-prose img{inline-size:100%;box-shadow:var(--shadow-md);border-radius:.75rem;margin-block:2.5rem}.article-prose hr{margin-block:3.5rem}.page-header{border-block-end:1px solid var(--color-border);padding-block:clamp(3rem,8vw,6rem) clamp(2rem,5vw,4rem)}.page-header__eyebrow{font-size:var(--step--1);font-weight:var(--weight-medium);letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent);margin-block-end:1rem;display:inline-block}.page-header__title{max-width:22ch;font-size:var(--step-4)}.page-header__summary{font-size:var(--step-1);color:var(--color-text-muted);max-width:62ch;margin-block-start:1rem}.section-heading{border-block-end:1px solid var(--color-border);justify-content:space-between;align-items:end;gap:1rem;margin-block-end:2rem;padding-block-end:1rem;display:flex}.section-heading__title{font-size:var(--step-2);margin:0}.section-heading__action{font-size:var(--step--1);color:var(--color-text-muted);border-block-end:1px solid;padding-block-end:2px;transition:color .12s}.section-heading__action:hover{color:var(--color-accent)}.icon-link{color:var(--color-text-muted);font-size:var(--step--1);font-weight:var(--weight-medium);align-items:center;gap:.45rem;transition:color .12s;display:inline-flex}.icon-link svg{block-size:1rem;inline-size:1rem}.icon-link:hover{color:var(--color-accent)}.callout{border:1px solid var(--color-border);background-color:var(--color-surface);border-radius:.75rem;gap:1rem;padding:1.5rem;display:grid}@media (width>=48rem){.callout{grid-template-columns:1fr auto;align-items:center}}.callout__content{gap:.35rem;display:grid}.callout__title{font-size:var(--step-1);margin:0}.callout__text{color:var(--color-text-muted);margin:0}.cookie-consent{z-index:50;background:var(--color-surface);max-inline-size:32rem;color:var(--color-text);border:1px solid var(--color-border);box-shadow:var(--shadow-lg);border-radius:1.25rem;margin-inline:auto;position:fixed;inset-block-end:clamp(1.25rem,4vw,2rem);inset-inline:clamp(1.25rem,4vw,2rem)}.cookie-consent[hidden]{display:none}@media (width>=48rem){.cookie-consent{margin-inline:0;inset-inline:auto clamp(1.25rem,4vw,2rem)}}.cookie-consent__inner{gap:1rem;padding:1.25rem;display:grid}.cookie-consent__text{gap:.35rem;display:grid}.cookie-consent__title{font-size:var(--step-0);margin:0}.cookie-consent__body{font-size:var(--step--1);color:var(--color-text-muted);margin:0}.cookie-consent__link{color:var(--color-accent);text-underline-offset:.2em;text-decoration:underline}.cookie-consent__link:hover{text-decoration-thickness:2px}.cookie-consent__actions{flex-wrap:wrap;gap:.6rem;display:flex}.cookie-consent__actions .button{flex:auto}.hero{isolation:isolate;flex-direction:column;justify-content:center;align-items:center;min-height:95dvh;display:flex;position:relative;overflow:hidden}.hero:before{content:"";background:radial-gradient(circle at 50% 50%, color-mix(in oklab, var(--color-accent) 12%, transparent), transparent 50%);z-index:-1;pointer-events:none;width:150%;height:150%;animation:8s ease-in-out infinite alternate pulse-glow;position:absolute;top:-20%;left:50%;transform:translate(-50%)}@keyframes pulse-glow{0%{opacity:.8;transform:translate(-50%)scale(1)translateY(0)}to{opacity:1;transform:translate(-50%)scale(1.1)translateY(-2%)}}.hero__wrapper{flex-direction:column;flex:1;justify-content:center;align-items:center;width:100%;max-width:50rem;margin-inline:auto;padding-block:clamp(4rem,10vw,7rem);display:flex}.hero__intro{text-align:center;flex-direction:column;align-items:center;display:flex}.hero__scroll{color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:9999px;justify-content:center;align-items:center;padding:.75rem;text-decoration:none;transition:color .3s,border-color .3s;animation:2s ease-in-out infinite bounce-down;display:flex;position:absolute;bottom:1.25rem;left:50%;transform:translate(-50%)}@media (width>=48rem){.hero__scroll{bottom:4rem}}.hero__scroll svg{block-size:1.5rem;inline-size:1.5rem}.hero__scroll:hover{color:var(--color-accent);border-color:var(--color-accent);animation-play-state:paused}@media (height<=44rem){.hero__wrapper{padding-block:clamp(2.5rem,7vh,3.5rem) 5rem}.hero__scroll{animation:none;bottom:.85rem}}@keyframes bounce-down{0%,to{opacity:.6;transform:translate(-50%)translateY(0)}50%{opacity:1;transform:translate(-50%)translateY(10px)}}.hero__role-wrap{text-align:center}.hero__role{font-size:var(--step--2);font-weight:var(--weight-semibold);color:var(--color-accent);letter-spacing:.04em;background:color-mix(in oklab, var(--color-accent) 8%, transparent);border:1px solid color-mix(in oklab, var(--color-accent) 20%, transparent);backdrop-filter:blur(8px);box-shadow:0 4px 15px color-mix(in oklab, var(--color-accent) 5%, transparent);border-radius:9999px;align-items:center;gap:.35rem;margin-block-end:1.5rem;padding:.4rem .75rem;transition:transform .3s,background .3s;display:inline-flex}@media (width>=48rem){.hero__role{font-size:var(--step--1);gap:.6rem;padding:.4rem 1.25rem}}.hero__role:hover{background:color-mix(in oklab, var(--color-accent) 12%, transparent);transform:translateY(-2px)}.hero__role:before{content:"";background:var(--color-accent);block-size:.5rem;inline-size:.5rem;box-shadow:0 0 10px var(--color-accent);border-radius:50%;animation:2.5s ease-in-out infinite blink}@keyframes blink{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.85)}}.hero__title{font-size:clamp(2.8rem, 10vw, var(--step-5));letter-spacing:-.04em;background:linear-gradient(135deg, var(--color-text) 20%, color-mix(in oklab, var(--color-text) 50%, var(--color-accent)));-webkit-text-fill-color:transparent;color:#0000;background-clip:text;margin-block-end:1.5rem;font-weight:800;line-height:1.1}.hero__subtitle{font-size:var(--step-1);color:var(--color-text-muted);max-width:52ch;margin-block-end:2.5rem;margin-inline:auto;line-height:1.6}.hero__actions{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.home-section{padding-block:clamp(3.75rem,7vw,6rem)}.home-section-heading{margin-block-end:clamp(2.5rem,6vw,4rem)}.home-section-heading__top{border-block-end:1px solid var(--color-border);flex-direction:column;justify-content:space-between;align-items:flex-start;gap:1rem;margin-block-end:clamp(1.5rem,4vw,2.5rem);padding-block-end:.85rem;display:flex}@media (width>=30rem){.home-section-heading__top{flex-direction:row;align-items:center}}.home-section-heading__content{text-align:center;flex-direction:column;align-items:center;gap:1rem;inline-size:100%;display:flex}.home-section-heading__content>p{max-inline-size:none;color:var(--color-text-muted);font-size:var(--step-0);line-height:1.65}.home-section-heading__content h2{max-inline-size:none;font-size:clamp(var(--step-3), 4.5vw, var(--step-4));font-weight:var(--weight-semibold);letter-spacing:-.045em;text-wrap:balance;line-height:1.08}.home-section-heading__eyebrow{color:var(--color-accent);font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.12em;text-transform:uppercase;margin:0}.home-section-heading__link,.home-about__link{inline-size:fit-content;color:var(--color-text);font-size:var(--step--1);font-weight:var(--weight-semibold);align-items:center;gap:.5rem;text-decoration:none;transition:color .12s;display:inline-flex}.home-section-heading__link svg,.home-about__link svg{block-size:1rem;inline-size:1rem;transition:transform .12s}.home-section-heading__link:hover,.home-about__link:hover{color:var(--color-accent)}.home-section-heading__link:hover svg,.home-about__link:hover svg{transform:translate(.2rem)}.home-section-heading__top .home-section-heading__link{color:var(--color-text-muted);flex:none}.home-about__link{font-size:var(--step-0)}.home-projects{border-block-start:1px solid var(--color-border)}.home-projects .home-section-heading__top{flex-direction:row;align-items:center;gap:.75rem}.home-projects .home-section-heading__eyebrow{flex:auto}.home-projects .home-section-heading__link{white-space:nowrap}.home-projects__link-desktop{display:none}@media (width>=30rem){.home-projects__link-desktop{display:inline}.home-projects__link-mobile{display:none}}.home-projects__grid{gap:1.5rem;display:grid}@media (width>=48rem){.home-projects__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.home-projects .project-entry__link:not(.project-entry__link--primary){display:none}.home-projects .project-entry__actions{grid-template-columns:1fr}.home-about{isolation:isolate;border-block:1px solid var(--color-border);background:linear-gradient(135deg, color-mix(in oklab, var(--color-surface) 94%, var(--color-accent)), var(--color-surface) 62%);position:relative;overflow:hidden}.home-about:after{z-index:-1;background:radial-gradient(circle, color-mix(in oklab, var(--color-accent) 9%, transparent), transparent 70%);content:"";pointer-events:none;border-radius:50%;block-size:30rem;inline-size:42rem;position:absolute;inset-block-start:-16rem;inset-inline-start:50%;transform:translate(-50%)}.home-about__layout{display:block}.home-about__heading{text-align:center;inline-size:100%;margin-inline:auto}.home-about__heading .home-section-heading__eyebrow{font-size:var(--step--1);margin-block-end:.75rem}.home-about__heading h2{max-inline-size:none;font-size:clamp(var(--step-3), 5vw, var(--step-4));font-weight:var(--weight-semibold);letter-spacing:-.045em;text-wrap:balance;line-height:1.12}.home-about__content{flex-direction:column;align-items:center;inline-size:100%;min-inline-size:0;margin-block-start:clamp(1.5rem,4vw,2.5rem);margin-inline:auto;display:flex}.home-about__lead{max-inline-size:72ch;color:var(--color-text);font-size:clamp(var(--step-1), 2.2vw, var(--step-2));letter-spacing:-.025em;text-align:center;text-wrap:pretty;line-height:1.5}.home-about__principles{border:1px solid var(--color-border);background:color-mix(in oklab, var(--color-bg) 45%, transparent);border-radius:1.25rem;inline-size:100%;max-inline-size:44rem;margin-block:clamp(2rem,5vw,3rem);overflow:hidden}.home-about__principles article{text-align:center;padding:clamp(1.25rem,3vw,1.75rem);position:relative}@media (width>=48rem){.home-about__principles article{text-align:start}}.home-about__principles article+article{border-block-start:1px solid var(--color-border)}.home-about__principles article:before{background:var(--color-accent);content:"";opacity:0;border-radius:999px;inline-size:2px;transition:opacity .12s,transform .2s;position:absolute;inset-block:1.25rem;inset-inline-start:0;transform:scaleY(.45)}.home-about__principles article:hover:before{opacity:1;transform:scaleY(1)}.home-about__principles h3{color:var(--color-text);font-size:var(--step-1);font-weight:var(--weight-semibold);letter-spacing:-.015em;margin-block-end:.45rem}.home-about__principles p{max-inline-size:none;color:var(--color-text-muted);font-size:var(--step-0);line-height:1.6}.home-writing .home-section-heading__top{flex-direction:row;align-items:center;gap:.75rem}.home-writing .home-section-heading__eyebrow{flex:auto}.home-writing .home-section-heading__link{white-space:nowrap}.home-writing__list{gap:1rem;display:grid}@media (width>=48rem){.home-writing__list{grid-template-columns:repeat(3,minmax(0,1fr))}}.home-writing__item{border:1px solid var(--color-border);background:var(--color-surface);border-radius:1.25rem;transition:border-color .2s,box-shadow .2s,transform .2s;position:relative;overflow:hidden}.home-writing__item:before{background:var(--color-accent);content:"";opacity:0;block-size:2px;transition:opacity .12s,transform .2s;position:absolute;inset-block-start:0;inset-inline:0;transform:scaleX(.35)}.home-writing__item:hover,.home-writing__item:focus-within{border-color:color-mix(in oklab, var(--color-accent) 42%, var(--color-border));box-shadow:var(--shadow-md);transform:translateY(-3px)}.home-writing__item:hover:before,.home-writing__item:focus-within:before{opacity:1;transform:scaleX(1)}.home-writing__item>a{min-block-size:18rem;color:var(--color-text);flex-direction:column;gap:1.35rem;padding:clamp(1.25rem,3vw,1.75rem);text-decoration:none;display:flex}.home-writing__item>a>time{color:var(--color-text-faint);font-family:var(--font-mono);font-size:var(--step--2);font-variant-numeric:tabular-nums;letter-spacing:.06em;text-transform:uppercase}.home-writing__item>a>svg{block-size:1.2rem;inline-size:1.2rem;color:var(--color-text-faint);align-self:flex-end;margin-block-start:auto;transition:color .12s,transform .12s}.home-writing__item>a:hover>svg{color:var(--color-accent);transform:translate(.2rem,-.2rem)}.home-writing__body{gap:.65rem;min-inline-size:0;display:grid}.home-writing__body strong{font-size:clamp(var(--step-1), 2vw, var(--step-2));font-weight:var(--weight-semibold);letter-spacing:-.025em;text-wrap:balance;line-height:1.25;transition:color .12s}.home-writing__body>span{color:var(--color-text-muted);font-size:var(--step--1);-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.6;display:-webkit-box;overflow:hidden}.home-writing__item:hover .home-writing__body strong,.home-writing__item:focus-within .home-writing__body strong{color:var(--color-accent)}.home-contact{padding-block-start:clamp(2rem,5vw,4rem)}.home-contact__inner{isolation:isolate;border:1px solid var(--color-border);background:var(--color-surface);border-radius:1.25rem;padding:clamp(2rem,6vw,4.5rem);position:relative;overflow:hidden}.home-contact__inner:after{z-index:-1;background:radial-gradient(circle, color-mix(in oklab, var(--color-accent) 15%, transparent), transparent 68%);content:"";pointer-events:none;border-radius:50%;block-size:23rem;inline-size:23rem;position:absolute;inset-block-start:-8rem;inset-inline-end:-7rem}.home-contact__inner h2{max-inline-size:14ch;font-size:clamp(var(--step-3), 6vw, var(--step-5));font-weight:var(--weight-semibold);letter-spacing:-.05em;text-wrap:balance;line-height:1.05}.home-contact__inner>p:not(.home-section-heading__eyebrow){max-inline-size:54ch;color:var(--color-text-muted);font-size:var(--step-0);margin-block-start:1rem;line-height:1.65}.home-contact__actions{flex-wrap:wrap;align-items:center;gap:1rem 1.5rem;margin-block-start:2rem;display:flex}.home-contact__email{color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--step--1);overflow-wrap:anywhere}.home-contact__email:hover{color:var(--color-accent)}@media (prefers-reduced-motion:reduce){.home-section-heading__link,.home-about__link,.home-section-heading__link svg,.home-about__link svg,.home-writing__item>a,.home-writing__item>a>svg{transition:none}}
