
:root{--sans:Arial,Helvetica,sans-serif;--serif:Arial,Helvetica,sans-serif;--muted:#9c9ca5}
body{background:#050506;color:#f5f5f7}.page-home .wrap{position:relative;z-index:1}
.home-portal{min-height:max(780px,calc(100svh - 20px));padding:95px 0 65px;isolation:isolate}
.portal-identity{position:relative;width:min(960px,100%);max-width:960px;margin:auto}
.portal-eyebrow{font-size:20px;font-weight:500;letter-spacing:-.025em;color:#c7c7cd;margin-bottom:28px}
.wordmark{display:block;padding:0;margin:0;font-family:Arial,Helvetica,sans-serif;font-size:clamp(44px,5.2vw,82px);font-weight:700;line-height:1.06;letter-spacing:-.055em;transform:none;filter:none;background:none;color:#f5f5f7;-webkit-text-stroke:0}
.wordmark span{color:#999aa4}.wordmark::after{content:none}
.portal-summary{font-size:18px;line-height:1.6;color:#a4a4ad;margin:24px auto 0;max-width:480px;letter-spacing:-.025em}
.portal-nav{display:flex;justify-content:center;gap:8px;margin:34px auto 0;padding:7px;width:max-content;max-width:100%;border:1px solid #ffffff15;border-radius:22px;background:#ffffff05}
.portal-nav a{font-size:14px;min-width:88px;flex-direction:row;gap:9px;padding:12px 14px;border-radius:15px;color:#a8a8b1;transition:background .2s,color .2s}
.portal-nav a[aria-current=page]{background:#ffffff0c;color:#fff}.portal-nav a:hover{color:#fff;background:#ffffff0a;transform:none}
.portal-nav .icon{width:19px;height:19px;opacity:.85;transform:none;filter:invert(1)}.portal-nav a:hover .icon{transform:none;filter:invert(1)}
.hero-skills{margin:46px auto 0;max-width:750px;padding-top:27px;border-top:1px solid #ffffff16}
.hero-skills h2{font-size:14px;line-height:1.5;font-weight:500;letter-spacing:0;color:#9d9da6;margin-bottom:18px}
.hero-skills ul{list-style:none;display:flex;justify-content:center;flex-wrap:wrap;gap:12px 27px;padding:0;margin:0}
.hero-skills li{font-size:16px;font-weight:600;color:#d7d7dd;letter-spacing:-.02em}
.portal-email{font-size:14px;color:#92929d;margin-top:30px}.portal-email:hover{color:#fff}
.selected-preview{margin-top:45px}.selected-preview>.label{font-size:14px;letter-spacing:0;color:#aaaab4}
.nav .icon{width:18px;height:18px;opacity:.7}.nav a{gap:12px}.project-dialog{border-radius:20px}
.wrap{animation:quiet-arrival .45s ease both}@keyframes quiet-arrival{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
body.is-leaving .wrap{opacity:0;transition:opacity .15s ease}.project-dialog[open]{animation:quiet-arrival .25s ease both}
.feature-photo.is-switching{animation:quiet-arrival .3s ease both}.entered .portal-identity{animation:none}
.bubble-stage{position:fixed;inset:0;z-index:2;overflow:hidden;pointer-events:none;transition:opacity .4s;contain:layout style}
.bubble-stage.is-hidden{opacity:0;visibility:hidden}.bubble-stage button{pointer-events:auto}
.floating-bubble,.bubble-cursor{position:absolute;top:0;left:0;border-radius:50%;background:radial-gradient(ellipse at 27% 20%,#ffffff36 0%,#ffffff06 17%,transparent 31%),radial-gradient(ellipse at 73% 78%,#ccd1ff1c,transparent 51%),radial-gradient(circle at 50% 48%,transparent 55%,#edf4ff09 67%,#d7e1ff4d 72%,#ffffff85 74%,#ffffff10 77%,transparent 80%);border:1px solid #f7fbff3b;box-shadow:inset 1px 1px 2px #ffffff35,inset -1px -2px 3px #9daaf729,0 0 18px #b5c5ff05;will-change:transform;cursor:pointer;padding:0}
.floating-bubble::before,.bubble-cursor::before{content:'';position:absolute;inset:5%;border-radius:50%;border:1px solid transparent;border-top-color:#f8fcff8c;border-left-color:#f4f7ff24;transform:rotate(-32deg);pointer-events:none}
.floating-bubble::after,.bubble-cursor::after{content:'';position:absolute;left:19%;top:15%;width:22%;height:8%;border-radius:50%;background:#ffffffb0;filter:blur(.7px);transform:rotate(-37deg);opacity:.6;pointer-events:none}
.floating-bubble:hover{border-color:#ffffffe0;box-shadow:inset 1px 1px 2px #ffffff60,0 0 28px #b5c5ff16}.floating-bubble:focus-visible{outline:2px solid #b9ceff;outline-offset:6px}
.bubble-cursor{position:fixed;width:25px;height:25px;pointer-events:none;z-index:220;opacity:0;transition:opacity .2s,width .2s,height .2s;mix-blend-mode:screen;cursor:none}
.bubble-cursor.is-visible{opacity:1}.bubble-cursor.is-hovering{width:39px;height:39px;border-color:#f5f8ff99}
.bubble-fragment{position:fixed;width:5px;height:5px;border:1px solid #e8f2ff80;border-radius:50%;pointer-events:none;z-index:3}.bubble-pop-ring{position:fixed;border:1px solid #eaf2ff90;border-radius:50%;pointer-events:none;z-index:3}
body:has(.project-dialog[open]) .bubble-stage{visibility:hidden}
@media(hover:hover) and (pointer:fine){.page-home.bubble-pointer,.page-home.bubble-pointer a,.page-home.bubble-pointer button{cursor:none}.page-home.bubble-pointer .project-dialog,.page-home.bubble-pointer .project-dialog a,.page-home.bubble-pointer .project-dialog button{cursor:auto}}
@media(max-width:700px){.home-portal{min-height:750px;padding:76px 8px 48px}.portal-eyebrow{font-size:18px;margin-bottom:24px}.wordmark{font-size:clamp(34px,7.9vw,54px);line-height:1.12;letter-spacing:-.05em}.portal-summary{font-size:16px;max-width:275px;margin-top:22px}.portal-nav{gap:0;margin-top:28px;border-radius:18px;padding:5px}.portal-nav a{min-width:0;flex-direction:column;gap:7px;padding:10px 13px;font-size:14px;border-radius:13px}.portal-nav .icon{width:18px;height:18px}.hero-skills{margin-top:35px;padding-top:24px;max-width:360px}.hero-skills ul{gap:14px 18px}.hero-skills li{font-size:14px}.hero-skills h2{font-size:14px}.portal-email{margin-top:27px}.selected-preview{margin-top:20px}.page-home .footer{margin-top:32px}}
@media(prefers-reduced-motion:reduce){.wrap,.project-dialog[open],.feature-photo.is-switching{animation:none}.bubble-cursor,.bubble-fragment,.bubble-pop-ring{display:none}.page-home.bubble-pointer,.page-home.bubble-pointer a,.page-home.bubble-pointer button{cursor:auto}body.is-leaving .wrap{transition:none}}

body:has(.project-dialog[open]) .bubble-cursor{display:none}

/* A signature typographic opening, with a soft lens reveal. */
.portal-eyebrow{font-size:clamp(30px,3.6vw,50px);font-weight:600;color:#f5f5f7;letter-spacing:-.045em;margin-bottom:32px;animation:name-reveal .9s cubic-bezier(.16,1,.3,1) both}
.home-portal{padding-top:70px;padding-bottom:60px;min-height:max(820px,calc(100svh - 20px))}
.wordmark{font-size:clamp(44px,5vw,78px);font-weight:600;letter-spacing:-.045em;line-height:1.12;width:max-content;max-width:100%;margin:auto;text-align:left}
.wordmark .role-line{display:flex;align-items:baseline;gap:22px;color:#f2f2f5;animation:role-reveal 1s cubic-bezier(.16,1,.3,1) both;animation-delay:.14s}
.wordmark .role-line:nth-child(2){animation-delay:.28s}
.wordmark .role-number{font-size:12px;font-weight:400;letter-spacing:.08em;color:#666b77;align-self:center;min-width:16px}
.wordmark em{font-family:'Instrument Serif',Georgia,serif;font-weight:400;letter-spacing:-.035em;color:#bfc4d0;font-size:1.16em}
.portal-summary{animation:role-reveal .8s ease both;animation-delay:.4s}
.portal-nav{animation:role-reveal .8s ease both;animation-delay:.5s}
.hero-skills{animation:role-reveal .8s ease both;animation-delay:.6s}
.portal-identity::before{content:'';position:absolute;left:50%;top:39%;width:100px;height:100px;margin:-50px 0 0 -50px;border-radius:50%;border:1px solid #cedaff60;box-shadow:0 0 50px #c6d2ff15,inset 0 0 35px #bfcfff10;pointer-events:none;animation:lens-opening 1.3s cubic-bezier(.16,1,.3,1) both}
@keyframes name-reveal{from{opacity:0;filter:blur(9px);transform:translateY(14px);letter-spacing:.035em}to{opacity:1;filter:none;transform:none;letter-spacing:-.045em}}
@keyframes role-reveal{from{opacity:0;filter:blur(5px);transform:translateY(18px)}to{opacity:1;filter:none;transform:none}}
@keyframes lens-opening{0%{opacity:0;transform:scale(.1)}18%{opacity:.6}100%{opacity:0;transform:scale(8)}}
.employment{position:relative;max-width:850px;margin:45px auto 75px;text-align:left}
.employment-heading{margin-bottom:30px}.employment-heading .label{font-size:14px;letter-spacing:0;color:#959ba8;margin-bottom:12px}.employment-heading h2{font-size:clamp(29px,3vw,40px);font-weight:500;letter-spacing:-.045em}
.employment-row{display:flex;justify-content:space-between;align-items:start;gap:28px;padding:26px 0;border-top:1px solid #ffffff18}
.employment-row h3{font-size:20px;font-weight:600;letter-spacing:-.025em;margin:0 0 8px}.employment-row h3 span{display:inline-block;font-size:14px;color:#858d9c;font-weight:400;margin-left:10px}
.employment-row p{font-size:16px;line-height:1.6;color:#a7aab4}.employment-row .employment-date{font-size:14px;color:#7f8695;flex-shrink:0;padding-top:4px}
.selected-preview{margin-top:45px}.feature-caption{align-items:flex-start}.selected-preview .feature-caption h2{font-size:clamp(25px,3vw,34px);line-height:1.2;max-width:690px;letter-spacing:-.035em}
.floating-bubble,.bubble-cursor{background:radial-gradient(ellipse at 29% 18%,#ffffffa8 0%,#ffffff36 9%,transparent 24%),radial-gradient(ellipse at 74% 82%,#d4e5ff35,transparent 43%),radial-gradient(circle at 50% 48%,#b7c9ef05 45%,#8a9caf1c 62%,#c6d8f161 68%,#f4f9ffc4 72%,#52667b5c 74%,#ffffff36 77%,transparent 81%);border-color:#c4d6f36b;box-shadow:inset 1px 1px 3px #ffffff82,inset -2px -3px 5px #bdcced52,0 0 16px #c2d9ff0a}
.floating-bubble::before,.bubble-cursor::before{border-top-color:#ffffffec;border-left-color:#ecf5ff74;inset:4%;filter:drop-shadow(0 1px 2px #bfd8ff30)}
.floating-bubble::after,.bubble-cursor::after{background:#fff;opacity:.9;filter:blur(.45px);left:18%;top:13%;width:23%;height:8%}
@media(max-width:700px){.portal-eyebrow{font-size:32px;margin-bottom:28px}.home-portal{padding:65px 5px 45px;min-height:780px}.wordmark{font-size:clamp(30px,7.3vw,48px)}.wordmark .role-line{gap:10px}.wordmark .role-number{font-size:10px;min-width:11px}.employment{margin:35px auto 55px}.employment-row{display:block;padding:24px 0}.employment-row h3{font-size:20px}.employment-row .employment-date{padding-top:12px}.employment-row h3 span{display:block;margin:5px 0 0}.employment-heading h2{font-size:32px}.selected-preview .feature-caption h2{font-size:25px}.feature-caption{gap:12px}.feature-caption>span{padding-top:4px}}
@media(prefers-reduced-motion:reduce){.portal-eyebrow,.wordmark .role-line,.portal-summary,.portal-nav,.hero-skills,.portal-identity::before{animation:none}.portal-identity::before{display:none}}

.wordmark .role-line>span:last-child{color:inherit}

.home-portal{overflow:clip}
