@import "https://api.fontshare.com/v2/css?f[]=general-sans@400,500&display=swap";@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap";:root{--bg-primary:#faf8f5;--bg-card:#fff;--bg-tag:#fdf4e3;--border:#e8e2d9;--border-light:#e0d9cf;--text-primary:#2c2620;--text-body:#5c534a;--text-secondary:#6b6158;--text-muted:#a09688;--accent:#b8860b;--accent-work:#6b8e6b;--accent-work-bg:#eef4ee;--accent-work-text:#5a7a5a;--chat-user-bg:#fdf4e3;--chat-user-text:#7a6840;--chat-ai-bg:#f5f2ee;--chat-header-bg:#fdf8f0;--font-sans:"General Sans", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", "Consolas", monospace;--content-max-width:1160px;--section-padding:40px;--nav-height:56px;--theme-transition:background-color .3s ease, color .3s ease, border-color .3s ease, box-shadow .3s ease}[data-theme=dark]{--bg-primary:#1e2028;--bg-card:#262833;--bg-tag:#2e3040;--border:#2d3040;--border-light:#484b60;--text-primary:#e8e6f0;--text-body:#b0b5c8;--text-secondary:#9aa0b4;--text-muted:#6b7088;--accent:#e8a84c;--accent-work:#6bbd8a;--accent-work-bg:#1e3028;--accent-work-text:#6bbd8a;--chat-user-bg:#2e3040;--chat-user-text:#e8a84c;--chat-ai-bg:#1e2028;--chat-header-bg:#2d3040}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:var(--nav-height)}body{font-family:var(--font-sans);color:var(--text-body);background-color:var(--bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:17px;line-height:1.6}[data-theme=dark] body{background-image:linear-gradient(27deg,#ffffff08 25%,#0000 25%),linear-gradient(207deg,#ffffff08 25%,#0000 25%),linear-gradient(27deg,#0000 75%,#ffffff05 75%),linear-gradient(207deg,#0000 75%,#ffffff05 75%);background-position:0 0,0 0,8px 8px,8px 8px;background-size:16px 16px}[data-theme=dark] body[data-bg-effect=glow-amber]:after{content:"";pointer-events:none;z-index:0;background:radial-gradient(#e8a84c1a 0%,#0000 75%);border-radius:50%;width:900px;height:700px;animation:8s ease-in-out infinite glowPulse;position:fixed;top:10%;left:50%;transform:translate(-50%)}@keyframes glowPulse{0%,to{opacity:.3;transform:translate(-50%)scale(.8)}50%{opacity:1;transform:translate(-50%)scale(1.3)}}body,nav,.card,.section-header,.project-card,.tag,.stack-tag,.btn-outline,.chat-widget,.chat-window,footer{transition:var(--theme-transition)}.container{max-width:var(--content-max-width);margin:0 auto;padding:0 24px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{color:var(--text-primary);font-weight:500;line-height:1.3}button{cursor:pointer;background:0 0;border:none;font-family:inherit}section{padding-top:var(--section-padding)}@media (width<=640px){:root{--section-padding:32px;--content-max-width:100%}.container{padding:0 16px}[data-theme=dark] body[data-bg-effect=glow-amber]:after{width:500px;height:400px;top:5%}}@media (prefers-reduced-motion:reduce){[data-theme=dark] body[data-bg-effect=glow-amber]:after{opacity:.6;animation:none}.reveal,.reveal-children>*{transition:none}}.reveal{opacity:0;transition:opacity .6s,transform .6s;transform:translateY(20px)}.reveal.visible{opacity:1;transform:translateY(0)}.reveal-children>*{opacity:0;transition:opacity .5s,transform .5s;transform:translateY(16px)}.reveal-children.visible>:first-child{transition-delay:0s}.reveal-children.visible>:nth-child(2){transition-delay:80ms}.reveal-children.visible>:nth-child(3){transition-delay:.16s}.reveal-children.visible>:nth-child(4){transition-delay:.24s}.reveal-children.visible>:nth-child(5){transition-delay:.32s}.reveal-children.visible>:nth-child(6){transition-delay:.4s}.reveal-children.visible>*{opacity:1;transform:translateY(0)}.theme-toggle{width:32px;height:32px;color:var(--text-muted);border-radius:8px;justify-content:center;align-items:center;transition:color .2s,background-color .2s;display:flex}.theme-toggle:hover{color:var(--accent);background-color:var(--bg-tag)}@media (width<=640px){.theme-toggle{width:40px;height:40px}}.navbar{z-index:50;background-color:var(--bg-card);border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);position:sticky;top:0}.navbar-inner{height:var(--nav-height);justify-content:space-between;align-items:center;display:flex}.navbar-left{align-items:center;gap:6px;display:flex}.navbar-logo{font-family:var(--font-mono);color:var(--accent);font-size:17px;font-weight:500;text-decoration:none}.navbar-logo:hover{text-decoration:none}.navbar-domain{color:var(--text-muted);font-size:14px}.navbar-right{align-items:center;gap:20px;display:flex}.navbar-link{color:var(--text-muted);font-size:14px;text-decoration:none;transition:color .2s}.navbar-link:hover{color:var(--text-primary);text-decoration:none}.navbar-link.active{color:var(--accent)}@media (width<=640px){.navbar-right{gap:6px}.navbar-link{padding:12px 6px;font-size:11px}.navbar-domain{display:none}}.hero{padding-top:60px;padding-bottom:20px}.hero-row{justify-content:space-between;align-items:center;gap:32px;max-width:75%;display:flex}.hero-text{flex:1}.hero-headshot{object-fit:cover;object-position:center 30%;border:2px solid var(--border);border-radius:50%;flex-shrink:0;width:180px;height:180px}.hero-intro{font-family:var(--font-mono);color:var(--accent);margin-bottom:12px;font-size:15px}.hero-name{color:var(--text-primary);margin-bottom:16px;font-size:44px;font-weight:500;line-height:1.1}.hero-subtitle{color:var(--text-secondary);margin-bottom:24px;font-size:17px;line-height:1.7}.hero-dots{gap:10px;margin-bottom:24px;display:flex}.hero-dots span{background-color:var(--accent);border-radius:50%;width:8px;height:8px}.hero-dots span:nth-child(2){opacity:.5}.hero-dots span:nth-child(3){opacity:.25}.hero-tagline{font-family:var(--font-mono);color:var(--text-muted);font-size:13px}@media (width<=640px){.hero{padding-top:48px}.hero-row{gap:20px;max-width:100%}.hero-headshot{width:100px;height:100px}.hero-name{font-size:32px}}.section-header{align-items:center;gap:12px;margin-bottom:24px;display:flex}.section-number{font-family:var(--font-mono);color:var(--accent);font-size:14px;font-weight:500}.section-title{white-space:nowrap;font-size:22px;font-weight:500}.section-line{background-color:var(--border-light);flex:1;min-width:40px;height:1px}@media (width<=640px){.section-header{gap:8px;margin-bottom:16px}.section-title{white-space:normal;font-size:20px}}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:24px}.about-text{color:var(--text-body);margin-bottom:16px;font-size:16px;line-height:1.7}.about-hobby{color:var(--text-muted);font-size:14px}@media (width<=640px){.card{padding:16px}.about-text{font-size:14px;line-height:1.6}.about-hobby{font-size:12px}}.projects-list{flex-direction:column;gap:14px;display:flex}.project-card{padding:0;transition:transform .2s,box-shadow .2s,background-color .3s,border-color .3s;display:flex;overflow:hidden}.project-card.clickable{cursor:pointer}@media (hover:hover){.project-card:hover{background-color:var(--bg-tag);transform:translateY(-2px);box-shadow:0 4px 12px #0000000f}}.project-accent-bar{border-radius:2px 0 0 2px;flex-shrink:0;width:4px}.project-content{flex:1;padding:20px 24px}.project-header{flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.project-name{font-size:17px;font-weight:500}.project-name a{color:var(--text-primary);text-decoration:none}.project-name a:hover{color:var(--accent);text-decoration:none}.project-subtitle{color:var(--text-muted);font-size:14px}.project-work-tag{background-color:var(--accent-work-bg);color:var(--accent-work-text);border-radius:4px;padding:2px 10px;font-size:12px;font-weight:500}.project-description{color:var(--text-secondary);margin-bottom:12px;font-size:15px;line-height:1.6}.project-tags{flex-wrap:wrap;gap:6px;display:flex}.tag{background-color:var(--bg-tag);color:var(--accent);border-radius:4px;padding:3px 10px;font-size:12px;font-weight:400}.project-preview{opacity:0;pointer-events:none;z-index:40;width:300px;transition:opacity .25s;position:fixed;top:15%;right:20%}.project-preview.visible{opacity:1}.project-preview img{border:1px solid var(--border);background-color:var(--bg-card);border-radius:10px;width:100%;height:auto;box-shadow:0 8px 24px #0000001f}@media (prefers-reduced-motion:reduce){.project-preview{transition:none}}@media (width<=1100px){.project-preview{display:none}}@media (width<=640px){.projects-list{gap:12px}.project-content{padding:14px 16px}.project-name{font-size:15px}.project-description{font-size:13px}.tag{padding:3px 8px;font-size:10px}}.homelab-text{color:var(--text-body);margin-bottom:16px;font-size:16px;line-height:1.7}.homelab-pipeline{font-family:var(--font-mono);color:var(--text-muted);font-size:13px}@media (width<=640px){.homelab-text{font-size:14px}.homelab-pipeline{word-break:break-word;font-size:11px}}.stack-rows{flex-direction:column;gap:8px;display:flex}.stack-row{flex-wrap:wrap;gap:8px;display:flex}.stack-tag{background-color:var(--bg-card);border:1px solid var(--border-light);color:var(--text-secondary);transition:var(--theme-transition), border-color .25s ease, box-shadow .25s ease;cursor:default;border-radius:5px;padding:4px 14px;font-size:13px}.stack-tag:hover{border-color:var(--accent);box-shadow:0 0 6px #b8860b40}.stack-tag{animation:8s ease-in-out infinite tagGlow;animation-delay:var(--glow-delay,0s)}@keyframes tagGlow{0%,to{border-color:var(--border-light);box-shadow:none}15%,25%{border-color:var(--accent);box-shadow:0 0 8px #b8860b4d}}@media (width<=640px){.stack-row{gap:6px}.stack-tag{padding:5px 12px;font-size:11px}}.contact-text{color:var(--text-secondary);margin-bottom:20px;font-size:16px}.contact-buttons{gap:12px;display:flex}.btn-outline{border:1px solid var(--accent);color:var(--accent);text-align:center;border-radius:8px;padding:10px 32px;font-size:14px;text-decoration:none;transition:background-color .2s,color .2s}.btn-outline:hover{background-color:var(--accent);color:#fff;text-decoration:none}@media (width<=640px){.contact-buttons{flex-direction:column;gap:10px}.btn-outline{width:100%;padding:14px 20px;font-size:13px}}.footer{text-align:center;padding:40px 0}.footer-text{font-family:var(--font-mono);color:var(--text-muted);font-size:13px}@media (width<=640px){.footer{padding:24px 0}}.chat-widget{z-index:100;position:fixed;bottom:24px;right:24px}.chat-toggle{background-color:var(--accent);color:#fff;border-radius:24px;align-items:center;gap:8px;padding:12px 20px;font-size:14px;font-weight:500;transition:transform .2s,box-shadow .2s;display:flex;box-shadow:0 4px 16px #00000026}.chat-toggle:hover{transform:translateY(-2px);box-shadow:0 6px 20px #0003}.chat-toggle-dot{opacity:.8;background-color:#fff;border-radius:50%;width:8px;height:8px}.chat-toggle-text{font-family:var(--font-sans)}.chat-window{background-color:var(--bg-card);border:1px solid var(--accent);border-radius:12px;flex-direction:column;width:340px;height:440px;animation:.25s chatOpen;display:flex;overflow:hidden;box-shadow:0 8px 32px #0000001f}@keyframes chatOpen{0%{opacity:0;transform:scale(.9)translateY(10px)}to{opacity:1;transform:scale(1)translateY(0)}}.chat-header{background-color:var(--chat-header-bg);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.chat-header-left{align-items:center;gap:8px;display:flex}.chat-header-dot{background-color:var(--accent);border-radius:50%;width:10px;height:10px}.chat-header-title{color:var(--text-primary);font-size:14px;font-weight:500}.chat-close{width:28px;height:28px;color:var(--text-muted);border-radius:6px;justify-content:center;align-items:center;transition:color .2s,background-color .2s;display:flex}.chat-close:hover{color:var(--text-primary);background-color:var(--bg-tag)}.chat-messages{overscroll-behavior:contain;flex-direction:column;flex:1;gap:10px;padding:16px;display:flex;overflow-y:auto}.chat-empty{color:var(--text-muted);text-align:center;padding:20px 0;font-size:13px;line-height:1.5}.chat-bubble{word-wrap:break-word;border-radius:12px;max-width:85%;padding:8px 12px;font-size:13px;line-height:1.5}.chat-bubble.user{background-color:var(--chat-user-bg);color:var(--chat-user-text);border-bottom-right-radius:4px;align-self:flex-end}.chat-bubble.assistant{background-color:var(--chat-ai-bg);color:var(--text-body);border:1px solid var(--border);border-bottom-left-radius:4px;align-self:flex-start}.chat-link{color:var(--accent);text-underline-offset:2px;word-break:break-all;margin-top:4px;text-decoration:underline;display:block}.chat-link:hover{opacity:.8}.chat-bubble.typing{padding:12px 16px}.typing-dots{gap:4px;display:flex}.typing-dots span{background-color:var(--text-muted);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite typingPulse}.typing-dots span:nth-child(2){animation-delay:.2s}.typing-dots span:nth-child(3){animation-delay:.4s}@keyframes typingPulse{0%,60%,to{opacity:.3;transform:scale(.8)}30%{opacity:1;transform:scale(1)}}.chat-input-bar{border-top:1px solid var(--border);background-color:var(--bg-card);align-items:center;gap:8px;padding:10px 12px;display:flex}.chat-input{border:1px solid var(--border);font-size:13px;font-family:var(--font-sans);background-color:var(--bg-primary);color:var(--text-body);border-radius:8px;outline:none;flex:1;padding:8px 12px;transition:border-color .2s}.chat-input::placeholder{color:var(--text-muted)}.chat-input:focus{border-color:var(--accent)}.chat-send{width:32px;height:32px;color:var(--accent);border-radius:8px;justify-content:center;align-items:center;transition:background-color .2s,opacity .2s;display:flex}.chat-send:hover:not(:disabled){background-color:var(--bg-tag)}.chat-send:disabled{opacity:.4;cursor:default}.chat-limit-bar{border-top:1px solid var(--border);color:var(--text-muted);text-align:center;background-color:var(--bg-card);padding:12px 16px;font-size:13px}@media (width<=640px){.chat-toggle{bottom:16px;right:16px}.chat-window{width:auto;height:auto;max-height:70dvh;position:fixed;inset:12px 12px auto}.chat-bubble{max-width:90%}}
