/* Shared public UI: Vertex Console tokens, controls, motion and loading. */
:root,html[data-theme="light"]{--bg:#F8F9FA;--surface:#FFFFFF;--surface-2:#EFF1F3;--text:#17191D;--text-muted:#707782;--border:#E3E5E8;--border-strong:#D4D7DB;--hover:#EFF1F3;--action:#191B1F;--action-ink:#FFF;--header-bg:rgba(248,249,250,.9);--header-bg-scrolled:rgba(248,249,250,.96);--header-shadow:none;--radius-s:8px;--radius-m:12px;--dur:170ms;--ui-ease:cubic-bezier(.2,.8,.2,1);--status-success:#2E8B67;--status-error:#C2482F;}
html[data-theme="dark"]{--bg:#0F0F10;--surface:#171717;--surface-2:#212121;--text:#F5F5F5;--text-muted:#858585;--border:#292929;--border-strong:#353535;--hover:#242424;--action:#F5F5F5;--action-ink:#171717;--header-bg:rgba(15,15,16,.9);--header-bg-scrolled:rgba(15,15,16,.96);--header-shadow:none;--status-success:#3FB68B;--status-error:#E5654E;}
.btn,.icon-btn,.store-badge,button{border-radius:8px;transition:background-color 120ms var(--ui-ease),border-color 120ms var(--ui-ease),color 120ms var(--ui-ease),opacity 120ms var(--ui-ease);box-shadow:none;}
.btn{min-height:40px;padding:10px 16px;font-size:14px;font-weight:500;border:1px solid var(--border-strong);}
.btn-primary,.story-actions .btn-primary{background:var(--action);color:var(--action-ink);border-color:transparent;}
.btn-primary:hover{opacity:.92;border-color:var(--text);transform:none;}
.btn-ghost,.btn-outline,.story-actions .btn-ghost{background:transparent;color:var(--text);border-color:var(--border-strong);backdrop-filter:none;}
.btn-ghost:hover,.btn-outline:hover,.icon-btn:hover,.store-badge:hover{background:var(--hover);border-color:var(--text-muted);transform:none;}
button:disabled,.btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed;}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--text);outline-offset:3px;}
input,select,textarea{border-color:var(--border-strong);border-radius:8px;background:var(--surface);color:var(--text);}
.lang-panel,.mobile-menu,.doctrine-modal-content,.success-modal-content{background:var(--surface);border-color:var(--border);border-radius:12px;transition:opacity 120ms var(--ui-ease),transform 120ms var(--ui-ease),visibility 120ms;}
.lang-panel{transform:translateY(8px);}.language-dropdown.open .lang-panel,.mobile-menu.open{transition-duration:190ms;}
.doctrine-modal-content,.success-modal-content{transform:translateY(8px);opacity:0;}.show .doctrine-modal-content,.show .success-modal-content{transform:none;opacity:1;transition-duration:190ms;}
.linear-reveal{animation-duration:220ms;animation-timing-function:var(--ui-ease);}.delay-1,.delay-2,.delay-3,.delay-4{animation-delay:0s;}
.team-card,.partner-card,.product-card,.news-card{border-color:var(--border);border-radius:12px;box-shadow:none;transition:border-color 120ms var(--ui-ease),background-color 120ms var(--ui-ease),opacity 170ms var(--ui-ease);}
.team-card:hover,.partner-card:hover,.product-card:hover,.news-card:hover{transform:none;border-color:var(--border-strong);box-shadow:none;}
.icon-btn svg,.team-nav svg{stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.skeleton{position:relative;overflow:hidden;background:var(--surface-2);border-radius:8px;pointer-events:none;min-height:180px;}
.skeleton::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent,var(--hover),transparent);opacity:.7;animation:publicSkeletonWave 1600ms var(--ui-ease) infinite;transform:translateX(-100%);}
@keyframes publicSkeletonWave{0%{transform:translateX(-100%)}60%,100%{transform:translateX(100%)}}
.team-card:not(.skeleton){animation:publicContentIn 170ms var(--ui-ease) both;}@keyframes publicContentIn{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
[aria-busy="true"].btn::after{content:'';width:14px;height:14px;border:1.8px solid currentColor;border-right-color:transparent;border-radius:50%;animation:publicSpin 900ms linear infinite;}@keyframes publicSpin{to{transform:rotate(360deg)}}
.success-svg{stroke:var(--status-success);}
/* Only compositor transforms animate; pause the CTA outside the viewport. */
.cta-band::before{background:none;border:1px solid var(--text);width:360px;height:360px;inset:auto;left:8%;top:50%;transform:translateY(-50%) rotate(25deg);opacity:.1;animation:ctaGeometry 20s ease-in-out infinite;animation-play-state:paused;}
.cta-band::after{content:'';position:absolute;width:290px;height:290px;border:1px solid var(--text);border-radius:50%;right:8%;top:50%;opacity:.09;z-index:-1;pointer-events:none;transform:translateY(-50%) rotate(0);animation:ctaGeometry 26s ease-in-out infinite reverse;animation-play-state:paused;}
.cta-band.geometry-active::before,.cta-band.geometry-active::after{animation-play-state:running;}@keyframes ctaGeometry{0%,100%{transform:translateY(-50%) rotate(25deg) scale(.85)}50%{transform:translateY(-46%) rotate(65deg) scale(1.1)}}
.story-sponsors,.story-statement,.story-metrics{background:var(--surface);border-color:var(--border);box-shadow:none;backdrop-filter:none;}
.story-quick-status{color:var(--text-muted);font-size:13px;}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.skeleton::after{animation:none!important}.cta-band::before,.cta-band::after{animation:none!important}.story-actions{position:relative!important;top:auto!important;}}
/* Stable header geometry prevents threshold/layout feedback while scrolling. */
header .nav,header.scrolled .nav{height:68px;transition:none}header .logo-chip,header.scrolled .logo-chip{transform:none;transition:none}
footer a{color:var(--text-muted);transition:color 120ms var(--ui-ease)}footer a:hover,footer a:focus-visible{color:var(--text)}
/* White difference text inverts the actual pixels underneath, including land. */
.story-title{color:#fff;mix-blend-mode:difference}
/* A geometric skyline rises once on entry; no continuously rendered scene. */
.cta-band::before,.cta-band::after{display:none}.cta-skyline{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none;color:var(--text);opacity:.13}.cta-skyline svg{width:100%;height:100%;transform:translateY(100%);transition:transform 1200ms cubic-bezier(.16,1,.3,1)}.geometry-active .cta-skyline svg{transform:translateY(0)}
@media(prefers-reduced-motion:reduce){.cta-skyline svg{transform:none;transition:none}}
/* Animate the scrollbar alpha per scroller from shared JS. */
@property --scrollbar-alpha{syntax:'<number>';inherits:true;initial-value:0}
:root{--scroll-rgb:0 0 0}
html[data-theme="dark"]{--scroll-rgb:255 255 255}
.lang-panel{--scrollbar-alpha:0}
*{scrollbar-width:thin;scrollbar-color:rgb(var(--scroll-rgb)/var(--scrollbar-alpha,0)) transparent}
::-webkit-scrollbar{width:4px;height:3px;background:transparent}
::-webkit-scrollbar-track,::-webkit-scrollbar-corner{background:transparent}
::-webkit-scrollbar-thumb{background:rgb(var(--scroll-rgb)/var(--scrollbar-alpha,0));border-radius:9999px;border:.5px solid transparent;background-clip:padding-box}
@keyframes publicNamesLoop{from{transform:translateX(0)}to{transform:translateX(calc(-1 * var(--name-cycle)))}}

footer .foot-col a,footer .foot-legal a{color:var(--text-muted)}footer .foot-col a:hover,footer .foot-col a:focus-visible,footer .foot-legal a:hover,footer .foot-legal a:focus-visible{color:var(--accent)}
/* Application controls and the intl-tel-input 29 country selector. */
#joinForm input:not([type=checkbox]),#joinForm select,#joinForm textarea{width:100%;min-height:48px;padding:12px 14px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:10px;font:inherit;transition:border-color 120ms ease,box-shadow 120ms ease}#joinForm textarea{min-height:140px;resize:vertical}#joinForm input:focus,#joinForm select:focus,#joinForm textarea:focus{border-color:var(--text);outline:2px solid color-mix(in srgb,var(--text) 18%,transparent);outline-offset:2px}#joinForm :user-invalid,#joinForm [aria-invalid=true]{border-color:var(--status-error)!important}#joinForm input[type=checkbox]{appearance:none;width:20px;height:20px;min-width:20px;display:inline-grid;place-content:center;border:1px solid var(--border-strong);border-radius:5px;background:var(--surface);margin:2px 0;cursor:pointer}#joinForm input[type=checkbox]:checked{background:var(--action);border-color:var(--action)}#joinForm input[type=checkbox]:checked::after{content:'';width:9px;height:5px;border-left:2px solid var(--action-ink);border-bottom:2px solid var(--action-ink);transform:rotate(-45deg) translateY(-1px)}#joinForm .iti{width:100%}#joinForm .iti input[type=tel]{padding-left:var(--iti-input-padding,100px)}.iti{--iti-border-color:var(--border-strong);--iti-dropdown-bg:var(--surface);--iti-hover-color:var(--hover);--iti-search-icon-color:var(--text-muted);--iti-dialcode-color:var(--text-muted)}.iti__country-selector,.iti__country-list,.iti__dropdown-content{background:var(--surface);color:var(--text);border-color:var(--border-strong);border-radius:10px}.iti__country{min-height:44px;padding:10px 14px;color:var(--text)}.iti__country-name{color:var(--text)}.iti__dial-code{color:var(--text-muted)}.iti__selected-dial-code{color:var(--text)}.iti__country.iti__highlight,.iti__country[aria-selected=true]{background:var(--hover)}.iti__search-input{background:var(--surface-2);color:var(--text);border-color:var(--border-strong);min-height:44px}.iti__selected-country{border-radius:9px 0 0 9px;color:var(--text);background:transparent}.iti__search-input::placeholder{color:var(--text-muted)}.iti__country-selector{box-shadow:0 12px 30px #0002}.iti__country-list{max-height:min(340px,50svh)}
.team-card{flex:0 0 280px;width:280px;text-align:center;overflow:hidden}.team-photo-wrap{width:100%;height:auto;aspect-ratio:1;overflow:hidden}.team-photo-wrap img{width:100%;height:100%;object-fit:cover}.team-photo-wrap>a{display:block;width:100%;height:100%}.team-info{min-height:140px;padding:20px}.team-info h3{font-size:18px;margin:0 0 8px}.team-info h3 a{text-decoration:none}.team-social{justify-content:center}.weekly-star{display:inline-flex;align-items:center;gap:12px}.weekly-star svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8}
.profile-page{padding-top:64px;padding-bottom:80px}.profile-heading{position:static;background:none;border:0;display:flex;align-items:center;gap:32px;backdrop-filter:none;margin-bottom:48px}.profile-photo-box{width:160px;height:160px;min-width:160px;border:1px solid var(--border-strong);background:var(--surface);border-radius:16px;overflow:hidden;display:flex;align-items:flex-end;justify-content:center;position:relative}.profile-photo-box img,.profile-heading>img{width:100%;height:100%;object-fit:cover;object-position:center 15%;display:block}.profile-heading>img{width:160px;height:160px;min-width:160px;border:1px solid var(--border-strong);background:var(--surface);border-radius:16px;overflow:hidden}.profile-heading h1{font-family:Poppins,system-ui,sans-serif;font-size:clamp(32px,5vw,56px);letter-spacing:-.03em;text-transform:none;margin:0}.profile-heading p{color:var(--text-muted)}.profile-layout{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:64px;align-items:start}.profile-bio{max-width:740px;font-size:18px;line-height:1.8}.profile-bio p:first-child{margin-top:0}.profile-links{padding:24px;border:1px solid var(--border);border-radius:12px}.profile-links h2{font-size:16px;margin:0 0 4px}.profile-links a{display:flex;align-items:center;gap:12px;margin-top:14px;color:var(--text-muted);text-decoration:none;font-size:15px;transition:color 120ms ease}.profile-links a:hover{color:var(--text)}.profile-link-icon{width:18px;height:18px;flex-shrink:0}
.section-revealed{animation:publicSectionIn 360ms var(--ui-ease) both}@keyframes publicSectionIn{from{opacity:.25;transform:translateY(12px)}to{opacity:1;transform:none}}@media(max-width:700px){.profile-layout{grid-template-columns:1fr;gap:24px}.profile-heading{gap:20px}.profile-photo-box,.profile-heading>img{width:110px;height:110px;min-width:110px;border-radius:14px}.team-card{flex-basis:250px;width:250px}}@media(prefers-reduced-motion:reduce){.section-revealed{animation:none}}
.iti{--iti-country-selector-bg:var(--surface);--iti-icon-color:var(--text-muted)}.iti__country-selector *{box-sizing:border-box}.iti__country-selector .iti__close-button{color:var(--text)}.iti__country-selector .iti__search-input{color:var(--text);background:var(--surface-2)}
.sky-traces{animation:skySignal 8s linear infinite;animation-play-state:paused}.geometry-active .sky-traces{animation-play-state:running}@keyframes skySignal{to{stroke-dashoffset:-146}}@media(prefers-reduced-motion:reduce){.sky-traces{animation:none}}
#joinForm input.iti__search-input,.iti__search-input{padding-left:38px;padding-right:38px}[dir=rtl] .iti__search-input{padding-left:38px;padding-right:38px}
/* Team is a compact editorial grid, not a carousel. */
.team-scroll-wrap::after{display:none}.team-track{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:18px;overflow:visible;scroll-snap-type:none;padding:0;align-items:start}
.team-card{position:relative;width:auto;min-width:0;flex:none;height:auto;border:1px solid var(--border);background:transparent;text-align:center;animation:none!important}
.team-photo-wrap{aspect-ratio:1;height:auto}.team-info{min-height:0;padding:16px 12px}.team-info h3{font-size:16px;line-height:1.3;margin:0 0 6px;overflow-wrap:anywhere}.team-info .role{font-size:13px;line-height:1.45;margin:0;color:var(--text-muted);overflow-wrap:anywhere;text-wrap:balance}.team-social{display:flex;gap:12px;margin-top:12px;position:relative;z-index:2}.team-social:empty{display:none}.team-social a{display:inline-flex;width:28px;height:28px;align-items:center;justify-content:center}.team-social img{width:18px;height:18px;object-fit:contain}.team-card.has-profile,.team-card.has-profile *{cursor:pointer}.team-card.has-profile:hover,.team-card:focus-within{border-color:var(--text)}.team-profile-link::after{content:'';position:absolute;inset:0;border-radius:12px;z-index:1}.team-profile-link:focus-visible{outline:none}.team-card:has(.team-profile-link:focus-visible){outline:2px solid var(--text);outline-offset:4px}.team-card.profile-unavailable,.team-card.profile-unavailable *{cursor:default}.team-card.profile-unavailable:hover{border-color:var(--border-strong)}.team-social,.team-social *{cursor:pointer}
.team .names{border:0;padding:40px 0 0;content-visibility:visible;contain-intrinsic-size:none}.team .name-block{margin-top:32px}.team .name-block h3{text-align:center;margin-bottom:24px}.team .names .wrap{padding-top:0}.team .section-head{margin-bottom:24px}
@media(max-width:1399px){.team-track{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:1099px){.team-track{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:849px){.team-track{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:519px){.team-track{grid-template-columns:1fr;max-width:380px;margin:auto}.team-info{padding:16px}.team-info h3{font-size:18px}}
/* Keep the atmosphere behind the architecture and away from the CTA copy. */
.cta-skyline{opacity:.18;mask-image:linear-gradient(to bottom,transparent,black 24%);}.cta-skyline svg{overflow:hidden}.sky-clouds{animation:cityCloudDrift 96s linear infinite;animation-play-state:paused}.geometry-active .sky-clouds{animation-play-state:running}@keyframes cityCloudDrift{from{transform:translateX(-1440px)}to{transform:translateX(0)}}.cta-band .wrap{position:relative;z-index:1;gap:24px;min-height:280px;padding-block:64px}.cta-band h2{max-width:32ch;text-wrap:balance}.cta-band .actions{display:flex;flex-wrap:wrap;gap:12px}
/* Animate inner content: transforming the section itself moves sticky descendants. */
.section-revealed{animation:none}.section-revealed>.wrap{animation:publicSectionIn 380ms var(--ui-ease) both}.section-revealed>.names{animation:none}
@media(prefers-reduced-motion:reduce){.sky-clouds,.section-revealed>.wrap{animation:none!important}.cta-skyline svg{transform:none}}

.cta-skyline{mask-image:none}.city-building{fill:var(--bg)}.city-buildings{mask-image:linear-gradient(to bottom,transparent,rgba(0,0,0,.3) 45%,black 90%)}
/* Uniform quiet hover; portrait pixels never scale. */
.team-card,.team-card.has-profile,.team-card.profile-unavailable{transition:border-color 240ms var(--ui-ease) 45ms,box-shadow 240ms var(--ui-ease) 45ms;transform:none}
.team-card:hover,.team-card.has-profile:hover,.team-card.profile-unavailable:hover,.team-card:focus-within{transform:none;border-color:var(--text-muted);box-shadow:0 2px 10px rgba(0,0,0,.035)}
.team-card .team-photo,.team-card:hover .team-photo{transform:none;transition:none}
.cta-skyline svg{display:block}.city-ground{stroke-width:1}
.tech-diagram{display:block;width:220px;max-width:100%;height:164px;color:var(--text);opacity:.78;overflow:visible}.vision .tech-diagram{width:350px;height:auto;max-width:100%}.diagram-pulse{animation:diagramBreathe 5s ease-in-out infinite;animation-play-state:paused}.diagram-signal{stroke-dasharray:80 120;animation:diagramSignal 8s linear infinite;animation-play-state:paused}.diagram-orbit{transform-origin:110px 80px;animation:diagramOrbit 24s linear infinite;animation-play-state:paused}.diagram-active .diagram-pulse,.diagram-active .diagram-signal,.diagram-active .diagram-orbit{animation-play-state:running}@keyframes diagramBreathe{50%{opacity:.4}}@keyframes diagramSignal{to{stroke-dashoffset:-200}}@keyframes diagramOrbit{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.diagram-pulse,.diagram-signal,.diagram-orbit{animation:none}.team-card{transition:none}}
/* One interaction rhythm, derived from the Console theme popover. */
:root{--interaction-time:240ms;--interaction-delay:45ms;--panel-ease:cubic-bezier(.2,.8,.2,1)}
:is(.tech-card,.product-card,.partner-card,.team-card,.team-card.has-profile,.team-card.profile-unavailable,.news-card,.vision-chip,.join-card,.profile-links){transition:border-color var(--interaction-time) var(--panel-ease) var(--interaction-delay),background-color var(--interaction-time) var(--panel-ease) var(--interaction-delay),box-shadow var(--interaction-time) var(--panel-ease) var(--interaction-delay)}
:is(.btn,.icon-btn,.store-badge,button.application-select-trigger){transition:border-color var(--interaction-time) var(--panel-ease) var(--interaction-delay),background-color var(--interaction-time) var(--panel-ease) var(--interaction-delay),color var(--interaction-time) var(--panel-ease) var(--interaction-delay);}
.tech-card-content{transition:translate var(--interaction-time) var(--panel-ease) 65ms}.tech-diagram{transition:opacity var(--interaction-time) var(--panel-ease) 65ms,translate var(--interaction-time) var(--panel-ease) 65ms}
@media(hover:hover){:is(.tech-card,.product-card,.partner-card,.team-card,.team-card.has-profile,.team-card.profile-unavailable,.news-card,.vision-chip,.join-card,.profile-links):hover{border-color:var(--text-muted);box-shadow:none;transform:none}.tech-card:hover .tech-card-content,.tech-card:hover .tech-diagram{translate:0 -2px}.tech-card:hover .tech-diagram{opacity:1}.btn:hover,.btn-primary:hover,.icon-btn:hover,.store-badge:hover{opacity:1;transform:none;border-color:var(--text-muted)}.btn-ghost:hover,.btn-outline:hover,.icon-btn:hover,.store-badge:hover{background:var(--hover);border-color:var(--text)}footer a:hover,.profile-links a:hover,.nav-links a:hover{color:var(--text)}}
:is(footer a,.profile-links a,.nav-links a,.lang-row){transition:color var(--interaction-time) var(--panel-ease) var(--interaction-delay),background-color var(--interaction-time) var(--panel-ease) var(--interaction-delay)}
:is(.tech-card,.product-card,.partner-card,.team-card,.news-card,.profile-links):focus-within{border-color:var(--text)}
/* Quiet continuous computation, rather than a barely perceptible opacity loop. */
.ai-core{animation:aiCoreFloat 4.8s ease-in-out infinite}.ai-halo{transform-origin:110px 82px;animation:aiHaloTurn 18s linear infinite}.ai-node circle{transform-box:fill-box;transform-origin:center;animation:aiNodeSignal 3.6s ease-in-out infinite}.ai-node circle:nth-child(2n){animation-delay:-1.2s}.ai-node circle:nth-child(3n){animation-delay:-2.4s}.motion-data{stroke-dasharray:12 28;animation:dataTransmission 4s linear infinite}.web-code{animation:interfaceFloat 6s ease-in-out infinite}.web-cursor{animation:cursorSignal 2.4s ease-in-out infinite}.mobile-feed{animation:interfaceFloat 5s ease-in-out infinite}.mobile-signal{animation:signalBreath 3.8s ease-in-out infinite}.game-device{transform-origin:110px 82px;animation:deviceBalance 7s ease-in-out infinite}.game-key{animation:signalBreath 3.4s ease-in-out infinite}.game-key:nth-of-type(2){animation-delay:-1.7s}
@keyframes aiCoreFloat{50%{transform:translateY(-3px)}}@keyframes aiHaloTurn{to{transform:rotate(360deg)}}@keyframes aiNodeSignal{0%,100%{opacity:.4;transform:scale(.85)}45%{opacity:1;transform:scale(1.18)}}@keyframes dataTransmission{to{stroke-dashoffset:-80}}@keyframes interfaceFloat{50%{transform:translateY(-3px)}}@keyframes cursorSignal{50%{opacity:.15}}@keyframes signalBreath{50%{opacity:.22}}@keyframes deviceBalance{50%{transform:rotate(-2deg) translateY(-2px)}}
/* A layered technology platform with independent depth and connected signals. */
.diagram-vision{width:380px!important;aspect-ratio:5/4;opacity:.85}.vision-plane>path:first-child{fill:var(--bg)}.vision-plane{animation:visionLayerFloat 7s ease-in-out infinite}.vision-plane-middle{animation-delay:-2.3s}.vision-plane-back{animation-delay:-4.6s}.vision-core{animation:signalBreath 4.2s ease-in-out infinite}.vision-nodes circle{animation:aiNodeSignal 4.8s ease-in-out infinite;transform-box:fill-box;transform-origin:center}.vision-nodes circle:nth-child(2){animation-delay:-1.6s}.vision-nodes circle:nth-child(3){animation-delay:-3.2s}@keyframes visionLayerFloat{50%{transform:translate(2px,-4px)}}
:is(.ai-core,.ai-halo,.ai-node circle,.motion-data,.web-code,.web-cursor,.mobile-feed,.mobile-signal,.game-device,.game-key,.vision-plane,.vision-core,.vision-nodes circle){animation-play-state:paused}.diagram-active :is(.ai-core,.ai-halo,.ai-node circle,.motion-data,.web-code,.web-cursor,.mobile-feed,.mobile-signal,.game-device,.game-key,.vision-plane,.vision-core,.vision-nodes circle){animation-play-state:running}
/* Matching 4px / .98 entry and exit; existing modal lifecycle is preserved. */
.lang-panel{transform:translateY(4px) scale(.98);transform-origin:top right;transition:opacity 200ms var(--panel-ease),transform 200ms var(--panel-ease),visibility 0s linear 200ms}.language-dropdown.open .lang-panel{transform:none;transition:opacity 200ms var(--panel-ease),transform 200ms var(--panel-ease),visibility 0s}.doctrine-modal-content,.success-modal-content{transform:translateY(4px) scale(.98);transition:opacity 200ms var(--panel-ease),transform 200ms var(--panel-ease)}.show .doctrine-modal-content,.show .success-modal-content{transform:none;opacity:1}
#joinForm input[type=checkbox]{transition:background-color 180ms var(--panel-ease),border-color 180ms var(--panel-ease)}#joinForm input[type=checkbox]::after{content:'';width:9px;height:5px;border-left:2px solid var(--action-ink);border-bottom:2px solid var(--action-ink);opacity:0;transform:rotate(-45deg) translateY(-1px) scale(.65);transition:opacity 160ms var(--panel-ease),transform 160ms var(--panel-ease)}#joinForm input[type=checkbox]:checked::after{opacity:1;transform:rotate(-45deg) translateY(-1px) scale(1)}
.application-select{position:relative}.enhanced-select-source{position:absolute!important;width:1px!important;height:1px!important;min-height:0!important;padding:0!important;margin:0!important;clip-path:inset(50%);overflow:hidden;white-space:nowrap}.application-select-trigger{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;min-height:48px;padding:12px 14px;background:var(--surface);color:var(--text);border:1px solid var(--border-strong);border-radius:10px;text-align:start;font:inherit;cursor:pointer}.application-select-trigger::after{content:'';width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);flex-shrink:0;transition:transform 200ms var(--panel-ease)}.application-select-trigger[aria-expanded=true]::after{transform:rotate(225deg)}.application-select-trigger[aria-invalid=true]{border-color:var(--status-error)}.application-options{position:absolute;z-index:70;inset:calc(100% + 6px) 0 auto;max-height:min(340px,50svh);overflow:auto;padding:5px;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface);color:var(--text);box-shadow:0 12px 30px #0002;transform-origin:top center}.application-options[hidden]{display:none}.opens-above .application-options{inset:auto 0 calc(100% + 6px);transform-origin:bottom center}.application-option{padding:11px 12px;min-height:44px;line-height:1.4;border-radius:6px;cursor:pointer;transition:background-color 180ms var(--panel-ease)}.application-option:hover,.application-option.is-active{background:var(--hover)}.application-option[aria-selected=true]{box-shadow:inset 2px 0 var(--text);font-weight:600}.application-select-error{display:block;margin-top:8px;color:var(--status-error)}.application-select-error[hidden]{display:none}.iti__country-selector{transform-origin:top center}.iti-exit-shell{transform-origin:top center}
@media(prefers-reduced-motion:reduce){[data-diagram] *{animation:none!important}.tech-card-content,.tech-diagram{translate:none!important;transition:none!important}.application-option,.application-select-trigger,#joinForm input[type=checkbox],#joinForm input[type=checkbox]::after{transition:none!important}}
#joinForm input:not([type=checkbox]),#joinForm textarea{transition:border-color 200ms var(--panel-ease),box-shadow 200ms var(--panel-ease)}.checkbox-label span{transition:color var(--interaction-time) var(--panel-ease) var(--interaction-delay)}.checkbox-label:hover span,.checkbox-label:focus-within span{color:var(--text)}
.mobile-menu{opacity:0;transform:translateY(4px) scale(.98);transform-origin:top center;transition:max-height 240ms var(--panel-ease),opacity 200ms var(--panel-ease),transform 200ms var(--panel-ease),visibility 0s linear 240ms}header.menu-open .mobile-menu{opacity:1;transform:none;transition:max-height 240ms var(--panel-ease),opacity 200ms var(--panel-ease),transform 200ms var(--panel-ease),visibility 0s}

@media(prefers-reduced-motion:no-preference){html{animation:language-arrive 200ms ease-out both}html.language-leaving{animation:none;opacity:0;transition:opacity 160ms ease-in}@keyframes language-arrive{from{opacity:0}to{opacity:1}}}

/* Present localized language names consistently, including the current selection. */
.language-dropdown .lang-btn > span:first-of-type,
.language-dropdown .lang-row > span:first-of-type,
.mobile-menu .m-lang > span:first-of-type{text-transform:capitalize}

/* Unified store CTA icon columns and label baselines, across all locales. */
.store-badges .store-badge{display:grid;grid-template-columns:30px minmax(0,1fr);align-items:center;justify-content:stretch;gap:12px;min-width:0;padding:12px clamp(10px,1.25vw,18px);text-align:left}
.store-badges .store-badge>svg{display:block;justify-self:center;width:26px;height:26px;max-width:100%}
.store-badges .store-badge>span{display:flex;flex-direction:column;min-width:0;text-align:start}
.store-badges .store-badge :is(small,strong){overflow-wrap:anywhere}
@media(max-width:520px){.store-badges .store-badge{grid-template-columns:25px minmax(0,1fr);gap:8px;padding:10px}.store-badges .store-badge>svg{width:23px;height:23px}}

/* Navigation uses the same content width and side padding as the page sections. */
header .wrap.nav{max-width:var(--maxw);gap:clamp(8px,1vw,18px)}
header .nav-links{gap:clamp(11px,1.15vw,19px)}
header .nav-links a{font-size:13px}
header .nav-right{gap:8px;flex-shrink:0}
header .nav-right>.nav-future-cta{font-size:12px;padding:10px 12px;white-space:nowrap}
@media(max-width:1279px){
 header .nav-links{display:none}
 header .nav-right>.nav-future-cta{display:none}
 header .menu-btn{display:flex!important}
 header .mobile-menu{display:block!important}
}
@media(min-width:1280px){header .mobile-menu{display:none!important}}
@media(max-width:480px){header .nav{gap:6px}header .nav-right{gap:5px}header .lang-btn{padding:0 8px;max-width:124px}}

/* Console-inspired light / dark / system selector, without altering the existing header dimensions. */
.theme-switcher{position:relative;display:flex;flex-shrink:0}
.theme-mode-menu{position:absolute;right:0;top:calc(100% + 10px);z-index:90;min-width:186px;padding:6px;border:1px solid var(--border-strong);border-radius:12px;background:var(--surface);color:var(--text);box-shadow:0 12px 34px #0002}
.theme-mode-menu[hidden]{display:none!important}
.theme-menu-heading{margin:5px 10px 7px;color:var(--text-muted);font-size:12px;font-weight:650}
.theme-option{display:flex;align-items:center;gap:10px;width:100%;min-height:42px;padding:9px 10px;border:0;border-radius:7px;background:transparent;color:var(--text);font:inherit;font-size:13px;text-align:start;cursor:pointer}
.theme-option:hover,.theme-option:focus-visible{background:var(--hover)}
.theme-option[aria-checked=true]{font-weight:700}
.theme-option .theme-option-check{margin-inline-start:auto;opacity:0}
.theme-option[aria-checked=true] .theme-option-check{opacity:1}
.theme-system-icon{width:17px;height:17px;display:none}
@media(prefers-reduced-motion:no-preference){.theme-mode-menu:not([hidden]){animation:themeMenuIn 165ms cubic-bezier(.2,.8,.2,1) both}@keyframes themeMenuIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}}

/* Make the decorative wireframe quiet without affecting the actual map geography. */
.story-geometry svg{stroke-width:.63}

/* Console-consistent header and action refinements. */
.btn-primary,.story-actions .btn-primary{border-color:transparent!important;transition:background-color 200ms var(--panel-ease),filter 200ms var(--panel-ease),color 200ms var(--panel-ease)}
@media(hover:hover){
  .btn-primary:hover,.story-actions .btn-primary:hover,header .nav-right .btn-primary:hover{
    border-color:transparent!important;box-shadow:none;opacity:1!important;transform:none;filter:brightness(.9)
  }
  /* The brightness filter darkens both light and dark filled buttons consistently. */
}
@media(prefers-reduced-motion:reduce){.btn-primary,.story-actions .btn-primary{transition:none!important}}

/* Vision: real grid rows share the same visual/content baseline, regardless of translation. */
.vision-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  grid-template-areas:"heading heading" "visual copy";
  align-items:start;column-gap:56px;row-gap:32px;
}
.vision-grid>.vision-heading{grid-area:heading;margin:0;min-width:0}
.vision-grid>.vision-visual{grid-area:visual;min-width:0;display:flex;align-items:flex-start}
.vision-grid>.vision-text{grid-area:copy;min-width:0;margin:0;padding-top:clamp(18px,2vw,27px)}
@media(max-width:860px){
 .vision-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:"heading" "visual" "copy";gap:24px}
 .vision-grid>.vision-text{padding-top:0}
}
@media(min-width:861px) and (max-width:1180px){.vision-grid{column-gap:32px}}

/* Shared anchored popover styling, modeled on Vertex Console's vx-popover. */
.theme-mode-menu{
  position:fixed;z-index:120;top:0;left:0;right:auto;
  width:max-content;min-width:190px;max-width:calc(100vw - 16px);
  max-height:calc(100dvh - 16px);overflow:auto;
  padding:0;border:1px solid var(--border-strong);border-radius:12px;
  background:var(--surface);color:var(--text);box-shadow:0 14px 34px rgba(0,0,0,.18);
  opacity:0;transform:translateY(4px) scale(.98);transform-origin:top center;
  pointer-events:none;
  transition:opacity 200ms var(--panel-ease),transform 200ms var(--panel-ease);
}
.theme-mode-menu[hidden]{display:none!important}
.theme-mode-menu.is-open{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}
.theme-mode-menu.is-closing{pointer-events:none}
.theme-menu-heading{
  display:flex;align-items:center;min-height:43px;padding:11px 15px;
  margin:0;border-bottom:1px solid var(--border);
  font-size:13px;font-weight:600;color:var(--text)
}
.theme-menu-list{display:flex;flex-direction:column;padding:5px}
.theme-option{
  display:flex;align-items:center;gap:12px;width:100%;min-height:40px;padding:9px 11px;
  border:0;border-radius:6px;background:transparent;color:var(--text-muted);
  font:inherit;font-size:13px;font-weight:500;text-align:start;cursor:pointer;
  transition:background-color 120ms var(--panel-ease),color 120ms var(--panel-ease)
}
.theme-option:hover,.theme-option:focus-visible{background:var(--hover);color:var(--text)}
.theme-option .theme-option-icon{display:block;width:17px;height:17px;flex:none}
.theme-option .theme-option-check{display:block;width:16px;height:16px;margin-inline-start:auto;visibility:hidden;opacity:1}
.theme-option.is-selected,.theme-option[aria-checked=true]{font-weight:600;color:var(--text)}
.theme-option.is-selected .theme-option-check,.theme-option[aria-checked=true] .theme-option-check{visibility:visible}
@media(prefers-reduced-motion:reduce){.theme-mode-menu,.theme-option{transition:none!important}}

/* The old one-shot animation must not override the Console-style enter/exit transitions. */
.theme-mode-menu:not([hidden]){animation:none!important}

/* Long localized navigation gracefully becomes a hamburger above the nominal breakpoint. */
#siteHeader.nav-condensed .nav-links,#siteHeader.nav-condensed .nav-right>.nav-future-cta{display:none!important}
#siteHeader.nav-condensed .menu-btn{display:flex!important}
#siteHeader.nav-condensed .mobile-menu{display:block!important}

/* Exact Vertex Console easing/durations and popover depth. */
.theme-mode-menu{transition:opacity 120ms cubic-bezier(.4,0,1,1),transform 120ms cubic-bezier(.4,0,1,1);box-shadow:0 8px 24px rgba(0,0,0,.4),0 2px 8px rgba(0,0,0,.32)}
.theme-mode-menu.is-open{transition:opacity 180ms cubic-bezier(.2,.8,.2,1),transform 180ms cubic-bezier(.2,.8,.2,1)}
html[data-theme="light"] .theme-mode-menu{box-shadow:0 8px 24px rgba(23,25,29,.10),0 2px 8px rgba(23,25,29,.08)}


/* Vertex News: responsive public cards, matching the site's monochrome design. */
.vertex-news{border-top:1px solid var(--border);content-visibility:auto;contain-intrinsic-size:auto 760px;}
.vertex-news-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:start;}
.vertex-news-card{display:flex;flex-direction:column;min-width:0;overflow:hidden;border:1px solid var(--border);border-radius:14px;background:var(--surface);transition:border-color 180ms var(--ui-ease);}
.vertex-news-card:hover,.vertex-news-card:focus-within{border-color:var(--border-strong);}
.vertex-news-cover{aspect-ratio:16/9;display:grid;place-items:center;overflow:hidden;background:var(--surface-2);border-bottom:1px solid var(--border);}
.vertex-news-image{width:100%;height:100%;object-fit:cover;}
.vertex-news-image[src$="/assets/logo.svg"]{width:38%;height:38%;object-fit:contain;filter:var(--logo-filter);}
.vertex-news-content{display:flex;flex:1;flex-direction:column;align-items:flex-start;gap:12px;padding:20px;}
.vertex-news-date{font-size:12px;color:var(--text-muted);}
.vertex-news-title{font-size:clamp(16px,1.5vw,20px);font-weight:700;line-height:1.34;letter-spacing:-.01em;margin:0;overflow-wrap:anywhere;}
.vertex-news-summary,.vertex-news-body{color:var(--text-muted);line-height:1.62;font-size:14px;white-space:pre-line;overflow-wrap:anywhere;margin:0;}
/* Two clipped grid tracks animate both the summary exit and the full story entrance. */
.vertex-news-copy{width:100%;min-width:0;}
.vertex-news-summary-panel,.vertex-news-detail{display:grid;width:100%;min-width:0;grid-template-rows:1fr;opacity:1;transition:grid-template-rows 420ms cubic-bezier(.2,.8,.2,1),opacity 240ms ease;}
.vertex-news-detail{grid-template-rows:0fr;opacity:0;}
.vertex-news-panel-inner{min-height:0;overflow:hidden;}
.vertex-news-card.is-expanded .vertex-news-summary-panel{grid-template-rows:0fr;opacity:0;}
.vertex-news-card.is-expanded .vertex-news-detail{grid-template-rows:1fr;opacity:1;}
.vertex-news-source{display:inline-flex;margin-top:16px;color:var(--text);font-size:13px;font-weight:600;text-underline-offset:4px;}
.vertex-news-toggle{margin-top:auto;padding:6px 0;border:0;border-radius:0;background:none;color:var(--text);font:600 13px/1.4 'Poppins',system-ui,sans-serif;cursor:pointer;text-align:start;}
.vertex-news-toggle:hover{text-decoration:underline;text-underline-offset:4px;}
.vertex-news-toggle:focus-visible{outline:2px solid var(--text);outline-offset:4px;border-radius:2px;}
@media(max-width:1000px){.vertex-news-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:650px){.vertex-news-grid{grid-template-columns:1fr;gap:14px}.vertex-news-content{padding:18px}.vertex-news{contain-intrinsic-size:auto 920px;}}
@media(prefers-reduced-motion:reduce){.vertex-news-card,.vertex-news-summary-panel,.vertex-news-detail{transition:none!important;}}

