/* ============================================================
   上海科沣律师事务所 Shanghai Kefeng Law Firm
   Tiffany Blue × White — Serif Minimal Style
   ============================================================ */

:root{
  --tiffany:        #81D8D0;
  --tiffany-soft:   #D8F2F0;
  --tiffany-deep:   #0ABAB5;
  --ink:            #0E4A52;   /* deep teal, from KF logo */
  --ink-dark:       #08333A;
  --text:           #33393B;
  --text-light:     #6b7477;
  --line:           #e3ecec;
  --white:          #ffffff;
  --off-white:      #f7fbfb;
  --grad: linear-gradient(135deg, #ffffff 0%, #e9f8f7 45%, #c9efec 100%);
  --grad-banner: linear-gradient(120deg, #eafaf8 0%, #bdeae6 55%, #81D8D0 100%);
  --serif: "Times New Roman", "Noto Serif SC", "Songti SC", "SimSun", serif;
}

*{ margin:0; padding:0; box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  font-family: var(--serif);
  color: var(--text);
  background: var(--white);
  line-height: 1.9;
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul{ list-style:none; }

.en{ letter-spacing:.14em; }

/* ---------- Header ---------- */
.site-header{
  position:fixed; top:0; left:0; right:0; z-index:100;
  background:rgba(255,255,255,.92);
  backdrop-filter: blur(10px);
  border-bottom:1px solid transparent;
  transition: box-shadow .3s, border-color .3s;
}
.site-header.scrolled{ border-color:var(--line); box-shadow:0 4px 24px rgba(14,74,82,.06); }
.header-inner{
  max-width:1280px; margin:0 auto; padding:0 40px;
  height:84px; display:flex; align-items:center; justify-content:space-between;
}
.brand{ display:flex; align-items:center; gap:14px; }
.brand img{ height:56px; width:auto; }
.main-nav{ display:flex; align-items:center; gap:44px; }
.main-nav a{
  position:relative; font-size:15.5px; color:var(--ink);
  padding:6px 0; letter-spacing:.04em;
}
.main-nav a .nav-en{
  display:block; font-size:11.5px; letter-spacing:.18em; font-weight:600;
  color:var(--text-light); text-transform:uppercase; line-height:1.4;
}
.main-nav a::after{
  content:""; position:absolute; left:0; bottom:-2px;
  width:0; height:1.5px; background:var(--tiffany-deep);
  transition:width .35s ease;
}
.main-nav a:hover::after, .main-nav a.active::after{ width:100%; }
.main-nav a.active{ color:var(--tiffany-deep); }
.lang-switch{
  margin-left:8px; font-size:12px; letter-spacing:.1em; color:var(--text-light);
  border-left:1px solid var(--line); padding-left:24px;
}
.lang-switch b{ color:var(--ink); font-weight:normal; }
.lang-switch span{ opacity:.45; cursor:default; }

.nav-toggle{ display:none; background:none; border:none; cursor:pointer; padding:8px; }
.nav-toggle span{ display:block; width:24px; height:1.5px; background:var(--ink); margin:6px 0; transition:.3s; }
.nav-toggle.open span:nth-child(1){ transform:translateY(7.5px) rotate(45deg); }
.nav-toggle.open span:nth-child(2){ opacity:0; }
.nav-toggle.open span:nth-child(3){ transform:translateY(-7.5px) rotate(-45deg); }

/* ---------- Hero ---------- */
.hero{
  position:relative; min-height:92vh;
  display:flex; align-items:flex-end;
  overflow:hidden;
}
.hero-bg{
  position:absolute; inset:0;
  background-size:cover; background-position:center;
  animation:heroFade 1.6s ease both;
  transform:scale(1.04);
  transition:transform 6s ease;
}
.hero.loaded .hero-bg{ transform:scale(1); }
@keyframes heroFade{ from{opacity:0} to{opacity:1} }
.hero::before{
  content:""; position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg, rgba(255,255,255,.28) 0%, rgba(233,248,247,.42) 45%, rgba(255,255,255,.94) 100%);
}
.hero-content{
  position:relative; z-index:2;
  max-width:1280px; margin:0 auto; padding:0 40px 96px; width:100%;
}
.hero-eyebrow{
  font-size:12.5px; letter-spacing:.32em; text-transform:uppercase;
  color:var(--ink); margin-bottom:22px;
}
.hero h1{
  font-size:clamp(38px, 5.2vw, 64px);
  font-weight:600; color:var(--ink-dark);
  letter-spacing:.06em; line-height:1.35;
}
.hero .hero-sub{
  margin-top:20px; font-size:clamp(16px,1.6vw,20px);
  color:var(--text); letter-spacing:.1em; max-width:640px;
}
.hero-cta{ margin-top:42px; display:flex; gap:18px; flex-wrap:wrap; }

/* ---------- Buttons ---------- */
.btn{
  display:inline-block; padding:15px 44px;
  font-family:var(--serif); font-size:15px; letter-spacing:.14em;
  border:1px solid var(--ink); color:var(--ink);
  background:transparent; cursor:pointer;
  transition:all .35s ease; text-align:center;
}
.btn:hover{ background:var(--ink); color:#fff; }
.btn-solid{
  background:var(--tiffany-deep); border-color:var(--tiffany-deep); color:#fff;
}
.btn-solid:hover{ background:var(--ink); border-color:var(--ink); }
.btn-sm{ padding:11px 30px; font-size:13.5px; }

/* ---------- Sections ---------- */
.section{ padding:120px 40px; }
.section.tint{ background:var(--grad); }
.section.soft{ background:var(--off-white); }
.container{ max-width:1280px; margin:0 auto; }
.container-narrow{ max-width:920px; margin:0 auto; }

.section-head{ margin-bottom:72px; }
.section-label{
  font-size:13.5px; letter-spacing:.32em; text-transform:uppercase; font-weight:700;
  color:var(--tiffany-deep); margin-bottom:16px;
}
.section-title{
  font-size:clamp(28px,3.2vw,40px); font-weight:600;
  color:var(--ink-dark); letter-spacing:.08em; line-height:1.5;
}
.section-title::after{
  content:""; display:block; width:64px; height:2px;
  background:var(--tiffany); margin-top:24px;
}
.section-head.center{ text-align:center; }
.section-head.center .section-title::after{ margin-left:auto; margin-right:auto; }

.lead{ font-size:17.5px; color:var(--text); }
.lead + .lead{ margin-top:1.4em; }
.text-link{
  display:inline-flex; align-items:center; gap:10px;
  margin-top:36px; font-size:14.5px; letter-spacing:.14em;
  color:var(--tiffany-deep); border-bottom:1px solid var(--tiffany);
  padding-bottom:5px; transition:gap .3s, color .3s;
}
.text-link:hover{ gap:16px; color:var(--ink); }

/* ---------- Practice area cards ---------- */
.area-grid{
  display:grid; grid-template-columns:repeat(4,1fr); gap:28px;
}
.area-card{
  background:#fff; border:1px solid var(--line);
  padding:52px 32px 44px; position:relative;
  transition:transform .4s ease, box-shadow .4s ease;
  display:block;
}
.area-card:hover{ transform:translateY(-10px); box-shadow:0 24px 48px rgba(14,74,82,.10); }
.area-card .num{
  font-size:44px; color:var(--tiffany); opacity:.55; line-height:1;
  font-style:italic;
}
.area-card h3{
  margin:26px 0 14px; font-size:19px; color:var(--ink-dark);
  letter-spacing:.06em; font-weight:600;
}
.area-card .area-en{
  font-size:10.5px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--text-light); display:block; margin-bottom:16px;
}
.area-card p{ font-size:14px; color:var(--text-light); line-height:1.9; }
.area-card::after{
  content:"→"; position:absolute; right:28px; bottom:24px;
  color:var(--tiffany-deep); opacity:0; transform:translateX(-8px);
  transition:.35s;
}
.area-card:hover::after{ opacity:1; transform:translateX(0); }

/* ---------- Case cards ---------- */
.case-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:28px; }
.case-grid-5{ grid-template-columns:repeat(3,1fr); }
@media (min-width:1200px){
  .case-grid-5{ grid-template-columns:repeat(3,1fr); }
}
.case-card{
  background:#fff; border:1px solid var(--line);
  padding:46px 36px; cursor:pointer; position:relative;
  transition:box-shadow .4s ease, transform .4s ease;
  display:flex; flex-direction:column;
}
.case-card:hover{ box-shadow:0 28px 56px rgba(14,74,82,.12); transform:translateY(-6px); }
.case-card .case-tag{
  font-size:11px; letter-spacing:.24em; text-transform:uppercase;
  color:var(--tiffany-deep); margin-bottom:18px;
}
.case-card h3{
  font-size:18.5px; color:var(--ink-dark); font-weight:600;
  line-height:1.7; letter-spacing:.03em; margin-bottom:18px;
}
.case-card .case-result{
  margin-top:auto; padding-top:22px; border-top:1px solid var(--line);
  font-size:15px; color:var(--ink);
}
.case-card .case-result b{ color:var(--tiffany-deep); font-weight:600; }
.case-card .case-more{
  margin-top:18px; font-size:13px; letter-spacing:.16em; color:var(--text-light);
}
.case-card:hover .case-more{ color:var(--tiffany-deep); }
.case-cta{ text-align:center; margin-top:64px; }

/* practice page list (wider cards) */
.case-list{ display:flex; flex-direction:column; gap:32px; }
.case-row{
  display:grid; grid-template-columns:90px 1fr; gap:44px;
  background:#fff; border:1px solid var(--line);
  padding:52px 56px; align-items:start;
  transition:box-shadow .4s ease, transform .4s ease;
}
.case-row:hover{ box-shadow:0 24px 56px rgba(14,74,82,.10); transform:translateY(-4px); }
.case-row .num{
  font-size:56px; font-style:italic; color:var(--tiffany); opacity:.6; line-height:1;
}
.case-row h3{
  font-size:20px; color:var(--ink-dark); font-weight:600;
  line-height:1.75; letter-spacing:.02em; margin-bottom:18px;
}
.case-row .case-sum{
  font-size:16.5px; color:var(--text); line-height:2.05;
  letter-spacing:.03em; text-align:justify;
}
.case-detail-label{
  margin:28px 0 12px; font-size:20px; font-weight:600;
  letter-spacing:.06em; color:var(--ink); line-height:1.75;
}
.case-detail-text{
  font-size:16.5px; line-height:2.05; color:var(--text);
  letter-spacing:.03em; text-align:justify;
}
.case-detail-text + .case-detail-text{ margin-top:16px; }
.case-value-label{
  margin-top:20px; font-size:12.5px; letter-spacing:.26em;
  color:var(--ink); font-weight:700;
}
.case-value-list{ margin-top:12px; padding-left:0; list-style:none; }
.case-value-list li{
  position:relative; font-size:14px; color:var(--text); font-weight:500;
  line-height:1.9; padding-left:18px; margin-bottom:8px; letter-spacing:.02em;
}

/* practice 页：小标题与案例标题一致，正文统一 */
.case-row .case-value-label{ margin-top:28px; margin-bottom:12px; font-size:20px; font-weight:600; letter-spacing:.06em; color:var(--ink); line-height:1.75; }
.case-row .case-value-list li{ font-size:16.5px; line-height:2.05; color:var(--text); letter-spacing:.03em; font-weight:400; margin-bottom:10px; padding-left:20px; }

.case-value-list li::before{
  content:""; position:absolute; left:0; top:.72em;
  width:8px; height:1.5px; background:var(--tiffany-deep);
}
.case-card .case-value-list li{ font-size:13.5px; }

/* ---------- Case modal ---------- */
.modal-mask{
  position:fixed; inset:0; z-index:200;
  background:rgba(8,51,58,.55); backdrop-filter:blur(6px);
  display:flex; align-items:center; justify-content:center;
  padding:32px; opacity:0; pointer-events:none; transition:opacity .35s;
}
.modal-mask.show{ opacity:1; pointer-events:auto; }
.modal{
  background:#fff; max-width:860px; width:100%; max-height:86vh;
  overflow-y:auto; padding:64px 64px 56px; position:relative;
  transform:translateY(24px); transition:transform .35s;
}
.modal-mask.show .modal{ transform:translateY(0); }
.modal-close{
  position:absolute; top:22px; right:26px; background:none; border:none;
  font-size:26px; color:var(--text-light); cursor:pointer; line-height:1;
}
.modal-close:hover{ color:var(--ink); }
.modal .case-tag{ font-size:11.5px; letter-spacing:.26em; color:var(--tiffany-deep); text-transform:uppercase; margin-bottom:16px; }
.modal h3{
  font-size:24px; color:var(--ink-dark); font-weight:600;
  line-height:1.7; margin-bottom:32px; padding-right:40px;
}
.modal h4{
  font-size:15px; letter-spacing:.18em; color:var(--tiffany-deep);
  margin:32px 0 12px; font-weight:600;
}
.modal p{ font-size:15px; color:var(--text); }
.modal ul{ margin:8px 0 0 1.2em; list-style:disc; }
.modal li{ font-size:15px; color:var(--text); margin-bottom:8px; }
.modal .modal-cta{ margin-top:44px; padding-top:32px; border-top:1px solid var(--line); }

/* ---------- Partner (主任律师) ---------- */
.partner-wrap{
  display:grid; grid-template-columns:380px 1fr; gap:80px; align-items:center;
}
.partner-photo{ overflow:hidden; max-width:180px; margin:0 auto; }
.partner-photo img{
  width:100%; transition:transform .8s ease;
}
.partner-photo:hover img{ transform:scale(1.05); }
.partner-info .partner-name{
  font-size:30px; color:var(--ink-dark); letter-spacing:.1em; font-weight:600;
}
.partner-info .partner-role{
  font-size:13px; letter-spacing:.24em; color:var(--tiffany-deep);
  margin:10px 0 28px; text-transform:uppercase;
}
.partner-info p{ font-size:15.5px; color:var(--text); }
.honor-list{ margin-top:28px; }
.honor-list li{
  padding:16px 0; border-top:1px solid var(--line);
  font-size:15px; color:var(--ink); display:flex; gap:18px; align-items:baseline;
}
.honor-list li:last-child{ border-bottom:1px solid var(--line); }
.honor-list .year{ color:var(--tiffany-deep); font-style:italic; min-width:56px; }

/* ---------- Clients wall ---------- */
.clients-wall{
  display:grid; grid-template-columns:repeat(4,1fr); gap:1px;
  background:var(--line); border:1px solid var(--line);
}
.clients-wall .client{
  background:#fff; padding:36px 16px; text-align:center;
  font-size:16.5px; letter-spacing:.08em; color:#9aa5a7;
  filter:grayscale(1); transition:.4s;
}
.clients-wall .client:hover{ color:var(--ink); filter:none; background:var(--off-white); }
.trust-note{
  margin-top:40px; display:flex; gap:20px; align-items:center; justify-content:center;
  flex-wrap:wrap; text-align:center;
}
.trust-badge{
  border:1px solid var(--tiffany); padding:18px 34px;
  font-size:14px; letter-spacing:.1em; color:var(--ink);
  background:rgba(255,255,255,.7);
}
.trust-badge b{ color:var(--tiffany-deep); font-weight:600; }

/* ---------- Career ---------- */
.job-card{
  background:#fff; border:1px solid var(--line); padding:56px 60px;
  margin-bottom:36px;
}
.job-card h3{ font-size:22px; color:var(--ink-dark); font-weight:600; letter-spacing:.04em; }
.job-meta{
  display:flex; gap:32px; flex-wrap:wrap; margin:18px 0 28px;
  font-size:13.5px; color:var(--tiffany-deep); letter-spacing:.08em;
}
.job-card h4{
  font-size:14px; letter-spacing:.2em; color:var(--ink);
  margin:24px 0 10px; font-weight:600;
}
.job-card ol{ margin-left:1.4em; }
.job-card li{ font-size:15px; color:var(--text); margin-bottom:6px; }
.job-apply{ margin-top:32px; }

/* ---------- Contact ---------- */
.contact-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:80px; }
.contact-info-grid{
  display:grid; grid-template-columns:1fr 200px; gap:48px; align-items:start;
}
.wechat-box{ text-align:center; }
.wechat-box img{
  width:100%; max-width:200px; border:1px solid var(--line); padding:10px; background:#fff;
}
.wechat-box p{
  margin-top:16px; font-size:13.5px; color:var(--ink-dark);
  letter-spacing:.08em; line-height:1.9; font-weight:600;
}
.wechat-box p span{ font-size:12px; color:var(--text-light); font-weight:400; letter-spacing:.04em; }
.form-group{ margin-bottom:28px; }
.form-group label{
  display:block; font-size:13px; letter-spacing:.16em;
  color:var(--ink); margin-bottom:10px;
}
.form-group label i{ color:var(--tiffany-deep); font-style:normal; }
.form-group input, .form-group textarea{
  width:100%; border:1px solid var(--line); background:#fff;
  padding:15px 18px; font-family:var(--serif); font-size:15px; color:var(--text);
  transition:border-color .3s;
}
.form-group input:focus, .form-group textarea:focus{
  outline:none; border-color:var(--tiffany-deep);
}
.form-group textarea{ min-height:150px; resize:vertical; }
.form-error{ font-size:12.5px; color:#c0504d; margin-top:6px; display:none; }
.form-success{
  display:none; margin-top:24px; padding:20px 26px;
  background:var(--tiffany-soft); color:var(--ink);
  font-size:14.5px; letter-spacing:.05em; border-left:3px solid var(--tiffany-deep);
}
.contact-info .info-item{ padding:26px 0; border-top:1px solid var(--line); }
.contact-info .info-item:first-child{ border-top:none; padding-top:0; }
.contact-info .info-label{
  font-size:11.5px; letter-spacing:.28em; text-transform:uppercase;
  color:var(--tiffany-deep); margin-bottom:10px;
}
.contact-info .info-value{ font-size:17px; color:var(--ink-dark); line-height:1.9; }
.contact-info a.info-value:hover{ color:var(--tiffany-deep); }

.map-box{
  margin-top:80px; position:relative;
  border:1px solid var(--line); overflow:hidden;
}
.map-box .map-cover{
  height:420px; background-size:cover; background-position:center;
  filter:saturate(.85);
}
.map-box .map-pin{
  position:absolute; left:50%; top:44%; transform:translate(-50%,-100%);
  background:var(--ink); color:#fff; padding:12px 22px;
  font-size:13.5px; letter-spacing:.06em; white-space:nowrap;
}
.map-box .map-pin::after{
  content:""; position:absolute; left:50%; bottom:-8px; transform:translateX(-50%);
  border:8px solid transparent; border-top-color:var(--ink); border-bottom:none;
}
.map-box .map-bar{
  display:flex; justify-content:space-between; align-items:center;
  padding:22px 32px; background:#fff; gap:20px; flex-wrap:wrap;
}
.map-box .map-bar p{ font-size:14.5px; color:var(--text-light); }

.map-dual{
  margin-top:80px;
  display:grid; grid-template-columns:1fr 1fr; gap:28px;
}
.map-dual .map-box{ margin-top:0; }
.map-dual .map-box .map-cover{ height:360px; }
.map-dual .map-box .map-pin{ font-size:12.5px; padding:10px 16px; }
.map-bar-box{ margin-top:0; border-top:none; }
@media (max-width:900px){
  .map-dual{ grid-template-columns:1fr; }
  .map-dual .map-box .map-cover{ height:300px; }
}

/* ---------- Banner (内页头图) ---------- */
.page-banner{
  position:relative; min-height:52vh; display:flex; align-items:flex-end;
  overflow:hidden;
}
.page-banner .banner-bg{
  position:absolute; inset:0; background-size:cover; background-position:center;
  animation:heroFade 1.4s ease both;
}
.page-banner::before{
  content:""; position:absolute; inset:0; z-index:1;
  background:linear-gradient(100deg, rgba(255,255,255,.95) 0%, rgba(255,255,255,.86) 34%, rgba(255,255,255,.38) 62%, rgba(233,248,247,.22) 100%);
}
.page-banner .banner-content{
  position:relative; z-index:2; max-width:1280px; margin:0 auto;
  padding:0 40px 72px; width:100%;
}
.page-banner h1{
  font-size:clamp(32px,4vw,50px); color:var(--ink-dark);
  letter-spacing:.08em; font-weight:600;
}
.page-banner .banner-en{
  font-size:14px; letter-spacing:.32em; text-transform:uppercase; font-weight:700;
  color:var(--tiffany-deep); margin-bottom:16px;
}
.page-banner .banner-sub{ margin-top:16px; font-size:16.5px; color:var(--text); max-width:640px; }

/* ---------- CTA strip ---------- */
.cta-strip{
  background:var(--grad-banner); padding:100px 40px; text-align:center;
}
.cta-strip h2{
  font-size:clamp(24px,2.8vw,34px); color:var(--ink-dark);
  letter-spacing:.1em; font-weight:600; margin-bottom:18px;
}
.cta-strip p{ color:var(--text); margin-bottom:40px; letter-spacing:.06em; }

/* ---------- 英文首屏（Kojima 风格） ---------- */
.en-hero{
  min-height:76vh; display:flex; align-items:center;
  position:relative; overflow:hidden;
  background:linear-gradient(135deg,#ffffff 0%,#f4fbfa 55%,#e6f6f4 100%);
}
.en-hero::before{
  content:""; position:absolute; top:0; right:0; bottom:0; width:62%;
  background:url('../img/lujiazui_skyline.jpg') left bottom / cover no-repeat;
  opacity:.15; pointer-events:none;
  -webkit-mask-image:linear-gradient(to left, rgba(0,0,0,1) 30%, rgba(0,0,0,0) 96%);
          mask-image:linear-gradient(to left, rgba(0,0,0,1) 30%, rgba(0,0,0,0) 96%);
}
.en-hero .en-hero-inner{ position:relative; z-index:1; }
.en-hero .en-hero-inner{
  max-width:1280px; margin:0 auto; padding:150px 40px 90px; width:100%;
}
.en-hero .en-eyebrow{
  font-size:12.5px; letter-spacing:.34em; text-transform:uppercase;
  color:var(--tiffany-deep); margin-bottom:30px; font-weight:600;
}
.en-hero h1{
  font-family:"Times New Roman",serif; font-weight:700;
  font-size:clamp(38px,5.4vw,74px); color:var(--ink-dark);
  letter-spacing:.01em; line-height:1.16; max-width:920px;
}
.en-hero .en-sub{
  margin-top:40px; font-family:"Times New Roman",serif;
  font-size:clamp(16px,1.5vw,20px); font-weight:600;
  color:var(--text); max-width:660px; line-height:2; letter-spacing:.02em;
}
.en-hero .en-sub-cn{
  margin-top:44px; font-size:clamp(15px,1.4vw,18px);
  color:var(--text); max-width:620px; line-height:2.1;
  letter-spacing:.06em;
}

/* ---------- 法律文档页（隐私政策/法律声明） ---------- */
.legal-doc{ max-width:880px; margin:0 auto; }
.legal-doc h2{
  font-size:20px; color:var(--ink-dark); font-weight:600;
  letter-spacing:.06em; margin:52px 0 22px;
}
.legal-doc p{
  font-size:15.5px; line-height:2.2; color:var(--text);
  margin-bottom:22px; text-align:justify; letter-spacing:.02em;
}
.footer-bottom a{
  color:inherit; text-decoration:none;
}

/* ---------- 新闻页 ---------- */
.news-list{ border-top:1px solid var(--line); }
.news-item{
  display:flex; align-items:baseline; gap:36px;
  padding:28px 8px; border-bottom:1px solid var(--line);
  transition:background .3s, padding-left .3s;
}
.news-item:hover{ background:#f6fbfa; padding-left:18px; }
.news-item-date{
  font-family:"Times New Roman",serif; font-size:14px;
  color:var(--tiffany-deep); letter-spacing:.08em; flex-shrink:0; font-weight:600;
}
.news-item-title{
  font-size:16.5px; color:var(--ink-dark); letter-spacing:.04em;
  line-height:1.7; flex:1;
}
.news-item-arrow{ color:var(--tiffany-deep); font-size:16px; flex-shrink:0; }
.news-more-note{
  margin-top:28px; font-size:13.5px; color:var(--text-light); letter-spacing:.1em;
}
.news-article{ max-width:880px; margin:0 auto; }
.news-date{ font-size:14px; color:var(--tiffany-deep); letter-spacing:.14em; margin-bottom:22px; font-weight:600; }
.news-title{
  font-size:clamp(26px,3.2vw,38px); color:var(--ink-dark);
  font-weight:700; line-height:1.55; margin-bottom:48px; letter-spacing:.04em;
}
.news-body p{
  font-size:16.5px; line-height:2.3; color:var(--text);
  margin-bottom:30px; text-align:justify; letter-spacing:.03em;
}
.news-img{
  margin:52px 0; border:1px solid var(--line); background:#fff; padding:44px 48px;
}
.news-img img{ width:100%; display:block; }
.news-img figcaption{
  margin-top:22px; font-size:13px; color:var(--text-light);
  letter-spacing:.06em; text-align:center;
}

/* ---------- Footer ---------- */
.site-footer{
  background:var(--ink-dark); color:rgba(255,255,255,.78);
  padding:110px 40px 44px;
}
.footer-main{
  max-width:1100px; margin:0 auto;
  display:flex; gap:80px; align-items:flex-start;
}
.footer-contact{ flex:1; }
.footer-qr{ flex-shrink:0; text-align:center; }
.footer-qr img{
  width:104px; height:104px; display:block; margin:0 auto;
  border-radius:4px;
}
.footer-qr p{
  margin:12px auto 0; font-size:12px; line-height:1.8; text-align:center;
  color:rgba(255,255,255,.72); letter-spacing:.08em;
}
.footer-logo{
  height:60px; filter:brightness(0) invert(1); opacity:.96;
  flex-shrink:0; margin-top:2px;
}
.footer-contact h4{
  font-size:17px; color:#fff; font-weight:600;
  letter-spacing:.16em; margin-bottom:22px;
}
.footer-contact p{ font-size:13.5px; line-height:1.9; margin-bottom:4px; letter-spacing:.04em; color:#fff; }
.footer-contact p.footer-en{
  font-family:"Times New Roman",serif; font-size:12.5px;
  line-height:1.8; margin-bottom:16px; letter-spacing:.03em;
}
.footer-contact a{
  color:#fff; border-bottom:1px solid rgba(255,255,255,.4);
  padding-bottom:1px; transition:border-color .3s;
}
.footer-contact a:hover{ border-color:#fff; }
.footer-bottom{
  max-width:1100px; margin:64px auto 0; padding-top:24px;
  border-top:1px solid rgba(255,255,255,.16);
  font-size:12px; letter-spacing:.08em; color:rgba(255,255,255,.55);
}

/* ---------- Animations ---------- */
.fade-up{ opacity:0; transform:translateY(36px); transition:opacity .9s ease, transform .9s ease; }
.fade-up.visible{ opacity:1; transform:none; }

/* ---------- Responsive ---------- */
@media (max-width:1024px){
  .area-grid{ grid-template-columns:repeat(2,1fr); }
  .case-grid{ grid-template-columns:repeat(2,1fr); }
  .case-row{ grid-template-columns:64px 1fr; }
  .partner-wrap{ grid-template-columns:300px 1fr; gap:48px; }
  .contact-grid{ grid-template-columns:1fr; gap:64px; }
  .contact-info-grid{ grid-template-columns:1fr; gap:40px; }
  .wechat-box{ text-align:left; }
  .wechat-box img{ max-width:180px; }
  .footer-main{ gap:56px; }
  .clients-wall{ grid-template-columns:repeat(3,1fr); }
}
@media (max-width:1024px){
  #intro-grid{ grid-template-columns:1fr !important; gap:48px !important; }
}
@media (max-width:768px){
  .header-inner{ padding:0 24px; height:68px; }
  .brand img{ height:44px; }
  .nav-toggle{ display:block; }
  .main-nav{
    position:fixed; top:68px; left:0; right:0;
    background:#fff; flex-direction:column; align-items:flex-start;
    gap:0; padding:12px 24px 28px; border-bottom:1px solid var(--line);
    transform:translateY(-130%); transition:transform .4s ease;
    box-shadow:0 24px 40px rgba(14,74,82,.08);
  }
  .main-nav.open{ transform:translateY(0); }
  .main-nav a{ width:100%; padding:16px 0; border-bottom:1px solid var(--line); }
  .main-nav a:last-of-type{ border-bottom:none; }
  .lang-switch{ border-left:none; padding-left:0; margin:14px 0 0; }
  .section{ padding:80px 24px; }
  .hero-content{ padding:0 24px 72px; }
  .hero-eyebrow{ font-size:11px; letter-spacing:.2em; }
  .page-banner .banner-en{ letter-spacing:.24em; }
  .area-grid, .case-grid{ grid-template-columns:1fr; }
  .case-row{ grid-template-columns:1fr; padding:40px 32px; gap:20px; }
  .partner-wrap{ grid-template-columns:1fr; gap:40px; }
  .partner-photo{ max-width:170px; }
  .job-card{ padding:40px 28px; }
  .modal{ padding:44px 28px; }
  .footer-main{ flex-direction:column; gap:44px; }
  .footer-logo{ height:52px; }
  .en-hero .en-hero-inner{ padding:120px 24px 64px; }
  .news-img{ padding:28px 24px; }
  .clients-wall{ grid-template-columns:repeat(2,1fr); }
  .cta-strip{ padding:72px 24px; }
}
