@font-face{font-family:"RN Headline";src:url('./assets/fonts/rn-headline-inter-v4.1-latin.woff2') format('woff2');font-style:normal;font-weight:400 600;font-display:swap}
@font-face{font-family:"RN Headline Fallback";src:local("Segoe UI");font-style:normal;font-weight:400 500;size-adjust:100%;ascent-override:96.88%;descent-override:24.12%;line-gap-override:0%}
@font-face{font-family:"RN Headline Fallback";src:local("Segoe UI Semibold");font-style:normal;font-weight:600;size-adjust:100%;ascent-override:96.88%;descent-override:24.12%;line-gap-override:0%}
/* Login entrance tokens. Scene art direction is documented separately. */
:root{
  color-scheme:light;
  --rn-slate-50:#f5f6f7;--rn-slate-200:#d3d7de;--rn-slate-400:#949dae;--rn-slate-600:#647084;--rn-slate-700:#525c6d;--rn-slate-900:#0f1b2d;
  --rn-crimson-400:#e65b70;--rn-crimson-600:#ca1e38;--rn-crimson-700:#a6192e;
  --paper:#fafbfc;--surface:#f3f0e9;--text:var(--rn-slate-900);--secondary:var(--rn-slate-700);--muted:var(--rn-slate-600);
  --border:rgba(82,92,109,.22);--glass-rim:rgba(255,255,255,.7);--link:var(--rn-crimson-700);--focus:var(--rn-crimson-600);--shadow:rgba(15,27,45,.12);
  --sso-surface:#fff;--sso-text:var(--rn-slate-900);--sso-rule:rgba(15,27,45,.19);--status-error:#c0392b;
  --font:"Inter","Segoe UI",Arial,sans-serif;--page-gutter:3.7%;--design-width:1920px;--control-size:44px;
}
:root[data-theme=dark]{
  color-scheme:dark;--paper:#080d14;--surface:#202b3b;--text:var(--rn-slate-50);--secondary:var(--rn-slate-200);--muted:var(--rn-slate-400);
  --border:rgba(211,215,222,.22);--glass-rim:rgba(211,215,222,.12);--link:var(--rn-crimson-400);--focus:var(--rn-crimson-400);--shadow:rgba(0,0,0,.32);--sso-surface:#f4f2ee;--status-error:#e37563;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:var(--font);background:var(--paper);color:var(--text)}
body{display:flex;flex-direction:column;min-height:100svh;isolation:isolate;overflow-x:hidden}
button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{cursor:wait}
button:focus-visible,a:focus-visible{outline:2px solid var(--focus);outline-offset:2px}[hidden]{display:none!important}
.world{position:fixed;inset:0;z-index:-1;background:radial-gradient(ellipse at 28% 35%,rgba(211,220,227,.32),transparent 65%),var(--paper)}
[data-theme=dark] .world{background:radial-gradient(ellipse at 28% 35%,#182333,transparent 68%),var(--paper)}
.world:before{content:"";position:absolute;inset:0;background:url('./assets/world-desktop-light.webp') center/cover no-repeat;opacity:1;transition:opacity 1s;pointer-events:none}
[data-theme=dark] .world:before{background-image:url('./assets/world-desktop-dark.webp')}
.world canvas{position:relative;display:block;width:100%;height:100%;opacity:0;transition:opacity 1s}
.scene-active .world canvas{opacity:1}.scene-active .world:before{opacity:0}
.header{position:absolute;inset:0 0 auto;z-index:5;display:flex;align-items:center;justify-content:space-between;padding:22px var(--page-gutter);gap:20px;width:100%;max-width:var(--design-width);margin-inline:auto}
.identity{display:flex;align-items:center;gap:19px;font-size:.875rem;font-weight:500;letter-spacing:-.01em;min-width:0}
.identity img{width:125px;height:auto;display:block}
[data-theme=dark] .identity img{background:rgba(245,246,247,.92);border-radius:4px;padding:4px 6px}
.identity-divider{width:1px;height:23px;background:var(--border);flex:none}
.header nav{display:flex;gap:8px;flex:none}
.control{display:flex;align-items:center;justify-content:center;gap:8px;min-width:var(--control-size);min-height:var(--control-size);padding:10px 15px;background:color-mix(in srgb,var(--paper) 75%,transparent);color:var(--secondary);border:1px solid var(--border);border-radius:100px;font-size:.8125rem;backdrop-filter:blur(16px);transition:background .2s,color .2s}
.control:hover{background:var(--paper);color:var(--text)}.theme-icon{font-size:1.15rem;line-height:1}.motion-icon{font-size:1rem;letter-spacing:-.1em;width:15px;text-align:center}
.layout{display:grid;grid-template-columns:minmax(0,64fr) minmax(340px,36fr);flex:1;min-height:calc(100svh - 64px);width:100%;padding:100px var(--page-gutter) 32px;align-items:center;max-width:var(--design-width);margin-inline:auto}
.brand-stage{position:relative;align-self:stretch;min-height:570px;min-width:0;pointer-events:none;--logo-width:82%}
/* The untransformed poster rect is also the live model's layout contract. */
.logo-fallback{position:absolute;left:calc((100% - var(--logo-width))/2);top:25%;width:var(--logo-width);height:auto;aspect-ratio:960/380;object-fit:contain;filter:drop-shadow(0 24px 21px rgba(41,29,39,.13));transition:opacity 1s;pointer-events:none}
.logo-ready .logo-fallback{opacity:0}
.brand-copy{position:absolute;left:2.8%;bottom:3%;width:calc(100% - 2.8%);max-width:580px;padding-right:20px;font-family:"RN Headline","RN Headline Fallback",var(--font);font-optical-sizing:auto;font-synthesis:none}
h1{font-size:clamp(1.8rem,2.5vw,2.4rem);font-weight:500;line-height:1.15;letter-spacing:-.055em;margin:0}
h1 span{color:var(--secondary)}
.brand-description{font-size:1rem;font-weight:400;color:var(--secondary);line-height:1.6;margin:14px 0 0;max-width:430px}
.login-zone{position:relative;z-index:3;display:flex;justify-content:flex-end;align-items:center;min-width:0;padding:0 1.5% 0 0;pointer-events:none}
.login-card{pointer-events:auto;position:relative;width:100%}.card-content{position:relative;overflow:visible}
h2{font-size:1.5rem;font-weight:600;letter-spacing:-.025em;line-height:1.35;margin:0 0 6px}
.description{font-size:.875rem;line-height:1.6;color:var(--secondary);margin:0 0 28px}
.sso-button{width:100%;min-height:54px;padding:12px 18px;border:1px solid var(--sso-rule);border-radius:8px;background:var(--sso-surface);color:var(--sso-text);box-shadow:0 2px 5px rgba(15,27,45,.06);display:flex;align-items:center;justify-content:center;gap:12px;font-size:.875rem;font-weight:600;transition:box-shadow .2s,border-color .2s}
.sso-button:hover{border-color:rgba(15,27,45,.32);box-shadow:0 3px 9px rgba(15,27,45,.09)}
.sso-button:disabled{opacity:.8}.sso-button img{display:block;flex:none}
.account-note{font-size:.75rem;color:var(--secondary);line-height:1.6;margin:16px 0 0}
.footer{position:relative;flex-shrink:0;width:100%;max-width:var(--design-width);margin-inline:auto;padding:24px var(--page-gutter);display:flex;justify-content:space-between;align-items:center;gap:16px;font-size:.75rem;line-height:1.4;letter-spacing:.1em;color:var(--secondary);pointer-events:none}
.footer-dot{margin:0 8px}
.secondary-button{width:100%;display:flex;justify-content:center;align-items:center;gap:12px;min-height:48px;color:var(--text);background:var(--glass-rim);border:1px solid var(--border);border-radius:8px;padding:12px 16px;font-size:.875rem}
.progress-orb{display:block;width:28px;height:28px;margin:0 auto 20px;border:1px solid var(--border);border-top-color:var(--link);border-radius:50%;animation:spin 1s linear infinite}
.preview-finished .progress-orb{animation:none;background:var(--link);box-shadow:inset 0 0 0 7px var(--surface)}
.preview-error .progress-orb{background:var(--status-error)}
@keyframes spin{to{transform:rotate(360deg)}}
.skip-link{position:absolute;left:20px;top:-80px;z-index:10;background:var(--surface);color:var(--text);padding:12px 18px;border-radius:8px}.skip-link:focus{top:15px}
@media(min-width:1700px){:root{--page-gutter:5%}.login-zone{justify-content:center}.brand-stage{min-height:640px}.brand-copy{bottom:7%}}
@media(min-width:900px) and (max-width:1100px){:root{--page-gutter:3%}.layout{grid-template-columns:minmax(0,59fr) minmax(340px,41fr)}.brand-copy{left:0;bottom:4%}h1{font-size:2.05rem}.brand-description{max-width:315px;font-size:.875rem}.brand-stage{--logo-width:88%}.login-zone{padding:0}}
/* Must match STACK_BREAKPOINT = 900 in scene/layout-constants.js. */
@media(max-width:899px){
  .header{position:relative;padding:15px max(20px,env(safe-area-inset-right)) 15px max(20px,env(safe-area-inset-left));gap:12px}
  .identity{gap:12px;font-size:.76rem}.identity img{width:101px}.identity-divider{height:20px}.header nav{gap:7px}.control{padding:10px}.control-label{display:none}
  .layout{display:flex;flex-direction:column;padding:0 max(22px,env(safe-area-inset-right)) 30px max(22px,env(safe-area-inset-left));min-height:0;gap:22px}
  .brand-stage{align-self:auto;width:100%;max-width:470px;height:max(300px,var(--stage-min-height,300px));min-height:max(300px,var(--stage-min-height,300px));flex:none;--logo-width:min(calc(100vw - 90px),340px)}
  .logo-fallback{top:64px}
  .brand-copy{left:0;right:0;bottom:12px;width:100%;max-width:none;padding:0;text-align:center}
  h1{font-size:1.45rem;letter-spacing:-.04em;line-height:1.28}h1 span{display:inline;font-size:inherit;letter-spacing:inherit}.brand-description{display:none}
  .login-zone{width:100%;max-width:430px;padding:0;justify-content:center}
  .footer{flex-wrap:wrap;row-gap:8px;padding:20px max(22px,env(safe-area-inset-right)) 20px max(22px,env(safe-area-inset-left));letter-spacing:.06em}.footer-dot{margin:0 4px}
  .world:before{background-image:url('./assets/world-mobile-light.webp')}[data-theme=dark] .world:before{background-image:url('./assets/world-mobile-dark.webp')}
}
@media(max-width:370px){.header{padding-inline:14px}.identity img{width:84px}.identity{gap:8px;font-size:.74rem}.layout{padding-inline:16px}.footer{padding-inline:16px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}.world canvas{transition:none}}

/* Editorial type stays still; only the decorative ruby rule may reveal once. */
.brand-accent{display:block;width:32px;height:2px;margin:0 0 14px;background:var(--link);border-radius:1px;transform-origin:left center;pointer-events:none}
.vision-headline{font-size:clamp(1.8rem,2.6vw,2.625rem);font-weight:500;line-height:1.16;letter-spacing:-.03em;text-wrap:balance}
.vision-headline span{font-weight:600;color:var(--text)}
@media(min-width:900px) and (max-width:1100px){.vision-headline{font-size:clamp(1.75rem,3.1vw,2rem);line-height:1.2;letter-spacing:-.025em}.brand-description{font-size:.9375rem}}
@media(max-width:899px){.brand-accent{display:none}.vision-headline{font-size:clamp(1.25rem,5.55vw,1.5rem);line-height:1.28;letter-spacing:-.02em}}
