:root{--purple:#7952b8;--purple-dark:#54347e;--lavender:#f2eafa;--ink:#30233f;--muted:#776c83;--border:#e8dcf3;--bs-primary:#7952b8;--bs-body-color:#30233f;--bs-body-font-family:Arial,Helvetica,sans-serif}
body{background:#fff;line-height:1.75;color:var(--ink)}a{color:var(--purple);text-decoration:none}a:hover{color:var(--purple-dark)}::selection{background:#ddc9f4}h1,h2,h3{font-weight:700;letter-spacing:-.045em;line-height:1.18}h1{font-size:clamp(2.6rem,5.5vw,4.9rem)}h1 span{color:var(--purple)}h2{font-size:clamp(1.8rem,3vw,2.6rem);margin-bottom:1.3rem}h3{font-size:1.4rem;letter-spacing:-.025em}p{color:#6f627d}.container{max-width:1180px}.section{padding:80px 0}.tinted{background:#faf7fe}.eyebrow{font-size:.78rem;letter-spacing:.14em;font-weight:700;color:var(--purple);margin-bottom:20px}.site-header{background:rgba(255,255,255,.96);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:1000;backdrop-filter:blur(14px)}.navbar{min-height:90px}.navbar-brand{font-size:1rem;color:var(--ink);font-weight:700;display:flex;align-items:center;gap:10px}.brand-symbol{display:grid;place-items:center;background:var(--lavender);color:var(--purple);width:42px;height:42px;border-radius:13px;font-size:1.8rem;letter-spacing:-.1em;padding-right:3px}.brand-divider{color:#cdbbdc;font-weight:400}.brand-sub{font-size:.78rem;font-weight:400;color:var(--muted)}.navbar-nav{gap:16px}.navbar .nav-link{color:var(--muted);font-size:.92rem;position:relative;padding:14px 8px!important}.navbar .nav-link.active{color:var(--purple);font-weight:700}.nav-link.active:after{content:'';position:absolute;bottom:4px;left:8px;right:8px;height:2px;background:var(--purple)}.navbar-toggler{border-color:var(--border)}.hero{background:linear-gradient(110deg,#fff 52%,#faf6ff 52%);padding:70px 0 82px}.hero h1{margin-bottom:24px}.hero-copy{font-size:1.2rem;max-width:560px;line-height:1.6}.support-copy{font-size:.98rem;max-width:510px}.btn{border-radius:9px;padding:13px 23px;font-weight:600;font-size:.93rem;transition:transform .2s,background .2s,box-shadow .2s;line-height:1.5}.btn:hover{transform:translateY(-2px)}.btn-primary{--bs-btn-bg:var(--purple);--bs-btn-border-color:var(--purple);--bs-btn-hover-bg:var(--purple-dark);--bs-btn-hover-border-color:var(--purple-dark);--bs-btn-active-bg:var(--purple-dark);--bs-btn-active-border-color:var(--purple-dark)}.btn-outline-primary{--bs-btn-color:var(--purple);--bs-btn-border-color:#c7afdf;--bs-btn-hover-bg:var(--purple);--bs-btn-hover-border-color:var(--purple);--bs-btn-active-bg:var(--purple);--bs-btn-active-border-color:var(--purple)}.hero-facts{display:flex;gap:35px;margin-top:42px;padding-top:25px;border-top:1px solid var(--border);max-width:560px}.hero-facts strong{display:block;font-size:1.15rem}.hero-facts span{font-size:.78rem;color:var(--muted)}.media-placeholder{min-height:320px;background:linear-gradient(135deg,#efe4fc,#e5d2f6);border:1px solid #d9c4ed;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;color:#6f508e;text-align:center;border-radius:15px}.placeholder-mark{font-size:4.8rem;letter-spacing:-.07em;font-weight:700;color:#bba0d6;line-height:1.1}.media-placeholder small{font-size:.78rem;color:#7b6591}.portrait{min-height:410px;aspect-ratio:4/5;border-radius:100px 18px 18px 18px}.portrait .placeholder-mark{font-size:6rem}.portrait-wrap{padding-left:40px}.portrait-note{padding:20px 0 0 18px;border-left:2px solid #cbb0e4;margin-top:18px}.portrait-note span{font-size:.72rem;letter-spacing:.12em;color:var(--muted);display:block}.portrait-note strong{font-size:.95rem;font-weight:500}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:28px}.section-heading h2{margin:0}.section-index{font-size:.75rem;letter-spacing:.1em;color:var(--muted)}.project-card{border:1px solid var(--border);border-radius:18px;overflow:hidden;background:#fff}.project-card .media-placeholder{border-radius:0;border:0;height:100%;min-height:380px}.project-summary{padding:40px}.project-summary h3{font-size:2.1rem;margin-top:20px}.tag-list{display:flex;flex-wrap:wrap;gap:8px}.tag-list span,.pill{font-size:.77rem;color:var(--purple-dark);background:var(--lavender);padding:7px 12px;border-radius:30px;display:inline-block}.project-meta{display:flex;gap:20px;font-size:.8rem;color:var(--muted);margin:22px 0}.page-intro{padding-top:64px;padding-bottom:52px}.page-intro h1{font-size:clamp(2.6rem,4.5vw,4rem)}.page-intro>p:last-child{max-width:680px;margin-top:20px}.content-card{padding:30px;border:1px solid var(--border);border-radius:16px;background:white}.date{font-size:.8rem;color:var(--purple);font-weight:600}.clean-list{margin:22px 0 0;padding-left:20px;color:#6f627d}.clean-list li{margin:10px 0;padding-left:5px}.muted{color:var(--muted);font-size:.88rem}.skill-item{padding:4px 0}.skill-item h3{font-size:1rem;letter-spacing:-.01em;margin-bottom:8px}.skill-item p{font-size:.87rem;margin-bottom:0}.training-list{list-style:none;padding:0;margin:0}.training-list li{padding:15px 0;border-bottom:1px solid var(--border);font-size:.9rem;color:#6f627d}.training-list li:last-child{border:0}.training-list span{display:block;color:var(--purple);font-size:.75rem;font-weight:700}.project-details{margin-top:25px}.project-details>div{display:grid;grid-template-columns:130px 1fr;border-top:1px solid var(--border);padding:13px 0;gap:15px}.project-details dt{font-size:.84rem;color:var(--muted);font-weight:400}.project-details dd{font-size:.9rem;margin:0}.gallery-item{width:100%;background:#fff;border:1px solid var(--border);border-radius:14px;padding:0;text-align:left;overflow:hidden;transition:transform .25s,box-shadow .25s}.gallery-item:hover{transform:translateY(-5px);box-shadow:0 14px 35px #69419515}.gallery-item .media-placeholder{min-height:210px;border-radius:0;border:0}.gallery-item .placeholder-mark{font-size:3rem}.gallery-caption{padding:18px 20px;display:block;color:var(--ink);font-weight:600}.gallery-caption small{display:block;font-size:.75rem;color:var(--muted);font-weight:400}.dummy-label{display:inline-block;font-size:.73rem;border:1px dashed #bba0d6;color:var(--purple);padding:3px 9px;border-radius:5px;margin-bottom:18px}.modal-content{border:1px solid var(--border);border-radius:20px}.contact-container{max-width:1020px}.contact-icon{display:grid;place-items:center;width:42px;height:42px;background:var(--lavender);color:var(--purple);font-weight:700;border-radius:12px;margin-bottom:20px}.contact-card h2,.career-card h2{font-size:2rem}.contact-address{overflow-wrap:anywhere;font-size:1rem}.copy-status{font-size:.8rem;min-height:24px;margin:12px 0 0}.career-card{background:linear-gradient(145deg,#f7f0ff,#fff);padding:40px}.cv-block{border-top:1px solid #dcc8ef;margin-top:35px;padding-top:30px}.cv-block small{display:block;margin-top:12px;color:var(--muted);font-size:.75rem}.location{margin-top:45px;font-size:.85rem}.site-footer{border-top:1px solid var(--border);padding:30px 0;background:#fff}.footer-brand{font-weight:700;color:var(--ink)}.footer-brand span{display:block;font-size:.75rem;color:var(--muted);font-weight:400}.site-footer a:not(.footer-brand){font-size:.82rem;overflow-wrap:anywhere}.site-footer small{font-size:.75rem;color:var(--muted)}.skip-link{position:fixed;top:-100px;left:15px;background:#fff;padding:10px;z-index:2000}.skip-link:focus{top:10px}:focus-visible{outline:3px solid #a881d3;outline-offset:4px}.js-motion .reveal{opacity:0;transform:translateY(20px);transition:opacity .65s ease,transform .65s ease}.js-motion .reveal.visible{opacity:1;transform:none}
@media(max-width:991px){.hero{background:#fcf9ff}.portrait-wrap{padding-left:12px}.portrait{max-width:420px;margin:auto;min-height:340px}.portrait-note{max-width:420px;margin:18px auto 0}.section{padding:55px 0}.navbar-brand .brand-sub,.brand-divider{display:none}.project-summary{padding:30px}.project-card .media-placeholder{min-height:280px}}
@media(max-width:767px){.container{padding-left:24px;padding-right:24px}.navbar{min-height:76px}.navbar-nav{gap:0;padding:10px 0 18px}.nav-link.active:after{right:auto;width:30px}.hero{padding-top:40px}.hero-facts{gap:23px;flex-wrap:wrap}.hero-facts span{font-size:.72rem}.page-intro{padding-top:40px;padding-bottom:38px}.section-heading{align-items:flex-start}.section-index{display:none}.content-card,.career-card{padding:24px}.project-summary{padding:26px}.project-summary h3{font-size:1.8rem}.project-details>div{grid-template-columns:110px 1fr}.site-footer .container{flex-direction:column;align-items:flex-start!important}.media-placeholder{min-height:260px}.portrait{max-width:360px}.hero-copy{font-size:1.06rem}.contact-address{font-size:.9rem}}
.eyebrow,.section-index,.portrait-note>span{display:inline-block;max-width:100%;background:linear-gradient(90deg,#eee3f8,rgba(238,227,248,0));color:var(--purple-dark);border-left:4px solid var(--purple);font-size:1rem;font-weight:700;letter-spacing:.055em;line-height:1.65;padding:7px 18px 7px 13px;border-radius:0;overflow-wrap:anywhere}.portrait-note>span{margin-bottom:12px}.portrait-note>strong{display:block}.section-heading{flex-wrap:wrap}.section-index{flex-shrink:0}
@media(max-width:767px){.eyebrow,.section-index,.portrait-note>span{font-size:.9rem;padding:8px 12px;letter-spacing:.035em}}
.btn{box-shadow:0 4px 0 rgba(84,52,126,.2),0 7px 16px rgba(84,52,126,.16);transition:transform .2s ease,box-shadow .2s ease,background-color .2s ease}.btn:hover{transform:translateY(-3px);box-shadow:0 6px 0 rgba(84,52,126,.18),0 12px 22px rgba(84,52,126,.22)}.btn:active{transform:translateY(2px);box-shadow:0 1px 0 rgba(84,52,126,.2),0 3px 7px rgba(84,52,126,.14)}.navbar-toggler,.btn-close{box-shadow:0 3px 8px rgba(84,52,126,.15)}.gallery-item{box-shadow:0 4px 0 rgba(84,52,126,.1),0 7px 16px rgba(84,52,126,.1)}.gallery-item:active{transform:translateY(1px);box-shadow:0 2px 5px rgba(84,52,126,.12)}
.image-frame{position:relative;overflow:hidden;padding:0}.image-frame img{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:contain;object-position:center}.image-frame.portrait img{object-fit:cover;object-position:center}
.btn-icon{width:1.1em;height:1.1em;flex-shrink:0;vertical-align:-.15em;margin-right:.5em;display:inline-block;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.gallery-caption small .btn-icon{width:1em;height:1em}
@media(min-width:768px) and (max-width:991px){.container{padding-left:24px;padding-right:24px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.js-motion .reveal{opacity:1;transform:none}}
