/* Stage: Step 0. Preserve foundation → components → motion cascade, one built CSS file. *//* Stage: Step 0. Foundation tokens copied from T-071 portal-style.css. */
:root{--paper:#fffdfb;--ink:#231f1d;--muted:#746b65;--line:rgba(71,57,47,.16);--soft:#f4f0eb;--button:#ece6df;--space:64px;--gutter:40px}
/* tokens · type · grid · header · footer · hero · print
   Stage: T-071 Step 9 cleanup.
   Conclusion: foundation, global media and navigation only.
   Changed: retired layers removed; repeated blocks live in components.css.
   Source: docs/COMPONENTS.md.
*/
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
@font-face{font-family:'Helvetica Now';src:url('/shared/assets/HelveticaNowDisplay-Regular.woff2') format('woff2'),url('/shared/assets/HelveticaNowDisplay-Regular.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:'Helvetica Now';src:url('/shared/assets/HelveticaNowDisplay-Medium.woff2') format('woff2'),url('/shared/assets/HelveticaNowDisplay-Medium.ttf') format('truetype');font-weight:500;font-display:swap}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:24px}
body{margin:0;background:var(--paper);color:var(--ink);font:400 16px/1.5 'Helvetica Now',Helvetica,Arial,sans-serif}
h1,h2,h3,p,figure{margin:0}
h1,h2,h3{font-weight:500;line-height:1.12;letter-spacing:-.025em}
h1{font-size:clamp(48px,4.7vw,72px);line-height:1.02;letter-spacing:-.035em}
h2{font-size:44px}
h3{font-size:26px;line-height:1.16}
p{color:var(--muted)}
a{color:inherit;text-decoration:none}
button,input,textarea{font:inherit}
button{cursor:pointer}
img{display:block;max-width:100%}
a,button,summary{-webkit-tap-highlight-color:transparent}
a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid #9c7659;outline-offset:5px}
::selection{background:#d9c5b2;color:var(--ink)}
[hidden]{display:none!important}
.container{width:min(1360px,calc(100% - var(--gutter)*2));margin-inline:auto}
.skip-link{position:fixed;z-index:100;top:12px;left:12px;padding:12px;background:var(--paper);transform:translateY(-180%)}
.skip-link:focus{transform:none}
.site-header{position:relative;min-height:108px;display:flex;align-items:center;justify-content:space-between;gap:32px;border-bottom:1px solid var(--line)}
.logo{display:block;flex-shrink:0;width:134px}
.logo img{width:134px;height:auto}
.desktop-nav{display:flex;align-items:center;gap:28px;font-size:14px}
.desktop-nav a{padding-block:12px}
.desktop-nav a:hover,.footer-services a:hover{color:var(--muted)}
.desktop-nav [aria-current=page]{text-decoration:underline;text-underline-offset:5px}
.header-actions{display:flex;gap:16px;align-items:center}
.menu-toggle{display:none;width:44px;height:44px;padding:10px;border:0;background:transparent;color:var(--ink)}
.menu-toggle span{display:block;height:1px;background:currentColor;margin:6px 0;transition:transform .2s}
.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(3.5px) rotate(45deg)}
.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-3.5px) rotate(-45deg)}
.mobile-nav{position:absolute;top:100%;left:0;right:0;z-index:10;padding:20px 24px;background:var(--paper);border:1px solid var(--line)}
.mobile-nav a{display:block;padding:12px 0;font-size:18px}
.hero{padding-top:64px;padding-bottom:64px}
.hero-grid{display:grid;grid-template-columns:1fr 1.08fr;align-items:center;gap:64px}
.hero-copy h1{margin-bottom:28px}
.hero-lead{max-width:480px;font-size:18px;line-height:1.5}
.price-line{margin-top:24px;color:var(--ink);font-size:16px}
.under-cta{margin-top:12px;font-size:14px}
.hero-figure{min-width:0}
.hero-cover{aspect-ratio:16/9;background:#332b24;display:flex;align-items:center;overflow:hidden}
.hero-cover img{width:100%;height:auto}
.hero-figure figcaption{margin-top:12px;display:flex;justify-content:space-between;gap:16px;color:var(--muted);font-size:var(--small-12,12px)}
.site-footer{padding-top:48px;padding-bottom:24px}
.footer-main{display:grid;gap:48px}
.footer-services{display:grid;grid-template-columns:1fr 1fr;gap:12px 32px;font-size:14px}
.footer-bottom{display:flex;justify-content:space-between;gap:24px;border-top:1px solid var(--line);margin-top:48px;padding-top:20px;font-size:var(--small-12,12px)}
.footer-bottom nav{display:flex;flex-wrap:wrap;gap:24px;align-items:center}
.footer-bottom button{background:none;border:0;padding:0;color:inherit;font:inherit}
.footer-bottom a:hover,.footer-bottom button:hover{text-decoration:underline}
.reveal{opacity:1}
.reveal.entered{animation:portal-reveal .6s ease both}
@keyframes portal-reveal{from{transform:translateY(20px)}to{transform:translateY(0)}}
@media(max-width:991px){:root{--gutter:24px}h2{font-size:36px}.desktop-nav{gap:18px}.header-cta{display:none}.hero{padding-block:48px 64px}.hero-grid{gap:32px}.hero h1{font-size:clamp(44px,5.5vw,56px)}.footer-main{gap:32px}}
@media(max-width:767px){h2{font-size:32px}h3{font-size:24px}.desktop-nav{display:none}.menu-toggle{display:block}.site-header{min-height:80px}.header-cta{display:inline-flex}.hero{padding-top:40px;padding-bottom:48px}.hero-grid{grid-template-columns:1fr;gap:40px}.hero h1{font-size:clamp(44px,8vw,60px)}.hero-copy h1{margin-bottom:24px}.hero-lead{font-size:17px;max-width:540px}.hero-figure figcaption{font-size:var(--small-11,11px);gap:12px}.footer-main{gap:32px}.footer-bottom{flex-direction:column;gap:16px;margin-top:32px}}
@media(max-width:479px){.header-cta{display:none}.hero h1{font-size:44px}.hero .price-line{font-size:15px}.hero-figure figcaption{display:block}.footer-services{grid-template-columns:1fr;gap:12px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}
.hero .hero-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);column-gap:64px;row-gap:0;align-items:start;grid-template-rows:minmax(216px,auto) minmax(81px,auto) auto auto auto}
.hero .hero-copy,.hero .hero-figure{display:contents}
.hero .hero-copy>*{grid-column:1}
.hero .hero-copy h1{grid-row:1}
.hero .hero-lead{grid-row:2}
.hero .price-line{grid-row:3}
.hero .hero-copy .button{grid-row:4;justify-self:start;align-self:end}
.hero .under-cta{grid-row:5}
.hero .hero-cover{grid-column:2;grid-row:1/5;align-self:end}
.hero .hero-figure figcaption{grid-column:2;grid-row:5;font-size:14px;line-height:1.5}
@media(min-width:768px) and (max-width:991px){.hero .hero-grid{column-gap:32px}.hero h1{font-size:clamp(36px,4.4vw,44px)}}
@media(max-width:767px){.hero .hero-grid{display:flex;flex-direction:column;gap:32px}.hero .hero-copy,.hero .hero-figure{display:block;width:100%}.hero .hero-figure figcaption{font-size:var(--small-12,12px)}}
@media(max-width:479px){#plans-title{font-size:26px}}
body .site-header .header-cta:hover,body .site-header .header-cta:focus-visible{background:var(--ink);color:var(--paper);border-color:var(--ink)}
:root{--faq-duration:400ms;--faq-easing:ease}
@media(min-width:768px) and (max-width:991px){.hero .hero-grid{grid-template-rows:minmax(216px,auto) minmax(108px,auto) auto auto auto}}
@media(max-width:767px){.hero-copy h1{min-height:180px}.hero-lead{min-height:102px}}
.footer-brand{display:flex;flex-direction:column;gap:16px;align-items:flex-start}
.footer-legal{font-style:normal;font-size:var(--small-13,13px);line-height:1.55;color:var(--muted,#77706a)}
.footer-legal a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.footer-legal a:hover{color:var(--ink,#1c1a19)}
.hero .price-line,.price-line{font-weight:600;color:var(--ink,#1c1a19);font-size:17px;line-height:1.45}
.h1-sub{display:block;font-size:.58em;line-height:1.15;margin-top:6px;letter-spacing:0}
.hero-copy h1{min-height:0}
.hero .hero-action{display:grid;grid-row:4/6;grid-template-rows:subgrid;justify-self:start;width:max-content;max-width:100%;min-width:0}
.hero .hero-action .button{grid-row:1;width:100%;max-width:100%;align-self:end}
.hero .hero-action .under-cta{grid-row:2;text-align:center;margin-top:12px;line-height:1.5}
.hero .hero-meta{grid-row:3;margin-top:24px;max-width:480px}
.hero .hero-figure figcaption{display:block;margin-top:12px;align-self:start}
.hero .hero-cover{width:100%;background:var(--soft)}
.hero .h1-sub{font-weight:400}
@media(max-width:767px){.hero .hero-action{display:block;margin-top:0}.hero .hero-copy h1,.hero .hero-lead{min-height:0}}
html{overscroll-behavior:none}
body{overflow-wrap:break-word}
.mobile-nav [aria-current=page]{text-decoration:underline;text-underline-offset:6px;font-weight:500}
.mobile-nav .mobile-booking{display:flex;margin-top:12px;padding:12px 16px}
@media(max-width:991px){:root{--small-11:14px;--small-12:14px;--small-13:14px}.site-header{min-height:80px;height:80px;gap:16px}.desktop-nav,.site-header .header-cta{display:none}.menu-toggle{display:block;flex-shrink:0}.mobile-nav{max-height:calc(100dvh - 96px);overflow-y:auto;overscroll-behavior:contain;padding:16px}.mobile-nav a{min-height:44px}body :is(a,button,summary,input,select,textarea,[tabindex],[contenteditable=true]){font-size: max(16px, 1em);touch-action:manipulation}body :is(input,select,textarea,[contenteditable=true]){font-size:16px!important}:where(main a,main button){display:inline-flex;align-items:center;min-width:44px;min-height:44px;max-width:100%}body :is(main button,main summary){min-width:44px;min-height:44px}.footer-services a,.footer-bottom a,.footer-bottom button,.footer-legal a{display:inline-flex;align-items:center;min-height:44px;min-width:44px}}
@media(max-width:767px){:root{--gutter:16px;--space:48px}body{font-size:16px;line-height:1.4}.container{width:calc(100% - 32px)}body .hero{padding-top:32px;padding-bottom:48px}body .hero .hero-grid{display:flex;flex-direction:column;gap:24px;min-width:0}body .hero .hero-copy,body .hero .hero-figure{display:block;width:100%;min-width:0}body .hero h1{font-size:clamp(36px,9vw,44px);font-weight:500;min-height:0;line-height:1.08;margin-bottom:24px;overflow-wrap:anywhere}body .hero .h1-sub{font-size:.72em;font-weight:400;line-height:1.2}body .hero .hero-lead{font-size:17px;line-height:1.45;min-height:0}body .hero .hero-action{width:100%;max-width:100%}body .hero .hero-action .button{width:100%;padding-inline:12px}body main h2,body #plans-title{font-size:32px;font-weight:500}body main h3{font-size:24px;font-weight:500}.footer-main,.footer-services{grid-template-columns:minmax(0,1fr)}.footer-bottom nav{align-items:flex-start;gap:8px 16px}}
@media(max-width:991px){body .yc-bar{position:static;max-width:calc(100% - 32px);margin:16px;flex-wrap:wrap;font-size:16px}body .yc-bar button,body .yc-panel button{min-height:44px;font-size:16px}body .yc-panel{width:min(340px,calc(100% - 32px));max-height:calc(100dvh - 32px);overflow:auto;font-size:16px}body .yc-panel .ctx,body .yc-pin{font-size:14px}}
.hero-cover img[src*="tascania-"],.hero-cover img[src*="pm-"]{width:100%;height:100%;object-fit:contain;background:var(--soft)}
body main figure:has(img)>figcaption{margin-top:12px}
body .hero .hero-cover{position:relative}
body .hero .hero-cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
body .hero .hero-cover{aspect-ratio:auto!important;height:auto;min-height:0}
body .hero .hero-cover img,body .report-grid figure img{position:static;inset:auto;width:100%;height:auto!important;min-height:0;max-height:none;aspect-ratio:auto!important;object-fit:cover;flex:none}
body img[data-image-frame]{display:block;position:static!important;inset:auto!important;width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;object-fit:cover!important;padding:0!important;flex:none}
body img[data-image-frame="16-9"]{aspect-ratio:16/9!important}
body img[data-image-frame="4-3"]{aspect-ratio:4/3!important}
body img[data-image-frame="4-5"]{aspect-ratio:4/5!important}
body .hero-cover:has(>img[data-image-frame]){height:auto!important;min-height:0!important;aspect-ratio:auto!important;padding:0!important;align-self:start}
body .site-header .logo{display:inline-flex;min-height:44px;align-items:center}
body .site-header .header-cta{border-color:var(--muted)}
nav [aria-current=location]{text-decoration:underline;text-underline-offset:6px}
body .hero .hero-figure{display:block;grid-column:2;grid-row:1/6;align-self:end;min-width:0}
body .hero .hero-figure figcaption{margin-top:12px}
@media(max-width:991px){:root{--space:48px}body .hero .hero-figure{display:block;width:100%}body.nav-open{overflow:hidden}}
@media(max-width:767px){body .hero .hero-figure{grid-column:1;grid-row:auto}}
body .site-header a.logo{height:44px;min-height:44px;align-items:center}
.case-services a{text-decoration:underline;text-underline-offset:4px}
.footer-main{grid-template-columns:1.2fr .7fr 1.5fr}
.footer-pages{display:flex;flex-direction:column;gap:12px;font-size:14px}
.footer-pages a:hover{text-decoration:underline}
@media(max-width:991px){.footer-main{grid-template-columns:1fr 1fr}.footer-brand{grid-column:1/-1}}
@media(max-width:767px){.footer-main{grid-template-columns:minmax(0,1fr)}}
body .case-services .case-service-links{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px 16px}
.case-service-links>a{grid-column:span 3;min-width:0}
.case-service-links>a:only-child{grid-column:1/-1}
.case-service-links:has(>a:nth-child(3):last-child)>a,.case-service-links:has(>a:nth-child(5))>a{grid-column:span 2}
.case-service-links:has(>a:nth-child(3n + 2):last-child)>a:nth-last-child(-n + 2),.case-service-links:has(>a:nth-child(3n + 4):last-child)>a:nth-last-child(-n + 4){grid-column:span 3}
.hero-cover img[src*="pm-board-top-left"]{object-position:left top}
@media(max-width:991px){.footer-pages a{min-height:44px;display:inline-flex;align-items:center}}
/* Stage: Step 0. Foundation print rule; component/motion print rules stay with their source. */
@media print{.site-header,.site-footer,.yc-bar{display:none!important}.reveal{animation:none!important;opacity:1!important;transform:none!important}.container{width:100%}}
/* C03 Hero variants – docs/COMPONENTS.md §3 */
body .case-meta h2{font-size:var(--card-title);line-height:1.16;margin-bottom:8px}
.case-services p{font-size:14px}
.hero .case-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;max-width:none}
.case-meta>*{min-width:0}
body .case-meta .case-service-links{display:flex;flex-direction:column;gap:8px}
.case-meta .tags{display:flex;flex-direction:column;gap:8px;margin:0}
.hero-cover:has(img[src*="loyo-after-review"]){max-width:680px}
.hero .hero-action .button{gap:12px}
@media(min-width:768px){body .hero .hero-figure{display:contents}body .hero .hero-cover,body .hero .hero-cover:has(>img[data-image-frame]){grid-column:2;grid-row:1/5;align-self:end;max-height:100%;min-height:0}body .hero .hero-figure figcaption{grid-column:2;grid-row:5;align-self:start;margin-top:12px}}
body .hero.hero--legal{min-height:0;padding-bottom:32px}
body .hero--legal .hero-grid{display:block;grid-template-columns:1fr;row-gap:0;min-height:0;height:auto}
body .hero--legal .hero-copy{display:block;min-height:0;height:auto}
body .hero--legal .hero-copy h1{color:var(--ink);min-height:0;margin-bottom:24px}
body .hero--legal .hero-lead{max-width:640px}
body .hero--legal .hero-action{display:block}
.hero--legal .hero-grid+*{margin-top:40px}
body .hero.hero--long-title h1{font-size:clamp(32px,2.65vw,42px);line-height:1.15}
body .hero .hero-cover--portraits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;gap:16px;padding:0;background:var(--button)}
body .hero .hero-cover--portraits img{position:static;inset:auto;width:100%;height:auto;min-height:0;max-width:320px;object-fit:cover;object-position:center bottom;align-self:end}
@media(max-width:991px){body .hero .hero-cover--portraits{gap:8px}}
@media(max-width:767px){body .hero .hero-cover--portraits+figcaption{font-size:14px;line-height:1.4}}
/* C04 Section shell – docs/COMPONENTS.md §4 */
:root{--section-pad:64px; --section-head-gap:48px; --section-head-mb:48px; --block-gap:48px; --card-title:24px; --h3-list-gap:24px}
.section{padding-block:var(--section-pad)}
.section+.section{border-top:1px solid var(--line)}
.section-intro{margin-bottom:var(--block-gap);max-width:650px}
@media(max-width:991px){:root{--section-pad:48px}}
@media(max-width:767px){:root{--section-head-mb:32px;--block-gap:24px}}
@media print{.section{break-inside:avoid;padding-block:32px}}
/* C05 Section header – docs/COMPONENTS.md §5 */
.section-head{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:var(--block-gap) var(--section-head-gap); align-items:start; margin-bottom:var(--section-head-mb); min-width:0}
.section-head>*{min-width:0}
.section-head h2{grid-column:1;max-width:680px}
.section-head>p,.section-head-copy{grid-column:2;margin:0;max-width:650px;font-size:18px}
.section-head-copy>p{margin:0}
.section-head-copy>p+p{margin-top:16px}
@media(max-width:767px){.section-head{grid-template-columns:minmax(0,1fr);column-gap:0}.section-head>p,.section-head-copy{grid-column:1}}
/* C06 Case row – docs/COMPONENTS.md §6 */
.case-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:64px;align-items:start;min-width:0}
a.case-grid{border:0;border-bottom:1px solid var(--line);padding-block:32px;margin:0;background:transparent;color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}
a.case-grid:is(:hover,:focus){background:transparent}
a.case-grid:focus:not(:focus-visible){outline:none}
a.case-grid:focus-visible{outline:2px solid var(--ink);outline-offset:6px}
.case-grid>*{min-width:0}
.case-copy{padding:0;border:0}
body .case-copy h3{font-size:26px;margin-bottom:20px}
.case-copy p{max-width:none;font-size:16px;line-height:1.5}
.case-image{display:block;position:relative;overflow:hidden;background:var(--soft);height:auto;min-height:0;align-self:start}
.case-image img{width:100%;height:auto;object-fit:cover}
.case-caption{display:block;margin-top:12px;color:var(--muted);font-size:14px}
@media(max-width:991px){.case-grid{gap:32px}}
@media(max-width:767px){.case-grid{grid-template-columns:minmax(0,1fr);gap:24px}.case-grid>figure{grid-row:auto}body .case-copy h3{font-size:24px}.case-copy p{max-width:600px}}
/* C07 Service card – docs/COMPONENTS.md §7 */
.services-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px 32px;align-items:start;min-width:0}
.service-card{display:block;min-width:0;padding-top:24px;border-top:1px solid var(--line);background:transparent}
body .service-card :is(h2,h3){display:flex;align-items:baseline;justify-content:flex-start;gap:12px;font-size:var(--card-title);margin-bottom:16px;max-width:none}
.service-card p{font-size:16px;line-height:1.5;max-width:400px}
.service-arrow{display:inline-block;flex:none;opacity:0;font-size:1em;line-height:inherit;vertical-align:baseline;transition:opacity .2s}
.service-preview{display:grid;grid-template-rows:0fr;transition:grid-template-rows 700ms cubic-bezier(.22,.61,.36,1),margin-bottom 700ms cubic-bezier(.22,.61,.36,1),opacity 700ms cubic-bezier(.22,.61,.36,1),transform 700ms cubic-bezier(.22,.61,.36,1);margin-bottom:0;opacity:0;transform:translateY(-8px)}
.service-clip{min-height:0;overflow:hidden}
.service-picture{overflow:hidden;position:relative;height:auto;min-height:0;align-self:start}
.service-picture>img{display:block;position:static;width:100%;height:auto;object-fit:cover}
.service-card:is(:hover,:focus-visible) .service-preview{grid-template-rows:1fr;margin-bottom:16px;opacity:1;transform:none}
.service-card:is(:hover,:focus-visible) .service-arrow{opacity:1}
@media(max-width:991px){.services-grid{gap:32px}.service-arrow{opacity:1}}
@media(max-width:767px){.services-grid{grid-template-columns:minmax(0,1fr);gap:32px 24px}.service-preview{grid-template-rows:1fr;margin-bottom:16px;opacity:1;transform:none}}
@media(hover:none),(pointer:coarse){.service-preview{grid-template-rows:1fr;margin-bottom:16px;opacity:1;transform:none}.service-arrow{opacity:1}}
@media(prefers-reduced-motion:reduce){.service-preview{transition:none}}
/* C08 Plan card – docs/COMPONENTS.md §8 */
.plans-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:auto;gap:16px;min-width:0}
.plan-card{position:relative;display:grid;grid-template-rows:subgrid;grid-row:span 5;align-content:start;row-gap:0;min-width:0;padding:20px;background:var(--soft);border:1px solid transparent;transition:background .2s,border-color .2s}
.plan-card:hover,.plan-card:focus-visible{background:#e7e0d8;border-color:var(--line)}
.plan-badge{min-height:48px;display:flex;justify-content:center;align-items:flex-start;padding-bottom:12px}
.plan-badge-label{display:block;max-width:100%;border:1px solid var(--line);border-radius:20px;padding:4px 10px;font-size:14px;line-height:1.3;color:var(--muted)}
.plan-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}
body .plan-top h3,.plan-price{font-size:var(--card-title);font-weight:500;line-height:1.16;letter-spacing:-.025em;color:var(--ink);margin:0}
.plan-price{white-space:nowrap}
.plan-period{font-size:14px;font-weight:400;color:var(--muted);margin-left:2px;letter-spacing:0}
.plan-meta{font-size:14px;margin-top:10px}
.plan-description{margin-top:16px;font-size:15px;line-height:1.5;color:var(--ink);max-width:580px}
.plan-scope{margin-top:16px;padding-top:16px;border-top:1px solid var(--line);font-size:14px}
.plan-scope strong{display:block;color:var(--ink);font-weight:500;margin-bottom:8px}
.plan-prompt{display:none;margin-top:16px;font-size:14px;color:inherit}
@media(hover:none){.plan-prompt{display:block}}
.plan-card.pilot{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.pilot .plan-top h3,.pilot .plan-price,.pilot .plan-description,.pilot .plan-scope strong{color:var(--paper)}
.pilot .plan-meta,.pilot .plan-scope,.pilot .plan-period{color:var(--button)}
.pilot .plan-scope{border-color:rgba(255,253,251,.25)}
.pilot .plan-badge-label{color:var(--paper);border-color:rgba(255,253,251,.6)}
.plan-card.pilot:is(:hover,:focus-visible){background:#4b3e33;border-color:#4b3e33}
@media(max-width:991px){.plans-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:767px){.plans-grid{grid-template-columns:minmax(0,1fr)}.plan-card{display:flex;flex-direction:column;grid-row:auto;padding:16px}.plan-description{max-width:600px}}
/* C09 Onward cards – docs/COMPONENTS.md §9 */
.card-title-link{color:inherit;text-decoration:none;display:inline-flex;gap:8px;align-items:baseline}
#next-steps .onward-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:48px}
#next-steps .service-card{position:relative}
#next-steps .card-title-link::after{content:"";position:absolute;inset:0}
#next-steps .service-card:has(.card-title-link:focus-visible){outline:2px solid var(--ink);outline-offset:4px}
#next-steps .service-card p{max-width:none}
@media(max-width:991px){#next-steps .onward-grid{gap:32px}}
@media(max-width:767px){#next-steps .onward-grid{grid-template-columns:minmax(0,1fr);gap:24px}}
/* C10 Inline onward links – docs/COMPONENTS.md §10 */
.onward-links{display:flex;flex-wrap:wrap;align-items:center;gap:16px 32px;margin-top:24px}
@media(max-width:767px){.onward-links{align-items:flex-start;flex-direction:column;gap:12px}}
.onward-links .text-link{max-width:100%}
/* C11 Breadcrumbs – docs/COMPONENTS.md §11 */
.hero:has(.breadcrumbs){position:relative}
body .hero .breadcrumbs{position:absolute;top:2px;left:0;right:0;font-size:14px;line-height:1.2;color:var(--muted)}
.breadcrumbs ol{display:flex;align-items:center;gap:8px;list-style:none;margin:0;padding:0;min-height:32px}
.breadcrumbs li{display:flex;align-items:center;gap:8px;min-width:0}
.breadcrumbs li+li::before{content:"/";color:var(--muted)}
.breadcrumbs a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.breadcrumbs li:last-child{flex:1}
@media(max-width:991px){body .hero .breadcrumbs{top:-10px}.breadcrumbs ol{min-height:44px}.breadcrumbs a{min-height:44px;display:inline-flex;align-items:center}}
/* C12 Deliverables – docs/COMPONENTS.md §12 */
.report-card{background:var(--soft);padding:40px}
.report-card h3{font-size:32px;margin-bottom:24px}
.report-note{font-size:14px;margin:24px 0 12px}
.report-card>.deliverables-group+p{margin-top:24px}
.report-card>.button{align-self:flex-start}
.process-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px}
.process-link{margin-top:16px}
@media(max-width:991px){.process-grid{gap:32px}}
@media(max-width:767px){.report-card{padding:32px}.report-card h3{font-size:28px}.process-grid{grid-template-columns:1fr;gap:32px}}
@media(max-width:479px){.report-card{padding:24px}.report-card h3{font-size:28px}}
.home-page{--home-columns:minmax(0,1fr) minmax(0,1.35fr);--home-gap:64px}
.home-page .report-grid,.home-page .process-grid{grid-template-columns:var(--home-columns);column-gap:var(--home-gap)}
.home-page .report-grid{display:grid;align-items:center}
.home-page .report-card{padding:10px 0;background:none}
.home-page .report-card h3{font-size:24px;margin-bottom:24px}
.home-page .report-note{margin:24px 0 12px}
.home-page .report-preview img{width:100%;height:auto;max-height:none;object-fit:contain}
.home-page .report-preview figcaption{font-size:var(--small-12,12px);color:var(--muted);margin-top:12px}
@media(max-width:991px){.home-page{--home-gap:32px}}
@media(max-width:767px){.home-page{--home-columns:minmax(0,1fr);--home-gap:32px}.home-page .report-grid{row-gap:24px}.home-page .report-preview img{max-height:none}}
@media(min-width:768px){.home-page .report-grid{align-items:stretch}.home-page .report-preview{position:relative;min-height:0;display:block}.home-page .report-preview img{position:absolute;inset:0;width:100%;height:100%;min-height:0;object-fit:contain;background:var(--soft)}.home-page .report-preview figcaption{position:absolute;top:100%;left:0;margin-top:12px}}
.report-grid{align-items:stretch}
.report-card{display:flex;flex-direction:column}
.report-grid figure{display:flex;flex-direction:column}
.report-grid figure img{flex:1;object-fit:cover}
.report-card{padding-bottom:0;margin-bottom:-26px}
@media(max-width:767px){.report-grid,.process-grid{min-width:0}.report-grid>*,.process-grid>*{min-width:0}.report-card{margin-bottom:0;padding-bottom:24px}.home-page .report-preview img{height:auto}}
body.home-page .report-preview{display:block;align-self:start}
body.home-page .report-preview img,body.home-page .report-preview figcaption{position:static}
body.home-page .report-preview figcaption{margin-top:12px}
.deliverables-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px}
.deliverables-columns[data-columns="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}
.deliverables-group{min-width:0}
body .deliverables-group>h3{margin:0 0 24px}
.deliverables-group>h3{font-size:var(--card-title)}
.deliverables-group>p{font-size:16px}
.deliverables-group>ol{padding-left:20px}
.deliverables-group>p+p,.deliverables-group>ul+p,.deliverables-group>.text-link{margin-top:16px}
body ul.deliverables,body .deliverables-group>ul{display:grid;gap:12px;list-style:disc;padding-left:20px;margin:0}
body ul.deliverables>li,body .deliverables-group>ul>li{border:0;padding:0 0 0 4px;font-size:18px;line-height:1.5;letter-spacing:normal}
.deliverables-visual{min-width:0;align-self:stretch}
.deliverables-visual>div{overflow:hidden;background:var(--soft);border:1px solid var(--line)}
.deliverables-visual img{display:block;width:100%;height:auto;object-fit:cover}
.deliverables-visual figcaption{font-size:14px;color:var(--muted);margin-top:12px}
@media(max-width:767px){.deliverables-columns,.deliverables-columns[data-columns="3"]{grid-template-columns:minmax(0,1fr);gap:32px}}
.deliverables-note{font-size:14px;margin-top:28px}
/* C13 Steps – docs/COMPONENTS.md §13 */
ol.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;list-style:none;padding:0;margin:0}
ol.steps[data-columns="1"]{grid-template-columns:minmax(0,1fr)}
.steps>li{border-top:1px solid var(--line);padding-top:24px}
.steps h3{font-size:var(--card-title);margin-bottom:16px}
.steps p{font-size:16px}
.steps .step-label{display:block;font-size:14px;color:var(--muted);margin-bottom:12px}
@media(max-width:767px){ol.steps{grid-template-columns:minmax(0,1fr);gap:24px}}
ol.steps.steps--timeline{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0;padding:0}
ol.steps.steps--timeline>li{position:relative;border-top:1px solid var(--line);padding:24px 20px 0 0}
ol.steps.steps--timeline>li:last-child{padding-right:0}
ol.steps.steps--timeline>li:before{content:"";position:absolute;width:9px;height:9px;top:-5px;left:0;background:var(--muted);border-radius:50%}
ol.steps.steps--timeline>li:nth-child(2):before{background:var(--ink)}
ol.steps.steps--timeline h3{font-size:22px;margin-bottom:16px}
ol.steps.steps--timeline p{font-size:14px;margin-top:12px}
ol.steps.steps--timeline strong{font-weight:500;color:var(--ink)}
@media(max-width:767px){ol.steps.steps--timeline{grid-template-columns:1fr;gap:0}ol.steps.steps--timeline>li{border-top:0;border-left:1px solid var(--line);padding:0 0 28px 24px}ol.steps.steps--timeline>li:last-child{padding-bottom:0}ol.steps.steps--timeline>li:before{left:-5px;top:6px}ol.steps.steps--timeline h3{margin-bottom:12px}}
ol.steps.steps--timeline{grid-template-rows:auto auto auto}
ol.steps.steps--timeline>li{display:grid;grid-template-rows:subgrid;grid-row:span 3;align-content:start}
@media(max-width:767px){ol.steps.steps--timeline{grid-template-rows:none}ol.steps.steps--timeline>li{display:block;grid-row:auto}}
@media(min-width:768px){ol.steps.steps--timeline>li:last-child{justify-self:start;width:fit-content;max-width:100%}ol.steps.steps--timeline>li{border-top:0;padding-top:0}ol.steps.steps--timeline h3{line-height:33.6px;margin-bottom:40px}ol.steps.steps--timeline>li:before{top:61px}ol.steps.steps--timeline>li:after{content:"";position:absolute;top:65px;left:0;right:0;height:1px;background:var(--line)}}
@media(min-width:992px){ol.steps.steps--timeline>li:before{top:61.1px}ol.steps.steps--timeline>li:after{top:65.6px}ol.steps.steps--timeline p{max-width:none}}
/* C14 FAQ – docs/COMPONENTS.md §14 */
.faq-list details{padding:24px 0;border-bottom:1px solid var(--line)}
.faq-list details:first-child{border-top:1px solid var(--line)}
.faq-section:has(+.section) .faq-list details:last-child{border-bottom:0}
.faq-list summary{list-style:none;display:flex;align-items:start;justify-content:space-between;gap:24px;font-size:24px;line-height:1.25;font-weight:500;letter-spacing:-.01em;cursor:pointer}
.faq-list summary::-webkit-details-marker{display:none}
.faq-icon{position:relative;width:24px;height:24px;flex-shrink:0;margin-top:3px}
.faq-icon:before,.faq-icon:after{content:'';position:absolute;background:var(--ink)}
.faq-icon:before{width:16px;height:1px;top:11px;left:4px}
.faq-icon:after{width:1px;height:16px;top:4px;left:11px}
.faq-icon{transition:transform var(--faq-duration) var(--faq-easing)}
.faq-list details[open] .faq-icon{transform:rotate(45deg)}
.faq-list details.faq-closing .faq-icon{transform:rotate(0)}
.faq-answer{padding-top:16px;padding-right:48px;max-width:830px}
@media(max-width:767px){.faq-list summary{font-size:21px;gap:16px}.faq-list details{padding:20px 0}.faq-answer{padding-right:0}body .faq-list summary{font-size:21px;font-weight:500}}
.faq-section{overflow-anchor:none}
.faq-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;align-items:start}
.faq-body>.faq-list{grid-column:2;min-width:0;margin:0}
.faq-body>.rendering-terms{grid-column:2;max-width:62ch;margin-top:24px;font-size:16px}
.faq-answer>p{margin:0}
@media(max-width:991px){.faq-body{gap:32px}}
@media(max-width:767px){.faq-body{grid-template-columns:minmax(0,1fr);gap:24px}.faq-body>.faq-list,.faq-body>.rendering-terms{grid-column:1}}
.faq-body:has(>.rendering-terms){row-gap:0}
/* C15 Final CTA – docs/COMPONENTS.md §15 */
.cta-block{display:block;padding-block:64px;background:var(--soft)}
.cta-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:64px;align-items:center}
.cta-copy h2{max-width:650px}
.cta-steps{display:flex;flex-wrap:wrap;gap:12px 24px;list-style:none;padding:0;margin:28px 0 20px;font-size:16px}
.cta-steps li:not(:last-child):after{content:'→';margin-left:24px;color:var(--muted)}
.cta-reassurance{font-size:14px;max-width:640px}
.cta-action{justify-self:end}
@media(max-width:767px){.cta-block{padding-block:48px}.cta-grid{grid-template-columns:1fr;gap:32px}.cta-action{justify-self:start}.cta-steps{display:grid;gap:12px}.cta-steps li:not(:last-child):after{content:none}}
@media(max-width:479px){.cta-copy h2{font-size:28px}.cta-action,.cta-action .button{width:100%}}
.cta-action .under-cta{text-align:center}
@media(max-width:767px){body .cta-block{padding-block:48px}body .cta-copy h2{font-size:32px;font-weight:500}.cta-copy{display:block}.cta-action,.cta-action .button{width:100%;max-width:100%}.cta-action .button{padding-inline:12px}}
@media(max-width:991px){body[class] .cta-block{padding-block:48px}}
.cta-block{margin-top:0}
/* C16 Testimonials – docs/COMPONENTS.md §16 */
.testimonials-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}
.testimonials-card{display:flex;flex-direction:column;min-width:0;margin:0;padding:24px;background:var(--soft)}
.testimonials-card blockquote{margin:0 0 28px;font-size:20px;line-height:1.5}
.testimonials-card blockquote p{font-size:inherit;line-height:inherit;color:var(--ink)}
.testimonials-attribution{display:flex;flex-direction:column;align-items:flex-start;gap:12px;margin-top:auto;font-size:14px;line-height:1.5;color:var(--muted)}
/* optional translation note under the caption */
.testimonials-note{display:block;margin-top:-6px;font-size:14px;line-height:1.5;font-style:normal;color:var(--muted)}
@media(max-width:991px){.testimonials-grid{grid-template-columns:minmax(0,1fr);gap:32px}}
@media(max-width:767px){.testimonials-card blockquote{font-size:18px}}
.testimonials-card blockquote::before{content:'“';display:block;font-size:64px;line-height:1;color:var(--muted);margin-bottom:8px}
/* C17 Gallery – docs/COMPONENTS.md §17 */
.gallery{margin:0;min-width:0;max-width:100%;touch-action:pan-y pinch-zoom}
.carousel,.carousel-slide{min-width:0;margin:0}
.gallery .carousel-slide>img[data-image-frame]{display:block;position:static;inset:auto;min-height:0;max-height:none;height:auto;aspect-ratio:auto;object-fit:cover;flex:none;margin-inline:auto;width:min(100%,calc(min(68vh,612px)*var(--frame-ratio,1.77778)))!important}
.gallery [data-image-frame="16-9"]{--frame-ratio:1.77778}
.gallery [data-image-frame="4-3"]{--frame-ratio:1.33333}
.gallery [data-image-frame="4-5"]{--frame-ratio:.8}
.gallery .carousel-slide>img[src*="pm-"][src*="-desktop"],.gallery .carousel-slide>img[src*="pm-board-top-left"],.gallery .carousel-slide>img[src*="terra-masterplan-gallery"]{max-width:960px!important}
.gallery img[src*="pm-"],.gallery img[src*="board-"]{object-position:left top}
.gallery--ui-frame .carousel-slide>img{border:1px solid var(--line)}
.gallery-caption,.gallery .carousel-slide figcaption,.gallery .screen-caption{margin-top:12px;font-size:14px;line-height:1.5;color:var(--muted)}
.gallery--captioned h3{font-size:24px;margin-bottom:16px}
.gallery--captioned figcaption>h3{font-size:16px;font-weight:600;line-height:1.5;letter-spacing:0;margin:0;color:var(--ink)}
.gallery--captioned figcaption>p{font-size:14px}
.carousel-controls,.carousel-dots{display:flex;align-items:center;justify-content:center;flex-wrap:nowrap;gap:0;min-width:0}
.carousel-controls{margin:12px auto 0;width:max-content;max-width:100%}
.carousel-controls[hidden],.carousel-dots[hidden]{display:none}
.carousel-controls button{display:grid;place-items:center;box-sizing:border-box;width:44px;height:44px;min-width:44px;flex:0 0 44px;padding:0;border:0;background:transparent;color:var(--ink)}
.carousel-controls :is(.carousel-prev,.carousel-next){opacity:.5;transition:opacity .2s,color .2s}
.carousel-controls :is(.carousel-prev,.carousel-next):is(:hover,:focus-visible){opacity:1;color:var(--accent,var(--ink))}
.carousel-controls :is(.carousel-prev,.carousel-next) svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.carousel-dots button::before{content:'';display:block;width:6px;height:6px;border-radius:50%;background:#777}
.carousel-dots button[aria-pressed=true]::before{background:var(--ink)}
.gallery[data-carousel-ready]:not(.gallery--track) .carousel-slides{display:grid;align-items:start}
.gallery[data-carousel-ready]:not(.gallery--track) .carousel-slide{grid-area:1/1;display:block;opacity:1;visibility:visible;transition:opacity .25s ease,visibility 0s;transform:none;animation:none}
.gallery[data-carousel-ready]:not(.gallery--track) .carousel-slide[hidden]{display:block!important;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .25s ease,visibility 0s .25s}
.gallery--pair .comparison-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;align-items:start}
.gallery--pair .comparison-pair h3{margin-bottom:16px}
.gallery--pair .comparison-pair img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover}
.gallery .carousel-slide>img[data-image-frame="brochure-spread"]{width:100%!important;height:auto!important;aspect-ratio:2400/848!important}
.gallery--track .carousel{min-width:0;max-width:100%;overflow:hidden;touch-action:pan-y pinch-zoom}
.gallery--track .carousel-slides{display:flex;gap:16px;transition:transform .3s ease}
.gallery--track .carousel-slide{flex:0 0 60%;opacity:1;visibility:visible;position:static}
.gallery--track .carousel-slide img[data-image-frame]{width:100%!important;height:auto!important;aspect-ratio:4/5!important;object-fit:cover}
.gallery--track .carousel-controls button:disabled{opacity:.35;cursor:default}
.gallery--static{max-width:864px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}
.gallery--static figure{margin:0;min-width:0}
.gallery--static img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.gallery--static figcaption{font-size:14px;line-height:1.5;color:var(--muted);margin-top:12px}
.gallery--track .carousel{max-width:1056px;margin-inline:auto}
@media(max-width:767px){.gallery--track .carousel-slide{flex-basis:76%}}
@media(max-width:767px){.gallery--pair .comparison-pair{grid-template-columns:minmax(0,1fr);gap:32px}.gallery--static{grid-template-columns:1fr;max-width:400px}.gallery--captioned figcaption>h3{margin-bottom:8px}}
@media(max-width:359px){.gallery .carousel-controls:has(.carousel-dots button:nth-child(6)){display:grid;grid-template-columns:44px minmax(0,1fr) 44px}.gallery .carousel-controls:has(.carousel-dots button:nth-child(6)) .carousel-dots{grid-column:1/-1;grid-row:2}.gallery .carousel-controls:has(.carousel-dots button:nth-child(6)) .carousel-next{grid-column:3;grid-row:1}.gallery .carousel-controls:has(.carousel-dots button:nth-child(6)) .carousel-prev{grid-column:1;grid-row:1}}
@media(prefers-reduced-motion:reduce){.gallery[data-carousel-ready]:not(.gallery--track) .carousel-slide,.gallery[data-carousel-ready]:not(.gallery--track) .carousel-slide[hidden],.gallery--track .carousel-slides{transition:none}}
/* C18 Form – docs/COMPONENTS.md §18 */
.cta-form{display:grid;gap:16px;min-width:0}
.cta-form-field{display:grid;gap:8px}
.cta-form-field label{font-size:14px;font-weight:500}
.cta-form-field label span{font-weight:400;color:var(--muted)}
.cta-form-field input{width:100%;min-width:0;min-height:52px;padding:12px 16px;border:1px solid var(--line);border-radius:0;background:var(--paper);color:var(--ink);font-size:16px}
.cta-form-field input{outline:none;box-shadow:none;transition:background-color 200ms ease-out,border-color 200ms ease-out}
.cta-form-field input:is(:hover,:focus){background:var(--soft)}
.cta-form-field input:focus{border-color:var(--ink)}
.cta-form input[type="checkbox"]:focus-visible{outline:1px solid var(--ink);outline-offset:3px}
.cta-form .cf-turnstile[data-sitekey=""]:empty{display:none}
.cta-form-consent{display:flex;align-items:flex-start;gap:12px;font-size:14px;color:var(--muted);cursor:pointer}
.cta-form-consent input{appearance:none;display:grid;place-content:center;flex:0 0 24px;width:24px;height:24px;margin:2px 0 0;border:1px solid var(--line);border-radius:0;background:var(--paper);color:var(--ink);cursor:pointer}
.cta-form-consent input:checked{background:var(--ink);color:var(--paper)}
.cta-form-consent input:checked::before{content:'';width:10px;height:6px;border-left:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-1px) rotate(-45deg)}
@media(forced-colors:active){.cta-form-consent input:checked{background:Canvas;color:CanvasText}}
.cta-form-consent-help{margin:8px 0 0 36px;font-size:14px;line-height:1.5;color:var(--muted)}
.cta-form-consent-help a{text-decoration:underline;text-underline-offset:3px}
.cta-form-action{width:fit-content;max-width:100%;margin-top:8px}
.cta-form-action .under-cta{text-align:center;margin-top:12px}
.cta-form-action .button:disabled{opacity:1;cursor:not-allowed;transform:none}
.cta-form-hint{font-size:var(--small-13,13px);line-height:1.5;text-align:center;margin-top:12px}
.cta-form-status{font-size:14px;color:var(--ink)}
.cta-form-status:empty{display:none}
@media(max-width:767px){.cta-form-consent{min-height:44px;align-items:start}.cta-form-consent input{margin-top:1px}}
body :is(.cta-form-consent-help,.cta-form-status) a{display:inline;min-height:0;min-width:0;font-size:inherit;line-height:inherit;padding-block:8px;margin-block:-8px}
body .cta-form-consent input{margin-top:1px;font-size:inherit;min-height:24px}
@media(max-width:1023px){body .cta-form-consent,body .cta-form-consent-help,body .cta-form-consent input,body :is(.cta-form-consent-help,.cta-form-status) a{font-size:16px}body :is(.cta-form-consent-help,.cta-form-status) a{padding-block:10px;margin-block:-10px}}
.cta-field-error{min-height:1.5em;margin:0;font-size:14px;line-height:1.5;color:#a13f3f}
.cta-form-consent-group .cta-field-error{margin-left:36px}
.cta-form input[aria-invalid="true"]{border:1px solid #a13f3f;outline-color:#a13f3f}
.cta-form input[type="checkbox"][aria-invalid="true"]{outline:1px solid #a13f3f;outline-offset:2px}
@media(max-width:1023px){.cta-field-error,.cta-form-field label,.cta-form .under-cta,.cta-form-hint,.cta-form-status{font-size:16px}}
.cta-form-consent-row{display:flex;align-items:center;flex-wrap:wrap;gap:0 6px}
.cta-form-consent-group .cta-form-consent{align-items:center;min-height:44px}
.cta-form-consent-group .cta-form-consent-help{margin:0}
@media(min-width:768px){.cta-form-consent-row{flex-wrap:nowrap;white-space:nowrap}}
@media(max-width:767px){.cta-form-consent-group .cta-form-consent-help{margin-left:36px}.cta-form-action,.cta-form-action .button{width:100%}}
/* C19 Stats – docs/COMPONENTS.md §19 */
.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;margin:0}
.stats>div{display:flex;flex-direction:column-reverse;gap:8px;border-top:1px solid var(--line);padding-top:20px}
.stats dt{font-size:16px;color:var(--muted)}
.stats dd{margin:0;font-size:56px;font-weight:500;line-height:1.1;letter-spacing:-.03em}
@media(max-width:991px){.stats dd{font-size:48px}}
@media(max-width:767px){.stats{grid-template-columns:minmax(0,1fr);gap:24px}}
@media(max-width:479px){.stats dd{font-size:44px}}
/* C20 Comparison – docs/COMPONENTS.md §20 */
.comparison-wrap{overflow-x:auto;overscroll-behavior-x:contain;max-width:100%;min-width:0;padding:0;border:1px solid var(--line);border-radius:0;touch-action:pan-x pan-y pinch-zoom}
.comparison{border-collapse:collapse;width:100%;min-width:800px;table-layout:fixed;text-align:left;font-size:16px}
.comparison th,.comparison td{padding:20px;border-bottom:1px solid var(--line);font-size:16px;vertical-align:top}
.comparison th{font-weight:500}
.comparison th:first-child,.comparison td:first-child{width:25%}
.comparison thead th{font-size:24px;height:120px;background:var(--soft)}
.comparison .shared-row th,.comparison .shared-row td{background:var(--soft);font-size:20px;font-weight:500}
.comparison tbody tr:last-child th,.comparison tbody tr:last-child td{border-bottom:0}
.comparison-note{font-size:14px;margin-top:24px}
.comparison thead th>span{display:block;margin-top:8px;font-size:14px;font-weight:400;color:var(--muted)}
.scroll-hint{display:none;font-size:14px;margin-bottom:12px}
@media(max-width:991px){.scroll-hint{display:block}.comparison tbody th:first-child{position:sticky;left:0;background:var(--paper);z-index:1}.comparison .shared-row th:first-child{background:var(--soft)}}
@media print{.comparison{min-width:0}.comparison-wrap{overflow:visible}}
/* C21 Tags – docs/COMPONENTS.md §21 */
.tags{display:flex;flex-wrap:wrap;gap:8px 16px;list-style:none;padding:0;margin:24px 0 0;color:var(--muted);font-size:14px}
.tags>li{list-style:none;padding:0;border:0;color:var(--muted);font-size:14px;line-height:1.5}
/* C22 Buttons – docs/COMPONENTS.md §22 */
.hero-copy .button{margin-top:28px}
body .button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:14px 22px;border:1px solid transparent;border-radius:0;background:var(--button);color:var(--ink);font-size:14px;line-height:1.2;text-align:center;transition:background .2s,transform .2s}
.button:hover{background:#dcd2c8;transform:translateY(-2px)}
.button.primary{background:var(--ink);color:var(--paper)}
.button.primary:hover{background:#4b3e33}
.button.quiet{border-color:var(--line);background:transparent}
.button.quiet:hover{background:var(--soft)}
@media(prefers-reduced-motion:reduce){.button:hover{transform:none}}
@media(max-width:991px){body .button.primary{padding-inline:12px}}
@media(max-width:1023px){body .button{font-size:16px}}
/* C23 Text links – docs/COMPONENTS.md §23 */
body .text-link{display:inline-flex;gap:6px;align-self:flex-start;justify-self:start;width:fit-content;max-width:100%;border:0;padding-block:8px;font-size:14px;text-decoration:none;text-underline-offset:5px}
.text-link:has(.link-arrow){text-decoration:none}
.text-link:has(.link-arrow)>span:first-child{text-decoration:none;text-underline-offset:5px}
.text-link:hover{color:var(--muted)}
.text-link:hover>span:first-child{text-decoration:underline;text-underline-offset:5px}
button.text-link:hover{text-decoration:underline;text-underline-offset:5px}
body .text-link{align-items:baseline;background:transparent;color:inherit}
body .hero-action:has(>.text-link) .under-cta{text-align:left;align-self:start}
.text-link .link-arrow{flex-shrink:0;text-decoration:none}
@media(max-width:1023px){body .text-link{font-size:16px}}
/* C24 Cursor label – docs/COMPONENTS.md §24 */
.cursor-label{position:fixed;z-index:30;left:0;top:0;padding:10px 16px;border-radius:100px;background:var(--ink);color:var(--paper);font:400 14px/1.5 'Helvetica Now',Helvetica,Arial,sans-serif;pointer-events:none;opacity:0;transition:none;white-space:nowrap;transform:translate(-50%,-50%)}
.cursor-label.active{opacity:1}
@media(max-width:767px){.cursor-label{display:none}}
@media print{.cursor-label{display:none!important}}
@media(min-width:768px) and (hover:hover) and (pointer:fine){[data-cursor].cursor-active,[data-cursor].cursor-active *{cursor:none}}
@media(hover:none),(pointer:coarse){.cursor-label{display:none}}
/* C25 Cookie consent – docs/COMPONENTS.md §25 */
.yc-consent,.yc-settings{background:var(--paper);color:var(--ink);border:1px solid var(--line);padding:24px;font-size:16px;line-height:1.5}
.yc-consent{position:fixed;z-index:1000;left:24px;bottom:24px;width:min(460px,calc(100% - 48px));max-height:calc(100dvh - 48px);overflow:auto}
.yc-consent[hidden]{display:none}
.yc-consent p,.yc-settings p{margin:0;color:var(--muted)}
.yc-consent .yc-link{margin-top:16px}
.yc-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.yc-link{display:inline-block;background:none;border:0;padding:0;font:inherit;font-size:14px;color:var(--ink);text-decoration:underline;text-underline-offset:4px;cursor:pointer}
.yc-settings{margin:auto;width:min(560px,calc(100% - 40px));max-height:calc(100dvh - 40px);overflow:auto}
.yc-settings::backdrop{background:#231f1d88}
.yc-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}
.yc-heading h2{font-size:28px;line-height:1.2;margin:0}
.yc-close{flex-shrink:0;width:44px;height:44px;border:1px solid var(--line);background:none;color:var(--ink);font-size:28px;cursor:pointer}
.yc-option{display:flex;align-items:center;justify-content:space-between;gap:24px;border-top:1px solid var(--line);padding:20px 0;font-size:14px}
.yc-option:first-child{margin-top:24px}
.yc-option strong{display:block;font-size:18px;font-weight:500;margin-bottom:4px}
.yc-option span span{display:block;color:var(--muted)}
.yc-option>span:last-child:not(:first-child){white-space:nowrap;color:var(--muted)}
.yc-option input{width:24px;height:24px;flex-shrink:0;accent-color:var(--ink);cursor:pointer}
.yc-save{width:100%;margin-top:12px}
.yc-status{position:fixed;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(max-width:767px){.yc-consent{left:0;bottom:0;width:100%;padding:20px;max-height:85dvh;padding-bottom:max(20px,env(safe-area-inset-bottom))}.yc-settings{padding:20px}}
@media print{.yc-consent,.yc-settings,.yc-status{display:none!important}}
@media(max-width:991px){.yc-link{display:inline-flex;align-items:center;min-height:44px;min-width:44px}.yc-consent{left:0;bottom:0;width:100%;max-height:40dvh;max-height:calc(var(--mobile-viewport,100dvh)*.4);padding:16px 16px max(16px,env(safe-area-inset-bottom));overscroll-behavior:contain}.yc-consent p{font-size:14px;line-height:1.4}.yc-consent .yc-actions{margin-top:12px;gap:8px}.yc-consent .yc-link{margin-top:4px}.yc-page-shell{display:contents}body.yc-sheet-open{overflow:hidden}.yc-sheet-open .yc-page-shell{display:block;height:calc(var(--mobile-viewport,100dvh) - var(--cookie-sheet-height,0px));overflow-y:auto;overscroll-behavior:none;scroll-padding-block:16px}.yc-settings{max-height:calc(var(--mobile-viewport,100dvh) - 32px);padding:16px}}
@media(max-width:767px){.yc-option{gap:16px}.yc-option input{width:28px;height:28px}}
@media(max-width:991px){body.nav-open .yc-page-shell{overflow:hidden}}
@media(min-width:992px){body .yc-consent{left:0;right:0;bottom:0;width:100%;max-height:160px;display:flex;align-items:center;gap:24px;padding:12px 24px}body .yc-consent[hidden]{display:none}body .yc-consent p{max-width:720px;font-size:14px}body .yc-consent .yc-actions{margin:0;flex-shrink:0}body .yc-consent .yc-link{margin:0;flex-shrink:0}}
.yc-actions .button{flex:1 0 auto}
/* C26 Term rows – docs/COMPONENTS.md §26 */
.plan-terms{margin-top:24px}
.terms-intro{font-size:14px;color:var(--muted)}
.term-rows{margin:0;font-size:16px}
.term-rows>div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;padding:20px 0;border-top:1px solid var(--line)}
.term-rows dt{font-size:16px;font-weight:500}
.term-rows dd{margin:0;font-size:16px;max-width:65ch;overflow-wrap:anywhere;color:var(--ink)}
.term-rows[data-columns="2"]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 40px}
.term-rows[data-columns="2"]>div{grid-template-columns:120px minmax(0,1fr);gap:12px}
.term-rows>.term-row--full{grid-column:1/-1}
.terms-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 32px;margin:16px 0 0;padding:0;list-style:none}
.terms-list li{position:relative;padding:0 0 0 16px;border:0;font-size:14px;color:var(--muted)}
.terms-list li::before{content:'•';position:absolute;left:0}
@media(max-width:767px){.term-rows[data-columns="2"],.term-rows>div,.term-rows[data-columns="2"]>div{grid-template-columns:minmax(0,1fr)}.term-rows>div,.term-rows[data-columns="2"]>div{gap:8px}.terms-list{grid-template-columns:minmax(0,1fr)}}
.pl-terms{margin-top:24px}
/* C27 Story columns – docs/COMPONENTS.md §27 */
.story-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px}
.story-grid h2{margin-bottom:20px}
.story-grid p{max-width:44ch}
@media(max-width:991px){.story-grid{gap:24px}}
@media(max-width:767px){.story-grid{grid-template-columns:1fr;gap:32px}.story-grid p{max-width:60ch}}
/* C28 Team cards – docs/COMPONENTS.md §28 */
.team-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 32px}
.team-card{min-width:0}
.team-photo{place-items:center;overflow:hidden}
.team-photo img{min-height:0;object-position:center bottom}
.team-photo[data-photo-pending]{color:var(--muted);font-size:64px;font-weight:400;line-height:1}
.team-card h3{margin-top:20px}
.team-role{margin-top:8px;color:var(--ink);font-size:16px;line-height:1.4}
.team-description{margin-top:12px;max-width:34ch}
@media(max-width:991px){.team-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 24px}}
@media(max-width:767px){.team-grid{grid-template-columns:minmax(0,1fr);gap:32px}.team-photo{aspect-ratio:4/3}.team-card h3{margin-top:16px}.team-description{max-width:none}}
.team-photo img{width:100%;height:auto;max-width:320px;object-fit:cover;align-self:end}
.team-photo{display:block;aspect-ratio:auto;padding:0;background:transparent}
.team-photo[data-photo-pending]{padding:20px;background:var(--soft);aspect-ratio:4/3}
/* C24 Cursor label on touch (M3): linked image captions look clickable – docs/COMPONENTS.md §24 */
@media(hover:none),(pointer:coarse){.case-card-link .case-caption,.hero-cover[href]+figcaption{text-decoration:underline;text-underline-offset:5px}.case-card-link .case-caption::after,.hero-cover[href]+figcaption::after{content:" ↗";text-decoration:none;display:inline-block}}
/* C21 Tags (M4): linked tags carry an arrow on all widths – docs/COMPONENTS.md §21 */
.case-service-links>a{display:block}.case-service-links>a::after{content:"\00a0↗";display:inline}
/* C13 Steps (M7): mobile timeline dot centred on the step heading – docs/COMPONENTS.md §13 */
@media(max-width:767px){ol.steps.steps--timeline h3{line-height:25.6px}ol.steps.steps--timeline>li:before{top:8.3px}}
/* C20 Comparison (M8): phones – narrow sticky label column, one plan column per swipe – docs/COMPONENTS.md §20 */
@media(max-width:767px){
.comparison-wrap{container-type:inline-size;scroll-snap-type:x mandatory;scroll-padding-left:88px;-webkit-overflow-scrolling:touch}
.comparison{min-width:0;width:calc(88px + 3 * (100cqw - 88px))}
.comparison th,.comparison td{padding:12px}
.comparison th:first-child,.comparison td:first-child{width:88px;padding:12px 8px;font-size:14px;line-height:1.3;overflow-wrap:anywhere}
.comparison thead th{height:auto;font-size:20px}
.comparison thead th:first-child{position:sticky;left:0;z-index:2;font-size:20px}
.comparison thead th:not(:first-child),.comparison tbody td{width:calc(100cqw - 88px);scroll-snap-align:start}
.comparison thead th:not(:first-child){scroll-snap-align:start}
}
/* C10 Onward link following its lead-in sentence (owner 30.10, #32): sentence + link read as one block – docs/COMPONENTS.md §10 */
#deliverables p:has(+ .onward-links){margin-bottom:0}
#deliverables p + .onward-links{margin-top:8px}
@media(max-width:767px){#deliverables p + .onward-links{margin-top:4px}}

/* C09 Next case link on the section-lead grid column (R1, 1:1 grid, gap 48) – docs/COMPONENTS.md §9 */
.next-case{grid-template-columns:repeat(2,minmax(0,1fr));gap:48px}
@media(max-width:991px){.next-case{gap:32px}}
@media(max-width:767px){.next-case{grid-template-columns:1fr;gap:32px}}
/* C03 Case meta (R10, S2): equal spacing between links, no indent – docs/COMPONENTS.md §3 */
body .case-meta .case-service-links{gap:0}
body .case-meta .case-service-links a{display:block;min-height:0;min-width:0;margin:0;padding-block:4px;line-height:1.5}
/* C03 Case meta (R10): tablets and phones keep the 44px touch target through padding, spacing stays equal – docs/COMPONENTS.md §3 */
@media(max-width:1023px){body .case-meta .case-service-links a{padding-block:10px}}
/* C09 Onward cards (R3): grey hover returns, content 4px inward – docs/COMPONENTS.md §9 */
#next-steps .service-card{padding-inline:4px}
#next-steps .service-card:is(:hover,:focus-within){background:var(--soft)}
/* C12 Report action (R4): hint centred under the button – docs/COMPONENTS.md §12 */
.report-action{width:fit-content;max-width:100%;margin-top:24px}
.report-action .report-note{text-align:center;margin:12px 0 0}
/* C18 Form (R5): consent closer to the Company field – docs/COMPONENTS.md §18 */
.cta-form .cta-form-consent-group{margin-top:-16px}
/* C17 Track gallery (R6): frame spans the content container – docs/COMPONENTS.md §17 */
.gallery--track .carousel{max-width:none}
/* C13 Steps (S9): one rule everywhere – hairline above every step, none under the last – docs/COMPONENTS.md §13 */
.steps:not(.steps--timeline)>li{border-top:1px solid var(--line);border-bottom:0;padding:24px 0 0}
/* C20 Comparison (R7, S7): phones – 128px label column, word-boundary wrapping, static shared row – docs/COMPONENTS.md §20 */
@media(max-width:767px){
.comparison-wrap{scroll-padding-left:128px}
.comparison{width:calc(128px + 3 * (100cqw - 128px))}
.comparison th:first-child,.comparison td:first-child{width:128px;overflow-wrap:normal;word-break:normal;hyphens:none}
.comparison thead th:not(:first-child),.comparison tbody td{width:calc(100cqw - 128px);overflow-wrap:normal;word-break:normal;hyphens:none}
.comparison tbody .shared-row th:first-child{position:static;padding:0;scroll-snap-align:none}
.comparison .shared-label{display:block;position:sticky;left:0;box-sizing:border-box;width:100cqw;padding:12px}
}

/* C12 Report action (S4): phone – button and hint centred – docs/COMPONENTS.md §12 */
@media(max-width:767px){.report-action{margin-inline:auto}}
/* C18 Form (S5): 8px grid rhythm, error slot only on fields that can show an error – docs/COMPONENTS.md §18 */
.cta-form{gap:8px}
.cta-form-field{gap:8px}
.cta-form .cta-field-error{min-height:16px;line-height:16px;margin-top:-4px}
.cta-form-field:not(:has(.cta-field-error)){margin-bottom:8px}
.cta-form .cta-form-consent-group{margin-top:0}
/* C17 Track gallery (S6, T6): centre slide full, sides partly visible – docs/COMPONENTS.md §17 */
.gallery--track .carousel-slide{flex-basis:calc(38% - 16px)}
@media(max-width:767px){.gallery--track .carousel-slide{flex-basis:72%}}

/* C12 Report order (T4): phone – image, then button and hint – docs/COMPONENTS.md §12 */
@media(max-width:767px){.home-page .report-card{display:contents}.home-page .report-preview{order:1}.home-page .report-action{order:2;margin-top:0}.home-page .report-grid{row-gap:24px}}
/* C12 Report order (T4b): phone – Based on N documents sentence under the image, before the button – docs/COMPONENTS.md §12 */
@media(max-width:767px){.home-page .report-card>p:not(.report-note){order:2;margin-top:0}.home-page .report-action{order:3}}
/* T-082 Part A. Ported from the approved example (tasks/T-082-impl/approved-variant). One grid: container 1360 at 1440,
   gutter 48, halves 40–696 | 744–1400. Desktop only (>=768) unless stated. Review-only toggles and diff marks are NOT ported. */

/* Grid: every 2-half block 1:1, gap 48 */
@media (min-width: 768px) {
  .section-head, .section-head:has(+ .case-grid) { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: var(--section-head-gap); }
  .case-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px; }
  .mr-method, .mr-request-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px; }
  .home-page { --home-columns: minmax(0, 1fr) minmax(0, 1fr); --home-gap: 48px; }
  .services-grid:not(.onward-grid) { gap: 40px 48px; }
  .gallery--pair .comparison-pair { gap: 48px; }
  .term-rows[data-columns="2"] { gap: 16px 48px; }
  .terms-list { column-gap: 48px; }
  .privacy-layout { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px; }
  .privacy-section h2 { max-width: none; }
  .gallery--static { max-width: none; gap: 48px; }
  .footer-main { grid-template-columns: 656fr 304fr 304fr; }
  .footer-services { grid-template-columns: minmax(0, 1fr); }
}
@media (min-width: 992px) {
  .hero .hero-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 48px; }
}

