/* Portfolio content additions. Receipt type, printed paper and ink jitter retained. */
.sr-name { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }
.number-col { width:38px; flex-shrink:0; }
.role-col { width:132px; flex-shrink:0; padding-left:8px; }
#work .role-col,#experiments .role-col { width:auto; white-space:nowrap; }
.year-col { width:100px; flex-shrink:0; padding-left:8px; white-space:nowrap; }
.project-row { align-items:start; }
.project-label { min-width:0; }
.identity-roles { align-items:center; grid-template-columns:1fr auto 1fr; }
@media(min-width:551px) { .identity-roles>div:not(:nth-child(2)) { white-space:nowrap; } }
@media(max-width:550px) { .identity-roles>div:not(:nth-child(2)) { font-size:min(22px,4.9vw); } }
.identity-icon { display:flex; justify-content:center; align-items:center; }
.identity-icon img { width:30px; height:38px; }
.experience-entry { margin-bottom:14px; }
.experience-role { padding-left:38px; margin-top:4px; line-height:20px; }
.receipt-copy { line-height:23px; margin-bottom:18px; }
.receipt-thanks { line-height:20px; }
:focus-visible { outline:2px solid currentColor; outline-offset:4px; }
#receipt > .bg-white { padding-top:32px; }
.project-receipt { max-width:900px; }
/* Case pages arrive through the dither transition, so they skip the home page's print-in reveal. */
#receipt.project-receipt { opacity:1; transform:none; transition:none; }
.project-receipt .bg-white>[style] { max-width:340px !important; margin-inline:auto; margin-bottom:16px; }
.project-receipt.has-client-logo .bg-white>[style] { max-width:425px !important; }
.project-receipt .p-5 { padding:24px 32px 32px; }
.project-receipt .identity-roles,.project-receipt header { max-width:460px; margin-inline:auto; }
.case-identity .identity-roles { font-size:20px; line-height:18px; margin-bottom:16px; }
.case-identity .identity-roles>div:nth-child(2) { font-size:32px; }
.case-context { text-align:center; font-size:18px; line-height:18px; margin-bottom:18px; }
.back-link { display:block; min-height:44px; margin-bottom:22px; padding-block:12px; }
.case-title { font-size:36px; line-height:32px; margin-bottom:12px; }
.case-meta { line-height:22px; margin-bottom:18px; }
.case-lead { font-size:27px; line-height:25px; margin-bottom:28px; }
.case-hero { margin:0; }
.case-cubed .case-hero { margin-bottom:32px; }
.cubed-film { display:block; width:100%; aspect-ratio:16/9; border:0; background:#000; }
.artwork-link { display:block; cursor:zoom-in; }
.artwork-link img { display:block; width:100%; height:auto; }
.case-hero img { max-height:690px; object-fit:contain; }
.case-hero figcaption,.case-gallery figcaption { margin-top:12px; line-height:20px; }
.project-receipt .receipt-copy { font-size:25px; line-height:26px; max-width:65ch; }
.case-gallery { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; margin:40px 0; }
.case-gallery figure { margin:0; }
.cubed-thumbnail { position:relative; display:block; aspect-ratio:1; overflow:hidden; }
.cubed-gallery img { width:100%; height:100%; object-fit:cover; }
.cubed-mosaic { position:absolute; inset:0; width:100%; height:100%; visibility:hidden; pointer-events:none; }
.mosaic-changing .cubed-mosaic { visibility:visible; }
.moment-gallery .artwork-link { position:relative; aspect-ratio:1; overflow:hidden; }
.moment-gallery img { width:100%; height:100%; object-fit:cover; }
.moment-mosaic { position:absolute; inset:0; width:100%; height:100%; visibility:hidden; pointer-events:none; }
.mosaic-changing .moment-mosaic { visibility:visible; }
.case-intro{margin:12px 0 28px}.project-receipt .case-title{font-size:42px;line-height:38px}.project-receipt .case-meta{font-size:20px;line-height:22px}.case-intro .case-lead{max-width:28ch;font-size:30px;line-height:29px;margin-bottom:0}
.case-bottles .case-intro,.case-cubed .case-intro,.case-moment .case-intro,.case-poster .case-intro,.case-world .case-intro { max-width:none; margin-inline:0; }
.case-bottles .case-intro .case-lead,.case-cubed .case-intro .case-lead,.case-moment .case-intro .case-lead,.case-poster .case-intro .case-lead,.case-world .case-intro .case-lead { margin-left:auto; text-align:right; }
.case-navigation{display:flex;justify-content:space-between;gap:24px;border-top:2px dashed #000;padding-top:14px;margin:40px 0 32px}.case-navigation a{max-width:60%;line-height:24px;min-height:44px}
.bottle-index{display:flex;justify-content:space-between;border-block:2px dashed #000;padding-block:14px;margin-bottom:36px;gap:18px}.bottle-index a{display:flex;flex-direction:column;gap:4px}.bottle-index a:hover{text-decoration:underline}.bottle-story{display:grid;grid-template-columns:1.1fr 1fr;gap:32px;align-items:center;margin:36px 0 56px;scroll-margin-top:20px}.bottle-story figure{margin:0}.bottle-story h2{font-size:32px;line-height:30px;margin:12px 0 18px}.reverse-story figure{order:2}.chapter-number{font-size:58px;line-height:52px}.bottle-story figcaption{margin-top:12px;line-height:20px}
.poster-art{margin:32px -12px 40px}.poster-art figcaption{margin-top:12px}.poster-copy{display:grid;grid-template-columns:1fr 1fr;gap:36px}.destination-note{font-size:34px;line-height:32px;text-align:center;border-block:2px dashed #000;padding:32px 0;margin:12px 0 32px}
.world-opener{display:grid;grid-template-columns:1.05fr 1fr;gap:30px;margin-bottom:30px}.world-opener figure,.world-assets figure{margin:0}.world-opener figcaption,.world-assets figcaption{margin-top:12px;line-height:22px}.world-assets{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:32px 0}.brand-wall{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.brand-wall figure{background:#111;color:#fff;margin:0;padding:22px 14px 12px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;min-height:160px}.brand-wall img{width:100%;height:80px;object-fit:contain}.brand-wall figcaption{font-size:18px;line-height:20px;margin-top:16px;text-align:center}
.case-research{max-width:720px}.case-research .bg-white>[style],.case-network .bg-white>[style]{max-width:280px!important}.research-flow{list-style:none;margin:36px 0 0;padding:0}.research-flow li{border-top:2px dashed #000;padding:26px 0 16px;margin-left:32px}.research-flow li:nth-child(2){margin-left:64px}.research-flow li:nth-child(3){margin-left:96px}.research-step{line-height:24px;margin-bottom:18px}.research-flow h2{font-size:36px;line-height:32px;margin-bottom:18px}.concept-note{font-size:18px;line-height:20px;margin:18px 0 30px}.network-study{margin:30px 0;border-block:2px dashed #000;padding-block:18px}.network-controls{display:flex;gap:18px;justify-content:space-between}.network-controls button{border:0;background:transparent;font:inherit;text-transform:inherit;min-height:44px;padding:4px 12px;cursor:pointer}.network-controls button[aria-pressed=true]{background:#000;color:#fff}.kol-network{display:block;width:100%;height:auto}.kol-network text{font-family:'PP Neue Bit',monospace;font-size:23px;text-transform:uppercase}.kol-network line{opacity:.16}.kol-network[data-active-project='1'] [data-connection='1'],.kol-network[data-active-project='2'] [data-connection='2'],.kol-network[data-active-project='3'] [data-connection='3']{opacity:1}.network-study figcaption{font-size:18px;line-height:20px}.lab-question{font-size:44px;line-height:40px;text-align:center;margin:40px 0}
.brand-wall img{filter:brightness(0) invert(1)}
.planet-hero .artwork-link { aspect-ratio:1; overflow:hidden; }
.planet-hero img { width:100%; height:100%; object-fit:cover; transform:scale(1.25); }
.brand-wall .brand-tile { overflow:hidden; justify-content:center; padding:22px 14px; transition:background-color .35s ease; }
.brand-wall .brand-tile.is-color { background-color:var(--brand-bg); }
.brand-logo-stage { position:relative; width:100%; height:80px; }
.brand-logo-layer { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; }
.brand-color { opacity:0; }
.brand-wall .brand-color img { filter:none; }
.brand-tile.is-color .brand-mono { opacity:0; }
.brand-tile.is-color .brand-color { opacity:1; }
.brand-tile.is-glitching .brand-mono { animation:p1-glitch-out .45s steps(1) forwards; }
.brand-tile.is-glitching .brand-color { animation:p1-glitch-in .45s steps(1) forwards; }
.brand-tile.is-returning .brand-color { animation:p1-glitch-icon-out .45s steps(1) forwards; }
.brand-tile.is-returning .brand-mono { animation:p1-glitch-logo-in .45s steps(1) forwards; }
.world-assets video { display:block; width:100%; aspect-ratio:4/5; object-fit:contain; background:#111; }
.case-world #identities { margin-bottom:16px; }
.case-world .world-assets { gap:16px; margin-top:16px; }
.metashare-films{display:grid;grid-template-columns:1fr 1fr;gap:22px}.metashare-films figure{margin:0}.metashare-films video{display:block;width:100%;aspect-ratio:1;background:#111;object-fit:contain}.metashare-films figcaption{margin-top:12px;line-height:22px}
@media(max-width:650px){.kol-network text{font-size:32px}.metashare-films{grid-template-columns:1fr}}
@media(max-width:650px){.bottle-story,.world-opener,.poster-copy{grid-template-columns:1fr;gap:20px}.reverse-story figure{order:0}.bottle-story{margin-bottom:38px}.bottle-index{font-size:19px;line-height:20px;gap:12px}.brand-wall{grid-template-columns:repeat(2,minmax(0,1fr))}.world-assets{grid-template-columns:1fr}.case-navigation{gap:16px}.case-navigation a{font-size:20px;line-height:22px}.project-receipt .case-title{font-size:34px;line-height:32px}.case-intro .case-lead{font-size:27px;line-height:26px}.destination-note{font-size:28px;line-height:26px}.research-flow li,.research-flow li:nth-child(2),.research-flow li:nth-child(3){margin-left:0}.research-flow h2{font-size:30px;line-height:28px}.network-controls{gap:4px}.network-controls button{font-size:18px;padding:4px 6px}.kol-network text{font-size:23px}.lab-question{font-size:34px;line-height:32px}}
#artwork-viewer { border:0; background:#fff; color:#000; padding:20px; width:min(1200px,calc(100% - 32px)); max-height:94svh; margin:auto; font-family:'PP Neue Bit',monospace; font-size:24px; line-height:22px; text-transform:uppercase; }
#artwork-viewer::backdrop { background:rgba(0,0,0,.9); }
#viewer-image { display:block; width:100%; height:73svh; object-fit:contain; margin:16px 0; }
#artwork-viewer[data-image-only] { width:100vw; height:100vh; max-width:none; max-height:none; margin:0; padding:0; background:transparent; }
#artwork-viewer[data-image-only][open] { display:grid; place-items:center; }
#artwork-viewer[data-image-only] #viewer-image { width:auto; height:auto; max-width:calc(100vw - 96px); max-height:calc(100vh - 80px); margin:0; }
.viewer-controls { display:flex; justify-content:space-between; align-items:center; gap:20px; }
.viewer-controls button { min-height:44px; padding:10px 0; cursor:pointer; color:inherit; background:none; border:0; font:inherit; text-transform:inherit; }
.viewer-controls button:hover { text-decoration:underline; }
@media(max-width:550px) { .number-col { width:28px; } .role-col { width:112px; } .year-col { width:96px; } .experience-role { padding-left:28px; } .identity-roles { gap:8px; } .identity-roles>div { min-width:0; overflow-wrap:normal; } .identity-roles>div:nth-child(2) { font-size:38px; } .project-receipt .p-5 { padding:20px; } .case-title { font-size:32px; line-height:30px; } .case-lead { font-size:25px; } .project-receipt .receipt-copy { font-size:23px; line-height:24px; } .case-gallery { grid-template-columns:1fr; gap:28px; margin-block:28px; } .viewer-controls { gap:12px; } }


/* Original portfolio logo glitch keyframes. */
    @keyframes p1-glitch-out {
      0%   { transform: none; opacity: 1; }
      10%  { transform: translateX(-9px) skewX(-4deg); filter: brightness(2.5); }
      20%  { clip-path: inset(25% 0 45% 0); transform: translateX(7px); }
      30%  { clip-path: inset(70% 0 8% 0); transform: translateX(-5px) skewX(3deg); filter: brightness(3.5); }
      40%  { clip-path: inset(0 0 85% 0); transform: translateX(12px); }
      48%  { clip-path: none; transform: translateX(-2px); opacity: 0.3; filter: none; }
      50%  { opacity: 0; clip-path: none; transform: none; }
      100% { opacity: 0; }
    }
    @keyframes p1-glitch-in {
      0%, 44% { opacity: 0; clip-path: inset(0 0 100% 0); }
      50%  { clip-path: inset(65% 0 0 0); transform: translateX(8px); opacity: 0.5; filter: brightness(2.5); }
      62%  { clip-path: inset(10% 0 55% 0); transform: translateX(-6px); filter: brightness(1.5); }
      74%  { clip-path: inset(40% 0 20% 0); transform: translateX(4px); }
      86%  { clip-path: none; transform: translateX(-2px); opacity: 0.85; filter: none; }
      100% { opacity: 1; clip-path: none; transform: none; }
    }
    @keyframes p1-glitch-icon-out {
      0%   { transform: none; opacity: 1; }
      12%  { transform: translateX(8px) skewX(3deg); filter: brightness(3); }
      24%  { clip-path: inset(55% 0 15% 0); transform: translateX(-10px); }
      36%  { clip-path: inset(5% 0 75% 0); transform: translateX(6px) skewX(-2deg); filter: brightness(3.5); }
      48%  { clip-path: none; transform: translateX(-3px); opacity: 0.3; filter: none; }
      50%  { opacity: 0; clip-path: none; transform: none; }
      100% { opacity: 0; }
    }
    @keyframes p1-glitch-logo-in {
      0%, 44% { opacity: 0; clip-path: inset(100% 0 0 0); }
      52%  { clip-path: inset(20% 0 65% 0); transform: translateX(-7px); opacity: 0.6; filter: brightness(2.5); }
      64%  { clip-path: inset(75% 0 5% 0); transform: translateX(5px); filter: brightness(1.8); }
      76%  { clip-path: inset(35% 0 35% 0); transform: translateX(-3px); }
      88%  { clip-path: none; transform: translateX(2px); opacity: 0.9; filter: none; }
      100% { opacity: 1; clip-path: none; transform: none; }
    }

