/*
 * Nova Stage shared visual layer
 *
 * This file is deliberately loaded last. It unifies the existing page
 * families without changing their content, checkout links, or scripts.
 */

:root {
  --ns-ink: #152A4B;
  --ns-paper: #F7F7F4;
  --ns-rule: #D9D9D2;
  --ns-gold: #A47B31;
  --ns-gold-text: #806129;
  --ns-text: #24334A;
  --ns-muted: #667080;
  --ns-white: #FFFFFF;
  --ns-soft: #EEEFEA;
  --ns-serif: "Cormorant Garamond", "Noto Serif SC", Georgia, serif;
  --ns-sans: "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --ns-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  /* Map legacy variables to the approved palette. */
  --navy: var(--ns-ink);
  --navy-lt: #294363;
  --navy-dp: #10213B;
  --green: #4D6259;
  --green-lt: #64786E;
  --gold: var(--ns-gold);
  --gold-lt: #C0A46B;
  --gold-dim: #806129;
  --cream: var(--ns-paper);
  --bg-warm: var(--ns-soft);
  --text: var(--ns-text);
  --text-mid: #455267;
  --text-muted: var(--ns-muted);
  --border: var(--ns-rule);
  --font-d: var(--ns-serif);
  --font-b: var(--ns-sans);
  --font-m: var(--ns-mono);
  --mono: var(--ns-mono);
  --sh-1: none;
  --sh-2: none;
}

html {
  background: var(--ns-paper);
  color: var(--ns-text);
}

body {
  background: var(--ns-paper);
  background-image: none;
  color: var(--ns-text);
  font-family: var(--ns-sans);
  font-weight: 400;
  line-height: 1.7;
}

body,
button,
input,
select,
textarea {
  font-family: var(--ns-sans);
}

.zh,
.en {
  font-family: inherit;
}

h1,
h2,
h3,
h1.zh,
h1.en,
h2.zh,
h2.en,
h3.zh,
h3.en,
.hero-h1,
.sec-title,
.hs-title,
.cases-t,
.trust-t,
.rv-t,
.band-q,
.end-t,
.door-title-zh,
.door-title-en,
.group-title,
.item-title,
.card-name,
.tc-t,
.case-q,
.fold-h,
.book-head,
.intro-name,
.id-name,
.svc-name,
.svc-cat-title,
.pstep-title,
.sec-t,
.col-t,
.close-t,
.midcta-t,
.consult-card-top-title,
.author-box .name {
  color: var(--ns-ink);
  font-family: var(--ns-serif);
  font-weight: 600;
}

/* Mono is reserved for checkable numbers and compact labels. */
.hs-price,
.ps-price,
.tc-fee,
.case-p,
.t-price,
.book-price,
.buy-price,
.card-price,
.stat-val,
.cred-num,
.cred b,
.who-e,
.tag,
.svc-tag-hot,
.tldr-label,
.sec-eye-text,
.intro-eyebrow,
.tc-k,
.page-dates,
.dates,
.pstep-num,
.mono {
  font-family: var(--ns-mono);
  font-variant-numeric: tabular-nums;
}

a {
  text-underline-offset: .18em;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible {
  outline: 2px solid var(--ns-gold);
  outline-offset: 3px;
}

::selection {
  background: rgba(164, 123, 49, .18);
  color: var(--ns-ink);
}

/* Motion must never be required for content visibility. */
.reveal {
  opacity: 1;
  transform: none;
  transition: none;
}

.reveal.visible {
  opacity: 1;
  transform: none;
}

/* Shared navigation and footer */
.ns-nav,
#nav {
  background: rgba(247, 247, 244, .96);
  border-bottom: 1px solid var(--ns-rule);
  box-shadow: none;
  color: var(--ns-ink);
}

.ns-nav {
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
}

.ns-nav-inner {
  max-width: 1240px;
}

.ns-brand-mark,
.ns-brand-zh,
.brand,
.brand-txt,
.nav-logo-zh,
.footer-logo-zh,
.mobile-nav,
.mobile-nav a,
.form-success {
  font-family: var(--ns-sans);
  font-weight: 600;
}

