@charset "UTF-8";:root{--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2.5rem;--space-2xl: 4rem;--space-3xl: 6rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 20px;--radius-full: 9999px;--font-sans: "Open Sans", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", "Fira 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.625rem;--text-5xl: 3.375rem;--font-light: 300;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .35s ease;--shadow-xs: 0px 1px 2px 0px rgba(0,0,0,.06);--shadow-sm: 0px 1px 3px 1px rgba(0,0,0,.08), 0px 1px 2px 0px rgba(0,0,0,.12);--shadow-md: 0px 2px 6px 2px rgba(0,0,0,.08), 0px 1px 2px 0px rgba(0,0,0,.12);--shadow-lg: 0px 5px 12px 4px rgba(0,0,0,.08), 0px 1px 3px 0px rgba(0,0,0,.12);--shadow-xl: 0px 8px 16px 6px rgba(0,0,0,.08), 0px 4px 4px 0px rgba(0,0,0,.1);--z-base: 0;--z-above: 10;--z-nav: 100;--z-modal: 200;--z-tooltip: 300}:root,[data-theme=light]{color-scheme:light;--bg: #f2f4f8;--bg2: #ffffff;--bg3: #f8f9fb;--bg4: #e8eaf0;--text: #13171a;--text2: #373d42;--text3: rgba(0,0,0,.38);--border: #d5d9e0;--border-light: #e8eaf0;--border-focus: rgba(124,58,237,.5);--accent: #7c3aed;--accent-light: #8b5cf6;--accent-dark: #6d28d9;--accent-bg: rgba(124,58,237,.06);--accent-glow: rgba(124,58,237,.12);--timeline-fill: #0d9488;--timeline-fill-light: #14b8a6;--timeline-fill-dark: #0f766e;--timeline-glow: rgba(13,148,136,.18);--success: #0f803e;--success-bg: #daf2e0;--warning: #ca6303;--warning-bg: #fcebdb;--danger: #c8001b;--danger-bg: #fcdbdf;--available: #b91c1c;--available-bg: rgba(185, 28, 28, .07);--available-border: rgba(185, 28, 28, .35);--available-glow: rgba(185, 28, 28, .5);--shadow-xs: 0px 1px 2px 0px rgba(0,0,0,.04);--shadow-sm: 0px 1px 3px 1px rgba(0,0,0,.06), 0px 1px 2px 0px rgba(0,0,0,.08);--shadow-md: 0px 2px 6px 2px rgba(0,0,0,.06), 0px 1px 2px 0px rgba(0,0,0,.08);--shadow-lg: 0px 5px 12px 4px rgba(0,0,0,.06), 0px 1px 3px 0px rgba(0,0,0,.08);--shadow-xl: 0px 8px 16px 6px rgba(0,0,0,.06), 0px 4px 4px 0px rgba(0,0,0,.07)}[data-theme=dark]{color-scheme:dark;--bg: #13171a;--bg2: #1c2126;--bg3: #242a2e;--bg4: #373d42;--text: rgba(255,255,255,.92);--text2: rgba(255,255,255,.65);--text3: rgba(255,255,255,.38);--border: rgba(255,255,255,.1);--border-light: rgba(255,255,255,.06);--border-focus: rgba(139,92,246,.6);--accent: #8b5cf6;--accent-light: #a78bfa;--accent-dark: #7c3aed;--accent-bg: rgba(139,92,246,.12);--accent-glow: rgba(139,92,246,.2);--timeline-fill: #14b8a6;--timeline-fill-light: #2dd4bf;--timeline-fill-dark: #0d9488;--timeline-glow: rgba(20,184,166,.25);--success: #31925a;--success-bg: rgba(49,146,90,.15);--warning: #ef8728;--warning-bg: rgba(239,135,40,.15);--danger: #e9001f;--danger-bg: rgba(233,0,31,.15);--available: #dc2626;--available-bg: rgba(220, 38, 38, .08);--available-border: rgba(220, 38, 38, .35);--available-glow: rgba(220, 38, 38, .5)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;transition:background-color var(--theme-transition-duration, 0ms) ease,background var(--theme-transition-duration, 0ms) ease,color var(--theme-transition-duration, 0ms) ease,border-color var(--theme-transition-duration, 0ms) ease,box-shadow var(--theme-transition-duration, 0ms) ease,fill var(--theme-transition-duration, 0ms) ease,stroke var(--theme-transition-duration, 0ms) ease,transform .2s ease,opacity .2s ease}html{scroll-behavior:smooth;font-size:16px;-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--font-normal);line-height:1.6;color:var(--text);background:var(--bg);min-height:100vh;overflow-x:hidden;position:relative}body:before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.03;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px}[data-theme=dark] body:before{opacity:.045}app-root{position:relative;z-index:1;display:block}img,video,svg{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;background:none;font:inherit;color:inherit}ul,ol{list-style:none}input,textarea,select{font:inherit;color:inherit;color-scheme:inherit;background-color:inherit}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg2)}::-webkit-scrollbar-thumb{background:var(--bg4);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--accent)}::selection{background:var(--accent-glow);color:var(--text)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius-sm)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}html{scroll-behavior:auto}}@font-face{font-family:Open Sans;font-style:normal;font-weight:300;font-display:swap;src:url(/fonts/open-sans-300.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Open Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/open-sans-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Open Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/open-sans-600.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}h1,h2,h3,h4,h5,h6{font-weight:var(--font-semibold);line-height:1.25;letter-spacing:-.01em;color:var(--text)}h1{font-size:clamp(2rem,5vw,var(--text-5xl))}h2{font-size:clamp(1.5rem,3.5vw,var(--text-4xl))}h3{font-size:clamp(1.125rem,2.5vw,var(--text-2xl))}h4{font-size:var(--text-xl)}p{color:var(--text2);line-height:1.65}code,pre{font-family:var(--font-mono);font-size:.875em}.text-accent{color:var(--accent)}.text-muted{color:var(--text3)}.text-gradient{color:var(--accent)}[data-theme=dark] .text-gradient{background:linear-gradient(135deg,var(--accent-light),var(--success));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.section-label{display:inline-block;font-size:var(--text-xs);font-weight:var(--font-semibold);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:var(--space-sm)}.section-title{font-size:clamp(1.5rem,3.5vw,var(--text-4xl));font-weight:var(--font-semibold);letter-spacing:-.01em;color:var(--text);margin-bottom:var(--space-md)}.section-subtitle{font-size:var(--text-base);color:var(--text2);max-width:60ch;line-height:1.65}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 var(--space-xl)}@media (max-width: 768px){.container{padding:0 var(--space-lg)}}@media (max-width: 480px){.container{padding:0 var(--space-md)}}.section{padding:var(--space-3xl) 0}@media (max-width: 768px){.section{padding:var(--space-2xl) 0}}#about,#skills,#contact{background:#eceef4}[data-theme=dark] #about,[data-theme=dark] #skills,[data-theme=dark] #contact{background:#181d21}#experience{position:relative}#experience:before{content:"";position:absolute;top:0;left:10%;width:80%;height:1px;background:linear-gradient(to right,transparent,color-mix(in srgb,var(--timeline-fill) 60%,transparent),transparent);box-shadow:0 0 8px color-mix(in srgb,var(--timeline-fill) 40%,transparent);pointer-events:none;z-index:1}#skills{position:relative}#skills:before{content:"";position:absolute;top:0;left:10%;width:80%;height:1px;background:linear-gradient(to right,transparent,color-mix(in srgb,var(--timeline-fill) 60%,transparent),transparent);box-shadow:0 0 8px color-mix(in srgb,var(--timeline-fill) 40%,transparent);pointer-events:none;z-index:1}#projects{position:relative}#projects:before{content:"";position:absolute;top:0;left:10%;width:80%;height:1px;background:linear-gradient(to right,transparent,color-mix(in srgb,var(--timeline-fill) 60%,transparent),transparent);box-shadow:0 0 8px color-mix(in srgb,var(--timeline-fill) 40%,transparent);pointer-events:none;z-index:1}#about{position:relative}#about:before{content:"";position:absolute;top:0;left:10%;width:80%;height:1px;background:linear-gradient(to right,transparent,color-mix(in srgb,var(--timeline-fill) 60%,transparent),transparent);box-shadow:0 0 8px color-mix(in srgb,var(--timeline-fill) 40%,transparent);pointer-events:none;z-index:1}#about.locked{pointer-events:none;-webkit-user-select:none;user-select:none}#contact:before{content:"";position:absolute;top:0;left:10%;width:80%;height:1px;background:linear-gradient(to right,transparent,color-mix(in srgb,var(--timeline-fill) 60%,transparent),transparent);box-shadow:0 0 8px color-mix(in srgb,var(--timeline-fill) 40%,transparent);pointer-events:none;z-index:1}#contact{position:relative}#contact:before{content:"";position:absolute;top:-1px;left:0;width:100%;height:60px;background:#eceef4;clip-path:ellipse(55% 100% at 50% 0%);pointer-events:none;z-index:1}[data-theme=dark] #contact:before{background:#181d21}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-lg{gap:var(--space-lg)}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-lg)}@media (max-width: 768px){.grid-2{grid-template-columns:1fr}}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-lg)}@media (max-width: 1024px){.grid-3{grid-template-columns:repeat(2,1fr)}}@media (max-width: 640px){.grid-3{grid-template-columns:1fr}}.btn{display:inline-flex;align-items:center;gap:var(--space-sm);padding:.6rem 1.4rem;border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--font-semibold);transition:background-color var(--theme-transition-duration, var(--transition-base)) ease,color var(--theme-transition-duration, var(--transition-base)) ease,border-color var(--theme-transition-duration, var(--transition-base)) ease,box-shadow var(--transition-base),transform var(--transition-base),opacity var(--transition-base);white-space:nowrap}.btn-primary{background:var(--accent);color:#fff}@media (hover: hover){.btn-primary:hover{background:var(--accent-dark);box-shadow:var(--shadow-md);transform:translateY(-1px)}}.btn-outline{border:1px solid var(--border);color:var(--text2)}@media (hover: hover){.btn-outline:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}}.btn-ghost{color:var(--text2)}@media (hover: hover){.btn-ghost:hover{color:var(--text);background:var(--bg3)}}.card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-lg);box-shadow:var(--shadow-sm)}.card:active{transform:translateY(0);box-shadow:var(--shadow-xs)}@media (hover: hover){.card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}}.badge{display:inline-flex;align-items:center;padding:.2rem .65rem;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-semibold);background:var(--bg3);border:1px solid var(--border);color:var(--text2)}.badge-accent{background:var(--accent-bg);border-color:var(--accent-glow);color:var(--accent)}.divider{height:1px;background:var(--border);margin:var(--space-xl) 0}.reveal{opacity:0;transform:translateY(24px);transition:opacity var(--transition-slow),transform var(--transition-slow)}.reveal.visible{opacity:1;transform:translateY(0)}.code-block{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-lg);font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text2);overflow-x:auto;line-height:1.7}
