.case-study-page{--case-soft:#f5f5f3;--case-dark:#171717}.case-header nav>a:first-child{color:var(--ink)}.case-back{color:var(--muted);font-family:var(--mono);letter-spacing:.06em;text-underline-offset:5px;text-transform:uppercase;margin-bottom:clamp(64px,8vw,112px);font-size:.72rem;text-decoration-thickness:1px;display:inline-flex}.case-back:hover{color:var(--ink)}.case-hero{padding-block:clamp(48px,7vw,96px) clamp(64px,8vw,112px)}.case-hero-grid{grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr);align-items:end;gap:clamp(48px,8vw,120px);display:grid}.case-hero .eyebrow{margin-bottom:24px}.case-kicker{color:var(--muted);font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;margin-bottom:26px;font-size:.78rem}.case-hero h1{max-width:930px;font-size:clamp(3.35rem,6.9vw,6.25rem)}.case-intro{color:var(--ink);margin-bottom:4px;font-size:clamp(1.15rem,1.65vw,1.45rem);line-height:1.45}.case-facts{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(3,1fr);margin:clamp(64px,8vw,112px) 0 0;display:grid}.case-facts div{border-right:1px solid var(--line);min-height:128px;padding:28px 32px}.case-facts div:first-child{padding-left:0}.case-facts div:last-child{border-right:0}.case-facts dt,.case-section-label,.next-project-label{color:var(--muted);font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;font-size:.68rem;font-weight:500}.case-facts dd{max-width:300px;margin:14px 0 0;font-size:.96rem;line-height:1.45}.shell-wide{width:min(1440px,100vw - 48px);margin-inline:auto}.case-media-wrap-m{margin-bottom:clamp(48px,7vw,96px)}.case-media{margin:0}.case-media-primary,.case-media-dark{background:var(--case-soft);padding:clamp(22px,4vw,64px)}.case-media-dark{background:var(--case-dark);color:#fff}.case-media figcaption{color:var(--muted);font-family:var(--mono);letter-spacing:.04em;margin-top:16px;font-size:.68rem}.case-media-dark figcaption{color:#aaa}.mock-browser{background:#fff;border:1px solid #bbb;border-radius:4px;overflow:hidden;box-shadow:0 30px 70px #0000001f}.mock-browser-bar{background:#ececec;border-bottom:1px solid #d5d5d5;align-items:center;gap:7px;height:44px;padding:0 16px;display:flex}.mock-browser-bar span{border:1px solid #999;border-radius:50%;width:9px;height:9px}.mock-browser-bar i{color:#777;font-family:var(--mono);margin-left:12px;font-size:9px;font-style:normal}.mock-app{grid-template-columns:76px minmax(0,1fr) 25%;min-height:clamp(370px,46vw,680px);display:grid}.mock-sidebar{background:#202020;flex-direction:column;align-items:center;gap:24px;padding:22px 12px;display:flex}.mock-sidebar b{color:#fff;font-family:var(--mono);margin-bottom:24px;font-size:14px}.mock-sidebar span{border:1px solid #777;width:22px;height:22px}.mock-sidebar span.is-active{background:#fff}.mock-canvas{padding:clamp(28px,5vw,76px)}.mock-toolbar,.mock-heading,.mock-copy,.mock-grid span,.mock-panel span{background:#ddd;display:block}.mock-toolbar{width:32%;height:10px;margin-bottom:clamp(62px,8vw,120px)}.mock-heading{background:#222;width:72%;height:clamp(24px,3vw,46px);margin-bottom:26px}.mock-copy{width:88%;height:12px;margin-bottom:56px}.mock-grid{grid-template-columns:repeat(3,1fr);gap:18px;display:grid}.mock-grid span{aspect-ratio:1.25;background:#eee}.mock-panel{background:#fafafa;border-left:1px solid #ddd;flex-direction:column;gap:28px;padding:clamp(28px,3vw,48px) 24px;display:flex}.mock-panel span{height:34px}.case-section{border-bottom:1px solid var(--line);padding-block:clamp(80px,10vw,148px)}.case-section-nb{border-bottom:none;padding-top:clamp(80px,10vw,148px);padding-bottom:0}.case-section-nbb{border-bottom:none;padding-block:clamp(80px,10vw,148px)}.case-section-nt{padding-top:0;padding-bottom:clamp(80px,10vw,148px)}.case-section-label{margin-bottom:40px}.case-copy-grid,.case-split{grid-template-columns:minmax(300px,.9fr) minmax(0,1fr);align-items:start;gap:clamp(54px,9vw,140px);display:grid}.case-copy-grid h2,.case-split h2,.case-reflection h2{text-transform:none;margin-bottom:0;font-size:clamp(2.4rem,4.8vw,4.4rem);line-height:1.02}.case-split{margin-top:clamp(54px,9vw,140px)}.case-section .case-split:nth-child(1 of .case-split){margin-top:0}.case-copy-grid-top{margin-bottom:60px}.case-prose{max-width:680px;color:var(--muted)}.case-prose>:last-child{margin-bottom:0}.case-prose .lede,.case-prose.lede{color:var(--ink)}.template-hint{border-left:3px solid var(--ink);background:var(--case-soft);color:var(--muted);margin-top:36px;padding:22px 24px;font-size:.9rem}.template-hint strong{color:var(--ink)}.case-results{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(3,1fr);margin-block:clamp(80px,10vw,148px);display:grid}.case-results div{border-right:1px solid var(--line);border-bottom:1px solid var(--line);flex-direction:column;justify-content:center;min-height:190px;padding:32px;display:flex}.case-results strong{font-family:var(--mono);letter-spacing:-.06em;font-size:clamp(2rem,4vw,4rem);font-weight:500;line-height:1}.case-results span{color:var(--muted);margin-top:16px;font-size:.88rem}.case-section-tinted{background:var(--case-soft);width:100%}.case-pullquote{border-top:1px solid var(--line);margin:48px 0 0;padding:32px 0 0}.case-pullquote p{color:var(--ink);letter-spacing:-.035em;margin-bottom:16px;font-size:clamp(1.55rem,2.7vw,2.5rem);line-height:1.22}.case-pullquote cite{font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;font-size:.68rem;font-style:normal}.mock-detail{border:1px solid #555;grid-template-columns:minmax(0,1fr) minmax(280px,.55fr);align-items:end;gap:64px;min-height:clamp(400px,52vw,720px);padding:clamp(30px,6vw,90px);display:grid}.mock-detail>div{max-width:760px}.mock-label{color:#aaa;font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;margin-bottom:28px;font-size:.68rem;display:block}.mock-detail strong{letter-spacing:-.055em;font-size:clamp(2.6rem,6vw,6rem);font-weight:500;line-height:.98;display:block}.mock-detail ol{border-top:1px solid #555;margin:0;padding:0;list-style:none}.mock-detail li{font-family:var(--mono);text-transform:uppercase;border-bottom:1px solid #555;grid-template-columns:44px 1fr;padding:18px 0;font-size:.78rem;display:grid}.mock-detail li span{color:#888}.contribution-grid{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(4,1fr);display:grid}.contribution-grid article{border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:300px;padding:28px}.contribution-grid article>span{color:var(--muted);font-family:var(--mono);margin-bottom:76px;font-size:.68rem;display:block}.contribution-grid h3{margin-bottom:18px}.contribution-grid p{color:var(--muted);margin-bottom:0;font-size:.9rem}.case-gallery{grid-template-columns:repeat(2,1fr);gap:24px;margin-bottom:clamp(48px,7vw,96px);display:grid}.case-media-half{min-width:0}.mock-mobile-stage,.mock-system-stage{background:#dededb;place-items:center;min-height:clamp(440px,55vw,720px);padding:38px;display:grid}.mock-system-stage{background:#f0f0ee}.mock-phone{aspect-ratio:.52;background:#ececec;border:8px solid #171717;border-radius:36px;width:min(280px,70%);padding:50px 0 0;position:relative;overflow:hidden;box-shadow:0 28px 50px #00000029}.ol-phone{background:#fff;padding:50px 15px 0}.mock-phone-speaker{background:#171717;border-radius:9px;width:35%;height:5px;position:absolute;top:12px;left:32.5%}.mock-phone-title,.mock-phone-copy,.mock-phone-card{background:#ddd;display:block}.mock-phone-title{background:#171717;width:75%;height:20px;margin-bottom:18px}.mock-phone-copy{width:95%;height:8px;margin-bottom:44px}.mock-phone-card{height:120px;margin-bottom:18px}.mock-phone-card.short{height:76px}.mock-system{background:#fff;border:1px solid #aaa;width:min(470px,90%);padding:clamp(28px,5vw,60px)}.mock-system-title{background:#171717;width:50%;height:26px;margin-bottom:56px;display:block}.mock-system>div{gap:14px;margin-bottom:54px;display:flex}.mock-system i{background:#d0d0d0;border-radius:50%;width:52px;height:52px}.mock-system b{border:1px solid #bbb;height:44px;margin-top:12px;display:block}.case-timeline{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.case-timeline li{border-bottom:1px solid var(--line);grid-template-columns:minmax(64px,.2fr) minmax(0,1fr);gap:30px;padding:32px 0;display:grid}.case-timeline li>span{color:var(--muted);font-family:var(--mono);font-size:.75rem}.case-timeline h3{margin-bottom:9px}.case-timeline p{max-width:720px;color:var(--muted);margin-bottom:0}.case-details{border-top:1px solid var(--line)}.case-details details{border-bottom:1px solid var(--line)}.case-details summary{cursor:pointer;padding:25px 44px 25px 0;font-weight:500;list-style:none;position:relative}.case-details summary::-webkit-details-marker{display:none}.case-details summary:after{content:"+";font-family:var(--mono);font-size:1.25rem;font-weight:400;position:absolute;right:4px}.case-details details[open] summary:after{content:"−"}.case-details details p{max-width:620px;color:var(--muted);padding:0 44px 28px 0}.case-quote{border-bottom:1px solid var(--line);padding-block:clamp(96px,13vw,184px)}.case-quote blockquote{text-align:center;max-width:1040px;margin:0 auto}.case-quote blockquote>p{letter-spacing:-.05em;margin-bottom:42px;font-size:clamp(2rem,4.6vw,4.6rem);font-weight:500;line-height:1.08}.case-quote cite{color:var(--muted);font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;flex-direction:column;gap:6px;font-size:.7rem;font-style:normal;display:flex}.case-quote cite strong{color:var(--ink)}.case-outcome-list{gap:16px;margin:36px 0 0;padding:0;list-style:none;display:grid}.case-outcome-list li{border-top:1px solid var(--line);padding:18px 0 18px 26px}.case-outcome-list li:before{float:left;background:var(--ink);content:"";width:7px;height:7px;margin:9px 0 0 -26px}.case-outcome-list strong{color:var(--ink)}.case-reflection{background:var(--case-dark);color:#fff;padding-block:clamp(84px,11vw,150px)}.case-reflection .case-section-label,.case-reflection .case-prose{color:#aaa}.case-reflection .case-prose .lede{color:#fff}.next-project{background:#ededeb}.next-project-link{justify-content:space-between;align-items:center;gap:40px;min-height:300px;text-decoration:none;display:flex}.next-project-label,.next-project-type{display:block}.next-project-link strong{letter-spacing:-.055em;margin:20px 0 12px;font-size:clamp(2.8rem,6vw,6rem);font-weight:500;line-height:.95;display:block}.next-project-type{color:var(--muted);font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;font-size:.72rem}.next-project-arrow{border:1px solid var(--ink);width:clamp(60px,7vw,92px);height:clamp(60px,7vw,92px);transition:background .18s ease, color .18s ease, transform .22s var(--ease-out);flex:none;place-items:center;font-size:2rem;display:grid}.next-project-link:hover .next-project-arrow{background:var(--ink);color:var(--bg);transform:translate(5px)}img{max-width:100%;display:block}.hero-img-collection{width:100%;height:0;padding-bottom:100%;position:relative}.hero-img-collection .reaction{width:64px;height:64px;margin-right:15px;transition:transform .4s;display:inline-block;position:relative}.hero-img-collection .rlike{animation:10s linear infinite rlike;position:absolute;top:17%;left:42%;transform:rotate(-18deg)}.hero-img-collection .rheart{animation:10s linear infinite rheart;position:absolute;top:69%;left:56%;transform:rotate(9deg)}.hero-img-collection .rlove{animation:10s linear infinite rlove;position:absolute;top:38%;left:10%;transform:rotate(-14deg)}.hero-img-collection .rlaugh{animation:10s linear infinite rlaugh;position:absolute;top:34%;left:78%;transform:rotate(9deg)}.hero-img-collection .rwow{animation:10s linear infinite rwow;position:absolute;top:73%;left:28%;transform:rotate(-18deg)}.ol-phone img{animation:30s 1s infinite mcdsiphonescroll}@keyframes mcdsiphonescroll{0%,to{transform:translateY(0%)}50%{transform:translateY(-86.5%)}}@media (width<=940px){.case-hero-grid,.case-copy-grid,.case-split,.mock-detail{grid-template-columns:1fr}.case-hero-grid,.case-copy-grid,.case-split{gap:42px}.case-intro{max-width:720px}.contribution-grid{grid-template-columns:repeat(2,1fr)}.mock-detail ol{max-width:560px}}@media (width<=720px){.case-facts,.case-results,.case-gallery{grid-template-columns:1fr}.case-facts div,.case-facts div:first-child,.case-facts div:last-child{border-right:0;border-bottom:1px solid var(--line);min-height:0;padding:24px 0}.case-facts div:last-child{border-bottom:0}.case-results{border-left:0}.case-results div{border-right:0;min-height:140px;padding-inline:0}.mock-app{grid-template-columns:54px minmax(0,1fr)}.mock-panel{display:none}.mock-sidebar{padding-inline:8px}.mock-sidebar span{width:18px;height:18px}.mock-canvas{padding:28px 22px}.mock-grid{grid-template-columns:repeat(2,1fr)}.mock-grid span:last-child{display:none}.case-gallery{gap:50px}.case-footer .footer-grid{grid-template-columns:1fr}.case-footer .footer-align-right{text-align:left}.case-footer .footer-gap .footer-meta:first-child{padding-right:0}}@media (width<=640px){.case-header .icon-link{display:grid}.case-footer nav a{display:inline}.shell-wide{width:calc(100vw - 24px)}.case-back{margin-bottom:52px}.case-hero h1{font-size:clamp(3rem,13vw,4.6rem)}.case-media-primary,.case-media-dark{padding:12px}.mock-app{min-height:330px}.mock-toolbar{margin-bottom:60px}.mock-detail{min-height:560px;padding:28px 22px}.mock-detail strong{font-size:clamp(2.4rem,12vw,4rem)}.contribution-grid{grid-template-columns:1fr}.contribution-grid article{min-height:250px}.contribution-grid article>span{margin-bottom:54px}.mock-mobile-stage,.mock-system-stage{min-height:510px;padding:24px}.mock-phone{width:min(250px,86%)}.next-project-link{min-height:260px}}.reaction:hover .r-emoji,.reaction.active .r-emoji{z-index:1;transform:scale(1.2)}.r-emoji{border-radius:50%;width:100%;height:100%;display:block;position:relative}.r-emoji-like{background:#b3d8e9}.r-emoji-like img{width:60%;position:absolute;top:18%;left:23%}.reaction.active .r-emoji-like img{animation:2s linear infinite hands-up}.r-emoji-heart{background:#db0007}.r-emoji-heart img{width:71%;position:absolute;top:22%;left:15%}.reaction.active .r-emoji-heart img{animation:1s linear infinite alternate heart-beat}.r-emoji-love{background:#ffbc0d}.r-emoji-love .face{width:47%;position:absolute;top:10%;left:11%}.r-emoji-love .heart1{width:43%;position:absolute;top:65%;left:0%}.r-emoji-love .heart2{width:43%;position:absolute;top:2%;left:62%}.reaction.active .r-emoji-love .face{animation:1s linear infinite alternate love}.reaction.active .r-emoji-love .heart1{animation:2s linear infinite love-heart1}.reaction.active .r-emoji-love .heart2{animation:1.6s linear infinite love-heart2}.r-emoji-lmao{background:#ffbc0d}.r-emoji-lmao .face{width:100%;height:100%;position:absolute;top:0%;left:0%}.r-emoji-lmao .eyes{width:51%;position:absolute;top:11%;left:24%}.r-emoji-lmao .mouth{width:78%;position:absolute;top:34%;left:11%}.r-emoji-lmao .tear1{width:18%;position:absolute;top:0%;left:-3%}.r-emoji-lmao .tear2{width:18%;position:absolute;top:0%;right:-3%}.reaction.active .r-emoji-lmao .tear1{animation:2s ease-in infinite tear-drop1}.reaction.active .r-emoji-lmao .tear2{animation:2s ease-in infinite tear-drop2}.reaction.active .r-emoji-lmao .mouth{animation:2s linear infinite haha-mouth}.reaction.active .r-emoji-lmao .face{animation:2s linear infinite haha-face}.r-emoji-wow{background:#ffbc0d}.r-emoji-wow .face{width:100%;height:100%;position:absolute;top:0%;left:0%}.r-emoji-wow .eyes{width:47%;position:absolute;top:17%;left:26%}.r-emoji-wow .mouth{width:50%;height:61%;position:absolute;bottom:5%;left:25%}.reaction.active .r-emoji-wow .face{animation:3s linear infinite wow-face}.reaction.active .r-emoji-wow .mouth{animation:3s linear infinite wow-mouth}@keyframes hands-up{25%{transform:rotate(15deg)}50%{transform:rotate(-15deg)translateY(-10%)scale(1.2)}75%,to{transform:rotate(0)}}@keyframes heart-beat{25%{transform:scale(1.1)}75%{transform:scale(.6)}}@-webkit-keyframes love{25%{transform:rotate(-5deg)}75%{transform:rotate(5deg)}}@keyframes love{25%{transform:rotate(-5deg)translateY(2%)}75%{transform:rotate(5deg)translateY(-2%)}}@keyframes love-heart1{25%{transform:rotate(15deg)}50%{transform:rotate(-15deg)translateY(-10%)scale(1.2)}75%,to{transform:rotate(0)}}@keyframes love-heart2{25%{transform:rotate(-15deg)}50%{transform:rotate(15deg)translateY(-10%)scale(1.2)}75%,to{transform:rotate(0)}}@keyframes wow-face{15%,25%{transform:rotate(20deg)translate(-12%)}45%,65%{transform:rotate(-20deg)translate(12%)}75%,to{transform:rotate(0)translate(0)}}@-webkit-keyframes wow-mouth{10%,30%{width:30%;height:41%;bottom:5%;left:35%}50%,70%{width:40%;height:51%;bottom:5%;left:30%}75%,to{width:50%;height:61%;bottom:5%;left:25%}}@keyframes wow-mouth{10%,30%{width:30%;height:31%;bottom:35%;left:35%}50%,70%{width:40%;height:51%;bottom:15%;left:30%}75%,to{width:50%;height:61%;bottom:5%;left:25%}}@-webkit-keyframes tear-drop1{0%,to{display:block;top:20%;left:0%;transform:scale(0)}25%{display:block;transform:scale(2)}49.9%{display:block;top:20%;left:-40%;transform:scale(0)}50%{display:block;top:0%;left:0%;transform:scale(0)}75%{display:block;transform:scale(2)}99.9%{display:block;top:0%;left:-40%;transform:scale(0)}}@keyframes tear-drop1{0%,to{display:block;top:20%;left:0%;transform:scale(0)}25%{display:block;transform:scale(1.5)}49.9%{display:block;top:20%;left:-40%;transform:scale(0)}50%{display:block;top:0%;left:0%;transform:scale(0)}75%{display:block;transform:scale(1.5)}99.9%{display:block;top:0%;left:-40%;transform:scale(0)}}@-webkit-keyframes tear-drop2{0%,to{display:block;top:20%;right:0%;transform:scale(0)}25%{display:block;transform:scale(2)}49.9%{display:block;top:20%;right:-40%;transform:scale(0)}50%{display:block;top:0%;right:0%;transform:scale(0)}75%{display:block;transform:scale(2)}99.9%{display:block;top:0%;right:-40%;transform:scale(0)}}@keyframes tear-drop2{0%,to{display:block;top:20%;right:0%;transform:scale(0)}25%{display:block;transform:scale(1.5)}49.9%{display:block;top:20%;right:-40%;transform:scale(0)}50%{display:block;top:0%;right:0%;transform:scale(0)}75%{display:block;transform:scale(1.5)}99.9%{display:block;top:0%;right:-40%;transform:scale(0)}}@keyframes haha-face{10%,30%,50%{transform:translateY(20%)}20%,40%{transform:translateY(12%)}60%,80%{transform:translateY(0)}70%,90%{transform:translateY(-8%)}}@keyframes haha-mouth{10%,30%,50%{transform:scale(.6)}20%,40%{transform:scale(.8)}60%,80%{transform:scale(1)}70%{transform:scale(1.2)}90%{transform:scale(1.1)}}@keyframes rlike{0%,40%,80%,to{transform:scale(1)}50%,70%{transform:scale(1.5)}}@keyframes rheart{0%,40%,to{transform:scale(1)}10%,30%{transform:scale(1.5)}}@keyframes rlove{10%,60%{transform:scale(1)}70%,90%{transform:scale(1.5)}}@keyframes rwow{0%,30%,70%,to{transform:scale(1)}40%,60%{transform:scale(1.5)}}@keyframes rlaugh{0%,5%,45%,to{transform:scale(1)}15%,35%{transform:scale(1.5)}}
