/*
 * WWO 自托管图标集（替代 Font Awesome 6）
 * --------------------------------------
 * 设计目标：满足铁律 §9 wwo.ac 纯净区禁第三方脚本/字体 CDN
 * 实现方式：CSS mask-image + 内嵌 SVG data URI + currentColor
 * 用法：<i class="icon icon-globe"></i>，颜色继承父元素 color
 *
 * 图标来源：基于 Heroicons / Lucide 等开源 MIT 图标库的标准 24x24 viewBox 路径，
 *           视觉等效于 WWO 页面历史 Font Awesome solid 6.4.0 用到的图标。
 *
 * 兼容映射（保留 fa-solid / fa- 类名让旧 markup 也能渲染）：
 *   fa-globe / icon-globe / fa-earth-* → 地球
 *   fa-chevron-down / icon-chevron-down → 下箭头
 *   fa-check / icon-check → 对勾
 *   fa-clock / icon-clock → 时钟
 *   fa-id-card / icon-id-card → 证件
 *   fa-question / icon-question → 问号
 *   fa-star / icon-star → 五角星
 *   fa-info-circle / icon-info-circle → 信息圆
 *   fa-arrow-up-right-from-square / icon-arrow-up-right-from-square → 外链
 *   fa-lock / icon-lock → 锁
 */

.icon,
i.fa-solid,
i.fa-regular,
i.fa-brands {
    display: inline-block;
    width: 1em;
    height: 1em;
    vertical-align: -0.125em;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: center;
            mask-position: center;
    -webkit-mask-size: contain;
            mask-size: contain;
    line-height: 1;
}

/* 让 <i> 内若有文字时不显示 */
.icon::before,
i.fa-solid::before,
i.fa-regular::before,
i.fa-brands::before {
    content: "";
}

/* ───────── 各图标 mask-image 定义 ───────── */
/* globe */
.icon-globe, .fa-globe {
    -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.94-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z'/%3E%3C/svg%3E");
            mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.94-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z'/%3E%3C/svg%3E");
}

/* chevron-down */
.icon-chevron-down, .fa-chevron-down {
    -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z'/%3E%3C/svg%3E");
            mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z'/%3E%3C/svg%3E");
}

/* check */
.icon-check, .fa-check {
    -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E");
            mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E");
}

/* clock */
.icon-clock, .fa-clock {
    -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z'/%3E%3C/svg%3E");
            mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z'/%3E%3C/svg%3E");
}

/* id-card */
.icon-id-card, .fa-id-card {
    -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M20 4H4c-1.11 0-2 .89-2 2v12c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4V6h16v12zm-7-7h6v1.5h-6zm0 3h6V15h-6zm-3.5-1c1.38 0 2.5-1.12 2.5-2.5S10.88 8 9.5 8 7 9.12 7 10.5 8.12 13 9.5 13zm0-3.5c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm2.5 6c0-1.66-3.34-2.5-5-2.5s-5 .84-5 2.5V17h10z'/%3E%3C/svg%3E");
            mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M20 4H4c-1.11 0-2 .89-2 2v12c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4V6h16v12zm-7-7h6v1.5h-6zm0 3h6V15h-6zm-3.5-1c1.38 0 2.5-1.12 2.5-2.5S10.88 8 9.5 8 7 9.12 7 10.5 8.12 13 9.5 13zm0-3.5c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm2.5 6c0-1.66-3.34-2.5-5-2.5s-5 .84-5 2.5V17h10z'/%3E%3C/svg%3E");
}

/* question */
.icon-question, .fa-question {
    -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M11.07 12.85c.77-1.39 2.25-2.21 3.11-3.44.91-1.29.4-3.7-2.18-3.7-1.69 0-2.52 1.28-2.87 2.34L6.54 6.96C7.25 4.83 9.18 3 11.99 3c2.35 0 3.96 1.07 4.78 2.41.7 1.15 1.11 3.3.03 4.9-1.2 1.77-2.35 2.31-2.97 3.45-.25.46-.35.76-.35 2.24h-2.89c-.01-.78-.13-2.05.48-3.15zM14 20c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2z'/%3E%3C/svg%3E");
            mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M11.07 12.85c.77-1.39 2.25-2.21 3.11-3.44.91-1.29.4-3.7-2.18-3.7-1.69 0-2.52 1.28-2.87 2.34L6.54 6.96C7.25 4.83 9.18 3 11.99 3c2.35 0 3.96 1.07 4.78 2.41.7 1.15 1.11 3.3.03 4.9-1.2 1.77-2.35 2.31-2.97 3.45-.25.46-.35.76-.35 2.24h-2.89c-.01-.78-.13-2.05.48-3.15zM14 20c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2z'/%3E%3C/svg%3E");
}

