@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');

:root{--bg:#fff4f8;--paper:#fffafd;--ink:#38233a;--muted:#6d596d;--pink:#d34886;--line:#e8c9d9}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:'DM Sans',Arial,sans-serif}
img{display:block;max-width:100%}
a{color:inherit}
h1,h2,h3,p,figure{margin:0}
h1,h2,h3{font-family:'Space Grotesk',Arial,sans-serif;letter-spacing:-.055em}
p{line-height:1.6}
.wrap{max-width:1280px;margin:auto;padding-left:clamp(22px,5vw,76px);padding-right:clamp(22px,5vw,76px)}
.skip-link{position:absolute;top:-100px;left:10px;background:#fff;padding:10px;z-index:10}.skip-link:focus{top:10px}
.site-header{max-width:1280px;margin:auto;padding:22px clamp(22px,5vw,76px);display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line)}
.brand{text-decoration:none;font:700 23px 'Space Grotesk',Arial,sans-serif;letter-spacing:-.055em;white-space:nowrap}.brand-flower{color:var(--pink);font-size:28px;vertical-align:-1px;margin-right:7px}
.site-tabs{display:flex;gap:8px;flex-wrap:wrap}.site-tabs a{text-decoration:none;padding:11px 17px;border:1px solid var(--line);border-radius:100px;font-size:13px;font-weight:700}.site-tabs a:hover{border-color:var(--pink);color:var(--pink)}.site-tabs a.active{background:var(--ink);color:#fff;border-color:var(--ink)}
.page-intro{padding-top:110px;padding-bottom:95px;display:flex;justify-content:space-between;align-items:flex-end;gap:30px}.eyebrow{color:var(--pink);font-size:11px;font-weight:700;letter-spacing:.14em}.intro-copy h1{font-size:clamp(54px,7vw,102px);line-height:.98;margin:22px 0}.heading-flower{font-size:.31em;color:var(--pink);vertical-align:top;display:inline-block;margin:0 0 0 11px;transform:rotate(-17deg)}.intro-copy>p:last-child{font-size:19px;color:var(--muted);max-width:570px}.intro-note{text-align:center;width:170px;height:170px;border:1px solid #e8b3ce;border-radius:50%;flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(10deg);color:#a44f79}.tiny-flower{font-size:29px;margin-bottom:7px}.intro-note p{font-size:12px;font-weight:700;line-height:1.25}
.projects{padding-bottom:110px}.section-head{display:flex;align-items:baseline;gap:24px;border-top:1px solid var(--line);padding-top:34px;margin-bottom:30px}.section-head h2{font-size:clamp(30px,4vw,52px)}
.project-card{display:grid;grid-template-columns:55% 45%;background:var(--paper);border:1px solid var(--line);border-radius:18px;overflow:hidden;min-height:500px;box-shadow:0 18px 45px rgba(117,49,83,.07)}.project-image{background:#e6aac6;position:relative;overflow:hidden;display:grid;place-items:center;padding:30px}.project-image>img{width:85%;height:430px;object-fit:contain;box-shadow:0 20px 35px rgba(64,23,47,.16)}.image-tag{position:absolute;left:22px;top:22px;background:#fff9fc;color:#8a3762;border-radius:100px;padding:9px 13px;font-size:10px;font-weight:700;letter-spacing:.1em}.project-info{padding:clamp(30px,5vw,70px);display:flex;flex-direction:column;justify-content:center}.project-info h3{font-size:clamp(44px,5vw,74px);margin:12px 0 20px;line-height:1}.project-info>p:not(.eyebrow){font-size:17px;color:var(--muted);max-width:460px}.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:30px}.tags span{font-size:12px;font-weight:700;background:#f8dfeb;color:#8f3d67;padding:8px 12px;border-radius:100px}
.screenshot-row{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}.screenshot-row figure{background:#fff;border:1px solid var(--line);border-radius:15px;padding:18px;overflow:hidden}.screenshot-row img{width:100%;height:250px;object-fit:contain;background:#f8eef3}.screenshot-row figcaption{font-size:12px;font-weight:700;color:#9b5579;margin-top:13px}
.cricket-image{background:radial-gradient(circle,#edbbd3,#c782ab)}.cricket-image>img{box-shadow:none;filter:drop-shadow(0 18px 24px rgba(75,29,55,.2));height:470px;width:auto;max-width:90%}.motion-disclosure{margin-top:18px;background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.motion-disclosure summary{cursor:pointer;list-style:none;padding:20px 25px;font-weight:700;color:#8b3a65;display:flex;justify-content:space-between}.motion-disclosure summary::-webkit-details-marker{display:none}.motion-disclosure summary span{font-size:20px}.motion-content{padding:0 20px 25px}.motion-content img{width:100%;max-height:550px;object-fit:contain;background:#101014}.motion-content p{font-size:13px;color:var(--muted);margin-top:14px}
.site-footer{border-top:1px solid var(--line);padding-top:30px;padding-bottom:35px;display:flex;justify-content:space-between;gap:20px;color:#946d82;font-size:12px;font-weight:700}.site-footer>span:last-child{color:var(--pink);font-size:18px}
:focus-visible{outline:3px solid var(--pink);outline-offset:3px}
@media(max-width:800px){.page-intro{padding-top:80px;padding-bottom:70px}.intro-note{width:130px;height:130px}.project-card{grid-template-columns:1fr}.project-image{min-height:380px}.project-image>img{height:350px}.cricket-image>img{height:380px}.project-info{padding:35px}}
@media(max-width:600px){.site-header{align-items:flex-start;flex-direction:column}.brand{font-size:20px}.site-tabs{width:100%}.site-tabs a{flex:1;text-align:center;font-size:11px;padding:10px}.page-intro{padding-top:65px;padding-bottom:55px}.intro-copy h1{font-size:57px}.intro-copy>p:last-child{font-size:16px}.intro-note{display:none}.section-head{display:block}.section-head h2{margin-top:9px}.project-image{min-height:340px}.project-image>img{height:300px}.cricket-image>img{height:330px}.project-info h3{font-size:49px}.project-info>p:not(.eyebrow){font-size:15px}.screenshot-row{grid-template-columns:1fr}.screenshot-row img{height:210px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* A quieter, darker treatment for the software engineering page. */
.software-page{--bg:#241a2a;--paper:#322439;--ink:#fff4fa;--muted:#d4bdcd;--pink:#f4a4cb;--line:#5e475c}
.software-page .site-tabs a.active{background:#f4a4cb;color:#2b1b2d;border-color:#f4a4cb}
.software-page .site-tabs a:hover{color:#ffbad9}
.software-page .intro-note{border-color:#8f6380;color:#f0b0cf}
.software-page .page-intro{padding-bottom:105px}
.software-page .section-head{align-items:end;justify-content:space-between}
.software-page .section-head h2{font-size:clamp(34px,4vw,56px)}
.software-page .project-card{box-shadow:0 24px 65px rgba(12,5,17,.22)}
.software-page .project-image{background:radial-gradient(circle at 45% 45%,#aa7398,#69476b 65%,#4a3154)}
.software-page .project-image>img{border-radius:7px}
.software-page .project-info>p:not(.eyebrow){color:#f0e1eb}
.software-page .tags span{background:#65425e;color:#ffe2f0}
.software-page .image-tag{background:#fff3f9;color:#813b63}
.software-page .screenshot-row figure{background:#33263b;border-color:#5e475c}
.software-page .screenshot-row img{background:#eee2e9;border-radius:6px}
.software-page .screenshot-row figcaption{color:#eeb3d0}
.software-page .site-footer{color:#cfabc0}
.internship-feature{grid-template-columns:48% 52%;min-height:650px;border-color:#76516d}
.internship-feature .project-image>img{width:92%;height:510px;object-fit:contain;box-shadow:0 24px 45px rgba(33,11,29,.3)}
.internship-feature .project-info{padding:clamp(34px,5vw,74px)}
.internship-feature .project-info h3{font-size:clamp(46px,5vw,75px);max-width:560px}
.contributions{list-style:none;margin:25px 0 0;padding:0;display:grid;gap:13px}
.contributions li{position:relative;padding-left:24px;color:#dec7d7;font-size:14px;line-height:1.5}
.contributions li::before{content:'✿';color:#f4a4cb;position:absolute;left:0;top:0}
.gallery-note{color:#cfabc0;font-size:12px;font-weight:700;letter-spacing:.08em;margin:27px 0 13px}
.university-section{padding-top:25px}
.university-project{grid-template-columns:43% 57%;min-height:340px}
.university-project .project-image{padding:0;min-height:340px;background:#55415b}
.university-project .project-image>img{width:100%;height:100%;min-height:340px;object-fit:cover;object-position:center 36%;box-shadow:none;border-radius:0}
.university-project .project-info{padding:35px 50px}
.university-project .project-info h3{font-size:clamp(37px,4vw,55px);margin:8px 0 14px}
.university-project .project-info>p:not(.eyebrow){font-size:15px;max-width:600px}
.university-project .tags{margin-top:22px}
.university-project+.university-project{margin-top:18px}
.emagiz-image{background:radial-gradient(circle at 50% 45%,#f3f4fc,#dce2f2 72%,#cbd6ea)!important}
.emagiz-image>img{width:min(58%,270px)!important;height:auto!important;min-height:0!important;object-fit:contain!important;box-shadow:none!important;border-radius:0!important;filter:drop-shadow(0 16px 22px rgba(43,49,98,.14))}
.emagiz-visual-caption{position:absolute;left:24px;bottom:22px;color:#334783;font-size:11px;font-weight:700;letter-spacing:.13em}
@media(max-width:800px){.internship-feature,.university-project{grid-template-columns:1fr}.internship-feature .project-image>img{height:380px}.university-project .project-image,.university-project .project-image>img{min-height:280px;height:280px}.university-project .project-info{padding:35px}}
@media(max-width:600px){.software-page .page-intro{padding-bottom:65px}.software-page .intro-copy h1{font-size:clamp(52px,13vw,70px)}.software-page .section-head{display:block}.internship-feature .project-image>img{height:320px}.internship-feature .project-info h3{font-size:50px}.university-project .project-image,.university-project .project-image>img{min-height:230px;height:230px}.university-project .project-info h3{font-size:39px}}

/* Side projects share the main page's plum and pink palette. */
.side-projects-page .side-feature,.side-projects-page .cricket-card{min-height:390px;grid-template-columns:48% 52%}
.side-projects-page .side-feature+.side-feature,.side-projects-page .side-feature+.cricket-card{margin-top:18px}
.side-projects-page .side-feature .project-info,.side-projects-page .cricket-card .project-info{padding:clamp(34px,5vw,62px)}
.side-projects-page .side-feature .project-info h3,.side-projects-page .cricket-card .project-info h3{font-size:clamp(42px,4.7vw,66px)}
.side-projects-page .side-feature .project-info>p:not(.eyebrow),.side-projects-page .cricket-card .project-info>p:not(.eyebrow){font-size:15px;max-width:580px}
.side-projects-page .cricket-image{background:radial-gradient(circle at 50% 42%,#a6789b,#654769 74%,#45324e)}
.side-projects-page .cricket-image>img{height:370px}
.side-projects-page .motion-disclosure{background:#322439;border-color:#5e475c}
.side-projects-page .motion-disclosure summary{color:#f4a4cb}
.side-projects-page .motion-content p{color:#d4bdcd}
.side-projects-page .visual-caption{position:absolute;left:23px;bottom:20px;color:#f9d6e7;font-size:10px;font-weight:700;letter-spacing:.13em}
.side-projects-page .scuba-image{background:radial-gradient(circle at 50% 40%,#3a6c7b,#254354 62%,#202c45)}
.scuba-art{position:relative;width:100%;height:100%;min-height:340px;display:grid;place-items:center;isolation:isolate}
.scuba-art::before,.scuba-art::after{content:"";position:absolute;border:1px solid rgba(180,237,238,.18);border-radius:50%;width:330px;height:330px;transform:rotate(-20deg);z-index:-1}
.scuba-art::after{width:460px;height:460px;border-style:dashed;opacity:.55}
.glyph-orbit{position:absolute;top:42%;left:50%;width:170px;height:170px;border:1px solid #8bd7dc;border-radius:50%;transform:translate(-50%,-50%) rotate(-16deg);display:grid;place-items:center;box-shadow:0 0 0 16px rgba(167,231,230,.05),0 0 45px rgba(112,237,219,.17)}
.glyph-symbol{font-size:88px;line-height:1;color:#c5f6e9;text-shadow:0 0 22px rgba(170,244,236,.8)}
.glyph-ring{position:absolute;inset:16px;border:1px dashed rgba(194,245,233,.54);border-radius:50%}
.role-chip{position:absolute;top:31%;display:flex;align-items:center;gap:7px;padding:9px 11px;border:1px solid rgba(198,243,243,.42);border-radius:100px;background:rgba(21,39,57,.72);color:#e1f8f6;font-size:9px;font-weight:700;letter-spacing:.09em;white-space:nowrap}
.role-left{left:0;transform:rotate(-9deg)}.role-right{right:0;transform:rotate(9deg)}.role-icon{color:#b6f4e6;font-size:16px;line-height:1}
.scuba-art-title{position:absolute;bottom:22%;left:50%;transform:translateX(-50%);color:#e9f8f6;font:700 clamp(30px,3.8vw,50px) 'Space Grotesk',Arial,sans-serif;letter-spacing:-.065em;white-space:nowrap;text-shadow:0 4px 22px rgba(10,23,37,.6)}
.scuba-art-title span{color:#b6f1df}
.scuba-bubble{position:absolute;width:9px;height:9px;border:1px solid rgba(205,250,247,.65);border-radius:50%}.bubble-one{top:20%;left:28%}.bubble-two{top:27%;right:20%;width:15px;height:15px}.bubble-three{bottom:25%;right:31%;width:6px;height:6px}
.side-projects-page .walker-image{padding:0;background:#15121b}
.walker-image video{display:block;width:100%;height:100%;min-height:390px;object-fit:contain;background:#08080b}
.walker-image .image-tag{z-index:1}
@media(max-width:800px){.side-projects-page .side-feature,.side-projects-page .cricket-card{grid-template-columns:1fr}.side-projects-page .scuba-image,.side-projects-page .walker-image{min-height:360px}.walker-image video{height:360px;min-height:360px}.side-projects-page .cricket-image>img{height:330px}}
@media(max-width:600px){.side-projects-page .side-feature .project-info h3,.side-projects-page .cricket-card .project-info h3{font-size:42px}.side-projects-page .scuba-image,.side-projects-page .walker-image{min-height:290px}.scuba-art{min-height:290px}.scuba-art::before{width:250px;height:250px}.scuba-art::after{width:340px;height:340px}.glyph-orbit{width:130px;height:130px}.glyph-symbol{font-size:66px}.scuba-art-title{font-size:33px;bottom:19%}.role-chip{top:21%;font-size:8px;padding:7px}.role-left{left:2%}.role-right{right:2%}.walker-image video{height:290px;min-height:290px}}
