@layer reset,tokens,base,layout,components,pages;@layer reset{*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}body{min-height:100dvh;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}a{color:inherit;text-decoration:none}ul,ol{list-style:none}}@layer tokens{:root{--color-bg: oklch(15% .015 250);--color-bg-alt: oklch(12% .012 250);--color-surface: oklch(20% .018 250);--color-surface-hover: oklch(24% .02 250);--color-surface-active: oklch(28% .02 250);--color-border: oklch(30% .02 250);--color-border-subtle: oklch(25% .015 250);--color-text: oklch(90% .01 250);--color-text-muted: oklch(65% .015 250);--color-text-subtle: oklch(50% .01 250);--color-primary: oklch(65% .2 250);--color-primary-hover: oklch(70% .22 250);--color-primary-muted: oklch(40% .1 250);--color-secondary: oklch(65% .15 300);--color-success: oklch(65% .18 145);--color-warning: oklch(75% .15 80);--color-error: oklch(60% .2 25);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--space-8: 4rem;--space-9: 6rem;--space-10: 8rem;--font-sans: "Inter", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "Cascadia Code", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 2rem;--text-4xl: 2.5rem;--leading-tight: 1.2;--leading-normal: 1.6;--leading-loose: 1.8;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px oklch(0% 0 0 / .3);--shadow-md: 0 4px 6px oklch(0% 0 0 / .3);--shadow-lg: 0 10px 15px oklch(0% 0 0 / .4);--transition-fast: .15s ease;--transition-base: .25s ease;--container-max: 72rem;--container-narrow: 48rem}}@layer base{body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text);background-color:var(--color-bg)}h1,h2,h3,h4,h5,h6{font-weight:var(--weight-bold);line-height:var(--leading-tight);color:var(--color-text)}h1{font-size:var(--text-4xl)}h2{font-size:var(--text-3xl)}h3{font-size:var(--text-2xl)}h4{font-size:var(--text-xl)}code,pre{font-family:var(--font-mono)}a{color:var(--color-primary);transition:color var(--transition-fast)}a:hover{color:var(--color-primary-hover)}strong{font-weight:var(--weight-semibold)}small{font-size:var(--text-sm)}}@layer layout{.container{width:100%;max-width:var(--container-max);margin-inline:auto;padding-inline:var(--space-5)}.container--narrow{max-width:var(--container-narrow)}}@layer layout{.grid{display:grid;gap:var(--space-5)}.grid--projects{grid-template-columns:repeat(auto-fill,minmax(min(100%,20rem),1fr))}.grid--articles{grid-template-columns:repeat(auto-fill,minmax(min(100%,22rem),1fr))}}@layer components{.nav{position:sticky;top:0;z-index:100;background-color:#070c11d9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border-subtle)}.nav .nav__inner{display:flex;align-items:center;justify-content:space-between;height:4rem}.nav .nav__brand{font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--color-text);letter-spacing:-.02em}.nav .nav__brand span{color:var(--color-primary)}.nav .nav__links{display:flex;gap:var(--space-5)}@media not (min-width:48rem){.nav .nav__links{display:none}}.nav .nav__link{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-muted);transition:color var(--transition-fast)}.nav .nav__link:hover,.nav .nav__link.active{color:var(--color-primary)}.nav .nav__toggle{display:none;background:none;border:none;color:var(--color-text);cursor:pointer;padding:var(--space-2)}@media not (min-width:48rem){.nav .nav__toggle{display:block}}.nav .nav__mobile{display:none;flex-direction:column;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border-subtle);background-color:var(--color-surface)}.nav .nav__mobile.is-open{display:flex}@media(min-width:48rem){.nav .nav__mobile{display:none!important}}}@layer components{.footer{margin-top:auto;padding-block:var(--space-7);border-top:1px solid var(--color-border-subtle);background-color:var(--color-bg-alt)}.footer .footer__inner{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:start;gap:var(--space-5)}.footer .footer__top{display:flex;flex-direction:column;gap:var(--space-1)}.footer .footer__text{font-size:var(--text-sm);color:var(--color-text-muted)}.footer .footer__address{font-size:var(--text-xs);color:var(--color-text-subtle)}.footer .footer__links{display:flex;flex-wrap:wrap;gap:var(--space-4)}.footer .footer__link{font-size:var(--text-sm);color:var(--color-text-muted)}.footer .footer__link:hover{color:var(--color-primary)}}@layer components{.hero{padding-block:var(--space-9);text-align:center}.hero .hero__title{font-size:clamp(var(--text-3xl),5vw,var(--text-4xl));margin-bottom:var(--space-4)}.hero .hero__title span{color:var(--color-primary)}.hero .hero__subtitle{font-size:var(--text-lg);color:var(--color-text-muted);max-width:40rem;margin-inline:auto;line-height:var(--leading-loose)}}@layer components{.card{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);transition:border-color var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast)}.card:hover{border-color:var(--color-primary-muted);box-shadow:var(--shadow-md);transform:translateY(-2px)}.card .card__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.card .card__title{font-size:var(--text-lg);font-weight:var(--weight-semibold)}.card .card__description{font-size:var(--text-sm);color:var(--color-text-muted);line-height:var(--leading-normal);margin-bottom:var(--space-4)}.card .card__meta{display:flex;flex-wrap:wrap;gap:var(--space-3);font-size:var(--text-xs);color:var(--color-text-subtle)}.card .card__meta-item{display:flex;align-items:center;gap:var(--space-1)}.card .card__date{font-size:var(--text-sm);color:var(--color-text-subtle)}.card .card__tags{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}}@layer components{.btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-5);font-size:var(--text-sm);font-weight:var(--weight-medium);border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;transition:all var(--transition-fast);text-decoration:none}.btn--primary{background-color:var(--color-primary);color:#080c0f}.btn--primary:hover{background-color:var(--color-primary-hover);color:#080c0f}.btn--outline{background-color:transparent;border-color:var(--color-border);color:var(--color-text-muted)}.btn--outline:hover{border-color:var(--color-primary);color:var(--color-primary)}}@layer components{.badge{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-weight:var(--weight-medium);border-radius:var(--radius-full);background-color:var(--color-primary-muted);color:var(--color-primary)}.badge--language{background-color:var(--color-surface-active);color:var(--color-text-muted)}}@layer components{.section{padding-block:var(--space-8)}.section .section__header{margin-bottom:var(--space-6)}.section .section__title{font-size:var(--text-2xl);margin-bottom:var(--space-2)}.section .section__subtitle{font-size:var(--text-base);color:var(--color-text-muted)}.section .section__action{display:flex;justify-content:center;margin-top:var(--space-6)}}@layer components{.article-content{max-width:var(--container-narrow);margin-inline:auto;line-height:var(--leading-loose)}.article-content h2{margin-top:var(--space-7);margin-bottom:var(--space-4)}.article-content h3{margin-top:var(--space-6);margin-bottom:var(--space-3)}.article-content p{margin-bottom:var(--space-4);color:var(--color-text-muted)}.article-content ul,.article-content ol{margin-bottom:var(--space-4);padding-left:var(--space-5)}.article-content ul{list-style:disc}.article-content ol{list-style:decimal}.article-content li{margin-bottom:var(--space-2);color:var(--color-text-muted)}.article-content blockquote{border-left:3px solid var(--color-primary);padding-left:var(--space-5);margin-bottom:var(--space-4);color:var(--color-text-muted);font-style:italic}.article-content pre{background-color:var(--color-bg-alt);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-4);overflow-x:auto;font-size:var(--text-sm)}.article-content code{background-color:var(--color-surface);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:.9em}.article-content pre code{background:none;padding:0;border-radius:0}.article-content a{text-decoration:underline;text-underline-offset:2px}.article-content img{border-radius:var(--radius-md);margin-block:var(--space-5)}.article-content hr{border:none;border-top:1px solid var(--color-border);margin-block:var(--space-7)}}@layer pages{.page-home .hero{border-bottom:1px solid var(--color-border-subtle)}}@layer pages{.page-about .about-content{max-width:var(--container-narrow);margin-inline:auto;padding-block:var(--space-8)}.page-about .about-content p{color:var(--color-text-muted);margin-bottom:var(--space-4);line-height:var(--leading-loose)}.page-about .about-content h2{margin-top:var(--space-7);margin-bottom:var(--space-4)}.page-about .about-email{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-primary);margin-top:var(--space-2)}.page-about .about-email:hover{border-color:var(--color-primary)}.page-about .about-address{margin-top:var(--space-5);font-size:var(--text-sm);color:var(--color-text-subtle)}.page-about .about-address p{margin-bottom:var(--space-1);color:var(--color-text-subtle)}}@layer pages{.page-legal .legal-content{max-width:var(--container-narrow);margin-inline:auto;padding-block:var(--space-6)}.page-legal .legal-content h1{margin-bottom:var(--space-2)}.page-legal .legal-content .legal-updated{font-size:var(--text-sm);color:var(--color-text-subtle);margin-bottom:var(--space-7)}.page-legal .legal-content h2{margin-top:var(--space-7);margin-bottom:var(--space-3);font-size:var(--text-xl)}.page-legal .legal-content p{color:var(--color-text-muted);margin-bottom:var(--space-4);line-height:var(--leading-loose)}.page-legal .legal-content ul{list-style:disc;padding-left:var(--space-5);margin-bottom:var(--space-4)}.page-legal .legal-content li{color:var(--color-text-muted);margin-bottom:var(--space-2);line-height:var(--leading-normal)}.page-legal .legal-content a{text-decoration:underline;text-underline-offset:2px}}
