/* ============================================================
   xulang.me/games — 共享样式 · Cognitive Lab
   与主站导航页同一色板：#0f172a / #1e293b / #38bdf8
   ============================================================ */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}

:root{
  --bg:#0f172a;--card:#1e293b;--card-2:#243449;
  --border:#334155;--border-strong:#475569;
  --text:#e2e8f0;--muted:#94a3b8;--faint:#64748b;
  --accent:#38bdf8;--good:#34d399;--bad:#f87171;--warn:#fbbf24;
  --grid:rgba(148,163,184,.055);--glow:rgba(56,189,248,.10);
  --shadow:0 1px 3px rgba(0,0,0,.35);
  --r:12px;
  color-scheme:dark;
}
[data-theme="light"]{
  --bg:#f8fafc;--card:#ffffff;--card-2:#f1f5f9;
  --border:#e2e8f0;--border-strong:#cbd5e1;
  --text:#1e293b;--muted:#64748b;--faint:#94a3b8;
  --accent:#0284c7;--good:#059669;--bad:#dc2626;--warn:#d97706;
  --grid:rgba(30,41,59,.05);--glow:rgba(2,132,199,.08);
  --shadow:0 1px 3px rgba(0,0,0,.06);
  color-scheme:light;
}

html{font-size:16px;-webkit-text-size-adjust:100%}
body{
  font-family:-apple-system,"PingFang SC","Noto Sans SC","Microsoft YaHei",system-ui,sans-serif;
  background:var(--bg);color:var(--text);min-height:100vh;
  transition:background .3s,color .3s;
  -webkit-tap-highlight-color:transparent;
}
/* 蓝图网格 + 光晕背景 */
body::before{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(640px 320px at 88% -12%,var(--glow),transparent 70%),
    radial-gradient(520px 280px at -8% 34%,var(--glow),transparent 70%),
    linear-gradient(var(--grid) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:auto,auto,36px 36px,36px 36px;
}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace}
.hidden{display:none!important}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
button{font-family:inherit;color:inherit}

.wrap{max-width:760px;margin:0 auto;padding:1.4rem 1rem 3rem}
.wrap-wide{max-width:920px}

