:root{font-family:Space Grotesk,Inter,system-ui,sans-serif;font-size:16px;background-color:#000;color:#f8f8f8;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;scroll-behavior:smooth}*{box-sizing:border-box}body{margin:0;background-color:#000;min-height:100vh}#root{min-height:100vh}:where(a){color:#ff9500;text-decoration:underline;text-decoration-color:#ff950059;text-decoration-thickness:1px;text-underline-offset:.25em;transition:color .2s ease,text-decoration-color .2s ease}:where(a:visited){color:#e08a2e}:where(a:hover){color:#ffb84d;text-decoration-color:currentColor}:where(a:focus-visible){outline:2px solid #ff9500;outline-offset:3px;border-radius:2px}.app-shell[data-backdrop="1"]{--backdrop-accent: #4f8a5b}.app-shell[data-backdrop="2"]{--backdrop-accent: #7a5fb0}.app-shell{min-height:100vh;color:#f5f5f5;background:linear-gradient(135deg,#000000 0%,#1a1a1a 25%,var(--backdrop-accent, #bb7456) 50%,#1a1a1a 75%,#ffffff 100%);background-size:400% 400%;animation:gradientShift 15s ease infinite;font-family:Space Grotesk,Inter,system-ui,sans-serif}@keyframes gradientShift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}main{padding:2rem 4vw 4rem;display:flex;flex-direction:column;gap:3rem}.scene-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.hero{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2rem;align-items:center}.canvas-stack{display:grid;gap:1.5rem}.canvas-container{position:relative;width:100%;min-height:320px;background:#000;border-radius:1rem;overflow:hidden;border:1px solid rgba(255,255,255,.08);box-shadow:0 20px 50px #0009}.canvas-container2{min-height:220px}.hero-copy h1{font-size:clamp(2.6rem,5vw,4rem);margin:.3rem 0}.animated-name{position:relative;display:inline-block;text-decoration:underline;text-decoration-color:#ff7b00;text-decoration-thickness:5px;text-underline-offset:8px;animation:fadeText 8s ease-in-out infinite}.animated-name:after{content:"";position:absolute;bottom:0;left:0;width:100%;height:4px;background:linear-gradient(90deg,#ff7b00,#ff9500);transform:scaleX(0);transform-origin:left}@keyframes fadeText{0%,15%{opacity:0}25%{opacity:1}50%{opacity:1}75%{opacity:1}85%,to{opacity:0}}.hero-kicker{letter-spacing:.5em;text-transform:uppercase;font-size:.8rem;color:#ffffffb3;margin-bottom:.5rem}.hero-subcopy{max-width:32ch;color:#ffffffd9;line-height:1.6}.hero-links{margin-top:1.5rem;display:flex;gap:1rem;flex-wrap:wrap}.hero-link{text-decoration:none;padding:.9rem 1.6rem;border:1px solid rgba(255,255,255,.4);border-radius:999px;color:inherit;font-size:.95rem;transition:background .3s ease,border-color .3s ease}.hero-link:hover{background:#ffffff1a;border-color:#ff7b00}.projects{padding:2rem;border-radius:1rem;border:1px solid rgba(255,255,255,.05);background:#060606d9;box-shadow:0 20px 60px #0009}.section-heading .subtitle{font-size:.85rem;letter-spacing:.3em;text-transform:uppercase;color:#fff9;margin-bottom:.5rem}.section-heading h2{margin:0;font-size:clamp(1.8rem,4vw,2.6rem)}.section-heading p{color:#ffffffb3;max-width:46ch;line-height:1.6;margin-top:.75rem}.project-grid{margin-top:2rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem}.project-grid article{border:1px solid rgba(255,255,255,.12);padding:1.5rem;border-radius:.75rem;background:#ffffff05;min-height:160px;display:flex;flex-direction:column;gap:1rem;transition:border-color .3s ease,transform .3s ease}.project-grid article:hover{border-color:#ff7b004d;transform:translateY(-4px)}.project-grid h3{margin:0;font-size:1.2rem}.project-grid p{margin:0;color:#ffffffb3;line-height:1.6;flex-grow:1}.project-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:linear-gradient(135deg,#ff7b00,#ff9500);color:#fff;text-decoration:none;border-radius:999px;font-weight:500;font-size:.9rem;transition:all .3s ease;box-shadow:0 4px 15px #ff7b004d;align-self:flex-start;position:relative;overflow:hidden}.project-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);transition:left .5s ease}.project-btn:hover:before{left:100%}.project-btn:hover{transform:translate(4px);box-shadow:0 6px 20px #ff7b0080}.project-btn svg{transition:transform .3s ease}.project-btn:hover svg{transform:translate(4px)}.github-card{margin-top:1.5rem;border:1px solid rgba(255,255,255,.12);padding:1.5rem;border-radius:.75rem;background:#ffffff05;display:flex;flex-direction:column;gap:.75rem}.github-card .subtitle{margin:0;font-size:.85rem;letter-spacing:.3em;text-transform:uppercase;color:#fff9}.github-card h3{margin:0;font-size:1.2rem}.github-card p{margin:0;color:#ffffffb3;line-height:1.6}.github-repos{margin:0;padding-left:1.2rem;color:#ffffffb3}.github-actions{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.5rem}.github-actions .project-btn,.github-actions .hero-link{min-height:44px;display:inline-flex;align-items:center}.project-status{margin:0;font-size:.75rem;letter-spacing:.18em;text-transform:uppercase;color:#ff9500}.project-role{margin:0;font-size:.85rem;color:#ffffffd9}.github-repos{list-style:none;padding-left:0;display:flex;flex-direction:column;gap:.5rem}.github-repos a{font-weight:500}.featured-card{margin-top:1.5rem;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);overflow:hidden;border:1px solid rgba(255,255,255,.12);border-radius:.75rem;background:#ffffff05}.featured-image{width:100%;height:100%;min-height:240px;object-fit:cover;display:block}.featured-body{padding:1.5rem;display:flex;flex-direction:column;gap:.75rem;justify-content:center}.featured-body .subtitle{margin:0;font-size:.85rem;letter-spacing:.3em;text-transform:uppercase;color:#fff9}.featured-body h3{margin:0;font-size:1.6rem}.featured-body p{margin:0;color:#ffffffb3;line-height:1.6}.featured-body .featured-theme{font-size:.85rem;color:#ffffff8c}@media(max-width:720px){.featured-card{grid-template-columns:1fr}}.github-card .github-repos{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.github-repos li{display:flex;flex-direction:column;gap:.25rem;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:.5rem}.github-repos li span{font-size:.85rem;line-height:1.5;color:#ffffffb3}.resume{padding:2rem;border-radius:1rem;border:1px solid rgba(255,255,255,.05);background:#060606d9;box-shadow:0 20px 60px #0009;display:flex;flex-direction:column;gap:1.5rem}.resume .subtitle{margin:0;font-size:.85rem;letter-spacing:.3em;text-transform:uppercase;color:#fff9}.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1.25rem}.timeline li{display:grid;grid-template-columns:minmax(150px,220px) 1fr;column-gap:1.5rem;row-gap:.25rem;padding-left:1rem;border-left:2px solid #ff7b00}.timeline .years{grid-row:span 2;color:#fff9}.timeline .role{font-weight:500}.timeline .line{color:#ffffffb3;line-height:1.5}.resume-btn{min-height:44px;align-self:flex-start}@media(max-width:600px){.timeline li{grid-template-columns:1fr}.timeline .years{grid-row:auto}}.resume-summary{margin:0;max-width:62ch;line-height:1.6;color:#fffc}.skill-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}.skill-list li{padding:.2rem .75rem;border:1px solid rgba(255,255,255,.15);border-radius:999px;font-size:.85rem;color:#fffc}.blog{padding:2rem;border-radius:1rem;border:1px solid rgba(255,255,255,.08);background:#080808e6;box-shadow:0 20px 60px #0009}.blog-heading h2{margin:.25rem 0;font-size:clamp(1.8rem,4vw,2.4rem)}.blog-heading p{color:#ffffffb3;max-width:52ch;line-height:1.5}.blog-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.5rem;margin-top:2rem}.blog-grid article{padding:1.5rem;background:#00000073;border-radius:.85rem;border:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:.75rem;transition:border-color .3s ease,transform .3s ease}.blog-grid article:hover{border-color:#ff7b004d;transform:translateY(-4px)}.blog-grid h3{margin:0}.blog-grid p{margin:0;color:#ffffffb8;line-height:1.5}.meta{font-size:.8rem;letter-spacing:.2em;text-transform:uppercase;color:#ffffff8c}.topic-row{display:flex;flex-wrap:wrap;gap:.5rem}.topic-row span{font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:#fff9}.blog-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:linear-gradient(135deg,#ff7b00,#ff9500);color:#fff;text-decoration:none;border-radius:999px;font-weight:500;font-size:.9rem;transition:all .3s ease;box-shadow:0 4px 15px #ff7b004d;align-self:flex-start;margin-top:auto;position:relative;overflow:hidden}.blog-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);transition:left .5s ease}.blog-btn:hover:before{left:100%}.blog-btn:hover{transform:translate(4px);box-shadow:0 6px 20px #ff7b0080}.blog-btn svg{transition:transform .3s ease}.blog-btn:hover svg{transform:translate(4px)}.blog-cta{margin-top:2rem;display:flex;justify-content:center}.contact{min-height:60vh;background:#000;border-radius:1rem;padding:2rem;border:1px solid rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center}.contact-container{width:min(900px,90vw);display:flex;flex-direction:column;gap:1.5rem}.contact-title{font-size:2.5rem;font-weight:300;border-bottom:3px solid #ffffff;padding-bottom:.5rem}.links{display:flex;flex-wrap:wrap;gap:1.5rem}.links a{color:inherit;text-decoration:none;transition:color .3s ease}.links a:hover{color:#ff7b00}.Media{display:flex;align-items:center;gap:.5rem}.link-items{display:flex;flex-direction:column;gap:.6rem}.subtitle{font-size:1rem;margin-right:.5rem;font-weight:400}.terminal{margin-top:.5rem;padding:.75rem 1rem;border:1px dashed rgba(255,255,255,.25);border-radius:.5rem;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.85rem;color:#fffc}.terminal .prompt{color:#ff7b00}.terminal-out{color:#ffffffa6;margin-bottom:.4rem}.terminal a{color:#ff7b00}.terminal-row{display:flex;align-items:center;gap:.5rem;min-height:44px}.terminal-row input{flex:1;min-height:44px;background:transparent;border:0;color:inherit;font:inherit}.terminal-row input:focus-visible{outline:1px solid #ff7b00;outline-offset:2px}
