@font-face{font-family:Areal;src:url('/fonts/ABCArealVariable.woff2') format('woff2');font-weight:100 900;font-display:swap}
 :root{--font:Areal,Arial,sans-serif;--ink:#1c1c1c;--muted:#686868;--paper:#fff;--space:12px;--space-2:24px;--space-3:36px;--space-4:48px;--gap:var(--space)}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:60px}
body{margin:0;background:var(--paper);color:var(--ink);font:400 14px/1.4 var(--font);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none;text-underline-offset:4px}
a:hover{text-decoration:underline}
a:focus-visible,button:focus-visible{outline:1px solid var(--ink);outline-offset:5px}
button{font:inherit;color:inherit}
h1,h2,h3,p,figure{margin:0;font-size:inherit;font-weight:400}
img,video{display:block;width:100%;height:auto}
header{height:48px;padding:0 var(--space);display:grid;grid-template-columns:60% 1fr auto;align-items:center;gap:var(--space);position:relative;z-index:5;background:transparent}
.brand,.info-link{display:flex;align-items:center;min-height:48px}
.practice{color:var(--muted)}
main{padding:0 var(--space)}
.home{display:grid;grid-template-columns:minmax(0,60fr) minmax(0,40fr);gap:var(--space);align-items:start}
.feed{min-width:0;padding-bottom:48px}
.project{margin:0 0 var(--space);scroll-margin-top:60px}
.project>a{display:block}
.project img,.project .animated-image{object-fit:cover}
.project .label{min-height:36px;padding-top:12px}
.project.right{width:63%;margin-left:auto}
.project.left{width:83%}
.project.narrow{width:69%;margin-left:24px}
.project.wide{width:100%}
.project:first-child img{aspect-ratio:1.78}
.project.right img,.project.right .animated-image{max-height:660px;object-fit:cover}
.side{position:sticky;top:60px;padding:12px 0 48px}
.active-detail{min-height:96px}
.active-role{color:var(--muted);margin-top:12px}
.index{display:flex;flex-direction:column;align-items:flex-start;gap:0}
.index a{color:var(--muted);padding:0;min-height:24px}
.index a[aria-current=true]{color:var(--ink);text-decoration:underline}
.case,.info-page{padding-top:12px}
.back{display:inline-flex;align-items:center;min-height:48px;margin-bottom:24px}
h1{font-size:32px;line-height:1.15}
.case-heading{display:grid;grid-template-columns:1fr 1fr;gap:var(--space);margin-bottom:36px}
.case-meta{display:flex;justify-content:space-between;gap:24px;padding-top:12px;color:var(--muted)}
.case-description{max-width:620px;margin:24px 0 48px auto}
.prose p+p{margin-top:12px}
.prose a{text-decoration:underline}
.prose{white-space:pre-line}
.media-sequence{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space);align-items:start}
.media-block{grid-column:1/-1;min-width:0}
.media-block.pair{grid-column:auto}
.media-block.narrow-media{width:65%;justify-self:center}
.media-block a{display:block}
.media-block img{object-fit:contain}
.media-text{grid-column:1/-1;max-width:600px;width:100%;margin:24px 0 36px auto}
.media-block video{max-height:90vh;background:#f5f5f5}
.video-embed{position:relative;aspect-ratio:16/9;background:#f3f3f3}
.video-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.video-embed button{padding:0;border:0;background:none;width:100%;height:100%;cursor:pointer;position:relative}
.video-embed img{width:100%;height:100%;object-fit:cover}
.play-label{position:absolute;bottom:12px;left:12px;padding:12px 12px;background:white}
.video-source{display:inline-block!important;padding:12px 0;min-height:48px;text-decoration:underline;color:var(--muted)}
.neighbors{display:flex;justify-content:space-between;gap:var(--space);margin:60px 0 24px}
.neighbors a{padding:12px 0;max-width:45%}
.info-page{max-width:none}
.info-layout{display:grid;grid-template-columns:1fr 1fr;gap:var(--space);margin:24px 0 48px}
.bio{max-width:580px}
.info-sections{grid-column:2;display:grid;grid-template-columns:1fr 1fr;gap:var(--space);margin-top:24px}
.info-sections h2{color:var(--muted);margin-bottom:24px}
.contacts a{display:block;min-height:48px}
.cv p{margin-bottom:12px}
.skip{position:fixed;top:-100px;left:12px;background:white;padding:12px;z-index:20}
.skip:focus{top:0}
@media(max-height:760px) and (min-width:801px){.side{position:static}
.active-detail{min-height:72px}
}
@media(min-width:1800px){.home{grid-template-columns:minmax(0,58fr) minmax(0,42fr)}
}
@media(max-width:800px){header{grid-template-columns:1fr auto;gap:var(--space);padding:0 var(--space);height:48px}
.practice{display:none}
main{padding:0 var(--space)}
.home{display:block}
.side{display:none}
.project{margin-bottom:var(--space)}
.home .project{width:100%;margin-left:0}
.project .label{min-height:48px;padding-top:12px}
.case-heading{grid-template-columns:1fr;gap:24px;margin-bottom:24px}
h1{font-size:24px}
.case-description{margin:24px 0 36px;max-width:600px}
.media-sequence{gap:var(--space)}
.media-block.narrow-media{width:85%}
.media-text{margin:12px 0 24px}
.back{margin-bottom:24px}
.info-layout{grid-template-columns:1fr;gap:24px}
.info-sections{grid-column:1;margin-top:12px}
.neighbors{margin-top:36px}
}
@media(max-width:480px){.media-block.pair{grid-column:1/-1}
.info-sections{grid-template-columns:1fr}
.media-block.narrow-media{width:100%}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}
}

.active-detail h1{font-size:14px;line-height:1.4}

.project.right img,.project.right .animated-image{aspect-ratio:1/1.12;object-fit:cover}

.cv p{white-space:pre-line}

/* Shared navigation: quiet fixed access, generous text spacing. */
[hidden]{display:none!important}

header{position:sticky;top:0;z-index:10;grid-template-columns:minmax(0,60fr) minmax(0,40fr) auto}

.menu-trigger{display:none}

.info-link[aria-expanded=true]{text-decoration:underline}

.about-copy{max-width:490px}

.about-details{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:48px}

.about-details h2{color:var(--muted);margin-bottom:12px}

.about-details .contacts p{margin:0}

.about-details .contacts a{min-height:36px}

.about-details .cv p{margin-bottom:12px}

.side:has(#info-panel:not([hidden])){position:sticky;top:60px;max-height:calc(100dvh - 72px);overflow:auto;scrollbar-width:thin}

#navigation{position:fixed;inset:0 0 0 auto;margin:0;width:40%;max-width:none;height:100dvh;max-height:none;border:0;padding:0;background:#fff;color:var(--ink);font:inherit}

#navigation::backdrop{background:rgb(255 255 255 / .65)}

.dialog-header{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 var(--space);gap:24px}

.dialog-header>a,.menu-close{min-height:48px;display:flex;align-items:center}

.menu-close{border:0;background:none;cursor:pointer;padding:0}

.dialog-scroll{height:calc(100% - 48px);overflow-y:auto;overscroll-behavior:contain;padding:12px 12px 36px}

.menu-tabs{display:flex;gap:24px;margin-bottom:36px}

.menu-tabs button{background:none;border:0;padding:0;min-height:48px;cursor:pointer;color:var(--muted)}

.menu-tabs button[aria-pressed=true]{color:var(--ink);text-decoration:underline;text-underline-offset:5px}

.mobile-projects{display:flex;flex-direction:column}

.mobile-projects a{display:flex;align-items:center;min-height:48px;padding:12px 0}

html.navigation-open{overflow:hidden}

@media(max-width:800px){
 header{grid-template-columns:1fr auto;height:48px;padding:0 var(--space)}

 header .info-link{display:none}

 .menu-trigger{display:flex;align-items:center;justify-content:flex-end;min-width:60px;min-height:48px;border:0;background:transparent;padding:0;cursor:pointer}

 .menu-trigger span{color:white;background:var(--ink);border-radius:24px;padding:0 12px;line-height:24px}

 #navigation{width:100%;height:100dvh;inset:0;max-width:100%}

 #navigation::backdrop{background:white}

 .dialog-header{height:48px;padding:0 var(--space)}

 .dialog-scroll{height:calc(100% - 48px);padding:12px 12px calc(36px + env(safe-area-inset-bottom))}

 .menu-tabs{margin-bottom:24px;gap:24px}

 .mobile-projects{padding-bottom:12px}

 .about-copy{max-width:560px}

 .about-details{margin-top:36px;grid-template-columns:1fr;gap:var(--space)}

 .about-details .contacts a{min-height:48px}

}

@media(prefers-reduced-motion:no-preference){#navigation[open] .dialog-scroll{animation:menu-in .18s ease-out}
#info-panel:not([hidden]){animation:menu-in .18s ease-out}
@keyframes menu-in{from{opacity:0}
to{opacity:1}
}
}

/* Swapping the sticky sidebar must not re-anchor the document scroll. */
.home{overflow-anchor:none}

.mobile-projects a[aria-current=true]{text-decoration:underline;text-underline-offset:5px}

/* One shared desktop grid: the practice line starts exactly at the sidebar. */
:root{--portfolio-columns:minmax(0,60fr) minmax(0,40fr)}
@media(min-width:801px){
 header,.home{grid-template-columns:var(--portfolio-columns);column-gap:var(--space)}
 .brand{grid-column:1;grid-row:1}
 .practice{grid-column:2;grid-row:1;padding-right:60px}
 header .info-link{grid-column:2;grid-row:1;justify-self:end}
}
@media(min-width:1800px){:root{--portfolio-columns:minmax(0,58fr) minmax(0,42fr)}}
#evg.project img,#evg.project .animated-image{aspect-ratio:auto;height:auto;max-height:none;object-fit:contain}
.vimeo-autoplay{position:relative;width:100%;overflow:hidden;background:#fff}
.vimeo-autoplay>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.vimeo-autoplay>iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.vimeo-cover>iframe{pointer-events:none}

.media-block .animated-image{max-height:none;background:#fff}

/* Preserve the complete Planetronica artwork on every viewport. */
#planetronica.project img{aspect-ratio:auto;height:auto;max-height:none;object-fit:contain}

.vimeo-cover>iframe{opacity:0}
.vimeo-cover>iframe.player-ready{opacity:1}

.project .video-cover{pointer-events:none;aspect-ratio:16/9;object-fit:contain}

/* Hooh: full-width product story and a compact campaign grid. */
.hooh-story{display:flex;flex-direction:column;gap:12px}
.hooh-row{display:grid;gap:12px;align-items:start}
.hooh-row figure{min-width:0}
.hooh-row img,.hooh-row video,.hooh-campaign img{height:auto;object-fit:contain}
.hooh-row.hero img{max-height:none;object-fit:contain}
.hooh-row.phones{grid-template-columns:repeat(3,minmax(0,1fr));background:#f5f5f3;padding:48px max(48px,12vw);gap:36px}
.hooh-row.phones.four{grid-template-columns:repeat(4,minmax(0,1fr));padding:48px max(24px,6vw);gap:24px}
.hooh-row.duo{grid-template-columns:repeat(2,minmax(0,1fr))}
.hooh-row.cards{grid-template-columns:repeat(3,minmax(0,1fr));padding:48px max(48px,12vw);gap:12px;background:#f5f5f3}
.hooh-row.suggestions{padding:48px 12vw;background:#f5f5f3}
.hooh-intro,.hooh-note{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:36px 0 48px}
.hooh-intro>p{font-size:32px;line-height:1.2;max-width:600px;padding-right:48px}
.hooh-intro>div,.hooh-note>p{max-width:620px}
.hooh-intro p+p{margin-top:12px}
.hooh-intro a,.hooh-credit a{text-decoration:underline}
.hooh-note{padding:48px 0 24px}
.hooh-note h2{color:var(--muted)}
.hooh-campaign{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px;align-items:start;width:100%;margin:0}
.hooh-campaign figure{min-width:0;grid-column:span 3;border-radius:24px;overflow:hidden}
.hooh-campaign figure:nth-child(n+9):nth-child(-n+11){grid-column:span 4}
.hooh-campaign figure:nth-child(n+12){grid-column:span 2}
.hooh-ui{border-radius:12px;overflow:hidden}
.hooh-ui-portrait{border-radius:12% / var(--ui-radius-y);clip-path:inset(0.15% round 12% / var(--ui-radius-y))}
.hooh-ui-alpha{border-radius:0}
.hooh-row.cards .hooh-ui-alpha{border-radius:9% / var(--card-radius-y);clip-path:inset(0.15% round 9% / var(--card-radius-y))}
.hooh-credit{margin:36px 0 0;line-height:1.7;color:var(--muted)}
.project#hooh img{aspect-ratio:auto;max-height:none;object-fit:contain}
@media(max-width:800px){
.hooh-row.hero img{max-height:none;object-fit:contain}
.hooh-intro,.hooh-note{grid-template-columns:1fr;gap:24px;padding:24px 0}
.hooh-intro>p{font-size:24px;padding:0}
.hooh-row.phones,.hooh-row.phones.four{grid-template-columns:1fr;padding:24px 48px;gap:36px}
.hooh-row.cards{grid-template-columns:1fr;padding:24px;gap:24px}
.hooh-row.duo{grid-template-columns:1fr}
.hooh-row.suggestions{padding:24px 12px}
.hooh-campaign{display:block;columns:2;column-gap:12px}
.hooh-campaign figure,.hooh-campaign figure:nth-child(n+9):nth-child(-n+11),.hooh-campaign figure:nth-child(n+12){grid-column:auto;grid-row:auto;margin:0 0 12px;border-radius:12px;break-inside:avoid}
}

.hooh-web-mockup{background:#f0f0ee;border-radius:24px;padding:48px;overflow:hidden}
.hooh-browser{overflow:hidden;border-radius:12px;background:#fff}
.hooh-browser-bar{height:36px;display:flex;align-items:center;gap:6px;padding:0 12px;background:#e7e7e5}
.hooh-browser-bar i{display:block;width:6px;height:6px;border-radius:50%;background:#aaa}
.hooh-browser video{display:block;width:100%;height:auto}
@media(max-width:800px){.hooh-web-mockup{padding:12px;border-radius:24px}.hooh-browser-bar{height:24px}}

.hooh-row.appstore{grid-template-columns:repeat(2,minmax(0,1fr));padding:48px 18vw}
@media(max-width:800px){.hooh-row.appstore{grid-template-columns:1fr;padding:24px 48px}}

@media(min-width:801px){
 .home .side{position:sticky;top:48px;height:calc(100dvh - 48px);padding:12px 0}
 #work-panel{height:100%;display:flex;flex-direction:column;min-height:0}
 #work-panel .active-detail{flex-shrink:0}
 #work-panel .index{margin-top:auto;min-height:0;overflow-y:auto;scrollbar-width:thin;flex-shrink:1}
 #work-panel .index a{flex-shrink:0}
 .home .side:has(#info-panel:not([hidden])){height:auto;max-height:calc(100dvh - 60px)}
}
/* Editorial case system: media remains in its original proportions. */
.editorial-story{display:flex;flex-direction:column;gap:12px;min-width:0}
.story-row{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start;min-width:0}
.story-row.duo{grid-template-columns:repeat(2,minmax(0,1fr))}
.story-row.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.story-row figure{min-width:0;overflow:hidden}
.story-row img,.story-row video{height:auto;object-fit:contain}
.story-intro{display:grid;grid-template-columns:2fr 1fr;gap:48px;padding:36px 0 48px}
.story-intro>p{font-size:clamp(24px,2.4vw,36px);line-height:1.2;max-width:1100px}
.story-intro>span{color:var(--muted);justify-self:end;padding-top:12px}
.story-note{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:48px 0 24px}
.story-note h2{font-size:24px;line-height:1.2}
.story-note p{max-width:540px;color:var(--muted)}
.story-web{padding:48px;background:#f3f3f1;border-radius:24px;overflow:hidden}
.story-browser{border-radius:12px;overflow:hidden;background:white}
.browser-line{display:flex;gap:6px;height:36px;align-items:center;padding:0 12px;background:#e8e8e5}
.browser-line i{width:6px;height:6px;border-radius:50%;background:#b0b0ab}
.interface figure{border-radius:24px;background:#f3f3f1;overflow:hidden}
.youre-good .hero figure{background:#ff6047;display:flex;justify-content:center}
.youre-good .hero .case-video,.youre-good .hero img{width:min(100%,840px)}
.abstract figure{background:#eee}
.character-object figure{background:#f2f2ef}
.story-row.parade{padding:48px 0}
.case-video{position:relative;min-width:0;width:100%}
.case-video video{width:100%;height:auto;display:block}
.motion-play{position:absolute;bottom:12px;left:12px;border:0;background:#fff;color:#1c1c1c;border-radius:24px;padding:12px 24px;cursor:pointer}
.motion-play[hidden]{display:none}
.story-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;min-height:60px;color:var(--muted)}
.story-controls>div{display:flex;gap:12px;align-items:center}
.story-controls button{border:1px solid #deded9;border-radius:24px;padding:12px 18px;background:white;cursor:pointer;min-height:44px}
.og-ribbon{min-width:0;overflow:hidden}
.og-viewport{overflow-x:auto;scrollbar-width:none;touch-action:pan-x pan-y;scroll-behavior:auto}
.og-viewport::-webkit-scrollbar{display:none}
.og-track{display:flex;width:max-content}
.og-set{display:flex;align-items:flex-end;gap:12px;padding-right:12px;flex:none}
.og-set figure{width:calc((100vw - 24px - 24px)/2.5);flex:none;overflow:hidden;border-radius:12px}
.og-set img{width:100%;height:auto;aspect-ratio:auto;object-fit:contain}
@media(max-width:800px){
 .story-intro{grid-template-columns:1fr;gap:12px;padding:24px 0}
 .story-intro>span{justify-self:start;padding:0}
 .story-note{grid-template-columns:1fr;gap:12px;padding:36px 0 12px}
 .story-row.duo{grid-template-columns:1fr}
 .story-row.four{grid-template-columns:repeat(2,minmax(0,1fr))}
 .story-web{padding:12px;border-radius:12px}
 .browser-line{height:24px}
 .interface figure{border-radius:12px}
 .og-set figure{width:calc((100vw - 24px)/1.12)}
 .story-controls{font-size:12px;gap:6px}
 .story-controls>div{gap:6px}
 .story-controls button{padding:12px}
 .story-row.parade{padding:24px 0}
}

.story-row.merch figure{aspect-ratio:4/5;background:#f3f3f1}
.story-row.merch img{height:100%;object-fit:contain}
/* MBA: a restrained browser frame and a paired set of physical objects. */
.mba .story-browser{border:1px solid #deded9;border-radius:24px;isolation:isolate}
.mba .browser-line{position:relative;height:48px;padding:0 18px;background:#e9e9e6}
.browser-title{position:absolute;left:50%;transform:translateX(-50%);width:60%;padding:6px 12px;border-radius:12px;text-align:center;background:#f8f8f6;color:#73736e;font-size:12px}
.mba .story-row.mockups{grid-template-columns:repeat(2,minmax(0,1fr))}
.mba .mockups figure{border-radius:24px;overflow:hidden}
@media(max-width:800px){.mba .story-browser,.mba .mockups figure{border-radius:12px}.mba .browser-line{height:36px;padding:0 12px}.mba .browser-title{padding:3px 6px;font-size:10px}}

/* Speakers travel together at their natural proportions, with a varied vertical rhythm. */
.persons-ribbon{--ribbon-height:clamp(240px,32vw,460px)}
.persons-ribbon .og-set{align-items:flex-end}
.persons-ribbon .og-set figure{height:var(--ribbon-height);width:auto;flex:none}
.persons-ribbon .speaker-card{aspect-ratio:16/9}
.persons-ribbon .speaker-person{aspect-ratio:1}
.persons-ribbon .og-set img,.persons-ribbon .case-video,.persons-ribbon video{width:100%;height:100%;object-fit:contain;aspect-ratio:auto}
@media(max-width:800px){.persons-ribbon{--ribbon-height:clamp(240px,70vw,360px)}}
.mba .story-row.half-film{width:calc(50% - 6px);max-width:980px;align-self:center;margin:24px 0}
@media(max-width:800px){.mba .story-row.half-film{width:100%;max-width:490px;margin:12px 0}}
/* Drug: a warm identity, digital product and physical objects. */
.drug .hero figure{background:#3f2021}
.drug .hero img{max-height:660px;object-fit:contain}
.drug .drug-character{align-items:center;background:transparent}
.drug .drug-character figure{border-radius:12px;overflow:hidden}
.drug .drug-character figure:first-child{width:100%;max-width:600px;justify-self:center}
.drug .drug-feature{width:calc(50% - 6px);align-self:center}
.story-row.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.drug-portraits figure{background:#f3f2f0}
@media(max-width:800px){.drug .hero img{max-height:none}.drug .drug-feature{width:100%}.story-row.three{grid-template-columns:1fr}.drug .drug-character{background:transparent}}

/* Preserve the original square GIF instead of the staggered cover crop. */
#youre-good.project img{aspect-ratio:auto;width:100%;height:auto;max-height:none;object-fit:contain}

/* Compact mobile project index, anchored to the bottom of the menu. */
@media(max-width:800px){
 #navigation .dialog-header>a:focus{outline:none}
 #navigation .dialog-scroll{display:flex;flex-direction:column;padding:12px 12px calc(72px + env(safe-area-inset-bottom));}
 #navigation .menu-tabs{flex:none;margin-bottom:24px}
 #navigation .mobile-projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(12,auto);grid-auto-flow:column;gap:16px 12px;align-items:start;margin-top:auto;padding:0;flex:none}
 #navigation .mobile-projects a{display:block;min-height:0;padding:0;margin:0;break-inside:avoid;font-size:14px;line-height:1.2;overflow-wrap:normal;text-wrap:pretty}
}

@media(max-width:800px){
 .contacts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px;align-items:start}
 .contacts h2{grid-column:1/-1}
 .contacts p{min-width:0;margin:0}
 .contacts a{overflow-wrap:anywhere}
}

/* SYNO retains the supplied cover ratio and keeps phone screens in pairs. */
#syno.project img {
  aspect-ratio: auto;
  height: auto;
  max-height: none;
  object-fit: contain;
}
.syno .story-intro { grid-template-columns: 1fr 2fr; }
.syno .syno-credits {
  max-width: 42ch;
  align-self: start;
}
.syno-credits p + p { margin-top: 12px; }
.syno-credits a, .syno-editorial a { text-decoration: underline; text-underline-offset: 3px; }
.syno .interface figure { border-radius: 12px; }
.syno .syno-phones {
  width: 100%;
  grid-template-columns: repeat(2, minmax(0, 280px));
  justify-content: center;
  gap: clamp(12px, 3vw, 36px);
  padding: clamp(24px, 5vw, 72px);
  border-radius: 12px;
  background: #f3f3f1;
}
.syno .syno-phones figure { background: transparent; }
.syno .syno-editorial figure { overflow: visible; }
.syno-page-capture {
  max-height: min(76svh, 840px);
  overflow: hidden;
  border-radius: 6px;
  background: #e2e2e0;
}
.syno-editorial figcaption { padding-block: 12px; }
@media (max-width: 800px) {
  .syno .story-intro { grid-template-columns: 1fr; }
  .syno .syno-phones,
  .syno .interface figure { border-radius: 6px; }
}