/* Images keep their native ratio inside the grid blocks (no browser crop) */
.case-grid img, .hero-cover img, .report-grid img, .process-grid img, .mr-method img, .mr-request-grid img {
  width: 100%; height: auto !important; aspect-ratio: auto !important; object-fit: contain;
}
.case-grid :is(figure, picture, div, span):has(> img), .hero-cover, .report-grid figure, .process-grid figure { aspect-ratio: auto !important; height: auto !important; }

/* Media block (single-image crossfade, not the brochure spreads): heading left, image from 744, caption / controls / link under the image */
@media (min-width: 768px) {
  .section:has(> figure.gallery--crossfade):not(:has(img[data-image-frame="brochure-spread"])) {
    display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 48px;
    grid-template-rows: auto auto auto auto auto; align-items: start;
  }
  .section:has(> figure.gallery--crossfade):not(:has(img[data-image-frame="brochure-spread"])) > .section-head { grid-column: 1 / -1; }
  .section:has(> figure.gallery--crossfade):not(:has(img[data-image-frame="brochure-spread"])) > figure.gallery--crossfade { display: contents; }
  .section:has(> figure.gallery--crossfade):not(:has(img[data-image-frame="brochure-spread"])) > figure.gallery--crossfade > .carousel { grid-column: 2; grid-row: 2; min-width: 0; }
  .section:has(> figure.gallery--crossfade):not(:has(img[data-image-frame="brochure-spread"])) > figure.gallery--crossfade .carousel-slide > img[data-image-frame] { margin-inline: 0; }
  .section:has(> figure.gallery--crossfade):not(:has(img[data-image-frame="brochure-spread"])) > figure.gallery--crossfade > figcaption { grid-column: 2; grid-row: 3; margin-top: 12px; text-align: left; }
  .section:has(> figure.gallery--crossfade):not(:has(img[data-image-frame="brochure-spread"])) > figure.gallery--crossfade > .carousel-controls { grid-column: 2; grid-row: 4; margin: 12px 0 0; justify-self: start; }
  .section:has(> figure.gallery--crossfade):not(:has(img[data-image-frame="brochure-spread"])) > a.text-link { grid-column: 2; grid-row: 5; align-self: start; justify-self: start; margin-top: 16px; }
}

