/* ============================================================
   Rhixio 灵犀 · 边界/投影/动效令牌（源：tokens.json v6 §shadow/§motion + theme-packs.json）
   移动端铁律：画面内禁一切带偏移/模糊的外投影——层级只靠 periwinkle 描边(ring)、
   色阶与底部渐隐遮罩表达；inset 描边与凹槽内阴影保留。
   （官网/大屏面可用柔投影，见 theme-packs.json shadows 组）
   ============================================================ */

:root {
  /* 描边环（『0 0 0 N』无模糊环形视同描边，可用） */
  --shadow-ring: inset 0 0 0 1px rgba(100, 118, 200, 0.3);
  --shadow-ring-soft: inset 0 0 0 1px rgba(100, 118, 200, 0.22);
  --shadow-card: inset 0 0 0 1px rgba(100, 118, 200, 0.3);
  --shadow-group-card: inset 0 0 0 1px rgba(90, 84, 216, 0.18);   /* 0.14–0.22 档 */
  --shadow-bubble-in: inset 0 0 0 1px rgba(90, 84, 216, 0.1);
  --shadow-input-well: inset 0 0 0 1px rgba(90, 84, 216, 0.22), inset 0 1px 2px rgba(23, 23, 31, 0.06);
  --shadow-capsule: inset 0 0 0 1px rgba(100, 118, 200, 0.3);

  /* 大屏/官网档（移动端 app 内不用外投影） */
  --shadow-card-web: inset 0 0 0 1px rgba(100, 118, 200, 0.3), 0 1px 3px rgba(23, 23, 31, 0.05);
  --shadow-float-web: inset 0 0 0 1px rgba(100, 118, 200, 0.3), 0 18px 42px -14px rgba(23, 23, 31, 0.32);
  --shadow-primary-btn-web: 0 6px 14px -6px rgba(90, 84, 216, 0.65);

  /* 时长/曲线 */

  /* 动效时长（ms） */
  --dur-press: 120ms; /* @kind other */            /* 按压 · 裸图标 scale .84 · 行/卡 .96–.98 */
  --dur-overlay: 240ms; /* @kind other */          /* 浮层/切页 220–280 */
  --dur-menu: 240ms; /* @kind other */             /* 菜单/toast */
  --dur-msg-in: 300ms; /* @kind other */           /* 消息入场 translateY 8→0 + scale .98→1 */
  --dur-search: 320ms; /* @kind other */           /* 搜索展开 */
  --dur-orb-spring: 580ms; /* @kind other */       /* 球回弹 550–600 spring */

  /* 关键曲线：出现类一律「生出+回弹」，禁整块闪烁刷新；灵犀位移永远有轨迹不瞬移 */
  --ease-merge-in: cubic-bezier(0.45, 0.05, 0.3, 1); /* @kind other */
  --ease-pop-out: cubic-bezier(0.3, 1.7, 0.4, 1); /* @kind other */

  /* 节奏常数（ms）：下拉去抖 650 · 下线步进 600 · 自动回复 900 · 扫码识别 2600
     灵犀条换文 7000 · 长按拎起 330 · chip 长按 300 */
}

[data-theme="midnight"] {
  --shadow-ring: inset 0 0 0 1px rgba(168, 172, 206, 0.24);
  --shadow-ring-soft: inset 0 0 0 1px rgba(150, 161, 196, 0.34);
  --shadow-card: inset 0 0 0 1px rgba(168, 172, 206, 0.24);
  --shadow-group-card: inset 0 0 0 1px rgba(168, 172, 206, 0.18);
  --shadow-bubble-in: inset 0 0 0 1px rgba(168, 172, 206, 0.16);
  --shadow-input-well: inset 0 0 0 1px rgba(150, 161, 196, 0.28), inset 0 1px 2px rgba(0, 0, 0, 0.3);
  --shadow-capsule: inset 0 0 0 1px rgba(168, 172, 206, 0.24);
}

@keyframes sw-pop2 {
  0% { opacity: 0; transform: scale(0.4); }
  48% { opacity: 1; transform: scale(1.13); }
  68% { transform: scale(0.95); }
  84% { transform: scale(1.05); }
  100% { transform: scale(1); }
}
@keyframes msg-in {
  from { opacity: 0; transform: translateY(8px) scale(0.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes lx-idle {
  0%, 100% { opacity: 0.85; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.08); }
}