/* ---------- 顶栏 ---------- */
.topbar{
  position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:.75rem;
  padding:.55rem 1rem;border-bottom:1px solid var(--border);
  background:var(--bg);background:color-mix(in srgb,var(--bg) 84%,transparent);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
}
.back{
  display:inline-flex;align-items:center;gap:.3rem;text-decoration:none;
  color:var(--muted);font-size:.8rem;padding:.3rem .55rem;border-radius:8px;
  transition:color .2s,background .2s;
}
.back:hover{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}
.top-title{font-size:.84rem;font-weight:600;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top-actions{margin-left:auto;display:flex;gap:.4rem}
.tbtn{
  width:34px;height:34px;border-radius:9px;border:1px solid var(--border);
  background:var(--card);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
  transition:border-color .2s;flex:none;
}
.tbtn:hover{border-color:var(--accent)}
.tbtn svg{width:15px;height:15px;stroke:var(--text);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tbtn .icon-sun,.tbtn .icon-mute{display:none}
[data-theme="light"] .tbtn .icon-sun{display:block}
[data-theme="light"] .tbtn .icon-moon{display:none}
.tbtn.muted .icon-vol{display:none}
.tbtn.muted .icon-mute{display:block}

/* ---------- 科学依据条 ---------- */
.science{
  display:flex;gap:.8rem;align-items:flex-start;margin-bottom:1.2rem;
  background:var(--card);border:1px solid var(--border);border-left:3px solid var(--accent);
  border-radius:12px;padding:.85rem 1rem;box-shadow:var(--shadow);
}
.science svg{width:18px;height:18px;flex:none;margin-top:.15rem;stroke:var(--accent);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.science p{font-size:.8rem;color:var(--muted);line-height:1.6}
.science b{color:var(--text);font-weight:600}
.science .cite{display:block;margin-top:.3rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.66rem;color:var(--faint);letter-spacing:.03em}

/* ---------- 舞台 ---------- */
.stage{
  position:relative;background:var(--card);border:1px solid var(--border);
  border-radius:16px;padding:1.4rem;box-shadow:var(--shadow);
  animation:fadeup .45s ease both;
}
.stage+.stage{margin-top:1rem}
.stage-title{font-size:1.05rem;font-weight:700;margin-bottom:.4rem}
.stage-sub{font-size:.82rem;color:var(--muted);line-height:1.7;margin-bottom:1.1rem}
.stage-sub b{color:var(--text)}
.kbd{
  display:inline-block;padding:.05rem .38rem;border:1px solid var(--border-strong);
  border-bottom-width:2px;border-radius:5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:.72rem;color:var(--text);background:var(--card-2);
}

/* ---------- HUD / 进度 ---------- */
.hud{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}
.hchip{
  background:var(--card-2);border:1px solid var(--border);border-radius:9px;
  padding:.38rem .7rem;font-size:.68rem;color:var(--muted);
  display:flex;flex-direction:column;gap:.05rem;min-width:60px;
}
.hchip b{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.95rem;color:var(--text);font-weight:700}
.hchip b.acc{color:var(--accent)}
.prog{height:4px;background:var(--card-2);border-radius:2px;overflow:hidden;margin-bottom:1rem}
.prog>i{display:block;height:100%;width:0;background:var(--accent);border-radius:2px;transition:width .25s ease}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.45rem;
  border:1px solid var(--border);border-radius:10px;background:var(--card-2);
  padding:.68rem 1.3rem;font-size:.9rem;font-weight:600;cursor:pointer;color:var(--text);
  transition:transform .15s,box-shadow .15s,background .15s,border-color .15s;text-decoration:none;
}
.btn:active{transform:scale(.97)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#04121f;font-weight:700;box-shadow:0 4px 14px rgba(56,189,248,.28)}
[data-theme="light"] .btn.primary{color:#fff;box-shadow:0 4px 14px rgba(2,132,199,.25)}
.btn.danger{color:var(--bad);border-color:rgba(248,113,113,.4);background:rgba(248,113,113,.08)}
.btn.armed{background:var(--bad);border-color:var(--bad);color:#fff;animation:armPulse .9s ease infinite}
.btn.big{width:100%;padding:.95rem;font-size:1rem;border-radius:12px}
.btn.sm{padding:.45rem .85rem;font-size:.78rem}
.r-actions{display:flex;gap:.6rem;margin-top:1.2rem;flex-wrap:wrap}

/* ---------- 模式选择菜单 ---------- */
.menu{display:grid;gap:.7rem;margin-top:.2rem}
.menu-item{
  display:flex;align-items:center;gap:.9rem;width:100%;text-align:left;cursor:pointer;
  padding:.95rem 1.05rem;background:var(--card-2);border:1px solid var(--border);border-radius:12px;
  transition:border-color .2s,transform .2s;color:var(--text);font-size:.9rem;
}
.menu-item:hover{border-color:var(--accent);transform:translateY(-2px)}
.mi-icon{width:38px;height:38px;flex:none;border-radius:9px;background:color-mix(in srgb,var(--accent) 12%,transparent);display:flex;align-items:center;justify-content:center}
.mi-icon svg{width:19px;height:19px;stroke:var(--accent);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.menu-item b{display:block;font-size:.92rem}
.menu-item span{display:block;font-size:.75rem;color:var(--muted);margin-top:.12rem;line-height:1.45}

/* ---------- 分段选择 ---------- */
.seg{display:inline-flex;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--card-2)}
.seg button{border:0;background:transparent;color:var(--muted);padding:.45rem .95rem;font-size:.8rem;cursor:pointer}
.seg button.on{background:color-mix(in srgb,var(--accent) 16%,transparent);background:rgba(56,189,248,.16);color:var(--accent);font-weight:600}
.opt-row{display:flex;align-items:center;gap:.7rem;margin:.5rem 0 1.1rem;flex-wrap:wrap}
.opt-row label{font-size:.78rem;color:var(--muted)}

/* ---------- 倒计时 ---------- */
.count-ov{
  position:absolute;inset:0;z-index:6;border-radius:inherit;
  display:flex;align-items:center;justify-content:center;
  background:color-mix(in srgb,var(--bg) 74%,transparent);
  backdrop-filter:blur(2px);
}
.count-num{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:4.4rem;font-weight:700;color:var(--accent);animation:countIn .9s ease infinite}

/* ---------- 反馈条 ---------- */
.fx{height:4px;border-radius:2px;max-width:420px;margin:.85rem auto 0;transition:background .15s;opacity:.9}
.fx.good{background:var(--good)}
.fx.bad{background:var(--bad)}

/* ============================================================
   N-back
   ============================================================ */
.ngrid{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;max-width:390px;margin:0 auto}
.ncell{
  aspect-ratio:1;border-radius:12px;border:1px solid var(--border);background:var(--card-2);
  display:flex;align-items:center;justify-content:center;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:clamp(1.9rem,7vw,2.6rem);font-weight:700;
  transition:background .12s,border-color .12s,color .12s;
}
.ncell.on{
  background:color-mix(in srgb,var(--accent) 16%,var(--card-2));
  border-color:var(--accent);color:var(--accent);animation:pop .16s ease;
}
.nboard-wrap{max-width:390px;margin:0 auto}

/* ============================================================
   Stroop
   ============================================================ */
.stroop-card{
  background:var(--card-2);border:1px solid var(--border);border-radius:14px;
  min-height:190px;display:flex;align-items:center;justify-content:center;margin-bottom:1rem;
}
.stroop-word{font-size:clamp(3.2rem,12vw,4.6rem);font-weight:800;letter-spacing:.06em;animation:pop .14s ease}
.stroop-answers{display:grid;grid-template-columns:repeat(4,1fr);gap:.6rem}
.sbtn{
  height:3.6rem;border:none;border-radius:11px;color:#fff;font-weight:700;font-size:1.02rem;
  cursor:pointer;position:relative;box-shadow:var(--shadow);
  transition:transform .12s,filter .12s;
}
.sbtn:active{transform:scale(.94);filter:brightness(1.15)}
.sbtn[data-c="red"]{background:#dc2626}
.sbtn[data-c="blue"]{background:#2563eb}
.sbtn[data-c="green"]{background:#16a34a}
.sbtn[data-c="yellow"]{background:#d97706}
.sbtn .kbd{position:absolute;top:5px;right:6px;background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.35);color:#fff;font-size:.58rem}
@media(hover:none),(max-width:560px){.sbtn .kbd{display:none}}

/* ============================================================
   反应速度
   ============================================================ */
.react-stage{
  position:relative;height:min(52vh,330px);border-radius:14px;border:1px solid var(--border);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6rem;
  cursor:pointer;user-select:none;-webkit-user-select:none;overflow:hidden;
  transition:background .05s,border-color .05s;
}
.react-stage.wait{background:var(--card-2);cursor:default}
.react-stage.go{background:var(--bad);border-color:var(--bad)}
.react-hint{font-size:.85rem;color:var(--muted)}
.react-stage.go .react-hint{color:#fff}
.react-rt{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:2.7rem;font-weight:700;line-height:1}
.react-stage.go .react-rt{color:#fff}
.pulse-dot{width:13px;height:13px;border-radius:50%;background:var(--muted);animation:blink 1.5s ease infinite}
.arrow{width:92px;height:92px;stroke:#fff;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;animation:pop .14s ease}
.arrow.up{transform:rotate(0)}.arrow.right{transform:rotate(90deg)}
.arrow.down{transform:rotate(180deg)}.arrow.left{transform:rotate(-90deg)}
.dpad{display:grid;grid-template-columns:repeat(3,58px);grid-template-rows:repeat(2,58px);gap:.5rem;justify-content:center;margin-top:1rem}
.dbtn{
  border:1px solid var(--border);border-radius:11px;background:var(--card-2);cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:transform .12s,border-color .12s;
}
.dbtn:active{transform:scale(.93);border-color:var(--accent)}
.dbtn svg{width:24px;height:24px;stroke:var(--accent);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.dbtn[data-d="up"]{grid-column:2;grid-row:1}
.dbtn[data-d="left"]{grid-column:1;grid-row:2}
.dbtn[data-d="down"]{grid-column:2;grid-row:2}
.dbtn[data-d="right"]{grid-column:3;grid-row:2}
.chips{display:flex;gap:.4rem;flex-wrap:wrap;justify-content:center;margin-top:.9rem;min-height:1.6rem}
.chip-rt{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.74rem;color:var(--accent);
  border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);border-radius:99px;padding:.18rem .6rem;
}
.chip-rt.bad{color:var(--bad);border-color:rgba(248,113,113,.4)}

/* ============================================================
   数字广度
   ============================================================ */
.digit-display{
  min-height:150px;display:flex;align-items:center;justify-content:center;
  background:var(--card-2);border:1px solid var(--border);border-radius:14px;margin-bottom:1rem;
}
.digit-big{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:clamp(3.6rem,14vw,5rem);font-weight:700;animation:pop .14s ease}
.input-chips{display:flex;gap:.45rem;justify-content:center;flex-wrap:wrap;min-height:2.4rem;margin-bottom:1rem}
.input-chips .ic{
  width:2.1rem;height:2.6rem;border:1px dashed var(--border-strong);border-radius:8px;
  display:flex;align-items:center;justify-content:center;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.2rem;font-weight:700;
}
.input-chips .ic.fill{border-style:solid;border-color:var(--accent);color:var(--accent);animation:pop .12s ease}
.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:.55rem;max-width:330px;margin:0 auto}
.key{
  height:3.3rem;border:1px solid var(--border);border-radius:10px;background:var(--card-2);cursor:pointer;
  font-size:1.25rem;font-weight:600;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  transition:transform .1s,border-color .1s;
}
.key:active{transform:scale(.94);border-color:var(--accent)}
.key.ctrl{font-size:.85rem;color:var(--muted)}
.key.ok{background:color-mix(in srgb,var(--accent) 14%,var(--card-2));border-color:var(--accent);color:var(--accent)}

/* ============================================================
   TMT
   ============================================================ */
.tmt-board{
  position:relative;height:clamp(320px,52vh,440px);border:1px solid var(--border);
  border-radius:14px;background:var(--card-2);overflow:hidden;touch-action:manipulation;
}
.tmt-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.tmt-lines polyline{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;opacity:.85}
.tnode{
  position:absolute;transform:translate(-50%,-50%);width:44px;height:44px;border-radius:50%;
  border:1.5px solid var(--border-strong);background:var(--card);color:var(--text);
  font-weight:700;font-size:.98rem;display:flex;align-items:center;justify-content:center;
  cursor:pointer;padding:0;transition:transform .12s,border-color .12s,background .12s,color .12s;
}
.tnode:active{transform:translate(-50%,-50%) scale(.9)}
.tnode.done{background:color-mix(in srgb,var(--accent) 15%,var(--card));border-color:var(--accent);color:var(--accent)}
.tnode.next{border-color:var(--accent);animation:ring 1.5s ease infinite}
.tnode.wrong{border-color:var(--bad);color:var(--bad);animation:shake .32s ease}
@media(max-width:520px){.tnode{width:37px;height:37px;font-size:.86rem}}

/* ============================================================
   结果面板
   ============================================================ */
.result{animation:fadeup .4s ease both}
.r-kicker{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.66rem;
  letter-spacing:.26em;color:var(--accent);text-transform:uppercase;
}
.result-main{display:flex;align-items:baseline;gap:.55rem;margin:.7rem 0 .15rem}
.r-val{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:clamp(3rem,10vw,4.1rem);font-weight:700;line-height:1;letter-spacing:-.02em}
.r-unit{font-size:1.05rem;color:var(--muted)}
.r-label{color:var(--muted);font-size:.82rem}
.r-badges{display:flex;gap:.4rem;margin-top:.7rem;flex-wrap:wrap}
.badge{font-size:.7rem;padding:.22rem .6rem;border-radius:99px;border:1px solid var(--border);color:var(--muted)}
.badge.good{color:var(--good);border-color:rgba(52,211,153,.45);background:rgba(52,211,153,.1)}
.badge.acc{color:var(--accent);border-color:rgba(56,189,248,.4);background:rgba(56,189,248,.1)}
.statrow{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin:1.2rem 0}
.stat{background:var(--card-2);border:1px solid var(--border);border-radius:10px;padding:.68rem .8rem}
.stat i{display:block;font-style:normal;font-size:.66rem;color:var(--muted);letter-spacing:.08em;margin-bottom:.18rem}
.stat b{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.12rem;font-weight:700}
.sparkbox{border:1px solid var(--border);border-radius:10px;padding:.8rem .9rem;background:var(--card-2)}
.spark-title{font-size:.68rem;color:var(--muted);letter-spacing:.08em;margin-bottom:.45rem}
.spark{width:100%;height:auto;display:block}
.spark-line{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.spark-avg{stroke:var(--border-strong);stroke-dasharray:3 4;stroke-width:1}
.spark-dot-best{fill:var(--good)}
.spark-dot-last{fill:var(--accent)}
.spark-empty{color:var(--muted);font-size:.78rem;padding:.9rem 0;text-align:center}
.r-rows{margin:1.05rem 0;border:1px solid var(--border);border-radius:10px;overflow:hidden}
.r-row{display:flex;justify-content:space-between;gap:1rem;padding:.58rem .85rem;font-size:.82rem;background:var(--card);border-bottom:1px solid var(--border)}
.r-row:last-child{border-bottom:0}
.r-row span{color:var(--muted)}
.r-row b{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:600;white-space:nowrap}
.sync-badge{display:inline-flex;align-items:center;gap:.4rem;font-size:.72rem;color:var(--muted)}
.sync-badge::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--muted)}
.sync-badge.ok{color:var(--good)}.sync-badge.ok::before{background:var(--good)}
.sync-badge.warn{color:var(--warn)}.sync-badge.warn::before{background:var(--warn)}

/* ============================================================
   游戏中心
   ============================================================ */
.hub-hero{padding:3.2rem 0 1.4rem;text-align:center}
.hub-kicker{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.66rem;letter-spacing:.3em;color:var(--accent)}
.hub-hero h1{font-size:clamp(1.9rem,5.5vw,2.6rem);font-weight:700;letter-spacing:-.02em;margin:.7rem 0 .5rem}
.hub-sub{color:var(--muted);font-size:.9rem}
.hub-stats{display:flex;gap:.6rem;justify-content:center;margin-top:1.2rem;flex-wrap:wrap}
.domains{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:center;margin:1.5rem 0 2.1rem}
.domain{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.66rem;letter-spacing:.06em;
  padding:.3rem .65rem;border:1px solid var(--border);border-radius:99px;color:var(--muted);background:var(--card);
}
.games-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.9rem}
@media(max-width:680px){.games-grid{grid-template-columns:1fr}}
.gcard{
  position:relative;display:flex;flex-direction:column;gap:.62rem;overflow:hidden;
  background:var(--card);border:1px solid var(--border);border-radius:16px;padding:1.15rem 1.2rem;
  color:var(--text);text-decoration:none;box-shadow:var(--shadow);
  transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease;
  opacity:0;transform:translateY(16px);
}
.gcard.show{opacity:1;transform:translateY(0)}
.gcard:hover{transform:translateY(-4px);border-color:var(--accent);box-shadow:0 10px 28px rgba(0,0,0,.28)}
[data-theme="light"] .gcard:hover{box-shadow:0 10px 28px rgba(2,132,199,.14)}
.gcard-top{display:flex;align-items:center;justify-content:space-between}
.gicon{width:44px;height:44px;border-radius:11px;background:color-mix(in srgb,var(--accent) 12%,transparent);display:flex;align-items:center;justify-content:center}
.gicon svg{width:22px;height:22px;stroke:var(--accent);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.gcode{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.6rem;letter-spacing:.2em;color:var(--faint)}
.gname{font-size:1.06rem;font-weight:700;letter-spacing:-.01em}
.gtrain{font-size:.78rem;color:var(--muted);line-height:1.5}
.gsci{
  align-self:flex-start;font-size:.66rem;color:var(--accent);
  background:color-mix(in srgb,var(--accent) 10%,transparent);
  border:1px solid color-mix(in srgb,var(--accent) 28%,transparent);
  border-radius:99px;padding:.2rem .6rem;
}
.gbest{margin-top:auto;padding-top:.65rem;border-top:1px dashed var(--border);display:flex;justify-content:space-between;align-items:baseline;font-size:.7rem;color:var(--muted)}
.gbest b{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;color:var(--text);font-weight:700}
.hub-foot{text-align:center;padding:2.4rem 0 1rem;color:var(--faint);font-size:.72rem;line-height:1.8}

/* ---------- 动画 ---------- */
@keyframes fadeup{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes pop{from{transform:scale(.82);opacity:.4}to{transform:scale(1);opacity:1}}
@keyframes blink{0%,100%{opacity:.25}50%{opacity:1}}
@keyframes shake{0%,100%{transform:translate(-50%,-50%)}25%{transform:translate(calc(-50% - 5px),-50%)}75%{transform:translate(calc(-50% + 5px),-50%)}}
@keyframes ring{0%,100%{box-shadow:0 0 0 0 rgba(56,189,248,.35)}55%{box-shadow:0 0 0 9px rgba(56,189,248,0)}}
@keyframes armPulse{50%{opacity:.72}}
@keyframes countIn{0%{transform:scale(1.35);opacity:0}22%{opacity:1;transform:scale(1)}100%{transform:scale(.88);opacity:.12}}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
