/* Hallmark · shape: cinematic scroll narrative · genre: portfolio · theme: Lusion-inspired by request · job: meet the designer · signature: sculptural particle landscape and oversized name · v2.0.0 */
/* Hallmark · waive 71 · labels and headings share one visual card · Discipline labels belong with each artwork heading, not a preceding content section */
/* Hallmark · pre-emit critique: use own identity and artwork; avoid studio claims, copied 3D assets and empty scroll padding */
/* Hallmark · waive 37 · existing local Instrument typography · Preserve the established portfolio type across this cinematic Info direction */
/* Hallmark · waive 77 · four factual chapters plus cinematic opening and contact · The user explicitly requested a longer scrolling Info page */
@import url('./fonts.css');
@import url('./page-loader.css');
@import url('./chapter-navigation.css');
@import url('./symbol.css');

:root{--bg:#0b0d10;--panel:#14171c;--ink:#f0f1f3;--muted:#a3a8b2;--rule:#363a43;--accent:#d7e0ee;--paper:#e5e6e9;--paper-ink:#14171b;--focus:#a4beff;--shade:#080a0c;--focus-on-light:#284cb0;--sans:'Instrument Sans',Arial,sans-serif;--mono:'DM Mono',monospace;--ease:cubic-bezier(.22,1,.36,1);--gutter:clamp(20px,4.8vw,80px);--space-xs:8px;--space-sm:16px;--space-md:24px;--space-lg:40px;--space-xl:64px;--space-2xl:96px;--space-3xl:160px;color-scheme:dark;}
*{box-sizing:border-box}html,body{margin:0;overflow-x:clip;background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;}html{scroll-behavior:smooth;scroll-padding-top:100px;}body{font-synthesis:none;}a{color:inherit;text-decoration:none;}button{font:inherit;color:inherit;cursor:pointer;}button,a{-webkit-tap-highlight-color:transparent;}button{border:0;}img{display:block;max-width:100%;}h1,h2,h3,p,figure{margin:0;}h1,h2,h3{font-weight:500;letter-spacing:-.055em;overflow-wrap:break-word;min-width:0;}h2{text-wrap:balance;}p{text-wrap:pretty;}[hidden]{display:none!important;}:focus-visible{outline:2px solid var(--focus);outline-offset:5px;}::selection{background:var(--ink);color:var(--bg);}
.skip{position:fixed;top:16px;left:16px;padding:var(--space-sm);background:var(--ink);color:var(--bg);transform:translateY(-200%);z-index:100;}.skip:focus{transform:none;}
.section-shell{padding-inline:var(--gutter);max-width:1680px;margin-inline:auto;}
.info-header{position:fixed;inset:0 0 auto;z-index:30;display:flex;justify-content:space-between;align-items:center;padding:var(--space-md) var(--gutter);background:linear-gradient(var(--bg),transparent);}
.info-brand{display:flex;align-items:center;font-size:30px;font-weight:600;letter-spacing:-.065em;min-height:44px;}.info-brand span{font-size:26px;margin-left:4px;}.info-header nav{display:flex;align-items:center;gap:12px;font-size:12px;}.info-header nav>a,.info-header button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-md);}.work-link{padding-inline:20px;}.contact-button,.menu-button{border-radius:30px;padding:0 var(--space-md);background:var(--paper);color:var(--paper-ink);}.menu-button{background:var(--panel);color:var(--ink);border:1px solid var(--rule);}.contact-button span{font-size:20px;}.menu-button span{font-size:20px;}.contact-button:hover,.menu-button:hover{background:var(--accent);color:var(--bg);}
.journey{position:relative;height:100svh;min-height:720px;}.journey-stage{height:100svh;min-height:720px;position:relative;overflow:hidden;isolation:isolate;}.scene-fallback{position:absolute;inset:0;z-index:-3;background:var(--bg);}.scene-fallback img{width:100%;height:100%;object-fit:cover;opacity:.22;filter:grayscale(1);}.scene-shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(transparent 45%,color-mix(in srgb,var(--bg) 20%,transparent) 65%,var(--bg));pointer-events:none;}#sculpture{position:absolute;inset:0;width:100%;height:100%;z-index:-2;opacity:0;transition:opacity 1200ms var(--ease);}.webgl-ready #sculpture{opacity:1;}.webgl-ready .scene-fallback{opacity:0;}.scene-guides{position:absolute;left:var(--gutter);right:var(--gutter);top:50%;display:flex;justify-content:space-between;pointer-events:none;font-size:18px;color:var(--muted);}.hero-identity{position:absolute;left:var(--gutter);right:var(--gutter);bottom:40px;}.hero-identity>p{font-size:13px;display:flex;justify-content:space-between;margin-bottom:12px;}.hero-identity h1{font-size:clamp(100px,32vw,560px);letter-spacing:-.07em;line-height:.8;margin-left:-.045em;}.hero-bottom{display:flex;justify-content:space-between;align-items:end;margin-top:32px;font-size:12px;}.hero-bottom a{display:flex;align-items:center;gap:var(--space-lg);min-height:44px;}.hero-bottom a span{font-size:28px;}.journey-statement{display:none;}.motion-toggle{position:absolute;top:110px;right:var(--gutter);z-index:3;background:transparent;font:11px var(--mono);min-height:44px;border-bottom:1px solid var(--rule);}
.js .journey{height:260svh;}.js .journey-stage{position:sticky;top:0;}.js .journey-statement{display:flex;position:absolute;inset:26% var(--gutter) 18%;align-items:end;justify-content:space-between;gap:var(--space-lg);opacity:0;pointer-events:none;}.journey-statement h2{font-size:clamp(56px,7.3vw,116px);line-height:.98;max-width:11ch;}.journey-statement p{font-size:clamp(18px,2.3vw,36px);line-height:1.2;text-align:right;max-width:16ch;}
.section-label{display:flex;justify-content:space-between;gap:var(--space-md);font:12px var(--sans);color:var(--muted);border-top:1px solid var(--rule);padding-top:var(--space-md);}.introduction{padding-block:120px var(--space-3xl);}.word-reveal{font-size:clamp(40px,6.2vw,100px);line-height:1.08;margin-block:80px var(--space-xl);max-width:21ch;letter-spacing:-.045em;}.word-reveal .word{color:var(--ink);}.intro-detail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-lg);max-width:760px;margin-left:auto;font-size:20px;line-height:1.5;color:var(--muted);}
.practice{padding-top:var(--space-lg);padding-bottom:var(--space-3xl);}.practice-heading{display:flex;align-items:end;justify-content:space-between;gap:var(--space-lg);margin-block:var(--space-xl) 80px;}.practice-heading h2{font-size:clamp(48px,7vw,108px);line-height:1;}.practice-heading p{color:var(--muted);line-height:1.5;}.practice-stack{display:grid;gap:var(--space-xl);}.practice-card{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);min-height:650px;position:relative;border-radius:4px;overflow:hidden;background:var(--paper);color:var(--paper-ink);}.practice-image{overflow:hidden;position:relative;min-height:500px;background:var(--panel);}.practice-image img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;}.motion-card .practice-image img{object-fit:contain;background:var(--shade);color:var(--ink);}.practice-copy{padding:48px;display:flex;flex-direction:column;align-items:start;}.practice-number{font:14px var(--mono);}.practice-copy h3{font-size:clamp(48px,5.8vw,92px);line-height:1;margin-top:auto;margin-bottom:var(--space-md);}.photography-card h3{font-size:clamp(36px,4.5vw,72px);}.practice-copy p{line-height:1.5;font-size:18px;margin-bottom:var(--space-lg);}.practice-copy a{width:100%;display:flex;justify-content:space-between;gap:var(--space-md);border-top:1px solid currentColor;padding-top:var(--space-md);min-height:64px;}.practice-copy a:hover{text-decoration:underline;text-underline-offset:5px;}.practice-copy a span{font-size:26px;}.motion-card{background:var(--accent);}.photography-card{background:var(--panel);color:var(--ink);}
.toolkit{padding-block:80px var(--space-3xl);}.toolkit-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-2xl);margin-top:80px;}.toolkit-title{align-self:start;position:sticky;top:160px;}.toolkit-title h2{font-size:clamp(50px,6.5vw,100px);line-height:1;}.toolkit-title p{color:var(--muted);font-size:18px;line-height:1.5;margin-top:32px;}.tool-group{padding:32px 0 48px;border-bottom:1px solid var(--rule);}.tool-group:first-child{padding-top:0;}.tool-group-heading{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-md);}.tool-group-heading>span{font:12px var(--mono);color:var(--muted);}.tool-group h3{font-size:24px;letter-spacing:-.02em;}.tool-group ul{list-style:none;padding:0;margin:0 0 0 44px;display:grid;gap:12px;font-size:clamp(24px,2.4vw,38px);line-height:1.25;letter-spacing:-.025em;}.tool-group li{transition:color 200ms;}.tool-group:hover li{color:var(--accent);}
.contact-section{padding-block:80px 48px;min-height:100svh;display:flex;flex-direction:column;justify-content:space-between;}.contact-section h2{font-size:clamp(70px,12vw,190px);line-height:.95;margin-block:80px var(--space-xl);max-width:12ch;}.email-link{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);font-size:clamp(30px,6.3vw,100px);letter-spacing:-.055em;border-bottom:1px solid var(--rule);padding-bottom:32px;}.email-link span{overflow-wrap:anywhere;}.email-link svg{width:clamp(36px,6vw,90px);flex-shrink:0;transition:transform 400ms var(--ease);}.email-link:hover svg{transform:translate(8px,-8px);}.contact-bottom{margin-top:var(--space-xl);display:flex;justify-content:space-between;gap:var(--space-lg);color:var(--muted);font-size:13px;line-height:1.6;}.back-top{display:flex;align-items:center;gap:var(--space-md);min-height:44px;white-space:nowrap;}.info-footer{display:flex;gap:32px;align-items:center;flex-wrap:wrap;padding-block:32px;border-top:1px solid var(--rule);font-size:12px;}.info-footer a{min-height:44px;display:inline-flex;align-items:center;}.info-footer span{margin-left:auto;color:var(--muted);}.reading-progress{position:fixed;right:12px;top:45%;height:110px;width:2px;background:var(--rule);z-index:20;pointer-events:none;}.reading-progress span{display:block;width:100%;height:100%;background:var(--ink);transform:scaleY(0);transform-origin:top;}
#site-menu{position:fixed;inset:0;width:100%;height:100svh;max-width:none;max-height:none;border:0;padding:var(--space-md) var(--gutter) 48px;background:var(--paper);color:var(--paper-ink);}#site-menu::backdrop{background:var(--bg);}.menu-head{display:flex;justify-content:space-between;align-items:center;}.menu-head>a{font-size:30px;font-weight:600;letter-spacing:-.06em;}.menu-close{background:transparent;display:flex;align-items:center;gap:var(--space-md);min-height:48px;}.menu-close span{font-size:32px;}#site-menu nav{display:grid;margin:var(--space-xl) 0 48px;gap:12px;}#site-menu nav a{display:flex;align-items:center;gap:32px;font-size:clamp(42px,6vw,90px);line-height:1.1;letter-spacing:-.045em;}#site-menu nav a span{font:12px var(--mono);letter-spacing:0;}#site-menu nav a:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:8px;}.menu-contact{font-size:20px;text-decoration:underline;text-underline-offset:5px;}
@media(prefers-reduced-motion:no-preference) and (min-width:900px){.js .practice-card{position:sticky;top:120px;}.js .practice-stack{padding-bottom:var(--space-lg);}}
@media(max-width:899px){.info-header{padding-block:var(--space-sm);}.info-brand{font-size:25px;}.info-brand span{font-size:21px;}.info-header nav{gap:var(--space-xs);}.contact-button,.menu-button{padding-inline:var(--space-sm);gap:var(--space-sm)!important;}.work-link{display:none!important;}.journey,.journey-stage{min-height:650px;}.hero-identity{bottom:40px;}.hero-identity h1{font-size:32vw;}.hero-identity>p{font-size:12px;}.hero-bottom{font-size:11px;margin-top:var(--space-md);}.hero-bottom a{gap:var(--space-sm);}.scene-guides{top:46%;}.motion-toggle{top:84px;font-size:10px;}.js .journey{height:220svh;}.js .journey-statement{inset:29% var(--gutter) 16%;display:block;}.journey-statement h2{font-size:clamp(46px,9.5vw,80px);max-width:12ch;}.journey-statement p{font-size:20px;text-align:left;margin-top:var(--space-lg);}.section-label{font-size:10px;}.introduction{padding-block:var(--space-xl) var(--space-2xl);}.word-reveal{font-size:clamp(36px,6.5vw,64px);margin-block:48px;}.intro-detail{gap:var(--space-md);font-size:16px;}.practice{padding-bottom:var(--space-2xl);}.practice-heading{display:block;margin-block:48px;}.practice-heading p{margin-top:var(--space-md);}.practice-heading h2{font-size:clamp(44px,8vw,70px);}.practice-stack{gap:32px;}.practice-card{min-height:0;grid-template-columns:minmax(0,1fr);}.practice-image{height:60svh;min-height:320px;max-height:600px;}.practice-copy{padding:var(--space-md);}.practice-copy h3{margin-top:var(--space-lg);font-size:54px;}.photography-card h3{font-size:46px;}.practice-copy p{font-size:16px;}.practice-copy a{font-size:14px;}.toolkit{padding-block:var(--space-lg) var(--space-2xl);}.toolkit-layout{gap:48px;margin-top:48px;}.toolkit-title{top:120px;}.toolkit-title h2{font-size:clamp(38px,5.5vw,60px);}.toolkit-title p{font-size:16px;}.tool-group ul{font-size:24px;margin-left:0;}.tool-group h3{font-size:20px;}.contact-section{min-height:80svh;padding-top:48px;}.contact-section h2{font-size:clamp(64px,12vw,110px);margin-block:var(--space-xl);}.email-link{gap:var(--space-sm);font-size:clamp(28px,6vw,60px);}.contact-bottom{font-size:12px;gap:var(--space-md);}.info-footer{gap:20px;}.reading-progress{right:6px;}}
@media(max-width:540px){.intro-detail{grid-template-columns:minmax(0,1fr);gap:var(--space-md);}.toolkit-layout{grid-template-columns:minmax(0,1fr);}.toolkit-title{position:static;}.toolkit-title h2{font-size:60px;}.toolkit-title h2 br{display:none;}.toolkit-title h2{max-width:7ch;}.tool-group ul{grid-template-columns:repeat(2,minmax(0,1fr));font-size:20px;gap:var(--space-sm);}.tool-group{padding-bottom:32px;}.contact-bottom{display:block;}.back-top{margin-top:32px;}.info-footer span{width:100%;margin-left:0;}.section-label span:last-child{max-width:18ch;text-align:right;}.practice-image{height:52svh;}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto;}*,*::before,*::after{animation:none!important;transition:none!important;}.js .journey{height:100svh;}.js .journey-stage{position:relative;}.journey-statement{display:none!important;}.motion-toggle{display:none!important;}.practice-card{position:relative!important;}.word-reveal .word{color:var(--ink)!important;}}