/* Keep the site mark in place while its light/dark treatment crossfades. */
.logo-chip{position:relative}
.logo-chip>img{filter:brightness(0)!important;transition:opacity 0s!important}
.logo-chip::before{content:"";position:absolute;z-index:1;left:10px;top:50%;width:16px;height:16px;transform:translateY(-50%);background:url("/assets/logo.svg") center/contain no-repeat;filter:brightness(0) invert(1);opacity:0;pointer-events:none;transition:opacity 260ms cubic-bezier(.2,.8,.2,1)}
header .logo-chip::before,footer .logo-chip::before{left:0;width:28px;height:28px}
html[data-theme="dark"] .logo-chip::before{opacity:1}

/* Loading covers show a quiet monochrome shimmer until the image really loads. */
.vertex-news-cover{position:relative;isolation:isolate}
.vertex-news-cover::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(110deg,var(--surface-2) 20%,var(--surface) 44%,var(--surface-2) 68%);background-size:240% 100%;opacity:0;animation:vertexNewsShimmer 1450ms ease-in-out infinite paused;transition:opacity 260ms ease}
.vertex-news-cover.is-loading::after{opacity:1;animation-play-state:running}
.vertex-news-cover .vertex-news-image{transition:opacity 260ms ease}
.vertex-news-cover.is-loading .vertex-news-image{opacity:0}
@keyframes vertexNewsShimmer{from{background-position:160% 0}to{background-position:-160% 0}}
@media(prefers-reduced-motion:reduce){.logo-chip::before,.vertex-news-cover::after,.vertex-news-cover .vertex-news-image{transition:none!important}.vertex-news-cover::after{animation:none!important}}


