/* /aisuite/ : Workspace, the AI Securitization Toolkit. Commercial landing page, round 20.
   Built on the page's existing .s7, .ph7, .wrap and .btn system. Tokens only. Two local values are
   declared on .wsl because no token exists for them: the frame shadows, which are product-screen
   depth and appear nowhere else on the site. The body carries a CSS zoom, so type uses calc(N * var(--u)). */
.wsl{--wsl-shadow-lg:0 calc(var(--sp-6) + var(--sp-1)) calc(var(--sp-20) - var(--sp-1)) rgba(0,0,0,.42);--wsl-shadow-md:0 var(--sp-4) var(--sp-12) rgba(0,26,39,.14)}
.wsl .s7__h{margin-bottom:calc(14 * var(--u))}
.wsl .ph7__st{margin-bottom:calc(14 * var(--u))}
.wsl-tt span{display:block}
/* Product screens sit in one quiet frame, so a picture always reads as the real product. */
.wsl-shot{margin:0;min-width:0}
.wsl-frame{border-radius:var(--r-lg);overflow:hidden;background:var(--ground-white);border:1px solid var(--rl);box-shadow:var(--wsl-shadow-md)}
.dk .wsl-frame{box-shadow:var(--wsl-shadow-lg)}
.wsl-frame__bar{color-scheme:light;display:flex;align-items:center;gap:var(--sp-2);min-height:calc(40 * var(--u));padding:0 var(--sp-1) 0 var(--sp-3);background:var(--n-50);border-bottom:1px solid var(--on-light-rule)}
.wsl-frame__bar i{width:var(--sp-2);height:var(--sp-2);border-radius:var(--r-xs);background:var(--n-200)}
.wsl-frame img{display:block;width:100%;height:auto}
.wsl-pre-img{opacity:0}
.wsl-frame img{transition:opacity var(--dur-slow) var(--ease)}
.wsl-zoom{display:inline-flex;align-items:center;min-height:calc(44px / var(--pz));margin-left:auto;padding:0 var(--sp-3);border-radius:var(--r-sm);font-size:max(calc(13 * var(--u)),var(--floor));font-weight:var(--fw-semibold);color:var(--blue-800);text-decoration:none;transition:background var(--dur) var(--ease)}
.wsl-zoom:hover{background:var(--n-200);text-decoration:underline;text-underline-offset:3px}
.wsl-cap{margin:var(--sp-3) 0 0;font-size:max(calc(13 * var(--u)),var(--floor));color:var(--fg3)}
.dk .wsl-cap{color:var(--fg2)}
/* Hero: the promise, both routes with their availability{display:grid;grid-template-columns:minmax(0,1fr);gap:calc(48 * var(--u))}
/* Product sections: copy and a large screen{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:var(--sp-20);align-items:center}
.wsl .wsl-note{margin:var(--sp-4) 0 0;font-size:max(calc(14 * var(--u)),var(--floor));line-height:var(--lh-normal);color:var(--fg2);text-wrap:pretty}
/* Assessment outcomes: names and how they relate{padding:var(--sp-8);background:var(--ground-mist);border:1px solid var(--rl);border-radius:var(--r-lg)}
/* Atlas Markets: one compact cross-link{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--sp-4) var(--sp-10);margin-top:var(--sp-8);padding-top:var(--sp-6);border-top:1px solid var(--rl)}
/* Waitlist */
.wsl.fo8 .wl+.wsl-note{margin-top:var(--sp-3)}
.wsl.fo8 .wsl-note+.fo8__disc{margin-top:var(--sp-1)}
/* Focus: visible on every control, on both grounds. */
.wsl summary:focus-visible,.wsl a:focus-visible,.wsl-dlg button:focus-visible,.wsl-dlg__v:focus-visible{outline:2px solid var(--ink-accent);outline-offset:2px}
.wsl-frame .wsl-zoom:focus-visible{outline-color:var(--blue-800);outline-offset:-2px}
/* The enlarged picture: the caption travels with it. Pinch zoom stays available; nothing blocks it. */
.wsl-dlg{width:calc(var(--vw) - var(--sp-8));max-width:calc(var(--vw) - var(--sp-8));height:calc(var(--vh) - var(--sp-8));max-height:calc(var(--vh) - var(--sp-8));margin:auto;padding:0 var(--sp-4) var(--sp-4);display:none;grid-template-rows:auto minmax(0,1fr) auto;border:0;border-radius:var(--r-lg);background:var(--ground-white);color:var(--on-light-1)}
.wsl-dlg[open]{display:grid}
.wsl-dlg::backdrop{background:rgba(0,26,39,.72)}
.wsl-dlg__bar{display:flex;justify-content:flex-end;padding:var(--sp-2) 0}
.wsl-dlg__x{min-height:calc(44px / var(--pz));min-width:calc(44px / var(--pz));padding:0 var(--sp-4);background:transparent;border:1px solid var(--on-light-rule);border-radius:var(--r-sm);font:inherit;font-size:max(calc(15 * var(--u)),var(--floor));font-weight:var(--fw-semibold);color:var(--on-light-1);cursor:pointer}
.wsl-dlg__x:hover{background:var(--ground-mist)}
.wsl-dlg__v{overflow:auto;touch-action:auto;border:1px solid var(--on-light-rule);border-radius:var(--r-sm);background:var(--ground-mist)}
.wsl-dlg__v img{display:block;width:100%;height:auto;min-width:calc(960px / var(--pz))}
.wsl-dlg .wsl-cap{color:var(--on-light-2)}
/* One short reveal per section's heading block, added only by the script. */
.wsl-pre{opacity:0;transform:translateY(calc(10 * var(--u)))}
[data-wsl-rv]{transition:opacity var(--dur-slow) var(--ease),transform var(--dur-slow) var(--ease)}
html.rm [data-wsl-rv],html.rm .wsl-frame img{transition:none!important;transform:none!important;opacity:1!important}
@media (prefers-reduced-motion:reduce){[data-wsl-rv],.wsl-frame img{transition:none!important;transform:none!important;opacity:1!important}}
@media print{.wsl-pre,.wsl-pre-img{opacity:1!important;transform:none!important}.wsl-dlg{display:none!important}}
/* The launcher never covers content: it steps aside while the waitlist is on screen, and below 1280
   it would sit over the column at rest, so it leaves. The header and menu keep Talk to the team. */
.talkfab.wsl-fab-off{opacity:0;visibility:hidden}
@media (max-width:1279px){.talkfab{display:none!important}}
@media (max-width:767px){
 .wsl-tt span{display:inline}
 .wsl-dlg{width:var(--vw);max-width:var(--vw);height:var(--vh);max-height:var(--vh);border-radius:0;padding:0 var(--sp-3) var(--sp-3)}
}
