/* Homepage hero: a lightweight, explorable architectural sculpture. */
.launch { --launch-rx:0deg; --launch-ry:0deg; --launch-spread:0px; --launch-drift:0px; --launch-turn:0deg; --launch-scale:1; --launch-fade:1; --launch-wire-scale:1; --launch-label-fade:1; position:relative; isolation:isolate; background:var(--stone); color:var(--ink); overflow:clip; }
.launch__terrain { position:absolute; inset:0; z-index:-1; pointer-events:none; }
.launch__field { display:block; width:100%; height:100%; mask-image:linear-gradient(90deg,#0008,#000 65%); }
.launch__layout { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,1fr); gap:2.5rem; align-items:center; padding-block:clamp(1rem,3svh,2rem); min-height:calc(100svh - 72px); }
.launch__copy { position:relative; z-index:2; padding-bottom:1rem; }
.launch__intro { display:flex; flex-wrap:wrap; align-items:center; gap:.5rem 1rem; margin:0 0 1.25rem; font-size:.8rem; color:var(--ink-3); }
.launch__availability { display:inline-flex; align-items:center; gap:.45rem; }
.launch__availability i { width:6px; height:6px; border-radius:50%; background:#d94c1e; box-shadow:0 0 0 4px #d94c1e12; }
.launch__title { max-width:14ch; margin:0; font-family:var(--display); font-size:clamp(3rem,min(5.45vw,8.9svh),4.9rem); font-weight:600; font-variation-settings:"wdth" 94,"wght" 600; line-height:1.01; letter-spacing:-.052em; text-wrap:balance; }
.launch__title em,.launch__title strong { font:inherit; color:var(--mark-ink); }
.launch__lead { max-width:50ch; margin:1.25rem 0 0; font-size:clamp(1rem,1.25vw,1.125rem); line-height:1.55; color:var(--ink-2); }
.launch__actions { display:flex; align-items:center; flex-wrap:wrap; gap:1.1rem 1.25rem; margin-top:1.25rem; }
.launch__work { display:inline-flex; align-items:center; justify-content:space-between; gap:1.5rem; padding:1rem 1.2rem; min-height:56px; border-radius:4px; color:#f9f8f1; background:#191d22; text-decoration:none; font-size:.95rem; font-weight:500; transition:background .2s; }
.launch__work svg { width:22px; height:22px; }
.launch__work:hover { background:#344e5a; }
.launch__email { font-size:.85rem; letter-spacing:0; min-height:44px; overflow-wrap:anywhere; }
.launch__system { position:relative; z-index:1; min-width:0; }
.launch__visual { position:relative; width:100%; height:clamp(250px,calc(100svh - 310px),480px); margin-left:0; perspective:1100px; touch-action:pan-y; }
.launch__rig { width:100%; height:100%; transform:rotateX(var(--launch-rx)) rotateY(var(--launch-ry)) scale(var(--launch-scale)); transform-style:preserve-3d; transition:transform .24s ease-out; pointer-events:none; }
.launch__scene { display:block; width:100%; height:100%; overflow:visible; pointer-events:none; }
/* Separate wrappers compose interactive expansion with each plane's ambient float. */
.launch__depth { transform-box:view-box; transform-origin:310px 310px; opacity:var(--launch-fade); transition:transform .65s cubic-bezier(.2,.7,.2,1),opacity .45s ease; }
.launch__depth--interface { transform:translate(var(--launch-drift),calc(-1 * var(--launch-spread))) rotate(calc(-1 * var(--launch-turn))); }
.launch__depth--application { transform:translate(calc(-.45 * var(--launch-drift)),0) rotate(calc(.35 * var(--launch-turn))); }
.launch__depth--data { transform:translate(calc(-.65 * var(--launch-drift)),var(--launch-spread)) rotate(var(--launch-turn)); }
.launch__shadow { transform-box:fill-box; transform-origin:center; transform:scaleX(var(--launch-scale)); transition:transform .5s; }
.launch__plane { transform-box:fill-box; transform-origin:center; transition:filter .65s,opacity .65s; }
.launch__plane--interface { --launch-lift:-10px; --launch-delay:0s; }
.launch__plane--application { --launch-lift:-5px; --launch-delay:-1.7s; }
.launch__plane--data { --launch-lift:5px; --launch-delay:-3.4s; }
.launch__ground { opacity:var(--launch-fade); transition:opacity .45s; }
.launch__shadow { opacity:calc(var(--launch-fade) * .1); }
.launch[data-active-layer=interface] .launch__plane--interface,
.launch[data-active-layer=application] .launch__plane--application,
.launch[data-active-layer=data] .launch__plane--data { filter:drop-shadow(0 9px 7px #30414e33); }
.launch[data-active-layer=application] .launch__plane--interface,
.launch[data-active-layer=data] .launch__plane--interface { opacity:.88; }
.launch[data-active-layer=data] .launch__plane--application { opacity:.9; }
.launch__inspector { position:relative; z-index:3; margin:0 0 0 1.2rem; padding-top:1.15rem; border-top:1px solid #5065743d; }
.launch__journey-label { margin:0 0 .65rem; color:#506574; font-size:.73rem; font-weight:600; letter-spacing:.02em; }
.launch__layers { display:flex; flex-wrap:wrap; gap:.4rem; }
.launch__layers[hidden] { display:none; }
.launch__layers button { cursor:pointer; padding:.6rem .85rem; min-height:44px; border:1px solid transparent; border-radius:4px; font-family:var(--body); font-size:.84rem; color:#506574; background:transparent; transition:background .2s,color .2s; }
.launch__layers button:hover { background:#5065740d; }
.launch__layers button[aria-pressed=true] { color:#fff9f0; border-color:#344e5a; background:#344e5a; }
.launch__explanation { display:grid; grid-template-columns:1fr; gap:.3rem; padding-block:.9rem 0; min-height:4rem; max-width:46ch; }
.launch__caption { font-weight:600; }
.launch.is-enhanced .launch__caption { display:none; }
.launch__explanation p { margin:0; font-size:.85rem; line-height:1.6; color:#555e63; }
.launch__motion { display:inline-flex; align-items:center; gap:.5rem; min-height:44px; padding:.4rem 0; border:0; background:transparent; color:#506574; font-size:.75rem; cursor:pointer; }
.launch__motion[hidden] { display:none; }
.launch a:focus-visible,.launch button:focus-visible { outline:3px solid #cc4b20; outline-offset:5px; }
.launch.has-motion .launch__plane { animation:launch-assemble 1.15s cubic-bezier(.16,1,.3,1) var(--launch-enter-delay,0s) both; }
.launch.is-motion-paused .launch__scene * { animation-play-state:paused!important; }
@keyframes launch-assemble { from { translate:var(--launch-enter-x,0px) var(--launch-enter-y,55px); rotate:var(--launch-enter-rotate,-3deg); } to { translate:0 0; rotate:0deg; } }

@media(max-width:1100px) and (min-width:761px) { .launch__layout { gap:1.25rem; padding-block:1.5rem; } .launch__title { font-size:clamp(2.7rem,min(5.4vw,8.1svh),4.1rem); } .launch__visual { width:100%; margin-left:0; } .launch__inspector { margin-left:0; } }
@media(max-width:760px) {
 .launch__layout { grid-template-columns:1fr; gap:1.25rem; padding-block:2rem; min-height:0; }
 .launch__intro { margin-bottom:1.5rem; font-size:.75rem; }
 .launch__title { font-size:clamp(2.85rem,9.2vw,4.6rem); max-width:15ch; line-height:1.02; }
 .launch__lead { max-width:54ch; font-size:1rem; margin-top:1.4rem; }
 .launch__actions { gap:.75rem 1.25rem; margin-top:1.5rem; }
 .launch__system { width:100%; max-width:540px; justify-self:center; }
 .launch__visual { width:100%; height:clamp(240px,65vw,360px); margin-left:0; }
 .launch__inspector { margin-left:0; }
 .launch__explanation { min-height:4.8rem; max-width:50ch; }

}
@media(max-width:380px) { .launch__title { font-size:2.7rem; } .launch__email { font-size:.78rem; } .launch__layers button { padding:.6rem .7rem; font-size:.8rem; } }
@media(prefers-reduced-motion:reduce) { .launch *, .launch *::before,.launch *::after { animation:none!important; transition:none!important; } .launch__rig,.launch__depth { transform:none; } .launch__depth { opacity:1; } }

@media(min-width:761px) and (max-height:700px) {
 .launch__layout { padding-block:1rem; gap:1.5rem; }
 .launch__title { font-size:clamp(2.45rem,8.4svh,3.7rem); max-width:16ch; }
 .launch__intro { margin-bottom:.8rem; }
 .launch__lead { font-size:.95rem; margin-top:1rem; }
 .launch__actions { margin-top:1rem; gap:.65rem 1rem; }
 .launch__work { min-height:48px; padding:.7rem 1rem; }
 .launch__visual { height:clamp(200px,calc(100svh - 280px),380px); }
 .launch__inspector { padding-top:.65rem; }
}
body.admin-bar .launch__layout { min-height:calc(100svh - 104px); }
@media(max-width:760px) { body.admin-bar .launch__layout { min-height:0; } }

/* A request journey replaces the abstract slab stack. */
.launch__routes { opacity:var(--launch-fade); transition:opacity .45s; pointer-events:none; }
.launch__route-base { stroke:#78959b; stroke-width:2; stroke-dasharray:4 6; opacity:.28; transition:stroke .35s,opacity .35s,stroke-width .35s; }
.launch__packet { stroke:#dd5320; stroke-width:5; stroke-dasharray:3 97; stroke-dashoffset:3; opacity:0; filter:drop-shadow(0 0 4px #dd532080); }
.launch__packet--return { stroke:#3d7888; }
.launch__core-aura { opacity:.12; transform-box:fill-box; transform-origin:center; }
.launch__reply-badge { opacity:0; transform:translateY(6px); transition:opacity .35s,transform .35s; }
.launch__request-note { opacity:var(--launch-label-fade); transition:opacity .3s; }
.launch__browser-orb { transform-box:fill-box; transform-origin:center; }
.launch__demo-controls { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.5rem 1rem; }
.launch__run { display:inline-flex; align-items:center; gap:1rem; min-height:44px; padding:.5rem .75rem; border:1px solid #829491; border-radius:4px; background:#f7f4ec; color:#344e5a; font-size:.78rem; cursor:pointer; }
.launch__run:hover { background:#fffdf7; border-color:#344e5a; }
.launch[data-request-phase=send] .launch__demo-button { fill:#b93f16; }
.launch[data-request-phase=send] .launch__route-base--request,
.launch[data-request-phase=process] .launch__route-base--request,
.launch[data-request-phase=store] .launch__route-base--request,
.launch[data-request-phase=store] .launch__route-base--store { stroke:#dd5320; stroke-width:2.5; opacity:.8; }
.launch[data-request-phase=reply] .launch__route-base { stroke:#3d7888; stroke-width:2.5; opacity:.8; }
.launch[data-request-phase=process] .launch__core-aura { opacity:1; }
.launch[data-request-phase=store] .launch__db-lights { fill:#fff0ac; }
.launch[data-request-phase=reply] .launch__reply-badge { opacity:1; transform:translateY(0); }
.launch.has-motion[data-request-phase=send] .launch__packet--request,
.launch.has-motion[data-request-phase=store] .launch__packet--store,
.launch.has-motion[data-request-phase=reply] .launch__packet--return { animation:launch-packet 1.35s cubic-bezier(.4,0,.25,1) both; }
.launch.has-motion[data-request-phase=process] .launch__core-aura { animation:launch-process 1.4s ease-in-out infinite; }
.launch.has-motion[data-request-phase=store] .launch__db-ring { animation:launch-write 1.4s ease-in-out infinite; }
.launch.has-motion[data-request-phase=reply] .launch__preview-lines { animation:launch-content .8s ease-out both; }
.launch.has-motion .launch__browser-orb { animation:launch-orb 6s ease-in-out infinite; }
@keyframes launch-packet { 0% { stroke-dashoffset:3; opacity:0; } 8%,88% { opacity:1; } 100% { stroke-dashoffset:-100; opacity:0; } }
@keyframes launch-process { 0%,100% { transform:scale(1); opacity:.45; } 50% { transform:scale(1.12); opacity:1; } }
@keyframes launch-write { 0%,100% { opacity:.4; } 50% { opacity:1; stroke-width:3; } }
@keyframes launch-content { from { opacity:.2; } to { opacity:1; } }
@keyframes launch-orb { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-7px); } }
@media(max-width:760px) { .launch__request-note { display:none; } }
@media(prefers-reduced-motion:reduce) { .launch__reply-badge { transition:none; } }