.practice-card:focus-within{z-index:5;}

.design-card,.motion-card,#site-menu{--focus:var(--focus-on-light);}
a:active,button:active{opacity:.75;}button:disabled{opacity:.4;cursor:not-allowed;}

/* Direct section navigation replaces the rounded Menu and contact controls. */
.info-header{padding:20px var(--gutter);min-height:88px;}.info-header nav{font:13px var(--sans);gap:var(--space-lg);}.info-header nav>a{min-height:44px;padding:0;border:0;border-radius:0;background:transparent;position:relative;}.info-header nav>a::after{content:'';height:1px;position:absolute;bottom:5px;left:0;right:0;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform 350ms var(--ease);}.info-header nav>a:hover::after,.info-header nav>a[aria-current]::after{transform:scaleX(1);}
@media(max-width:899px){.info-header{min-height:104px;padding:var(--space-xs) 20px;display:grid;grid-template-columns:minmax(0,1fr);gap:0;}.info-brand{font-size:23px;min-height:40px;justify-self:start;}.info-header nav{font-size:12px;justify-content:space-between;gap:12px;}.info-header nav>a{min-height:40px;}.motion-toggle{top:118px;}}

.info-scrolled .info-header{background:var(--bg);border-bottom:1px solid var(--rule);}

:root{--focus:var(--ink);--focus-on-light:var(--paper-ink);}

