@import "https://fonts.googleapis.com/css2?family=Geist+Mono:wght@100..900&display=swap";
:root{--color-bg:#fff;--color-fg:#000;--color-border:#e4e4e7;--color-divider:#efefef;--color-accent:#3b82f6;--color-accent-muted:#3b82f61a;--color-featured:#f59e0b;--color-featured-muted:#f59e0b1a;--color-selection-bg:#dbeafe;--color-selection-fg:#1e3a8a;--color-hover-neutral:#00000014;--color-date-text:#737373;--color-muted:#737373;--color-muted-strong:#525252;--color-subtle:#a3a3a3;--font-sans:"Geist", system-ui, -apple-system, sans-serif;--font-mono:"Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--radius:.625rem;--transition-fast:.15s ease;--transition-normal:.2s ease}.dark{--color-bg:#0d0d0d;--color-fg:#fff;--color-border:#2e2e2e;--color-divider:#262626;--color-accent:#60a5fa;--color-accent-muted:#60a5fa1a;--color-featured:#fbbf24;--color-featured-muted:#fbbf241a;--color-selection-bg:#19283d;--color-selection-fg:#468adc;--color-hover-neutral:#ffffff0f;--color-muted:#a3a3a3;--color-muted-strong:#d4d4d4;--color-subtle:#737373}*,:before,:after{box-sizing:border-box;border:0 solid;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;scroll-behavior:smooth;line-height:1.5}body{background-color:var(--color-bg);color:var(--color-fg);min-height:100dvh;transition:background-color .3s,color .3s;position:relative;overflow-x:hidden}body:before,body:after{content:"";z-index:-1;pointer-events:none;filter:blur(80px);opacity:.12;border-radius:9999px;position:fixed}body:before{background:var(--color-accent);width:22rem;height:22rem;animation:18s ease-in-out infinite ambientDrift;top:8%;left:-12rem}body:after{background:var(--color-featured);width:18rem;height:18rem;animation:23s ease-in-out -8s infinite reverse ambientDrift;bottom:10%;right:-9rem}::selection{background-color:var(--color-selection-bg);color:var(--color-selection-fg)}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}img,svg,video{max-width:100%;height:auto;display:block}button,input,select,textarea{font:inherit;color:inherit;background:0 0}ol,ul{list-style:none}.scrollbar-modern{scrollbar-width:thin;scrollbar-color:transparent transparent}.scrollbar-modern:hover{scrollbar-color:#8080804d transparent}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes ambientDrift{0%,to{transform:translate(-2%,-1%)scale(1)}50%{transform:translate(2%,1%)scale(1.08)}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes chatPop{0%{opacity:0;transform:translateY(18px)scale(.94)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes footerDrift{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.5}}@keyframes experienceReveal{0%{opacity:0;transform:translateY(10px)scale(.99)}to{opacity:1;transform:translateY(0)scale(1)}}.animate-blink{animation:1s steps(2,start) infinite blink}.fade-in-up{animation:.5s forwards fadeInUp}.fade-in-up-delay-1{opacity:0;animation-delay:50ms}.fade-in-up-delay-2{opacity:0;animation-delay:.1s}.fade-in-up-delay-3{opacity:0;animation-delay:.15s}.fade-in-up-delay-4{opacity:0;animation-delay:.2s}.fade-in-up-delay-5{opacity:0;animation-delay:.25s}.fade-in-up-delay-6{opacity:0;animation-delay:.3s}.fade-in-up-delay-7{opacity:0;animation-delay:.35s}.fade-in-up-delay-8{opacity:0;animation-delay:.4s}.fade-in-up-delay-9{opacity:0;animation-delay:.45s}.page-wrapper{max-width:830px;margin:0 auto;padding:3rem 1.5rem 6rem;position:relative}@media (min-width:640px){.page-wrapper{padding:4rem 2rem 6rem}}.theme-toggle-wrapper{z-index:50;align-items:center;gap:.5rem;display:flex;position:fixed;top:1rem;right:1rem}.theme-toggle-btn{border:1px solid var(--color-border);background-color:var(--color-bg);width:2.25rem;height:2.25rem;color:var(--color-fg);cursor:pointer;transition:background-color var(--transition-fast), border-color var(--transition-fast);border-radius:.5rem;justify-content:center;align-items:center;display:inline-flex}.theme-toggle-btn:hover{background-color:var(--color-hover-neutral)}.theme-toggle-btn svg{width:1rem;height:1rem}.hero-section{padding-top:2rem}.hero-top{flex-direction:column;gap:1.5rem;display:flex}@media (min-width:640px){.hero-top{flex-direction:row;align-items:flex-start;gap:2rem}}.avatar-container{flex-shrink:0;position:relative}.drag-hint{color:var(--color-muted);letter-spacing:.2px;-webkit-user-select:none;user-select:none;pointer-events:none;opacity:.8;font-family:Bradley Hand,Segoe Print,Comic Sans MS,cursive;font-size:.8125rem;font-weight:500;position:absolute;top:-2.5rem;left:-.5rem}.drag-hint-arrow{color:var(--color-muted);opacity:.6;-webkit-user-select:none;user-select:none;pointer-events:none;font-size:1.25rem;position:absolute;top:-.75rem;left:1.75rem;transform:rotate(60deg)}.avatar-img{object-fit:cover;filter:grayscale();cursor:grab;-webkit-user-select:none;user-select:none;border:1px solid var(--color-border);border-radius:1rem;width:7.5rem;height:7.5rem;transition:filter .3s,transform .15s}.avatar-img:active{cursor:grabbing}.avatar-img:hover{filter:grayscale(0%);box-shadow:0 1rem 2.5rem var(--color-accent-muted);transform:rotate(-3deg)scale(1.04)}@media (min-width:640px){.avatar-img{width:7.5rem;height:7.5rem}}.social-links-col{flex-flow:wrap;gap:.25rem;padding-top:.25rem;display:flex}@media (min-width:640px){.social-links-col{flex-direction:column;gap:.125rem}}.social-link{color:inherit;opacity:.9;transition:opacity var(--transition-fast), background-color var(--transition-fast), transform var(--transition-normal), box-shadow var(--transition-normal);border-radius:9999px;align-items:center;gap:.375rem;padding:.375rem .75rem .375rem .625rem;font-size:.875rem;text-decoration:none;display:flex}.social-link:hover{opacity:1;background-color:var(--color-hover-neutral);box-shadow:0 0 1.25rem var(--color-accent-muted);transform:translate(.35rem)}.social-links-col:has(:hover)>:not(:hover){opacity:.35}.social-link svg{flex-shrink:0;width:1rem;height:1rem}.hero-name{letter-spacing:-.025em;margin-top:1.5rem;font-size:1.875rem;font-weight:600;line-height:1.2}@media (min-width:640px){.hero-name{font-size:2.25rem}}.cursor-blink{color:var(--color-accent);margin-left:2px;font-weight:400}.hero-handle{font-family:var(--font-mono);color:var(--color-accent);letter-spacing:.02em;margin-top:.25rem;font-size:.8125rem}.hero-bio{color:var(--color-muted);max-width:65ch;margin-top:1rem;font-size:1rem;line-height:1.625}.hero-status{color:var(--color-muted);margin-top:.75rem;font-size:1rem}.hero-status strong{color:var(--color-fg);font-weight:600}.cta-row{flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:1.5rem;display:flex}.btn{cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;transition:transform var(--transition-fast), box-shadow var(--transition-fast);border-radius:.5rem;justify-content:center;align-items:center;gap:.375rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;text-decoration:none;display:inline-flex}.tag-pill:hover{box-shadow:0 .35rem 1rem var(--color-accent-muted);transform:translateY(-2px)}.btn-outline{border:1px solid var(--color-border);color:var(--color-fg);background:0 0}.btn-outline:hover{background-color:var(--color-hover-neutral);border-color:var(--color-accent);box-shadow:0 0 1.5rem var(--color-accent-muted);transform:translateY(-2px)}.btn-ghost{color:var(--color-muted);background:0 0;border:1px solid #0000}.btn-ghost:hover{background-color:var(--color-hover-neutral);color:var(--color-fg);transform:translateY(-2px)}.btn svg{width:.875rem;height:.875rem}.section-heading{letter-spacing:.1em;text-transform:uppercase;color:var(--color-muted);margin-bottom:1rem;font-size:.6875rem;font-weight:600;position:relative}.section-heading:after{content:"";vertical-align:middle;background:linear-gradient(90deg, var(--color-accent), transparent);background-size:200% 100%;width:2rem;height:1px;margin-left:.625rem;animation:2.8s linear infinite shimmer;display:inline-block}.experience-section{margin-top:3rem}.experience-list{border-top:1px solid var(--color-divider)}.experience-item{border-bottom:1px solid var(--color-divider);transition:padding-left var(--transition-normal), padding-right var(--transition-normal), background-color var(--transition-normal), border-color var(--transition-normal);padding:1rem 0;animation:.65s both fadeInUp}.project-item:first-child{animation-delay:.48s}.project-item:nth-child(2){animation-delay:.56s}.project-item:nth-child(3){animation-delay:.64s}.project-item:nth-child(4){animation-delay:.72s}.project-item:nth-child(5){animation-delay:.8s}.project-item:hover{background-color:var(--color-accent-muted);border-color:var(--color-accent);padding-left:.75rem;padding-right:.75rem}.experience-item-animated{opacity:0;transition:padding-left var(--transition-normal), border-color var(--transition-normal);animation:.6s .45s both experienceReveal}.experience-item-animated:hover{border-color:var(--color-accent);box-shadow:inset 0 -1px 0 var(--color-accent);padding-left:.75rem}.experience-header{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.experience-role{color:var(--color-fg);font-size:.9375rem;font-weight:500}.experience-company{color:var(--color-muted);margin-top:.25rem;font-size:.8125rem}.experience-date{font-family:var(--font-mono);color:var(--color-date-text);text-align:right;flex-shrink:0;font-size:.75rem}@media (max-width:480px){.experience-header{flex-direction:column;gap:.375rem}.experience-date{text-align:left}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.projects-section{margin-top:3rem}.project-list{flex-direction:column;gap:0;display:flex}.project-item{border-bottom:1px solid var(--color-divider);flex-direction:column;gap:.25rem;padding:1rem 0;display:flex}.project-item:first-child{border-top:1px solid var(--color-divider)}.project-header{align-items:center;gap:.625rem;display:flex}.project-icon{background-color:var(--color-hover-neutral);width:1.75rem;height:1.75rem;color:var(--color-muted-strong);transition:transform var(--transition-normal), background-color var(--transition-normal), color var(--transition-normal);border-radius:.375rem;flex-shrink:0;justify-content:center;align-items:center;font-size:.875rem;display:flex}.project-item:hover .project-icon{color:var(--color-accent);background-color:var(--color-bg);transform:rotate(8deg)scale(1.12)}.project-icon svg{flex-shrink:0;width:.9375rem;height:.9375rem}.project-name{color:var(--color-fg);font-size:.9375rem;font-weight:500}.project-badges{align-items:center;gap:.375rem;margin-left:.25rem;display:flex}.featured-badge{background-color:var(--color-featured-muted);color:var(--color-featured);font-family:var(--font-mono);border-radius:.25rem;align-items:center;gap:.25rem;padding:0 .375rem;font-size:.6875rem;display:inline-flex}.featured-badge svg{flex-shrink:0;width:.625rem;height:.625rem}.project-stars{color:var(--color-muted);align-items:center;gap:.25rem;margin-left:auto;font-size:.8125rem;display:flex}.project-stars svg{width:.875rem;height:.875rem}.project-desc{color:var(--color-muted);padding-left:2.375rem;font-size:.8125rem;line-height:1.5}.project-tags{flex-wrap:wrap;gap:.375rem;margin-top:.25rem;padding-left:2.375rem;display:flex}.tag-pill{background-color:var(--color-accent-muted);color:var(--color-accent);font-family:var(--font-mono);white-space:nowrap;border-radius:9999px;padding:.125rem .625rem;font-size:.75rem;display:inline-flex}.writing-section{margin-top:3rem}.writing-list{border-top:1px solid var(--color-divider)}.writing-item{border-bottom:1px solid var(--color-divider);transition:background-color var(--transition-normal), transform var(--transition-normal), box-shadow var(--transition-normal);border-radius:.25rem;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 0;text-decoration:none;display:flex}.writing-item:hover{background-color:var(--color-hover-neutral);box-shadow:0 .75rem 1.5rem var(--color-accent-muted);margin-left:-.5rem;margin-right:-.5rem;padding-left:.5rem;padding-right:.5rem;transform:translate(.25rem)}.writing-title{color:var(--color-fg);font-size:.9375rem;font-weight:500}.writing-meta{font-family:var(--font-mono);color:var(--color-muted);flex-shrink:0;font-size:.75rem}.contact-section{margin-top:3rem}.chat-container{flex-direction:column;gap:.75rem;max-width:28rem;margin:0 auto;display:flex}.chat-bubble{word-break:break-word;max-width:85%;transition:transform var(--transition-normal), box-shadow var(--transition-normal);border-radius:1rem;padding:.625rem .875rem;font-size:.875rem;line-height:1.5;animation:.7s cubic-bezier(.22,1,.36,1) both chatPop}.chat-bubble:first-child{animation-delay:.55s}.chat-bubble:nth-child(2){animation-delay:.72s}.chat-bubble:nth-child(3){animation-delay:.89s}.chat-bubble:nth-child(4){animation-delay:1.06s}.chat-bubble:nth-child(5){animation-delay:1.23s}.chat-bubble:hover{box-shadow:0 .75rem 1.5rem var(--color-accent-muted);transform:translateY(-4px)rotate(-1deg)}.chat-incoming{background-color:var(--color-hover-neutral);color:var(--color-fg);border-bottom-left-radius:.25rem;align-self:flex-start}.chat-outgoing{background-color:var(--color-hover-neutral);color:var(--color-fg);border-bottom-right-radius:.25rem;align-self:flex-end}.chat-bubble a{text-underline-offset:2px;color:var(--color-accent);text-decoration:underline}.chat-bubble a:hover{opacity:.8}.site-footer{text-align:center;margin-top:5rem;padding-top:2rem;animation:5s ease-in-out 1.5s infinite footerDrift}.footer-quote{color:var(--color-subtle);font-size:.8125rem;font-style:italic;line-height:1.6}.footer-quote cite{color:var(--color-muted);margin-top:.25rem;font-style:normal;display:block}.footer-copy{color:var(--color-subtle);margin-top:1.5rem;font-size:.75rem}:where(a,button,[role=button],[tabindex]):focus-visible{outline:2px solid var(--color-border);outline-offset:3px}.theme-transition,.theme-transition *,.theme-transition :before,.theme-transition :after{transition:background-color .3s,color .3s,border-color .3s,box-shadow .3s!important}
