/* ════════════════════════════════════════════════════════════════════
   Reactor — plasma motif
   1. Tokens            4. Auth card + form
   2. Plasma core       5. Mobile dock + menu sheet
   3. Auth stage        6. Light theme / reduced motion
   Everything that moves animates transform or opacity only, so it stays
   on the compositor.
   ════════════════════════════════════════════════════════════════════ */

/* ── 1. Tokens ─────────────────────────────────────────────────────── */
:root{
    --rx-smoke-0:#41209a;
    --rx-smoke-1:#1f1149;
    --rx-smoke-2:#0d0922;
    --rx-vignette:8,5,22;
    --rx-ink:#f8fafc;
    --rx-ink-soft:#a5adc6;
    --rx-ink-mute:#6b7391;
    --rx-oct:polygon(29.3% 0,70.7% 0,100% 29.3%,100% 70.7%,70.7% 100%,29.3% 100%,0 70.7%,0 29.3%);
    /* Tileable smoke: fractal noise mapped to a violet / blue alpha mask. */
    --rx-cloud-a:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='480'%3E%3Cfilter id='n' x='0' y='0' width='100%25' height='100%25' color-interpolation-filters='sRGB'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.008' numOctaves='4' seed='11' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .66 0 0 0 0 .48 0 0 0 0 1 2.6 0 0 0 -1.02'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    --rx-cloud-b:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='480'%3E%3Cfilter id='n' x='0' y='0' width='100%25' height='100%25' color-interpolation-filters='sRGB'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.011' numOctaves='4' seed='4' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .40 0 0 0 0 .56 0 0 0 0 1 2.5 0 0 0 -1.05'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ── 2. Plasma core ────────────────────────────────────────────────── */
/* Smoke layers, shared by the auth card and the menu banner: two tileable
   noise textures turning in opposite directions and screened together. */
.rx-smoke{position:absolute;pointer-events:none}
.rx-smoke--a,.rx-smoke--b,.rx-smoke--vortex{left:50%;top:50%;width:var(--rx-span,190%);aspect-ratio:1;margin:calc(var(--rx-span,190%) / -2) 0 0 calc(var(--rx-span,190%) / -2)}
.rx-smoke--a,.rx-smoke--b{background-repeat:repeat;mix-blend-mode:screen;will-change:transform}
.rx-smoke--a{background-image:var(--rx-cloud-a);background-size:430px auto;transform-origin:46% 54%;opacity:.92;animation:rxSwirl 90s linear infinite}
.rx-smoke--b{background-image:var(--rx-cloud-b);background-size:310px auto;transform-origin:55% 47%;opacity:.72;animation:rxSwirl 64s linear infinite reverse}
@keyframes rxSwirl{0%{transform:rotate(0deg) scale(1)}50%{transform:rotate(180deg) scale(1.12)}100%{transform:rotate(360deg) scale(1)}}
@keyframes rxBreathe{0%,100%{opacity:.6;transform:scale(.94)}50%{opacity:1;transform:scale(1.06)}}

/* The core fills an auth card (partials/reactor). */
.rx-core{position:absolute;inset:0;border-radius:inherit;overflow:hidden;isolation:isolate;background:radial-gradient(120% 85% at 50% 38%,var(--rx-smoke-0) 0%,var(--rx-smoke-1) 50%,var(--rx-smoke-2) 100%)}
.rx-smoke--core{left:50%;top:40%;width:130%;aspect-ratio:1;margin:-65% 0 0 -65%;border-radius:50%;background:radial-gradient(circle,rgba(150,105,255,.5),rgba(124,58,237,.16) 40%,transparent 64%);translate:calc(var(--rx-px,0px) * -1) calc(var(--rx-py,0px) * -1);transition:translate .6s cubic-bezier(.22,1,.36,1);animation:rxBreathe 6s ease-in-out infinite}
/* Streaks that only spin up while the form is submitting */
.rx-smoke--vortex{border-radius:50%;background:conic-gradient(transparent 0deg 20deg,rgba(206,186,255,.26) 42deg,transparent 72deg 140deg,rgba(130,170,255,.2) 166deg,transparent 200deg 258deg,rgba(206,186,255,.24) 288deg,transparent 322deg);opacity:0;transition:opacity .45s ease;animation:rxSpin 2.4s linear infinite;animation-play-state:paused}
.rx-smoke--flash{inset:0;background:radial-gradient(ellipse 85% 70% at 50% 42%,rgba(204,180,255,.5),transparent 74%);opacity:0;transition:opacity .45s ease}
.rx-smoke--vignette{inset:0;background:radial-gradient(ellipse 78% 68% at 50% 42%,transparent 26%,rgba(var(--rx-vignette),.42) 68%,rgba(var(--rx-vignette),.84) 100%)}
/* Soft light that follows the cursor through the smoke (reactor.js sets --rx-mx / --rx-my) */
.rx-core__spot{position:absolute;left:0;top:0;width:340px;height:340px;margin:-170px 0 0 -170px;border-radius:50%;background:radial-gradient(circle,rgba(196,170,255,.34),rgba(150,120,255,.1) 45%,transparent 68%);transform:translate3d(var(--rx-mx,0px),var(--rx-my,0px),0);opacity:0;transition:opacity .4s ease,transform .22s ease-out;pointer-events:none}
@media (hover:hover) and (pointer:fine){.rx-card:hover .rx-core__spot{opacity:1}}
.rx-core__embers{position:absolute;inset:0;pointer-events:none}
.rx-core__embers i{position:absolute;bottom:-8px;width:3px;height:3px;border-radius:50%;background:#dccfff;box-shadow:0 0 8px 1px rgba(190,160,255,.95);opacity:0;animation:rxCoreEmber 7s linear infinite}
.rx-core__embers i:nth-child(1){left:12%}
.rx-core__embers i:nth-child(2){left:27%;animation-delay:-2.6s;animation-duration:9s;width:2px;height:2px}
.rx-core__embers i:nth-child(3){left:46%;animation-delay:-5s;background:#a9c8ff}
.rx-core__embers i:nth-child(4){left:63%;animation-delay:-1.2s;animation-duration:8s;width:2px;height:2px}
.rx-core__embers i:nth-child(5){left:79%;animation-delay:-3.8s;animation-duration:10s}
.rx-core__embers i:nth-child(6){left:91%;animation-delay:-6.1s;background:#a9c8ff;width:2px;height:2px}
@keyframes rxCoreEmber{0%{transform:translate3d(0,0,0);opacity:0}10%{opacity:.9}72%{opacity:.5}100%{transform:translate3d(20px,-600px,0);opacity:0}}

/* States, set on the stage by reactor.js: a focused field charges the core,
   every keystroke sends a pulse through it, submitting spins up the vortex,
   a failed attempt flashes hot pink. */
.rx-stage.is-charged .rx-smoke--flash{opacity:.32}
.rx-stage.is-pulse .rx-smoke--flash{opacity:.78;transition-duration:.06s}
.rx-stage.is-busy .rx-smoke--flash{opacity:.7}
.rx-stage.is-busy .rx-smoke--vortex{opacity:1;animation-play-state:running}
.rx-stage.is-fail .rx-smoke--flash{background:radial-gradient(ellipse 85% 70% at 50% 42%,rgba(255,45,111,.55),transparent 74%);opacity:.9}
.rx-stage.is-fail .rx-card{box-shadow:0 34px 80px -24px rgba(0,0,0,.8),0 0 80px -12px rgba(255,45,111,.6)}
.rx-menu-open .rx-backdrop *,.rx-menu-open .rx-core *{animation-play-state:paused}

/* ── 3. Auth stage ─────────────────────────────────────────────────── */
.rx-stage{position:relative;isolation:isolate;overflow:hidden;overflow:clip;display:flex;align-items:center;justify-content:center;min-height:80vh;padding:40px 12px 48px}
.rx-stage--compact{min-height:62vh}
.rx-stage__content{position:relative;width:100%;max-width:448px}
@media (min-width:640px){.rx-stage{padding:64px 16px}}

/* Page backdrop (partials/auth-backdrop): dot grid, a breathing glow behind the card, drifting beams and embers */
.rx-backdrop{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.rx-backdrop__grid{position:absolute;inset:0;background-image:radial-gradient(rgba(167,139,250,.17) 1px,transparent 1.6px);background-size:22px 22px;-webkit-mask-image:radial-gradient(ellipse 85% 75% at 50% 46%,#000 18%,transparent 80%);mask-image:radial-gradient(ellipse 85% 75% at 50% 46%,#000 18%,transparent 80%)}
.rx-backdrop__halo{position:absolute;left:50%;top:52%;width:min(960px,170vw);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(96,36,226,.4),rgba(90,25,226,.14) 42%,transparent 68%);animation:rxHalo 7s ease-in-out infinite}
@keyframes rxHalo{0%,100%{opacity:.6;transform:translate(-50%,-50%) scale(.94)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.05)}}
.rx-backdrop__beam{position:absolute;top:-30%;left:0;width:34%;height:160%;background:linear-gradient(90deg,transparent,rgba(124,58,237,.11) 40%,rgba(96,165,250,.07) 60%,transparent);animation:rxBeam 16s ease-in-out infinite}
.rx-backdrop__beam--b{animation-duration:23s;animation-delay:-9s;width:22%}
@keyframes rxBeam{0%{transform:translateX(-60vw) rotate(18deg);opacity:0}15%{opacity:1}85%{opacity:1}100%{transform:translateX(140vw) rotate(18deg);opacity:0}}
.rx-embers{position:absolute;inset:0}
.rx-embers i{position:absolute;bottom:-12px;width:3px;height:3px;border-radius:50%;background:#c4b5fd;box-shadow:0 0 8px 1px rgba(167,139,250,.9);opacity:0;animation:rxEmber 11s linear infinite}
.rx-embers i:nth-child(1){left:8%;animation-duration:13s}
.rx-embers i:nth-child(2){left:19%;animation-delay:-4s;width:2px;height:2px}
.rx-embers i:nth-child(3){left:31%;animation-delay:-7.5s;animation-duration:15s;background:#93c5fd}
.rx-embers i:nth-child(4){left:44%;animation-delay:-2s;width:2px;height:2px}
.rx-embers i:nth-child(5){left:57%;animation-delay:-9s;animation-duration:12s}
.rx-embers i:nth-child(6){left:66%;animation-delay:-5.5s;background:#93c5fd;width:2px;height:2px}
.rx-embers i:nth-child(7){left:78%;animation-delay:-1s;animation-duration:16s}
.rx-embers i:nth-child(8){left:89%;animation-delay:-8s}
.rx-embers i:nth-child(9){left:95%;animation-delay:-3s;animation-duration:14s;width:2px;height:2px}
@keyframes rxEmber{0%{transform:translate3d(0,0,0);opacity:0}8%{opacity:.9}70%{opacity:.55}100%{transform:translate3d(46px,-1100px,0);opacity:0}}

.rx-rise{animation:rxRise .7s cubic-bezier(.22,1,.36,1) backwards;animation-delay:calc(var(--i,0) * 70ms + 90ms)}
@keyframes rxRise{from{opacity:0;transform:translateY(18px)}}

.rx-auth-head{text-align:center;margin-bottom:26px}
.rx-logo{position:relative;display:block;width:72px;height:72px;margin:0 auto 12px}
.rx-logo img{position:relative;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 14px 26px rgba(124,58,237,.55));animation:rxFloat 5s ease-in-out infinite}
.rx-logo__ring{position:absolute;inset:6px;border-radius:50%;border:1.5px solid rgba(167,139,250,.75);opacity:0;animation:rxPing 3.4s cubic-bezier(.2,.7,.3,1) infinite}
.rx-logo__ring + .rx-logo__ring{animation-delay:1.7s}
@keyframes rxFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes rxPing{0%{transform:scale(.7);opacity:.7}100%{transform:scale(2.1);opacity:0}}
.rx-badge{display:flex;align-items:center;justify-content:center;width:62px;height:62px;margin:0 auto 14px;clip-path:var(--rx-oct);color:#ede9fe;background:linear-gradient(135deg,#8b5cf6,#4c1d95)}
.rx-badge svg{width:28px;height:28px}
.rx-auth-title{font-size:30px;line-height:1.15;font-weight:800;letter-spacing:-.02em;margin:0 0 6px;color:var(--rx-ink);background:linear-gradient(100deg,var(--rx-title-a,#fff) 0%,var(--rx-title-a,#fff) 38%,var(--rx-title-b,#c4b5fd) 50%,var(--rx-title-a,#fff) 62%,var(--rx-title-a,#fff) 100%);background-size:260% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:rxSheen 6s ease-in-out infinite}
@keyframes rxSheen{0%,35%{background-position:120% 0}75%,100%{background-position:-60% 0}}
.rx-auth-sub{font-size:14px;line-height:1.5;color:var(--rx-ink-soft);margin:0}
@media (min-width:640px){.rx-auth-title{font-size:34px}}

/* ── 4. Auth card + form ───────────────────────────────────────────── */
.rx-card{position:relative;padding:2px;border-radius:22px;overflow:hidden;box-shadow:0 34px 80px -24px rgba(0,0,0,.8),0 0 70px -18px rgba(124,58,237,.5)}
/* Snake border: a rotating conic gradient peeking through the 2px ring */
.rx-card::before{content:'';position:absolute;width:300%;height:300%;top:50%;left:50%;background:conic-gradient(transparent 0deg,transparent 160deg,#7c3aed 167deg,#a78bfa 171deg,#60a5fa 175deg,transparent 181deg,transparent 340deg,#60a5fa 347deg,#818cf8 351deg,#7c3aed 355deg,transparent 361deg);animation:rxSnake 4s linear infinite;pointer-events:none}
/* Register keeps its mint-tipped snake */
.rx-card--mint::before{background:conic-gradient(transparent 0deg,transparent 160deg,#7c3aed 167deg,#a78bfa 171deg,#10b981 175deg,transparent 181deg,transparent 340deg,#10b981 347deg,#34d399 351deg,#7c3aed 355deg,transparent 361deg)}
@keyframes rxSnake{from{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(360deg)}}
.rx-card__inner{position:relative;overflow:hidden;isolation:isolate;border-radius:20px;border:1px solid rgba(255,255,255,.09);background:var(--rx-smoke-2)}
/* Taller cards need a wider smoke layer to stay covered while it turns */
.rx-card--tall{--rx-span:250%}
.rx-card__ticks{position:absolute;z-index:1;left:26px;right:26px;top:9px;height:5px;overflow:hidden;background:repeating-linear-gradient(90deg,rgba(214,200,255,.4) 0 1px,transparent 1px 7px)}
.rx-card__ticks--bottom{top:auto;bottom:9px}
.rx-card__ticks--bottom::after{animation-direction:reverse}
.rx-card__ticks::after{content:'';position:absolute;top:0;bottom:0;left:0;width:70px;background:repeating-linear-gradient(90deg,#e9e2ff 0 1px,transparent 1px 7px);-webkit-mask-image:linear-gradient(90deg,transparent,#000,transparent);mask-image:linear-gradient(90deg,transparent,#000,transparent);animation:rxTickSweep 3.6s steps(74) infinite}
@keyframes rxTickSweep{from{transform:translateX(-70px)}to{transform:translateX(448px)}}
/* HUD corner brackets that lock on as the card arrives */
.rx-card__hud{--c:rgba(214,200,255,.75);--l:13px;--t:1.5px;position:absolute;z-index:1;inset:9px;pointer-events:none;background:linear-gradient(var(--c),var(--c)) left top/var(--l) var(--t) no-repeat,linear-gradient(var(--c),var(--c)) left top/var(--t) var(--l) no-repeat,linear-gradient(var(--c),var(--c)) right top/var(--l) var(--t) no-repeat,linear-gradient(var(--c),var(--c)) right top/var(--t) var(--l) no-repeat,linear-gradient(var(--c),var(--c)) left bottom/var(--l) var(--t) no-repeat,linear-gradient(var(--c),var(--c)) left bottom/var(--t) var(--l) no-repeat,linear-gradient(var(--c),var(--c)) right bottom/var(--l) var(--t) no-repeat,linear-gradient(var(--c),var(--c)) right bottom/var(--t) var(--l) no-repeat;animation:rxHudLock .9s .45s cubic-bezier(.2,1.2,.36,1) backwards}
@keyframes rxHudLock{from{opacity:0;transform:scale(1.07)}}
/* One scan pass down the card on arrival */
.rx-card__scan{position:absolute;z-index:2;left:0;right:0;top:0;height:120px;pointer-events:none;background:linear-gradient(180deg,transparent,rgba(167,139,250,.14) 60%,rgba(232,222,255,.3) 96%,transparent);animation:rxCardScan 1.25s .6s cubic-bezier(.4,0,.2,1) both}
@keyframes rxCardScan{from{transform:translateY(-120px);opacity:1}to{transform:translateY(860px);opacity:0}}
.rx-card__body{position:relative;z-index:1;padding:30px 14px 28px}
@media (min-width:380px){.rx-card__body{padding:32px 18px 30px}}
@media (min-width:640px){.rx-card__body{padding:38px 32px 36px}}
.rx-card.is-fail{animation:rxShake .55s .35s cubic-bezier(.36,.07,.19,.97) backwards}
@keyframes rxShake{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(3px)}30%,50%,70%{transform:translateX(-6px)}40%,60%{transform:translateX(6px)}}

.rx-alert{display:flex;align-items:flex-start;gap:10px;margin-bottom:18px;padding:12px 14px;border-radius:14px;font-size:14px;line-height:1.45}
.rx-alert svg{width:20px;height:20px;flex:none;margin-top:1px}
.rx-alert--error{color:#fecaca;background:rgba(64,10,26,.74);border:1px solid rgba(248,113,113,.4)}
.rx-alert--ok{color:#a7f3d0;background:rgba(6,44,34,.74);border:1px solid rgba(52,211,153,.4)}

.rx-form{display:flex;flex-direction:column;gap:18px}
.rx-field label{display:block;margin-bottom:7px;font-size:13.5px;font-weight:600;color:#eceef8;transition:color .2s ease}
.rx-field:focus-within label{color:#ddd0ff}
.rx-input{position:relative}
/* Fields are smoked glass: the plasma stays faintly visible through them */
.rx-input .input{height:50px;border-radius:14px;border-color:rgba(206,190,255,.26);background-color:rgba(11,9,28,.62);font-size:16px;transition:border-color .2s ease,box-shadow .25s ease,background-color .2s ease}
.rx-input .input::placeholder{color:#8f95b4}
.rx-input__icon ~ .input{padding-left:46px}
.rx-input--toggle .input{padding-right:50px}
.rx-input .input:focus{border-color:#a78bfa;background-color:rgba(11,9,28,.74);box-shadow:0 0 0 4px rgba(139,92,246,.22),0 12px 30px -14px rgba(124,58,237,.8)}
.rx-input__icon{position:absolute;left:15px;top:50%;width:20px;height:20px;margin-top:-10px;color:#9aa0bd;pointer-events:none;z-index:1;transition:color .2s ease,transform .3s cubic-bezier(.2,1.4,.4,1)}
.rx-input:focus-within .rx-input__icon{color:#c4b5fd;transform:scale(1.12)}
/* Charge line that draws in under the focused field */
.rx-input::after{content:'';position:absolute;left:14px;right:14px;bottom:0;height:2px;border-radius:2px;background:linear-gradient(90deg,#7c3aed,#a78bfa,#60a5fa);box-shadow:0 0 12px rgba(124,58,237,.9);transform:scaleX(0);transform-origin:0 50%;transition:transform .5s cubic-bezier(.22,1,.36,1);pointer-events:none}
.rx-input:focus-within::after{transform:scaleX(1)}
.rx-input__toggle{position:absolute;right:3px;top:50%;width:44px;height:44px;margin-top:-22px;display:flex;align-items:center;justify-content:center;border-radius:12px;color:#9aa0bd;z-index:1;transition:color .15s ease,background .15s ease}
.rx-input__toggle:hover{color:#fff;background:rgba(255,255,255,.08)}
.rx-input__toggle svg{width:20px;height:20px}
:root:not([data-theme="light"]) .rx-input .input:-webkit-autofill{-webkit-text-fill-color:#f1f5f9;-webkit-box-shadow:0 0 0 1000px #17123c inset;caret-color:#f1f5f9}
.rx-hint{margin:7px 0 0;font-size:12px;line-height:1.45;color:#b9bfd8}
.rx-caps{display:flex;align-items:center;gap:6px;margin:8px 0 0;font-size:12px;font-weight:600;color:#fbbf24}
.rx-caps[hidden]{display:none}
.rx-caps svg{width:14px;height:14px}

.rx-row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:14px}
.rx-check{display:inline-flex;align-items:center;gap:10px;min-height:28px;cursor:pointer;color:#cdd2e6;line-height:1.45;-webkit-tap-highlight-color:transparent}
.rx-check{--rx-tick-img:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-7'/%3E%3C/svg%3E")}
.rx-check input{appearance:none;-webkit-appearance:none;flex:none;width:20px;height:20px;margin:0;border-radius:7px;border:1.5px solid rgba(206,190,255,.55);background:rgba(11,9,28,.62) var(--rx-tick-img) center/0 no-repeat;cursor:pointer;transition:background-color .18s ease,border-color .18s ease,background-size .25s cubic-bezier(.2,1.6,.4,1),box-shadow .18s ease}
.rx-check input:checked{background:#7c3aed var(--rx-tick-img) center/14px no-repeat;border-color:#8b5cf6;box-shadow:0 0 14px rgba(124,58,237,.6)}
/* Multi-line label (terms): pin the box to the first line */
.rx-check--top{align-items:flex-start}
.rx-check--top input{margin-top:1px}
.rx-check:hover input{border-color:#ddd0ff}
.rx-check:hover{color:#fff}
.rx-link{position:relative;font-weight:600;color:#cfc1ff;transition:color .15s ease}
.rx-link:hover{color:#ece5ff}
.rx-link::after{content:'';position:absolute;left:0;right:0;bottom:-2px;height:2px;border-radius:2px;background:linear-gradient(90deg,#c4b5fd,#93c5fd);transform:scaleX(0);transform-origin:100% 50%;transition:transform .3s ease}
.rx-link:hover::after{transform:scaleX(1);transform-origin:0 50%}

.rx-submit{position:relative;width:100%;min-height:54px;justify-content:center;overflow:hidden;border-radius:16px;font-size:16px;font-weight:700;background:linear-gradient(135deg,#8b5cf6 0%,#7c3aed 48%,#4f46e5 100%);box-shadow:0 16px 36px -12px rgba(124,58,237,.85),inset 0 1px 0 rgba(255,255,255,.22);transition:transform .16s ease,box-shadow .2s ease,filter .2s ease}
.rx-submit:hover{filter:brightness(1.08);box-shadow:0 20px 44px -12px rgba(124,58,237,1),inset 0 1px 0 rgba(255,255,255,.26)}
.rx-submit:active{transform:scale(.975)}
.rx-submit::before{content:'';position:absolute;top:0;bottom:0;left:0;width:45%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.28),transparent);transform:translateX(-140%) skewX(-18deg);animation:rxSubmitSheen 4.2s ease-in-out infinite;pointer-events:none}
@keyframes rxSubmitSheen{0%,55%{transform:translateX(-140%) skewX(-18deg)}100%{transform:translateX(340%) skewX(-18deg)}}
.rx-submit svg{position:relative;width:20px;height:20px;transition:transform .3s cubic-bezier(.2,1.4,.4,1)}
.rx-submit:hover svg:last-child{transform:translateX(4px)}
/* .btn-ripple fades its ::after, which is also the busy spinner — keep it visible. */
.rx-submit.is-busy::after{opacity:1;background:none}
.rx-submit.is-busy::before{animation-duration:1s}

.rx-divider{display:flex;align-items:center;gap:12px;margin:22px 0 18px;font-size:11px;font-weight:700;letter-spacing:.14em;color:#aeb4cf}
.rx-divider::before,.rx-divider::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(214,200,255,.42),transparent)}
.rx-switch{margin:0;text-align:center;font-size:14px;color:#c0c5db}
.rx-trust{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin-top:22px}
.rx-trust span{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;border:1px solid rgba(167,139,250,.16);background:rgba(13,14,26,.6);font-size:11.5px;font-weight:600;color:#8b93b0}
.rx-trust svg{width:14px;height:14px}
.rx-trust .is-green{color:#34d399}
.rx-trust .is-violet{color:#a78bfa}
.rx-trust .is-blue{color:#60a5fa}
.rx-back{display:table;margin:18px auto 0;font-size:14px}
.rx-code .input{height:60px;text-align:center;font-size:26px;letter-spacing:.4em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
@media (max-width:359px){.rx-card .turnstile-wrap{transform:scale(.88);transform-origin:50% 50%}}

/* ── 5. Mobile dock + menu sheet ───────────────────────────────────── */
.mobile-dock-shell{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:78;display:none;pointer-events:none}
@media (max-width:767px){
    body{padding-bottom:calc(86px + env(safe-area-inset-bottom,0px))}
    .mobile-dock-shell{display:block}
}
.mobile-dock-backdrop{position:fixed;inset:0;z-index:0;pointer-events:auto;touch-action:none;background:radial-gradient(120% 55% at 50% 100%,rgba(76,29,149,.5),transparent 72%),rgba(4,5,14,.74);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.mobile-dock-backdrop::after{content:'';position:absolute;inset:0;background-image:radial-gradient(rgba(167,139,250,.16) 1px,transparent 1.6px);background-size:22px 22px;-webkit-mask-image:linear-gradient(180deg,transparent,#000 70%);mask-image:linear-gradient(180deg,transparent,#000 70%)}

/* Sheet: snake border, spring entrance, one boot-scan pass */
.mobile-dock-panel-shell{position:relative;z-index:2;pointer-events:auto;margin-bottom:10px;padding:1.5px;border-radius:28px;overflow:hidden;outline:none;transform-origin:50% 100%;box-shadow:0 -14px 60px -14px rgba(124,58,237,.6),0 30px 90px rgba(0,0,0,.6)}
.mobile-dock-panel-shell::before{content:'';position:absolute;width:300%;height:300%;top:50%;left:50%;background:conic-gradient(transparent 0deg,transparent 150deg,#7c3aed 162deg,#a78bfa 170deg,#60a5fa 176deg,transparent 184deg,transparent 330deg,#60a5fa 342deg,#818cf8 350deg,#7c3aed 356deg,transparent 362deg),rgba(167,139,250,.22);animation:rxSnake 5s linear infinite}
.mobile-dock-panel-shell::after{content:'';position:absolute;z-index:3;left:0;right:0;top:0;height:110px;background:linear-gradient(180deg,transparent,rgba(167,139,250,.16) 60%,rgba(226,214,255,.34) 96%,transparent);pointer-events:none;animation:rxScan .95s .1s cubic-bezier(.4,0,.2,1) both}
@keyframes rxScan{from{transform:translateY(-110px);opacity:1}to{transform:translateY(720px);opacity:0}}
.rx-sheet-enter{transition:transform .46s cubic-bezier(.2,1.25,.36,1),opacity .2s ease-out}
.rx-sheet-leave{transition:transform .2s cubic-bezier(.4,0,1,1),opacity .18s ease-in}
.rx-sheet-off{opacity:0;transform:translateY(48px) scale(.94)}
.rx-sheet-on{opacity:1;transform:translateY(0) scale(1)}
.mobile-dock-panel{position:relative;border-radius:26.5px;padding:0 12px 14px;max-height:min(74vh,680px);max-height:min(74dvh,680px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;background:radial-gradient(110% 40% at 50% 0%,rgba(76,29,149,.3),transparent 70%),linear-gradient(180deg,#141532,#0a0b18 60%)}
.mobile-dock-panel::-webkit-scrollbar{display:none}
.rx-sheet__grab{display:flex;justify-content:center;padding:9px 0 11px;touch-action:none}
.rx-sheet__grab span{width:40px;height:4px;border-radius:99px;background:rgba(196,181,253,.42)}

/* Reactor banner: an elongated octagon holding the same plasma */
.rx-banner{--cut:18px;position:relative;margin-bottom:16px;touch-action:none;animation:rxItemIn .5s cubic-bezier(.2,1.2,.36,1) backwards}
.rx-banner__plate,.rx-banner__screen{position:absolute;clip-path:polygon(var(--cut) 0,calc(100% - var(--cut)) 0,100% var(--cut),100% calc(100% - var(--cut)),calc(100% - var(--cut)) 100%,var(--cut) 100%,0 calc(100% - var(--cut)),0 var(--cut))}
.rx-banner__plate{inset:0;background:linear-gradient(135deg,rgba(196,181,253,.85),rgba(96,165,250,.3) 42%,rgba(124,58,237,.3) 60%,rgba(167,139,250,.75))}
.rx-banner__screen{--cut:17.5px;inset:1px;overflow:hidden;isolation:isolate;background:radial-gradient(120% 150% at 28% 38%,#41209a,#1f1149 56%,#0d0922)}
.rx-banner__screen .rx-smoke--a,.rx-banner__screen .rx-smoke--b{width:420px;height:420px;margin:-210px 0 0 -210px}
.rx-banner__screen .rx-smoke--a{background-size:310px auto;animation-duration:60s}
.rx-banner__screen .rx-smoke--b{background-size:230px auto;animation-duration:44s}
.rx-banner__screen::after{content:'';position:absolute;inset:0;background:radial-gradient(90% 120% at 50% 50%,transparent 40%,rgba(8,5,22,.72))}
.rx-banner__bar{position:absolute;width:20px;height:2px;border-radius:2px;background:#d6c8ff;box-shadow:0 0 8px 2px rgba(139,92,246,.95),0 0 22px 6px rgba(124,58,237,.5);animation:rxIgnite .9s .15s steps(1,end) backwards,rxBar 4s ease-in-out 1.2s infinite}
.rx-banner__bar--tl{left:calc(var(--cut) / 2);top:calc(var(--cut) / 2);transform:translate(-50%,-50%) rotate(-45deg)}
.rx-banner__bar--tr{right:calc(var(--cut) / 2);top:calc(var(--cut) / 2);transform:translate(50%,-50%) rotate(45deg);animation-delay:.25s,2.2s}
.rx-banner__bar--br{right:calc(var(--cut) / 2);bottom:calc(var(--cut) / 2);transform:translate(50%,50%) rotate(-45deg);animation-delay:.35s,3.2s}
.rx-banner__bar--bl{left:calc(var(--cut) / 2);bottom:calc(var(--cut) / 2);transform:translate(-50%,50%) rotate(45deg);animation-delay:.45s,4.2s}
@keyframes rxIgnite{0%{opacity:0}28%{opacity:1}36%{opacity:.12}52%{opacity:1}60%{opacity:.3}72%{opacity:1}}
@keyframes rxBar{0%,100%{opacity:1}50%{opacity:.42}}
@keyframes rxDot{0%,55%,100%{opacity:.28}18%{opacity:1}}
.rx-banner__dots{position:absolute;left:50%;top:7px;display:flex;gap:5px;transform:translateX(-50%)}
.rx-banner__dots i{width:3px;height:3px;border-radius:50%;background:#d6c8ff;box-shadow:0 0 6px rgba(167,139,250,.95);opacity:.5;animation:rxDot 1.9s ease-in-out infinite}
.rx-banner__dots i:nth-child(2){animation-delay:.15s}
.rx-banner__dots i:nth-child(3){animation-delay:.3s}
.rx-banner__dots i:nth-child(4){animation-delay:.45s}
.rx-banner__dots i:nth-child(5){animation-delay:.6s}
.rx-banner__ticks{position:absolute;left:28px;right:28px;bottom:6px;height:4px;overflow:hidden;background:repeating-linear-gradient(90deg,rgba(196,181,253,.42) 0 1px,transparent 1px 7px)}
.rx-banner__ticks::after{content:'';position:absolute;top:0;bottom:0;left:0;width:70px;background:repeating-linear-gradient(90deg,#fff 0 1px,transparent 1px 7px);-webkit-mask-image:linear-gradient(90deg,transparent,#000,transparent);mask-image:linear-gradient(90deg,transparent,#000,transparent);animation:rxTickSweep 3.2s steps(74) infinite}
.rx-banner__body{position:relative;z-index:1;display:flex;align-items:center;gap:12px;padding:20px 18px}
.rx-banner__body--guest{flex-direction:column;align-items:stretch;gap:14px;padding-bottom:22px}
.rx-banner__row{display:flex;align-items:center;gap:12px;min-width:0}
.rx-banner__text{min-width:0}
.rx-banner__name{margin:0;font-size:15px;font-weight:800;line-height:1.25;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rx-banner__meta{margin:2px 0 0;font-size:12px;line-height:1.35;color:#b9add8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rx-banner__logo{width:46px;height:46px;flex:none;object-fit:contain;filter:drop-shadow(0 8px 16px rgba(124,58,237,.7));animation:rxFloat 5s ease-in-out infinite}
.rx-avatar{position:relative;flex:none;width:50px;height:50px;clip-path:var(--rx-oct);overflow:hidden}
.rx-avatar::before{content:'';position:absolute;inset:-25%;background:conic-gradient(#7c3aed,#60a5fa,#c4b5fd,#f0abfc,#7c3aed);animation:rxSpin 5s linear infinite}
.rx-avatar span{position:absolute;inset:2px;display:flex;align-items:center;justify-content:center;clip-path:var(--rx-oct);background:linear-gradient(135deg,#8b5cf6,#4c1d95);color:#fff;font-size:19px;font-weight:900}
@keyframes rxSpin{to{transform:rotate(360deg)}}
.rx-chip{margin-left:auto;flex:none;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border-radius:13px;border:1px solid rgba(196,181,253,.38);background:rgba(13,14,26,.58);color:#ede9fe;font-size:12.5px;font-weight:800;transition:transform .14s ease,background .16s ease}
.rx-chip svg{width:15px;height:15px;color:#c4b5fd}
.rx-chip:active{transform:scale(.95);background:rgba(124,58,237,.4)}
.rx-banner__cta{display:grid;grid-template-columns:1fr 1.25fr;gap:8px}
.rx-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:46px;padding:0 12px;border-radius:14px;font-size:13.5px;font-weight:800;white-space:nowrap;transition:transform .14s ease,filter .16s ease,background .16s ease;-webkit-tap-highlight-color:transparent}
.rx-btn svg{width:16px;height:16px}
.rx-btn:active{transform:scale(.96)}
.rx-btn--ghost{color:#ede9fe;border:1px solid rgba(196,181,253,.4);background:rgba(13,14,26,.5)}
.rx-btn--solid{color:#fff;background:linear-gradient(135deg,#8b5cf6,#6d28d9 55%,#4f46e5);box-shadow:0 12px 26px -10px rgba(124,58,237,.95),inset 0 1px 0 rgba(255,255,255,.25)}

.mobile-dock-section-title{display:flex;align-items:center;gap:10px;margin:0;padding:2px 4px 10px;color:#8b93b0;font-size:10px;font-weight:900;letter-spacing:.2em;text-transform:uppercase}
.mobile-dock-section-title::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,rgba(167,139,250,.4),transparent)}
.mobile-dock-section{margin-top:18px}

/* Browse tiles: chamfered, colour-keyed, staggered in on every open */
.rx-tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.rx-tile{--tc:139,92,246;--ti:#c4b5fd;--cut:14px;position:relative;display:block;padding:1px;color:#e2e8f0;clip-path:polygon(0 0,calc(100% - var(--cut)) 0,100% var(--cut),100% 100%,var(--cut) 100%,0 calc(100% - var(--cut)));background:linear-gradient(135deg,rgba(var(--tc),.78),rgba(255,255,255,.07) 36%,rgba(255,255,255,.05) 64%,rgba(var(--tc),.4));transition:transform .16s ease;-webkit-tap-highlight-color:transparent}
.rx-tile:active{transform:scale(.96)}
.rx-tile__in{--cut:13.6px;position:relative;display:flex;flex-direction:column;gap:10px;height:100%;min-height:104px;padding:12px;overflow:hidden;clip-path:polygon(0 0,calc(100% - var(--cut)) 0,100% var(--cut),100% 100%,var(--cut) 100%,0 calc(100% - var(--cut)));background:radial-gradient(120% 90% at 0% 0%,rgba(var(--tc),.22),transparent 62%),#10122a}
/* Touch flash centred on the finger (reactor.js sets --px / --py) */
.rx-tile__in::after{content:'';position:absolute;inset:0;background:radial-gradient(150px circle at var(--px,50%) var(--py,50%),rgba(var(--tc),.5),transparent 70%);opacity:0;transition:opacity .55s ease;pointer-events:none}
.rx-tile:active .rx-tile__in::after{opacity:1;transition-duration:0s}
.rx-tile__icon{flex:none;display:flex;align-items:center;justify-content:center;width:38px;height:38px;clip-path:var(--rx-oct);color:var(--ti);background:rgba(var(--tc),.2);transition:transform .25s cubic-bezier(.2,1.5,.4,1)}
.rx-tile:active .rx-tile__icon{transform:scale(1.12) rotate(-6deg)}
.rx-tile__icon svg{width:19px;height:19px;stroke-width:1.9}
.rx-tile__text{min-width:0}
.rx-tile__title{display:block;font-size:14px;font-weight:800;line-height:1.2;color:#fff}
.rx-tile__meta{display:block;margin-top:4px;font-size:10px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:#7c86a6}
.rx-tile__go{position:absolute;top:15px;right:17px;width:15px;height:15px;color:#59617f}
.rx-tile--hero{grid-column:1 / -1}
.rx-tile--hero .rx-tile__in{flex-direction:row;align-items:center;gap:12px;min-height:74px;padding:14px}
.rx-tile--hero .rx-tile__icon{width:46px;height:46px}
.rx-tile--hero .rx-tile__icon svg{width:22px;height:22px}
.rx-tile--hero .rx-tile__title{font-size:15.5px}
.rx-tile--hero .rx-tile__go{position:static;flex:none;margin-left:auto;width:30px;height:30px;padding:7px;border-radius:50%;color:#ede9fe;background:rgba(124,58,237,.3)}
.rx-tile--hero .rx-tile__in::before{content:'';position:absolute;top:0;bottom:0;left:0;width:38%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.1),transparent);transform:translateX(-140%) skewX(-18deg);animation:rxSubmitSheen 4.8s 1s ease-in-out infinite;pointer-events:none}
.rx-tile--amber{--tc:249,115,22;--ti:#fdba74}
.rx-tile--sky{--tc:56,189,248;--ti:#7dd3fc}
.rx-tile--gold{--tc:245,158,11;--ti:#fcd34d}
.rx-tile--mint{--tc:16,185,129;--ti:#6ee7b7}
.rx-live{display:inline-block;width:6px;height:6px;margin-right:6px;border-radius:50%;background:#34d399;box-shadow:0 0 8px rgba(52,211,153,.8);vertical-align:1px;animation:rxLive 2.2s ease-in-out infinite}
@keyframes rxLive{0%,100%{opacity:1}50%{opacity:.35}}

/* Staggered entrance. No end keyframe + backwards fill, so :active scale still works afterwards. */
.rx-in{animation:rxItemIn .5s cubic-bezier(.2,1.2,.36,1) backwards;animation-delay:calc(var(--i,0) * 42ms + 90ms)}
@keyframes rxItemIn{from{opacity:0;transform:translateY(16px) scale(.96)}}

.mobile-dock-account{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.mobile-dock-mini{position:relative;display:flex;align-items:center;gap:10px;min-height:48px;padding:8px 10px;border-radius:14px;border:1px solid rgba(255,255,255,.07);background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.022));color:#cbd5e1;font-size:12.5px;font-weight:700;line-height:1.2;text-align:left;transition:transform .14s ease,background .16s ease,border-color .16s ease,color .16s ease;-webkit-tap-highlight-color:transparent}
.mobile-dock-mini[hidden]{display:none}
.mobile-dock-mini svg{flex:none;width:30px;height:30px;padding:7px;border-radius:10px;color:#a78bfa;background:rgba(124,58,237,.15);stroke-width:1.9}
.mobile-dock-mini:hover,.mobile-dock-mini:active{color:#fff;background:rgba(124,58,237,.14);border-color:rgba(167,139,250,.3)}
.mobile-dock-mini:active{transform:scale(.96)}
.mobile-dock-mini.danger{color:#fca5a5}
.mobile-dock-mini.danger svg{color:#fca5a5;background:rgba(239,68,68,.13)}
.mobile-dock-mini.danger:active{border-color:rgba(248,113,113,.35);background:rgba(239,68,68,.12)}
.mobile-dock-mini--wide{grid-column:1 / -1}
.mobile-dock-account .mobile-dock-mini{animation:rxItemIn .5s cubic-bezier(.2,1.2,.36,1) backwards;animation-delay:.62s}
.mobile-dock-account > :nth-child(1){animation-delay:.34s}
.mobile-dock-account > :nth-child(2){animation-delay:.37s}
.mobile-dock-account > :nth-child(3){animation-delay:.40s}
.mobile-dock-account > :nth-child(4){animation-delay:.43s}
.mobile-dock-account > :nth-child(5){animation-delay:.46s}
.mobile-dock-account > :nth-child(6){animation-delay:.49s}
.mobile-dock-account > :nth-child(7){animation-delay:.52s}
.mobile-dock-account > :nth-child(8){animation-delay:.55s}
.mobile-dock-account > :nth-child(9){animation-delay:.58s}
.rx-count{margin-left:auto;flex:none;display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:99px;background:#7c3aed;color:#fff;font-size:10px;font-weight:900;box-shadow:0 0 10px rgba(124,58,237,.65)}
.rx-count--alert{background:#ef4444;box-shadow:0 0 10px rgba(239,68,68,.65)}
.rx-notice{margin-top:12px;padding:14px;border-radius:16px;border:1px solid rgba(245,158,11,.28);background:rgba(245,158,11,.1)}
.rx-notice strong{display:block;font-size:14px;font-weight:800;color:#fde68a}
.rx-notice p{margin:4px 0 0;font-size:12px;line-height:1.55;color:#a5adc6}
.rx-notice button{margin-top:10px;min-height:32px;font-size:12px;font-weight:800;color:#c4b5fd}

/* Dock row */
.mobile-dock-row{position:relative;z-index:3;pointer-events:auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:8px;border-radius:24px;border:1px solid rgba(167,139,250,.24);background:rgba(13,14,26,.92);-webkit-backdrop-filter:blur(18px) saturate(1.3);backdrop-filter:blur(18px) saturate(1.3);box-shadow:0 24px 70px rgba(0,0,0,.4)}
.mobile-dock-row::before{content:'';position:absolute;inset:-1px;border-radius:inherit;box-shadow:0 0 36px rgba(124,58,237,.5),0 0 16px rgba(56,189,248,.18);opacity:.3;pointer-events:none;animation:rxDockGlow 5.5s ease-in-out infinite}
.mobile-dock-row::after{content:'';position:absolute;left:20%;right:20%;top:-1px;height:1px;background:linear-gradient(90deg,transparent,rgba(214,200,255,.95),transparent);pointer-events:none}
@keyframes rxDockGlow{0%,100%{opacity:.3}50%{opacity:1}}
.mobile-dock-link{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:54px;border-radius:16px;color:#94a3b8;font-size:10px;font-weight:800;letter-spacing:.02em;transition:transform .14s ease,background .16s ease,color .16s ease;-webkit-tap-highlight-color:transparent}
.mobile-dock-link svg{width:20px;height:20px;stroke-width:1.9;transition:transform .25s cubic-bezier(.2,1.5,.4,1)}
.mobile-dock-link:active{transform:scale(.93)}
.mobile-dock-link:active svg{transform:translateY(-2px)}
.mobile-dock-link:hover,.mobile-dock-link.is-active{color:#fff;background:rgba(124,58,237,.18)}
.mobile-dock-link.is-active::before{content:'';position:absolute;top:0;left:50%;width:22px;height:3px;margin-left:-11px;border-radius:0 0 4px 4px;background:linear-gradient(90deg,#a78bfa,#60a5fa);box-shadow:0 0 12px rgba(167,139,250,.95)}
/* Sell: a small octagon of its own */
.mobile-dock-primary,.mobile-dock-primary:hover{color:#fff;background:none;isolation:isolate}
.mobile-dock-primary::before,.mobile-dock-primary::after{content:'';position:absolute;inset:0;z-index:-1;clip-path:polygon(13px 0,calc(100% - 13px) 0,100% 13px,100% calc(100% - 13px),calc(100% - 13px) 100%,13px 100%,0 calc(100% - 13px),0 13px)}
.mobile-dock-primary::before{background:linear-gradient(135deg,#9d7bff,#7c3aed 45%,#2563eb)}
.mobile-dock-primary::after{background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.34) 50%,transparent 70%) 0 0/300% 100% no-repeat;animation:rxSellSheen 3.8s ease-in-out infinite}
@keyframes rxSellSheen{0%,50%{background-position:150% 0}100%{background-position:-50% 0}}
.mobile-dock-more[aria-expanded="true"]{color:#fff;background:rgba(124,58,237,.24)}
.mobile-dock-badge-dot{position:absolute;top:6px;left:calc(50% + 7px);display:flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#7c3aed;color:#fff;font-size:9px;font-weight:800;line-height:1;box-shadow:0 2px 6px rgba(124,58,237,.5)}
.mobile-dock-badge-dot.alert{background:#ef4444;box-shadow:0 2px 6px rgba(239,68,68,.5)}

/* Hamburger that folds into a close mark */
.rx-burger{position:relative;display:block;width:20px;height:20px}
.rx-burger i{position:absolute;left:2px;right:2px;height:2px;border-radius:2px;background:currentColor;transition:transform .34s cubic-bezier(.2,1.3,.36,1),opacity .18s ease}
.rx-burger i:nth-child(1){top:4px}
.rx-burger i:nth-child(2){top:9px}
.rx-burger i:nth-child(3){top:14px}
[aria-expanded="true"] > .rx-burger i:nth-child(1){transform:translateY(5px) rotate(45deg)}
[aria-expanded="true"] > .rx-burger i:nth-child(2){opacity:0;transform:scaleX(.2)}
[aria-expanded="true"] > .rx-burger i:nth-child(3){transform:translateY(-5px) rotate(-45deg)}

/* ── 6. Light theme ────────────────────────────────────────────────── */
:root[data-theme="light"]{
    --rx-smoke-0:#c4b5fd;
    --rx-smoke-1:#ddd6fe;
    --rx-smoke-2:#f0ebff;
    --rx-vignette:244,240,255;
    --rx-ink:#0f172a;
    --rx-ink-soft:#475569;
    --rx-ink-mute:#64748b;
    --rx-title-a:#0f172a;
    --rx-title-b:#7c3aed;
}
:root[data-theme="light"] .rx-backdrop__grid{background-image:radial-gradient(rgba(124,58,237,.22) 1px,transparent 1.6px)}
:root[data-theme="light"] .rx-core .rx-smoke--a,:root[data-theme="light"] .rx-core .rx-smoke--b{mix-blend-mode:multiply;opacity:.42}
:root[data-theme="light"] .rx-backdrop__halo{background:radial-gradient(circle,rgba(124,58,237,.22),rgba(124,58,237,.07) 42%,transparent 68%)}
:root[data-theme="light"] .rx-smoke--core{background:radial-gradient(circle,rgba(255,255,255,.9),rgba(196,181,253,.3) 40%,transparent 64%)}
:root[data-theme="light"] .rx-core__embers i{background:#7c3aed;box-shadow:0 0 8px 1px rgba(124,58,237,.6)}
:root[data-theme="light"] .rx-card__ticks{background:repeating-linear-gradient(90deg,rgba(109,40,217,.4) 0 1px,transparent 1px 7px)}
:root[data-theme="light"] .rx-card__ticks::after{background:repeating-linear-gradient(90deg,#6d28d9 0 1px,transparent 1px 7px)}
:root[data-theme="light"] .rx-card__hud{--c:rgba(109,40,217,.6)}
:root[data-theme="light"] .rx-hint{color:#475569}
:root[data-theme="light"] .rx-divider{color:#64748b}
:root[data-theme="light"] .rx-divider::before,:root[data-theme="light"] .rx-divider::after{background:linear-gradient(90deg,transparent,rgba(109,40,217,.35),transparent)}
:root[data-theme="light"] .rx-input__icon,:root[data-theme="light"] .rx-input__toggle{color:#64748b}
:root[data-theme="light"] .rx-input:focus-within .rx-input__icon{color:#7c3aed}
:root[data-theme="light"] .rx-link:hover{color:#4c1d95}
:root[data-theme="light"] .rx-link::after{background:linear-gradient(90deg,#7c3aed,#2563eb)}
:root[data-theme="light"] .rx-check:hover{color:#0f172a}
:root[data-theme="light"] .rx-card{box-shadow:0 30px 70px -26px rgba(15,23,42,.35),0 0 60px -20px rgba(124,58,237,.35)}
:root[data-theme="light"] .rx-card__inner{border-color:rgba(124,58,237,.14)}
:root[data-theme="light"] .rx-field label{color:#334155}
:root[data-theme="light"] .rx-field:focus-within label{color:#6d28d9}
:root[data-theme="light"] .rx-check{color:#475569}
:root[data-theme="light"] .rx-check input{background:#fff var(--rx-tick-img) center/0 no-repeat!important;border-color:rgba(124,58,237,.45)!important}
:root[data-theme="light"] .rx-check input:checked{background:#7c3aed var(--rx-tick-img) center/14px no-repeat!important;border-color:#7c3aed!important}
:root[data-theme="light"] .rx-link{color:#6d28d9}
:root[data-theme="light"] .rx-switch{color:#475569}
:root[data-theme="light"] .rx-trust span{background:rgba(255,255,255,.8);border-color:rgba(124,58,237,.18);color:#475569}
:root[data-theme="light"] .rx-input__toggle:hover{color:#0f172a;background:rgba(15,23,42,.05)}
:root[data-theme="light"] .rx-alert--error{color:#b91c1c;background:rgba(254,226,226,.92);border-color:rgba(220,38,38,.3)}
:root[data-theme="light"] .rx-alert--ok{color:#047857;background:rgba(209,250,229,.92);border-color:rgba(5,150,105,.3)}
:root[data-theme="light"] .mobile-dock-backdrop{background:rgba(15,23,42,.3)}
:root[data-theme="light"] .mobile-dock-panel{background:linear-gradient(180deg,#fff,#f1f5f9)}
:root[data-theme="light"] .mobile-dock-section-title{color:#64748b}
:root[data-theme="light"] .rx-tile{color:#1e293b;background:linear-gradient(135deg,rgba(var(--tc),.7),rgba(15,23,42,.1) 36%,rgba(15,23,42,.08) 64%,rgba(var(--tc),.4))}
:root[data-theme="light"] .rx-tile__in{background:radial-gradient(120% 90% at 0% 0%,rgba(var(--tc),.16),transparent 62%),#fff}
:root[data-theme="light"] .rx-tile__title{color:#0f172a}
:root[data-theme="light"] .rx-tile__meta{color:#64748b}
:root[data-theme="light"] .rx-tile__icon{color:rgb(var(--tc));background:rgba(var(--tc),.14)}
:root[data-theme="light"] .rx-tile--hero .rx-tile__go{color:#6d28d9;background:rgba(124,58,237,.14)}
:root[data-theme="light"] .mobile-dock-mini{background:rgba(255,255,255,.9);border-color:rgba(15,23,42,.1);color:#1e293b;box-shadow:0 8px 22px rgba(15,23,42,.06)}
:root[data-theme="light"] .mobile-dock-mini:hover,:root[data-theme="light"] .mobile-dock-mini:active{background:rgba(124,58,237,.08);border-color:rgba(124,58,237,.24);color:#0f172a}
:root[data-theme="light"] .mobile-dock-mini svg{color:#7c3aed;background:rgba(124,58,237,.1)}
:root[data-theme="light"] .mobile-dock-mini.danger{color:#b91c1c}
:root[data-theme="light"] .mobile-dock-mini.danger svg{color:#dc2626;background:rgba(239,68,68,.1)}
:root[data-theme="light"] .mobile-dock-row{background:rgba(255,255,255,.94);border-color:rgba(124,58,237,.2);box-shadow:0 22px 65px rgba(15,23,42,.16)}
:root[data-theme="light"] .mobile-dock-row::before{opacity:.18;animation:none}
:root[data-theme="light"] .mobile-dock-link{color:#475569}
:root[data-theme="light"] .mobile-dock-link:hover,:root[data-theme="light"] .mobile-dock-link.is-active,:root[data-theme="light"] .mobile-dock-more[aria-expanded="true"]{color:#6d28d9;background:rgba(124,58,237,.1)}
:root[data-theme="light"] .mobile-dock-primary,:root[data-theme="light"] .mobile-dock-primary:hover{color:#fff;background:none}
:root[data-theme="light"] .rx-notice p{color:#475569}
:root[data-theme="light"] .rx-notice strong{color:#92400e}

@media (prefers-reduced-motion:reduce){
    .rx-rise,.rx-in,.rx-banner,.rx-card__hud,.rx-card.is-fail,.mobile-dock-account .mobile-dock-mini{animation:none}
    .rx-backdrop__beam,.rx-embers,.rx-core__embers,.rx-card__scan,.mobile-dock-panel-shell::after,.rx-logo__ring{display:none}
}