/* A polished ribbon opening gives way to a light editorial biography. */
:root{--ribbon-mint:#9ce3cc;--bio-ground:#e8ebe5;--bio-ink:#17221f;--bio-muted:#47534d;--bio-rule:#b2beb6;}
.hero-identity{max-width:1530px;margin-inline:auto;bottom:36px;}
.hero-identity h1{display:flex;justify-content:space-between;font-size:clamp(100px,27vw,440px);line-height:.82;margin:0;perspective:1000px;}
.hero-identity h1 span{display:block;transform-origin:center bottom;}
.hero-identity>p{font-size:14px;margin-bottom:20px;}
.hero-bottom{font-size:14px;margin-top:var(--space-md);}
.sculpture-note{position:absolute;left:var(--gutter);top:24%;display:grid;gap:var(--space-xs);font-size:12px;color:var(--muted);}
.sculpture-note span:first-child{color:var(--ribbon-mint);}
.scene-shade{background:linear-gradient(transparent 60%,var(--bg));}
.scene-fallback img{filter:none;opacity:.45;object-fit:contain;}
.js .journey{height:220svh;}
.js .journey-statement{inset:28% var(--gutter) 15%;}
.journey-statement h2{font-size:clamp(54px,7vw,110px);}
.journey-statement p{font-size:clamp(20px,2vw,30px);}
.introduction{background:var(--bio-ground);color:var(--bio-ink);max-width:none;padding-block:var(--space-2xl) var(--space-3xl);}
.introduction .section-label{color:var(--bio-muted);border-color:var(--bio-rule);}
.introduction> *{max-width:1440px;margin-inline:auto;}
.introduction .word-reveal{font-size:clamp(52px,8.5vw,136px);line-height:1.02;letter-spacing:-.055em;margin-block:var(--space-xl);}
.introduction .intro-detail{max-width:760px;margin-left:auto;margin-right:max(0px,calc((100% - 1440px)/2));color:var(--bio-muted);font-size:20px;}
.introduction .word-reveal .word{color:var(--bio-ink)!important;}
.practice{padding-top:var(--space-2xl);}
.practice-heading h2{font-size:clamp(56px,9vw,144px);}
.practice-card{border-radius:0;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);}
.design-card .practice-image{background:var(--bio-ground);}
.design-card .practice-image img{object-fit:contain;padding:32px;}
.practice-copy h3{font-size:clamp(42px,5.4vw,84px);}
.photography-card h3{font-size:clamp(36px,4.2vw,66px);}
.motion-card{background:var(--ribbon-mint);}
.toolkit{background:var(--bio-ground);color:var(--bio-ink);max-width:none;padding-block:var(--space-2xl);}
.toolkit .section-label,.toolkit-title p,.tool-group-heading>span{color:var(--bio-muted);}
.toolkit .section-label,.tool-group{border-color:var(--bio-rule);}
.toolkit> *{max-width:1440px;margin-inline:auto;}
.toolkit .toolkit-layout{margin-top:var(--space-xl);}
.tool-group:hover li{color:var(--bio-ink);}
.contact-section{padding-top:var(--space-2xl);}
.contact-section h2{font-size:clamp(64px,10.5vw,168px);max-width:14ch;}
.email-link{color:var(--ribbon-mint);font-size:clamp(28px,5.6vw,90px);}
@supports(animation-timeline:view()){
 @media(prefers-reduced-motion:no-preference){
  .practice-card{view-timeline-name:--practice;}
  .practice-image img{animation:practice-image-depth linear both;animation-timeline:--practice;animation-range:entry 0% cover 60%;}
 }
}
@keyframes practice-image-depth{from{transform:scale(1.08) translateY(2%);}to{transform:scale(1) translateY(0);}}
@media(max-width:899px){.practice-card{grid-template-columns:minmax(0,1fr);}.hero-identity h1{font-size:27vw;}.hero-identity>p,.hero-bottom{font-size:12px;}.sculpture-note{top:23%;font-size:11px;}.js .journey{height:195svh;}.introduction{padding-block:var(--space-xl) 80px;}.introduction .intro-detail{font-size:16px;}.introduction .word-reveal{font-size:clamp(48px,8.5vw,80px);}.practice{padding-top:var(--space-xl);}.toolkit{padding-block:var(--space-xl);}.practice-copy h3{font-size:52px;}.photography-card h3{font-size:44px;}}
@media(max-width:540px){.sculpture-note{top:24%;}.hero-identity{bottom:40px;}.hero-bottom>span{max-width:12ch;line-height:1.5;}.hero-bottom a{gap:12px;}.journey-statement h2{font-size:48px;}.js .journey-statement{inset:40% var(--gutter) 12%;}.journey-statement p{font-size:18px;margin-top:var(--space-md);}.introduction .word-reveal{font-size:49px;}.practice-heading h2{font-size:60px;}.toolkit-title h2{font-size:56px;}.contact-section h2{font-size:64px;}}
@media(prefers-reduced-motion:reduce){.hero-identity h1 span,.practice-image img{transform:none!important;animation:none!important;}.journey{height:100svh!important;}}

