/* === styles/_incumbent.css === */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-500:oklch(63.7% .237 25.331);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-900:oklch(20.8% .042 265.755);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-2xl:40px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"DM Sans", sans-serif;--default-mono-font-family:var(--font-mono);--font-display:"Sora", sans-serif}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:0}.top-4{top:calc(var(--spacing) * 4)}.top-\[50\%\]{top:50%}.right-4{right:calc(var(--spacing) * 4)}.left-\[50\%\]{left:50%}.z-50{z-index:50}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-16{height:calc(var(--spacing) * 16)}.h-\[500px\]{height:500px}.min-h-screen{min-height:100vh}.w-4{width:calc(var(--spacing) * 4)}.w-10{width:calc(var(--spacing) * 10)}.w-16{width:calc(var(--spacing) * 16)}.w-\[400px\]{width:400px}.w-fit{width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.flex-shrink-0,.shrink-0{flex-shrink:0}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.auto-rows-min{grid-auto-rows:min-content}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.gap-0{gap:0}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[10px\]{border-radius:10px}.rounded-\[20px\]{border-radius:20px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-\[rgba\(0\,0\,0\,0\.08\)\]{border-color:#00000014}.bg-\[\#1a1a19\]{background-color:#1a1a19}.bg-\[\#f8f8f7\]{background-color:#f8f8f7}.bg-background{background-color:var(--background)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-foreground{background-color:var(--foreground)}.bg-red-100{background-color:var(--color-red-100)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-slate-50{--tw-gradient-from:var(--color-slate-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-slate-100{--tw-gradient-to:var(--color-slate-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-foreground{fill:var(--foreground)}.p-0{padding:0}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-12{padding-top:calc(var(--spacing) * 12)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-\[26px\]{--tw-leading:26px;line-height:26px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.44px\]{--tw-tracking:-.44px;letter-spacing:-.44px}.tracking-\[-0\.154px\]{--tw-tracking:-.154px;letter-spacing:-.154px}.text-balance{text-wrap:balance}.whitespace-break-spaces{white-space:break-spaces}.whitespace-nowrap{white-space:nowrap}.text-\[\#34322d\]{color:#34322d}.text-\[\#858481\]{color:#858481}.text-background{color:var(--background)}.text-red-500{color:var(--color-red-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-900{color:var(--color-slate-900)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.underline-offset-4{text-underline-offset:4px}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0px_4px_11px_0px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:0px 4px 11px 0px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(var(--blur-2xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.zoom-in-95{--tw-enter-scale:.95}.paused{animation-play-state:paused}.running{animation-play-state:running}@media(hover:hover){.hover\:bg-\[\#1a1a19\]\/90:hover{background-color:#1a1a19e6}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}@media(min-width:40rem){.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:text-left{text-align:left}}.dark\:bg-transparent:is(.dark *){background-color:#0000}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing) * 6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing) * 6)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@media(prefers-reduced-motion:no-preference){.service-row{isolation:isolate;opacity:0;transition:opacity .52s cubic-bezier(.23,1,.32,1),transform .52s cubic-bezier(.23,1,.32,1);transition-delay:var(--service-delay,0s);position:relative;transform:translateY(24px)}.service-stack.is-revealed .service-row{opacity:1;transform:translateY(0)}.service-row:before{z-index:2;content:"";opacity:0;background:var(--accent);transform-origin:50%;width:3px;transition:opacity .18s,transform .28s cubic-bezier(.23,1,.32,1);position:absolute;top:0;bottom:0;left:0;transform:scaleY(.2)}.service-row:hover:before,.service-row:focus-within:before,.service-row.active:before{opacity:1;transform:scaleY(1)}.service-trigger{transition:background .22s,box-shadow .22s;position:relative;overflow:hidden}.service-trigger:after{content:"";background:var(--accent);height:1px;position:absolute;bottom:0;left:0;right:0}@supports (color:color-mix(in lab,red,red)){.service-trigger:after{background:color-mix(in srgb,var(--accent) 55%,transparent)}}.service-trigger:after{transform-origin:0;transition:transform .36s cubic-bezier(.23,1,.32,1);transform:scaleX(0)}.service-row:hover .service-trigger:after,.service-row:focus-within .service-trigger:after,.service-row.active .service-trigger:after{transform:scaleX(1)}.service-number,.service-name,.service-label,.service-icon{transition:color .18s,background .18s,border-color .18s,transform .26s cubic-bezier(.23,1,.32,1)}.service-row:hover .service-number,.service-row:focus-within .service-number,.service-row.active .service-number{transform:translate(4px)}.service-row:hover .service-name,.service-row:focus-within .service-name{color:var(--accent);transform:translate(4px)}.service-row:hover .service-label,.service-row:focus-within .service-label{transform:translate(2px)}.service-row:hover .service-icon,.service-row:focus-within .service-icon{border-color:var(--ink);color:var(--bone);background:var(--ink);transform:rotate(90deg)}.service-row.active .service-icon{border-color:var(--accent);color:var(--bone);background:var(--accent)}.service-expanded{animation:.34s cubic-bezier(.23,1,.32,1) both service-detail-in}.service-image img{transition:transform .52s cubic-bezier(.23,1,.32,1),filter .42s}.service-row:hover .service-image img{filter:grayscale(.25)contrast(1.08);transform:scale(1.035)}@keyframes service-detail-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}}@media(prefers-reduced-motion:reduce){.service-row,.service-trigger,.service-number,.service-name,.service-label,.service-icon,.service-image img{transition:none!important;animation:none!important}}.cases-section{color:var(--bone);background:var(--ink-soft);padding:118px max(6vw,42px) 120px}.cases-lead{grid-template-columns:minmax(0,1.15fr) minmax(270px,.42fr);gap:70px;max-width:1400px;margin:auto;display:grid}.cases-lead h2{max-width:820px;font-family:var(--font-display);letter-spacing:-.07em;margin:42px 0 0;font-size:clamp(34px,4.5vw,66px);font-weight:500;line-height:.99}.cases-lead>p{color:#f1efeaad;align-self:end;max-width:360px;margin:0;font-size:14px;line-height:1.6}.case-study-grid{grid-template-rows:none;grid-template-columns:1fr;gap:12px;max-width:1400px;margin:72px auto 0;display:grid}.case-card{background:var(--ink);height:clamp(85svh,92vh,110svh);min-height:85svh;position:relative;overflow:hidden}.case-card-primary{min-height:85svh}.case-card-button{width:100%;height:100%;min-height:85svh;color:var(--bone);background:var(--ink);text-align:left;border:0;padding:0;display:block;position:relative;overflow:hidden}.case-card-button>img,.case-card-shade{width:100%;height:100%;position:absolute;inset:0}.case-card-button>img{object-fit:cover;filter:grayscale(.78)contrast(1.08)brightness(.76)}.case-card-shade{background:linear-gradient(#08080833,#080808d6 92%)}.case-card-top,.case-card-content{z-index:1;position:absolute;left:23px;right:23px}.case-card-top{letter-spacing:.13em;justify-content:space-between;align-items:center;gap:12px;font-size:9px;font-weight:700;display:flex;top:21px}.case-card-top>span:first-child{color:var(--bone);background:#080808e0;border:1px solid #f1efea6b;padding:6px 7px}.case-card-content{grid-template-columns:minmax(0,1fr) 37px;align-items:end;gap:12px;display:grid;bottom:23px}.case-card-focus{color:var(--accent-on-dark);letter-spacing:.1em;background:#080808e0;grid-column:1/-1;padding:6px 8px;font-size:10px;font-weight:700;line-height:1.3}.case-card-content strong{max-width:430px;font-family:var(--font-display);letter-spacing:-.06em;font-size:clamp(21px,2.25vw,34px);font-weight:500;line-height:1.03}.case-card-arrow{border:1px solid #f1efea6b;border-radius:50%;place-items:center;width:36px;height:36px;display:grid}.case-detail-link{color:var(--bone);white-space:nowrap;align-self:end}@media(prefers-reduced-motion:no-preference){.case-card{opacity:0;transition:opacity .52s cubic-bezier(.23,1,.32,1),transform .52s cubic-bezier(.23,1,.32,1);transition-delay:var(--case-delay,0s);transform:translateY(24px)}.case-study-grid.is-revealed .case-card{opacity:1;transform:translateY(0)}.case-card:before{z-index:3;content:"";opacity:0;background:var(--accent);transform-origin:50%;width:3px;transition:opacity .18s,transform .28s cubic-bezier(.23,1,.32,1);position:absolute;top:0;bottom:0;left:0;transform:scaleY(.2)}.case-card:hover:before,.case-card:focus-within:before,.case-card.is-active:before{opacity:1;transform:scaleY(1)}.case-card-button>img,.case-card-shade,.case-card-top,.case-card-content,.case-card-focus,.case-card-content strong,.case-card-arrow{transition:transform .42s cubic-bezier(.23,1,.32,1),filter .42s,opacity .22s,background .2s,border-color .2s,color .2s}.case-card:hover .case-card-button>img,.case-card:focus-within .case-card-button>img,.case-card.is-active .case-card-button>img{filter:grayscale(.18)contrast(1.1)brightness(.92);transform:scale(1.045)}.case-card:hover .case-card-shade,.case-card:focus-within .case-card-shade,.case-card.is-active .case-card-shade{background:linear-gradient(#0808081f,#080808ba 92%)}.case-card:hover .case-card-content,.case-card:focus-within .case-card-content,.case-card.is-active .case-card-content{transform:translateY(-5px)}.case-card:hover .case-card-focus,.case-card:focus-within .case-card-focus,.case-card.is-active .case-card-focus{transform:translate(4px)}.case-card:hover .case-card-arrow,.case-card:focus-within .case-card-arrow,.case-card.is-active .case-card-arrow{border-color:var(--accent);color:var(--bone);background:var(--accent);transform:rotate(45deg)}}@media(max-width:900px){.case-study-grid{grid-template-rows:none;grid-template-columns:1fr}.case-card-primary{grid-area:auto}.case-detail-link{grid-column:2;justify-self:start}}@media(max-width:720px){.cases-section{padding:76px 23px 80px}.cases-lead{display:block}.cases-lead h2{font-size:clamp(34px,10vw,48px)}.cases-lead>p{margin-top:27px}.case-study-grid{grid-template-columns:1fr;gap:9px;margin-top:48px}.case-card-primary,.case-card{grid-column:auto;height:clamp(85svh,88vh,95svh);min-height:85svh}.case-card-top,.case-card-content{left:16px;right:16px}.case-card-top{top:16px}.case-card-content{bottom:17px}.case-card-content strong{font-size:26px}}@media(prefers-reduced-motion:reduce){.case-card,.case-card-button>img,.case-card-shade,.case-card-top,.case-card-content,.case-card-focus,.case-card-content strong,.case-card-arrow{transition:none!important;animation:none!important}}.case-page{--case-ink:var(--ink,#0b0b0b);--case-bone:var(--bone,#f1efea);min-height:100vh;color:var(--case-ink);background:var(--case-bone);overflow:clip}.case-brand-button,.case-back{color:inherit;background:0 0;border:0}.case-brand-button{padding:0}.case-brand{letter-spacing:-.07em;align-items:center;gap:8px;font-family:Sora,sans-serif;font-size:18px;font-weight:700;display:flex}.case-official-mark{background:#fffc;flex:none;width:30px;height:30px;display:inline-block;-webkit-mask:url(/brand/BoldGroup_Trans_Logo_Yellow_new.svg) 50%/contain no-repeat;mask:url(/brand/BoldGroup_Trans_Logo_Yellow_new.svg) 50%/contain no-repeat}.case-brand>span span{margin-left:3px;font-weight:500}.case-brand small{letter-spacing:.14em;align-self:flex-end;margin-bottom:2px;font-family:DM Sans,sans-serif;font-size:7px}.case-back{align-items:center;gap:8px;padding:8px 0;font-size:11px;font-weight:700;display:inline-flex}.case-hero{min-height:96svh;color:var(--case-bone);background:var(--case-ink);position:relative;overflow:hidden}.case-hero>img,.case-hero-shade{width:100%;height:100%;position:absolute;inset:0}.case-hero>img{object-fit:cover;filter:grayscale(.52)contrast(1.1)brightness(.74)}.case-hero-shade{background:linear-gradient(90deg,#080808c4,#08080857 56%,#08080824),linear-gradient(#0000 52%,#080808b3)}.case-hero-meta{z-index:1;color:var(--label-on-dark);letter-spacing:.14em;background:#080808e0;justify-content:space-between;gap:12px;padding:8px 10px;font-size:10px;font-weight:700;display:flex;position:absolute;top:110px;left:max(4.2vw,25px);right:max(4.2vw,25px)}.case-hero-copy{z-index:1;max-width:min(750px,70vw);position:absolute;bottom:max(10vh,78px);left:max(4.2vw,25px)}.case-hero-copy>span,.case-cta>span{color:var(--accent-on-dark);letter-spacing:.14em;background:#080808e0;padding:6px 8px;font-size:10px;font-weight:700;display:inline-flex}.case-hero h1{max-width:900px;font-family:var(--font-display);font-size:var(--display-1);letter-spacing:var(--display-1-track);line-height:var(--display-1-leading);margin:18px 0 23px;font-weight:500}.case-hero-copy p{color:#f1efeacc;max-width:510px;margin:0;font-size:16px;line-height:1.6}.case-hero-scroll{z-index:1;color:var(--label-on-dark);letter-spacing:.12em;background:#080808e0;align-items:center;gap:7px;padding:6px 8px;font-size:9px;font-weight:700;display:flex;position:absolute;bottom:28px;right:max(4.2vw,25px)}.case-section-label{color:var(--label-on-light);letter-spacing:.13em;align-items:center;gap:9px;font-size:10px;font-weight:700;display:flex}.case-section-label span{color:var(--accent-on-light)}.case-section-label.light{color:var(--label-on-dark)}.case-section-label.light span{color:var(--accent-on-dark)}.case-introduction{background:var(--case-bone);grid-template-columns:minmax(170px,.33fr) minmax(0,1.1fr) minmax(260px,.5fr);gap:45px;padding:108px max(6vw,42px);display:grid}.case-introduction h2,.case-approach h2,.case-boundaries h2,.case-cta h2{letter-spacing:-.075em;max-width:820px;margin:35px 0 0;font-family:Sora,sans-serif;font-size:clamp(37px,4.75vw,70px);font-weight:500;line-height:.98}.case-page h2 em{color:var(--accent-on-light);font-style:normal}.case-approach h2 em,.case-boundaries h2 em,.case-cta h2 em{color:var(--accent-on-dark)}.case-introduction>div>p{color:#0b0b0bad;max-width:620px;margin:32px 0 0;font-size:17px;line-height:1.6}.case-introduction aside{color:var(--case-bone);background:var(--case-ink);align-self:end;padding:21px}.case-introduction aside span{color:var(--accent-on-dark);letter-spacing:.13em;font-size:9px;font-weight:700}.case-introduction aside strong{letter-spacing:-.05em;margin-top:14px;font-family:Sora,sans-serif;font-size:18px;font-weight:500;line-height:1.17;display:block}.case-approach{color:var(--case-bone);background:var(--case-ink);grid-template-columns:minmax(170px,.33fr) minmax(0,1.67fr);gap:45px;padding:108px max(6vw,42px);display:grid}.case-approach h2{margin-top:0}.case-decision{max-width:720px;margin:0 0 44px}.case-decision-question{letter-spacing:-.045em;color:var(--case-bone);margin:0;font-family:Sora,sans-serif;font-size:clamp(20px,2.1vw,27px);font-weight:500;line-height:1.24}.case-decision p+p{max-width:640px;color:var(--label-on-dark);margin:18px 0 0;font-size:16px;line-height:1.6}.case-introduction.case-assumption{grid-template-columns:minmax(170px,.33fr) minmax(0,1.67fr)}.case-step-list{border-top:1px solid #f1efea29;margin-top:65px}.case-step-list article{border-bottom:1px solid #f1efea29;grid-template-columns:60px minmax(0,1fr);gap:18px;padding:24px 0;display:grid}.case-step-list article>span{color:var(--accent-on-dark);font-size:11px;font-weight:700}.case-step-list h3{letter-spacing:-.06em;margin:0;font-family:Sora,sans-serif;font-size:24px;font-weight:500}.case-step-list p{max-width:620px;color:var(--label-on-dark);margin:8px 0 0;font-size:14px;line-height:1.58}.case-boundaries{color:var(--case-bone);background:var(--ink-soft,#1a1a1b);grid-template-columns:minmax(170px,.33fr) minmax(0,1.67fr);gap:45px;padding:108px max(6vw,42px);display:grid}.case-boundaries h2{margin-top:0}.case-boundary-list{border-top:1px solid #f1efea29;margin-top:62px}.case-boundary-list p{color:var(--label-on-dark);border-bottom:1px solid #f1efea29;grid-template-columns:50px minmax(0,1fr);gap:18px;margin:0;padding:20px 0;font-size:15px;line-height:1.5;display:grid}.case-boundary-list span{color:var(--accent-on-dark);font-size:10px;font-weight:700}.case-cta{color:var(--case-bone);background:var(--case-ink);padding:126px max(6vw,42px)}.case-cta h2{max-width:900px}.case-cta :is(button,a),.case-next{border:0;justify-content:space-between;align-items:center;gap:16px;font-weight:700;display:inline-flex}.case-cta :is(button,a){min-width:min(390px,100%);color:var(--case-ink);background:var(--case-bone);margin-top:43px;padding:15px 18px;font-size:12px}.case-next{width:100%;color:var(--case-bone);background:var(--accent-on-light);text-align:left;padding:26px max(6vw,42px)}.case-next span{letter-spacing:.12em;width:140px;font-size:9px}.case-next strong{letter-spacing:-.065em;flex:1;font-family:Sora,sans-serif;font-size:clamp(22px,3vw,42px);font-weight:500}.case-not-found{min-height:100vh;color:var(--case-bone);background:var(--case-ink);place-content:center;gap:22px;padding:30px;display:grid}.case-not-found :is(button,a){width:fit-content;color:var(--case-ink);background:var(--case-bone);border:0;align-items:center;gap:8px;padding:10px;display:inline-flex}@media(max-width:820px){.case-introduction{grid-template-columns:1fr}.case-introduction aside{max-width:420px}.case-approach,.case-boundaries{grid-template-columns:1fr}}@media(max-width:620px){.case-brand{font-size:15px}.case-brand small{display:none}.case-back{font-size:10px}.case-hero{min-height:91svh}.case-hero-meta{font-size:7px;top:80px;left:17px;right:17px}.case-hero-copy{max-width:none;bottom:67px;left:20px;right:20px}.case-hero h1{font-size:clamp(48px,14.4vw,64px)}.case-hero-copy p{font-size:14px}.case-hero-scroll{display:none}.case-introduction,.case-approach,.case-boundaries,.case-cta{padding:72px 23px}.case-introduction h2,.case-approach h2,.case-boundaries h2,.case-cta h2{font-size:clamp(34px,10vw,47px)}.case-introduction>div>p{font-size:15px}.case-step-list{margin-top:42px}.case-step-list article{grid-template-columns:36px minmax(0,1fr)}.case-step-list h3{font-size:20px}.case-boundary-list{margin-top:42px}.case-next{padding:21px 23px}.case-next span{display:none}}@media(prefers-reduced-motion:no-preference){.case-cta :is(button,a),.case-next{transition:transform .16s cubic-bezier(.23,1,.32,1),background .18s,color .18s}.case-cta :is(button,a):hover{color:var(--case-bone);background:var(--accent,#e8462c)}.case-next:hover{background:var(--case-bone);color:var(--case-ink)}.case-cta :is(button,a):active,.case-next:active{transform:scale(.98)}}.case-page{--case-header-height:78px}.case-hero{min-height:calc(100svh - var(--case-header-height))}@media(max-width:620px){.case-page{--case-header-height:62px}.case-hero{min-height:calc(100svh - var(--case-header-height))}.case-hero-meta{top:19px}}.case-hero-copy{max-width:min(650px,57vw);bottom:clamp(58px,8vh,92px)}.case-hero-meta{top:clamp(20px,2vw,32px)}@media(max-width:620px){.case-hero-copy{bottom:54px}.case-hero h1{font-size:clamp(42px,12.4vw,56px);line-height:.92}.case-hero-meta{top:19px}}@media(min-width:1051px){.case-hero-copy p{max-width:555px;font-size:17px;line-height:1.68}.case-introduction>div>p{max-width:590px;font-size:19px;line-height:1.7}.case-step-list p{max-width:590px;font-size:16px;line-height:1.68}.case-boundary-list p{max-width:690px;font-size:17px;line-height:1.62}}.button-light{text-decoration:none}.footer-phone{width:fit-content;color:var(--bone);font-family:var(--font-display);letter-spacing:-.045em;margin-top:15px;font-size:18px;text-decoration:none;display:inline-block}.footer-phone:hover{color:var(--accent)}.footer-direction p{margin-top:9px}.route-transition{z-index:100;pointer-events:none;opacity:0;background:var(--transition-ink,#0b0b0b);place-items:center;transition:opacity .15s;display:grid;position:fixed;inset:0}.route-transition.is-active{opacity:1}.route-transition-mark{background:#fffc;width:clamp(72px,11vw,154px);height:clamp(72px,11vw,154px);-webkit-mask:url(/brand/BoldGroup_Trans_Logo_Yellow_new.svg) 50%/contain no-repeat;mask:url(/brand/BoldGroup_Trans_Logo_Yellow_new.svg) 50%/contain no-repeat}@media(prefers-reduced-motion:no-preference){.route-transition.is-active .route-transition-mark{animation:.52s cubic-bezier(.23,1,.32,1) both identity-pulse}@keyframes identity-pulse{0%{opacity:0;transform:scale(.86)rotate(-5deg)}45%{opacity:1;transform:scale(1)rotate(0)}to{opacity:1;transform:scale(.96)}}}@media(prefers-reduced-motion:reduce){.route-transition{display:none}}.site,.case-page,.standard-page{--layout-gutter:clamp(52px, 7vw, 148px);--layout-rail:clamp(162px, 13vw, 204px);--layout-gap:clamp(28px, 3vw, 48px)}.manifesto-section,.signals-intro,.services-lead,.cases-lead,.proof-top,.contact-section{grid-template-columns:var(--layout-rail) minmax(0,1fr);column-gap:var(--layout-gap)}.manifesto-section,.signals-section,.services-section,.proof-section,.contact-section{padding-inline:var(--layout-gutter)}.manifesto-inner{text-align:left;align-items:flex-start;max-width:920px;margin:0;padding-top:108px}.services-lead{grid-template-columns:var(--layout-rail) minmax(0,1.12fr) minmax(250px,.48fr)}.services-title-block h2,.cases-title-block h2,.contact-copy h2{margin-top:0}.cases-lead{grid-template-columns:var(--layout-rail) minmax(0,1.15fr) minmax(270px,.42fr);column-gap:var(--layout-gap)}.cases-lead h2{margin-top:0}.contact-section{grid-template-columns:var(--layout-rail) minmax(0,1.15fr) minmax(270px,.55fr);column-gap:var(--layout-gap)}.method-content{grid-template-columns:var(--layout-rail) minmax(0,1fr);gap:var(--layout-gap);padding-inline:var(--layout-gutter);display:grid}.method-content h2{margin-top:0}.case-introduction,.case-approach,.case-boundaries,.case-cta{padding-inline:var(--layout-gutter)}.case-introduction{grid-template-columns:var(--layout-rail) minmax(0,1.1fr) minmax(260px,.5fr);column-gap:var(--layout-gap)}.case-approach,.case-boundaries{grid-template-columns:var(--layout-rail) minmax(0,1.67fr);column-gap:var(--layout-gap)}.case-hero-meta,.case-hero-copy{left:var(--layout-gutter)}.case-hero-meta,.case-hero-scroll{right:var(--layout-gutter)}@media(max-width:720px){.site,.case-page,.standard-page{--layout-gutter:24px;--layout-rail:1fr;--layout-gap:0}.manifesto-section,.signals-intro,.services-lead,.cases-lead,.proof-top,.contact-section,.method-content,.case-introduction,.case-approach,.case-boundaries{grid-template-columns:1fr;gap:0}.manifesto-section,.signals-section,.services-section,.proof-section,.contact-section,.cases-section,.case-introduction,.case-approach,.case-boundaries,.case-cta{padding-inline:var(--layout-gutter)}.section-rail{margin-bottom:26px}.manifesto-section{padding-top:46px;padding-bottom:72px}.manifesto-inner{margin:0;padding-top:0}.signals-intro h2,.services-title-block h2,.cases-title-block h2,.contact-copy h2{margin-top:0}.signals-intro>p,.services-small-copy,.cases-lead>p,.proof-top>p,.contact-action{margin-top:28px}.services-section{padding-block:72px 80px}.services-lead{padding-inline:0}.method-content{padding-inline:var(--layout-gutter);padding-block:66px}.method-body{width:100%}.proof-section{padding-block:72px}.contact-section{padding-block:76px}.footer{padding-inline:var(--layout-gutter)}.case-hero-meta,.case-hero-copy{right:var(--layout-gutter);left:var(--layout-gutter)}.case-hero-scroll{right:var(--layout-gutter)}.case-introduction,.case-approach,.case-boundaries,.case-cta{padding-block:68px}.case-introduction aside{margin-top:28px}.case-step-list,.case-boundary-list{margin-top:38px}}@media(min-width:721px){.method-section{grid-template-columns:var(--layout-rail) minmax(0,1fr);gap:var(--layout-gap);padding:106px var(--layout-gutter);display:grid}.method-content{display:contents}.method-content>.section-rail{grid-area:1/1}.method-body{grid-area:1/2;max-width:820px}.method-visual{grid-area:2/1/auto/-1;min-height:clamp(420px,46vw,650px);margin-top:12px}}@media(max-width:720px){.method-section{flex-direction:column;display:flex}.method-content{padding-inline:var(--layout-gutter);order:1;padding-block:66px 54px;display:block}.method-visual{order:2;min-height:300px}}.standard-page{--case-ink:var(--ink);--case-bone:var(--bone);--case-header-height:0px;min-height:100vh;color:var(--ink);background:var(--bone);overflow:clip}.standard-page-nav{min-height:78px;padding:18px var(--layout-gutter);color:var(--bone);background:var(--ink);border-bottom:1px solid #f1efea1f;justify-content:space-between;align-items:center;gap:24px;display:flex}.standard-page-nav nav{align-items:center;gap:clamp(15px,2.2vw,32px);display:flex}.standard-page-nav nav :is(button,a){color:var(--label-on-dark);background:0 0;border:0;padding:5px 0;font-size:11px;font-weight:700}.standard-page-nav nav :is(button,a).current,.standard-page-nav nav :is(button,a):hover{color:var(--bone)}.standard-page-nav .case-back{color:var(--bone);white-space:nowrap}.standard-page .subpage-hero{min-height:calc(100svh - 78px)}.standard-page .case-hero-meta{align-items:center;gap:14px}.standard-page .subpage-hero{padding:clamp(26px,4vh,44px) var(--layout-gutter) clamp(76px,9vh,108px);flex-direction:column;justify-content:space-between;gap:clamp(28px,4vh,64px);display:flex}.standard-page .subpage-hero .case-hero-meta,.standard-page .subpage-hero .case-hero-copy{position:static;inset:auto}.standard-page .case-hero-meta span:last-child{border-left:1px solid #f1efea42;padding-left:14px}.standard-section{grid-template-columns:var(--layout-rail) minmax(0,1fr);gap:var(--layout-gap);padding:clamp(124px,11vw,168px) var(--layout-gutter);display:grid}.standard-section-light{color:var(--ink);background:var(--bone)}.standard-section-dark{color:var(--bone);background:var(--ink)}.standard-section h2{font-family:var(--font-display);letter-spacing:-.075em;margin:0;font-size:clamp(38px,4.75vw,68px);font-weight:500;line-height:.98}.standard-section h2 em{color:var(--accent-on-light);font-style:normal}.standard-section-dark h2 em{color:var(--accent-on-dark)}.standard-section p{color:currentColor;max-width:610px;margin:34px 0 0}@supports (color:color-mix(in lab,red,red)){.standard-section p{color:color-mix(in srgb,currentColor 68%,transparent)}}.standard-section p{font-size:16px;line-height:1.68}.principle-list,.service-offer-list{border-top:1px solid}.principle-item,.service-offer{border-bottom:1px solid;grid-template-columns:55px minmax(0,1fr);gap:18px;padding:28px 0;display:grid}@supports (color:color-mix(in lab,red,red)){.principle-item,.service-offer{border-bottom:1px solid color-mix(in srgb,currentColor 18%,transparent)}}.principle-item>span,.service-offer>span{color:var(--accent-on-light);font-size:11px;font-weight:700}.standard-section-dark .principle-item>span,.standard-section-dark .service-offer>span{color:var(--accent-on-dark)}.principle-item h3{font-family:var(--font-display);letter-spacing:-.06em;margin:0;font-size:25px;font-weight:500}.principle-item p{margin-top:10px}.role-list,.posture-list,.authority-list{border-top:1px solid;margin-top:46px}.role-item,.posture-item,.authority-item{border-bottom:1px solid;display:grid}@supports (color:color-mix(in lab,red,red)){.role-item,.posture-item,.authority-item{border-bottom:1px solid color-mix(in srgb,currentColor 18%,transparent)}}.role-item{grid-template-columns:55px minmax(0,1fr);gap:18px;padding:20px 0}.posture-item{grid-template-columns:minmax(0,1fr);padding:18px 0}.authority-item{grid-template-columns:220px minmax(0,1fr);gap:24px;padding:28px 0}.role-item>span{color:var(--accent-on-light);font-size:11px;font-weight:700;line-height:1.68}.standard-section-dark .role-item>span{color:var(--accent-on-dark)}.posture-item p>span{color:var(--accent-on-light);font-weight:700}.standard-section-dark .posture-item p>span{color:var(--accent-on-dark)}.authority-item h3{font-family:var(--font-display);letter-spacing:-.05em;margin:0;font-size:23px;font-weight:500;line-height:1.14}.role-item p,.posture-item p,.authority-item p{margin:0}.founder-list{grid-column:2;gap:26px;margin:26px 0 0;padding:0;list-style:none;display:grid}.founder-list li{border-top:1px solid;gap:3px;padding-top:20px;display:grid}@supports (color:color-mix(in lab,red,red)){.founder-list li{border-top:1px solid color-mix(in srgb,currentColor 14%,transparent)}}.founder-list strong{font-family:var(--font-display);letter-spacing:-.04em;font-size:19px;font-weight:600;line-height:1.2}.founder-list>li>span{color:var(--accent-on-light);letter-spacing:.1em;text-transform:uppercase;font-size:10px;font-weight:700}.founder-list p{margin:9px 0 0}.network-list{grid-column:2;gap:9px;margin:22px 0 0;padding:0;list-style:none;display:grid}.network-list li{border-top:1px solid;flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding-top:9px;display:flex}@supports (color:color-mix(in lab,red,red)){.network-list li{border-top:1px solid color-mix(in srgb,currentColor 14%,transparent)}}.network-list strong{font-family:var(--font-display);letter-spacing:-.035em;font-size:16px;font-weight:600}.network-list span{color:var(--label-on-light);font-size:12px}.network-link{color:var(--accent-on-light);align-items:baseline;gap:5px;display:inline-flex}.network-link:hover{color:var(--ink)}.network-link svg{align-self:center}.credential-list{gap:22px;margin:34px 0 0;padding:0;list-style:none;display:grid}.credential-list li{border-top:1px solid;gap:3px;padding-top:18px;display:grid}@supports (color:color-mix(in lab,red,red)){.credential-list li{border-top:1px solid color-mix(in srgb,currentColor 14%,transparent)}}.credential-list strong{font-family:var(--font-display);letter-spacing:-.04em;font-size:18px;font-weight:600}.credential-list>li>span{color:var(--accent-on-light);letter-spacing:.1em;text-transform:uppercase;font-size:10px;font-weight:700}.credential-list p{margin:7px 0 0}.peak-cta{margin-top:46px}.peak-cta .button-dark{justify-content:space-between;width:min(390px,100%)}.standard-section-light.service-close .button-light{color:var(--bone);background:var(--ink)}.standard-section-light.service-close .button-light:hover{color:var(--bone);background:var(--accent)}.about-start .button{width:min(390px,100%);margin-top:38px}.about-secondary{width:fit-content;color:var(--label-on-dark);background:0 0;border:0;align-items:center;gap:8px;margin-top:24px;padding:0;font-size:12px;font-weight:700;display:flex}.about-secondary:hover{color:var(--accent-on-dark)}.service-offer :is(button,a){color:inherit;background:0 0;border:0;justify-content:space-between;align-items:center;gap:11px;margin-top:30px;font-size:12px;font-weight:700;display:inline-flex}.service-offer{grid-template-columns:55px minmax(0,1fr) auto;align-items:end;padding:34px 0}.service-offer h2{font-size:clamp(28px,3.2vw,45px)}.service-offer p{max-width:580px;margin-top:16px}.service-offer :is(button,a){white-space:nowrap;margin:0 0 3px}.services-start .standard-section-content{max-width:830px}.services-start .button{width:min(390px,100%);margin-top:38px}.reveal-block,.reveal-block.is-visible{opacity:1}@media(prefers-reduced-motion:no-preference){.reveal-block{opacity:0;transition:opacity .52s cubic-bezier(.23,1,.32,1),transform .52s cubic-bezier(.23,1,.32,1);transition-delay:var(--reveal-delay,0s);transform:translateY(18px)}.reveal-block.is-visible{opacity:1;transform:translateY(0)}.service-offer :is(button,a),.standard-page-nav nav :is(button,a){transition:color .18s,background .18s,transform .16s cubic-bezier(.23,1,.32,1)}.service-offer :is(button,a):hover{color:var(--accent)}.service-offer :is(button,a):active{transform:scale(.97)}}@media(min-width:721px)and (max-width:1050px){.standard-page{--layout-gutter:52px;--layout-rail:148px;--layout-gap:34px}.standard-page-nav{padding-inline:var(--layout-gutter)}.standard-section{padding-block:112px}.standard-section-content{max-width:740px}.standard-section h2{font-size:clamp(36px,5.2vw,54px)}.service-offer{grid-template-columns:43px minmax(0,1fr)}.service-offer :is(button,a){grid-column:2;margin-top:25px}.case-hero-copy{max-width:min(560px,66vw)}.case-hero h1{font-size:clamp(48px,6vw,72px)}.case-hero-copy p{font-size:15px}}@media(max-width:720px){.standard-page-nav{min-height:62px;padding:10px var(--layout-gutter)}.standard-page .subpage-hero{min-height:calc(100svh - 62px)}.standard-page .case-hero-meta{grid-template-columns:1fr;align-items:start;gap:4px;display:grid}.standard-page .case-hero-meta span:last-child{color:#f1efea99;border-left:0;padding-left:0}.standard-page-nav nav{display:none}.standard-page-nav .case-back{font-size:10px}.standard-page-nav .case-back svg:last-child{display:none}.standard-section{padding:92px var(--layout-gutter);grid-template-columns:1fr;gap:0}.standard-section .section-rail{margin-bottom:30px}.standard-section h2{font-size:clamp(34px,10vw,47px)}.standard-section p{margin-top:28px;font-size:15px}.principle-item,.service-offer{grid-template-columns:35px minmax(0,1fr);gap:12px;padding:28px 0}.role-item{grid-template-columns:35px minmax(0,1fr);gap:12px}.authority-item{grid-template-columns:1fr;gap:12px}.authority-item h3{font-size:21px}.network-list,.founder-list{grid-column:1}.founder-list strong{font-size:17px}.network-list strong{font-size:15px}.about-start .button{width:100%}.principle-item h3{font-size:21px}.service-offer h2{font-size:28px}.service-offer :is(button,a){grid-column:2;justify-self:start;min-height:44px;margin-top:20px}.services-start .button{margin-top:34px}}.team-group{grid-column:2;margin-top:44px}.team-group+.team-group{margin-top:58px}.team-group-label{color:var(--label-on-dark);letter-spacing:.13em;text-transform:uppercase;margin:0 0 22px;font-size:10px;font-weight:700}.team-grid,.profile-other-list{grid-template-rows:auto;grid-template-columns:repeat(4,minmax(0,1fr));gap:26px 22px;margin:0;padding:0;list-style:none;display:grid}.team-grid li,.profile-other-list li{grid-row:span 5;grid-template-rows:subgrid;display:grid}.team-grid a,.profile-other-list a{grid-row:span 5;grid-template-rows:subgrid;align-content:start;gap:2px;display:grid}.team-grid img,.profile-other-list img{aspect-ratio:720/827;object-fit:cover;background:currentColor;width:100%;height:auto;margin-bottom:12px}@supports (color:color-mix(in lab,red,red)){.team-grid img,.profile-other-list img{background:color-mix(in srgb,currentColor 8%,transparent)}}.team-grid strong,.profile-other-list strong{font-family:var(--font-display);letter-spacing:-.04em;font-size:17px;font-weight:600;line-height:1.2}.team-affiliation,.profile-other-list a>span:first-of-type{color:var(--accent-on-dark);letter-spacing:.09em;text-transform:uppercase;font-size:10px;font-weight:700}.team-role,.profile-other-role{color:var(--label-on-dark);font-size:12px}.team-spec{color:var(--label-on-dark);opacity:.8;margin-top:5px;font-size:12px;line-height:1.45}.profile-works-on-list{gap:22px;max-width:62ch;margin:0;padding:0;list-style:none;display:grid}.profile-works-on-list li{border-top:1px solid;gap:5px;padding-top:16px;display:grid}@supports (color:color-mix(in lab,red,red)){.profile-works-on-list li{border-top:1px solid color-mix(in srgb,currentColor 16%,transparent)}}.profile-works-on-list a{font-family:var(--font-display);letter-spacing:-.035em;color:inherit;align-items:center;gap:7px;font-size:19px;font-weight:600;line-height:1.25;text-decoration:none;display:inline-flex}.profile-works-on-list a:hover{color:var(--accent)}.profile-works-on-list p{color:var(--ink-soft);margin:0;font-size:15px;line-height:1.62}@media(prefers-reduced-motion:no-preference){.team-grid img,.profile-other-list img{transition:opacity .2s}.team-grid a:hover img,.profile-other-list a:hover img{opacity:.82}.team-grid a:hover strong,.profile-other-list a:hover strong{color:var(--accent-on-dark)}}.profile-hero{padding:clamp(46px,6vw,96px) var(--layout-gutter) clamp(40px,5vw,80px);grid-template-columns:minmax(0,1fr) minmax(280px,.82fr);align-items:center;gap:clamp(30px,5vw,72px);display:grid}.profile-identity{max-width:640px}.profile-back{color:var(--label-on-light);align-items:center;gap:7px;font-size:11px;font-weight:700;display:inline-flex}.profile-back:hover{color:var(--accent-on-light)}.profile-affiliation{color:var(--accent-on-light);letter-spacing:.12em;text-transform:uppercase;margin-top:34px;font-size:11px;font-weight:700;display:block}.profile-hero h1{max-width:12ch;font-family:var(--font-display);letter-spacing:-.065em;margin:12px 0 0;font-size:clamp(40px,5.4vw,74px);font-weight:600;line-height:.98}.profile-name-th{opacity:.78;margin:10px 0 0;font-size:clamp(17px,1.8vw,22px);font-weight:500;line-height:1.5}.profile-role{font-family:var(--font-display);letter-spacing:-.04em;font-size:clamp(19px,2vw,25px);font-weight:500;margin:22px 0 0!important}.profile-specialization{color:var(--label-on-light);font-size:clamp(15px,1.6vw,19px);margin:4px 0 0!important}.profile-qualification{max-width:560px;color:var(--label-on-light);font-size:13px;line-height:1.6;margin:20px 0 0!important}.profile-linkedin{border:1px solid;align-items:center;gap:8px;margin-top:26px;padding:10px 15px;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.profile-linkedin{border:1px solid color-mix(in srgb,currentColor 24%,transparent)}}.profile-linkedin{font-size:12px;font-weight:700}.profile-linkedin:hover{color:var(--bone);background:var(--ink)}.profile-contacts{flex-wrap:wrap;gap:10px;margin-top:26px;display:flex}.profile-contacts .profile-linkedin{margin-top:0}.profile-contact{font-weight:600}.profile-portrait img{aspect-ratio:720/827;object-fit:cover;width:100%;height:auto}.profile-background .standard-section-content>*+*{margin-top:22px}.profile-lead{font-family:var(--font-display);letter-spacing:-.045em;color:var(--ink)!important;font-size:clamp(21px,2.2vw,29px)!important;line-height:1.26!important}.profile-others .profile-other-list{grid-column:2;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:40px}@media(max-width:1050px){.team-grid,.profile-other-list,.profile-others .profile-other-list{grid-template-columns:repeat(3,minmax(0,1fr))}.profile-hero{grid-template-columns:minmax(0,1fr) minmax(240px,.72fr)}}@media(max-width:720px){.team-group,.profile-others .profile-other-list{grid-column:1}.team-grid,.profile-other-list,.profile-others .profile-other-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 16px}.team-grid strong,.profile-other-list strong{font-size:15px}.team-spec{display:none}.profile-hero{grid-template-columns:1fr;gap:26px;padding-block:34px 40px}.profile-portrait{order:-1}.profile-hero h1{max-width:none;font-size:clamp(34px,10vw,48px)}}.services-lead-copy{max-width:640px;font-family:var(--font-display);letter-spacing:-.045em;margin:0!important;font-size:clamp(20px,2.1vw,28px)!important;line-height:1.24!important}.services-reconciliation{max-width:640px;font-size:var(--type-body);line-height:var(--leading-body);margin:20px 0 0}.service-name{color:var(--accent-on-light);letter-spacing:.11em;text-transform:uppercase;font-size:11px;font-weight:700;margin:0 0 10px!important}.service-offer p+p{margin-top:14px}.service-facts{gap:13px;margin:24px 0 0;display:grid}.service-facts>div{border-top:1px solid;gap:4px;padding-top:11px;display:grid}@supports (color:color-mix(in lab,red,red)){.service-facts>div{border-top:1px solid color-mix(in srgb,currentColor 14%,transparent)}}.service-facts dt{color:var(--accent-on-light);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:10px;font-weight:700}.service-facts dd{margin:0;font-size:14px;line-height:1.55}.service-section-body>*+*{margin-top:18px}.service-block-heading{font-family:var(--font-display);letter-spacing:-.04em;margin:30px 0 0;font-size:clamp(18px,1.8vw,22px);font-weight:600;line-height:1.25}.service-block-heading+p{margin-top:8px!important}.service-block-list{gap:9px;margin:18px 0 0;padding-left:20px;display:grid}.service-section-body>.service-block-list:first-child{margin-top:34px}.service-block-list li{line-height:1.6}.service-faq-list{border-top:1px solid;gap:0;margin:0;display:grid}@supports (color:color-mix(in lab,red,red)){.service-faq-list{border-top:1px solid color-mix(in srgb,currentColor 18%,transparent)}}.service-faq{border-bottom:1px solid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:30px;padding:26px 0;display:grid}@supports (color:color-mix(in lab,red,red)){.service-faq{border-bottom:1px solid color-mix(in srgb,currentColor 18%,transparent)}}.service-faq dt{font-family:var(--font-display);letter-spacing:-.04em;margin:0;font-size:clamp(17px,1.8vw,21px);font-weight:500;line-height:1.25}.service-faq dd{margin:0;line-height:1.65}.service-faq dd p{margin:0}.service-faq dd p+p{margin-top:13px}.service-faq-links{flex-wrap:wrap;gap:10px 22px;margin-top:16px;display:flex}.service-faq-links a{border-bottom:1px solid;align-items:center;gap:6px;padding-bottom:2px;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.service-faq-links a{border-bottom:1px solid color-mix(in srgb,currentColor 35%,transparent)}}.service-faq-links a{font-size:13px;font-weight:700}.service-faq-links a:hover{color:var(--accent-on-light);border-bottom-color:currentColor}.service-close .button{width:min(390px,100%);margin-top:34px}.engagement-set{border-top:1px solid;grid-column:2;margin:clamp(58px,6vw,86px) 0 0;padding-top:clamp(30px,3.4vw,44px)}@supports (color:color-mix(in lab,red,red)){.engagement-set{border-top:1px solid color-mix(in srgb,currentColor 24%,transparent)}}.engagement-set-heading{font-family:var(--font-display);letter-spacing:-.05em;margin:0;font-size:clamp(24px,2.6vw,34px);font-weight:500;line-height:1.1}.standard-section .engagement-set-lead{max-width:var(--measure-reading);margin:14px 0 0}.engagement{border-top:1px solid;margin-top:clamp(30px,3.2vw,42px);padding-top:24px}@supports (color:color-mix(in lab,red,red)){.engagement{border-top:1px solid color-mix(in srgb,currentColor 16%,transparent)}}.engagement h4{font-family:var(--font-display);letter-spacing:-.045em;margin:0 0 16px;font-size:clamp(18px,1.9vw,23px);font-weight:600;line-height:1.2}.engagement h4 a{color:var(--ink);text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--accent-on-light);text-decoration-color:var(--accent-on-light);align-items:center;gap:8px;display:inline-flex}.engagement h4 a:hover{color:var(--accent-on-light)}.engagement-body{grid-template-columns:196px minmax(0,1fr);align-items:start;gap:10px 20px;display:grid}.engagement-label{color:var(--label-on-light);letter-spacing:.13em;text-transform:uppercase;padding-top:4px;font-size:10px;font-weight:700}.engagement-triggers{gap:9px;margin:0;padding:0;list-style:none;display:grid}.engagement-triggers li{color:currentColor;font-size:16px;line-height:1.6}@supports (color:color-mix(in lab,red,red)){.engagement-triggers li{color:color-mix(in srgb,currentColor 72%,transparent)}}.engagement-triggers li:before{content:"—";color:var(--accent-on-light);margin-right:10px;font-weight:700}.standard-section .engagement-result{max-width:var(--measure-reading);margin:0}@media(max-width:720px){.engagement-body{grid-template-columns:1fr;gap:6px}.engagement-label{padding-top:12px}}.wtc-tiers{border-top:1px solid;grid-column:2;gap:0;margin:40px 0 0;padding:0;list-style:none;display:grid}@supports (color:color-mix(in lab,red,red)){.wtc-tiers{border-top:1px solid color-mix(in srgb,currentColor 20%,transparent)}}.wtc-tiers>li{border-bottom:1px solid;grid-template-columns:56px minmax(0,1fr);gap:20px;padding:26px 0;display:grid}@supports (color:color-mix(in lab,red,red)){.wtc-tiers>li{border-bottom:1px solid color-mix(in srgb,currentColor 16%,transparent)}}.wtc-tier-number{font-family:var(--font-display);letter-spacing:-.06em;color:var(--accent-on-light);font-size:clamp(26px,3vw,40px);font-weight:500;line-height:1}.standard-section-dark .wtc-tier-number{color:var(--accent-on-dark)}.wtc-tiers h3{font-family:var(--font-display);letter-spacing:-.045em;margin:0;font-size:clamp(19px,2vw,25px);font-weight:500;line-height:1.2}.wtc-tiers h3 a{color:inherit;text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--accent-on-light);text-decoration-color:var(--accent-on-light);align-items:center;gap:8px;display:inline-flex}.wtc-tiers h3 a:hover{color:var(--accent-on-light)}.standard-section .wtc-tier-fits{margin:10px 0 0}.wtc-types,.wtc-alternatives{border-top:1px solid;grid-column:2;gap:0;margin:40px 0 0;display:grid}@supports (color:color-mix(in lab,red,red)){.wtc-types,.wtc-alternatives{border-top:1px solid color-mix(in srgb,currentColor 20%,transparent)}}.wtc-types>div,.wtc-alternatives>div{border-bottom:1px solid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:8px 28px;padding:22px 0;display:grid}@supports (color:color-mix(in lab,red,red)){.wtc-types>div,.wtc-alternatives>div{border-bottom:1px solid color-mix(in srgb,currentColor 16%,transparent)}}.wtc-types dt,.wtc-alternatives dt{font-family:var(--font-display);letter-spacing:-.04em;font-size:clamp(17px,1.7vw,21px);font-weight:600;line-height:1.25}.standard-section .wtc-types dd,.standard-section .wtc-alternatives dd{max-width:var(--measure-reading);color:currentColor;margin:0;font-size:16px;line-height:1.6}@supports (color:color-mix(in lab,red,red)){.standard-section .wtc-types dd,.standard-section .wtc-alternatives dd{color:color-mix(in srgb,currentColor 68%,transparent)}}.wtc-turn{border-top:1px solid;margin-top:12px;padding-top:12px;display:block}@supports (color:color-mix(in lab,red,red)){.wtc-turn{border-top:1px solid color-mix(in srgb,currentColor 20%,transparent)}}.wtc-turn{color:currentColor}@supports (color:color-mix(in lab,red,red)){.wtc-turn{color:color-mix(in srgb,currentColor 96%,transparent)}}.wtc-challenges,.contact-questions{max-width:var(--measure-reading);grid-column:2;gap:11px;margin:34px 0 0;padding:0 0 0 22px;display:grid}.wtc-challenges{padding-left:0;list-style:none}.wtc-challenges li,.contact-questions li{color:currentColor;font-size:16px;line-height:1.6}@supports (color:color-mix(in lab,red,red)){.wtc-challenges li,.contact-questions li{color:color-mix(in srgb,currentColor 72%,transparent)}}.wtc-challenges li:before{content:"—";color:var(--accent-on-light);margin-right:11px;font-weight:700}.standard-section-dark .wtc-challenges li:before{color:var(--accent-on-dark)}.standard-section-dark .contact-questions li::marker{color:var(--accent-on-dark)}.contact-questions li::marker{color:var(--accent-on-light);font-weight:700}.wtc-index{grid-template-columns:var(--layout-rail) minmax(0,1fr);gap:var(--layout-gap);padding:clamp(34px,4vw,52px) var(--layout-gutter);color:var(--bone);background:var(--ink-soft);display:grid}.wtc-index>span{color:var(--label-on-dark);letter-spacing:.13em;font-size:10px;font-weight:700}.wtc-index ol{counter-reset:wtc-index;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px 32px;margin:0;padding:0;list-style:none;display:grid}.wtc-index li{counter-increment:wtc-index}.wtc-index a{color:var(--bone);align-items:baseline;gap:10px;font-size:15px;line-height:1.5;display:inline-flex}.wtc-index a:before{content:counter(wtc-index,decimal-leading-zero);color:var(--accent-on-dark);letter-spacing:.08em;font-size:10px;font-weight:700}.wtc-index a:hover{color:var(--accent-on-dark)}@media(prefers-reduced-motion:no-preference){.wtc-index a{transition:color .16s}}@media(max-width:900px){.wtc-index{grid-template-columns:1fr;gap:14px}}.standard-section .wtc-note{margin-top:30px}.wtc-note a,.evidence-ladder-close a,.contact-privacy-note a,a.prose-link{color:var(--accent-on-light);text-underline-offset:3px;align-items:baseline;gap:6px;font-weight:600;text-decoration:underline;display:inline-flex}.standard-section-dark :is(.wtc-note,.evidence-ladder-close,.contact-privacy-note) a,.standard-section-dark a.prose-link{color:var(--accent-on-dark)}.wtc-proof-section .button,.wtc-close .button{width:min(390px,100%);margin-top:34px}@media(max-width:760px){.wtc-types>div,.wtc-alternatives>div{grid-template-columns:1fr;gap:6px}.wtc-proof-section .button,.wtc-close .button{width:100%}}.contact-checklist{border-top:1px solid;margin:30px 0 0;padding:0;list-style:none}@supports (color:color-mix(in lab,red,red)){.contact-checklist{border-top:1px solid color-mix(in srgb,currentColor 20%,transparent)}}.contact-checklist{max-width:var(--measure-reading)}.contact-checklist li{border-bottom:1px solid;padding:12px 0}@supports (color:color-mix(in lab,red,red)){.contact-checklist li{border-bottom:1px solid color-mix(in srgb,currentColor 14%,transparent)}}.contact-checklist li{font-size:16px;line-height:1.6}.contact-checklist li:before{content:"—";color:var(--accent-on-light);margin-right:12px;font-weight:700}.standard-section-dark .contact-checklist li:before{color:var(--accent-on-dark)}.contact-route-section .button{width:min(390px,100%);margin-top:32px}.contact-route-section .button-dark{justify-content:space-between}.standard-section .contact-fallback{max-width:var(--measure-reading);color:var(--label-on-light);margin-top:14px;font-size:13px;line-height:1.6}.standard-section-dark .contact-fallback{color:var(--label-on-dark)}.contact-direct{gap:22px;margin:34px 0 0;display:grid}.standard-section .contact-direct p{gap:4px;margin:0;display:grid}.contact-direct span{color:var(--label-on-light);letter-spacing:.13em;font-size:10px;font-weight:700}.contact-direct a{color:var(--ink);font-family:var(--font-display);letter-spacing:-.045em;text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--accent-on-light);text-decoration-color:var(--accent-on-light);font-size:clamp(19px,2vw,26px);font-weight:500}@media(prefers-reduced-motion:no-preference){.contact-direct a{transition:color .16s}}.contact-direct a:hover{color:var(--accent-on-light)}.standard-section .contact-privacy-note{border-top:1px solid;margin-top:40px;padding-top:18px}@supports (color:color-mix(in lab,red,red)){.standard-section .contact-privacy-note{border-top:1px solid color-mix(in srgb,currentColor 16%,transparent)}}.standard-section .contact-qualify{max-width:var(--measure-reading);margin-top:18px}.contact-qualify a{color:var(--accent-on-light);text-underline-offset:3px;font-weight:600;text-decoration:underline}@media(max-width:720px){.contact-route-section .button{width:100%}}.service-application{max-width:640px;margin-top:32px!important}.service-application a{border-bottom:1px solid;align-items:center;gap:6px;font-weight:700;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.service-application a{border-bottom:1px solid color-mix(in srgb,currentColor 40%,transparent)}}.service-siblings{border-top:1px solid;flex-wrap:wrap;gap:10px 26px;margin:34px 0 0;padding:22px 0 0;display:flex}@supports (color:color-mix(in lab,red,red)){.service-siblings{border-top:1px solid color-mix(in srgb,currentColor 20%,transparent)}}.service-siblings{list-style:none}.service-siblings a{align-items:center;gap:7px;font-size:12px;font-weight:700;display:inline-flex}.service-siblings a:hover{color:var(--accent-on-dark)}@media(max-width:720px){.service-faq{grid-template-columns:1fr;gap:12px;padding:22px 0}.service-close .button{width:100%}}.service-case-list{border-top:1px solid;gap:0;margin:38px 0 0;padding:0;list-style:none;display:grid}@supports (color:color-mix(in lab,red,red)){.service-case-list{border-top:1px solid color-mix(in srgb,currentColor 20%,transparent)}}.service-case-list li{border-bottom:1px solid}@supports (color:color-mix(in lab,red,red)){.service-case-list li{border-bottom:1px solid color-mix(in srgb,currentColor 20%,transparent)}}.service-case-list a{grid-template-columns:minmax(0,1fr) 190px;align-items:baseline;gap:6px 24px;padding:20px 0;display:grid}.service-case-list strong{font-family:var(--font-display);letter-spacing:-.04em;grid-row:span 2;font-size:clamp(18px,1.9vw,23px);font-weight:500;line-height:1.25}.service-case-ceiling{opacity:.75;font-size:12px}.service-case-list a:hover strong{color:var(--accent-on-light)}@media(max-width:720px){.service-case-list a{grid-template-columns:1fr;gap:4px;padding:18px 0}.service-case-list strong{grid-row:auto;margin-bottom:6px}}.feature-image{width:100%;height:100%;aspect-ratio:var(--feature-ratio,16 / 10);object-fit:cover;display:block}.feature-image.is-pending{background:repeating-linear-gradient(135deg,currentColor 0 12px,#0000 12px 24px),currentColor;place-items:center;display:grid}@supports (color:color-mix(in lab,red,red)){.feature-image.is-pending{background:repeating-linear-gradient(135deg,color-mix(in srgb,currentColor 4%,transparent) 0 12px,transparent 12px 24px),color-mix(in srgb,currentColor 7%,transparent)}}.feature-image-mark{aspect-ratio:1;background:currentColor;width:clamp(34px,9%,76px)}@supports (color:color-mix(in lab,red,red)){.feature-image-mark{background:color-mix(in srgb,currentColor 26%,transparent)}}.feature-image-mark{-webkit-mask:url(/brand/BoldGroup_Trans_Logo_Yellow_new.svg) 50%/contain no-repeat;mask:url(/brand/BoldGroup_Trans_Logo_Yellow_new.svg) 50%/contain no-repeat}.subpage-hero-image,.hero-figure-image,.case-card-image{aspect-ratio:auto;position:absolute;inset:0}.stage-list{border-top:1px solid;grid-column:2;gap:0;margin:40px 0 0;padding:0;list-style:none;display:grid}@supports (color:color-mix(in lab,red,red)){.stage-list{border-top:1px solid color-mix(in srgb,currentColor 18%,transparent)}}.stage-list li{border-bottom:1px solid;grid-template-columns:56px minmax(0,1fr);gap:20px;padding:26px 0;display:grid}@supports (color:color-mix(in lab,red,red)){.stage-list li{border-bottom:1px solid color-mix(in srgb,currentColor 18%,transparent)}}.stage-number{font-family:var(--font-display);letter-spacing:-.06em;color:var(--accent-on-light);font-size:clamp(26px,3vw,40px);font-weight:600;line-height:1}.stage-list h3{font-family:var(--font-display);letter-spacing:-.045em;margin:0;font-size:clamp(19px,2vw,25px);font-weight:500;line-height:1.2}.stage-list p{margin:10px 0 0}.stage-list .stage-output{max-width:var(--measure-reading);font-size:13px!important}.stage-output span{color:var(--accent-on-light);letter-spacing:.11em;text-transform:uppercase;margin-right:8px;font-size:10px;font-weight:700}.wtc-tier-link{margin:8px 0 0!important}.wtc-tier-link a{color:var(--accent-on-light);align-items:center;gap:6px;font-size:14px;font-weight:700;display:inline-flex}.stage-bounds{border-top:1px solid;grid-template-columns:132px minmax(0,1fr);gap:6px 18px;margin:10px 0 0;padding:10px 0 0;display:grid}@supports (color:color-mix(in lab,red,red)){.stage-bounds{border-top:1px solid color-mix(in srgb,currentColor 14%,transparent)}}.stage-bounds dt{color:var(--label-on-light);letter-spacing:.11em;text-transform:uppercase;padding-top:3px;font-size:10px;font-weight:700}.standard-section .stage-bounds dd{max-width:var(--measure-reading);margin:0;font-size:16px;line-height:1.6}.stage-ladder-note{max-width:var(--measure-reading);grid-column:2;margin:30px 0 0!important}.stage-ladder-note em{color:var(--ink);font-style:normal;font-weight:600}.stage-ladder-note a{color:var(--accent-on-light);align-items:center;gap:6px;font-weight:700;display:inline-flex}@media(max-width:720px){.stage-bounds{grid-template-columns:1fr;gap:3px}.stage-bounds dt{padding-top:10px}}.accountability-list{border-top:1px solid;gap:0;margin:40px 0 0;display:grid}@supports (color:color-mix(in lab,red,red)){.accountability-list{border-top:1px solid color-mix(in srgb,currentColor 18%,transparent)}}.accountability-list>div{border-bottom:1px solid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:8px 28px;padding:22px 0;display:grid}@supports (color:color-mix(in lab,red,red)){.accountability-list>div{border-bottom:1px solid color-mix(in srgb,currentColor 18%,transparent)}}.accountability-list dt{font-family:var(--font-display);letter-spacing:-.04em;margin:0;font-size:clamp(17px,1.8vw,21px);font-weight:500;line-height:1.25}.accountability-list dt a{align-items:baseline;gap:6px;display:inline-flex}.accountability-list dt a:hover{color:var(--accent-on-light)}.accountability-list dd{margin:0;line-height:1.6}.principle-list{border-top:1px solid;grid-column:2;margin-top:40px}@supports (color:color-mix(in lab,red,red)){.principle-list{border-top:1px solid color-mix(in srgb,currentColor 18%,transparent)}}.principle-list .principle-item{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:baseline;gap:10px 28px;padding:24px 0}.principle-list .principle-item h3{letter-spacing:-.045em;font-size:clamp(18px,1.9vw,23px);line-height:1.25}.principle-list .principle-item p{margin:0;line-height:1.6}.method-tools{border-top:1px solid;grid-column:2;gap:0;margin:40px 0 0;padding:0;list-style:none;display:grid}@supports (color:color-mix(in lab,red,red)){.method-tools{border-top:1px solid color-mix(in srgb,currentColor 18%,transparent)}}.method-tools li{border-bottom:1px solid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:6px 28px;padding:24px 0;display:grid}@supports (color:color-mix(in lab,red,red)){.method-tools li{border-bottom:1px solid color-mix(in srgb,currentColor 18%,transparent)}}.method-tools h3{font-family:var(--font-display);letter-spacing:-.045em;margin:0;font-size:clamp(18px,1.9vw,23px);font-weight:500;line-height:1.25}.method-tools .tool-origin{color:var(--accent-on-light);grid-column:1;font-size:11px;line-height:1.5}.method-tools p{grid-area:1/2/span 2;margin:0;line-height:1.6}.needs-list{gap:12px;margin:38px 0 0;padding-left:20px;display:grid}.needs-list li{max-width:var(--measure-reading);line-height:1.6}.text-link.method-more{color:var(--bone);margin-top:30px}.text-link.method-more:hover{color:var(--accent-on-dark)}@media(max-width:720px){.stage-list,.principle-list,.method-tools{grid-column:1}.principle-list .principle-item,.method-tools li{grid-template-columns:1fr;gap:6px}.method-tools p{grid-area:auto/1;margin-top:6px}.stage-list li{grid-template-columns:40px minmax(0,1fr);gap:14px}.accountability-list>div{grid-template-columns:1fr;gap:8px}}.standard-page:has(.service-section) .service-block-list{max-width:610px}.standard-page:has(.service-section) :is(.service-section-body,.service-close) .button{white-space:normal;justify-content:center;gap:16px;width:auto;max-width:100%;height:auto;min-height:48px;padding:12px 22px}.standard-page:has(.service-section):not([lang=th]) .standard-section h2{letter-spacing:-.035em;font-size:clamp(32px,3.6vw,52px);line-height:1.1}.standard-page:has(.service-section):not([lang=th]) .case-hero h1{letter-spacing:-.04em}.standard-page:has(.service-section):not([lang=th]) .service-block-heading{letter-spacing:-.025em;font-size:clamp(22px,2vw,28px);line-height:1.25}.standard-page:has(.service-section) :is(.case-hero-meta,.case-hero-scroll,.case-hero-copy>span,.section-rail,.footer-label,.footer-bottom){font-size:12px;line-height:1.5}.standard-page:has(.service-section) .standard-page-nav{gap:clamp(8px,1vw,16px)}.standard-page:has(.service-section) .lang-switch a.site-link{justify-content:center;align-items:center;min-width:44px;min-height:44px;font-size:12px;display:inline-flex}.standard-page:has(.service-section) :is(.case-brand-button,.case-back,.footer-bottom a,.footer-bottom button,.footer-links a,.service-siblings a){align-items:center;min-height:44px;display:inline-flex}.standard-page:has(.service-section) :is(.footer-bottom a,.footer-bottom button){padding:8px}@media(max-width:720px){.standard-page:has(.service-section) .standard-page-nav{grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;display:grid}.standard-page:has(.service-section) .case-back{grid-column:1/-1;justify-self:start;font-size:12px}.standard-page:has(.service-section) .case-hero-meta{flex-direction:column;align-items:flex-start;gap:8px}.standard-page:has(.service-section) .case-hero-meta span:last-child{border-left:0;padding-left:0}.standard-page:has(.service-section) :is(.service-section-body,.service-close) .button{width:100%}}.subpage-frame{--page-frame:clamp(14px, 1.75vw, 28px);width:auto;min-height:calc(100svh - (var(--page-frame) * 2));margin:var(--page-frame);box-shadow:0 18px 42px #00000029}.subpage-frame.standard-page .subpage-hero{min-height:calc(100svh - 78px - (var(--page-frame) * 2))}.subpage-frame.case-page .case-hero{min-height:calc(100svh - var(--case-header-height) - (var(--page-frame) * 2))}@media(max-width:720px){.subpage-frame{--page-frame:10px;min-height:calc(100svh - (var(--page-frame) * 2));margin:var(--page-frame)}.subpage-frame.standard-page .subpage-hero{min-height:calc(100svh - 62px - (var(--page-frame) * 2))}.subpage-frame.case-page .case-hero{min-height:calc(100svh - var(--case-header-height) - (var(--page-frame) * 2))}}.subpage-frame{--surface-inset:clamp(34px, 4.5vw, 72px);--surface-space:clamp(18px, 2vw, 30px)}.subpage-frame>.standard-page-nav,.subpage-frame>.subpage-hero,.subpage-frame>.standard-section,.subpage-frame>.case-introduction,.subpage-frame>.case-approach,.subpage-frame>.case-boundaries,.subpage-frame>.case-cta{margin-inline:var(--surface-inset)}.subpage-frame>.subpage-hero,.subpage-frame>.standard-section,.subpage-frame>.case-introduction,.subpage-frame>.case-approach,.subpage-frame>.case-boundaries,.subpage-frame>.case-cta,.subpage-frame>.standard-page-nav{margin-top:var(--surface-space)}.subpage-frame>.case-next{width:calc(100% - (var(--surface-inset) * 2));margin:var(--surface-space) var(--surface-inset)}.standard-section{padding-block:clamp(142px,13vw,196px)}.standard-section-content{max-width:760px}.standard-section p{max-width:570px}.case-introduction>div:nth-child(2){max-width:610px}.case-approach-content{max-width:690px}@media(min-width:721px)and (max-width:1050px){.subpage-frame{--surface-inset:34px;--surface-space:22px}.standard-section{padding-block:132px}.standard-section-content{max-width:690px}.standard-section p{max-width:540px}}@media(max-width:720px){.subpage-frame{--surface-inset:10px;--surface-space:10px}.subpage-frame>.standard-page-nav,.subpage-frame>.subpage-hero,.subpage-frame>.standard-section,.subpage-frame>.case-introduction,.subpage-frame>.case-approach,.subpage-frame>.case-boundaries,.subpage-frame>.case-cta{margin-inline:var(--surface-inset)}.subpage-frame>.case-next{width:calc(100% - (var(--surface-inset) * 2));margin:var(--surface-space) var(--surface-inset)}.standard-section{padding-block:102px}.standard-section-content,.standard-section p{max-width:none}}:root{--type-body:1rem;--type-body-large:clamp(1.0625rem, .25vw + 1rem, 1.1875rem);--type-supporting:1rem;--type-label:.75rem;--leading-body:1.6;--leading-reading:1.68;--measure-reading:56ch}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;font-size:100%}body,.site .hero-copy p,.site .manifesto-section p,.site .signals-intro p,.site .services-small-copy p,.site .cases-lead>p,.site .proof-top>p,.site .contact-action>p,.standard-page p,.case-page p,.insights-hero p,.insight-card p,.content-hero p,.content-close p{font-size:var(--type-body);line-height:var(--leading-body)}.case-page .case-hero-copy p,.case-page .case-introduction>div>p,.case-page .case-step-list p,.case-page .case-boundary-list p,.content-hero p{max-width:var(--measure-reading);font-size:var(--type-body-large);line-height:var(--leading-reading)}@media(max-width:720px){:root{--type-body-large:1rem;--measure-reading:38ch;--leading-reading:1.66}}.site .signal-card p,.site .method-row p,.site .proof-claim p,.site .proof-label p,.site .service-expanded-copy p,.site .hero-right-middle p,.site .faq-item p,.site .why-body>p,.site .why-clients>p,.footer-top p{font-size:var(--type-body);line-height:var(--leading-body)}.site .services-small-copy p,.site .faq-item p,.site .why-body>p,.site .why-clients>p,.site .proof-claim p,.case-page .case-boundary-list p{max-width:var(--measure-reading)}.site .hero-right-middle{max-width:260px}@media(max-width:720px){.site .hero-right-middle{max-width:none}}.site .hero-left>p,.subpage-frame .insight-card p,.insights-list-section .insight-card p{font-size:var(--type-body);line-height:var(--leading-body)}.footer-direction p{font-size:.875rem;line-height:1.55}:root{--type-long-form:clamp(1.125rem, .25vw + 1.06rem, 1.1875rem);--type-long-form-small:1rem;--leading-long-form:1.68;--leading-long-form-tight:1.62;--measure-long-form:38rem;--measure-long-form-narrow:32rem}.long-form-copy{max-width:var(--measure-long-form);font-size:var(--type-long-form);line-height:var(--leading-long-form)}.long-form-copy--narrow{max-width:var(--measure-long-form-narrow)}.long-form-copy--small{font-size:var(--type-long-form-small);line-height:var(--leading-long-form-tight)}.case-page .case-hero-copy p,.case-page .case-introduction>div>p,.case-page .case-step-list p,.case-page .case-boundary-list p{font-size:var(--type-long-form);line-height:var(--leading-long-form)}@media(max-width:720px){:root{--type-long-form:1rem;--type-long-form-small:1rem;--leading-long-form:1.66}}.insights-hero,.content-hero,.content-close{margin:var(--surface-space) var(--surface-inset) 0;color:var(--bone);background:var(--ink)}.insights-hero{min-height:min(610px,72svh);padding:clamp(54px,7vw,112px) var(--layout-gutter);align-content:end;display:grid}.insights-hero>span,.content-hero>div>span,.content-close>span{color:var(--accent-on-dark);letter-spacing:.14em;font-size:10px;font-weight:700}.insights-hero h1,.content-hero h1{max-width:880px;font-family:var(--font-display);letter-spacing:-.085em;margin:21px 0 24px;font-size:clamp(52px,7vw,105px);font-weight:500;line-height:.9}.insights-hero p{max-width:610px;color:var(--label-on-dark);margin:0;font-size:17px;line-height:1.65}.insights-list-section{margin-top:var(--surface-space)}.insight-list{border-top:1px solid #0b0b0b2e}.insight-card{border-bottom:1px solid #0b0b0b2e;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:30px;padding:36px 0;display:grid}.insight-card>div>span{color:var(--accent-on-light);letter-spacing:.12em;font-size:10px;font-weight:700}.insight-card h2{max-width:720px;font-family:var(--font-display);letter-spacing:-.07em;margin:18px 0 0;font-size:clamp(30px,3.7vw,54px);font-weight:500;line-height:1}.insight-card p{max-width:580px;color:var(--label-on-light);margin:16px 0 0;font-size:15px;line-height:1.6}.insight-card :is(button,a),.content-hero :is(button,a),.content-close :is(button,a){border:0;align-items:center;gap:10px;font-size:12px;font-weight:700;display:inline-flex}.insight-card :is(button,a){color:var(--ink);white-space:nowrap;background:0 0;padding:0}.content-hero{grid-template-columns:var(--layout-rail) minmax(0,1fr) 200px;gap:var(--layout-gap);padding:clamp(54px,7vw,112px) var(--layout-gutter);display:grid}.content-hero>:is(button,a){color:var(--label-on-dark);background:0 0;align-self:start;padding:0}.content-hero h1{max-width:800px;margin-top:19px}.content-hero p{max-width:610px;color:var(--label-on-dark);font-size:var(--type-long-form);line-height:var(--leading-long-form);margin:0}.content-hero aside{color:var(--label-on-dark);letter-spacing:.1em;align-self:end;gap:9px;font-size:9px;line-height:1.4;display:grid}.content-hero aside strong{color:var(--bone);font-family:var(--font-display);letter-spacing:-.04em;font-size:17px}.content-close{padding:clamp(72px,9vw,144px) var(--layout-gutter)}.content-close h2{max-width:880px;font-family:var(--font-display);letter-spacing:-.075em;margin:20px 0 0;font-size:clamp(38px,4.6vw,70px);font-weight:500;line-height:.98}.content-close h2 em{color:var(--accent-on-dark);font-style:normal}.content-close :is(button,a){min-width:min(350px,100%);color:var(--ink);background:var(--bone);justify-content:space-between;margin-top:38px;padding:15px 18px}.content-not-found{min-height:100vh;color:var(--bone);background:var(--ink);place-content:center;gap:24px;padding:30px;display:grid}.content-not-found :is(button,a){width:fit-content;color:var(--ink);background:var(--bone);border:0;align-items:center;gap:8px;padding:10px;display:inline-flex}@media(prefers-reduced-motion:no-preference){.insight-card :is(button,a),.content-hero :is(button,a),.content-close :is(button,a){transition:color .18s,background .18s,transform .16s cubic-bezier(.23,1,.32,1)}.insight-card :is(button,a):hover,.content-hero :is(button,a):hover{color:var(--accent)}.content-close :is(button,a):hover{color:var(--bone);background:var(--accent)}.insight-card :is(button,a):active,.content-hero :is(button,a):active,.content-close :is(button,a):active{transform:scale(.97)}}@media(max-width:1050px){.content-hero{grid-template-columns:var(--layout-rail) minmax(0,1fr)}.content-hero aside{grid-column:2;margin-top:22px}.content-hero h1{font-size:clamp(45px,6vw,70px)}}@media(max-width:720px){.insights-hero,.content-hero,.content-close{margin-inline:var(--surface-inset)}.insights-hero{min-height:520px;padding:76px var(--layout-gutter)}.insights-hero h1,.content-hero h1{font-size:clamp(42px,12vw,56px)}.insights-hero p{font-size:15px}.insight-card{grid-template-columns:1fr;gap:23px;padding:30px 0}.insight-card h2{font-size:31px}.content-hero{padding:42px var(--layout-gutter) 62px;display:block}.content-hero>div{margin-top:55px}.content-hero aside{margin-top:28px}.content-close{padding:82px var(--layout-gutter)}}.article-brief-section{margin-top:var(--surface-space);padding-block:clamp(52px,5vw,74px) clamp(26px,2.5vw,34px)}.article-body-section{padding-block:clamp(30px,3vw,42px) clamp(96px,9vw,132px)}.article-faq-section{margin-top:var(--surface-space);padding-block:clamp(72px,7vw,104px)}.article-brief{border-left:2px solid var(--accent-on-light);gap:15px;margin:0;padding:0 0 0 21px;list-style:none;display:grid}.article-brief li{max-width:var(--measure-reading);width:100%;color:var(--ink);font-size:var(--type-body-large);line-height:var(--leading-reading)}.article-lead{font-family:var(--font-display);letter-spacing:-.05em;max-width:30ch!important;color:var(--ink)!important;margin:0 0 clamp(38px,4vw,56px)!important;font-size:clamp(23px,2.3vw,33px)!important;line-height:1.18!important}.article-body{gap:clamp(38px,4vw,54px);display:grid}.article-section h2{max-width:24ch;color:var(--ink);font-family:var(--font-display);letter-spacing:-.05em;margin:0 0 20px;font-size:clamp(23px,2.1vw,31px);font-weight:500;line-height:1.1}.article-section p,.article-section li{max-width:var(--measure-reading);color:var(--ink);font-size:var(--type-body);line-height:var(--leading-reading)}.article-section p+p,.article-section p+ul{margin-top:19px}.article-lead-in strong{color:var(--ink);font-weight:700}.article-list{margin:0;padding-left:22px;list-style:outside}.article-list li+li{margin-top:11px}.article-list li{padding-left:4px}.article-list li::marker{color:var(--accent-on-light)}.article-note{max-width:var(--measure-reading);border-top:1px solid var(--line-dark);color:var(--label-on-light);font-size:var(--type-body);line-height:var(--leading-body);padding-top:19px;font-style:italic;margin-top:26px!important}.article-faq{border-top:1px solid var(--line);gap:0;margin:0;display:grid}.article-faq>div{border-bottom:1px solid var(--line);padding:26px 0}.article-faq dt{max-width:46ch;color:var(--bone);font-family:var(--font-display);letter-spacing:-.035em;font-size:clamp(17px,1.6vw,21px);font-weight:500;line-height:1.25}.article-faq dd{max-width:var(--measure-reading);color:var(--label-on-dark);font-size:var(--type-body);line-height:var(--leading-reading);margin:13px 0 0}@media(max-width:720px){.article-lead{max-width:none!important}.article-section h2{max-width:none}.article-brief{padding-left:16px}.article-faq>div{padding:21px 0}}.insight-date{color:var(--label-on-light);font-size:var(--type-label);letter-spacing:.04em;margin-top:14px;display:block}.article-sources-section{padding-block:clamp(58px,6vw,82px)}.article-sources{counter-reset:source;border-top:1px solid var(--line-dark);margin:0;padding:0;list-style:none}.article-sources li{border-bottom:1px solid var(--line-dark);counter-increment:source;padding:22px 0 22px 40px;position:relative}.article-sources li:before{content:counter(source,decimal-leading-zero);color:var(--accent-on-light);letter-spacing:.08em;font-size:11px;font-weight:700;position:absolute;top:24px;left:0}.article-source-label{max-width:var(--measure-reading);color:var(--ink);font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-size:clamp(16px,1.5vw,19px);font-weight:500;line-height:1.3}.article-source-label a{color:var(--ink);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--accent-on-light);text-decoration-color:var(--accent-on-light)}.article-source-meta{max-width:var(--measure-reading);color:var(--label-on-light);font-size:var(--type-label);letter-spacing:.04em;margin:8px 0 0}.article-source-note{max-width:var(--measure-reading);color:var(--label-on-light);font-size:var(--type-body);line-height:var(--leading-body);margin:11px 0 0}@media(prefers-reduced-motion:no-preference){.article-source-label a{transition:color .16s}}.article-source-label a:hover{color:var(--accent-on-light)}@media(max-width:720px){.article-sources li{padding-left:32px}}.article-onward-section{padding-block:clamp(58px,6vw,82px)}.article-onward{border-top:1px solid var(--line-dark);margin:0;padding:0;list-style:none}.article-onward li{border-bottom:1px solid var(--line-dark);grid-template-columns:96px minmax(0,1fr);gap:16px;padding:22px 0;display:grid}.article-onward-kind{color:var(--label-on-light);letter-spacing:.13em;text-transform:uppercase;font-size:10px;font-weight:700}.article-onward-link{max-width:var(--measure-reading);color:var(--ink);font-family:var(--font-display);letter-spacing:-.03em;text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--accent-on-light);text-decoration-color:var(--accent-on-light);align-items:center;gap:8px;font-size:clamp(16px,1.5vw,19px);font-weight:500;line-height:1.3;display:inline-flex}.article-onward-note{max-width:var(--measure-reading);color:var(--label-on-light);font-size:var(--type-body);line-height:var(--leading-body);margin:9px 0 0}@media(prefers-reduced-motion:no-preference){.article-onward-link{transition:color .16s}}.article-onward-link:hover{color:var(--accent-on-light)}@media(max-width:720px){.article-onward li{grid-template-columns:1fr;gap:8px}}.readiness-h3{font-family:var(--font-display);letter-spacing:-.04em;margin:28px 0 10px;font-size:clamp(17px,1.7vw,21px);font-weight:600;line-height:1.25}.readiness-list{gap:8px;margin:12px 0 0 18px;display:grid}.readiness-list li{line-height:1.6}.readiness-swot-grid{grid-column:2;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:28px;display:grid}.readiness-swot-card{border:1px solid}@supports (color:color-mix(in lab,red,red)){.readiness-swot-card{border:1px solid color-mix(in srgb,currentColor 14%,transparent)}}.readiness-swot-card{padding:18px 16px}.readiness-swot-card span{color:var(--accent-on-light);letter-spacing:.11em;margin-bottom:8px;font-size:10px;font-weight:700;display:block}.readiness-swot-card p{margin:0;font-size:14px;line-height:1.6}.standard-section-dark .readiness-swot-card span{color:var(--accent-on-dark)}.readiness-kpis{border-top:1px solid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:28px;display:grid}@supports (color:color-mix(in lab,red,red)){.readiness-kpis{border-top:1px solid color-mix(in srgb,currentColor 16%,transparent)}}.readiness-kpis{padding-top:18px}.readiness-kpis div{gap:6px;display:grid}.readiness-kpis strong{letter-spacing:.1em;color:var(--accent-on-light);font-size:11px}.readiness-kpis span{color:currentColor;font-size:13px;line-height:1.5}@supports (color:color-mix(in lab,red,red)){.readiness-kpis span{color:color-mix(in srgb,currentColor 72%,transparent)}}.standard-section-dark .readiness-kpis strong{color:var(--accent-on-dark)}.readiness-table-wrap{-webkit-overflow-scrolling:touch;margin-top:18px;overflow-x:auto}.readiness-table{border-collapse:collapse;width:100%;min-width:560px;font-size:13px}.readiness-table th,.readiness-table td{text-align:left;border:1px solid;padding:10px 12px}@supports (color:color-mix(in lab,red,red)){.readiness-table th,.readiness-table td{border:1px solid color-mix(in srgb,currentColor 14%,transparent)}}.readiness-table th,.readiness-table td{vertical-align:top;line-height:1.5}.readiness-table th{letter-spacing:.08em;text-transform:uppercase;background:currentColor;font-size:10px;font-weight:700}@supports (color:color-mix(in lab,red,red)){.readiness-table th{background:color-mix(in srgb,currentColor 6%,transparent)}}.readiness-sector-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:18px;display:grid}.readiness-sector-grid h3{font-family:var(--font-display);letter-spacing:-.03em;margin:0 0 6px;font-size:17px}.readiness-sector-grid p{color:currentColor;margin:0;font-size:14px;line-height:1.6}@supports (color:color-mix(in lab,red,red)){.readiness-sector-grid p{color:color-mix(in srgb,currentColor 70%,transparent)}}.readiness-two-col{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:16px;display:grid}.readiness-two-col strong{letter-spacing:.06em;margin-bottom:6px;font-size:13px;display:block}.readiness-two-col p{margin:0;font-size:14px;line-height:1.6}.readiness-matrix{border:1px solid;gap:0;margin-top:18px;display:grid}@supports (color:color-mix(in lab,red,red)){.readiness-matrix{border:1px solid color-mix(in srgb,currentColor 18%,transparent)}}.readiness-matrix-head,.readiness-matrix-row{grid-template-columns:160px 1fr 1fr;display:grid}.readiness-matrix-head span{letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid;padding:10px 12px;font-size:10px;font-weight:700}@supports (color:color-mix(in lab,red,red)){.readiness-matrix-head span{border-bottom:1px solid color-mix(in srgb,currentColor 18%,transparent)}}.readiness-matrix-head span{border-right:1px solid}@supports (color:color-mix(in lab,red,red)){.readiness-matrix-head span{border-right:1px solid color-mix(in srgb,currentColor 14%,transparent)}}.readiness-matrix-label{letter-spacing:.06em;text-transform:uppercase;border-right:1px solid;align-items:center;padding:14px 12px;font-size:11px;font-weight:700;display:flex}@supports (color:color-mix(in lab,red,red)){.readiness-matrix-label{border-right:1px solid color-mix(in srgb,currentColor 14%,transparent)}}.readiness-matrix-label{border-bottom:1px solid}@supports (color:color-mix(in lab,red,red)){.readiness-matrix-label{border-bottom:1px solid color-mix(in srgb,currentColor 14%,transparent)}}.readiness-matrix-cell{border-right:1px solid;padding:14px}@supports (color:color-mix(in lab,red,red)){.readiness-matrix-cell{border-right:1px solid color-mix(in srgb,currentColor 14%,transparent)}}.readiness-matrix-cell{border-bottom:1px solid}@supports (color:color-mix(in lab,red,red)){.readiness-matrix-cell{border-bottom:1px solid color-mix(in srgb,currentColor 14%,transparent)}}.readiness-matrix-cell:last-child,.readiness-matrix-head span:last-child{border-right:0}.readiness-matrix-cell strong{margin-bottom:6px;font-size:13px;display:block}.readiness-matrix-cell span{opacity:.78;font-size:12px;line-height:1.55;display:block}.readiness-matrix-cell.accent{background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.readiness-matrix-cell.accent{background:color-mix(in srgb,var(--accent) 7%,transparent)}}.readiness-matrix-cell.danger{background:#ff3b300f}.readiness-source-list{gap:8px;margin:18px 0 0 18px;font-size:13px;line-height:1.6;display:grid}.readiness-source-list li{color:currentColor}@supports (color:color-mix(in lab,red,red)){.readiness-source-list li{color:color-mix(in srgb,currentColor 72%,transparent)}}@media(max-width:900px){.readiness-swot-grid,.readiness-kpis,.readiness-sector-grid,.readiness-two-col,.readiness-matrix-head,.readiness-matrix-row{grid-template-columns:1fr}.readiness-matrix-head span:first-child,.readiness-matrix-label{display:none}.readiness-matrix-cell{border-right:0}}:root{--radius:.65rem;--ink:#0b0b0b;--ink-soft:#1a1a1b;--bone:#f1efea;--paper:#e4e3e0;--muted:#8b8b8b;--line:#ffffff29;--line-dark:#0b0b0b2e;--accent:#e8462c;--accent-ink:#fff;--accent-on-light:#b33624;--accent-on-dark:#ff7961;--label-on-light:var(--ink)}@supports (color:color-mix(in lab,red,red)){:root{--label-on-light:color-mix(in srgb, var(--ink) 72%, var(--bone))}}:root{--label-on-dark:var(--bone)}@supports (color:color-mix(in lab,red,red)){:root{--label-on-dark:color-mix(in srgb, var(--bone) 70%, var(--ink))}}:root{--mark-on-light:var(--ink);--mark-on-dark:var(--bone)}@supports (color:color-mix(in lab,red,red)){:root{--mark-on-dark:color-mix(in srgb, var(--bone) 80%, transparent)}}:root{--font-display:"Sora", sans-serif;--font-body:"DM Sans", sans-serif;--display-1:clamp(43px, 5.25vw, 83px);--display-1-track:-.07em;--display-1-leading:.95}*{box-sizing:border-box}html{scroll-behavior:smooth;background:#0b0b0b}body{background:#0b0b0b;margin:0;font-family:DM Sans,sans-serif}button,a{font:inherit}button{cursor:pointer}:where(.site-link){color:inherit;text-decoration:none}button:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.site :is(button,a):focus-visible{outline:2px solid var(--bone);outline-offset:2px;box-shadow:0 0 0 4px var(--accent-on-light)}.service-heading{font:inherit;margin:0}.site{color:var(--bone);background:var(--ink);overflow:hidden}:is(.site,.subpage-frame)[data-style=corporate]{--ink:#0e1420;--ink-soft:#17202e;--bone:#f4f6fa;--paper:#e2e8f2;--muted:#8a94a6;--line:#f4f6fa2b;--line-dark:#0e14202b;--accent:#0047ff;--accent-on-light:#0047ff;--accent-on-dark:#5181ff;--mark-on-light:#0047ff;--mark-on-dark:#ffe500}:is(.site,.subpage-frame)[data-style=ledger]{--ink:#24201b;--ink-soft:#332e27;--bone:#f5eee1;--paper:#ded4c4;--muted:#a19687;--line:#f5eee12e;--line-dark:#24201b2e;--accent:#b34a32;--accent-on-light:#923425;--accent-on-dark:#ef8a71}:is(.site,.subpage-frame)[data-style=pacific]{--ink:#062a3c;--ink-soft:#0b3b51;--bone:#edf3f3;--paper:#d5e1e1;--muted:#9ab3bb;--line:#edf3f32e;--line-dark:#062a3c30;--accent:#e65b42;--accent-on-light:#9c3125;--accent-on-dark:#ff8b73}:is(.site,.subpage-frame)[data-style=clay]{--ink:#26221f;--ink-soft:#38312d;--bone:#f5f0e8;--paper:#e4d7c7;--muted:#a59b91;--line:#f5f0e82e;--line-dark:#26221f2e;--accent:#b6492f;--accent-on-light:#a23c2a;--accent-on-dark:#ef8168}:is(.site,.subpage-frame)[data-style=navy]{--ink:#071a33;--ink-soft:#0b2748;--bone:#f1f5f7;--paper:#d7e2e8;--muted:#9cb0bd;--line:#f1f5f730;--line-dark:#071a3330;--accent:#56c0d9;--accent-on-light:#0b6175;--accent-on-dark:#7bd3e8}.top-shell{z-index:30;width:100%;padding:17px 22px 0;transition:padding .25s,background .25s;position:fixed;top:0;left:0}.top-shell.scrolled{background:var(--ink);padding-top:0}@supports (color:color-mix(in lab,red,red)){.top-shell.scrolled{background:color-mix(in srgb,var(--ink) 92%,transparent)}}.top-shell.scrolled{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px)}.top-nav{max-width:1520px;min-height:58px;color:var(--ink);background:#f1efeaf2;border:1px solid #0b0b0b14;justify-content:space-between;align-items:center;gap:25px;margin:auto;padding:0 17px;display:flex}.brand-button{color:inherit;background:0 0;border:0;padding:0}.brand-lockup{text-align:left;align-items:center;gap:8px;min-width:168px;display:flex}.brand-mark,.hero-brand-mark,.footer-corporate-mark{background:var(--ink);flex:none;display:inline-block;-webkit-mask:url(/brand/BoldGroup_Trans_Logo_Yellow_new.svg) 50%/contain no-repeat;mask:url(/brand/BoldGroup_Trans_Logo_Yellow_new.svg) 50%/contain no-repeat}.brand-mark{width:31px;height:31px}.brand-lockup.inverse .brand-mark{background:#fffc}.brand-wordmark{letter-spacing:-.075em;font-family:Sora,sans-serif;font-size:18px;font-weight:700;line-height:1}.brand-wordmark span{margin-left:4px;font-weight:500}.brand-place{color:#0b0b0b94;font-family:var(--font-body);letter-spacing:.13em;align-self:flex-end;margin:0 0 1px 2px;font-size:7px;font-weight:700}.desktop-nav{align-items:center;gap:25px;display:flex}.desktop-nav :is(button,a),.nav-contact,.text-link,.footer-links :is(button,a),.footer-bottom :is(button,a){color:inherit;background:0 0;border:0}.desktop-nav :is(button,a){color:#0b0b0ba6;padding:5px 0;font-size:12px;font-weight:600;transition:color .18s;position:relative}.desktop-nav :is(button,a):after{content:"";background:var(--accent);transform-origin:0;height:1px;transition:transform .18s;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.desktop-nav :is(button,a):hover{color:var(--ink)}.desktop-nav :is(button,a):hover:after{transform:scaleX(1)}.nav-contact{min-height:33px;color:var(--bone);background:var(--ink);transition:transform .16s var(--ease-out,ease),background .16s ease;align-items:center;gap:9px;padding:0 12px;font-size:11px;font-weight:700;display:inline-flex}.nav-contact:hover{background:var(--accent)}.nav-contact:active{transform:scale(.97)}.mobile-menu-button{color:var(--ink);background:0 0;border:0;display:none}.mobile-menu{z-index:50;background:var(--ink);min-height:100svh;color:var(--bone);padding:20px;position:fixed;inset:0}.mobile-menu-head{justify-content:space-between;align-items:center;display:flex}.mobile-menu .inverse{color:var(--bone)}.mobile-menu-head button{color:var(--bone);background:0 0;border:0}.mobile-menu-links{border-top:1px solid var(--line);margin-top:80px;display:grid}.mobile-menu-links :is(button,a){border:0;border-bottom:1px solid var(--line);width:100%;color:var(--bone);text-align:left;font-family:var(--font-display);background:0 0;grid-template-columns:35px 1fr 20px;align-items:center;padding:17px 0;font-size:clamp(22px,8vw,34px);display:grid}.mobile-menu-links span{color:var(--accent);font-family:var(--font-body);font-size:11px}.hero-section{background:var(--ink);padding:98px 22px 0}.hero-workspace{max-width:1520px;min-height:810px;color:var(--ink);background:var(--bone);grid-template-columns:minmax(285px,.96fr) minmax(280px,1.18fr) minmax(255px,.74fr);margin:auto;display:grid;position:relative;overflow:hidden}.hero-left{z-index:2;padding:124px 10% 134px 8%;position:relative}.eyebrow,.section-rail,.footer-label{letter-spacing:.14em;align-items:center;gap:8px;font-size:9px;font-weight:700;display:flex}.eyebrow{max-width:270px}.eyebrow-dot{background:var(--accent);border-radius:50%;width:7px;height:7px}.hero-left h1{max-width:570px;font-family:var(--font-display);font-size:var(--display-1);letter-spacing:var(--display-1-track);line-height:var(--display-1-leading);margin:45px 0 24px;font-weight:600}.hero-left h1 em,h2 em{color:var(--accent);font-style:normal;font-weight:500}.hero-left>p{color:#0b0b0bb5;max-width:370px;margin:0;font-size:15px;line-height:1.6}.hero-actions{flex-wrap:wrap;align-items:center;gap:23px;margin-top:34px;display:flex}.button{border:1px solid #0000;justify-content:center;align-items:center;gap:14px;min-height:48px;padding:0 18px;font-size:12px;font-weight:700;transition:transform .16s,background .16s,color .16s;display:inline-flex}.button:active{transform:scale(.97)}.button-dark{color:var(--bone);background:var(--ink)}.button-dark:hover{background:var(--accent)}.text-link{color:var(--ink);text-align:left;align-items:center;gap:7px;padding:4px 0;font-size:12px;font-weight:700;display:inline-flex}.text-link:hover{color:var(--accent)}.hero-figure{isolation:isolate;background:#181818;min-height:690px;position:relative;overflow:hidden}.hero-figure>img{object-fit:cover;object-position:center;filter:grayscale()contrast(1.1);width:100%;height:100%}.hero-figure-shade{z-index:1;background:linear-gradient(#0b0b0b1a,#0b0b0b5c);position:absolute;inset:0}.hero-figure-mark{z-index:2;color:#fff;white-space:nowrap;font-family:var(--font-body);letter-spacing:.14em;background:#0b0b0bb8;align-items:center;gap:10px;padding:12px;font-size:8px;font-weight:700;display:flex;position:absolute;top:46%;left:50%;transform:translate(-50%,-50%)}.hero-figure-mark img{width:22px;height:22px}.hero-right{z-index:2;flex-direction:column;justify-content:space-between;min-width:0;padding:37px 28px 95px;display:flex;position:relative}.date-stamp{font-size:10px;line-height:1.35}.date-stamp strong{font-size:12px}.hero-right-middle{align-self:flex-end;width:100%;max-width:220px}.capsule{background:#0b0b0b14;border-radius:100px;padding:8px 10px;font-size:9px;font-weight:700;display:inline-block}.hero-right-middle p{margin:19px 0 0;font-size:14px;line-height:1.45}.outcome-card{min-height:167px;color:var(--bone);background:var(--ink);flex-direction:column;justify-content:flex-end;padding:17px;display:flex;position:relative;overflow:hidden}.outcome-card:before{content:"";background:linear-gradient(130deg,transparent 55%,var(--accent));position:absolute;inset:0}@supports (color:color-mix(in lab,red,red)){.outcome-card:before{background:linear-gradient(130deg,transparent 55%,color-mix(in srgb,var(--accent) 55%,transparent))}}.outcome-card span,.outcome-card strong,.outcome-card :is(button,a){z-index:1;position:relative}.outcome-card span{color:#f1efeaa1;letter-spacing:.12em;font-size:8px;font-weight:700}.outcome-card strong{max-width:150px;font-family:var(--font-display);letter-spacing:-.055em;margin-top:8px;font-size:18px;line-height:1.03}.outcome-card :is(button,a){width:35px;height:35px;color:var(--ink);background:var(--bone);border:0;border-radius:50%;position:absolute;bottom:13px;right:13px}.hero-meta{z-index:3;border-top:1px solid var(--line-dark);min-height:62px;color:var(--ink);background:var(--bone);grid-template-columns:1fr 1.4fr 1fr;align-items:center;padding:0 28px;display:grid;position:absolute;bottom:0;left:0;right:0}@supports (color:color-mix(in lab,red,red)){.hero-meta{background:color-mix(in srgb,var(--bone) 94%,transparent)}}.hero-meta{letter-spacing:.1em;font-size:8px;font-weight:700}.hero-meta>:last-child{justify-self:end}.hero-meta button{color:inherit;font-size:inherit;font-weight:inherit;background:0 0;border:0;align-items:center;gap:7px;padding:0;display:inline-flex}.manifesto-section{min-height:810px;color:var(--bone);background:var(--ink);grid-template-columns:minmax(160px,.38fr) minmax(0,1.62fr);padding:38px max(6vw,42px) 110px;display:grid}.section-rail{color:#0b0b0b9e;align-self:start}.manifesto-inner{text-align:center;flex-direction:column;grid-column:1/-1;align-items:center;max-width:1050px;margin:108px auto 0;display:flex}.manifesto-kicker{color:var(--accent);margin:0 0 22px;font-size:12px;font-weight:700}.manifesto-inner h2{max-width:1000px;font-family:var(--font-display);letter-spacing:-.07em;margin:0;font-size:clamp(36px,4.25vw,68px);font-weight:500;line-height:1.05}.manifesto-summary{color:#f1efeab3;max-width:475px;margin:46px 0 0;font-size:16px;line-height:1.62}.manifesto-question{border:1px solid var(--line);text-align:left;width:min(100%,750px);margin-top:80px;padding:24px 28px}.manifesto-question span{color:var(--accent);letter-spacing:.14em;margin-bottom:14px;font-size:8px;font-weight:700;display:block}.manifesto-question p{max-width:650px;font-family:var(--font-display);letter-spacing:-.045em;margin:0;font-size:20px;line-height:1.25}.signals-section{color:var(--ink);background:var(--paper);padding:94px max(6vw,42px) 120px}.signals-intro{grid-template-columns:minmax(170px,.38fr) minmax(0,1fr) minmax(220px,.38fr);align-items:start;gap:25px;max-width:1400px;margin:auto;display:grid}.signals-intro h2,.services-lead h2,.method-content h2,.proof-claim h2,.contact-copy h2{font-family:var(--font-display);letter-spacing:-.07em;margin:42px 0 0;font-size:clamp(34px,4.5vw,66px);font-weight:500;line-height:.99}.signals-intro p{color:#0b0b0bb0;margin:94px 0 0;font-size:14px;line-height:1.55}.signal-grid{background:var(--line-dark);border:1px solid var(--line-dark);grid-template-columns:repeat(3,1fr);gap:1px;max-width:1400px;margin:92px auto 0;display:grid}.signal-card{background:var(--bone);flex-direction:column;min-height:310px;padding:24px;display:flex}.signal-head{color:var(--accent);justify-content:space-between;align-items:center;font-size:11px;font-weight:700;display:flex}.signal-card h3{max-width:270px;font-family:var(--font-display);letter-spacing:-.05em;margin:auto 0 15px;font-size:22px;line-height:1.08}.signal-card p{color:#0b0b0b9c;max-width:310px;margin:0;font-size:13px;line-height:1.55}.services-section{color:var(--bone);background:var(--ink);padding:115px max(6vw,42px) 120px}.services-lead{grid-template-columns:minmax(0,1.18fr) minmax(250px,.48fr);gap:65px;max-width:1400px;margin:auto;display:grid}.services-lead h2{max-width:820px}.services-small-copy p{color:#f1efeab0;margin:0;font-size:14px;line-height:1.6}.service-tags{flex-wrap:wrap;gap:6px;margin-top:24px;display:flex}.service-tags span{border:1px solid var(--line);letter-spacing:.08em;padding:7px 9px;font-size:8px;font-weight:700}.service-stack{background:var(--bone);max-width:1400px;color:var(--ink);border-radius:12px;margin:78px auto 0;overflow:hidden}.service-row{border-bottom:1px solid var(--line-dark)}.service-row:last-child{border:0}.service-trigger{width:100%;color:var(--ink);text-align:left;background:0 0;border:0;grid-template-columns:75px minmax(190px,.9fr) minmax(230px,1fr) 36px;align-items:center;gap:15px;padding:25px 28px;transition:background .18s;display:grid}.service-trigger:hover,.service-row.active .service-trigger{background:var(--paper)}@supports (color:color-mix(in lab,red,red)){.service-trigger:hover,.service-row.active .service-trigger{background:color-mix(in srgb,var(--paper) 75%,transparent)}}.service-number{color:var(--accent);font-size:11px;font-weight:700}.service-name{font-family:var(--font-display);letter-spacing:-.055em;font-size:22px}.service-label{color:#0b0b0b91;max-width:360px;font-size:12px;line-height:1.45}.service-icon{border:1px solid var(--line-dark);border-radius:50%;justify-self:end;place-items:center;width:32px;height:32px;display:grid}.service-expanded{background:var(--paper);grid-template-columns:minmax(230px,.82fr) minmax(280px,1.18fr);gap:42px;padding:2px 28px 30px 118px;display:grid}@supports (color:color-mix(in lab,red,red)){.service-expanded{background:color-mix(in srgb,var(--paper) 75%,transparent)}}.service-expanded-copy{align-self:center}.service-expanded-copy p{color:#0b0b0bb3;margin:0 0 24px;font-size:14px;line-height:1.6}.dark-link{color:var(--ink)}.service-image{background:var(--ink);min-height:185px;overflow:hidden}.service-image img{object-fit:cover;filter:grayscale(.65)contrast(1.05);width:100%;height:100%}.service-expanded-copy .service-triggers{margin:0 0 18px}.service-triggers>span,.service-result>span{color:var(--accent-on-light);letter-spacing:.13em;margin-bottom:8px;font-size:9px;font-weight:700;display:block}.service-expanded-copy .service-result{border-top:1px solid #0b0b0b24;margin:0 0 24px;padding-top:16px}.method-section{color:var(--bone);background:var(--ink-soft);grid-template-columns:minmax(280px,.91fr) minmax(380px,1.09fr);display:grid}.method-visual{min-height:730px;overflow:hidden}.method-visual img{object-fit:cover;filter:grayscale()contrast(1.1)brightness(.74);width:100%;height:100%}.method-content{padding:92px max(5vw,42px) 90px}.method-content h2{max-width:680px;margin-top:52px}.method-list{border-top:1px solid var(--line);margin-top:52px}.method-row{border-bottom:1px solid var(--line);grid-template-columns:45px minmax(0,1fr);gap:18px;padding:20px 0;display:grid}.method-row>span{color:var(--accent);font-size:10px;font-weight:700}.method-row h3{font-family:var(--font-display);letter-spacing:-.04em;margin:0;font-size:17px}.method-row p{color:#f1efea9e;max-width:510px;margin:6px 0 0;font-size:12px;line-height:1.55}.proof-section{color:var(--ink);background:var(--bone);padding:112px max(6vw,42px)}.proof-top{grid-template-columns:minmax(170px,.38fr) 1fr;gap:20px;max-width:1400px;margin:auto;display:grid}.proof-top>p{max-width:360px;font-family:var(--font-display);letter-spacing:-.045em;margin:0;font-size:21px;line-height:1.15}.proof-grid{background:var(--line-dark);border:1px solid var(--line-dark);grid-template-columns:1.5fr .8fr .8fr .8fr;gap:1px;max-width:1400px;margin:68px auto 0;display:grid}.proof-claim,.proof-label{background:var(--paper);min-height:330px;padding:24px}.proof-grid.proof-grid-single{background:0 0;border:0;grid-template-columns:minmax(0,1fr)}.proof-grid.proof-grid-single .proof-claim{justify-content:flex-start;max-width:860px;padding:clamp(34px,3.6vw,52px)}.proof-grid.proof-grid-single .proof-claim p{max-width:520px}.proof-grid.proof-grid-single .proof-claim>a{margin-top:28px}.proof-grid.proof-grid-single .proof-claim>.button{margin-top:36px}.proof-claim{flex-direction:column;justify-content:space-between;display:flex}.proof-claim h2{margin:0}.proof-claim p{max-width:370px;margin:35px 0 0;font-size:14px;line-height:1.55}.proof-label{flex-direction:column;display:flex}.proof-label span{color:var(--accent);font-size:11px;font-weight:700}.proof-label strong{font-family:var(--font-display);letter-spacing:-.06em;margin:auto 0 11px;font-size:24px;line-height:.98}.proof-label p{color:#0b0b0ba1;margin:0;font-size:12px;line-height:1.52}.proof-label.dark{color:var(--bone);background:var(--ink)}.proof-label.red{color:var(--bone);background:var(--accent)}.proof-label.red span{color:var(--bone)}.contact-section{color:var(--bone);background:var(--ink);grid-template-columns:minmax(0,1.15fr) minmax(270px,.55fr);gap:70px;padding:119px max(6vw,42px);display:grid}.contact-copy h2{max-width:820px}.contact-action{align-self:end}.contact-action p{color:#f1efeaad;max-width:420px;margin:0 0 28px;font-size:15px;line-height:1.6}.button-light{width:100%;color:var(--ink);background:var(--bone);justify-content:space-between}.button-light:hover{color:var(--bone);background:var(--accent)}.footer{color:var(--bone);background:#080808;padding:54px max(6vw,42px) 25px}.footer-top{grid-template-columns:1.15fr .8fr .55fr;gap:50px;max-width:1400px;margin:auto;display:grid}.footer-links{flex-wrap:wrap;gap:4px 18px;margin-top:17px;display:flex}.footer-links :is(button,a){color:var(--bone);font-family:var(--font-display);letter-spacing:-.05em;padding:0;font-size:18px}.footer-top p{color:#f1efeaa8;max-width:285px;margin:17px 0 0;font-size:12px;line-height:1.5}.footer-wordmark{max-width:1400px;font-family:var(--font-display);letter-spacing:-.09em;align-items:center;gap:clamp(12px,2vw,25px);margin:124px auto 35px;font-size:clamp(55px,12.8vw,184px);font-weight:700;line-height:.78;display:flex}.footer-wordmark img{object-fit:contain;width:clamp(45px,8vw,118px);height:clamp(45px,8vw,118px)}.footer-wordmark span+span{font-weight:500}.footer-bottom{border-top:1px solid var(--line);color:#f1efea6e;justify-content:space-between;gap:16px;max-width:1400px;margin:auto;padding-top:18px;font-size:9px;display:flex}.footer-bottom :is(button,a){font-size:inherit;align-items:center;gap:5px;padding:0;display:inline-flex}.hero-brand-mark{background:#fffc;width:22px;height:22px}.footer-corporate-mark{background:#fffc;width:clamp(45px,8vw,118px);height:clamp(45px,8vw,118px)}.footer-wordmark>span:nth-child(2){font-weight:700}.footer-wordmark>span:nth-child(3){font-weight:500}@media(max-width:1050px){.desktop-nav{display:none}.mobile-menu-button{display:block}.top-nav{min-height:53px}.hero-workspace{grid-template-columns:minmax(0,1fr) minmax(260px,.9fr)}.hero-right{display:none}.hero-left{padding-right:7%}.hero-left h1{font-size:clamp(43px,6vw,67px)}.hero-meta{grid-template-columns:1fr 1fr}.hero-meta>span:nth-child(2){display:none}.signals-intro{grid-template-columns:180px 1fr}.signals-intro>p{grid-column:2;max-width:450px;margin-top:0}.proof-grid{grid-template-columns:1.4fr 1fr 1fr}.proof-claim{grid-column:span 3;min-height:250px}.proof-label.red{grid-column:span 1}.footer-top{grid-template-columns:1fr 1fr}.footer-direction{display:none}}@media(max-width:720px){.top-shell{padding:8px 8px 0}.top-nav{padding:0 12px}.brand-lockup{min-width:145px}.brand-wordmark{font-size:16px}.brand-place{display:none}.nav-contact{min-height:44px;margin-left:auto;display:inline-flex}.hero-section{padding:69px 8px 0}.hero-workspace{flex-direction:column;min-height:0;display:flex}.hero-left{order:1;padding:60px 23px 40px}.hero-left h1{margin-top:22px;margin-bottom:18px;font-size:clamp(40px,12.4vw,57px)}.hero-left>p{font-size:14px}.hero-actions{margin-top:26px}.hero-figure{order:2;min-height:430px}.hero-figure>img{object-position:60% center}.hero-figure-mark{top:52%}.hero-meta{order:3;grid-template-columns:1fr;gap:6px;min-height:58px;padding:10px 16px;font-size:7px;position:relative}.hero-meta>:last-child{justify-self:start}.manifesto-section{min-height:0;padding:30px 23px 74px;display:block}.manifesto-inner{text-align:left;align-items:flex-start;margin-top:70px}.manifesto-inner h2{font-size:clamp(34px,10vw,48px)}.manifesto-summary{margin-top:30px;font-size:14px}.manifesto-question{margin-top:43px;padding:19px}.manifesto-question p{font-size:17px}.signals-section{padding:66px 23px 80px}.signals-intro{display:block}.signals-intro h2,.services-lead h2,.method-content h2,.proof-claim h2,.contact-copy h2{margin-top:42px;font-size:clamp(34px,10vw,48px)}.signals-intro>p{margin-top:23px;font-size:14px}.signal-grid{grid-template-columns:1fr;margin-top:50px}.signal-card{min-height:265px}.services-section{padding:75px 8px 82px}.services-lead{padding:0 15px;display:block}.services-small-copy{margin-top:31px}.service-stack{border-radius:0;margin-top:50px}.service-trigger{grid-template-columns:33px minmax(0,1fr) 32px;gap:10px;padding:19px 15px}.service-name{font-size:17px}.service-label{grid-area:2/2;margin:6px 0 0;font-size:13px;line-height:1.45;display:block}.service-expanded{grid-template-columns:1fr;gap:20px;padding:0 15px 20px 58px}.service-image{min-height:150px}.method-section{flex-direction:column;display:flex}.method-visual{min-height:330px}.method-content{padding:65px 23px}.method-list{margin-top:40px}.proof-section{padding:71px 23px}.proof-top{display:block}.proof-top>p{margin-top:38px;font-size:19px}.proof-grid{grid-template-columns:1fr 1fr;margin-top:48px}.proof-claim{grid-column:span 2;min-height:245px}.proof-label{min-height:265px}.proof-label.red{grid-column:span 2;min-height:210px}.contact-section{padding:77px 23px;display:block}.contact-action{margin-top:42px}.footer{padding:48px 23px 20px}.footer-top{display:block}.footer-top>div+div{margin-top:34px}.footer-wordmark{margin:88px 0 28px;font-size:clamp(54px,17.5vw,85px)}.footer-bottom{flex-wrap:wrap}}@media(pointer:coarse){.text-link{min-height:44px}}@media(prefers-reduced-motion:no-preference){.hero-left,.hero-figure,.hero-right{animation:.7s cubic-bezier(.23,1,.32,1) both rise}.hero-figure{animation-delay:80ms}.hero-right{animation-delay:.16s}.signal-card,.proof-label{transition:transform .24s cubic-bezier(.23,1,.32,1),background .2s}.signal-card:hover,.proof-label:hover{transform:translateY(-3px)}@keyframes rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}}.brand-place{color:var(--label-on-light);font-size:8px}.mobile-menu .inverse .brand-place{color:var(--label-on-dark)}.mobile-menu-links span{color:var(--accent-on-dark)}.eyebrow,.section-rail,.footer-label{font-size:10px}.eyebrow-dot{background:var(--accent-on-light)}.hero-left h1 em,.text-link:hover{color:var(--accent-on-light)}.hero-figure-mark{background:#0b0b0bc7;padding:12px;font-size:9px}.date-stamp{font-size:11px}.capsule{font-size:10px}.outcome-card span{color:var(--label-on-dark);font-size:9px}.hero-meta{font-size:9px}.section-rail{color:var(--label-on-light)}.section-rail span:first-child{color:var(--accent-on-light)}.section-rail.light{color:var(--label-on-dark)}.section-rail.light span:first-child{color:var(--accent-on-dark)}.manifesto-section .section-rail,.services-section .section-rail,.cases-section .section-rail,.method-section .section-rail,.contact-section .section-rail{color:var(--label-on-dark)}.manifesto-section .section-rail span:first-child,.services-section .section-rail span:first-child,.cases-section .section-rail span:first-child,.method-section .section-rail span:first-child,.contact-section .section-rail span:first-child{color:var(--accent-on-dark)}.signals-section .section-rail,.proof-section .section-rail{color:var(--label-on-light)}.signals-section .section-rail span:first-child,.proof-section .section-rail span:first-child{color:var(--accent-on-light)}.manifesto-kicker{color:var(--accent-on-dark)}.manifesto-inner h2 span{color:var(--label-on-dark)}.manifesto-question span{color:var(--accent-on-dark);font-size:9px}.signal-head{color:var(--accent-on-light)}.service-tags span{font-size:9px}.service-number{color:var(--accent-on-light)}.service-label{color:var(--label-on-light)}.method-row>span{color:var(--accent-on-dark)}.method-row p{color:var(--label-on-dark)}.proof-label span{color:var(--accent-on-light)}.proof-label p{color:var(--label-on-light)}.proof-label.dark span{color:var(--accent-on-dark)}.proof-label.dark p{color:var(--label-on-dark)}.proof-label.red{background:var(--accent-on-light)}.proof-label.red p{color:var(--bone)}.footer-label{color:var(--label-on-dark);font-size:9px}.footer-top p,.footer-bottom{color:var(--label-on-dark)}.footer-bottom{font-size:10px}.signals-section h2 em,.proof-section h2 em{color:var(--accent-on-light)}.services-section h2 em,.cases-section h2 em,.method-section h2 em,.contact-section h2 em{color:var(--accent-on-dark)}.case-detail-link{color:var(--bone)}@media(max-width:720px){.hero-meta{font-size:8px}}@media(max-width:420px){.footer-wordmark{grid-template-columns:36px minmax(0,1fr);gap:2px 8px;font-size:clamp(42px,14vw,46px);line-height:.78;display:grid}.footer-wordmark .footer-corporate-mark{grid-row:span 2;width:36px;height:36px}.footer-wordmark>span:nth-child(2),.footer-wordmark>span:nth-child(3){grid-column:2}}.brand-mark{background:var(--mark-on-light)}.hero-brand-mark,.footer-corporate-mark,.mobile-menu .brand-mark{background:var(--mark-on-dark)}.why-section{color:var(--ink);background:var(--paper);padding:clamp(70px,8vw,112px) max(6vw,42px)}.why-inner{grid-template-columns:minmax(170px,.38fr) minmax(0,1fr);gap:clamp(24px,4vw,45px);max-width:1400px;margin:auto;display:grid}.why-body h2{font-family:var(--font-display);letter-spacing:-.07em;margin:0;font-size:clamp(30px,3.6vw,52px);font-weight:500;line-height:1.01}.why-body h2 em{color:var(--accent-on-light);font-style:normal}.why-body>p{max-width:62ch;color:var(--label-on-light);margin:26px 0 0;font-size:15px;line-height:1.65}.why-clients{border-top:1px solid var(--line-dark);margin:clamp(38px,5vw,58px) 0 0;padding-top:26px}.why-clients h3{color:var(--label-on-light);letter-spacing:.14em;text-transform:uppercase;margin:0 0 22px;font-size:10px;font-weight:700}.client-strip{flex-wrap:wrap;align-items:center;gap:clamp(26px,4vw,52px);margin:0;padding:0;list-style:none;display:flex}.client-strip li{align-items:center;display:flex}.client-strip{--client-h:clamp(19px, 2vw, 25px)}.client-mark{width:clamp(78px,8vw,112px);height:calc(var(--client-h) * var(--scale,1));background:var(--label-on-light);-webkit-mask:var(--logo) center / contain no-repeat;mask:var(--logo) center / contain no-repeat;display:block}.why-clients>p{max-width:60ch;color:var(--label-on-light);margin:26px 0 0;font-size:12px;line-height:1.6}.faq-section{color:var(--bone);background:var(--ink);padding:clamp(70px,8vw,112px) max(6vw,42px)}.faq-inner{grid-template-columns:minmax(170px,.38fr) minmax(0,1fr);gap:clamp(24px,4vw,45px);max-width:1400px;margin:auto;display:grid}.faq-body h2{font-family:var(--font-display);letter-spacing:-.07em;margin:0 0 clamp(30px,4vw,48px);font-size:clamp(30px,3.6vw,52px);font-weight:500;line-height:1.01}.faq-body h2 em{color:var(--accent-on-dark);font-style:normal}.faq-list{border-top:1px solid var(--line)}.faq-item{border-bottom:1px solid var(--line)}.faq-item summary{cursor:pointer;font-family:var(--font-display);letter-spacing:-.035em;align-items:baseline;gap:18px;padding:22px 0;font-size:clamp(16px,1.7vw,21px);line-height:1.3;list-style:none;display:flex}.faq-item summary::-webkit-details-marker{display:none}.faq-item summary:after{content:"+";color:var(--accent-on-dark);font-family:var(--font-body);margin-left:auto;font-size:20px;line-height:1}.faq-item[open] summary:after{content:"−"}.faq-item summary>span:first-child{width:34px;color:var(--accent-on-dark);font-family:var(--font-body);flex:none;font-size:11px;font-weight:700}.faq-item summary:focus-visible{outline:2px solid var(--bone);outline-offset:2px}.faq-item p{max-width:68ch;color:var(--label-on-dark);margin:0 0 24px;padding-left:52px;font-size:15px;line-height:1.68}@media(max-width:720px){.why-section,.faq-section{padding-left:23px;padding-right:23px}.why-inner,.faq-inner{display:block}.why-body h2,.faq-body h2{margin-top:34px;font-size:clamp(30px,9vw,44px)}.faq-item p{padding-left:34px}.faq-item summary>span:first-child{width:26px}}@media(prefers-reduced-motion:no-preference){.faq-item summary:after{transition:color .16s}}.proof-grid{grid-template-columns:1.35fr repeat(3,minmax(0,.9fr))}@media(max-width:1250px){.proof-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.proof-claim{grid-column:span 3;min-height:250px}.proof-label.red{grid-column:span 1}}@media(max-width:720px){.proof-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.proof-claim{grid-column:span 2;min-height:245px}.proof-label{min-height:240px}.proof-label.red{grid-column:span 2;min-height:200px}}.contact-routes{flex-wrap:wrap;align-items:center;gap:14px 26px;display:flex}.contact-phone{color:var(--label-on-dark)}.contact-phone:hover{color:var(--accent-on-dark)}.standard-page-nav{z-index:30;background:var(--ink);position:sticky;top:0}@supports (color:color-mix(in lab,red,red)){.standard-page-nav{background:color-mix(in srgb,var(--ink) 92%,transparent)}}.standard-page-nav{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transition:min-height .25s,box-shadow .25s}.standard-page-nav.is-floating{min-height:62px;box-shadow:0 12px 30px var(--ink)}@supports (color:color-mix(in lab,red,red)){.standard-page-nav.is-floating{box-shadow:0 12px 30px color-mix(in srgb,var(--ink) 45%,transparent)}}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.standard-page-nav{background:var(--ink)}}@media(prefers-reduced-motion:reduce){.standard-page-nav{transition:none}}.footer-top p{font-size:var(--type-body);line-height:var(--leading-body);max-width:36ch}.footer-top .footer-direction p{max-width:32ch;font-size:.875rem;line-height:1.55}.services-lead{grid-template-columns:minmax(160px,.34fr) minmax(0,1.25fr) minmax(230px,.44fr);align-items:start;gap:clamp(24px,3vw,48px)}.services-lead h2{margin-top:0}.services-small-copy{align-self:end}@media(max-width:1050px){.services-lead{grid-template-columns:minmax(150px,.32fr) minmax(0,1fr)}.services-small-copy{grid-column:2;align-self:start}}.case-outcome{color:var(--case-bone,var(--bone));background:var(--ink-soft);grid-template-columns:minmax(170px,.33fr) minmax(0,1.67fr);gap:clamp(24px,4vw,45px);padding:clamp(48px,6vw,76px) max(6vw,42px);display:grid}.case-page .case-outcome-value,.case-outcome-value{max-width:22ch;font-family:var(--font-display);letter-spacing:-.06em;color:var(--accent-on-dark);margin:0;font-size:clamp(28px,3.6vw,52px);font-weight:500;line-height:1.02}.case-page .case-outcome-note,.case-outcome-note{max-width:56ch;color:var(--label-on-dark);font-size:var(--type-body);line-height:var(--leading-body);margin:clamp(18px,2vw,26px) 0 0}@media(max-width:720px){.case-outcome{grid-template-columns:1fr;padding-left:23px;padding-right:23px}}.why-points{border-top:1px solid var(--line-dark);grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,2.6vw,40px);margin:clamp(38px,4.5vw,58px) 0 0;padding:26px 0 0;list-style:none;display:grid}.why-points h3{font-family:var(--font-display);letter-spacing:-.03em;color:var(--paper-ink,var(--ink));margin:0 0 10px;font-size:clamp(15px,1.25vw,18px);font-weight:700;line-height:1.2}.why-points p{max-width:34ch;color:var(--label-on-light);font-size:var(--type-body);line-height:var(--leading-body);margin:0}.why-clients{margin-top:clamp(32px,4vw,48px)}.client-strip{--client-h:clamp(22px, 2.3vw, 30px);gap:clamp(28px,3.2vw,46px)}.client-mark{width:clamp(84px,8.5vw,116px)}@media(max-width:860px){.why-points{grid-template-columns:1fr;gap:22px}.why-points li+li{border-top:1px solid var(--line-dark);padding-top:20px}}.brand-lockup.inverse .brand-place{color:var(--label-on-dark)}.contact-section{grid-template-columns:minmax(160px,.3fr) minmax(0,1.15fr) minmax(260px,.5fr);align-items:end;gap:clamp(24px,3vw,56px)}.contact-section>.section-rail{align-self:start}.contact-copy,.contact-action{align-self:end}@media(max-width:1050px){.contact-section{grid-template-columns:minmax(150px,.3fr) minmax(0,1fr)}.contact-action{grid-column:2}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.case-index{border-top:1px solid var(--line-dark);margin:0;padding:0;list-style:none}.case-index-row{border-bottom:1px solid var(--line-dark);grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:clamp(20px,3vw,44px);padding:clamp(28px,3.2vw,44px) 0;display:grid}.case-index-meta{flex-wrap:wrap;align-items:center;gap:10px 14px;margin:0 0 16px;display:flex}.case-index-number{letter-spacing:.13em;color:var(--accent-on-light);font-size:11px;font-weight:700}.case-index-focus{letter-spacing:.13em;text-transform:uppercase;color:var(--label-on-light);font-size:10px;font-weight:700}.standard-page .case-index-value{max-width:24ch;font-family:var(--font-display);letter-spacing:-.06em;color:var(--ink);margin:0;font-size:clamp(24px,2.9vw,40px);font-weight:500;line-height:1.03}.case-index-link{color:var(--accent-on-light);background:0 0;border:0;align-items:center;gap:8px;margin-top:22px;padding:0;font-size:12px;font-weight:700;display:inline-flex}.case-index-link:hover{color:var(--ink)}.case-index-disclosure{max-width:var(--measure-reading);color:var(--label-on-light);font-size:var(--type-body);line-height:var(--leading-body);margin:0 0 clamp(20px,2.4vw,30px)}.standard-page .case-index-note{max-width:var(--measure-reading);color:var(--label-on-light);font-size:var(--type-body);line-height:var(--leading-body);margin:clamp(28px,3.2vw,42px) 0 0}.case-index-note strong{color:var(--ink);font-weight:600}.standard-section .evidence-ladder-close{max-width:640px;font-family:var(--font-display);letter-spacing:-.045em;margin:clamp(34px,3.6vw,48px) 0 0;font-size:clamp(19px,2vw,25px);font-weight:500;line-height:1.3}@media(max-width:760px){.case-index-row{grid-template-columns:1fr;gap:14px}}.case-more{border:1px solid var(--line);grid-template-columns:minmax(150px,.24fr) minmax(0,1fr) auto;align-items:center;gap:clamp(18px,2.6vw,40px);max-width:1400px;margin:clamp(28px,3vw,44px) auto 0;padding:clamp(20px,2.4vw,30px) clamp(20px,2.4vw,32px);display:grid}.case-more-label{color:var(--label-on-dark);letter-spacing:.13em;text-transform:uppercase;margin:0;font-size:10px;font-weight:700}.case-more-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(14px,2vw,32px);margin:0;padding:0;list-style:none;display:grid}.case-more-list :is(button,a){text-align:left;width:100%;color:inherit;background:0 0;border:0;padding:0;display:block}.case-more-value{max-width:30ch;font-family:var(--font-display);letter-spacing:-.04em;color:var(--bone);font-size:clamp(15px,1.35vw,18px);line-height:1.2;display:block}.case-more-focus{letter-spacing:.12em;text-transform:uppercase;color:var(--label-on-dark);margin-top:7px;font-size:9px;font-weight:700;display:block}.case-more-list :is(button,a):hover .case-more-value{color:var(--accent-on-dark)}.case-more .text-link{color:var(--bone)}.case-more .text-link:hover{color:var(--accent-on-dark)}@media(max-width:1050px){.case-more{grid-template-columns:1fr;align-items:start;gap:20px}.case-more-list{grid-template-columns:1fr}}.case-page .case-hero{padding:clamp(26px,4vh,44px) var(--layout-gutter) clamp(76px,9vh,108px);flex-direction:column;justify-content:space-between;gap:clamp(28px,4vh,64px);display:flex}.case-page .case-hero-meta,.case-page .case-hero-copy{position:static;inset:auto}.case-page .case-hero-copy{max-width:min(750px,70vw)}@media(max-width:720px){.case-page .case-hero{padding-bottom:clamp(64px,12vh,92px)}.case-page .case-hero-meta{grid-template-columns:1fr;gap:4px;display:grid}.case-page .case-hero-meta span:last-child{border-left:0;padding-left:0}}.case-owner-split{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(24px,3vw,52px);margin-top:clamp(38px,4.5vw,62px);padding-top:clamp(24px,2.6vw,34px);display:grid}.case-page .case-owner h3{font-family:var(--font-display);letter-spacing:-.04em;color:var(--accent-on-dark);margin:0 0 12px;font-size:clamp(16px,1.5vw,20px);font-weight:500}.case-page .case-owner p{max-width:44ch;color:var(--label-on-dark);font-size:var(--type-body);line-height:var(--leading-body);margin:0}.case-transfers{margin-top:clamp(34px,4vw,56px)}.case-page .case-transfers h3{letter-spacing:.14em;text-transform:uppercase;color:var(--label-on-dark);margin:0 0 18px;font-size:10px;font-weight:700}.case-transfers ul{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.case-page .case-transfers li{border-bottom:1px solid var(--line);color:var(--bone);font-size:var(--type-body);line-height:var(--leading-body);max-width:var(--measure-reading);margin:0;padding:16px 0 16px 30px;position:relative}.case-transfers li:before{content:"";background:var(--accent-on-dark);width:12px;height:1px;position:absolute;top:27px;left:4px}@media(max-width:760px){.case-owner-split{grid-template-columns:1fr;gap:26px}}.site section[id],.subpage-frame section,.subpage-frame header[class]{scroll-margin-top:clamp(78px,9vh,104px)}@media(max-width:720px){.site section[id],.subpage-frame section,.subpage-frame header[class]{scroll-margin-top:72px}}.case-page .case-hero-context,.standard-page .case-index-context{color:var(--accent-on-dark);font-size:var(--type-body);line-height:var(--leading-body);max-width:52ch;margin:0 0 14px;font-weight:500}.standard-page .case-index-context{color:var(--label-on-light);margin:14px 0 0}.lang-switch{font-family:var(--font-mono,var(--font-display));letter-spacing:.12em;align-items:baseline;gap:6px;font-size:11px;font-weight:700;display:inline-flex}.lang-switch a.site-link{color:var(--label-on-light);text-decoration:none}.lang-switch a.site-link.is-current{color:var(--ink)}.standard-page-nav .lang-switch a.site-link,.mobile-menu-links .lang-switch a.site-link{color:var(--label-on-dark)}.standard-page-nav .lang-switch a.site-link.is-current,.mobile-menu-links .lang-switch a.site-link.is-current{color:var(--bone)}.mobile-menu-links .lang-switch{margin-top:18px;font-size:13px}.th-preview-note.th-preview-note{background:var(--accent);color:#fff;letter-spacing:.08em;margin:0 0 4px;padding:5px 10px;font-size:10px;font-weight:700;display:inline-block}[lang=th]{--font-display:"Kanit", "Sora", sans-serif;--font-body:"Kanit", "DM Sans", sans-serif;font-family:var(--font-body);line-height:1.8}[lang=th] .hero-left h1{letter-spacing:0;font-size:clamp(30px,3.6vw,54px);font-weight:500;line-height:1.3}[lang=th] .manifesto-inner h2{letter-spacing:0;font-size:clamp(26px,3vw,44px);line-height:1.34}[lang=th] :is(.signals-intro,.services-lead,.method-content,.proof-claim,.contact-copy) h2{letter-spacing:0;font-size:clamp(24px,2.9vw,42px);line-height:1.32}[lang=th] :is(.why-body,.faq-body) h2{letter-spacing:0;font-size:clamp(22px,2.4vw,34px);line-height:1.34}[lang=th] .case-hero h1{letter-spacing:0;font-size:clamp(30px,3.6vw,54px);font-weight:500;line-height:1.3}[lang=th] .standard-section h2{letter-spacing:0;font-size:clamp(24px,2.9vw,42px);line-height:1.32}[lang=th] .service-offer h2{letter-spacing:0;font-size:clamp(20px,2.2vw,30px);line-height:1.34}[lang=th] :is(.services-lead-copy,.service-block-heading,.service-faq dt){letter-spacing:0;line-height:1.5}[lang=th] .services-lead-copy{font-size:clamp(16px,1.6vw,20px)}[lang=th] .service-block-heading{font-size:clamp(15px,1.4vw,18px);line-height:1.45}[lang=th] .service-faq dt{font-size:clamp(15px,1.4vw,17px);line-height:1.45}[lang=th] .signal-card h3{letter-spacing:0;font-size:18px;line-height:1.45}[lang=th] .manifesto-question p,[lang=th] .proof-top>p{letter-spacing:0;font-size:17px;line-height:1.5}[lang=th] .method-row h3{letter-spacing:0;font-size:15px;line-height:1.45}[lang=th] .outcome-card strong{letter-spacing:0;font-size:15px;line-height:1.4}[lang=th] .faq-item summary{letter-spacing:0;font-size:clamp(15px,1.5vw,18px);line-height:1.5}[lang=th] :is(.hero-left>p,.manifesto-summary,.signals-intro p,.signal-card p,.services-small-copy p,.service-expanded-copy p,.method-row p,.proof-claim p,.why-body p,.why-points p,.faq-item p,.contact-action p,.hero-right-middle p),[lang=th] :is(.contact-checklist li,.contact-questions li,.contact-fallback,.contact-privacy-note,.contact-qualify){letter-spacing:0;line-height:1.8}[lang=th] .contact-direct a{letter-spacing:0;line-height:1.5}[lang=th] :is(.eyebrow,.section-rail,.footer-label){letter-spacing:.12em}[lang=th] .service-name{letter-spacing:-.03em}[lang=th] :is(.outcome-card span,.manifesto-question span,.service-tags span,.capsule,.hero-meta,.th-preview-note,.case-more-label){letter-spacing:0;font-size:11px;line-height:1.6}[lang=th] .service-label{letter-spacing:0;font-size:12px;line-height:1.7}[lang=th] .why-points h3{letter-spacing:0;line-height:1.4}@media(max-width:1050px){.top-nav .lang-switch{display:none}}[lang=th] .insights-hero h1{letter-spacing:0;font-size:clamp(30px,3.6vw,54px);line-height:1.3}[lang=th] .insights-hero p+p{margin-top:16px}:is(.case-index-link,.insight-card>a)[lang=th]{letter-spacing:0;font-size:14px;line-height:1.6}[lang=th] .standard-page-nav nav{gap:16px}[lang=th] .standard-page-nav nav a{white-space:nowrap;flex:none}@media(max-width:1280px){[lang=th] .standard-page-nav{flex-wrap:wrap;gap:12px 20px}[lang=th] .standard-page-nav nav{flex:1 0 100%;order:4;min-width:0;padding-block:4px;display:flex;overflow-x:auto}[lang=th] .standard-page-nav nav a{align-items:center;min-height:44px;display:inline-flex}}@media(max-width:720px){[lang=th] .standard-page-nav .case-back{display:none}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}

/* === styles/tokens.css === */
/* Design tokens — consolidated from the incumbent visual identity (ticket 02 slice).
   Primitive colors, semantic surfaces, type, spacing, widths, borders, motion, z-index.
   Incumbent direction: ink #0e1420, accent #0047ff (from <html> style vars). */
:root {
  --color-ink: #0e1420;
  --color-ink-soft: #2a3348;
  --color-paper: #ffffff;
  --color-paper-warm: #f6f7f9;
  --color-accent: #0047ff;
  --color-accent-ink: #ffffff;
  --color-border: #dfe3ea;
  --color-focus: #0047ff;

  /* Component chrome axis, calibrated to the incumbent visual identity
     (direction backdrop above is a separate axis; both are inherited).
     CR-05 palette lock (Teerasak approved): ember removed site-wide; accent
     blue is the single emphasis hue.
     --color-coal #0b0b0b, --color-bone #f1efea. */
  --color-coal: #0b0b0b;
  --color-coal-soft: rgba(11, 11, 11, 0.65);
  --color-coal-faint: rgba(11, 11, 11, 0.58);
  --color-bone: #f1efea;
  /* Corporate-rendered bone. The incumbent's :root --bone (#f1efea) never
     renders on this site: all 64 data-style attributes are corporate, which
     redefines --bone as #f4f6fa. New rules that mean "incumbent --bone as
     rendered" must use --color-bone-corp. The remaining --color-bone*
     references are under close-out sweep; do not bulk-rename. */
  --color-bone-corp: #f4f6fa;
  /* The inverse brand mark. The incumbent paints it with the literal #fffc in
     `.brand-lockup.inverse .brand-mark`, which beats --mark-on-dark on that
     surface, and there is no incumbent token for it — so it is named here
     rather than inlined as a raw rgba(), which the token-discipline gate
     rightly rejects. Measured: contact's header mark renders
     rgba(255,255,255,0.8) in the original. */
  --color-mark-inverse: rgba(255, 255, 255, 0.8);
  --color-bone-faint: rgba(241, 239, 234, 0.7);
  --color-bone-soft: rgba(241, 239, 234, 0.66);
  --color-bone-dim: rgba(241, 239, 234, 0.43);
  --color-slate: #4b4b49; /* incumbent --label-on-light (color-mix ink 72% / bone) resolved */
  --color-night: #080808;
  --border-strong: rgba(11, 11, 11, 0.18);
  --border-faint: rgba(255, 255, 255, 0.16);
  --border-pill: rgba(11, 11, 11, 0.08);
  --surface-pill: rgba(241, 239, 234, 0.95);
  --scrim: rgba(11, 11, 11, 0.5);

  --surface-page: var(--color-paper);
  --surface-raised: var(--color-paper-warm);
  --surface-ink: var(--color-ink);
  --surface-bar: var(--color-coal);
  --surface-foot: var(--color-night);
  --text-primary: var(--color-ink);
  --text-secondary: var(--color-ink-soft);
  --text-on-ink: #ffffff;
  --border-subtle: var(--color-border);
  --border-on-ink: rgba(255, 255, 255, 0.25);
  --border-on-ink-strong: rgba(255, 255, 255, 0.4);

  --font-sans: "Sora", "DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --rpas-font-body: "DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;

  --text-step--1: clamp(0.875rem, 0.83rem + 0.2vw, 0.95rem);
  --text-step-0: clamp(1rem, 0.95rem + 0.25vw, 1.125rem);
  --text-step-1: clamp(1.25rem, 1.1rem + 0.75vw, 1.625rem);
  --text-step-2: clamp(1.75rem, 1.4rem + 1.75vw, 2.625rem);
  --text-step-3: clamp(2.5rem, 1.9rem + 3vw, 4rem);

  --space-3xs: clamp(0.25rem, 0.22rem + 0.15vw, 0.3125rem);
  --space-2xs: clamp(0.5rem, 0.45rem + 0.25vw, 0.625rem);
  --space-xs: clamp(0.75rem, 0.68rem + 0.35vw, 0.9375rem);
  --space-s: clamp(1rem, 0.9rem + 0.5vw, 1.25rem);
  --space-m: clamp(1.5rem, 1.3rem + 1vw, 2rem);
  --space-l: clamp(2.25rem, 1.9rem + 1.75vw, 3.25rem);
  --space-xl: clamp(3.5rem, 2.9rem + 3vw, 5.25rem);

  --rpas-measure-reading: 68ch;
  --width-content: 72rem;
  --width-narrow: 46rem;

  --border-thin: 1px solid var(--border-subtle);
  --radius-s: 0.375rem;
  --radius-m: 0.75rem;

  --duration-instant: 120ms;
  --duration-short: 200ms;
  --rpas-ease-out: cubic-bezier(0.22, 1, 0.36, 1);

  /* CR-06 (Teerasak, 22 Sep 2026): display type — tracking eased -.04em,
     leading held at 1.02; tokenised for scalability. */
  --rpas-display-1-track: -0.04em;
  --rpas-display-1-leading: 1.02;

  /* Convergence free pass (Teerasak approved, 22 Sep 2026).
     Role-based tokens binding duplicated authored literals with zero rendered change. */
  --rpas-font-display: "Sora", sans-serif; /* display font family, 3 consumers */

  /* Eyebrows / kickers */
  --rpas-eyebrow-size: 0.625rem; /* eyebrow font size (10px), 5 consumers */
  --rpas-eyebrow-track: 0.14em; /* eyebrow letter spacing, 5 consumers */
  --rpas-eyebrow-weight: 700; /* eyebrow font weight, 5 consumers */

  /* Page H1 archetypes */
  --rpas-h1-display-weight: 500; /* display hero H1 font weight, 2 consumers */

  /* Section H2 tiers */
  --rpas-h2-section-size: clamp(38px, 4.75vw, 68px); /* section H2 font size, 4 consumers */
  --rpas-h2-section-size-mobile: clamp(34px, 10vw, 47px); /* section H2 mobile font size, 4 consumers */
  --rpas-h2-section-weight: 500; /* section H2 font weight, 2 consumers */
  --rpas-h2-section-leading: 0.98; /* section H2 line height, 2 consumers */
  --rpas-h2-section-track: -0.075em; /* section H2 letter spacing, 2 consumers */

  /* Body scale */
  --rpas-body-leading: 1.6; /* standard body line height, 5 consumers */

  /* Token notes (Teerasak approved, 23 Sep 2026):
     - Display-kicker role (Row 6): home manifesto kicker (.manifesto-kicker) is
       16px/700, bespoke display kicker. Specificity accident: it declares 12px
       in incumbent CSS, but .site .manifesto-section p (0,2,1) beats .manifesto-kicker (0,1,0)
       so it has always rendered at 16px (var(--type-body)). Kept bespoke.
     - Profile-name display role (Row 7): team profile H1 (.profile__name) is
       600, clamp(2.5rem, 5.4vw, 4.625rem), tracking -0.065em, line-height 1.02,
       max-width 12ch. Single leading change 0.98 -> 1.02 for descender safety (CR-06),
       tested with 0 line-count changes across all 8 profile routes at 390/1280/1440. */

  --z-header: 50;
  --z-overlay: 100;
}

/* === styles/base.css === */
/* Base — reset-adjacent defaults for NEW shell markup only: the v2 document
   shell regions (.site-header, .site-footer, .skip-link) and the authored
   preview document (.preview-doc) on pages carrying html[data-shell="v2"]
   (home, contact, preview). Every element selector is scoped to those
   regions, so retained incumbent bodies on v2 pages render exactly as the
   frozen incumbent layer describes them.
   CORRECTION (ticket 04, D2): these rules used to be scoped to the PAGE
   (`:where(html[data-shell="v2"]) EL`), which is not the same rule as the
   comment's "NEW shell markup only". Retained incumbent content sits inside
   a v2 page and received the lot — body 18px vs 16px, 68ch caps, balanced
   headings, ink-vs-black defaults — measured as 50 retained diffs on contact
   and 44 on home. Page scope narrowed to region scope; specificity is
   unchanged (double :where still sums to (0,0,0)/(0,0,1)), so nothing inside
   the regions changes cascade position.
   Deliberately GLOBAL (with reasons):
   - *,*::before,*::after box-sizing: ticket-01 contract; matches the
     incumbent preflight posture; static effect re-measured at close-out.
   - html background + scroll-behavior: viewport-level, cannot be region
     scoped; incumbent declares the same smooth scroll, and no retained
     background diff has ever measured (bodies are opaque ink by inline
     style on both sides; over-scroll bounce is an unmeasured edge).
   - scroll-padding-top, below: viewport-level for the same reason, and the
     ruled owner of the sticky-header offset on all 38 routes.
   REMOVED, not scoped: `body { margin: 0 }` — the incumbent preflight sets
   it on every page including v2 ones, so the rule was dead; a dead rule in
   a scope file reads as a live decision.
   CORRECTION (ticket 04, F1): the :focus-visible ring below used to sit here
   as a bare global justified by "the incumbent's own focus rules still apply
   first." That clause was FALSE on 22 of 23 interactive elements — measured,
   not argued — because the incumbent's only focus rule lives under `.site`
   (a home-page class) while the elements live on subpage-frame pages, and
   no rendered gate samples focus state so every pass line hid it. The ring
   is now scoped like the other rules: v2 regions keep it, the other 35
   routes render the incumbent/UA default. Whether the new ring is an
   accessibility improvement is ticket 05's question, not a reason to leak it.
*/
*,
*::before,
*::after {
  box-sizing: border-box;
}

:where(html[data-shell="v2"]) {
  background: var(--surface-page);
  scroll-behavior: smooth;
}

/* CR-13: reduced-motion scroll contract. Viewport-level, so it cannot be
   region-scoped; `:root` carries it instead of a bare `html` tag, which
   C10-scope rejects. Later in the bundle than the frozen incumbent layer and
   higher in specificity than its `:where()` smooth rule, so `auto` wins
   whenever the media matches — on all 38 routes, not just v2 pages. */
@media (prefers-reduced-motion: reduce) {
  :root {
    scroll-behavior: auto;
  }
}

/* SCROLL OFFSET — one owner: the scroller. Director's binding post-merge CSS
   ruling (handoff §406-407, 26 Sep 2026).
   Two mechanisms used to overlap and neither was complete. The frozen
   incumbent's §27 puts `scroll-margin-top` on the scroll TARGETS while nothing
   tells the scroller what strip it covers, so a focused target in main/footer
   scrolled under the sticky header on every route (measured 1280px home: 3
   stops under the header, worst 43.3px, Shift+Tab 75.4px; interiors 41.7px).
   Declaration moved to `scroll-padding-top` on the scroller and §27 reset to 0,
   which is the only way the covered strip is stated once — an offset on the
   scroller and an offset on the target ADD, they never compose as one.
   `:root` rather than a bare `html` tag, for the reason the reduced-motion rule
   above already gives: C10-scope rejects a bare element selector outside a
   [data-shell="v2"] scope, and :root is the exempt spelling of that element. */
:root {
  scroll-padding-top: clamp(78px, 9vh, 104px);
}

/* Same covered strip the incumbent's §27 declared at mobile width. */
@media (max-width: 720px) {
  :root {
    scroll-padding-top: 72px;
  }
}

/* The interior band. Between 721px and 1023.98px `.standard-page-nav` takes two
   rows (components.css) and the header then measures 118.6px, which the default
   clamp (78-104px) under-covers; 129px is the ruled value for this band and
   clears the header with ~10px to spare. Scoped by :has() because the condition
   is a header inside the page, not a class on it — the same shape the project
   already uses for `.standard-page:has(.service-section)`. */
@media (min-width: 721px) and (max-width: 1023.98px) {
  :root:has(.standard-page-nav) {
    scroll-padding-top: 129px;
  }
}

/* §27 reset. The frozen layer is read-only, so the incumbent's
   `scroll-margin-top: clamp(78px, 9vh, 104px)` and its 72px <=720px override are
   neutralised here: same specificity, later in the bundle, so the new layer wins
   on order. Tags are wrapped in single-argument :is() for the reason the focus
   rule at the foot of this file gives — C10-scope rejects a bare tag even under a
   class, and the wrapper preserves the incumbent's exact (0,2,1)/(0,1,1) so the
   override is not won by a specificity hack. */
.site :is(section[id]),
.subpage-frame :is(section),
.subpage-frame :is(header[class]) {
  scroll-margin-top: 0;
}

/* Region roots carry the v2 type defaults; descendants inherit. Retained
   bodies outside these roots never see them. */
:where(html[data-shell="v2"]) :where(.site-header, .site-footer, .skip-link, .preview-doc) {
  font-family: var(--rpas-font-body);
  color: var(--text-primary);
  font-size: var(--text-step-0);
  line-height: var(--rpas-body-leading);
}

:where(html[data-shell="v2"]) :where(.site-header, .site-footer, .skip-link, .preview-doc) :where(h1, h2, h3) {
  font-family: var(--font-sans);
  line-height: 1.15;
  text-wrap: balance;
}

:where(html[data-shell="v2"]) :where(.site-header, .site-footer, .skip-link, .preview-doc) :where(p, li) {
  max-width: var(--rpas-measure-reading);
}

:where(html[data-shell="v2"]) :where(.site-header, .site-footer, .skip-link, .preview-doc) :where(img) {
  max-width: 100%;
  height: auto;
}

:where(html[data-shell="v2"]) :where(.site-header, .site-footer, .skip-link, .preview-doc) :where(a) {
  text-underline-offset: 0.18em;
}

/* CR-12: universal focus ring. CORRECTION of the F1 scoping (see header
   comment): the v2-scoped ring left the 35 incumbent-chrome routes on the
   UA default, which fails the keyboard-pass acceptance. `*` is the one named
   C10-scope/GLOBAL_ELEMENT_ALLOWLIST global, so `*:focus-visible` passes the
   scope gate where a bare `:focus-visible` fails it; same (0,1,0)
   specificity and same declarations as the scoped rule it replaces, so v2
   pages render identically and every other route gains the custom cue.
   Per-affordance `:focus-visible` twins live beside their `:hover` rules in
   components/article/profile/case.css; this ring is what covers the frozen
   incumbent selectors (a colliding global twin would trip the D1
   no-collision guard, and the frozen layer itself is read-only). */
*:focus-visible {
  outline: 3px solid var(--color-focus);
  outline-offset: 2px;
}

/* CR-12 repair (22 Sep 2026, measured in-browser, not argued). The global ring
   above is (0,1,0); the frozen incumbent carries THREE unlayered focus rules
   that outrank it, and only one of them was previously accounted for:

     .site :is(button,a):focus-visible  (0,2,1)  outline 2px var(--bone)
                                                 + box-shadow 4px accent
     button:focus-visible               (0,1,1)  outline 2px var(--accent) @4px
     .faq-item summary:focus-visible    (0,2,1)  outline 2px var(--bone)

   Measured on a real keyboard Tab (scripted .focus() never sets
   :focus-visible, which is why earlier audits read a UA default and reported
   "no cue"): on the v2 home every link rendered outline
   rgb(244,246,250) solid 2px — bone on a bone page, i.e. nothing — with the
   cue surviving only as the blue box-shadow. Interior routes already rendered
   the intended blue.

   This rule restores the one ring on the affected surface. Same specificity as
   the frozen rule, later in the bundle, so it wins on order; the frozen layer
   is not touched. The element names stay wrapped in single-argument :is():
   C10-scope rejects a bare tag even under a class, and it splits rule headers
   on commas without tracking parentheses, so `:is(button,a)` is torn into
   `a):focus-visible` and read as a bare tag (measured — that was this rule's
   first failing form). One argument per :is(), the comma at header level.
   box-shadow is cleared so the home page shows a single ring, not a doubled one.

   NOT fixed here, and deliberately: `button:focus-visible` still renders 2px
   at offset 4px instead of 3px at 2px on incumbent-chrome routes. It is blue
   and clearly visible — a consistency gap, not an accessibility failure — and
   overriding it needs either a bare element selector (C10-scope rejects) or a
   specificity hack. It is recorded rather than hacked around. */
.site :is(a):focus-visible,
.site :is(button):focus-visible {
  outline: 3px solid var(--color-focus);
  outline-offset: 2px;
  box-shadow: none;
}

/* === styles/layout.css === */
/* Layout primitives + utilities (class-only; never element selectors).
   Wrap/shrink discipline from D4: every flexible row wraps, every flexible
   child releases its minimum. Allowed structural exception (documented):
   `.layout-cluster > *` sets min-width: 0 so cluster children can shrink;
   it styles no component, only flex minimums. See css-contract allowlist. */
.layout-container {
  max-width: var(--width-content);
  margin-inline: auto;
  padding-inline: var(--space-s);
  min-width: 0;
}

.layout-container--narrow {
  max-width: var(--width-narrow);
}

.layout-container--reading {
  max-width: 46.25rem;
}

.layout-cluster {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-xs) var(--space-s);
}

.layout-cluster > * {
  min-width: 0;
}

.layout-grid {
  display: grid;
  gap: var(--space-s);
  grid-template-columns: repeat(auto-fit, minmax(min(17rem, 100%), 1fr));
}

.layout-stack {
  display: flex;
  flex-direction: column;
  gap: var(--space-s);
  min-width: 0;
}

.layout-prose {
  max-width: var(--rpas-measure-reading);
  margin-inline: auto;
  min-width: 0;
}

/* Utility namespace: single-purpose classes live HERE and MUST use the `u-`
   prefix. The single inherited exception is `.visually-hidden` (frozen by
   existing partials and tests); do not add more unprefixed utilities. */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* === styles/shell.css === */
/* Shell — skip link, landmarks, 404 recovery. Visible by default; no-JS safe. */
.skip-link {
  position: absolute;
  inset-block-start: var(--space-2xs);
  inset-inline-start: var(--space-2xs);
  z-index: var(--z-overlay);
  padding: var(--space-2xs) var(--space-s);
  background: var(--surface-ink);
  color: var(--text-on-ink);
  font-weight: 600;
  text-decoration: none;
  border-radius: var(--radius-s);
  transform: translateY(-300%);
  transition: transform var(--duration-instant) var(--rpas-ease-out);
}

.skip-link:focus-visible {
  transform: none;
  color: var(--text-on-ink);
}

/* 404 recovery block (v2 shell). Replaces the incumbent Tailwind card, which the
   build drops whole (V2_SHELL['404'], compose: true).

   CR-05's palette lock — two `[class*="…"]` rules remapping the card’s
   `lucide-circle-alert` icon to --color-accent and its `bg-red-100` halo to a
   12% accent tint — is DELETED, not moved: those rules only ever addressed
   incumbent utility classes, and the built page no longer contains either. The
   lock’s approved result is carried here instead, as declarations on the new
   block’s own elements: --color-accent on the icon, and the same
   `color-mix(in srgb, var(--color-accent) 12%, white)` tint on the halo. The
   incumbent’s `animate-pulse` halo does not survive the rebuild (static tint,
   no motion); the page is a static recovery route and the site’s
   reduced-motion posture does not need a decorative loop.

   The block root is absent from the frozen incumbent inventory — run, not
   assumed: the D1 guard in tests/css-contract.test.mjs parses 513 incumbent
   classes and names none of them not-found, so no APPROVED_INCUMBENT_OVERRIDES
   entry is needed and every element shares that one root. Type is declared here
   rather than inherited from base.css, whose v2 region defaults cover the
   header, footer, skip link and preview document only.

   Field colour is --color-bone-corp, the corporate rendering of the
   incumbent’s --bone: the same surface an interior page renders, so the
   not-found field sits between the ink bar and the night footer exactly as
   .standard-page does. */
.not-found {
  display: grid;
  justify-items: center;
  align-content: center;
  gap: var(--space-s);
  min-height: 58vh;
  padding-block: var(--space-xl);
  padding-inline: var(--space-s);
  color: var(--color-ink);
  background: var(--color-bone-corp);
  font-family: var(--rpas-font-body);
  font-size: var(--text-step-0);
  text-align: center;
}

.not-found__mark {
  display: grid;
  place-items: center;
  inline-size: 5.5rem;
  block-size: 5.5rem;
  border-radius: 50%;
  color: var(--color-accent);
  background: color-mix(in srgb, var(--color-accent) 12%, white);
}

.not-found__icon {
  inline-size: 2.75rem;
  block-size: 2.75rem;
}

.not-found__code {
  margin: 0;
  font-family: var(--rpas-font-display);
  font-size: var(--text-step-3);
  font-weight: var(--rpas-h1-display-weight);
  line-height: 1;
  letter-spacing: var(--rpas-display-1-track);
}

.not-found__title {
  margin: 0;
  font-family: var(--font-sans);
  font-size: var(--text-step-1);
  font-weight: 600;
  line-height: 1.15;
  text-wrap: balance;
}

.not-found__lede {
  margin: 0;
  max-width: var(--rpas-measure-reading);
  color: var(--text-secondary);
  line-height: var(--rpas-body-leading);
}

.not-found__actions {
  justify-content: center;
  margin-block-start: var(--space-2xs);
}



/* CR-19’s contextual scent-trail on the EN 404 (`.not-found-links` /
   `.not-found-links__link`) stood here and was REMOVED with its markup on
   Teerasak’s instruction, 22 September 2026 — the same call that removed
   CR-11’s footer group. No route uses either class now. */

/* Scroll lock while the mobile navigation dialog is modal. Scoped to the v2
   shell rather than allowlisted as an exception: the dialog only exists on v2
   pages, and shell.js sets data-nav-open on the same <html> that carries
   data-shell="v2", so the behaviour is unchanged. */
html[data-shell="v2"][data-nav-open] {
  overflow: hidden;
}

/* v2 migration shim (ticket 03): the frozen incumbent layer hides reveal
   targets until ITS script runs. On migrated shell pages the default is
   visible; shell.js arms the enhancement by setting data-reveal-ready, and
   marks revealed nodes with data-revealed. No-JS / no-observer /
   reduced-motion clients never get data-reveal-ready, so content stays
   visible. These selectors intentionally address incumbent classes, but only
   under the v2 shell marker (see css-contract guard exemption). */
html[data-shell="v2"] .reveal-block,
html[data-shell="v2"] .service-row,
html[data-shell="v2"] .case-study-grid .case-card {
  opacity: 1;
  transform: none;
}

html[data-shell="v2"][data-reveal-ready] [data-reveal]:not([data-revealed]) {
  opacity: 0;
  transform: translateY(24px);
}

html[data-shell="v2"][data-reveal-ready] [data-reveal]:not([data-revealed]):focus-within {
  opacity: 1;
  transform: none;
}

html[data-shell="v2"] [data-revealed] {
  opacity: 1;
  transform: none;
  /* Longhands avoid resetting the incumbent's per-node transition delays.
     Its service rows and case cards have distinct stagger schedules. */
  transition-property: opacity, transform;
  transition-duration: 0.52s;
  transition-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
}

@media (prefers-reduced-motion: reduce) {
  .skip-link {
    transition: none;
  }

  html[data-shell="v2"] [data-revealed] {
    transition: none;
  }
}

/* === styles/components.css === */
/* BEM components. Selectors: block__element--modifier only, flat (see the
   two allowlisted structural exceptions in the css-contract test).
   JS hooks use data-* attributes; no ID styling. Header/footer visuals are
   calibrated to the incumbent chrome (translucent pill on home, ink bar on
   interior pages, near-black footer); see docs/selector-map.md. */
.site-header {
  z-index: var(--z-header);
  /* .top-nav declares color: var(--ink) on the bar root; .standard-page-nav
     declares color: var(--bone). Without this, header containers with no
     own color (.site-header__lang, .site-header__nav) inherit the body
     default on the build side and split from the incumbent (measured
     rgb(0,0,0) vs rgb(14,20,32) on the lang container). --header-fg is set
     per variant on the same element, so it resolves here on all three. */
  color: var(--header-fg);
}

/* Variant theme variables inherit into the row (no descendant selectors).
   --home: translucent pill; --interior: sticky ink bar. */
.site-header--home {
  --header-surface: var(--surface-pill);
  --header-line: var(--border-pill);
  /* .brand-lockup inherits var(--ink) = rgb(14,20,32); coal #0b0b0b was close enough to pass by eye and wrong by measurement. */
  --header-fg: var(--ink);
  --header-soft: var(--color-coal-soft);
  /* BRAND MARK: consume the incumbent's theme-aware --mark-on-light, do not
     pin a new value. Measured defect: this declared var(--color-coal) and
     rendered rgb(11,11,11) where the incumbent .brand-mark renders
     rgb(0,71,255) — the corporate accent. The mark is a masked shape, so its
     `background` IS the brand colour, and a bone/coal value paints Bold
     Group's mark in neither of its colours. --mark-on-light is #0047ff under
     [data-style=corporate] and falls back to var(--ink) at :root. */
  --header-mark: var(--mark-on-light);
  /* .brand-place -> var(--label-on-light) */
  --header-place: var(--label-on-light);
  position: fixed;
  inset-block-start: 0;
  inset-inline: 0;
  padding: 17px 22px 0;
  transition: background 0.25s ease;
}

.site-header--home[data-header-state="compact"] {
  --header-surface: transparent;
  --header-line: transparent;
  --header-fg: var(--color-bone-corp);
  /* muted nav text on dark -> var(--label-on-dark), as the interior bar */
  --header-soft: var(--label-on-dark);
  /* Dark surface: the incumbent paints marks on dark with --mark-on-dark
     (#ffe500 under corporate). */
  --header-mark: var(--mark-on-dark);
  /* .brand-lockup.inverse .brand-place -> var(--label-on-dark) */
  --header-place: var(--label-on-dark);
  /* Compact is new v2 behaviour with no incumbent counterpart (argued record
     entry). Its bar takes the same themed ink as the interior bar rather than
     the pinned coal default, so the two dark surfaces agree with each other. */
  background: var(--ink);
}

@supports (color: color-mix(in srgb, red, red)) {
  .site-header--home[data-header-state="compact"] {
    background: color-mix(in srgb, var(--ink) 92%, transparent);
  }
}

.site-header--interior {
  --header-surface: var(--surface-bar);
  --header-fg: var(--color-bone-corp);
  /* .standard-page-nav nav :is(button,a) -> var(--label-on-dark) */
  --header-soft: var(--label-on-dark);
  /* Interior (contact) ink bar. The incumbent's counterpart here is
     `.brand-lockup.inverse .brand-mark { background: #fffc }`, which beats
     --mark-on-dark on this surface, so the measured original is
     rgba(255,255,255,0.8) rather than the corporate yellow. */
  --header-mark: var(--color-mark-inverse);
  /* .brand-lockup.inverse .brand-place -> var(--label-on-dark) */
  --header-place: var(--label-on-dark);
  position: sticky;
  inset-block-start: 0;
  /* .standard-page-nav declares color: var(--bone) on the bar itself; every
     text child sets its own color, but the element default must still agree
     so no anonymous text can inherit the body ink on one side and bone on
     the other. */
  color: var(--color-bone-corp);
  /* .standard-page-nav -> background: var(--ink) = #0e1420 on corporate,
     translucent 92% where color-mix is supported. This read
     var(--surface-bar) = #0b0b0b (opaque) — --ink's :root default again,
     measured as opaque 11,11,11 vs translucent 14,20,32/.92. */
  background: var(--ink);
  transition: box-shadow 0.25s ease;
}

@supports (color: color-mix(in srgb, red, red)) {
  /* Mirrors the incumbent's own @supports override verbatim. */
  .site-header--interior {
    background: color-mix(in srgb, var(--ink) 92%, transparent);
  }
}

.site-header--interior[data-header-state="compact"] {
  box-shadow: 0 12px 30px var(--scrim);
}

.site-header__inner {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  row-gap: var(--space-2xs);
  column-gap: 25px;
  min-height: 78px;
  padding-inline: clamp(24px, 7vw, 148px);
  min-width: 0;
}

.site-header__inner--boxed {
  max-width: 95rem;
  margin-inline: auto;
  min-height: 58px;
  padding-inline: 17px;
  background: var(--header-surface);
  border: 1px solid var(--header-line, var(--border-pill));
  transition: background 0.25s ease, border-color 0.25s ease;
}

.site-header__brand {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  row-gap: 0;
  column-gap: 8px;
  flex: 1 1 auto;
  min-width: 9.0625rem;
  color: var(--header-fg);
  text-decoration: none;
  margin-inline-end: auto;
}

.site-header__mark {
  flex: none;
  width: 1.9375rem;
  height: 1.9375rem;
  background: var(--header-mark);
  -webkit-mask: url(/brand/BoldGroup_Trans_Logo_Yellow_new.svg) 50% / contain no-repeat;
  mask: url(/brand/BoldGroup_Trans_Logo_Yellow_new.svg) 50% / contain no-repeat;
}

.site-header__wordmark {
  font-family: var(--font-sans);
  font-size: 1.125rem;
  font-weight: 700;
  letter-spacing: -0.075em;
  line-height: 1;
  min-width: 0;
  color: var(--header-fg);
}

.site-header__wordmark-sub {
  font-weight: 500;
  margin-inline-start: 4px;
}

.site-header__place {
  align-self: flex-end;
  margin: 0 0 1px 2px;
  font-size: 0.5rem;
  font-weight: 700;
  letter-spacing: 0.13em;
  color: var(--header-place);
}

.site-header__dialog {
  display: contents;
  visibility: hidden;
}

.site-header__dialog > * {
  visibility: visible;
}

.site-header__dialog::backdrop {
  background: var(--scrim);
}

.site-header__nav {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  column-gap: clamp(15px, 2.2vw, 32px);
  min-width: 0;
}

.site-header__link {
  position: relative;
  padding-block: 5px;
  font-size: 0.75rem;
  font-weight: 600;
  text-decoration: none;
  color: var(--header-soft);
}

.site-header__link::after {
  content: "";
  position: absolute;
  inset-inline: 0;
  inset-block-end: 0;
  height: 1px;
  background: var(--color-accent);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.18s ease;
}

.site-header__link:hover {
  color: var(--header-fg);
}

.site-header__link:hover::after {
  transform: scaleX(1);
}

/* CR-12 twins: keyboard focus renders the same affordance as hover. */
.site-header__link:focus-visible {
  color: var(--header-fg);
}

.site-header__link:focus-visible::after {
  transform: scaleX(1);
}

.site-header__link--current {
  color: var(--header-fg);
}

.site-header__link--current::after {
  transform: scaleX(1);
}

.site-header__lang {
  display: flex;
  align-items: baseline;
  flex: none;
  gap: 6px;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.12em;
}

.site-header__lang-link {
  text-decoration: none;
  padding: var(--space-3xs);
  color: var(--header-soft);
}

/* Home rest (light pill) only: .lang-switch a.site-link declares
   var(--label-on-light) on the light header, while --header-soft is coal-soft
   (right for the desktop nav links, which declare the literal #0b0b0ba6 —
   same value, different counterpart). Single-block wrapper. */
.site-header--home .site-header__lang-link:not(.site-header__lang-link--current) {
  color: var(--label-on-light);
}

.site-header__lang-link--current {
  color: var(--header-fg);
}

.site-header__lang-sep {
  color: var(--header-soft);
  opacity: 0.6;
}

.site-header__lang--menu {
  display: none;
}

.site-header__contact {
  display: inline-flex;
  align-items: center;
  flex: none;
  gap: 9px;
  min-height: 33px;
  padding-inline: 12px;
  font-size: 0.6875rem;
  font-weight: 700;
  text-decoration: none;
  /* .nav-contact -> var(--bone) = #f4f6fa on corporate */
  color: var(--color-bone-corp);
  /* .nav-contact -> background: var(--ink) = #0e1420 on corporate. This read
     var(--surface-bar) = #0b0b0b, which is --ink's :root DEFAULT — the
     pinned-default habit again, measured as bg 11,11,11 vs 14,20,32. */
  background: var(--ink);
  transition: background 0.16s ease;
}

.site-header__contact:hover {
  /* CR-05 palette lock (Teerasak approved): ember removed site-wide; the
     contact-button hover renders corporate accent blue. */
  background: var(--color-accent);
}

/* CR-12 twin. */
.site-header__contact:focus-visible {
  background: var(--color-accent);
}

.site-header__back {
  flex: none;
  white-space: nowrap;
  font-size: 0.75rem;
  font-weight: 600;
  text-decoration: none;
  /* .standard-page-nav .case-back -> var(--bone) = #f4f6fa on corporate */
  color: var(--color-bone-corp);
}

.site-header__menu-button {
  display: none;
  flex: none;
  align-items: center;
  justify-content: center;
  min-width: 2.75rem;
  min-height: 2.75rem;
  padding: 0;
  background: none;
  border: 0;
  color: var(--header-fg);
  cursor: pointer;
}

.site-header__menu-button[hidden] {
  display: none;
}

.site-header__close {
  display: none;
  align-items: center;
  justify-content: center;
  align-self: flex-end;
  min-width: 2.75rem;
  min-height: 2.75rem;
  padding: 0;
  background: none;
  border: 0;
  /* mobile dialog on the ink surface: incumbent .mobile-menu text is var(--bone) */
  color: var(--color-bone-corp);
  cursor: pointer;
}

.site-header__close[hidden] {
  display: none;
}

@media (max-width: 56rem) {
  .site-header--home {
    padding: 8px 8px 0;
  }

  .site-header__inner--boxed {
    min-height: 53px;
    padding-inline: 12px;
  }

  .site-header__menu-button {
    display: inline-flex;
  }

  .site-header__contact {
    min-height: 44px;
  }

  .site-header__dialog[data-nav-modal] {
    visibility: visible;
    position: fixed;
    inset: 0;
    width: 100%;
    margin: 0;
    padding: var(--space-m);
    min-height: 100svh;
    max-width: none;
    max-height: none;
    overflow: auto;
    /* .mobile-menu -> background: var(--ink), color: var(--bone), both themed
       (#0e1420 / #f4f6fa on corporate). This read surface-bar/--color-bone —
       the :root defaults again, one of them warm. */
    background: var(--ink);
    color: var(--bone);
    z-index: var(--z-overlay);
  }

  .site-header__dialog:not([open]) {
    display: none;
  }

  .site-header__nav {
    flex-direction: column;
    align-items: stretch;
    gap: var(--space-2xs);
  }

  .site-header__link {
    font-size: var(--text-step-1);
    /* .mobile-menu-links :is(button,a) -> color: var(--bone). The faint/full
       distinction is new v2 structure with no counterpart, so both levels
       take the themed bone rather than the warm :root default. */
    color: var(--bone);
  }

  /* CR-17: dialog links meet the same 44px target the header contact already
     keeps (cf. :348-350). Mobile-scoped: the desktop row nav keeps its
     measured 5px rhythm, so the deviation record's header observables hold. */
  .site-header__dialog .site-header__link {
    display: flex;
    align-items: center;
    min-height: 2.75rem;
  }

  /* CR-17: dialog language links (the --menu pair only; desktop pair above
     keeps its compact padding). Same-block descendant, mobile-scoped. */
  .site-header__lang--menu .site-header__lang-link {
    display: inline-flex;
    align-items: center;
    min-height: 2.75rem;
  }

  /* CR-12 dialog correction: the global header-link twin paints
     --header-fg (ink on the home pill), which would render the focused
     dialog link invisible against the ink dialog surface. Inside the
     dialog, focus keeps the bone dialog color — the global ring still
     marks the focused node. Caught live by the m-link observable. */
  .site-header__dialog .site-header__link:focus-visible {
    color: var(--bone);
  }

  .site-header__link--current {
    color: var(--bone);
  }

  .site-header__close {
    display: inline-flex;
  }

  .site-header__lang--menu {
    display: flex;
  }

  .site-header__place {
    display: none;
  }
}

@media (min-width: 56.01rem) {
  .site-header__close {
    display: none;
  }

  /* User design change: center the desktop nav links inside the home pill.
     The brand keeps its left slot (no grow, no auto margin); the nav absorbs
     the remaining inline space and centers its links; the contact CTA stays
     at the inline end. Home-scoped and desktop-only: interior pages and the
     mobile dialog (column nav, 44px targets) are untouched. */
  .site-header--home .site-header__brand {
    flex: 0 0 auto;
    margin-inline-end: 0;
  }

  .site-header--home .site-header__nav {
    flex: 1 1 auto;
    justify-content: center;
  }
}

@media (prefers-reduced-motion: reduce) {
  .site-header--home {
    transition: none;
  }

  .site-header--interior {
    transition: none;
  }

  .site-header__inner--boxed {
    transition: none;
  }

  .site-header__link::after {
    transition: none;
  }

  .site-header__contact {
    transition: none;
  }
}

.surface {
  background: var(--surface-page);
  color: var(--text-primary);
  border: var(--border-thin);
  border-radius: var(--radius-m);
  padding: var(--space-m);
  min-width: 0;
}

.surface--ink {
  background: var(--surface-ink);
  color: var(--text-on-ink);
  border-color: var(--border-on-ink);
}

.surface__title {
  font-size: var(--text-step-1);
  margin: 0 0 var(--space-2xs);
}

.surface__text {
  margin: 0;
  max-width: var(--rpas-measure-reading);
}

.surface__link {
  color: inherit;
  font-weight: 600;
}

.case-teaser {
  border: var(--border-thin);
  border-radius: var(--radius-m);
  padding: var(--space-m);
  background: var(--surface-page);
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  max-width: 24rem;
}

.case-teaser__kicker {
  font-size: var(--text-step--1);
  letter-spacing: 0.1em;
  color: var(--text-secondary);
}

.case-teaser__title {
  font-size: var(--text-step-1);
  margin: 0;
}

.case-teaser__text {
  margin: 0;
  color: var(--text-secondary);
}

.case-teaser__link {
  font-weight: 600;
  margin-block-start: auto;
}

.service-accordion {
  border: var(--border-thin);
  border-radius: var(--radius-m);
  overflow: hidden;
}

.service-accordion__item {
  border-block-end: var(--border-thin);
}

.service-accordion__item:last-child {
  border-block-end: 0;
}

.service-accordion__trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-s);
  width: 100%;
  padding: var(--space-s) var(--space-m);
  font-family: var(--font-sans);
  font-size: var(--text-step-1);
  font-weight: 600;
  color: var(--text-primary);
  background: var(--surface-page);
  cursor: pointer;
  list-style: none;
}