/* Responsive interaction polish: preserve accessible keyboard focus, remove
   browser-native blue tap flashes, and keep page sections independent of the menu. */
a,button,summary,[role="button"],input[type="button"],input[type="submit"],input[type="checkbox"],select{
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
}
#siteHeader{position:sticky;top:0}
#siteHeader .mobile-menu{
  position:absolute;
  top:100%;
  inset-inline:0;
  z-index:20;
  width:100%;
  margin:0;
  overflow-x:hidden;
  overflow-y:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  background:var(--surface);
  border-radius:0 0 12px 12px;
  box-shadow:0 14px 28px rgba(0,0,0,.10);
  max-height:0;
}
#siteHeader.menu-open .mobile-menu{
  max-height:min(560px,calc(100vh - 68px - env(safe-area-inset-bottom,0px) - 8px));
}
@supports(height:100dvh){
  #siteHeader.menu-open .mobile-menu{
    max-height:min(560px,calc(100dvh - 68px - env(safe-area-inset-bottom,0px) - 8px));
  }
}
#siteHeader .mobile-menu nav{
  padding-bottom:max(18px,env(safe-area-inset-bottom,0px));
}
#siteHeader .mobile-menu a.mlink,
#siteHeader .mobile-menu button.mlink{min-height:44px;display:flex;align-items:center}
#siteHeader .mobile-menu .m-cta{min-height:44px}
@media(max-width:1279px){
  #siteHeader .nav-right .icon-btn{min-width:44px;min-height:44px}
  #siteHeader .nav{min-width:0}
  #siteHeader .nav-right{min-width:0}
}
@media(max-width:379px){
  #siteHeader .wrap.nav{padding-inline:16px}
  #siteHeader .nav-right{gap:5px}
  #siteHeader .logo-chip span{font-size:18px}
  #siteHeader .lang-btn{width:44px;min-width:44px;padding:0}
  #siteHeader .lang-btn>span:first-of-type{
    position:absolute;width:1px;height:1px;padding:0;margin:-1px;
    overflow:hidden;clip-path:inset(50%);white-space:nowrap
  }
  #siteHeader .lang-btn>.chev{display:none}
}
@media(max-width:359px){
  .wrap{padding-inline:16px}
  .partner-card{padding-inline:10px}
  .partner-name{overflow-wrap:anywhere;text-align:center}
}
@media(orientation:landscape) and (max-height:500px){
  #siteHeader .mobile-menu nav{padding-top:0;padding-bottom:12px}
  .story-stage{min-height:0}
  .story-static-content{top:clamp(64px,14svh,88px)}
}
/* Keep the editorial column comfortable without leaving excessive unused
   space on 2K/4K displays; the header shares exactly the same --maxw. */