@media(max-width:540px){.sculpture-note{display:none;}}

/* Retained legacy chapter-label selectors use the body voice. */
.section-label{font-family:var(--sans);}

/* Return to the continuous dark Info treatment; retain the ribbon and title motion. */
:root{--bio-ground:var(--bg);--bio-ink:var(--ink);--bio-muted:var(--muted);--bio-rule:var(--rule);}
.introduction,.toolkit{background:var(--bg);color:var(--ink);max-width:1680px;}
.introduction{padding-block:120px var(--space-3xl);}
.introduction .word-reveal{font-size:clamp(40px,6.2vw,100px);line-height:1.08;letter-spacing:-.045em;margin-block:80px var(--space-xl);}
.introduction .intro-detail{margin-right:0;}
.practice{padding-top:var(--space-lg);}
.practice-heading h2{font-size:clamp(48px,7vw,108px);}
.practice-card{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);}
.design-card .practice-image{background:var(--panel);}
.motion-card{background:var(--accent);}
.toolkit{padding-block:80px var(--space-3xl);}
.toolkit .toolkit-layout{margin-top:80px;}
.contact-section{padding-top:80px;}
.email-link{color:var(--ink);}
@media(max-width:899px){.introduction{padding-block:var(--space-xl) var(--space-2xl);}.introduction .word-reveal{font-size:clamp(36px,6.5vw,64px);margin-block:48px;}.practice-card{grid-template-columns:minmax(0,1fr);}.practice-heading h2{font-size:clamp(44px,8vw,70px);}.toolkit{padding-block:var(--space-lg) var(--space-2xl);}.toolkit .toolkit-layout{margin-top:48px;}.contact-section{padding-top:48px;}}