.service-accordion__trigger::-webkit-details-marker {
  display: none;
}

.service-accordion__trigger:hover {
  background: var(--surface-raised);
}

/* CR-12 twin. */
.service-accordion__trigger:focus-visible {
  background: var(--surface-raised);
}

.service-accordion__icon {
  flex: none;
  font-weight: 400;
}

.service-accordion__item[open] .service-accordion__icon {
  transform: rotate(45deg);
}

.service-accordion__panel {
  padding: 0 var(--space-m) var(--space-m);
  color: var(--text-secondary);
}

/* F2 (ticket 05): home service rows 1-2 are native <details> whose
   <summary> reuses .service-trigger (grid layout comes from the incumbent
   layer). Suppress the native disclosure marker, which has no incumbent
   counterpart; the plus/minus .service-icon remains the only indicator.
   Incumbent classes in new layers must sit under the html[data-shell="v2"]
   marker (D1 block-inventory guard); the rule is a no-op on <button>
   triggers (row 0 and every other route), which render no marker. */
html[data-shell="v2"] .service-trigger::marker {
  content: "";
}

html[data-shell="v2"] .service-trigger::-webkit-details-marker {
  display: none;
}

.prose-body {
  max-width: var(--rpas-measure-reading);
  font-size: var(--text-step-0);
}

