:root{--blue:#111db5;--paper:#f6f5ef;--ink:#171b36;--line:#d7d7cf}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',Arial,sans-serif}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:5px}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:3px solid #ee6e35;outline-offset:5px}header{height:100px;margin:0 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.wordmark{font-size:25px;font-weight:700;letter-spacing:-1.2px}.wordmark span{font-size:13px;vertical-align:top;margin-left:3px}nav{display:flex;gap:35px;font-size:14px}nav a:last-child{color:var(--blue)}.hero{position:relative;padding:42px 5% 55px;overflow:hidden}.eyebrow{font-size:11px;letter-spacing:1.8px;font-weight:600;display:flex;gap:30px}.hero .eyebrow{justify-content:space-between}.hero h1{font-family:Manrope,Arial,sans-serif;font-size:clamp(65px,8.5vw,132px);line-height:1.06;letter-spacing:-7px;font-weight:500;margin:52px 0 40px;position:relative;z-index:1}.hero em{font-family:Georgia,serif;font-weight:400;color:var(--blue)}.hero-bottom{display:flex;justify-content:space-between;align-items:end;position:relative;z-index:1}.hero-bottom p{font-size:19px;line-height:1.55;max-width:570px;margin:0}.round-link{display:flex;gap:25px;align-items:center;font-size:14px}.round-link span{display:grid;place-items:center;border:1px solid var(--blue);border-radius:50%;width:48px;height:48px;font-size:25px;color:var(--blue)}.asterisk{position:absolute;right:7%;top:124px;font-size:240px;color:var(--blue);line-height:1;transform:rotate(-10deg)}.work{padding:65px 5% 95px;background:var(--blue);color:white}.section-heading{display:flex;align-items:center;justify-content:space-between}.section-heading h2{font-size:37px;letter-spacing:-1.5px;font-weight:500;margin:0}.section-heading h2 span{font-size:11px;vertical-align:top;letter-spacing:0;margin-left:16px}.section-heading p{font-size:13px;color:#d3d5ff}.filters{display:flex;gap:8px;flex-wrap:wrap;margin:30px 0}.filters button{font:inherit;font-size:12px;border:1px solid #ffffff66;background:transparent;color:white;border-radius:30px;padding:10px 20px;cursor:pointer}.filters button[aria-pressed=true],.filters button:hover{background:var(--paper);color:var(--blue)}.projects{display:grid;grid-template-columns:1fr 1fr;gap:38px 25px}.project:hover{text-decoration:none}.project[hidden]{display:none}.cover{aspect-ratio:1.52;background:#e6e5df;overflow:hidden;position:relative}.cover img{width:100%;height:100%;object-fit:cover;transition:transform .5s}.project:hover img{transform:scale(1.035)}.view{position:absolute;bottom:18px;right:18px;border-radius:24px;background:var(--paper);color:var(--blue);padding:11px 17px;font-size:12px;opacity:0;transition:opacity .2s}.project:hover .view,.project:focus-visible .view{opacity:1}.caption{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding-top:15px}.caption h3{font-size:20px;font-weight:500;margin:0;letter-spacing:-.5px}.caption>span{font-size:11px;white-space:nowrap;color:#dddfff}.caption b{font-size:19px;margin-left:15px;font-weight:400}.about{padding:100px 8%;display:grid;grid-template-columns: .85fr 1.15fr;gap:9%;align-items:center}.portrait img{width:100%;height:510px;object-fit:cover;object-position:center 40%}.portrait span{display:block;font-size:11px;margin-top:12px}.bio h2{font-size:46px;font-weight:500;letter-spacing:-2px;margin:24px 0}.bio p{font-size:16px;line-height:1.7;max-width:580px}.bio p a{text-decoration:underline;text-underline-offset:3px}.text-link{display:inline-block;margin-top:15px;color:var(--blue);font-size:14px;border-bottom:1px solid;padding-bottom:6px}.contact{background:#e6e8d8;padding:65px 8% 80px}.contact h2{font-size:clamp(56px,7vw,100px);line-height:1.05;letter-spacing:-4px;font-weight:500;margin:30px 0}.contact>a{font-size:clamp(15px,2vw,25px);border-bottom:1px solid;padding-bottom:6px}footer{margin:0 5%;padding:35px 0;display:flex;align-items:center;justify-content:space-between;gap:15px}footer>span,footer>a:last-child{font-size:12px}.case{padding:35px 5% 0}.back{font-size:13px;color:var(--blue)}.case-heading{max-width:900px;margin:60px auto 50px}.case-heading h1{font-size:clamp(42px,6vw,80px);font-weight:500;line-height:1.1;letter-spacing:-3px;margin:20px 0}.case-heading p{font-size:19px;line-height:1.65;max-width:750px}.case-note{border-top:1px solid var(--line);padding:20px 0;display:flex;justify-content:space-between;font-size:12px}.case-note span{color:#5d6072}.gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;align-items:start;max-width:1200px;margin:auto}.gallery img{width:100%;height:auto;display:block}.gallery.board{display:block;max-width:1150px}.next{display:block;border-top:1px solid var(--line);margin-top:60px;padding:35px 0 45px}.next span{font-size:12px;color:var(--blue)}.next h2{font-size:38px;font-weight:500;letter-spacing:-1px;margin:15px 0}.sr,.skip{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.skip:focus{position:fixed;top:10px;left:10px;width:auto;height:auto;clip-path:none;z-index:10;background:white;padding:15px}@media(min-width:1600px){body{max-width:1800px;margin:auto}}@media(max-width:760px){header{height:80px}.wordmark{font-size:21px}nav{gap:18px;font-size:12px}nav a:last-child{display:none}.hero{padding-top:28px}.hero .eyebrow{font-size:9px;letter-spacing:1px}.hero h1{font-size:64px;letter-spacing:-3.5px;margin-top:65px}.asterisk{font-size:115px;right:3%;top:75px;opacity:.18}.hero-bottom{display:block}.hero-bottom p{font-size:17px}.round-link{margin-top:25px}.section-heading{display:block}.section-heading h2{font-size:32px}.work{padding-top:42px}.filters{gap:7px}.filters button{padding:9px 14px}.projects{grid-template-columns:1fr;gap:32px}.caption h3{font-size:18px}.about{padding:60px 6%;grid-template-columns:1fr;gap:40px}.portrait{max-width:450px}.portrait img{height:440px}.bio h2{font-size:40px}.contact{padding:45px 6% 60px}.contact h2{letter-spacing:-3px}footer{flex-wrap:wrap}footer .wordmark{width:100%;margin-bottom:12px}.case-heading{margin-top:40px}.case-heading p{font-size:17px}.case-heading h1{letter-spacing:-2px}.case-note{gap:15px}.case-note span{max-width:160px;text-align:right}.gallery{grid-template-columns:1fr}.next h2{font-size:30px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* Project artwork is the page, without a surrounding presentation shell. */
.full-project{background:white;max-width:none}.full-project main{margin:0;padding:0}.full-project main>img{display:block;width:100%;height:auto;margin:0}.project-return{position:fixed;right:20px;bottom:20px;z-index:5;display:flex;gap:0;background:rgba(246,245,239,.96);border:1px solid #c9c9c2;border-radius:30px;box-shadow:0 2px 12px #0001;font:13px Arial,sans-serif}.project-return a{padding:13px 18px}.project-return a+a{border-left:1px solid #d7d7cf}.photo-gallery{gap:24px;align-items:start}.photo-gallery a{display:block;background:transparent}.photo-gallery img{width:100%;height:auto;object-fit:contain}.photo-gallery.basel{grid-template-columns:repeat(3,minmax(0,1fr))}.photo-gallery.timeline{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-gallery.timeline a:last-child{grid-column:1/-1}.photo-gallery.ihd{grid-template-columns:repeat(3,minmax(0,1fr))}.cover img{object-fit:contain}.cover{background:#eae9e2}.case-heading{margin:35px auto 45px}.photo-gallery.jilly{grid-template-columns:1.3fr 1fr}.photo-gallery.jilly img{max-height:820px}.case{padding-bottom:55px}@media(max-width:760px){.photo-gallery.basel,.photo-gallery.ihd{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-gallery.timeline{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-gallery.jilly,.photo-gallery.snack{grid-template-columns:1fr}.project-return{bottom:12px;right:12px}.project-return a{padding:12px 15px}}@media(max-width:480px){.photo-gallery.basel,.photo-gallery.ihd{grid-template-columns:1fr}}

@font-face{font-family:"Narrow fallback";src:url("assets/nimbus-sans-narrow.otf") format("opentype");font-weight:400;font-style:normal;font-display:swap}
body,button,input,select,textarea,nav,.project-return,.hero h1,.hero em{font-family:"Arial Narrow",ArialNarrow,"Narrow fallback",sans-serif;font-weight:400;font-synthesis:none}h1,h2,h3,h4,h5,h6,b,strong,.wordmark,.eyebrow,.caption h3,.section-heading h2,.bio h2,.case-heading h1,.next h2{font-weight:400}.wordmark,.bio h2,.case-heading h1,.section-heading h2,.caption h3{letter-spacing:0}.filters button{font-size:15px}nav{font-size:17px}.caption>span{font-size:14px}.bio p{font-size:20px;line-height:1.5}.projects{display:block;columns:2;column-gap:25px}.project{display:block;break-inside:avoid;margin-bottom:32px}.cover{aspect-ratio:auto;background:transparent;overflow:hidden}.cover img{display:block;width:100%;height:auto;object-fit:contain}.project:hover img{transform:none}.caption{min-height:42px}.portrait img{display:block;width:100%;height:auto;object-fit:contain}.photo-gallery.jilly img{max-height:none}.photo-gallery{align-items:start}.gallery img{height:auto;object-fit:contain}@media(max-width:760px){.projects{columns:1}.portrait img{height:auto}.caption{min-height:38px}}

@font-face{font-family:"Gotham Book Local";src:local("Gotham Book"),local("Gotham-Book"),local("GothamBook");font-weight:400;font-style:normal;font-display:swap}
body,p,button,input,select,textarea,nav,a,.project-return,.filters button{font-family:"Gotham Book Local","Gotham Book",Arial,sans-serif;font-weight:400;font-synthesis:none}
h1,h2,h3,h4,h5,h6,.wordmark,.eyebrow,.caption h3,.section-heading h2,.bio h2,.case-heading h1,.next h2{font-family:"Arial Narrow",ArialNarrow,"Narrow fallback",sans-serif;font-weight:400;font-synthesis:none}

/* Quieter typography and a clear three-tier work hierarchy. */
.wordmark,.eyebrow,.section-heading h2,.bio h2,.case-heading h1,.next h2{font-family:"Gotham Book Local","Gotham Book",Arial,sans-serif;font-weight:400}.section-heading h2{font-size:28px}.bio h2{font-size:32px}.case-heading h1{font-size:clamp(32px,4vw,52px)}.wordmark{display:flex;align-items:center;gap:12px;font-size:19px}.dog-mark{width:66px;height:40px;object-fit:contain;filter:brightness(0) saturate(100%) invert(12%) sepia(80%) saturate(3760%) hue-rotate(237deg) brightness(85%)}.dog-home{display:flex;align-items:center}.dog-home .dog-mark{width:44px;height:24px}.projects.tiered-projects{display:flex;flex-direction:column;gap:56px;columns:auto}.project-tier{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.project-tier .project{margin:0;min-width:0}.project-tier .cover{display:flex;align-items:center;justify-content:center;background:#f6f5ef;overflow:hidden}.project-tier .cover img{height:100%;width:100%;object-fit:contain}.project-tier.primary .cover{height:310px}.project-tier.primary .caption h3{font-size:27px}.project-tier.secondary{padding-top:38px;border-top:1px solid #ffffff44}.project-tier.secondary .cover{height:230px}.project-tier.secondary .caption h3{font-size:23px}.project-tier.tertiary{padding-top:30px;border-top:1px solid #ffffff44}.project-tier.tertiary .cover{height:170px}.project-tier.tertiary .caption h3{font-size:20px}.project-tier .caption{display:block;padding-top:15px}.project-tier .caption>span{display:block;margin-top:5px;font-size:12px}.project-tier.primary .project:nth-child(-n+2) img,.project-tier.primary .project:last-child img{object-fit:cover}.project-tier[hidden]{display:none}@media(max-width:900px){.project-tier.primary .cover{height:240px}.project-tier.secondary .cover{height:190px}.project-tier.tertiary .cover{height:150px}}@media(max-width:650px){.project-tier{grid-template-columns:1fr;gap:30px}.project-tier.primary .cover{height:auto;aspect-ratio:1.5}.project-tier.secondary .cover{height:auto;max-height:360px;aspect-ratio:1.4}.project-tier.tertiary .cover{height:auto;max-height:280px;aspect-ratio:1.5}.project-tier .cover img{height:100%;max-height:inherit}.projects.tiered-projects{gap:40px}.dog-mark{width:50px}.wordmark{font-size:17px;gap:6px}}

/* A continuous editorial layout: project size carries the emphasis. */
.projects.editorial-projects{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:38px 26px;columns:auto;align-items:start}.editorial-projects>.project{grid-column:span 6;margin:0;min-width:0}.editorial-projects>.project:nth-child(1){grid-column:span 7}.editorial-projects>.project:nth-child(2){grid-column:span 5}.editorial-projects>.project:nth-child(3){grid-column:span 7}.editorial-projects>.project:nth-child(4){grid-column:span 5}.editorial-projects>.project:nth-child(n+7){grid-column:span 4}.editorial-projects .cover{height:auto;aspect-ratio:1.48;background:transparent;border-radius:3px}.editorial-projects .cover img{display:block;width:100%;height:100%;object-fit:contain}.editorial-projects>.project:nth-child(-n+4) .cover img{object-fit:cover}.editorial-projects>.project:nth-child(1) .cover,.editorial-projects>.project:nth-child(3) .cover{aspect-ratio:1.65}.editorial-projects>.project:nth-child(2) .cover,.editorial-projects>.project:nth-child(4) .cover{aspect-ratio:1.18}.editorial-projects .caption{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-height:0}.editorial-projects .caption h3{font-size:24px}.editorial-projects>.project:nth-child(n+7) .caption h3{font-size:20px}.editorial-projects .caption>span{font-size:12px;white-space:nowrap}.editorial-projects.is-filtered>.project{grid-column:span 6}.filters button{background:linear-gradient(180deg,#ffffff20,#ffffff05 48%,#0000000a 50%,#ffffff10);border:1px solid #ffffff6b;box-shadow:inset 0 1px 0 #ffffff45,0 2px 4px #0001}.filters button[aria-pressed=true]{background:linear-gradient(#fff,#e7f3f7);box-shadow:inset 0 1px 0 white,0 2px 7px #0002}.project-return{background:linear-gradient(#ffffffee,#e2eff2ee);box-shadow:inset 0 1px 0 white,0 3px 12px #0002}.text-link{border-bottom-style:dotted}header{box-shadow:0 1px 0 #ffffff88}.cover{transition:box-shadow .2s}.project:hover .cover{box-shadow:0 0 0 1px #ffffff88,0 8px 22px #060b6830}a:focus-visible,button:focus-visible{outline-color:#b9f3ff}body{cursor:url("assets/retro-cursor.svg") 2 2,default}a,button{cursor:url("assets/retro-cursor.svg") 2 2,pointer}@media(max-width:760px){.projects.editorial-projects{gap:30px 18px}.editorial-projects>.project,.editorial-projects>.project:nth-child(n){grid-column:span 6}.editorial-projects>.project:nth-child(-n+3){grid-column:span 12}.editorial-projects>.project:nth-child(n) .cover{aspect-ratio:1.45}.editorial-projects .caption{display:block}.editorial-projects .caption>span{display:block;margin-top:6px}}@media(max-width:460px){.editorial-projects>.project:nth-child(n){grid-column:span 12}.editorial-projects>.project:nth-child(n+7) .cover{max-height:230px}.editorial-projects .caption h3{font-size:22px}}
.editorial-projects>.project:nth-child(4) .cover img{object-fit:contain}.editorial-projects>.project:nth-child(4) .cover{aspect-ratio:1.18;display:flex;align-items:center;background:transparent}

/* A simple, aligned project grid with no decorative image containers. */
.projects.portfolio-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:38px 26px;columns:auto;align-items:start}.portfolio-grid>.project{display:block;grid-column:auto;margin:0;min-width:0}.portfolio-grid .cover{display:block;width:100%;height:auto;max-height:none;aspect-ratio:4/3;overflow:hidden;background:transparent;border:0;border-radius:0;box-shadow:none;transition:none}.portfolio-grid .cover img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;transform:none}.portfolio-grid .project:hover .cover{box-shadow:none}.portfolio-grid .caption{display:block;padding-top:13px;min-height:60px}.portfolio-grid .caption h3{font-size:22px;line-height:1.2;margin:0}.portfolio-grid .caption>span{display:block;margin-top:7px;font-size:12px}.portfolio-grid .project[href="aceable.html"] .cover img{object-position:center top}.portfolio-grid .project[href="timeline.html"] .cover img,.portfolio-grid .project[href="basel.html"] .cover img{object-position:center 30%}@media(max-width:900px){.projects.portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 22px}}@media(max-width:540px){.projects.portfolio-grid{grid-template-columns:1fr;gap:28px}.portfolio-grid .caption{min-height:0}.portfolio-grid .caption h3{font-size:23px}}

.portfolio-grid .project[href="aceable.html"] .cover img{object-position:center 46%;}

/* User-supplied Aero wallpaper, gently animated behind the work grid. */
.work.aero-work{position:relative;isolation:isolate;clip-path:inset(0);background:#12548b}.aero-work::before{content:"";position:fixed;inset:0;z-index:-3;background:#12548b url("assets/aero-background.jpg") center/cover no-repeat;pointer-events:none}.aero-work::after{content:"";position:fixed;inset:0;z-index:-1;background:linear-gradient(90deg,#082f573b,#06395e12);pointer-events:none}.aero-canvas{position:fixed;inset:0;width:100vw;height:100vh;z-index:-2;pointer-events:none}.aero-work .section-heading{display:flex;justify-content:space-between;align-items:center}.aero-motion{width:32px;height:29px;border:1px solid #ffffff66;border-radius:7px;color:white;background:linear-gradient(#ffffff28,#ffffff08);box-shadow:inset 0 1px 0 #ffffff55;font:16px Arial,sans-serif}.aero-work .caption{ text-shadow:0 1px 4px #00325388}.aero-work .caption>span{color:#f0f7ff}.aero-motion:focus-visible{outline:2px solid white;outline-offset:4px}@media(prefers-reduced-motion:reduce){.aero-canvas,.aero-motion{display:none}}
/* Filtering must override every card layout rule. */
.projects > .project[hidden]{display:none!important}
/* Contact bubble, aligned with the rest of the navigation. */
header nav{align-items:center;gap:30px}header nav>a{display:inline-flex;align-items:center;line-height:1.2}header nav>a[href^="mailto:"]{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:45px;padding:12px 21px;margin:0 0 3px 2px;border:1px solid #9abed3;border-radius:48% 45% 43% 46% / 55% 52% 48% 46%;background:linear-gradient(180deg,#fff 3%,#e8f8ff 42%,#cbe8f7 52%,#e2f4ff 100%);box-shadow:inset 0 2px 0 #fff,0 3px 8px #18437a16;color:#152b83;white-space:nowrap;isolation:isolate}header nav>a[href^="mailto:"]::after{content:"";position:absolute;right:17px;bottom:-6px;width:12px;height:12px;background:#d9effb;border-right:1px solid #9abed3;border-bottom:1px solid #9abed3;transform:skewY(-25deg) rotate(24deg);border-bottom-right-radius:5px;z-index:-1}header nav>a[href^="mailto:"]:hover{background:linear-gradient(#fff,#d7f6ff 45%,#bde4f7 54%,#d4f1ff);text-decoration:none;box-shadow:inset 0 2px 0 #fff,0 4px 12px #18437a28}@media(max-width:760px){header nav{gap:14px}header nav>a[href^="mailto:"]{display:inline-flex;min-height:36px;padding:9px 13px;font-size:13px}header .wordmark{font-size:0;gap:0}header .wordmark .dog-mark{width:55px;height:34px}}@media(max-width:380px){header nav{gap:10px}header nav>a[href^="mailto:"]{padding:9px 10px;font-size:12px}}

/* Resolution-independent underwater Aero scene. */
.work.aero-work{background:#125f9a}.aero-work::before{background:radial-gradient(ellipse at 17% -10%,#a3e9ef66 0%,#42a9d52b 28%,transparent 62%),linear-gradient(160deg,#3d9dd0 0%,#167fba 28%,#0b5e9d 60%,#073b77 100%)}.aero-work::after{background:linear-gradient(100deg,#053e6f20,transparent 65%,#072e5c10)}.sea-scene{position:fixed;inset:0;z-index:-2;pointer-events:none;overflow:hidden}.sea-rays{position:absolute;inset:-30% -20%;transform-origin:15% 0;background:conic-gradient(from 166deg at 24% 0%,transparent 0deg,#d2ffff12 8deg,transparent 14deg,transparent 21deg,#c4faff16 26deg,transparent 31deg,transparent 42deg,#deffff10 47deg,transparent 54deg);animation:sea-light 24s ease-in-out infinite alternate}.sea-surface{position:absolute;left:-5%;top:-45px;width:110%;height:240px;fill:none;stroke:#d8ffff;stroke-width:1;opacity:.11;animation:sea-surface 19s ease-in-out infinite alternate}.sea-bubble{position:absolute;left:var(--x);bottom:-40px;width:var(--size);height:var(--size);border:1px solid #d4faff55;border-radius:50%;background:radial-gradient(circle at 30% 25%,#f1ffff65 0 6%,#ffffff06 18%,transparent 55%,#ace9ff14 85%);box-shadow:inset -1px -2px 3px #b2e9ff18;animation:sea-rise var(--duration) linear var(--delay) infinite;opacity:0}.sea-scene.is-paused *{animation-play-state:paused!important}.aero-work .caption{text-shadow:0 1px 3px #00375766}@keyframes sea-rise{0%{transform:translate3d(0,0,0);opacity:0}8%{opacity:.5}85%{opacity:.35}100%{transform:translate3d(25px,-110vh,0);opacity:0}}@keyframes sea-light{from{transform:rotate(-3deg);opacity:.55}to{transform:rotate(4deg);opacity:1}}@keyframes sea-surface{from{transform:translateX(-1%) translateY(-5px)}to{transform:translateX(2%) translateY(5px)}}@media(prefers-reduced-motion:reduce){.sea-scene *{animation:none!important}.sea-bubble{display:none}.sea-rays{opacity:.7}}
