:root{color-scheme:dark;--paper:#151515;--ink:#f2f2ef;--muted:#aaa;--line:#333;--surface:#212121;--primary:#7F00D3;--pink:#d770d1;--green:#36f170;--accent:var(--pink);--gutter:48px;--font:'Helvetica Neue',Helvetica,Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:26px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}img{display:block;max-width:100%;height:auto}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--font);font-weight:500;line-height:1.2}p{max-width:68ch}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:5px}::selection{background:var(--accent);color:#101010}.wrap{max-width:1320px;padding-inline:var(--gutter);margin-inline:auto}.skip{position:fixed;top:8px;left:12px;transform:translateY(-180%);z-index:100;background:var(--ink);color:var(--paper);padding:10px 16px}.skip:focus{transform:none}.site-header{display:flex;justify-content:space-between;align-items:center;gap:24px;padding-top:32px;padding-bottom:26px}.logo{width:155px;flex:none}.logo img{width:100%;height:auto;filter:none}.site-nav{display:flex;gap:28px;font-size:13px}.site-nav a{padding-block:9px}.site-nav a:hover{text-decoration:underline;text-underline-offset:5px}.intro{padding-top:45px;padding-bottom:44px}.intro h1{font-size:clamp(44px,5.2vw,72px);font-weight:800;line-height:1.06;letter-spacing:-.05em}.headline-accent{color:inherit}.intro p{margin-top:16px;font-size:15px;line-height:1.65;color:var(--muted)}.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:26px}.filter{border:1px solid #474747;background:var(--paper);border-radius:24px;padding:9px 17px;font-size:12px;line-height:1.35;transition:background .15s,color .15s,border-color .15s}.filter[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}.filter:hover:not([aria-pressed=true]){background:#2b2b2b;border-color:#777}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:34px 28px}.project-card{display:block;min-width:0}.project-card[hidden]{display:none}.project-visual{position:relative;width:100%;aspect-ratio:3/2;background:var(--surface);overflow:hidden;display:flex;align-items:center;justify-content:center}.project-visual img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;transition:opacity .18s}.project-card:hover .project-visual img{opacity:.91}.project-info{margin-top:13px}.project-info h3{font-size:16px;font-weight:500;letter-spacing:-.012em}.project-info p{font-size:12px;color:var(--muted);margin-top:3px}.project-visual.vgo{background:#e4e4e4}.project-visual.illustration{background:#ece9f5}.project-visual.hypopara{background:#1e2761}.project-visual.sciris{background:#193e4d}.placeholder{flex-direction:column;gap:8px;background:var(--surface);color:#d3d3d3;text-align:center;padding:24px}.placeholder>span{font-size:22px;font-weight:400;letter-spacing:-.02em}.placeholder>small{font-size:12px;color:var(--muted)}.project-card:hover .placeholder{background:#282828}.about-section{margin-top:72px}.about-grid{padding-top:48px;padding-bottom:48px;border-top:1px solid var(--line);display:grid;grid-template-columns:170px minmax(0,650px);gap:46px;align-items:start}.portrait{width:170px;height:auto;max-width:100%}.about-copy h2{font-size:26px;font-weight:600;letter-spacing:-.025em;margin-bottom:16px}.about-copy p{font-size:14px;color:#bcbcbc;line-height:1.75}.about-copy p+p{margin-top:13px}.about-copy p.education{font-size:12px;margin-top:20px;color:var(--muted)}.contact-row{border-top:1px solid var(--line);padding-top:44px;padding-bottom:44px;display:flex;justify-content:space-between;align-items:center;gap:25px}.contact-row h2{font-size:clamp(34px,4.3vw,58px);font-weight:800;letter-spacing:-.045em;line-height:1.1;margin-bottom:18px}.email-link{font-size:19px;font-weight:500;color:var(--accent);overflow-wrap:anywhere}.email-link span{display:inline-block;margin-left:10px;transition:transform .18s}.email-link:hover span{transform:translate(2px,-2px)}.email-link:hover{text-decoration:underline;text-underline-offset:4px}.back-top{font-size:12px;color:var(--muted);white-space:nowrap}.footer-line{display:flex;justify-content:space-between;gap:20px;font-size:11px;color:#999;padding-top:18px;padding-bottom:28px;border-top:1px solid var(--line)}.eyebrow{font-size:11px;line-height:1.4;color:var(--muted)}.project-hero{padding-top:30px;padding-bottom:36px}.breadcrumb{display:inline-flex;gap:9px;font-size:12px;color:var(--muted);margin-bottom:30px}.breadcrumb:hover{color:var(--ink)}.project-heading{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:45px;align-items:end}.project-heading h1{font-size:clamp(30px,4vw,51px);font-weight:700;letter-spacing:-.035em;margin-top:10px;overflow-wrap:anywhere}.project-heading h1 br{display:none}.project-heading>p{font-size:14px;line-height:1.65;max-width:460px;color:var(--muted)}.project-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px;border-top:1px solid var(--line);padding-top:20px;margin:30px 0 0}.project-meta dt{font-size:11px;color:var(--muted);margin-bottom:5px}.project-meta dd{font-size:12px;margin:0}.case-hero{max-width:1320px;padding-inline:var(--gutter);margin-inline:auto}.case-hero>img{width:100%;height:auto;max-height:710px;object-fit:contain;background:var(--surface)}.case-intro{display:grid;grid-template-columns:1fr 1.8fr;gap:45px;padding-top:42px;padding-bottom:38px}.case-intro .eyebrow{margin-bottom:10px}.case-intro h2{font-size:25px;font-weight:400;letter-spacing:-.025em;line-height:1.3}.case-intro p{font-size:14px;color:#bcbcbc;line-height:1.75}.case-intro p+p{margin-top:13px}.case-notes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px;padding-bottom:36px}.case-note h3{font-size:16px;margin-bottom:8px}.case-note p{font-size:13px;color:var(--muted)}.image-pair{display:grid;grid-template-columns:1fr 1fr;gap:28px}.case-image{min-width:0}.case-image button{display:block;width:100%;border:0;padding:0;background:var(--surface);cursor:pointer}.case-image img{width:100%;height:auto;max-height:750px;object-fit:contain}.case-image figcaption{font-size:11px;color:var(--muted);padding-top:10px;padding-bottom:28px}.case-full{margin-top:12px}.case-tail{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:30px;align-items:center;margin-top:20px;padding-top:27px;padding-bottom:38px}.case-tail h2{font-size:24px;letter-spacing:-.02em;font-weight:400;margin-top:7px}.round-button{display:inline-flex;align-items:center;gap:20px;font-size:12px;border:1px solid #4c4c4c;border-radius:24px;padding:10px 17px;white-space:nowrap}.round-button:hover{border-color:#aaa}.case-placeholder{width:calc(100% - var(--gutter)*2);max-width:1224px;margin-inline:auto;aspect-ratio:3/1;min-height:220px}.case-placeholder>span{font-size:28px}.placeholder-alert{padding:16px 0 25px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}.placeholder-alert strong{display:block;font-size:13px;color:#d3d3d3;font-weight:500;margin-bottom:5px}.archive-label{font-size:12px;color:var(--muted);margin-bottom:15px}.lightbox{border:0;padding:45px 20px 20px;background:var(--paper);max-width:min(1200px,94vw);width:94vw;max-height:94vh;color:var(--ink)}.lightbox::backdrop{background:#111d}.lightbox img{width:100%;height:auto;max-height:77vh;object-fit:contain}.lightbox .close-lightbox{position:absolute;top:8px;right:14px;border:0;background:none;padding:7px 10px;font-size:13px}.lightbox p{text-align:center;font-size:12px;margin:10px auto 0;color:var(--muted)}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.not-found{padding-top:70px;padding-bottom:100px}.not-found h1{font-size:36px;font-weight:400;margin-bottom:20px}
@media(max-width:760px){:root{--gutter:26px}.site-header{padding-top:24px;padding-bottom:20px}.logo{width:135px}.site-nav{gap:21px;font-size:12px}.intro{padding-top:28px;padding-bottom:32px}.intro h1{font-size:48px;max-width:680px}.intro p{font-size:14px}.project-grid{gap:28px 18px}.project-info h3{font-size:15px}.project-info p{font-size:11px}.placeholder>span{font-size:19px}.placeholder>small{font-size:11px}.about-section{margin-top:48px}.about-grid{grid-template-columns:125px minmax(0,1fr);gap:28px;padding-block:32px}.portrait{width:125px}.about-copy h2{font-size:24px}.project-heading{grid-template-columns:1fr;gap:18px}.project-heading h1{font-size:39px}.project-meta{gap:18px}.case-intro{grid-template-columns:1fr;gap:16px;padding-block:30px}.case-intro h2{font-size:23px}.case-intro h2 br{display:none}.case-notes{grid-template-columns:1fr;gap:22px}.case-hero>img{max-height:600px}.case-tail h2{font-size:22px}.case-placeholder{min-height:210px;aspect-ratio:2/1}.case-placeholder>span{font-size:24px}}
@media(max-width:540px){:root{--gutter:20px}.site-header{gap:18px}.logo{width:121px}.site-nav{gap:15px;font-size:11px}.intro h1{font-size:40px;max-width:430px;line-height:1.06}.intro p{line-height:1.7;font-size:13px}.filters{gap:7px;margin-bottom:22px}.filter{font-size:11px;padding:10px 13px;min-height:38px}.project-grid{grid-template-columns:minmax(0,1fr);gap:27px}.project-info h3{font-size:16px}.project-info p{font-size:12px}.placeholder>span{font-size:22px}.placeholder>small{font-size:12px}.about-grid{grid-template-columns:1fr;gap:23px}.portrait{width:110px}.about-copy p{font-size:13px}.about-copy p.education{font-size:11px}.contact-row{align-items:flex-start;flex-direction:column;gap:22px;padding-block:27px}.contact-row h2{font-size:34px}.email-link{font-size:14px}.footer-line{flex-direction:column;gap:5px;padding-top:15px}.project-hero{padding-top:22px;padding-bottom:27px}.breadcrumb{margin-bottom:24px}.project-heading h1{font-size:34px}.project-heading>p{font-size:13px}.project-meta{grid-template-columns:1fr 1fr;gap:19px;margin-top:24px}.project-meta>div:last-child{grid-column:1/-1}.image-pair{grid-template-columns:1fr;gap:0}.case-intro p{font-size:13px}.case-tail{align-items:flex-start;flex-direction:column;gap:17px}.case-placeholder{min-height:180px}.lightbox{padding-inline:8px}.site-nav a{display:inline-flex;align-items:center;min-height:40px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}

/* Transparent IMMORTAL assets sit on continuous presentation surfaces. */
.project-visual.immortal{background:#303030}.project-visual.immortal img{object-fit:contain;padding:3%}
.immortal-lead .case-image figcaption{padding-bottom:0}.immortal-section{padding-top:14px;padding-bottom:28px}.immortal-section-heading{border-top:1px solid var(--line);padding-top:30px;margin-bottom:25px}.immortal-section-heading h2{font-size:26px;font-weight:600;letter-spacing:-.025em}.immortal-section-heading p{font-size:13px;color:var(--muted);margin-top:8px}
.immortal-image button{background:#090909;padding:clamp(18px,3vw,38px)}.immortal-image img{aspect-ratio:1;object-fit:contain;max-height:none}.immortal-image-light button{background:#efeeea}.immortal-image-apparel button{background:#303030}.immortal-image-wide button{padding:clamp(14px,2.5vw,30px)}.immortal-image-wide img{aspect-ratio:auto}.immortal-identity-grid .immortal-image img{aspect-ratio:3/2}.immortal-colorways{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 24px}.immortal-colorways .immortal-image button{padding:16px}.immortal-archive{border-top:1px solid var(--line);padding-top:22px;margin-bottom:36px}.immortal-archive summary{cursor:pointer;font-size:13px;color:var(--muted)}.immortal-archive summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.immortal-archive>p{font-size:13px;color:var(--muted);margin-block:20px}.lightbox[data-surface=light] img{background:#efeeea}.lightbox[data-surface=dark] img{background:#090909}.lightbox[data-surface=apparel] img{background:#303030}
@media(max-width:760px){.immortal-colorways{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}.immortal-section-heading h2{font-size:24px}.immortal-section{padding-bottom:12px}}
@media(max-width:540px){.immortal-colorways{gap:0 12px}.immortal-colorways .immortal-image button{padding:10px}.immortal-colorways figcaption{padding-bottom:20px}.immortal-section-heading{padding-top:25px}.immortal-section-heading p{font-size:12px}}

/* Portfolio cards and restored full galleries. */
.project-card{border:1px solid #303030;border-radius:12px;overflow:hidden;background:#1c1c1c;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}.project-card:focus-visible{outline-offset:4px;border-color:var(--accent)}.project-info{margin:0;padding:18px 48px 20px 20px;position:relative}.project-info h3{font-weight:600}.project-info p{margin-top:5px}.card-arrow{position:absolute;right:20px;top:18px;font-size:20px;color:#aaa;transition:color .2s ease,transform .2s ease}.project-visual img{transition:transform .3s ease,opacity .2s ease}.project-card:hover .project-visual img{opacity:1}
@media(hover:hover){.project-card:hover{border-color:#666;box-shadow:0 12px 28px #0004}.project-card:hover .card-arrow{color:var(--accent)}}
@media(hover:hover) and (prefers-reduced-motion:no-preference){.project-card:hover{transform:translateY(-4px)}.project-card:hover .project-visual img{transform:scale(1.025)}.project-card:hover .card-arrow{transform:translate(2px,-2px)}}
.restored-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 28px;align-items:start}.restored-image button{background:var(--paper)}.restored-image img{width:100%;height:auto;max-height:850px;object-fit:contain}.restored-hero .restored-image img{max-height:710px}.restored-hero figcaption{display:none}.restored-image figcaption{padding-bottom:20px}.animation-link{display:block;color:var(--accent);margin-top:6px}.lightbox-original{display:block;width:fit-content;margin:12px auto 0;font-size:12px;color:var(--accent);text-decoration:underline;text-underline-offset:3px}.lightbox img{background:var(--paper)}
@media(max-width:540px){.project-card{border-radius:10px}.project-info{padding:16px 44px 18px 17px}.card-arrow{right:17px;top:15px}.restored-gallery{grid-template-columns:minmax(0,1fr);gap:12px}.restored-image img{max-height:none}}

/* Rob's identity: purple leads, with pink and green accents. */
.logo{width:180px}.filter[aria-pressed=true]{background:var(--primary);border-color:var(--primary);color:#fff}.filter:hover:not([aria-pressed=true]){border-color:var(--pink)}.email-link{color:var(--pink)}.email-link:hover,.animation-link:hover,.lightbox-original:hover{color:var(--green)}.site-nav a:hover{color:var(--pink)}.case-image button{transition:transform .22s ease,box-shadow .22s ease}.case-image button:focus-visible{outline-color:var(--pink)}
@media(hover:hover){.project-card:hover{border-color:var(--primary)}.project-card:hover .card-arrow{color:var(--green)}}
@media(hover:hover) and (prefers-reduced-motion:no-preference){.case-image button:hover{transform:translateY(-3px);box-shadow:0 8px 22px #0003}}
@media(max-width:760px){.logo{width:156px}}
@media(max-width:540px){.logo{width:130px}}

/* The supplied rotation keeps one shared canvas at every angle. */
.immortal-motion video{display:block;width:100%;height:auto;aspect-ratio:8/5;max-height:620px;object-fit:contain;background:var(--paper)}
.immortal-motion figcaption{display:flex;justify-content:space-between;align-items:center;gap:16px;color:var(--muted);font-size:11px;border-bottom:1px solid var(--line);padding:12px 0}
.motion-toggle{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:8px 14px;border:1px solid var(--line);border-radius:24px;background:transparent;font-size:11px;color:var(--ink)}
.motion-toggle[hidden]{display:none}.motion-toggle:hover{border-color:var(--pink);color:var(--pink)}.motion-icon{font-size:12px;width:12px;text-align:center}.motion-label{min-width:88px;text-align:left}
@media(max-width:540px){.immortal-motion figcaption{gap:8px}.motion-toggle{padding-inline:11px}}

/* Keep iPhone's Helvetica Neue; supply a matching face on other systems. */
@font-face{font-family:'RC Headline';src:url('/assets/fonts/texgyreheros-bold.woff') format('woff');font-style:normal;font-weight:800;font-display:swap}
.intro h1{font-family:'Helvetica Neue','RC Headline',Helvetica,Arial,sans-serif;font-style:normal;font-stretch:normal;font-synthesis:none}
/* SVG icons retain the same monochrome shapes on desktop and phones. */
.ui-icon{display:inline-block;width:1em;height:1em;vertical-align:-.125em;flex:none}
.card-arrow{line-height:1}.card-arrow .ui-icon{width:20px;height:20px;vertical-align:middle}
.motion-icon{display:inline-flex;align-items:center;justify-content:center}
.motion-icon .ui-icon{width:12px;height:12px}
.motion-icon [data-icon=pause],.motion-icon[data-playing=true] [data-icon=play]{display:none}
.motion-icon[data-playing=true] [data-icon=pause]{display:inline-block}

/* Street Signs: each format gets a proportional, uncropped display. */
.street-collection{padding-bottom:10px}.street-grid{display:grid;gap:20px;align-items:start}.street-grid-scenes,.street-grid-streets,.street-grid-marks{grid-template-columns:repeat(2,minmax(0,1fr))}.street-grid-signs{grid-template-columns:repeat(4,minmax(0,1fr))}.street-grid-warnings{grid-template-columns:repeat(3,minmax(0,1fr))}.street-grid-pieces{grid-template-columns:repeat(6,minmax(0,1fr));gap:16px}.street-group{margin-top:32px}.street-group h3{font-size:15px;font-weight:600;letter-spacing:-.015em;margin-bottom:18px}.street-sign-image button{aspect-ratio:1;background:#1b1b1b;border:1px solid #292929;border-radius:10px;padding:clamp(12px,1.6vw,22px);overflow:hidden;display:flex;align-items:center;justify-content:center}.street-sign-image img{width:100%;height:100%;max-height:none;object-fit:contain}.street-sign-image figcaption{padding:9px 2px 0;font-size:11px;line-height:1.5}.street-grid-scenes button{aspect-ratio:4/3}.street-grid-streets button{aspect-ratio:5/1;padding:10px 14px}.street-grid-streets figcaption{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.street-grid-warnings button{aspect-ratio:2/1;padding:12px}.street-grid-pieces button{aspect-ratio:3/4;padding:18px}.street-grid-marks button{aspect-ratio:2/1}.lightbox[data-surface=street-signs] img{background:#1b1b1b}
@media(max-width:900px){.street-grid{gap:18px}.street-grid-signs{grid-template-columns:repeat(3,minmax(0,1fr))}.street-grid-pieces{grid-template-columns:repeat(3,minmax(0,1fr))}.street-grid-pieces button{aspect-ratio:1}.street-grid-warnings{grid-template-columns:1fr}.street-grid-warnings button{aspect-ratio:3/1}}
@media(max-width:540px){.street-grid{gap:18px 12px}.street-grid-scenes,.street-grid-streets,.street-grid-marks{grid-template-columns:1fr}.street-grid-signs,.street-grid-pieces{grid-template-columns:repeat(2,minmax(0,1fr))}.street-grid-scenes button{aspect-ratio:1}.street-grid-pieces button{aspect-ratio:3/4}.street-grid-streets{gap:12px}.street-grid-streets button{padding:8px 12px}.street-grid-warnings button{aspect-ratio:2.4/1}.street-group{margin-top:28px}.street-group h3{margin-bottom:15px}}

.restored-motion{min-width:0;padding-bottom:20px}.restored-motion video{display:block;width:100%;height:auto;max-height:850px;object-fit:contain;border-radius:6px;background:var(--paper)}.restored-motion figcaption{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;padding-top:10px;font-size:11px;color:var(--muted)}.restored-motion .animation-link{width:fit-content;font-size:11px;margin-top:8px}

/* One entrance per page visit; the header stays outside the moving content.
   Visibility is never gated on JavaScript or on the animation finishing. */
#main{--entrance-distance:64px;--entrance-duration:900ms}
@media(max-width:760px){#main{--entrance-distance:48px;--entrance-duration:850ms}}
@keyframes page-entrance{
  from{opacity:0;transform:translateY(var(--entrance-distance))}
  to{opacity:1;transform:none}
}
@media(prefers-reduced-motion:no-preference){
  #main{animation:page-entrance var(--entrance-duration) cubic-bezier(.22,.68,.3,1) 0s 1 backwards}
}