/* Steps: four steps in one row; note slot under the steps */
@media (min-width: 768px) {
  ol.steps:not(.steps--timeline):has(> li:nth-child(4)):not(:has(> li:nth-child(5))) { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
.steps-note { margin: 24px 0 0; font-size: 14px; line-height: 1.5; color: var(--muted); }

/* Two-card galleries (Gallery.astro layout cards): 40–696 | 744–1400, caption under each; rest = carousel below */
.gallery--cards { margin-top: 0; }
.cards-two { display: grid; grid-template-columns: minmax(0, 1fr); gap: 32px; align-items: start; }
.cards-two .card { margin: 0; min-width: 0; }
.cards-two .card img { display: block; width: 100%; height: auto; }
.cards-two .card figcaption { margin-top: 12px; text-align: left; font-size: 14px; line-height: 1.5; color: var(--muted); }
.cards-two .card figcaption > h3 { margin: 0 0 4px; font-size: 16px; font-weight: 600; line-height: 1.5; letter-spacing: 0; color: var(--ink); }
.cards-two .card figcaption > p { margin: 0; }
.gallery--cards > .gallery { margin-top: 48px; }
.gallery--cards > .gallery .carousel { max-width: calc(50% - 24px); }
@media (min-width: 768px) { .cards-two { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px; } }
@media (max-width: 767px) { .gallery--cards > .gallery .carousel { max-width: none; } }
/* 4:5 pairs / cards: the 501×626 frame is set below */
.gallery--static img { aspect-ratio: auto; }

/* Pagination 24 px under the gallery, centred (the deck-consistency reference keeps its own pager) */
.gallery--cards > .gallery .carousel-controls, .gallery--pair:not(.case-gallery .gallery--pair) .carousel-controls { margin-top: 24px; }
.gallery--cards > .gallery .carousel-controls, .gallery--pair:not(.case-gallery .gallery--pair) .carousel-controls {
  margin-left: auto; margin-right: auto; justify-content: center; width: fit-content;
}
.case-gallery .gallery--pair .carousel-controls { margin-top: 24px; }

/* Pair captions (Project Passport and any pair with image captions) */
.gallery--pair .pair-caption { margin: 12px 0 0; font-size: 14px; line-height: 1.5; color: var(--muted); text-align: left; }
.gallery--pair.gallery--ui-frame .comparison-pair img { border: 1px solid var(--line); }

/* Case hero meta: one item per line, same 21 px step for Services links and Delivered tags */
.case-delivered .tags { display: flex; flex-direction: column; align-items: flex-start; gap: 0; }

/* Section-head description / heading top alignment: one shared rule */
@media (min-width: 768px) {
  .section-head { align-items: start; }
  .section-head > h2, .section-head > p { text-box: trim-start cap alphabetic; margin-top: 0; }
}

/* Vertical (4:5) images: 501×626 at desktop (reference: AI concepts card). Brochure spec sheet is the documented exception (anchor, centred, 560 wide). */
@media (min-width: 768px) {
  html body img[data-image-frame="4-5"] { width: 501px !important; max-width: 100% !important; height: 626px !important; aspect-ratio: 4 / 5 !important; object-fit: cover !important; margin-inline: 0; }
}

/* Brochure spec sheet (owner 31.10 01:08): right half from 744, native A4 501×709, caption under the image */
@media (min-width: 768px) {
  body.brochure-page .brochure-spec { margin: 0 0 0 calc(50% + 24px); }
  html body img[data-image-frame="brochure-a4"] { width: 501px !important; max-width: 100% !important; height: auto !important; aspect-ratio: auto !important; object-fit: contain !important; margin-inline: 0; }
}

/* /how-we-work/ «What you receive»: hairline above each card title, as in «From brief to handoff» */
#handoff .deliverables-group { border-top: 1px solid var(--line); padding-top: 24px; }
#handoff .deliverables-group > h3 { margin-bottom: 16px; }
@media (min-width: 768px) { html body .deliverables-columns ul li { max-width: 360px; } }
/* «Who does what»: two halves – lists stacked left, desktop board screen right (mobile board on phones) */
@media (min-width: 768px) {
  #responsibilities .deliverables-columns { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 32px 48px; align-items: start; }
  #responsibilities .deliverables-group { grid-column: 1; }
  #responsibilities .deliverables-visual { grid-column: 2; grid-row: 1 / span 2; align-self: start; border: 0; }
  #responsibilities .deliverables-visual, #responsibilities .deliverables-visual > div { overflow: visible; width: auto; }
  #responsibilities .deliverables-visual img { width: 100% !important; max-width: 100% !important; margin-left: 0 !important; height: auto !important; aspect-ratio: 16 / 9 !important; }
  #responsibilities .deliverables-columns ul li { max-width: none; }
}

/* About team: ONE 4:5 frame for every member (paper background, cutout bottom-aligned).
   To drop a real photo into a placeholder: add a "photo" object (src, alt, frame, width, height, loading, title)
   to web/src/content/team/<name>.json – same field as yaroslav.json / aleksiia.json. Placeholder reuses this frame. */
.team-photo, .team-photo[data-photo-pending] { aspect-ratio: 4 / 5; background: var(--button); display: flex; align-items: flex-end; justify-content: center; overflow: hidden; padding: 0; }
.team-photo[data-photo-pending] { align-items: center; justify-content: center; }
.team-photo img { width: 100%; height: 100%; max-width: none; object-fit: contain; object-position: center bottom; align-self: end; }
/* Stage: T-058 motion review. Every rule is gated by html.m-<item> (set by motion.js), so any item can be switched off.
   Only transform/opacity animate. Enter = ease-out, exit = ease-in. Reduced motion → nothing moves. */
:root{--m-out:cubic-bezier(.2,.7,.2,1);--m-in:cubic-bezier(.4,0,1,1);--m-fast:120ms;--m-ui:200ms;--m-reveal:520ms;--m-step:60ms}

/* Existing motion that this module now owns (keeps working without motion.js). */
.motion-js:not(.m-cta) .button,.motion-js:not(.m-cta) .button:hover{transform:none}
.motion-js:not(.m-case-card) a:is(.case-card-link,.case-grid) .case-image img{transform:none!important}
.motion-js .reveal.entered{animation:none}
.motion-js:not(.m-faq) .faq-list details{--faq-duration:1ms}

/* 1 cta – one explicit action-button pattern, including header and consent. */
.m-cta body [data-motion~="cta"]{transition:transform var(--m-ui) var(--m-out)}
.m-cta body [data-motion~="cta"]:is(:hover,:focus-visible):not(:disabled){transform:translateY(-2px)}
.m-cta body [data-motion~="cta"]:active:not(:disabled){transform:translateY(0) scale(.98);transition-duration:var(--m-fast)}

/* 2 nav – underline grows from the left; current page keeps its static underline. */
.m-nav [data-motion~="nav"]{position:relative}
.m-nav [data-motion~="nav"]::after{content:'';position:absolute;left:0;right:0;bottom:9px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform var(--m-ui) var(--m-in)}
.m-nav [data-motion~="nav"]:is(:hover,:focus-visible)::after{transform:scaleX(1);transition-timing-function:var(--m-out)}

/* 3 case-card – image scale (exists) gets ease-out; title shifts 4px toward the action. */
.m-case-card [data-motion~="case-card"] .case-image img{transition:transform 500ms ease-out}
.m-case-card [data-motion~="case-card"] :is(h2,h3){transition:transform var(--m-ui) var(--m-out)}
.m-case-card [data-motion~="case-card"]:is(:hover,:focus-visible) :is(h2,h3){transform:translateX(4px)}

/* 4 service-card – arrow nudges toward its direction (↗). */
.m-service-card [data-motion~="service-card"] .service-arrow{transition:opacity var(--m-ui) var(--m-out),transform var(--m-ui) var(--m-out)}
.m-service-card [data-motion~="service-card"]:is(:hover,:focus-visible) .service-arrow{transform:translate(3px,-3px)}

/* 5 plan-card – 2px lift confirms the whole card is the action. */
.m-plan-card [data-motion~="plan-card"]{transition:background var(--m-ui),border-color var(--m-ui),transform var(--m-ui) var(--m-out)}
.m-plan-card [data-motion~="plan-card"]:is(:hover,:focus-visible){transform:translateY(-2px)}

/* 6 reveal + 14 quotes – rise once, staggered; only blocks that were below the fold get .m-in. */
@keyframes m-rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes m-quote{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.m-reveal [data-motion~="reveal"].m-in,.m-quotes [data-motion~="quotes"].m-in{animation:m-rise var(--m-reveal) var(--m-out) both;animation-delay:calc(var(--m-i,0) * var(--m-step))}
.m-quotes [data-motion~="quotes"].m-in{animation-delay:calc(var(--m-i,0) * 100ms)}
.m-quotes [data-motion~="quotes"].m-in blockquote::before{animation:m-quote 360ms var(--m-out) both;animation-delay:calc(var(--m-i,0) * 100ms + 160ms)}
[data-motion].m-in.m-done{animation:none}

/* 8 carousel – new slide enters 16px from the side it came from; old one leaves instantly. */
@keyframes m-slide{from{opacity:0;transform:translateX(calc(var(--m-dir,0) * 16px))}to{opacity:1;transform:none}}
.m-carousel [data-motion~="carousel"]:not([data-carousel-ready]).m-live .carousel-slide:not([hidden]){animation:m-slide 260ms var(--m-out)}

/* 9 faq – height animation exists in portal.js; tune it: open 320 ms ease-out, close 260 ms ease-out. */
.m-faq [data-motion~="faq"]{--faq-duration:320ms;--faq-easing:cubic-bezier(.2,.7,.2,1)}
.m-faq [data-motion~="faq"].faq-closing{--faq-duration:260ms;--faq-easing:cubic-bezier(.2,.7,.2,1)}

/* 10 form – calm field tint, invalid field nudges once, button pulses while sending, status fades in. */
@keyframes m-nudge{0%,100%{transform:none}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
@keyframes m-busy{from{opacity:.6}to{opacity:.85}}
@keyframes m-status{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.m-form [data-motion~="form"] input{transition:background-color 200ms ease-out,border-color 200ms ease-out,outline-color 200ms ease-out}
.m-form [data-motion~="form"] [aria-invalid="true"]{animation:m-nudge 280ms var(--m-out)}
.m-form [data-motion~="form"] [aria-busy="true"]{animation:m-busy 700ms ease-in-out infinite alternate}
.m-form [data-motion~="form"] .cta-form-status:not(:empty){animation:m-status 240ms var(--m-out)}

/* 11 cookie – banner rises 8px and fades in; settings dialog scales from .98; exits are instant (frees the page). */
@keyframes m-sheet{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes m-dialog{from{opacity:0;transform:scale(.98)}to{opacity:1;transform:none}}
@keyframes m-fade{from{opacity:0}to{opacity:1}}
.m-cookie .yc-consent[data-motion~="cookie"]:not([hidden]){animation:m-sheet 240ms var(--m-out)}
.m-cookie .yc-settings[data-motion~="cookie"][open]{animation:m-dialog 200ms var(--m-out)}
.m-cookie .yc-settings[data-motion~="cookie"][open]::backdrop{animation:m-fade 200ms var(--m-out)}

/* 12 mobile-menu – panel drops 8px from the header, links follow 25 ms apart. */
@keyframes m-drop{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.m-mobile-menu [data-motion~="mobile-menu"]:not([hidden]){animation:m-drop 220ms var(--m-out)}
.m-mobile-menu [data-motion~="mobile-menu"]:not([hidden])>*{animation:m-rise 260ms var(--m-out) backwards;animation-delay:calc(var(--m-i,0) * 25ms + 40ms)}

/* 13 img-fade – only images still loading below the fold; no size change, so no layout shift. */
.m-img-fade img.m-img-wait{opacity:0}
.m-img-fade img.m-img-in{transition:opacity 320ms var(--m-out)}

@media (prefers-reduced-motion:reduce){
  [data-motion],[data-motion] *,[data-motion]::before,[data-motion]::after,[data-motion] *::before{animation:none!important;transition:none!important}
  [data-motion~="plan-card"]:hover,[data-motion~="case-card"] :is(h2,h3),[data-motion~="service-card"] .service-arrow{transform:none!important}
  img.m-img-wait{opacity:1!important}
}
@media print{[data-motion]{animation:none!important;opacity:1!important;transform:none!important}}

/* T-062 owns stable ready-gallery crossfades; the same item switch gates them. */
.motion-js:not(.m-carousel) body [data-carousel-ready] .carousel-slides>.carousel-slide{transition:none!important}
.motion-js:not(.m-cta) body [data-motion~="cta"]{transform:none!important;transition:none}
.motion-js:not(.m-mobile-menu) .menu-toggle span{transition:none}
/* A reveal never retains transform ownership after entry, even when interrupted. */
.motion-js [data-motion].m-done{animation:none}

.m-case-card body [data-motion~="case-card"]:is(:hover,:focus-visible) .case-image img{transform:scale(1.025)}

/* probe */
/* Stage: T-071 Step 9. Active page-only layout; shared blocks live in components.css. */
.next-case{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px}
.next-case{align-items:center}
@media(max-width:991px){.next-case{gap:32px}}
@media(max-width:767px){.next-case{grid-template-columns:1fr;gap:32px}.next-case a{overflow-wrap:anywhere}}
/* Stage: T-071 Step 9. Active page-only layout; shared blocks live in components.css. */
.mr-inside-layout{display:grid}
.mr-inside-layout>.content{grid-column:2}
@media(max-width:767px){.mr-inside-layout>.content{grid-column:1}.mr-inside-layout,.mr-inside-layout>*{min-width:0}}
.mr-method,.mr-request-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:64px}
.mr-inside-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--section-head-gap)}
.mr-method,.mr-request-grid{display:grid;align-items:start}
.mr-method h3{margin-bottom:20px}
.mr-method-note{margin-top:20px;font-size:14px}
.mr-request{background:var(--soft)}
.mr-request-copy p{margin-top:24px;max-width:40ch}
@media(max-width:991px){.mr-method,.mr-request-grid{gap:32px}}
@media(max-width:767px){.mr-inside-layout,.mr-method,.mr-request-grid{grid-template-columns:1fr;gap:28px}.mr-request-copy p{max-width:100%}.mr-method-note{max-width:65ch}}
@media(min-width:768px) and (max-width:1199px){.mr-request-grid{grid-template-columns:1fr}}
.report-success p{margin-top:20px}
/* Stage: T-071 Step 9. Active page-only layout; shared blocks live in components.css. */
.pl-pilot{display:grid;grid-template-columns:1fr 2fr;gap:40px;padding:32px;background:var(--soft)}
.pl-pilot-summary>p{font-size:16px;margin-top:20px}
.pl-pilot-note{margin-top:24px;font-size:14px}
@media(max-width:991px){.pl-pilot{grid-template-columns:1fr;gap:32px;padding:28px}.pl-pilot-summary{max-width:440px}}
.pl-pilot>.pl-pilot-note{grid-column:1/-1;margin:0}
@media(min-width:992px){.pl-pilot{row-gap:24px}.pl-pilot>div:nth-child(2){grid-column:2;grid-row:1/3}.pl-pilot>.pl-pilot-note{grid-column:1;grid-row:2}.pl-pilot-summary>p:first-of-type{line-height:24px}}
@media(max-width:767px){.pl-pilot{padding:16px}}
@media(min-width:992px){.pl-pilot-summary{width:calc(100% - 20px)}.pl-pilot{grid-template-columns:minmax(0,1fr) minmax(0,2fr);column-gap:72px;padding-right:0}}
/* Stage: T-071 Step 9. Active page-only layout; shared blocks live in components.css. */
.privacy-layout{display:grid;grid-template-columns:minmax(180px,1fr) minmax(0,2fr);gap:48px;align-items:start}
.privacy-index{position:sticky;top:32px;padding-block:64px}
.privacy-index ul{list-style:none;margin:0;padding:0}
.privacy-index a{padding:10px 0;color:var(--muted)}
.privacy-index a:hover,.privacy-index a:focus-visible{color:var(--ink);text-decoration:underline;text-underline-offset:5px}
.privacy-content{min-width:0}
.privacy-section{padding-block:64px;scroll-margin-top:24px}
.privacy-section+.privacy-section{border-top:1px solid var(--line)}
.privacy-section h2{max-width:700px;margin-bottom:24px}
.privacy-section p{max-width:70ch;line-height:1.65}
.privacy-section p+p{margin-top:16px}
.privacy-section a{text-decoration:underline;text-underline-offset:4px}
.tbd{overflow-wrap:anywhere}
.privacy-section .tbd{font-size:15px}
.privacy-noscript{padding-block:20px}
@media(max-width:767px){.privacy-layout{grid-template-columns:1fr;gap:0}.privacy-index{padding-block:32px;border-bottom:1px solid var(--line)}.privacy-index ul{display:grid;gap:0 24px}}
@media(max-width:479px){.privacy-index ul{grid-template-columns:1fr}}
@media print{.privacy-index{display:none}.privacy-layout{display:block}.privacy-section{break-inside:avoid;padding-block:24px}}
@media(max-width:767px){.privacy-section{padding-block:48px}.privacy-index{position:static}.privacy-index ul{grid-template-columns:1fr}.privacy-section p{line-height:1.5}}
.privacy-index a{font-size:16px;min-height:44px;display:flex;align-items:center}
/* Stage: T-071 Step 9. Active page-only layout; shared blocks live in components.css. */
.brochure-page img[data-image-frame="brochure-a4"]{aspect-ratio:1785/2526}
.brochure-page .brochure-spec{max-width:560px;margin:0 auto}
.brochure-spec figcaption{font-size:14px;line-height:1.5;color:var(--muted);margin-top:12px}
/*$vite$:1*/