/* Final surface system: original categories, a personal introduction and stable media. */
.intro-person{display:flex;align-items:center;gap:23px;margin-bottom:30px}.intro-person>img{width:84px;height:84px;border-radius:50%;object-fit:cover;object-position:50% 30%;border:1px solid #ddc49a55;padding:4px;background:#2d3128}.intro-person>.eyebrow{margin:0!important;max-width:600px;line-height:1.9}.studio-hero{padding-top:35px}.kinetic-heading{font-size:clamp(55px,6vw,88px)}
#project-controls .controls{display:block}.filter-tabs{gap:9px 25px;padding-bottom:18px;border-bottom:1px solid #ffffff18}.filter-tabs button{font-size:13px;line-height:1.8;padding:9px 0}.filter-tabs button[aria-pressed=true]{color:#f0d6a2;border-bottom-color:#e4c993;box-shadow:0 1px #e4c993}.collection-tools{display:flex;justify-content:space-between;align-items:flex-end;gap:35px;padding-top:24px}.discipline-field{display:flex;flex-direction:column;gap:6px;min-width:230px}.discipline-field>span{font-size:11px;color:#a8b49b}.discipline-field select{font:inherit;font-size:13px;color:#e0dbc9;background:#292e24;border:1px solid #ffffff25;border-radius:0;padding:9px 12px;min-height:42px}.collection-tools .search-field{width:min(440px,50%)}.collection-tools .search-field input{width:100%;min-width:0}.result-count{color:#b5bfa8;font-size:12px}
/* Never rotate or displace a thumbnail, its text or its hit area. */
.project-image,.hero-project,.journal-thumbnail,.video-player,.pointer-depth{transform:none!important}.project-image:hover img,.video-poster:hover>img{transform:none!important}.thumb-interactive{--thumb-x:50%;--thumb-y:50%;position:relative;isolation:isolate}.thumb-interactive::after{display:none!important}.thumb-border,.thumb-lens,.thumb-texture{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:0;transition:opacity .35s;z-index:3}.thumb-border{z-index:6;box-shadow:inset 0 0 0 1px #e5cf9d85;overflow:hidden}.thumb-border::before{content:'';position:absolute;top:0;bottom:0;left:-45%;width:35%;background:linear-gradient(105deg,transparent,#efd7a920,transparent);transform:skewX(-16deg)}.is-hovered .thumb-border{opacity:.8}.is-hovered .thumb-border::before{animation:thumbnail-pass 1.2s cubic-bezier(.2,.7,.2,1) both}.thumb-lens{object-fit:cover;filter:saturate(1.13) brightness(1.12);clip-path:circle(82px at var(--thumb-x) var(--thumb-y));z-index:3}.thumb-texture{object-fit:cover;clip-path:circle(85px at var(--thumb-x) var(--thumb-y));z-index:3}.is-hovered[data-thumb-effect=lens] .thumb-lens{opacity:.9}.is-hovered[data-thumb-effect=pixels] .thumb-texture{opacity:.7;image-rendering:pixelated}.is-hovered[data-thumb-effect=shear] .thumb-texture{opacity:.6;animation:thumbnail-refract .6s ease-out both}.is-hovered[data-thumb-effect=focus] .thumb-lens{opacity:.7;filter:blur(1.4px) saturate(.8);mask-image:radial-gradient(circle,transparent 25%,#000 45%,#000 65%,transparent 75%)}.is-hovered[data-thumb-effect=sheen] .thumb-border::before{background:linear-gradient(110deg,transparent,#f6e2ba38,transparent);width:50%;animation-duration:1.4s}.is-hovered[data-thumb-effect=edge] .thumb-border{box-shadow:inset 0 0 0 1px #f1d49bc0,inset 0 0 22px #e6c48612}.previewing .thumb-lens,.previewing .thumb-texture,.is-playing .thumb-lens,.is-playing .thumb-texture{opacity:0!important}.is-playing .thumb-border{opacity:0}.video-player .video-poster{z-index:4}.video-player.previewing .video-poster{background:transparent}.video-player.previewing .video-poster>img{opacity:0}.video-player .thumbnail-preview{z-index:2}.project-play{z-index:8}.thumb-interactive .preview-countdown{z-index:7}
.preview-countdown{position:absolute;left:16px;top:16px;width:48px;height:48px;background:#1d241bdc;border-radius:50%;pointer-events:none;color:#eddaa9;box-shadow:0 3px 18px #0003;transition:opacity .25s}.preview-countdown>svg{width:48px;height:48px;transform:rotate(-90deg);fill:none;stroke-width:1.5}.countdown-track{stroke:#e0c59530}.countdown-progress{stroke:#ead0a0;stroke-dasharray:100;stroke-dashoffset:0}.countdown-number{position:absolute;inset:0;display:grid;place-items:center;font-size:16px;font-family:Manrope,sans-serif}.countdown-label{position:absolute;left:58px;top:13px;white-space:nowrap;font-size:11px;color:#f2e7cd;background:#20271ccc;padding:1px 7px}.previewing .preview-countdown{opacity:0}.previewing::before{content:'Muted preview';font-size:11px}.journal-thumbnail .preview-countdown{left:5px;top:5px;transform:scale(.7);transform-origin:top left}.journal-thumbnail .countdown-label{display:none}
@keyframes thumbnail-pass{from{left:-50%;opacity:0}20%{opacity:1}to{left:120%;opacity:0}}@keyframes thumbnail-refract{0%{transform:translateX(2px)}30%{transform:translateX(-2px)}70%{transform:translateX(1px)}100%{transform:translateX(0)}}
/* Feathered local surfaces: independent shape and treatment vary on every visit. */
.thumb-lens,.thumb-texture{clip-path:none;mask-image:var(--patch-mask);-webkit-mask-image:var(--patch-mask);mask-size:var(--patch-width,240px) var(--patch-height,200px);-webkit-mask-size:var(--patch-width,240px) var(--patch-height,200px);mask-position:var(--patch-left,0px) var(--patch-top,0px);-webkit-mask-position:var(--patch-left,0px) var(--patch-top,0px);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;z-index:5;transition:opacity .45s ease;will-change:mask-position}
.is-hovered[data-thumb-effect=lens] .thumb-lens{opacity:var(--surface-opacity,.6);filter:brightness(1.12) saturate(1.08) blur(.35px)}
.is-hovered[data-thumb-effect=pixels] .thumb-texture{opacity:var(--surface-opacity,.6);filter:saturate(.85);image-rendering:pixelated}
.is-hovered[data-thumb-effect=shear] .thumb-texture{opacity:var(--surface-opacity,.6);filter:blur(.35px);animation:thumbnail-refract .8s ease-out both}
.is-hovered[data-thumb-effect=focus] .thumb-lens{opacity:var(--surface-opacity,.6);filter:blur(var(--surface-blur,1.4px)) saturate(.85);mask-image:var(--patch-mask);-webkit-mask-image:var(--patch-mask)}
.hero-previewing .thumb-lens,.hero-previewing .thumb-texture{opacity:0!important}
.thumb-border{box-shadow:none;background:radial-gradient(ellipse 180px 115px at var(--thumb-x) var(--thumb-y),#d9e6ef0c,transparent 85%)}
.is-hovered[data-thumb-effect=edge] .thumb-border{box-shadow:inset 0 0 0 1px #e8d8b330;background:radial-gradient(ellipse 160px 100px at var(--thumb-x) var(--thumb-y),#e7d3a91a,transparent 85%)}
.is-hovered[data-thumb-effect=sheen] .thumb-lens{opacity:var(--surface-opacity,.6);filter:brightness(1.16) saturate(.9) blur(.5px)}
/* Shared response timing, clear keyboard focus and interruptible transitions. */
:root{--ui-ease:cubic-bezier(.2,.7,.2,1)}
:where(a,button,input,select,summary):focus-visible{outline:2px solid #e8cfa0;outline-offset:5px;box-shadow:0 0 0 5px #e8cfa012;border-radius:2px}
.filter-tabs button{transition:color .22s,border-color .22s,box-shadow .22s}
.search-field input,.journal-search input{transition:border-color .22s,box-shadow .22s}
.search-field input:focus,.journal-search input:focus{border-color:#e8cfa0}
#project-grid,#journal-grid{overflow-anchor:none}
.thumb-interactive[data-motion-pace=quick][data-thumb-effect=shear] .thumb-texture{translate:var(--flow-x,0px) var(--flow-y,0px);transition:opacity .22s,translate .16s var(--ui-ease)}
.thumb-interactive[data-motion-pace=rest] .thumb-border{opacity:.24}
.thumb-interactive[data-motion-pace=rest] .thumb-border::before{animation:none}
.media-loading{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;gap:13px;background:#23271fc9;pointer-events:none;color:#e8d7b4;font-size:12px;opacity:1;transition:opacity .28s}
.media-loading::before{content:'';width:18px;height:18px;border:1px solid #ddc49a30;border-top-color:#ddc49a;border-radius:50%;animation:media-wait .9s linear infinite}
.media-loading.is-ready{opacity:0}.media-loading.is-slow{inset:auto 12px 12px;padding:10px;background:#23271fe6}
.preview-countdown.is-loading>svg{animation:media-wait 1.3s linear infinite}.preview-countdown.is-loading .countdown-progress{stroke-dasharray:24 76;stroke-dashoffset:0!important}
.video-dialog[open]{animation:dialog-arrive .25s var(--ui-ease)}
@keyframes media-wait{to{transform:rotate(360deg)}}
@keyframes dialog-arrive{from{opacity:.4;translate:0 9px}to{opacity:1;translate:0 0}}
@media(max-width:1100px){
 .header #navigation{display:flex;visibility:hidden;opacity:0;max-height:0;overflow:auto;overscroll-behavior:contain;pointer-events:none;padding-block:0;translate:0 -6px;transition:opacity .22s,translate .3s var(--ui-ease),max-height .32s var(--ui-ease),padding .3s var(--ui-ease),visibility 0s .32s}
 .header #navigation.open{visibility:visible;opacity:1;max-height:calc(100dvh - 100px);pointer-events:auto;padding-block:20px;translate:0 0;transition-delay:0s}
 .header nav a{opacity:0;translate:0 -3px;transition:opacity .18s,translate .22s var(--ui-ease)}
 .header nav.open a{opacity:1;translate:0 0;transition-delay:.06s}
}
@media(prefers-reduced-motion:reduce){.media-loading::before,.preview-countdown.is-loading>svg,.video-dialog[open]{animation:none}.header nav,.header nav a,.media-loading,.thumb-texture{transition:none!important;translate:none!important}html{scroll-behavior:auto!important}}
@media print{.media-loading{display:none!important}}
/* Recruiter-first CV: concise summary, explicit skills, then evidence. */
.cv-editorial .resume-actions{margin-bottom:30px}.cv-heading h1{font-size:64px;margin-bottom:12px}.cv-heading{padding-bottom:25px}.cv-position{margin-bottom:20px!important}.cv-editorial section{margin-top:36px}.cv-editorial h2{font-size:29px;margin-bottom:18px}.cv-profile>p{font-size:16px;line-height:1.85}.cv-skill-grid{gap:18px 30px}.cv-skill-grid h3{font-size:17px;margin-bottom:8px}.cv-skill-grid p{font-size:14px;line-height:1.8}.cv-role{padding-block:28px}.cv-role-heading{margin-bottom:15px}.cv-projects{background:transparent;border-left:1px solid #b9aa8240;padding:4px 0 4px 22px;margin-block:22px}.cv-projects h4{font-size:12px;color:#c2ceb2}.cv-projects li>p{font-size:14px;color:#bdc8b0}.cv-role .cv-role-tools{font-size:12px}.cv-end{font-size:12px}
@media(max-width:1100px){.header .menu-toggle{display:flex;gap:12px;align-items:center;background:none;border:0;color:#ddc49a;font-size:12px}.header nav{display:none;position:absolute;left:0;right:0;top:100%;background:#292f24;padding:20px 30px;flex-direction:column;align-items:stretch;gap:0;border-bottom:1px solid #ffffff20}.header nav.open{display:flex}.header nav a{font-size:15px;padding:11px 0}.nav-contact{margin:0}}
@media(max-width:800px){.intro-person>img{width:74px;height:74px}.intro-person{gap:20px;margin-bottom:25px}.kinetic-heading{font-size:7.4vw}.filter-tabs{gap:5px 22px}.collection-tools{gap:25px}.cv-skill-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.intro-person{align-items:center;gap:17px;margin-bottom:25px}.intro-person>img{width:66px;height:66px;padding:3px;flex-shrink:0}.intro-person>.eyebrow{font-size:9px;max-width:225px;line-height:1.9}.kinetic-heading{font-size:clamp(34px,9vw,52px)}.filter-tabs{gap:3px 20px;padding-bottom:16px}.filter-tabs button{font-size:12px;padding:8px 0}.collection-tools{display:block;padding-top:20px}.discipline-field{min-width:0}.discipline-field select{font-size:16px;width:100%}.collection-tools .search-field{width:100%;margin-top:18px}.collection-tools .search-field input{font-size:14px}.countdown-label{font-size:10px}.cv-heading h1{font-size:46px}.cv-editorial section{margin-top:30px}.cv-skill-grid{grid-template-columns:1fr}.cv-projects{padding-left:16px}.cv-role h3{font-size:24px}.preview-countdown{left:12px;top:12px}}
@media(prefers-reduced-motion:reduce){.thumb-border,.thumb-lens,.thumb-texture,.preview-countdown{display:none!important}.thumb-interactive img{filter:none}.is-hovered .thumb-border::before{animation:none}}
@media print{@page{size:A4;margin:15mm 17mm}.cv-heading h1{font-size:27pt}.cv-heading{padding-bottom:12px}.cv-position{font-size:12pt!important;margin-bottom:9px!important}.cv-contact{font-size:9.5pt}.cv-editorial section{margin-top:17px}.cv-editorial h2{font-size:13pt;margin-bottom:10px}.cv-profile>p{font-size:10pt;line-height:1.55}.cv-skill-grid{display:block}.cv-skill-grid>div{border:0;padding:0;margin-bottom:5px;break-inside:avoid}.cv-skill-grid h3{display:inline;font-size:9.5pt;font-weight:600;color:#222}.cv-skill-grid h3::after{content:': '}.cv-skill-grid p{display:inline;font-size:9.5pt;line-height:1.55;color:#333}.cv-role{padding-block:14px}.cv-role h3{font-size:12pt}.cv-responsibilities>li,.cv-projects li>p{font-size:9.5pt;line-height:1.6}.cv-projects{padding:2px 0 2px 12px;margin-block:10px;border-color:#ccc}.cv-projects h4{font-size:9pt;color:#333}.cv-project-title>a{font-size:9.5pt;color:#222}.cv-role .cv-role-tools{font-size:9pt;color:#333}.credential-row h3{font-size:10pt!important}.credential-row p{font-size:9pt!important}.thumb-border,.thumb-lens,.thumb-texture,.preview-countdown,.pointer-spark{display:none!important}.cv-education h3{font-size:11pt}}
