/**
 * 心情/天气：Lucide SVG mask，本地化到 assets/icons/mood 与 assets/icons/weather。
 * 界面系统图标：Lucide SVG mask，本地化到 assets/icons/lucide。
 * 正文内联 :token: 仍使用少量本地化 cp-emoji / cp-line / cp-sys / cp-weather 字体。
 * 天气：QWeather Icons（cp-weather）+ 语义色；彩虹为系统 Emoji。
 */
@font-face {
  font-family: 'cp-emoji';
  src: url('fonts/cp-emoji.woff2') format('woff2');
  font-display: swap;
}
@font-face {
  font-family: 'cp-line';
  src: url('fonts/cp-line.woff') format('woff');
  font-display: swap;
}
@font-face {
  font-family: 'cp-sys';
  src: url('fonts/cp-sys.woff2') format('woff2');
  font-display: swap;
}
@font-face {
  font-family: 'cp-weather';
  src: url('fonts/qweather-icons.woff2') format('woff2'),
    url('fonts/qweather-icons.woff') format('woff');
  font-display: swap;
}
.cp-ico {
  display: inline-block;
  font-style: normal;
  line-height: 1;
  vertical-align: -0.12em;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.cp-ico:before {
  display: block;
}

/* —— 心情 / 天气：SVG mask —— */
.cp-ico[class*='mood-']:before,
.cp-ico[class*='weather-']:before {
  content: '' !important;
  width: 1em;
  height: 1em;
  background: currentColor;
  -webkit-mask: var(--svg-icon) center / contain no-repeat;
  mask: var(--svg-icon) center / contain no-repeat;
}

.cp-ico.mood-happy { --svg-icon: url('icons/mood/happy.svg'); color: #e9a23b; }
.cp-ico.mood-love { --svg-icon: url('icons/mood/love.svg'); color: #df6b8f; }
.cp-ico.mood-excited { --svg-icon: url('icons/mood/excited.svg'); color: #e28b35; }
.cp-ico.mood-peaceful { --svg-icon: url('icons/mood/peaceful.svg'); color: #66a06f; }
.cp-ico.mood-tired { --svg-icon: url('icons/mood/tired.svg'); color: #8c86a8; }
.cp-ico.mood-miss { --svg-icon: url('icons/mood/miss.svg'); color: #c96c9a; }
.cp-ico.mood-sad { --svg-icon: url('icons/mood/sad.svg'); color: #6d8eb8; }
.cp-ico.mood-cozy { --svg-icon: url('icons/mood/cozy.svg'); color: #a97748; }
.cp-ico.mood-angry { --svg-icon: url('icons/mood/angry.svg'); color: #d4564a; }
.cp-ico.mood-grateful { --svg-icon: url('icons/mood/grateful.svg'); color: #c1833f; }
.cp-ico.mood-surprised { --svg-icon: url('icons/mood/surprised.svg'); color: #d49b3f; }
.cp-ico.mood-shy { --svg-icon: url('icons/mood/shy.svg'); color: #d67a9a; }
.cp-ico.mood-proud { --svg-icon: url('icons/mood/proud.svg'); color: #d3a13d; }
.cp-ico.mood-anxious { --svg-icon: url('icons/mood/anxious.svg'); color: #b56b6b; }
.cp-ico.mood-nostalgic { --svg-icon: url('icons/mood/nostalgic.svg'); color: #9b7bb6; }
.cp-ico.mood-playful { --svg-icon: url('icons/mood/playful.svg'); color: #ce7f52; }
.cp-ico.mood-calm { --svg-icon: url('icons/mood/calm.svg'); color: #579eb1; }
.cp-ico.mood-hopeful { --svg-icon: url('icons/mood/hopeful.svg'); color: #e0a13d; }
.cp-ico.mood-inspired { --svg-icon: url('icons/mood/inspired.svg'); color: #d1a441; }
.cp-ico.mood-focused { --svg-icon: url('icons/mood/focused.svg'); color: #5c8ec2; }
.cp-ico.mood-relaxed { --svg-icon: url('icons/mood/relaxed.svg'); color: #8a9b70; }
.cp-ico.mood-romantic { --svg-icon: url('icons/mood/romantic.svg'); color: #d56c86; }
.cp-ico.mood-cheerful { --svg-icon: url('icons/mood/cheerful.svg'); color: #dd9d3d; }
.cp-ico.mood-lonely { --svg-icon: url('icons/mood/lonely.svg'); color: #7a8da8; }
.cp-ico.mood-curious { --svg-icon: url('icons/mood/curious.svg'); color: #7f8eb8; }
.cp-ico.mood-moved { --svg-icon: url('icons/mood/moved.svg'); color: #c884d2; }
.cp-ico.mood-brave { --svg-icon: url('icons/mood/brave.svg'); color: #5f8f70; }
.cp-ico.mood-warm { --svg-icon: url('icons/mood/warm.svg'); color: #d9794f; }
.cp-ico.mood-bored { --svg-icon: url('icons/mood/bored.svg'); color: #8b8b8b; }
.cp-ico.mood-sleepy { --svg-icon: url('icons/mood/sleepy.svg'); color: #7d82b8; }
.cp-ico.mood-stressed { --svg-icon: url('icons/mood/stressed.svg'); color: #c06b4f; }
.cp-ico.mood-confused { --svg-icon: url('icons/mood/confused.svg'); color: #8b78b6; }

.cp-ico.weather-sunny { --svg-icon: url('icons/weather/sunny.svg'); color: #f0a500; }
.cp-ico.weather-cloudy { --svg-icon: url('icons/weather/cloudy.svg'); color: #5ba3d9; }
.cp-ico.weather-overcast { --svg-icon: url('icons/weather/overcast.svg'); color: #7d8fa3; }
.cp-ico.weather-rainy { --svg-icon: url('icons/weather/rainy.svg'); color: #3d8ed6; }
.cp-ico.weather-snowy { --svg-icon: url('icons/weather/snowy.svg'); color: #7eb8ff; }
.cp-ico.weather-windy { --svg-icon: url('icons/weather/windy.svg'); color: #6b9fa7; }
.cp-ico.weather-stormy { --svg-icon: url('icons/weather/stormy.svg'); color: #6b5fd6; }
.cp-ico.weather-foggy { --svg-icon: url('icons/weather/foggy.svg'); color: #9aa7b8; }
.cp-ico.weather-hot { --svg-icon: url('icons/weather/hot.svg'); color: #e85d4c; }
.cp-ico.weather-cold { --svg-icon: url('icons/weather/cold.svg'); color: #4a9fd4; }
.cp-ico.weather-rainbow { --svg-icon: url('icons/weather/rainbow.svg'); color: #d57bd3; }
.cp-ico.weather-hail { --svg-icon: url('icons/weather/hail.svg'); color: #5cb3e0; }
.cp-ico.weather-drizzle { --svg-icon: url('icons/weather/drizzle.svg'); color: #59a8d8; }
.cp-ico.weather-shower { --svg-icon: url('icons/weather/shower.svg'); color: #408fd0; }
.cp-ico.weather-night { --svg-icon: url('icons/weather/night.svg'); color: #6d78bd; }
.cp-ico.weather-cloudy_night { --svg-icon: url('icons/weather/cloudy_night.svg'); color: #7483b5; }
.cp-ico.weather-sunrise { --svg-icon: url('icons/weather/sunrise.svg'); color: #e49a42; }
.cp-ico.weather-sunset { --svg-icon: url('icons/weather/sunset.svg'); color: #d47c52; }
.cp-ico.weather-tornado { --svg-icon: url('icons/weather/tornado.svg'); color: #8d8a96; }
.cp-ico.weather-humid { --svg-icon: url('icons/weather/humid.svg'); color: #46a9b8; }
.cp-ico.weather-dry { --svg-icon: url('icons/weather/dry.svg'); color: #c99458; }
.cp-ico.weather-dust { --svg-icon: url('icons/weather/dust.svg'); color: #b49a72; }
.cp-ico.weather-sleet { --svg-icon: url('icons/weather/sleet.svg'); color: #74a9d8; }
.cp-ico.weather-thunder { --svg-icon: url('icons/weather/thunder.svg'); color: #7b66d8; }

/* —— 界面图标：Lucide SVG mask（不再依赖 iconfont 编码）—— */
.cp-ico[class*='ui-']:before {
  content: '' !important;
  width: 1em;
  height: 1em;
  background: currentColor;
  -webkit-mask: var(--lucide-icon) center / contain no-repeat;
  mask: var(--lucide-icon) center / contain no-repeat;
}
.cp-ico.ui-compose { --lucide-icon: url('icons/lucide/compose.svg'); }
.cp-ico.ui-edit { --lucide-icon: url('icons/lucide/edit.svg'); }
.cp-ico.ui-delete { --lucide-icon: url('icons/lucide/delete.svg'); }
.cp-ico.ui-upload { --lucide-icon: url('icons/lucide/upload.svg'); }
.cp-ico.ui-play { --lucide-icon: url('icons/lucide/play.svg'); }
.cp-ico.ui-scroll { --lucide-icon: url('icons/lucide/scroll.svg'); }
.cp-ico.ui-shuffle { --lucide-icon: url('icons/lucide/shuffle.svg'); }
.cp-ico.ui-close { --lucide-icon: url('icons/lucide/close.svg'); }
.cp-ico.ui-logout { --lucide-icon: url('icons/lucide/logout.svg'); }
.cp-ico.ui-arrow-down { --lucide-icon: url('icons/lucide/arrow-down.svg'); }
.cp-ico.ui-empty { --lucide-icon: url('icons/lucide/empty.svg'); }
.cp-ico.ui-calendar { --lucide-icon: url('icons/lucide/calendar.svg'); }
.cp-ico.ui-heartbeat { --lucide-icon: url('icons/lucide/heartbeat.svg'); }
.cp-ico.ui-download { --lucide-icon: url('icons/lucide/download.svg'); }
.cp-ico.ui-arrow-left { --lucide-icon: url('icons/lucide/arrow-left.svg'); }
.cp-ico.ui-arrow-right { --lucide-icon: url('icons/lucide/arrow-right.svg'); }
.cp-ico.ui-todo { --lucide-icon: url('icons/lucide/todo.svg'); }
.cp-ico.ui-sun { --lucide-icon: url('icons/lucide/sun.svg'); }
.cp-ico.ui-moon { --lucide-icon: url('icons/lucide/moon.svg'); }
.cp-ico.ui-msg { --lucide-icon: url('icons/lucide/msg.svg'); }

/* —— 正文内 :token: —— */
.cp-ico.cp-if-inline[data-if='smile']:before { font-family: cp-emoji !important; content: '\e61f'; }
.cp-ico.cp-if-inline[data-if='heart']:before { font-family: cp-emoji !important; content: '\e61a'; }
.cp-ico.cp-if-inline[data-if='star']:before { font-family: cp-emoji !important; content: '\002a'; }
.cp-ico.cp-if-inline[data-if='sparkles']:before { font-family: cp-emoji !important; content: '\e615'; }
.cp-ico.cp-if-inline[data-if='flame']:before { font-family: cp-emoji !important; content: '\e616'; }
.cp-ico.cp-if-inline[data-if='zap']:before { font-family: cp-emoji !important; content: '\e618'; }
.cp-ico.cp-if-inline[data-if='sun']:before { font-family: cp-sys !important; content: '\e67c'; }
.cp-ico.cp-if-inline[data-if='moon']:before { font-family: cp-sys !important; content: '\e6fa'; }
.cp-ico.cp-if-inline[data-if='cloud'] { color: #5ba3d9; }
.cp-ico.cp-if-inline[data-if='cloud']:before { font-family: cp-weather !important; content: '\f1cd'; }
.cp-ico.cp-if-inline[data-if='cloud-rain'] { color: #3d8ed6; }
.cp-ico.cp-if-inline[data-if='cloud-rain']:before { font-family: cp-weather !important; content: '\f1d5'; }
.cp-ico.cp-if-inline[data-if='snowflake'] { color: #7eb8ff; }
.cp-ico.cp-if-inline[data-if='snowflake']:before { font-family: cp-weather !important; content: '\f1f8'; }
.cp-ico.cp-if-inline[data-if='wind'] { color: #6b9fa7; }
.cp-ico.cp-if-inline[data-if='wind']:before { font-family: cp-weather !important; content: '\f14c'; }
.cp-ico.cp-if-inline[data-if='leaf']:before { font-family: cp-emoji !important; content: '\e612'; }
.cp-ico.cp-if-inline[data-if='flower-2']:before { font-family: cp-emoji !important; content: '\e61a'; }
.cp-ico.cp-if-inline[data-if='coffee']:before { font-family: cp-emoji !important; content: '\e612'; }
.cp-ico.cp-if-inline[data-if='gift']:before { font-family: cp-emoji !important; content: '\e61d'; }
.cp-ico.cp-if-inline[data-if='crown']:before { font-family: cp-emoji !important; content: '\e618'; }
.cp-ico.cp-if-inline[data-if='gem']:before { font-family: cp-emoji !important; content: '\002a'; }
.cp-ico.cp-if-inline[data-if='music']:before { font-family: cp-emoji !important; content: '\e61e'; }
.cp-ico.cp-if-inline[data-if='camera']:before { font-family: cp-emoji !important; content: '\e61d'; }
.cp-ico.cp-if-inline[data-if='rocket']:before { font-family: cp-emoji !important; content: '\e610'; }
.cp-ico.cp-if-inline[data-if='book']:before { font-family: cp-line !important; content: '\e61c'; }
.cp-ico.cp-if-inline[data-if='bell']:before { font-family: cp-sys !important; content: '\e65b'; }
.cp-ico.cp-if-inline[data-if='palette']:before { font-family: cp-sys !important; content: '\eb6a'; }
.cp-ico.cp-if-inline[data-if='cat']:before { font-family: cp-emoji !important; content: '\e61c'; }
.cp-ico.cp-if-inline[data-if='dog']:before { font-family: cp-emoji !important; content: '\e610'; }
.cp-ico.cp-if-inline[data-if='bird']:before { font-family: cp-emoji !important; content: '\e61c'; }
.cp-ico.cp-if-inline[data-if='thumbs-up']:before { font-family: cp-line !important; content: '\e66b'; }
.cp-ico.cp-if-inline[data-if='thumbs-down']:before { font-family: cp-line !important; content: '\e615'; }
.cp-ico.cp-if-inline[data-if='heart-crack']:before { font-family: cp-emoji !important; content: '\e620'; }
.cp-ico.cp-if-inline[data-if='heart-pulse']:before { font-family: cp-emoji !important; content: '\e61a'; }
