.page-transition{position:fixed;z-index:9999;inset:0;pointer-events:none;visibility:hidden;overflow:hidden}
.page-transition-panel{position:absolute;inset:-4%;background:#111;color:#fff;transform:translateY(105%) rotate(.65deg);transition:transform 1.05s cubic-bezier(.76,0,.24,1);will-change:transform}
.page-transition[data-theme="amazon"] .page-transition-panel{background:#5964f2}
.page-transition[data-theme="tto"] .page-transition-panel{background:#ff315f}
.page-transition[data-theme="symphony"] .page-transition-panel{background:#7460ff}
.page-transition[data-theme="portfolio"] .page-transition-panel{background:#141416}
.page-transition-panel span,.page-transition-panel strong,.page-transition-panel i{display:none}
.page-transition.is-entering,.page-transition.is-arriving,.transition-arrival-pending .page-transition{visibility:visible}
.page-transition.is-entering .page-transition-panel,.page-transition.is-arriving .page-transition-panel,.transition-arrival-pending .page-transition-panel{transform:translateY(0) rotate(0)}
.transition-arrival-pending .page-transition-panel{transition:none}
.page-transition.is-arriving.is-revealed .page-transition-panel{transform:translateY(-105%) rotate(-.65deg)}
.project-breadcrumb{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:9px;padding:10px 14px;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:rgba(7,11,17,.72);backdrop-filter:blur(14px);color:#f5f6f4;font:500 10px "DM Mono",monospace;text-transform:uppercase;white-space:nowrap}
.project-breadcrumb a{opacity:.62;transition:opacity .25s}.project-breadcrumb a:hover,.project-breadcrumb a:focus-visible{opacity:1}.project-breadcrumb i{font-style:normal;opacity:.3}
.back-to-top{position:fixed;z-index:40;right:24px;bottom:24px;width:58px;height:58px;padding:0;border:0;border-radius:999px;background:#f5f6f4;color:#07090c;box-shadow:0 12px 38px rgba(0,0,0,.22);display:flex;align-items:center;justify-content:flex-end;cursor:pointer;opacity:0;visibility:hidden;transform:translateY(18px);transition:width .42s cubic-bezier(.76,0,.24,1),opacity .3s,transform .3s,visibility .3s;overflow:hidden}
.back-to-top.is-visible{opacity:1;visibility:visible;transform:none}.back-to-top:hover,.back-to-top:focus-visible{width:148px}.back-to-top svg{position:absolute;right:0;top:0;width:58px;height:58px;transform:rotate(-90deg)}.back-to-top circle{fill:none;stroke:rgba(7,9,12,.14);stroke-width:1.5}.back-to-top .back-progress{stroke:#5964f2;stroke-width:2.5;stroke-linecap:round;stroke-dasharray:157.08;stroke-dashoffset:157.08}.back-to-top span{padding-right:56px;font:600 11px "Instrument Sans",sans-serif;white-space:nowrap;opacity:0;transform:translateX(10px);transition:.28s}.back-to-top:hover span,.back-to-top:focus-visible span{opacity:1;transform:none}.back-to-top b{position:absolute;right:0;top:0;width:58px;height:58px;display:grid;place-items:center;font-size:19px}
@media(max-width:760px){.project-breadcrumb{max-width:138px;overflow:hidden}.project-breadcrumb span,.project-breadcrumb i{display:none}.back-to-top{right:14px;bottom:14px}.back-to-top:hover,.back-to-top:focus-visible{width:58px}.back-to-top span{display:none}}
@media(prefers-reduced-motion:reduce){.page-transition-panel,.back-to-top{transition-duration:.01ms!important}}

/* Shared portfolio-agent entry for every secondary and tertiary page. */
.global-agent-cta{position:fixed;z-index:72;right:24px;bottom:24px;min-width:168px;height:58px;padding:7px 14px 7px 7px;border:1px solid rgba(18,18,18,.14);border-radius:999px;background:rgba(245,243,238,.96);color:#111;box-shadow:0 14px 38px rgba(0,0,0,.2);display:flex;align-items:center;gap:10px;font-family:"Instrument Sans",sans-serif;cursor:pointer;opacity:0;visibility:hidden;transform:translateY(14px);transition:opacity .3s,transform .3s,visibility .3s,box-shadow .3s;backdrop-filter:blur(12px)}
.global-agent-cta.is-visible{opacity:1;visibility:visible;transform:none}.global-agent-cta:hover,.global-agent-cta:focus-visible{transform:translateY(-3px);box-shadow:0 18px 44px rgba(0,0,0,.26);outline:none}.global-agent-avatar{width:44px;height:44px;flex:0 0 44px;border-radius:50%;display:grid;place-items:center;background:#d8d6df;color:#fff;font:11px "DM Mono",monospace;box-shadow:inset 0 0 0 1px rgba(255,255,255,.5)}.global-agent-copy{display:block;text-align:left;line-height:1.12}.global-agent-copy strong,.global-agent-copy small{display:block}.global-agent-copy strong{font-size:13px;font-weight:700}.global-agent-copy small{margin-top:3px;color:#74716c;font-size:9px}.global-agent-cta>i{margin-left:auto;color:#655cff;font-style:normal;font-size:15px}
.global-agent-dialog{position:fixed;z-index:120;inset:0;border:0;width:100%;height:100%;max-width:none;max-height:none;padding:0;background:transparent;color:#111}.global-agent-dialog::backdrop{background:rgba(7,7,7,.68);backdrop-filter:blur(8px)}.global-agent-panel{position:absolute;right:24px;bottom:24px;width:min(390px,calc(100vw - 32px));border-radius:24px;background:#f5f3ee;box-shadow:0 24px 80px rgba(0,0,0,.38);overflow:hidden;font-family:"Instrument Sans",sans-serif}.global-agent-head{padding:18px 18px 15px;display:flex;align-items:center;gap:11px;border-bottom:1px solid rgba(17,17,17,.12)}.global-agent-head>span{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#d8d6df;font:10px "DM Mono",monospace}.global-agent-head div{flex:1}.global-agent-head strong,.global-agent-head small{display:block}.global-agent-head strong{font-size:15px}.global-agent-head small{margin-top:2px;color:#777;font-size:10px}.global-agent-close{width:36px;height:36px;border:0;border-radius:50%;background:#111;color:#fff;font-size:20px;cursor:pointer}.global-agent-body{padding:18px}.global-agent-message{padding:14px;border-radius:14px 14px 14px 4px;background:#e8e5ee;font-size:13px;line-height:1.45}.global-agent-prompts{display:flex;flex-wrap:wrap;gap:7px;margin:14px 0}.global-agent-prompts button{padding:8px 10px;border:1px solid rgba(17,17,17,.16);border-radius:999px;background:transparent;color:#111;font:600 10px "Instrument Sans",sans-serif;cursor:pointer}.global-agent-form{display:flex;gap:8px}.global-agent-form input{min-width:0;flex:1;padding:12px 13px;border:1px solid rgba(17,17,17,.17);border-radius:12px;background:#fff;font:12px "Instrument Sans",sans-serif}.global-agent-form button{padding:0 15px;border:0;border-radius:12px;background:#111;color:#fff;font-weight:700;cursor:pointer}
@media(max-width:760px){.global-agent-cta{right:14px;bottom:14px;min-width:0;width:58px;height:58px;padding:7px}.global-agent-copy,.global-agent-cta>i{display:none}.global-agent-avatar{width:44px;height:44px}.global-agent-panel{right:12px;bottom:12px;width:calc(100vw - 24px)}}
@media(prefers-reduced-motion:reduce){.global-agent-cta{transition-duration:.01ms!important}}

/* Shared portfolio chrome: one shell across every secondary and tertiary page. */
:root{--portfolio-font-sans:"Instrument Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--portfolio-font-mono:"DM Mono","SFMono-Regular",Consolas,monospace;--portfolio-gutter:clamp(18px,3.9vw,56px);--portfolio-control:44px;--portfolio-radius-control:999px;--portfolio-ease:cubic-bezier(.22,1,.36,1);--portfolio-shadow:0 12px 34px rgba(0,0,0,.16)}
.about-topbar,.editorial-nav,.lab-nav,body>.portfolio-return{display:none!important}
body:has(.portfolio-shell)>.site-header,body:has(.portfolio-shell)>.floating-nav,body:has(.portfolio-shell)>.mobile-nav{display:none!important}
.portfolio-skip{position:fixed;z-index:10000;top:10px;left:50%;padding:12px 16px;border-radius:999px;background:#fff;color:#111;font:650 12px/1 var(--portfolio-font-sans);text-decoration:none;box-shadow:var(--portfolio-shadow);transform:translate(-50%,-80px);transition:transform .25s var(--portfolio-ease)}
.portfolio-skip:focus{transform:translate(-50%,0);outline:2px solid #655cff;outline-offset:3px}
.portfolio-shell{position:fixed;z-index:210;top:clamp(14px,2vw,28px);left:var(--portfolio-gutter);right:var(--portfolio-gutter);display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px;color:#111;font-family:var(--portfolio-font-sans);pointer-events:none}
.portfolio-shell a,.portfolio-shell [role="link"]{pointer-events:auto}
.portfolio-shell__identity,.portfolio-shell__crumb,.portfolio-shell__contact,.portfolio-shell__icon{min-height:var(--portfolio-control);border:1px solid rgba(17,17,17,.13);background:rgba(247,246,242,.9);color:#111;box-shadow:var(--portfolio-shadow);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.portfolio-shell__identity{justify-self:start;display:flex;align-items:center;gap:10px;padding:5px 14px 5px 5px;border-radius:var(--portfolio-radius-control);font-size:13px;font-weight:680;text-decoration:none;white-space:nowrap}
.portfolio-shell__avatar{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#d9d7df;color:#fff;font:500 9px/1 var(--portfolio-font-mono)}
.portfolio-shell__crumb{justify-self:center;display:flex;align-items:center;min-width:0;padding:0 15px;border-radius:var(--portfolio-radius-control);font:500 10px/1 var(--portfolio-font-mono);letter-spacing:.015em;text-transform:uppercase;white-space:nowrap}
.portfolio-shell__crumb a{color:inherit;text-decoration:none;opacity:.58}.portfolio-shell__crumb i{margin:0 8px;font-style:normal;opacity:.28}.portfolio-shell__crumb span{max-width:28ch;overflow:hidden;text-overflow:ellipsis}
.portfolio-shell__actions{justify-self:end;display:flex;align-items:center;gap:6px;pointer-events:auto}
.portfolio-shell__contact{display:flex;align-items:center;gap:8px;padding:0 16px;border-radius:var(--portfolio-radius-control);font-size:12px;font-weight:680;text-decoration:none;white-space:nowrap}
.portfolio-shell__icon{width:var(--portfolio-control);height:var(--portfolio-control);display:grid;place-items:center;padding:0;border-radius:14px;font:650 10px/1 var(--portfolio-font-sans);text-decoration:none}
.portfolio-shell__icon svg{width:18px;height:18px;fill:currentColor}.portfolio-shell__icon[aria-disabled="true"]{opacity:.48;cursor:not-allowed}
.portfolio-shell :is(a,[role="link"]){transition:transform .35s var(--portfolio-ease),box-shadow .35s var(--portfolio-ease),background-color .35s ease,opacity .25s ease}
.portfolio-shell :is(a,[role="link"]):hover{transform:translateY(-2px);box-shadow:0 16px 40px rgba(0,0,0,.2)}
.portfolio-shell :is(a,[role="link"]):focus-visible,.global-agent-cta:focus-visible,.global-agent-dialog :is(button,input):focus-visible{outline:2px solid #655cff;outline-offset:3px}
.portfolio-auto-reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .9s var(--portfolio-ease)}
.portfolio-auto-reveal.is-visible{opacity:1;transform:none}
.global-agent-close,.global-agent-prompts button,.global-agent-form button{min-width:44px;min-height:44px}
:is(.note-row,.lab-note-row,.project-index-card){transition:transform .45s var(--portfolio-ease),box-shadow .45s var(--portfolio-ease),background-color .3s ease}
:is(.note-row,.lab-note-row,.project-index-card):is(:hover,:focus-visible){transform:translateY(-4px);box-shadow:0 20px 48px rgba(0,0,0,.1)}

/* Typography boundary: portfolio pages share editorial hierarchy; product cases keep brand type. */
body:has(.portfolio-shell){--portfolio-content-width:min(1180px,calc(100vw - (var(--portfolio-gutter) * 2)));font-family:var(--portfolio-font-sans)}
:is(.inner-hero-grid,.about-portrait-composition,.field-hero,.article-header,.lab-hero,.lab-article-header,.article-layout,.lab-article-layout){width:var(--portfolio-content-width)!important;max-width:var(--portfolio-content-width)!important}
:is(.inner-hero h1,.work-index-hero h1,.field-hero h1,.article-header h1,.lab-hero h1,.lab-article-header h1){max-width:12ch!important;margin-top:clamp(24px,3vw,42px)!important;margin-bottom:clamp(32px,4.5vw,64px)!important;font-family:var(--portfolio-font-sans)!important;font-size:clamp(4.4rem,8vw,8rem)!important;font-style:normal!important;font-weight:560!important;line-height:.88!important;letter-spacing:-.065em!important;text-wrap:balance}
:is(.article-section>h2,.lab-section>h2){max-width:18ch;font-family:var(--portfolio-font-sans);font-size:clamp(2.7rem,4.8vw,5rem);font-weight:550;line-height:.96;letter-spacing:-.052em;text-wrap:balance}
:is(.section-kicker,.eyebrow,.lab-kicker,.section-label){font-family:var(--portfolio-font-mono)!important;letter-spacing:.08em;text-transform:uppercase}
:is(.inner-hero-aside,.work-index-hero>p,.field-intro,.article-intro,.lab-intro,.article-summary){max-width:58ch;line-height:1.58}
@media(max-width:900px){.portfolio-shell{grid-template-columns:1fr auto}.portfolio-shell__crumb{display:none}.portfolio-shell__actions{grid-column:2}.portfolio-shell__actions>*{display:none}.portfolio-shell__actions .portfolio-shell__contact,.portfolio-shell__actions a[href*="linkedin"]{display:flex}.portfolio-shell__actions a[aria-label*="CV"]{display:grid}.portfolio-shell__contact{width:44px;padding:0;justify-content:center}.portfolio-shell__contact span{display:none}}
@media(max-width:520px){:root{--portfolio-gutter:12px}.portfolio-shell{top:12px;gap:8px}.portfolio-shell__identity{padding-right:12px}.portfolio-shell__identity>span:last-child{display:none}.portfolio-shell__actions a[href*="linkedin"]{display:none}}
@media(max-width:620px){:is(.inner-hero h1,.work-index-hero h1,.field-hero h1,.article-header h1,.lab-hero h1,.lab-article-header h1){font-size:clamp(3rem,14vw,4.8rem)!important;line-height:.9!important}:is(.article-section>h2,.lab-section>h2){font-size:clamp(2.35rem,10vw,3.6rem)}}
@media(prefers-reduced-motion:reduce){.portfolio-shell :is(a,[role="link"]),.portfolio-auto-reveal{transition:none!important}.portfolio-auto-reveal{opacity:1;transform:none}}

/* Canonical footer shared by every secondary and tertiary page. */
.portfolio-global-footer{position:relative;z-index:2;margin:0;padding:0 max(32px,calc((100vw - 1200px)/2)) clamp(42px,5vw,72px);background:#0b0d10;color:#f2f0e9;font-family:"Instrument Sans",Arial,sans-serif}
.portfolio-global-footer__index{padding:clamp(48px,5vw,72px) 0 clamp(52px,6vw,84px);display:grid;grid-template-columns:1.25fr .85fr .75fr 1.15fr;gap:clamp(28px,4vw,64px);border-top:1px solid rgba(242,240,233,.2);border-bottom:1px solid rgba(242,240,233,.14)}
.portfolio-global-footer__group{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:11px}
.portfolio-global-footer__group h2{margin:0 0 17px;color:rgba(242,240,233,.92);font:600 12px/1.3 "Instrument Sans",Arial,sans-serif;letter-spacing:-.01em;text-transform:uppercase}
.portfolio-global-footer__group h2 span{margin-right:10px;color:rgba(242,240,233,.34);font:500 9px/1 "DM Mono",monospace}
.portfolio-global-footer__group a,.portfolio-global-footer__group>span{width:fit-content;color:rgba(242,240,233,.58);font-size:14px;line-height:1.45;text-decoration:none;transition:color .25s ease,transform .25s cubic-bezier(.76,0,.24,1)}
.portfolio-global-footer__group>span{opacity:.46}.portfolio-global-footer__group a:hover,.portfolio-global-footer__group a:focus-visible{color:#f2f0e9;transform:translateX(3px)}
.portfolio-global-footer__identity{display:flex;align-items:flex-start;gap:14px}.portfolio-global-footer__identity>i{width:34px;height:34px;display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:#d9d7df;color:#fff;font:500 9px/1 "DM Mono",monospace;font-style:normal}
.portfolio-global-footer__identity strong{display:block;font-size:17px}.portfolio-global-footer__identity p{margin:9px 0 24px;color:rgba(242,240,233,.58);font-size:13px;line-height:1.5}.portfolio-global-footer__identity small{color:rgba(242,240,233,.4);font:500 10px/1.6 "DM Mono",monospace}
.portfolio-global-footer__bottom{padding-top:24px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;color:rgba(242,240,233,.38);font:500 9px/1.4 "DM Mono",monospace;letter-spacing:.05em;text-transform:uppercase}
.portfolio-global-footer__bottom a{color:rgba(242,240,233,.58);text-decoration:none;transition:color .25s ease,transform .25s cubic-bezier(.76,0,.24,1)}.portfolio-global-footer__bottom a:hover,.portfolio-global-footer__bottom a:focus-visible{color:#f2f0e9;transform:translateY(-2px)}.portfolio-global-footer__bottom>span:last-child{justify-self:end}
@media(max-width:900px){.portfolio-global-footer__index{grid-template-columns:repeat(2,minmax(0,1fr));gap:52px 32px}}
@media(max-width:620px){.portfolio-global-footer{padding-inline:16px}.portfolio-global-footer__index{grid-template-columns:1fr 1fr;gap:46px 24px}.portfolio-global-footer__identity{grid-column:1/-1}.portfolio-global-footer__bottom{grid-template-columns:1fr auto;gap:14px}.portfolio-global-footer__bottom>span:last-child{display:none}}
@media(max-width:380px){.portfolio-global-footer__index{grid-template-columns:1fr}.portfolio-global-footer__identity{grid-column:auto}}

/* Portfolio-level button system: translucent surface, light border, squared radius. */
.portfolio-shell__contact,
.portfolio-shell__icon,
.global-agent-cta,
.back-to-top,
.global-agent-close,
.global-agent-prompts button,
.global-agent-form button {
  border-radius:12px;
}
.portfolio-shell__contact,
.portfolio-shell__icon,
.global-agent-cta,
.back-to-top,
.global-agent-prompts button {
  border:1px solid rgba(17,17,17,.2);
  background:rgba(247,246,242,.74);
  color:#111;
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
}
.portfolio-shell__contact:hover,
.portfolio-shell__icon:hover,
.global-agent-cta:hover,
.back-to-top:hover,
.global-agent-prompts button:hover {
  background:rgba(255,255,255,.9);
  border-color:rgba(17,17,17,.42);
}
.global-agent-form button,
.global-agent-close {
  border:1px solid #111;
  background:#111;
  color:#fff;
}

/* Keep the shared assistant identical to the homepage floating assistant. */
.global-agent-cta {
  min-width:190px;
  height:auto;
  min-height:62px;
  padding:9px 12px 9px 9px;
  border-radius:999px;
  background:rgba(255,255,255,.92);
  box-shadow:0 14px 36px rgba(32,34,31,.18);
}
.global-agent-avatar { width:42px; height:42px; flex-basis:42px; }
.global-agent-copy strong { font-size:13px; }
.global-agent-copy small { margin-top:2px; font-size:9px; }
@media(max-width:760px){
  .global-agent-cta { min-width:0; width:58px; min-height:58px; height:58px; padding:7px; }
}
