@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Libre+Baskerville:ital@1&display=swap');
:root{--bg:#0d0115;--text:#ffffff;--muted:#ffffffc7;--accent:#dfba1f;--line:#ffffff26}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:35px}body{margin:0;background:var(--bg);color:var(--text);font-family:'Inter','Arial Narrow',Arial,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:6px}::selection{background:var(--accent);color:var(--bg)}header,main,footer{max-width:1600px;margin:auto}header{display:flex;align-items:center;justify-content:space-between;padding:36px 6%;border-bottom:1px solid var(--line)}.wordmark{font-size:24px;letter-spacing:-1.2px;font-weight:600}.wordmark span{font-size:11px;vertical-align:top;margin-left:4px}nav{display:flex;gap:38px;align-items:center;font-size:13px}nav a{transition:color .2s}nav a:hover{color:var(--accent)}nav span{margin-left:8px;color:var(--muted);font-size:10px}.nav-contact{padding-bottom:6px}.nav-contact span{font-size:18px;color:var(--accent)}.hero{padding:54px 6% 0;position:relative;overflow:hidden}.eyebrow,.project-meta,.art-label,.art-caption{font-size:10px;font-weight:500;letter-spacing:1.5px}.hero .eyebrow{display:flex;align-items:center;gap:10px}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--accent)}.hero-location{margin-left:auto;color:var(--muted)}h1{font-size:clamp(56px,7.6vw,116px);font-weight:500;line-height:1.01;letter-spacing:-6px;margin:43px 0 38px}.serif{font-family:Baskerville,'Baskerville Old Face','Libre Baskerville',Georgia,serif;font-weight:400;font-style:italic;letter-spacing:-.045em}.period{color:var(--accent)}.hero-bottom{display:flex;justify-content:space-between;align-items:center;padding-bottom:51px}.hero-bottom p{font-size:15px;line-height:1.7;color:var(--muted)}.round-link{display:flex;gap:24px;align-items:center;font-size:12px}.circle{display:grid;place-items:center;width:47px;height:47px;border:1px solid #ffffff66;border-radius:50%;font-size:21px;transition:background .2s,color .2s,transform .2s}.round-link:hover .circle{background:var(--accent);color:var(--bg);transform:translateY(3px)}.hero-index{font-size:9px;letter-spacing:2px;color:#ffffffa3;padding-bottom:20px}.proof{margin:0 6%;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;grid-template-columns:repeat(3,1fr);padding:33px 0}.proof>div{padding:0 30px;border-left:1px solid var(--line)}.proof>div:first-child{padding-left:0;border:0}.proof strong{font-size:32px;font-weight:500;letter-spacing:-1px}.proof strong span{font-size:19px;letter-spacing:-.5px}.proof p{font-size:11px;color:var(--muted);margin-bottom:0}.work{padding:85px 6% 90px}.section-heading{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:36px}.section-heading p{margin:0;font-size:19px;line-height:1.4;letter-spacing:-.4px}.project{border:1px solid var(--line);border-radius:3px;overflow:hidden}.project-ai{display:grid;grid-template-columns:44% 56%;min-height:445px;background:#16061f}.project-copy{padding:38px;display:flex;flex-direction:column}.project-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:9px;letter-spacing:1px}.project h2{font-size:45px;line-height:1.06;letter-spacing:-2px;font-weight:500;margin:38px 0 20px}.project p{font-size:13px;line-height:1.7;color:var(--muted);max-width:330px}.tags{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 30px}.tags span{border:1px solid #ffffff33;padding:6px 9px;border-radius:20px;font-size:9px;color:var(--muted)}.project-button{margin-top:auto;display:flex;justify-content:space-between;align-items:center;border:0;border-top:1px solid #ffffff33;background:none;color:var(--text);padding:17px 0 0;cursor:pointer;text-align:left;font-size:12px}.project-button span{font-size:21px;transition:transform .2s}.project-button:hover span{transform:translate(3px,-3px);color:var(--accent)}.ai-art{background:#21092d;position:relative;color:#ffffff;overflow:hidden;display:grid;place-items:center;min-height:400px}.art-label{position:absolute;top:25px;left:25px;font-size:8px;z-index:2}.orbit{position:absolute;width:310px;height:310px;border:1px solid #dfba1f66;border-radius:50%;transform:rotate(-25deg)}.orbit-two{width:430px;height:230px;transform:rotate(-45deg)}.orbit-one:after{content:'';position:absolute;left:35px;top:37px;width:9px;height:9px;background:#dfba1f;border-radius:50%}.ai-core{width:180px;height:180px;border-radius:50%;background:#4c2068;box-shadow:0 12px 55px #0d011533;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;font-size:18px;line-height:1.15;letter-spacing:-.6px;z-index:1}.spark{font-size:42px;color:#dfba1f;line-height:1;animation:turn 35s linear infinite}.node{position:absolute;background:#21092ded;border:1px solid #ffffff40;padding:11px 16px;border-radius:7px;box-shadow:0 5px 15px #0d011533;font-size:10px;display:flex;gap:9px;align-items:center;z-index:2}.node i{width:5px;height:5px;background:#dfba1f;border-radius:50%}.node-one{top:24%;left:13%}.node-two{bottom:24%;right:9%}.node-three{bottom:17%;left:14%}.art-caption{position:absolute;bottom:25px;right:25px;font-size:8px}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:24px}.small-project{background:#16061f}.platform-art,.zinnia-art{height:310px;position:relative;overflow:hidden}.platform-art{background:#21092d;display:grid;place-items:center;color:#ffffff}.stack{position:absolute;width:230px;height:170px;border-radius:7px;transform:rotate(-10deg);border:1px solid #ffffff40}.stack-back{background:#8f2bc7;transform:translate(35px,-15px) rotate(9deg)}.stack-middle{background:#542064;transform:translate(12px,-5px) rotate(0deg)}.stack-front{background:#270b34;padding:22px;box-shadow:0 12px 20px #0d011533}.stack-front>span{font-size:12px;font-weight:600}.mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:14px 0}.mini-grid i{height:22px;background:#ffffff26;border-radius:3px}.mini-grid i:nth-child(2){background:#c38b20}.mini-line{height:4px;background:#ffffff4d;width:65%;margin-top:8px}.mini-line.short{width:40%}.zinnia-art{background:#21092d;color:#ffffff;padding:65px 35px 30px}.flower{position:absolute;right:25px;top:40px;font-size:165px;line-height:1;color:#dfba1f;transform:rotate(15deg)}.zinnia-title{font-size:38px;line-height:1.06;letter-spacing:-1.5px;position:relative;margin-top:27px}.zinnia-title em{font-family:Baskerville,'Baskerville Old Face','Libre Baskerville',Georgia,serif;font-weight:400}.zinnia-pill{border:1px solid #dfba1f88;border-radius:22px;font-size:8px;letter-spacing:1px;padding:10px 13px;width:145px;margin-top:25px;display:flex;justify-content:space-between}.small-copy{padding:30px}.small-copy h2{font-size:32px;letter-spacing:-1px;margin:28px 0 15px}.small-copy p{min-height:48px;margin-bottom:26px}.work-note{font-size:10px;color:var(--muted);margin-top:23px}.about{border-top:1px solid var(--line);padding:65px 6% 90px}.about-content{display:grid;grid-template-columns:1.25fr 1fr;gap:60px;margin-top:38px}.about h2{font-size:clamp(38px,4vw,60px);letter-spacing:-2px;font-weight:500;line-height:1.08;margin:0}.about-body p{font-size:14px;line-height:1.8;color:var(--muted);margin-top:0}.about-body .about-lead{font-size:19px;color:var(--text);line-height:1.4;letter-spacing:-.4px}.practice{display:flex;flex-direction:column;margin-top:26px}.practice span{border-top:1px solid var(--line);padding:12px 0;font-size:11px}.contact{background:#16061f;padding:57px 6% 65px}.contact>p{font-size:14px;color:var(--muted);margin-top:45px}.contact h2{font-size:clamp(46px,6.7vw,95px);font-weight:500;line-height:1.04;letter-spacing:-4px;margin:20px 0 35px}.contact h2 .period{display:inline-block;margin-left:22px;font-size:.75em}.contact-link{display:inline-flex;gap:60px;align-items:center;border-bottom:1px solid var(--muted);padding-bottom:12px;font-size:13px}.contact-link:hover{color:var(--accent)}footer{padding:35px 6%;display:flex;align-items:center;justify-content:space-between}footer>span{font-size:8px;letter-spacing:1px;color:var(--muted)}footer>a:last-child{font-size:10px}.skip{position:fixed;top:10px;left:10px;z-index:5;background:var(--text);color:var(--bg);padding:12px;transform:translateY(-200%)}.skip:focus{transform:none}dialog{background:#16061f;color:var(--text);border:1px solid #ffffff66;border-radius:5px;padding:55px;max-width:610px;width:calc(100% - 36px)}dialog::backdrop{background:#0d0115cc;backdrop-filter:blur(8px)}dialog h2{font-size:40px;font-weight:500;letter-spacing:-1.5px;line-height:1.1}dialog p{color:var(--muted);font-size:14px;line-height:1.7}.dialog-close{position:absolute;right:17px;top:17px;color:var(--text);border:0;background:none;font-size:20px;cursor:pointer}.dialog-detail{border-top:1px solid var(--line);margin-top:30px;padding-top:20px}.dialog-detail>span{font-size:9px;letter-spacing:1px}.dialog-note{font-size:11px!important;border-top:1px solid var(--line);padding-top:20px}.motion-ready .reveal{opacity:0;transform:translateY(24px);transition:opacity .7s,transform .7s}.motion-ready .reveal.visible{opacity:1;transform:none}.motion-ready h1{animation:entrance .85s both}.motion-ready .hero-bottom{animation:entrance 1s .15s both}@keyframes entrance{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}@keyframes turn{to{transform:rotate(360deg)}}@media(min-width:1600px){h1{font-size:116px}}@media(max-width:850px){header{padding:27px 6%}nav{gap:20px}h1{letter-spacing:-3px}.hero{padding-top:38px}.project-copy{padding:26px}.project h2{font-size:36px}.tags{gap:4px}.tags span{font-size:8px}.node-one{left:5%}.node-two{right:4%}.node-three{left:7%}.small-copy{padding:24px}.small-copy h2{font-size:28px}.zinnia-title{font-size:32px}.flower{font-size:135px}.about-content{gap:30px}footer>span{display:none}}@media(max-width:600px){header{padding:24px 6%}.wordmark{font-size:21px}nav{gap:19px;font-size:11px}nav span{display:none}.hero-location{display:none}.eyebrow{font-size:8px}h1{font-size:clamp(42px,10.1vw,60px);letter-spacing:-2.5px;margin:36px 0 27px}.hero-bottom{align-items:flex-start;flex-direction:column;gap:15px;padding-bottom:30px}.hero-bottom p{font-size:13px}.round-link{gap:20px}.circle{width:35px;height:35px;font-size:17px}.hero-index{font-size:7px;letter-spacing:1.2px;padding-top:15px}.proof{padding:23px 0;gap:20px;grid-template-columns:1fr}.proof>div{border-left:0;border-top:1px solid var(--line);padding:19px 0 0}.proof>div:first-child{padding:0}.proof strong{font-size:27px}.proof strong span{font-size:17px}.proof p{font-size:11px;margin-top:5px}.work{padding-top:50px;padding-bottom:45px}.section-heading p{font-size:15px}.project-ai{grid-template-columns:1fr}.project-copy{padding:26px}.project h2{font-size:40px;margin-top:28px}.ai-art{min-height:330px;grid-row:1}.ai-core{width:150px;height:150px}.orbit-one{width:255px;height:255px}.orbit-two{width:360px;height:190px}.project-grid{grid-template-columns:1fr;gap:20px;margin-top:20px}.small-project h2{font-size:32px}.small-copy p{min-height:0}.platform-art,.zinnia-art{height:290px}.work-note{line-height:1.7}.about{padding-top:40px;padding-bottom:40px}.about-content{grid-template-columns:1fr;gap:30px;margin-top:27px}.about h2{font-size:39px;letter-spacing:-1.5px}.about-body p{font-size:13px}.contact{padding-top:40px;padding-bottom:45px}.contact>p{margin-top:30px;font-size:12px}.contact h2{font-size:44px;letter-spacing:-2px}.contact h2 .period{margin-left:8px}footer{padding-top:25px;padding-bottom:25px}dialog{padding:40px 25px}dialog h2{font-size:32px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.motion-ready .reveal{opacity:1;transform:none}}

/* Violet depth and restrained glass surfaces. Solid fills are the blur fallback. */
:root{--violet:#8f2bc7;--gold-warm:#c38b20;--gold-deep:#8d711a;--glass:#12041be6}
body{background-color:var(--bg);background-image:radial-gradient(ellipse 85% 800px at 95% 4%,#8f2bc712,transparent 75%),radial-gradient(ellipse 75% 800px at 0% 53%,#8f2bc70b,transparent 75%),radial-gradient(ellipse 75% 600px at 100% 100%,#c38b2006,transparent 75%)}
header{background:#0d011533}
.proof{background:linear-gradient(120deg,#ffffff03,#8f2bc705);padding:33px 24px;border:1px solid var(--line);border-radius:12px}
.project{border-color:#ffffff33;border-radius:16px;box-shadow:0 16px 50px #0d011533,inset 0 1px 0 #ffffff0d}
.project-ai,.small-project{background:linear-gradient(135deg,#ffffff04,#8f2bc705),var(--glass)}
.ai-art{background:radial-gradient(ellipse at 70% 30%,#8f2bc71f,transparent 70%),linear-gradient(145deg,#21092d,#13021c)}
.ai-core{background:linear-gradient(145deg,#ffffff1f,#ffffff08),#270b34;box-shadow:0 12px 55px #0d011533,inset 0 1px 0 #ffffff40;border:1px solid #ffffff33}
.node{background:#21092ded;box-shadow:0 8px 24px #0d01154d}
.orbit{border-color:#dfba1f55}.orbit-two{border-color:#c38b2066}.orbit-one:after{background:var(--gold-warm);box-shadow:0 0 18px #dfba1f66}
.platform-art{background:radial-gradient(ellipse at 15% 30%,#8f2bc729,transparent 75%),linear-gradient(130deg,#21092d,#13021c)}
.stack-back{background:linear-gradient(135deg,var(--violet),#542064)}
.stack-middle{background:linear-gradient(135deg,#8d711a,#c38b20);border-color:#dfba1f66}
.stack-front{background:linear-gradient(145deg,#ffffff17,#ffffff05),#270b34;box-shadow:0 12px 35px #0d011533}
.zinnia-art{background:radial-gradient(ellipse at 85% 15%,#8f2bc71f,transparent 75%),linear-gradient(145deg,#21092d,#13021c)}
.flower{color:var(--accent);text-shadow:0 8px 38px #c38b2026}.zinnia-pill{color:var(--accent);background:#0d011533}
.contact{border-top:1px solid var(--line);background:radial-gradient(ellipse at 90% 60%,#8f2bc712,transparent 70%),linear-gradient(130deg,#ffffff04,#ffffff02)}
dialog{background:linear-gradient(135deg,#ffffff05,#8f2bc706),#16061ff5;border-color:#ffffff40;box-shadow:0 30px 90px #0d011599;border-radius:16px}
@supports ((backdrop-filter:blur(8px)) or (-webkit-backdrop-filter:blur(8px))){
 header,.proof,.project,dialog{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
 .node{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}
}
@media(max-width:600px){.proof{padding:23px 20px}}

/* Quiet surfaces keep the typography and work in focus. */
.project{border-color:#ffffff1f;box-shadow:0 8px 28px #0d01151a,inset 0 1px 0 #ffffff05}
.ai-core{background:linear-gradient(145deg,#ffffff0b,#ffffff03),#21092d;border-color:#ffffff24;box-shadow:0 8px 28px #0d011526}
.node{border-color:#ffffff26;box-shadow:0 4px 12px #0d011526}
.stack-front{background:linear-gradient(145deg,#ffffff09,#ffffff02),#21092d;box-shadow:0 8px 24px #0d011526}
dialog{border-color:#ffffff26;box-shadow:0 16px 48px #0d011566}

/* KPI typography and one-time motion. */
.proof strong,.proof strong span{font-family:Baskerville,'Baskerville Old Face','Libre Baskerville',Georgia,serif;font-size:clamp(30px,3vw,44px);font-weight:400;font-style:italic;line-height:1.15;letter-spacing:-1px}
.proof .kpi-value{display:inline-block;white-space:nowrap}
.proof [data-count]{font-variant-numeric:tabular-nums}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.kpi-animate .kpi{animation:kpi-arrive .7s cubic-bezier(.2,.7,.2,1) both}
.kpi-animate .kpi:nth-child(2){animation-delay:.12s}
.kpi-animate .kpi:nth-child(3){animation-delay:.24s}
@keyframes kpi-arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.kpi-animate .kpi{animation:none!important}}

/* A compact personal note beneath the about section. Glyphs await hand-drawn icons. */
.fun-facts{margin-top:40px;padding-top:25px;border-top:1px solid var(--line)}
.fun-facts>h3{font-family:Baskerville,'Baskerville Old Face','Libre Baskerville',Georgia,serif;font-style:italic;font-weight:400;font-size:25px;letter-spacing:-.5px;margin:0 0 22px}
.fun-facts-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
.fun-facts-grid article{display:flex;align-items:flex-start;gap:14px}
.fun-icon{display:flex;align-items:center;justify-content:center;flex:0 0 34px;width:34px;height:38px;color:var(--accent);font-family:Georgia,serif;font-size:29px;line-height:1}
.fun-facts h4{font-size:14px;font-weight:500;letter-spacing:-.2px;line-height:1.4;margin:0 0 8px}
.fun-facts p{font-size:13px;line-height:1.7;margin:0;color:var(--muted);max-width:265px}
@media(max-width:700px){.fun-facts-grid{grid-template-columns:1fr;gap:22px}.fun-facts{margin-top:30px}.fun-facts p{max-width:none}.fun-facts-grid article{gap:16px}}

/* Tools support the introduction without competing with the experience figures. */
.toolkit{margin:0 0 30px;max-width:760px}
.toolkit-label{font-size:9px;letter-spacing:1.4px;color:var(--muted)}
.toolkit-tiles{list-style:none;padding:0;margin:14px 0 0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.toolkit-tiles li{display:flex;align-items:center;gap:13px;padding:15px 18px;background:linear-gradient(135deg,#ffffff05,#ffffff02);border:1px solid #ffffff1f;border-radius:9px;font-size:13px;line-height:1.4}
.toolkit-tiles img{display:block;flex-shrink:0;filter:invert(1);width:24px;height:24px}
.toolkit-note{font-size:11px;line-height:1.7;color:var(--muted);margin:12px 0 0}
@media(max-width:600px){.toolkit{margin-top:6px;margin-bottom:25px}.toolkit-tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.toolkit-tiles li{font-size:13px;padding:14px}.toolkit-label{font-size:9px}}

/* Both languages occupy the same wordmark position. */
.wordmark{position:relative;display:inline-block;font-size:24px;letter-spacing:-1.2px;font-weight:600;white-space:nowrap}
.wordmark .name-en,.wordmark .name-ja{display:block;font-size:inherit;line-height:1.4;font-weight:inherit;vertical-align:baseline;margin:0;transition:opacity .22s ease,transform .28s cubic-bezier(.2,.7,.2,1);letter-spacing:inherit}
.wordmark .name-ja{position:absolute;left:0;top:0;opacity:0;transform:translateY(7px);pointer-events:none;font-family:Inter,'Hiragino Kaku Gothic ProN','Yu Gothic',Meiryo,sans-serif;font-size:.78em;letter-spacing:-.04em;color:var(--accent)}
.wordmark:hover .name-en,.wordmark:focus-visible .name-en{opacity:0;transform:translateY(-7px)}
.wordmark:hover .name-ja,.wordmark:focus-visible .name-ja{opacity:1;transform:translateY(0)}
@media(max-width:600px){.wordmark{font-size:21px}}
@media(prefers-reduced-motion:reduce){.wordmark .name-en,.wordmark .name-ja{transition:none;transform:none}}

/* Portrait is styled in-browser; the supplied photo remains in color. */
.hero-intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,31%);gap:26px;align-items:center;margin-top:28px}
.hero-intro h1{font-size:clamp(52px,5.5vw,88px);letter-spacing:-4px;margin:22px 0 28px;position:relative;z-index:1}
.hero-portrait{align-self:end;max-width:385px;width:100%;justify-self:end}
.hero-portrait img{display:block;width:100%;height:auto;filter:grayscale(1) brightness(.88);opacity:.86;-webkit-mask-image:linear-gradient(to bottom,#000 73%,transparent 100%);mask-image:linear-gradient(to bottom,#000 73%,transparent 100%)}
@media(max-width:1000px){.hero-intro{grid-template-columns:minmax(0,1fr) 27%;gap:15px}.hero-intro h1{font-size:clamp(44px,5.7vw,65px);letter-spacing:-2.5px}}
@media(max-width:700px){.hero-intro{grid-template-columns:1fr;margin-top:18px;gap:0}.hero-intro h1{font-size:clamp(42px,9.6vw,60px);letter-spacing:-2.5px;margin:18px 0 10px}.hero-portrait{max-width:240px;justify-self:end;margin-top:8px}.hero-bottom{margin-top:12px}}

/* Crop the new portrait within the layout while retaining the original image. */
.hero-portrait img{aspect-ratio:4/5;object-fit:cover;object-position:50% 25%;border-radius:10px;filter:grayscale(1) brightness(.84);opacity:.86;-webkit-mask-image:linear-gradient(to bottom,#000 78%,transparent 100%);mask-image:linear-gradient(to bottom,#000 78%,transparent 100%)}


/* Connect the introduction to the headline on an open, unframed hero. */
header{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}
.hero-intro{background:none;border:0;box-shadow:none;padding:0;margin-top:28px;margin-bottom:16px;-webkit-backdrop-filter:none;backdrop-filter:none}
.hero-copy h1{margin-bottom:22px}
.hero-copy>p{font-size:15px;line-height:1.7;color:var(--muted);margin:0 0 24px;max-width:580px}
.hero-bottom{justify-content:flex-end;padding-bottom:30px}
.hero-portrait{background:none;border:0;box-shadow:none}
@media(max-width:700px){.hero-copy h1{margin-bottom:18px}.hero-copy>p{font-size:14px;margin-bottom:8px}.hero-bottom{align-items:flex-end;padding-bottom:24px}}

/* Keep the portrait fully visible without a gradient fade. */
.hero-portrait img{-webkit-mask-image:none;mask-image:none}

/* Oval portrait frame. */
.hero-portrait img{border-radius:50%;aspect-ratio:4/5;object-fit:cover}

/* Matched portrait layers crossfade within one fixed oval crop. */
.hero-portrait{position:relative;aspect-ratio:4/5;border-radius:50%;overflow:hidden;--portrait-mix:0}
.hero-portrait img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 25%;border-radius:0;opacity:calc(.86 * (1 - var(--portrait-mix)));mask-image:none;-webkit-mask-image:none}
.hero-portrait .portrait-playful{filter:none;opacity:var(--portrait-mix);pointer-events:none}
@media(prefers-reduced-motion:reduce){.hero-portrait{--portrait-mix:0!important}}

/* Experience leads immediately after the introduction; tools follow as supporting context. */
.hero{padding-bottom:25px}
.toolkit-section{padding:30px 6% 0}
.toolkit-section .toolkit{margin-bottom:20px}
.toolkit-section .hero-index{padding-bottom:0}

/* Bring experience figures closer to the introductory copy. */
.hero{padding-bottom:0}
.hero-intro{align-items:end;margin-bottom:12px}
.hero-copy>p{margin-bottom:0}
@media(max-width:700px){.hero-intro{margin-bottom:16px}}

/* Compact selected-work heading, aligned with its section label. */
.work{padding-top:36px}
.section-heading{flex-direction:column;align-items:flex-start;gap:14px;margin-bottom:30px}
.section-heading p{text-align:left}
.toolkit-section .toolkit{margin-bottom:0}
@media(max-width:600px){.work{padding-top:30px}.section-heading{gap:12px}}

/* Each case study has one native link stretched across its entire card. */
.project{position:relative}
.project .project-button::after{content:'';position:absolute;inset:0;z-index:10;cursor:pointer}
.project-ai:hover{border-color:#dfba1f66}
.project:hover .project-button span{transform:translate(3px,-3px);color:var(--accent)}
.project-ai:focus-within{outline:2px solid var(--accent);outline-offset:5px}

/* Consistent yellow outlines for all selected-work subpage cards. */
.project{outline:1px solid transparent;outline-offset:0;transition:outline-color .2s ease,border-color .2s ease}
.project:hover{outline-color:var(--accent);border-color:var(--accent)}
.project:focus-within{outline:2px solid var(--accent);outline-offset:3px;border-color:var(--accent)}
@media(prefers-reduced-motion:reduce){.project{transition:none}}

/* Agentic Apps screenshots stack at rest and spread into a centered arc on hover. */
.agentic-card-art{height:350px;isolation:isolate}
.agentic-screen{position:absolute;width:66%;max-width:350px;height:auto;left:50%;top:54%;border-radius:18px;filter:drop-shadow(0 6px 10px #0007);box-shadow:0 12px 30px #0005;transition:width .55s ease,top .55s ease,left .55s ease,transform .55s ease;pointer-events:none}
.screen-meeting{z-index:1;transform:translate(-42%,-59%) rotate(8deg)}
.screen-messaging{z-index:2;transform:translate(-47%,-47%) rotate(1deg)}
.screen-main{z-index:3;transform:translate(-55%,-40%) rotate(-10deg)}
.agentic-preview-card:is(:hover,:focus-within) .agentic-screen{width:43%;max-width:260px;left:50%}
.agentic-preview-card:is(:hover,:focus-within) .screen-main{top:20%;transform:translate(-50%,0) rotate(0deg)}
.agentic-preview-card:is(:hover,:focus-within) .screen-messaging{top:48%;left:27%;transform:translate(-50%,0) rotate(-10deg)}
.agentic-preview-card:is(:hover,:focus-within) .screen-meeting{top:48%;left:73%;transform:translate(-50%,0) rotate(10deg)}
@media(hover:none){.agentic-preview-card:is(:hover,:focus-within) .agentic-screen{width:66%;left:50%;top:54%}.agentic-preview-card:is(:hover,:focus-within) .screen-main{transform:translate(-55%,-40%) rotate(-10deg)}.agentic-preview-card:is(:hover,:focus-within) .screen-messaging{transform:translate(-47%,-47%) rotate(1deg)}.agentic-preview-card:is(:hover,:focus-within) .screen-meeting{transform:translate(-42%,-59%) rotate(8deg)}}
@media(prefers-reduced-motion:reduce){.agentic-screen{transition:none}}
.two-screen-preview:is(:hover,:focus-within) .agentic-screen{width:47%;max-width:none;top:54%;transform:translate(-50%,-50%) rotate(0deg)}
.two-screen-preview:is(:hover,:focus-within) .screen-main{left:74.5%}
.two-screen-preview:is(:hover,:focus-within) .screen-messaging{left:25.5%}
@media(hover:none){.two-screen-preview:is(:hover,:focus-within) .agentic-screen{width:66%;max-width:350px;left:50%;top:54%}.two-screen-preview:is(:hover,:focus-within) .screen-main{transform:translate(-55%,-40%) rotate(-10deg)}.two-screen-preview:is(:hover,:focus-within) .screen-messaging{transform:translate(-47%,-47%) rotate(1deg)}}

/* Control Hub stays anchored while the surrounding AI model moves gently. */
.ai-art{--art-x:0px;--art-y:0px}
.orbit-layer{position:absolute;inset:0;display:grid;place-items:center;transform:translate(var(--art-x),var(--art-y));transition:transform .25s ease-out;pointer-events:none}
.orbit-layer .orbit-one{animation:strategy-orbit-one 30s linear infinite paused}
.orbit-layer .orbit-two{animation:strategy-orbit-two 42s linear infinite paused}
.ai-art .spark{animation-play-state:paused}
.ai-art.is-art-active .orbit,.project-ai:focus-within .orbit,.ai-art.is-art-active .spark,.project-ai:focus-within .spark{animation-play-state:running}
.ai-art .node{transform:translate(calc(var(--art-x) * -.6),calc(var(--art-y) * -.6));transition:transform .25s ease-out}
.ai-art .ai-core{gap:8px;width:190px;height:190px;transition:box-shadow .35s ease,border-color .35s ease;font-size:20px}
.ai-art .core-subtitle{font-size:10px;letter-spacing:.2px;color:var(--muted);line-height:1.5}
.ai-art.is-art-active .ai-core,.project-ai:focus-within .ai-core{border-color:#dfba1f66;box-shadow:0 0 35px #dfba1f14,inset 0 1px 0 #ffffff20}
.ai-art .node-one{top:20%;left:6%}.ai-art .node-two{bottom:23%;right:5%}.ai-art .node-three{bottom:12%;left:7%}
@keyframes strategy-orbit-one{from{transform:rotate(-25deg)}to{transform:rotate(335deg)}}
@keyframes strategy-orbit-two{from{transform:rotate(-45deg)}to{transform:rotate(-405deg)}}
@media(max-width:600px){.ai-art .ai-core{width:155px;height:155px;font-size:18px}.ai-art .core-subtitle{font-size:9px}.ai-art .node{padding:10px;font-size:9px}.ai-art .node-one{top:18%;left:4%}.ai-art .node-two{bottom:18%;right:4%}.ai-art .node-three{bottom:7%;left:5%}}
@media(prefers-reduced-motion:reduce){.orbit-layer,.ai-art .node{transform:none;transition:none}.ai-art .ai-core{transition:none}}

/* Agents gather outside the admin's authority boundary. */
.bot-swarm{position:absolute;inset:0;pointer-events:none}
.swarm-bot{position:absolute;left:50%;top:50%;width:26px;height:26px;display:grid;place-items:center;will-change:transform;filter:drop-shadow(0 3px 6px #0004)}
.swarm-bot svg{display:block;width:100%;height:100%}.bot-shade-0{color:#c99bea}.bot-shade-1{color:#a76bd4}.bot-shade-2{color:#dfc3f3}
.admin-shield{display:block;width:42px;height:42px;color:#d8b5ef}.admin-shield svg{width:100%;height:100%}
.ai-art .ai-core{z-index:1;border-color:#a76bd477}
.ai-art.is-art-active .ai-core,.project-ai:focus-within .ai-core{border-color:#d8b5ef;box-shadow:0 0 28px #a76bd430,inset 0 1px 0 #ffffff20}
.ai-art .node{z-index:2;transform:none}.ai-art .node-one{top:13%;left:5%}.ai-art .node-two{bottom:13%;right:4%}.ai-art .node-three{bottom:5%;left:5%}
@media(max-width:600px){.swarm-bot{width:22px;height:22px}.admin-shield{width:34px;height:34px}.ai-art .node-one{top:15%;left:4%}.ai-art .node-two{bottom:12%;right:4%}.ai-art .node-three{bottom:3%;left:4%}}

@media(max-width:600px){.ai-art .ai-core{transform:translateY(12px)}.swarm-bot{top:calc(50% + 12px)}}

.ai-art .ai-core{width:240px;height:240px}
.ai-art .boundary-card{left:50%;top:50%;bottom:auto;right:auto;font-size:11px;padding:11px 15px;transform:translate(calc(-50% + var(--card-x)),calc(-50% + var(--card-y)));border-color:#a76bd477;transition:border-color .2s,box-shadow .2s}
.boundary-0{--card-x:-105px;--card-y:-68px}.boundary-1{--card-x:105px;--card-y:-68px}.boundary-2{--card-x:-105px;--card-y:68px}.boundary-3{--card-x:105px;--card-y:68px}
.ai-art .boundary-card.is-bot-target{border-color:#dfc3f3;box-shadow:0 0 22px #a76bd433}
@media(max-width:600px){.ai-art .ai-core{width:200px;height:200px;transform:translateY(12px)}.ai-art .boundary-card{top:calc(50% + 12px);font-size:9px;padding:9px 11px}.boundary-0{--card-x:-82px;--card-y:-58px}.boundary-1{--card-x:82px;--card-y:-58px}.boundary-2{--card-x:-82px;--card-y:58px}.boundary-3{--card-x:82px;--card-y:58px}}

.admin-shield{transition:color .2s ease}.ai-art.is-core-hovered .admin-shield{color:var(--accent)}
@media(prefers-reduced-motion:reduce){.admin-shield{transition:none}}

.boundary-icon{display:flex;align-items:center;justify-content:center;width:15px;height:15px;flex:0 0 15px;color:#d8b5ef;transition:color .2s ease}.boundary-icon svg{display:block;width:100%;height:100%}.boundary-card.is-bot-target .boundary-icon{color:var(--accent)}
@media(prefers-reduced-motion:reduce){.boundary-icon{transition:none}}


.about-facts{padding:0 6% 75px}.about-facts .fun-facts{margin-top:0}.about-facts h3{font-family:Baskerville,Georgia,serif;font-style:italic}.resume-role{padding:25px 0;border-bottom:1px solid var(--line)}.resume-role h4{font-size:21px;margin:0 0 8px;font-weight:500}.resume-date{font-size:13px;color:var(--muted)}.resume-role li,.resume-education li{font-size:16px;line-height:1.8;color:var(--muted);margin-bottom:10px}.resume-role ul,.resume-education{padding-left:20px}.about-page .case-section-body>h3{font-size:26px;margin-top:45px}.about-page .principles a{font-size:13px;color:var(--accent)}

/* A greeting that can be replayed, and small personal interactions. */
.hello-wave{font-size:.64em;display:inline-block;border:0;background:transparent;padding:0 8px;color:inherit;cursor:pointer;vertical-align:baseline}.hello-wave span{display:inline-block;transform-origin:72% 75%;animation:hello-wave 1.5s ease-in-out}.hello-wave.waving span{animation:hello-wave 1.5s ease-in-out}.hello-wave:hover span{transform:rotate(12deg)}
@keyframes hello-wave{0%,100%{transform:rotate(0)}15%,45%,75%{transform:rotate(20deg)}30%,60%{transform:rotate(-12deg)}}
.about-facts .fun-facts-grid article{padding:20px;border:1px solid var(--line);border-radius:12px;transition:transform .25s,background .25s}.about-facts .fun-facts-grid article:hover{transform:translateY(-4px);background:#ffffff06}.fact-surprise{display:block;color:var(--accent);margin-top:8px}.pattern-icon,.piano-icon{display:inline-block;transition:transform .4s}.fun-facts-grid article:hover .pattern-icon{transform:rotate(90deg)}.fun-facts-grid article:hover .piano-icon{transform:rotate(-15deg) scale(1.2)}
.resume-role summary{cursor:pointer;display:grid;grid-template-columns:minmax(0,1fr) 24px;gap:8px;list-style:none}.resume-role summary::-webkit-details-marker{display:none}.resume-title{font-size:21px;font-weight:500}.resume-role summary .resume-date{grid-row:2;margin:0}.resume-toggle{grid-column:2;grid-row:1/3;font-size:24px;align-self:center;color:var(--accent)}.resume-role[open] .resume-toggle{transform:rotate(45deg)}.resume-role summary:focus-visible{outline:2px solid var(--accent);outline-offset:8px}.resume-details{padding-top:12px}
@media(prefers-reduced-motion:reduce){.hello-wave span,.hello-wave.waving span{animation:none}.hello-wave:hover span,.about-facts .fun-facts-grid article:hover,.fun-facts-grid article:hover .pattern-icon,.fun-facts-grid article:hover .piano-icon{transform:none}.about-facts .fun-facts-grid article,.pattern-icon,.piano-icon{transition:none}}

.partner-project{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr}.partner-card-art{position:relative;display:grid;place-items:center;padding:55px 24px 24px;min-height:300px}.partner-card-art img{width:100%;height:auto;transition:transform .3s}.partner-project:hover .partner-card-art img{transform:scale(1.03)}.partner-project .small-copy{display:flex;flex-direction:column}.partner-project .project-button{margin-top:auto}@media(max-width:700px){.partner-project{grid-template-columns:1fr}.partner-project .project-button{margin-top:24px}}@media(prefers-reduced-motion:reduce){.partner-card-art img{transition:none}.partner-project:hover .partner-card-art img{transform:none}}

.about-intro{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:45px;align-items:center}.about-intro h1{font-size:clamp(44px,5.8vw,88px);letter-spacing:-.04em}.about-avatar{position:relative;text-align:center}.about-avatar svg{display:block;width:100%;height:auto;overflow:visible}.avatar-pause{margin-top:16px;border:1px solid var(--line);border-radius:20px;background:transparent;color:var(--muted);font-size:11px;padding:8px 15px;cursor:pointer}.about-avatar .steam{fill:none;stroke:#D8C6ED;stroke-width:4;stroke-linecap:round;opacity:0;animation:avatar-steam 4s ease-out infinite}.about-avatar .s2{animation-delay:1.3s}.about-avatar .s3{animation-delay:2.6s}.about-avatar .page{fill:none;stroke:#D8C6ED;stroke-width:3;stroke-linecap:round;animation:avatar-page 6s ease-in-out infinite;transform-origin:760px 490px}.about-avatar .page2{animation-delay:.3s}.about-avatar .hair{transform-origin:970px 860px;animation:avatar-hair 4.5s ease-in-out infinite}.about-avatar .paused *{animation-play-state:paused!important}@keyframes avatar-steam{0%{opacity:0;transform:translateY(10px)}25%{opacity:.65}100%{opacity:0;transform:translateY(-100px) translateX(15px)}}@keyframes avatar-page{0%,28%,65%,100%{opacity:0;transform:scaleX(1)}32%{opacity:1;transform:scaleX(1)}47%{opacity:1;transform:scaleX(.06) translateY(-8px)}60%{opacity:0;transform:scaleX(-1)}}@keyframes avatar-hair{0%,100%{transform:rotate(0)}50%{transform:rotate(-1.2deg) translateY(-3px)}}@media(max-width:850px){.about-intro{grid-template-columns:1fr;gap:24px}.about-avatar{width:min(100%,480px);margin:auto}.about-intro h1{font-size:clamp(44px,8vw,72px)}}@media(prefers-reduced-motion:reduce){.about-avatar .steam,.about-avatar .page{opacity:0}.about-avatar .hair{transform:none}}


/* Keep every primary destination visible with comfortable mobile tap targets. */
@media(max-width:600px){
  header{flex-direction:column;align-items:flex-start;gap:12px;padding-top:20px;padding-bottom:12px}
  header>nav{width:100%;justify-content:space-between;gap:12px;font-size:12px}
  header>nav a{display:inline-flex;align-items:center;min-height:44px;white-space:nowrap}
  header>nav .nav-contact{padding-bottom:0}
}

/* SVG avoids platform-specific emoji rendering of the pattern star. */
.pattern-icon svg{display:block;width:29px;height:38px;color:inherit}

/* Current navigation is distinct from hover and the contact call to action. */
header>nav a{border-bottom:2px solid transparent;padding-bottom:6px}
header>nav a[aria-current]{color:var(--accent);font-weight:600;border-bottom-color:var(--accent)}
header>nav a[aria-current] span{color:inherit}

/* Decorative line arrows stay monochrome on every platform. */
.ui-arrow{display:inline-block;width:1em;height:1em;vertical-align:-.12em;flex-shrink:0;color:inherit;overflow:visible}
.connect-social-links a span .ui-arrow{width:1em;height:1em}
.contact-link:has(>.ui-arrow){gap:8px}
