/*
 * RemixIcon v4.9.1（按主题实际用到的图标做了子集化）
 * https://remixicon.com | Released under the Remix Icon License 1.0
 * 全量包共 3200+ 图标，此处保留 161 个图标（318 个 class，line/fill 成对）：
 * 100 个主题自身使用 + 218 个常用备用。
 * 后台「X 主题配置 → 图标库」直接读取本文件列图标，改清单后重跑 build_icons.py 即可。
 */
@font-face {
  font-family: "remixicon";
  src: url("fonts/remixicon.woff2?v=d71c1175") format("woff2"),
       url("fonts/remixicon.woff?v=d71c1175") format("woff"),
       url("fonts/remixicon.ttf?v=d71c1175") format("truetype");
  font-display: swap;
}

[class^="ri-"], [class*=" ri-"] {
  font-family: "remixicon" !important;
  font-style: normal;
  font-weight: 400;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  vertical-align: -0.125em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.ri-lg { font-size: 1.25em; line-height: 0.75em; vertical-align: -0.2em; }
.ri-xl { font-size: 1.5em; line-height: 0.75em; vertical-align: -0.25em; }
.ri-spin { animation: ri-spin 1s infinite linear; }
@keyframes ri-spin { to { transform: rotate(360deg); } }

/* ===== 主题自用 ===== */
.ri-twitter-x-line:before { content: "\f3e6"; }
.ri-twitter-x-fill:before { content: "\f3e5"; }
.ri-home-5-line:before { content: "\ee1f"; }
.ri-home-5-fill:before { content: "\ee1e"; }
.ri-more-line:before { content: "\ef79"; }
.ri-more-fill:before { content: "\ef78"; }
.ri-folder-3-line:before { content: "\ed54"; }
.ri-folder-3-fill:before { content: "\ed53"; }
.ri-price-tag-3-line:before { content: "\f023"; }
.ri-price-tag-3-fill:before { content: "\f022"; }
.ri-links-line:before { content: "\eeb8"; }
.ri-links-fill:before { content: "\eeb7"; }
.ri-search-line:before { content: "\f0d1"; }
.ri-search-fill:before { content: "\f0d0"; }
.ri-close-line:before { content: "\eb99"; }
.ri-close-fill:before { content: "\eb98"; }
.ri-menu-line:before { content: "\ef3e"; }
.ri-menu-fill:before { content: "\ef3b"; }
.ri-arrow-left-line:before { content: "\ea60"; }
.ri-arrow-left-fill:before { content: "\ea5f"; }
.ri-arrow-left-s-line:before { content: "\ea64"; }
.ri-arrow-left-s-fill:before { content: "\ea63"; }
.ri-arrow-right-line:before { content: "\ea6c"; }
.ri-arrow-right-fill:before { content: "\ea6b"; }
.ri-arrow-right-s-line:before { content: "\ea6e"; }
.ri-arrow-right-s-fill:before { content: "\ea6d"; }
.ri-arrow-up-line:before { content: "\ea76"; }
.ri-arrow-up-fill:before { content: "\ea75"; }
.ri-arrow-down-s-line:before { content: "\ea4e"; }
.ri-arrow-down-s-fill:before { content: "\ea4d"; }
.ri-chat-3-line:before { content: "\eb51"; }
.ri-chat-3-fill:before { content: "\eb50"; }
.ri-link-m:before { content: "\eeaf"; }
.ri-share-forward-line:before { content: "\f0fd"; }
.ri-share-forward-fill:before { content: "\f0fc"; }
.ri-bar-chart-2-line:before { content: "\ea96"; }
.ri-bar-chart-2-fill:before { content: "\ea95"; }
.ri-eye-line:before { content: "\ecb5"; }
.ri-eye-fill:before { content: "\ecb4"; }
.ri-pushpin-2-line:before { content: "\f037"; }
.ri-pushpin-2-fill:before { content: "\f036"; }
.ri-verified-badge-line:before { content: "\f3e8"; }
.ri-verified-badge-fill:before { content: "\f3e7"; }
.ri-time-line:before { content: "\f20f"; }
.ri-time-fill:before { content: "\f20e"; }
.ri-calendar-line:before { content: "\eb27"; }
.ri-calendar-fill:before { content: "\eb26"; }
.ri-sun-line:before { content: "\f1bf"; }
.ri-sun-fill:before { content: "\f1bc"; }
.ri-moon-line:before { content: "\ef75"; }
.ri-moon-fill:before { content: "\ef72"; }
.ri-contrast-2-line:before { content: "\ebd4"; }
.ri-contrast-2-fill:before { content: "\ebd3"; }
.ri-user-line:before { content: "\f264"; }
.ri-user-fill:before { content: "\f25f"; }
.ri-login-box-line:before { content: "\eed4"; }
.ri-login-box-fill:before { content: "\eed3"; }
.ri-logout-box-r-line:before { content: "\eeda"; }
.ri-logout-box-r-fill:before { content: "\eed9"; }
.ri-settings-3-line:before { content: "\f0e6"; }
.ri-settings-3-fill:before { content: "\f0e5"; }
.ri-rss-line:before { content: "\f09f"; }
.ri-rss-fill:before { content: "\f09e"; }
.ri-edit-line:before { content: "\ec86"; }
.ri-edit-fill:before { content: "\ec85"; }
.ri-add-line:before { content: "\ea13"; }
.ri-add-fill:before { content: "\ea12"; }
.ri-image-line:before { content: "\ee4b"; }
.ri-image-fill:before { content: "\ee4a"; }
.ri-hashtag:before { content: "\edfc"; }
.ri-loader-4-line:before { content: "\eec6"; }
.ri-loader-4-fill:before { content: "\eec5"; }
.ri-error-warning-line:before { content: "\eca1"; }
.ri-error-warning-fill:before { content: "\eca0"; }
.ri-file-list-3-line:before { content: "\ecef"; }
.ri-file-list-3-fill:before { content: "\ecee"; }
.ri-book-open-line:before { content: "\eadb"; }
.ri-book-open-fill:before { content: "\eada"; }
.ri-fire-line:before { content: "\ed33"; }
.ri-fire-fill:before { content: "\ed32"; }
.ri-reply-line:before { content: "\f07a"; }
.ri-reply-fill:before { content: "\f079"; }
.ri-check-line:before { content: "\eb7b"; }
.ri-check-fill:before { content: "\eb7a"; }
.ri-external-link-line:before { content: "\ecaf"; }
.ri-external-link-fill:before { content: "\ecae"; }
.ri-emotion-happy-line:before { content: "\ec8d"; }
.ri-emotion-happy-fill:before { content: "\ec8c"; }
.ri-archive-line:before { content: "\ea48"; }
.ri-archive-fill:before { content: "\ea47"; }
.ri-article-line:before { content: "\ea7e"; }
.ri-article-fill:before { content: "\ea7d"; }
.ri-chat-smile-2-line:before { content: "\eb6f"; }
.ri-chat-smile-2-fill:before { content: "\eb6e"; }
.ri-image-2-line:before { content: "\ee45"; }
.ri-image-2-fill:before { content: "\ee44"; }
.ri-camera-line:before { content: "\eb31"; }
.ri-camera-fill:before { content: "\eb2e"; }
.ri-archive-2-line:before { content: "\f3a6"; }
.ri-archive-2-fill:before { content: "\f3a5"; }

/* ===== 常用备用：社交平台 ===== */
.ri-github-line:before { content: "\edcb"; }
.ri-github-fill:before { content: "\edca"; }
.ri-weibo-line:before { content: "\f2ba"; }
.ri-weibo-fill:before { content: "\f2b9"; }
.ri-qq-line:before { content: "\f03b"; }
.ri-qq-fill:before { content: "\f03a"; }
.ri-wechat-line:before { content: "\f2b6"; }
.ri-wechat-fill:before { content: "\f2b5"; }
.ri-wechat-pay-line:before { content: "\f2b8"; }
.ri-wechat-pay-fill:before { content: "\f2b7"; }
.ri-alipay-line:before { content: "\ea2c"; }
.ri-alipay-fill:before { content: "\ea2b"; }
.ri-bilibili-line:before { content: "\eac0"; }
.ri-bilibili-fill:before { content: "\eabf"; }
.ri-telegram-line:before { content: "\f1f0"; }
.ri-telegram-fill:before { content: "\f1ef"; }
.ri-youtube-line:before { content: "\f2d5"; }
.ri-youtube-fill:before { content: "\f2d4"; }
.ri-facebook-line:before { content: "\ecbd"; }
.ri-facebook-fill:before { content: "\ecbc"; }
.ri-instagram-line:before { content: "\ee66"; }
.ri-instagram-fill:before { content: "\ee65"; }
.ri-tiktok-line:before { content: "\f373"; }
.ri-tiktok-fill:before { content: "\f372"; }
.ri-link:before { content: "\eeb2"; }

/* ===== 常用备用：文件与内容 ===== */
.ri-file-text-line:before { content: "\ed0f"; }
.ri-file-text-fill:before { content: "\ed0e"; }
.ri-file-pdf-line:before { content: "\ecfd"; }
.ri-file-pdf-fill:before { content: "\ecfc"; }
.ri-file-word-line:before { content: "\ed1d"; }
.ri-file-word-fill:before { content: "\ed1c"; }
.ri-file-excel-line:before { content: "\ecdf"; }
.ri-file-excel-fill:before { content: "\ecde"; }
.ri-file-ppt-line:before { content: "\ed01"; }
.ri-file-ppt-fill:before { content: "\ed00"; }
.ri-file-zip-line:before { content: "\ed1f"; }
.ri-file-zip-fill:before { content: "\ed1e"; }
.ri-file-copy-line:before { content: "\ecd5"; }
.ri-file-copy-fill:before { content: "\ecd4"; }
.ri-folder-line:before { content: "\ed6a"; }
.ri-folder-fill:before { content: "\ed61"; }
.ri-folder-open-line:before { content: "\ed70"; }
.ri-folder-open-fill:before { content: "\ed6f"; }
.ri-book-marked-line:before { content: "\ead9"; }
.ri-book-marked-fill:before { content: "\ead8"; }
.ri-newspaper-line:before { content: "\ef8f"; }
.ri-newspaper-fill:before { content: "\ef8e"; }
.ri-clipboard-line:before { content: "\eb91"; }
.ri-clipboard-fill:before { content: "\eb90"; }
.ri-draft-line:before { content: "\ec5c"; }
.ri-draft-fill:before { content: "\ec5b"; }
.ri-markdown-line:before { content: "\ef1e"; }
.ri-markdown-fill:before { content: "\ef1d"; }
.ri-mail-line:before { content: "\eef6"; }
.ri-mail-fill:before { content: "\eef3"; }

/* ===== 常用备用：媒体 ===== */
.ri-image-add-line:before { content: "\ee47"; }
.ri-image-add-fill:before { content: "\ee46"; }
.ri-camera-3-line:before { content: "\eb2d"; }
.ri-camera-3-fill:before { content: "\eb2c"; }
.ri-play-circle-line:before { content: "\f009"; }
.ri-play-circle-fill:before { content: "\f008"; }
.ri-pause-circle-line:before { content: "\efd6"; }
.ri-pause-circle-fill:before { content: "\efd5"; }
.ri-video-line:before { content: "\f282"; }
.ri-video-fill:before { content: "\f281"; }
.ri-video-add-line:before { content: "\f27c"; }
.ri-video-add-fill:before { content: "\f27b"; }
.ri-music-line:before { content: "\ef85"; }
.ri-music-fill:before { content: "\ef84"; }
.ri-music-2-line:before { content: "\ef83"; }
.ri-music-2-fill:before { content: "\ef82"; }
.ri-mic-line:before { content: "\ef50"; }
.ri-mic-fill:before { content: "\ef4f"; }
.ri-headphone-line:before { content: "\ee05"; }
.ri-headphone-fill:before { content: "\ee04"; }
.ri-film-line:before { content: "\ed21"; }
.ri-film-fill:before { content: "\ed20"; }
.ri-gallery-line:before { content: "\eda5"; }
.ri-gallery-fill:before { content: "\eda4"; }

/* ===== 常用备用：工具与系统 ===== */
.ri-tools-line:before { content: "\f21b"; }
.ri-tools-fill:before { content: "\f21a"; }
.ri-settings-line:before { content: "\f0ee"; }
.ri-settings-fill:before { content: "\f0ed"; }
.ri-dashboard-3-line:before { content: "\ec12"; }
.ri-dashboard-3-fill:before { content: "\ec11"; }
.ri-database-2-line:before { content: "\ec16"; }
.ri-database-2-fill:before { content: "\ec15"; }
.ri-server-line:before { content: "\f0e0"; }
.ri-server-fill:before { content: "\f0df"; }
.ri-terminal-box-line:before { content: "\f1f6"; }
.ri-terminal-box-fill:before { content: "\f1f5"; }
.ri-bug-line:before { content: "\eb07"; }
.ri-bug-fill:before { content: "\eb06"; }
.ri-code-line:before { content: "\eba9"; }
.ri-code-fill:before { content: "\eba8"; }
.ri-code-s-slash-line:before { content: "\ebad"; }
.ri-code-s-slash-fill:before { content: "\ebac"; }
.ri-qr-code-line:before { content: "\f03d"; }
.ri-qr-code-fill:before { content: "\f03c"; }
.ri-cpu-line:before { content: "\ebf0"; }
.ri-cpu-fill:before { content: "\ebef"; }
.ri-hard-drive-2-line:before { content: "\edf9"; }
.ri-hard-drive-2-fill:before { content: "\edf8"; }
.ri-keyboard-line:before { content: "\ee75"; }
.ri-keyboard-fill:before { content: "\ee74"; }
.ri-gamepad-line:before { content: "\edab"; }
.ri-gamepad-fill:before { content: "\edaa"; }
.ri-rocket-line:before { content: "\f096"; }
.ri-rocket-fill:before { content: "\f095"; }
.ri-command-line:before { content: "\ebb8"; }
.ri-command-fill:before { content: "\ebb7"; }
.ri-download-line:before { content: "\ec5a"; }
.ri-download-fill:before { content: "\ec59"; }
.ri-cloud-line:before { content: "\eb9d"; }
.ri-cloud-fill:before { content: "\eb9c"; }

/* ===== 常用备用：界面 ===== */
.ri-filter-3-line:before { content: "\ed25"; }
.ri-filter-3-fill:before { content: "\ed24"; }
.ri-list-check-2:before { content: "\eeb9"; }
.ri-layout-grid-line:before { content: "\ee90"; }
.ri-layout-grid-fill:before { content: "\ee8f"; }
.ri-drag-move-line:before { content: "\ec62"; }
.ri-drag-move-fill:before { content: "\ec61"; }
.ri-add-circle-line:before { content: "\ea11"; }
.ri-add-circle-fill:before { content: "\ea10"; }
.ri-subtract-line:before { content: "\f1af"; }
.ri-subtract-fill:before { content: "\f1ae"; }
.ri-equalizer-line:before { content: "\ec9d"; }
.ri-equalizer-fill:before { content: "\ec9c"; }
.ri-restart-line:before { content: "\f080"; }
.ri-restart-fill:before { content: "\f07f"; }
.ri-message-3-line:before { content: "\ef46"; }
.ri-message-3-fill:before { content: "\ef45"; }
.ri-notification-3-line:before { content: "\ef94"; }
.ri-notification-3-fill:before { content: "\ef93"; }
.ri-send-plane-line:before { content: "\f0da"; }
.ri-send-plane-fill:before { content: "\f0d9"; }

/* ===== 常用备用：状态与提示 ===== */
.ri-information-line:before { content: "\ee59"; }
.ri-information-fill:before { content: "\ee58"; }
.ri-question-line:before { content: "\f045"; }
.ri-question-fill:before { content: "\f044"; }
.ri-checkbox-circle-line:before { content: "\eb81"; }
.ri-checkbox-circle-fill:before { content: "\eb80"; }
.ri-close-circle-line:before { content: "\eb97"; }
.ri-close-circle-fill:before { content: "\eb96"; }
.ri-forbid-line:before { content: "\ed95"; }
.ri-forbid-fill:before { content: "\ed94"; }
.ri-alert-line:before { content: "\ea21"; }
.ri-alert-fill:before { content: "\ea20"; }
.ri-shield-check-line:before { content: "\f100"; }
.ri-shield-check-fill:before { content: "\f0ff"; }
.ri-lock-line:before { content: "\eece"; }
.ri-lock-fill:before { content: "\eecd"; }
.ri-lock-unlock-line:before { content: "\eed2"; }
.ri-lock-unlock-fill:before { content: "\eed1"; }
.ri-key-2-line:before { content: "\ee6f"; }
.ri-key-2-fill:before { content: "\ee6e"; }
.ri-eye-off-line:before { content: "\ecb7"; }
.ri-eye-off-fill:before { content: "\ecb6"; }
.ri-thumb-down-line:before { content: "\f205"; }
.ri-thumb-down-fill:before { content: "\f204"; }
.ri-refresh-line:before { content: "\f064"; }
.ri-refresh-fill:before { content: "\f063"; }

/* ===== 常用备用：生活 ===== */
.ri-compass-3-line:before { content: "\ebbe"; }
.ri-compass-3-fill:before { content: "\ebbd"; }
.ri-calendar-event-line:before { content: "\eb25"; }
.ri-calendar-event-fill:before { content: "\eb24"; }
.ri-alarm-line:before { content: "\ea1b"; }
.ri-alarm-fill:before { content: "\ea1a"; }
.ri-timer-line:before { content: "\f215"; }
.ri-timer-fill:before { content: "\f212"; }
.ri-rainy-line:before { content: "\f056"; }
.ri-rainy-fill:before { content: "\f055"; }
.ri-leaf-line:before { content: "\eea3"; }
.ri-leaf-fill:before { content: "\eea2"; }
.ri-plant-line:before { content: "\f007"; }
.ri-plant-fill:before { content: "\f006"; }
.ri-restaurant-line:before { content: "\f084"; }
.ri-restaurant-fill:before { content: "\f083"; }
.ri-cup-line:before { content: "\ec06"; }
.ri-cup-fill:before { content: "\ec05"; }
.ri-shopping-bag-line:before { content: "\f118"; }
.ri-shopping-bag-fill:before { content: "\f117"; }
.ri-shopping-cart-line:before { content: "\f120"; }
.ri-shopping-cart-fill:before { content: "\f11f"; }
.ri-gift-line:before { content: "\edbb"; }
.ri-gift-fill:before { content: "\edba"; }
.ri-coupon-3-line:before { content: "\ebe8"; }
.ri-coupon-3-fill:before { content: "\ebe7"; }
.ri-football-line:before { content: "\ed8f"; }
.ri-football-fill:before { content: "\ed8e"; }
.ri-basketball-line:before { content: "\eaa8"; }
.ri-basketball-fill:before { content: "\eaa7"; }
.ri-emotion-sad-line:before { content: "\ec94"; }
.ri-emotion-sad-fill:before { content: "\ec93"; }
.ri-star-line:before { content: "\f18b"; }
.ri-star-fill:before { content: "\f186"; }
.ri-heart-3-line:before { content: "\ee0b"; }
.ri-heart-3-fill:before { content: "\ee0a"; }
.ri-bookmark-line:before { content: "\eae5"; }
.ri-bookmark-fill:before { content: "\eae4"; }
.ri-thumb-up-line:before { content: "\f207"; }
.ri-thumb-up-fill:before { content: "\f206"; }
.ri-map-pin-line:before { content: "\ef14"; }
.ri-map-pin-fill:before { content: "\ef13"; }

/* ===== 常用备用：人物 ===== */
.ri-user-3-line:before { content: "\f256"; }
.ri-user-3-fill:before { content: "\f255"; }
.ri-user-add-line:before { content: "\f25e"; }
.ri-user-add-fill:before { content: "\f25d"; }
.ri-user-star-line:before { content: "\f276"; }
.ri-user-star-fill:before { content: "\f275"; }
.ri-team-line:before { content: "\f1ee"; }
.ri-team-fill:before { content: "\f1ed"; }
.ri-contacts-line:before { content: "\ebd2"; }
.ri-contacts-fill:before { content: "\ebd1"; }
.ri-account-circle-line:before { content: "\ea09"; }
.ri-account-circle-fill:before { content: "\ea08"; }
.ri-group-line:before { content: "\ede3"; }
.ri-group-fill:before { content: "\ede2"; }