.why-quote-text {
  font-family: var(--ns-sans);
}

.ns-brand-mark,
.ns-links a,
.nav-links a,
.site-nav a {
  color: var(--ns-ink);
}

.ns-brand-zh,
.ns-links a.ns-on,
.breadcrumb a:hover,
.site-nav a:hover {
  color: var(--ns-gold-text);
}

.ns-lang a.ns-on {
  color: var(--ns-white);
}

.ns-links a::after,
.nav-links a::after {
  background: var(--ns-gold);
  height: 1px;
}

.ns-lang,
.ns-lang a,
.lang-toggle,
.lang-switch {
  font-family: var(--ns-mono);
  border-radius: 0;
}

.ns-burger,
.mnav-toggle,
.hamburger {
  border-radius: 0;
}

.mobile-nav,
.ns-nav.ns-open .ns-links {
  background: var(--ns-paper);
  box-shadow: none;
}

/* 页脚只加一条分隔线，**不改底色和字色**。
   2026-08-11 修：原来这里写了 background:transparent + color:muted，
   而移民页和法律页的页脚本来是深底白字（navy-dim / green-dim），
   底色被抹平、里面的白字却更具体没被改过来 —— 中英四页的整个页脚
   变成浅底白字，logo 还带着 invert 滤镜，全都看不见。
   和打分器结果面板是同一个坑：共用样式表和页面自带样式在同一层打架，
   一半生效一半不生效，比两边都不生效更糟。 */
footer,
.shared-foot {
  border-top: 1px solid var(--ns-rule);
}

/* Shared controls, rules, and restrained surfaces */
:is(
  .card,
  .svc-card,
  .guide-card,
  .review-card,
  .tier,
  .book-tier,
  .rv-card,
  .door,
  .hs-card,
  .case,
  .pillar,
  .consult-card,
  .book-card,
  .buy-box,
  .tldr,
  .author-box,
  .tool-embed,
  .beta,
  .cred,
  .contact-item,
  .consult-channel
) {
  border-color: var(--ns-rule);
  border-radius: 0;
  box-shadow: none;
}

:is(.card, .svc-card, .tier, .book-tier, .rv-card, .door, .hs-card, .case, .pillar):hover {
  border-color: var(--ns-gold);
  box-shadow: none;
  transform: none;
}

:is(.btn, .btn-primary, .btn-nav, .nav-cta, .btn-pay, .gc-b, .crs-btn, .btn-gold),
.beta button {
  background: var(--ns-ink);
  border: 1px solid var(--ns-ink);
  border-radius: 0;
  box-shadow: none;
  color: var(--ns-white);
  font-family: var(--ns-sans);
  font-weight: 600;
}

:is(.btn, .btn-primary, .btn-nav, .nav-cta, .btn-pay, .gc-b, .crs-btn, .btn-gold):hover,
.beta button:hover {
  background: #213B61;
  border-color: #213B61;
  box-shadow: none;
  color: var(--ns-white);
  transform: none;
}

:is(.btn-outline, .btn-pay--alt) {
  background: transparent;
  border: 1px solid var(--ns-ink);
  border-radius: 0;
  color: var(--ns-ink);
}

:is(.btn-outline, .btn-pay--alt):hover {
  background: var(--ns-ink);
  border-color: var(--ns-ink);
  color: var(--ns-white);
}

input,
select,
textarea,
.form-row input,
.form-row select,
.form-row textarea {
  background: var(--ns-white);
  border: 1px solid #C9CBC5;
  border-radius: 0;
  box-shadow: none;
  color: var(--ns-text);
}

input:focus,
select:focus,
textarea:focus,
.form-row input:focus,
.form-row select:focus,
.form-row textarea:focus {
  border-color: var(--ns-gold);
  box-shadow: 0 0 0 1px var(--ns-gold);
  outline: 0;
}

.sec-eye-line,
.svc-cat-line,
.intro-eyebrow::before,
.intro-eyebrow::after,
.about-divider {
  background: var(--ns-gold);
  height: 1px;
}

.sec-eye-text,
.intro-eyebrow,
.svc-cat-title,
.tc-k,
.tldr-label,
.tag {
  color: var(--ns-gold-text);
  letter-spacing: .1em;
}