.prose-body__heading {
  font-size: var(--text-step-2);
  margin-block: var(--space-m) var(--space-xs);
}

.prose-body__lede {
  font-size: var(--text-step-1);
  color: var(--text-secondary);
}

.site-footer {
  background: var(--surface-foot);
  color: var(--color-bone-corp);
}

.site-footer__inner {
  container-type: inline-size;
  max-width: 87.5rem;
  margin-inline: auto;
  padding: 54px max(6vw, 42px) 25px;
  min-width: 0;
}

.site-footer__top {
  display: grid;
  grid-template-columns: 1.15fr 0.8fr 0.55fr;
  gap: 50px;
  min-width: 0;
}

.site-footer__nav {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.site-footer__links {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 18px;
  margin-block-start: 17px;
}

.site-footer__link {
  /* .footer-links :is(button,a) -> var(--bone) = #f4f6fa on corporate */
  color: var(--color-bone-corp);
  font-family: var(--font-sans);
  font-size: 1.125rem;
  letter-spacing: -0.05em;
  text-decoration: none;
  padding: 0;
}

.site-footer__link--small {
  font-family: inherit;
  font-size: inherit;
  letter-spacing: normal;
}

.site-footer__blurb {
  max-width: 36ch;
  margin: 17px 0 0;
  font-size: 1rem;
  line-height: var(--rpas-body-leading);
  /* .footer-direction -> inherits var(--bone) = #f4f6fa on corporate */
  color: var(--color-bone-corp);
}

.site-footer__contact {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.site-footer__label {
  display: block;
  font-size: 0.5625rem;
  letter-spacing: 0.14em;
  font-weight: 700;
  /* .footer-label -> var(--label-on-dark) */
  color: var(--label-on-dark);
  margin-block-end: var(--space-2xs);
}

.site-footer__phone {
  display: inline-block;
  width: fit-content;
  margin-block-start: 15px;
  /* .footer-phone -> var(--bone) = #f4f6fa on corporate */
  color: var(--color-bone-corp);
  font-family: var(--font-sans);
  font-size: 1.125rem;
  letter-spacing: -0.045em;
  text-decoration: none;
}

.site-footer__phone:hover {
  /* .footer-phone:hover -> var(--accent) = #0047ff on corporate. */
  color: var(--color-accent);
}

/* CR-12 twin. */
.site-footer__phone:focus-visible {
  color: var(--color-accent);
}

.site-footer__legal {
  margin: 9px 0 0;
  font-size: 0.875rem;
  line-height: 1.55;
  max-width: 32ch;
  /* .footer-bottom -> var(--label-on-dark) */
  color: var(--label-on-dark);
}

.site-footer__wordmark {
  display: flex;
  align-items: center;
  gap: clamp(12px, 2vw, 25px);
  margin: 124px auto 35px;
  max-width: 87.5rem;
  font-family: var(--font-sans);
  font-size: clamp(55px, 12.5cqi, 184px);
  font-weight: 700;
  letter-spacing: var(--rpas-display-1-track);
  line-height: 0.78;
  /* .footer-wordmark -> var(--bone) = #f4f6fa on corporate */
  color: var(--color-bone-corp);
}

.site-footer__mark {
  flex: none;
  width: clamp(45px, 8vw, 118px);
  height: clamp(45px, 8vw, 118px);
  /* BRAND MARK: this declared var(--color-bone) and rendered
     rgb(241,239,234) where the incumbent .footer-corporate-mark renders
     rgb(255,229,0) — the corporate yellow. The incumbent paints it with
     --mark-on-dark; consume that rather than pinning a value. */
  background: var(--mark-on-dark);
  -webkit-mask: url(/brand/BoldGroup_Trans_Logo_Yellow_new.svg) 50% / contain no-repeat;
  mask: url(/brand/BoldGroup_Trans_Logo_Yellow_new.svg) 50% / contain no-repeat;
}

.site-footer__wordmark-sub {
  font-weight: 500;
}

.site-footer__bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  max-width: 87.5rem;
  margin-inline: auto;
  padding-block-start: 18px;
  border-block-start: 1px solid var(--border-faint);
  font-size: 0.625rem;
  /* .footer-bottom -> var(--label-on-dark) */
  color: var(--label-on-dark);
}

.site-footer__copy {
  margin-inline-end: auto;
}

.site-footer__tagline {
  color: inherit;
}

.site-footer__top-action {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 0;
  font-size: inherit;
  color: inherit;
  background: none;
  border: 0;
  cursor: pointer;
}

@media (max-width: 56rem) {
  .site-footer__inner {
    padding: 48px 23px 20px;
  }

  .site-footer__top {
    grid-template-columns: 1fr 1fr;
  }

  /* CR-17: footer wayfinding links (incl. the small privacy link) meet 44px
     on touch widths. Mobile-scoped: desktop keeps its measured rhythm. */
  .site-footer__link {
    display: inline-flex;
    align-items: center;
    min-height: 2.75rem;
  }

  .site-footer__phone,
  .site-footer__top-action {
    display: inline-flex;
    align-items: center;
    min-height: 2.75rem;
  }

  .shared-footer :is(.footer-links a),
  .shared-footer :is(.footer-bottom a),
  .shared-footer :is(.footer-bottom button),
  .shared-footer :is(.footer-phone) {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }

  .site-footer__wordmark {
    margin: 88px 0 28px;
    font-size: clamp(54px, 17.5vw, 85px);
  }
}

@media (max-width: 40rem) {
  .site-footer__top {
    display: block;
  }

  .site-footer__top-block {
    margin-block-start: 34px;
  }

  .site-footer__top-block:first-child {
    margin-block-start: 0;
  }

  /* CR-04: compact stacked contact variant. The old `display:none` deleted
     the phone/address/tax block precisely for the tap-to-call audience; the
     40rem breakpoint already flips .site-footer__top to `display:block`, so
     stacking comes free — the block just stays in flow with the same 34px
     rhythm as its siblings, and the phone keeps its tappable tel: at a 44px
     target. v2 footer only (home/contact); incumbent footers untouched. */
  .site-footer__contact-block {
    display: block;
  }

  .site-footer__wordmark {
    display: grid;
    grid-template-columns: 36px minmax(0, 1fr);
    gap: 2px 8px;
    font-size: clamp(42px, 14vw, 46px);
    line-height: 0.78;
  }

  .site-footer__mark {
    grid-row: span 2;
    width: 2.25rem;
    height: 2.25rem;
  }

  .site-footer__word {
    grid-column: 2;
  }

  .site-footer__bottom {
    font-size: 0.625rem;
  }

}

@media (prefers-reduced-motion: reduce) {
  .service-accordion__item[open] .service-accordion__icon {
    transform: none;
  }
}

/* === B1 family layer: shared leaf components, calibrated to incumbent ===
   Additive mapping: new classes sit alongside incumbent ones; every declared
   value mirrors the incumbent rule it will eventually replace (px remapped
   /16 so enlarged text scales). No :is() descendant shapes carried across. */
.cta-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.875rem;
  min-height: 3rem;
  padding: 0 1.125rem;
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: 0.75rem;
  text-decoration: none;
  border: 1px solid transparent;
  border-radius: var(--radius-m);
  cursor: pointer;
  transition: transform 0.16s ease, background 0.16s ease, color 0.16s ease;
}