@media(min-width:1800px){
  :root{--maxw:clamp(1120px,70vw,1760px)}
  main .section-head h2{font-size:clamp(32px,2vw,46px)}
  main .section-head p{font-size:clamp(15px,.9vw,19px)}
  .vertex-news-title{font-size:clamp(20px,1vw,24px)}
}
@media(prefers-reduced-motion:reduce){
  #siteHeader .mobile-menu{scroll-behavior:auto}
}


/* Theme icon crossfade uses the selected mode, not the resolved page color.
   The System icon must animate even when System and the explicit mode look identical. */
#themeBtn{position:relative}
#themeBtn > :where(#themeIconSun,#themeIconMoon,.theme-system-icon){
  display:block!important;
  position:absolute;
  top:50%;left:50%;
  width:17px;height:17px;
  margin:0;
  transform:translate(-50%,-50%);
  opacity:0;
  pointer-events:none;
  transition:opacity 240ms cubic-bezier(.2,.8,.2,1);
}
#themeBtn[data-theme-mode="light"] > #themeIconMoon,
#themeBtn[data-theme-mode="dark"] > #themeIconSun,
#themeBtn[data-theme-mode="system"] > .theme-system-icon{opacity:1}
/* Preserve the right icon before the theme control initializes. */
html[data-theme="light"] #themeBtn:not([data-theme-mode]) > #themeIconMoon,
html[data-theme="dark"] #themeBtn:not([data-theme-mode]) > #themeIconSun{opacity:1}
@media(prefers-reduced-motion:reduce){
  #themeBtn > :where(#themeIconSun,#themeIconMoon,.theme-system-icon){transition:none!important}
}


/* System's icon uses a class selector. :where() above keeps the shared
   hidden-state rule less specific than the active mode selector. */
/* Remove the duplicate language picker inside the hamburger panel; the
   accessible language selector in the header stays available. */
#siteHeader .mobile-menu #mLangBtn{display:none!important}

/* Blink/WebKit allow exact 4px rounded scrollbar styling; Firefox keeps
   its native 'thin' option. Preserve the animated alpha from the scroller. */
@supports selector(::-webkit-scrollbar){
  *{scrollbar-width:auto;scrollbar-color:auto}
}

/* On phones the global .wrap padding shorthand resets .foot-bottom's top
   padding to zero. Restore breathing room below its divider without affecting desktop. */
@media(max-width:860px){
  footer .wrap.foot-bottom{padding-top:30px}
}