/* star */
.icon-star, .fa-star {
    -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z'/%3E%3C/svg%3E");
            mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z'/%3E%3C/svg%3E");
}

/* info-circle */
.icon-info-circle, .fa-info-circle, .fa-circle-info {
    -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z'/%3E%3C/svg%3E");
            mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z'/%3E%3C/svg%3E");
}

/* arrow-up-right-from-square (external link) */
.icon-arrow-up-right-from-square, .fa-arrow-up-right-from-square, .fa-external-link-alt {
    -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z'/%3E%3C/svg%3E");
            mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z'/%3E%3C/svg%3E");
}

/* lock */
.icon-lock, .fa-lock {
    -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z'/%3E%3C/svg%3E");
            mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z'/%3E%3C/svg%3E");
}

.fa-arrow-up-right-from-square {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-arrow-top-right-on-square.svg');
            mask-image: url('/vendor/blade-heroicons/o-arrow-top-right-on-square.svg');
}

.fa-arrows-spin,
.fa-clock-rotate-left {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-arrow-path-rounded-square.svg');
            mask-image: url('/vendor/blade-heroicons/o-arrow-path-rounded-square.svg');
}

.fa-award,
.fa-ranking-star,
.fa-trophy {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-trophy.svg');
            mask-image: url('/vendor/blade-heroicons/o-trophy.svg');
}

.fa-bag-shopping {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-shopping-bag.svg');
            mask-image: url('/vendor/blade-heroicons/o-shopping-bag.svg');
}

.fa-bolt {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-bolt.svg');
            mask-image: url('/vendor/blade-heroicons/o-bolt.svg');
}

.fa-brain,
.fa-microchip {
    -webkit-mask-image: url('/vendor/blade-heroicons/s-cpu-chip.svg');
            mask-image: url('/vendor/blade-heroicons/s-cpu-chip.svg');
}

.fa-briefcase {
    -webkit-mask-image: url('/vendor/blade-heroicons/s-briefcase.svg');
            mask-image: url('/vendor/blade-heroicons/s-briefcase.svg');
}

.fa-building,
.fa-industry {
    -webkit-mask-image: url('/vendor/blade-heroicons/c-building-office.svg');
            mask-image: url('/vendor/blade-heroicons/c-building-office.svg');
}

.fa-building-columns,
.fa-landmark {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-building-library.svg');
            mask-image: url('/vendor/blade-heroicons/o-building-library.svg');
}

.fa-bullhorn {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-megaphone.svg');
            mask-image: url('/vendor/blade-heroicons/o-megaphone.svg');
}

.fa-calendar {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-calendar.svg');
            mask-image: url('/vendor/blade-heroicons/o-calendar.svg');
}

.fa-capsules {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-beaker.svg');
            mask-image: url('/vendor/blade-heroicons/o-beaker.svg');
}

.fa-car {
    -webkit-mask-image: url('/vendor/blade-heroicons/c-truck.svg');
            mask-image: url('/vendor/blade-heroicons/c-truck.svg');
}

.fa-chart-area,
.fa-chart-line {
    -webkit-mask-image: url('/vendor/blade-heroicons/s-presentation-chart-line.svg');
            mask-image: url('/vendor/blade-heroicons/s-presentation-chart-line.svg');
}

.fa-chevron-right {
    -webkit-mask-image: url('/vendor/blade-heroicons/c-chevron-right.svg');
            mask-image: url('/vendor/blade-heroicons/c-chevron-right.svg');
}

.fa-circle-question {
    -webkit-mask-image: url('/vendor/blade-heroicons/c-question-mark-circle.svg');
            mask-image: url('/vendor/blade-heroicons/c-question-mark-circle.svg');
}

.fa-compass {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-map.svg');
            mask-image: url('/vendor/blade-heroicons/o-map.svg');
}

.fa-crown,
.fa-gem {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-sparkles.svg');
            mask-image: url('/vendor/blade-heroicons/o-sparkles.svg');
}

.fa-earth-americas {
    -webkit-mask-image: url('/vendor/blade-heroicons/c-globe-americas.svg');
            mask-image: url('/vendor/blade-heroicons/c-globe-americas.svg');
}

