@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700&family=DM+Sans:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--bg:#151615;--surface:#1d1e1c;--line:#353631;--text:#f0eee7;--muted:#a7a8a0;--accent:#f39666}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.65 'DM Sans',sans-serif}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;border:0}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:'Barlow Condensed','Arial Narrow',sans-serif;text-transform:uppercase;line-height:.98;font-weight:600}h2{font-size:clamp(48px,6vw,80px)}h3{font-size:clamp(36px,4vw,54px)}p{color:var(--muted)}.wrap{width:min(1280px,calc(100% - 112px));margin:auto}.eyebrow,.label,.tag,.meta dt{font-size:12px;letter-spacing:1.5px;text-transform:uppercase;font-weight:600}.eyebrow{color:var(--accent);display:flex;gap:12px;align-items:center}.eyebrow:before{content:'';width:20px;height:1px;background:var(--accent)}.label{color:var(--muted)}header{position:sticky;top:0;z-index:20;background:#151615f5;border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}nav{height:84px;display:flex;align-items:center;gap:40px}.brand{display:flex;gap:13px;align-items:center;margin-right:auto;font-size:13px;font-weight:700;letter-spacing:1.4px}.navlinks{display:flex;gap:28px;font-size:14px}.navlinks a:hover,.navlinks a.active{color:var(--accent)}.lang{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:12px}.lang button{background:none;padding:5px 2px;font-size:12px}.lang button[aria-pressed=true]{color:var(--accent)}.menu{display:none;background:none}.hero{position:relative;overflow:hidden;padding:88px 0 40px}.hero-main{display:grid;grid-template-columns:1.3fr 1fr;align-items:center;gap:30px}.hero h1{font-size:clamp(64px,7.8vw,111px);margin:27px 0 10px;letter-spacing:-1.8px}.hero h1 span{display:block;color:var(--accent)}.hero .intro{max-width:570px;font-size:17px;margin-top:25px}.engine{font-size:14px;margin-top:18px;display:flex;align-items:center;gap:9px}.engine b{color:var(--text)}.engine i{display:inline-grid;place-items:center;border:1px solid #85867f;border-radius:50%;font-family:serif;width:25px;height:25px;font-style:normal;color:var(--text)}.ctas{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:32px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:27px;min-height:48px;padding:11px 19px;border:1px solid var(--line);background:transparent;font-size:14px;font-weight:600;transition:background .2s,transform .2s}.btn:hover{background:#ffffff09;transform:translateY(-2px)}.btn.primary{background:var(--accent);color:#161616;border-color:var(--accent)}.text-link{font-size:14px;border-bottom:1px solid #70716a;padding:5px 0;margin-left:7px}.hero-bottom{border-top:1px solid var(--line);margin-top:60px;padding-top:22px;display:flex;justify-content:space-between;font-size:12px;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}.availability{display:flex;gap:9px;align-items:center}.availability:before{content:'';width:6px;height:6px;background:var(--accent);border-radius:50%}.hero-art{position:relative;min-height:350px;display:grid;align-items:center;transform:rotate(-7deg)}.hero-art svg{width:100%;filter:drop-shadow(0 20px 30px #0008)}.art-note{position:absolute;bottom:0;right:5%;font-size:11px;font-family:monospace;letter-spacing:1px;color:var(--muted);transform:rotate(7deg)}section{padding:100px 0 0;scroll-margin-top:20px}.section-head{display:flex;align-items:end;justify-content:space-between;gap:35px;margin-bottom:40px}.section-head h2{margin-top:18px}.section-head p{max-width:440px;font-size:15px}.project{border-top:1px solid var(--line);padding:38px 0 64px}.project-top{display:flex;align-items:center;gap:12px;margin-bottom:17px}.tag{padding:5px 9px;border:1px solid #41443b;color:#c4c6ba;font-size:12px;letter-spacing:1px}.tag.accent{border-color:#f3966655;color:var(--accent)}.project-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px}.project-heading h3{font-size:clamp(42px,5vw,66px)}.featured-layout{display:grid;grid-template-columns:1.65fr 1fr;gap:40px}.project-copy{display:flex;flex-direction:column;gap:23px}.project-copy p{font-size:14px;margin-top:9px}.project-copy .label{color:var(--text)}.variants{display:grid;margin-top:9px}.variant{grid-area:1/1;visibility:hidden;opacity:0;transition:opacity .25s;pointer-events:none}.variant.visible{visibility:visible;opacity:1}.variants p{margin:0}.meta{display:grid;grid-template-columns:1fr 1fr;gap:17px 24px;margin:0;padding-top:20px;border-top:1px solid var(--line)}.meta dt{font-size:12px;color:var(--muted);letter-spacing:1px}.meta dd{font-size:14px;margin:5px 0 0;color:#deded6}.gallery{min-width:0}.media-frame{position:relative;aspect-ratio:16/10;background:#22251f;overflow:hidden;border:1px solid #393d32}.media-open{display:block;width:100%;height:100%;padding:0;background:none;text-align:inherit}.media-open img,.media-frame video{width:100%;height:100%;object-fit:contain}.placeholder{height:100%;width:100%;display:flex;position:relative;flex-direction:column;justify-content:center;align-items:center;background:radial-gradient(ellipse at 60% 40%,#555a3733,transparent 70%),linear-gradient(120deg,#20241f,#2b2c22);overflow:hidden}.placeholder:before{content:'';position:absolute;inset:0;background-image:linear-gradient(#ffffff05 1px,transparent 1px),linear-gradient(90deg,#ffffff05 1px,transparent 1px);background-size:42px 42px}.media-title{font-family:'Barlow Condensed',sans-serif;text-transform:uppercase;font-size:clamp(32px,4vw,62px);line-height:.95;text-align:center;max-width:80%;letter-spacing:1px;z-index:1;color:#d9dcc5}.media-label{margin-top:17px;font-size:12px;letter-spacing:2px;text-transform:uppercase;color:#a5ae90;z-index:1}.cross{position:absolute;top:16px;left:19px;color:#adb391;font-size:18px}.corner{position:absolute;bottom:14px;right:18px;font:12px monospace;color:#a0a68b}.gallery-footer{display:flex;justify-content:space-between;gap:20px;padding:13px 0;align-items:center}.caption{font-size:12px;color:var(--muted);line-height:1.5}.gallery-controls{display:flex;align-items:center;gap:8px;flex-shrink:0}.gallery-controls button{width:40px;height:40px;background:none;border:1px solid var(--line);line-height:1}.gallery-controls button:hover{border-color:var(--accent);color:var(--accent)}.count{font:12px monospace;color:var(--muted)}.video-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;background:var(--surface);padding:14px 17px;font-size:14px;border:1px solid var(--line);text-align:left}.play-icon{color:var(--accent);margin-right:10px}.video-area{aspect-ratio:16/9;background:#0f100f;display:grid;place-items:center;padding:20px;text-align:center;color:var(--muted);font-size:14px}.video-area iframe{border:0;width:100%;height:100%}.video-area:has(iframe){padding:0}.video-external{font-size:12px;color:var(--accent)}.jam{display:grid;grid-template-columns:1fr 1.15fr;column-gap:65px}.jam .project-top,.jam .project-heading{grid-column:1}.jam .project-heading{margin-bottom:20px}.jam .project-heading h3{font-size:48px}.jam .gallery{grid-column:2;grid-row:1/5}.jam .project-copy{gap:17px}.jam .meta{margin-top:2px}.jam .btn{margin-top:20px;align-self:start}.jam[data-order="2"] .placeholder{background:radial-gradient(ellipse at 60% 40%,#71534033,transparent 70%),#28231f}.jam[data-order="3"] .placeholder{background:radial-gradient(ellipse at 40% 30%,#777a9733,transparent 70%),#202125}.ld-section{margin-top:5px;background:#1c1e1b;padding:90px 0 65px;border-block:1px solid var(--line)}.study-grid{display:grid;grid-template-columns:1fr 1fr;gap:35px}.study h3{font-size:36px;margin:12px 0}.study>p{font-size:14px;margin-bottom:24px}.study .media-frame{aspect-ratio:4/3}.study .placeholder{background:#20251f}.study details{border-bottom:1px solid var(--line);padding:15px 0;font-size:14px}.study summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between}.study summary:after{content:'+';color:var(--accent)}.study details[open] summary:after{content:'−'}.study details p{margin-top:12px;font-size:14px}.study .diagram{width:85%;height:75%;z-index:1}.study .media-label{position:absolute;bottom:10px;font-size:10px}.freelance{margin-top:55px;border:1px solid #f3966644;display:flex;justify-content:space-between;align-items:center;padding:27px 30px;gap:25px}.freelance h3{font-family:'DM Sans',sans-serif;font-size:19px;text-transform:none}.freelance p{font-size:14px;margin-top:7px}.about{display:grid;grid-template-columns:.8fr 1.2fr;gap:90px}.about h2{margin:17px 0 25px}.about p{font-size:16px}.about .intro{color:var(--text);font-size:21px;line-height:1.6;margin-bottom:20px}.team{display:flex;gap:24px;padding:27px;background:var(--surface);border:1px solid var(--line);margin-top:30px}.team-logo{width:75px;height:75px;flex-shrink:0;border:1px solid #5a5c50;display:grid;place-items:center;font-family:'Barlow Condensed',sans-serif;font-size:28px;line-height:.95;text-align:center;color:#c8cabf}.team-logo img{width:100%;height:100%;object-fit:contain}.team h3{font-size:25px}.team p{font-size:14px;margin:8px 0}.team a,.team button{font-size:14px;color:var(--accent);background:none;padding:0}.skills{display:grid;grid-template-columns:1fr 1fr 1fr;gap:30px;border-block:1px solid var(--line);padding:30px 0;margin-top:50px}.skills h4{font-size:12px;text-transform:uppercase;letter-spacing:1px;margin:0 0 15px;color:var(--accent)}.skills ul{margin:0;padding:0;list-style:none;color:var(--muted);font-size:14px;line-height:2}.skills strong{color:var(--text)}.contact{padding:95px 0 85px;display:grid;grid-template-columns:1.2fr 1fr;gap:70px}.contact h2{margin:20px 0;font-size:clamp(58px,7vw,90px)}.contact h2 span{color:var(--accent)}.contact p{max-width:510px;font-size:15px}.contact-links{align-self:center;display:grid;grid-template-columns:1fr 1fr;gap:0 25px}.social{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:16px 0;background:none;text-align:left;font-size:14px}.social:hover{color:var(--accent)}footer{border-top:1px solid var(--line);padding:27px 0}.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:12px;color:var(--muted)}footer strong{color:var(--text)}.skip{position:fixed;left:20px;top:-100px;z-index:50;background:var(--accent);color:#111;padding:10px}.skip:focus{top:10px}dialog{max-width:95vw;width:1100px;background:#171917;color:var(--text);border:1px solid var(--line);padding:45px 20px 20px}dialog::backdrop{background:#000d}dialog .close{position:absolute;right:10px;top:0;font-size:32px;background:none}.lightbox-content{height:min(70vh,700px)}.lightbox-content img{height:100%;width:100%;object-fit:contain}.lightbox-content .placeholder{min-height:300px}#notice{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#eeeae0;color:#181818;padding:13px 24px;font-size:14px;z-index:100;display:none;max-width:90vw;width:max-content}.reveal{animation:fade .4s ease}@keyframes fade{from{opacity:.4}to{opacity:1}}@media(max-width:1050px){.wrap{width:calc(100% - 64px)}.hero h1{font-size:79px}.featured-layout{gap:25px;grid-template-columns:1.2fr 1fr}.jam{column-gap:35px}.about{gap:45px}.navlinks{gap:20px}.brand{font-size:11px}.hero-art{min-height:270px}}@media(max-width:760px){.wrap{width:calc(100% - 36px)}nav{height:68px;gap:20px}.brand{font-size:10px;letter-spacing:1px}.menu{display:block;font-size:22px;padding:4px}.navlinks{display:none;position:absolute;top:68px;left:0;right:0;padding:22px;background:var(--surface);border-bottom:1px solid var(--line);flex-direction:column;gap:20px}.navlinks.open{display:flex}.hero{padding:47px 0 25px}.hero-main{display:block}.hero h1{font-size:clamp(61px,12vw,90px);letter-spacing:-1px}.hero .intro{font-size:15px;margin-top:20px}.hero-art{height:205px;min-height:0;width:75%;margin:28px auto 0}.hero-art svg{height:210px}.art-note{font-size:10px;bottom:-5px;right:-10%}.hero-bottom{margin-top:38px;gap:15px;font-size:12px;letter-spacing:0;align-items:center}.hero-bottom>span:last-child{display:none}.ctas{gap:9px;margin-top:25px}.btn{padding:10px 13px;gap:15px;font-size:14px;min-height:44px}.text-link{font-size:14px}.eyebrow{font-size:12px}section{padding-top:65px}.section-head{display:block;margin-bottom:28px}.section-head p{margin-top:20px;font-size:14px}.section-head h2{font-size:52px}.project{padding:27px 0 40px}.project-heading{align-items:start;flex-wrap:wrap}.project-heading h3{font-size:45px}.featured-layout,.jam{display:flex;flex-direction:column;gap:24px}.jam .project-top{margin-bottom:-10px}.jam .project-heading{margin-bottom:0}.jam .gallery{order:3}.jam .project-copy{order:2}.jam .btn{margin-top:0}.jam .project-heading h3{font-size:43px}.featured-layout .gallery{order:2}.project-copy{gap:20px}.study-grid{grid-template-columns:1fr;gap:40px}.ld-section{padding:60px 0 40px}.study h3{font-size:32px}.freelance{margin-top:35px;display:block;padding:23px}.freelance .btn{margin-top:20px}.freelance h3{font-size:18px;line-height:1.4}.about{display:block}.about .intro{font-size:19px;margin-top:15px}.team{padding:20px;gap:16px}.team-logo{width:60px;height:65px}.skills{gap:25px 15px;grid-template-columns:1fr 1fr;margin-top:35px}.skills>div:last-child{grid-column:1/-1}.contact{padding:60px 0;display:block}.contact h2{font-size:65px}.contact-links{margin-top:30px;gap:0 20px}.footer-inner{flex-wrap:wrap;font-size:12px}.footer-inner>span{max-width:70%}h1,h2,h3{overflow-wrap:anywhere}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

