/* TianfuHub Design System 1.0 - shared tokens and adapters; business data and charts stay local. */
:root{--tf-navy:#102238;--tf-blue:#1764b7;--tf-ink:#24334a;--tf-muted:#63748a;--tf-line:#dce4ef;--tf-bg:#f5f7fb;--tf-paper:#fff;--tf-green:#167d74;--tf-radius:8px;--tf-font:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;scroll-behavior:auto!important;scroll-padding-top:90px}
html,body{scroll-behavior:auto!important}
body{font-family:var(--tf-font)!important;font-variant-numeric:tabular-nums;line-height:1.7}
button,input,select,textarea{font-family:inherit}
a,button,input,select,textarea,summary{touch-action:manipulation}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #78a9e3!important;outline-offset:3px}
input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]),select,textarea{border-radius:6px}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
/* Existing layout adapters are intentionally scoped. Chart canvases, editor surfaces and business grids are not recolored. */
html[data-tf-family=portal] body,html[data-tf-family=product] body,html[data-tf-family=service] body{color:var(--tf-ink);background:var(--tf-bg)}
html[data-tf-family=portal] :is(.wrap,.container-tf,.rf-container),html[data-tf-family=product] :is(.wrap,.container-tf,.rf-container){max-width:1200px}
html[data-tf-family=portal] :is(.card,.portal-panel,.rf-card,.market-card,.news-card,.resource-card,.feature-card),html[data-tf-family=product] :is(.card,.rf-card,.market-card,.feature-card){border-color:var(--tf-line)!important;border-radius:8px!important;box-shadow:0 2px 10px #10223805}
html[data-tf-family=portal] :is(.bg-hero,.bg-hero-gradient),html[data-tf-family=product] :is(.bg-hero,.bg-hero-gradient){background:linear-gradient(115deg,#102238,#163c66)!important}
html[data-tf-family=portal] :is(.text-jade,.text-violet,.text-amber),html[data-tf-family=product] :is(.text-violet,.text-jade){color:var(--tf-blue)!important}
html[data-tf-family=portal] :is(.bg-bg,.bg-bg2,.bg-paper),html[data-tf-family=product] .bg-paper{background-color:var(--tf-bg)}
html[data-tf-family=portal] :is(.border-line,.border-mist),html[data-tf-family=product] :is(.border-line,.border-mist){border-color:var(--tf-line)!important}
html[data-tf-family=portal] main>section.py-16,html[data-tf-family=product] main>section.py-16{padding-top:48px!important;padding-bottom:48px!important}
html[data-tf-family=portal] main h1{font-size:clamp(30px,3.8vw,46px);line-height:1.28;letter-spacing:-.025em}
html[data-tf-family=product] main h1{font-size:clamp(32px,4.3vw,52px);line-height:1.25;letter-spacing:-.03em}
html[data-tf-family=portal] :is(.portal-panel h2,.rf-card h2,.news-card h2){font-size:20px;line-height:1.4}
html[data-tf-family=portal] :is(.btn-primary,.button-primary),html[data-tf-family=product] :is(.btn-primary,.button-primary){background:var(--tf-blue)!important;border-color:var(--tf-blue)!important;color:#fff!important;border-radius:6px!important;min-height:44px}
html[data-tf-family=portal] :is(.site-header,header.sticky),html[data-tf-family=product] :is(.rf-header,header.sticky){background:#fffffff5;border-color:var(--tf-line)!important;backdrop-filter:blur(12px)}
html[data-tf-site=tfhf] .portal-nav{background:var(--tf-blue)!important}
html[data-tf-site=tfhf] .portal-nav a[aria-current=page]{background:#0d519f}
html[data-tf-site=tfhf] main h1{font-size:24px;line-height:1.4}
html[data-tf-site=tfhf] .portal-panel{background:#fff}
html[data-tf-site=tfhf] .portal-panel h2{font-size:19px}
html[data-tf-site=tfhf] .daily-panel{border-top:3px solid #b88755}
html[data-tf-site=fa] :is(.rf-header,.rf-footer){background:#fff;border-color:var(--tf-line)}
html[data-tf-site=fa] .rf-hero{background:linear-gradient(120deg,#102238,#164470);color:#fff}
html[data-tf-site=fa] .rf-hero :is(h1,p){color:inherit}
html[data-tf-site=fa] .rf-nav a{color:var(--tf-ink)}
html[data-tf-site=fa] .rf-card{background:#fff}
html[data-tf-site=gewulab] .site-header{border-color:#dce4ef}
html[data-tf-site=gewulab] :is(.card,.company-card,.memo-card,.panel){border-radius:8px}
html[data-tf-site=flow] :is(.site-head,.site-foot){border-color:#dce4ef}
html[data-tf-site=flow] :is(.question-card,.story-card,.memory-card){border-radius:8px}
html[data-tf-site=law] :is(.site-header,.site-footer){border-color:var(--tf-line)}
html[data-tf-site=law] :is(.feature-card,.case-card,.lawyer-entry-card){border-radius:8px;border-color:var(--tf-line)}
html[data-tf-site=yihe] .service-row{border-color:var(--tf-line)}
html[data-tf-site=math] .font-serif,html[data-tf-site=math] .font-display{font-family:var(--tf-font)}
html[data-tf-site=aira] :is(.service-card,.feature-card,.solution-card){border-radius:8px}
html[data-tf-family=workbench] :is(button,input,select){border-radius:6px}
html[data-tf-family=workbench] :is(.ant-card,.el-card,.panel){border-radius:8px}
@media(max-width:767px){:root{scroll-padding-top:72px}html[data-tf-family=portal] main>section.py-16,html[data-tf-family=product] main>section.py-16{padding-top:32px!important;padding-bottom:32px!important}html[data-tf-family=portal] main h1,html[data-tf-family=product] main h1{font-size:32px}html[data-tf-site=tfhf] main h1{font-size:21px}}
/* Native network and main pages use the same three-template vocabulary. */
.tf-page{margin:0;background:var(--tf-bg);color:var(--tf-ink)}
.tf-container{width:min(1200px,calc(100% - 48px));margin-inline:auto}.tf-page a{text-decoration:none;color:var(--tf-blue)}
.tf-header{background:#fff;border-bottom:1px solid var(--tf-line)}.tf-header-inner{min-height:80px;display:flex;align-items:center;justify-content:space-between;gap:24px}.tf-logo{font-size:25px;font-weight:750;letter-spacing:-1px;color:var(--tf-navy)!important}.tf-logo small{display:block;font-size:11px;letter-spacing:.08em;font-weight:500;color:var(--tf-muted)}.tf-nav{display:flex;align-items:center;gap:28px;font-size:14px}.tf-nav a{color:var(--tf-ink);font-weight:550}.tf-nav a:hover{color:var(--tf-blue)}
.tf-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 19px;background:var(--tf-blue);border:1px solid var(--tf-blue);border-radius:6px;color:white!important;font-size:14px;font-weight:600;text-decoration:none}.tf-button.secondary{background:transparent;border-color:#bdd3ee;color:var(--tf-blue)!important}.tf-hero .tf-button.secondary{border-color:#8198b9;color:#fff!important}.tf-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:25px}
.tf-hero{background:linear-gradient(112deg,#0d1d32 0%,#173b65 100%);color:#fff;padding:64px 0 66px;position:relative;overflow:hidden}.tf-hero::after{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(#ffffff05 1px,transparent 1px),linear-gradient(90deg,#ffffff05 1px,transparent 1px);background-size:54px 54px}.tf-hero .tf-container{position:relative;z-index:1}.tf-kicker{text-transform:uppercase;font-size:11px;letter-spacing:.18em;color:#a7c8ee;font-weight:650}.tf-hero-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:70px;align-items:center}.tf-hero h1{font-size:clamp(34px,4.2vw,54px);line-height:1.25;margin:18px 0 22px;letter-spacing:-1.5px;font-weight:750}.tf-hero p{font-size:16px;line-height:1.9;color:#d0dcee;max-width:650px}.tf-hero-note{font-size:12px!important;color:#9db5d1!important;margin-top:18px}.tf-hero-panel{border:1px solid #ffffff2b;background:#ffffff0a;border-radius:10px;padding:26px}.tf-hero-panel h2{font-size:19px;margin:0 0 15px}.tf-hero-panel a{color:white;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0;border-top:1px solid #ffffff21}.tf-hero-panel small{display:block;color:#a8bed8;font-size:12px;margin-top:4px}.tf-section{padding:48px 0}.tf-section+.tf-section{border-top:1px solid var(--tf-line)}.tf-section.white{background:#fff}.tf-section-head{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:24px}.tf-section h2{font-size:27px;line-height:1.4;margin:0 0 8px;letter-spacing:-.04em}.tf-description{color:var(--tf-muted);font-size:14px;margin:0;line-height:1.8}.tf-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.tf-card{display:flex;flex-direction:column;padding:25px;border:1px solid var(--tf-line);border-radius:8px;background:#fff;color:var(--tf-ink)!important;min-width:0;transition:border-color .15s}.tf-card:hover{border-color:#7da9db}.tf-card-label{font-size:11px;color:var(--tf-blue);font-weight:650;letter-spacing:.07em}.tf-card h3{font-size:19px;line-height:1.4;margin:11px 0 10px}.tf-card p{font-size:14px;color:var(--tf-muted);line-height:1.85;margin:0 0 20px}.tf-card-links{display:flex;gap:8px 16px;flex-wrap:wrap;margin-top:auto;font-size:13px}.tf-card-links a{padding-block:4px}.tf-task-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.tf-task{background:#fff;border:1px solid var(--tf-line);border-radius:8px;padding:28px}.tf-task h2{font-size:23px}.tf-task p{font-size:14px;color:var(--tf-muted);line-height:1.85}.tf-flow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}.tf-step{border-top:2px solid var(--tf-blue);padding-top:16px}.tf-step b{font-size:11px;color:var(--tf-blue);letter-spacing:.1em}.tf-step h3{font-size:18px;margin:10px 0}.tf-step p{font-size:13px;color:var(--tf-muted);margin:0;line-height:1.9}.tf-footer{padding:32px 0;border-top:1px solid var(--tf-line);background:#fff;color:var(--tf-muted);font-size:12px}.tf-footer-inner{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}.tf-footer nav{display:flex;gap:20px;flex-wrap:wrap}.tf-network-hero{padding:44px 0 32px;background:#fff;border-bottom:1px solid var(--tf-line)}.tf-network-hero h1{font-size:36px;margin:10px 0}.tf-network-hero p{max-width:780px;font-size:15px;color:var(--tf-muted)}.tf-site-host{font-size:11px;color:var(--tf-muted);margin-top:16px;overflow-wrap:anywhere}.tf-empty{padding:28px;border:1px dashed var(--tf-line);border-radius:8px;color:var(--tf-muted)}
@media(max-width:900px){.tf-nav{gap:16px}.tf-hero-grid{gap:28px}.tf-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tf-flow{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.tf-container{width:calc(100% - 32px)}.tf-header-inner{min-height:66px}.tf-logo{font-size:22px}.tf-nav a:not(.tf-button){display:none}.tf-nav .tf-button{padding:8px 12px;font-size:12px;min-height:40px}.tf-hero{padding:36px 0}.tf-hero-grid{grid-template-columns:1fr}.tf-hero h1{font-size:34px;letter-spacing:-.8px}.tf-hero p{font-size:14px}.tf-hero-panel{padding:20px}.tf-section{padding:32px 0}.tf-section h2{font-size:24px}.tf-grid,.tf-task-grid{grid-template-columns:1fr}.tf-section-head{align-items:start;flex-direction:column;gap:8px}.tf-task,.tf-card{padding:22px}.tf-flow{gap:20px}.tf-actions .tf-button{flex:1}.tf-network-hero h1{font-size:30px}.tf-network-hero{padding:28px 0}.tf-footer{padding-bottom:32px}}
/* Readable accents on FA's deep-blue product hero; white evidence cards retain their own ink. */
html[data-tf-site=fa] .rf-hero h1 span,html[data-tf-site=fa] .rf-hero .rf-kicker{color:#a9cfff!important}
html[data-tf-site=fa] .rf-hero .rf-stats b{color:#fff!important}
html[data-tf-site=fa] .rf-hero .rf-stats :is(span,.rf-stat-note){color:#bfd0e5!important}
/* Shared reading hierarchy across public templates; institution wordmarks remain unchanged. */
html:is([data-tf-family=portal],[data-tf-family=product],[data-tf-family=service]) main :is(h1,h2,h3){font-family:var(--tf-font)!important}
html[data-tf-site=gewulab] :is(.btn-gold,.moment-header-cta){background:var(--tf-blue)!important;border-color:var(--tf-blue)!important;color:#fff!important;border-radius:6px!important}

/* Keep SCHI's data dashboard dark; never mix white page backgrounds with chart-theme text. */
html[data-tf-site=schi] body{background:var(--bg,#080b14);color:var(--text,#eaf0fb)}
html[data-tf-site=schi] header.hero{background:#102238;border-color:#27405b}
html[data-tf-site=fa] .rf-hero h1 em{color:#a9cfff!important}