.cta-button:active {
  transform: scale(0.97);
}

.cta-button--primary {
  background: var(--color-coal);
  color: var(--color-bone);
}

.cta-button--primary:hover {
  background: var(--color-accent);
}

/* CR-12 twin. */
.cta-button--primary:focus-visible {
  background: var(--color-accent);
}

.cta-button--accent {
  background: var(--color-accent);
  color: var(--color-accent-ink);
}

.cta-button--accent:hover {
  background: var(--color-coal);
}

/* CR-12 twin. */
.cta-button--accent:focus-visible {
  background: var(--color-coal);
}

.cta-button--ghost {
  background: transparent;
  color: var(--text-primary);
  border-color: var(--border-subtle);
}

.cta-button:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

/* .inline-link REMOVED (css-hygiene): base, :hover and :focus-visible matched
   no element in any built document (verified by dist grep over every html
   file incl. preview/components, plus src templates and dist js) — dead
   since the family using it never migrated. */

.doc-eyebrow {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  /* CR-15: micro-label floor at a legible 10px (was 9px) and no width cap
     forcing 3–4-line wraps — one line where the column allows, two at most
     on phones. No eyebrow instance renders outside preview yet, so this is
     zero-impact until the family migrates. */
  max-width: none;
  font-size: var(--rpas-eyebrow-size);
  font-weight: var(--rpas-eyebrow-weight);
  letter-spacing: var(--rpas-eyebrow-track);
}