/* Reveals run once on entry; no repeated hidden state while scrolling backward. */
.reveal-line-mask{display:block;overflow:clip;padding-bottom:.13em;margin-bottom:-.13em;}
.reveal-line{display:block;transform-origin:left bottom;}
.js .reveal-pending{opacity:0;}
.js .reveal-pending:focus-within{opacity:1;}
@media(prefers-reduced-motion:reduce){.js .reveal-pending{opacity:1;}.reveal-line{transform:none;}}
@media print{.js .reveal-pending{opacity:1;}}

/* Scroll-driven depth for the illustrated cards and toolkit groups. */
:root{--card-depth-shadow:rgba(0,0,0,.22);}
.card-turn-frame{min-width:0;perspective:1600px;perspective-origin:center 50%;}
.turn-surface{transform-origin:center 50%;backface-visibility:hidden;}
.card-rotation-ready .practice-card{position:relative;top:auto;box-shadow:0 32px 64px var(--card-depth-shadow);}
.card-rotation-ready .practice-stack{gap:var(--space-2xl);}
.card-rotation-ready .practice-image img{animation:none;transform:none;}
.card-rotation-ready .tool-group{background:var(--bg);}
.card-rotation-ready .tool-groups>.card-turn-frame:not(:first-child) .tool-group{padding-top:32px;}
@media(max-width:899px){.card-rotation-ready .practice-stack{gap:var(--space-xl);}.card-turn-frame{perspective:1100px;}}
@media(prefers-reduced-motion:reduce){.turn-surface{transform:none!important;}.card-turn-frame{perspective:none;}}
@media print{.turn-surface{transform:none!important;}.card-turn-frame{perspective:none;}}

