:root{--bg: #0a0b10;--surface: #12131a;--surface-alt: #1e2030;--border: #2a2d42;--border-hover: #3a3d54;--text: #e2e4ed;--text-muted: #8a8ea6;--text-dim: #7d80a0;--accent: #e2e4ed;--accent-red: #ff5555;--accent-green: #34d399;--accent-yellow: #f1c232;--mono: "JetBrains Mono Variable", "JetBrains Mono", monospace;--sans: "Outfit Variable", "Outfit", sans-serif;--body: "Inter Variable", "Inter", sans-serif}[data-theme=light]{--bg: #f6f4ef;--surface: #fffdfa;--surface-alt: #efece4;--border: #e0dccf;--border-hover: #c9c4b4;--text: #1e2030;--text-muted: #555872;--text-dim: #66687f;--accent: #1e2030;--accent-red: #c62828;--accent-green: #0f7a52;--accent-yellow: #b8860b}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}*{scrollbar-width:none;-ms-overflow-style:none}*::-webkit-scrollbar{display:none;width:0;height:0}html{color-scheme:dark light;scroll-behavior:smooth}:focus-visible{outline:2px solid var(--accent-red);outline-offset:2px}:focus:not(:focus-visible){outline:none}body{font-family:var(--body);background-color:var(--bg);color:var(--text);line-height:1.6;font-size:16px;min-height:100vh;display:flex;flex-direction:column;transition:background-color .2s ease,color .2s ease}.layout-wrapper{display:flex;flex-direction:column;min-height:100vh;width:100%}.layout-wrapper main{flex:1}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}header{position:fixed;top:0;left:0;right:0;z-index:100;background:var(--bg);background:color-mix(in oklch,var(--bg) 85%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);height:56px;padding:0 24px;display:flex;justify-content:center;align-items:center;transition:background-color .2s ease}header:after{content:"";position:absolute;bottom:-2px;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--accent-red),var(--accent-green),var(--accent-red));opacity:.6}.header-container{display:flex;justify-content:space-between;align-items:center;width:100%;max-width:800px;height:100%}.header-logo{font-family:var(--mono);font-size:16px;font-weight:600;color:var(--accent-red);text-decoration:none}.header-nav{display:flex;align-items:center;gap:24px}.header-nav a{font-family:var(--mono);font-size:14px;color:var(--text-muted);text-decoration:none;transition:color .15s ease}.header-nav a:hover{color:var(--text)}.header-nav a.active{color:var(--text);font-weight:600}.header-nav a:active{color:var(--accent-red)}.theme-toggle{background:none;border:1px solid transparent;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:4px;transition:background-color .15s ease,border-color .15s ease}.theme-toggle:hover{background:var(--surface);border-color:var(--border)}.theme-toggle svg{width:16px;height:16px;color:var(--text-muted)}.theme-toggle .icon-moon,[data-theme=light] .theme-toggle .icon-sun{display:none}[data-theme=light] .theme-toggle .icon-moon{display:block}main{margin-top:56px;padding:24px;width:100%;display:flex;justify-content:center}.main-container{width:100%;max-width:800px;display:flex;flex-direction:column;gap:0}.hero{padding:48px 0 0;display:flex;flex-direction:column;gap:24px}.hero-top{display:flex;justify-content:space-between;align-items:center;gap:32px}.hero-text{display:flex;flex-direction:column;gap:20px;flex:1}.hero h1{font-family:var(--sans);font-size:clamp(1.5rem,4vw + .5rem,3rem);font-weight:700;letter-spacing:-.03em;line-height:1.15;color:var(--text)}.hero .role{font-family:var(--body);font-size:14px;color:var(--text-muted)}.hero .tagline{font-family:var(--sans);font-size:clamp(1.1rem,1.5vw + .5rem,1.5rem);font-weight:600;letter-spacing:-.01em;color:var(--accent-green);margin-top:4px;max-width:520px}.hero .bio{font-family:var(--body);font-size:16px;color:var(--text-muted);max-width:480px;line-height:1.75}.resume-btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:14px;color:var(--text);text-decoration:none;padding:10px 20px;border:1px solid var(--border);border-radius:4px;transition:border-color .15s ease,background-color .15s ease;width:fit-content}.resume-btn:hover{border-color:var(--border-hover);background:var(--surface)}.resume-btn:active{border-color:var(--accent-red);color:var(--accent-red)}.resume-btn svg{width:14px;height:14px}.hero-graphic{flex-shrink:0}.mini-terminal{width:280px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:20px;font-family:var(--mono);font-size:11px;display:flex;flex-direction:column;gap:8px}.mini-term-header{display:flex;align-items:center;gap:6px;padding-bottom:8px;border-bottom:1px solid var(--border)}.mini-dot{width:8px;height:8px;border-radius:50%}.mini-dot.red{background:var(--accent-red)}.mini-dot.yellow{background:var(--accent-yellow)}.mini-dot.green{background:var(--accent-green)}.mini-term-title{color:var(--text-dim);font-family:var(--mono);font-size:11px}.mini-term-body{display:flex;flex-direction:column;gap:4px}.mini-line{display:flex;gap:8px}.mini-prompt{color:var(--text-dim)}.mini-cmd{color:var(--text)}.mini-out{color:var(--text-muted);padding-left:0}.mini-pass{color:var(--accent-green);font-weight:600}.mini-status{font-weight:600;transition:color .4s ease}.mini-fail{color:var(--accent-red)}.mini-file{color:var(--text-muted)}.mini-cursor{display:inline-block;width:7px;height:14px;background:var(--text-muted);animation:blink 1s step-end infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.note-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:28px 24px 20px;transform:rotate(-.5deg);display:flex;flex-direction:column;gap:10px;position:relative;transition:transform .15s ease,border-color .15s ease}.note-card:hover{transform:rotate(0)}.note-card-pin{position:absolute;top:-6px;left:50%;transform:translate(-50%);width:11px;height:11px;border-radius:50%;background:var(--accent-red);box-shadow:0 0 0 4px var(--bg),0 2px 5px #00000059}.note-card-title{font-family:var(--mono);font-size:13px;font-weight:600;color:var(--text)}.note-card .badge-row{display:flex;gap:6px;flex-wrap:wrap}.note-card .badge{font-family:var(--mono);font-size:11px;font-weight:500;color:var(--text);background:var(--surface-alt);padding:5px 12px;border-radius:4px;letter-spacing:.02em}.terminal{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:24px;font-family:var(--mono);font-size:14px;display:flex;flex-direction:column;gap:6px}.terminal-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:12px;border-bottom:1px solid var(--border);margin-bottom:6px}.terminal-dots{display:flex;align-items:center;gap:6px}.terminal-dot{width:8px;height:8px;border-radius:50%}.terminal-dot.red{background:var(--accent-red)}.terminal-dot.yellow{background:var(--accent-yellow)}.terminal-dot.green{background:var(--accent-green)}.terminal-name{color:var(--text-dim);font-size:11px}.terminal-passed{color:var(--accent-green);font-size:11px;font-weight:600}.terminal-line{display:flex;gap:8px}.terminal-prompt{color:var(--accent-green)}.terminal-cmd{color:var(--text)}.terminal-output{color:var(--text-muted);padding-left:16px}.terminal-json{padding-left:16px;display:flex;flex-direction:column;gap:2px}.terminal-json-line{display:flex;flex-wrap:wrap;gap:4px}.terminal-json-key{color:var(--text-muted)}.terminal-json-value{color:var(--accent-red);min-width:0;overflow-wrap:anywhere}.terminal-success{color:var(--accent-green);padding-left:16px}.terminal-history{display:flex;flex-direction:column;gap:6px;max-height:300px;overflow-y:auto}.terminal-input-line{display:flex;gap:8px;align-items:center;border-top:1px solid var(--border);padding-top:8px;margin-top:6px}.terminal-input{background:none;border:none;color:var(--text);font-family:var(--mono);font-size:14px;flex:1;outline:none;caret-color:var(--accent-green)}.terminal-input::placeholder{color:var(--text-dim)}.terminal-input:focus-visible{outline:2px solid var(--accent-green);outline-offset:4px;border-radius:2px}.status{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;color:var(--text-muted)}.status-dot{width:6px;height:6px;background:var(--accent-green);border-radius:50%;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.section-title{font-family:var(--mono);font-size:12px;font-weight:600;text-transform:lowercase;letter-spacing:1.5px;color:var(--text-muted);margin-bottom:20px}.section-title:before{content:"~/";color:var(--accent-green)}.skills{padding:48px 0 0}.skills-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.skill-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:20px;display:flex;flex-direction:column;gap:10px;transition:border-color .15s ease,transform .15s ease}.skill-card:hover{border-color:var(--border-hover);transform:translateY(-2px)}.skill-card:active{border-color:var(--accent-red)}.skill-card h3{font-family:var(--mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-muted)}.skill-card ul{list-style:none;display:flex;flex-direction:column;gap:6px}.skill-card li{font-family:var(--mono);font-size:14px;color:var(--text)}.experience{padding:48px 0 0}.exp-list{position:relative;display:flex;flex-direction:column}.exp-list:before{content:"";position:absolute;left:13px;top:28px;bottom:28px;width:2px;background:var(--border)}.job{padding:20px 0 20px 40px;display:flex;flex-direction:column;gap:6px;position:relative}.job:before{content:"";position:absolute;left:7px;top:26px;width:14px;height:14px;border-radius:50%;background:var(--bg);border:2px solid var(--border-hover);transition:border-color .2s ease,background .2s ease}.job:first-child:before{border-color:var(--accent-green);background:var(--accent-green);box-shadow:0 0 0 4px #34d3991f}.job:hover:before{border-color:var(--accent-green)}.job h3{font-family:var(--body);font-size:16px;font-weight:500;color:var(--text)}.job-meta{display:flex;align-items:center;gap:12px;font-family:var(--body);font-size:13px}.job-company{color:var(--text-muted)}.job-sep,.job-dates{color:var(--text-dim)}.job p{font-family:var(--body);font-size:16px;color:var(--text-muted);line-height:1.75}.projects{padding:48px 0 0}.project-list{display:flex;flex-direction:column}.project{padding:20px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:8px}.project:last-child{border-bottom:none}.project-header{display:flex;align-items:center;justify-content:space-between}.project-link{color:var(--text-dim);transition:color .15s ease}.project-link:hover{color:var(--text)}.project h3{font-family:var(--body);font-size:16px;font-weight:500;color:var(--text)}.project p{font-family:var(--body);font-size:16px;color:var(--text-muted);line-height:1.75}.tags{display:flex;gap:6px;flex-wrap:wrap}.tag{font-family:var(--mono);font-size:12px;font-weight:500;color:var(--text-muted);background:var(--surface-alt);padding:3px 8px;border-radius:4px}.section-rail{position:fixed;left:28px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:2px;z-index:40}.section-rail .rail-line{position:absolute;left:8px;top:12px;bottom:12px;width:2px;background:var(--border);z-index:-1}.section-rail a{position:relative;display:flex;align-items:center;justify-content:flex-start;gap:10px;padding:8px 0;text-decoration:none}.section-rail .rail-node{opacity:.35}.section-rail a[data-dist="0"] .rail-node{opacity:1;transform:scale(1.18)}.section-rail a[data-dist="1"] .rail-node{opacity:.6}.section-rail a:hover .rail-node{opacity:1}.section-rail .rail-label{font-family:var(--mono);font-size:10.5px;letter-spacing:.5px;color:var(--text-dim);transition:color .2s ease}.section-rail a:hover .rail-label,.section-rail a.active .rail-label{color:var(--text)}.section-rail .rail-node{font-family:var(--mono);font-size:13px;width:18px;height:18px;display:flex;align-items:center;justify-content:center;background:var(--bg);border-radius:50%;color:var(--border-hover);transition:color .2s ease,transform .25s ease,opacity .25s ease}.section-rail a .rail-node:before{content:"○"}.section-rail a.active .rail-node{color:var(--accent-green)}.section-rail a.active .rail-node:before{content:"●"}.section-rail a.done .rail-node{color:var(--accent-green)}.section-rail a.done .rail-node:before{content:"✓"}@media(max-width:1100px){.section-rail{display:none}}.scroll-hint{position:fixed;bottom:20px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;letter-spacing:1px;color:var(--text-muted);z-index:40;opacity:1;transition:opacity .4s ease;pointer-events:none}.scroll-hint.hidden{opacity:0}.scroll-hint-arrow{display:inline-block;animation:scroll-bounce 1.6s ease-in-out infinite}@keyframes scroll-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(3px)}}.contact{padding:48px 0 0}.contact-links{display:flex;gap:8px}.contact-links a{display:flex;align-items:center;justify-content:center;width:44px;height:44px;color:var(--text-muted);border:1px solid var(--border);border-radius:4px;text-decoration:none;transition:color .15s ease,border-color .15s ease,background-color .15s ease}.contact-links a:hover{color:var(--text);border-color:var(--border-hover);background:var(--surface)}.contact-links a:active{border-color:var(--accent-red);color:var(--accent-red)}.contact-links svg{width:16px;height:16px}footer{border-top:1px solid var(--border);height:60px;display:flex;justify-content:center;align-items:center;padding:0 24px}footer .container{display:flex;justify-content:space-between;font-family:var(--body);font-size:13px;color:var(--text-dim);max-width:800px;width:100%}@media(max-width:640px){.hero-top{flex-direction:column}.hero-graphic{display:none}.skills-grid{grid-template-columns:1fr}}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.visually-hidden:focus{position:fixed;top:0;left:0;width:auto;height:auto;padding:12px 24px;margin:0;overflow:visible;clip:auto;white-space:normal;background:var(--surface);color:var(--text);border:2px solid var(--accent-red);border-radius:0 0 4px;font-family:var(--mono);font-size:14px;z-index:9999}.blog-list{padding-bottom:2rem}.blog-title{font-family:var(--mono);font-size:clamp(1.75rem,4vw,2.5rem);font-weight:700;text-transform:lowercase;letter-spacing:-.02em;color:var(--text);margin-bottom:24px}.blog-title:before{content:"~/";color:var(--accent-green)}.blog-grid{display:flex;flex-direction:column}.blog-card{padding:0 0 20px;border-bottom:1px solid var(--border);margin-bottom:32px}.blog-card:last-child{border-bottom:none;margin-bottom:0}.blog-card a{display:block;text-decoration:none;color:inherit}.blog-card .post-content{display:flex;flex-direction:column;gap:10px}.blog-card .post-date{font-family:var(--body);font-size:13px;color:var(--text-dim)}.blog-card .post-title{font-family:var(--sans);font-size:clamp(1rem,1.5vw + .5rem,1.125rem);font-weight:600;line-height:1.3;color:var(--text)}.blog-card .post-title-chevron{color:var(--accent-red);font-family:var(--mono);font-weight:400}.blog-card .post-excerpt{font-family:var(--body);font-size:16px;color:var(--text-muted);line-height:1.75}.blog-card .post-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px}.blog-card .post-tags{display:flex;gap:6px}.blog-card .read-more{font-family:var(--mono);font-size:13px;color:var(--accent-red);transition:opacity .15s ease}.blog-card a:hover .read-more{opacity:.8}.blog-empty{display:flex;flex-direction:column;align-items:center;gap:24px;padding:48px 0}.blog-empty-terminal{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:20px;font-family:var(--mono);font-size:14px}.blog-empty-terminal .mini-term-header{margin-bottom:16px}.blog-empty-body{display:flex;flex-direction:column;gap:8px}.blog-empty-cmd{display:flex;gap:8px}.blog-empty-output{color:var(--text-muted);padding-left:16px;font-family:var(--mono);font-size:14px}.blog-empty-cursor{display:flex;gap:8px}.blog-empty-link{font-family:var(--mono);font-size:13px;color:var(--text-muted);text-decoration:none;transition:color .15s ease}.blog-empty-link:hover{color:var(--text)}.blog-post{padding:0;display:flex;flex-direction:column;gap:32px}.blog-post .back-link{display:inline-flex;align-items:center;gap:6px;font-family:var(--body);font-size:13px;color:var(--text-muted);text-decoration:none;transition:color .15s ease}.blog-post .back-link:hover{color:var(--text)}.blog-post .back-link svg{width:14px;height:14px}.blog-post .post-title-wrap{display:flex;gap:16px}.blog-post .post-title-border{width:3px;background:var(--accent-red);flex-shrink:0}.blog-post .post-title{font-family:var(--sans);font-size:clamp(1.5rem,3vw + .5rem,2.25rem);font-weight:700;line-height:1.25;letter-spacing:-.02em;color:var(--text)}.blog-post .post-meta{display:flex;align-items:center;gap:12px;font-family:var(--body);font-size:13px;color:var(--text-dim)}.blog-post .post-tags{display:flex;gap:6px}.blog-post .post-hero-image{border-radius:8px;overflow:hidden}.blog-post .post-hero-image img{width:100%;height:auto;display:block;aspect-ratio:2 / 1;object-fit:cover}.blog-post .blog-content{max-width:100%;display:flex;flex-direction:column;gap:32px}.blog-post .blog-content p{font-family:var(--body);font-size:16px;color:var(--text);line-height:1.75}.blog-post .blog-content h2{font-family:var(--sans);font-size:24px;font-weight:600;line-height:1.3;color:var(--text)}.blog-post .blog-content h3{font-family:var(--sans);font-size:20px;font-weight:600;color:var(--text)}.blog-post .blog-content ul,.blog-post .blog-content ol{padding-left:1.5rem;color:var(--text)}.blog-post .blog-content li{font-size:16px;line-height:1.75;margin-bottom:4px}.blog-post .blog-content li::marker{color:var(--text-dim)}.blog-post .blog-content code{font-family:var(--mono);background:var(--surface);padding:2px 6px;border-radius:4px;font-size:14px}.blog-post .blog-content pre{background:var(--surface);border:1px solid var(--surface-alt);border-radius:8px;padding:24px;overflow-x:auto;font-family:var(--mono);font-size:14px;line-height:1.6}.blog-post .blog-content pre code{background:none;padding:0;font-size:14px}.blog-post .blog-content blockquote{display:flex;gap:16px;padding:20px 0}.blog-post .blog-content blockquote:before{content:"";width:3px;flex-shrink:0;background:var(--accent-red)}.blog-post .blog-content blockquote p{color:var(--text-muted);font-style:italic;margin:0}.blog-post .blog-content table{width:100%;border-collapse:collapse;font-size:16px}.blog-post .blog-content th,.blog-post .blog-content td{border:1px solid var(--border);padding:8px 12px;text-align:left}.blog-post .blog-content th{background:var(--surface);font-weight:600;font-size:14px}.blog-post .blog-content td{color:var(--text-muted)}.animate-in{opacity:1;transform:translateY(0)}.js-ready .animate-in{opacity:0;transform:translateY(20px);transition:opacity .6s ease,transform .6s ease}.js-ready .animate-in.visible{opacity:1;transform:translateY(0)}@media(max-width:480px){.hero .bio{font-size:14px}.resume-btn{font-size:12px;padding:8px 16px}.terminal{padding:16px;font-size:12px}.terminal-input{font-size:12px}.note-card{padding:16px 20px}.skill-card{padding:16px}.skill-card li{font-size:12px}footer .container{flex-direction:column;align-items:center;gap:4px;text-align:center}}@media(max-width:375px){main{padding:16px}header{padding:0 16px}.header-nav{gap:16px}.header-nav a{font-size:12px}.badge-row{gap:6px}.badge{font-size:10px;padding:3px 8px}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}
