@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-400-normal.6-qcROiO.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-ext-400-normal.Bc8Ftmh3.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-ext-400-normal.fXTG6kC5.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-latin-500-normal.BWZEU5yA.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-500-normal.CJOVTJB7.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-latin-ext-500-normal.Cut-4mMH.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-ext-500-normal.ckzbgY84.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/jetbrains-mono-latin-600-normal.C8RAYTDA.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-600-normal.BfsvjouI.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/jetbrains-mono-latin-ext-600-normal.BfB_LPfz.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-ext-600-normal.DObL3zCW.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/jetbrains-mono-latin-700-normal.BYuf6tUa.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-700-normal.D3wTyLJW.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/jetbrains-mono-latin-ext-700-normal.CZipNAKV.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-ext-700-normal.CxPITLHs.woff) format("woff")}:root,[data-theme=tokyonight]{--bg: #101310;--tbg: #161a14;--tbar: #1c261a;--tx: #eef0e8;--dim: #a6afa3;--grn: #c3ec88;--cyan: #c3ec88;--mag: #cbb677;--red: #f2867a;--ylw: #e3c876;--org: #e2a97a;--brd: #31382f;--acc: #c3ec88;--color-bg: var(--bg);--color-surface: var(--tbg);--color-surface-raised: var(--tbar);--color-text: var(--tx);--color-text-dim: var(--dim);--color-border: var(--brd);--color-accent: var(--acc);--color-prompt: var(--grn);--color-cmd: var(--ylw);--color-link: var(--cyan);--color-link-hover: #d7f4af;--color-tag: var(--mag);--color-danger: var(--red);--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--font-body: "Source Serif 4", Georgia, serif;--text-xs: .66rem;--text-sm: .74rem;--text-base: .82rem;--text-md: .86rem;--text-lg: 1rem;--text-xl: 1.5rem;--text-h1: clamp(2.8rem, 6vw, 4rem);--text-h2: clamp(1.4rem, 3vw, 1.8rem);--leading-tight: 1.15;--leading-normal: 1.6;--leading-relaxed: 1.75;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 22px;--space-6: 30px;--space-8: 48px;--radius-sm: 3px;--radius-md: 6px;--radius-lg: 12px;--radius-pill: 20px;--transition-fast: .1s ease-out;--transition-base: .15s ease-out;--transition-slow: .6s cubic-bezier(.4, 0, .2, 1);--shadow-window: 0 0 0 1px rgba(255, 255, 255, .04), 0 24px 64px rgba(0, 0, 0, .7);--glow-accent: none}[data-theme=cyberpunk]{--bg: #0d0221;--tbg: #1a0b2e;--tbar: #261447;--tx: #f0e9ff;--dim: #aa91c7;--grn: #00ff9f;--cyan: #00d9ff;--mag: #ff2e97;--red: #ff3864;--ylw: #ffd23f;--org: #ff7b00;--brd: #3d1c5e;--acc: #ff2e97}[data-theme=matrix]{--bg: #000000;--tbg: #050a05;--tbar: #0a1410;--tx: #00ff41;--dim: #71a67e;--grn: #00ff41;--cyan: #39ff14;--mag: #88ff88;--red: #ff4444;--ylw: #aaff44;--org: #66ff66;--brd: #1a3a1f;--acc: #00ff41}[data-theme=catppuccin]{--bg: #1e1e2e;--tbg: #181825;--tbar: #11111b;--tx: #cdd6f4;--dim: #959bb4;--grn: #a6e3a1;--cyan: #89dceb;--mag: #cba6f7;--red: #f38ba8;--ylw: #f9e2af;--org: #fab387;--brd: #313244;--acc: #89b4fa}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility;transition:background-color .25s ease-out,color .25s ease-out}html.theme-switching,html.theme-switching *{transition:background-color .25s ease-out,color .25s ease-out,border-color .25s ease-out!important}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-mono);min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:var(--space-4);overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);background-size:28px 28px}body:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:10000;opacity:.028;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px}@media print{body:after{display:none!important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;top:-100px;left:var(--space-4);padding:var(--space-2) var(--space-3);background:var(--color-surface-raised);color:var(--color-link);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);z-index:1000;transition:top var(--transition-base)}.skip-link:focus{top:var(--space-4);outline:2px solid var(--color-accent);outline-offset:2px}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:2px}a{color:var(--color-link);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-link-hover)}*::-webkit-scrollbar{width:5px;height:5px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm)}*{scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}@media print{body:after,.entry-screen,.boot-overlay,.term-titlebar,.term-footer,.term-mobile-chips,.term-hint,.term-suggestions,.view-toggle,.skip-link,.cv-sticky-bar,.cv-force-terminal,.cv-footer,[aria-hidden=true]{display:none!important}body{background:#fff;color:#000;font-family:var(--font-body);font-size:11pt;line-height:1.5;padding:0}.term-window,.cv-root{max-width:100%;box-shadow:none;border:none;background:#fff;color:#000}.term-body,.cv-card{background:#fff;color:#000;border:none;padding:0}.cv-hero-name{font-size:18pt;color:#000}.cv-hero-meta-line{font-size:10pt;color:#333}.cv-card-title{font-size:13pt;color:#000;border-bottom:1px solid #ccc;padding-bottom:4px;margin-bottom:8px}a{color:#05c;text-decoration:underline}a[href]:after{content:" (" attr(href) ")";font-size:9pt;color:#666}.cv-cta-row a:after,.cv-contact-row a:after{content:none}.cv-chip,.cv-chip-emph,.cv-project-tag{background:#eee;color:#000;border:1px solid #ccc}@page{margin:2cm}}::selection{background:#c3ec88;color:#172110}.topbar[data-astro-cid-lq7i5isa]{position:absolute;top:20px;right:24px;z-index:50;display:flex;align-items:center;gap:16px;font-family:var(--font-mono);font-size:13px}.tb-lang[data-astro-cid-lq7i5isa]{display:inline-flex;align-items:center;gap:6px;min-height:44px;color:#8a8476;text-decoration:none;letter-spacing:.06em}.tb-lang-current[data-astro-cid-lq7i5isa]{color:#ebe6d9;font-weight:600}.tb-lang[data-astro-cid-lq7i5isa]:hover{color:#ebe6d9}.tb-term[data-astro-cid-lq7i5isa]{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;background:#121210;border:1px solid #3a3830;border-radius:4px;color:#ebe6d9;text-decoration:none;transition:border-color .12s ease-out}.tb-term[data-astro-cid-lq7i5isa]:hover{border-color:#c3ec88;color:#ebe6d9}.tb-prompt[data-astro-cid-lq7i5isa]{color:#c3ec88}@media(max-width:640px){.topbar[data-astro-cid-lq7i5isa]{top:12px;right:14px;gap:12px}}@media print{.topbar[data-astro-cid-lq7i5isa]{display:none}}
