:root{--sans:"Segoe UI", "Frutiger", "Frutiger Linotype", "Helvetica Neue", system-ui, "Roboto", Arial, sans-serif;--mono:ui-monospace, "Consolas", "Segoe UI Mono", monospace;--sky-deep:#0a63bd;--sky-mid:#2a92db;--sky-low:#62c1ea;--sky-glow:#b7ecff;--aqua:#17c3d6;--spring:#7ed957;--grass:#3fae4a;--ink:#0c3355;--ink-soft:#2e6690;--ink-white:#fffffff5;--glass-fill:linear-gradient(to bottom, #ffffffb8, #ffffff6b);--glass-edge:#ffffffbf;--glass-shadow:0 10px 34px #0b4a8447;--glass-inner:inset 0 1px 0 #fffffff2, inset 0 -1px 0 #609ecd47;--gel-blue:linear-gradient(to bottom, #7fd6ff 0%, #33a7f0 48%, #1a86dd 52%, #0f6bc2 100%);--gel-green:linear-gradient(to bottom, #baf29a 0%, #79d158 48%, #57b93c 52%, #3f9a2c 100%);--radius-card:18px;--radius-pill:999px;--ease-out-expo:cubic-bezier(.16, 1, .3, 1);--duration-reveal:.7s;font:17px/1.6 var(--sans);color:var(--ink);background:var(--sky-mid);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}*,:before,:after{box-sizing:border-box}html,body{background:var(--sky-mid);min-height:100%;margin:0}body{background:radial-gradient(120% 80% at 50% -10%, #ffffff8c 0%, #fff0 45%), linear-gradient(to bottom, var(--sky-deep) 0%, var(--sky-mid) 34%, var(--sky-low) 70%, var(--sky-glow) 100%);background-attachment:fixed}h1,h2,h3{color:var(--ink);letter-spacing:-.01em;margin:0;font-weight:700}p{margin:0}ul{margin:0;padding:0}a{color:#0a6fd0;text-decoration:none}.aero-glass{background:var(--glass-fill);-webkit-backdrop-filter:blur(18px)saturate(180%);border:1px solid var(--glass-edge);border-radius:var(--radius-card);box-shadow:var(--glass-shadow), var(--glass-inner);position:relative}.aero-glass:before{content:"";border-radius:var(--radius-card) var(--radius-card) 50% 50% / var(--radius-card) var(--radius-card) 26px 26px;pointer-events:none;background:linear-gradient(#fff9,#fff0);height:46%;position:absolute;top:0;left:0;right:0}.gel{border-radius:var(--radius-pill);background:var(--gel-blue);color:#fff;font-family:var(--sans);text-shadow:0 1px 1px #002a5273;cursor:pointer;transition:transform .15s var(--ease-out-expo), box-shadow .15s, filter .15s;border:1px solid #fff9;justify-content:center;align-items:center;gap:8px;font-weight:600;display:inline-flex;position:relative;overflow:hidden;box-shadow:0 4px 10px #094a8759,inset 0 1px #ffffffd9,inset 0 -6px 12px #063c6e47}.gel:before{content:"";border-radius:var(--radius-pill);pointer-events:none;background:linear-gradient(#ffffffe6,#ffffff1f);height:42%;position:absolute;top:3px;left:5px;right:5px}.gel:hover{filter:brightness(1.06);transform:translateY(-1px);box-shadow:0 7px 16px #094a876b,inset 0 1px #ffffffe6,inset 0 -6px 12px #063c6e47}.gel:active{filter:brightness(.96);transform:translateY(1px);box-shadow:0 2px 6px #094a8766,inset 0 2px 6px #062e5866}.gel--green{background:var(--gel-green)}.reveal{opacity:0;transition:opacity var(--duration-reveal) var(--ease-out-expo), transform var(--duration-reveal) var(--ease-out-expo);transform:translateY(22px)}.reveal.is-visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}}.section{max-width:1080px;margin:0 auto;padding:56px 48px}.section-heading{letter-spacing:-.02em;color:#fff;text-shadow:0 1px #062c5459,0 2px 10px #06346466;align-items:center;gap:14px;margin-bottom:36px;font-size:34px;font-weight:800;display:flex}.section-heading:before{content:"";background:radial-gradient(circle at 34% 30%, #fffffff2 0%, #fff3 40%, #fff0 55%), var(--gel-green);border:1px solid #ffffffb3;border-radius:50%;flex-shrink:0;width:16px;height:16px;box-shadow:0 2px 6px #094a3c66,inset 0 1px #fffc}@media (width<=600px){.section{padding:44px 24px}.section-heading{font-size:27px}}.aero-bg{z-index:-1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.aero-sun{background:radial-gradient(circle,#ffffff8c 0%,#d2f0ff47 34%,#fff0 68%);width:90vh;height:90vh;position:absolute;top:-14vh;left:50%;transform:translate(-50%)}.aero-cloud{filter:blur(6px);opacity:.8;will-change:transform;background:radial-gradient(circle at 50% 45%,#fffffff2,#fff6 60%,#fff0 72%);border-radius:50%;position:absolute}.aero-cloud--1{width:340px;height:120px;animation:90s linear infinite aero-drift;top:12%}.aero-cloud--2{opacity:.6;width:240px;height:90px;animation:120s linear -40s infinite aero-drift;top:30%}.aero-cloud--3{opacity:.5;width:180px;height:70px;animation:150s linear -90s infinite aero-drift;top:6%}@keyframes aero-drift{0%{transform:translate(-30vw)}to{transform:translate(130vw)}}.aero-bubbles{position:absolute;inset:0}.aero-bubble{opacity:0;will-change:transform, opacity;background:radial-gradient(circle at 32% 28%,#fffffff2 0%,#ffffff40 18%,#fff0 42%),radial-gradient(circle at 68% 78%,#7ed9e880 0%,#7ed9e800 55%);border:1px solid #ffffff8c;border-radius:50%;animation-name:aero-rise;animation-timing-function:ease-in;animation-iteration-count:infinite;position:absolute;bottom:-120px;box-shadow:inset 0 0 12px #fff9,0 0 10px #92d8ff66}@keyframes aero-rise{0%{opacity:0;transform:translateY(0)translate(0)scale(.6)}12%{opacity:.85}50%{transform:translateY(-55vh)translate(24px)scale(1)}88%{opacity:.7}to{opacity:0;transform:translateY(-112vh)translate(-16px)scale(1.08)}}.aero-grass{background:radial-gradient(120% 90% at 20% 120%,#7fd9578c 0%,#7fd95700 60%),radial-gradient(120% 90% at 85% 130%,#3fae4a80 0%,#3fae4a00 62%),linear-gradient(#58be5c00 0%,#58be5c59 100%);height:34vh;position:absolute;bottom:0;left:0;right:0}@media (prefers-reduced-motion:reduce){.aero-cloud,.aero-bubble{animation:none}.aero-bubble{opacity:.5}}.nav{z-index:100;border-radius:var(--radius-pill);-webkit-backdrop-filter:blur(16px)saturate(180%);background:linear-gradient(#ffffffd1,#e9f6ff8c);border:1px solid #fffc;transition:box-shadow .25s,top .25s;position:fixed;top:14px;left:50%;transform:translate(-50%);box-shadow:0 6px 22px #0b4a8440,inset 0 1px #fffffff2,inset 0 -3px 8px #78afdc40}.nav:before{content:"";border-radius:var(--radius-pill);pointer-events:none;background:linear-gradient(#ffffffd9,#fff0);height:44%;position:absolute;top:2px;left:6px;right:6px}.nav--scrolled{box-shadow:0 10px 30px #0b4a8459,inset 0 1px #fffffff2,inset 0 -3px 8px #78afdc40}.nav-links{align-items:center;gap:6px;height:46px;padding:0 8px;list-style:none;display:flex;position:relative}.nav-link{letter-spacing:.04em;color:var(--ink-soft);border-radius:var(--radius-pill);border:1px solid #0000;padding:7px 18px;font-size:13px;font-weight:600;text-decoration:none;transition:color .15s,background .15s,box-shadow .15s;display:block}.nav-link:hover{color:var(--ink);background:#fff9;box-shadow:inset 0 1px #ffffffe6}.nav-link--active,.nav-link--active:hover{color:#fff;background:var(--gel-blue);text-shadow:0 1px 1px #002a5273;border:1px solid #fff9;box-shadow:inset 0 1px #ffffffd9,inset 0 -5px 10px #063c6e47,0 2px 6px #094a874d}@media (width<=600px){.nav{border-radius:var(--radius-card);top:8px;left:8px;right:8px;transform:none}.nav:before{border-radius:var(--radius-card)}.nav-links{justify-content:center;gap:2px;padding:0 4px}.nav-link{padding:7px 12px;font-size:12px}}.carousel-wrapper{width:100%}.carousel{border-radius:var(--radius-card);background:linear-gradient(#ffffffe6,#def2ff99);border:1px solid #ffffffd9;padding:9px;position:relative;overflow:hidden;box-shadow:0 16px 40px #093c7059,inset 0 1px #fffffff2,inset 0 -2px 6px #78afdc4d}.carousel:after{content:"";pointer-events:none;z-index:3;background:linear-gradient(#fff6,#fff0);border-radius:12px 12px 40% 40%/12px 12px 24px 24px;height:34%;position:absolute;top:9px;left:9px;right:9px}.carousel-viewport{z-index:1;border-radius:11px;position:relative;overflow:hidden}.carousel-track{transition:transform .5s var(--ease-out-expo);display:flex}.carousel-slide{aspect-ratio:1;min-width:100%}.carousel-slide img{object-fit:cover;width:100%;height:100%;display:block}.carousel-placeholder{width:100%;height:100%;color:var(--ink-soft);background:#fff6;justify-content:center;align-items:center;font-size:14px;display:flex}.carousel-btn{z-index:4;background:var(--gel-blue);color:#fff;cursor:pointer;text-shadow:0 1px 1px #002a5280;width:40px;height:40px;transition:transform .15s var(--ease-out-expo), filter .15s;border:1px solid #fff9;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:22px;line-height:1;display:flex;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 4px 10px #094a8766,inset 0 1px #ffffffd9,inset 0 -5px 10px #063c6e4d}.carousel-btn:hover{filter:brightness(1.08);transform:translateY(-50%)scale(1.08)}.carousel-btn:active{filter:brightness(.95);transform:translateY(-50%)scale(.96)}.carousel-prev{left:16px}.carousel-next{right:16px}.carousel-dots{justify-content:center;gap:9px;margin-top:16px;display:flex}.carousel-dot{cursor:pointer;background:radial-gradient(circle at 35% 30%,#ffffffe6,#ffffff40 55%,#ffffff26);border:1px solid #ffffffb3;border-radius:50%;width:11px;height:11px;padding:0;transition:transform .2s,background .2s;box-shadow:0 1px 3px #093c7059}.carousel-dot.active{background:var(--gel-blue);transform:scale(1.25);box-shadow:0 2px 6px #094a8780,inset 0 1px #fffc}.about{padding-top:148px;padding-bottom:104px}.about-content{align-items:center;gap:64px;display:flex}.about-text{flex:0 0 440px;min-width:0}.about-carousel{flex:1;min-width:0}.about h1{letter-spacing:-.03em;background:linear-gradient(#fff 0%,#eaf7ff 44%,#c8ecff 56%,#fff 100%);color:#0000;filter:drop-shadow(0 2px 1px #042c5473)drop-shadow(0 6px 16px #06346466);-webkit-background-clip:text;background-clip:text;height:100px;margin-bottom:16px;font-size:72px;font-weight:800;line-height:1.02}.about-title{color:var(--ink-white);text-shadow:0 1px 2px #062c548c;margin-bottom:26px;font-size:22px;font-weight:600}.about-bio{color:#fffffff0;text-shadow:0 1px 2px #062c5480;max-width:460px;margin-bottom:32px;font-size:18px;line-height:1.72}.about-bio-link{color:#eafaff;text-underline-offset:3px;margin-left:8px;font-weight:600;-webkit-text-decoration:underline #ffffffb3;text-decoration:underline #ffffffb3;transition:color .15s,text-decoration-color .15s}.about-bio-link:hover{color:#fff;text-decoration-color:#fff}.about-links{flex-wrap:wrap;gap:12px;display:flex}.about-links a{letter-spacing:.02em;color:var(--ink);border-radius:var(--radius-pill);transition:transform .15s var(--ease-out-expo), box-shadow .15s, color .15s;background:linear-gradient(#ffffffe6,#ffffff8c);border:1px solid #ffffffd9;padding:9px 20px;font-size:14px;font-weight:600;text-decoration:none;position:relative;overflow:hidden;box-shadow:0 4px 12px #093c7047,inset 0 1px #fffffff2}.about-links a:before{content:"";border-radius:var(--radius-pill);pointer-events:none;background:linear-gradient(#ffffffe6,#fff0);height:44%;position:absolute;top:2px;left:4px;right:4px}.about-links a:hover{color:#0a5aa8;transform:translateY(-2px);box-shadow:0 8px 18px #093c7061,inset 0 1px #fffffff2,0 0 0 3px #ffffff59}@media (width<=900px){.about-content{flex-direction:column}.about-text,.about-carousel{flex:none;width:100%}.about-bio{max-width:none}}@media (width<=600px){.about{padding-top:120px}.about h1{font-size:50px}}.blog-card{background:var(--glass-fill);-webkit-backdrop-filter:blur(18px)saturate(180%);border:1px solid var(--glass-edge);box-shadow:var(--glass-shadow), var(--glass-inner);border-radius:var(--radius-card);text-align:center;padding:52px;position:relative;overflow:hidden}.blog-card:before{content:"";border-radius:var(--radius-card) var(--radius-card) 50% 50% / var(--radius-card) var(--radius-card) 30px 30px;pointer-events:none;background:linear-gradient(#ffffff8c,#fff0);height:46%;position:absolute;top:0;left:0;right:0}.blog-sub{color:var(--ink);max-width:620px;margin:0 auto 30px;font-size:17px;line-height:1.7;position:relative}.blog-cta{color:#fff;text-shadow:0 1px 1px #002a5273;border-radius:var(--radius-pill);background:var(--gel-blue);transition:transform .15s var(--ease-out-expo), filter .15s;border:1px solid #fff9;align-items:center;gap:8px;padding:12px 28px;font-size:15px;font-weight:700;text-decoration:none;display:inline-flex;position:relative;overflow:hidden;box-shadow:0 5px 12px #094a8761,inset 0 1px #ffffffd9,inset 0 -6px 12px #063c6e47}.blog-cta:before{content:"";border-radius:var(--radius-pill);pointer-events:none;background:linear-gradient(#ffffffe0,#ffffff1f);height:42%;position:absolute;top:3px;left:5px;right:5px}.blog-cta:hover{filter:brightness(1.07);transform:translateY(-2px)}.blog-cta:active{filter:brightness(.96);transform:translateY(1px)}.contact-card{background:var(--glass-fill);-webkit-backdrop-filter:blur(18px)saturate(180%);border:1px solid var(--glass-edge);box-shadow:var(--glass-shadow), var(--glass-inner);border-radius:var(--radius-card);text-align:center;padding:52px;position:relative;overflow:hidden}.contact-card:before{content:"";border-radius:var(--radius-card) var(--radius-card) 50% 50% / var(--radius-card) var(--radius-card) 30px 30px;pointer-events:none;background:linear-gradient(#ffffff80,#fff0);height:40%;position:absolute;top:0;left:0;right:0}.contact-bio{color:var(--ink);max-width:580px;margin:0 auto 40px;font-size:18px;line-height:1.7;position:relative}.contact-form{text-align:left;flex-direction:column;gap:20px;max-width:480px;margin:0 auto;display:flex;position:relative}.contact-field{flex-direction:column;gap:7px;display:flex}.contact-field label{letter-spacing:.02em;color:var(--ink-soft);font-size:13px;font-weight:700}.contact-field input,.contact-field textarea{box-sizing:border-box;width:100%;font-size:16px;font-family:var(--sans);color:var(--ink);resize:vertical;background:#ffffffb3;border:1px solid #ffffffd9;border-radius:12px;outline:none;padding:11px 14px;transition:border-color .15s,box-shadow .15s,background .15s;box-shadow:inset 0 2px 5px #093c702e,inset 0 1px #fff9}.contact-field input::placeholder,.contact-field textarea::placeholder{color:#2e669099}.contact-field input:focus,.contact-field textarea:focus{background:#ffffffe6;border-color:#4fb3ec;box-shadow:inset 0 2px 5px #093c7026,0 0 0 3px #4fb3ec59}.contact-submit-btn{color:#fff;font-size:15px;font-weight:700;font-family:var(--sans);text-shadow:0 1px 1px #002a5273;border-radius:var(--radius-pill);cursor:pointer;background:var(--gel-blue);transition:transform .15s var(--ease-out-expo), filter .15s;border:1px solid #fff9;align-self:flex-start;padding:11px 26px;position:relative;overflow:hidden;box-shadow:0 5px 12px #094a8761,inset 0 1px #ffffffd9,inset 0 -6px 12px #063c6e47}.contact-submit-btn:before{content:"";border-radius:var(--radius-pill);pointer-events:none;background:linear-gradient(#ffffffe0,#ffffff1f);height:42%;position:absolute;top:3px;left:5px;right:5px}.contact-submit-btn:hover:not(:disabled){filter:brightness(1.07);transform:translateY(-1px)}.contact-submit-btn:active:not(:disabled){filter:brightness(.96);transform:translateY(1px)}.contact-submit-btn:disabled{opacity:.6;cursor:default}.contact-status{margin:0;font-size:15px;font-weight:600;position:relative}.contact-status--success{color:var(--grass)}.contact-status--error{color:#c23a3a}.experience-list{flex-direction:column;gap:40px;display:flex}.experience-item{border-left:2px solid #c5b49a;padding-left:24px}.experience-meta{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px;margin-bottom:4px;display:flex}.experience-company{color:#2c4a2e;font-size:18px;font-weight:600}.experience-period{color:#8a6a4a;font-size:16px}.experience-title{color:#8a6a4a;margin-bottom:12px;font-size:17px}.experience-bullets{flex-direction:column;gap:6px;padding-left:18px;list-style:outside;display:flex}.experience-bullets li{font-size:17px;line-height:1.6}.project{border-radius:var(--radius-card);background:var(--glass-fill);-webkit-backdrop-filter:blur(18px)saturate(180%);border:1px solid var(--glass-edge);box-shadow:var(--glass-shadow), var(--glass-inner);margin-bottom:40px;padding:34px;position:relative}.project:before{content:"";border-radius:var(--radius-card) var(--radius-card) 50% 50% / var(--radius-card) var(--radius-card) 26px 26px;pointer-events:none;background:linear-gradient(#ffffff8c,#fff0);height:42%;position:absolute;top:0;left:0;right:0}.project-name{color:var(--ink);align-items:center;gap:16px;margin-bottom:16px;font-size:22px;font-weight:700;display:flex;position:relative}.project-name:after{content:"";border-top:1px solid #ffffffb3;flex:1;box-shadow:0 1px #609ecd4d}.project-tech-pills{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex;position:relative}.project-pill{color:#0a5089;border-radius:var(--radius-pill);background:linear-gradient(#fffffff2 0%,#d6f0ffd9 50%,#b4e0fad9 100%);border:1px solid #ffffffe6;padding:5px 15px;font-size:13px;font-weight:600;transition:transform .15s,box-shadow .15s;position:relative;overflow:hidden;box-shadow:0 2px 5px #093c7033,inset 0 1px #fffffff2}.project-pill:before{content:"";border-radius:var(--radius-pill);pointer-events:none;background:linear-gradient(#ffffffe6,#fff0);height:46%;position:absolute;top:1px;left:3px;right:3px}.project-pill:hover{transform:translateY(-1px);box-shadow:0 4px 9px #093c7047,inset 0 1px #fffffff2}.project-description{color:var(--ink);max-width:720px;margin-bottom:26px;font-size:16px;line-height:1.72;position:relative}.project-video-wrapper{border-radius:var(--radius-card);background:#000;position:relative;overflow:hidden;box-shadow:0 0 0 1px #fff9,0 8px 28px #093c704d}.project-video{width:100%;display:block}.project-actions{flex-wrap:wrap;gap:12px;display:flex;position:relative}.project-github-btn{color:#fff;text-shadow:0 1px 1px #002a5273;border-radius:var(--radius-pill);background:var(--gel-blue);transition:transform .15s var(--ease-out-expo), filter .15s;border:1px solid #fff9;align-items:center;gap:8px;padding:9px 20px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex;position:relative;overflow:hidden;box-shadow:0 4px 10px #094a8759,inset 0 1px #ffffffd9,inset 0 -5px 10px #063c6e47}.project-github-btn:before{content:"";border-radius:var(--radius-pill);pointer-events:none;background:linear-gradient(#ffffffd9,#ffffff1a);height:42%;position:absolute;top:2px;left:5px;right:5px}.project-github-btn:hover{filter:brightness(1.07);transform:translateY(-1px)}.project-github-btn:active{filter:brightness(.96);transform:translateY(1px)}.project-actions .project-github-btn:last-child:not(:only-child){background:var(--gel-green)}.project-github-icon{flex-shrink:0;width:18px;height:18px;position:relative}
