@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Libre+Caslon+Display&display=swap');
:root{--bg:#101b2a;--text:#f4f0e8;--muted:#aeb8c4;--line:#35404e;--accent:#e5f0a4}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--bg);color:var(--text);font:16px 'DM Sans',Arial,sans-serif}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button,a,input,textarea{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:6px}header,main,footer{max-width:1440px;margin:auto;padding-left:7%;padding-right:7%}header{height:110px;display:flex;align-items:center;justify-content:space-between}.logo{font:italic 44px Georgia,serif;letter-spacing:-8px}.logo span{font:24px Arial;color:var(--accent);display:inline-block;transform:translate(7px,-16px)}nav{display:flex;gap:36px;font-size:14px}nav a:hover{color:var(--accent)}.menu{display:none}.hero{padding:92px 0 50px}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:500}.hero h1{font:clamp(56px,7.7vw,108px)/1.02 'Libre Caslon Display',Georgia,serif;letter-spacing:-3px;margin:35px 0 42px;position:relative}.spark{font:80px Georgia;color:var(--accent);display:inline-block;margin-left:45px;vertical-align:middle}.intro{display:flex;justify-content:space-between;gap:50px}.intro p{font-size:19px;line-height:1.55;margin:0;max-width:480px}.intro .muted{font-size:15px;max-width:300px}.muted{color:var(--muted);line-height:1.65}.scroll{display:flex;align-items:center;gap:20px;font-size:12px;margin-top:65px}.scroll span{border:1px solid var(--line);border-radius:50%;width:38px;height:38px;display:grid;place-items:center}.work{padding:70px 0 100px}.section-top{display:flex;align-items:baseline;justify-content:space-between;border-top:1px solid var(--line);padding-top:30px}.section-top h2{font-size:24px;font-weight:400;margin:0}.section-top sup{font-size:10px;margin-left:10px;color:var(--muted)}.section-top>span{font-size:10px;letter-spacing:1px}.filters{display:flex;gap:8px;margin:30px 0}.filters button{border:1px solid var(--line);border-radius:30px;padding:9px 18px;color:var(--muted);background:none;font-size:12px}.filters button[aria-pressed=true]{background:var(--accent);color:var(--bg);border-color:var(--accent)}.projects{display:grid;grid-template-columns:1fr 1fr;gap:52px 28px}.project{display:block;text-align:left;border:0;background:none;padding:0;color:inherit;width:100%}.art{height:auto;aspect-ratio:1.3;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center;transition:transform .4s}.project:hover .art{transform:translateY(-5px)}.art .word{position:relative;z-index:2;text-align:center;white-space:pre-line;font-weight:600;font-size:clamp(40px,6vw,88px);line-height:.88;letter-spacing:-5px}.art .caption{position:absolute;bottom:28px;left:28px;font-size:9px;letter-spacing:2px;z-index:3}.still{background:#ddd9ca;color:#253e31}.still:before{content:'';width:33%;height:68%;background:#f0edde;box-shadow:18px 22px 24px #7a756e44;transform:rotate(-12deg);position:absolute;border-radius:4px}.still .word{font-family:Georgia,serif;font-weight:400;font-size:85px}.fieldwork{background:#c9dae7;color:#172e29}.fieldwork:before,.fieldwork:after{content:'';position:absolute;width:115%;height:65%;background:#65816b;border-radius:50%;top:60%;left:-35%;transform:rotate(20deg)}.fieldwork:after{background:#b2c393;left:35%;top:57%;transform:rotate(-24deg)}.fieldwork .word{font-size:clamp(32px,4.8vw,65px);letter-spacing:-3px;transform:rotate(-7deg)}.common{background:#ed724f;color:#422519}.common:before{content:'○○';position:absolute;font-size:350px;letter-spacing:-170px;color:#ffb49388;left:-25px;top:-50px}.common .word{font-weight:500;letter-spacing:-4px}.margin{background:#b9c0ec;color:#26336f}.margin:before{content:'';background:#e9e6dc;position:absolute;width:65%;height:86%;transform:rotate(9deg);box-shadow:20px 20px 0 #29357344}.margin .word{font-family:Georgia;font-size:55px;letter-spacing:-4px;transform:rotate(9deg);border-top:2px solid;border-bottom:2px solid;padding:25px 0}.arc{background:#c9d4cd;color:#243e34}.arc:before{content:'';position:absolute;width:72%;height:65%;background:#f5f5ed;border:10px solid #e4e9df;box-shadow:16px 18px 0 #213e3422;border-radius:8px;transform:rotate(-5deg)}.arc .word{font-size:100px;font-weight:400;letter-spacing:-6px}.sol{background:#e9c951;color:#ae452d}.sol:before{content:'✳';position:absolute;font-size:440px;color:#ee9e42;line-height:1}.sol .word{font:italic 130px Georgia}.project-meta{display:flex;align-items:baseline;justify-content:space-between;margin-top:19px}.project h3{font-size:17px;font-weight:400;margin:0}.project-meta span{font-size:22px;color:var(--accent)}.project p{font-size:11px;color:var(--muted);margin:8px 0 0}.about{border-top:1px solid var(--line);padding:70px 0 100px;display:grid;grid-template-columns:1fr 1fr;gap:20px 60px}.about>.eyebrow{grid-column:1/-1}.about h2,.play h2{font:52px/1.1 'Libre Caslon Display',Georgia;margin:10px 0}.about>div>p{line-height:1.7;margin-top:10px}.services{display:flex;flex-wrap:wrap;gap:10px 24px;font-size:12px;border-top:1px solid var(--line);padding-top:25px;margin-top:30px}.play{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:25px;padding:45px 0 100px}.experiment{padding:22px;background:#25384a;aspect-ratio:.85;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.experiment>span{font-size:9px;letter-spacing:1px}.experiment p{font-size:11px}.orbit{font-size:145px;text-align:center;line-height:1;color:var(--accent);transition:transform .6s}.experiment:hover .orbit{transform:rotate(45deg)}.paper{background:#d6c8b6;color:#352f32}.paper strong{font:76px/.8 Georgia;text-align:center;letter-spacing:-8px}.contact{border-top:1px solid var(--line);padding:70px 0}.contact h2{font:clamp(50px,7vw,92px)/1.05 'Libre Caslon Display',Georgia;margin:30px 0 60px;letter-spacing:-2px}.contact h2 span{color:var(--accent)}.contact-bottom{display:grid;grid-template-columns:1fr 1fr;gap:60px}.contact-bottom>p{font-size:20px;line-height:1.5}form{display:grid;gap:10px}label{font-size:11px;margin-top:10px}input,textarea{color:var(--text);background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:12px 0;resize:vertical;width:100%}input::placeholder,textarea::placeholder{color:#8996a6}.send{background:var(--accent);color:var(--bg);padding:15px 25px;border:0;justify-self:start;margin-top:12px;border-radius:2px}form .muted{font-size:11px}#download-draft{color:var(--text);background:none;border:1px solid var(--line);padding:10px}footer{display:flex;justify-content:space-between;padding-top:30px;padding-bottom:35px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}dialog{max-width:850px;width:calc(100% - 32px);padding:0;background:var(--bg);color:var(--text);border:1px solid var(--line);max-height:90vh}dialog::backdrop{background:#000b;backdrop-filter:blur(6px)}#close-dialog{position:sticky;top:12px;float:right;margin:12px;z-index:5;background:var(--bg);color:var(--text);border:1px solid var(--line);padding:10px 18px;border-radius:30px}#detail-art .art{aspect-ratio:2;height:320px;width:100%}.detail-copy{padding:40px}.detail-copy h2{font:44px Georgia;margin:15px 0}.detail-copy p{line-height:1.7}.detail-columns{display:grid;grid-template-columns:1fr 1fr;gap:35px}.detail-columns h3{font-size:13px;color:var(--accent)}.detail-columns p{font-size:14px;color:var(--muted)}.sr,.skip{position:absolute;width:1px;height:1px;overflow:hidden}.skip:focus{width:auto;height:auto;z-index:10;padding:20px;background:var(--bg)}[hidden]{display:none!important}
@media(min-width:1500px){.art .word{font-size:85px}}@media(max-width:760px){header,main,footer{padding-left:6%;padding-right:6%}header{height:85px}.hero{padding-top:60px}.hero h1{font-size:64px;letter-spacing:-2px}.spark{font-size:45px;margin-left:10px}.intro{flex-direction:column;gap:22px}.intro p{font-size:17px}.scroll{margin-top:35px}.section-top>span{display:none}.work{padding-top:50px}.projects{gap:35px 18px}.project h3{font-size:14px}.art .word{font-size:44px;letter-spacing:-2px}.art .caption{bottom:15px;left:15px;font-size:7px}.still .word{font-size:52px}.margin .word{font-size:30px}.fieldwork .word{font-size:28px}.sol .word{font-size:80px}.common:before{font-size:230px;letter-spacing:-110px}.sol:before{font-size:290px}.about{gap:20px;grid-template-columns:1fr}.about h2{font-size:48px}.play{grid-template-columns:1fr 1fr}.play>div:first-child{grid-column:1/-1}.contact-bottom{grid-template-columns:1fr;gap:15px}.contact h2{margin-bottom:30px}.contact-bottom>p{font-size:17px}footer{gap:20px;flex-wrap:wrap}.detail-copy{padding:25px}.detail-copy h2{font-size:32px}.detail-columns{grid-template-columns:1fr;gap:0}}
@media(max-width:480px){.menu{display:block;color:var(--text);background:none;border:0;font-size:13px}header{position:relative}nav{display:none;position:absolute;top:75px;left:6%;right:6%;background:#1c2b3e;padding:24px;z-index:10;flex-direction:column;gap:25px}nav.open{display:flex}.hero{padding-top:45px}.hero h1{font-size:53px}.spark{display:none}.eyebrow{font-size:9px;letter-spacing:1.5px}.projects{grid-template-columns:1fr;gap:35px}.art .word{font-size:68px}.fieldwork .word{font-size:42px}.margin .word{font-size:45px}.art .caption{font-size:8px}.filters{gap:6px}.filters button{padding:8px 13px}.play{gap:15px}.experiment{padding:15px}.orbit{font-size:100px}.paper strong{font-size:60px}.contact h2{font-size:53px}.detail-columns{display:block}#detail-art .art{height:230px}.project h3{font-size:16px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}}

/* White / black theme and reference-style navigation motion. */
:root{--bg:#fff;--text:#000;--muted:#555;--line:#d6d6d6;--accent:#000}
.logo span,nav a:hover{color:#000}
nav a{position:relative;overflow:hidden;padding-bottom:6px}
nav a::after{content:'';position:absolute;left:0;right:0;bottom:0;height:1px;background:#000;transform:translateX(-102%);transition:transform 300ms ease}
nav a:hover::after,nav a:focus-visible::after{transform:translateX(0)}
.filters button[aria-pressed=true],.send{background:#000;color:#fff}
input::placeholder,textarea::placeholder{color:#777}
#download-draft{color:#000}
.experiment{background:#f1f1f1;color:#000}.orbit{color:#000}.paper{background:#e7e7e7;color:#000}
.project:hover .art{transform:none;box-shadow:0 8px 24px #00000026}.art{transition:box-shadow 300ms ease}
nav a[aria-current=page]{font-weight:700}
body[data-view=about] .hero,body[data-view=about] .work,body[data-view=about] .play,body[data-view=about] .contact,
body[data-view=play] .hero,body[data-view=play] .work,body[data-view=play] .about,body[data-view=play] .contact,
body[data-view=contact] .hero,body[data-view=contact] .work,body[data-view=contact] .about,body[data-view=contact] .play{display:none}
body[data-view=about] .about,body[data-view=play] .play,body[data-view=contact] .contact{border-top:0;min-height:70vh;padding-top:70px}
body[data-view=work] .about,body[data-view=work] .play{display:none}
@media(max-width:480px){nav{display:flex;background:#fff;border:1px solid var(--line);opacity:0;visibility:hidden;transform:translateY(-10px);transition:opacity 300ms ease,transform 300ms ease,visibility 300ms}nav.open{visibility:visible;opacity:1;transform:translateY(0)}nav a{align-self:flex-start}}
@media(prefers-reduced-motion:reduce){nav,nav a::after{transition:none!important}}

/* Scroll palette: white introduction, black project area. */
body{transition:background-color 700ms ease,color 700ms ease}
body.scroll-dark{--bg:#000;--text:#fff;--muted:#bbb;--line:#444;--accent:#fff}
.logo span,nav a:hover{color:var(--text)}
nav a::after{background:var(--text)}
.filters button[aria-pressed=true],.send{background:var(--text);color:var(--bg)}
#download-draft{color:var(--text)}
input::placeholder,textarea::placeholder{color:var(--muted)}
header{position:sticky;top:0;z-index:20;background:var(--bg);transition:background-color 700ms ease,color 700ms ease}
body.scroll-dark header{box-shadow:0 1px 0 var(--line)}
@media(max-width:480px){nav{background:var(--bg)}}
@media(prefers-reduced-motion:reduce){body,header{transition:none}}

/* Centered supplied logo; navigation sits below without overlapping it. */
header{height:auto;min-height:168px;display:flex;flex-direction:column;justify-content:center;gap:12px;padding-top:8px;padding-bottom:16px}
.logo{display:block;width:180px;height:106px;letter-spacing:normal;line-height:0;overflow:hidden}
.logo img{display:block;width:100%;height:100%;object-fit:cover;transition:filter 700ms ease}
body.scroll-dark .logo img{filter:invert(1)}
header nav{justify-content:center}
@media(max-width:480px){header{min-height:140px;padding-bottom:12px;gap:4px}.logo{width:150px;height:90px}.menu{position:absolute;right:6%;top:57px}header nav{top:132px;align-items:center}nav a{align-self:center}}
@media(prefers-reduced-motion:reduce){.logo img{transition:none}}

/* Uncaptioned tattoo photographs, preserving each complete image. */
.projects{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;margin-top:35px}
.tattoo-art img{display:block;width:100%;height:auto}
.project:has(.tattoo-art){line-height:0}
.photo-only{max-width:720px}
.photo-only .detail-copy{display:none}
.photo-only #detail-art{clear:both}
.photo-only .tattoo-art img{max-height:78vh;width:100%;object-fit:contain}
.photo-only #close-dialog{float:none;display:block;margin:12px 12px 12px auto}
@media(max-width:760px){.projects{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.projects{grid-template-columns:1fr}}