/* AirPods-inspired visual gallery: stable frames, depth inside each artwork. */
:root{--poster-paper:#f1f1e8;--motion-edge:#697b93;--motion-layer:#91a4bd;--motion-layer-back:#a9b9cc;--motion-edge-back:#8799b1;--motion-strip:#526886;--motion-strip-mid:#889bb6;--motion-strip-light:#e4eaf2;--photo-ground:#25372b;--photo-paper:#f3f0e6;--photo-shadow:#0008;--photo-shade-top:rgba(0,0,0,.65);--photo-shade-bottom:rgba(0,0,0,.55);--practice-gap:24px;--practice-radius:28px;--design-ground:#d8dad2;--motion-ground:#c2cfe0;--card-shadow:rgba(0,0,0,.28);}
.practice{max-width:none;padding-bottom:var(--space-2xl);}
.practice-heading{max-width:1520px;margin-inline:auto;margin-bottom:48px;}
.practice-heading p{font-size:16px;}
.practice .practice-stack{display:flex;gap:var(--practice-gap);overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);padding:var(--space-xs) var(--gutter) 20px;margin-inline:calc(-1 * var(--gutter));overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:var(--rule) transparent;}
.practice .practice-card{display:block;flex:0 0 clamp(310px,29vw,440px);min-width:0;min-height:0;position:relative;top:auto;overflow:visible;border-radius:0;background:transparent;color:var(--ink);scroll-snap-align:start;--focus:var(--ink);}
.card-visual{position:relative;height:clamp(460px,40vw,590px);overflow:hidden;border-radius:var(--practice-radius);isolation:isolate;background:var(--design-ground);color:var(--paper-ink);}
.card-label{position:absolute;z-index:3;top:32px;left:32px;right:24px;pointer-events:none;}
.card-label>span{display:block;font-size:13px;font-weight:500;margin-bottom:var(--space-sm);}
.card-label h3,.photography-card .card-label h3{font-size:clamp(38px,3.2vw,50px);line-height:1.02;letter-spacing:-.045em;}
.art-stage{position:absolute;inset:31% 0 8%;display:grid;place-items:center;perspective:1000px;}
.card-object{position:relative;transform-style:preserve-3d;transform:rotateX(var(--art-x,0deg)) rotateY(var(--art-y,-16deg)) rotateZ(var(--art-z,-7deg));}
.card-object img{width:100%;height:100%;object-fit:cover;display:block;}
.poster-object{width:61%;aspect-ratio:1122 / 1402;box-shadow:14px 22px 30px var(--card-shadow);}
.poster-object::before{content:'';position:absolute;inset:-8px;background:var(--poster-paper);transform:translateZ(-12px);}
.motion-card .card-visual{background:var(--motion-ground);}
.motion-object{width:80%;aspect-ratio:16/9;--art-z:6deg;--art-y:24deg;box-shadow:10px 28px 32px var(--card-shadow);}
.motion-object img{position:relative;backface-visibility:hidden;}
.motion-echo{position:absolute;inset:0;border:1px solid var(--motion-edge);background:var(--motion-layer);transform:translate3d(-18px,-24px,-35px);}
.motion-echo:nth-child(2){transform:translate3d(-36px,-48px,-70px);background:var(--motion-layer-back);border-color:var(--motion-edge-back);}
.motion-splice{position:absolute;bottom:-36px;left:0;right:0;display:flex;gap:4px;height:16px;transform:translateZ(14px);}
.motion-splice i{flex:1;background:var(--motion-strip);}.motion-splice i:nth-child(2n){background:var(--motion-strip-mid);}.motion-splice i:nth-child(3){flex:2;background:var(--motion-strip-light);}
.photography-card .card-visual{background:var(--photo-ground);color:var(--ink);}
.photo-backdrop{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:48% center;}
.photography-card .card-visual::after{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(var(--photo-shade-top),transparent 55%,var(--photo-shade-bottom));pointer-events:none;}
.photography-card .art-stage{z-index:2;inset:34% 0 8%;}
.photo-object{width:53%;aspect-ratio:3/4;border:8px solid var(--photo-paper);box-shadow:10px 20px 35px var(--photo-shadow);--art-y:-24deg;--art-z:10deg;}
.visual-footnote{position:absolute;bottom:24px;left:32px;z-index:3;font-size:11px;letter-spacing:.01em;pointer-events:none;}
.dimension-card .card-visual{background:var(--bg);color:var(--ink);border:1px solid var(--rule);}
.card-sculpture{position:absolute;inset:25% 0 0;width:100%;height:75%;opacity:0;}
.sculpture-card-fallback{position:absolute;width:56%;height:58%;left:22%;top:32%;object-fit:contain;transform:rotate(-9deg);}
.card-webgl-ready .card-sculpture{opacity:1;}.card-webgl-ready .sculpture-card-fallback{visibility:hidden;}
.practice .practice-copy{padding:var(--space-md) var(--space-xs) 0;display:block;color:var(--muted);}
.practice .practice-copy p{font-size:17px;line-height:1.5;margin:0;min-height:3em;}
.practice .practice-copy a{padding:12px 0 0;margin-top:var(--space-xs);min-height:44px;border:0;align-items:center;color:var(--ink);font-size:15px;}
.practice .practice-copy a span{font-size:22px;transition:transform 250ms var(--ease);}
.practice-copy a:hover span{transform:translate(3px,-3px);}
.practice-controls{display:flex;justify-content:space-between;align-items:center;margin-top:var(--space-md);max-width:1520px;margin-inline:auto;}
.gallery-position{font:12px var(--mono);color:var(--muted);}
.practice-controls>div{display:flex;gap:12px;}
.practice-controls button{width:48px;height:48px;border-radius:50%;background:var(--panel);border:1px solid var(--rule);font-size:24px;transition:background 200ms,color 200ms;}
.practice-controls button:hover:not(:disabled){background:var(--ink);color:var(--bg);}
.practice-controls button:disabled{opacity:.3;}
@media(min-width:1800px){.practice .practice-stack{padding-inline:max(var(--gutter),calc((100vw - 1520px)/2));scroll-padding-inline:max(var(--gutter),calc((100vw - 1520px)/2));}}
@media(max-width:899px){.practice .practice-card{flex-basis:340px;}.card-visual{height:490px;}.card-label h3,.photography-card .card-label h3{font-size:42px;}.practice-heading{margin-bottom:32px;}.practice .practice-copy p{font-size:16px;}}
@media(max-width:540px){:root{--practice-gap:16px;--practice-radius:24px;}.practice .practice-card{flex-basis:calc(100vw - 64px);}.card-visual{height:460px;}.card-label{top:28px;left:28px;}.card-label h3,.photography-card .card-label h3{font-size:40px;}.visual-footnote{left:28px;}.practice .practice-copy{padding-inline:4px;}.practice-controls{margin-top:var(--space-sm);}}
@media(prefers-reduced-motion:reduce){.card-object{transform:none!important;}.practice-stack{scroll-behavior:auto;}}
@media print{.practice .practice-stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible;margin:0;padding:0;}.practice-card{break-inside:avoid;}.card-object{transform:none!important;}.practice-controls{display:none!important;}}

.practice-controls button svg{width:20px;height:20px;display:block;margin:auto;fill:none;stroke:currentColor;stroke-width:1.6;}

/* The full practice card is the link; keep native swiping without a visible slider. */
.practice .practice-stack{scrollbar-width:none;}
.practice .practice-stack::-webkit-scrollbar{display:none;}
.practice a.practice-card{cursor:pointer;}
.practice a.practice-card:focus-visible{outline:2px solid var(--ink);outline-offset:5px;}
.practice a.practice-card:active{opacity:1;}

:root{--game-ground:#182d40;--game-ink:#fff1d4;}
.development-card .card-visual{background:var(--game-ground);color:var(--game-ink);}
.game-object{width:94%;aspect-ratio:1440/792;--art-y:18deg;--art-z:-5deg;box-shadow:10px 28px 32px var(--card-shadow);}
.game-object img{object-fit:contain;backface-visibility:hidden;}
