:root{--color-bg: #0f172a;--color-text: #f8fafc;--color-accent: #3b82f6;--color-secondary: #64748b;--color-border: rgba(248, 250, 252, .1);--font-sans: "Inter", system-ui, sans-serif;--font-mono: "JetBrains Mono", monospace;--section-padding: clamp(2rem, 5vw, 4rem);--content-max: 900px}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:var(--font-sans);font-size:1rem;line-height:1.6;color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}#app{min-height:100vh}.section{padding:var(--section-padding) 1.5rem;max-width:var(--content-max);margin:0 auto}.section-title{font-family:var(--font-sans);font-size:clamp(1.5rem,4vw,2rem);font-weight:700;margin:0 0 1.5rem;color:var(--color-text)}.code{font-family:var(--font-mono);font-size:.9em;color:var(--color-accent)}.btn{display:inline-block;padding:.75rem 1.5rem;font-family:var(--font-sans);font-size:1rem;font-weight:600;color:var(--color-bg);background:var(--color-accent);border:none;border-radius:8px;cursor:pointer;transition:opacity .2s,transform .15s}.btn:hover{opacity:.9;transform:translateY(-1px);text-decoration:none}.btn-outline{background:transparent;color:var(--color-accent);border:2px solid var(--color-accent)}.btn-outline:hover{background:#3b82f61a}.theme-terminal{--color-bg: #0d1117;--color-text: #c9d1d9;--color-accent: #7ee787;--color-secondary: #8b949e;--color-border: #30363d;--font-sans: "JetBrains Mono", "Fira Code", monospace;--font-mono: "JetBrains Mono", monospace;--content-max: 900px;background-color:var(--color-bg)}.theme-terminal .nav{background:#0d1117f2;border-bottom-color:var(--color-accent)}.theme-terminal .hero-title:before{content:"> ";color:var(--color-accent)}.theme-terminal .section-title:before{content:"$ ";color:var(--color-accent);margin-right:.25rem}.hero[data-v-52f605f5]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem 1.5rem;text-align:center}.hero-inner[data-v-52f605f5]{max-width:600px}.terminal-line[data-v-52f605f5]{margin:0 auto 1.5rem;min-height:3rem;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.25rem}.terminal-prompt[data-v-52f605f5]{font-family:var(--font-mono);font-size:clamp(1.75rem,5vw,2.5rem);color:var(--color-accent);-webkit-user-select:none;user-select:none}.terminal-name[data-v-52f605f5]{font-family:var(--font-mono);font-size:clamp(1.75rem,5vw,2.5rem);font-weight:500;color:var(--color-text);margin:0;display:inline}.terminal-char[data-v-52f605f5]{display:inline-block}.terminal-cursor[data-v-52f605f5]{display:inline-block;font-family:var(--font-mono);color:var(--color-accent);animation:cursorBlink-52f605f5 1s step-end infinite;margin-left:1px}@keyframes cursorBlink-52f605f5{50%{opacity:0}}.hero-title[data-v-52f605f5]{font-size:clamp(1.75rem,5vw,2.5rem);font-weight:700;margin:0 0 .75rem;line-height:1.2}.hero-subtitle[data-v-52f605f5]{font-size:clamp(1rem,2.5vw,1.15rem);color:var(--color-secondary);margin:0 0 2rem}.hero-links[data-v-52f605f5]{display:flex;gap:1.5rem;justify-content:center;flex-wrap:wrap}.hero-link[data-v-52f605f5]{color:var(--color-accent);font-weight:500}.hero-link[data-v-52f605f5]:hover{color:var(--color-text);text-decoration:none}.section p[data-v-5dd09552]{margin:0 0 1rem;color:var(--color-text);max-width:65ch}.section p[data-v-5dd09552]:last-child{margin-bottom:0}.timeline[data-v-77008398]{position:relative;padding-left:1.5rem;border-left:2px solid var(--color-border)}.timeline-item[data-v-77008398]{position:relative;padding-bottom:2rem}.timeline-item[data-v-77008398]:last-child{padding-bottom:0}.timeline-marker[data-v-77008398]{position:absolute;left:-1.5rem;top:.35rem;transform:translate(-50%);width:12px;height:12px;border-radius:50%;background:var(--color-accent)}.timeline-content[data-v-77008398]{margin-left:.5rem}.timeline-role[data-v-77008398]{font-size:1.1rem;font-weight:600;margin:0 0 .25rem}.timeline-company[data-v-77008398]{font-weight:500;color:var(--color-accent);margin:0 0 .25rem}.timeline-period[data-v-77008398]{font-size:.9rem;color:var(--color-secondary);margin:0 0 .5rem}.timeline-desc[data-v-77008398]{font-size:.95rem;color:var(--color-secondary);margin:0}.skills-grid[data-v-b89aca83]{display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.skill-group-title[data-v-b89aca83]{font-size:1rem;font-weight:600;color:var(--color-accent);margin:0 0 .75rem}.skill-list[data-v-b89aca83]{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.5rem}.skill-tag[data-v-b89aca83]{font-family:var(--font-mono);font-size:.85rem;padding:.35rem .65rem;background:#3b82f626;color:var(--color-text);border-radius:6px;border:1px solid var(--color-border)}.edu-block[data-v-7eebda0f]{margin-bottom:2rem}.edu-block[data-v-7eebda0f]:last-child{margin-bottom:0}.edu-subtitle[data-v-7eebda0f]{font-size:1rem;font-weight:600;color:var(--color-accent);margin:0 0 .75rem}.edu-list[data-v-7eebda0f]{margin:0;padding-left:1.25rem}.edu-list.tags[data-v-7eebda0f]{list-style:none;padding-left:0;display:flex;flex-wrap:wrap;gap:.5rem}.edu-item[data-v-7eebda0f]{margin-bottom:.5rem;color:var(--color-secondary)}.edu-item .edu-period[data-v-7eebda0f]{display:block;font-size:.9rem;margin-top:.2rem}.edu-tag[data-v-7eebda0f]{font-family:var(--font-mono);font-size:.85rem;padding:.35rem .65rem;background:#3b82f626;border-radius:6px;border:1px solid var(--color-border)}.projects-list[data-v-1cf5cb96]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1.5rem}.project-card[data-v-1cf5cb96]{padding:1.25rem;border:1px solid var(--color-border);border-radius:8px;background:#f8fafc08}.project-link[data-v-1cf5cb96]{display:inline-flex;align-items:center;gap:.5rem;margin-bottom:.5rem;text-decoration:none;color:var(--color-accent)}.project-link[data-v-1cf5cb96]:hover{text-decoration:underline}.project-name[data-v-1cf5cb96]{font-weight:600;font-size:1.1rem}.project-badge[data-v-1cf5cb96]{font-size:.7rem;padding:.2rem .5rem;border-radius:4px;background:#3b82f633;color:var(--color-accent)}.project-badge--vps[data-v-1cf5cb96]{background:#64748b4d;color:var(--color-secondary)}.project-desc[data-v-1cf5cb96]{color:var(--color-secondary);margin:0 0 .75rem;font-size:.95rem;line-height:1.5}.project-tags[data-v-1cf5cb96]{display:flex;flex-wrap:wrap;gap:.35rem}.project-tag[data-v-1cf5cb96]{font-family:var(--font-mono);font-size:.8rem;color:var(--color-secondary);background:#f8fafc0f;padding:.2rem .5rem;border-radius:4px}.contact-intro[data-v-521419ab]{color:var(--color-secondary);margin:0 0 1.5rem;max-width:50ch}.contact-links[data-v-521419ab]{display:flex;flex-wrap:wrap;gap:1rem}.footer[data-v-b701aa7f]{padding:2rem 1.5rem;border-top:1px solid var(--color-border);margin-top:2rem}.footer-inner[data-v-b701aa7f]{max-width:var(--content-max);margin:0 auto;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem}.footer-copy[data-v-b701aa7f]{margin:0;font-size:.9rem;color:var(--color-secondary)}.footer-links[data-v-b701aa7f]{display:flex;gap:1.5rem}.footer-links a[data-v-b701aa7f]{color:var(--color-secondary);font-size:.9rem}.footer-links a[data-v-b701aa7f]:hover{color:var(--color-accent)}.app[data-v-10e7e511]{min-height:100vh}.nav[data-v-10e7e511]{position:sticky;top:0;z-index:100;background:#0f172ae6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--color-border)}.nav-inner[data-v-10e7e511]{max-width:var(--content-max);margin:0 auto;padding:.75rem 1.5rem;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem}.nav-brand[data-v-10e7e511]{font-family:var(--font-sans);font-weight:700;font-size:1rem;color:var(--color-text);background:none;border:none;cursor:pointer;padding:.25rem 0}.nav-brand[data-v-10e7e511]:hover{color:var(--color-accent)}.nav-links[data-v-10e7e511]{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem 1rem}.nav-link[data-v-10e7e511]{font-family:var(--font-sans);font-size:.9rem;color:var(--color-secondary);background:none;border:none;cursor:pointer;padding:.35rem 0}.nav-link[data-v-10e7e511]:hover{color:var(--color-accent)}#app-main[data-v-10e7e511]{padding-top:0}