/* Remove the decorative treatment that reads as a generic landing page. */
.bg-deco,
.hero-bg,
.hero-deco::before,
.hero-deco::after,
#consult::before,
#why::before,
.trust-blk::before,
.trust::before {
  background: none;
  background-image: none;
}

.hero-deco {
  -webkit-mask-image: none;
  mask-image: none;
}

.door::before,
.door-immi::before,
.door-legal::before,
.hs-card::after,
.case::after,
.svc-card::before {
  background: var(--ns-gold);
  background-image: none;
}

/* Home / portal */
.page,
.hero-svc,
.cases-h,
.trust-in,
.rv-blk,
.band-in,
.doors,
.end-in {
  max-width: 1180px;
}

.page {
  padding-top: 64px;
}

.intro {
  border-bottom: 1px solid var(--ns-rule);
  margin-bottom: 48px;
  padding-bottom: 40px;
}

.id-photo,
.intro-photo {
  border: 1px solid var(--ns-rule);
  box-shadow: none;
}

.id-photo,
.id-photo img,
.intro-photo,
.intro-photo img,
.hero-deco,
.hero-deco-photo,
.hero-who,
.hero-who > img,
.id-in img,
.portrait,
.port img {
  border-radius: 0;
}

.hero-svc,
.cases-h,
.rv-blk {
  padding-left: 32px;
  padding-right: 32px;
}

.hs-title,
.cases-t {
  font-size: clamp(2rem, 4vw, 3.45rem);
  letter-spacing: -.025em;
  line-height: 1.08;
}

.hs-title em,
.cases-t em,
.trust-t em,
.band-q em,
.end-t em,
.sec-title em,
.hero-h1 em {
  background: none;
  -webkit-background-clip: initial;
  background-clip: initial;
  color: var(--ns-gold);
}

.two-col {
  border-bottom: 1px solid var(--ns-rule);
  border-top: 1px solid var(--ns-rule);
}

.tc {
  padding-bottom: 28px;
  padding-top: 28px;
}

.tc-row {
  border-color: var(--ns-rule);
}

.tc-row:hover .n,
.case:hover .case-q,
.item:hover .item-title {
  color: var(--ns-gold-text);
}

.cases {
  gap: 0;
  border-left: 1px solid var(--ns-rule);
  border-top: 1px solid var(--ns-rule);
}

.case {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--ns-rule);
  border-radius: 0;
  border-right: 1px solid var(--ns-rule);
}

.case::after {
  height: 1px;
}

.win i {
  background: var(--ns-gold);
}

.w-tight i,
.w-mid i,
.w-open i {
  background: var(--ns-gold);
  background-image: none;
}

.trust-blk {
  background: var(--ns-ink);
  background-image: none;
  color: var(--ns-white);
}

.trust-blk .trust-t,
.trust-blk .who-n {
  color: var(--ns-white);
}

.who img {
  border-radius: 0;
  box-shadow: none;
}

.trust-blk .cred {
  background: transparent;
  border-color: rgba(255, 255, 255, .27);
}

.trust-blk .cred b,
.trust-blk .cred .go {
  color: #D5C18F;
}

/* 监管徽标衬一块浅底再放进深色资质区。
   两个徽标本身都是深色字（LSO 那个尤其），直接压在 navy 上几乎看不见。
   徽标一个像素都不许改（CICC 品牌规范 §4.11、LSO 商标规则），
   所以动的是背景不是徽标：给它一块白底，徽标原样放上去。
   width:auto 让白底贴着徽标本身的宽度走，不同长宽比的两个徽标都不会留空白。 */
.cred-logo {
  display: block;
  box-sizing: content-box;   /* 页面是 border-box，不写这句 padding 会把高度吃掉：
                                徽标只剩 30-14=16px 高，缩成一个白方块看不出是什么 */
  width: auto;
  height: 28px;
  margin: 0 0 12px;
  padding: 8px 12px;
  background: #FFFFFF;
  border-radius: 2px;
  object-fit: contain;
  object-position: left center;
}

.lso-mark-notice {
  margin: 6px 0 0;
  color: rgba(255, 255, 255, .62);
  font-size: 10px;
  line-height: 1.45;
}