/* .doc-eyebrow__dot REMOVED (css-hygiene): matched no element in any built
   document (verified by dist grep over every html file incl.
   preview/components, plus src templates and dist js). The .doc-eyebrow
   base rule above stays — only the dead dot goes. */

.doc-rail {
  --rail-index: var(--color-accent);
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-block-end: 1.875rem;
  font-size: 0.5625rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  min-width: 0;
}

/* .doc-rail__index REMOVED (css-hygiene): matched no element in any built
   document (verified by dist grep over every html file incl.
   preview/components, plus src templates and dist js). The .doc-rail base
   rule above stays, including its inert --rail-index declaration. */

/* .doc-rail--light REMOVED (ticket 04). The modifier was declared here and
   applied to no element anywhere in src/ — a styled class with no markup
   behind it, which reads as live styling to the next person to touch the
   rail. Same dead-line class as the routeSlugs `preview-components` clause
   and the selector map's `data-nav-panel`. If a light rail is wanted, add it
   with the element that uses it, in one change. */

.section-heading {
  font-family: var(--font-sans);
  font-size: clamp(1.125rem, 1.8vw, 1.375rem);
  font-weight: 600;
  letter-spacing: var(--rpas-display-1-track);
  line-height: 1.25;
  margin: 1.875rem 0 0;
}

