/* 记忆星图（移植自旧版 Wordscape）。星图永远是一片夜空，不跟随纸面主题。 */
.map-host { position: relative; height: calc(100dvh - 57px - env(safe-area-inset-top, 0px)); min-height: 420px; }
@media (max-width: 780px) { .map-host { height: calc(100dvh - 57px - 62px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px)); } }
.mini-host { position: absolute; inset: 0; }

.wsmap {
  position: absolute; inset: 0; overflow: hidden; isolation: isolate; color: #cfdbe4; font-family: var(--sans);
  --map-bg: radial-gradient(ellipse at 48% 48%, #d2e6f00d, transparent 66%), #090f17;
  --map-label: #b6c8d5; --map-label-stroke: #09131ce6; --map-major: #e3edf3; --map-line: #d0e1ec; --map-line-active: #e0edf5;
  --map-tip: #152330ed; --map-tip-border: #d9e9f029; --map-accent: #9fd8bd; --map-orbit: #a2bfce; --map-ui: #e0efff0d; --map-ui-border: #bddeef26;
  background: var(--space-base, #090f17); color-scheme: dark;
  --space-base: #080d14; --space-a: #263e50; --space-b: #514655; --space-accent: #bdc9d3;
}
.wsmap[data-background="aurora"], .preset-aurora { --space-base: #08130f; --space-a: #245249; --space-b: #495956; --space-accent: #b7d1c3; }
.wsmap[data-background="dusk"], .preset-dusk { --space-base: #160f18; --space-a: #684457; --space-b: #665749; --space-accent: #d3bec9; }
.wsmap[data-background="ocean"], .preset-ocean { --space-base: #071218; --space-a: #235366; --space-b: #355266; --space-accent: #b4d0d8; }
.wsmap[data-background="deep-space"], .wsmap[data-background="custom"], .preset-deep-space { --space-base: #080d14; --space-a: #263e50; --space-b: #514655; --space-accent: #bdc9d3; }
.wsmap[data-background="hollow"], .preset-hollow { --space-base: #101211; --space-a: #44472b; --space-b: #3b3228; --space-accent: #d6f965; }

/* 背景氛围（旧版原样） */
.graph-backdrop { z-index: 0; pointer-events: none; position: absolute; inset: 0; overflow: hidden; transition: background .8s;
  background: radial-gradient(ellipse at 48% 48%, #d2e6f005, transparent 66%), var(--space-base); }
.wsmap[data-background="hollow"] .graph-backdrop { background: radial-gradient(#343b281f, #0000 68%), #101211; }
.wsmap-svg { position: relative; z-index: 1; }
.custom-wallpaper { position: absolute; inset: 0; background-position: 50%; background-size: cover; }
.ambient-light { position: absolute; inset: -25%; will-change: transform; opacity: .7; transform: translate(0, 0); animation: ambient-drift 42s ease-in-out infinite alternate; }
.ambient-light-a { opacity: .56; background: radial-gradient(ellipse at 28% 66%, var(--space-a), transparent 42%); animation-duration: 65s; }
.ambient-light-b { opacity: .46; background: radial-gradient(ellipse at 72% 32%, var(--space-b), transparent 40%); animation-duration: 82s; animation-direction: alternate-reverse; }
.ambient-silk { opacity: .15; inset: -40%; background: conic-gradient(from 30deg at 55% 55%, transparent 0deg, var(--space-accent) 32deg, transparent 75deg, transparent 170deg, var(--space-b) 225deg, transparent 270deg); filter: blur(65px); mix-blend-mode: screen; animation-duration: 90s; }
.ambient-grain { position: absolute; inset: 0; opacity: .018; background-image: radial-gradient(#d9eaf3 .5px, #0000 .7px); background-size: 3px 3px; }
.backdrop-shade { position: absolute; inset: 0; background: linear-gradient(#050a1430, #0000 35% 60%, #02060c55), radial-gradient(#0000 35%, #02050b90); }
.wsmap[data-background="custom"] .ambient-light { display: none; }
.wsmap[data-background="custom"] .backdrop-shade { background: linear-gradient(rgb(3 9 17 / var(--wallpaper-dim)), rgb(3 9 17 / var(--wallpaper-dim))), radial-gradient(ellipse at center, transparent, #03070d60); }
@keyframes ambient-drift { 0% { transform: translate(-2%, -1%) scale(1); } to { transform: translate(4%, 3%) scale(1.08); } }
.wsmap[data-background="hollow"] .ambient-silk { display: none; }
.wsmap[data-background="hollow"] .ambient-light-a { opacity: .23; }
.wsmap[data-background="hollow"] .ambient-light-b { opacity: .28; }
.terminal-grid, .terminal-stripe { display: none; }
.wsmap[data-background="hollow"] .terminal-grid { display: block; pointer-events: none; opacity: .13; transform-origin: 50% 40%; position: absolute; inset: -20% -35% -70%;
  background-image: linear-gradient(#a0b19c2a 1px, #0000 1px), linear-gradient(90deg, #a0b19c2a 1px, #0000 1px); background-size: 64px 64px;
  transform: perspective(800px) rotateX(55deg); -webkit-mask-image: radial-gradient(#000 15%, #0000 65%); mask-image: radial-gradient(#000 15%, #0000 65%); }
.wsmap[data-background="hollow"] .terminal-stripe { display: block; position: absolute; bottom: 0; right: 0; width: 35%; height: 4px; opacity: .32; background: repeating-linear-gradient(-45deg, #d6f965 0 9px, #0000 9px 18px); }
.wsmap[data-motion="still"] .ambient-light, .wsmap.mini .ambient-light { animation-play-state: paused; }
.wsmap[data-background="hollow"] .wsmap-seg button[aria-pressed="true"] { color: #172014; background: #d6f965; }

/* 设置面板里的背景选项（旧版原样） */
.background-options { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.background-option { display: block; min-width: 0; text-align: left; color: #d5e4ed; background: #ffffff03; border: 1px solid #aecde414; border-radius: 15px; padding: 7px 7px 12px; transition: border .2s, background .2s; }
.background-option[aria-pressed="true"] { background: #bfdcf709; border-color: #9cbfd78c; }
.background-option:hover { background: #d2eaff08; border-color: #abc9df66; }
.background-option > span:last-child { display: block; margin: 10px 5px 0; font-size: 14px; }
.background-option small { display: block; margin-top: 5px; color: #8fa6b8; font-size: 12px; font-weight: 400; }
.background-swatch { display: block; position: relative; overflow: hidden; height: 90px; border-radius: 10px;
  background: radial-gradient(ellipse at 20% 95%, var(--space-a), transparent 65%), radial-gradient(ellipse at 85% 10%, var(--space-b), transparent 72%), var(--space-base); }
.background-swatch.preset-hollow { background: repeating-linear-gradient(-45deg, #0000 0 24px, #d6f96510 24px 25px), radial-gradient(at 30% 55%, #62774059, #0000 55%), #141713; }
.background-swatch > i { position: absolute; top: 57%; left: 28%; width: 3px; height: 3px; border-radius: 50%; background: #d2e7f2a6; box-shadow: 0 0 10px 3px #b3d6f129; }
.background-swatch > i:nth-child(2) { width: 2px; height: 2px; top: 34%; left: 60%; }
.background-swatch > i:nth-child(3) { width: 2px; height: 2px; top: 70%; left: 78%; }
.background-option[aria-pressed="true"] .background-swatch::after { content: "✓"; position: absolute; top: 6px; right: 9px; color: #e7f3fa; font-size: 14px; }
.custom-background-row { display: flex; align-items: center; gap: 10px; margin-top: 15px; }
.wallpaper-upload { flex: 1; padding: 11px 12px; font-size: 13px; color: #b5c9d8; background: 0 0; border: 1px dashed #9db8cf3d; border-radius: 9px; }
.wallpaper-upload:hover { background: #e5f3ff05; border-color: #bbd9ee80; }
.custom-background-choice { position: relative; overflow: hidden; width: 60px; height: 43px; padding: 0; background: 0 0; border: 1px solid #a2bdd040; border-radius: 8px; }
.custom-background-choice.selected { border-color: #bcdff2; box-shadow: 0 0 0 1px #bcdff2; }
.custom-background-choice img { width: 100%; height: 100%; object-fit: cover; display: block; }
.icon-x { padding: 9px 10px; border-radius: 8px; border: 1px solid #ffffff18; background: none; color: #b5c9d8; font-size: 12.5px; }
.icon-x:hover { background: #ffffff10; }
.appearance-help { margin: 6px 0 0; font-size: 12px; color: #8a9cab; line-height: 1.6; }
.appearance-range { display: block; margin: 12px 0 4px; }
.appearance-range > span { display: flex; justify-content: space-between; align-items: center; font-size: 14px; color: #bdd0de; }
.appearance-range small { color: #8ca9bf; font-size: 12px; font-variant-numeric: tabular-nums; }
.appearance-range input { display: block; width: 100%; height: 5px; margin: 14px 0 0; accent-color: #9ec1d9; cursor: pointer; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
@media (max-width: 420px) { .background-options { gap: 10px; } .background-swatch { height: 66px; } .background-option small { font-size: 11px; } }

/* 邦布主题：橄榄黑底、浅绿色连线 */
.wsmap[data-theme="hollow"] {
  --map-bg: radial-gradient(#343b2833, #0000 68%), #101211;
  --map-label: #d4dccb; --map-label-stroke: #101710c9; --map-major: #eef3e4; --map-line: #cfe0b4; --map-line-active: #e5f8be;
  --map-tip: #1b211cef; --map-tip-border: #cddfb233; --map-accent: #d6f965; --map-orbit: #c6d3b4; --map-ui: #d6f96508; --map-ui-border: #d6f96530;
}
.wsmap-svg { display: block; width: 100%; height: 100%; touch-action: none; -webkit-user-select: none; user-select: none; cursor: grab; overflow: visible; }
.wsmap-svg.panning { cursor: grabbing; }
.wsmap.mini .wsmap-svg { pointer-events: none; cursor: inherit; }

/* 连线 */
.connection { fill: none; stroke: var(--map-line); stroke-width: .8px; stroke-opacity: .28; pointer-events: none; transition: stroke-opacity .4s, stroke .4s; }
.connection.bridge { stroke-opacity: .14; stroke-dasharray: 2 6; }
.connection.active { stroke: var(--map-line-active); stroke-opacity: .7; stroke-width: 1.25px; stroke-dasharray: none; }
.connection.quiet { stroke-opacity: .07; }
.wsmap.mini .connection { stroke-opacity: .34; stroke-width: 1.4px; }

/* 节点 */
.neuron { cursor: pointer; outline: none; transition: opacity .35s; }
.neuron.unrelated { opacity: .38; }
.neuron.stage-dormant.unrelated { opacity: .6; }
.neuron .hit { pointer-events: all; }
.neuron-core { stroke-width: .45px; transition: fill-opacity .65s, stroke .4s; }
.neuron:hover .neuron-core, .neuron:focus-visible .neuron-core { stroke: #f0f8fc; }
.neuron.stage-dormant .neuron-core { stroke-width: 1.2px; stroke-opacity: .75; }
.neuron .selection { display: none; pointer-events: none; }
.neuron.selected .selection { display: inline; }
.selection-ring { fill: none; stroke: #e3f2fc7a; stroke-width: .8px; }
.selection-aura { fill: none; stroke: #d1ebfa24; stroke-width: .7px; }
.neuron .owned-ring { fill: none; stroke: #f3d27a; stroke-opacity: .75; stroke-width: 1.4px; stroke-dasharray: 2 3; pointer-events: none; }
.neuron .review-pulse { fill: none; stroke: #c8f2dc; stroke-width: 2px; pointer-events: none; transform-box: fill-box; transform-origin: 50%; animation: review-pulse 2.4s ease-out 3; }
@keyframes review-pulse { 0% { opacity: .9; transform: scale(1); } to { opacity: 0; transform: scale(2.6); } }
.node-label { fill: var(--map-label); stroke: var(--map-label-stroke); stroke-width: 4px; paint-order: stroke; stroke-linejoin: round; letter-spacing: .15px; pointer-events: none; font-family: var(--sans); transition: opacity .3s, fill .3s; }
.major-label { fill: var(--map-major); font-family: var(--serif); letter-spacing: .2px; }
.neuron:hover .node-label, .neuron.selected .node-label { fill: #fff; }

/* 球体 */
.orb-atmosphere { transition: opacity .45s; }
.node-orb[data-skin="bangboo"] .orb-atmosphere, .node-orb[data-skin="living"] .orb-atmosphere { transition: opacity 1.8s ease-in-out; }
.node-orb[data-skin="bangboo"] .orb-light-edge { opacity: .2; }
.orb-aura { transform-origin: 0 0; transition: transform .6s; }
.orb-breath { transform-origin: 0 0; animation: orb-radiance 8s ease-in-out infinite; animation-delay: var(--orb-phase, 0s); }
.orb-highlight { mix-blend-mode: screen; }
.neuron:hover .orb-aura, .neuron:focus-visible .orb-aura, .neuron.selected .orb-aura { transform: scale(1.16); }
.neuron:hover .orb-breath, .neuron.selected .orb-breath { animation-play-state: paused; }
@keyframes orb-radiance { 0%, to { opacity: .72; transform: scale(.97); } 50% { opacity: 1; transform: scale(1.05); } }

/* 皮肤：呼吸、邦布晃一晃、刚复习过醒过来 */
.skin-state-layer { transition: opacity 1.8s ease-in-out; }
.skin-soft-breath { transform-origin: 0 0; animation: skin-breathe var(--skin-breath-time, 6s) ease-in-out infinite; animation-delay: var(--orb-phase, 0s); }
@keyframes skin-breathe { 0%, to { transform: scale(.995); } 50% { transform: scale(var(--skin-breath-scale, 1.02)); } }
.living-skin[data-variant="bangboo"] .skin-soft-breath { animation-name: bangboo-idle; }
@keyframes bangboo-idle { 0%, to { transform: rotate(0) scale(1); } 28% { transform: rotate(calc(var(--bangboo-sway) * -1)); } 55% { transform: translateY(var(--bangboo-hop)) rotate(var(--bangboo-sway)) scale(1.012); } 78% { transform: rotate(0) scale(1); } }
.skin-awakening-a, .skin-awakening-b { transform-origin: 0 0; animation: skin-wake 1.8s cubic-bezier(.2, .65, .3, 1) both; }
.skin-awakening-b { animation-name: skin-wake-b; }
.living-skin:is([data-variant="bangboo"], [data-variant="paimon"]) .skin-awakening-a { animation-name: bangboo-wake; }
.living-skin:is([data-variant="bangboo"], [data-variant="paimon"]) .skin-awakening-b { animation-name: bangboo-wake-b; }
@keyframes skin-wake-b { 0% { transform: scale(1); } 16% { transform: scale(1.04, .96); } 42% { transform: translateY(-3px) scale(.98, 1.06); } 72% { transform: scale(1.015, .985); } to { transform: scale(1); } }
@keyframes bangboo-wake-b { 0% { transform: scale(1) rotate(0); } 18% { transform: scale(.98) rotate(-4deg); } 45% { transform: translateY(-3px) scale(1.035) rotate(4deg); } 72% { transform: translateY(-1px) scale(1.01) rotate(-1deg); } to { transform: scale(1) rotate(0); } }
@keyframes skin-wake { 0% { transform: scale(1); } 16% { transform: scale(1.04, .96); } 42% { transform: translateY(-3px) scale(.98, 1.06); } 72% { transform: scale(1.015, .985); } to { transform: scale(1); } }
@keyframes bangboo-wake { 0% { transform: scale(1) rotate(0); } 18% { transform: scale(.98) rotate(-4deg); } 45% { transform: translateY(-3px) scale(1.035) rotate(4deg); } 72% { transform: translateY(-1px) scale(1.01) rotate(-1deg); } to { transform: scale(1) rotate(0); } }
.skin-return-ripple { transform-origin: 0 0; animation: skin-return 1.6s ease-out both; }
@keyframes skin-return { 0% { opacity: .45; transform: scale(.72); } to { opacity: 0; transform: scale(2); } }
.neuron:hover .skin-soft-breath, .neuron.selected .skin-soft-breath, .wsmap[data-motion="still"] .skin-soft-breath, .wsmap[data-motion="still"] .orb-breath { animation-play-state: paused; }

/* 轨道、群落 */
.memory-orbits ellipse { fill: none; stroke: var(--map-orbit); stroke-opacity: .09; stroke-dasharray: 2 12; stroke-width: 1px; }
.wsmap.mini .memory-orbits ellipse { stroke-opacity: .14; stroke-width: 2px; }
.memory-orbits text { fill: var(--map-orbit); opacity: .55; letter-spacing: 2px; font: 13px var(--sans); }
.cluster-fields > g { transition: opacity .6s; }
.cluster-label { fill: var(--map-orbit); letter-spacing: 1.5px; opacity: .7; font: 14px var(--sans); }
.cluster-label tspan { opacity: .75; font-size: 12px; letter-spacing: .5px; }

/* 悬停卡片 */
.wsmap-tip { position: absolute; left: 0; top: 0; z-index: 5; width: 250px; pointer-events: none; display: grid; gap: 4px; padding: 14px 17px; border-radius: 16px; background: var(--map-tip); border: 1px solid var(--map-tip-border); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); box-shadow: 0 16px 50px #01070f66; color: #e6edf2; }
.wsmap-tip strong { font-family: var(--serif); font-size: 20px; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wsmap-tip span { color: #cad4dd; font-size: 14px; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.wsmap-tip small { color: #a5b9c8; font-size: 12px; line-height: 1.6; display: flex; align-items: center; gap: 6px; }
.wsmap-tip .tip-days { border-top: 1px solid #cce1ef14; margin-top: 4px; padding-top: 6px; }
.stage-dot { flex: none; width: 7px; height: 7px; border-radius: 50%; display: inline-block; }

/* 控件 */
.wsmap-top { position: absolute; top: 14px; left: var(--gl); right: var(--gr); display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; pointer-events: none; }
.wsmap-top > * { pointer-events: auto; }
.wsmap-seg, .wsmap-tools { display: flex; gap: 4px; padding: 4px; border-radius: 12px; background: var(--map-ui); border: 1px solid var(--map-ui-border); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.wsmap-seg button, .wsmap-btn { border: 0; background: none; color: #c9d6df; font-size: 13px; padding: 7px 12px; border-radius: 8px; white-space: nowrap; }
.wsmap-seg button:hover, .wsmap-btn:hover { background: #ffffff10; color: #fff; }
.wsmap-seg button[aria-pressed="true"] { background: #ffffff14; color: var(--map-accent); font-weight: 500; }
.wsmap-caption { position: absolute; top: 66px; left: var(--gl); right: var(--gr); margin: 0; font-size: 12.5px; color: #93a6b4; pointer-events: none; }
.wsmap[data-theme="hollow"] .wsmap-caption { color: #a8b39a; }
.wsmap-legend { position: absolute; left: var(--gl); bottom: 16px; z-index: 2; width: 236px; max-width: calc(100% - 32px); padding: 12px 14px; border-radius: 14px; background: var(--map-tip); border: 1px solid var(--map-tip-border); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); color: #c9d6df; font-size: 12.5px; display: grid; gap: 7px; }
.wsmap-legend h3 { font: 500 14px var(--sans); color: #eef3f6; margin: 0 0 2px; letter-spacing: 0; }
.lg-row { display: grid; grid-template-columns: 26px auto 1fr; align-items: center; gap: 8px; }
.lg-row b { font-weight: 500; color: #e6edf2; }
.lg-row span { color: #97a9b6; justify-self: end; }
.lg-face { width: 24px; height: 24px; border-radius: 50%; background-size: 200% 200%; background-repeat: no-repeat; }
.lg-face.dot { width: 10px; height: 10px; justify-self: center; }
.lg-hint { margin: 2px 0 0; color: #8a9cab; font-size: 12px; line-height: 1.5; }
.wsmap-empty { position: absolute; inset: 32% 10% auto; text-align: center; color: #c9d6df; pointer-events: none; }
.wsmap-empty h2 { font: 400 24px var(--serif); color: #eef3f6; margin-bottom: 8px; }
.wsmap-empty p { font-size: 14px; color: #93a6b4; }
.wsmap.mini .wsmap-empty h2 { font-size: 17px; }
@media (max-width: 560px) { .wsmap-caption { top: 64px; } .wsmap-seg button, .wsmap-btn { padding: 7px 10px; } }

/* 派蒙皮肤：沿用邦布的待机和醒来动作；不画底下的圆球和描边 */
.node-orb[data-skin="paimon"] .orb-light-edge { display: none; }
.living-skin[data-variant="paimon"] .skin-soft-breath { animation-name: bangboo-idle; }

/* 星图设置面板 */
.wsmap-panel { position: absolute; z-index: 6; top: 60px; right: var(--gr); width: min(340px, calc(100% - 32px)); max-height: calc(100% - 76px); overflow-y: auto; overscroll-behavior: contain;
  padding: 16px; border-radius: 16px; background: var(--map-tip); border: 1px solid var(--map-tip-border); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); box-shadow: 0 16px 50px #01070f80; color: #dbe5ec; display: grid; gap: 8px; }
.wsmap-panel h3 { margin: 0 0 4px; font: 500 16px var(--sans); color: #f1f5f8; }
.pn-label { margin: 6px 0 0; font-size: 12.5px; color: #97a9b6; }
.pn-skins { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
.pn-skin { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 10px 4px 8px; border-radius: 12px; border: 1px solid #ffffff14; background: #ffffff08; color: #c9d6df; font-size: 12.5px; }
.pn-skin:hover { background: #ffffff12; }
.pn-skin[aria-pressed="true"] { border-color: var(--map-accent); color: var(--map-accent); background: #ffffff14; }
.pn-face { width: 40px; height: 40px; border-radius: 50%; background-size: 200% 200%; background-position: 0 0; background-repeat: no-repeat; }
.pn-face.dot { width: 16px; height: 16px; margin: 12px 0; background: #99e8be; box-shadow: 0 0 12px #8bddb0aa; }
.pn-seg { display: flex; gap: 4px; padding: 3px; border-radius: 10px; background: #ffffff08; border: 1px solid #ffffff12; }
.pn-seg button { flex: 1; border: 0; background: none; color: #c9d6df; font-size: 13px; padding: 7px 6px; border-radius: 7px; }
.pn-seg button:hover { background: #ffffff10; }
.pn-seg button[aria-pressed="true"] { background: #ffffff18; color: var(--map-accent); font-weight: 500; }
.wsmap-panel .skin-showcase { margin-top: 4px; }

/* 设置里的皮肤演示 */
.skin-showcase { display: flex; align-items: center; gap: 12px; padding: 12px 14px 12px 6px; border-radius: 14px; background: radial-gradient(at 14% 50%, #b8d8cc22, #0000 60%), #0b1219; border: 1px solid #c3d8e326; color: #e0e7db; }
.skin-showcase[data-theme="hollow"] { background: radial-gradient(at 14% 50%, #d6f96518, #0000 55%), #101211; border-color: #d6f96530; }
.skin-showcase-orb { flex: none; overflow: visible; }
.skin-showcase-copy { min-width: 0; }
.skin-showcase-copy strong { display: block; font-size: 15px; font-weight: 500; color: #eef3e4; }
.skin-showcase-copy p { margin: 6px 0 10px; font-size: 12.5px; line-height: 1.6; color: #a3b2a8; }
.skin-play { display: inline-flex; align-items: center; gap: 7px; padding: 7px 12px; border-radius: 8px; border: 1px solid #d2e9ac40; background: #d3e9ad10; color: #d4e5be; font-size: 13px; }
.skin-play:hover { background: #d3e9ad22; }

@media (prefers-reduced-motion: reduce) {
  .ambient-light { animation: none !important; }
  .orb-breath, .skin-soft-breath, .skin-awakening-a, .skin-awakening-b, .review-pulse { animation: none !important; }
  .skin-return-ripple { display: none; }
  .orb-aura, .orb-atmosphere, .skin-state-layer, .connection, .neuron, .node-label { transition: none !important; }
}

/* AI 引入、还没学的词：一圈虚线 */
.neuron .ai-ring { fill: none; stroke: var(--map-accent); stroke-width: 1.2px; stroke-dasharray: 3 4; opacity: .75; pointer-events: none; }

/* 跟随晴天壁纸 */
.sunny-row { margin-top: 12px; }
.sunny-option { width: 100%; display: grid; grid-template-columns: 96px 1fr; gap: 10px; align-items: center; }
.sunny-option > span:last-child { margin: 0; }
.sunny-swatch { height: 60px; background: linear-gradient(135deg, #8fb7e0, #f2c58a 60%, #e98aa8); background-size: cover; background-position: center; }
.pair-in { width: 120px; padding: 10px 12px; border-radius: 9px; border: 1px solid #9db8cf3d; background: #ffffff06; color: #e0e8ee; font-size: 14px; letter-spacing: .15em; }