.rv-grid {
  gap: 0;
  border-left: 1px solid var(--ns-rule);
  border-top: 1px solid var(--ns-rule);
}

.rv-card {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--ns-rule);
  border-right: 1px solid var(--ns-rule);
}

.rv-av,
.badge-dot,
.intro-creds .dot,
.intro-links .dot {
  background: var(--ns-gold);
}

.band::before {
  background: rgba(247, 247, 244, .88);
}

.endblk::before,
.end::before,
.close::before,
.hero-img::after {
  background: rgba(16, 33, 59, .88);
  background-image: none;
}

.band-q {
  color: var(--ns-ink);
}

.end-t {
  color: var(--ns-white);
}

.end h2 em,
.trust h2 em {
  background: none;
  -webkit-background-clip: initial;
  background-clip: initial;
  color: #D5C18F;
}

.doors {
  gap: 0;
  border-left: 1px solid var(--ns-rule);
  border-top: 1px solid var(--ns-rule);
}

.door {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--ns-rule);
  border-right: 1px solid var(--ns-rule);
}

/* Immigration and legal service pages */
#hero {
  background: var(--ns-paper);
  background-image: none;
  border-bottom: 1px solid var(--ns-rule);
  min-height: min(760px, 82vh);
}

#hero .hero-content {
  max-width: 720px;
}

.hero-h1 {
  color: var(--ns-ink);
  font-size: clamp(3rem, 6vw, 5.8rem);
  letter-spacing: -.035em;
  line-height: .98;
}

.hero-sub,
.about-text p,
.services-intro-right,
.consult-info > p {
  color: var(--ns-text);
  font-weight: 400;
}

.hero-eyebrow,
.badge {
  color: var(--ns-muted);
}

.hero-deco {
  opacity: .94;
}

.hero-deco-photo {
  filter: none;
}

#trust {
  background: var(--ns-ink);
  border: 0;
  color: var(--ns-white);
}

.trust-icon {
  color: #D5C18F;
}

/* ⚠️ 这里原本还包括 #consult 和 #why，2026-08-11 拿掉了。
   移民页的 #consult 本来是 --bg-navy、法律页的 #why 本来是 --green 且 color:#fff，
   刷成浅底之后里面的白字一个都看不见（实测对比度 1.07 / 1.16）。
   改底色就得连里面的字色一起改，只改一半比不改更糟。 */
#about,
#services {
  background: var(--ns-paper);
  background-image: none;
}

.about-card {
  background: transparent;
  border: 1px solid var(--ns-rule);
  border-radius: 0;
  box-shadow: none;
}

.about-photo {
  background: var(--ns-soft);
  background-image: none;
  border-radius: 0;
}

.about-photo img {
  filter: none;
}

.card-stats {
  border-color: var(--ns-rule);
}

.card-stat {
  border-color: var(--ns-rule);
}

.svc-category {
  border-color: var(--ns-rule);
}

.svc-grid {
  gap: 0;
  border-left: 1px solid var(--ns-rule);
  border-top: 1px solid var(--ns-rule);
}

.svc-card {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--ns-rule);
  border-right: 1px solid var(--ns-rule);
  min-height: 100%;
}

.svc-card::before {
  height: 1px;
}

.svc-icon {
  background: transparent;
  border: 1px solid var(--ns-rule);
  border-radius: 0;
  color: var(--ns-ink);
}

.svc-tag-hot {
  background: transparent;
  border: 1px solid var(--ns-gold);
  border-radius: 0;
  color: var(--ns-gold-text);
}

.pillar {
  background: transparent;
  border-left: 1px solid var(--ns-rule);
}

.pillar-num {
  color: var(--ns-gold);
  font-family: var(--ns-mono);
}

.consult-card,
.book-card {
  background: var(--ns-white);
}

.consult-card-top,
.book-head {
  background: var(--ns-ink);
  color: var(--ns-white);
}

.consult-card-top-title,
.book-head h2 {
  color: var(--ns-white);
}

.book-tiers {
  gap: 0;
  border-left: 1px solid var(--ns-rule);
  border-top: 1px solid var(--ns-rule);
}

