:root {
    --public-primary: #123b66;
    --public-primary-dark: #0b2a4a;
    --public-primary-soft: #eaf1f7;
    --public-accent: #0f8b8d;
    --public-accent-dark: #0b6f72;
    --public-accent-soft: #e9f7f6;
    --public-bg: #f5f7fa;
    --public-surface: #ffffff;
    --public-text: #172033;
    --public-muted: #667085;
    --public-border: #dce4ec;
    --public-warning: #9a6700;
    --public-warning-bg: #fff9eb;
    --public-radius-sm: 8px;
    --public-radius: 12px;
    --public-radius-lg: 16px;
    --public-shadow: 0 8px 28px rgba(18, 59, 102, .07);
    --public-container: 1240px;
    /* 所有公共深色页头共用同一渐变，导航和 Hero 不再按页面各自维护近似色值。 */
    --public-hero-gradient: radial-gradient(circle at 10% 32%, rgba(16, 151, 204, .28), transparent 31%), linear-gradient(105deg, #082f58 0%, #06294d 52%, #061f3c 100%);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body.public-site {
    margin: 0;
    background: var(--public-bg);
    color: var(--public-text);
    font-family: Inter, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    font-size: 16px;
    line-height: 1.65;
    -webkit-font-smoothing: antialiased;
}
body.public-site a { color: var(--public-primary); text-decoration-thickness: 1px; text-underline-offset: 3px; }
body.public-site img { max-width: 100%; }
body.public-site .container { max-width: var(--public-container); }
.skip-link { position: fixed; left: 16px; top: -80px; z-index: 10000; padding: 10px 16px; background: var(--public-surface); color: var(--public-primary); border-radius: 8px; }
.skip-link:focus { top: 12px; }

/* 统一导航 */
.public-navbar { min-height: 72px; padding: 0; background-color: #06294d; background-image: var(--public-hero-gradient); border-bottom: 1px solid rgba(202, 231, 255, .13); }
body.public-site .public-navbar > .container { max-width: 1920px; }
.public-navbar .navbar-nav { flex-wrap: nowrap; }
/* 两段弹性空白分别位于品牌与主菜单、主菜单与工具之间，短语言也能保持视觉均衡。 */
@media (min-width: 1200px) {
    .public-navbar .navbar-collapse { min-width: 0; }
    .public-navbar .navbar-nav { flex: 1 1 auto; min-width: 0; margin-inline-start: 16px; }
    .public-navbar .nav-dropdown-countries { margin-inline-start: auto; }
    .public-navbar .nav-dropdown-language,
    .public-navbar .nav-dropdown-resources + .nav-dropdown-theme { margin-inline-start: auto; }
    .public-navbar.nav-overflow .navbar-nav,
    .public-navbar.nav-overflow .nav-dropdown-countries,
    .public-navbar.nav-overflow .nav-dropdown-language,
    .public-navbar.nav-overflow .nav-dropdown-resources + .nav-dropdown-theme { margin-inline-start: 0; }
}
.public-navbar .navbar-brand { color: #fff !important; font-size: 1.55rem; font-weight: 800; letter-spacing: 0; }
.brand-accent { color: #22b8b5; }
/* 子站域名前缀使用较小字号，既保留 cn.MyTempSMS 的完整记忆点，也不抢占品牌主字标。 */
.brand-domain-prefix { margin-right: .08em; color: rgba(225, 245, 255, .78); vertical-align: .14em; font-size: .64em; font-weight: 700; letter-spacing: .02em; }
.public-navbar .nav-link { min-height: 44px; color: rgba(255,255,255,.86) !important; padding: 10px 10px !important; font-size: .9rem; font-weight: 650; white-space: nowrap; border: 0; border-radius: 8px; background: transparent; }
.public-navbar .nav-link:hover, .public-navbar .nav-link:focus { color: #fff !important; background: rgba(255,255,255,.08); }
.public-navbar .nav-link:focus-visible, .public-navbar .dropdown-item:focus-visible { outline: 3px solid rgba(34,184,181,.72); outline-offset: 2px; }
.public-navbar .nav-link.active, .public-navbar .show > .nav-link { color: #fff !important; background: rgba(34,184,181,.18); }
.public-navbar .nav-sign-in { border: 1px solid rgba(255,255,255,.65); padding-inline: 18px !important; }
.public-navbar .dropdown-menu { min-width: 220px; padding: 8px; background-color: var(--public-surface); border: 1px solid var(--public-border); border-radius: 10px; box-shadow: var(--public-shadow); }
.public-navbar .dropdown-item { min-height: 40px; padding: 9px 12px; color: var(--public-text); border-radius: 7px; white-space: normal; }
.public-navbar .dropdown-item:hover, .public-navbar .dropdown-item:focus { color: var(--public-primary-dark); background: var(--public-accent-soft); }
/* 语言选择器的当前项沿用 Resources 的浅青色状态，覆盖通用 style.css 的深色 active 样式。 */
.public-navbar .dropdown-item.active, .public-navbar .dropdown-item:active { color: var(--public-primary-dark); background: var(--public-accent-soft); }
.public-navbar .navbar-toggler { border: 1px solid rgba(255,255,255,.35); padding: 7px 9px; }
/* 国家菜单有两列完整国名，桌面端使用更宽的固定面板；窄屏再交给下方媒体规则折成单列。 */
.public-navbar .countries-menu { width: min(480px, calc(100vw - 24px)); }
.public-navbar .dropdown-divider { margin: 6px 4px; border-top-color: #e2e8f0; }
/* 使用略深的细线区分号码类型与国家列表，避免下拉菜单内两个区域混在一起。 */
.public-navbar .countries-type-divider { margin-block: 9px; border-top: 1px dashed #f0f3f6; opacity: .4; }
/* 热门角标固定在推荐类型链接右上角，不影响链接的完整点击区域。 */
.public-navbar .countries-type-featured .dropdown-item { position: relative; padding-right: 76px; }
.public-navbar .countries-popular-badge { position: absolute; top: 5px; right: 8px; padding: 2px 6px; color: #fff; background: #e86f34; border-radius: 999px 999px 999px 3px; font-size: .64rem; font-weight: 700; line-height: 1.2; letter-spacing: .02em; }
.public-navbar .countries-popular-grid > ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px 6px; margin: 0; padding: 0; list-style: none; }
.public-navbar .countries-popular-grid .dropdown-item { min-width: 0; }
.public-navbar .countries-popular-grid .country-menu-link { display: flex; align-items: center; gap: 14px; min-height: 44px; padding: 9px 12px; white-space: nowrap; }
.public-navbar .countries-popular-grid .country-menu-flag { flex: 0 0 24px; width: 24px; height: 16px; object-fit: cover; border-radius: 2px; box-shadow: 0 0 0 1px rgba(8,43,85,.08); }
.public-navbar .countries-popular-grid .country-menu-link > span { white-space: nowrap; }
.public-navbar .resources-menu { width: 240px; }
/* 语言入口保留当前语言文字，地球图标只增强识别；这样不会和右侧账户头像形成两个难以区分的圆形按钮。 */
.public-navbar .nav-dropdown-language .nav-link { display: inline-flex; align-items: center; gap: 6px; }
.public-navbar .language-selector-icon { flex: 0 0 16px; filter: brightness(0) invert(1); opacity: .9; }
/* 账户头像以分隔线与语言切换器分组，在线状态等账户反馈可继续只附着在头像自身。 */
.public-navbar .nav-avatar { margin-left: 14px; padding-left: 14px; border-left: 1px solid rgba(202, 231, 255, .25); }
.public-navbar .nav-avatar > a { display: block; line-height: 0; }
.public-navbar .nav-avatar .avatar { display: block; width: 40px; height: 40px; }

/*
 * 全量语言发布后桌面导航仍需为语言名称、主题和账户入口保留空间。
 * 仅在刚进入桌面展开态的宽度收紧水平留白，避免导航把页面撑出视口；
 * 更宽屏幕继续使用默认间距，移动端则仍由折叠菜单规则接管。
 */
@media (min-width: 1200px) and (max-width: 1499.98px) {
    .public-navbar .nav-link { padding-inline: 7px !important; font-size: .86rem; }
    .public-navbar .nav-sign-in { padding-inline: 12px !important; }
    .public-navbar .nav-avatar { margin-left: 8px; padding-left: 8px; }
}

/*
 * 首页将导航和首屏内容组织为一个深蓝色 Hero。变体类只由根路径服务端模板输出，
 * 因此后续可在其他页面按需复用，而不会把目录页、详情页等既有浅色页头一并改掉。
 */
.banner.home-hero,
.banner.section-hero {
    background-color: #06294d;
    background-image: var(--public-hero-gradient);
}
.public-navbar-hero { border-bottom-color: rgba(202, 231, 255, .13); }
.banner.home-hero { padding: 48px 0 38px; color: #fff; }
.banner.home-hero h1 {
    max-width: 820px;
    margin: 0;
    color: #fff;
    text-align: left !important;
}
.home-hero-content { width: 100%; }
.home-hero-layout { display: grid; grid-template-columns: minmax(0, 1.18fr) minmax(350px, .82fr); gap: clamp(38px, 6vw, 100px); align-items: center; }
.home-hero-copy { max-width: 760px; }

/* 国家号码页以“地区身份”引导浏览：桌面端将旗帜与区号卡置左，与首页的服务介绍布局明确区分。 */
@media (min-width: 992px) {
    .country-page-public .home-hero-layout { grid-template-columns: minmax(350px, .72fr) minmax(0, 1.28fr); }
    .country-page-public .home-hero-visual { grid-column: 1; grid-row: 1; }
    .country-page-public .home-hero-copy { grid-column: 2; grid-row: 1; }
}
/* 临时邮箱沿用国家页的左右信息层级，但用邮件流转图形说明工具属性，而非暗示某个国家。 */
.mail-hero-layout { display: grid; grid-template-columns: minmax(350px, .72fr) minmax(0, 1.28fr); gap: clamp(38px, 6vw, 100px); align-items: center; }
.mail-hero-envelope { position: absolute; top: 50%; left: 50%; display: grid; width: 178px; height: 142px; place-items: center; border: 1px solid rgba(152, 237, 238, .62); border-radius: 24px; background: linear-gradient(145deg, rgba(23, 163, 179, .36), rgba(7, 45, 82, .8)); box-shadow: 0 0 0 10px rgba(38, 188, 199, .06), 0 20px 50px rgba(0, 14, 36, .36), inset 0 1px 0 rgba(255,255,255,.14); transform: translate(-50%, -50%); animation: home-hero-mail-envelope 4.8s ease-in-out infinite; }
.mail-hero-envelope::before, .mail-hero-envelope::after { position: absolute; width: 72px; height: 2px; content: ""; background: rgba(210,255,255,.46); transform-origin: center; }
.mail-hero-envelope::before { top: 59px; left: 20px; transform: rotate(34deg); }
.mail-hero-envelope::after { top: 59px; right: 20px; transform: rotate(-34deg); }
.mail-hero-envelope img { position: relative; z-index: 1; filter: invert(88%) sepia(60%) saturate(372%) hue-rotate(128deg) brightness(101%) contrast(97%); }
.mail-hero-visual-chip-inbox { top: 18%; left: 8%; animation-delay: -1.2s; }
.mail-hero-visual-chip-send { right: 5%; bottom: 17%; animation-delay: -2.5s; }
.home-hero-kicker {
    margin: 0 0 14px;
    color: #19c8cf;
    font-size: .86rem;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
}
.home-hero-description {
    max-width: 730px;
    margin: 20px 0 0;
    color: rgba(255,255,255,.84);
    font-size: 1rem;
    line-height: 1.7;
}
.home-hero-actions { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 25px; }
.home-hero-actions .btn { min-width: 196px; }
.home-hero-secondary {
    color: #fff !important;
    background: transparent;
    border: 1px solid rgba(255,255,255,.62);
}
.home-hero-secondary:hover,
.home-hero-secondary:focus { color: #fff !important; background: rgba(255,255,255,.1); border-color: #fff; }
.home-hero-actions .btn:focus-visible,
.home-hero-facts a:focus-visible { outline: 3px solid rgba(34,184,181,.88); outline-offset: 3px; }
.home-hero-facts {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0;
    width: 100%;
    margin: 46px 0 0;
    padding-top: 24px;
    border-top: 1px solid rgba(211,234,250,.2);
}
.home-hero-facts > div { min-width: 0; padding: 0 28px; border-left: 1px solid rgba(211,234,250,.25); }
.home-hero-facts > div:first-child { padding-left: 0; border-left: 0; }
.home-hero-facts dt { color: rgba(255,255,255,.7); font-size: .79rem; font-weight: 700; }
.home-hero-facts dd { margin: 4px 0 0; color: #fff; font-size: 1.35rem; font-weight: 750; line-height: 1.25; }
.home-hero-fact-value { display: block; font-size: inherit; }
body.public-site .home-hero-facts a { display: inline-block; margin-top: 6px; color: #58d8db; font-size: .78rem; font-weight: 750; }

/*
 * 右侧信号流只作为首页 Hero 的品牌化装饰：中心手机代表号码，三个轻量节点分别暗示
 * 覆盖范围、短信流和安全边界。动画不改变页面内容，也会在系统要求减少动态效果时停用。
 */
.home-hero-visual { position: relative; min-height: 330px; overflow: hidden; }
.home-hero-orbit { position: absolute; top: 50%; left: 50%; display: block; border: 1px solid rgba(91, 218, 219, .32); border-radius: 50%; transform: translate(-50%, -50%); }
.home-hero-orbit-large { width: min(31vw, 390px); height: min(31vw, 390px); border-style: dashed; animation: home-hero-orbit 22s linear infinite; }
.home-hero-orbit-small { width: min(21vw, 264px); height: min(21vw, 264px); border-color: rgba(115, 190, 255, .28); animation: home-hero-orbit 16s linear infinite reverse; }
.home-hero-device { position: absolute; top: 50%; left: 50%; display: grid; width: 116px; height: 176px; place-items: center; border: 1px solid rgba(152, 237, 238, .62); border-radius: 25px; background: linear-gradient(145deg, rgba(23, 163, 179, .32), rgba(7, 45, 82, .75)); box-shadow: 0 0 0 9px rgba(38, 188, 199, .07), 0 20px 50px rgba(0, 14, 36, .36), inset 0 1px 0 rgba(255,255,255,.14); transform: translate(-50%, -50%); animation: home-hero-device 4.8s ease-in-out infinite; }
.home-hero-device::before { position: absolute; top: 13px; width: 33px; height: 4px; content: ""; background: rgba(222,255,255,.72); border-radius: 999px; }
.home-hero-device::after { position: absolute; bottom: 17px; width: 22px; height: 3px; content: ""; background: rgba(222,255,255,.5); border-radius: 999px; }
.home-hero-device img { width: 48px; height: 48px; filter: invert(88%) sepia(60%) saturate(372%) hue-rotate(128deg) brightness(101%) contrast(97%); }
.home-hero-visual-chip { position: absolute; display: grid; width: 54px; height: 54px; place-items: center; border: 1px solid rgba(202,244,255,.36); border-radius: 16px; background: rgba(13, 75, 117, .62); box-shadow: 0 10px 25px rgba(0, 13, 34, .28), inset 0 1px 0 rgba(255,255,255,.12); backdrop-filter: blur(8px); animation: home-hero-chip 4.2s ease-in-out infinite; }
.home-hero-visual-chip img { filter: invert(84%) sepia(43%) saturate(569%) hue-rotate(128deg) brightness(101%) contrast(97%); }
.home-hero-visual-chip-globe { top: 12%; left: 10%; animation-delay: -.9s; }
.home-hero-visual-chip-message { right: 4%; bottom: 16%; animation-delay: -2.1s; }
.home-hero-visual-chip-shield { top: 19%; right: 9%; animation-delay: -3.1s; }
.home-hero-country-card { position: absolute; top: 50%; left: 50%; display: grid; width: 194px; height: 194px; place-content: center; justify-items: center; gap: 13px; border: 1px solid rgba(152, 237, 238, .6); border-radius: 50%; background: radial-gradient(circle at 35% 28%, rgba(37, 178, 193, .28), rgba(7, 45, 82, .76) 70%); box-shadow: 0 0 0 12px rgba(38, 188, 199, .06), 0 20px 50px rgba(0, 14, 36, .36), inset 0 1px 0 rgba(255,255,255,.15); transform: translate(-50%, -50%); animation: home-hero-country-card 4.8s ease-in-out infinite; }
.home-hero-country-card img { display: block; width: 132px; height: 88px; object-fit: cover; border: 1px solid rgba(229,255,255,.55); border-radius: 13px; box-shadow: 0 9px 20px rgba(0, 12, 34, .34); }
.home-hero-country-card span { display: inline-flex; align-items: center; min-height: 30px; padding: 3px 14px; color: #e6ffff; border: 1px solid rgba(163,242,240,.48); border-radius: 999px; background: rgba(7, 38, 71, .72); font-size: .95rem; font-weight: 800; line-height: 1; }
.home-hero-country-visual .home-hero-orbit-large { width: min(32vw, 400px); height: min(32vw, 400px); }
.home-hero-country-visual .home-hero-orbit-small { width: min(24vw, 294px); height: min(24vw, 294px); }
.home-hero-visual-chip-phone { bottom: 18%; left: 8%; animation-delay: -1.4s; }
.home-hero-signal-dot { position: absolute; z-index: 1; width: 10px; height: 10px; border-radius: 50%; background: #5ee8e3; box-shadow: 0 0 0 0 rgba(94,232,227,.62); animation: home-hero-signal 2.8s ease-out infinite; }
.home-hero-signal-dot-one { top: 26%; left: 31%; }
.home-hero-signal-dot-two { right: 29%; bottom: 25%; animation-delay: -.9s; }
.home-hero-signal-dot-three { right: 23%; top: 43%; animation-delay: -1.8s; }
@keyframes home-hero-orbit { to { transform: translate(-50%, -50%) rotate(360deg); } }
@keyframes home-hero-device { 50% { transform: translate(-50%, calc(-50% - 9px)); } }
@keyframes home-hero-country-card { 50% { transform: translate(-50%, calc(-50% - 7px)) scale(1.018); } }
@keyframes home-hero-mail-envelope { 50% { transform: translate(-50%, calc(-50% - 7px)) rotate(-1deg); } }
@keyframes home-hero-chip { 50% { transform: translateY(-8px); } }
@keyframes home-hero-signal { 70% { box-shadow: 0 0 0 13px rgba(94,232,227,0); } 100% { box-shadow: 0 0 0 0 rgba(94,232,227,0); } }

/*
 * 非首页的目录、服务与工具页使用紧凑栏目页头：沿用深蓝品牌底色和信息顺序，
 * 但取消首页级动效、超大留白和整组业务数据，明确与“进入站点”的首页层级区分。
 */
.banner.section-hero { padding: 34px 0 31px; color: #fff; border-bottom: 1px solid rgba(190, 230, 251, .13); }
.banner.section-hero h1 { max-width: 900px; margin: 0; color: #fff; font-size: clamp(2rem, 3.6vw, 2.85rem); text-align: left !important; }
.section-hero .direct-answer { max-width: 860px; margin: 14px 0 0; padding: 0; color: rgba(255,255,255,.83); background: transparent; border: 0; border-radius: 0; box-shadow: none; }
.section-hero .pagination-summary { color: rgba(222, 244, 255, .75); }
.section-hero .breadcrumb-public { margin: 0 0 14px; color: rgba(221, 243, 255, .72); }
.section-hero .breadcrumb-public a { color: #72dcdf; }
.section-hero .hero-fact-grid { max-width: 940px; margin-top: 22px; }
.section-hero .hero-fact-grid > div { padding: 11px 13px; background: rgba(255,255,255,.08); border-color: rgba(202,231,255,.2); }
.section-hero .hero-fact-grid dt { color: rgba(226,246,255,.68); }
.section-hero .hero-fact-grid dd { color: #fff; }
.section-hero--tool .row { width: 100%; margin: 0; }
.section-hero--tool h1.text-center { text-align: left !important; }

/*
 * 说明、政策和联系页继续保持阅读优先的浅色页头，只统一容器、标题、答案块和面包屑；
 * 这类页面不使用深色营销 Hero，避免与首页和国家目录竞争视觉优先级。
 */
.content-hero { margin-top: 32px; margin-bottom: 30px; padding: clamp(24px, 4vw, 40px); background: linear-gradient(135deg, #f2fafb, #fff); border: 1px solid #cfe5e7; border-radius: var(--public-radius-lg); box-shadow: var(--public-shadow); }
.page-hero.content-hero h1 { max-width: 820px; color: var(--public-primary-dark); font-size: clamp(2rem, 3.7vw, 3rem); text-align: left !important; }
.content-hero .direct-answer { max-width: 860px; margin-top: 16px; padding: 0; color: #40546a; background: transparent; border: 0; box-shadow: none; }
.content-hero .breadcrumb-public { margin-bottom: 16px; }

/* 号码详情的核心是可识别号码和即时操作；Hero 只建立国家上下文，不复制号码卡的操作。 */
.message-page-title { max-width: 900px; margin: 0 0 12px; padding-top: 8px; }
.message-page .message-page-title h1 { color: var(--public-primary-dark); font-size: clamp(1.9rem, 3.4vw, 2.7rem); text-align: left !important; }
.message-page-title .direct-answer { max-width: 820px; margin-top: 12px; padding: 0; color: var(--public-muted); background: transparent; border: 0; box-shadow: none; }
/* 详情页沿用国家页的左右 Hero 层级：国别动画在左，标题说明在右；手机端继承通用规则隐藏装饰。 */
/* 使用双类选择器覆盖旧详情页的通用顶部内距，保证渐变导航与 Hero 无缝衔接。 */
.message-page.message-page--hero { padding: 0 0 72px; background: var(--public-surface); }
.message-page-hero { padding-bottom: 56px !important; }
.message-hero-layout { display: grid; grid-template-columns: minmax(350px, .72fr) minmax(0, 1.28fr); gap: clamp(38px, 6vw, 100px); align-items: center; }
.message-page--hero .message-page-title { max-width: 760px; margin: 0; padding: 0; }
.message-page--hero .message-page-title h1 { max-width: 820px; color: #fff; font-size: clamp(2.35rem, 4.3vw, 4rem); line-height: 1.08; }
.message-page--hero .message-page-title .direct-answer { max-width: 760px; margin-top: 20px; color: rgba(255,255,255,.84); font-size: 1rem; line-height: 1.7; }
.message-page-content { position: relative; margin-top: -20px; }
.message-page--hero .number-summary { margin-top: 0; }

/* 公共页头和正文容器 */
#main-content, main { display: block; }
.banner { padding: 44px 0 18px; background: transparent; }
.banner .container { margin-top: 0 !important; }
.banner h1, .page-hero h1, .message-page-title h1 { margin: 0; color: var(--public-primary-dark); font-size: clamp(2rem, 4vw, 3.25rem); line-height: 1.08; letter-spacing: -.045em; font-weight: 780; text-align: center !important; text-transform: none !important; }
.direct-answer {
    width: 100%;
    max-width: none;
    margin: 18px 0 0;
    padding: clamp(18px, 2.4vw, 26px);
    color: #3c4a5f;
    background: #f7fbfb;
    border: 1px solid #a9d7d5;
    border-radius: var(--public-radius);
    box-shadow: 0 10px 32px rgba(18, 59, 102, .045);
    font-size: .98rem;
    line-height: 1.72;
    text-align: left;
}
.answer-card-editorial {
    width: 100%;
    max-width: none;
    margin-top: 22px;
    padding: clamp(22px, 3vw, 32px);
    color: #344054;
    background: #f7fbfb;
    border: 1px solid #a9d7d5;
    border-radius: var(--public-radius);
    box-shadow: 0 10px 32px rgba(18, 59, 102, .045);
}
.answer-card-eyebrow { margin: 0 0 9px; color: var(--public-accent-dark); font-size: .76rem; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
.answer-card-editorial h2 { max-width: none; margin: 0; color: var(--public-primary-dark); font-size: clamp(1.35rem, 2.4vw, 1.8rem); line-height: 1.28; letter-spacing: -.02em; font-weight: 800; }
.answer-card-divider { height: 1px; margin: 18px 0; background: #cbd8df; }
.answer-card-body { max-width: none; margin: 0; font-size: 1rem; line-height: 1.72; }
.hero-fact-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; margin: 18px 0 0; }
.hero-fact-grid > div { min-width: 0; padding: 12px 14px; border: 1px solid var(--public-border); border-radius: 8px; background: var(--public-surface); }
.hero-fact-grid dt { color: var(--public-muted); font-size: .68rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.hero-fact-grid dd { overflow-wrap: anywhere; margin: 4px 0 0; color: var(--public-primary-dark); font-size: .9rem; font-weight: 800; }
.hero-fact-value { display: block; }
/* 国家目录作为国家数量的补充操作，以深青色文本链接呈现；正常、访问后和键盘状态均维持清晰对比度。 */
.hero-fact-link,
.hero-fact-link:visited { display: inline-flex; align-items: center; margin-top: 7px; color: var(--public-accent-dark); font-size: .78rem; font-weight: 800; line-height: 1.35; text-decoration: underline; text-decoration-color: rgba(15,139,141,.38); text-underline-offset: 3px; white-space: nowrap; }
.hero-fact-link:hover { color: var(--public-primary); text-decoration-color: currentColor; }
.hero-fact-link:focus-visible { color: var(--public-primary); border-radius: 3px; outline: 3px solid rgba(15,139,141,.25); outline-offset: 3px; }
.hero-fact-grid-compact { margin-top: 14px; }
.pagination-summary { margin: 10px 0 0; color: var(--public-muted); font-size: .86rem; font-weight: 800; letter-spacing: .01em; }
.paginated-list-links { margin-top: 28px; margin-bottom: 32px; }
.page-hero { padding-top: 44px; padding-bottom: 18px; }
.page-hero > p { max-width: 820px; color: var(--public-muted); font-size: 1.08rem; }
.breadcrumb-public { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; color: var(--public-muted); font-size: .88rem; }
.breadcrumb-public a { font-weight: 650; }

/* 表单和按钮 */
body.public-site .form-control, body.public-site .form-select {
    min-height: 48px;
    background-color: var(--public-surface);
    border-color: #cdd8e3;
    border-radius: 9px;
    color: var(--public-text);
    box-shadow: none;
}
body.public-site .form-control:focus, body.public-site .form-select:focus { border-color: var(--public-accent); box-shadow: 0 0 0 3px rgba(15,139,141,.13); }
body.public-site .btn { min-height: 44px; padding: 10px 18px; border-radius: 8px; font-weight: 700; }
body.public-site .btn-primary, body.public-site .btn-primary-light, body.public-site .bg-primary { color: #fff !important; background: var(--public-accent) !important; border-color: var(--public-accent) !important; }
body.public-site .btn-primary:hover, body.public-site .btn-primary-light:hover { background: var(--public-accent-dark) !important; border-color: var(--public-accent-dark) !important; }
.btn-public-secondary { color: var(--public-primary) !important; background: var(--public-surface); border: 1px solid #bdcad8; }
.subscription-form-explain { margin: 0; color: var(--public-muted); font-size: .92rem; line-height: 1.55; }
.subscription-inline-error { margin: 14px 0 0; padding: 11px 13px; color: #8f1d1d; background: #fff1f1; border: 1px solid #f2b8b5; border-radius: var(--public-radius-sm); }
.subscription-inline-status { margin: 0; color: var(--public-text); }
.subscription-state { display: grid; justify-items: center; gap: 13px; padding: 6px 0; color: var(--public-text); text-align: center; }
.subscription-state > p { max-width: 420px; margin: 0; }
.subscription-state-icon { width: 42px; height: 42px; padding: 9px; color: var(--public-accent-dark); background: var(--public-accent-soft); border-radius: 50%; }
.subscription-email-value { width: 100%; padding: 11px 13px; overflow-wrap: anywhere; color: var(--public-primary-dark); background: #f7fafc; border: 1px solid var(--public-border); border-radius: var(--public-radius-sm); font-weight: 800; }
.subscription-open-mail { min-width: 180px; margin-top: 2px; }
.subscription-spam-hint { color: var(--public-muted); font-size: .9rem; }
.subscription-help { width: 100%; padding: 12px 14px; color: #405066; background: #f8fafc; border: 1px solid var(--public-border); border-radius: var(--public-radius-sm); text-align: left; }
.subscription-help summary { min-height: 30px; color: var(--public-primary); cursor: pointer; font-weight: 750; }
.subscription-help summary:focus-visible { outline: 3px solid var(--public-accent); outline-offset: 3px; }
.subscription-help ol { margin: 10px 0; padding-left: 22px; font-size: .9rem; line-height: 1.55; }
.subscription-help li + li { margin-top: 5px; }
.subscription-copy-sender { min-height: 40px; font-size: .88rem; }
.subscription-support { margin: 11px 0 0; font-size: .88rem; }
.subscription-resend { min-height: 44px; color: var(--public-primary); font-weight: 750; text-decoration: underline; }
.subscription-resend:disabled { color: var(--public-muted); text-decoration: none; opacity: 1; }
/* 卡片主操作使用较明亮的中蓝色，保留与描边复制按钮的层级，并确保白字清晰可读。 */
.btn-public-action { color: #fff !important; background: #2b6fa8; border: 1px solid #2b6fa8; }
.btn-public-action:hover, .btn-public-action:focus { color: #fff !important; background: #225b8d; border-color: #225b8d; }

/* 广告是布局组件：有内容时保持稳定高度，未填充时由 public-site.js 完整收起。 */
.native-ad-shell { position: relative; box-sizing: border-box; grid-column: 1 / -1; width: 100%; min-width: 0; min-height: 280px; margin: 4px 0 20px; padding: 0; overflow: hidden; background: transparent; border: 0; border-radius: var(--public-radius); }
.native-ad-shell::before { content: none; }
.native-ad-shell[hidden] { display: none !important; }
.ad-slot { min-height: 0; max-height: none; overflow: visible; }

/* 首页与国家号码列表 */
.phone-list-toolbar { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin: 8px 0 22px; }
.phone-list-toolbar h2 { margin: 0; color: var(--public-primary-dark); font-size: 1.35rem; }
.phone-list-empty { display: grid; grid-column: 1 / -1; min-height: 280px; place-content: center; justify-items: center; width: 100%; }
.phone-list-empty img { display: block; max-width: min(200px, 70vw); height: auto; }
.phone-list-empty p { margin: 16px 0 0; }
.phone-filter { width: min(100%, 430px); }
.phone-filter label { display: block; margin-bottom: 7px; color: var(--public-muted); font-size: .78rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.phone-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.phone-card-v3 { display: flex; flex-direction: column; min-width: 0; min-height: 250px; padding: 20px 22px; background: var(--public-surface); border: 1px solid var(--public-border); border-radius: 10px; box-shadow: 0 4px 14px rgba(18,59,102,.035); transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease; }
.phone-card-v3:hover { transform: translateY(-2px); border-color: #b8cad9; box-shadow: var(--public-shadow); }
.phone-card-v3[hidden] { display: none; }
.phone-card-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.phone-country { display: flex; align-items: center; min-width: 0; gap: 13px; }
.phone-country-link { display: flex; align-items: center; min-width: 0; gap: 13px; color: inherit !important; text-decoration: none; }
/* 国家名称与国旗是导航入口，但悬停时保持无下划线，避免被误解为正文链接。 */
.phone-country-link:hover, .phone-country-link:focus, .phone-country-link:hover strong, .phone-country-link:focus strong { color: var(--public-accent-dark); text-decoration: none; }
.phone-country-link:focus-visible { outline: 3px solid rgba(15,139,141,.28); outline-offset: 4px; border-radius: 5px; }
.phone-country img { width: 66px; height: 44px; object-fit: contain; flex: 0 0 auto; }
.phone-country strong { display: block; overflow: hidden; color: var(--public-primary-dark); white-space: nowrap; text-overflow: ellipsis; }
.phone-card-indicators { display: inline-flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 10px; flex: 0 0 auto; }
/* 分类链接和非跳转类型徽章共用尺寸；分类使用 a 也不会继承全局链接下划线。 */
.phone-category-badge, .phone-type-badge { display: inline-flex; align-items: center; min-height: 30px; padding: 5px 8px; border: 1px solid transparent; border-radius: 5px; font-size: .72rem; font-weight: 800; letter-spacing: .01em; white-space: nowrap; }
.phone-category-badge { color: inherit; text-decoration: none; }
/* Code locked 改为链接后仍必须保留旧徽章的金色文字，不能被 a.phone-type-badge 的继承色覆盖。 */
a.phone-type-badge { text-decoration: none; }
a.phone-type-badge.phone-type-locked { color: #8a5a00; }
/* 分类徽章必须有明确的鼠标与键盘反馈，且不改变颜色语义。 */
.phone-category-badge:hover { color: inherit; text-decoration: none; filter: brightness(.97); }
.phone-category-badge:active { transform: translateY(1px); }
.phone-category-badge:focus-visible { outline: 3px solid rgba(15,139,141,.32); outline-offset: 3px; }
/* 保留旧 Code locked 徽章的金色外观，同时为升级后的链接补齐键盘焦点反馈。 */
a.phone-type-badge:hover { color: inherit; text-decoration: none; filter: brightness(.97); }
a.phone-type-badge:focus-visible { outline: 3px solid rgba(15,139,141,.32); outline-offset: 3px; }
.phone-new { color: var(--public-accent-dark); background: var(--public-accent-soft); border-color: rgba(15,139,141,.22); font-size: .66rem; letter-spacing: .06em; }
.phone-type-rental { color: #245b88; background: #eaf2f9; border: 1px solid #c8d9e8; }
.phone-type-locked { color: #8a5a00; background: #fff4d8; border: 1px solid #f1d495; }
/* 复用站内 Feather 的圆角线框锁图标，通过遮罩继承徽章文字色，未来类型可增加各自的图标类。 */
.phone-type-icon { width: 13px; height: 13px; margin-right: 5px; background-color: currentColor; mask-repeat: no-repeat; mask-position: center; mask-size: contain; }
.phone-type-icon-calendar { mask-image: url("/static/mazer/assets/extensions/feather-icons/icons/calendar.svg"); }
.phone-type-icon-lock { mask-image: url("/static/mazer/assets/extensions/feather-icons/icons/lock.svg"); }
/* NEW 与现有类型徽章共用尺寸和颜色继承；闪电表达号码刚加入的时效性。 */
.phone-type-icon-zap { mask-image: url("/static/mazer/assets/extensions/feather-icons/icons/zap.svg"); }
/* 保持既有号码字体；仅收紧卡片内的上下留白和信息分组。 */
.phone-number-v3 { display: block; margin: 24px 0 18px; overflow-wrap: anywhere; color: var(--public-primary-dark); font-family: "Roboto Mono", "SFMono-Regular", Consolas, monospace; font-size: clamp(1.5rem, 2.7vw, 2.08rem); line-height: 1.15; letter-spacing: .035em; text-decoration: none; }
/* 号码字形必须覆盖组件默认等宽字体；number 缺少的加号、空格和星号继续回退到等宽字体。 */
.phone-number-v3.number-font,
.number-identity .number-font { font-family: "number", "Roboto Mono", "SFMono-Regular", Consolas, monospace; }
.phone-meta { display: flex; justify-content: space-between; gap: 12px; padding: 12px 0 16px; color: var(--public-muted); border-top: 1px solid var(--public-border); font-size: .82rem; }
/* 在线与离线共用同一状态组件：彩色圆点表示状态，蓝灰文字减轻视觉重量但仍保持易读。 */
.availability-status { display: inline-flex; align-items: center; gap: 8px; color: #5f6f88; font-size: .82rem; font-weight: 800; line-height: 1.2; white-space: nowrap; }
/* 外环用于提高小圆点的识别度，不把颜色扩散到文字，避免离线状态显得像警告文案。 */
.availability-status::before { content: ""; width: 9px; height: 9px; flex: 0 0 9px; border-radius: 50%; background: var(--availability-dot); box-shadow: 0 0 0 4px var(--availability-ring); }
.availability-status-online { --availability-dot: var(--public-accent); --availability-ring: rgba(15,139,141,.14); }
.availability-status-offline { --availability-dot: #f5b400; --availability-ring: rgba(245,180,0,.18); }
/* 详情页稍微放大状态圆点，在大号号码下仍能快速扫到当前状态。 */
.availability-status-detail { gap: 10px; font-size: 1rem; }
.availability-status-detail::before { width: 10px; height: 10px; flex-basis: 10px; box-shadow: 0 0 0 5px var(--availability-ring); }
.availability-status-compact { margin-top: 5px; font-size: .78rem; }
.availability-status-compact::before { width: 7px; height: 7px; flex-basis: 7px; box-shadow: 0 0 0 3px var(--availability-ring); }
.phone-actions { display: grid; grid-template-columns: minmax(110px, .8fr) minmax(150px, 1.2fr); gap: 12px; margin-top: auto; }
.phone-actions .btn { display: inline-flex; align-items: center; justify-content: center; width: 100%; text-decoration: none; }
.phone-actions .copy { cursor: pointer; }
.page { display: flex; justify-content: center; margin: 24px 0; }
.pagination { flex-wrap: wrap; gap: 4px; }
.page-link { color: var(--public-primary); border-radius: 6px !important; }
.page-item.active .page-link { background: var(--public-primary); border-color: var(--public-primary); }
.country-card-v3 { min-height: 190px; background: var(--public-surface); border: 1px solid var(--public-border); border-radius: var(--public-radius); box-shadow: 0 5px 18px rgba(18,59,102,.045); }
.country-card-link { display: grid; grid-template-columns: 118px minmax(0,1fr) auto; align-items: center; gap: 22px; height: 100%; padding: 24px; text-decoration: none; }
.country-card-link img { width: 110px; height: 72px; object-fit: contain; }
.country-card-link h3 { margin: 0 0 5px; color: var(--public-primary-dark); font-size: 1.25rem; }
.country-card-link p { margin: 0; color: var(--public-muted); }
.country-card-link strong { color: var(--public-accent-dark); font-size: .86rem; }
.country-card-link > span { color: var(--public-primary); font-weight: 750; }

/* 短信详情：桌面主阅读区 + 右侧广告栏 */
/*
  详情主卡使用原 Fontello 数字轮廓的 ASCII 兼容版本。字体仅改变 0-9 的视觉字形，
  HTML、读屏、复制和搜索引擎读取的仍是真实号码文本，不再依赖私有区字符解码。
*/
@font-face { font-family: "number-readable"; font-display: swap; src: url("numberfont/fontello-readable.woff2?v=20260812.1") format("woff2"); unicode-range: U+0030-0039; }
.message-page { padding: 34px 0 0; }
.message-page-title { margin-bottom: 14px; }
/* 顶部号码模块采用“身份与号码 / 操作”双区控制台，右侧固定操作宽度，左侧获得稳定的号码展示空间。 */
.number-summary { display: grid; grid-template-columns: minmax(0, 1.38fr) minmax(380px, .86fr); overflow: hidden; margin: 20px 0 20px; background: var(--public-surface); border: 1px solid var(--public-border); border-radius: var(--public-radius-lg); box-shadow: var(--public-shadow); }
.number-summary-main { min-width: 0; padding: 30px clamp(28px, 3.4vw, 48px) 34px; }
/*
  身份栏只承担国家、号码类型和实时状态的分组，不随在线状态改变底色；
  状态色限制在圆点、外环和文字，避免离线时出现大面积黄色并保持视觉稳定。
*/
.number-identity { display: flex; align-items: center; min-height: 70px; gap: 14px; padding: 10px 16px; background: #f5fafb; border: 1px solid #cfe8e7; border-radius: 10px; }
.number-identity > a { display: inline-flex; align-items: center; flex: 0 0 auto; }
.number-identity img { width: 66px; height: 44px; object-fit: contain; }
.number-country-label { color: #5f6f88; font-size: .88rem; font-weight: 800; letter-spacing: .11em; text-transform: uppercase; }
.number-summary-kicker { display: block; margin-top: 34px; color: #5f6f88; font-size: .78rem; font-weight: 850; letter-spacing: .1em; line-height: 1.2; text-transform: uppercase; }
.number-summary-value { display: block; width: 100%; margin: 14px 0 0; color: var(--public-primary-dark); font-family: "number-readable", "Roboto Mono", "SFMono-Regular", Consolas, monospace; font-size: clamp(2.3rem, 4vw, 3.85rem); font-weight: 400; line-height: 1; letter-spacing: .025em; white-space: nowrap; }
.number-summary-status { display: flex; align-items: center; margin-left: auto; padding-left: 16px; }
/* 在线与离线状态分别继承自身的语义色；不再用统一蓝灰覆盖状态文字。 */
.number-summary-status .availability-status-online { color: var(--public-accent-dark); }
.number-summary-status .availability-status-offline { color: #a96600; }
/* 右侧操作面板与左侧身份栏在顶部对齐，刷新仍是唯一高优先级操作。 */
.number-action-panel { display: flex; align-items: center; min-width: 0; margin: 30px 30px 30px 0; padding: 0 28px; border-left: 1px solid var(--public-border); }
.number-summary-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; gap: 10px; }
/* 次级操作先并列常用的复制和收藏；较长的随机号码入口独占整行，避免文字被压成多行。 */
.number-summary-actions .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-width: 0; min-height: 54px; padding: 12px 10px; border-radius: 10px; font-size: .94rem; font-weight: 800; white-space: nowrap; }
.number-summary-actions .btn img { width: 22px; height: 22px; flex: 0 0 auto; }
.number-summary-actions .message-refresh-button { grid-column: 1 / -1; }
.number-summary-actions .message-secondary-action { line-height: 1.15; text-align: center; }
/* 随机号码的语义文案比常用动作长，整行展示让图标、文案和触控区域均保持舒展。 */
.number-summary-actions .message-random-number-action { grid-column: 1 / -1; }
.number-summary-actions .message-secondary-action:hover { color: var(--public-primary-dark) !important; background: var(--public-accent-soft); border-color: var(--public-accent); }
.number-summary-actions .message-secondary-action:focus-visible { outline: 0; border-color: var(--public-accent); box-shadow: 0 0 0 3px rgba(23, 139, 141, .24); }
.number-summary-actions .message-secondary-action:disabled { cursor: not-allowed; opacity: .62; }
/* 操作按钮先提供统一的轻微抬升，再由下方各图标动画表达按钮自身的操作含义。 */
.number-summary-actions .btn { transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, border-color .18s ease, color .18s ease; }
.number-summary-actions .btn:not(:disabled):is(:hover, :focus-visible) { transform: translateY(-2px); box-shadow: 0 7px 14px rgba(18, 59, 102, .12); }
.number-summary-actions .btn img { transition: transform .22s ease; }
/* 刷新在悬停或键盘聚焦时转一圈，直观呼应“重新加载”动作。 */
.message-refresh-button:not(:disabled):is(:hover, :focus-visible) img { animation: message-action-refresh .58s ease-in-out; }
/* 骰子略微摇动并转向，表达“随机换一个号码”的不确定性。 */
.message-random-number-action:not(:disabled):is(:hover, :focus-visible) img { animation: message-action-dice .5s ease-in-out; }
/* 复制图标向右上轻移后回弹，模拟将内容取走的动作。 */
#copy:not(:disabled):is(:hover, :focus-visible) img { animation: message-action-copy .42s ease-out; }
/* 收藏书签上跳一次；已收藏状态沿用同一动画，避免改变既有状态颜色。 */
#favorite:not(:disabled):is(:hover, :focus-visible) img { animation: message-action-favorite .42s cubic-bezier(.2, .8, .35, 1); }
@keyframes message-action-refresh { to { transform: rotate(360deg); } }
@keyframes message-action-dice { 0%, 100% { transform: rotate(0) translateX(0); } 30% { transform: rotate(-14deg) translateX(-2px); } 65% { transform: rotate(14deg) translateX(2px); } }
@keyframes message-action-copy { 45% { transform: translate(3px, -3px); } 70% { transform: translate(1px, -1px) scale(1.08); } }
@keyframes message-action-favorite { 45% { transform: translateY(-4px) scale(1.13); } 75% { transform: translateY(0) scale(.96); } }
/* 已收藏使用珊瑚红而非成功/在线的绿色，明确表达“已保存”的持久偏好状态。 */
.number-summary-actions .message-secondary-action.is-favorite { color: #E85D75 !important; background: #FDEFF2; border-color: #E85D75; }
/* 外部 SVG 以 filter 着色，视觉颜色与 #E85D75 的按钮文字、边框保持一致。 */
.number-summary-actions .message-secondary-action.is-favorite img { filter: invert(49%) sepia(52%) saturate(736%) hue-rotate(302deg) brightness(96%) contrast(91%); }
.message-refresh-button img { filter: brightness(0) invert(1); }
/* 安全提示严格采用两行信息条：盾牌、文案和外链在同一基线，放在三个次级操作按钮之后。 */
.public-warning { display: grid; grid-template-columns: 42px minmax(0, 1fr) auto; align-items: center; column-gap: 20px; margin: 0 0 22px; padding: 20px 34px; color: #344054; background: #fffdf8; border: 1px solid #f2ce88; border-radius: 18px; }
.public-warning-icon { width: 42px; height: 42px; filter: invert(61%) sepia(56%) saturate(775%) hue-rotate(4deg) brightness(93%) contrast(90%); }
.public-warning strong, .public-warning div > span { display: block; }
/* 安全信息为辅助说明，字号低于号码和操作区，避免在首屏形成新的视觉焦点。 */
.public-warning strong { color: var(--public-primary-dark); font-size: 1.05rem; line-height: 1.3; }
.public-warning div > span { margin-top: 5px; color: #475467; font-size: .92rem; line-height: 1.45; }
.public-warning a { display: inline-flex; align-items: center; gap: 8px; color: #0783dc; font-size: 1rem; font-weight: 750; text-decoration: none; white-space: nowrap; }
.public-warning a img { width: 24px; height: 24px; }
.public-warning a:hover { text-decoration: underline; }
/* 方案一的付费导流模块紧跟公共安全提示，采用轻量青绿色表面，保持免费短信内容的主视觉权重。 */
.private-options {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(450px, .92fr);
    align-items: center;
    gap: 28px;
    margin: 0 0 24px;
    padding: 22px 26px 20px;
    color: #344054;
    background: #f7fbfb;
    border: 1px solid #a9d7d5;
    border-radius: 18px;
    box-shadow: 0 10px 32px rgba(18, 59, 102, .045);
}
.private-options-copy {
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr);
    align-items: center;
    gap: 16px;
    min-width: 0;
}
.private-options-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    background: #d9f1f0;
    border-radius: 50%;
}
.private-options-icon img { width: 24px; height: 24px; filter: invert(43%) sepia(44%) saturate(784%) hue-rotate(132deg) brightness(86%) contrast(91%); }
.private-options-eyebrow { margin: 0 0 7px; color: var(--public-accent-dark); font-size: .72rem; font-weight: 850; letter-spacing: .12em; line-height: 1.2; text-transform: uppercase; }
.private-options h2 { margin: 0; color: var(--public-primary-dark); font-size: 1.2rem; font-weight: 750; line-height: 1.3; }
.private-options-copy p:last-child { margin: 7px 0 0; color: var(--public-muted); font-size: .9rem; line-height: 1.5; }
.private-options-actions { min-width: 0; }
.private-options-buttons { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.private-options-buttons .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-width: 0;
    min-height: 50px;
    padding: 11px 12px;
    border-radius: 9px;
    font-size: .9rem;
    /* 与号码卡底部“All UK numbers”等快捷入口统一使用同一档粗体。 */
    font-weight: 750;
    line-height: 1.2;
    text-align: center;
    text-decoration: none;
    white-space: nowrap;
    transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, border-color .18s ease, color .18s ease;
}
.private-options-buttons .btn img { width: 20px; height: 20px; flex: 0 0 auto; }
.private-options-primary img { filter: brightness(0) invert(1); }
.private-options-buttons .btn:hover, .private-options-buttons .btn:focus-visible { transform: translateY(-2px); box-shadow: 0 7px 14px rgba(18, 59, 102, .12); }
.private-options-buttons .btn:focus-visible { outline: 3px solid rgba(15, 139, 141, .28); outline-offset: 2px; }
.private-options-secondary:hover, .private-options-secondary:focus-visible { color: var(--public-primary-dark) !important; background: var(--public-accent-soft); border-color: var(--public-accent); }
.private-options-note { display: flex; align-items: center; justify-content: center; gap: 7px; margin: 10px 0 0; color: var(--public-muted); font-size: .82rem; line-height: 1.35; }
.private-options-note img { width: 16px; height: 16px; opacity: .68; }
/* 次级入口收纳到主卡底部；虽包含展开与举报按钮，但三项统一呈现为无底色的快捷入口。 */
.number-summary-links { grid-column: 1 / -1; display: flex; justify-content: center; flex-wrap: wrap; gap: 0; padding: 18px 24px; border-top: 1px solid var(--public-border); }
.number-summary-links > * { display: inline-flex; align-items: center; justify-content: center; gap: 9px; width: min(31vw, 290px); min-height: 54px; padding: 0 24px; color: var(--public-primary); background: transparent; border: 0; border-radius: 0; font-weight: 750; text-decoration: none; }
.number-summary-links > button { cursor: pointer; }
/* 入口同时包含 button 与 a：显式覆盖两套框架默认 hover 色，避免同组链接出现不同颜色。 */
.number-summary-links > *:hover { color: var(--public-accent-dark) !important; background: var(--public-accent-soft); text-decoration: none; }
.number-summary-links > *:focus-visible { color: var(--public-accent-dark) !important; background: var(--public-accent-soft); outline: 2px solid var(--public-accent); outline-offset: -2px; text-decoration: none; }
/* Bootstrap 按钮的圆角会让左侧分隔看起来像半个按钮；此处强制使用纯直线分隔。 */
.number-summary-links > * + * { border: 0 !important; border-left: 1px solid var(--public-border) !important; border-radius: 0 !important; box-shadow: none !important; }
.number-summary-links img { width: 18px; height: 18px; }
.sms-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; align-items: start; gap: 24px; }
.sms-layout-single { grid-template-columns: minmax(0, 1fr); }
.sms-stream-wrap { min-width: 0; }
.sms-stream-title { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin: 0 0 12px; }
.sms-stream-title h2 { margin: 0; color: var(--public-primary-dark); font-size: 1.35rem; }
.sms-stream { display: grid; gap: 10px; }
/* 短信为空时让插图和提示在整个列表内容区居中，并用内边距保留稳定的上下呼吸空间。 */
.sms-stream > .message-empty-state { display: grid; justify-items: center; align-content: center; min-height: 280px; padding: 48px 24px; text-align: center; }
.sms-stream > .message-empty-state img { display: block; max-width: min(100%, 260px); height: auto; }
.sms-stream > .message-empty-state p { margin: 12px 0 0; }
.sms-item { display: grid; grid-template-columns: minmax(160px, 200px) minmax(0, 1fr) 100px; align-items: center; min-height: 92px; padding: 16px 18px; background: var(--public-surface); border: 1px solid var(--public-border); border-radius: 10px; }
.sms-sender { display: flex; align-items: center; gap: 10px; min-width: 0; font-weight: 750; color: var(--public-primary-dark); }
.sms-sender-name, .sms-sender-name > a, .sms-sender-name > span { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sms-avatar { position: relative; display: inline-flex; align-items: center; justify-content: center; overflow: hidden; width: 38px; height: 38px; flex: 0 0 auto; color: #fff; background: var(--public-primary); border-radius: 50%; font-size: .86rem; font-weight: 800; }
.sms-avatar > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; background: #fff; }
.sms-message { min-width: 0; padding-inline: 14px; overflow-wrap: anywhere; color: #2f3b4e; font-size: .96rem; line-height: 1.55; }
.sms-time { color: var(--public-muted); font-size: .78rem; text-align: right; }
.sms-native-ad { min-height: 150px; margin: 2px 0; }
/* 十个推荐号码需要随页面自然滚动，避免高于视口的 sticky 卡片让底部号码难以访问。 */
.sms-recommendation-rail { position: static; min-width: 0; }
.sidebar-number-card { overflow: hidden; background: var(--public-surface); border: 1px solid var(--public-border); border-radius: var(--public-radius); box-shadow: 0 4px 14px rgba(18,59,102,.035); }
.sidebar-number-header { display: flex; align-items: center; gap: 11px; padding: 20px; border-bottom: 1px solid var(--public-border); }
.sidebar-number-header img { width: 22px; height: 22px; opacity: .78; }
.sidebar-number-header h2 { margin: 0; color: var(--public-primary-dark); font-size: 1.05rem; font-weight: 800; }
.sidebar-number-list { margin: 0; padding: 0; list-style: none; }
.sidebar-number-list li + li { border-top: 1px solid var(--public-border); }
.sidebar-number-list a { display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; align-items: center; min-height: 82px; gap: 13px; padding: 13px 16px; color: var(--public-text); text-decoration: none; }
.sidebar-number-list a:hover { background: var(--public-accent-soft); text-decoration: none; }
.sidebar-number-list a:focus-visible { outline: 3px solid rgba(23,139,141,.28); outline-offset: -3px; }
.sidebar-number-flag { display: block; width: 48px; height: 32px; object-fit: contain; }
.sidebar-number-copy { min-width: 0; }
.sidebar-number-copy strong, .sidebar-number-value { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sidebar-number-copy strong { color: var(--public-primary-dark); font-size: .9rem; }
.sidebar-number-value { margin-top: 5px; color: var(--public-muted); font-size: .92rem; }
.sidebar-number-list .availability-status { gap: 6px; font-size: .74rem; }
.sidebar-number-list .availability-status::before { width: 7px; height: 7px; flex-basis: 7px; box-shadow: 0 0 0 3px var(--availability-ring); }
.sidebar-number-footer { display: flex; align-items: center; justify-content: center; gap: 9px; min-height: 56px; padding: 12px 16px; color: var(--public-accent-dark); border-top: 1px solid var(--public-border); font-size: .9rem; font-weight: 800; text-decoration: none; }
.sidebar-number-footer:hover { background: var(--public-accent-soft); text-decoration: none; }
.sidebar-number-footer:focus-visible { outline: 3px solid rgba(23,139,141,.28); outline-offset: -3px; }
/* 分享按钮贴齐短信标题右侧；仅保留服务图标，窄屏可换行而不会出现横向滚动。 */
.message-share { display: flex; flex: 0 1 auto; flex-wrap: wrap; justify-content: flex-end; gap: 7px; max-width: calc(100% - 150px); margin-left: auto; line-height: 0; }
.message-share a { float: none; margin: 0; }
.message-tags { display: flex; flex-wrap: wrap; gap: 7px; margin: 18px 0; }
.message-tags a { display: inline-flex; padding: 6px 10px; color: var(--public-primary); background: var(--public-primary-soft); border-radius: 999px; font-size: .78rem; font-weight: 700; text-decoration: none; }
/* 发现链接将国家与服务拆为独立导航，复用标签视觉并补齐标题、焦点和窄屏换行规则。 */
.discovery-links { margin: 22px 0; }
.discovery-links + .discovery-links { margin-top: 18px; }
.discovery-links-title { margin: 0 0 9px; color: var(--public-primary-dark); font-size: .92rem; font-weight: 800; line-height: 1.3; }
.discovery-links-items { display: flex; flex-wrap: wrap; gap: 7px; }
.discovery-links-items a,
.discovery-links-items a:visited { display: inline-flex; align-items: center; justify-content: center; max-width: 100%; min-height: 32px; padding: 6px 10px; color: var(--public-primary); background: var(--public-primary-soft); border-radius: 999px; font-size: .78rem; font-weight: 700; line-height: 1.25; text-align: center; text-decoration: none; overflow-wrap: anywhere; }
.discovery-links-items a:hover { color: #fff; background: var(--public-accent-dark); }
.discovery-links-items a:focus-visible { outline: 3px solid #f4b942; outline-offset: 2px; }
.message-purchase-notice { border-color: #d9c58b; background: #fffaf0; }
.hidden-projects { margin: 0 0 22px; padding: 18px; background: var(--public-surface); border: 1px solid var(--public-border); border-radius: 12px; box-shadow: 0 4px 14px rgba(18,59,102,.035); }
.hidden-projects-heading { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 14px; }
.hidden-projects-heading h2 { margin: 0; color: var(--public-primary-dark); font-size: 1.1rem; font-weight: 800; }
.hidden-project-filter { min-height: 36px; padding: 7px 12px; color: var(--public-primary); background: var(--public-primary-soft); border: 1px solid transparent; border-radius: 999px; font-size: .8rem; font-weight: 750; cursor: pointer; }
.hidden-project-filter:is(:hover, :focus-visible), .hidden-project-filter.is-active { color: #fff; background: var(--public-primary); }
.hidden-project-filter:focus-visible, .hidden-project-card:focus-visible { outline: 3px solid rgba(15,139,141,.28); outline-offset: 2px; }
.hidden-project-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 10px; }
.hidden-project-card { display: grid; grid-template-columns: 42px minmax(0, 1fr) 24px; align-items: center; gap: 10px; min-height: 72px; padding: 10px 12px; color: var(--public-text); text-align: left; background: var(--public-surface); border: 1px solid var(--public-border); border-radius: 10px; cursor: pointer; }
.hidden-project-card:is(:hover, .is-active) { background: var(--public-accent-soft); border-color: var(--public-accent); }
.hidden-project-avatar { width: 42px; height: 42px; }
.hidden-project-copy { min-width: 0; }
.hidden-project-copy strong, .hidden-project-copy span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hidden-project-copy strong { color: var(--public-primary-dark); font-size: .92rem; }
.hidden-project-copy span { margin-top: 4px; color: var(--public-muted); font-size: .76rem; }
.hidden-project-check { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; color: #fff; background: #16865c; border-radius: 50%; font-size: .75rem; font-weight: 900; }
.hidden-message-group + .hidden-message-group { margin-top: 24px; }
.hidden-message-group-title { margin: 0 0 10px; color: var(--public-primary-dark); font-size: 1rem; font-weight: 800; }
.hidden-message-group-list { display: grid; gap: 10px; }
.message-stream-state { display: flex; align-items: center; justify-content: center; gap: 10px; min-height: 126px; padding: 24px; color: var(--public-muted); text-align: center; background: var(--public-surface); border: 1px solid var(--public-border); border-radius: 10px; }
.message-stream-state .btn { margin-left: 8px; }
.sms-item--purchase .protected { cursor: pointer; }

@media (max-width: 640px) {
    .hidden-projects { padding: 15px; }
    .hidden-projects-heading { align-items: flex-start; }
    .hidden-project-list { display: flex; overflow-x: auto; padding: 2px 2px 8px; scroll-snap-type: x proximity; }
    .hidden-project-card { flex: 0 0 min(82vw, 280px); scroll-snap-align: start; }
}

/* 其他公开页复用的页面表面 */
.content > .phone, .content > .container, .public-page { position: relative; }
body.public-site .card { border: 1px solid var(--public-border) !important; border-radius: var(--public-radius) !important; box-shadow: var(--public-shadow) !important; }
body.public-site .card-body { padding: 24px; }
body.public-site table { color: var(--public-text); }
body.public-site .table > :not(caption) > * > * { padding: 15px 16px; border-bottom-color: var(--public-border); }
body.public-site .table-striped > tbody > tr:nth-of-type(odd) > * { background: #f7f9fb; box-shadow: none; }
.country-item .card { min-height: 230px; }
.country-item .country-flag { width: 120px !important; height: 76px; object-fit: contain; }
.country-item .card-text { color: var(--public-primary-dark); }
.article-shell, .trust-shell, .mail-shell, .form-shell { margin-top: 26px; margin-bottom: 46px; padding: clamp(24px, 4vw, 42px); background: var(--public-surface); border: 1px solid var(--public-border); border-radius: var(--public-radius-lg); box-shadow: var(--public-shadow); }
.article-list { display: grid; gap: 0; }
.article-list-item { position: relative; padding: 24px 0; border-bottom: 1px solid var(--public-border); }
.article-list-item h2 { max-width: 850px; margin: 4px 140px 0 0; color: var(--public-primary-dark); font-size: 1.35rem; }
.article-list-item h2 a { text-decoration: none; }
.article-read-more { position: absolute; top: 34px; right: 0; font-weight: 750; }
.article-detail { max-width: 940px !important; }
.article-detail h1 { color: var(--public-primary-dark); font-size: clamp(2rem,4vw,3rem); line-height: 1.14; letter-spacing: -.035em; }
.article-body { color: #344054; font-size: 1.04rem; line-height: 1.82; }
.article-body img { height: auto; border-radius: 10px; }
.article-body h2, .article-body h3 { margin-top: 1.7em; color: var(--public-primary-dark); }
.project-message-shell { margin-top: 12px; margin-bottom: 20px; padding: 28px; background: var(--public-surface); border: 1px solid var(--public-border); border-radius: var(--public-radius); box-shadow: var(--public-shadow); }
/* 私有号码提示与上方最后一张短信卡片之间保留稳定的视觉呼吸空间，避免标题贴住卡片边缘。 */
.project-private-options { margin-top: 28px; }
/* 项目目录卡片只保留分类、服务名和入口，避免每张卡片重复同一段泛化说明，方便访客快速比较服务。 */
.project-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 16px; }
/* 中段广告横跨整行，保证广告前后的项目卡片仍保持完整网格，避免出现一张卡片被广告挤到单独一行。 */
.project-grid > .native-ad-shell { grid-column: 1 / -1; }
.project-card-v3 { display: flex; flex-direction: column; min-height: 164px; padding: 22px 24px; background: var(--public-surface); border: 1px solid var(--public-border); border-radius: var(--public-radius); box-shadow: 0 1px 2px rgba(16, 24, 40, .04); }
.project-card-v3__identity { display: flex; align-items: flex-start; gap: 13px; min-width: 0; }
/* 与短信列表保持同一回退机制：图片绝对覆盖文字，加载失败时图片移除，首字母立即露出。 */
.project-card-v3__avatar { position: relative; display: inline-flex; align-items: center; justify-content: center; overflow: hidden; width: 48px; height: 48px; flex: 0 0 48px; color: #fff; background: var(--public-primary); border-radius: 50%; font-size: 1rem; font-weight: 800; }
.project-card-v3__avatar > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; background: #fff; }
.project-card-v3__identity > div { min-width: 0; }
.project-card-v3__identity .eyebrow { margin: 1px 0 5px; }
.project-card-v3 h3 { margin: 0 0 20px; color: var(--public-primary-dark); font-size: 1.2rem; line-height: 1.3; overflow-wrap: anywhere; }
.project-card-v3__link { display: inline-flex; align-items: center; justify-content: space-between; gap: 14px; min-height: 40px; margin-top: auto; padding-top: 14px; color: var(--public-primary); border-top: 1px solid var(--public-border); font-size: .9rem; font-weight: 750; line-height: 1.35; text-decoration: none; }
.project-card-v3__link span:last-child { flex: 0 0 auto; font-size: 1.2rem; transition: transform .18s ease; }
.project-card-v3__link:hover { color: var(--public-accent-dark); }
.project-card-v3__link:hover span:last-child { transform: translateX(3px); }
.project-card-v3__link:focus-visible { outline: 3px solid rgba(15, 139, 141, .28); outline-offset: 4px; border-radius: 3px; }
.project-card-v3__status { display: block; margin-top: auto; padding-top: 14px; color: var(--public-muted); border-top: 1px solid var(--public-border); font-size: .9rem; font-weight: 700; }
.legal-content { margin-bottom: 24px; padding: clamp(22px, 4vw, 42px); overflow-wrap: anywhere; background: var(--public-surface); border: 1px solid var(--public-border); border-radius: var(--public-radius); }
.legal-content > html, .legal-content > body { display: block; }

/* SEO/GEO 正文延续同一设计语言 */
.seo-content { padding-top: 34px; padding-bottom: 58px; }
.fact-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 12px; margin: 0 0 24px; }
.fact-grid > div { padding: 17px; background: var(--public-surface); border: 1px solid var(--public-border); border-radius: 10px; }
.fact-grid dt { color: var(--public-muted); font-size: .72rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
.fact-grid dd { margin: 5px 0 0; color: var(--public-primary-dark); font-weight: 750; }
.seo-section-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
.seo-section-grid > * { min-width: 0; }
.seo-section, .faq-block, .related-links { margin-bottom: 0; padding: 24px; background: var(--public-surface); border: 1px solid var(--public-border); border-radius: var(--public-radius); }
.seo-section-comparison { grid-column: 1 / -1; }
.seo-section h2, .faq-block h2, .related-links h2, .warning-callout h2 { margin: 0 0 12px; color: var(--public-primary-dark); font-size: 1.22rem; }
.seo-section p:last-child, .faq-block p:last-child { margin-bottom: 0; }
.comparison-actions { display: none; }
.comparison-actions a,
.comparison-actions a:visited { display: inline-flex; align-items: center; min-height: 40px; padding: 8px 13px; color: var(--public-primary); background: var(--public-accent-soft); border: 1px solid #b9dedd; border-radius: 7px; font-size: .84rem; font-weight: 800; line-height: 1.35; text-decoration: none; }
.comparison-actions a:hover { color: #fff; background: var(--public-accent-dark); border-color: var(--public-accent-dark); }
.comparison-actions a:focus-visible { outline: 3px solid rgba(15,139,141,.25); outline-offset: 3px; }
.comparison-table { width: 100%; border-collapse: collapse; }
.comparison-table th, .comparison-table td { padding: 11px; border-bottom: 1px solid var(--public-border); text-align: left; vertical-align: top; }
.comparison-heading-link,
.comparison-heading-link:visited { color: var(--public-primary-dark); text-decoration: underline; text-decoration-color: rgba(15,139,141,.38); text-underline-offset: 3px; }
.comparison-heading-link:hover { color: var(--public-accent-dark); text-decoration-color: currentColor; }
.comparison-heading-link:focus-visible { border-radius: 3px; outline: 3px solid rgba(15,139,141,.25); outline-offset: 3px; }
.warning-callout { margin: 18px 0; padding: 22px 24px; background: var(--public-warning-bg); border: 1px solid #efd9a2; border-radius: var(--public-radius); }
.faq-block { margin-top: 18px; }
.faq-block details { border-top: 1px solid var(--public-border); padding: 14px 0; }
.faq-block summary { color: var(--public-primary-dark); font-weight: 750; cursor: pointer; }
.faq-block details p { padding-top: 10px; color: var(--public-muted); }
.related-links { display: inline-block; width: calc(50% - 11px); margin-top: 18px; vertical-align: top; }
.related-links + .related-links { margin-left: 17px; }
/* 分页号码列表仅有一个相关资源模块，使用主内容区完整宽度并保持水平居中。 */
.related-links.paginated-list-links { display: block; width: 100%; margin: 28px auto 32px; }
.related-links ul { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.related-links a { display: inline-flex; padding: 7px 11px; color: var(--public-accent-dark); background: var(--public-accent-soft); border-radius: 999px; font-size: .82rem; font-weight: 700; text-decoration: none; }
.review-date { margin-top: 14px; color: var(--public-muted); font-size: .8rem; }
.about { margin-bottom: 40px; border: 1px solid var(--public-border); border-radius: var(--public-radius); }

/* 页脚 */
.site-footer { margin-top: 30px; padding: 48px 0 28px; color: #d9e5ef; background: var(--public-primary-dark); }
.footer-grid { display: grid; grid-template-columns: 2fr 1fr 1.15fr 1fr; gap: 34px; }
.site-footer a { color: #f3f7fa !important; text-decoration: none; }
.site-footer a:hover { text-decoration: underline; }
.footer-brand > a { font-size: 1.4rem; font-weight: 800; }
.footer-brand p { max-width: 330px; margin: 14px 0; color: #b8c8d6; font-size: .9rem; }
.footer-app-downloads { display: flex; max-width: 330px; margin: 18px 0; gap: 6px; }
.footer-app-downloads a { display: block; flex: 1 1 0; min-width: 0; border-radius: 6px; line-height: 0; }
.footer-app-downloads a:focus-visible { outline: 3px solid rgba(34,184,181,.8); outline-offset: 2px; }
.footer-app-downloads img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 1; }
.site-footer strong { display: block; margin-bottom: 12px; color: #fff; }
.footer-links { margin: 0; padding: 0; list-style: none; }
.footer-links li { margin: 7px 0; font-size: .88rem; }
.footer-links button { display: inline; margin: 0; padding: 0; color: #f3f7fa; font: inherit; text-align: left; text-decoration: none; background: transparent; border: 0; cursor: pointer; }
.footer-links button:hover { text-decoration: underline; }
.footer-links button:focus-visible { outline: 3px solid rgba(34,184,181,.8); outline-offset: 3px; }
/* 悬浮工具组：入口仅保留图标，反馈弹窗、遮罩与 Toast 的层级仍可覆盖该工具组。 */
.floating-actions {
    position: fixed;
    right: calc(clamp(12px, 2vw, 28px) + env(safe-area-inset-right));
    bottom: calc(clamp(12px, 2vw, 28px) + env(safe-area-inset-bottom));
    z-index: 900;
    display: flex;
    flex-direction: column;
    gap: 10px;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateY(10px);
    transition: opacity .18s ease, visibility .18s ease, transform .18s ease;
}
.floating-actions.is-visible { opacity: 1; visibility: visible; pointer-events: auto; transform: translateY(0); }
.floating-actions :is(a, button) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    padding: 0;
    color: var(--public-primary);
    background: var(--public-surface);
    border: 1px solid var(--public-border);
    border-radius: 11px;
    box-shadow: 0 6px 18px rgba(18, 59, 102, .13);
    cursor: pointer;
    transition: border-color .16s ease, background-color .16s ease, color .16s ease, box-shadow .16s ease;
}
.floating-actions :is(a, button):hover { color: var(--public-accent-dark); background: var(--public-accent-soft); border-color: var(--public-accent); }
.floating-actions :is(a, button):active { color: #fff; background: var(--public-primary); border-color: var(--public-primary); box-shadow: 0 3px 10px rgba(18, 59, 102, .2); }
.floating-actions :is(a, button):focus-visible { outline: 3px solid var(--public-accent); outline-offset: 3px; }
.floating-actions img { display: block; width: 21px; height: 21px; max-width: none; }

/* 邮箱、表单、验证与错误页面继续使用同一套商务视觉语言。 */
.mail-page .phone { margin-top: 0 !important; }
.form-shell, .utility-page .article-shell {
    max-width: 980px;
    margin-right: auto;
    margin-left: auto;
    padding: clamp(22px, 4vw, 38px) !important;
    border: 1px solid var(--public-border) !important;
    border-radius: var(--public-radius-lg) !important;
    box-shadow: var(--public-shadow) !important;
}
/* 临时邮箱主操作区和收件箱需要吃满内容容器，避免桌面端中部卡片比页头与广告窄一截。 */
.mail-control-card, .mail-inbox-card {
    width: 100%;
    max-width: none;
    padding: clamp(22px, 4vw, 38px) !important;
    border: 1px solid var(--public-border) !important;
    border-radius: var(--public-radius-lg) !important;
    box-shadow: var(--public-shadow) !important;
}
.mail-control-card .email { color: var(--public-primary-dark); font-size: clamp(1.3rem, 4vw, 2rem); overflow-wrap: anywhere; }
.mail-control-card .email-buttom { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.mail-control-card .email-buttom .btn { margin-top: 0 !important; }
.mail-inbox-card #empty img { width: min(220px, 70%); height: auto; margin: 18px auto; }
.utility-page { padding-top: 56px; padding-bottom: 72px; }
.utility-page h1 { color: var(--public-primary-dark); font-weight: 800; }
.utility-page-image { width: min(440px, 92%); height: auto; margin-top: 22px; }
.form-shell { margin-top: 48px; margin-bottom: 72px; background: var(--public-surface); }
.form-shell h1 { color: var(--public-primary-dark); font-size: clamp(1.8rem, 4vw, 2.7rem); font-weight: 800; }
.purchase-message-page > .phone > .container > .row > [class*="col-"] > .card { border: 1px solid var(--public-border) !important; border-radius: var(--public-radius-lg) !important; box-shadow: var(--public-shadow) !important; }
/* 付费号码页沿用相同的珊瑚红收藏语义，并确保图标与英文状态文字在窄屏上稳定对齐。 */
.purchase-message-page .favorite-action { display: inline-flex; align-items: center; gap: 6px; }
.purchase-message-page .favorite-action.is-favorite { color: #E85D75 !important; background: #FDEFF2; border-color: #E85D75; }
.purchase-message-page .favorite-action.is-favorite img { filter: invert(49%) sepia(52%) saturate(736%) hue-rotate(302deg) brightness(96%) contrast(91%); }
/* 状态页复用公共导航与页脚；中部只负责展示状态和可恢复的下一步操作。 */
.error-page { display: flex; flex-direction: column; min-height: 100vh; background: var(--public-bg); }
.error-main { display: grid; flex: 1; align-items: center; padding: clamp(38px, 8vw, 104px) 0; }
.error-shell { display: grid; grid-template-columns: minmax(210px, .72fr) minmax(0, 1.28fr); gap: clamp(28px, 6vw, 82px); align-items: center; max-width: 960px; padding: clamp(30px, 5vw, 62px); background: var(--public-surface); border: 1px solid var(--public-border); border-radius: 24px; box-shadow: 0 18px 48px rgba(18, 59, 102, .12); }
.error-visual { position: relative; display: grid; width: min(100%, 270px); aspect-ratio: 1; place-items: center; justify-self: center; overflow: hidden; border: 1px solid rgba(34, 184, 181, .34); border-radius: 50%; background: radial-gradient(circle at 35% 26%, rgba(44, 194, 197, .23), rgba(10, 49, 84, .96) 67%); box-shadow: inset 0 0 0 12px rgba(255,255,255,.04), 0 18px 38px rgba(8, 42, 74, .2); }
.error-orbit { position: absolute; border: 1px solid rgba(164, 238, 237, .35); border-radius: 50%; }
.error-orbit--outer { width: 82%; height: 82%; border-style: dashed; animation: error-orbit 18s linear infinite; }
.error-orbit--inner { width: 55%; height: 55%; border-color: rgba(126, 203, 255, .42); animation: error-orbit 12s linear infinite reverse; }
.error-code { position: relative; z-index: 1; color: #fff; font-size: clamp(3.35rem, 8vw, 5.6rem); font-weight: 850; letter-spacing: -.08em; line-height: 1; text-shadow: 0 8px 25px rgba(0, 15, 37, .45); }
.error-signal { position: absolute; width: 12px; height: 12px; border-radius: 50%; background: #5be1dc; box-shadow: 0 0 0 6px rgba(91, 225, 220, .1), 0 0 18px rgba(91, 225, 220, .8); }
.error-signal--one { top: 19%; right: 21%; }
.error-signal--two { bottom: 23%; left: 17%; width: 9px; height: 9px; background: #8ec5ff; }
.error-signal--three { right: 13%; bottom: 30%; width: 7px; height: 7px; background: #fff; }
.error-content { max-width: 560px; }
.error-eyebrow { margin: 0 0 10px; color: var(--public-accent-dark); font-size: .82rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.error-shell h1 { margin: 0; color: var(--public-primary-dark); font-size: clamp(2rem, 5vw, 3.35rem); font-weight: 850; letter-spacing: -.035em; }
.error-shell .direct-answer { margin: 17px 0 0; padding: 0; color: var(--public-muted); background: transparent; border: 0; box-shadow: none; font-size: 1.04rem; }
.error-actions { display: flex; flex-wrap: wrap; gap: 11px; margin-top: 28px; }
.error-actions .btn { min-height: 44px; padding: 10px 18px; font-weight: 750; }
@keyframes error-orbit { to { transform: rotate(360deg); } }

/* 统一广告位状态：pending、unfilled 与 fallback 使用相同最小高度，状态切换不收起网格行。 */
.advertising-placement { display: grid; min-height: var(--ad-desktop-min-height, 280px); width: 100%; place-items: stretch; overflow: hidden; border: 0; background: transparent; }
.advertising-placement[hidden] { display: none; }
.advertising-placement .adsense-unit, .advertising-placement .house-ad { width: 100%; min-height: inherit; }
.advertising-placement .adsense-unit { display: grid; grid-template-rows: auto 1fr; }
.advertising-placement ins.adsbygoogle { display: block !important; width: 100%; min-height: 0; height: 100%; }
.advertising-provider-label { display: block; min-height: 17px; color: var(--public-muted); font-size: .7rem; letter-spacing: .08em; text-align: center; visibility: hidden; }
.advertising-placement[data-ad-state="filled"] .advertising-provider-label { visibility: visible; }
.advertising-placement[data-ad-state="fallback"] .adsense-unit { display: none; }
.house-ad-card { display: flex; min-height: inherit; flex-direction: column; align-items: center; justify-content: center; padding: 28px; border: 1px solid var(--public-border); border-radius: var(--public-radius-lg); background: var(--public-surface); color: var(--public-text); text-align: center; }
.house-ad-label { margin: 0 0 8px; color: var(--public-accent-dark); font-size: .78rem; font-weight: 800; letter-spacing: .04em; }
.house-ad-card h3 { margin: 0 0 10px; color: var(--public-primary-dark); font-weight: 800; }
.house-ad-card > p:not(.house-ad-label) { max-width: 650px; margin-bottom: 18px; color: var(--public-muted); }
.house-ad-cta, .house-app-links a { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; }
.house-app-links { display: grid; width: 100%; max-width: 474px; grid-template-columns: repeat(3, minmax(0, 150px)); justify-content: center; gap: 12px; }
/* 商店徽章本身包含平台名称和品牌样式，链接不再叠加文字按钮边框；保留 44px 点击高度与清晰焦点。 */
.house-app-links a { min-width: 0; padding: 0; border: 0; border-radius: 7px; background: transparent; line-height: 0; text-decoration: none; }
.house-app-links a:focus-visible { outline: 3px solid rgba(34,184,181,.8); outline-offset: 3px; }
.house-app-links img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 1; }
[dir="rtl"] .house-ad-card { direction: rtl; }
[data-bs-theme="dark"] .house-ad-card { background: var(--public-surface); border-color: var(--public-border); }

/* 中小屏 */
@media (max-width: 1199.98px) {
    /* 导航在 1200px 以下统一折叠：下拉菜单进入文档流，避免覆盖后续菜单项。 */
    .public-navbar { min-height: 64px; padding: 8px 0; }
    .public-navbar .navbar-collapse { max-height: calc(100vh - 78px); padding: 12px 0; overflow-y: auto; overflow-x: hidden; }
    .public-navbar .navbar-nav { align-items: stretch !important; gap: 3px; }
    .public-navbar .nav-link { display: flex; align-items: center; width: 100%; min-height: 44px; padding: 10px 12px !important; text-align: left; white-space: normal; }
    .public-navbar .dropdown-menu { position: static !important; width: 100%; min-width: 0; margin: 2px 0 8px; padding: 6px; transform: none !important; box-shadow: none; }
    .public-navbar .dropdown-item { display: flex; align-items: center; min-height: 44px; padding: 10px 12px; }
    .public-navbar .countries-menu { width: 100%; }
    .public-navbar .countries-popular-grid > ul { grid-template-columns: 1fr; }
    .public-navbar .nav-sign-in { display: inline-flex; margin-top: 5px; }
    /* 折叠菜单改为纵向流式布局，移除桌面端分隔线，避免语言项和头像项出现无意义留白。 */
    .public-navbar .nav-avatar { margin-left: 0; padding-left: 0; border-left: 0; }
    .public-navbar .nav-avatar > a { display: inline-flex; }
    .sms-layout { grid-template-columns: minmax(0,1fr) 280px; }
    .number-summary { grid-template-columns: minmax(0,1.75fr) minmax(300px,1fr); }
    .main-left, .main-right, .main-bottom-center { display: none !important; }
}

/* 桌面导航宽度不足时由脚本切换为折叠菜单，避免任意语言出现两行或截断账户入口。 */
@media (min-width: 1200px) {
    .public-navbar.nav-overflow { min-height: 64px; padding: 8px 0; }
    .public-navbar.nav-overflow .navbar-toggler { display: block; }
    .public-navbar.nav-overflow .navbar-collapse { display: none !important; flex-basis: 100%; max-height: calc(100vh - 78px); padding: 12px 0; overflow-y: auto; overflow-x: hidden; }
    .public-navbar.nav-overflow .navbar-collapse.show,
    .public-navbar.nav-overflow .navbar-collapse.collapsing { display: block !important; }
    .public-navbar.nav-overflow .navbar-nav { flex-direction: column; align-items: stretch !important; gap: 3px; }
    .public-navbar.nav-overflow .nav-link { display: flex; align-items: center; width: 100%; min-height: 44px; padding: 10px 12px !important; text-align: left; white-space: normal; }
    .public-navbar.nav-overflow .dropdown-menu { position: static !important; width: 100%; min-width: 0; margin: 2px 0 8px; padding: 6px; transform: none !important; box-shadow: none; }
    .public-navbar.nav-overflow .countries-menu { width: 100%; }
    .public-navbar.nav-overflow .countries-popular-grid > ul { grid-template-columns: 1fr; }
    .public-navbar.nav-overflow .nav-avatar { margin-left: 0; padding-left: 0; border-left: 0; }
    .public-navbar.nav-overflow .nav-avatar > a { display: inline-flex; }
}
.public-navbar #nav-avatar-compact { display: none; }
.public-navbar.nav-overflow #nav-avatar-compact:not(.d-none) { display: block; margin-left: auto; margin-right: 12px; }
.public-navbar #nav-avatar-compact img { display: block; width: 40px; height: 40px; border-radius: 50%; }

@media (max-width: 991.98px) {
    .home-hero-layout { grid-template-columns: 1fr; }
    .mail-hero-layout { grid-template-columns: 1fr; }
    .message-hero-layout { grid-template-columns: 1fr; }
    .home-hero-visual { display: none; }
    .phone-grid { grid-template-columns: 1fr; }
    .sms-layout { grid-template-columns: 1fr; }
    .sms-recommendation-rail { display: none; }
    .number-summary { grid-template-columns: 1fr; gap: 0; }
    .error-shell { grid-template-columns: 1fr; max-width: 680px; text-align: center; }
    .error-actions { justify-content: center; }
    .number-summary-main { padding: 30px; }
    .number-action-panel { margin: 0; padding: 24px 30px 30px; border-top: 1px solid var(--public-border); border-left: 0; }
    .private-options { grid-template-columns: 1fr; gap: 18px; }
    .footer-grid { grid-template-columns: 1.5fr 1fr 1fr; }
    .project-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .footer-grid nav:last-child { grid-column: 2 / -1; }
}

/* 平板保留三项并列入口，但使用固定三等分网格，避免 flex 在临界宽度把第三项挤到下一行。 */
@media (min-width: 768px) and (max-width: 991.98px) {
    .number-summary-links { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); justify-content: stretch; padding: 18px 24px; }
    .number-summary-links > * { width: 100%; padding: 0 12px; }
}

@media (max-width: 767.98px) {
    .advertising-placement { min-height: var(--ad-mobile-min-height, 150px); }
    .house-ad-card { padding: 20px 14px; }
    /* 三个入口沿用页脚的紧凑并排布局，窄屏等比缩小，不产生横向滚动。 */
    .house-app-links { max-width: 330px; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
    body.public-site { font-size: 15px; }
    .banner { padding: 28px 0 12px; }
    .banner.section-hero { padding: 26px 0 24px; }
    .banner.section-hero h1, .page-hero.content-hero h1, .message-page .message-page-title h1 { font-size: clamp(1.75rem, 9vw, 2.35rem); }
    .section-hero .direct-answer, .content-hero .direct-answer, .message-page-title .direct-answer { margin-top: 13px; font-size: .96rem; line-height: 1.65; }
    .content-hero { margin-top: 20px; margin-bottom: 22px; padding: 22px 18px; border-radius: 12px; }
    .banner h1, .page-hero h1 { font-size: clamp(1.75rem, 9vw, 2.35rem); }
    .direct-answer { padding: 13px 14px; }
    .answer-card-editorial { margin-top: 18px; padding: 20px 18px; border-radius: 12px; }
    .answer-card-eyebrow { margin-bottom: 8px; }
    .answer-card-editorial h2 { font-size: 1.35rem; }
    .answer-card-divider { margin: 15px 0; }
    .answer-card-body { font-size: .96rem; line-height: 1.65; }
    .hero-fact-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .banner.home-hero { padding: 32px 0 28px; }
    .home-hero-kicker { margin-bottom: 10px; }
    .home-hero-description { margin-top: 16px; font-size: .96rem; }
    .home-hero-actions { gap: 10px; margin-top: 21px; }
    .home-hero-actions .btn { flex: 1 1 100%; min-width: 0; }
    .home-hero-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 0; margin-top: 30px; padding-top: 20px; }
    .home-hero-facts > div { padding: 0 14px; }
    .home-hero-facts > div:nth-child(odd) { padding-left: 0; border-left: 0; }
    .home-hero-facts > div:nth-child(3) { border-left: 0; }
    .phone-list-toolbar { display: block; }
    .phone-filter { width: 100%; margin-top: 16px; }
    .phone-card-v3 { min-height: 0; padding: 18px; }
    .phone-country img { width: 58px; height: 38px; }
    .phone-number-v3 { font-size: 1.55rem; }
    .phone-actions { grid-template-columns: 1fr 1.3fr; }
    .country-card-link { grid-template-columns: 76px minmax(0,1fr); gap: 15px; padding: 18px; }
    .country-card-link img { width: 72px; height: 48px; }
    .country-card-link > span { grid-column: 2; }
    .native-ad-shell { min-height: 150px; padding: 0; }
    .message-page { padding-top: 24px; }
    /* 移动端按内容纵向排列，避免桌面双栏布局压缩号码和触控按钮。 */
    .number-summary { display: block; padding: 0; }
    .number-summary-main { padding: 24px 18px; }
    /* 小屏仍保持身份信息在同一条带内，状态靠右，不回落为与号码脱节的独立行。 */
    .number-identity { align-items: center; gap: 10px; padding: 9px 11px; }
    .number-identity img { width: 62px; height: 42px; }
    .number-country-label { font-size: .74rem; letter-spacing: .07em; }
    .number-summary-status { padding-left: 4px; }
    .number-summary-status .availability-status-detail { gap: 7px; font-size: .86rem; }
    .number-summary-status .availability-status-detail::before { width: 8px; height: 8px; flex-basis: 8px; box-shadow: 0 0 0 4px var(--availability-ring); }
    .number-summary-kicker { margin-top: 26px; }
    .number-summary-value { font-size: clamp(2rem, 10vw, 2.7rem); }
    .number-action-panel { padding: 20px 18px 22px; }
    .number-summary-actions { gap: 8px; }
    .number-summary-actions .btn { min-height: 48px; padding: 10px 16px; }
    .number-summary-actions .message-secondary-action { padding: 10px 8px; }
    .private-options { gap: 16px; margin-bottom: 20px; padding: 18px; border-radius: 12px; }
    .private-options-copy { grid-template-columns: 40px minmax(0, 1fr); gap: 12px; }
    .private-options-icon { width: 40px; height: 40px; }
    .private-options-icon img { width: 21px; height: 21px; }
    .private-options h2 { font-size: 1.12rem; }
    .private-options-copy p:last-child { font-size: .88rem; }
    .private-options-buttons { grid-template-columns: 1fr; }
    .private-options-note { justify-content: flex-start; }
    .public-warning { grid-template-columns: 36px minmax(0, 1fr); align-items: start; gap: 12px; padding: 18px; border-radius: 12px; }
    .public-warning-icon { width: 36px; height: 36px; }
    .public-warning strong { font-size: 1rem; }
    .public-warning div > span { font-size: .9rem; }
    .public-warning a { grid-column: 2; margin-top: 4px; font-size: .94rem; }
    /* 小屏入口不再沿用桌面三列自动换行：改成单列列表，分隔线始终位于项目之间。 */
    .number-summary-links { display: grid; grid-template-columns: minmax(0, 1fr); justify-content: stretch; margin-bottom: 18px; padding: 8px 18px; }
    /* 使用固定图标列而不是图标后的流式间距，避免不同 SVG 的内部留白推移文字起点。 */
    .number-summary-links > * { display: grid; grid-template-columns: 28px minmax(0, 1fr); column-gap: 0; align-items: center; justify-content: start; width: 100%; min-height: 52px; padding: 0 !important; font-size: .94rem; }
    /* 移动端没有右侧推荐栏，因此恢复“可用号码”入口并继续使用原展开交互。 */
    .number-summary-links [data-message-hot] { display: grid; }
    .number-summary-links > * > span { text-align: left; }
    .number-summary-links > * + * { border-top: 1px solid var(--public-border) !important; border-left: 0 !important; }
    /* 移动端推荐号码改为单一卡片内的五行列表：整行可点击，避免重复 CTA 和超高号码卡。 */
    #hot_number { margin: 0 0 20px; }
    .mobile-number-list { overflow: hidden; background: var(--public-surface); border: 1px solid var(--public-border); border-radius: 12px; box-shadow: 0 6px 20px rgba(18,59,102,.05); }
    .mobile-number-item { display: grid; grid-template-columns: 52px minmax(0, 1fr) auto 20px; grid-template-rows: auto auto; align-items: center; column-gap: 12px; row-gap: 5px; min-height: 88px; padding: 14px 16px; color: var(--public-text); text-decoration: none; }
    .mobile-number-item + .mobile-number-item { border-top: 1px solid var(--public-border); }
    .mobile-number-item:hover { color: var(--public-text); background: var(--public-accent-soft); text-decoration: none; }
    .mobile-number-item:focus-visible { outline: 3px solid rgba(23,139,141,.3); outline-offset: -3px; }
    .mobile-number-flag { display: block; grid-column: 1; grid-row: 1 / 3; width: 52px; height: 34px; object-fit: contain; }
    .mobile-number-country { grid-column: 2; grid-row: 1; min-width: 0; overflow: hidden; color: var(--public-primary-dark); font-size: .88rem; text-overflow: ellipsis; white-space: nowrap; }
    .mobile-number-value { display: block; grid-column: 2 / 4; grid-row: 2; min-width: 0; overflow: hidden; color: var(--public-muted); font-size: 1rem; text-overflow: ellipsis; white-space: nowrap; }
    /* 状态跨越两行并在整张号码卡内垂直居中，与最右侧箭头保持同一中心线。 */
    .mobile-number-status { grid-column: 3; grid-row: 1 / 3; align-self: center; gap: 5px; font-size: .72rem; transform: translateY(-3px); }
    .mobile-number-chevron { grid-column: 4; grid-row: 1 / 3; width: 20px; height: 20px; opacity: .55; }
    /* 分享图标在小屏不足一行时，标题与组件改为上下两行；第二行从左侧开始显示。 */
    .sms-stream-title { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
    .message-share { justify-content: flex-start; max-width: none; margin-left: 0; }
    .sms-item { display: block; min-height: 118px; padding: 16px; }
    .sms-sender { margin-bottom: 10px; }
    .sms-message { padding: 0 0 12px 48px; font-size: .96rem; }
    .sms-time { padding-left: 48px; text-align: left; }
    .sms-native-ad { min-height: 180px; }
    .fact-grid, .seo-section-grid { grid-template-columns: 1fr; }
    .related-links { display: block; width: 100%; }
    .related-links + .related-links { margin-left: 0; }
    /* 移动端将三列表格转换为纵向比较卡，确保所有值都留在视口内且正文保持可见。 */
    .seo-section { padding: 20px 18px; overflow: hidden; }
    .seo-section h2, .faq-block h2, .related-links h2, .warning-callout h2 { overflow-wrap: anywhere; }
    .seo-section p, .seo-section li { overflow-wrap: anywhere; }
    .seo-section .table-responsive { overflow: visible; border: 0; border-radius: 0; }
    .comparison-table { display: block; min-width: 0; width: 100%; }
    .comparison-table thead { display: none; }
    .comparison-table tbody { display: grid; gap: 12px; }
    .comparison-table tr { display: block; padding: 15px; background: #f8fafc; border: 1px solid var(--public-border); border-radius: 10px; }
    .comparison-table th, .comparison-table td { display: block; width: 100%; padding: 0; border: 0; text-align: left; overflow-wrap: anywhere; }
    .comparison-table th { margin-bottom: 11px; color: var(--public-primary-dark); font-size: 1rem; }
    .comparison-table td { margin-top: 9px; color: #344054; }
    .comparison-table td::before { content: attr(data-label); display: block; margin-bottom: 2px; color: var(--public-muted); font-size: .7rem; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
    /* 手机端表头会隐藏，因此只在窄屏显示两个明确的用户中心入口。 */
    .comparison-actions { display: grid; grid-template-columns: 1fr; gap: 9px; margin: 16px 0; }
    .comparison-actions a { justify-content: center; min-height: 44px; text-align: center; }
    .seo-content { padding-inline: 14px; }
    .footer-grid { grid-template-columns: 1fr 1fr; }
    /* 小屏也保留两个图标入口，44px 触控尺寸与安全区由基础规则统一保障。 */
    .floating-actions { right: calc(12px + env(safe-area-inset-right)); bottom: calc(12px + env(safe-area-inset-bottom)); gap: 8px; }
    .floating-actions :is(a, button) { width: 44px; height: 44px; }
    .article-list-item h2 { margin-right: 0; }
    .project-grid { grid-template-columns: 1fr; }
    .article-read-more { position: static; display: inline-block; margin-top: 12px; }
    .footer-brand { grid-column: 1 / -1; }
    .footer-grid nav:last-child { grid-column: auto; }
    body.public-site .table-responsive { border-radius: 10px; }
    table.sms-list thead { display: none; }
    table.sms-list, table.sms-list tbody, table.sms-list tr, table.sms-list td { display: block; width: 100%; }
    table.sms-list tr { margin-bottom: 12px; padding: 12px; background: #fff !important; border: 1px solid var(--public-border); border-radius: 10px; }
    table.sms-list td { padding: 6px 8px !important; border: 0; overflow-wrap: anywhere; }
}

/* 用户选择减少动态效果时，状态切换不再做淡入或位移，返回顶部逻辑也会同步改为即时。 */
@media (prefers-reduced-motion: reduce) {
    .home-hero-orbit,
    .home-hero-device,
    .home-hero-country-card,
    .mail-hero-envelope,
    .home-hero-visual-chip,
    .home-hero-signal-dot { animation: none; }
    .error-orbit { animation: none; }
    .floating-actions, .floating-actions :is(a, button) { transition: none; }
    /* 操作按钮保留颜色与焦点反馈，但不执行位移或图标动画。 */
    .number-summary-actions .btn { transition: background-color .18s ease, border-color .18s ease, color .18s ease; }
    .number-summary-actions .btn:not(:disabled):is(:hover, :focus-visible) { transform: none; }
    .number-summary-actions .btn img { animation: none !important; transition: none; }
}

@media (max-width: 420px) {
    .phone-actions { grid-template-columns: 1fr; }
    .phone-meta { display: block; }
    .phone-meta span { display: block; margin-top: 4px; }
    .footer-grid { grid-template-columns: 1fr; }
}

/* 小屏订阅确认页把核心邮箱入口拉满，避免狭窄 Modal 内出现难以点击的并排主操作。 */
@media (max-width: 576px) {
    .subscription-open-mail { width: 100%; }
    .subscription-state { gap: 12px; }
    #modal-footer .btn { min-height: 44px; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
}

/* 主题切换按钮：与语言选择器同组视觉，图标在深色导航上统一反白。 */
.public-navbar .nav-dropdown-theme .nav-link { display: inline-flex; align-items: center; gap: 6px; }
.public-navbar .theme-selector-icon { flex: 0 0 16px; filter: brightness(0) invert(1); opacity: .9; }
.public-navbar .theme-menu { min-width: 168px; }
.public-navbar .theme-menu .dropdown-item { min-width: 0; }
/* 折叠菜单内主题项与语言项保持一致的左对齐行高。 */
@media (max-width: 1199.98px) {
    .public-navbar .theme-menu { min-width: 0; width: 100%; }
}

/*
 * 暗色主题（html[data-bs-theme="dark"]）。
 *
 * 设计约束：亮色规则保持原样不参与重构；暗色先整体重定义 --public-* 令牌，
 * 再对仍使用硬编码亮色的组件做定点覆盖。浅色永远是缺省回退：没有 JS 或
 * 属性缺失时页面维持既有外观，SEO 渲染不受影响。
 */
html[data-bs-theme="dark"] {
    color-scheme: dark;
    --public-bg: #0e1621;
    --public-surface: #17222f;
    --public-text: #e4ebf3;
    --public-muted: #97a5b8;
    --public-border: #2b3950;
    /* primary 承担链接与头像底色，暗色下整体提亮保证可读；按钮内白字场景单独覆盖。 */
    --public-primary: #8ab6e8;
    /* primary-dark 在亮色是标题深蓝，暗色下翻转为近白标题色；页脚等把它当背景用的组件单独覆盖。 */
    --public-primary-dark: #d9e6f5;
    --public-primary-soft: #20304a;
    --public-accent: #3ec3c5;
    --public-accent-dark: #7ad9da;
    --public-accent-soft: #143438;
    --public-warning: #ffce7a;
    --public-warning-bg: #2f2817;
    --public-shadow: 0 8px 28px rgba(0, 0, 0, .42);
}

/* 正文文字：亮色硬编码的石板灰在暗色下统一交给令牌。 */
html[data-bs-theme="dark"] .direct-answer,
html[data-bs-theme="dark"] .answer-card-editorial,
html[data-bs-theme="dark"] .article-body,
html[data-bs-theme="dark"] .private-options,
html[data-bs-theme="dark"] .public-warning,
html[data-bs-theme="dark"] .subscription-help,
html[data-bs-theme="dark"] .comparison-table td { color: var(--public-text); }
html[data-bs-theme="dark"] .content-hero .direct-answer,
html[data-bs-theme="dark"] .public-warning div > span,
html[data-bs-theme="dark"] .number-country-label,
html[data-bs-theme="dark"] .number-summary-kicker,
html[data-bs-theme="dark"] .availability-status,
html[data-bs-theme="dark"] .sms-message { color: var(--public-muted); }

/* 浅色底的面板与提示条：暗色统一收敛到表面色并保留语义色边框。 */
html[data-bs-theme="dark"] .content-hero { background: var(--public-surface); border-color: var(--public-border); }
html[data-bs-theme="dark"] .direct-answer,
html[data-bs-theme="dark"] .answer-card-editorial,
html[data-bs-theme="dark"] .private-options { background: #14212e; border-color: #24444a; }
html[data-bs-theme="dark"] .answer-card-divider { background: var(--public-border); }
html[data-bs-theme="dark"] .number-identity { background: #152430; border-color: #244548; }
html[data-bs-theme="dark"] .subscription-email-value { background: #14212e; }
html[data-bs-theme="dark"] .subscription-help { background: #14212e; }
html[data-bs-theme="dark"] .native-ad-shell { background: #14212e; border-color: var(--public-border); }
html[data-bs-theme="dark"] .message-purchase-notice { background: #2f2817; border-color: #5a4a1f; }
html[data-bs-theme="dark"] .hidden-projects, html[data-bs-theme="dark"] .hidden-project-card { background: var(--public-surface); border-color: var(--public-border); }
html[data-bs-theme="dark"] .hidden-project-card:is(:hover, .is-active) { background: var(--public-accent-soft); border-color: var(--public-accent); }
html[data-bs-theme="dark"] .warning-callout { border-color: #5a4a1f; }
html[data-bs-theme="dark"] .public-warning { background: #2f2817; border-color: #5a4a1f; }
html[data-bs-theme="dark"] .public-warning a { color: #58b0f0; }
html[data-bs-theme="dark"] .comparison-table tr { background: var(--public-surface); }
html[data-bs-theme="dark"] table.sms-list tr { background: var(--public-surface) !important; }
html[data-bs-theme="dark"] body.public-site .table-striped > tbody > tr:nth-of-type(odd) > * { background: #1b2736; }

/* 表单与按钮的暗色形态。 */
html[data-bs-theme="dark"] body.public-site .form-control,
html[data-bs-theme="dark"] body.public-site .form-select { border-color: var(--public-border); }
html[data-bs-theme="dark"] .btn-public-secondary { border-color: var(--public-border); }
html[data-bs-theme="dark"] body.public-site .btn-outline-primary { color: var(--public-primary); border-color: var(--public-primary); }
html[data-bs-theme="dark"] body.public-site .btn-outline-primary:hover,
html[data-bs-theme="dark"] body.public-site .btn-outline-primary:focus { color: #0e1621; background: var(--public-primary); border-color: var(--public-primary); }
html[data-bs-theme="dark"] body.public-site .btn-link { color: var(--public-primary); }
html[data-bs-theme="dark"] .btn-close { filter: invert(1) grayscale(100%); }
/* 次级按钮、快捷入口和浮动工具里的黑色描边 SVG 在深色表面上会隐形，统一反色；
   收藏的珊瑚色滤镜与刷新的白色滤镜选择器更具体，不受此规则影响。 */
html[data-bs-theme="dark"] .btn-public-secondary img,
html[data-bs-theme="dark"] .number-summary-links img,
html[data-bs-theme="dark"] .private-options-note img,
html[data-bs-theme="dark"] .floating-actions img { filter: invert(1); }

/* 号码类型徽章的语义色在暗色下降饱和、提亮文字。 */
html[data-bs-theme="dark"] .phone-type-rental { color: #9ec9ee; background: #1a2c42; border-color: #2e4763; }
html[data-bs-theme="dark"] .phone-type-locked,
html[data-bs-theme="dark"] a.phone-type-badge.phone-type-locked { color: #ffd48a; background: #33290f; border-color: #5c4a1a; }
html[data-bs-theme="dark"] .subscription-inline-error { color: #ffb3ae; background: #3a1c1a; border-color: #6e2f2c; }
html[data-bs-theme="dark"] .number-summary-actions .message-secondary-action.is-favorite,
html[data-bs-theme="dark"] .purchase-message-page .favorite-action.is-favorite { background: #3a2028; }

/* 分页：激活页用强调色底加深色文字，禁用与悬停态同步。 */
html[data-bs-theme="dark"] .page-link { color: var(--public-primary); background-color: var(--public-surface); border-color: var(--public-border); }
html[data-bs-theme="dark"] .page-link:hover,
html[data-bs-theme="dark"] .page-link:focus { color: var(--public-accent-dark); background-color: #223047; border-color: var(--public-border); }
html[data-bs-theme="dark"] .page-item.active .page-link { color: #0e1621; background-color: var(--public-accent); border-color: var(--public-accent); }
html[data-bs-theme="dark"] .page-item.disabled .page-link { color: var(--public-muted); background-color: var(--public-surface); border-color: var(--public-border); }

/* Bootstrap 组件与页脚的暗色形态。 */
html[data-bs-theme="dark"] .alert-warning { color: #e8d9ae; background-color: #2f2817; border-color: #5a4a1f; }
html[data-bs-theme="dark"] .toast { color: var(--public-text); background-color: var(--public-surface); border: 1px solid var(--public-border); box-shadow: var(--public-shadow); }
/* 页脚与浮动按钮把 primary-dark/primary 当背景色使用，暗色下需要固定深色底。 */
html[data-bs-theme="dark"] .site-footer { background: #0a1322; }
html[data-bs-theme="dark"] .floating-actions :is(a, button):active { color: #0e1621; background: var(--public-accent); border-color: var(--public-accent); }
html[data-bs-theme="dark"] .skip-link { background: var(--public-surface); color: var(--public-primary); }
/* 头像底色块在暗色下改用深色底、浅色首字母，避免亮蓝底白字刺眼。 */
html[data-bs-theme="dark"] .sms-avatar,
html[data-bs-theme="dark"] .project-card-v3__avatar { color: #0e1621; background: var(--public-accent); }

/*
 * 暗色主题第二批修复：覆盖各模板内联 <style> 与 Bootstrap 工具类中
 * 硬编码的浅色表面。这些规则必须保持比模板内联样式更高的优先级，
 * 因此统一带 html[data-bs-theme="dark"] 前缀。
 */

/* 深蓝 Hero 与错误页里的直答文本是纯文字排版，亮暗两版都不加盒子背景；
   只有独立使用的 .direct-answer 保留表面色。 */
html[data-bs-theme="dark"] .section-hero .direct-answer,
html[data-bs-theme="dark"] .message-page-title .direct-answer,
html[data-bs-theme="dark"] .content-hero .direct-answer,
html[data-bs-theme="dark"] .error-shell .direct-answer { background: transparent; border: 0; box-shadow: none; }

/* Bootstrap 弹窗与 .card、.bg-white 工具类在亮色是硬编码白底，暗色统一切到表面色。 */
html[data-bs-theme="dark"] .modal-content { color: var(--public-text); background-color: var(--public-surface); border: 1px solid var(--public-border); }
html[data-bs-theme="dark"] .modal-header,
html[data-bs-theme="dark"] .modal-footer { border-color: var(--public-border); }
html[data-bs-theme="dark"] body.public-site .card { color: var(--public-text); background-color: var(--public-surface); }
html[data-bs-theme="dark"] body.public-site .bg-white { background-color: var(--public-surface) !important; }

/* Blog 列表页（模板内联样式为浅绿硬编码）。 */
html[data-bs-theme="dark"] .blog-hub { background: var(--public-bg); }
html[data-bs-theme="dark"] .blog-kicker { color: var(--public-accent-dark); }
html[data-bs-theme="dark"] .blog-hero h1 { color: var(--public-primary-dark); }
html[data-bs-theme="dark"] .blog-hero p { color: var(--public-muted); }
html[data-bs-theme="dark"] .blog-card { background: var(--public-surface); border-color: var(--public-border); box-shadow: var(--public-shadow); }
html[data-bs-theme="dark"] .blog-card h2 a { color: var(--public-primary-dark); }
html[data-bs-theme="dark"] .blog-card p { color: var(--public-muted); }
html[data-bs-theme="dark"] .blog-card-link { color: var(--public-accent-dark); }
html[data-bs-theme="dark"] .blog-pagination a { color: var(--public-accent-dark); border-color: var(--public-border); }
html[data-bs-theme="dark"] .blog-pagination a[aria-current=page] { color: #0e1621; background: var(--public-accent); border-color: var(--public-accent); }

/* Blog 详情页（模板内联样式为浅绿硬编码）。 */
html[data-bs-theme="dark"] .blog-page { background: var(--public-bg); }
html[data-bs-theme="dark"] .blog-label { color: var(--public-accent-dark); background: var(--public-accent-soft); }
html[data-bs-theme="dark"] .blog-header h1 { color: var(--public-primary-dark); }
html[data-bs-theme="dark"] .blog-dek { color: var(--public-muted); }
html[data-bs-theme="dark"] .blog-byline { color: var(--public-muted); }
html[data-bs-theme="dark"] .blog-byline strong { color: var(--public-text); }
html[data-bs-theme="dark"] .blog-toc { border-left-color: var(--public-border); }
html[data-bs-theme="dark"] .blog-toc strong { color: var(--public-primary-dark); }
html[data-bs-theme="dark"] .blog-toc a { color: var(--public-muted); }
html[data-bs-theme="dark"] .blog-toc a:hover { color: var(--public-accent-dark); }
html[data-bs-theme="dark"] .blog-content { color: var(--public-text); }
html[data-bs-theme="dark"] .blog-content h2 { color: var(--public-primary-dark); }
html[data-bs-theme="dark"] .blog-content h3 { color: var(--public-primary-dark); }
html[data-bs-theme="dark"] .blog-answer { background: #14212e; border-color: #24444a; color: var(--public-text); }
html[data-bs-theme="dark"] .blog-takeaways { background: var(--public-surface); border-color: var(--public-border); color: var(--public-text); }
html[data-bs-theme="dark"] .blog-takeaways h2,
html[data-bs-theme="dark"] .blog-sources h2,
html[data-bs-theme="dark"] .blog-faq h2 { color: var(--public-primary-dark); }
html[data-bs-theme="dark"] .blog-faq details { border-bottom-color: var(--public-border); }
html[data-bs-theme="dark"] .blog-faq summary { color: var(--public-primary-dark); }
html[data-bs-theme="dark"] .blog-author { background: var(--public-surface); border-color: var(--public-border); color: var(--public-text); }
html[data-bs-theme="dark"] .blog-related h2 { color: var(--public-primary-dark); }
html[data-bs-theme="dark"] .related-card { background: var(--public-surface); border-color: var(--public-border); }
html[data-bs-theme="dark"] .related-card a { color: var(--public-primary-dark); }
html[data-bs-theme="dark"] .related-card p { color: var(--public-muted); }
/* CTA 保持品牌深绿底白字，两种主题下都不需要变化。 */

/* 项目页 .project-v4（模板内联样式自带一组浅色本地令牌和白底表面）。 */
html[data-bs-theme="dark"] .project-v4 { --ink: #d9e6f5; --body: #b9c8dc; --line: #2b3950; --soft: #17222f; --teal: #3ec3c5; color: var(--body); background: var(--public-bg); }
html[data-bs-theme="dark"] .project-v4 .project-hero { background: var(--public-bg); }
html[data-bs-theme="dark"] .project-v4 .breadcrumb-public { color: var(--public-muted); }
html[data-bs-theme="dark"] .project-v4 .breadcrumb-public a { color: var(--public-primary); }
html[data-bs-theme="dark"] .project-v4 .direct-answer { color: var(--public-text); }
html[data-bs-theme="dark"] .project-v4 .hero-country-box { background: var(--public-surface); border-color: var(--public-border); box-shadow: none; }
html[data-bs-theme="dark"] .project-v4 .offer-status,
html[data-bs-theme="dark"] .project-v4 .offer-check-time,
html[data-bs-theme="dark"] .project-v4 .message-footnote,
html[data-bs-theme="dark"] .project-v4 .sms-time { color: var(--public-muted); }
html[data-bs-theme="dark"] .project-v4 .country-picker-trigger { color: var(--public-text); background: var(--public-surface); border-color: var(--public-border); }
html[data-bs-theme="dark"] .project-v4 .country-picker-menu { background: var(--public-surface); border-color: var(--public-border); }
html[data-bs-theme="dark"] .project-v4 .country-picker-option { color: var(--public-text); background: var(--public-surface); }
html[data-bs-theme="dark"] .project-v4 .country-picker-option:hover,
html[data-bs-theme="dark"] .project-v4 .country-picker-option:focus,
html[data-bs-theme="dark"] .project-v4 .country-picker-option[aria-selected="true"] { background: var(--public-accent-soft); }
html[data-bs-theme="dark"] .project-v4 .offer-card { background: var(--public-surface); border-color: var(--public-border); }
html[data-bs-theme="dark"] .project-v4 .offer-card-recommended { background: #14212e; border-color: var(--public-accent); }
html[data-bs-theme="dark"] .project-v4 .offer-card li { color: var(--public-text); }
html[data-bs-theme="dark"] .project-v4 .offer-card ul { border-top-color: var(--public-border); }
html[data-bs-theme="dark"] .project-v4 .project-comparison table,
html[data-bs-theme="dark"] .project-v4 .sms-table { background: var(--public-surface); border-color: var(--public-border); }
html[data-bs-theme="dark"] .project-v4 .project-comparison th,
html[data-bs-theme="dark"] .project-v4 .project-comparison td,
html[data-bs-theme="dark"] .project-v4 .project-comparison thead { border-color: var(--public-border); background: var(--public-surface); color: var(--public-primary-dark); }
html[data-bs-theme="dark"] .project-v4 .project-message-shell .sms-item { background: var(--public-surface); border-top-color: var(--public-border); }
html[data-bs-theme="dark"] .project-v4 .sms-table-head { background: #1b2736; border-bottom-color: var(--public-border); color: var(--public-primary-dark); }
html[data-bs-theme="dark"] .project-v4 .sms-sender { color: var(--public-primary-dark); }
html[data-bs-theme="dark"] .project-v4 .sms-stream-title>a { color: var(--public-primary); border-color: var(--public-border); }
html[data-bs-theme="dark"] .project-v4 .project-specific-content>article { background: var(--public-surface); border-color: var(--public-border); }
html[data-bs-theme="dark"] .project-v4 .faq-block details { background: var(--public-surface); border-color: var(--public-border); }
html[data-bs-theme="dark"] .project-v4 .faq-block summary { color: var(--public-primary-dark); }
html[data-bs-theme="dark"] .project-v4 .related-links a { color: var(--public-primary); background: var(--public-primary-soft); }
html[data-bs-theme="dark"] .project-v4 .project-disclosure { color: var(--public-muted); background: var(--public-warning-bg); border-color: #5a4a1f; }
