.case-page{--case-dark:#171716}.case-page section[id]{scroll-margin-top:var(--case-nav-height)}.case-intro{padding-top:30px}.case-breadcrumb{display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:12px;color:var(--muted)}.case-breadcrumb a{display:inline-flex;gap:9px;align-items:center}.case-breadcrumb .icon-arrow{width:18px;height:18px}@media(hover:hover){.case-breadcrumb a:hover{color:var(--ink)}}.case-title-row{display:grid;grid-template-columns:1.5fr 1fr;gap:70px;align-items:end;margin-top:56px}.case-title-row .eyebrow{color:var(--muted);margin-bottom:12px}.case-title-row h1{font-size:clamp(88px,10vw,144px);line-height:1;letter-spacing:-7px;font-weight:700}.case-subtitle{font-size:clamp(24px,2.6vw,35px);line-height:1.25;letter-spacing:-1px;margin-top:22px}.case-intro-note{max-width:330px;justify-self:end;padding-bottom:5px}.case-intro-note>p{font-size:16px;line-height:1.7;color:var(--muted)}.case-intro-note .text-link{margin-top:24px}.case-meta{display:grid;grid-template-columns:1fr 1fr .65fr 1.5fr;gap:28px;margin:46px 0 30px;padding:22px 0;border-top:1px solid var(--line)}.case-meta dt{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);margin-bottom:7px}.case-meta dd{font-size:13px;margin:0}.case-figure{margin:36px 0 0;min-width:0}.case-intro>.case-figure{margin-top:0}.case-image-button{display:block;position:relative;width:100%;overflow:hidden;border:0;border-radius:18px;background:transparent;padding:0} .case-image-button[data-enlarge]{cursor:zoom-in}.case-image-button img{width:100%;height:auto;display:block;transition:transform 250ms var(--motion-ease)}@media(hover:hover){.case-image-button[data-enlarge]:hover img{transform:scale(1.012)}}.zoom-label{position:absolute;right:18px;bottom:18px;display:inline-flex;align-items:center;gap:10px;border-radius:24px;padding:10px 15px;background:var(--paper);color:var(--ink);font-size:11px;font-weight:700;opacity:0;transform:translateY(5px);transition:opacity .2s,transform .2s;box-shadow:0 2px 16px #0001}.zoom-label .icon-arrow,.zoom-label .icon-ui{width:17px;height:17px}.case-image-button:focus-visible .zoom-label{opacity:1;transform:none}@media(hover:hover){.case-image-button:hover .zoom-label{opacity:1;transform:none}}.case-figure figcaption{font-size:11px;color:var(--muted);margin-top:12px;line-height:1.6}.case-contents{position:sticky;top:var(--header-height);z-index:12;background:var(--paper);border-bottom:1px solid var(--line);margin-top:24px}.case-contents>.container{display:flex;align-items:center;gap:30px;min-height:64px;overflow:auto;white-space:nowrap;scrollbar-width:none}.case-contents span{font-size:10px;letter-spacing:.7px;text-transform:uppercase;color:var(--muted);margin-right:auto}.case-contents a{font-size:12px;padding:12px 0}.case-section{padding-block:88px}.case-two-col{display:grid;grid-template-columns:1fr 1.15fr;gap:9%;align-items:start}.case-two-col h2{font-size:clamp(34px,calc(3.1vw + 2px),47px)}.case-copy{font-size:15px;color:var(--muted);line-height:1.8;max-width:600px}.case-copy+.case-copy{margin-top:18px}.case-lead{font-size:24px;line-height:1.5;letter-spacing:-.5px;margin-bottom:24px}.case-dark{position:relative;overflow:hidden;background:var(--case-dark);color:var(--paper)}.case-dark::before{content:'';pointer-events:none;position:absolute;inset:0;background:radial-gradient(ellipse at 100% 100%,#a0527433,transparent 50%)}.case-dark .container{position:relative}.case-dark .section-index{color:#c9bac2}.case-dark .case-copy,.case-dark figcaption{color:#c9bec4}.case-flow{display:grid;grid-template-columns:repeat(5,1fr);gap:20px;list-style:none;padding:0;margin:42px 0 30px}.case-flow li{font-size:14px;line-height:1.5;border-top:1px solid #ffffff30;padding-top:14px}.case-flow span{display:block;font-size:10px;color:#c99fb4;margin-bottom:12px}.case-dark .case-image-button{background:#111}.case-features{background:#f5eff2}.case-feature-heading{margin-bottom:52px}.case-feature-heading h2{font-size:clamp(34px,calc(3.05vw + 2px),46px)}.case-feature{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:9%;margin-top:52px}.case-feature .case-figure{margin:0}.case-feature>div{max-width:420px}.case-feature h3{font-size:clamp(27px,2.7vw,38px);font-weight:700;line-height:1.2;letter-spacing:-1.1px;margin:16px 0 22px}.case-feature p{font-size:15px;line-height:1.8;color:var(--muted)}.case-number{display:inline-block;font-size:11px;color:var(--accent-ink);border-bottom:1px solid #c99fb4;padding-bottom:7px;min-width:35px}.case-feature.reverse .case-figure{order:2}.case-feature.reverse>div{order:1}.case-result{border-block:1px solid var(--line);padding:30px 0;display:grid;grid-template-columns:1fr 2fr;gap:40px;align-items:start;margin-top:44px}.case-result .eyebrow{color:var(--muted);padding-top:7px}.case-result p{font-size:24px;line-height:1.5;letter-spacing:-.5px;max-width:700px}.case-end{display:flex;align-items:center;justify-content:space-between;gap:25px;margin-top:36px}.image-dialog{border:0;border-radius:12px;background:#191918;color:#fff;padding:20px;max-width:94vw;max-height:94vh;width:min(1300px,94vw);overflow:hidden}.image-dialog::backdrop{background:#000d;backdrop-filter:blur(5px)}.image-dialog[open]{display:flex;flex-direction:column;gap:16px;align-items:center}.image-dialog img{max-height:78vh;max-width:100%;object-fit:contain}.dialog-close{align-self:flex-end;background:#fdfbfc;color:var(--ink);border:0;border-radius:30px;padding:10px 18px;font-size:13px;font-weight:700;display:flex;gap:18px;align-items:center}.dialog-close span{font-size:20px;line-height:1}.image-dialog p{font-size:11px;color:#aaa}
@media(max-width:1100px){.case-title-row{gap:40px}.case-title-row h1{font-size:110px}.case-intro-note{max-width:300px}.case-contents>.container{gap:24px}.case-meta{gap:20px}.case-feature{gap:6%}}
@media(max-width:760px){.case-page section[id]{scroll-margin-top:var(--case-nav-height)}.case-intro{padding-top:22px}.case-breadcrumb{font-size:10px;gap:12px}.case-breadcrumb>span{font-size:9px}.case-title-row{grid-template-columns:1fr;gap:26px;margin-top:34px}.case-title-row h1{font-size:88px;letter-spacing:-4px}.case-title-row .eyebrow{font-size:9px}.case-subtitle{font-size:25px;line-height:1.3;letter-spacing:-.7px;margin-top:17px}.case-intro-note{justify-self:start;max-width:100%;padding:0}.case-intro-note>p{font-size:14px;max-width:360px}.case-intro-note .text-link{font-size:12px;margin-top:16px}.case-meta{grid-template-columns:1fr 1fr;gap:20px 15px;margin-top:30px;padding:20px 0}.case-meta dd{font-size:12px}.case-meta dt{font-size:9px}.case-image-button{border-radius:12px}.case-contents{top:var(--header-height);margin-top:20px}.case-contents>.container{min-height:51px;gap:22px}.case-contents span{display:none}.case-contents a{font-size:11px}.case-section{padding-block:54px}.case-two-col{grid-template-columns:1fr;gap:27px}.case-two-col h2{font-size:34px}.case-copy{font-size:14px}.case-lead{font-size:21px;margin-bottom:20px}.case-flow{grid-template-columns:1fr 1fr;gap:15px 22px;margin-top:30px}.case-flow li{font-size:13px}.case-flow span{margin-bottom:6px}.case-figure{margin-top:26px}.case-figure figcaption{font-size:10px;margin-top:9px}.zoom-label{right:10px;bottom:10px;padding:7px 10px;font-size:9px;gap:7px;opacity:1;transform:none}.zoom-label .icon-arrow,.zoom-label .icon-ui{width:14px;height:14px}.case-feature-heading{margin-bottom:34px}.case-feature-heading h2{font-size:35px}.case-feature{grid-template-columns:1fr;gap:22px;margin-top:38px}.case-feature>div,.case-feature.reverse>div{order:1;max-width:none}.case-feature .case-figure,.case-feature.reverse .case-figure{order:2}.case-feature h3{font-size:28px;margin:12px 0 15px}.case-feature p{font-size:14px}.case-feature h3 br{display:none}.case-result{grid-template-columns:1fr;gap:15px;padding:24px 0;margin-top:30px}.case-result p{font-size:21px}.case-end{align-items:flex-start;flex-direction:column;gap:22px;margin-top:25px}.case-end .button{font-size:12px;gap:10px;padding-inline:18px}.case-end .text-link{font-size:12px}.image-dialog{padding:12px}.image-dialog img{max-height:75vh}}

.dialog-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:10px;width:100%;flex:none;z-index:1}.dialog-zoom{border:1px solid #ffffff60;border-radius:30px;color:white;background:#191918;padding:10px 18px;font-size:13px;font-weight:700}.image-dialog.is-zoomed{align-items:flex-start}.image-dialog.is-zoomed img{max-width:none;max-height:none;flex:none}

/* Shared presentation system for every internal portfolio case. */
.case-page{--paper:#fff;--case-surface:#fbf4f7;--case-line:#e0e5ec;background:#fff}
.amorusse-page{--case-surface:#f4f7fb}
.case-page .header{background:#fff}
.case-page .case-intro{padding-bottom:40px}
.case-page .case-meta{grid-template-columns:1fr 1.2fr 1fr 1.5fr;margin-top:40px;margin-bottom:0}
.case-page .case-title-row h1{font-size:clamp(76px,7.8vw,112px)}
.case-page .case-image-button,.case-page .am-logo-board{border:1px solid var(--case-line);box-shadow:none}
.case-page .zoom-label{box-shadow:none;background:#fff}
.case-page .case-contents{margin-top:0;background:var(--case-surface);border:0}
.case-page .case-contents>.container{min-height:var(--case-nav-height);gap:12px;padding-block:12px;justify-content:flex-start}
.case-page .case-contents .case-contents-label{margin:0 20px 0 0;font-size:12px;font-weight:700;letter-spacing:0;text-transform:none;color:var(--ink)}
.case-page .case-contents a{padding:10px 17px;border:0;border-radius:24px;min-height:44px;display:inline-flex;align-items:center;font-size:12px;font-weight:600;line-height:20px;color:var(--muted);transition:background .18s,color .18s}.case-page .case-contents a[aria-current="location"]{background:#fff;color:var(--ink);text-decoration:none}@media(hover:hover){.case-page .case-contents a:hover{background:#fff;color:var(--ink);text-decoration:none}}
.case-page section[id]{scroll-margin-top:var(--case-nav-height)}
.case-page .case-dark,.case-page .case-features{background:var(--case-surface);color:var(--ink)}
.case-page .case-dark::before{display:none}
.case-page .case-dark .section-index,.case-page .case-dark .case-copy,.case-page .case-dark figcaption{color:var(--muted)}
.case-page .case-dark .case-image-button{background:#fff}
.case-page .case-flow li{border-color:var(--case-line)}
.case-page .case-flow span{color:var(--accent-ink)}
.case-page .image-dialog img{max-height:none;flex:none}
@media(max-width:1100px){.case-page .case-title-row h1{font-size:clamp(66px,7.9vw,88px);letter-spacing:-4px}}
@media(max-width:760px){
 .case-page .case-intro{padding-bottom:28px}
 .case-page .case-meta{grid-template-columns:1fr 1fr;margin-top:28px;gap:22px 18px}
 .case-page .case-title-row h1{font-size:clamp(60px,14.8vw,86px);letter-spacing:-3.6px}
 .case-page .case-contents>.container{width:100%;padding:10px 20px;min-height:var(--case-nav-height);gap:8px}
 .case-page .case-contents .case-contents-label{display:none}
 .case-page .case-contents a{padding:8px 12px;font-size:11px;flex-shrink:0}
 .case-page section[id]{scroll-margin-top:var(--case-nav-height)}
}
@media(prefers-reduced-motion:reduce){.case-page .case-image-button img{transition:none}@media(hover:hover){.case-page .case-image-button[data-enlarge]:hover img{transform:none}}}

.case-page .case-contents{transition:background-color .2s ease,box-shadow .2s ease}
.case-page .case-contents.is-stuck{background:#fff;box-shadow:0 5px 16px rgba(24,35,49,.07)}
@media(prefers-reduced-motion:reduce){.case-page .case-contents{transition:none}}

/* Mobile screenshots have an independently scrolling page and a stable bottom action panel. */
.image-dialog.has-mobile-screen{width:min(510px,94vw);overflow:hidden}
.image-dialog.has-mobile-screen .dialog-stage>img[hidden],.case-mobile-viewport[hidden]{display:none}
.case-mobile-viewport{display:flex;flex-direction:column;width:min(375px,100%);height:min(72vh,667px);margin:auto;overflow:hidden;background:#fff;border-radius:12px;flex:none}
.case-mobile-scroll{min-height:0;flex:1;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;background:#f4f7fb}
.case-mobile-scroll .am-screen-body>img{max-height:none;max-width:none;object-fit:fill;transition:none}
.case-mobile-scroll:focus-visible{outline:2px solid #f6d9e8;outline-offset:-2px}
.image-dialog.has-mobile-screen.is-zoomed{width:min(900px,94vw)}
.image-dialog.is-zoomed .case-mobile-viewport{width:750px;max-width:none}
.case-mobile-viewport .am-screen-footer{position:static}

/* Original Portray artwork: clean framing and inset section dividers. */
.portray-page{--case-surface:#fff}
.portray-page .case-intro>.case-figure{margin-top:44px}
.portray-page .case-image-button{border:0;box-shadow:none;border-radius:18px}
.portray-page .case-dark,.portray-page .case-features{background:#fff}
.portray-page main>section:not(.case-intro):not(.contact){position:relative}
.portray-page main>section:not(.case-intro):not(.contact):not(:has(+ .contact))::after{content:"";position:absolute;bottom:0;left:max(56px,calc((100% - var(--max))/2));right:max(56px,calc((100% - var(--max))/2));height:1px;background:var(--line)}
.portray-page main>section.container:not(.case-intro):not(.contact):not(:has(+ .contact))::after{left:0;right:0}
.portray-page .case-contents{background:#fbf4f7;transition:background-color .2s ease,box-shadow .2s ease}
.portray-page .case-contents.is-stuck{background:#fff}.portray-page .case-contents:not(.is-stuck) a[aria-current="location"]{background:#fff}@media(hover:hover){.portray-page .case-contents:not(.is-stuck) a:hover{background:#fff}}.portray-page .case-contents a[aria-current="location"]{background:#f4f3f4}@media(hover:hover){.portray-page .case-contents a:hover{background:#f4f3f4}}
.dialog-stage>img[hidden]{display:none}
@media(max-width:760px){
 .portray-page .case-intro>.case-figure{margin-top:28px}
 .portray-page main>section:not(.case-intro):not(.contact):not(:has(+ .contact))::after{left:20px;right:20px}
 .portray-page main>section.container:not(.case-intro):not(.contact):not(:has(+ .contact))::after{left:0;right:0}
 .portray-page .case-image-button{border-radius:12px}
}

@media(min-width:761px) and (max-width:1100px){.portray-page main>section:not(.container):not(.case-intro):not(.contact):not(:has(+ .contact))::after{left:32px;right:32px}}

/* Portray uses each export's intrinsic proportions, with no zoom crop. */
.portray-page .case-image-button{aspect-ratio:auto;height:auto}
.portray-page .case-image-button img{position:static;display:block;width:100%;height:auto;max-height:none;object-fit:contain;transform:none;transition:none}@media(hover:hover){.portray-page .case-image-button[data-enlarge]:hover img{transform:none}}
.portray-page .dialog-stage>img{height:auto;aspect-ratio:auto;object-fit:contain;border-radius:18px}
@media(max-width:760px){.portray-page .dialog-stage>img{border-radius:12px}}
/* Fit the complete image on first open; explicit zoom keeps native dimensions. */
.case-page .dialog-stage>img{width:auto;height:auto;max-width:100%;max-height:calc(94dvh - 140px);margin:auto}
.image-dialog.is-zoomed .dialog-stage>img{max-width:none;max-height:none}

@media(prefers-reduced-motion:reduce){.portray-page .case-contents{transition:none}}

/* Portray metadata starts where its previous divider sat. */
.portray-page .case-meta{border-top:0;padding-top:0}

.portray-page .case-onboarding{margin-top:52px}
.portray-page .case-onboarding h3{font-size:clamp(27px,2.7vw,38px);font-weight:700;line-height:1.2;letter-spacing:-1.1px;margin:0}
@media(max-width:760px){.portray-page .case-onboarding{margin-top:38px}.portray-page .case-onboarding h3{font-size:28px}}

/* Give the wide onboarding artwork a clear pause before the profile. */
.portray-page .case-onboarding+.case-feature{margin-top:104px}
/* Keep the supplied animation in the central phone, below its hardware. */
.case-splash-artwork{position:relative;display:block;width:100%;aspect-ratio:3040/2048;overflow:hidden;border-radius:inherit}
.portray-page .case-splash-artwork>.case-splash-base{display:block;position:static;width:100%;height:auto;transform:none}
.portray-page .case-splash-artwork>.case-splash-motion{position:absolute;left:37.828947%;top:10.839844%;width:24.33075%;height:auto;max-width:none;aspect-ratio:750/1624;object-fit:contain;border-radius:16.2% / 7.5%;transform:none;pointer-events:none}
.portray-page .case-splash-artwork>.case-splash-hardware{position:absolute;inset:0;width:100%;height:100%;clip-path:inset(11.9% 45.8% 84.3% 45.8% round 999px);transform:none;pointer-events:none}



@media(max-width:760px){.portray-page .case-onboarding+.case-feature{margin-top:64px}}
@media(prefers-reduced-motion:reduce){.portray-page .case-splash-artwork>.case-splash-motion{display:none}}

/* Hero artwork stays unframed across case studies. */
.case-page .case-intro .case-hero-image{border:0;box-shadow:none}.case-page .case-contents.is-stuck a[aria-current="location"]{background:#f4f3f4}@media(hover:hover){.case-page .case-contents.is-stuck a:hover{background:#f4f3f4}}

/* The header and case rail share one anchor offset model. */
.case-page section.case-intro[id]{scroll-margin-top:0}
.case-page .case-contents a:focus-visible{outline-offset:-3px;background:#fff;color:var(--ink)}
.case-page .case-contents.is-stuck a:focus-visible{background:#f4f3f4}
.case-page .case-contents a:active{color:var(--ink);background:#eae7e9}
.dialog-close,.dialog-zoom{min-height:44px;display:inline-flex;align-items:center;justify-content:center;transition:background-color var(--motion-fast) var(--motion-ease),border-color var(--motion-fast) var(--motion-ease)}
.dialog-zoom{min-width:120px;flex:none}.dialog-zoom[aria-pressed="true"]{background:#363635;border-color:#fff9}@media(hover:hover){.dialog-zoom:hover{background:#363635;border-color:#fff9}}@media(hover:hover){.dialog-close:hover{background:#eee8ec}}
.dialog-close:active,.dialog-zoom:active{opacity:.85}
.case-image-button:active{opacity:.96}
/* Keep keyboard focus inside clipped horizontal rails visible. */
.case-mobile-scroll:focus-visible{outline-color:var(--accent-ink)}

/* Only the artwork scrolls; viewer controls stay inside the visible dialog. */
.dialog-stage{width:100%;min-height:0;overflow:auto;overscroll-behavior:contain;flex:1;scrollbar-width:thin}
.dialog-stage>img{display:block}
.dialog-stage>img[hidden]{display:none}

.image-dialog>p{flex:none}

/* A quiet lift keeps the image-view action readable over artwork. */
.case-page .zoom-label{box-shadow:0 3px 12px rgb(24 24 24 / .10),0 1px 3px rgb(24 24 24 / .05)}