.book-tier {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--ns-rule);
  border-right: 1px solid var(--ns-rule);
}

.trust,
.midcta,
.port-bg {
  background: var(--ns-ink);
  background-image: none;
  border-radius: 0;
}

.trust h2,
.midcta h2,
.port-bg h2 {
  color: var(--ns-white);
}

/* Services, prices, and order flows */
.wrap {
  max-width: 1040px;
}

main.wrap,
.breadcrumb.wrap {
  background: transparent;
}

article > h1 {
  color: var(--ns-ink);
  font-size: clamp(2.45rem, 5vw, 4.55rem);
  letter-spacing: -.035em;
  line-height: 1.04;
}

.lede,
.page-intro,
.tldr p {
  color: var(--ns-text);
}

main.wrap > article > .card,
.card {
  background: transparent;
  border-color: var(--ns-rule);
}

.card-buy {
  border-left-color: var(--ns-rule);
}

.tiers {
  gap: 0;
  border-left: 1px solid var(--ns-rule);
  border-top: 1px solid var(--ns-rule);
}

.tier {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--ns-rule);
  border-right: 1px solid var(--ns-rule);
}

.buy-box {
  background: var(--ns-white);
  border-left: 3px solid var(--ns-gold);
}

.buy-price,
.card-price,
.t-price,
.book-price {
  color: var(--ns-ink);
}

.fold,
.q-fold,
.src-fold,
details.case-fold {
  border-color: var(--ns-rule);
  border-radius: 0;
}

.fold summary,
details.q-fold > summary,
details.src-fold > summary {
  background: transparent;
  border-radius: 0;
  color: var(--ns-ink);
}

.fold[open] summary,
details.q-fold[open] > summary {
  border-bottom-color: var(--ns-rule);
}

.order-cta,
.note,
.ok,
.fallback,
.compliance-note,
.paid,
.consent,
.agreement,
.agreement blockquote,
.agreement .svc-opt,
.why-quote,
.qa-block blockquote,
.warn {
  background: var(--ns-soft);
  border-color: var(--ns-rule);
  border-radius: 0;
}

#cal-embed,
.price-strip,
.ps-item,
.card-stats,
.svc-grid,
.contact-map,
.hero-img,
.hero-who,
.bk-go,
.go,
.calc-inline a,
.col-cta,
.btn-book,
.btn-top,
button[type="submit"] {
  border-radius: 0;
  box-shadow: none;
}

/* Guide index and guide detail */
.breadcrumb {
  border-bottom: 1px solid var(--ns-rule);
  color: var(--ns-muted);
  font-family: var(--ns-mono);
}

.group {
  border-color: var(--ns-rule);
}

.group-title {
  color: var(--ns-ink);
  letter-spacing: -.01em;
}

.group-items {
  gap: 0;
  border-left: 1px solid var(--ns-rule);
  border-top: 1px solid var(--ns-rule);
}

.item {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--ns-rule);
  border-radius: 0;
  border-right: 1px solid var(--ns-rule);
}

.tldr {
  background: var(--ns-soft);
  border-left: 3px solid var(--ns-gold);
}

.toc {
  background: transparent;
  border-bottom: 1px solid var(--ns-rule);
  border-radius: 0;
  border-top: 1px solid var(--ns-rule);
}

.toc a,
.qa-block a,
.sources a,
.author-box a {
  color: var(--ns-ink);
  text-decoration-color: var(--ns-gold);
}

.qa-block {
  border-color: var(--ns-rule);
}

.qa-block h2 {
  color: var(--ns-ink);
  font-size: clamp(1.65rem, 3vw, 2.3rem);
  letter-spacing: -.015em;
}

.qa-block blockquote,
.sources,
.author-box {
  background: transparent;
  border-color: var(--ns-rule);
  border-radius: 0;
}

.qa-block table,
.qa-block th,
.qa-block td,
.table-scroll table {
  border-color: var(--ns-rule);
}