.section-heading--tight {
  margin: 1.75rem 0 0.625rem;
  font-size: clamp(1.0625rem, 1.7vw, 1.3125rem);
}

.bullet-list {
  display: grid;
  gap: 0.5625rem;
  margin: 1.125rem 0 0;
  padding-inline-start: 1.25rem;
}

.bullet-list__item {
  line-height: var(--rpas-body-leading);
}

.question-list {
  display: block;
  margin: 0;
}

.question-list__item {
  display: grid;
  grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
  gap: 1.875rem;
  padding: 1.625rem 0;
  border-block-end: 1px solid;
}

.question-list__question {
  font-family: var(--font-sans);
  font-size: clamp(1.0625rem, 1.8vw, 1.3125rem);
  font-weight: 500;
  letter-spacing: var(--rpas-display-1-track);
  line-height: 1.25;
  margin: 0;
}

.question-list__answer {
  margin: 0;
  line-height: 1.65;
  min-width: 0;
}

.question-list__answer-text {
  margin: 0 0 0.8125rem;
}

.question-list__answer-text:last-child {
  margin-block-end: 0;
}

.media-frame {
  display: block;
  width: 100%;
  height: 100%;
  aspect-ratio: var(--feature-ratio, 16 / 10);
  object-fit: cover;
}

.media-frame--pending {
  display: grid;
  place-items: center;
  background:
    repeating-linear-gradient(135deg, currentColor 0 12px, transparent 12px 24px),
    currentColor;
}

.listing-teaser {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 1.875rem;
  padding: 2.25rem 0;
  border-block-end: 1px solid var(--border-strong);
  min-width: 0;
}

/* .listing-teaser__kicker REMOVED (css-hygiene): matched no element in any
   built document (verified by dist grep over every html file incl.
   preview/components, plus src templates and dist js). .case-teaser__kicker
   is live (preview) and stays — only this dead kicker goes. */

.listing-teaser__title {
  max-width: 45rem;
  font-family: var(--font-sans);
  font-size: clamp(1.875rem, 3.7vw, 3.375rem);
  font-weight: 500;
  letter-spacing: -0.07em;
  line-height: 1;
  margin: 1.125rem 0 0;
}

.listing-teaser__text {
  max-width: 36.25rem;
  color: var(--color-slate);
  margin: 1rem 0 0;
  font-size: 0.9375rem;
  line-height: var(--rpas-body-leading);
}

.listing-teaser__meta {
  display: block;
  margin-block-start: 0.875rem;
  color: var(--color-slate);
  font-size: 0.75rem;
  letter-spacing: 0.04em;
}

/* CR-03: single-column stacking under the existing 56rem breakpoint. Neither
   selector has any @media override today (verified); at 375px the Q&A pair
   and the teaser meta squeezed side-by-side. Same tokens, no new values. */
@media (max-width: 56rem) {
  .question-list__item {
    grid-template-columns: 1fr;
    gap: var(--space-s);
  }

  .listing-teaser {
    grid-template-columns: 1fr;
    gap: var(--space-s);
  }
}

/* CR-15: the incumbent `.eyebrow` already computes to 10px (a later
   same-specificity rule overrides the cited 9px — verified, so no floor
   change is needed), but its 270px cap forces the 44-char hero label into
   3–4 lines. Lifting the cap fits it on one line at desktop and two at
   375px with zero words cut (no copy change). Scoped under the v2 marker —
   the only `.eyebrow` instance in all 38 bodies renders on home (verified
   by dist grep), so the scope changes nothing about where it applies while
   keeping the D1 no-collision guard green. Rendered delta recorded as a
   retained consequence (deviation-record.json). */
html[data-shell="v2"] .eyebrow {
  max-width: none;
}

@media (prefers-reduced-motion: reduce) {
  .cta-button {
    transition: none;
  }

  .cta-button:active {
    transform: none;
  }
}

/* CR-06 — display type repair (EN). Teerasak approved this in the second
   decision group and it was never implemented; found unbuilt on 22 Sep 2026
   while diagnosing deviation-check, and implemented here. Amended same day
   per the Design Director's ruling (B): display tracking eased -.025em ->
   -.04em, leading held at 1.02; footer wordmark untouched (-.04em/.9).

   Approved values: heading tracking -.07em -> -.025em, leading .95 -> 1.02;
   footer wordmark -.09em/.78 -> -.04em/.9. Existing font and maximum heading
   size are retained, as the decision requires — only tracking and leading move.

   The from-values were verified by measurement before anything changed, not
   read off the source: at 1440/1280/600/400 the display headings render
   letter-spacing/font-size = -0.070 and the wordmark -0.090 with leading .78,
   exactly the values the decision was costed against. (The one variant is
   @media(max-width:620px){line-height:.92} on .case-hero h1; the override
   below replaces it too, which moves mobile leading the same direction the
   decision intends — looser, not tighter.)

   Why this is not the token override the change request costed: `--display-1-
   track` and `--display-1-leading` are declared in the frozen incumbent, and
   C10-tokens fails any new layer that redeclares an incumbent custom property.
   The consuming selectors are overridden instead. Element names sit inside
   :is() because C10-scope rejects a bare tag even under a class. */
/* H1 weight convergence (Design Director ruling, Teerasak approved, 23 Sep 2026).
   500 is the stable incumbent value across case, service and interior heroes.
   Home converges from 600 to 500; scoped to .hero-left alone so other heroes
   remain untouched. */
.hero-left :is(h1) {
  font-weight: 500;
}

.hero-left :is(h1),
.case-hero :is(h1) {
  letter-spacing: var(--rpas-display-1-track);
  line-height: var(--rpas-display-1-leading);
}

.shared-footer {
  container-type: inline-size;
}

.footer-wordmark {
  letter-spacing: var(--rpas-display-1-track);
}

/* Desktop wordmark resolves the same 12.5% of the home's capped inner
   content width (min(viewport, 87.5rem) minus its two responsive paddings).
   The incumbent <=720px/<=420px sizes and .78 leading remain in charge. */
@media (min-width: 45.0625rem) {
  .footer-wordmark {
    font-size: clamp(85px, calc(min(12.5vw, 10.9375rem) - max(1.5vw, 10.5px)), 184px);
  }
}

/* P0: keep public contact in the two-column footer's second row. */
@media (max-width: 65.625rem) {
  .shared-footer :is(.footer-direction) {
    display: block;
  }
}

.shared-footer :is(.footer-phone:focus-visible) {
  color: var(--color-accent);
}

/* Phase 2 Row 1 (Teerasak approved, 23 Sep 2026): subpage hero lede adopts case-hero 17px/1.7 across all viewports */
.insights-hero :is(p) {
  font-size: 1.0625rem;
  line-height: 1.7;
}

/* Phase 2 Row 2 (Teerasak approved, 23 Sep 2026): home section H2s adopt standard clamp */
.signals-intro :is(h2),
.services-lead :is(h2),
.method-content :is(h2),
.proof-claim :is(h2),
.contact-copy :is(h2),
.cases-lead :is(h2) {
  font-size: var(--rpas-h2-section-size);
}

@media (max-width: 45rem) {
  .signals-intro :is(h2),
  .services-lead :is(h2),
  .method-content :is(h2),
  .proof-claim :is(h2),
  .contact-copy :is(h2),
  .cases-lead :is(h2) {
    font-size: var(--rpas-h2-section-size-mobile);
  }
}

/* Phase 2 Row 3 (Teerasak approved, 23 Sep 2026): readiness close H2 adopts standard clamp */
.content-close :is(h2) {
  font-size: var(--rpas-h2-section-size);
}

@media (max-width: 45rem) {
  .content-close :is(h2) {
    font-size: var(--rpas-h2-section-size-mobile);
  }
}

/* Phase 2 Row 4 (Teerasak approved, 23 Sep 2026): back-to-top utility size 10px on service routes.
   Scoped to the incumbent 12px context (.standard-page:has(.service-section)
   :is(...,.footer-bottom)). That rule's :is() list contains
   `.case-hero-copy>span`, so it scores (0,3,1) — a plain rescoped (0,3,0)
   ties and loses. Doubling the class inside :is() scores (0,4,0) and wins
   outright with no !important and no order dependence; the match set is
   unchanged (an element carrying the class trivially matches it twice). */
.standard-page:has(.service-section) :is(.footer-bottom.footer-bottom) {
  font-size: 10px;
}

/* CHANGES 373 item 1: keep desktop why-points above the 200px text floor. */
@media (min-width: 901px) and (max-width: 1097px) {
  .why-points {
    grid-template-columns: 1fr;
    gap: 22px;
  }
}

/* CHANGES 373 item 3: inverted track count >1024 (Director ruling 24 Sep
   2026; Teerasak approval 24 Sep 2026, CHANGES 378). The incumbent
   @media(max-width:1250px) block was written for the 4-card .proof-grid;
   its .proof-claim{grid-column:span 3} leaks onto .proof-grid-single, whose
   own minmax(0,1fr) template is one real track — the two extra 0px implicit
   tracks vanish at 1251+ (the inversion). grid-column:auto inside the same
   band cancels the span; the claim's box is pixel-identical before and
   after (measured). <=1024 untouched per the >1024 scope. */
@media (min-width: 1025px) and (max-width: 1250px) {
  .proof-grid-single :is(.proof-claim) {
    grid-column: auto;
  }
}

/* CR-16: section 06 takes the existing ink surface and white contrast cues. */
.proof-section {
  background: var(--surface-ink);
  color: var(--text-on-ink);
}

.proof-section :is(.proof-claim) {
  background: transparent;
  color: var(--text-on-ink);
  box-shadow: inset 0 0 0 1px var(--border-on-ink);
}

.proof-section :is(.proof-top) {
  border-color: var(--border-on-ink);
}

.proof-section :is(.section-rail),
.proof-section :is(.section-rail span:first-child),
.proof-section :is(.proof-claim h2 em),
.proof-section :is(.text-link) {
  color: var(--text-on-ink);
}

.proof-section :is(.text-link) {
  text-decoration: underline;
}

.proof-section :is(.text-link:hover) {
  color: var(--color-accent);
}

.proof-section :is(a:focus-visible) {
  color: var(--text-on-ink);
  outline-color: var(--text-on-ink);
  text-decoration: underline;
  box-shadow: none;
}

.proof-section :is(.button-light:focus-visible) {
  color: var(--surface-ink);
  outline-color: var(--text-on-ink);
}

/* CR-07: approved 12px corners on CTA controls and card containers. */
.button {
  border-radius: var(--radius-m);
}

.service-stack,
.case-card,
.insight-card,
.readiness-swot-card,
.signal-card,
.outcome-card {
  border-radius: var(--radius-m);
  overflow: clip;
}

/* The ring is drawn inside each focusable box, within its card's clip. */
.service-stack :is(:focus-visible),
.case-card :is(:focus-visible),
.insight-card :is(:focus-visible),
.readiness-swot-card :is(:focus-visible),
.signal-card :is(:focus-visible),
.outcome-card :is(:focus-visible) {
  outline-offset: -4px;
}

.service-stack :is(.service-trigger:focus-visible) {
  outline: 3px solid var(--color-focus);
  outline-offset: -4px;
}

.case-card :is(.case-card-button:focus-visible) {
  outline-offset: -4px;
}

/* Interior navigation labels stay on one line from 1240px. */
.standard-page-nav :is(nav) {
  column-gap: clamp(16px, 1.6vw, 32px);
}

/* M-1: interior header takes two rows from 721px to 1023.98px (Director ruling
   26 Sep 2026). Measured before the fix: the 7 labels wrapped onto three text
   lines, min tap target 28px, and `.case-back` was clipped 128.2px out of the
   main column at 721px, 81.2px at 768px, 29.9px at 820px. Row one keeps the
   brand and the back link; the nav takes the full width of row two, so the
   labels stop wrapping and every target reaches 44px. Restores a single row at
   1024px, where the incumbent already fits (headerH 82px).
   The band bounds are the same expression base.css uses for the 129px
   scroll-padding-top, so the header height and the covered strip cannot drift. */
@media (min-width: 721px) and (max-width: 1023.98px) {
  .standard-page-nav {
    flex-wrap: wrap;
    row-gap: 4px;
  }

  .standard-page-nav :is(nav) {
    order: 3;
    flex: 1 0 100%;
  }

  .standard-page-nav :is(nav) :is(a) {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    white-space: nowrap;
  }
}

/* 721–900px band (Teerasak delegated to Design Director, 26 Sep 2026): the two
   home compositions that sit on hard authored track minimums which the content
   width inside the gutter cannot satisfy below ~900px.

   §05 method grid. The rule that actually wins is the TOP-LEVEL incumbent
   `.method-section` (grid-template-columns:minmax(280px,.91fr)
   minmax(380px,1.09fr)), not the earlier @media(min-width:721px) one that uses
   var(--layout-rail) minmax(0,1fr) — a media query adds no specificity, so the
   later top-level declaration governs every width ≥721px. Its minimum track
   total is 280+380 plus a 28px gap = 688px, against 617px available inside the
   2×52px gutter at 721px. The right column therefore resolved to x=360…740 on a
   721px viewport and the last ~18px of the first line of all five steps was
   clipped: measured body overhang +19px, 6 right-edge text runs, 18.3px lost.
   At ≤720px the incumbent's own max-width:720px rule already switches the
   section to flex, and above 900px the fr minimums resolve with room to spare,
   so the band is exactly 721–900px.

   .method-body is placed on row 2 rather than re-placing the section rail: the
   incumbent already pins .method-content>.section-rail to 1/1, so the rail
   keeps row 1 by itself. Naming the rail here instead would make
   `.method-content>.section-rail` a cross-component reach and fail C10-contract.

   Service trigger. Same band, different mechanism: the four-column
   `.service-trigger` does NOT overflow (minimum 75+190+230+36 plus 3×15 gap
   plus 2×28 padding = 632px, against 634.5px available — measured overhang
   −43.3px). With 2.5px of free space the title track rests on its 190px
   minimum, so cards 01 and 02 wrapped to 4 lines and the row inflated to
   200.8px against 130.4px at 1280px. Dropping the label onto its own row gives
   the title 437.5px (2 lines) and the row 168.8px, and reuses the shape the
   incumbent already applies at ≤720px rather than inventing one.

   Measured after: 721px — method body 617px, overhang −52px, 0 right-edge runs,
   0px lost; service name 437.5px, max 2 lines, row 168.8px. 390px and 1280px
   render byte-identical to the pre-change baseline.

   The band is written in rem (45.0625rem = 721px, 56.25rem = 900px) because the
   source-static width audit in tests/output.test.mjs rejects fixed pixel widths
   in this file, and it reads the @media condition as well as the declarations.
   The lower bound is deliberately 721px and not the file's usual 45rem (720px):
   at exactly 720px the incumbent's own max-width:720px rules still apply, and
   this layer loads later, so a 720px lower bound would override the mobile
   service-trigger columns.

   §04 cases lead — a third composition in the same band and the same mechanism,
   found while verifying the other two and approved as an extension. The
   incumbent's later top-level `.cases-lead` carries a THREE-column grid,
   var(--layout-rail) minmax(0,1.15fr) minmax(270px,.42fr). Its 270px hard
   minimum is satisfied, so nothing overflows, but the fr tracks are left
   dividing only 129px: at 721px the tracks resolve 162px / 146.5px / 270px and
   the section H2 is confined to a 146.5px column, wrapping to five lines.
   Collapsing to one column lets the three children (section rail, title block,
   paragraph) auto-place onto rows 1/2/3 in their existing DOM order, which is
   the same stack the incumbent already produces at ≤720px via display:block.
   Measured after at 721px: H2 634.5px on 1 line (was 146.5px on 5), paragraph
   5 lines (was 7) and still inside its 360px measure cap.

   The paragraph needs a top gap once it is stacked rather than sitting in a
   third column, and the incumbent sets none for that case. var(--space-m)
   measures 28.01px at 721px, matching the 28px the incumbent's own ≤720px
   max-width:720px rule already applies to this same paragraph, so the band
   continues the mobile spacing rather than inventing a value. It is written
   `.cases-lead :is(p)` and not `.cases-lead>p`: C10-scope rejects a bare tag
   even under a class. The trade is child-vs-descendant — if `.cases-lead` ever
   gains a nested paragraph this reaches it too. */
@media (min-width: 45.0625rem) and (max-width: 56.25rem) {
  .method-section {
    grid-template-columns: minmax(0, 1fr);
  }

  .method-body {
    grid-area: 2 / 1 / -1 / -1;
    max-width: none;
  }

  .method-visual {
    grid-area: 3 / 1 / auto / -1;
  }

  .service-trigger {
    grid-template-columns: 75px minmax(0, 1fr) 36px;
  }

  .service-label {
    grid-area: 2 / 2;
    display: block;
    margin: 6px 0 0;
    max-width: none;
  }

  .cases-lead {
    grid-template-columns: minmax(0, 1fr);
  }

  .cases-lead :is(p) {
    margin-top: var(--space-m);
  }
}

/* 721-761px (Teerasak delegated to Design Director, 26 Sep 2026): the service
   accordion's expanded PANEL, which the 721-900px block above never covered —
   it fixed the trigger, and the defect lives in the panel the trigger opens.

   The frozen incumbent gives `.service-expanded`
   `grid-template-columns:minmax(230px,.82fr) minmax(280px,1.18fr)` with a 42px
   gap and 118px/28px inline padding, so its content demands a fixed 670px from
   the panel's left content edge. Below a 670px panel that demand is clipped by
   `overflow-x: clip` with no document scroll: measured child overhang +36px at
   721, +10px at 750, and it crosses zero between 760 and 762px.

   The band is therefore 721-761px, not 721-900px: from 762px the authored
   two-column panel already fits (measured -1px at 762, -6px at 768, -28px at
   900) and restyling it would change a layout that is not broken. Upper bound
   47.5625rem = 761px is the last width that overflows, derived from that scan
   rather than picked for convenience.

   Note `overflow-x: clip` means scrollWidth equals clientWidth whenever the
   content is merely clipped, so scrollWidth is NOT a valid detector here; the
   acceptance probe is child-rect geometry against the panel's padding box.

   Measured after: overhang +36 -> -28px at 721, +10 -> -28px at 750, and 762px
   and above computed-identical to pre-change. The trigger's own band acceptance
   is untouched (row 168.8px, service name 2 lines at 721-768), document
   overflow-x 0 at every width. */
