*,:before,:after{box-sizing:border-box}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-body:#000;--text-body:#ccc;--bg-page:#323437;--text-primary:#e0e0e0;--text-hero-name:#e5e5e5;--text-dim:#6b6b6b;--text-muted:#555;--text-muted-dark:#4a4a4a;--text-project-title:#bbb;--text-project-title-hover:#e5e5e5;--text-project-link:#777;--accent:#6bbba8;--accent-active:#8edfc8;--divider:#3e3e3e;--scroll-gradient-from:#555;--bg-terminal:#000;--bg-panel:#050505;--bg-button:#0a0a0a;--border-panel:#1a3a1a;--border-button:#1a3a1a;--text-boot-heading:#3a7a3a;--text-boot-subtitle:#2a5a2a;--text-button:#3a6a3a;--text-button-hover:#4a9a4a;--text-button-focus:#5aba5a;--border-button-hover:#2a6a2a;--border-button-focus:#3a8a3a;--bg-button-hover:#0d0d0d;--bg-button-active:#080808;--text-hint:#333;--text-hint-key:#444;--shadow-button-focus:#3a8a3a26;--toggle-color:#555}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-body:#f3ebdd;--text-body:#34302b;--bg-page:#f3ebdd;--text-primary:#34302b;--text-hero-name:#34302b;--text-dim:#777067;--text-muted:#91887d;--text-muted-dark:#91887d;--text-project-title:#34302b;--text-project-title-hover:#34302b;--text-project-link:#777067;--accent:#5f7f78;--accent-active:#5f7f78;--divider:#d2c4ae;--scroll-gradient-from:#91887d;--bg-terminal:#f3ebdd;--bg-panel:#e9ddc9;--bg-button:#e9ddc9;--border-panel:#d2c4ae;--border-button:#d2c4ae;--text-boot-heading:#5f7f78;--text-boot-subtitle:#777067;--text-button:#5f7f78;--text-button-hover:#5f7f78;--text-button-focus:#5f7f78;--border-button-hover:#5f7f78;--border-button-focus:#5f7f78;--bg-button-hover:#e2d6c1;--bg-button-active:#ddd1bb;--text-hint:#91887d;--text-hint-key:#91887d;--shadow-button-focus:#5f7f7826;--toggle-color:#91887d}body{background:var(--bg-body);color:var(--text-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;font-family:JetBrains Mono,IBM Plex Mono,ui-monospace,Consolas,monospace;transition:background .3s,color .3s}#root{min-height:100vh}.start-page{background:var(--bg-terminal);z-index:100;flex-direction:column;justify-content:center;align-items:center;gap:32px;font-family:JetBrains Mono,IBM Plex Mono,ui-monospace,Consolas,monospace;transition:background .3s;display:flex;position:fixed;inset:0}.boot-panel{border:1px solid var(--border-panel);background:var(--bg-panel);opacity:0;border-radius:8px;flex-direction:column;align-items:center;gap:28px;width:calc(100% - 48px);max-width:520px;padding:40px 48px;transition:opacity .4s,transform .4s,background .3s,border-color .3s;display:flex;transform:translateY(8px)}.boot-panel.visible{opacity:1;transform:translateY(0)}.boot-heading{opacity:0;flex-direction:column;align-items:center;gap:8px;transition:opacity .3s,transform .3s;display:flex;transform:translateY(4px)}.boot-heading.visible{opacity:1;transform:translateY(0)}.boot-heading h1{color:var(--text-boot-heading);letter-spacing:1.5px;text-transform:uppercase;margin:0;font-size:22px;font-weight:500;transition:color .3s}.boot-subtitle{color:var(--text-boot-subtitle);letter-spacing:.3px;margin:0;font-size:13px;transition:color .3s}.boot-profiles{opacity:0;gap:16px;width:100%;transition:opacity .3s,transform .3s;display:flex;transform:translateY(6px)}.boot-profiles.visible{opacity:1;transform:translateY(0)}.profile-btn{background:var(--bg-button);border:1px solid var(--border-button);color:var(--text-button);cursor:pointer;border-radius:6px;outline:none;flex:1;align-items:center;gap:10px;padding:16px 20px;font-family:JetBrains Mono,IBM Plex Mono,ui-monospace,Consolas,monospace;font-size:14px;transition:border-color .2s,color .2s,background .2s,box-shadow .2s;display:flex}.profile-btn:hover{border-color:var(--border-button-hover);color:var(--text-button-hover);background:var(--bg-button-hover)}.profile-btn:focus-visible{border-color:var(--border-button-focus);color:var(--text-button-focus);box-shadow:0 0 12px var(--shadow-button-focus)}.profile-btn.selected{border-color:var(--border-button-hover);color:var(--text-button-hover)}.profile-btn:active{background:var(--bg-button-active);transform:scale(.98)}.profile-icon{font-size:16px;line-height:1}.profile-label{letter-spacing:.5px;font-size:14px}.boot-hint{color:var(--text-hint);letter-spacing:.5px;opacity:0;font-size:11px;transition:opacity .3s}.boot-hint.visible{opacity:1}.hint-key{color:var(--text-hint-key)}.hint-separator{color:var(--text-hint);margin:0 4px}@media (width<=520px){.boot-panel{gap:22px;padding:28px 24px}.boot-profiles{flex-direction:column;gap:12px}.profile-btn{padding:14px 16px}.boot-heading h1{font-size:18px}}@media (prefers-reduced-motion:reduce){.boot-panel,.boot-heading,.boot-profiles,.boot-hint{transition:opacity .3s,transform .3s}body{transition:none}}.it-page{background:var(--bg-terminal);justify-content:center;align-items:center;font-family:JetBrains Mono,IBM Plex Mono,ui-monospace,Consolas,monospace;transition:background .3s;display:flex;position:fixed;inset:0}.it-container{flex-direction:column;align-items:center;gap:12px;display:flex}.it-heading{color:var(--text-boot-heading);letter-spacing:1px;margin:0;font-size:28px;font-weight:500;transition:color .3s}.it-subtitle{color:var(--text-boot-subtitle);margin:0;font-size:14px;transition:color .3s}.portfolio-page{background:var(--bg-page);color:var(--text-primary);min-height:100vh;transition:background .3s,color .3s;position:relative;overflow-x:hidden}.ambient-bg{pointer-events:none;z-index:0;opacity:.6;width:100%;height:100%;position:fixed;inset:0}.scroll-progress{background:var(--accent);transform-origin:top;z-index:1000;opacity:.5;width:2px;height:100vh;position:fixed;top:0;right:0;transform:scaleY(0)}.theme-toggle{color:var(--toggle-color);cursor:pointer;opacity:0;z-index:2;background:0 0;border:none;justify-content:center;align-items:center;padding:4px 8px;transition:color .2s;animation:.6s .1s forwards fadeIn;display:flex;position:absolute;top:33px;right:76px}.theme-toggle:hover,.theme-toggle:focus-visible{color:var(--accent)}.theme-toggle:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.hero{z-index:1;flex-direction:column;justify-content:center;align-items:center;gap:0;min-height:100vh;padding:80px 24px 60px;display:flex;position:relative}.hero-logo{color:var(--accent);opacity:0;font-size:20px;animation:.6s .1s forwards fadeIn;position:absolute;top:32px;left:36px}.hero-close{color:var(--text-muted);cursor:pointer;opacity:0;z-index:2;background:0 0;border:none;padding:4px 8px;font-size:22px;line-height:1;transition:color .2s;animation:.6s .1s forwards fadeIn;position:absolute;top:32px;right:36px}.hero-close:hover,.hero-close:focus-visible{color:var(--accent)}.hero-close:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.hero-content{text-align:center;opacity:0;flex-direction:column;align-items:center;gap:12px;animation:.7s .2s forwards fadeUp;display:flex}.hero-greeting{color:var(--text-dim);letter-spacing:1px;margin:0;font-size:16px;font-weight:400}.hero-name{color:var(--text-hero-name);letter-spacing:6px;margin:0;font-size:clamp(48px,10vw,96px);font-weight:700;line-height:1;transition:color .3s}.hero-divider{background:var(--accent);opacity:.6;width:60px;height:1px;margin:8px 0}.hero-role{color:var(--accent);letter-spacing:3px;margin:0;font-size:14px;font-weight:500}.hero-desc{color:var(--text-dim);letter-spacing:.3px;margin:16px 0 0;font-size:13px;line-height:1.7}.hero-social{opacity:0;flex-direction:column;gap:16px;animation:.6s .8s forwards fadeIn;display:flex;position:absolute;bottom:80px;left:36px}.social-link{color:var(--text-muted);justify-content:center;align-items:center;text-decoration:none;transition:color .25s,transform .25s;display:flex}.social-link:hover{color:var(--accent);transform:translateY(-2px)}.scroll-indicator{opacity:0;flex-direction:column;align-items:center;gap:8px;animation:.6s 1s forwards fadeIn;display:flex;position:absolute;bottom:40px;right:36px}.scroll-text{color:var(--text-muted);letter-spacing:2px;text-transform:uppercase;writing-mode:vertical-rl;font-size:10px}.scroll-line{background:linear-gradient(to bottom, var(--scroll-gradient-from), transparent);width:1px;height:40px;animation:2s ease-in-out infinite scrollPulse}.section{z-index:1;opacity:0;max-width:720px;margin:0 auto;padding:120px 24px 80px;transition:opacity .6s,transform .6s;position:relative;transform:translateY(20px)}.section.visible{opacity:1;transform:translateY(0)}.section-heading{color:var(--accent);letter-spacing:1px;margin:0 0 48px;font-family:JetBrains Mono,IBM Plex Mono,ui-monospace,Consolas,monospace;font-size:16px;font-weight:500;transition:color .3s}.section-heading.active{color:var(--accent-active)}.typing-cursor{color:var(--accent);margin-left:1px;font-weight:400;animation:.8s step-end infinite blink;display:inline-block}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}[data-section=tech-stack]{padding-top:80px;padding-bottom:48px}[data-section=tech-stack] .section-heading{margin-bottom:28px}.tech-grid{flex-direction:column;gap:18px;display:flex}.tech-group{flex-direction:column;gap:4px;display:flex}.tech-category{color:var(--text-muted);letter-spacing:2px;text-transform:uppercase;margin:0;font-size:11px;font-weight:500}.tech-items{flex-wrap:wrap;gap:4px 20px;display:flex}.tech-item{color:var(--text-body);opacity:.7;cursor:default;align-items:center;gap:4px;padding:2px 0;font-size:14px;transition:color .2s,opacity .2s;display:inline-flex}.tech-arrow{opacity:0;color:var(--accent);font-size:12px;transition:opacity .2s,transform .2s;transform:translate(-6px)}.tech-item:hover{color:var(--accent);opacity:1}.tech-item:hover .tech-arrow{opacity:1;transform:translate(0)}.projects-list{flex-direction:column;display:flex}.project-card{opacity:0;padding:32px 0;transition:opacity .5s,transform .5s,background .2s;transform:translateY(16px)}.project-card.visible{opacity:1;transform:translateY(0)}.project-card:hover .project-title{color:var(--text-project-title-hover)}.project-card:hover .project-link{color:var(--accent)}.project-card:hover .link-arrow{transform:translate(3px)}.project-header{align-items:baseline;gap:16px;margin-bottom:12px;display:flex}.project-id{color:var(--text-muted-dark);min-width:20px;font-size:12px;font-weight:500}.project-title{color:var(--text-project-title);letter-spacing:1px;margin:0;font-size:20px;font-weight:600;transition:color .25s}.project-desc{color:var(--text-dim);margin:0 0 12px 36px;font-size:14px;line-height:1.6}.project-tech{color:var(--text-muted);letter-spacing:.5px;margin:0 0 16px 36px;font-size:12px}.project-links{gap:24px;margin-left:36px;display:flex}.project-link{color:var(--text-project-link);align-items:center;gap:6px;font-size:13px;text-decoration:none;transition:color .2s;display:inline-flex}.link-arrow{font-size:14px;transition:transform .2s;display:inline-block}.project-divider{background:var(--divider);width:100%;height:1px;margin-top:32px}.contact-section{text-align:left}.contact-intro{color:var(--text-dim);margin:0 0 4px;font-size:14px}.contact-cta{color:var(--text-hero-name);letter-spacing:.5px;margin:0 0 40px;font-size:28px;font-weight:600}.contact-links{flex-direction:column;gap:12px;display:flex}.contact-link{color:var(--text-project-link);align-items:center;gap:8px;width:fit-content;font-size:14px;text-decoration:none;transition:color .2s;display:inline-flex}.contact-link:hover{color:var(--accent)}.contact-link:hover .link-arrow{transform:translate(3px)}.contact-footer{flex-direction:column;gap:16px;margin-top:80px;display:flex}.footer-divider{background:var(--divider);width:100%;height:1px}.footer-status{color:var(--text-dim);letter-spacing:1px;text-transform:lowercase;white-space:pre-line;margin:0;font-size:12px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes scrollPulse{0%,to{opacity:.3}50%{opacity:.8}}@media (width<=768px){.hero{padding:60px 20px 50px}.hero-logo{font-size:18px;top:24px;left:24px}.theme-toggle{top:25px;right:56px}.hero-close{font-size:20px;top:24px;right:24px}.hero-name{letter-spacing:4px}.hero-role{letter-spacing:2px;font-size:12px}.hero-social{flex-direction:row;justify-content:center;margin-top:40px;position:relative;bottom:auto;left:auto}.scroll-indicator{margin-top:40px;position:relative;bottom:auto;right:auto}.scroll-text{writing-mode:horizontal-tb}.scroll-line{background:linear-gradient(to right, var(--scroll-gradient-from), transparent);width:40px;height:1px}.section{padding:80px 20px 60px}[data-section=tech-stack]{padding-top:56px;padding-bottom:36px}.section-heading{margin-bottom:36px;font-size:14px}[data-section=tech-stack] .section-heading{margin-bottom:20px}.tech-grid{gap:14px}.tech-items{gap:4px 16px}.tech-item{font-size:13px}.project-header{gap:12px}.project-title{font-size:18px}.project-desc,.project-tech,.project-links{margin-left:32px}.contact-cta{font-size:24px}}@media (width<=480px){.hero{padding:50px 16px 40px}.hero-logo{font-size:16px;top:20px;left:20px}.theme-toggle{top:21px;right:48px}.hero-close{font-size:18px;top:20px;right:20px}.hero-greeting{font-size:14px}.hero-name{letter-spacing:3px}.hero-role{letter-spacing:1.5px;font-size:11px}.hero-desc{font-size:12px}.hero-social{gap:20px}.section{padding:60px 16px 48px}[data-section=tech-stack]{padding-top:40px;padding-bottom:28px}.section-heading{margin-bottom:28px;font-size:13px}[data-section=tech-stack] .section-heading{margin-bottom:16px}.tech-grid{gap:12px}.tech-items{gap:2px 12px}.tech-category{font-size:10px}.tech-item{font-size:12px}.project-title{font-size:16px}.project-desc,.project-tech,.project-links{margin-left:0}.project-header{flex-direction:column;gap:4px}.contact-cta{font-size:20px}}@media (prefers-reduced-motion:reduce){.ambient-bg,.scroll-progress{display:none}.hero-logo,.hero-close,.hero-content,.hero-social,.scroll-indicator,.theme-toggle{opacity:1;animation:none}.hero-content{transform:none}.section{opacity:1;transition:none;transform:none}.section-heading{transition:none}.typing-cursor{display:none}.tech-arrow{opacity:0;transition:none;transform:none}.tech-item:hover .tech-arrow{opacity:1;transform:none}.project-card{opacity:1;transition:none;transform:none}.scroll-line{opacity:.5;animation:none}.link-arrow,.social-link,.tech-item,.project-link,.contact-link,body{transition:none}}
