@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:ital,opsz,wght@0,14..32,400;0,14..32,500;0,14..32,600;1,14..32,400&family=JetBrains+Mono:wght@400;500;600&display=swap";@layer reset{*,:before,:after{box-sizing:border-box;margin:0;padding:0}:where(img,video,svg){max-inline-size:100%;display:block}:where(input,button,textarea,select){font:inherit}}@layer base{html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth;font-size:16px;@media (prefers-reduced-motion:reduce){scroll-behavior:auto}}body{font-family:var(--font-body);background:var(--bg-primary);color:var(--text-primary);min-block-size:100svh;line-height:1.6}:is(h1,h2,h3,h4){font-family:var(--font-display);letter-spacing:-.02em;text-wrap:balance;font-weight:700;line-height:1.2}h1{font-size:clamp(1.8rem,5vw,3rem)}h2{font-size:clamp(1.3rem,3.5vw,2rem)}h3{font-size:clamp(1.05rem,2.5vw,1.35rem)}:is(code,.mono){font-family:var(--font-mono)}a{color:var(--link-color);transition:border-color var(--transition-fast);border-block-end:1px solid #0000;text-decoration:none}a:hover{border-block-end-color:var(--link-color)}:focus-visible{outline:2px solid var(--accent-cyan);outline-offset:3px;border-radius:var(--radius)}p{text-wrap:pretty}::selection{background:color-mix(in srgb, var(--accent-cyan) 35%, transparent)}}@layer theme{.skip-link{z-index:999;padding:var(--space-sm) var(--space-md);background:var(--accent-cyan);color:#1a1a1a;font-family:var(--font-display);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow);transition:translate var(--transition-fast);font-weight:700;position:absolute;inset-block-start:var(--space-md);inset-inline-start:var(--space-md);translate:0 calc(-100% - 2rem)}.skip-link:focus-visible{outline:none;translate:0}}@layer components{.container{inline-size:100%;max-inline-size:1200px;padding-inline:var(--space-md);margin-inline:auto}.header{background:var(--bg-surface);border-block-end:var(--border);padding-block:var(--space-md);z-index:100;position:sticky;inset-block-start:0;@supports (backdrop-filter:blur(8px)){background:color-mix(in srgb, var(--bg-surface) 85%, transparent);backdrop-filter:blur(8px)}}.header__inner{justify-content:space-between;align-items:center;gap:var(--space-md);flex-wrap:wrap;display:flex}.header__brand{font-family:var(--font-display);color:var(--text-primary);align-items:center;gap:var(--space-xs);border-block-end:none;font-size:1.4rem;font-weight:700;transition:none;display:flex}.header__brand-accent{color:var(--accent-cyan)}.header__nav{gap:var(--space-xs);flex-wrap:wrap;align-items:center;display:flex}.nav-link{font-family:var(--font-display);color:var(--text-primary);padding:var(--space-xs) var(--space-sm);border:var(--border);border-radius:var(--radius);background:var(--bg-surface);box-shadow:var(--shadow-sm);text-transform:uppercase;letter-spacing:.05em;transition:transform var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);border-block-end-color:inherit;font-size:.82rem;font-weight:600}.nav-link:hover{background:var(--hover-bg);border-block-end-color:var(--border-color)}.nav-link:active{box-shadow:none;translate:2px 2px}.nav-link[aria-current=page]{background:var(--accent-cyan);color:#1a1a1a;border-block-end-color:#0000}.card{background:var(--bg-surface);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--space-lg);transition:translate var(--transition-fast), box-shadow var(--transition-fast)}.card:where(:hover,:focus-within){box-shadow:var(--shadow-lg);translate:-2px -2px}.btn{font-family:var(--font-display);padding:var(--space-sm) var(--space-md);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);cursor:pointer;text-transform:uppercase;letter-spacing:.05em;transition:translate var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);align-items:center;gap:var(--space-xs);background:var(--bg-surface);color:var(--text-primary);border-block-end-color:inherit;font-size:.85rem;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:var(--hover-bg);border-block-end-color:var(--border-color)}.btn:active{box-shadow:none;translate:2px 2px}.btn--primary{background:var(--accent-cyan);color:#1a1a1a}.btn--primary:hover{background:color-mix(in srgb, var(--accent-cyan) 85%, #1a1a1a)}.btn--outline{background:0 0}.tag{font-family:var(--font-mono);padding:var(--space-2xs) var(--space-xs);border:var(--border-thin);border-radius:var(--radius);text-transform:uppercase;letter-spacing:.05em;background:var(--bg-accent);color:var(--text-primary);white-space:nowrap;font-size:.7rem;font-weight:500}.tag--language{--_accent:var(--accent-cyan)}.tag--framework{--_accent:var(--accent-purple)}.tag--tool{--_accent:var(--accent-yellow)}.tag--platform{--_accent:var(--accent-green)}.tag--database{--_accent:var(--accent-orange)}:is(.tag--language,.tag--framework,.tag--tool,.tag--platform,.tag--database){background:color-mix(in srgb, var(--_accent) 15%, transparent);color:var(--_accent);border-color:var(--_accent)}.section-heading{border-block-end:var(--border);align-items:center;gap:var(--space-sm);margin-block-end:var(--space-lg);padding-block-end:var(--space-sm);display:flex}.section-heading:before{content:"";background:var(--accent-cyan);border-radius:2px;block-size:1.2em;inline-size:4px;display:block}.skills-grid{gap:var(--space-xs);flex-wrap:wrap;display:flex}.timeline-item{border:var(--border);border-radius:var(--radius);background:var(--bg-surface)}.timeline-item summary{padding:var(--space-md) var(--space-lg);cursor:pointer;justify-content:space-between;align-items:flex-start;gap:var(--space-md);user-select:none;font-family:var(--font-display);font-weight:600;list-style:none;display:flex}.timeline-item summary::-webkit-details-marker{display:none}.timeline-item summary:after{content:"+";color:var(--accent-cyan);transition:rotate var(--transition-base);flex-shrink:0;font-size:1.2rem;font-weight:400}.timeline-item[open]>summary:after{rotate:45deg}.timeline-item__body{padding:var(--space-md) var(--space-lg) var(--space-lg);border-block-start:var(--border-thin)}.timeline-item__meta{color:var(--text-secondary);font-size:.82rem;font-family:var(--font-mono);margin-block-end:var(--space-sm)}.timeline-item__highlights{gap:var(--space-xs);list-style:none;display:grid}.timeline-item__highlights li{padding-inline-start:var(--space-md);font-size:.9rem;position:relative}.timeline-item__highlights li:before{content:"▸";color:var(--accent-cyan);position:absolute;inset-inline-start:0}.lang-item{align-items:center;gap:var(--space-md);padding:var(--space-sm) 0;border-block-end:var(--border-thin);display:flex}.lang-item:last-child{border-block-end:none}.lang-item__name{font-family:var(--font-display);min-inline-size:8rem;font-weight:600}.lang-badge{font-family:var(--font-mono);padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius);text-transform:uppercase;letter-spacing:.05em;border:var(--border-thin);font-size:.72rem;font-weight:500}.lang-badge--native{background:color-mix(in srgb, var(--accent-green) 15%, transparent);color:var(--score-high);border-color:var(--score-high)}.lang-badge--fluent{background:color-mix(in srgb, var(--accent-cyan) 15%, transparent);color:var(--accent-cyan);border-color:var(--accent-cyan)}.lang-badge--professional{background:color-mix(in srgb, var(--accent-blue) 15%, transparent);color:var(--accent-blue);border-color:var(--accent-blue)}.lang-badge--conversational{background:color-mix(in srgb, var(--accent-yellow) 15%, transparent);color:var(--score-medium);border-color:var(--score-medium)}.lang-badge--basic{background:color-mix(in srgb, var(--text-muted) 15%, transparent);color:var(--text-muted);border-color:var(--text-muted)}.project-card{gap:var(--space-sm);background:var(--bg-surface);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:var(--space-lg);transition:translate var(--transition-fast), box-shadow var(--transition-fast);color:inherit;text-decoration:none;display:grid}.project-card:hover{box-shadow:var(--shadow);translate:-2px -2px}.project-card__name{font-family:var(--font-display);color:var(--accent-cyan);font-size:1rem;font-weight:700}.project-card__desc{color:var(--text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.88rem;line-height:1.5;display:-webkit-box;overflow:hidden}.project-card__meta{gap:var(--space-sm);font-size:.78rem;font-family:var(--font-mono);color:var(--text-muted);flex-wrap:wrap;align-items:center;display:flex}.project-card__stat{align-items:center;gap:var(--space-2xs);display:flex}.project-card__stat+.project-card__stat:before{content:"·";opacity:.5;margin-inline-end:var(--space-2xs)}.project-card__lang-dot{background:var(--accent-cyan);border-radius:50%;flex-shrink:0;block-size:10px;inline-size:10px}.lang-dot--typescript{background:#3178c6}.lang-dot--javascript{background:#f7df1e}.lang-dot--python{background:#3776ab}.lang-dot--rust{background:#dea584}.lang-dot--go{background:#00acd7}.lang-dot--css{background:#1572b6}.lang-dot--html{background:#e34f26}.lang-dot--shell{background:#4eaa25}.hero{padding-block:var(--space-3xl);gap:var(--space-xl);display:grid}.hero__greeting{font-family:var(--font-mono);color:var(--accent-cyan);text-transform:uppercase;letter-spacing:.1em;font-size:.9rem}.hero__name{font-family:var(--font-display);letter-spacing:-.03em;background:linear-gradient(135deg, var(--text-primary) 0%, color-mix(in srgb, var(--text-primary) 60%, var(--accent-cyan)) 100%);-webkit-text-fill-color:transparent;background-clip:text;font-size:clamp(2.5rem,8vw,5rem);font-weight:700;line-height:1}.hero__tagline{font-family:var(--font-display);color:var(--text-secondary);letter-spacing:.02em;font-size:clamp(.9rem,2.5vw,1.2rem);font-weight:500}.hero__ctas{gap:var(--space-sm);flex-wrap:wrap;display:flex}.theme-toggle{background:var(--bg-surface);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);cursor:pointer;padding:var(--space-xs) var(--space-sm);align-items:center;gap:var(--space-xs);font-family:var(--font-mono);color:var(--text-primary);transition:translate var(--transition-fast), box-shadow var(--transition-fast);font-size:.75rem;font-weight:500;display:flex}.theme-toggle:hover{background:var(--hover-bg)}.theme-toggle:active{box-shadow:none;translate:2px 2px}.locale-switcher{display:inline-flex;position:relative}.locale-switcher__toggle{background:var(--bg-surface);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);cursor:pointer;padding:var(--space-xs) var(--space-sm);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--text-primary);align-items:center;gap:var(--space-xs);transition:translate var(--transition-fast), box-shadow var(--transition-fast);font-size:.75rem;font-weight:600;display:flex}.locale-switcher__toggle:active{box-shadow:none;translate:2px 2px}.locale-switcher__menu{background:var(--bg-surface);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:var(--space-xs);z-index:200;min-inline-size:160px;display:none;position:absolute;inset-block-start:calc(100% + var(--space-xs));inset-inline-end:0}.locale-switcher:has(.locale-switcher__toggle[aria-expanded=true]) .locale-switcher__menu{display:grid}.locale-switcher__item{padding:var(--space-xs) var(--space-sm);border-radius:calc(var(--radius) - 2px);font-family:var(--font-display);color:var(--text-primary);align-items:center;gap:var(--space-sm);transition:background var(--transition-fast);border-block-end:none;font-size:.85rem;display:flex}.locale-switcher__item:hover{background:var(--hover-bg)}.locale-switcher__item[aria-current=true]{background:color-mix(in srgb, var(--accent-cyan) 15%, transparent);color:var(--accent-cyan);font-weight:600}.footer{text-align:center;padding-block:var(--space-xl);border-block-start:var(--border);color:var(--text-muted);font-size:.8rem;font-family:var(--font-mono);margin-block-start:var(--space-3xl)}.footer a{color:inherit}.footer a:hover{color:var(--accent-cyan)}.guestbook-wrap{border:var(--border);border-radius:var(--radius);min-block-size:400px;overflow:hidden}.projects-filter{margin-block-end:var(--space-xl)}.projects-filter__input{font-family:var(--font-body);padding:var(--space-sm) var(--space-md);border:var(--border);border-radius:var(--radius);background:var(--bg-primary);color:var(--text-primary);inline-size:100%;max-inline-size:400px;box-shadow:var(--shadow-sm);font-size:.9rem}.projects-filter__input:focus{outline:2px solid var(--accent-cyan);outline-offset:1px}.projects-grid{gap:var(--space-md);grid-template-columns:repeat(auto-fill,minmax(320px,1fr));display:grid}.contact-row{gap:var(--space-sm);flex-wrap:wrap;display:flex}.empty-state{text-align:center;padding:var(--space-3xl) var(--space-xl);color:var(--text-muted)}.empty-state__icon{margin-block-end:var(--space-md);font-size:3rem}}@layer utilities{.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;block-size:1px;inline-size:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.page-section{padding-block:var(--space-2xl)}.timeline-list{gap:var(--space-sm);display:grid}}:root{color-scheme:light dark;--accent-cyan:#00e5ff;--accent-yellow:#ffd600;--accent-pink:#ff4081;--accent-green:#00e676;--accent-orange:#ff6d00;--accent-purple:#b388ff;--accent-blue:#448aff;--bg-primary:light-dark(#fffdf7,#141414);--bg-surface:light-dark(#fff,#1e1e1e);--bg-surface-alt:light-dark(#f5f2e8,#282828);--bg-accent:light-dark(#f0eddf,#2e2e2e);--text-primary:light-dark(#1a1a1a,#fffdf7);--text-secondary:light-dark(#5a5a5a,#b8b8b8);--text-muted:light-dark(#8a8a8a,#707070);--border-color:light-dark(#1a1a1a,#e0ddd0);--shadow-color:light-dark(#1a1a1a,#000);--hover-bg:light-dark(#f0eddf,#2e2e2e);--link-color:light-dark(#007791,var(--accent-cyan));--score-high:light-dark(#008744,#00e676);--score-high-bg:light-dark(#00e67612,#00e67622);--score-medium:light-dark(#b25e00,#ffd600);--score-medium-bg:light-dark(#ffd60012,#ffd60022);--score-low:light-dark(#d81b60,#ff4081);--score-low-bg:light-dark(#ff408112,#ff408122);--score-neutral:light-dark(#5a5a5a,#a0a0a0);--score-neutral-bg:light-dark(#88888812,#8882);--border:2px solid var(--border-color);--border-thin:1px solid var(--border-color);--shadow-sm:2px 2px 0px var(--shadow-color);--shadow:4px 4px 0px var(--shadow-color);--shadow-lg:6px 6px 0px var(--shadow-color);--font-display:"Space Grotesk", system-ui, sans-serif;--font-body:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--space-3xs:.0625rem;--space-2xs:.125rem;--space-xs:.25rem;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--radius:4px;--transition-fast:.1s ease;--transition-base:.2s ease}[data-theme=light]{color-scheme:light}[data-theme=dark]{color-scheme:dark}@keyframes reveal-up{0%{opacity:0;translate:0 2rem}to{opacity:1;translate:0}}@keyframes reveal-in{0%{opacity:0}to{opacity:1}}.scroll-reveal{animation:both reveal-up view();animation-range:entry entry 40%}.scroll-reveal--fade{animation:both reveal-in view();animation-range:entry entry 40%}@media (prefers-reduced-motion:reduce){.scroll-reveal,.scroll-reveal--fade{animation:none}}@media (width<=768px){.header__inner{flex-direction:column;align-items:flex-start}.header__nav{inline-size:100%;scrollbar-width:thin;padding-block-end:var(--space-xs);overflow-x:auto}.hero{padding-block:var(--space-2xl)}.projects-grid{grid-template-columns:1fr}}.locale-switcher[data-astro-cid-f246tfyc]{display:inline-flex;position:relative}.locale-switcher[data-astro-cid-f246tfyc][open]>summary[data-astro-cid-f246tfyc]{background:var(--hover-bg)}.locale-switcher__menu[data-astro-cid-f246tfyc]{background:var(--bg-surface);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:var(--space-xs);z-index:200;min-inline-size:160px;display:grid;position:absolute;inset-block-start:calc(100% + var(--space-xs));inset-inline-end:0}summary[data-astro-cid-f246tfyc]{list-style:none}summary[data-astro-cid-f246tfyc]::-webkit-details-marker{display:none}[data-astro-cid-l6lhmie6][data-theme=light] .theme-icon--dark[data-astro-cid-l6lhmie6],[data-astro-cid-l6lhmie6][data-theme=dark] .theme-icon--light[data-astro-cid-l6lhmie6]{display:none}