.table-scroll {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.qa-block th {
  background: var(--ns-soft);
  color: var(--ns-ink);
}

.guide-cta,
.calc-inline {
  background: var(--ns-ink);
  background-image: none;
  border-radius: 0;
  color: var(--ns-white);
}

.guide-cta .gc-t,
.guide-cta .gc-m {
  color: var(--ns-white);
}

.guide-cta .gc-b,
.calc-inline a {
  background: var(--ns-white);
  border-color: var(--ns-white);
  color: var(--ns-ink);
}

.guide-cta .gc-b:hover,
.calc-inline a:hover {
  background: #E9EAE5;
  border-color: #E9EAE5;
  color: var(--ns-ink);
}

/* 参考来源那一节里的官方网址是一长串不能断的字符，手机上会把整页撑宽。
   2026-08-11 CI 在 /en/guides/ontario-traffic-ticket.html 上抓到横向溢出。
   中文页看不出来 —— 中文可以任意换行，只有英文页会暴露这个问题。
   break-word 只在这一行放不下时才断，正常英文单词不受影响。 */
.qa-block,
.sources,
.tldr,
.author-box,
.toc {
  overflow-wrap: break-word;
}

/* Tools and calculators */
.grid {
  gap: 0;
  border-left: 1px solid var(--ns-rule);
  border-top: 1px solid var(--ns-rule);
}

.grid > .card {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--ns-rule);
  border-right: 1px solid var(--ns-rule);
}

.tool-embed {
  background: var(--ns-white);
  border: 1px solid var(--ns-rule);
  padding: clamp(18px, 3vw, 34px);
}

:is(.crs-calc, .bc-calc, .mpnp-calc, .owps-calc, .aaip-calc, .oinp-calc) {
  color: var(--ns-text);
  font-family: var(--ns-sans);
}

:is(.crs-calc, .bc-calc, .mpnp-calc, .owps-calc, .aaip-calc, .oinp-calc) :is(
  .crs-h,
  .bc-h,
  .mpnp-h,
  .aaip-h,
  .oinp-h
) {
  border-bottom: 1px solid var(--ns-rule);
  color: var(--ns-ink);
  font-family: var(--ns-serif);
}

:is(.crs-calc, .bc-calc, .mpnp-calc, .owps-calc, .aaip-calc, .oinp-calc) :is(
  select,
  input[type="number"],
  input[type="text"]
) {
  background: var(--ns-white);
  border-color: #C9CBC5;
  border-radius: 0;
  color: var(--ns-text);
}

/* 打分结果面板：只去圆角，**不要改底色和字色**。
   2026-08-11 修：原来这里把面板设成深底白字，但各打分器页面自己的
   `.crs-calc .crs-result{background:...}`（0,2,0）比这条 :is()（0,1,0）更具体，
   底色没被改过来、字色却被改成了白的 —— 于是六个打分器（中英共十二页）的
   分数明细全变成浅底白字，肉眼几乎看不见，只有加粗的小计行还看得清。
   分数明细正是打分器唯一的产出。截图和横向溢出检查都发现不了对比度问题。 */
:is(.crs-result, .bc-result, .mpnp-result, .owps-result, .aaip-result, .oinp-result) {
  border-radius: 0;
}

:is(.mpnp-fs, .owps-fs, .mpnp-check, .mpnp-note, .owps-note, .mpnp-lead, .owps-lead) {
  background: transparent;
  border-color: var(--ns-rule);
  border-radius: 0;
  box-shadow: none;
}

:is(.mpnp-select, .owps-select, .mpnp-btn, .owps-btn, .mpnp-lead-row button, .owps-lead-row button, .mpnp-lead-row input, .owps-lead-row input) {
  border-radius: 0;
  box-shadow: none;
}

/* 同上：面板是浅底，总分和明细的分隔线都不能按深底来配色。 */
.crs-break td,
.bc-break td,
.mpnp-break td,
.aaip-break td,
.oinp-break td {
  border-color: var(--ns-rule);
}

.crs-elig,
.bc-elig,
.mpnp-elig,
.aaip-elig,
.oinp-elig,
.warn {
  border-radius: 0;
}

/* Portal filler */
.beta {
  background: var(--ns-white);
  border: 1px solid var(--ns-rule);
  border-left: 3px solid var(--ns-gold);
}

