:root{color-scheme:dark;--text:#f5f4fb;--muted:#c1c1d2;--subtle:#a4a5bd;--violet:#c1b6ff;--cyan:#a6edff;--pink:#ffc4e6;--line:rgba(255,255,255,.24);--glass:rgba(255,255,255,.09)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;color:var(--text);font-family:Manrope, sans-serif;-webkit-font-smoothing:antialiased;background:radial-gradient(ellipse at 12% 4%,rgba(101,175,225,.25),transparent 34rem),radial-gradient(ellipse at 86% 27%,rgba(160,118,236,.28),transparent 38rem),radial-gradient(ellipse at 45% 100%,rgba(72,133,181,.2),transparent 40rem),linear-gradient(145deg,#252b42,#171a2c 58%,#22213a);background-attachment:fixed}body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.12;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.18'/%3E%3C/svg%3E");z-index:5}a{color:inherit;text-decoration:none}.page-shell{width:min(100% - 3rem,76rem);margin:auto;position:relative;z-index:1}.site-header{height:4.4rem;margin-top:1.25rem;padding:0 .8rem 0 1rem;display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:1.5rem;background:linear-gradient(135deg,rgba(255,255,255,.2),rgba(255,255,255,.045) 50%,rgba(175,190,255,.09));backdrop-filter:blur(30px) saturate(180%);-webkit-backdrop-filter:blur(30px) saturate(180%);box-shadow:inset 0 1px rgba(255,255,255,.52),inset 0 -1px rgba(255,255,255,.08),0 1rem 3rem rgba(6,10,30,.25)}.brand{display:flex;align-items:center;gap:.65rem;font-size:.94rem;font-weight:800;letter-spacing:-.03em}.brand-mark{display:grid;place-items:center;width:1.8rem;height:1.8rem;color:#28283c;background:linear-gradient(145deg,#fff,#c4dfff 45%,#c6b9ff);border:1px solid rgba(255,255,255,.8);border-radius:.65rem;font-size:.88rem;box-shadow:inset 0 1px #fff,0 3px 12px #b3b9ff55}.site-nav{display:flex;gap:1.8rem;align-items:center;font-size:.76rem;color:var(--muted)}.nav-link{transition:color .2s}.nav-link:hover,.nav-link.is-active{color:white}.nav-link--github{color:var(--violet)}.nav-link span{margin-left:.2rem}.hero{padding:7rem 0 8rem}.hero-copy{max-width:52rem}.eyebrow{margin:0 0 1.25rem;color:var(--subtle);font-family:'DM Mono',monospace;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}.status-dot{display:inline-block;width:.42rem;height:.42rem;margin-right:.5rem;border-radius:50%;background:#a7e9c5;box-shadow:0 0 0 .25rem #a7e9c514}h1,h2,h3,p{margin-top:0}h1,h2{margin-bottom:1.5rem;font-weight:600;letter-spacing:-.075em;line-height:.98}h1{max-width:48rem;font-size:clamp(3.8rem,8vw,7rem)}h2{font-size:clamp(2.5rem,5vw,4.4rem)}em{color:var(--violet);font-style:normal}.hero-intro{max-width:39rem;color:var(--muted);font-size:1rem;line-height:1.8}.hero-actions{display:flex;align-items:center;gap:1.5rem;margin-top:2.3rem}.button{display:inline-flex;gap:1.1rem;align-items:center;border:1px solid rgba(255,255,255,.44);border-radius:10rem;padding:.85rem 1.05rem .85rem 1.25rem;font-size:.72rem;font-weight:700;transition:transform .2s,background .2s;backdrop-filter:blur(22px) saturate(170%);box-shadow:inset 0 1px #ffffff66,0 8px 22px #10142a55}.button:hover{transform:translateY(-2px)}.button--primary{background:linear-gradient(135deg,#e6ddff66,#8cbaff35 55%,#fff2)}.button--primary span{font-size:1rem}.text-link{color:var(--muted);font-size:.72rem}.text-link:hover{color:white}.text-link span{color:var(--violet);margin-left:.35rem;font-size:1rem}.work-section{padding:4.5rem 0 7rem;border-top:1px solid var(--line)}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:2.5rem}.section-heading h2{margin-bottom:0}.project-card{position:relative;display:grid;grid-template-columns:1.45fr 1fr;min-height:25rem;overflow:hidden;border:1px solid rgba(255,255,255,.3);border-radius:2rem;background:linear-gradient(135deg,rgba(255,255,255,.18),rgba(255,255,255,.055) 45%,rgba(151,178,255,.1));backdrop-filter:blur(34px) saturate(175%);-webkit-backdrop-filter:blur(34px) saturate(175%);box-shadow:inset 0 1px rgba(255,255,255,.48),inset 0 -1px rgba(255,255,255,.08),0 1.5rem 4rem rgba(5,8,25,.26);transition:transform .25s,border-color .25s}.project-card:before{content:"";position:absolute;inset:1px 1px auto;height:45%;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.13),transparent);pointer-events:none}.project-card:hover{border-color:rgba(220,215,255,.65);transform:translateY(-4px)}.project-preview{position:relative;display:grid;place-items:center;overflow:hidden;min-height:25rem;background:radial-gradient(ellipse at 25% 20%,#eac7ff99,transparent 45%),radial-gradient(ellipse at 80% 80%,#8be9ff77,transparent 40%),linear-gradient(135deg,#c5c8eb44,#a8e3ee33)}.project-preview:after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,#ffffff26,transparent 42%,#d5c5ff22);pointer-events:none}.preview-window{position:relative;width:76%;height:72%;min-height:15rem;overflow:hidden;border:1px solid #fff9;border-radius:1.2rem;background:linear-gradient(145deg,#e9f6f8e8,#cbddebd9 55%,#dfd1e9e8);color:#33394b;box-shadow:inset 0 1px #fff,0 1.5rem 3rem #212b4b55;transform:rotate(-3deg)}.preview-topbar{height:2rem;display:flex;align-items:center;gap:.28rem;padding:0 .75rem;border-bottom:1px solid #64728a33;font-size:.55rem;background:linear-gradient(#ffffffb8,#ffffff55)}.preview-topbar span{width:.4rem;height:.4rem;border-radius:50%;background:#f5a7b1}.preview-topbar span:nth-child(2){background:#f2d28d}.preview-topbar span:nth-child(3){background:#9bd8ad}.preview-topbar b{margin-left:auto;color:#69728a;font-weight:500}.preview-content{position:absolute;top:32%;left:10%;z-index:1}.preview-kicker{display:block;margin-bottom:.65rem;color:#747e94;font-size:.48rem;text-transform:uppercase;letter-spacing:.1em}.preview-title{display:block;font-size:clamp(1.4rem,3vw,2.25rem);font-weight:700;line-height:.92;letter-spacing:-.07em}.preview-title i{color:#a77592;font-style:normal}.preview-line{display:block;width:5rem;height:.18rem;margin:1rem 0;border-radius:1rem;background:#ad7d9a}.preview-chip{display:inline-block;padding:.38rem .55rem;border:1px solid #ffffff66;border-radius:1rem;background:linear-gradient(135deg,#fff9,#ffffff45);color:#4a4b63;font-size:.45rem;box-shadow:inset 0 1px #fff}.preview-orb{position:absolute;width:9rem;height:9rem;top:25%;right:-2rem;border:1px solid #ffffff99;border-radius:50%;background:radial-gradient(circle at 30% 25%,#fff9,#f8d6bbcc 24%,#bf8e9acc 70%,#8b647188);box-shadow:inset -12px -14px 24px #815f7a44,0 10px 30px #6f617544}.project-info{position:relative;display:flex;flex-direction:column;justify-content:space-between;padding:2.4rem;border-left:1px solid #ffffff21;background:linear-gradient(135deg,#ffffff10,transparent 65%)}.project-number{color:var(--muted);font-family:'DM Mono',monospace;font-size:.65rem}.project-info h3{margin:2.4rem 0 .7rem;font-size:2.3rem;letter-spacing:-.07em}.project-description{max-width:18rem;color:var(--muted);font-size:.8rem;line-height:1.7}.project-meta{display:flex;align-items:center;gap:1rem;color:var(--muted);font-family:'DM Mono',monospace;font-size:.58rem}.project-meta span:nth-child(2){color:var(--violet)}.project-arrow{margin-left:auto;color:white;font-size:1.2rem}.site-footer{display:flex;justify-content:space-between;gap:1rem;padding:1.5rem 0 2rem;border-top:1px solid var(--line);color:var(--subtle);font-family:'DM Mono',monospace;font-size:.58rem}.site-footer a{color:var(--muted)}
@media(max-width:700px){.page-shell{width:min(100% - 2rem,40rem)}.site-header{height:4.2rem;margin-top:.75rem;padding:0 .65rem}.site-nav{gap:.8rem;font-size:.65rem}.nav-link--github{display:none}.hero{padding:5rem 0 5.5rem}.hero h1{font-size:clamp(3.5rem,16vw,5.4rem)}.hero-intro{font-size:.9rem}.section-heading{display:block}.section-heading .text-link{display:inline-block;margin-top:1.5rem}.work-section{padding:3.5rem 0 5rem}.project-card{display:block}.project-preview{min-height:18rem}.preview-window{width:80%;height:75%;min-height:14rem}.project-info{min-height:17rem;padding:1.6rem;border-left:0;border-top:1px solid #ffffff2e}.project-info h3{margin-top:1.5rem}.site-footer{flex-wrap:wrap}.site-footer span:nth-child(2){display:none}}
.hero{min-height:36rem;display:grid;grid-template-columns:1.05fr .95fr;gap:4rem;align-items:center;padding:5.5rem 0 6rem}.hero-art{min-height:25rem;position:relative}.orb{position:absolute;border-radius:50%;filter:blur(1px)}.orb--violet{width:14rem;height:14rem;top:2rem;left:6%;background:radial-gradient(circle at 35% 30%,#e5c9ff,#a99bff 48%,#6852c8);opacity:.95}.orb--cyan{width:11rem;height:11rem;right:5%;bottom:1rem;background:radial-gradient(circle at 35% 30%,#dcfbff,#8edcf0 48%,#5c9bc9);opacity:.9}.glass-shape{position:absolute;border:1px solid rgba(255,255,255,.34);background:linear-gradient(140deg,rgba(255,255,255,.28),rgba(255,255,255,.045) 48%,rgba(172,158,255,.12));backdrop-filter:blur(28px) saturate(170%);-webkit-backdrop-filter:blur(28px) saturate(170%);box-shadow:0 1.5rem 4rem rgba(0,0,0,.25),inset 0 1px rgba(255,255,255,.45),inset 0 -1px rgba(255,255,255,.08);transform:rotate(-13deg)}.glass-shape--back{width:16rem;height:10rem;top:7rem;right:8%;border-radius:2rem;transform:rotate(12deg)}.glass-shape--front{width:15rem;height:14rem;top:5.5rem;left:15%;display:flex;flex-direction:column;justify-content:space-between;padding:1.4rem;border-radius:2.5rem;transform:rotate(-13deg)}.shape-label{color:#ffffffa6;font-family:'DM Mono',monospace;font-size:.6rem;text-transform:uppercase}.glass-shape--front strong{font-size:1.3rem;line-height:1.05;letter-spacing:-.06em}.glass-shape--front strong b,.glass-shape--front strong i{color:var(--cyan);font-style:normal}.shape-arrow{align-self:flex-end;color:var(--pink);font-family:'DM Mono',monospace;font-size:.75rem}.hero-art{isolation:isolate}
@media(max-width:700px){.hero{display:block;padding:4.2rem 0 5rem}.hero-art{min-height:20rem;margin-top:3rem}.orb--violet{width:11rem;height:11rem}.orb--cyan{width:8.5rem;height:8.5rem}.glass-shape--front{left:12%;width:13rem;height:12rem}.glass-shape--back{right:2%;width:13rem}}
@media(max-width:380px){.site-nav{gap:.55rem;font-size:.59rem}.brand{font-size:.82rem}.project-meta{gap:.65rem}}
.shape-label{color:rgba(28,30,54,.88);text-shadow:0 1px 0 rgba(255,255,255,.28);font-weight:700}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}
.project-list{display:grid;gap:1.25rem}.project-card--home .project-preview--image{padding:.6rem}.project-card--home .project-preview--image img{display:block;width:100%;height:100%;min-height:18rem;max-height:28rem;object-fit:cover;border:1px solid rgba(255,255,255,.38);border-radius:1.4rem;box-shadow:inset 0 1px rgba(255,255,255,.45),0 1rem 2.5rem rgba(5,8,25,.24)}@media(max-width:700px){.project-card--home .project-preview--image{min-height:17rem}.project-card--home .project-preview--image img{min-height:16rem;max-height:22rem}}
.project-list{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}.project-card--home{grid-template-columns:1fr;grid-template-rows:auto 1fr}.project-card--home .project-preview--image{min-height:0;aspect-ratio:16/10}.project-card--home .project-preview--image img{min-height:0;height:100%;max-height:none;object-fit:cover}.project-card--home .project-info{min-height:15rem;border-left:0;border-top:1px solid rgba(255,255,255,.2)}@media(max-width:700px){.project-list{grid-template-columns:1fr}.project-card--home .project-preview--image{min-height:0;aspect-ratio:16/10}}
.project-card--home .project-preview--image{position:relative;overflow:hidden}.project-card--home .project-preview--image .home-project-image{position:absolute;inset:.6rem;width:calc(100% - 1.2rem);height:calc(100% - 1.2rem);min-height:0;max-height:none;object-fit:cover;opacity:0;transform:scale(1.025);transition:opacity .45s ease,transform .7s cubic-bezier(.2,.7,.2,1)}.project-card--home .project-preview--image .home-project-image.is-visible{opacity:1;transform:scale(1)}.home-carousel-button{position:absolute;z-index:2;top:50%;display:grid;place-items:center;width:2rem;height:2rem;padding:0;border:1px solid rgba(255,255,255,.52);border-radius:50%;background:rgba(26,30,52,.36);color:#fff;font-size:1.5rem;line-height:1;backdrop-filter:blur(16px);transform:translateY(-50%);cursor:pointer;transition:background .2s,scale .2s}.home-carousel-button:hover{background:rgba(26,30,52,.7);scale:1.08}.home-carousel-previous{left:1rem}.home-carousel-next{right:1rem}.home-carousel-counter{position:absolute;z-index:2;right:1rem;bottom:1rem;padding:.3rem .55rem;border:1px solid rgba(255,255,255,.35);border-radius:2rem;background:rgba(26,30,52,.38);color:#fff;font: .6rem 'DM Mono',monospace;backdrop-filter:blur(16px)}
.home-carousel-viewport{position:absolute;inset:.6rem;overflow:hidden;border:1px solid rgba(255,255,255,.38);border-radius:1.4rem;box-shadow:inset 0 1px rgba(255,255,255,.45),0 1rem 2.5rem rgba(5,8,25,.24)}.home-carousel-track{display:flex;gap:12px;height:100%;transition:transform .65s cubic-bezier(.22,.75,.25,1);will-change:transform}.home-carousel-track .home-project-image{position:static;display:block;flex:0 0 calc((100% - 12px)/2);width:calc((100% - 12px)/2);height:100%;min-height:0;max-height:none;object-fit:cover;border:0;border-radius:1rem;opacity:1;transform:none;box-shadow:none}.home-carousel-button{top:50%}.project-card--home .project-preview--image{aspect-ratio:16/10}.project-card--home .project-preview--image img{min-height:0}
.project-card--home .project-preview--image .home-carousel-viewport .home-carousel-track .home-project-image{position:static;inset:auto;display:block;flex:0 0 calc((100% - 12px)/2);width:calc((100% - 12px)/2);height:100%;min-height:0;max-height:none;margin:0;object-fit:cover;opacity:1;transform:none;border:0;border-radius:1rem;box-shadow:none;transition:none}.project-card--home .project-preview--image .home-carousel-track{position:relative;width:max-content;height:100%;gap:12px}.project-card--home .project-preview--image .home-carousel-viewport{position:absolute;inset:.6rem;overflow:hidden;width:auto;height:auto}
.project-card--home .project-preview--image>.home-project-image.is-visible{position:absolute;inset:.6rem;width:calc(100% - 1.2rem);height:calc(100% - 1.2rem);min-height:0;max-height:none;object-fit:cover;opacity:1;transform:none;border:1px solid rgba(255,255,255,.38);border-radius:1.4rem;box-shadow:inset 0 1px rgba(255,255,255,.45),0 1rem 2.5rem rgba(5,8,25,.24)}

/* Every featured-project cover uses the same visual frame, regardless of source image size. */
.project-card--home .project-preview--image{aspect-ratio:16/9;display:grid;place-items:center;overflow:hidden}
.project-card--home .project-preview--image>.home-project-image.is-visible{object-position:center center}
.project-card--home .project-description{max-width:none}
@media(max-width:700px){.hero-art{display:none}}
.project-info h3{margin-top:.1rem}.site-nav,.eyebrow,.hero-intro,.button,.text-link,.project-number,.project-description,.project-meta,.site-footer{font-size:calc(1em + 1px)}.brand{font-size:1rem}.project-info h3{font-size:2.4rem}
.site-footer{font-size:.72rem!important}
/* Keep every navigation item available while making the header fit narrow phones. */
@media(max-width:700px){.page-shell{width:min(calc(100% - 2rem),40rem)}.site-header{gap:.55rem}.brand{flex:0 0 auto;white-space:nowrap}.site-nav{flex:0 1 auto;justify-content:flex-end;gap:clamp(.35rem,2vw,.75rem);font-size:clamp(.62rem,2.3vw,.72rem)}.site-nav .nav-link{white-space:nowrap}.nav-link--github{display:inline-flex}.hero-actions{flex-wrap:wrap;row-gap:.8rem}.section-heading{gap:1rem}.site-footer{align-items:flex-start}}
@media(max-width:480px){.page-shell{width:calc(100% - 1.25rem)}.site-header{height:auto;min-height:3.8rem;padding:.55rem .6rem;border-radius:1.15rem}.site-nav{gap:.38rem;font-size:.7rem}.hero{min-height:0;padding-top:3.5rem}.hero h1{font-size:clamp(2.85rem,13.5vw,4.1rem)}.hero-intro{font-size:1rem;line-height:1.7}.hero-actions{gap:.9rem}.work-section{padding:2.8rem 0 4rem}.section-heading h2{font-size:clamp(2.4rem,11vw,3.6rem)}.project-card--home .project-preview--image{aspect-ratio:16/9}.project-card--home .project-preview--image>.home-project-image.is-visible{object-fit:cover;object-position:center}.project-card--home .project-info{min-height:0;padding:1.15rem}.project-info h3{font-size:clamp(1.8rem,8vw,2.3rem);margin:.25rem 0 .65rem}.project-description{font-size:.94rem;line-height:1.65}.project-meta{flex-wrap:wrap;gap:.55rem;font-size:.68rem}.site-footer{gap:.7rem;padding:1.2rem 0 1.5rem;font-size:.68rem!important}.site-footer span:first-child{white-space:nowrap}}
@media(max-width:340px){.page-shell{width:calc(100% - 1rem)}.site-header{display:grid;grid-template-columns:minmax(0,1fr);justify-items:stretch;gap:.45rem;padding:.6rem .7rem}.brand{font-size:.9rem}.site-nav{width:100%;justify-content:space-between;gap:.2rem;font-size:.72rem}.hero h1{font-size:2.7rem}.hero-actions{width:100%;justify-content:space-between;flex-wrap:nowrap;gap:.6rem}.hero-actions .button{gap:.55rem;padding:.7rem .72rem .7rem .9rem;font-size:.72rem;white-space:nowrap}.hero-actions .text-link{font-size:.82rem;white-space:nowrap}.button{padding:.75rem .9rem;font-size:.78rem}.project-meta{font-size:.63rem}}
@media(min-width:701px) and (max-width:850px){.hero-actions{gap:.75rem;flex-wrap:nowrap}.hero-actions .button{gap:.55rem;padding:.75rem .8rem .75rem 1rem;font-size:1rem;white-space:nowrap}.hero-actions .text-link{font-size:.95rem;white-space:nowrap}}
