@import"https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;700;800&family=Space+Grotesk:wght@500;600;700&display=swap";:root{--ink: #111111;--ink-soft: #5f564a;--line: rgba(17, 17, 17, .2);--surface: #efe7db;--surface-alt: #e4d8c8;--accent: #111111;--accent-contrast: #f3ece2;--glass-bg: rgba(255, 255, 255, .34);--glass-stroke: rgba(255, 255, 255, .42);--glass-highlight: rgba(255, 255, 255, .56);--glass-shadow: 0 18px 42px rgba(15, 15, 15, .14);--particle-rgb: 17, 17, 17;--scroll-angle: 30deg;--overlay-alpha: .12;--bg-x: 14%;--bg-y: 12%}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Manrope,sans-serif;background:#0d0d0d;color:var(--ink);overflow-x:hidden}a{color:inherit;text-decoration:none}.app-shell{--topbar-bg: color-mix(in srgb, var(--glass-bg) 78%, var(--surface));--card-bg: color-mix(in srgb, var(--glass-bg) 88%, var(--surface));--shadow: var(--glass-shadow);min-height:100vh;color:var(--ink);background:linear-gradient(var(--scroll-angle),var(--surface),var(--surface-alt));transition:background 1s cubic-bezier(.19,1,.22,1),color .6s cubic-bezier(.19,1,.22,1),border-color .6s cubic-bezier(.19,1,.22,1);position:relative;isolation:isolate}.app-shell:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(circle at var(--bg-x) var(--bg-y),color-mix(in srgb,var(--ink) 22%,transparent),transparent 54%),linear-gradient(122deg,color-mix(in srgb,var(--ink) 10%,transparent),transparent 42%);transition:background .75s cubic-bezier(.19,1,.22,1)}.app-shell:after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:radial-gradient(circle,color-mix(in srgb,var(--ink) 24%,transparent) 1px,transparent 1.2px);background-size:22px 22px;background-position:center;opacity:.36}.bubble-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}.topbar,main,.footer{position:relative;z-index:1}.app-shell[data-theme=home]{--surface: #efe7db;--surface-alt: #e4d8c8;--glass-bg: rgba(255, 255, 255, .3);--glass-stroke: rgba(255, 255, 255, .44);--glass-highlight: rgba(255, 255, 255, .56);--particle-rgb: 17, 17, 17;--bg-x: 12%;--bg-y: 10%}.app-shell[data-theme=about]{--ink: #f3ece2;--ink-soft: #d5ccbf;--line: rgba(243, 236, 226, .24);--surface: #0d0d0d;--surface-alt: #181818;--accent: #f3ece2;--accent-contrast: #111111;--glass-bg: rgba(18, 18, 18, .54);--glass-stroke: rgba(243, 236, 226, .24);--glass-highlight: rgba(243, 236, 226, .16);--glass-shadow: 0 22px 48px rgba(0, 0, 0, .46);--particle-rgb: 243, 236, 226;--bg-x: 84%;--bg-y: 14%}.app-shell[data-theme=experience]{--surface: #e8ddd0;--surface-alt: #dccfbf;--glass-bg: rgba(255, 255, 255, .3);--glass-stroke: rgba(255, 255, 255, .4);--glass-highlight: rgba(255, 255, 255, .52);--particle-rgb: 17, 17, 17;--bg-x: 18%;--bg-y: 42%}.app-shell[data-theme=skills]{--ink: #f3ece2;--ink-soft: #d7cec3;--line: rgba(243, 236, 226, .22);--surface: #111111;--surface-alt: #1f1f1f;--accent: #f3ece2;--accent-contrast: #131313;--glass-bg: rgba(20, 20, 20, .56);--glass-stroke: rgba(243, 236, 226, .22);--glass-highlight: rgba(243, 236, 226, .14);--glass-shadow: 0 22px 48px rgba(0, 0, 0, .48);--particle-rgb: 243, 236, 226;--bg-x: 82%;--bg-y: 46%}.app-shell[data-theme=projects]{--surface: #dfd2c2;--surface-alt: #d1c4b2;--glass-bg: rgba(255, 255, 255, .28);--glass-stroke: rgba(255, 255, 255, .36);--glass-highlight: rgba(255, 255, 255, .5);--particle-rgb: 17, 17, 17;--bg-x: 20%;--bg-y: 78%}.app-shell[data-theme=contact]{--ink: #f3ece2;--ink-soft: #ddd4c8;--line: rgba(243, 236, 226, .24);--surface: #090909;--surface-alt: #181818;--accent: #f3ece2;--accent-contrast: #111111;--glass-bg: rgba(17, 17, 17, .56);--glass-stroke: rgba(243, 236, 226, .24);--glass-highlight: rgba(243, 236, 226, .15);--glass-shadow: 0 24px 52px rgba(0, 0, 0, .5);--particle-rgb: 243, 236, 226;--bg-x: 78%;--bg-y: 82%}.container{width:min(1140px,92%);margin:0 auto}.scroll-progress-wrap{position:fixed;inset:0 0 auto;height:3px;z-index:90;pointer-events:none}.scroll-progress{display:block;width:100%;height:100%;transform-origin:left;background:linear-gradient(90deg,color-mix(in srgb,var(--ink) 88%,transparent),color-mix(in srgb,var(--ink) 54%,transparent));box-shadow:0 0 14px color-mix(in srgb,var(--ink) 30%,transparent)}.topbar{position:sticky;top:0;z-index:50;border-bottom:1px solid var(--line);backdrop-filter:blur(18px) saturate(130%);-webkit-backdrop-filter:blur(18px) saturate(130%);background:linear-gradient(130deg,color-mix(in srgb,var(--topbar-bg) 90%,transparent),color-mix(in srgb,var(--topbar-bg) 62%,transparent));box-shadow:0 10px 28px color-mix(in srgb,var(--ink) 14%,transparent);transition:background .7s cubic-bezier(.19,1,.22,1),border-color .7s cubic-bezier(.19,1,.22,1)}.topbar-glow{position:absolute;inset:0;pointer-events:none;opacity:.6;background:linear-gradient(90deg,transparent 0%,color-mix(in srgb,var(--ink) 26%,transparent) 44%,transparent 84%)}.topbar-inner{min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:16px;position:relative}.brand-mark{display:inline-flex;align-items:center;gap:10px;font-family:Space Grotesk,sans-serif;font-weight:700;letter-spacing:.2px}.brand-mark img{width:30px;height:30px;border-radius:8px}.nav-menu{display:flex;align-items:center;gap:16px}.nav-menu a{position:relative;font-weight:700;color:color-mix(in srgb,var(--ink) 74%,transparent);transition:color .25s ease}.nav-menu a:after{content:"";position:absolute;left:0;bottom:-4px;width:100%;height:2px;transform:scaleX(0);transform-origin:left;background:var(--ink);transition:transform .55s cubic-bezier(.19,1,.22,1)}.nav-menu a:hover,.nav-menu a.active{color:var(--ink)}.nav-menu a:hover:after,.nav-menu a.active:after{transform:scaleX(1)}.top-actions{display:flex;align-items:center;gap:10px}.theme-pill{display:inline-flex;align-items:center;border-radius:999px;border:1px solid var(--glass-stroke);padding:7px 12px;color:var(--ink-soft);background:color-mix(in srgb,var(--card-bg) 84%,transparent);backdrop-filter:blur(14px) saturate(122%);-webkit-backdrop-filter:blur(14px) saturate(122%);font-size:.78rem;font-weight:700}.github-btn{display:inline-flex;align-items:center;gap:8px;border-radius:999px;border:1px solid var(--glass-stroke);padding:10px 14px;background:color-mix(in srgb,var(--card-bg) 88%,transparent);backdrop-filter:blur(14px) saturate(122%);-webkit-backdrop-filter:blur(14px) saturate(122%);font-weight:700;transition:transform .24s ease,box-shadow .35s ease}.github-btn:hover{transform:translateY(-2px);box-shadow:0 12px 26px #0f0f0f33}.hamburger-btn{display:none;width:46px;height:46px;border-radius:999px;border:1px solid var(--glass-stroke);background:color-mix(in srgb,var(--card-bg) 90%,transparent);backdrop-filter:blur(14px) saturate(122%);-webkit-backdrop-filter:blur(14px) saturate(122%);align-items:center;justify-content:center;flex-direction:column;gap:5px;padding:0;position:relative;overflow:hidden}.hamburger-btn:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,rgba(17,17,17,.18),transparent 66%);opacity:0;transition:opacity .3s ease}.hamburger-btn:hover:before{opacity:1}.hamburger-btn span{width:18px;height:2px;border-radius:999px;background:var(--ink);position:relative;z-index:1;transition:transform .36s cubic-bezier(.19,1,.22,1),opacity .24s ease}.hamburger-btn.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.hamburger-btn.open span:nth-child(2){opacity:0}.hamburger-btn.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.mobile-menu-overlay{position:fixed;inset:0;background:#080808c7;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:76;display:flex;justify-content:flex-end;align-items:flex-start;padding:14px 12px}.mobile-menu-panel{width:min(92vw,390px);max-height:86vh;overflow:auto;border-radius:26px;border:1px solid rgba(243,236,226,.22);background:radial-gradient(circle at 86% 4%,rgba(243,236,226,.2),transparent 45%),#121212;color:#f3ece2;box-shadow:0 36px 76px #0006;padding:16px;display:flex;flex-direction:column;gap:14px;position:relative}.mobile-menu-panel:before{content:"";position:absolute;width:180px;height:180px;right:-60px;top:-60px;border-radius:999px;border:1px solid rgba(243,236,226,.18);background:radial-gradient(circle,rgba(243,236,226,.12),transparent 65%);pointer-events:none}.mobile-menu-header{display:flex;align-items:center;justify-content:space-between}.mobile-menu-header h3{margin:0;font-family:Space Grotesk,sans-serif;font-size:1.05rem}.mobile-close-btn{width:34px;height:34px;border-radius:999px;border:1px solid rgba(243,236,226,.28);background:#f3ece21a;color:#f3ece2;display:inline-flex;align-items:center;justify-content:center}.mobile-menu-links{display:grid;gap:8px}.mobile-link{display:flex;align-items:center;justify-content:space-between;gap:10px;border-radius:999px;border:1px solid rgba(243,236,226,.2);background:#f3ece214;padding:10px 14px;font-weight:700;color:#f3ece2;transition:transform .24s ease,border-color .24s ease}.mobile-link-copy{display:grid;gap:2px;text-align:left}.mobile-link small{color:#f3ece2b8;font-size:.72rem;font-weight:600}.mobile-link b{color:#f3ece2d6;font-size:.74rem;font-weight:700}.mobile-link:hover,.mobile-link.active{transform:translateY(-2px);border-color:#f3ece266}.mobile-github{margin-top:4px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:999px;border:1px solid rgba(243,236,226,.25);background:#f3ece21a;color:#f3ece2;padding:11px 12px;font-weight:700}.scramble-text{position:relative;display:inline-block;min-width:.8em;white-space:nowrap;vertical-align:middle;transition:letter-spacing .2s ease,filter .2s ease}.scramble-text-sizer{visibility:hidden;display:block;white-space:nowrap}.scramble-text-live{position:absolute;inset:0;display:block;white-space:nowrap}.scramble-text.is-scrambling{letter-spacing:.07em;filter:blur(.25px);font-family:Space Grotesk,sans-serif;font-weight:700}.themed-section{position:relative}.themed-section:before{content:"";position:absolute;inset:12px 2%;border-radius:30px;pointer-events:none;background:linear-gradient(140deg,color-mix(in srgb,var(--glass-highlight) 52%,transparent),color-mix(in srgb,var(--ink) 8%,transparent))}.themed-section>.container{position:relative;z-index:1}.lazy-section-shell{position:relative}.lazy-section-content{will-change:opacity,transform,filter}.lazy-section-placeholder{width:min(1140px,92%);margin:0 auto;border-radius:20px;border:1px solid var(--glass-stroke);background:linear-gradient(120deg,color-mix(in srgb,var(--card-bg) 86%,transparent) 20%,color-mix(in srgb,var(--glass-highlight) 34%,transparent) 45%,color-mix(in srgb,var(--card-bg) 86%,transparent) 72%),color-mix(in srgb,var(--card-bg) 90%,transparent);background-size:200% 100%;animation:lazyShimmer 1.7s linear infinite;backdrop-filter:blur(14px) saturate(120%);-webkit-backdrop-filter:blur(14px) saturate(120%);box-shadow:var(--shadow);display:flex;flex-direction:column;justify-content:center;gap:12px;padding:22px}.lazy-placeholder-line{display:block;height:14px;border-radius:999px;background:color-mix(in srgb,var(--ink) 16%,transparent)}.lazy-placeholder-line.short{width:min(240px,58%)}.hero-section{padding:74px 0 42px;overflow:hidden}.hero-section:before{display:none}.orb{position:absolute;border-radius:999px;filter:blur(10px);opacity:.8;animation:orbFloat 8s ease-in-out infinite}.orb-one{width:300px;height:300px;top:-120px;left:-100px;background:radial-gradient(circle,rgba(17,17,17,.2),transparent 64%)}.orb-two{width:360px;height:360px;top:-100px;right:-120px;background:radial-gradient(circle,rgba(255,255,255,.24),transparent 66%);animation-delay:1.2s}.hero-grid{display:grid;grid-template-columns:1.34fr 1fr;gap:24px}.eyebrow{margin:0;display:inline-flex;padding:6px 12px;border-radius:999px;border:1px solid var(--line);font-weight:800;font-size:.8rem}.hero-title{margin:10px 0 12px}.name-loop-wrap{display:block;max-width:min(840px,96vw);overflow:hidden;border-bottom:1px solid var(--line);padding-bottom:8px}.name-loop-track{display:inline-block;white-space:nowrap;font-family:Space Grotesk,sans-serif;font-size:clamp(2.1rem,6vw,3.9rem);font-weight:700;line-height:1;color:var(--ink);animation:marquee 12s linear infinite}.hero-role{margin-top:9px;display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:clamp(1rem,2.1vw,1.45rem);font-weight:700}.hero-role-word-wrap{display:inline-grid;min-height:34px}.hero-role-word{color:var(--ink);font-family:Space Grotesk,sans-serif}.hero-copy{max-width:58ch;color:var(--ink-soft);font-size:1.03rem;line-height:1.58}.hero-cta{margin-top:22px;display:flex;gap:12px;flex-wrap:wrap}.btn-primary,.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 18px;border-radius:12px;border:1px solid transparent;font-weight:800;letter-spacing:.1px;position:relative;overflow:hidden;transition:transform .22s ease,box-shadow .32s ease,border-color .3s ease}.btn-primary:after,.btn-ghost:after{content:"";position:absolute;inset:-20% -60%;background:linear-gradient(110deg,transparent 44%,rgba(255,255,255,.4) 50%,transparent 58%);transform:translate(-120%);transition:transform 1.45s cubic-bezier(.22,1,.36,1)}.btn-primary:hover:after,.btn-ghost:hover:after{transform:translate(100%)}.btn-primary{background:var(--accent);color:var(--accent-contrast);box-shadow:0 12px 26px #1111113d}.btn-ghost{color:var(--ink);border-color:var(--glass-stroke);background:color-mix(in srgb,var(--card-bg) 88%,transparent);backdrop-filter:blur(12px) saturate(122%);-webkit-backdrop-filter:blur(12px) saturate(122%)}.btn-download{border-style:dashed}.btn-primary:hover,.btn-ghost:hover{transform:translateY(-2px)}.btn-primary:active,.btn-ghost:active{transform:translateY(1px) scale(.99)}.btn-primary:disabled{opacity:.72}.chip-row{margin-top:18px;display:flex;flex-wrap:wrap;gap:10px}.chip-row span{display:inline-flex;align-items:center;gap:7px;border-radius:999px;border:1px solid var(--glass-stroke);background:color-mix(in srgb,var(--card-bg) 84%,transparent);backdrop-filter:blur(12px) saturate(120%);-webkit-backdrop-filter:blur(12px) saturate(120%);padding:7px 12px;font-size:.89rem}.hero-panel{border:1px solid var(--glass-stroke);border-radius:24px;background:linear-gradient(140deg,color-mix(in srgb,var(--glass-highlight) 48%,transparent),transparent 42%),var(--card-bg);backdrop-filter:blur(18px) saturate(126%);-webkit-backdrop-filter:blur(18px) saturate(126%);box-shadow:var(--shadow);padding:22px}.hero-panel h3{margin-top:0;margin-bottom:12px;font-family:Space Grotesk,sans-serif}.hero-photo-wrap{margin-bottom:14px}.hero-photo{width:100%;max-height:340px;object-fit:cover;object-position:top center;border-radius:16px;border:1px solid var(--line)}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stat-grid article{border-radius:12px;border:1px solid var(--glass-stroke);background:color-mix(in srgb,var(--card-bg) 82%,transparent);backdrop-filter:blur(14px) saturate(120%);-webkit-backdrop-filter:blur(14px) saturate(120%);padding:13px}.stat-grid strong{font-family:Space Grotesk,sans-serif;font-size:1.2rem}.stat-grid p{margin:4px 0 0;color:var(--ink-soft);font-size:.84rem}.section-block{padding:64px 0 18px}.section-head{margin-bottom:20px}.section-label{margin:0;color:var(--ink);font-size:.78rem;font-weight:800;letter-spacing:.35px;text-transform:uppercase}.section-head h2{margin:6px 0 0;font-family:Space Grotesk,sans-serif;font-size:clamp(1.45rem,4vw,2.2rem)}.card{border:1px solid var(--glass-stroke);border-radius:18px;background:linear-gradient(132deg,color-mix(in srgb,var(--glass-highlight) 48%,transparent),transparent 45%),var(--card-bg);backdrop-filter:blur(18px) saturate(125%);-webkit-backdrop-filter:blur(18px) saturate(125%);box-shadow:var(--shadow);transition:transform .26s ease,border-color .26s ease}.card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--ink) 30%,var(--line))}.about-layout{display:grid;grid-template-columns:1.2fr 1fr;gap:16px}.about-layout .card,.timeline-item,.skill-card,.project-card,.contact-form,.contact-info{padding:20px}.card h3{margin-top:0;font-family:Space Grotesk,sans-serif}.card ul{margin:12px 0 0;padding-left:18px;color:var(--ink-soft)}.card li{margin-bottom:10px}.meta-line{display:inline-flex;align-items:center;gap:8px;margin:0;font-size:.86rem;font-weight:700;color:color-mix(in srgb,var(--ink) 72%,var(--surface))}.timeline{display:grid;gap:14px}.timeline-item h4{margin:10px 0 4px}.timeline-item p{margin:0;color:var(--ink-soft)}.timeline-item small{color:var(--ink-soft);font-weight:700}.timeline.compact .timeline-item{padding:12px;border-radius:12px;border:1px solid var(--glass-stroke);background:color-mix(in srgb,var(--card-bg) 78%,transparent);backdrop-filter:blur(12px) saturate(120%);-webkit-backdrop-filter:blur(12px) saturate(120%);box-shadow:none}.skills-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.skill-card h3{text-transform:capitalize}.skill-tags,.stack-tags{display:flex;flex-wrap:wrap;gap:9px}.skill-tags span,.stack-tags span{border:1px solid var(--glass-stroke);border-radius:999px;background:color-mix(in srgb,var(--card-bg) 78%,transparent);backdrop-filter:blur(10px) saturate(118%);-webkit-backdrop-filter:blur(10px) saturate(118%);padding:6px 11px;font-size:.83rem}.projects-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.project-card{transition:transform .24s ease,box-shadow .24s ease}.project-card:hover{transform:translateY(-6px);box-shadow:0 20px 32px #0c0c0c38}.project-topline{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.project-topline p{margin:0;color:var(--ink-soft);font-weight:700;font-size:.8rem}.project-topline a{display:inline-flex;align-items:center;gap:5px;border-radius:999px;border:1px solid var(--glass-stroke);background:color-mix(in srgb,var(--card-bg) 72%,transparent);backdrop-filter:blur(10px) saturate(118%);-webkit-backdrop-filter:blur(10px) saturate(118%);padding:5px 10px;font-size:.8rem}.project-card h3{margin-bottom:8px}.project-card p{color:var(--ink-soft);min-height:80px}.contact-layout{display:grid;grid-template-columns:1fr 1.1fr;gap:14px;padding-bottom:60px}.contact-info p{color:var(--ink-soft)}.direct-mail{margin-top:6px;margin-bottom:14px}.direct-mail a{color:var(--ink);font-weight:800}.contact-form{display:flex;flex-direction:column;gap:8px}.contact-form label{font-size:.88rem;font-weight:800}.contact-form input,.contact-form textarea{border:1px solid var(--glass-stroke);border-radius:10px;padding:11px 12px;font:inherit;color:var(--ink);background:color-mix(in srgb,var(--card-bg) 86%,transparent);backdrop-filter:blur(8px) saturate(120%);-webkit-backdrop-filter:blur(8px) saturate(120%);transition:border-color .24s ease,box-shadow .24s ease}.contact-form input:focus,.contact-form textarea:focus{outline:none;border-color:color-mix(in srgb,var(--ink) 58%,var(--line));box-shadow:0 0 0 3px #11111121}.form-message{margin:0;font-size:.87rem;font-weight:700}.form-message.success{color:#14714f}.form-message.error{color:#bf283d}.footer{border-top:1px solid var(--line);background:color-mix(in srgb,var(--surface) 88%,transparent)}.footer-inner{min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--ink-soft);font-size:.9rem}.footer a{display:inline-flex;align-items:center;gap:8px;color:var(--ink)}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-42%)}}@keyframes orbFloat{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(14px) scale(1.04)}}@keyframes lazyShimmer{0%{background-position:100% 0}to{background-position:0 0}}@media(max-width:1060px){.theme-pill{display:none}.hero-grid,.about-layout,.projects-grid,.contact-layout,.skills-layout{grid-template-columns:1fr}.project-card p{min-height:auto}.themed-section:before{inset:10px 1%}}@media(max-width:760px){.topbar-inner{min-height:68px;padding:8px 0}.desktop-nav,.theme-pill,.top-actions .github-btn{display:none}.hamburger-btn{display:inline-flex}.hero-section{padding-top:44px}.name-loop-track{font-size:clamp(1.86rem,10.6vw,2.68rem)}.hero-cta{flex-direction:column;align-items:stretch}.stat-grid{grid-template-columns:1fr}.footer-inner{min-height:56px;flex-direction:column;justify-content:center;align-items:flex-start;padding:12px 0}}