.beta h2 {
  color: var(--ns-ink);
}

.beta input[type="email"] {
  border-radius: 0;
}

.beta .say.ok,
.beta .say.bad {
  background: var(--ns-soft);
  border-radius: 0;
}

/* Compact editorial layout on small screens. */
@media (max-width: 760px) {
  .ns-nav-inner {
    height: 58px;
    padding-left: 18px;
    padding-right: 18px;
  }

  .ns-nav.ns-open .ns-links {
    border-top: 1px solid var(--ns-rule);
  }

  .page {
    padding: 42px 18px 34px;
  }

  .hero-svc,
  .cases-h,
  .rv-blk,
  .trust-in,
  .band-in,
  .end-in {
    padding-left: 20px;
    padding-right: 20px;
  }

  .intro {
    margin-bottom: 34px;
    padding-bottom: 30px;
  }

  .hs-title,
  .cases-t,
  .hero-h1,
  article > h1 {
    font-size: clamp(2.35rem, 13vw, 3.45rem);
  }

  .two-col,
  .doors,
  .cases,
  .rv-grid,
  .svc-grid,
  .grid,
  .group-items,
  .book-tiers,
  .tiers {
    grid-template-columns: 1fr;
  }

  .tc + .tc {
    border-left: 0;
  }

  .trust-blk {
    padding-bottom: 44px;
    padding-top: 44px;
  }

  #hero {
    min-height: auto;
    padding-bottom: 56px;
    padding-top: 48px;
  }

  #hero .hero-content {
    padding-left: 20px;
    padding-right: 20px;
  }

  .hero-deco {
    opacity: .16;
  }

  .hero-actions {
    align-items: stretch;
  }

  .hero-actions > a {
    justify-content: center;
  }

  #trust .trust-scroll {
    gap: 20px;
    padding-left: 20px;
    padding-right: 20px;
  }

  .container,
  .wrap {
    padding-left: 20px;
    padding-right: 20px;
  }

  .about-grid,
  .why-grid,
  .consult-grid,
  .services-intro {
    grid-template-columns: 1fr;
  }

  .svc-card,
  .card,
  .tier,
  .book-tier,
  .item,
  .case,
  .rv-card {
    padding: 20px;
  }

  .card-buy {
    border-left: 0;
    border-top: 1px solid var(--ns-rule);
  }

  .breadcrumb {
    overflow-x: auto;
    white-space: nowrap;
  }

  .tldr,
  .buy-box,
  .beta,
  .tool-embed {
    padding: 20px;
  }

  .table-scroll table {
    min-width: 620px;
  }

  .tool-embed {
    margin-left: -2px;
    margin-right: -2px;
  }

  :is(.crs-calc, .bc-calc, .mpnp-calc, .owps-calc, .aaip-calc, .oinp-calc) :is(
    .crs-quad,
    .bc-grid,
    .mpnp-grid,
    .aaip-grid,
    .oinp-grid
  ) {
    grid-template-columns: 1fr;
  }

  .beta form {
    align-items: stretch;
    flex-direction: column;
  }

  .beta button {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto;
    transition-duration: .01ms;
    animation-duration: .01ms;
    animation-iteration-count: 1;
  }
}

/* ── 2026-08-11：底色被共用样式改深了、字色没跟着改，以下两处实测看不见 ── */

/* 指南页 CTA 改成藏青底后，正文里那排打分器链接还是藏青字（对比度 1.00，完全不可见）。
   .gc-b 是白底藏青字的按钮，不在此列。 */
.guide-cta .gc-m a {
  color: var(--ns-white);
  text-decoration-color: var(--ns-gold);
}

/* 资质条改成藏青底后，里面的说明文字还是深灰（对比度 1.81）。 */
#trust .trust-item span,
#trust .trust-scroll span {
  color: rgba(255, 255, 255, .84);
}

/* 卡片里的「了解详情」是一行文字链接，不是按钮：给它下划线，不给边框。 */
.card-more {
  color: var(--ns-ink);
  text-decoration: underline;
  text-decoration-color: var(--ns-gold);
  text-underline-offset: .22em;
}

.card-more:hover {
  color: var(--ns-gold-text);
}
