@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap";:root{color:#182429;font-synthesis:none;text-rendering:optimizelegibility;background:#c7dddc;font-family:DM Sans,sans-serif}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{min-height:100vh}button,a{color:inherit;font:inherit}button{cursor:pointer}a{text-decoration:none}.site-canvas{background:linear-gradient(135deg,#ffffff52,#0000 38%),radial-gradient(circle at 12% 82%,#12484b57,#0000 26rem),#b8d4d3;place-items:center;min-height:100vh;padding:clamp(1rem,4vw,3.5rem);display:grid;overflow:hidden}.site-canvas:before{content:"";pointer-events:none;background-image:linear-gradient(#ffffff1a 1px,#0000 1px),linear-gradient(90deg,#ffffff1a 1px,#0000 1px);background-size:42px 42px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 75%);mask-image:linear-gradient(#000,#0000 75%)}.profile-shell{z-index:1;filter:drop-shadow(0 28px 45px #1e414433);grid-template-columns:310px minmax(0,1fr);width:min(1180px,100%);height:min(760px,100vh - 4rem);display:grid;position:relative}.identity-card{color:#fff;text-align:center;background:linear-gradient(#196966c7,#0b2c33f5),url(/assets/headshot-BVHgJrS2.jpg) 50% 32%/cover;flex-direction:column;align-items:center;min-height:100%;padding:4rem 2.25rem 1.75rem;display:flex;position:relative;overflow:hidden}.identity-card:before{content:"";background:linear-gradient(#0e4d4c33,#071f268c 52%,#071b22f5 100%),radial-gradient(circle at 50% 18%,#86ded252,#0000 15rem);position:absolute;inset:0}.identity-card>*{z-index:1;position:relative}.identity-avatar{cursor:default;background:#fffffff0;border:0;border-radius:50%;width:112px;height:112px;padding:5px;box-shadow:0 12px 35px #051c2247}.identity-avatar img{border-radius:inherit;object-fit:cover;object-position:center 24%;width:100%;height:100%}.identity-copy{margin-top:1.35rem}.identity-kicker,.eyebrow{color:#54bda7;letter-spacing:.17em;text-transform:uppercase;margin:0 0 .75rem;font-size:.68rem;font-weight:700}.graduation-date{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .75rem;font-size:.78rem}.identity-kicker{color:#fff9}.identity-copy h2{margin:0;font:700 1.65rem/1.15 Manrope,sans-serif}.identity-copy>p:last-child{color:#ffffffb8;margin:.5rem 0 0;font-size:.84rem}.identity-links{gap:.75rem;margin-top:1.35rem;display:flex}.identity-links a{color:#fffc;background:#ffffff12;border:1px solid #ffffff38;border-radius:50%;place-items:center;width:34px;height:34px;transition:color .18s,border-color .18s,background .18s;display:grid}.identity-links svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:17px;height:17px}.identity-links a:hover{color:#77dfc9;background:#77dfc91f;border-color:#77dfc9}.identity-details{color:#ffffffb8;text-align:left;border-top:1px solid #ffffff24;gap:.7rem;width:100%;margin-top:2rem;padding-top:1.4rem;font-size:.7rem;display:grid}.identity-details p,.identity-details a{align-items:center;gap:.65rem;margin:0;display:flex}.identity-details svg{fill:none;stroke:#77dfc9;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px;flex:none;width:15px}.identity-details a{transition:color .18s}.identity-details a:hover{color:#fff}.identity-action{color:#fff;letter-spacing:.1em;text-transform:uppercase;background:0 0;border:1px solid #ffffffb8;width:100%;min-height:44px;margin-top:3rem;font-size:.7rem;font-weight:700;transition:background .18s,border-color .18s,color .18s}.identity-action:hover{color:#12383c;background:#77dfc9;border-color:#77dfc9}.identity-footer{color:#ffffff7a;letter-spacing:.06em;justify-content:space-between;width:100%;margin-top:auto;padding-top:1.75rem;font-size:.62rem;display:flex}.content-card{background:#f8f9f6;grid-template-columns:minmax(0,1fr) 82px;min-width:0;min-height:0;display:grid}.panel-stage{overscroll-behavior:contain;min-width:0;min-height:0;animation:.48s cubic-bezier(.22,.7,.3,1) both panel-in;overflow:auto}.panel{min-height:100%;padding:clamp(2.5rem,6vw,5.5rem)}.panel--about{grid-template-columns:minmax(260px,.95fr) minmax(260px,1.05fr);align-items:center;gap:clamp(1.5rem,5vw,4rem);display:grid;position:relative;overflow:hidden}.about-intro{z-index:2;position:relative}.about-intro h1{color:#101b20;letter-spacing:-.07em;margin:0 0 1.5rem;font:800 clamp(3.7rem,7vw,6.5rem)/.88 Manrope,sans-serif}.lead{color:#657176;max-width:35rem;margin:0;font-size:clamp(.95rem,1.5vw,1.08rem);line-height:1.75}.panel-actions{flex-wrap:wrap;gap:.75rem;margin-top:2rem;display:flex}.action-button{letter-spacing:.08em;text-transform:uppercase;background:0 0;border:1px solid #d0d8d5;min-height:46px;padding:0 1.25rem;font-size:.73rem;font-weight:700;transition:transform .18s,background .18s,color .18s}.action-button:hover{transform:translateY(-2px)}.action-button--primary{color:#fff;background:#3eaa94;border-color:#3eaa94}.action-button--quiet:hover{background:#edf2ef}.portrait-wrap{align-self:stretch;min-height:430px;position:relative}.portrait-wrap:after{aspect-ratio:1;content:"";background:linear-gradient(145deg,#7ad2c761,#d8eeea29);border-radius:50%;width:135%;position:absolute;bottom:-20%;right:-22%}.portrait-wrap img{z-index:2;object-fit:cover;object-position:center 25%;border-radius:52% 48% 8px 8px/42% 42% 8px 8px;width:min(120%,500px);height:88%;position:absolute;bottom:0;right:-5%;box-shadow:0 26px 50px #2a4a4a2b}.portrait-orbit{z-index:3;border:1px solid #3eaa9480;border-radius:50%;width:42px;height:42px;position:absolute;top:10%;right:4%}.portrait-orbit:after{content:"";background:#3eaa94;border-radius:50%;width:6px;height:6px;position:absolute;top:7px;left:7px}.about-notes{z-index:4;gap:.65rem;display:flex;position:absolute;bottom:2.5rem;right:clamp(2rem,5vw,5rem)}.about-note{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#f8f9f6e0;flex-direction:column;padding:.8rem 1rem;display:flex;box-shadow:0 10px 30px #284a481f}.about-note span{color:#8a9597;letter-spacing:.12em;text-transform:uppercase;font-size:.6rem}.about-note strong{margin-top:.2rem;font-size:.82rem}.panel-nav{background:#fff;border-left:1px solid #dfe5e2;flex-direction:column;display:flex}.panel-nav button{color:#a1acaa;background:0 0;border:0;border-bottom:1px solid #edf0ee;place-items:center;min-height:82px;transition:color .18s,background .18s;display:grid;position:relative}.panel-nav button:before{content:"";opacity:0;background:#42b59e;width:3px;height:100%;position:absolute;top:0;right:0}.panel-nav button:hover,.panel-nav button.is-active{color:#32977f;background:#f5f9f7}.panel-nav button.is-active:before{opacity:1}.panel-nav svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.4px;width:23px}.panel-nav span{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.panel-heading{max-width:620px;margin-bottom:2.5rem}.panel-heading h2{color:#101b20;letter-spacing:-.055em;margin:0 0 1rem;font:800 clamp(2.4rem,5vw,4.6rem)/1 Manrope,sans-serif}.panel-heading>p:last-child{color:#718084;margin:0;line-height:1.7}.project-group+.project-group{margin-top:2.75rem}.project-group__title{color:#3eaa94;letter-spacing:.14em;text-transform:uppercase;margin:0 0 .85rem;font:700 .72rem/1 Manrope,sans-serif}.project-list{border-top:1px solid #dce3e0}.project-row{border-bottom:1px solid #dce3e0;grid-template-columns:40px minmax(0,1fr) 40px;gap:1rem;padding:1.25rem 0;transition:padding .18s,background .18s;display:grid}.project-row:hover{background:#f0f5f2;padding-left:.75rem;padding-right:.75rem}.project-number{color:#a1aeab;padding-top:.2rem;font-size:.68rem;font-weight:700}.project-title-line{align-items:center;gap:.8rem;display:flex}.project-title-line h3{margin:0;font:700 1.05rem/1.3 Manrope,sans-serif}.project-status{color:#7b8987;letter-spacing:.08em;text-transform:uppercase;border:1px solid #d9e3df;flex:none;padding:.2rem .45rem;font-size:.54rem;font-weight:700}.project-status--live{color:#268a75;border-color:#3eaa9459}.project-main>p{color:#758184;margin:.4rem 0 .65rem;font-size:.8rem;line-height:1.55}.project-tags{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.project-tags li{color:#3d9b87;font-size:.62rem;font-weight:700}.project-link{color:#359d87;background:0 0;border:1px solid #d6dfdc;align-self:center;place-items:center;width:34px;height:34px;padding:0;transition:border-color .18s,background .18s,color .18s,transform .18s;display:grid}.project-link svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px;width:17px}.project-link--disabled{color:#bbc3c1}.project-desktop-label{display:none}.project-link:hover{color:#fff;background:#359d87;border-color:#359d87;transform:translateY(-2px)}.contact-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.contact-card{border:1px solid #dce3e0;flex-direction:column;justify-content:center;min-height:64px;padding:.7rem 2.75rem .7rem 1.25rem;transition:border .18s,transform .18s,background .18s;display:flex;position:relative}.contact-card:hover{background:#f0f6f3;border-color:#54bda7;transform:translateY(-3px)}.contact-card>span:first-child{color:#3eaa94;letter-spacing:.12em;text-transform:uppercase;font-size:.65rem;font-weight:700}.contact-card strong{overflow-wrap:anywhere;margin-top:.15rem;font-family:Manrope,sans-serif;font-size:.82rem}.contact-card small{color:#74817e;margin-top:.2rem;font-size:.65rem;line-height:1.35}.contact-arrow{color:#9ca8a5;position:absolute;top:50%;right:1.25rem;transform:translateY(-50%)}.contact-arrow svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:16px;display:block}.contact-mobile-actions{display:contents}.contact-text-button{display:none}.contact-add-action{color:#fff;letter-spacing:.06em;text-transform:uppercase;background:#3eaa94;border:1px solid #3eaa94;align-items:center;gap:.55rem;min-height:46px;margin-top:1.25rem;padding:0 1.25rem;font-size:.73rem;font-weight:700;transition:background .18s,transform .18s;display:none}.contact-add-action:hover{background:#32977f;transform:translateY(-2px)}.contact-add-action svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:20px}.availability{color:#74817e;align-items:center;gap:.65rem;margin-top:2rem;font-size:.78rem;display:flex}.availability-dot{background:#46b99f;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 5px #46b99f1f}.email-toast{z-index:120;color:#fff;opacity:0;pointer-events:none;background:#0b2c33;padding:.8rem 1rem;font-size:.78rem;transition:opacity .18s,transform .18s;position:fixed;bottom:1.5rem;right:1.5rem;transform:translateY(12px);box-shadow:0 12px 30px #051c223d}.email-toast--visible{opacity:1;transform:translateY(0)}.image-viewer{z-index:100;padding:max(1rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(1.25rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left));color:#fff;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#030a0df5;grid-template-rows:auto minmax(0,1fr) auto;align-items:center;animation:.18s both image-viewer-in;display:grid;position:fixed;inset:0}.image-viewer__header{justify-content:space-between;align-items:center;width:min(100%,560px);margin:0 auto;display:flex}.image-viewer__identity{align-items:center;gap:.7rem;font:600 .84rem/1 Manrope,sans-serif;display:flex}.image-viewer__identity img{object-fit:cover;object-position:center 24%;border:1px solid #fffc;border-radius:50%;width:32px;height:32px}.image-viewer__header button{z-index:1;top:1rem;right:1rem;top:max(1rem,env(safe-area-inset-top));right:max(1rem,env(safe-area-inset-right));color:#fff;background:#ffffff24;border:1px solid #ffffff3d;border-radius:50%;place-items:center;width:44px;height:44px;display:grid;position:absolute}.image-viewer__header button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:22px}.image-viewer__photo{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;border-radius:4px;max-width:min(100%,560px);max-height:calc(100svh - 10rem);margin:1rem auto;animation:.24s cubic-bezier(.2,.7,.3,1) both image-viewer-photo-in;display:block;box-shadow:0 24px 70px #0006}.image-viewer>p{color:#ffffff8f;letter-spacing:.04em;text-align:center;margin:0;font-size:.68rem}.project-preview{z-index:110;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#041216c7;place-items:center;padding:clamp(1rem,4vw,3rem);animation:.18s both image-viewer-in;display:grid;position:fixed;inset:0}.project-preview__window{background:#f8f9f6;grid-template-rows:auto minmax(0,1fr);width:min(1120px,100%);height:min(760px,100svh - 2rem);animation:.24s cubic-bezier(.2,.7,.3,1) both image-viewer-photo-in;display:grid;overflow:hidden;box-shadow:0 30px 80px #03101361}.project-preview__header{background:#fff;border-bottom:1px solid #dce3e0;justify-content:space-between;align-items:center;gap:1rem;min-height:82px;padding:1rem 1.25rem;display:flex}.project-preview__label{color:#3eaa94;letter-spacing:.14em;text-transform:uppercase;margin-bottom:.25rem;font-size:.58rem;font-weight:700;display:block}.project-preview__header h2{margin:0;font:700 1.1rem/1.25 Manrope,sans-serif}.project-preview__actions{align-items:center;gap:.65rem;display:flex}.project-preview__actions a{color:#287f6d;letter-spacing:.05em;text-transform:uppercase;border:1px solid #d6dfdc;align-items:center;gap:.35rem;padding:.65rem .85rem;font-size:.68rem;font-weight:700;display:inline-flex}.project-preview__actions a svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:14px}.project-preview__actions a:hover{background:#edf6f2;border-color:#3eaa94}.project-preview__actions button{color:#42504f;background:#edf2ef;border:0;border-radius:50%;place-items:center;width:40px;height:40px;padding:0;display:grid}.project-preview__actions button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:20px}.project-preview__frame-wrap{background:#e8eeeb;min-width:0;min-height:0;position:relative}.project-preview__frame-wrap iframe{background:#fff;border:0;width:100%;height:100%}.project-preview__fallback{color:#ffffffc7;pointer-events:none;background:#0c2429db;margin:0;padding:.55rem .75rem;font-size:.62rem;position:absolute;bottom:1rem;right:1rem}.project-preview__image-wrap{text-align:center;background:linear-gradient(135deg,#ffffff14,#0000 45%),#14292f;min-height:0;padding:clamp(1rem,3vw,2rem);overflow:auto}.project-preview__image-wrap img{border-radius:18px;width:auto;max-width:100%;height:auto;max-height:100%;margin:0 auto;display:block;box-shadow:0 24px 60px #00000059}.project-preview__details{flex-direction:column;place-self:center;align-items:flex-start;max-width:680px;padding:clamp(2rem,7vw,5rem);display:flex}.project-preview__details>p:not(.project-preview__type){color:#526064;margin:1.25rem 0;font:500 clamp(1.2rem,3vw,2rem)/1.55 Manrope,sans-serif}.project-preview__type{color:#8a9695;margin:.8rem 0 0;font-size:.75rem}.project-preview__details small{color:#899492;margin-top:2rem}:focus-visible{outline-offset:3px;outline:2px solid #32977f}@keyframes panel-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes image-viewer-in{0%{opacity:0}to{opacity:1}}@keyframes image-viewer-photo-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}@media (width<=1100px){.site-canvas{padding:1rem;overflow:visible}.profile-shell{grid-template-columns:clamp(230px,26vw,270px) minmax(0,1fr);height:min(760px,100vh - 2rem)}.identity-card{padding:3rem 1.5rem 1.5rem}.identity-details{font-size:.64rem}.content-card{grid-template-columns:minmax(0,1fr) 66px}.panel{padding:clamp(2rem,4vw,3rem)}.panel--about{grid-template-columns:1fr;align-content:center}.portrait-wrap{display:none}.about-notes{bottom:clamp(2rem,4vw,3rem);right:clamp(2rem,4vw,3rem)}}@media (width<=900px){.profile-shell{grid-template-columns:230px minmax(0,1fr);height:auto;min-height:calc(100vh - 2rem)}.panel-stage{overflow:visible}}@media (width<=650px){.site-canvas{padding:0;display:block}.profile-shell{width:100%;min-height:100vh;display:block}.identity-card{text-align:left;background-position:50% 22%;align-items:flex-start;min-height:245px;padding:2rem}.identity-avatar{cursor:zoom-in;width:72px;height:72px;padding:3px;transition:transform .16s,box-shadow .16s}.identity-avatar:active{transform:scale(.94);box-shadow:0 8px 24px #051c2238}.identity-copy{margin-top:1.15rem}.identity-copy h2{font-size:1.45rem}.identity-links{position:absolute;bottom:2rem;right:2rem}.identity-details,.identity-action,.identity-footer{display:none}.content-card{flex-direction:column-reverse;min-height:calc(100vh - 245px);display:flex}.panel-nav{z-index:10;border-bottom:1px solid #dfe5e2;border-left:0;flex-direction:row;position:sticky;top:0}.panel-nav button{border-bottom:0;border-right:1px solid #edf0ee;flex:1;min-height:64px}.panel-nav button:before{width:100%;height:3px;top:auto;bottom:0;right:0}.panel{min-height:calc(100vh - 309px);padding:2.25rem 1.5rem 3rem}.about-intro h1{font-size:clamp(3.5rem,19vw,5.4rem)}.about-notes{flex-wrap:wrap;width:fit-content;margin-top:2.5rem;position:static}.project-row{grid-template-columns:30px minmax(0,1fr) 34px}.project-link--desktop-only,.project-link--disabled{display:none}.project-desktop-label{color:#8a9695;text-align:center;text-transform:uppercase;align-self:center;font-size:.55rem;font-weight:700;line-height:1.25;display:block}.project-title-line{flex-direction:column;align-items:flex-start;gap:.35rem}.contact-grid{grid-template-columns:1fr}.contact-mobile-actions{grid-template-columns:minmax(0,1fr) 64px;gap:.65rem;display:grid}.contact-text-button{color:#fff;letter-spacing:.08em;text-transform:uppercase;background:#3eaa94;border:1px solid #3eaa94;align-content:center;place-items:center;gap:.2rem;min-height:64px;font-size:.58rem;font-weight:700;transition:background .18s,transform .18s;display:grid}.contact-text-button:hover{background:#32977f;transform:translateY(-2px)}.contact-text-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;width:23px}.contact-add-action{justify-content:center;width:100%;display:inline-flex}.project-preview{padding:0}.project-preview__window{width:100%;height:100svh}.project-preview__header{min-height:72px;padding:.8rem 1rem}.project-preview__actions a{text-align:center;border-radius:50%;width:40px;height:40px;padding:0;font-size:0;overflow:hidden}.project-preview__actions a svg{width:18px}.project-preview__fallback{text-align:center;bottom:.75rem;left:.75rem;right:.75rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
