/* Palette and responsive layout inspired by the supplied portfolio screenshots. */
:root{color-scheme:light;--bg:#fff8f3;--surface:#fff;--blush:#f5dce5;--blush-strong:#f0cbd8;--pink:#c96f90;--pink-dark:#ad4e73;--ink:#452d3a;--text:#3d343a;--muted:#6b5962;--line:#efc7d5;--footer:#432b38;--shadow:0 18px 48px rgba(91,46,66,.07);--header-h:76px;--serif:"Playfair Display",Georgia,serif;--sans:"DM Sans",Arial,sans-serif}
[data-theme="dark"]{color-scheme:dark;--bg:#211a20;--surface:#30252e;--blush:#3d2935;--blush-strong:#563246;--pink:#e18bab;--pink-dark:#f1a9c2;--ink:#f9eaf0;--text:#f0e4e9;--muted:#c7b5bf;--line:#634052;--footer:#171217;--shadow:0 18px 48px rgba(0,0,0,.18)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 18px)}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 var(--sans);transition:background .25s,color .25s}body.modal-open{overflow:hidden}a{color:inherit}button{font:inherit}.container{width:min(1268px,calc(100% - 48px));margin-inline:auto}.section-anchor{scroll-margin-top:calc(var(--header-h) + 10px)}.skip-link{position:absolute;left:12px;top:-60px;background:var(--surface);padding:10px 14px;z-index:1000;border-radius:8px}.skip-link:focus{top:12px}
.site-header{height:var(--header-h);position:sticky;top:0;z-index:100;background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);transition:box-shadow .2s,height .2s}.site-header.scrolled{box-shadow:0 8px 26px rgba(62,36,49,.09);height:68px}.nav-wrap{height:100%;width:min(1268px,calc(100% - 48px));margin:auto;display:flex;align-items:center;gap:24px}.brand{text-decoration:none;font-weight:700;color:var(--ink);font-size:20px;letter-spacing:-.4px;white-space:nowrap}.site-nav{display:flex;align-items:center;gap:24px;margin-left:auto}.nav-link{text-decoration:none;position:relative;padding:9px 0;color:var(--ink);font-size:16px}.nav-link:after{content:"";position:absolute;bottom:2px;left:0;width:100%;height:2px;background:var(--pink);transform:scaleX(0);transform-origin:left;transition:transform .2s}.nav-link:hover:after,.nav-link.active:after{transform:scaleX(1)}.nav-cta,.button{display:inline-flex;justify-content:center;align-items:center;text-decoration:none;border:1px solid transparent;border-radius:999px;padding:14px 27px;font-weight:700;transition:transform .2s,background .2s,box-shadow .2s;color:var(--ink);cursor:pointer}.nav-cta,.button-primary{background:var(--pink);color:#fff;box-shadow:0 10px 22px rgba(166,81,114,.15)}.nav-cta:hover,.button:hover{transform:translateY(-2px);box-shadow:0 12px 24px rgba(166,81,114,.19)}.button-outline{border-color:var(--ink);background:transparent}.button-outline:hover{background:var(--surface)}.theme-toggle{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:50%;width:40px;height:40px;cursor:pointer;font-size:20px}.menu-toggle{display:none}
.hero{position:relative;overflow:hidden;min-height:650px;display:flex;align-items:center;padding:76px 0 84px}.hero-grid{display:grid;grid-template-columns:1.25fr .85fr;align-items:center;gap:7%}.hero-copy{position:relative;z-index:2;animation:heroIn .7s both}.eyebrow{font-size:13px;font-weight:700;letter-spacing:2.2px;color:var(--ink);margin:0 0 18px}.hero h1{font:600 clamp(4rem,7.5vw,7.4rem)/.98 var(--serif);letter-spacing:-5px;color:var(--ink);margin:0 0 28px;white-space:nowrap}.highlight{color:var(--pink);position:relative;display:inline-block}.highlight:after{content:"";height:8px;position:absolute;left:4%;right:2%;bottom:-9px;border-radius:50%;background:var(--pink);transform:rotate(-.5deg)}.hero-subtitle{font:600 clamp(1.35rem,2vw,1.8rem)/1.4 var(--serif);color:var(--ink);max-width:690px;margin:30px 0 18px}.hero-description{max-width:650px;font-size:18px;margin:0 0 36px}.hero-actions{display:flex;gap:12px;flex-wrap:wrap}.scroll-cue{display:inline-flex;align-items:center;gap:12px;margin-top:54px;font-size:12px;letter-spacing:2px;font-weight:700;text-decoration:none}.scroll-cue span{font-size:24px}.hero-visual{display:flex;justify-content:center;align-items:center;position:relative;animation:heroIn .9s .08s both}.portrait-frame{position:relative;width:min(100%,495px);height:475px;border-radius:47% 47% 24px 24px;background:var(--blush);border:1px solid var(--line);box-shadow:18px 20px 0 var(--pink);overflow:hidden;display:flex;align-items:center;justify-content:center}.portrait-frame img{width:100%;height:100%;object-fit:cover;object-position:center top;position:relative;z-index:1}.image-placeholder{display:none;position:absolute;inset:0;align-items:center;justify-content:center;text-align:center;padding:20px;color:var(--muted);background:var(--blush);font-weight:700}.image-placeholder small{font-weight:500}.image-placeholder.visible{display:flex}.decor{position:absolute;pointer-events:none;color:var(--pink)}.decor-circle{width:330px;height:330px;border:1px solid var(--line);border-radius:50%;left:-260px;top:20%}.decor-star{right:42%;top:25%;font-size:28px}
.section{padding:92px 0}.services-section,.learning-section{background:var(--blush)}.section-heading{max-width:690px;margin-bottom:50px}.section-heading h2{font:700 clamp(2rem,3vw,2.75rem)/1.18 var(--serif);letter-spacing:-1.2px;color:var(--ink);margin:0 0 18px}.section-heading p:not(.eyebrow){font-size:18px;margin:0 0 10px}.section-heading.centered{text-align:center;margin-inline:auto;max-width:850px}.section-note{color:var(--muted);font-style:italic}.service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.service-card,.learning-card{background:var(--surface);border:1px solid var(--line);border-radius:28px;padding:38px 36px;box-shadow:var(--shadow);position:relative;overflow:hidden;transition:transform .25s,box-shadow .25s}.service-card:before{content:"";position:absolute;right:-23px;top:-23px;width:65px;height:65px;border:12px solid var(--blush);border-radius:50%}.service-card:hover,.learning-card:hover{transform:translateY(-5px);box-shadow:0 24px 50px rgba(91,46,66,.12)}.icon-box{display:grid;place-items:center;width:64px;height:64px;background:var(--blush);border-radius:20px;color:var(--ink);font-size:30px;margin-bottom:30px}.service-card h3,.learning-card h3{font:700 23px/1.25 var(--serif);color:var(--ink);margin:0 0 14px}.service-card p{font-size:17px;margin:0 0 24px}.star-list{list-style:none;padding:18px 0 0;margin:0;border-top:1px solid var(--line)}.star-list li{position:relative;padding-left:24px;margin:0 0 10px}.star-list li:before{content:"✦";position:absolute;left:0;color:var(--pink-dark);font-size:12px;top:4px}
.projects-section{background:var(--bg)}.projects-heading-row{display:flex;align-items:end;justify-content:space-between;gap:30px}.projects-heading-row .section-heading{margin-bottom:48px}.carousel-controls{display:flex;gap:10px;margin-bottom:52px}.round-button{width:52px;height:52px;border:1px solid var(--muted);border-radius:50%;background:transparent;color:var(--ink);font-size:25px;cursor:pointer;transition:background .2s,transform .2s}.round-button:hover{background:var(--blush);transform:translateY(-2px)}.project-track{display:grid;grid-auto-columns:minmax(340px,1fr);grid-auto-flow:column;gap:24px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:thin;scrollbar-color:var(--pink) var(--blush);padding:0 0 16px}.project-card{scroll-snap-align:start;min-width:0;min-height:650px;background:var(--surface);border:1px solid var(--line);border-radius:28px;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow);transition:transform .35s ease,box-shadow .35s ease}.project-card:hover,.project-card:focus-within{transform:translateY(-8px);box-shadow:0 22px 48px rgba(92,48,68,.16)}.project-image{height:360px;padding:18px;background:var(--blush);position:relative;overflow:hidden;flex:none}.project-image:before{content:"";position:absolute;right:-18px;top:-38px;width:150px;height:150px;border:20px solid rgba(255,255,255,.45);border-radius:50%;transition:transform .5s ease}.project-card:hover .project-image:before{transform:scale(1.18) rotate(12deg)}.project-image-inner{position:relative;width:100%;height:100%;border-radius:18px;overflow:hidden;background:var(--surface);display:grid;place-items:center;box-shadow:0 8px 24px rgba(92,48,68,.08)}.project-image img{width:100%;height:100%;object-fit:cover;position:relative;z-index:1;transition:transform .55s cubic-bezier(.2,.7,.2,1)}.project-card:hover .project-image img{transform:scale(1.07)}.project-image .image-placeholder{font-size:14px}.project-body{padding:30px 30px 28px;display:flex;flex:1;flex-direction:column;align-items:flex-start}.project-category{font-size:12px;letter-spacing:2px;color:var(--muted);margin:0 0 12px}.project-body h3{font:700 32px/1.16 var(--serif);color:var(--ink);margin:0 0 16px}.project-body>p{font-size:17px;line-height:1.65;margin:0 0 28px;max-width:38ch}.project-body>p:not(.project-category){margin:0 0 20px}.tag-list{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 22px}.tag{display:inline-block;background:var(--blush);border-radius:999px;padding:6px 12px;font-size:14px;color:var(--ink)}.project-status{border-top:1px solid var(--line);padding-top:16px;margin-top:auto;color:var(--muted)}.view-project{margin-top:auto;align-self:flex-start;display:inline-flex;align-items:center;gap:6px;border:1px solid transparent;border-radius:999px;padding:12px 19px;background:var(--pink);color:#fff;font-weight:700;font-size:15px;text-decoration:none;cursor:pointer;box-shadow:0 10px 22px rgba(166,81,114,.15);transition:background .2s,transform .2s,box-shadow .2s}.view-project:hover{background:var(--pink);color:#fff;transform:translateY(-2px);box-shadow:0 12px 24px rgba(166,81,114,.19)}
.experience-section{background:var(--surface)}.timeline{position:relative;max-width:1080px;margin:0 auto;display:grid;gap:44px}.timeline:before{content:"";position:absolute;left:50%;top:30px;bottom:30px;width:3px;transform:translateX(-50%);background:linear-gradient(var(--pink) 70%,var(--blush))}.timeline-item{position:relative;width:calc(50% - 42px);padding:34px 36px;border:1px solid var(--line);border-radius:28px;box-shadow:var(--shadow);background:var(--surface)}.timeline-item:nth-child(odd){margin-right:auto}.timeline-item:nth-child(even){margin-left:auto;margin-top:5px}.timeline-item:after{content:"";position:absolute;top:30px;right:-55px;width:18px;height:18px;background:var(--pink);border:5px solid var(--surface);box-shadow:0 0 0 2px var(--pink);border-radius:50%}.timeline-item:nth-child(even):after{right:auto;left:-55px}.timeline-dates{font-size:13px;letter-spacing:2px;color:var(--muted);margin:0 0 12px}.timeline-item h3{font:700 22px/1.25 var(--serif);color:var(--ink);margin:0 0 3px}.timeline-company{font-weight:700;color:var(--ink);margin:0 0 20px}.timeline-item .star-list{border:0;padding:0;margin-bottom:20px}
.learning-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}.learning-card{padding:28px 26px}.learning-card .icon-box{margin-bottom:26px}.learning-card h3{font-size:21px;margin-bottom:6px}.learning-status{margin:0 0 16px;color:var(--muted)}.progress-bar{height:5px;background:var(--blush);border-radius:9px;margin-bottom:20px;overflow:hidden}.progress-bar span{display:block;height:100%;width:var(--progress);background:var(--pink);border-radius:9px;transform-origin:left;animation:progressIn 1s .2s both}.learning-card .star-list{border:0;padding:0}.learning-card p.learning-description{margin:0 0 20px}.learning-note{text-align:center;max-width:680px;margin:48px auto 0;font-size:18px}
.contact-section{padding:88px 0 110px}.contact-section .section-heading{margin-bottom:46px}.contact-main-cta{margin-top:20px}.contact-card{max-width:830px;margin:0 auto;background:var(--surface);border:1px solid var(--line);border-radius:28px;padding:42px 34px;text-align:center;box-shadow:var(--shadow)}.contact-card h3{font:700 29px var(--serif);color:var(--ink);margin:0 0 8px}.contact-card>p{margin:0 0 26px}.contact-links{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.contact-links a,.resume-link{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--pink);border-radius:13px;padding:12px 16px;text-decoration:none;font-weight:700;color:var(--ink);overflow-wrap:anywhere}.contact-links a:hover,.resume-link:hover{background:var(--blush)}.resume-link{margin-top:22px;border-color:transparent;text-decoration:underline}.site-footer{background:var(--footer);color:#fff;padding:24px 0}.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:20px}.footer-inner p{margin:0}.footer-inner a{text-decoration:none}.project-dialog{width:min(900px,calc(100% - 28px));max-height:min(88vh,900px);padding:0;border:1px solid var(--line);border-radius:24px;background:var(--surface);color:var(--text);box-shadow:0 30px 100px rgba(0,0,0,.25)}.project-dialog::backdrop{background:rgba(32,20,28,.68);backdrop-filter:blur(5px)}.dialog-inner{display:grid;grid-template-columns:.9fr 1fr;position:relative}.dialog-close{position:absolute;right:14px;top:12px;width:42px;height:42px;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--ink);font-size:28px;z-index:5;cursor:pointer}.dialog-image-wrap{min-height:400px;position:relative;background:var(--blush);display:grid;place-items:center}.dialog-image-wrap img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}.dialog-copy{padding:54px 34px 34px}.dialog-copy h2{font:700 32px var(--serif);color:var(--ink);margin:0 0 16px}.dialog-caption,.dialog-status{color:var(--muted);font-size:14px}.edit-badge{position:fixed;bottom:16px;right:16px;z-index:120;background:var(--ink);color:var(--bg);padding:10px 14px;border-radius:999px;box-shadow:var(--shadow);font-size:13px}.edit-badge button{margin-left:8px;border:0;border-radius:999px;padding:5px 9px;background:var(--pink);color:#fff;cursor:pointer}.edit-badge[hidden]{display:none}
.reveal{opacity:0;transform:translateY(20px);transition:opacity .65s ease,transform .65s ease}.reveal.is-visible{opacity:1;transform:translateY(0)}:focus-visible{outline:3px solid var(--pink-dark);outline-offset:4px}
@keyframes heroIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes progressIn{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(max-width:1050px){.site-nav{gap:16px}.nav-wrap,.container{width:min(100% - 36px,1268px)}.hero h1{font-size:clamp(3.8rem,7vw,6rem)}.hero-grid{gap:4%}.portrait-frame{height:420px}.service-card{padding:30px 26px}.learning-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){:root{--header-h:68px}.nav-wrap{gap:12px}.brand{font-size:18px}.menu-toggle{display:flex;flex-direction:column;justify-content:center;gap:5px;width:42px;height:42px;margin-left:auto;background:transparent;border:1px solid var(--line);border-radius:12px;cursor:pointer}.menu-toggle span{width:18px;height:2px;background:var(--ink);margin-inline:auto}.site-nav{display:none;position:absolute;top:calc(100% + 1px);left:0;right:0;background:var(--bg);padding:18px 24px 24px;border-bottom:1px solid var(--line);box-shadow:0 18px 25px rgba(62,36,49,.08);align-items:stretch;gap:8px;flex-direction:column}.site-nav.open{display:flex}.nav-link{padding:10px 2px}.nav-cta{text-align:center;margin-top:6px}.theme-toggle{width:38px;height:38px;flex:none}.hero{padding:64px 0 72px;min-height:auto}.hero-grid{grid-template-columns:1fr;gap:54px}.hero-copy{order:1}.hero-visual{order:0}.portrait-frame{width:min(78%,360px);height:340px;box-shadow:12px 13px 0 var(--pink)}.hero h1{font-size:clamp(3.5rem,13vw,5.3rem);letter-spacing:-3px;white-space:normal}.hero-subtitle{margin-top:26px}.hero-description{font-size:16px}.scroll-cue{margin-top:34px}.decor-star{right:12%;top:34%}.section{padding:70px 0}.section-heading{margin-bottom:34px}.section-heading p:not(.eyebrow){font-size:16px}.service-grid{grid-template-columns:1fr}.service-card{padding:30px}.projects-heading-row{align-items:start;display:block}.projects-heading-row .section-heading{margin-bottom:24px}.carousel-controls{margin:0 0 24px;justify-content:flex-end}.round-button{width:44px;height:44px}.project-track{grid-auto-columns:minmax(285px,86%);gap:16px}.project-card{min-height:600px}.project-image{height:310px}.project-body{padding:25px 24px}.project-body h3{font-size:29px}.project-body>p{font-size:16px}.project-body{padding:25px 24px}.project-body h3{font-size:29px}.timeline{gap:22px;padding-left:26px}.timeline:before{left:7px;transform:none}.timeline-item,.timeline-item:nth-child(even),.timeline-item:nth-child(odd){width:100%;margin:0;padding:26px 24px}.timeline-item:after,.timeline-item:nth-child(even):after{left:-29px;right:auto;top:28px;width:14px;height:14px;border-width:4px}.learning-grid{grid-template-columns:1fr}.learning-card{padding:28px}.contact-card{padding:32px 20px}.contact-links{flex-direction:column}.contact-links a{width:100%}.footer-inner{align-items:flex-start;flex-direction:column}.dialog-inner{grid-template-columns:1fr}.dialog-image-wrap{min-height:240px;max-height:300px}.dialog-copy{padding:30px 24px}.dialog-copy h2{font-size:27px}.project-dialog{max-height:90vh;overflow:auto}}
@media(max-width:380px){.container,.nav-wrap{width:calc(100% - 28px)}.brand{font-size:16px}.theme-toggle{width:34px;height:34px}.hero h1{font-size:3.25rem}.button{padding:12px 18px}.portrait-frame{height:300px}.project-track{grid-auto-columns:92%}.project-card{min-height:560px}.project-image{height:285px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}