.fa-envelope {
    -webkit-mask-image: url('/vendor/blade-heroicons/c-envelope.svg');
            mask-image: url('/vendor/blade-heroicons/c-envelope.svg');
}

.fa-eye {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-eye.svg');
            mask-image: url('/vendor/blade-heroicons/o-eye.svg');
}

.fa-file-shield {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-document-check.svg');
            mask-image: url('/vendor/blade-heroicons/o-document-check.svg');
}

.fa-file-signature {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-document-text.svg');
            mask-image: url('/vendor/blade-heroicons/o-document-text.svg');
}

.fa-fingerprint {
    -webkit-mask-image: url('/vendor/blade-heroicons/m-finger-print.svg');
            mask-image: url('/vendor/blade-heroicons/m-finger-print.svg');
}

.fa-flag {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-flag.svg');
            mask-image: url('/vendor/blade-heroicons/o-flag.svg');
}

.fa-gavel {
    -webkit-mask-image: url('/vendor/blade-heroicons/m-scale.svg');
            mask-image: url('/vendor/blade-heroicons/m-scale.svg');
}

.fa-handshake {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-hand-thumb-up.svg');
            mask-image: url('/vendor/blade-heroicons/o-hand-thumb-up.svg');
}

.fa-language {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-language.svg');
            mask-image: url('/vendor/blade-heroicons/o-language.svg');
}

.fa-layer-group {
    -webkit-mask-image: url('/vendor/blade-heroicons/s-square-3-stack-3d.svg');
            mask-image: url('/vendor/blade-heroicons/s-square-3-stack-3d.svg');
}

.fa-lightbulb {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-light-bulb.svg');
            mask-image: url('/vendor/blade-heroicons/o-light-bulb.svg');
}

.fa-magnifying-glass {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-magnifying-glass.svg');
            mask-image: url('/vendor/blade-heroicons/o-magnifying-glass.svg');
}

.fa-minus {
    -webkit-mask-image: url('/vendor/blade-heroicons/s-minus.svg');
            mask-image: url('/vendor/blade-heroicons/s-minus.svg');
}

.fa-money-bill-transfer {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-banknotes.svg');
            mask-image: url('/vendor/blade-heroicons/o-banknotes.svg');
}

.fa-palette {
    -webkit-mask-image: url('/vendor/blade-heroicons/s-paint-brush.svg');
            mask-image: url('/vendor/blade-heroicons/s-paint-brush.svg');
}

.fa-percent {
    -webkit-mask-image: url('/vendor/blade-heroicons/c-percent-badge.svg');
            mask-image: url('/vendor/blade-heroicons/c-percent-badge.svg');
}

.fa-plane {
    -webkit-mask-image: url('/vendor/blade-heroicons/m-paper-airplane.svg');
            mask-image: url('/vendor/blade-heroicons/m-paper-airplane.svg');
}

.fa-shield-halved {
    -webkit-mask-image: url('/vendor/blade-heroicons/m-shield-check.svg');
            mask-image: url('/vendor/blade-heroicons/m-shield-check.svg');
}

.fa-shuffle {
    -webkit-mask-image: url('/vendor/blade-heroicons/c-arrows-right-left.svg');
            mask-image: url('/vendor/blade-heroicons/c-arrows-right-left.svg');
}

.fa-signature {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-pencil-square.svg');
            mask-image: url('/vendor/blade-heroicons/o-pencil-square.svg');
}

.fa-square-root-variable {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-variable.svg');
            mask-image: url('/vendor/blade-heroicons/o-variable.svg');
}

.fa-user-plus {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-user-plus.svg');
            mask-image: url('/vendor/blade-heroicons/o-user-plus.svg');
}

.fa-user-slash {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-no-symbol.svg');
            mask-image: url('/vendor/blade-heroicons/o-no-symbol.svg');
}

.fa-user-tie {
    -webkit-mask-image: url('/vendor/blade-heroicons/m-user.svg');
            mask-image: url('/vendor/blade-heroicons/m-user.svg');
}

.fa-users,
.fa-users-gear,
.fa-users-rectangle {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-user-group.svg');
            mask-image: url('/vendor/blade-heroicons/o-user-group.svg');
}

.fa-wave-square {
    -webkit-mask-image: url('/vendor/blade-heroicons/c-signal.svg');
            mask-image: url('/vendor/blade-heroicons/c-signal.svg');
}

.fa-xmark {
    -webkit-mask-image: url('/vendor/blade-heroicons/o-x-mark.svg');
            mask-image: url('/vendor/blade-heroicons/o-x-mark.svg');
}