/* Supplied project media */
.academy-logo{width:38px;height:38px;object-fit:contain;margin-left:auto}.engine-logo{object-fit:contain;filter:invert(1)}.team-logo{width:112px;height:112px;border:0}.media-frame{background:#0c0d0c}.media-open img{display:block}.study .text-link{display:inline-block;margin-top:20px}.project-top{flex-wrap:wrap}.lightbox-content img{object-fit:contain}@media(max-width:760px){.team-logo{width:78px;height:78px}.academy-logo{width:30px;height:30px}.project-top .tag{font-size:11px}}
/* Distinct portfolio chapters, with low-saturation accents and generous pauses. */
.category-artisans{--accent:#efb281;--chapter-bg:#211e1a;--chapter-line:#4b3c30}
.category-jams{--accent:#89c7b6;--chapter-bg:#19231f;--chapter-line:#304b43}
.category-academy{--accent:#94b7df;--chapter-bg:#1b2029;--chapter-line:#34455b}
.category-nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0 0 50px}
.category-jump{display:flex;justify-content:space-between;gap:18px;align-items:center;padding:18px 22px;border:1px solid var(--chapter-line);border-top:2px solid var(--accent);border-radius:6px;background:var(--chapter-bg);color:var(--accent);font-size:14px;font-weight:600;transition:background .2s,transform .2s}
.category-jump:hover{transform:translateY(-3px);background:color-mix(in srgb,var(--chapter-bg),white 4%)}
.project-category{padding:38px;margin:0 0 80px;background:linear-gradient(135deg,var(--chapter-bg),#171817 70%);border:1px solid var(--chapter-line);border-top:3px solid var(--accent);border-radius:10px;scroll-margin-top:105px}
.category-heading{display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:40px;padding:5px 0 35px;margin-bottom:34px;border-bottom:1px solid var(--chapter-line)}
.category-identity{display:flex;align-items:center;gap:23px;min-width:0}.category-logo{width:90px;height:90px;object-fit:contain;flex-shrink:0}.category-academy .category-logo{width:64px;height:64px}
.category-heading h3{font-size:clamp(35px,4.2vw,57px);margin-top:14px;line-height:1.04}.category-heading p{font-size:15px;line-height:1.75;max-width:550px;color:#b6b9b1}.category-heading .eyebrow{font-size:12px}
.category-projects{display:flex;flex-direction:column;gap:38px}
.project-category .project{padding:30px;margin:0;background:#151615;border:1px solid #35372f;border-radius:7px;box-shadow:0 10px 28px #0000001a;min-width:0}
.project-category .project-top{margin-bottom:18px;gap:15px}.project-category .tag.accent{color:var(--accent);border-color:var(--chapter-line);background:var(--chapter-bg)}
.project-category .project-heading{margin-bottom:30px;gap:22px}.project-heading h4{font-family:'Barlow Condensed','Arial Narrow',sans-serif;font-weight:600;text-transform:uppercase;line-height:1.03;font-size:clamp(38px,4.4vw,62px);margin:0;overflow-wrap:anywhere}
.project-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:34px;align-items:start}.compact-project .project-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.project-category .project-copy p{font-size:15px;line-height:1.75}.project-category .project-copy{gap:23px}.project-category .media-frame{border-color:var(--chapter-line);border-radius:4px;aspect-ratio:16/10}.project-category .video-toggle{border-radius:4px}.project-category .text-link{align-self:start;margin-left:0}
.project-category .project-heading .btn{flex-shrink:0}.work-in-progress .project-heading h4{font-size:clamp(46px,5.5vw,76px)}.work-in-progress .media-frame{aspect-ratio:4/3}
.design-detail{border-top:1px solid var(--line);padding:13px 0 0;font-size:14px}.design-detail summary{cursor:pointer}.design-detail p{margin-top:10px}
#level-design{--accent:#b4c79a;background:#1b211b;margin-top:12px;border-color:#35412f}.study-grid{gap:32px}.study{padding:28px;background:#151915;border:1px solid #35412f;border-top:2px solid #879d70;border-radius:7px}.study .eyebrow{line-height:1.7}.study h3{line-height:1.08;margin:17px 0}.study>p{font-size:15px;line-height:1.75}.study .media-frame{border-radius:4px}
#about{padding-top:115px}.team{border-radius:7px;padding:28px;border-left:3px solid #efb281}.skills{padding-block:40px;margin-top:64px}.skills>div+div{padding-left:25px;border-left:1px solid var(--line)}.contact{margin-top:35px}
@media(max-width:1100px){.project-category{padding:26px}.project-category .project{padding:24px}.category-heading{gap:25px}.category-logo{width:70px;height:70px}.category-identity{gap:17px}.project-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:25px}.project-category .project-heading{flex-wrap:wrap}}
@media(max-width:760px){.category-nav{grid-template-columns:1fr;gap:9px;margin-bottom:30px}.category-jump{padding:14px 17px;min-height:49px}.project-category{padding:18px 12px;margin-bottom:42px;border-radius:7px;scroll-margin-top:84px}.category-heading{display:block;padding:3px 7px 24px;margin-bottom:22px}.category-heading p{margin-top:20px;font-size:14px}.category-heading h3{font-size:36px}.category-logo{width:60px;height:60px}.category-academy .category-logo{width:50px;height:50px}.category-heading .eyebrow{font-size:11px;letter-spacing:1px}.category-projects{gap:27px}.project-category .project{padding:19px 14px;border-radius:5px}.project-category .project-heading{margin-bottom:23px;display:block}.project-category .project-heading .btn{margin-top:19px}.project-layout,.compact-project .project-layout{display:flex;flex-direction:column;gap:25px}.project-layout>.gallery{width:100%;order:0}.project-layout>.project-copy{width:100%;order:1}.project-heading h4{font-size:38px}.project-category .project-copy p{font-size:14px}.project-category .meta{gap:18px 14px}.project-category .meta dd{overflow-wrap:anywhere}.project-category .gallery-footer{gap:10px;align-items:start}.project-category .gallery-controls{gap:5px}.project-category .gallery-controls button{width:34px;height:40px}.project-category .caption{font-size:12px}.study{padding:22px 18px}.study-grid{gap:28px}#about{padding-top:65px}.skills>div+div{padding-left:0;border-left:0}.skills{margin-top:36px}.team{padding:20px}.contact{margin-top:0}}

.team-affiliation{margin-top:12px;font-size:14px}.team-affiliation a{color:var(--text);border-bottom:1px solid #716050}.team-affiliation a:hover{color:var(--accent)}

/* Profile palette sampled visually from the supplied portrait: olive and burgundy. */
.brand{font-size:15px;letter-spacing:.5px;font-weight:600;white-space:nowrap}
#about{--accent:#c0c692;--line:#444936;--muted:#b5b8ab}
#about .about{padding:40px;gap:55px;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);align-items:center;background:linear-gradient(125deg,#252b1c 0%,#1d2119 47%,#291b20 100%);border:1px solid #414734;border-radius:10px}
#about h2{font-size:clamp(46px,5vw,68px)}
.profile-portrait{margin:28px 0 21px;width:100%;max-width:370px;aspect-ratio:3/4;border:1px solid #6a704e;border-radius:6px;overflow:hidden;background:#2d3320;box-shadow:0 16px 36px #0b0d0960}
.profile-portrait img{display:block;width:100%;height:100%;object-fit:contain}
#about .profile-caption{font-size:14px;line-height:1.8;color:#c8cbba}
#about .team{background:#281d23;border-color:#573b43;border-left:3px solid #a76d7e;border-radius:6px;padding:24px;gap:18px}
#about .team a,#about .team button{color:#e1b5c1}
#about .team-logo{width:88px;height:88px}
#about .skills{border-color:#414734}#about .skills h4{color:#c0c692}
@media(max-width:1050px){#about .about{padding:28px;gap:32px}#about .team{display:block}#about .team-logo{margin-bottom:17px}.brand{font-size:14px}}
@media(max-width:760px){.brand{font-size:14px;letter-spacing:0}nav{gap:16px}#about .about{padding:25px 20px;display:block}.profile-portrait{max-width:340px;margin-top:24px}#about .about>.about-copy{margin-top:28px}#about .intro{margin-top:28px}#about .team{padding:20px}#about .team-logo{width:78px;height:78px}}
/* Repeated entrances: observed cards stay stationary to prevent edge-trigger flicker. */
@keyframes gentle-entry{from{opacity:.35}to{opacity:1}}
@keyframes entry-content{from{transform:translateY(var(--entry-offset,24px))}to{transform:translateY(0)}}
.gentle-entry{animation:gentle-entry .6s cubic-bezier(.22,1,.36,1) both}
.gentle-entry>*{animation:entry-content .6s cubic-bezier(.22,1,.36,1) both}
@media(max-width:760px){.gentle-entry,.gentle-entry>*{animation-duration:.48s}}
.navlinks a{position:relative}.navlinks a:after{content:'';position:absolute;left:0;right:0;bottom:-7px;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .18s ease}.navlinks a:hover:after,.navlinks a.active:after{transform:scaleX(1)}
.media-open img{transition:filter .2s ease}.media-open:hover img{filter:brightness(1.045)}
.project-category .project,.study{transition:border-color .2s ease,box-shadow .2s ease}.project-category .project:hover{border-color:var(--chapter-line);box-shadow:0 12px 32px #0003}
.xerox-experience{margin-top:13px}.xerox-switch-row{display:flex;align-items:center}.xerox-switch{display:flex;align-items:center;gap:14px;border:1px solid #385054;background:#182226;border-radius:8px;padding:6px 16px 6px 8px;text-align:left;min-height:88px;transition:border-color .2s ease,background .2s ease}.xerox-switch:hover{border-color:#86b4b0;background:#1d2c30}.xerox-icon{display:grid;place-items:center;width:76px;height:76px;flex-shrink:0}.xerox-icon img{grid-area:1/1;width:100%;height:100%;object-fit:contain;transition:opacity .16s ease}.xerox-icon .eyes-off{opacity:0}.is-dark .eyes-on{opacity:0}.is-dark .eyes-off{opacity:1}.xerox-switch-copy{display:flex;flex-direction:column;gap:3px}.xerox-status{font-size:14px;font-weight:600;color:#e8eee8}.xerox-switch-action{font-size:12px;color:#b4c6c5}
.project-category .xerox-instructions{font-size:12px;line-height:1.6;color:#b6c2c6;margin:12px 0;min-height:5em}
.xerox-light-area{position:relative;isolation:isolate;overflow:hidden;border:1px solid #3b484b;border-radius:6px;background:#182024;padding:18px;--light-x:50%;--light-y:50%;touch-action:pan-y}
.project-category .xerox-light-area p{margin:0;color:#e3e7e4;line-height:1.85}.xerox-darkness{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;background:#080c0e;transition:opacity .18s ease}.is-dark .xerox-darkness{opacity:1}.is-dark.has-light .xerox-darkness{background:radial-gradient(circle 115px at var(--light-x) var(--light-y),transparent 0%,transparent 48%,rgba(8,12,14,.12) 62%,rgba(8,12,14,.85) 90%,#080c0e 100%)}
@media(max-width:760px){.xerox-icon{width:64px;height:64px}.xerox-switch{min-height:78px}.xerox-light-area{padding:16px}.is-dark.has-light .xerox-darkness{background:radial-gradient(circle 100px at var(--light-x) var(--light-y),transparent 0%,transparent 50%,rgba(8,12,14,.7) 85%,#080c0e 100%)}}
@media(prefers-reduced-motion:reduce){.gentle-entry,.gentle-entry>*{animation:none!important}.navlinks a:after,.media-open img,.xerox-switch,.xerox-icon img,.xerox-darkness{transition:none!important}}
@media print{.xerox-darkness,.xerox-switch-row,.xerox-instructions{display:none!important}}
/* Threaded Memories: curtain disclosure and suspended, readable typography. */
.puppet-stage{margin-top:18px;border:1px solid #715247;border-radius:7px;background:#181312;overflow:hidden;isolation:isolate}
.stage-bar{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 15px;background:#2a211d;border-bottom:2px solid #947052;color:#dbc5a4;font-size:12px;letter-spacing:.04em}
.stage-toggle{padding:7px 9px;border:1px solid #8f7257;border-radius:3px;color:#f0dfc2;font:inherit;white-space:nowrap;background:#372821;min-height:36px}
.stage-toggle:hover{background:#50352b}.stage-window{position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 0%,#352923,#161211 75%);border-bottom:7px solid #69513c}
.stage-content{padding:32px 27px 25px;visibility:hidden;transition:visibility 0s .55s}.is-open .stage-content{visibility:visible;transition:none}
.project-category .puppet-text{margin:0;font-family:Georgia,'Times New Roman',serif;font-size:17px;line-height:2.35;color:#f2e1c0;letter-spacing:.025em;font-kerning:none}
.puppet-word{display:inline-block;white-space:nowrap}.puppet-letter{display:inline-block;position:relative;transform:translateY(var(--drop));transform-origin:50% calc(50% - 18px)}
.puppet-letter:before{content:'';position:absolute;width:1px;height:var(--thread);background:#cfb59266;left:50%;top:calc(50% - .55em - var(--thread));pointer-events:none}
.stage-curtain{position:absolute;inset:0 auto 0 0;width:50.3%;z-index:2;background:repeating-linear-gradient(90deg,#421c29 0%,#762d40 10%,#582131 20%,#351823 25%);box-shadow:inset 0 8px 14px #0005,3px 0 12px #0006;border-bottom:2px solid #ae8660;transition:transform .8s cubic-bezier(.65,0,.25,1);pointer-events:none}
.curtain-right{left:auto;right:0;transform:translateX(0);background:repeating-linear-gradient(270deg,#421c29 0%,#762d40 10%,#582131 20%,#351823 25%)}
.is-open .curtain-left{transform:translateX(-96%)}.is-open .curtain-right{transform:translateX(96%)}
.stage-open{position:absolute;inset:0;width:100%;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;background:transparent;color:#fff0cf;border:0;padding:20px;cursor:pointer}
.stage-open[hidden]{display:none}.stage-open span{padding:11px 16px;background:#241715dc;border:1px solid #bd956c;border-radius:3px;font-family:Georgia,serif;font-size:19px}.stage-open small{color:#f0ddc4;font-size:12px;text-shadow:0 1px 5px #000}.stage-open:hover span{background:#43271f}
.project-category .stage-hint{margin:0;padding:10px 15px;color:#bca991;font-size:12px;font-style:italic}
.stage-readable{position:absolute!important;width:1px;height:1px;padding:0!important;margin:-1px!important;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(max-width:760px){.stage-content{padding:25px 18px 22px}.project-category .puppet-text{font-size:16px;line-height:2.3}.stage-bar{padding:10px;gap:8px}.stage-bar>span{font-size:11px}.stage-toggle{font-size:12px}}
@media(prefers-reduced-motion:reduce){.stage-curtain,.stage-content{transition:none}.puppet-letter{transform:translateY(var(--drop))!important}}
@media print{.stage-curtain,.stage-open,.stage-bar,.stage-hint{display:none!important}.stage-content{visibility:visible!important}.puppet-letter{transform:none!important}.puppet-letter:before{display:none}}
/* Generated transparent artwork: the frame surrounds the description; curtains are separate moving layers. */
.puppet-stage{border:0;background:transparent;overflow:visible}
.stage-bar{background:transparent;border-bottom:0;padding-inline:6px;color:#bfd2ce}
.stage-toggle{background:#142522;border-color:#57736a;color:#e0d6b4}.stage-toggle:hover{background:#233b34}
.stage-window{border:0;background:transparent;overflow:hidden;min-height:420px}
.theatre-frame{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;z-index:4;pointer-events:none}
.stage-content{padding:24% 17% 17%;position:relative}
.stage-content:before{content:'';position:absolute;inset:15% 12% 10%;z-index:-1;background:#101b19}
.project-category .puppet-text{font-size:16px;line-height:2.25;color:#e9dbb7;letter-spacing:.015em}
.puppet-break{display:block;content:'';margin-bottom:14px}.puppet-letter:before{background:#a6bbae80}
.curtain-viewport{position:absolute;inset:15% 12% 10%;overflow:hidden;z-index:3;pointer-events:none}
.stage-curtain,.curtain-right{width:50%;background:none;border:0;box-shadow:none;overflow:hidden;transition:transform .9s cubic-bezier(.65,0,.25,1)}
.stage-curtain img{position:absolute;top:0;left:0;width:200%;max-width:none;height:100%;object-fit:fill}.curtain-right img{left:-100%}
.is-open .curtain-left{transform:translateX(-97%)}.is-open .curtain-right{transform:translateX(97%)}
.stage-open{inset:16% 13% 11%;width:auto;z-index:5}.stage-open span{background:#12201eee;border-color:#8d9b7b;color:#f3e2b8}.stage-open:hover span{background:#233932}
.stage-open small{color:#e4dfc9}.project-category .stage-hint{color:#a8b7a9;text-align:center}
@media(max-width:760px){.stage-content{padding:25% 15% 17%}.project-category .puppet-text{font-size:16px;line-height:2.2}.stage-window{min-height:420px}}
@media(prefers-reduced-motion:reduce){.stage-curtain,.curtain-right{transition:none}}
@media print{.theatre-frame,.curtain-viewport{display:none}.stage-content{padding:10px}.stage-content:before{display:none}}
/* Nine-slice framing keeps the opening clear as bilingual text reflows. */
.stage-window{border-style:solid;border-width:110px 44px 58px;border-image-source:url('/assets/puppet-theatre/theatre-frame.webp');border-image-slice:21% 12% 11% 12%;border-image-width:1;border-image-repeat:stretch;overflow:visible;min-height:0;background:#101b19;background-clip:padding-box}
.theatre-frame{display:none}.stage-content{padding:28px 14px 24px}.stage-content:before{display:none}
.curtain-viewport{inset:0}.stage-open{inset:0;width:100%;padding:15px}
@media(max-width:760px){.stage-window{border-width:78px 29px 44px;min-height:0}.stage-content{padding:24px 8px 20px}}
@media print{.stage-window{border:0;background:none}}
/* Official supplied title artwork, preserving alpha and natural proportions. */
.project-heading .official-title{width:min(100%,570px);flex:1 1 320px;line-height:1}
.official-title img{display:block;width:100%;height:auto;max-height:185px;object-fit:contain;object-position:left center}
#my-splitting-image .official-title{max-width:640px}#epiphora .official-title{max-width:510px}
.plain-description p+p{margin-top:16px}
@media(max-width:760px){.project-heading .official-title{width:100%;max-width:100%;margin-bottom:8px}.official-title img{max-height:145px}}
/* Approved 2D puppet theatre: only the title sprites move independently. */
.tm-stage{min-width:0;width:100%;isolation:isolate}.tm-toggle{display:block;margin:0 0 12px auto;border:1px solid #6c9185;background:#172a2b;color:#e5cf9e;border-radius:4px;padding:10px 14px;font-size:13px;min-height:42px}
.tm-toggle:hover,.tm-open:hover{background:#254346}.tm-frame{position:relative;border:solid;border-width:76px 27px 27px;border-image:url('/assets/threaded-stage/frame.webp') 24% 9% 9% 9% / 1 stretch;background:#0b1b23;background-clip:padding-box}
.tm-reveal{position:relative;padding:5px 10px 12px;visibility:hidden;opacity:0;transition:opacity .35s ease,visibility 0s .8s}.tm-stage.is-open .tm-reveal{visibility:visible;opacity:1;transition:opacity .4s .15s}
.threaded-project .tm-title{display:flex;gap:12px;align-items:start;justify-content:center;margin:0 0 20px;padding:0;line-height:1;font-size:0}
.tm-word{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));width:calc(50% - 6px);gap:2px}.tm-slot{display:block;min-width:0}.tm-letter{display:block;width:100%;height:auto;user-select:none;touch-action:pan-y;position:relative}
.tm-curtains{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:3}.tm-panel{position:absolute;top:0;bottom:0;width:50.2%;overflow:hidden;transition:transform .9s cubic-bezier(.65,0,.25,1)}.tm-left{left:0}.tm-right{right:0}.tm-panel img{position:absolute;top:-5%;left:-5%;width:210%;max-width:none;height:110%;object-fit:fill}.tm-right img{left:-105%}.is-open .tm-left{transform:translateX(-102%)}.is-open .tm-right{transform:translateX(102%)}
.tm-open{position:absolute;inset:38% 12% auto;z-index:4;background:#14282fed;border:1px solid #c49b59;color:#f5dcab;border-radius:4px;padding:15px;font-family:inherit;font-size:15px;min-height:48px}.tm-open[hidden]{display:none}
#threaded-memories .project-layout{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}#threaded-memories .tm-stage .media-frame{aspect-ratio:16/10}#threaded-memories .tm-stage .gallery-footer{flex-wrap:wrap;gap:10px}#threaded-memories .tm-stage .caption{font-size:12px}
@media(max-width:1000px){.threaded-project .tm-title{flex-direction:column;align-items:center;gap:10px}.tm-word{width:94%}}
@media(max-width:760px){.tm-frame{border-width:60px 20px 22px}.tm-reveal{padding:3px 5px 10px}.threaded-project .tm-title{margin-bottom:15px}.tm-word{width:100%;gap:2px}}
@media(prefers-reduced-motion:reduce){.tm-panel,.tm-reveal,.tm-stage.is-open .tm-reveal{transition:none}.tm-letter{transform:none!important}}
@media print{.tm-curtains,.tm-open,.tm-toggle{display:none!important}.tm-reveal{visibility:visible!important;opacity:1!important}.tm-frame{border:0}}
.tm-slot{position:relative}.tm-bend{position:absolute;top:0;height:auto;max-width:none;pointer-events:none}
/* Five lightweight, centered previews; custom sources live in media.thumbnail. */
.gallery-thumbnails{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin-top:11px;align-items:center}
.gallery-thumb{position:relative;display:block;width:100%;aspect-ratio:16/10;min-height:44px;padding:2px;background:#0b0e0c;border:1px solid var(--line);border-radius:4px;opacity:.62;transition:opacity .18s,border-color .18s;overflow:hidden}
.gallery-thumb img{display:block;width:100%;height:100%}.gallery-thumb:hover{opacity:1;border-color:var(--accent)}.gallery-thumb.is-current{opacity:1;border:2px solid var(--accent);padding:1px;box-shadow:0 0 0 1px #0006}.gallery-thumb:focus-visible{outline-offset:2px}
.thumbnail-number{position:absolute;right:2px;bottom:2px;padding:0 4px;background:#090c0de6;border-radius:2px;font:10px/1.6 monospace;color:#e9e9e2;pointer-events:none}
@media(max-width:760px){.gallery-thumbnails{gap:4px;margin-top:9px}.gallery-thumb{min-height:44px}.thumbnail-number{font-size:9px;padding:0 3px}}
@media(prefers-reduced-motion:reduce){.gallery-thumb{transition:none}}