@media (min-width: 45.0625rem) and (max-width: 47.5625rem) {
  .service-expanded {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* 700–900px band (Teerasak delegated to Design Director, 26 Sep 2026): home
   display H2 tracking.

   CR-06 (Teerasak, 22 Sep 2026) eased display tracking and tokenised it as
   --rpas-display-1-track; the H1 heroes were moved onto it, but the home
   section H2s received D1-approved FONT-SIZE overrides only, so their tracking
   never left the frozen incumbent's -.07em. Measured consequence at 721px: a
   5.45–5.75px minimum inter-word gap on these headings against 7.86px on the
   H1 of the same page — 73% of an already-approved value. The triage described
   the words as touching; on this dist the gap is proportional, not zero, so
   this is a tracking correction and not a legibility rescue.

   The band value is the CR-06 token, not a new literal: it measures a 7.66px
   minimum word gap, identical to the -.02em that CHANGES 408 named, and 97% of
   the H1 reference. The token is reused rather than restated so the standing
   ruling stays the single source of the value. The word-spacing guard is the
   second half of the same 408 instruction.

   Element names sit inside :is() because C10-scope rejects a bare tag even
   under a class. The nine classes are listed as individual selector lines, not
   wrapped in one :is() list: checkSource splits a rule header on commas before
   it strips functional-pseudo arguments, so a :is()-wrapped class list reports
   as a non-BEM selector and fails C10-contract.

   Measured after at 721px: minimum word gap 5.75px → 7.66px. 390px and 1280px
   are outside the band and render byte-identical to the baseline.

   Band in rem for the same reason as the 721–900px block above (43.75rem =
   700px, 56.25rem = 900px). Unlike the layout band this one deliberately spans
   700–720px, where the incumbent has already collapsed the grids: tracking is
   independent of that collapse, and 408 scopes the tracking fix from 700px. */
@media (min-width: 43.75rem) and (max-width: 56.25rem) {
  .manifesto-inner :is(h2),
  .why-body :is(h2),
  .faq-body :is(h2),
  .signals-intro :is(h2),
  .services-lead :is(h2),
  .method-content :is(h2),
  .proof-claim :is(h2),
  .contact-copy :is(h2),
  .cases-lead :is(h2) {
    letter-spacing: var(--rpas-display-1-track);
    word-spacing: 0.02em;
  }
}

/* 390px right-edge clipping on thailand-innovation-readiness-2025 (measured
    26 Sep 2026, reviewer5 live DOM; pack shots y3990-5280 and y8930-9700).
    Sections 03/06 lost letters at the viewport edge because the FROZEN layer's
    own `@media(max-width:720px)` sets `.standard-section{grid-template-columns:1fr}`
    — a `1fr` track has an automatic minimum of min-content, so the 560px
    readiness table could not shrink below its own width inside a 286.8px track
    and pushed the section past the viewport. `minmax(0,1fr)` removes that floor
    and lets the track shrink; the authored layer already loads after the frozen
    one, so no `!important` and no edit to _incumbent.css.
    The wrapper is made focusable below so the horizontally scrollable region is
    reachable by keyboard, with a visible ring.
    The bound is 45rem, not 720px: the same 720px edge at a 16px root, and this
    file's existing convention. tests/output.test.mjs's width audit reads a media
    prelude as a declaration, so a px bound here fails it. */
@media (max-width: 45rem) {
  .standard-section {
    grid-template-columns: minmax(0, 1fr);
  }

  .readiness-table-wrap:focus-visible {
    outline: 2px solid var(--color-focus);
    outline-offset: 2px;
  }
}

/* Hero frame parity — Variant B, flat single-block (Teerasak approved, 28 Sep 2026).
   The hero frame is sized by the IMAGE, never by the copy. This overrides the
   frozen incumbent's .hero-figure { min-height: 690px } and the
   .hero-figure-image { position: absolute; inset: 0; aspect-ratio: auto }.
   Selector: flat single-block .hero-figure (no ancestor chain), specificity (0,1,0),
   wins on source order since components.css is concatenated after _incumbent.css.
   Two load-bearing declarations: min-height: 0 neutralises the 690px floor at
   narrow widths; align-self: start scoped to >=1024px prevents 0x0 collapse in
   the column-flex layout below 1024. */
.hero-figure {
  width: 100%;
  aspect-ratio: 1280 / 2240;
  min-height: 0;
}
@media (min-width: 1024px) {
  .hero-figure {
    align-self: start;
  }
}

/* === styles/article.css === */
/* Article family layer (ticket 04, B3a). BEM compounds throughout, no IDs,
   no functional-pseudo selectors. Twelve selectors are scoped through a
   wrapper — `.article .article__text` (0,2,0) — which the extended contract
   permits when every classed compound shares one block root; the rest are
   flat single classes.
   Maps the incumbent article/content rules 1:1 (see declarations below):
   content-hero -> article__hero*, article-brief(-section) -> article__brief*,
   article-body(-section) -> article__main/article__body/article__section*,
   article-sources(-section) -> article__sources*, article-faq(-section) ->
   article__faq*, article-onward(-section) -> article__onward*,
   content-close -> article__close*.
   Sibling spacing that was p+p / p+ul / li+li is explicit --gap modifiers.
   px values are transcribed as rem (px/16): 12px=.75rem 19px=1.1875rem
   52px=3.25rem 105px=6.5625rem 800px=50rem 880px=55rem 200px=12.5rem
   350px=21.875rem; thin rules stay px; ch/em/%/vw untouched.
   SCOPING (REVISE re-shape): eight classes plus the four --gap modifiers
   (12 scoped selectors total) are
   scoped because the frozen layer still carries `.standard-section h2`
   (0,1,1: Sora, -.075em, margin 0, clamp(38px,4.75vw,68px)/500/.98) and
   `.standard-section p` (0,1,1: color currentColor turning 68%-mix under
   @supports, max-width 610px then 570px, margin 34px 0 0, 16px/1.68;
   28px/15px under 720px), which beat flat (0,1,0) and rendered 55 nodes
   wrong. The scoped rules win legitimately; !important is no longer the
   mechanism and was removed everywhere except the verbatim transcriptions
   that still need it (.article__lede's five, .article__hero-text's two,
   .article__lede's 720px max-width — all vs .standard-page p at (0,1,1),
   hero unwrapped). .article__note drops its transcribed !important.
   Where the incumbent's own rule lost its ties in the original, this layer
   does not resurrect it: .article__source-label keeps only its uncontested
   properties (family/spacing/weight) and .article__source-meta only
   letter-spacing — font-size, line-height, max-width, color and margin fall
   through to .standard-section p exactly as in the original. .article__note
   carries the .article-section p values that won its ties (ink/reading),
   not its isolated declarations.
   Two self-found defects fixed in the re-shape: .article__list-item never
   received the .article-section li typography (it now shares the scoped
   text group), and the --gap block sits after the list rules so no
   same-specificity shorthand (margin:0) can clobber it even unscoped.
   Shared classes kept as-is: site-link, lucide*, reveal-block,
   standard-section*, section-rail, page chrome. long-form-copy is dropped
   inside migrated regions (its values are transcribed into the __text
   group); its cross-family prose-body mapping stays integration-owner
   territory. Rule-less structural hooks: article__section,
   article__hero-meta-label, article__onward-main (article__hero-main is
   styled only inside the 45rem query).    Custom properties referenced here
   (--ink, --type-*, --measure-*, --layout-*, --surface-*) remain defined by
   the frozen incumbent layer, so computed values are unchanged.
   LOAD-BEARING TOKEN NOTE: the six `var(--measure-reading)` references below
   (marked `keep-unprefixed`) must stay unprefixed. They resolve to the
   incumbent's 56ch (38ch under 720px), which is what the original renders
   and what B3a equivalence was measured against. The same name with an
   --rpas- prefix (or any wider value) silently widens every article and no
   gate will catch it. */

.article__hero {
  margin: var(--surface-space) var(--surface-inset) 0;
  color: var(--bone);
  background: var(--ink);
  display: grid;
  grid-template-columns: var(--layout-rail) minmax(0, 1fr) 12.5rem;
  gap: var(--layout-gap);
  padding: clamp(3.375rem, 7vw, 7rem) var(--layout-gutter);
}

.article__hero-back {
  border: 0;
  display: inline-flex;
  align-items: center;
  gap: 0.625rem;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--label-on-dark);
  background: 0 0;
  align-self: start;
  padding: 0;
}

.article__hero-kicker {
  color: var(--accent-on-dark);
  letter-spacing: var(--rpas-eyebrow-track);
  font-size: var(--rpas-eyebrow-size);
  font-weight: var(--rpas-eyebrow-weight);
}

.article__hero-title {
  max-width: 50rem;
  font-family: var(--font-display);
  letter-spacing: -0.085em;
  margin: 1.1875rem 0 1.5rem;
  font-size: clamp(3.25rem, 7vw, 6.5625rem);
  font-weight: var(--rpas-h1-display-weight);
  line-height: 0.9;
}

.article__hero-text {
  max-width: 38.125rem;
  color: var(--label-on-dark);
  font-size: var(--type-long-form) !important;
  line-height: var(--leading-long-form) !important;
  margin: 0;
}

.article__hero-meta {
  color: var(--label-on-dark);
  letter-spacing: 0.1em;
  align-self: end;
  gap: 0.5625rem;
  font-size: 0.5625rem;
  line-height: 1.4;
  display: grid;
}

.article__hero-meta-value {
  color: var(--bone);
  font-family: var(--font-display);
  letter-spacing: -0.04em;
  font-size: 1.0625rem;
}

.article__brief {
  margin-top: var(--surface-space);
  padding-block: clamp(3.25rem, 5vw, 4.625rem) clamp(1.625rem, 2.5vw, 2.125rem);
}

.article__brief-list {
  border-left: 2px solid var(--accent-on-light);
  gap: 0.9375rem;
  margin: 0;
  padding: 0 0 0 1.3125rem;
  list-style: none;
  display: grid;
}

.article__brief-item {
  max-width: var(--measure-reading); /* keep-unprefixed */
  width: 100%;
  color: var(--ink);
  font-size: var(--type-body-large);
  line-height: var(--leading-reading);
}

.article__main {
  padding-block: clamp(1.875rem, 3vw, 2.625rem) clamp(6rem, 9vw, 8.25rem);
}

.article__lede {
  font-family: var(--font-display);
  letter-spacing: -0.05em;
  max-width: 30ch !important;
  color: var(--ink) !important;
  margin: 0 0 clamp(2.375rem, 4vw, 3.5rem) !important;
  font-size: clamp(1.4375rem, 2.3vw, 2.0625rem) !important;
  line-height: 1.18 !important;
}

.article__body {
  gap: clamp(2.375rem, 4vw, 3.375rem);
  display: grid;
}

.article .article__section-title {
  max-width: 24ch;
  color: var(--ink);
  font-family: var(--font-display);
  letter-spacing: -0.05em;
  margin: 0 0 1.25rem;
  font-size: clamp(1.4375rem, 2.1vw, 1.9375rem);
  font-weight: 500;
  line-height: 1.1;
}

.article .article__text,
.article .article__lead-in,
.article .article__list-item {
  max-width: var(--measure-reading); /* keep-unprefixed */
  color: var(--ink);
  font-size: var(--type-body);
  line-height: var(--leading-reading);
}

.article__lead-strong {
  color: var(--ink);
  font-weight: 700;
}

.article__list {
  margin: 0;
  padding-left: 1.375rem;
  list-style: outside;
}

.article__list-item {
  padding-left: 0.25rem;
}

.article__list-item::marker {
  color: var(--accent-on-light);
}

.article .article__text--gap,
.article .article__lead-in--gap,
.article .article__list--gap {
  margin-top: 1.1875rem;
}

.article .article__list-item--gap {
  margin-top: 0.6875rem;
}

.article .article__note {
  max-width: var(--measure-reading); /* keep-unprefixed */
  border-top: 1px solid var(--line-dark);
  color: var(--ink);
  font-size: var(--type-body);
  line-height: var(--leading-reading);
  padding-top: 1.1875rem;
  font-style: italic;
  margin-top: 1.625rem;
}

.article__sources {
  padding-block: clamp(3.625rem, 6vw, 5.125rem);
}

.article__sources-list {
  counter-reset: source;
  border-top: 1px solid var(--line-dark);
  margin: 0;
  padding: 0;
  list-style: none;
}

.article__sources-item {
  border-bottom: 1px solid var(--line-dark);
  counter-increment: source;
  padding: 1.375rem 0 1.375rem 2.5rem;
  position: relative;
}

.article__sources-item:before {
  content: counter(source, decimal-leading-zero);
  color: var(--accent-on-light);
  letter-spacing: 0.08em;
  font-size: 0.6875rem;
  font-weight: 700;
  position: absolute;
  top: 1.5rem;
  left: 0;
}

/* Only the uncontested properties are carried here. font-size, line-height,
   max-width, color and margin fall through to .standard-section p exactly as
   in the original (same rule wins both sides by construction); transcribing
   them would resurrect values the incumbent never rendered. */
.article .article__source-label {
  font-family: var(--font-display);
  letter-spacing: -0.03em;
  font-weight: 500;
}

.article .article__source-link {
  color: var(--ink);
  text-underline-offset: 3px;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  -webkit-text-decoration-color: var(--accent-on-light);
  text-decoration-color: var(--accent-on-light);
}

.article__source-link:hover {
  color: var(--accent-on-light);
}

/* CR-12 twin. */
.article__source-link:focus-visible {
  color: var(--accent-on-light);
}

/* Single uncontested property; everything else falls through to
   .standard-section p as in the original (see source-label note). */
.article .article__source-meta {
  letter-spacing: 0.04em;
}

.article__source-note,
.article__onward-note {
  max-width: var(--measure-reading); /* keep-unprefixed */
  color: var(--label-on-light);
  font-size: var(--type-body);
  line-height: var(--leading-body);
}

.article__source-note {
  margin: 0.6875rem 0 0;
}

.article__faq {
  margin-top: var(--surface-space);
  padding-block: clamp(4.5rem, 7vw, 6.5rem);
}

.article__faq-list {
  border-top: 1px solid var(--line);
  gap: 0;
  margin: 0;
  display: grid;
}

.article__faq-item {
  border-bottom: 1px solid var(--line);
  padding: 1.625rem 0;
}

.article__faq-term {
  max-width: 46ch;
  color: var(--bone);
  font-family: var(--font-display);
  letter-spacing: -0.035em;
  font-size: clamp(1.0625rem, 1.6vw, 1.3125rem);
  font-weight: 500;
  line-height: 1.25;
}

.article__faq-detail {
  max-width: var(--measure-reading); /* keep-unprefixed */
  color: var(--label-on-dark);
  font-size: var(--type-body);
  line-height: var(--leading-reading);
  margin: 0.8125rem 0 0;
}

.article__onward {
  padding-block: clamp(3.625rem, 6vw, 5.125rem);
}

.article__onward-list {
  border-top: 1px solid var(--line-dark);
  margin: 0;
  padding: 0;
  list-style: none;
}

.article__onward-item {
  border-bottom: 1px solid var(--line-dark);
  grid-template-columns: 6rem minmax(0, 1fr);
  gap: 1rem;
  padding: 1.375rem 0;
  display: grid;
}

.article__onward-kind {
  color: var(--label-on-light);
  letter-spacing: 0.13em;
  text-transform: uppercase;
  font-size: 0.625rem;
  font-weight: 700;
}

.article__onward-link {
  max-width: var(--measure-reading); /* keep-unprefixed */
  color: var(--ink);
  font-family: var(--font-display);
  letter-spacing: -0.03em;
  text-underline-offset: 3px;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  -webkit-text-decoration-color: var(--accent-on-light);
  text-decoration-color: var(--accent-on-light);
  align-items: center;
  gap: 0.5rem;
  font-size: clamp(1rem, 1.5vw, 1.1875rem);
  font-weight: 500;
  line-height: 1.3;
  display: inline-flex;
}

.article__onward-link:hover {
  color: var(--accent-on-light);
}

/* CR-12 twin. */
.article__onward-link:focus-visible {
  color: var(--accent-on-light);
}

.article__onward-note {
  margin: 0.5625rem 0 0;
}

.article__close {
  margin: var(--surface-space) var(--surface-inset) 0;
  color: var(--bone);
  background: var(--ink);
  padding: clamp(4.5rem, 9vw, 9rem) var(--layout-gutter);
}

.article__close-kicker {
  color: var(--accent-on-dark);
  letter-spacing: var(--rpas-eyebrow-track);
  font-size: var(--rpas-eyebrow-size);
  font-weight: var(--rpas-eyebrow-weight);
}

.article__close-title {
  max-width: 55rem;
  font-family: var(--font-display);
  letter-spacing: var(--rpas-h2-section-track);
  margin: 1.25rem 0 0;
  font-size: var(--rpas-h2-section-size);
  font-weight: var(--rpas-h2-section-weight);
  line-height: var(--rpas-h2-section-leading);
}

@media (max-width: 45rem) {
  .article__close-title {
    font-size: var(--rpas-h2-section-size-mobile);
  }
}

.article__close-em {
  color: var(--accent-on-dark);
  font-style: normal;
}

.article__close-link {
  border: 0;
  display: inline-flex;
  align-items: center;
  gap: 0.625rem;
  font-size: 0.75rem;
  font-weight: 700;
  min-width: min(21.875rem, 100%);
  color: var(--ink);
  background: var(--bone);
  justify-content: space-between;
  margin-top: 2.375rem;
  padding: 0.9375rem 1.125rem;
}

@media (max-width: 65.625rem) {
  .article__hero {
    grid-template-columns: var(--layout-rail) minmax(0, 1fr);
  }

  .article__hero-meta {
    grid-column: 2;
    margin-top: 1.375rem;
  }

  .article__hero-title {
    font-size: clamp(2.8125rem, 6vw, 4.375rem);
  }
}

@media (max-width: 45rem) {
  .article__hero {
    margin-inline: var(--surface-inset);
    padding: 2.625rem var(--layout-gutter) 3.875rem;
    display: block;
  }

  .article__hero-main {
    margin-top: 3.4375rem;
  }

  .article__hero-title {
    font-size: clamp(2.625rem, 12vw, 3.5rem);
  }

  .article__hero-meta {
    margin-top: 1.75rem;
  }

  .article__close {
    margin-inline: var(--surface-inset);
    padding: 5.125rem var(--layout-gutter);
  }

  .article__lede {
    max-width: none !important;
  }

  .article .article__section-title {
    max-width: none;
  }

  .article__brief-list {
    padding-left: 1rem;
  }

  .article__faq-item {
    padding: 1.3125rem 0;
  }

  .article__sources-item {
    padding-left: 2rem;
  }

  .article__onward-item {
    grid-template-columns: 1fr;
    gap: 0.5rem;
  }
}

@media (prefers-reduced-motion: no-preference) {
  .article__hero-back {
    transition: color 0.18s, background 0.18s, transform 0.16s cubic-bezier(0.23, 1, 0.32, 1);
  }

  .article__hero-back:hover {
    color: var(--accent);
  }

  /* CR-12 twin. */
  .article__hero-back:focus-visible {
    color: var(--accent);
  }

  .article__hero-back:active {
    transform: scale(0.97);
  }

  .article__close-link {
    transition: color 0.18s, background 0.18s, transform 0.16s cubic-bezier(0.23, 1, 0.32, 1);
  }

  .article__close-link:hover {
    color: var(--bone);
    background: var(--accent);
  }

  /* CR-12 twin. */
  .article__close-link:focus-visible {
    color: var(--bone);
    background: var(--accent);
  }

  .article__close-link:active {
    transform: scale(0.97);
  }

  .article__source-link {
    transition: color 0.16s;
  }

  .article__onward-link {
    transition: color 0.16s;
  }
}

/* === styles/profile.css === */
/* Team-profile family layer (ticket 04, B4). BEM compounds throughout, no
   IDs, no functional-pseudo selectors, no bare element selectors.
   Maps the incumbent profile rules 1:1:
   profile-hero -> profile__hero, profile-identity -> profile__identity,
   profile-back -> profile__back, profile-affiliation -> profile__affiliation,
   `.profile-hero h1` -> profile__name, profile-role/-specialization/
   -qualification -> profile__role/__specialization/__qualification,
   profile-contacts -> profile__contacts, profile-linkedin ->
   profile__contact-link, profile-contact -> profile__contact-link--strong,
   profile-portrait(+img) -> profile__portrait(+__portrait-image),
   profile-background -> profile__background, profile-lead -> profile__lead,
   profile-works-on(-list) -> profile__works-on/__works-list (+ __works-item,
   __works-link, __works-text), profile-others -> profile__others,
   profile-other-list -> profile__other-list (+ __other-item, __other-link,
   __other-image, __other-name, __other-affiliation), profile-other-role ->
   profile__other-role.

   SCOPING. Rules whose incumbent counterpart was a descendant at (0,1,1), or
   which must outrank the frozen `.standard-page p` / `.standard-section p`
   descendants, are scoped through the `.profile` wrapper on <main>:
   `.profile .profile__lead` is (0,2,0) and beats `.standard-section p`
   (0,1,1) legitimately. No !important is used as the mechanism anywhere in
   this layer, including where the incumbent needed it — the incumbent's
   `!important` on profile-role/-specialization/-qualification margins and on
   profile-lead's colour/size/leading exists only because those rules sat at
   (0,1,0); scoped, they win on ordinary specificity.

   DECLARATIONS THAT LOST THEIR TIES IN THE ORIGINAL ARE NOT TRANSCRIBED.
   Measured with CDP CSS.getMatchedStylesForNode against the read-only
   original, not inferred from the declaration text. Scoping a loser would
   make it WIN and resurrect a value the incumbent never rendered — the exact
   inversion of the B3a round-1 defect. Omitted for that reason:
     .profile-role        font-size clamp(19px,2vw,25px)
     .profile-specialization  font-size clamp(15px,1.6vw,19px)
     .profile-qualification   font-size 13px, line-height 1.6
     .profile-works-on-list p font-size 15px, line-height 1.62
   all four lost to the grouped `.standard-page p { font-size: var(--type-body);
   line-height: var(--leading-body) }` at (0,1,1), and still fall through to
   it here. `.profile-linkedin`'s margin-top:26px also lost, to
   `.profile-contacts .profile-linkedin { margin-top: 0 }`; since every
   contact link in all eight profiles sits inside the contacts row, the 0 is
   declared directly rather than carrying a second rule for it.

   px values are transcribed as rem (px/16): 2px=.125rem 4px=.25rem
   5px=.3125rem 7px=.4375rem 8px=.5rem 10px=.625rem 11px=.6875rem
   12px=.75rem 15px=.9375rem 16px=1rem 17px=1.0625rem 19px=1.1875rem
   20px=1.25rem 22px=1.375rem 24px=1.5rem 26px=1.625rem 30px=1.875rem
   34px=2.125rem 40px=2.5rem 46px=2.875rem 48px=3rem 72px=4.5rem 80px=5rem
   96px=6rem 240px=15rem 280px=17.5rem 560px=35rem 640px=40rem; 1px rules
   stay px; ch/em/%/vw/fr untouched.

   Custom properties referenced here (--ink-soft, --accent*, --label-*,
   --font-display, --layout-gutter) remain defined by the frozen incumbent
   layer, so computed values are unchanged. This layer declares none.
   Shared classes kept as-is: site-link, lucide*, reveal-block,
   standard-section*, section-rail, page chrome.
   Rule-less structural hooks: profile__works-on, profile__name-th (no
   profile carries a Thai name today; the incumbent rule is not transcribed
   because no element would receive it). */

/* ---- hero ------------------------------------------------------------- */

.profile__hero {
  padding: clamp(2.875rem, 6vw, 6rem) var(--layout-gutter) clamp(2.5rem, 5vw, 5rem);
  grid-template-columns: minmax(0, 1fr) minmax(17.5rem, 0.82fr);
  align-items: center;
  gap: clamp(1.875rem, 5vw, 4.5rem);
  display: grid;
}

.profile__identity {
  max-width: 40rem;
}

.profile__back {
  color: var(--label-on-light);
  align-items: center;
  gap: 0.4375rem;
  font-size: 0.6875rem;
  font-weight: 700;
  display: inline-flex;
}

.profile__back:hover {
  color: var(--accent-on-light);
}

/* CR-12 twin. */
.profile__back:focus-visible {
  color: var(--accent-on-light);
}

.profile__affiliation {
  color: var(--accent-on-light);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  margin-top: 2.125rem;
  font-size: 0.6875rem;
  font-weight: 700;
  display: block;
}

/* Scoped: the incumbent styled this as `.profile-hero h1` (0,1,1). */
.profile .profile__name {
  max-width: 12ch;
  font-family: var(--font-display);
  letter-spacing: -0.065em;
  margin: 0.75rem 0 0;
  font-size: clamp(2.5rem, 5.4vw, 4.625rem);
  font-weight: 600;
  line-height: 1.02;
}

/* Scoped: <p> in the hero, so `.standard-page p` (0,1,1) is the competitor.
   font-size is deliberately absent — see the header note. */
.profile .profile__role {
  font-family: var(--font-display);
  letter-spacing: -0.04em;
  font-weight: 500;
  margin: 1.375rem 0 0;
}

.profile .profile__specialization {
  color: var(--label-on-light);
  margin: 0.25rem 0 0;
}

.profile .profile__qualification {
  max-width: 35rem;
  color: var(--label-on-light);
  margin: 1.25rem 0 0;
}

.profile__contacts {
  flex-wrap: wrap;
  gap: 0.625rem;
  margin-top: 1.625rem;
  display: flex;
}

.profile__contact-link {
  border: 1px solid;
  align-items: center;
  gap: 0.5rem;
  margin-top: 0;
  padding: 0.625rem 0.9375rem;
  display: inline-flex;
  font-size: 0.75rem;
  font-weight: 700;
}

@supports (color: color-mix(in lab, red, red)) {
  .profile__contact-link {
    border: 1px solid color-mix(in srgb, currentColor 24%, transparent);
  }
}

.profile__contact-link:hover {
  color: var(--bone);
  background: var(--ink);
}

/* CR-12 twin. */
.profile__contact-link:focus-visible {
  color: var(--bone);
  background: var(--ink);
}

/* `.profile-contact` sat after `.profile-linkedin` at equal specificity, so
   600 beat the base 700 on the elements carrying both. */
.profile__contact-link--strong {
  font-weight: 600;
}

/* Scoped: the incumbent styled this as `.profile-portrait img` (0,1,1).
   profile__portrait itself carries no base rule — the incumbent styled it
   only through its image and the 720px order swap below. */
.profile .profile__portrait-image {
  aspect-ratio: 720/827;
  object-fit: cover;
  width: 100%;
  height: auto;
}

/* ---- background section ----------------------------------------------- */

/* `.profile-background .standard-section-content > * + *` gave every direct
   child after the first a 22px top margin. Reproduced as an adjacent-sibling
   modifier on the children themselves, so this layer never reaches into
   `.standard-section-content`, which belongs to the unmigrated shared shell. */
.profile__background-block + .profile__background-block {
  margin-top: 1.375rem;
}

/* Scoped: <p> inside a standard-section, so both `.standard-section p` and
   `.standard-page p` (0,1,1) compete. max-width and margin are deliberately
   absent: they fell through to `.standard-section p` in the original and
   still do. */
.profile .profile__lead {
  font-family: var(--font-display);
  letter-spacing: -0.045em;
  color: var(--ink);
  font-size: clamp(1.3125rem, 2.2vw, 1.8125rem);
  line-height: 1.26;
}

/* ---- "the work this connects to" list ---------------------------------- */

.profile__works-list {
  gap: 1.375rem;
  max-width: 62ch;
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.profile .profile__works-item {
  border-top: 1px solid;
  gap: 0.3125rem;
  padding-top: 1rem;
  display: grid;
}

@supports (color: color-mix(in lab, red, red)) {
  .profile .profile__works-item {
    border-top: 1px solid color-mix(in srgb, currentColor 16%, transparent);
  }
}

.profile .profile__works-link {
  font-family: var(--font-display);
  letter-spacing: -0.035em;
  color: inherit;
  align-items: center;
  gap: 0.4375rem;
  font-size: 1.1875rem;
  font-weight: 600;
  line-height: 1.25;
  text-decoration: none;
  display: inline-flex;
}

.profile .profile__works-link:hover {
  color: var(--accent);
}

/* CR-12 twin (same scope as the hover). */
.profile .profile__works-link:focus-visible {
  color: var(--accent);
}

/* font-size and line-height are deliberately absent — see the header note. */
.profile .profile__works-text {
  color: var(--ink-soft);
  margin: 0;
}

/* ---- team-and-partners grid -------------------------------------------- */

.profile__other-list {
  grid-template-rows: auto;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1.625rem 1.375rem;
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
}

.profile .profile__other-item {
  grid-row: span 5;
  grid-template-rows: subgrid;
  display: grid;
}

.profile .profile__other-link {
  grid-row: span 5;
  grid-template-rows: subgrid;
  align-content: start;
  gap: 0.125rem;
  display: grid;
}

.profile .profile__other-image {
  aspect-ratio: 720/827;
  object-fit: cover;
  background: currentColor;
  width: 100%;
  height: auto;
  margin-bottom: 0.75rem;
}

@supports (color: color-mix(in lab, red, red)) {
  .profile .profile__other-image {
    background: color-mix(in srgb, currentColor 8%, transparent);
  }
}

.profile .profile__other-name {
  font-family: var(--font-display);
  letter-spacing: -0.04em;
  font-size: 1.0625rem;
  font-weight: 600;
  line-height: 1.2;
}

/* `.profile-other-list a > span:first-of-type` — the affiliation span, now
   carrying its own class so no positional pseudo is needed. */
.profile .profile__other-affiliation {
  color: var(--accent-on-dark);
  letter-spacing: 0.09em;
  text-transform: uppercase;
  font-size: 0.625rem;
  font-weight: 700;
}

.profile__other-role {
  color: var(--label-on-dark);
  font-size: 0.75rem;
}

/* The incumbent's `.profile-others .profile-other-list` (0,2,0) overrode the
   base grid; kept as the same two-compound shape, both sharing the `profile`
   block root. */
.profile__others .profile__other-list {
  grid-column: 2;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-top: 2.5rem;
}

@media (prefers-reduced-motion: no-preference) {
  .profile .profile__other-image {
    transition: opacity 0.2s;
  }

  .profile__other-link:hover .profile__other-image {
    opacity: 0.82;
  }

  /* CR-12 twins (same shapes as the hovers). */
  .profile__other-link:focus-visible .profile__other-image {
    opacity: 0.82;
  }

  .profile__other-link:hover .profile__other-name {
    color: var(--accent-on-dark);
  }

  .profile__other-link:focus-visible .profile__other-name {
    color: var(--accent-on-dark);
  }
}

/* ---- breakpoints ------------------------------------------------------- */

@media (max-width: 1050px) {
  .profile__other-list,
  .profile__others .profile__other-list {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .profile__hero {
    grid-template-columns: minmax(0, 1fr) minmax(15rem, 0.72fr);
  }
}

/* M-2: 'rest of the team' holds two columns from 721px to 900px (Director
   ruling 26 Sep 2026). Three tracks inside that band leave a 98px item at 721px
   and a 114px item at 768px, and the measured result is two overlapping name
   ranges at 721px and one at 768px — the names collide, they do not merely
   clip. Below 721px the 720px rule below is already two columns, so the band
   ends where that rule starts and nothing overlaps. */
@media (min-width: 721px) and (max-width: 900px) {
  .profile__other-list,
  .profile__others .profile__other-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 720px) {
  .profile__others .profile__other-list {
    grid-column: 1;
  }

  .profile__other-list,
  .profile__others .profile__other-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.375rem 1rem;
  }

  .profile .profile__other-name {
    font-size: 0.9375rem;
  }

  .profile__hero {
    grid-template-columns: 1fr;
    gap: 1.625rem;
    padding-block: 2.125rem 2.5rem;
  }

  .profile__portrait {
    order: -1;
  }

  .profile .profile__name {
    max-width: none;
    font-size: clamp(2.125rem, 10vw, 3rem);
  }
}

/* === styles/case.css === */
/* Case-detail and case/insight index family layer (ticket 04, B2, builder
   81d2bc2b). Reserved cascade slot after profile.css and before preview.css;
   the build registration in build.mjs is the integration owner's, the
   contents below are this builder's.

   WHAT THIS LAYER REPLACES. The migrated regions renamed every incumbent
   `.case-*` class to `case__*`, so every frozen rule keyed on one of those
   stopped matching and is re-expressed here. Two incumbent classes are
   deliberately KEPT on <main> — `subpage-frame` and `case-page` — exactly as
   the article family kept `standard-page`. They are page chrome: `.case-page`
   declares --case-ink / --case-bone / --case-header-height, which the whole
   family consumes, and re-declaring an incumbent-owned custom property in a
   new layer is the F1 defect. Keeping the class lets those tokens, and the
   frozen rules that are still correct (`.case-page h2 em`, `.case-page p`,
   `.site section[id]`, `h1..h6`), keep rendering untouched.

   SCOPING, and why it is not optional here. The frozen layer carries
   `.case-page p` at (0,1,1) inside a 14-selector list, plus two later
   (0,2,1) rules — `.case-page .case-boundary-list p` and friends. A flat
   `.case__text` at (0,1,0) loses to all of them; that is the exact cascade
   that rendered 55 of 248 article nodes wrong in B3a round 1. Every rule
   below that competes with one of those is therefore scoped through the
   block root — `.case .case__text` at (0,2,0) — which the extended C10
   contract permits because both compounds share the `case` block root. No
   !important anywhere in this file. Rules with no incumbent competitor stay
   flat single classes, because wrapping those would be specificity for its
   own sake.

   PROPERTIES THAT LOST THEIR TIES ARE NOT TRANSCRIBED. Measured, not
   assumed: with the renamed rules deleted from the live original, each
   element's computed style was diffed against the untouched page, so this
   layer supplies exactly the properties those rules actually WON. The
   clearest instance is the boundary list. `.case-boundary-list p` declares
   `font-size:15px; line-height:1.5`, and the original never renders either —
   `.case-page .case-boundary-list p` at (0,2,1) overrides both with
   --type-long-form / --leading-long-form. Transcribing 15px into a scoped
   rule here would have made a value win that the incumbent never showed.
   The same applies to its max-width, which comes from --measure-reading and
   not from the 15px rule's own box.

   LOAD-BEARING TOKEN NOTE, same trap as article.css:48. The four
   `var(--measure-reading)` references below (marked `keep-unprefixed`) must
   stay unprefixed. They resolve to the incumbent's 56ch, narrowing to 38ch
   under 720px, which is what the original renders and what this batch was
   measured against. Prefixing them --rpas-* (or "consolidating" them to a
   65-75ch readability convention) silently widens every case page and no
   gate in this project can see it.
   (Was five: the hero-body reference was deliberately replaced by an
   explicit 60ch measure under CR-06, 22 September 2026, Teerasak approved —
   marker removed with the token, C12 count 5 -> 4.)

   px values are transcribed as authored; clamp()/var()/ch/vw/svh are carried
   across verbatim so the responsive behaviour is the incumbent's own rather
   than a re-derivation. */

/* ---- page frame -------------------------------------------------------
   `.subpage-frame > .case-introduction|approach|boundaries|cta` and
   `.subpage-frame > .case-next` supplied the v2 shell insets; renaming the
   child class stopped them matching, so they are restated here on the same
   direct-child shape. The hero keeps `subpage-hero`, so its own inset rule
   still matches and is deliberately absent below. */
.case .case__introduction,
.case .case__approach,
.case .case__boundaries,
.case .case__cta {
  margin-inline: var(--surface-inset);
  margin-top: var(--surface-space);
}

.case .case__next {
  width: calc(100% - (var(--surface-inset) * 2));
  margin: var(--surface-space) var(--surface-inset);
}

/* ---- header affordances ----------------------------------------------
   `.case-brand-button, .case-back { color:inherit; background:0 0; border:0 }`
   is the button reset both affordances shared; without it the UA border
   returns as `solid`, which is what the first measured pass caught. */
.case__brand-button,
.case__back {
  color: inherit;
  background: 0 0;
  border: 0;
}

.case__brand-button {
  padding: 0;
}

/* colour is `.standard-page-nav .case-back`'s var(--bone), which outranked
   the shared `color:inherit` above. */
.case .case__back {
  align-items: center;
  gap: 8px;
  padding: 8px 0;
  font-size: 11px;
  font-weight: 700;
  display: inline-flex;
  color: var(--bone);
  white-space: nowrap;
}

/* ---- hero -------------------------------------------------------------
   `.case-hero` declared min-height/position/overflow; `.case-page .case-hero`
   then made it a flex column with its own padding, and
   `.subpage-frame.case-page .case-hero` set the final min-height. Only the
   surviving values are carried. */
.case .case__hero {
  min-height: calc(100svh - var(--case-header-height) - (var(--page-frame) * 2));
  color: var(--case-bone);
  background: var(--case-ink);
  padding: clamp(26px, 4vh, 44px) var(--layout-gutter) clamp(76px, 9vh, 108px);
  flex-direction: column;
  justify-content: space-between;
  gap: clamp(28px, 4vh, 64px);
  display: flex;
  position: relative;
  overflow: hidden;
}

.case__hero-shade {
  width: 100%;
  height: 100%;
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, #080808c4, #08080857 56%, #08080824),
    linear-gradient(#0000 52%, #080808b3);
}

/* position:static/inset:auto come from `.case-page .case-hero-meta`, which
   overrode the absolute placement the base rule declared; the base rule's
   top/left/right therefore never render and are not transcribed. */
.case .case__hero-meta {
  z-index: 1;
  color: var(--label-on-dark);
  letter-spacing: .14em;
  background: #080808e0;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 10px;
  font-size: 10px;
  font-weight: 700;
  display: flex;
  position: static;
  inset: auto;
}

.case .case__hero-copy {
  z-index: 1;
  max-width: min(750px, 70vw);
  position: static;
  inset: auto;
}

.case__hero-kicker {
  color: var(--accent-on-dark);
  letter-spacing: var(--rpas-eyebrow-track);
  background: #080808e0;
  padding: 6px 8px;
  font-size: var(--rpas-eyebrow-size);
  font-weight: var(--rpas-eyebrow-weight);
  display: inline-flex;
}

.case .case__hero-title {
  max-width: 900px;
  font-family: var(--font-display);
  font-size: var(--display-1);
  letter-spacing: var(--display-1-track);
  line-height: var(--display-1-leading);
  margin: 18px 0 23px;
  font-weight: var(--rpas-h1-display-weight);
}

/* Both hero paragraphs were governed by `.case-page .case-hero-copy p` at
   (0,2,1), which beat BOTH `.case-hero-copy p`'s 510px/16px/1.6 AND
   `.case-page .case-hero-context`'s 52ch/--type-body/--leading-body at
   (0,2,0). Measured: the context paragraph renders 19px/31.92px/739.48px,
   not the 16px/25.6px/52ch its own rule declares. Grouping the three
   contested properties keeps that single winner in one place instead of
   resurrecting two sets of losers.
   CR-06 (22 September 2026, Teerasak approved): the hero body no longer
   reads the incumbent token — it carries an explicit 60ch measure at
   17px-equivalent/1.7. The keep-unprefixed marker that was on the
   max-width line below was removed WITH the token reference (C12 count
   5 -> 4, recorded in scripts/check.mjs), not left behind on a dead line. */
.case .case__hero-text,
.case .case__hero-context {
  max-width: 60ch;
  font-size: 1.0625rem;
  line-height: 1.7;
}

.case .case__hero-text {
  color: #f1efeacc;
  margin: 0;
}

/* Standfirst contrast (measured 26 Sep 2026, 3 case pages x 390/1280/1920):
   `--accent-on-dark` put the standfirst at 1.46-5.21:1 local contrast against
   the ink hero. `--bone` is the token this file already uses for hero-on-dark
   text and measures 4.77-17.03:1. No scrim was needed to reach that.
   Scope is this one element: the blue kicker/eyebrow families are a separate,
   still-unaudited finding and are deliberately NOT claimed here. */
.case .case__hero-context {
  color: var(--bone);
  margin: 0 0 14px;
  font-weight: 500;
}

/* The scroll cue is the one hero child `.case-page .case-hero-meta,
   .case-page .case-hero-copy` does NOT cover, so unlike the meta strip and
   the copy block it stays absolutely positioned. `right` comes from
   `.case-hero-meta, .case-hero-scroll { right: var(--layout-gutter) }`,
   which overrode the base rule's max(4.2vw, 25px). */
.case__hero-scroll {
  z-index: 1;
  color: var(--label-on-dark);
  letter-spacing: .12em;
  background: #080808e0;
  align-items: center;
  gap: 7px;
  padding: 6px 8px;
  font-size: 9px;
  font-weight: 700;
  display: flex;
  position: absolute;
  bottom: 28px;
  right: var(--layout-gutter);
}

/* ---- section labels --------------------------------------------------- */
/* `align-items: flex-start`, not `center` (measured 26 Sep 2026). The label is
   a grid item that stretches to its row's height, so flex-centering inside it
   pushed the `02`-style marker vertically off the first line of the heading it
   labels. The marker never wrapped — it was misaligned. Top-aligning keeps it
   on the first line without touching the track. */
.case__label {
  color: var(--label-on-light);
  letter-spacing: .13em;
  align-items: flex-start;
  gap: 9px;
  font-size: 10px;
  font-weight: 700;
  display: flex;
}

.case__label--light {
  color: var(--label-on-dark);
}

.case .case__label-mark {
  color: var(--accent-on-light);
}

.case .case__label--light .case__label-mark {
  color: var(--accent-on-dark);
}

/* ---- outcome ---------------------------------------------------------- */
.case__outcome {
  color: var(--case-bone, var(--bone));
  background: var(--ink-soft);
  grid-template-columns: minmax(170px, .33fr) minmax(0, 1.67fr);
  gap: clamp(24px, 4vw, 45px);
  padding: clamp(48px, 6vw, 76px) max(6vw, 42px);
  display: grid;
}

.case .case__outcome-value {
  max-width: 22ch;
  font-family: var(--font-display);
  letter-spacing: -.06em;
  color: var(--accent-on-dark);
  margin: 0;
  font-size: clamp(28px, 3.6vw, 52px);
  font-weight: 500;
  line-height: var(--rpas-display-1-leading);
}

.case .case__outcome-note {
  max-width: 56ch;
  color: var(--label-on-dark);
  font-size: var(--type-body);
  line-height: var(--leading-body);
  margin: clamp(18px, 2vw, 26px) 0 0;
}

/* ---- introduction -----------------------------------------------------
   A later incumbent block re-cut all four regions onto the shared layout
   tokens — `padding-inline: var(--layout-gutter)`, `grid-template-columns:
   var(--layout-rail) …`, `column-gap: var(--layout-gap)` — overriding the
   base rules' max(6vw,42px) / minmax(170px,.33fr) / 45px. Measured at 1280
   the original renders 89.6px inline padding and a 38.4px column gap, not
   the 76.8px/45px the base rules alone would give. row-gap stays 45px,
   because only column-gap was overridden. */
.case__introduction {
  background: var(--case-bone);
  grid-template-columns: var(--layout-rail) minmax(0, 1.1fr) minmax(260px, .5fr);
  gap: 45px;
  column-gap: var(--layout-gap);
  padding-block: 108px;
  padding-inline: var(--layout-gutter);
  display: grid;
}

/* Section 02 has no aside, so it drops the third column — but keeps the
   shared rail so its body lines up with 01 and 03–05. The original's
   `minmax(170px, .33fr)` sat 4px off that rail, and at (0,2,0) it also
   outranked the 720px single-column rule, leaving 02 as the one section that
   never stacked on a phone (a 132px text column at 390). The collapse is
   restated at matching specificity in the 720px block below. */
.case .case__introduction--assumption {
  grid-template-columns: var(--layout-rail) minmax(0, 1fr);
}

.case__introduction-body {
  max-width: 610px;
}

/* ---- shared section title -------------------------------------------- */
.case .case__title {
  /* CR-06 display tracking. -0.075em measured a 0.1466em minimum word gap on
     all six case routes at 390 and 1280, against 0.1816em on the case hero H1
     which already carries the CR-06-approved -0.04em — 81% of a value Teerasak
     has already ruled on. --rpas-h2-section-track keeps -0.075em for its other
     consumer (.article__close-title), which is unmeasured, so the change is
     scoped to the case H2s here rather than retargeting the shared token.
     Top-level, so it applies at every width. */
  letter-spacing: var(--rpas-display-1-track);
  max-width: 820px;
  margin: 35px 0 0;
  font-family: var(--rpas-font-display);
  font-size: var(--rpas-h2-section-size);
  font-weight: var(--rpas-h2-section-weight);
  line-height: var(--rpas-h2-section-leading);
}

.case .case__title--flush {
  margin-top: 0;
}

.case .case__title--wide {
  max-width: 900px;
}

/* `.case-page h2 em` still matches (the class is kept on <main>) and supplies
   accent-on-light plus font-style:normal, so the light variant needs nothing
   here. Only the dark-region override is restated. */
.case .case__title-em--on-dark {
  color: var(--accent-on-dark);
}

/* Body copy in the introduction. `.case-introduction > div > p` declared
   color/max-width/margin/font-size/line-height; the later (0,2,1) rule
   overrode font-size, line-height and max-width, so 620px/17px/1.6 never
   rendered and only colour and margin survive from the base rule. */
.case .case__text {
  color: #0b0b0bad;
  max-width: var(--measure-reading); /* keep-unprefixed */
  margin: 32px 0 0;
  font-size: var(--type-long-form);
  line-height: var(--leading-long-form);
}

/* ---- approach --------------------------------------------------------- */
.case__approach {
  color: var(--case-bone);
  background: var(--case-ink);
  grid-template-columns: var(--layout-rail) minmax(0, 1.67fr);
  gap: 45px;
  column-gap: var(--layout-gap);
  padding-block: 108px;
  padding-inline: var(--layout-gutter);
  display: grid;
}

.case__approach-content {
  max-width: 690px;
}

.case__decision {
  max-width: 720px;
  margin: 0 0 44px;
}

/* `.case-decision-question` at (0,1,0) LOST font-size and line-height to
   `.case-page p` at (0,1,1) — the original renders 16px/25.6px, never the
   clamp(20px,2.1vw,27px)/1.24 this rule declares. letter-spacing, colour,
   margin, family and weight are uncontested and are the only things carried.
   `.case-page` is still on <main>, so the two stripped properties keep
   falling through to exactly the rule that won them in the original. */
.case .case__decision-question {
  letter-spacing: -.045em;
  color: var(--case-bone);
  margin: 0;
  font-family: var(--rpas-font-display);
  font-weight: 500;
}

/* was `.case-decision p + p`; the sibling combinator is replaced by an
   explicit class, so no rule here depends on source order. */
.case .case__decision-text {
  max-width: 640px;
  color: var(--label-on-dark);
  margin: 18px 0 0;
  font-size: 16px;
  line-height: var(--rpas-body-leading);
}

/* ---- steps ------------------------------------------------------------ */
.case__steps {
  border-top: 1px solid #f1efea29;
  margin-top: 65px;
}

.case__step {
  border-bottom: 1px solid #f1efea29;
  grid-template-columns: 60px minmax(0, 1fr);
  gap: 18px;
  padding: 24px 0;
  display: grid;
}

.case .case__step-index {
  color: var(--accent-on-dark);
  font-size: 11px;
  font-weight: 700;
}

.case .case__step-title {
  letter-spacing: -.06em;
  margin: 0;
  font-family: var(--rpas-font-display);
  font-size: clamp(22px, 2vw, 28px);
  font-weight: 500;
  line-height: 1.6;
}

/* `.case-step-list p` declared max-width 620px / 14px / 1.58; the later
   (0,2,1) rule overrode font-size, line-height and max-width. Only colour
   and margin are the base rule's own surviving contribution. */
.case .case__step-text {
  max-width: var(--measure-reading); /* keep-unprefixed */
  color: var(--label-on-dark);
  margin: 8px 0 0;
  font-size: var(--type-long-form);
  line-height: var(--leading-long-form);
}

/* ---- boundaries ------------------------------------------------------- */
.case__boundaries {
  color: var(--case-bone);
  background: var(--ink-soft, #1a1a1b);
  grid-template-columns: var(--layout-rail) minmax(0, 1.67fr);
  gap: 45px;
  column-gap: var(--layout-gap);
  padding-block: 108px;
  padding-inline: var(--layout-gutter);
  display: grid;
}

.case__owner-split {
  border-top: 1px solid var(--line);
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(24px, 3vw, 52px);
  margin-top: clamp(38px, 4.5vw, 62px);
  padding-top: clamp(24px, 2.6vw, 34px);
  display: grid;
}

.case .case__owner-title {
  font-family: var(--font-display);
  letter-spacing: -.04em;
  color: var(--accent-on-dark);
  margin: 0 0 12px;
  font-size: clamp(16px, 1.5vw, 20px);
  font-weight: 500;
}

.case .case__owner-text {
  max-width: 44ch;
  color: var(--label-on-dark);
  font-size: var(--type-body);
  line-height: var(--leading-body);
  margin: 0;
}

.case__transfers {
  margin-top: clamp(34px, 4vw, 56px);
}

.case .case__transfers-title {
  letter-spacing: var(--rpas-eyebrow-track);
  text-transform: uppercase;
  color: var(--label-on-dark);
  margin: 0 0 18px;
  font-size: var(--rpas-eyebrow-size);
  font-weight: var(--rpas-eyebrow-weight);
}

.case__transfers-list {
  border-top: 1px solid var(--line);
  margin: 0;
  padding: 0;
  list-style: none;
}

.case .case__transfers-item {
  border-bottom: 1px solid var(--line);
  color: var(--bone);
  font-size: var(--type-body);
  line-height: var(--leading-body);
  max-width: var(--measure-reading); /* keep-unprefixed */
  margin: 0;
  padding: 16px 0 16px 30px;
  position: relative;
}

.case .case__transfers-item:before {
  content: "";
  background: var(--accent-on-dark);
  width: 12px;
  height: 1px;
  position: absolute;
  top: 27px;
  left: 4px;
}

.case__boundary-list {
  border-top: 1px solid #f1efea29;
  margin-top: 62px;
}

/* `.case-boundary-list p` declared font-size:15px and line-height:1.5 and
   the original renders neither — see the header note. Its own max-width came
   from a separate --measure-reading rule, not from the 15px rule. */
.case .case__boundary {
  color: var(--label-on-dark);
  border-bottom: 1px solid #f1efea29;
  grid-template-columns: 50px minmax(0, 1fr);
  gap: 18px;
  margin: 0;
  padding: 20px 0;
  max-width: var(--measure-reading); /* keep-unprefixed */
  font-size: var(--type-long-form);
  line-height: var(--leading-long-form);
  display: grid;
}

.case .case__boundary-index {
  color: var(--accent-on-dark);
  font-size: 10px;
  font-weight: 700;
}

/* ---- cta -------------------------------------------------------------- */
.case__cta {
  color: var(--case-bone);
  background: var(--case-ink);
  padding-block: 126px;
  padding-inline: var(--layout-gutter);
}

.case__cta-kicker {
  color: var(--accent-on-dark);
  letter-spacing: .14em;
  background: #080808e0;
  padding: 6px 8px;
  font-size: 10px;
  font-weight: 700;
  display: inline-flex;
}

/* was `.case-cta :is(button,a)` — the functional-pseudo descendant idiom the
   ticket forbids carrying across, because C10 cannot see inside the
   parentheses. The target gets its own block element class instead. */
.case .case__cta-link {
  border: 0;
  border-radius: var(--radius-m);
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  font-weight: 700;
  display: inline-flex;
  min-width: min(390px, 100%);
  color: var(--case-ink);
  background: var(--case-bone);
  margin-top: 43px;
  padding: 15px 18px;
  font-size: 12px;
}

/* ---- next ------------------------------------------------------------- */
.case .case__next {
  border: 0;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  font-weight: 700;
  display: inline-flex;
  color: var(--case-bone);
  background: var(--accent-on-light);
  text-align: left;
  padding: 26px max(6vw, 42px);
}

.case .case__next-label {
  letter-spacing: .12em;
  width: 140px;
  font-size: 9px;
}

.case .case__next-title {
  letter-spacing: -.065em;
  flex: 1;
  font-family: Sora, sans-serif;
  font-size: clamp(22px, 3vw, 42px);
  font-weight: 500;
}

/* ---- responsive --------------------------------------------------------
   ORDER MATTERS AND IS THE INCUMBENT'S, NOT A TIDIED VERSION OF IT. Several
   of these blocks overlap (a 620px-wide viewport matches the 820, 760, 720
   and 620 queries at once) and the incumbent resolves the overlaps purely by
   source order, because every competing rule sits at the same specificity.
   Its 720px block is authored AFTER its 620px block, so at <=620 the 720
   values win: padding-block is 68px and not the 620 block's 72px, and the
   step/boundary lists sit at 38px and not 42px. Sorting these blocks by
   breakpoint — the obvious tidy-up — silently flips all four values. */

/* The incumbent's 820px block collapses these three regions to a single
   column and NEVER RENDERS: the later unconditional layout rules
   (`grid-template-columns: var(--layout-rail) …`) are authored after it at
   equal specificity, so they win at every width, and the real collapse is
   the 720px block far below. Measured at 820px the original still shows
   `162px 130.531px 260px`. Transcribing the 820 block would have collapsed
   the whole 721-820 band a hundred pixels early. */

@media (max-width: 760px) {
  .case__owner-split {
    grid-template-columns: 1fr;
    gap: 26px;
  }
}

@media (max-width: 720px) {
  .case__outcome {
    grid-template-columns: 1fr;
    padding-left: 23px;
    padding-right: 23px;
  }

  .case .case__hero {
    padding-bottom: clamp(64px, 12vh, 92px);
  }

  .case .case__hero-meta {
    grid-template-columns: 1fr;
    gap: 4px;
    display: grid;
  }
}

/* `.case-hero h1`'s mid-range size. The base rule's var(--display-1) renders
   only above 1050px; between 721 and 1050 this clamp is what the original
   shows (60px at a 1000px viewport, measured). */
@media (min-width: 721px) and (max-width: 1050px) {
  .case .case__hero-title {
    font-size: clamp(48px, 6vw, 72px);
  }
}

@media (max-width: 620px) {
  .case .case__back {
    font-size: 10px;
  }

  .case .case__hero-meta {
    font-size: 7px;
  }

  /* `.case-hero-copy { max-width: none }` lives here in the incumbent and
     never renders: `.case-page .case-hero-copy` at (0,2,0) keeps the
     min(750px,70vw) box (420px at 600px wide, measured). Transcribing the
     `none` would have widened the hero on every small screen. */

  /* two `.case-hero h1` rules sit in this range; the later one wins, so the
     clamp(48px,14.4vw,64px) written just above it never renders. */
  .case .case__hero-title {
    font-size: clamp(42px, 12.4vw, 56px);
    line-height: .92;
  }

  .case__hero-scroll {
    display: none;
  }

  .case__introduction,
  .case__approach,
  .case__boundaries,
  .case__cta {
    padding: 72px 23px;
  }

  .case .case__title {
    font-size: var(--rpas-h2-section-size-mobile);
  }

  .case__steps {
    margin-top: 42px;
  }

  .case__step {
    grid-template-columns: 36px minmax(0, 1fr);
  }

  .case__boundary-list {
    margin-top: 42px;
  }

  .case .case__next {
    padding: 21px 23px;
  }

  .case .case__next-label {
    display: none;
  }
}

/* The incumbent's LATER 720px block — deliberately after the 620px one, see
   the note at the top of this section. */
@media (max-width: 720px) {
  .case__introduction,
  .case .case__introduction--assumption,
  .case__approach,
  .case__boundaries {
    grid-template-columns: 1fr;
    gap: 0;
  }

  .case__introduction,
  .case__approach,
  .case__boundaries,
  .case__cta {
    padding-block: 68px;
    padding-inline: var(--layout-gutter);
  }

  .case__steps,
  .case__boundary-list {
    margin-top: 38px;
  }

  /* `border-left: 0` is not cosmetic: the frozen Tailwind preflight sets
     `border-style: solid` on every element with zero width, so dropping this
     reset leaves the computed style at `solid` where the original renders
     `none`. Measured at 600px and 390px. */
  .case__hero-meta-label {
    border-left: 0;
    padding-left: 0;
  }

  .case .case__back {
    font-size: 10px;
  }

  .case .case__back-arrow {
    display: none;
  }
}

@media (prefers-reduced-motion: no-preference) {
  .case .case__cta-link,
  .case .case__next {
    transition: transform .16s cubic-bezier(.23, 1, .32, 1), background .18s, color .18s;
  }

  .case .case__cta-link:hover {
    color: var(--case-bone);
    background: var(--accent, #e8462c);
  }

  /* CR-12 twin (same scope as the hover). */
  .case .case__cta-link:focus-visible {
    color: var(--case-bone);
    background: var(--accent, #e8462c);
  }

  .case .case__next:hover {
    background: var(--case-bone);
    color: var(--case-ink);
  }

  /* CR-12 twin (same scope as the hover). */
  .case .case__next:focus-visible {
    background: var(--case-bone);
    color: var(--case-ink);
  }

  .case .case__cta-link:active,
  .case .case__next:active {
    transform: scale(.98);
  }
}

/* CR-06 (see the block in components.css for the decision and its provenance).
   Only the hero-title tracking/leading rule lives here: case.css is compiled
   AFTER components.css, so an override of its own earlier rules has to sit
   here to win on source order. The hero-body values (60ch / 1.0625rem / 1.7)
   were folded into the original hero rule above on 22 September 2026
   (Teerasak approved) instead of overriding it — the override turned the
   C12 keep-unprefixed marker on the original line into a counted token on a
   dead declaration, so it was deleted with the override. Director ruling (B),
   22 September 2026: tracking eased -.025em -> -.04em below, leading held. */
.case .case__hero-title {
  letter-spacing: var(--rpas-display-1-track);
  line-height: var(--rpas-display-1-leading);
}

/* ---- hero photo fill ---------------------------------------------------
   The hero image's fill lives here, not inline: the mobile band media query
   below must override it, and a media query cannot beat an inline declaration
   without !important. `:not(.is-pending)` keeps this off the placeholder spans
   on photo-less pages, so those are untouched. The filter stays inline;
   object-position is supplied only where a crop needs tuning. */
.subpage-hero-image:not(.is-pending) {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ---- mobile hero photo band (Teerasak + Design Director, 24 Sep 2026) ----
   Below 768px the hero photo is an uncropped band above the copy instead of a
   cropped full-bleed backdrop. One rule per hero family — case pages
   (`.case .case__hero`) and service pages (`.case-hero`) — both keyed on a
   placed photo through :has(), so a hero still showing its placeholder is
   untouched. The scrim (hero-band-scrim) and scroll cue (hero-band-cue) hooks
   are written by the transforms on placed heroes only, so hiding them is inert
   on the placeholder pages too. Band geometry is the photo's natural ratio
   (width/height attributes), height auto, so object-position is inert here. */
@media (max-width: 767.98px) {
  .case .case__hero:has(> .subpage-hero-image:not(.is-pending)) {
    min-height: 0;
    justify-content: flex-start;
    padding-bottom: var(--space-xl);
  }

  .case-hero:has(> .subpage-hero-image:not(.is-pending)) {
    min-height: 0;
    justify-content: flex-start;
    padding-bottom: var(--space-xl);
  }

  .subpage-hero-image:not(.is-pending) {
    position: static;
    inset: auto;
    width: 100%;
    height: auto;
    object-fit: fill;
  }

  .hero-band-scrim,
  .hero-band-cue {
    display: none;
  }
}

/* Reuse the service-family photo band for a copy-first hero at desktop size.
   The same image remains a full-frame band; only visual order changes below
   768px so the existing mobile band remains photo -> copy. */
@media (min-width: 768px) {
  .case-hero--copy-first {
    min-height: 0;
    justify-content: flex-start;
    padding-bottom: var(--space-xl);
  }

  .subpage-hero-image--copy-first:not(.is-pending) {
    position: static;
    inset: auto;
    width: 100%;
    height: auto;
    object-fit: fill;
  }

  .hero-band-scrim--copy-first,
  .hero-band-cue--copy-first {
    display: none;
  }
}

@media (max-width: 767.98px) {
  .subpage-hero-image--copy-first:not(.is-pending) {
    order: -1;
  }
}

/* 721-1199.98px band (Teerasak delegated to Design Director, 26 Sep 2026): the
   case section grid, c-band-case-introduction. CHRONOLOGY IS LABELLED: every
   figure below is marked BEFORE (pre-band three-column) or AFTER (built).

   The authored grid above is `var(--layout-rail) minmax(0,1.1fr) minmax(260px,.5fr)`
   with a hard 260px third minimum, ported from the frozen incumbent and measured
   at 1280. The authored stack (`grid-template-columns: 1fr`) sits inside
   `@media (max-width: 720px)`, so from 721px up the three-column form applies and
   the 260px aside starves the content column. BEFORE, measured: H2 width 43px at
   721, 87px at 768, 196px at 900, 197px at 901, 293px at 1024, 298px at 1030 —
   with all nine words on their own line at 721-768. Below 720px the authored
   stack already gives 610px, so the lower bound is exactly 721px. Children
   auto-place in DOM order — the section rail, then the body block that holds the
   H2 and its paragraph — so no placement or paragraph gap is needed.

   AFTER, measured on the shipped bundle, all six case routes: H2 43 -> 521px at
   721, 87 -> 565px at 768, 196 -> 610px at 900, 197 -> 610px at 901, 293 -> 610px
   at 1024 and at 1030; one-word lines 9 -> 1 at 721/768 and -> 0 at 1000-1068.
   390px is outside the band and computed-identical to pre-change; document
   overflow-x is 0 at every width.

   BEFORE, real content clipping was confined to 901-919px: the widest single
   word was 209px in a 197px column at 901, +11.3px past the H2 box, 0 by 920px.
   AFTER, clip is negative at every width on every case route.

   CEILING 1199.98px. It was first set to 900px, then extended to 1068.98px when
   measurement showed the column is NOT monotonic — it climbs to 313px at 1050px
   then DROPS to 290px at 1055px, because the `--surface-inset` override in this
   file's own `@media (min-width: 721px) and (max-width: 1050px)` block stops
   applying above 1050 and the vw clamp takes ~47px of inset instead of 34px. So
   the sub-300px set was disjoint: 901-1068, containing a passing 1032-1050
   window. A single contiguous band cannot skip that window, so those ~19 widths
   stacked too; that was accepted over a stacked/three-column/stacked seam.

   The 1068.98px edge was then REJECTED as an edge, not accepted: 1069 sat
   299.625px, only 0.375px above the 300px standard, so any copy edit, token change
   or font-metric shift would put it back under the floor the day after sign-off.
   A 0.375px margin is a coincidence, not a boundary. The three-column form never
   becomes comfortable either — the 260px aside guarantees a marginal H2 column at
   every three-column width (5/9 one-word at 1069 easing only to 2/9 at 1280) — so
   there is no honest "return where comfortable" answer below ~1200. 1199.98px is a
   compositional boundary rather than a measurement artifact, and at 1201 the H2
   projects ~420px, about 40% above the floor. Stated trade: 1024-1199 stacks
   instead of three columns, and a full-width heading with the aside below reads
   better at those widths than a 390px H2 beside a 260px aside.

   THIS RULE LIVES IN case.css, NOT components.css, and that is load-bearing.
   The bundle order is _incumbent, tokens, base, layout, shell, components,
   article, profile, case, listing, preview, so a components.css rule at equal
   specificity is OVERRIDDEN by the three-column rule here: an earlier attempt
   placed it there and it was silently dead in dist (present at bundle offset
   214341, the three-column rule at 257659). It also survived a browser check,
   because a runtime style injection is appended after every stylesheet and so
   cannot reproduce a same-specificity loss between two authored layers. Verified
   against the built dist instead, not against injection. A second silent failure
   of the same class — a comment edit that dropped a closing delimiter and
   swallowed this @media block, with zero build and zero gate error — is why
   every number above is re-measured on the artefact rather than inferred from a
   green build.

   NOT IN SCOPE: `case__introduction--assumption`. It is governed by
   `.case .case__introduction--assumption` at specificity (0,2,0), which outranks
   this (0,1,0), so it is never stacked. That is correct — it measures 331-610px
   with no clipping and 0-1 one-word lines at every width, and it matches the
   site's established `.case__approach` / `.case__boundaries` label-beside pattern.
   Ruled out of band scope by the Design Director, 26 Sep 2026. */
@media (min-width: 721px) and (max-width: 1199.98px) {
  .case__introduction {
    grid-template-columns: minmax(0, 1fr);
  }
}
}

/* === styles/listing.css === */
/* === RESERVED SLOT: index-listing family layer (ticket 04, builder 0bf1a7e1) ===
   Reserved by the integration owner the way article.css, profile.css and
   case.css were: the slot exists so the bundle order is fixed before any
   rule is written. CONTENTS BELONG EXCLUSIVELY TO 0bf1a7e1 — do not write
   listing rules from any other workstream. Layers cascade over components
   but stay under the preview layer. Empty layers change nothing (verified:
   77 docs, C1-C12 pass at registration). */

/* === styles/preview.css === */
/* Preview doc — page furniture for /preview/components only. */
.preview-doc {
  max-width: var(--width-content);
  margin-inline: auto;
  padding: var(--space-l) var(--space-s) var(--space-xl);
  display: flex;
  flex-direction: column;
  gap: var(--space-l);
}

.preview-doc__title {
  font-size: var(--text-step-3);
  margin: 0;
  max-width: 20ch;
}

.preview-doc__lede {
  font-size: var(--text-step-1);
  color: var(--text-secondary);
  max-width: var(--rpas-measure-reading);
}

.preview-doc__section {
  display: flex;
  flex-direction: column;
  gap: var(--space-s);
}

.preview-doc__heading {
  font-size: var(--text-step-2);
  margin: 0;
}

.preview-doc__row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-s);
}

.preview-doc__grid {
  display: grid;
  gap: var(--space-s);
  grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr));
}

.preview-doc__note {
  border: var(--border-thin);
  border-radius: var(--radius-m);
  background: var(--surface-raised);
  padding: var(--space-s) var(--space-m);
  max-width: var(--rpas-measure-reading);
}
