@font-face{font-family:DM Sans;src:url(./DMSans-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:DM Sans;src:url(./DMSans-500.woff2)format("woff2");font-weight:500;font-display:swap}@font-face{font-family:DM Sans;src:url(./DMSans-700.woff2)format("woff2");font-weight:700;font-display:swap}:root{--ink:#1f2328;--ink-2:#3a4148;--slate:#5b6770;--line:#1f23281a;--bg:#fff;--glass:#ffffff9e;--glass-strong:#fffc;--glass-rim:#fffffff2;--shadow:0 18px 50px #1c345424, 0 2px 6px #1c34540f;--accent:#5b6770;--radius:20px;--ease:cubic-bezier(.76, 0, .24, 1);--ease-out:cubic-bezier(.25, 1, .5, 1);--pad:24px;--safe-b:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;margin:0;overflow:hidden}body{color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-family:DM Sans,Helvetica Neue,Arial,sans-serif}button{font:inherit;color:inherit}.app{background:var(--bg);position:fixed;inset:0;overflow:hidden}.stage{position:absolute;inset:0}.stage canvas{touch-action:pan-y;outline:none;width:100%;height:100%;display:block}.app.is-explore .stage canvas{touch-action:none;cursor:grab}.app.is-explore .stage canvas:active{cursor:grabbing}.orb{filter:blur(24px);opacity:.9;pointer-events:none;background:radial-gradient(closest-side,#62d2f59e,#38a0f55c 48%,#2484f51f 74%,#2484f500 100%);width:78vw;max-width:1300px;height:78vw;max-height:1300px;animation:22s ease-in-out infinite alternate orb-drift;position:absolute;top:100%;left:50%;transform:translate(-50%,-50%)}@keyframes orb-drift{0%{transform:translate(-50%,-50%)translate(-2.4vmin,1vmin)scale(1)}50%{transform:translate(-50%,-50%)translate(1.2vmin,-1.3vmin)scale(1.02,.985)}to{transform:translate(-50%,-50%)translate(2.4vmin,.6vmin)scale(.99,1.015)}}.glass{background:var(--glass);-webkit-backdrop-filter:blur(20px)saturate(140%);backdrop-filter:blur(20px)saturate(140%);border:1px solid var(--glass-rim);box-shadow:var(--shadow), inset 0 1px 0 #ffffffe6}.header{top:var(--pad);left:calc(var(--pad) + 4px);z-index:4;letter-spacing:.01em;color:var(--ink);pointer-events:none;align-items:center;gap:10px;font-size:14px;font-weight:500;display:flex;position:absolute}.header .tag{letter-spacing:.12em;text-transform:uppercase;color:var(--slate);border:1px solid var(--line);background:#fff9;border-radius:99px;padding:4px 9px;font-size:11px}.card{z-index:5;left:50%;bottom:calc(24px + var(--safe-b));border-radius:var(--radius);width:min(880px,100% - 48px);transition:opacity .5s var(--ease-out), transform .6s var(--ease-out);grid-template-columns:minmax(0,1fr) auto;align-items:end;column-gap:36px;padding:24px 28px 22px;display:grid;position:absolute;top:auto;transform:translate(-50%)}.card>.progress{grid-column:1/-1}.card>.content{grid-column:1}.card>.actions{grid-column:2;justify-content:flex-end;flex-wrap:nowrap!important;margin-top:0!important}.card.is-info>.content{padding-right:40px}.card.is-hidden{opacity:0;pointer-events:none;transform:translate(-50%,16px)}.card .progress{gap:5px;margin-bottom:18px;display:flex}.card .progress[hidden]{display:none}.card .progress i{background:#1f23281f;border-radius:3px;flex:1;height:3px;transition:background .4s}.card .progress i.on{background:var(--ink)}.card .accent{background:var(--accent);border-radius:4px;width:30px;height:4px;margin-bottom:14px;transition:background .4s}.card .eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--slate);margin:0 0 8px;font-size:12px;font-weight:500}.card h2{letter-spacing:-.01em;text-wrap:balance;margin:0 0 8px;font-size:clamp(22px,2vw,27px);font-weight:700;line-height:1.14}.card p.body{color:var(--ink-2);max-width:62ch;margin:0;font-size:16px;line-height:1.5}.card .content{transition:opacity .28s, transform .4s var(--ease-out)}.card .content.swap{opacity:0;transform:translateY(6px)}.card .actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:24px;display:flex}.card .close[hidden]{display:none}.card .close{cursor:pointer;background:#1f23280f;border:0;border-radius:50%;place-items:center;width:34px;height:34px;display:grid;position:absolute;top:14px;right:14px}.card .close:hover{background:#1f23281f}.btn{cursor:pointer;letter-spacing:.01em;white-space:nowrap;height:44px;transition:transform .2s var(--ease-out), background .2s, box-shadow .2s;border:0;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:15px;font-weight:500;display:inline-flex}.btn:active{transform:scale(.97)}.btn.primary{background:var(--ink);color:#fff;box-shadow:0 6px 16px #1f23282e}.btn.primary:hover{background:#000}.btn.secondary{border:1px solid var(--line);background:#ffffffb3}.btn.secondary:hover{background:#fff}.btn.ghost{color:var(--slate);background:0 0;padding:0 8px}.btn.ghost:hover{color:var(--ink)}.btn.cta{color:#fff;background:linear-gradient(135deg,#2484f5,#3fc8ef);box-shadow:0 8px 20px #2484f54d}.btn[disabled]{opacity:.4;pointer-events:none}.btn:focus-visible,.hotspot:focus-visible,.tool:focus-visible{outline-offset:3px;outline:2px solid #2484f5}.toolbar{z-index:5;left:50%;bottom:calc(24px + var(--safe-b));transition:opacity .4s var(--ease-out), transform .5s var(--ease-out);border-radius:999px;align-items:center;gap:4px;padding:6px;display:flex;position:absolute;transform:translate(-50%)}.toolbar.is-hidden{opacity:0;pointer-events:none;transform:translate(-50%,16px)}.tool{cursor:pointer;height:42px;color:var(--ink);white-space:nowrap;background:0 0;border:0;border-radius:999px;align-items:center;gap:8px;padding:0 16px;font-size:14px;font-weight:500;transition:background .2s;display:inline-flex}.tool:hover{background:#1f23280f}.tool.on{background:var(--ink);color:#fff}.tool svg{flex:none;width:18px;height:18px}.tool .dot{opacity:.35;background:currentColor;border-radius:50%;width:8px;height:8px}.tool.on .dot{opacity:1;background:#3fc8ef}.toolbar .sep{background:var(--line);width:1px;height:22px;margin:0 4px}.viewtools{z-index:5;border-radius:999px;flex-direction:column;gap:4px;padding:6px;transition:opacity .4s;display:flex;position:absolute;top:50%;right:24px;transform:translateY(-50%)}.viewtools.is-hidden{opacity:0;pointer-events:none}.viewtools .tool{justify-content:center;width:42px;padding:0}.hotspots{z-index:3;pointer-events:none;position:absolute;inset:0}.hotspot{border:1px solid var(--glass-rim);cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:auto;width:30px;height:30px;transition:opacity .35s, scale .35s var(--ease-out);will-change:transform;background:#ffffffc7;border-radius:50%;place-items:center;margin:-15px 0 0 -15px;padding:0;display:grid;position:absolute;top:0;left:0;box-shadow:0 6px 16px #1c34542e}.hotspot:before{content:"";background:var(--c,#5b6770);border-radius:50%;width:10px;height:10px}.hotspot:after{content:"";border:2px solid var(--c,#5b6770);opacity:0;animation:ping 2.4s var(--ease-out) infinite;border-radius:50%;position:absolute;inset:-1px}.hotspot.is-off{opacity:0;pointer-events:none;scale:.6}.hotspot.is-active{scale:1.15}.hotspot.is-active:before{box-shadow:0 0 0 4px color-mix(in srgb, var(--c) 25%, transparent)}@keyframes ping{0%{opacity:.55;transform:scale(1)}70%,to{opacity:0;transform:scale(1.9)}}.hotspot .label{white-space:nowrap;color:var(--ink);border:1px solid var(--glass-rim);opacity:0;pointer-events:none;transition:opacity .25s, transform .3s var(--ease-out);background:#ffffffdb;border-radius:99px;padding:6px 11px;font-size:13px;font-weight:500;position:absolute;top:50%;left:38px;transform:translateY(-50%)translate(-4px);box-shadow:0 4px 12px #1c34541f}.hotspot.flip .label{left:auto;right:38px;transform:translateY(-50%)translate(4px)}.hotspot:hover .label,.hotspot.show-label .label{opacity:1;transform:translateY(-50%)translate(0)}.reset{z-index:6;top:calc(var(--pad) - 7px);cursor:pointer;background:var(--ink);color:#fff;letter-spacing:.01em;height:38px;transition:background .2s, transform .2s var(--ease-out);border:0;border-radius:999px;align-items:center;gap:7px;padding:0 16px 0 13px;font-size:14px;font-weight:500;display:inline-flex;position:absolute;right:24px;box-shadow:0 6px 16px #1f23282e}.reset:hover{background:#000}.reset:active{transform:scale(.96)}.reset svg{width:16px;height:16px}.reset:focus-visible{outline-offset:3px;outline:2px solid #2484f5}.app.is-loading .reset{opacity:0;pointer-events:none}@media (max-width:560px){.reset{height:34px;padding:0 13px 0 11px;font-size:13px;right:12px}.header .tag{display:none}}.tip{z-index:6;pointer-events:none;color:var(--ink);white-space:nowrap;border:1px solid var(--glass-rim);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;background:#ffffffe6;border-radius:99px;align-items:center;gap:7px;padding:7px 12px 7px 10px;font-size:13px;font-weight:500;transition:opacity .18s;display:flex;position:absolute;top:0;left:0;box-shadow:0 6px 16px #1c345429}.tip svg{width:16px;height:16px}.tip.on{opacity:1}.hint{z-index:4;right:28px;bottom:calc(30px + var(--safe-b));color:var(--slate);letter-spacing:.02em;pointer-events:none;align-items:center;gap:8px;font-size:12px;font-weight:500;transition:opacity .6s;display:flex;position:absolute}.hint svg{width:18px;height:18px}.hint.is-hidden{opacity:0}.loader{z-index:10;transition:opacity .6s var(--ease-out);place-items:center;display:grid;position:absolute;inset:0}.loader .box{text-align:left;border-radius:18px;width:min(300px,70vw);padding:22px 24px}.loader .t{margin-bottom:4px;font-size:16px;font-weight:700}.loader .s{color:var(--slate);margin-bottom:14px;font-size:13px}.loader .bar{background:#1f23281a;border-radius:3px;height:3px;overflow:hidden}.loader .bar i{background:var(--ink);width:0;height:100%;transition:width .25s;display:block}.app:not(.is-loading) .loader{opacity:0;pointer-events:none}.fallback{text-align:center;z-index:11;place-items:center;padding:24px;display:grid;position:absolute;inset:0}@media (max-width:899px),(max-aspect-ratio:1){:root{--pad:16px}.orb{width:150vw;height:150vw;top:100%;left:50%}.header{font-size:13px}.card{top:auto;left:12px;right:12px;bottom:calc(12px + var(--safe-b));border-radius:22px;flex-direction:column;align-items:stretch;width:auto;max-height:46%;padding:20px 20px 16px;display:flex;transform:none}.card>.actions{justify-content:flex-start;flex-wrap:wrap!important;margin-top:16px!important}.card.is-info>.content{padding-right:28px}.card.is-hidden{transform:translateY(24px)}.card .content{-webkit-overflow-scrolling:touch;overflow-y:auto}.card .progress{margin-bottom:16px}.card h2{margin-bottom:8px;font-size:21px}.card p.body{font-size:15px;line-height:1.45}.card .actions{gap:8px;margin-top:16px}.card .actions .btn{height:42px;padding:0 16px;font-size:14px}.card .actions .grow{flex:1}.toolbar{bottom:calc(12px + var(--safe-b));max-width:calc(100% - 24px)}.tool{height:40px;padding:0 12px;font-size:13px}.tool .txt-long{display:none}.viewtools{flex-direction:row;display:none;top:16px;right:10px;transform:none}.hint{left:0;right:0;bottom:calc(72px + var(--safe-b));justify-content:center}.hotspot{width:34px;height:34px;margin:-17px 0 0 -17px}}@media (max-width:560px){.toolbar{gap:2px;padding:5px}.toolbar .sep{display:none}.tool{gap:5px;padding:0 9px;font-size:12.5px}.tool svg{width:17px;height:17px}}@media (max-width:360px){.tool .txt{display:none}.tool{padding:0 13px}}@media (prefers-reduced-motion:reduce){.orb,.hotspot:after{animation:none}*{transition-duration:.01ms!important}}
.header .tag.demo{color:#1a6fd6;border-color:#2484f540;background:#eaf3fe;display:inline-block!important}@media (max-width:560px){.header{flex-wrap:wrap;row-gap:6px;max-width:calc(100% - 150px)}.header .tag.demo{font-size:10px;padding:3px 8px}}

/* Keep control focus from scrolling the fixed 3D stage out of its frame. */
.app{overflow:clip}

