*{box-sizing:border-box;margin:0;padding:0}html,body{color:#f5f5f5;-webkit-font-smoothing:antialiased;background:#050505;height:100%;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;overflow:hidden}.portal{cursor:crosshair;position:fixed;inset:0}.portal__canvas{display:block;position:absolute;inset:0}.portal__brand{letter-spacing:.35em;color:#f5f5f58c;-webkit-user-select:none;user-select:none;font-size:.8rem;font-weight:700;position:absolute;top:1.5rem;left:1.75rem}.portal__panel{text-align:center;flex-direction:column;align-items:center;gap:1rem;width:min(92vw,34rem);transition:opacity .4s;display:flex;position:absolute;bottom:9vh;left:50%;transform:translate(-50%)}.portal--warp .portal__panel,.portal--warp .portal__brand{opacity:0;pointer-events:none}.portal__lead{color:#f5f5f5bf;min-height:1.5em;font-size:clamp(.95rem,2.4vw,1.1rem)}.portal__cta{color:#f5f5f5;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#061812b8;border:1px solid #34d39973;border-radius:999px;align-items:center;gap:.9rem;padding:.55rem 1.5rem .55rem .55rem;font-family:inherit;font-size:1.05rem;transition:border-color .25s,box-shadow .25s,transform .15s;display:flex}.portal__cta:hover{border-color:#34d399;transform:translateY(-2px);box-shadow:0 0 32px #34d39959}.portal__cta strong{color:#34d399}.portal__ring{flex-shrink:0;width:3.2rem;height:3.2rem}.portal__ring-track,.portal__ring-bar{fill:none;stroke-width:3px}.portal__ring-track{stroke:#34d3992e}.portal__ring-bar{stroke:#34d399;stroke-linecap:round;transform-origin:50%;transition:stroke-dashoffset 1s linear;transform:rotate(-90deg)}.portal__ring-num{fill:#f5f5f5;text-anchor:middle;dominant-baseline:middle;font-size:18px;font-weight:700}.portal__hint{letter-spacing:.04em;color:#f5f5f559;font-size:.78rem}.portal__flash{opacity:0;pointer-events:none;background:radial-gradient(circle at 50% 42%,#34d399 0%,#059669 32%,#022c22 70%,#050505 100%);position:absolute;inset:0}.portal--warp .portal__flash{animation:1.5s ease-in forwards portal-flash}@keyframes portal-flash{0%{opacity:0}55%{opacity:0}85%{opacity:1}to{opacity:1}}@media (prefers-reduced-motion:reduce){.portal--warp .portal__flash{opacity:1;transition:opacity .3s;animation:none}}
