/* Foundation: Inter, a 4px spacing grid, and a single violet accent. */
:root{
 --canvas:#121016;--surface:#1c1824;--surface-hover:#25202e;
 --ink:#f4f1f8;--secondary:#aaa2b5;--accent:#b69af5;--accent-solid:#7950d2;
 --accent-hover:#8b62e4;--on-accent:#fff;--line:#ffffff1c;--image-canvas:#e8e3ee;
 --font:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
 --text-xs:0.75rem;--text-sm:0.875rem;--text-base:1rem;--text-lg:1.25rem;
 --text-project:1.75rem;--text-section:2rem;--text-statement:2.5rem;
 --text-hero:var(--type-step-48-104);
 --radius-sm:8px;--radius-md:12px;--radius-lg:16px;
 --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;
 --s8:32px;--s10:40px;--s12:48px;--s16:64px;--s20:80px;--s24:96px;
 --content:1120px;--gutter:clamp(24px,6.25vw,96px);
 --ease:cubic-bezier(.22,1,.36,1);--duration:220ms;
 color-scheme:dark;
}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:112px}body{margin:0;font-family:var(--font);font-size:var(--text-base);line-height:1.6;color:var(--ink);background:var(--canvas);-webkit-font-smoothing:antialiased}::selection{background:var(--accent);color:var(--canvas)}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:6px}a,button{touch-action:manipulation}button:active,.button:active{transform:scale(.98)}img{display:block;width:100%;height:auto}h1,h2,h3,p,dl,dd{margin:0}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}.container{width:min(var(--content),calc(100% - var(--gutter)*2));margin-inline:auto}.skip{position:fixed;top:-100px;left:var(--s6);z-index:100;padding:var(--s4);background:var(--ink);color:var(--canvas);border-radius:var(--radius-sm)}.skip:focus{top:var(--s4)}
.header{position:fixed;z-index:30;top:var(--s5);left:50%;transform:translateX(-50%);width:min(var(--content),calc(100% - var(--gutter)*2));height:72px;display:flex;align-items:center;gap:var(--s8);padding:0 var(--s6);border:1px solid var(--line);border-radius:var(--radius-md);background:rgba(24,20,31,.88);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.wordmark{font-size:var(--text-lg);line-height:1.2;font-weight:600;letter-spacing:-.04em;white-space:nowrap}.wordmark>span{color:var(--accent)}.desktop-nav{display:flex;gap:var(--s8);margin-left:auto}.desktop-nav a{font-size:var(--text-sm);font-weight:450;color:var(--secondary);padding:var(--s3) 0;transition:color var(--duration)}.desktop-nav a:hover,.desktop-nav a[aria-current]{color:var(--ink)}.button{display:inline-flex;justify-content:center;align-items:center;gap:var(--s6);padding:var(--s4) var(--s6);background:var(--accent-solid);color:var(--on-accent);border:1px solid transparent;border-radius:var(--radius-sm);font-size:var(--text-sm);line-height:1.4;font-weight:500;white-space:nowrap;transition:background var(--duration),transform var(--duration)}.button:hover{background:var(--accent-hover)}.button-small{padding:var(--s3) var(--s4)}.button>span{font-size:var(--text-base);line-height:1}.menu-toggle{display:none}.mobile-nav[hidden]{display:none}
.hero{padding-top:200px;padding-bottom:var(--s20)}.eyebrow{font-size:var(--text-sm);color:var(--secondary);font-weight:450}.hero h1{font-size:var(--text-hero);line-height:1.06;letter-spacing:-.065em;font-weight:550;margin-top:var(--s6)}.hero h1>span{color:var(--accent)}.hero-bottom{display:flex;align-items:end;justify-content:space-between;gap:var(--s8);margin-top:var(--s10)}.hero-bottom>p{font-size:var(--text-base);line-height:1.6;color:var(--secondary)}.text-link{display:inline-flex;align-items:center;gap:var(--s3);font-size:var(--text-sm);line-height:1.5;font-weight:450;padding:var(--s3) 0;transition:color var(--duration)}.text-link span{transition:transform var(--duration) var(--ease)}.text-link:hover{color:var(--accent)}.text-link:hover span{transform:translate(2px,2px)}
.work-section{padding-top:var(--s10);padding-bottom:var(--s24)}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:var(--s6);margin-bottom:var(--s8)}.section-heading h2{font-size:var(--text-section);line-height:1.2;letter-spacing:-.045em;font-weight:500}.section-meta{font-size:var(--text-sm);color:var(--secondary)}.project-visual{display:block;overflow:hidden;position:relative;isolation:isolate;aspect-ratio:16/10;background:var(--image-canvas);border-radius:var(--radius-lg)}.project-visual img{height:100%;object-fit:contain;transition:transform 500ms var(--ease)}.project-visual:hover img,.project-visual:focus-visible img{transform:scale(1.025)}.featured .project-visual{aspect-ratio:2/1}.visual-action{position:absolute;right:var(--s6);bottom:var(--s6);font-size:var(--text-sm);font-weight:450;line-height:1.4;padding:var(--s3) var(--s4);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);opacity:0;transform:translateY(8px);transition:opacity var(--duration),transform var(--duration) var(--ease);pointer-events:none}.project-visual:hover .visual-action,.project-visual:focus-visible .visual-action{opacity:1;transform:translateY(0)}.project-info{padding-top:var(--s6)}.project-type{font-size:var(--text-xs);font-weight:450;color:var(--secondary);line-height:1.5}.project-info h3{font-size:var(--text-project);line-height:1.3;font-weight:500;letter-spacing:-.04em;margin-top:var(--s2)}.project-info h3>a{display:inline-flex;align-items:center;gap:var(--s4);transition:color var(--duration)}.project-info h3>a:hover{color:var(--accent)}.project-arrow{font-size:var(--text-lg);color:var(--accent);font-weight:400;transition:transform var(--duration) var(--ease)}.project-info h3>a:hover .project-arrow{transform:translate(2px,-2px)}.project-description{font-size:var(--text-sm);line-height:1.6;color:var(--secondary);margin-top:var(--s2);max-width:58ch}.results{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s8);margin-top:var(--s8);padding-top:var(--s6);border-top:1px solid var(--line)}.results>div{display:flex;flex-direction:column-reverse;gap:var(--s2)}.results dt{font-size:var(--text-xs);color:var(--secondary);font-weight:400}.results dd{font-size:var(--text-project);line-height:1.2;font-weight:500;letter-spacing:-.04em;font-variant-numeric:tabular-nums}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s16) var(--s8);margin-top:var(--s16)}
.about{padding-top:var(--s16);padding-bottom:var(--s20);border-top:1px solid var(--line)}.about-content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s16);margin-top:var(--s10)}.about-lead{font-size:var(--text-statement);line-height:1.25;letter-spacing:-.045em;font-weight:450}.about-body{font-size:var(--text-base);line-height:1.7;color:var(--secondary);max-width:50ch}.about-body>p+p{margin-top:var(--s5)}.contact{padding-top:var(--s16);padding-bottom:var(--s16);border-top:1px solid var(--line)}.contact-content{display:flex;justify-content:space-between;align-items:center;gap:var(--s8)}.contact h2{font-size:var(--type-step-32-56);line-height:1.15;font-weight:500;letter-spacing:-.055em;margin-top:var(--s4)}.contact-links{display:flex;align-items:center;justify-content:space-between;gap:var(--s6);margin-top:var(--s8);font-size:var(--text-sm);color:var(--secondary)}.contact-links>a:hover{color:var(--accent)}footer{display:flex;justify-content:space-between;align-items:center;gap:var(--s6);border-top:1px solid var(--line);padding-block:var(--s8);font-size:var(--text-xs);color:var(--secondary)}footer>div{display:flex;align-items:center;gap:var(--s6)}footer a:hover{color:var(--ink)}#motion-toggle{font-size:inherit;border:0;background:none;padding:var(--s3) 0;transition:color var(--duration)}#motion-toggle:hover{color:var(--ink)}
.js.motion .reveal{opacity:0;transform:translateY(16px);transition:opacity 500ms var(--ease),transform 600ms var(--ease)}.js.motion .reveal.visible{opacity:1;transform:translateY(0)}.js.motion .hero h1,.js.motion .hero-bottom{animation:arrive 650ms var(--ease) both}.js.motion .hero-bottom{animation-delay:80ms}@keyframes arrive{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:900px){:root{--text-hero:var(--type-step-48-72);--text-statement:2rem}.header{gap:var(--s6);padding-inline:var(--s5)}.hero{padding-top:184px;padding-bottom:var(--s16)}.about-content{gap:var(--s8)}.project-grid{gap:var(--s12) var(--s6)}}
@media(max-width:600px){:root{--gutter:24px;--text-section:1.5rem;--text-project:1.5rem;--text-statement:1.75rem;--text-hero:var(--type-step-36-48)}html{scroll-padding-top:104px}.header{top:var(--s4);width:calc(100% - var(--s8));height:64px;padding-inline:var(--s4);gap:var(--s4)}.wordmark{font-size:var(--text-base)}.desktop-nav{display:none}.nav-contact{margin-left:auto;gap:var(--s3);font-size:var(--text-xs);padding:var(--s3)}.menu-toggle{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:6px;flex-shrink:0;width:32px;height:44px;padding:0;border:0;background:none}.menu-toggle span{width:20px;height:1px;background:var(--ink);transition:transform var(--duration)}.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(3.5px) rotate(45deg)}.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-3.5px) rotate(-45deg)}.mobile-nav{position:absolute;top:76px;left:-1px;right:-1px;padding:var(--s2) var(--s5);display:flex;flex-direction:column;gap:0;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}.mobile-nav a{padding:var(--s4) 0;font-size:var(--text-sm);border-bottom:1px solid var(--line)}.mobile-nav a:last-child{border-bottom:0}.hero{padding-top:160px;padding-bottom:var(--s12)}.eyebrow{font-size:var(--text-xs)}.hero h1{letter-spacing:-.06em;line-height:1.12;margin-top:var(--s5)}.hero-bottom{flex-direction:column;align-items:start;gap:var(--s5);margin-top:var(--s6)}.hero-bottom>p{font-size:var(--text-sm)}.desktop-break{display:none}.work-section{padding-top:var(--s8);padding-bottom:var(--s16)}.section-heading{margin-bottom:var(--s6)}.section-meta{display:none}.featured .project-visual{aspect-ratio:16/10}.project-info{padding-top:var(--s5)}.project-type{font-size:var(--text-xs)}.project-info h3{margin-top:var(--s1)}.project-description{font-size:var(--text-sm);margin-top:var(--s2)}.results{gap:var(--s4);padding-top:var(--s5);margin-top:var(--s6)}.results dd{font-size:var(--text-project)}.results dt{font-size:0.75rem;line-height:1.5}.project-grid{grid-template-columns:minmax(0,1fr);gap:var(--s10);margin-top:var(--s10)}.project-visual{border-radius:var(--radius-lg)}.visual-action{display:none}.about{padding-top:var(--s12);padding-bottom:var(--s12)}.about-content{grid-template-columns:minmax(0,1fr);gap:var(--s6);margin-top:var(--s8)}.about-body{font-size:var(--text-sm)}.contact{padding-top:var(--s12);padding-bottom:var(--s12)}.contact-content{flex-direction:column;align-items:start;gap:var(--s6)}.contact h2{font-size:2rem}.contact-links{margin-top:var(--s6);flex-direction:column;align-items:start;gap:var(--s2);font-size:var(--text-xs)}footer{padding-block:var(--s6);font-size:0.75rem;gap:var(--s4);flex-wrap:wrap}footer>div{gap:var(--s4)}}
@media(max-width:360px){:root{--gutter:20px}.header{gap:var(--s3);padding-inline:var(--s3)}.wordmark{font-size:var(--text-sm)}.hero h1{font-size:2.25rem}.hero-bottom>p{max-width:30ch}.results{gap:var(--s3)}.results dt{max-width:12ch}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js.motion .reveal{opacity:1;transform:none}}
html.no-motion{scroll-behavior:auto}html.no-motion *{animation:none!important;transition:none!important}html.no-motion .reveal{opacity:1!important;transform:none!important}
/* Immersive motion, with the same type, spacing, and surface tokens. */
.hero{position:relative;isolation:isolate;overflow:hidden;min-height:760px;height:94svh;max-height:1080px;padding:0;display:flex;align-items:end;background:#15101f}
.hero-atmosphere{position:absolute;inset:0;z-index:-2;background:radial-gradient(ellipse at 75% 38%,#48306a55,transparent 55%),linear-gradient(145deg,#171020,#0e0c13)}
#hero-canvas{position:absolute;z-index:-1;right:-9%;top:-8%;width:85%;height:110%;pointer-events:none;opacity:.94;transition:opacity 500ms}
.hero-content{padding-top:180px;padding-bottom:104px;position:relative;z-index:1}
.hero .eyebrow{color:#c5bdd0}
.hero h1{font-size:var(--type-step-60-112);letter-spacing:-.065em;line-height:1.04;font-weight:550;margin-top:var(--s6);text-shadow:0 2px 40px #110c1c55}
.hero h1>span{color:#c8adff}
.hero-bottom{margin-top:var(--s10)}
.hero-bottom>p{color:#c5bdd0}
.hero-bottom .text-link{padding:var(--s4) 0;color:var(--ink)}
.hero-bottom .text-link>span{display:grid;place-items:center;width:40px;height:40px;margin-left:var(--s4);border-radius:50%;border:1px solid #ffffff45}
.hero-bottom .text-link:hover>span{background:var(--accent-solid);border-color:transparent;transform:translateY(4px)}
.work-section{padding-top:var(--s20)}
.section-heading{margin-bottom:var(--s10)}
.section-heading h2{font-size:2.5rem}
.featured .project-visual{aspect-ratio:1.85}
.project-visual img{transform:translateY(var(--image-y,0px)) scale(1.035);transition:transform 700ms var(--ease)}
.project-visual:hover img,.project-visual:focus-visible img{transform:translateY(var(--image-y,0px)) scale(1.065)}
.project-visual{border-radius:var(--radius-lg)}
.slider-shell{margin-top:var(--s20)}
.slider-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--s6);margin-bottom:var(--s8)}
.slider-heading h2{font-size:var(--text-lg);font-weight:500;letter-spacing:-.025em;line-height:1.3}
.slider-controls{display:flex;align-items:center;gap:var(--s3)}
.slide-status{font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--secondary);margin-right:var(--s4)}
.slide-button{display:grid;place-items:center;width:44px;height:44px;flex:none;border:1px solid var(--line);border-radius:50%;background:var(--surface);font-size:var(--text-lg);transition:background var(--duration),border-color var(--duration),opacity var(--duration)}
.slide-button:hover:not(:disabled){background:var(--accent-solid);border-color:transparent}
.slide-button:disabled{opacity:.3;cursor:default}
.project-slider{display:flex;gap:var(--s8);width:calc(100% + (100vw - 100%)/2);overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;padding:0 max(var(--gutter),calc((100vw - var(--content))/2)) var(--s2) 0;overscroll-behavior-x:contain;touch-action:pan-x pan-y;cursor:grab}
.project-slider::-webkit-scrollbar{display:none}
.project-slider.dragging{cursor:grabbing;scroll-behavior:auto;scroll-snap-type:none;user-select:none}
.project-slider>.project{flex:0 0 min(78vw,880px);min-width:0;scroll-snap-align:start;scroll-snap-stop:always;opacity:1!important;transform:none!important}
.project-slider .project-visual{aspect-ratio:1.85}
.project-slider img{-webkit-user-drag:none;user-select:none}
.project-slider .project-info h3{font-size:var(--text-section)}
.project-slider .project-description{font-size:var(--text-base);max-width:48ch}
.about{padding-top:var(--s20);padding-bottom:var(--s24)}
.contact{padding-block:var(--s20)}
.js.motion .reveal{transition:opacity 750ms var(--ease),transform 950ms var(--ease);transform:translateY(28px)}
.js.motion .hero .eyebrow{animation:arrive 900ms var(--ease) both}
.js.motion .hero h1{animation:arrive 1100ms var(--ease) 100ms both}
.js.motion .hero-bottom{animation:arrive 1100ms var(--ease) 220ms both}
@media(max-width:900px){.hero{min-height:740px;height:90svh}.hero h1{font-size:var(--type-step-52-76)}#hero-canvas{right:-20%;top:-12%;width:110%;height:105%}.hero-content{padding-bottom:var(--s20)}.hero-bottom{align-items:start}.hero-bottom .text-link{white-space:nowrap}.section-heading h2{font-size:var(--text-section)}}
@media(max-width:600px){.hero{height:90svh;min-height:760px;max-height:960px}.hero-content{padding-top:170px;padding-bottom:var(--s12)}#hero-canvas{top:-20%;right:-28%;width:135%;height:100%;opacity:.8}.hero-atmosphere{background:radial-gradient(ellipse at 65% 25%,#48306a50,transparent 65%),#120d1b}.hero h1{font-size:var(--type-step-36-48);line-height:1.1;margin-top:var(--s5)}.hero-bottom{gap:var(--s5);margin-top:var(--s6)}.hero-bottom>p{max-width:30ch}.hero-bottom .text-link{padding:var(--s2) 0}.hero-bottom .text-link>span{width:36px;height:36px;margin-left:var(--s2)}.work-section{padding-top:var(--s12)}.section-heading{margin-bottom:var(--s6)}.featured .project-visual{aspect-ratio:16/10}.slider-shell{margin-top:var(--s12)}.slider-heading{margin-bottom:var(--s6)}.slider-heading h2{font-size:var(--text-lg)}.slide-status{margin-right:var(--s1)}.slider-controls{gap:var(--s2)}.slide-button{width:40px;height:40px}.project-slider{gap:var(--s5)}.project-slider>.project{flex-basis:82vw}.project-slider .project-visual{aspect-ratio:1.45}.project-slider .project-info h3{font-size:var(--text-project)}.project-slider .project-description{font-size:var(--text-sm)}.about{padding-block:var(--s12)}.contact{padding-block:var(--s12)}}
@media(prefers-reduced-motion:reduce){.project-slider{scroll-behavior:auto}.project-visual img{transform:none!important}}
html.no-motion .project-slider{scroll-behavior:auto}html.no-motion .project-visual img{transform:none!important}
/* The growth system is a full-bleed layer across the entire hero. */
.hero{height:92svh;min-height:760px;max-height:960px}
.hero #hero-canvas{inset:0;width:100%;height:100%;opacity:1}
.hero-atmosphere{background:radial-gradient(ellipse at 76% 32%,#4c2b7038,transparent 66%),linear-gradient(145deg,#171020,#0e0c13)}
.growth-stages{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
.growth-stages>span{position:absolute;color:#8d789f;font-size:0.75rem;letter-spacing:.08em;display:flex;gap:10px;align-items:center;white-space:nowrap}
.growth-stages b{font-weight:450;color:#b8a7ca;letter-spacing:.02em;font-size:0.75rem}
.growth-stages>span:nth-child(1){left:44.3%;top:49%}.growth-stages>span:nth-child(2){left:66.8%;top:45%}.growth-stages>span:nth-child(3){left:87.2%;top:28%}
.hero h1{font-size:var(--type-step-56-100);max-width:1100px}
@media(max-width:900px){.hero h1{font-size:var(--type-step-48-72)}.growth-stages b{font-size:0.75rem}.growth-stages>span{gap:6px;font-size:0.75rem}}
@media(max-width:600px){.hero{height:92svh;min-height:720px;max-height:900px}.hero h1{font-size:var(--type-step-32-48);line-height:1.1}.hero .eyebrow{font-size:0.75rem}.growth-stages b{font-size:0.75rem}.growth-stages>span{font-size:0.75rem;gap:5px;letter-spacing:0}.growth-stages>span:nth-child(1){left:18%;top:42%}.growth-stages>span:nth-child(2){left:50%;top:37%}.growth-stages>span:nth-child(3){left:77%;top:24%}}
/* The Freeman cover and its frame share a 2:1 ratio; no exposed side gutters. */
.featured .project-visual img{object-fit:cover}
.featured .project-visual{aspect-ratio:2/1;background:#e88c36;transition:transform 500ms var(--ease)}
.featured .project-visual img,.featured .project-visual:hover img,.featured .project-visual:focus-visible img{transform:none}
.featured .project-visual:hover{transform:translateY(-4px)}

/* Text-only calls to action. */
.nav-contact,.contact .button,.contact-links a,.visual-action{gap:0}

/* One full viewport with the complete text group vertically centered. */
.hero{height:100svh;height:100dvh;min-height:0;max-height:none;align-items:center}
.hero-content{padding-block:0}
@media(max-height:650px) and (min-width:601px){.hero h1{font-size:var(--type-step-44-80)}.hero-bottom{margin-top:24px}}

/* First-person introduction: name, practice, and experience. */
.hero .personal-intro h1{font-size:var(--type-step-48-72);line-height:1.12;font-weight:450;letter-spacing:-.055em;margin:0 0 24px;max-width:900px}
.hero-role{display:inline-block;max-width:760px;padding:10px 16px;border:1px solid #ffffff20;border-radius:999px;color:#ede7f5;background:#17121e99;font-size:1rem;line-height:1.5;margin:0 0 28px}
.hero-bio{max-width:740px;font-size:1.25rem;line-height:1.65;letter-spacing:-.025em;color:#d4ccdf;text-wrap:pretty}
.hero-bio p+p{margin-top:20px}
.personal-intro .hero-bottom{margin-top:24px;justify-content:flex-start}
.personal-intro .hero-bottom .text-link{padding:0;font-size:0.875rem}
@media(max-width:900px){.hero-bio{max-width:650px;font-size:1.25rem}.hero-role{font-size:0.875rem;max-width:650px}}
@media(max-width:600px){.hero .personal-intro h1{font-size:2.5rem;margin-bottom:18px}.hero-role{border-radius:16px;padding:9px 12px;font-size:0.75rem;margin-bottom:20px;max-width:100%}.hero-bio{font-size:0.875rem;line-height:1.65}.hero-bio p+p{margin-top:14px}.personal-intro .hero-bottom{margin-top:20px}.personal-intro .hero-bottom .text-link{font-size:0.75rem}}
@media(max-height:740px) and (min-width:601px){.hero .personal-intro h1{font-size:3.25rem;margin-bottom:16px}.hero-role{margin-bottom:20px}.hero-bio{font-size:1rem;max-width:760px}.hero-bio p+p{margin-top:14px}.personal-intro .hero-bottom{margin-top:18px}}

@media(max-width:600px){.hero:has(.personal-intro) #hero-canvas{opacity:.28}.hero:has(.personal-intro) .growth-stages{display:none}}

/* Brand-backed cards turn laterally with a quiet specular sweep. */
.project-visual.flip-card{perspective:2400px;overflow:visible;background:transparent;isolation:auto}
.project-rotor{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateY(var(--card-turn,0deg)) rotateZ(var(--card-lean,0deg)) scale(var(--card-scale,1));transition:none;border-radius:inherit}
.project-face{position:absolute;inset:0;border-radius:inherit;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:0 14px 40px #00000020}
.project-front{transform:rotateY(0deg);background:var(--image-canvas)}
.project-front>img{display:block;width:100%;height:100%}
.project-front:after{content:'';position:absolute;inset:-30%;pointer-events:none;background:linear-gradient(110deg,transparent 25%,#fff 50%,transparent 75%);opacity:var(--card-light,0);transform:translateX(var(--light-x,0%));transition:none}
.project-back{transform:rotateY(180deg);display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:clamp(24px,5vw,72px);gap:16px;background:linear-gradient(135deg,#ffffff08,transparent 55%),var(--back-tone,#3f3165);border:1px solid #ffffff25;color:#fff6eb}
.project-back:after{content:'';position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 1px 0 #ffffff25;pointer-events:none}
.project-back strong{font-size:var(--type-step-32-88);font-weight:450;letter-spacing:-.065em;line-height:1.05}
.flip-index{margin-bottom:clamp(12px,2vw,28px);font-size:0.75rem;color:#fff6eb99;letter-spacing:.12em}
.flip-category{font-size:0.875rem;color:#fff6ebaa}
.flip-card:not(.cover-visible) .visual-action{opacity:0}
@media(max-width:600px){.project-rotor{transition-duration:140ms}.project-back{gap:10px}.flip-index{font-size:0.75rem}.flip-category{font-size:0.75rem}}
@media(prefers-reduced-motion:reduce){.project-rotor{transform:none;transition:none}.project-front:after{display:none}}
html.no-motion .project-rotor{transform:none;transition:none}
html.no-motion .project-front:after{display:none}
