/* fonts.css */
/* latin-ext */
@font-face {
  font-family: 'DM Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/53a90e281b5dcb1b.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'DM Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/cd6ed524815ea4ca.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'DM Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(fonts/712e6990c0fa77c7.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'DM Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(fonts/3b1fc03727047d17.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/4671269ff78476ae.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/9eb71af0efac4985.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(fonts/4671269ff78476ae.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(fonts/9eb71af0efac4985.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/4671269ff78476ae.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/9eb71af0efac4985.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(fonts/4671269ff78476ae.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(fonts/9eb71af0efac4985.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic */
@font-face {
  font-family: 'Playfair Display';
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/0dbccc38f1b76c53.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Playfair Display';
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/c1a7777e4a7cb1c8.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Playfair Display';
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/61eb9089f03f8a29.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Playfair Display';
  font-style: italic;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/6ecca7897e5d7a7b.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/2dc1871151c57409.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/6a8efa5808ca5e37.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/0d765915e5dd3514.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/adf7264998fb8dfb.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(fonts/2dc1871151c57409.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(fonts/6a8efa5808ca5e37.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(fonts/0d765915e5dd3514.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(fonts/adf7264998fb8dfb.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* shared.css */
/* Shared visual language for the entire portfolio */
/* Balance display lines and discourage isolated final words in reading text. */
h1,h2,h3,h4,h5,h6,blockquote {
  text-wrap:balance;
}
p,li,dd,figcaption {
  text-wrap:pretty;
  orphans:3;
  widows:3;
}
@media print {
  h1,h2,h3,h4,h5,h6 { break-after:avoid; }
  figure,.project-role-card,.properly-card { break-inside:avoid; }
}
.brand{transition:opacity .25s ease,transform .25s ease}.brand:hover{opacity:.68;transform:translateY(-2px)}
.clean-wordmark{font-family:"DM Sans",sans-serif!important;font-size:30px!important;font-weight:700!important;letter-spacing:-2.8px!important;line-height:1!important}
.back,.next-project a,.about-contact a,.trailer-link{transition:opacity .25s ease,transform .25s ease}.back:hover,.next-project a:hover,.about-contact a:hover,.trailer-link:hover{opacity:.68;transform:translateX(6px)}
.project-arrow{transition:transform .3s ease}.project:hover .project-arrow{transform:translate(5px,-5px)}
.case-cover,.atone-hero,.case-image{transition:filter .4s ease}.case-cover:hover,.atone-hero:hover,.case-image:hover{filter:saturate(1.08) contrast(1.03)}
footer p{font:12px "DM Mono",monospace}footer a{transition:opacity .25s ease,transform .25s ease}footer a:hover{opacity:.7}footer a:not(.brand):hover{transform:translateY(-3px)}
@media(max-width:700px){.back:hover,.next-project a:hover,.about-contact a:hover,.trailer-link:hover{transform:none}.case-cover:hover,.atone-hero:hover,.case-image:hover{filter:none}}

/* styles.css */
body { font-kerning: normal; font-feature-settings: "kern" 1; }
:root{--ink:#17211f;--paper:#f3f0e8;--acid:#c7f550;--coral:#ff704a;--line:rgba(23,33,31,.22)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"DM Sans",sans-serif}.grain{position:fixed;inset:0;pointer-events:none;opacity:.06;z-index:4;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.4'/%3E%3C/svg%3E")}.nav{height:86px;display:flex;align-items:center;justify-content:space-between;padding:0 4.2vw;border-bottom:1px solid var(--line);position:relative;z-index:5}.brand{font:bold 28px/1 "DM Sans";letter-spacing:-2px;color:var(--ink);text-decoration:none}.brand span{font:12px "DM Mono";vertical-align:top;letter-spacing:0}.nav nav{display:flex;gap:30px;margin-left:120px}.nav a,footer a{color:inherit;text-decoration:none;font-size:14px}.availability{font:12px "DM Mono"!important;display:flex;gap:8px;align-items:center}.availability i{width:8px;height:8px;border-radius:50%;background:#6ca422;display:block;box-shadow:0 0 0 4px rgba(108,164,34,.13)}.section,.hero,.quote{padding-left:4.2vw;padding-right:4.2vw}.hero{min-height:calc(100vh - 86px);padding-top:clamp(55px,10vw,145px);display:flex;flex-direction:column}.eyebrow,.count,.art-label,.attribution{font:12px "DM Mono";letter-spacing:.02em}.hero-title{display:flex;justify-content:space-between;align-items:flex-end;margin-top:32px}.hero h1{font-size:clamp(53px,8.7vw,138px);line-height:.91;letter-spacing:-.0750em;margin:0;max-width:1000px;font-weight:600}.hero em,.about em,.quote em,.contact em{font-family:"Playfair Display",serif;font-weight:600;letter-spacing:-.08em}.orb-wrap{width:156px;text-align:center;font:10px "DM Mono";letter-spacing:.04em;margin:0 6vw 0 10px}.orb{width:124px;height:124px;margin:auto auto 12px;border-radius:50%;background:radial-gradient(circle at 30% 30%,#f8ffb2 0 7%,var(--acid) 27%,#6d9b2c 50%,#1c3927 74%);box-shadow:inset -18px -16px 30px rgba(0,0,0,.25);animation:float 5s ease-in-out infinite}.hero-bottom{display:flex;justify-content:space-between;align-items:end;margin-top:auto;padding:90px 0 40px}.hero-bottom p{max-width:330px;font-size:16px;line-height:1.4;margin:0}.circle-link{height:58px;width:58px;border:1px solid var(--ink);border-radius:50%;display:grid;place-items:center;color:var(--ink);text-decoration:none;font-size:24px;transition:.25s}.circle-link:hover{background:var(--ink);color:var(--paper);transform:translateY(4px)}.work{padding-top:95px}.section-heading{border-top:1px solid var(--ink);padding-top:16px;display:flex;justify-content:space-between}.section-heading p{margin:0}.project{position:relative;display:block;text-decoration:none;color:var(--ink);padding:65px 0 35px;border-bottom:1px solid var(--line)}.project-art{height:clamp(280px,37vw,540px);overflow:hidden;position:relative}.art-label{position:absolute;top:18px;left:20px;z-index:1}.project-meta{display:grid;grid-template-columns:1.1fr 1fr 1fr;align-items:center;padding-top:18px}.project-meta h2,.project-meta p{font-size:20px;margin:0;letter-spacing:-.04em}.project-meta p{font-size:15px;letter-spacing:-.02em}.project-meta span{font:11px "DM Mono"}.project-arrow{position:absolute;right:4px;bottom:37px;font-size:26px}.project-coda .project-art{background:#a4b9d5}.phone{width:32%;min-width:190px;height:76%;border:7px solid #182325;border-radius:29px;background:#f7f5ec;position:absolute;bottom:-3%;left:34%;box-shadow:16px 20px 24px rgba(24,35,37,.25);overflow:hidden;transform:rotate(-6deg)}.phone-notch{background:#182325;width:45%;height:19px;border-radius:0 0 13px 13px;margin:auto}.health-ui{padding:14% 9%;font-size:clamp(10px,1.2vw,17px)}.health-ring{border:clamp(10px,1.7vw,20px) solid var(--coral);width:58%;aspect-ratio:1;border-radius:50%;margin:14% auto;display:grid;place-content:center;text-align:center;font-size:clamp(18px,3vw,43px)}.health-ring span{font:8px "DM Mono"}.health-ui small{font:9px "DM Mono"}.orange-disc{width:33%;aspect-ratio:1;border-radius:50%;background:var(--coral);position:absolute;right:16%;top:11%}.project-loom .project-art{background:#e9e4d6}.loom-window{position:absolute;width:58%;height:72%;left:20%;top:15%;background:#fcfaf5;border:1px solid #c9c5ba;box-shadow:18px 23px 0 #293539;padding:5%}.window-top{height:25px;border-bottom:1px solid #ddd8ca;display:flex;gap:5px;align-items:center}.window-top i{height:6px;width:6px;border-radius:50%;background:#b5b2aa}.window-top b{font:10px "DM Mono";margin-left:8px}.chart-bars{position:absolute;bottom:12%;left:10%;right:10%;height:45%;display:flex;gap:7%;align-items:end}.chart-bars i{width:9%;background:#b7dc56;height:var(--h)}.chart-bars i:nth-child(1){height:28%}.chart-bars i:nth-child(2){height:45%}.chart-bars i:nth-child(3){height:34%}.chart-bars i:nth-child(4){height:70%}.chart-bars i:nth-child(5){height:55%}.chart-bars i:nth-child(6){height:82%}.chart-bars i:nth-child(7){height:92%;background:#ec7959}.chart-line{position:absolute;width:69%;top:49%;left:13%;border-top:3px solid #243438;transform:rotate(-13deg)}.loom-sticker{position:absolute;right:13%;top:18%;background:var(--coral);padding:17px;border-radius:50%;font:15px "DM Mono";transform:rotate(13deg)}.project-oda .project-art{background:#e7d8ff}.oda-shape{position:absolute;background:#5641ca;border-radius:50%}.oda-shape.one{width:48%;aspect-ratio:1;right:-4%;top:-25%}.oda-shape.two{width:27%;aspect-ratio:1;left:19%;bottom:-21%;background:#ff8d4f}.oda-word{position:absolute;left:20%;top:25%;font-size:clamp(75px,14vw,220px);letter-spacing:-.12em;font-weight:700;color:#1f2851}.oda-word span{color:#ff8d4f}.oda-card{position:absolute;right:18%;bottom:15%;background:#f9f5eb;padding:24px;font-size:clamp(13px,1.8vw,25px);line-height:1.05;transform:rotate(-8deg);box-shadow:9px 10px 0 #1f2851}.about{padding-top:145px}.about> .eyebrow{border-top:1px solid var(--ink);padding-top:16px;margin:0}.about-content{display:grid;grid-template-columns:1.2fr .8fr;gap:13%;padding:100px 10% 130px 12%}.about h2,.contact h2{font-size:clamp(42px,5.5vw,82px);line-height:.98;letter-spacing:-.070em;margin:0}.about-content div p{font-size:17px;line-height:1.45;margin:0 0 21px}.text-link{display:inline-block;color:var(--ink);font:13px "DM Mono";padding-bottom:6px;border-bottom:1px solid var(--ink);margin-top:18px;text-decoration:none}.text-link span{font-size:20px;margin-left:16px}.marquee{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);white-space:nowrap;overflow:hidden;padding:21px 0;font-size:clamp(24px,3.6vw,53px);letter-spacing:-.0550em}.marquee div{width:max-content;animation:marquee 28s linear infinite}.marquee b{color:#f15e3e;margin:0 16px}.quote{background:#1e302c;color:#f3f0e8;padding-top:105px;padding-bottom:105px}.quote .eyebrow{color:#b7e74d}.quote blockquote{font-size:clamp(35px,5.1vw,76px);line-height:1.05;letter-spacing:-.0650em;max-width:1100px;margin:80px 0 65px}.attribution{margin:0}.contact{background:var(--acid);padding-top:105px;padding-bottom:105px}.contact .eyebrow{margin:0 0 70px}.contact h2{font-size:clamp(64px,10.2vw,158px)}.contact-link{display:inline-flex;gap:15px;align-items:center;color:var(--ink);font-size:clamp(18px,2.5vw,33px);letter-spacing:-.050em;margin-top:52px;text-decoration:none;border-bottom:1px solid var(--ink);padding-bottom:6px}.contact-link span{font-size:30px}footer{background:#1e302c;color:#f3f0e8;padding:32px 4.2vw;display:flex;justify-content:space-between;align-items:center}footer .brand{color:#f3f0e8}footer p,footer a{font:12px "DM Mono"}footer div{display:flex;gap:18px}.toast{position:fixed;z-index:10;bottom:25px;left:50%;background:var(--ink);color:var(--paper);font:12px "DM Mono";padding:13px 18px;border-radius:30px;transform:translate(-50%,100px);opacity:0;transition:.3s}.toast.show{transform:translate(-50%,0);opacity:1}.reveal{animation:reveal .8s both}.hero-title .reveal{animation-delay:.13s}.hero-bottom.reveal{animation-delay:.25s}@keyframes reveal{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}@keyframes float{50%{transform:translateY(-12px) rotate(9deg)}}@keyframes marquee{to{transform:translateX(-50%)}}@media(max-width:700px){.nav{height:70px;padding:0 20px}.nav nav,.availability{display:none}.section,.hero,.quote{padding-left:20px;padding-right:20px}.hero{min-height:calc(100vh - 70px);padding-top:70px}.hero-title{display:block}.orb-wrap{display:none}.hero-bottom{padding:65px 0 26px}.project{padding:42px 0 23px}.project-art{height:68vw}.project-meta{grid-template-columns:1fr auto;gap:8px;padding-right:35px}.project-meta p{grid-row:2;grid-column:1/-1}.project-meta span{display:none}.project-arrow{bottom:24px}.about{padding-top:90px}.about-content{display:block;padding:65px 8% 85px}.about-content h2{margin-bottom:40px}.quote{padding-top:70px;padding-bottom:70px}.quote blockquote{margin:55px 0 45px}.contact{padding-top:70px;padding-bottom:75px}.contact .eyebrow{margin-bottom:48px}footer{padding:25px 20px}footer p{display:none}.phone{left:32%;width:39%}.oda-card{padding:15px}.project-meta h2{font-size:19px}}

/* case-study.css */
.back{position:absolute;left:50%;transform:translateX(-50%);font:12px "DM Mono"!important}.case-hero{padding:68px 4.2vw 0}.case-kicker{font:15px "DM Mono";margin:54px 0 16px}.case-hero h1{font-size:clamp(58px,9.2vw,140px);line-height:.89;letter-spacing:-.08em;margin:0}.case-intro{font-size:clamp(18px,2vw,27px);line-height:1.25;max-width:530px;margin:45px 0 80px}.case-cover{height:min(56vw,720px);min-height:390px;background:#a4b9d5;position:relative;overflow:hidden}.case-disc{width:45%;aspect-ratio:1;position:absolute;background:#ff704a;border-radius:50%;right:12%;top:-16%}.case-phone{height:82%;width:29%;min-width:214px;position:absolute;bottom:-3%;left:35%;background:#f7f5ec;border:8px solid #17211f;border-radius:33px;box-shadow:20px 25px 30px rgba(23,33,31,.26);transform:rotate(-6deg);padding:8% 6%;font-size:clamp(10px,1.35vw,18px)}.case-notch{position:absolute;top:0;left:28%;height:20px;width:44%;background:#17211f;border-radius:0 0 15px 15px}.case-phone p{margin:5% 0 0}.large-ring{width:65%;margin:18% auto;border:clamp(11px,2vw,23px) solid #ff704a;aspect-ratio:1;border-radius:50%;display:grid;place-content:center;text-align:center}.large-ring strong{font-size:clamp(30px,4vw,60px);line-height:.8}.large-ring span,.case-phone small{font:9px "DM Mono";line-height:1.4}.cover-note{position:absolute;right:10%;bottom:13%;font:clamp(20px,3vw,42px)/.94 "Playfair Display";letter-spacing:-.06em}.case-details{padding:100px 13% 120px;display:grid;grid-template-columns:1.1fr .9fr;gap:14%;border-bottom:1px solid var(--ink)}.case-details>div>p:last-child{font-size:clamp(21px,2.4vw,34px);line-height:1.18;letter-spacing:-.050em;margin:30px 0 0}.case-details dl{margin:0}.case-details dl div{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:12px 0;font-size:14px}.case-details dt{font:12px "DM Mono"}.case-details dd{margin:0;text-align:right}.case-section{padding:110px 12%;border-bottom:1px solid var(--line)}.prose{max-width:760px;margin:65px auto 0}.prose h2{font-size:clamp(41px,5.5vw,76px);line-height:.98;letter-spacing:-.0750em;margin:0 0 35px}.prose h2 em{font-family:"Playfair Display";font-weight:600}.prose>p{font-size:18px;line-height:1.45;max-width:510px;margin:0}.stat-row,.outcome-row{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:90px}.stat-row div,.outcome-row div{background:var(--paper);padding:27px}.stat-row strong,.outcome-row strong{display:block;font-size:clamp(35px,5vw,72px);letter-spacing:-.08em}.stat-row span,.outcome-row span{display:block;font:11px/1.3 "DM Mono";margin-top:12px;max-width:135px}.insight{background:#e7d8ff}.quote-card{background:#1f2851;color:#fff;padding:clamp(35px,6vw,90px);max-width:760px;margin:90px auto 0}.quote-card span{font:70px/0 "Playfair Display";color:#ff8d4f}.quote-card p{font-size:clamp(24px,3vw,42px);line-height:1.08;letter-spacing:-.050em;max-width:600px}.quote-card small{font:11px "DM Mono";color:#c7f550}.system{background:#e9e4d6}.system-screen{height:min(50vw,630px);margin-top:80px;background:#17211f;color:#f7f5ec;display:grid;grid-template-columns:.8fr 1.2fr;padding:7%}.screen-side{border-right:1px solid #4b5954;font-size:16px}.screen-side p{margin:0 0 10px;color:#b7e74d;font:11px "DM Mono"}.screen-side b{font-size:clamp(18px,2vw,29px);letter-spacing:-.050em}.mini-score{margin:20% 0}.mini-score strong{font-size:clamp(58px,9vw,120px);letter-spacing:-.10em;display:block;line-height:.75}.mini-score span,.screen-side small{font:11px "DM Mono";color:#b8c2be}.screen-main{display:flex;align-items:center;justify-content:space-evenly}.screen-ring{height:clamp(145px,22vw,300px);width:clamp(145px,22vw,300px);border:clamp(13px,2vw,28px) solid #b7e74d;border-radius:50%;display:grid;place-content:center;text-align:center}.screen-ring strong{font-size:clamp(44px,7vw,95px);letter-spacing:-.10em;line-height:.8}.screen-ring span{font:11px "DM Mono"}.score-bars{width:30%;font:11px "DM Mono"}.score-bars p{margin:18px 0}.score-bars i{height:5px;width:100%;background:#4b5954;display:inline-block}.score-bars b{display:block;background:#b7e74d;height:100%;width:80%}.score-bars p:nth-child(2) b{width:62%}.score-bars p:nth-child(3) b{width:69%}.outcome{background:#c7f550}.next-project{background:#1e302c;color:#f3f0e8;padding:90px 4.2vw}.next-project p{color:#b7e74d;margin:0 0 35px}.next-project a{font-size:clamp(50px,8vw,120px);letter-spacing:-.08em;text-decoration:none;color:inherit}.next-project a span{font-size:.55em;margin-left:20px}@media(max-width:700px){.case-nav .availability{display:none}.case-hero{padding:45px 20px 0}.case-kicker{margin-top:38px}.case-intro{margin:35px 0 55px}.case-cover{margin:0 -20px;height:105vw}.case-phone{width:48%;left:24%;min-width:0}.cover-note{right:6%;bottom:15%;font-size:23px}.case-details{padding:65px 28px;display:block}.case-details dl{margin-top:55px}.case-section{padding:70px 20px}.prose{margin-top:48px}.prose>p{font-size:16px}.stat-row,.outcome-row{grid-template-columns:1fr;margin-top:55px}.quote-card{margin-top:55px}.system-screen{margin-top:55px;height:auto;display:block;padding:28px}.screen-side{border:0;border-bottom:1px solid #4b5954;padding-bottom:24px}.mini-score{margin:24px 0}.screen-main{padding:30px 0 5px}.score-bars{width:32%}.next-project{padding:65px 20px}.back{font-size:11px!important}.case-nav{position:relative}}

/* site-chrome.css */
/* Consistent header and footer across every page. */
/* Match the footer beneath iOS safe areas and rubber-band scrolling. */
html { --page-canvas:#f3f0e8; background:var(--page-canvas); }
body { min-height:100svh; background:var(--page-canvas); }
/* Keep paper on the content, not on the canvas Safari exposes below it. */
body > main, body > header.nav { background:var(--paper,#f3f0e8); }
footer.site-footer { padding-bottom:calc(28px + env(safe-area-inset-bottom, 0px)); }
/* Do not let the fixed grain tint the footer differently from its canvas. */
footer.site-footer, .next-project { position:relative; z-index:5; background:#1e302c; }
.ui-arrow { width:1em; height:1em; display:inline-block; vertical-align:-.1em; overflow:visible; }
.project-art-full-banner > img { display:block; width:100%; height:100%; object-fit:cover; }
.animation-media { display:block; }
.loop-video { display:block; width:100%; height:auto; object-fit:contain; }
html body .next-project > a:not(.return-work) {
  display:inline-flex;
  align-items:baseline;
  gap:clamp(16px,2vw,32px);
  font-kerning:normal;
  letter-spacing:-.035em;
  line-height:1.15;
}
html body .next-project > a:not(.return-work) span {
  margin-left:0;
  letter-spacing:0;
  flex-shrink:0;
}
html body .process blockquote {
  font-family:"DM Sans",sans-serif;
  font-weight:400;
  font-style:normal;
  font-kerning:normal;
  letter-spacing:-.02em;
}
html body .marquee {
  font-kerning:normal;
  letter-spacing:-.02em;
}
html body .marquee b { letter-spacing:0; }
html body .process blockquote em {
  font-family:inherit;
  font-weight:inherit;
  font-style:normal;
  letter-spacing:inherit;
}
/* Unified page-title typography; existing sizes and colours are preserved. */
html body .case-hero h1,
html body .about-hero h1,
html body .hero h1,
html body .about-content h2,
html body .contact-heading h2 {
  font-family:"DM Sans",sans-serif;
  font-weight:700;
  font-style:normal;
  font-kerning:normal;
  letter-spacing:-.035em;
}
html body .case-hero h1 em,
html body .about-hero h1 em,
html body .hero h1 em,
html body .about-content h2 em,
html body .contact-heading h2 em {
  font-family:inherit;
  font-weight:inherit;
  font-style:normal;
  letter-spacing:inherit;
}
img { transition:opacity .45s ease; }
img.image-loading { opacity:0; }
@media(prefers-reduced-motion:reduce) { img { transition:none; } }
.meta-pills,
.case-hero .case-kicker.meta-pills > .heading-reveal-mask > .heading-reveal-text {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  column-gap:16px;
  row-gap:12px;
}
.meta-pills .meta-pill {
  display:inline-flex;
  align-items:center;
  width:max-content;
  max-width:100%;
  min-height:28px;
  padding:6px 12px;
  border:0;
  border-radius:0;
  background:var(--coral);
  color:var(--ink);
  font:400 10px/1.2 "DM Mono",monospace;
  letter-spacing:.01em;
}
.case-hero .case-kicker.meta-pills { margin-bottom:16px; }
.case-hero .case-kicker.meta-pills > .heading-reveal-mask { width:100%; }
.project-meta > .project-pills {
  grid-column:3;
  min-width:0;
  justify-self:end;
  justify-content:flex-end;
  padding-right:58px;
}
.project-meta .project-pills .meta-pill { display:inline-flex; }
@media(max-width:900px) {
  .case-hero .case-kicker.meta-pills,
  .case-hero .case-kicker.meta-pills > .heading-reveal-mask > .heading-reveal-text {
    flex-direction:row;
    align-items:center;
    gap:6px;
  }
}
@media(max-width:700px) {
  .project-meta > .project-pills {
    grid-column:1 / -1;
    grid-row:3;
    justify-self:start;
    flex-direction:row;
    align-items:center;
    gap:6px;
    padding-right:0;
  }
  .meta-pills .meta-pill { font-size:9px; padding:6px 8px; white-space:nowrap; }
}
header.nav .header-meta { display:flex; align-items:center; gap:24px; margin-left:auto; font:12px/1.4 "DM Mono",monospace; white-space:nowrap; }
header.nav .header-social, .case-details .project-website-link { display:inline-flex; align-items:center; min-height:44px; color:inherit; font:12px/1.4 "DM Mono",monospace; text-decoration:underline; text-underline-offset:5px; transition:opacity .2s ease; }
header.nav .header-social:hover, .case-details .project-website-link:hover { opacity:.65; }
@media(max-width:900px) {
  header.nav { flex-wrap:wrap; height:auto; gap:12px 20px; padding-block:16px; }
  header.nav .back { position:static; transform:none; margin-left:auto; }
  header.nav .header-meta { gap:18px; }
}
@media(max-width:500px) {
  header.nav .header-meta { width:100%; justify-content:space-between; margin-left:0; }
}
header.nav a.brand,
footer.site-footer a.brand {
  display: inline-block;
  font: 700 24px/1 "DM Sans", sans-serif !important;
  letter-spacing: -1.6px !important;
  white-space: nowrap;
  text-decoration: none;
}
header.nav a.brand,
footer.site-footer a.brand {
  position:relative;
  transition:transform .25s ease;
}
header.nav a.brand::after,
footer.site-footer a.brand::after {
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:-7px;
  height:2px;
  background:var(--coral,#ff704a);
  transform:scaleX(0);
  transform-origin:right;
  transition:transform .3s cubic-bezier(.22,.8,.24,1);
}
header.nav a.brand:focus-visible,
footer.site-footer a.brand:focus-visible {
  transform:translateY(-2px);
  outline:2px solid var(--coral,#ff704a);
  outline-offset:9px;
}
header.nav a.brand:focus-visible::after,
footer.site-footer a.brand:focus-visible::after {
  transform:scaleX(1);
  transform-origin:left;
}
@media(hover:hover) {
  header.nav a.brand:hover,
  footer.site-footer a.brand:hover { transform:translateY(-2px); }
  header.nav a.brand:hover::after,
  footer.site-footer a.brand:hover::after {
    transform:scaleX(1);
    transform-origin:left;
  }
}
@media(prefers-reduced-motion:reduce) {
  header.nav a.brand, footer.site-footer a.brand,
  header.nav a.brand::after, footer.site-footer a.brand::after { transition:none; }
  header.nav a.brand:hover, footer.site-footer a.brand:hover,
  header.nav a.brand:focus-visible, footer.site-footer a.brand:focus-visible { transform:none; }
}
footer.site-footer {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 48px minmax(0, 1fr);
  align-items: center;
  gap: 16px;
}
.site-footer .brand { justify-self: start; }
.site-footer .footer-top {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border: 1px solid currentColor;
  border-radius: 50%;
  font: 24px/1 "DM Sans", sans-serif;
  text-decoration: none;
  transition: transform .25s ease, background-color .25s ease, color .25s ease;
}
.site-footer .footer-social {
  justify-self: end;
  display: grid;
  align-items: center;
  min-height: 48px;
  font: 13px "DM Mono", monospace;
}
.site-footer .footer-top:hover { background: #f3f0e8; color: #1e302c; transform: translateY(-4px); }
a:focus-visible { outline: 2px solid currentColor; outline-offset: 5px; }
@media (max-width: 700px) {
  header.nav { flex-wrap: wrap; height: auto; min-height: 70px; gap: 12px 20px; padding-top: 16px; padding-bottom: 16px; }
  header.nav .back { position: static; transform: none; margin-left: auto; }
  header.nav .availability { margin-left: auto; }
  footer.site-footer { gap: 6px; padding: 28px 16px calc(28px + env(safe-area-inset-bottom, 0px)); grid-template-columns: minmax(0, 1fr) 44px minmax(0, 1fr); }
  .site-footer .footer-top { width: 44px; height: 44px; }
  .site-footer .footer-social { font-size: 12px; }
}
/* Homepage project navigation fade-out. Project pages appear without a fade-in. */
body.page-leaving {
  opacity: 0;
  transition: opacity 220ms ease-out;
}
@media (prefers-reduced-motion: reduce) {
  body.page-leaving { opacity: 1; transition: none; }
  body:has(.case-hero) main { animation: none; }
  html { scroll-behavior: auto; }
  .site-footer a { transition: none; }
}
.case-details dl div { gap:20px; align-items:baseline; }
.case-details .project-website-link { display:inline; min-height:0; font-size:12px; line-height:1.5; }
.case-details dt { flex-shrink:0; }
.case-details dd { min-width:0; overflow-wrap:break-word; line-height:1.5; }
.project-role { padding-inline:4.2vw; }
.project-role-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; margin-top:60px; }
.project-role-card { border:1px solid var(--line); padding:32px; min-width:0; }
.project-role-card > span { font:11px/1.5 "DM Mono",monospace; letter-spacing:.08em; }
.project-role-card h3 { font-size:clamp(23px,2.5vw,34px); letter-spacing:-.0450em; line-height:1.1; margin:22px 0 16px; }
.project-role-card p { font-size:17px; line-height:1.6; margin:0; max-width:700px; }
@media(max-width:700px) {
 .project-role { padding-inline:20px; }
 .project-role-grid { grid-template-columns:1fr; gap:24px; margin-top:36px; }
 .project-role-card { padding:24px; }
}
/* Shared project-style closing callout, also used on About. */
.next-project { background:#1e302c; color:#f3f0e8; padding:90px 4.2vw; }
.next-project > .eyebrow { color:#b7e74d; margin:0 0 35px; }
.next-project > a { font-size:clamp(50px,8vw,120px); letter-spacing:-.08em; text-decoration:none; color:inherit; }
.next-project > a span { font-size:.55em; margin-left:20px; }
@media(max-width:700px) { .next-project { padding:65px 20px; } }
.case-hero .project-page-hero { width:100%; aspect-ratio:16 / 9; margin:0; overflow:hidden; }
.case-hero .project-page-hero img { display:block; width:100%; height:100%; object-fit:contain; }

/* verbo.css */
.verbo-cover :is(img,.loop-video) { display:block; width:100%; height:auto; }
.design-system-trim { width:100%; overflow:hidden; }
.verbo-section { padding-inline:4.2vw; }
.verbo-gallery { margin-top:60px; display:grid; gap:32px; width:100%; }
.verbo-gallery figure { margin:0; min-width:0; }
.verbo-gallery :is(img,.loop-video) { display:block; width:100%; height:auto; }
.verbo-gallery figcaption { font:13px/1.6 "DM Mono",monospace; margin-top:12px; text-align:left; padding-inline:0; width:100%; justify-self:start; }
.verbo-gallery figcaption span { display:block; opacity:.65; overflow-wrap:anywhere; font-size:11px; }
.verbo-pair,.verbo-cards { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; }
.verbo-device-pair { display:grid; grid-template-columns:minmax(0,3.2fr) minmax(0,1fr); gap:28px; }
.verbo-mobile-pair { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:28px; width:100%; margin:auto; }
/* Share image and caption rows so wrapped labels do not offset the artwork. */
.verbo-pair > figure, .verbo-device-pair > figure, .verbo-mobile-pair > figure {
  display:grid;
  grid-template-rows:subgrid;
  grid-row:span 2;
  row-gap:12px;
}
.verbo-pair > figure > :is(img,.loop-video), .verbo-device-pair > figure > :is(img,.loop-video), .verbo-mobile-pair > figure > :is(img,.loop-video) { align-self:end; }
.verbo-pair > figure > :is(img,.loop-video) { aspect-ratio:3 / 2; object-fit:contain; }
.verbo-device-pair > figure:first-child > :is(img,.loop-video) { aspect-ratio:8 / 5; object-fit:contain; }
.verbo-device-pair > figure:last-child > :is(img,.loop-video) { aspect-ratio:21 / 40; object-fit:contain; }
.verbo-mobile-pair > figure > :is(img,.loop-video),
.verbo-mobile-pair > figure > :is(picture,.animation-media) { aspect-ratio:5 / 9; width:100%; height:auto; object-fit:contain; align-self:end; }
.verbo-mobile-pair > figure > :is(picture,.animation-media) > :is(img,.loop-video) { aspect-ratio:5 / 9; width:100%; height:auto; object-fit:contain; }
.verbo-gallery :is(picture,.animation-media) { display:block; min-width:0; }
.verbo-device-pair > figure:first-child > :is(picture,.animation-media) { align-self:end; aspect-ratio:16 / 9; }
.verbo-device-pair > figure:first-child > :is(picture,.animation-media) > :is(img,.loop-video) { width:100%; height:auto; aspect-ratio:16 / 9; object-fit:contain; }
.verbo-device-pair > figure:last-child > :is(picture,.animation-media) { align-self:end; aspect-ratio:5 / 9; }
.verbo-device-pair > figure:last-child > :is(picture,.animation-media) > :is(img,.loop-video) { width:100%; height:auto; aspect-ratio:5 / 9; object-fit:contain; }
.verbo-pair > figure > figcaption, .verbo-device-pair > figure > figcaption, .verbo-mobile-pair > figure > figcaption { margin-top:0; align-self:start; }
.verbo-cards { margin-top:60px; }
.verbo-cards.verbo-observations { grid-template-columns:1fr; gap:0; }
.verbo-observations article.observation { display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.5fr); align-items:center; gap:40px; border:0; border-top:1px solid #b8b9b0; padding:40px 0; }
.observation-copy > span { font:12px "DM Mono",monospace; color:#171717; }
.verbo-observations .observation-question { margin-top:24px; padding-left:16px; border-left:2px solid #171717; font-size:16px; }
.observation-evidence { margin:0; min-width:0; }
.observation-evidence a { display:block; position:relative; background:#fff; border:1px solid #d5d5d5; overflow:hidden; }
.observation-evidence :is(img,.loop-video) { display:block; width:100%; height:auto; transition:transform .3s ease; }
.observation-evidence a:hover :is(img,.loop-video) { transform:scale(1.025); }
.evidence-open { position:absolute; right:12px; bottom:12px; padding:9px 12px; background:#171717; color:#f3f0e8; font:11px "DM Mono",monospace; }
.observation-evidence figcaption { margin-top:14px; font:12px/1.6 "DM Mono",monospace; text-align:left; padding-inline:0; }
.observation-evidence figcaption > span { display:block; color:#171717; font-size:10px; text-transform:uppercase; letter-spacing:.08em; }
@media(max-width:700px) {
  .verbo-observations article.observation { grid-template-columns:1fr; padding:30px 0; gap:24px; }
}
@media(prefers-reduced-motion:reduce) {
  .observation-evidence :is(img,.loop-video) { transition:none; }
  .observation-evidence a:hover :is(img,.loop-video) { transform:none; }
}
.verbo-cards article { padding:30px; border:1px solid #b8b9b0; }
.verbo-cards article>span { font:12px "DM Mono",monospace; }
.verbo-cards h3,.verbo-decisions h3 { font-size:24px; letter-spacing:-.04em; margin:18px 0 12px; }
.verbo-cards p,.verbo-decisions p { font-size:17px; line-height:1.6; margin:0; }
.learning-cycle { position:relative; color:#171717; max-width:1200px; margin:0 auto; width:100%; }
.cycle-orbit { position:absolute; inset:0; width:100%; height:100%; stroke-width:1.2; opacity:.6; }
.verbo-loop { position:relative; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); grid-template-rows:auto minmax(170px,1fr) auto; align-items:center; row-gap:95px; list-style:none; margin:0; padding:20px 0; min-height:650px; }
.verbo-loop li { position:relative; display:grid; grid-template-columns:64px minmax(0,1fr); column-gap:22px; align-items:start; padding:14px; background:var(--paper,#f3f0e8); }
.verbo-loop li:nth-child(1) { grid-column:2 / 4; grid-row:1; }
.verbo-loop li:nth-child(2) { grid-column:3 / 5; grid-row:2; margin-left:26px; }
.verbo-loop li:nth-child(3) { grid-column:2 / 4; grid-row:3; }
.verbo-loop li:nth-child(4) { grid-column:1 / 3; grid-row:2; margin-right:26px; }
.cycle-stage-top { grid-row:1 / 3; align-self:center; }
.cycle-number { display:none; }
.cycle-stage-top svg { display:block; box-sizing:border-box; width:64px; height:64px; padding:13px; color:#fff; background:#171717; border-radius:12px; }
.verbo-loop h3 { margin:0 0 12px; font-size:clamp(24px,3vw,40px); letter-spacing:-.0550em; font-weight:700; line-height:1.05; }
.verbo-loop p { margin:0; font-size:clamp(14px,1.5vw,19px); line-height:1.5; max-width:280px; }
.verbo-decisions { padding-left:24px; margin-top:55px; }
.verbo-decisions li { padding:12px 0 24px 12px; border-bottom:1px solid #b8b9b0; }
.verbo-section .prose > p + p, .case-details > div > p + p:not(.eyebrow), .observation-copy > p + p, .verbo-decisions p + p { margin-top:1.4em; }
@media(max-width:700px) {
  .verbo-section { padding-inline:20px; }
  .verbo-cover { margin-inline:0; }
  .verbo-gallery,.verbo-cards { margin-top:36px; gap:24px; }
  .verbo-pair,.verbo-cards,.verbo-device-pair { grid-template-columns:1fr; }
  .verbo-device-pair figure:last-child { max-width:360px; width:100%; margin:auto; }
  .verbo-pair > figure, .verbo-device-pair > figure { display:block; grid-row:auto; }
  .verbo-pair > figure > figcaption, .verbo-device-pair > figure > figcaption { margin-top:12px; }
  .verbo-mobile-pair { grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
  .verbo-loop { min-height:510px; row-gap:64px; grid-template-rows:auto 1fr auto; padding:0; }
  .verbo-loop li { display:block; padding:8px; text-align:center; }
  .verbo-loop li:nth-child(1), .verbo-loop li:nth-child(3) { grid-column:2 / 4; text-align:center; }
  .verbo-loop li:nth-child(2) { margin-left:12px; }
  .verbo-loop li:nth-child(4) { margin-right:12px; }
  .cycle-stage-top svg { width:40px; height:40px; padding:8px; border-radius:8px; margin:0 auto 12px; }
  .verbo-loop li:nth-child(1) svg, .verbo-loop li:nth-child(3) svg { margin-inline:auto; }
  .verbo-loop h3 { font-size:clamp(18px,4.8vw,28px); margin-bottom:8px; }
  .verbo-loop p { font-size:12px; }
  .cycle-orbit { opacity:.4; }
  .verbo-cards article { padding:24px; }
}
/* Anchor each stage to the same centre and radius as the circular artwork. */
.learning-cycle { container-type:inline-size; max-width:1000px; aspect-ratio:1; }
.cycle-orbit { inset:auto; left:50%; top:50%; width:66%; height:auto; aspect-ratio:1; transform:translate(-50%,-50%); }
.verbo-loop { display:block; position:absolute; inset:0; min-height:0; padding:0; }
.verbo-loop li { position:absolute; width:34%; box-sizing:border-box; margin:0!important; transform:translate(-50%,-50%); }
.verbo-loop li:nth-child(1) { left:50%; top:17%; }
.verbo-loop li:nth-child(2) { left:83%; top:50%; }
.verbo-loop li:nth-child(3) { left:50%; top:83%; }
.verbo-loop li:nth-child(4) { left:17%; top:50%; }
@media(max-width:700px) {
  .learning-cycle { aspect-ratio:auto; height:600px; }
  .verbo-loop li { width:38%; }
  .verbo-loop li:nth-child(1) { top:calc(50% - 33cqw); }
  .verbo-loop li:nth-child(3) { top:calc(50% + 33cqw); }
  .verbo-loop li:nth-child(2) { left:83%; }
  .verbo-loop li:nth-child(4) { left:17%; }
}
.context-targets .context-score h3 { margin-bottom:0; }
.context-targets .context-score h3:has(+ p) { margin-bottom:16px; }
.context-targets .direction-number { font-size:11px; letter-spacing:.08em; }
.ecosystem-tools { display:flex; flex-wrap:wrap; justify-content:center; gap:20px; }
.ecosystem-tools > span { padding:24px; border:1px solid var(--line); font:13px "DM Mono",monospace; }
.ecosystem-learner { text-align:center; padding:32px; margin:28px auto 0; border:1px solid var(--line); max-width:760px; }
.ecosystem-learner > span { font-size:32px; }
.ecosystem-learner h3 { font-size:34px; margin:20px 0; letter-spacing:-.0450em; }
.ecosystem-learner p { font-size:17px; line-height:1.6; }
.rhythm-problems { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; }
.rhythm-problems figure,.problem-mini { margin-top:28px; }
.problem-mini { padding:50px 20px; border:1px solid var(--line); text-align:center; font-size:24px; line-height:1.5; }
.problem-mini span { display:block; margin:20px 0; }
.rhythm-users { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; }
.rhythm-users .user-question { margin-top:24px; }
.rhythm-statement { font-family:"DM Sans",sans-serif; font-style:normal; font-weight:400; font-size:clamp(21px,2.4vw,34px); letter-spacing:-.050em; line-height:1.18; width:100%; max-width:760px; margin:40px auto 0; text-align:left; text-wrap:pretty; }
.rhythm-statement-users { padding-right:clamp(0px,10vw,150px); }
.rhythm-flow { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; list-style:none; padding:0; margin:0; }
.rhythm-flow li { border:1px solid var(--line); padding:28px; }
.rhythm-flow li > span,.rhythm-outcomes li > span { font:12px "DM Mono",monospace; }
.rhythm-flow h3 { font-size:clamp(22px,2.3vw,32px); letter-spacing:-.0450em; margin:24px 0 16px; }
.rhythm-flow p { font-size:17px; line-height:1.5; margin:0; }
.journey-flow li:last-child { grid-column:span 2; }
.rhythm-outcomes { list-style:none; margin:0; padding:0; }
.rhythm-outcomes li { display:grid; grid-template-columns:40px 2fr 1fr; gap:24px; align-items:baseline; padding:28px 0; border-top:1px solid var(--line); }
.rhythm-outcomes h3 { font-size:clamp(22px,2.4vw,32px); letter-spacing:-.04em; margin:0; }
.rhythm-outcomes p { font-size:16px; line-height:1.5; margin:0; }
.reflection-followup { margin-top:24px; }
@media(max-width:900px) { .rhythm-users,.rhythm-flow { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:700px) {
 .rhythm-problems,.rhythm-users,.rhythm-flow { grid-template-columns:1fr; gap:24px; }
 .journey-flow li:last-child { grid-column:auto; }
 .rhythm-outcomes li { grid-template-columns:28px 1fr; gap:16px; }
 .rhythm-outcomes li p { grid-column:2; }
 .ecosystem-tools { gap:12px; }
 .ecosystem-tools > span { padding:18px; }
}
.rhythm-problems > .problem-reference { margin:0; display:flex; flex-direction:column; min-width:0; }
.problem-reference > .properly-card { flex:1; display:flex; flex-direction:column; }
.problem-reference-image { margin-top:auto; padding-top:28px; }
.problem-reference-image :is(img,.loop-video) { display:block; width:100%; aspect-ratio:16 / 9; height:auto; object-fit:contain; }
.problem-reference > figcaption { margin-top:12px; }
.verbo-reflection-block { background:var(--acid); color:var(--ink); border:0; }
.verbo-solution-block { background:#e7d8ff; color:var(--ink); border:0; }
.case-section:has(+ .verbo-reflection-block),
.case-section:has(+ .verbo-solution-block) { border-bottom:0; }

/* properly.css */
.properly-section { scroll-margin-top:28px; }
.direction-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:28px; margin:0; padding:0; list-style:none; }
.direction-card-top { display:flex; flex-direction:row-reverse; align-items:center; justify-content:space-between; gap:16px; }
.direction-number { font:11px/1.5 "DM Mono",monospace; letter-spacing:.08em; }
.direction-card-top svg { display:block; width:52px; height:52px; flex-shrink:0; box-sizing:border-box; padding:11px; background:var(--ink); color:var(--paper); border-radius:10px; }
.direction-card-top .direction-number { text-align:right; }
.direction-grid .properly-card h3 { font-size:clamp(22px,2.2vw,34px); }
.direction-note { margin:24px 0 0; font:12px/1.6 "DM Mono",monospace; }
@media(max-width:1100px) { .direction-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:550px) { .direction-grid { grid-template-columns:1fr; gap:20px; } }
.properly-section .verbo-gallery figure > a { display:block; }
.properly-section .verbo-gallery :is(img,.loop-video) { width:100%; height:auto; }
.properly-section .properly-portrait { width:100%; max-width:860px; margin-inline:auto; }
.properly-two { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; }
.properly-card { padding:32px; border:1px solid var(--line); color:inherit; }
.p-ecosystem-diagram { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1.35fr) auto minmax(0,1fr); align-items:center; gap:16px; }
.p-ecosystem-node { display:flex; align-items:center; justify-content:center; min-height:140px; padding:32px; border:1px solid var(--line); text-align:center; font-family:"DM Sans",sans-serif; font-size:clamp(23px,2.5vw,34px); font-weight:700; letter-spacing:-.045em; line-height:1.1; overflow-wrap:anywhere; }
.p-ecosystem-hub { min-height:200px; }
.p-ecosystem-arrow { font-size:clamp(24px,3vw,40px); }
@media(max-width:700px) {
 .p-ecosystem-diagram { grid-template-columns:1fr; justify-items:center; gap:12px; }
 .p-ecosystem-node { width:85%; min-height:100px; }
 .p-ecosystem-hub { width:100%; min-height:150px; }
 .p-ecosystem-arrow { transform:rotate(90deg); }
}
.properly-card > span,.properly-draft > span { font:11px/1.5 "DM Mono",monospace; text-transform:uppercase; letter-spacing:.08em; }
.properly-card h3,.properly-draft h3 { font-size:clamp(23px,2.5vw,34px); letter-spacing:-.0450em; line-height:1.1; margin:22px 0 16px; }
.properly-card p,.properly-draft p { font-size:17px; line-height:1.6; margin:0; max-width:700px; }
.chapter-link { display:block; text-decoration:none; transition:background .25s ease; }
.chapter-link h3 { display:flex; justify-content:space-between; }
.chapter-link h3 span { transition:transform .25s ease; }
.chapter-link:hover { background:rgba(23,33,31,.04); }
.chapter-link:hover h3 span { transform:translate(4px,-4px); }
.properly-flow { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); list-style:none; padding:0; margin:0; border:1px solid var(--line); }
.properly-flow li { padding:24px 18px; font-size:16px; line-height:1.4; border:1px solid var(--line); }
.properly-flow li span { display:block; margin-bottom:14px; font:11px "DM Mono",monospace; opacity:.6; }
.ecosystem-flow { grid-template-columns:repeat(6,minmax(0,1fr)); }
.properly-card .properly-flow { grid-template-columns:repeat(4,minmax(0,1fr)); margin:28px 0; }
.properly-draft { border-left:2px solid var(--ink); background:rgba(23,33,31,.035); padding:28px 32px; }
@media(max-width:700px) {
  .properly-two { grid-template-columns:1fr; gap:24px; }
  .properly-card,.properly-draft { padding:24px; }
  .properly-flow,.ecosystem-flow,.properly-card .properly-flow { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .properly-flow li { padding:20px 14px; font-size:14px; }
}
@media(prefers-reduced-motion:reduce) { .chapter-link,.chapter-link h3 span { transition:none; } }
/* Shared editorial users-and-problems chapter. */
.users-problems { padding-inline:4.2vw; }
.problem-editorial { max-width:1050px; margin:60px auto 0; }
.problem-editorial h2 { font-size:clamp(36px,5.5vw,76px); line-height:1.06; letter-spacing:-.0650em; margin:0 0 32px; }
.problem-editorial > p { max-width:650px; font-size:18px; line-height:1.6; margin:20px 0 0; }
.problem-stagger { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; align-items:start; margin-top:64px; padding-bottom:48px; }
.problem-brief { padding:32px; border:1px solid var(--line); }
.problem-brief:nth-child(even) { transform:translateY(48px); }
.problem-brief > span,.audience-card > span,.ux-challenges li > span { font:11px/1.5 "DM Mono",monospace; letter-spacing:.08em; }
.problem-brief h3,.audience-card h3 { font-size:clamp(23px,2.5vw,34px); line-height:1.12; letter-spacing:-.0450em; margin:24px 0 16px; }
.problem-brief p,.audience-card p { font-size:17px; line-height:1.6; margin:0; }
.audience-intro { margin-top:80px; max-width:760px; }
.audience-intro h2 { font-size:clamp(36px,4.5vw,62px); line-height:1.06; letter-spacing:-.06em; margin:28px 0; }
.audience-intro em { font-family:"Playfair Display",serif; font-weight:600; }
.audience-intro > p:not(.eyebrow) { font-size:17px; line-height:1.6; }
.audience-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; margin-top:40px; }
.audience-card { padding:40px; border:1px solid var(--line); background:rgba(23,33,31,.035); }
.audience-card:last-child:nth-child(odd) { grid-column:1 / -1; }
.audience-card p { max-width:650px; }
.audience-card p + p { margin-top:20px; }
.ux-challenges { margin-top:80px; }
.ux-challenges ol { list-style:none; padding:0; margin:32px 0 0; }
.ux-challenges li { display:grid; grid-template-columns:60px minmax(140px,1fr) 2fr; gap:24px; border-top:1px solid var(--line); padding:28px 0; align-items:baseline; }
.ux-challenges h3 { font-size:24px; letter-spacing:-.04em; margin:0; }
.ux-challenges p { font-size:17px; line-height:1.6; margin:0; }
@media(max-width:700px) {
 .users-problems { padding-inline:20px; }
 .problem-editorial { margin-top:36px; }
 .problem-editorial > p { font-size:16px; }
 .problem-stagger,.audience-grid { grid-template-columns:1fr; gap:24px; margin-top:36px; padding-bottom:0; }
 .problem-brief:nth-child(even) { transform:none; }
 .problem-brief,.audience-card { padding:24px; }
 .audience-intro,.ux-challenges { margin-top:56px; }
 .ux-challenges li { grid-template-columns:32px minmax(0,1fr); gap:16px; }
 .ux-challenges li p { grid-column:2; font-size:16px; }
}
.p-lifecycle { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; margin:0; padding:0; list-style:none; }
.p-lifecycle li { border:1px solid var(--line); padding:28px; }
.p-lifecycle li > span,.p-asset-label { font:11px/1.5 "DM Mono",monospace; letter-spacing:.04em; }
.p-lifecycle h3 { font-size:clamp(22px,2.3vw,32px); letter-spacing:-.04em; margin:24px 0 12px; }
.p-lifecycle p { font-size:16px; line-height:1.5; margin:0; }
.p-lifecycle.p-ux-editorial { gap:clamp(24px,3vw,48px); }
.p-ux-editorial li { min-width:0; border:0; border-top:1px solid var(--line); padding:28px 0 0; }
.p-ux-editorial li > span { font:12px "DM Mono",monospace; letter-spacing:normal; }
.p-ux-editorial h3 { letter-spacing:-.045em; margin:24px 0 16px; }
.p-ux-editorial p { font-size:17px; overflow-wrap:anywhere; }
.p-bridge { text-align:center; padding:36px 20px; font-size:clamp(18px,2vw,26px); line-height:1.8; text-wrap:balance; }
.p-bridge span { display:inline-block; padding:0 14px; }
.p-purple { background:#e7d8ff; border:0; }
.p-green { background:var(--acid); border:0; }
.case-section:has(+ .p-purple),.case-section:has(+ .p-green) { border-bottom:0; }
.p-provider { background:var(--ink); color:var(--paper); }
.p-provider .p-lifecycle li { border-color:rgba(243,240,232,.3); }
.p-placeholder-stage { background:#e9e4d6; border:1px solid var(--line); min-height:380px; padding:clamp(24px,5vw,72px); aspect-ratio:18 / 11; display:flex; flex-direction:column; justify-content:space-between; gap:28px; }
.p-placeholder-outline { border:1px dashed #81877f; padding:clamp(24px,4vw,56px); width:100%; max-width:850px; margin:auto; }
.p-placeholder-outline > span,.p-placeholder-stage > p { font:12px/1.6 "DM Mono",monospace; margin:0; }
.p-placeholder-outline h3 { font-size:clamp(24px,3vw,44px); letter-spacing:-.04em; margin:24px 0; }
.p-skeleton { height:14px; background:rgba(23,33,31,.12); margin-top:18px; width:100%; }
.p-skeleton.short { width:64%; }
.p-mobile-stage { aspect-ratio:auto; min-height:540px; }
.p-mobile-stage .p-placeholder-outline { max-width:340px; border-radius:24px; min-height:360px; }
.p-wire-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; align-items:start; }
.properly-calendar-pair { grid-template-columns:minmax(0,2.88fr) minmax(0,1fr); }
.properly-calendar-pair > figure:last-child > :is(img,.loop-video) { aspect-ratio:5 / 9; object-fit:contain; }
.p-calendar-versions :is(img,.loop-video) { aspect-ratio:16 / 9; object-fit:contain; }
@media(max-width:700px) { .properly-calendar-pair { grid-template-columns:1fr; } }
.p-wire-canvas { background:#e9e4d6; border:1px solid var(--line); min-height:360px; position:relative; padding:18px; overflow:hidden; display:flex; align-items:center; }
.p-wire-context { position:absolute; inset:20px; opacity:.35; font:10px "DM Mono",monospace; }
.p-wire-context div { height:46px; margin-top:24px; border:1px solid var(--ink); }
.p-wire-panel { position:relative; background:var(--paper); border:1px solid var(--ink); padding:20px; width:100%; }
.p-wire-panel strong { font-size:17px; line-height:1.4; display:block; }
.modal .p-wire-panel { width:90%; margin:auto; box-shadow:0 8px 25px #17211f22; }
.p-wire-chosen .p-wire-canvas { border:2px solid var(--ink); background:#e7d8ff; }
.panel .p-wire-panel { width:82%; margin-left:auto; align-self:stretch; }
.p-wire-canvas.phone { position:relative; inset:auto; width:auto; height:auto; min-width:0; transform:none; box-shadow:none; border-radius:0; }
.p-wire-canvas.phone { border:1px solid var(--line); padding:24px; min-height:430px; }
.p-wire-canvas.phone .p-wire-panel { border-radius:20px; min-height:360px; }
.p-wire-field { margin-top:18px; padding:12px; border:1px solid var(--line); font:12px/1.5 "DM Mono",monospace; display:flex; justify-content:space-between; gap:12px; }
.p-wire-action { display:inline-block; margin-top:20px; padding:12px 16px; background:var(--ink); color:var(--paper); font:12px/1.5 "DM Mono",monospace; }
.p-feedback { display:grid; grid-template-columns:1fr 1fr; gap:32px; padding:32px; border:1px solid var(--line); }
.p-photo-slot { background:#e9e4d6; min-height:250px; display:grid; place-items:center; text-align:center; font:12px "DM Mono",monospace; }
.p-feedback h3 { font-size:28px; line-height:1.2; letter-spacing:-.04em; }
.p-feedback-options { display:flex; gap:12px; flex-wrap:wrap; margin:20px 0; }
.p-feedback-options > span { padding:12px; border:1px solid var(--line); font:12px/1.5 "DM Mono",monospace; }
.p-badges { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.properly-card .p-badge-symbol { display:grid; place-items:center; width:56px; height:56px; background:var(--ink); color:var(--paper); border-radius:12px; font-size:30px; }
.verbo-gallery .p-badges .p-badge-art { display:block; width:100px; height:100px; max-width:100px; object-fit:contain; }
.p-badges > .properly-card { display:block; }
.p-system-board { display:grid; grid-template-columns:1fr 1fr; border:1px solid var(--line); }
.p-system-board > div { padding:36px; border:1px solid var(--line); min-width:0; }
.p-system-board h3 { font-size:clamp(28px,4vw,52px); letter-spacing:-.050em; }
.p-swatches { display:flex; gap:16px; margin-top:30px; }
.p-swatches span { width:70px; height:70px; background:var(--ink); border:1px solid var(--line); }
.p-swatches span:nth-child(2) { background:var(--paper); }
.p-swatches span:nth-child(3) { background:var(--acid); }
@media(max-width:1000px) { .p-wire-grid { grid-template-columns:1fr; } .p-wire-canvas { max-width:none; } .p-lifecycle { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:700px) {
 .p-lifecycle,.p-badges,.p-feedback,.p-system-board { grid-template-columns:1fr; }
 .p-placeholder-stage { aspect-ratio:auto; min-height:360px; }
 .p-feedback,.p-system-board > div { padding:24px; }
 .p-badges { gap:24px; }
}

/* echo-case.css */
.ez-grid { display:grid; gap:28px; align-items:start; }
.ez-grid-2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.ez-grid-3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
.ez-slot { margin:0; min-width:0; }
.ez-slot-stage { aspect-ratio:16 / 9; min-height:240px; background:#e9e4d6; border:1px solid var(--line); padding:clamp(20px,3vw,44px); display:flex; flex-direction:column; justify-content:center; align-items:center; gap:20px; text-align:center; }
.ez-slot-stage.square { aspect-ratio:1; }
.ez-slot-stage > span,.ez-slot-stage small { font:11px/1.6 "DM Mono",monospace; overflow-wrap:anywhere; }
.ez-slot-stage > span { text-transform:uppercase; letter-spacing:.08em; }
.ez-slot-stage h3 { font-size:clamp(22px,2.3vw,36px); line-height:1.15; letter-spacing:-.04em; margin:0; }
.ez-slot-mark { width:56px; height:56px; border:1px dashed var(--ink); display:grid; place-items:center; border-radius:50%; font-size:28px; opacity:.5; }
.ez-slot figcaption { font:13px/1.6 "DM Mono",monospace; margin-top:12px; text-align:left; }
.ez-slot figcaption > span { display:block; font-size:11px; opacity:.65; }
.ez-flow { display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:20px; list-style:none; margin:0; padding:0; }
.ez-flow li { padding:24px; border:1px solid var(--line); font-size:18px; line-height:1.4; }
.ez-flow li > span { display:block; font:11px "DM Mono",monospace; margin-bottom:20px; }
.ez-purple { background:#e7d8ff; border:0; }
.ez-green { background:var(--acid); border:0; }
.case-section:has(+ .ez-purple),.case-section:has(+ .ez-green) { border-bottom:0; }
.ez-trailer { padding:60px 4.2vw; }
.ez-trailer figure { margin:0 0 24px; }
.ez-trailer :is(img,.loop-video) { display:block; width:100%; height:auto; }
@media(max-width:900px) { .ez-grid-3 { grid-template-columns:1fr; } }
@media(max-width:700px) {
 .ez-grid-2 { grid-template-columns:1fr; }
 .ez-slot-stage { min-height:240px; }
 .ez-flow { grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
 .ez-flow li { padding:20px; font-size:16px; }
 .ez-trailer { padding:36px 20px; }
}
.ez-creature-media { margin:0; min-width:0; }
.ez-creature-media > :is(img,.loop-video), .ez-creature-media :is(picture,.animation-media) { display:block; width:100%; aspect-ratio:16/9; object-fit:contain; }
.ez-creature-media :is(picture,.animation-media) { position:relative; }
.ez-creature-media :is(picture,.animation-media) :is(img,.loop-video) { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; }
.ez-creature-media figcaption { margin-top:12px; text-align:left; font:13px/1.6 "DM Mono",monospace; }
.ez-zero-animations .ez-creature-media :is(picture,.animation-media) { aspect-ratio:1 / 1; }
.ez-zero-animations .ez-creature-media figcaption { margin:12px 0 0; padding:0; width:100%; text-align:left; }
.ez-ui-group + .ez-ui-group { margin-top:90px; }
.ez-ui-copy { width:calc(100% - 17.6vw); max-width:760px; margin-left:8.8vw; margin-right:0; text-align:left; }
@media(max-width:700px) { .ez-ui-copy { width:100%; margin-inline:0; } }
.ez-ui-copy h3 { font-size:clamp(28px,3vw,44px); line-height:1.1; letter-spacing:-.0450em; margin:20px 0; }
.ez-ui-copy > p:last-child { max-width:600px; font-size:18px; line-height:1.6; }
@media(max-width:700px) { .ez-ui-group + .ez-ui-group { margin-top:56px; } .ez-ui-copy > p:last-child { font-size:16px; } }

/* buttons.css */
/* Shared calls to action. Selected-work banners deliberately excluded. */
.button-medium {
  display:inline-flex !important;
  align-items:center;
  gap:16px;
  width:fit-content;
  max-width:100%;
  font:13px/1.5 "DM Mono",monospace !important;
  letter-spacing:0;
  color:inherit;
  text-decoration:none;
  border-bottom:1px solid currentColor;
  padding-bottom:6px;
}
.button-large {
  display:inline-flex;
  align-items:center;
  gap:15px;
  max-width:100%;
  color:inherit;
  font-size:clamp(18px,2.4vw,30px);
  letter-spacing:-.050em;
  text-decoration:none;
  border-bottom:1px solid currentColor;
  padding-bottom:6px;
  overflow-wrap:anywhere;
}
.button-medium span { font-size:20px; margin-left:0 !important; }
header.nav a.header-social.button-medium {
  min-height:0;
  text-decoration:none;
  padding-bottom:6px;
  transition:transform .25s ease, border-color .25s ease;
}
header.nav a.header-social.button-medium:hover { opacity:1; }
.button-large span { font-size:30px; margin-left:0; }
.button-medium, .button-large, .next-project a {
  transition:transform .25s ease, border-color .25s ease;
}
.button-medium span, .button-large span, .next-project a span {
  display:inline-block;
  flex-shrink:0;
  transition:transform .25s ease;
}
.next-project a { display:inline-block; max-width:100%; }
.next-project a[style] { width:fit-content; }
@media(hover:hover) and (prefers-reduced-motion:no-preference) {
  .button-medium:hover, .button-large:hover, .next-project a:hover {
    opacity:1;
    transform:translateX(7px);
  }
  .button-medium:hover span, .button-large:hover span, .next-project a:hover span {
    transform:translate(4px,-4px);
  }
}
.site-footer .footer-copyright {
  justify-self:end;
  text-align:right;
  font:12px/1.5 "DM Mono",monospace;
}
header.nav .header-meta { width:auto; margin-left:auto; }
@media(max-width:500px) {
  .site-footer .footer-copyright { font-size:10px; }
}
@media(prefers-reduced-motion:reduce) {
  .button-medium, .button-large, .next-project a,
  .button-medium span, .button-large span, .next-project a span { transition:none; }
  .button-medium:hover, .button-large:hover, .next-project a:hover,
  .button-medium:hover span, .button-large:hover span, .next-project a:hover span { transform:none; opacity:1; }
}
.return-work-wrap { padding:0 4.2vw 48px; }
.return-work,.next-project .return-work { display:block; width:fit-content; margin-top:45px; color:inherit; font:13px/1.5 "DM Mono",monospace; letter-spacing:0; text-decoration:none; transition:transform .25s ease,opacity .25s ease; }
@media(hover:hover) and (prefers-reduced-motion:no-preference) { .return-work:hover { transform:translateX(6px); opacity:.68; } }
@media(max-width:700px) { .return-work-wrap { padding-inline:20px; } }
@media(prefers-reduced-motion:reduce) { .return-work { transition:none; } }
/* Consistent trailer band across game case studies. */
section.game-trailer { background:#17211f; color:#f3f0e8; padding:72px 4.2vw; }
.game-trailer > .eyebrow { margin:0 0 32px; }
.game-trailer > .button-medium { color:inherit; margin-top:24px; }
.game-trailer-placeholder { min-height:320px; aspect-ratio:16 / 9; display:flex; flex-direction:column; justify-content:center; align-items:center; gap:24px; text-align:center; padding:32px; border:1px dashed rgba(243,240,232,.35); }
.game-trailer-placeholder > span { font-size:48px; }
.game-trailer-placeholder h2 { font-size:clamp(28px,4vw,52px); letter-spacing:-.050em; margin:0; }
.game-trailer-placeholder p { font:12px/1.6 "DM Mono",monospace; margin:0; }
@media(max-width:700px) { section.game-trailer { padding:55px 20px; } }

/* project-wipe.css */
/* Orange to/from home; lime green between projects. */
html::after {
  content: ''; position: fixed; z-index: 2147483647;
  top: -100px; bottom: -100px; left: -50vh; right: -50vh;
  background: var(--wipe-colour, #ff704a); pointer-events: none;
  transform: translateX(110%) skewX(-12deg);
  transition: none;
}
html.project-wipe-cover::after {
  transform: translateX(0) skewX(-12deg);
  transition: transform 450ms cubic-bezier(.65,0,.35,1);
  pointer-events: auto;
}
html.project-wipe-arriving::after { transition:none; }
html.project-wipe-reveal::after {
  transform: translateX(-110%) skewX(-12deg);
  transition: transform 500ms cubic-bezier(.65,0,.35,1);
}
html.project-wipe-cover main { animation: none; }
/* Safari may expose the document beneath its translucent toolbars even while
   a fixed overlay covers the layout viewport. Paint that document as well. */
html.project-wipe-cover,
html.project-wipe-cover body { background:var(--wipe-colour,#ff704a) !important; }
html.project-wipe-covered body > * { visibility:hidden !important; }
@media (prefers-reduced-motion: reduce) {
  html::after { display: none; }
}
/* Mobile uses opacity only: never try to paint across Safari's browser bars. */
@media (max-width:900px), (hover:none) {
  html::after { display:none; }
  body { transition:opacity 180ms ease; }
  html.page-fade-out body, html.page-fade-in body { opacity:0; }
}
@media (prefers-reduced-motion:reduce) {
  body { transition:none; }
  html.page-fade-out body, html.page-fade-in body { opacity:1; }
}

/* heading-reveal.css */
:is(.case-hero h1, .about-hero h1, main h2, main p, .hero-headline, .spark-caption) > .heading-reveal-mask {
  display: block;
  overflow: clip;
  /* Leave space for italic overhangs and descenders without moving the title. */
  padding: .12em .15em;
  margin: -.12em -.15em;
}
:is(.case-hero h1, .about-hero h1, main h2, main p, .hero-headline, .spark-caption) > .heading-reveal-mask > .heading-reveal-text { display: block; }
.hero-bottom .scroll-work-cue > .heading-reveal-mask > .heading-reveal-text {
  display: flex; align-items: center; gap: 14px;
}

/* project-editorial.css */
/* Shared case-study typography and editorial layout. Media grids are unchanged. */
.verbo-editorial .verbo-context-illustration { position:relative; width:100%; max-width:900px; aspect-ratio:664 / 700; overflow:hidden; margin:0 auto; }
.verbo-editorial .verbo-context-illustration :is(img,.loop-video) { display:block; width:100%; max-width:100%; height:auto; }
html:not(.verbo-editorial) .case-section.p-provider > .prose h2 { color:#fff; }
html:not(.verbo-editorial) .case-section.p-provider > .eyebrow { color:var(--acid); }
html:not(.verbo-editorial) .case-details > dl { align-self:center; }
html:not(.verbo-editorial) .case-section > .eyebrow { margin-bottom:48px; }
html:not(.verbo-editorial) .case-section > .prose {
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:48px;
  max-width:none;
  margin-top:0;
}
html:not(.verbo-editorial) .case-section > .prose h2 {
  order:-1;
  width:100%;
  max-width:min(680px,100%);
  margin:0;
  font-family:"DM Sans",sans-serif;
  font-size:clamp(28px,3vw,46px);
  font-weight:400;
  font-style:normal;
  line-height:1.15;
  letter-spacing:-.02em;
  font-kerning:normal;
  color:#000;
  text-align:left;
  text-wrap:wrap;
}
html:not(.verbo-editorial) .case-section > .prose h2 em {
  font-family:inherit;
  font-weight:inherit;
  font-style:normal;
  letter-spacing:inherit;
}
html:not(.verbo-editorial) .case-section > .prose > p {
  width:100%;
  max-width:min(680px,100%);
  margin:0;
}
html:not(.verbo-editorial) .case-section :is(h2,h3,p),
html:not(.verbo-editorial) .case-details > * {
  min-width:0;
  overflow-wrap:anywhere;
  white-space:normal;
}
html:not(.verbo-editorial) .case-section > .verbo-gallery { margin-top:80px; }
@media(max-width:700px) {
  html:not(.verbo-editorial) .case-section > .eyebrow { margin-bottom:32px; }
  html:not(.verbo-editorial) .case-section > .prose { gap:32px; }
  html:not(.verbo-editorial) .case-section > .verbo-gallery { margin-top:48px; }
}
.verbo-editorial .case-details > dl {
  align-self:center;
}
.verbo-editorial .audience-box-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:28px;
  margin-top:32px;
}
.verbo-editorial .audience-box-grid > .properly-card { min-width:0; }
@media(max-width:700px) {
  .verbo-editorial .audience-box-grid { grid-template-columns:1fr; gap:24px; }
}
.verbo-editorial .case-section:is(.verbo-outcome-block,.verbo-reflection-block) > .prose h2 {
  width:100%;
  max-width:min(680px,100%);
  white-space:normal;
  overflow-wrap:anywhere;
}
.verbo-editorial .verbo-reflection-block > .rhythm-statement {
  font-family:"DM Sans",sans-serif;
  font-size:24px;
  font-weight:700;
  font-style:normal;
  letter-spacing:-.04em;
  line-height:1.3;
}
/* Let text shrink and wrap inside its own column rather than widening the grid. */
.verbo-editorial .case-details > *,
.verbo-editorial .prose > *,
.verbo-editorial .project-role-grid > *,
.verbo-editorial .rhythm-flow > li,
.verbo-editorial .ux-challenges li > * {
  min-width:0;
  max-width:100%;
  box-sizing:border-box;
}
.verbo-editorial .case-section :is(h2,h3,p),
.verbo-editorial .case-details :is(p,dt,dd) {
  max-width:100%;
  min-width:0;
  white-space:normal;
  overflow-wrap:anywhere;
  word-break:normal;
}
.verbo-editorial .case-section .section-body {
  width:100%;
  max-width:min(680px,100%);
}
.verbo-editorial .next-project > a:not(.return-work) {
  display:inline-flex;
  align-items:baseline;
  gap:clamp(16px,2vw,32px);
  font-kerning:normal;
  letter-spacing:-.035em;
  line-height:1.15;
}
.verbo-editorial .next-project > a:not(.return-work) span {
  margin-left:0;
  letter-spacing:0;
  flex-shrink:0;
}
.verbo-editorial .case-hero h1 {
  font-family:"DM Sans",sans-serif;
  font-weight:700;
  font-style:normal;
  font-kerning:normal;
  letter-spacing:-.035em;
}
.verbo-editorial .case-hero h1 em {
  font-family:inherit;
  font-weight:inherit;
  font-style:normal;
  letter-spacing:inherit;
}
.verbo-editorial .case-section.context-split > .prose {
  display:flex;
  flex-direction:column;
  gap:48px;
  align-items:flex-start;
}
.verbo-editorial .context-split .section-body { max-width:680px; }
.verbo-editorial .case-section.context-split > .prose h2 {
  width:100%;
  max-width:min(680px,100%);
  align-self:stretch;
  order:-1;
  font-family:"DM Sans",sans-serif;
  font-weight:400;
  font-size:clamp(28px,3vw,46px);
  line-height:1.15;
  letter-spacing:-.02em;
  font-kerning:normal;
  color:#000;
  text-align:left;
  text-wrap:wrap;
}
.case-details > div > p:not(.eyebrow),
.case-section > .prose > p,
.case-section > .prose > .section-body > p {
  font-family:"DM Sans",sans-serif;
  font-size:clamp(18px,2vw,27px);
  font-weight:400;
  font-style:normal;
  line-height:1.25;
  letter-spacing:normal;
}
.case-section > .eyebrow,
.case-section > .prose,
.case-section > .rhythm-statement {
  margin-left:8.8vw;
  margin-right:0;
  text-align:left;
}
.case-section > .prose,
.case-section > .rhythm-statement {
  width:calc(100% - 17.6vw);
}
.case-section > .prose > p { margin-left:0; }
/* Editorial split for the contribution section; typography stays unchanged. */
.project-role { padding-inline:13vw; }
.project-role > .eyebrow { margin:0 0 48px; }
.project-role > .prose {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(32px,4vw,64px);
  align-items:start;
  width:100%;
  max-width:none;
  margin:0;
}
.project-role > .prose h2 { margin:0; }
.project-role > .prose > p { max-width:none; margin:0; }
.context-split > .prose {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(32px,4vw,64px);
  align-items:start;
  max-width:none;
  margin-top:48px;
}
.context-split > .prose h2 { margin:0; }
.context-split > .prose > p { max-width:none; margin:0; }
.context-split .section-body { min-width:0; }
.context-split .section-body > p { margin:0; max-width:none; }
.context-split .section-body > p + p { margin-top:1.4em; }
.project-role .project-role-grid {
  column-gap:clamp(32px,4vw,64px);
  row-gap:48px;
  margin-top:80px;
}
.project-role .project-role-card {
  border:0;
  border-top:1px solid var(--line);
  padding:28px 0 0;
}
.verbo-editorial .case-section > .prose {
  grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);
  column-gap:14%;
}
.verbo-editorial .case-section > .prose h2 {
  font-family:"DM Sans",sans-serif;
  font-size:clamp(24px,2vw,32px);
  font-weight:300;
  color:var(--coral);
  line-height:1.25;
  letter-spacing:-.025em;
  min-width:0;
  max-width:100%;
  justify-self:end;
  text-align:right;
  text-wrap:balance;
}
.verbo-editorial .case-section > .eyebrow { margin-bottom:48px; }
.verbo-editorial #project-role-title {
  font-family:"DM Sans",sans-serif;
  font-size:clamp(24px,2vw,32px);
  font-weight:300;
  line-height:1.25;
  letter-spacing:-.025em;
  width:10em;
  max-width:100%;
  justify-self:end;
  text-align:right;
  text-wrap:wrap;
}
.verbo-editorial #project-role-title br { display:block; }
.verbo-editorial .case-section > .prose h2 em {
  font-family:inherit;
  font-weight:inherit;
  font-style:normal;
}
.verbo-editorial .context-split > .prose { margin-top:0; }
.verbo-editorial .case-section > .verbo-gallery { margin-top:80px; }
/* Audience index shares the caption and introduction's left edge. */
.case-section > .verbo-gallery:has(.p-ux-editorial) {
  width:calc(100% - 17.6vw);
  max-width:none;
  margin-left:8.8vw;
  margin-right:0;
  text-align:left;
}
@media(max-width:700px) {
  .case-section > .verbo-gallery:has(.p-ux-editorial) {
    width:100%;
    margin-inline:0;
  }
}
.verbo-editorial .case-section > .verbo-gallery:has(.rhythm-flow:not(.journey-flow)) {
  width:calc(100% - 17.6vw);
  max-width:none;
  margin-left:8.8vw;
  margin-right:0;
  text-align:left;
}
.verbo-editorial .rhythm-users { display:block; }
.verbo-editorial .rhythm-users > .eyebrow { font:17px/1.6 "DM Mono",monospace; letter-spacing:.02em; margin:0 0 32px; }
.verbo-editorial .rhythm-flow:not(.journey-flow) {
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:clamp(24px,3vw,48px);
  text-align:left;
}
.verbo-editorial .rhythm-flow:not(.journey-flow) > li {
  border:0;
  border-top:1px solid var(--line);
  padding:28px 0 0;
}
.verbo-editorial .rhythm-users .properly-card {
  display:grid;
  grid-template-columns:60px minmax(140px,1fr) 2fr;
  grid-template-areas:"number title detail" "number title question";
  column-gap:24px;
  row-gap:8px;
  padding:28px 0;
  border:0;
  border-top:1px solid var(--line);
  background:transparent;
  text-align:left;
}
.verbo-editorial .rhythm-users .properly-card > span { grid-area:number; margin:0; }
.verbo-editorial .rhythm-users .properly-card > h3 { grid-area:title; margin:0; font-size:24px; letter-spacing:-.04em; }
.verbo-editorial .rhythm-users .properly-card > p { grid-area:detail; margin:0; }
.verbo-editorial .rhythm-users .properly-card > .user-question { grid-area:question; margin:0; }
.verbo-editorial .rhythm-statement-users { margin-left:0; padding-right:0; text-align:left; }
@media(min-width:701px) {
  .verbo-editorial .project-role > .prose > h2 { grid-column:2; grid-row:1; }
  .verbo-editorial .project-role > .prose > p { grid-column:1; grid-row:1; }
  .verbo-editorial .context-split > .prose > h2 { grid-column:2; grid-row:1; }
  .verbo-editorial .context-split > .prose > .section-body,
  .verbo-editorial .context-split > .prose > p { grid-column:1; grid-row:1; }
}
@media(max-width:700px) {
  .verbo-editorial .case-section > .verbo-gallery:has(.rhythm-flow:not(.journey-flow)) { width:100%; margin-inline:0; }
  .verbo-editorial .rhythm-flow:not(.journey-flow) { grid-template-columns:1fr; gap:32px; }
  .verbo-editorial .case-section > .verbo-gallery:has(.rhythm-users) { width:100%; margin-inline:0; }
  .verbo-editorial .rhythm-users .properly-card {
    grid-template-columns:32px minmax(0,1fr);
    grid-template-areas:"number title" ". detail" ". question";
    column-gap:16px;
    row-gap:12px;
    padding:28px 0;
  }
  .verbo-editorial .case-section > .prose { grid-template-columns:1fr; gap:32px; }
  .verbo-editorial .case-section > .eyebrow { margin-bottom:32px; }
  .verbo-editorial .case-section > .verbo-gallery { margin-top:48px; }
  .context-split > .prose { grid-template-columns:1fr; gap:32px; }
  .project-role { padding-inline:20px; }
  .project-role > .prose { grid-template-columns:1fr; gap:32px; }
  .project-role .project-role-grid { margin-top:48px; row-gap:32px; }
  .case-details { padding-inline:20px; }
  .case-section > .eyebrow,
  .case-section > .prose,
  .case-section > .rhythm-statement { margin-left:0; margin-right:0; }
  .case-section > .prose,
  .case-section > .rhythm-statement { width:100%; }
}

/* atone-reviews.css */
.atone-media.game-trailer video,
.atone-media.game-trailer picture,
.atone-media.game-trailer picture img { display:block; width:100%; height:auto; max-height:none; object-fit:contain; }
.atone-reviews { border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:48px 0; width:100%; max-width:760px; margin-inline:auto; text-align:left; }
.review-slide { padding:24px 0; margin-inline:0; }
.review-slide figcaption { text-align:left; }
.review-score { font-size:clamp(36px,4vw,64px); line-height:1.1; font-weight:500; font-kerning:normal; letter-spacing:-.025em; margin:0 0 24px; }
.review-slide blockquote { font-size:clamp(26px,4vw,56px); line-height:1.2; letter-spacing:-.0450em; max-width:1050px; margin:0 0 32px; text-wrap:balance; }
.review-slide figcaption a { color:inherit; text-underline-offset:5px; }
.review-counter,.review-help { font:11px/1.6 "DM Mono",monospace; margin:24px 0 0; }
.review-help { opacity:.65; }
/* Continuous review flow shared by ATONE and Nitro Kid. */
.verbo-section > .verbo-gallery:has(.reviews-marquee) {
  width:calc(100% + 8.4vw);
  margin-inline:-4.2vw;
}
.verbo-gallery .atone-reviews.reviews-marquee { width:100%; max-width:none; overflow:hidden; }
@media(max-width:700px) {
  .verbo-section > .verbo-gallery:has(.reviews-marquee) {
    width:calc(100% + 40px);
    margin-inline:-20px;
  }
}
.reviews-marquee .review-slides { display:flex; width:max-content; animation:review-flow 90s linear infinite; }
.reviews-marquee .review-group { display:flex; flex-shrink:0; }
.reviews-marquee .review-slide { flex:0 0 auto; width:clamp(260px,38vw,520px); margin:0 48px 0 0; padding:24px 32px 24px 0; border-right:1px solid var(--line); }
.reviews-marquee .review-slide blockquote { font-size:clamp(24px,2.4vw,36px); }
.reviews-marquee .review-score { text-wrap:balance; }
.reviews-marquee .review-slide { display:flex; flex-direction:column; }
.reviews-marquee .review-slide figcaption { margin-top:auto; padding-top:12px; }
.reviews-marquee:focus-within .review-slides,
.reviews-marquee.is-paused .review-slides { animation-play-state:paused; }
.review-pause { margin-top:16px; padding:8px 0; background:none; border:0; color:inherit; font:11px/1.6 "DM Mono",monospace; text-decoration:underline; text-underline-offset:4px; cursor:pointer; }
@keyframes review-flow { to { transform:translateX(-50%); } }
@media(prefers-reduced-motion:reduce) {
  .reviews-marquee .review-slides { animation:none; width:100%; }
  .reviews-marquee .review-group { display:block; width:100%; }
  .reviews-marquee .review-group[aria-hidden] { display:none; }
  .reviews-marquee .review-slide { width:100%; margin:0; border-right:0; }
  .reviews-marquee .review-pause { display:none; }
}
.atone-reviews.is-rotating .review-slides { display:grid; }
.atone-reviews.is-rotating .review-slide { grid-area:1 / 1; visibility:hidden; opacity:0; transition:opacity .45s ease; pointer-events:none; }
.atone-reviews.is-rotating .review-slide.is-active { visibility:visible; opacity:1; pointer-events:auto; }
@media(prefers-reduced-motion:reduce) { .review-slide { transition:none!important; } .review-help,.review-counter { display:none; } }
