*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-underline-offset:5px}a:focus-visible,button:focus-visible{outline:2px solid var(--focus);outline-offset:7px}button{font:inherit;color:inherit}button,a{touch-action:manipulation}[hidden]{display:none!important}
.page{position:relative;isolation:isolate;max-width:var(--page-max);margin:auto;padding:128px var(--page-gutter) var(--space-12)}.intro{max-width:580px;display:flex;flex-direction:column;gap:8px}.intro h1{font-size:var(--type-title);font-weight:400;line-height:56px;height:48px;margin:0}.intro p{font-size:var(--type-body);line-height:29px;margin:0}.intro .status{color:var(--muted)}.country{color:var(--green)}.yummy{color:var(--yellow)}.wave{font-size:var(--type-body);line-height:33px;letter-spacing:-1.6px;margin-top:21px;user-select:none;color:var(--text-primary);white-space:nowrap}
.nav{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:12px;margin:55px 0 18px;padding:12px 0;min-height:53px;background:var(--surface)}.nav~main{scroll-margin-top:80px}.nav a{display:block;padding:0 20px;line-height:29px;text-decoration:none;font-size:var(--type-body)}.nav a[aria-current=page]{background:var(--highlight)}.nav a:hover:not([aria-current=page]){background:var(--selection-hover)}.nav a:last-child{margin-left:0}
.projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-12) var(--column-gap)}.project{min-width:0;margin:0}.project-link{display:block;text-decoration:none}.project-image{aspect-ratio:602/376;background:var(--placeholder);overflow:hidden}.project-image picture{display:contents}.project-image img{display:block;width:100%;height:100%;object-fit:cover;transition:transform var(--spring-duration) var(--spring-ease)}.project-link:hover img{transform:scale(1.025)}.project-caption{padding-top:16px;min-height:70px}.project h2{font-weight:400;font-size:var(--type-body);line-height:1.7;margin:0}.project p{font-size:var(--type-caption);line-height:1.7;color:var(--text-secondary);margin:5px 0 0}.project-title-row{display:flex;justify-content:space-between;gap:12px}.project-arrow{opacity:0;transition:opacity .2s}.project-link:hover .project-arrow,.project-link:focus-visible .project-arrow{opacity:1}.badge{font-size:var(--type-small);white-space:nowrap;line-height:27px;color:var(--text-secondary)}
.play-intro{margin:0 0 32px;font-size:var(--type-body);line-height:1.8}.gallery{columns:3;column-gap:28px}.artwork{break-inside:avoid;margin:0 0 32px}.artwork img{width:100%;height:auto;display:block;background:var(--surface-soft)}.artwork figcaption{font-size:var(--type-caption);line-height:1.8;margin-top:12px}.artwork span{display:block;color:var(--text-secondary)}
.about{display:grid;grid-template-columns:minmax(0,580px) minmax(0,1fr);gap:var(--column-gap);align-items:start}.about-copy h2{font-size:var(--type-subtitle);font-weight:400;line-height:1.7;margin:0 0 22px}.about-copy p{font-size:var(--type-body);line-height:1.9;margin:0 0 20px}.portrait{margin:0;max-width:360px;justify-self:end}.portrait img{display:block;width:100%;height:auto}.experience{margin-top:40px}.experience h3{font-size:var(--type-body);font-weight:400;margin:0 0 24px}.experience dl{margin:0}.experience dt{font-size:var(--type-caption);line-height:1.8}.experience dd{font-size:var(--type-caption);line-height:1.8;color:var(--text-secondary);margin:0 0 18px}
footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:24px;margin-top:90px;padding-top:26px;border-top:1px solid var(--line);font-size:var(--type-caption);line-height:1.8;color:var(--text-secondary)}footer p{margin:0}footer .contact{display:flex;gap:24px}footer a{text-decoration:none}footer a:hover{text-decoration:underline}.skip{position:fixed;top:10px;left:10px;transform:translateY(-150%);padding:8px;background:var(--highlight);z-index:2}.skip:focus{transform:none}
.hero-flower{position:absolute;z-index:-1;pointer-events:none;left:62.9%;top:-125px;width:38.5%;height:636px;overflow:visible;transform:rotate(-7.7deg)}.hero-flower canvas{display:block;width:100%;height:100%;object-fit:fill}.flower-source{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.page>main{position:relative;background:var(--surface)}.intro{position:relative;z-index:1}.nav{background:transparent}.nav.is-stuck{background:var(--surface)}.page{overflow:clip}.intro p{color:var(--text-secondary)}
@media(max-width:1100px){.page{padding:64px 6% 40px}.projects{gap:44px}.about{gap:44px}.gallery{columns:2}}
@media(max-width:700px){.page{padding:38px 20px 28px}.intro h1{line-height:48px;margin-bottom:2px}.intro .status{font-size:var(--type-body);line-height:29px;margin:0}.intro p{font-size:var(--type-body);line-height:29px}.wave{margin-top:20px}.nav{margin-top:10px;margin-bottom:26px;gap:12px}.nav a{padding:7px 20px}.projects{grid-template-columns:1fr;gap:34px}.project-caption{min-height:0}.project-arrow{opacity:1}.about{grid-template-columns:1fr;gap:32px}.portrait{justify-self:start;max-width:300px;grid-row:1}.gallery{column-gap:18px}.artwork{margin-bottom:24px}.artwork figcaption{font-size:.8125rem}footer{margin-top:60px;font-size:.8125rem}.badge{font-size:var(--type-small)}}
@media(max-width:1100px){.hero-flower{display:none}.intro{max-width:580px}}
@media(max-width:700px){.intro h1{padding-right:0;margin-bottom:2px}}
@media(max-width:420px){.gallery{columns:1}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* A quiet reading column alongside one expressive botanical study. */
.page{padding-top:64px}
.hero{display:grid;grid-template-columns:1.08fr 1fr;gap:48px;align-items:center;min-height:350px}
.intro{max-width:540px;gap:16px;padding:22px 0}

.intro h1{font-size:clamp(28px,3vw,42px);line-height:1.15;height:auto;letter-spacing:-.055em;margin:0 0 2px}
.intro .intro-description{font-size:18px;line-height:1.75;max-width:490px;color:var(--text-primary)}
.intro .status{font-size:13px;line-height:1.9;margin-top:6px}
.intro .country{color:#49794e}.intro .yummy{color:#817622}
.flower-study{position:relative;min-width:0;height:350px}
.hero-flower{display:block;z-index:0;left:auto;right:10px;top:-130px;width:min(100%,440px);height:auto;aspect-ratio:1078/1220;transform:none}
.hero-flower canvas{width:100%;height:auto}
.flower-caption{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:flex-end;align-items:center;gap:12px;font-size:11px;color:var(--text-secondary)}
.flower-caption button{border:0;background:transparent;padding:10px 0 10px 12px;min-height:44px;font-size:11px;text-decoration:underline;text-underline-offset:4px;cursor:pointer}
.flower-caption button:hover{color:var(--focus)}
.flower-caption button:disabled{color:var(--text-secondary);text-decoration:none;cursor:default}
.nav{margin-top:28px;margin-bottom:22px}
@media(min-width:1350px){.hero-flower{width:510px;right:0;top:-154px}.flower-study{height:380px}}
@media(min-width:701px) and (max-width:1100px){.hero{grid-template-columns:1.15fr 1fr;gap:30px;min-height:310px}.flower-study{height:310px}.hero-flower{top:-60px;right:-12px}.intro .intro-description{font-size:16px}.flower-caption{font-size:10px;flex-wrap:wrap;gap:0}.intro .status{font-size:12px}}
@media(max-width:700px){.page{padding-top:38px}.hero{grid-template-columns:1fr;gap:0;min-height:0}.intro{padding:0;gap:14px;max-width:460px}.intro h1{font-size:32px}.intro .intro-description{font-size:16px;line-height:1.8}.intro .status{font-size:12px;line-height:1.9}.flower-study{height:255px;width:min(100%,360px);justify-self:center;margin-top:24px}.hero-flower{width:300px;right:calc(50% - 150px);top:-93px}.flower-caption{bottom:0;left:10px;right:10px}.nav{margin-top:16px;margin-bottom:22px}}

/* Dismissible notice; stays closed for the rest of this tab's visit. */
.wip-notice{position:fixed;z-index:30;right:24px;bottom:24px;display:flex;align-items:center;gap:16px;max-width:calc(100vw - 32px);padding:8px 10px 8px 20px;background:var(--highlight);border:1px solid #cadfc0;box-shadow:0 4px 18px #27272a0d;animation:notice-appear var(--spring-duration) var(--spring-ease)}
.wip-notice p{margin:0;font-size:12px;line-height:1.7}
.wip-notice button{flex-shrink:0;display:grid;place-items:center;width:44px;height:44px;border:0;background:transparent;font-size:22px;cursor:pointer}
.wip-notice button:hover{background:#cfe9c2}
@keyframes notice-appear{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:700px){.wip-notice{right:16px;bottom:16px;left:16px;gap:8px;padding-left:14px}.wip-notice p{flex:1}}
:root{--spring-ease:cubic-bezier(.22,1.3,.36,1);--spring-duration:550ms}
.flower-caption button{display:inline-flex;align-items:center;justify-content:flex-end;gap:7px;transition:transform var(--spring-duration) var(--spring-ease)}
.replay-icon{width:12px;height:12px;flex-shrink:0;transition:transform var(--spring-duration) var(--spring-ease)}
.flower-caption button:hover:not(:disabled) .replay-icon,.flower-caption button:focus-visible .replay-icon{transform:rotate(-35deg)}
.flower-caption button:active:not(:disabled){transform:scale(.96)}
.wip-notice button{transition:transform var(--spring-duration) var(--spring-ease),background-color 150ms ease}
.wip-notice button:hover{transform:rotate(8deg)}
.wip-notice button:active{transform:scale(.92)}

/* Keep the greeting and role together while retaining the experience spacing. */
.intro{row-gap:6px}.intro h1{margin-bottom:0}.intro .status{margin-top:16px}

/* Center the flower in its own column, leaving room for the replay control. */
.hero-flower{left:50%;right:auto;top:calc(50% - 22px);width:min(calc(100% - 20px),440px);translate:-50% -55%;animation:flower-sway 6s ease-in-out infinite}
@keyframes flower-sway{0%,100%{transform:translate(-4px,2px)}50%{transform:translate(4px,-3px)}}
@media(min-width:1350px){.hero-flower{width:min(calc(100% - 20px),510px)}}
@media(max-width:700px){.hero-flower{width:min(calc(100% - 20px),300px)}.flower-caption{justify-content:center}}
@media(prefers-reduced-motion:reduce){.hero-flower{animation:none;transform:none}}
