/* BAIPHARM 瑞欧佰药 — shared design tokens + common components
   Used by all three homepage directions and the comparison gallery. */

@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700;900&family=Sora:wght@400;500;600;700;800&display=swap');

:root{
  /* Brand — Bai Teal (primary) */
  --teal-50:#E6F6F2;
  --teal-100:#CDEEE6;
  --teal-200:#A6E0D3;
  --teal-300:#7FD0BE;
  --teal-400:#19B49B;
  --teal-500:#009C84;   /* PRIMARY */
  --teal-600:#008471;
  --teal-700:#006B5C;
  --teal-800:#0A4A40;
  /* Accent — Pharm Gold (use sparingly, <=10%) */
  --gold-50:#FCF3E1;
  --gold-300:#F7CB7E;
  --gold-400:#F2B44C;   /* ACCENT */
  --gold-600:#C8851F;
  /* Ink + neutrals */
  --ink-900:#14201C;
  --ink-800:#1E2D28;
  --ink-700:#2C3D37;
  --ink-600:#3E514A;
  --ink-500:#566962;
  --ink-400:#7E8F88;
  --ink-300:#A9B6B0;
  --ft-bg:#243530;
  --line:#E4EAE8;
  --line-2:#EFF3F1;
  --paper:#FFFFFF;
  --paper-2:#F6FAF8;
  --paper-3:#EEF4F1;

  --maxw:1240px;
  --r-sm:8px; --r-md:14px; --r-lg:22px; --r-xl:30px;
  --sh-sm:0 1px 2px rgba(20,32,28,.06), 0 2px 8px rgba(20,32,28,.05);
  --sh-md:0 4px 14px rgba(20,32,28,.07), 0 14px 40px rgba(20,32,28,.07);
  --sh-lg:0 10px 30px rgba(10,74,64,.10), 0 30px 70px rgba(10,74,64,.12);
  --ease:cubic-bezier(.2,.7,.3,1);

  /* Typography — aligned with PDE database */
  --fs-display:48px;
  --fs-h2:32px;
  --fs-h3:20px;
  --fs-body:16px;
  --fs-sm:14px;
  --fs-xs:12px;
  --lh-tight:1.2;
  --lh-normal:1.7;
  --lh-relaxed:1.85;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:"Noto Sans SC",-apple-system,system-ui,sans-serif;
  font-size:var(--fs-body);
  color:var(--ink-900);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  line-height:var(--lh-normal);
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer}
::selection{background:var(--teal-200);color:var(--ink-900)}

.num{font-family:"Sora",sans-serif;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.en{font-family:"Sora",sans-serif;letter-spacing:.01em}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 40px}
.eyebrow{font-family:"Sora",sans-serif;font-size:var(--fs-xs);font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--teal-600)}

/* ---- shared buttons ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;height:48px;border:none;border-radius:999px;
  font-size:var(--fs-body);font-weight:500;padding:0 24px;transition:all .25s var(--ease);white-space:nowrap}
/* teal-600 (#008471) yields ≥4.7:1 with white text — WCAG AA pass for normal text.
   teal-500 reserved for icons / borders / focus rings where non-text 3:1 rule applies. */
.btn-primary{background:var(--teal-600);color:#fff;box-shadow:none}
.btn-primary:hover{background:var(--teal-700);transform:translateY(-2px);box-shadow:none}
.btn-ghost{background:transparent;color:var(--ink-900);border:1px solid var(--line)}
.btn-ghost:hover{border-color:var(--teal-500);color:var(--teal-700);background:var(--teal-50)}
.btn-gold{background:var(--gold-400);color:var(--ink-900)}
.btn-gold:hover{background:var(--gold-300);transform:translateY(-2px)}
.btn-light{background:var(--paper);color:var(--teal-700)}
.btn-light:hover{background:var(--teal-50);transform:translateY(-2px);box-shadow:0 8px 22px rgba(0,0,0,.12)}
.btn .ar{transition:transform .25s var(--ease)}
.btn:hover .ar{transform:translateX(4px)}

/* ---- shared form (contact) — identical across directions ---- */
.cta-form{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.cta-form .full{grid-column:1 / -1}
.field{display:flex;flex-direction:column;gap:7px}
.field label{font-size:var(--fs-xs);font-weight:500;color:var(--ink-500)}
.field label .req{color:var(--gold-600)}
.field input,.field select,.field textarea{
  font-family:inherit;font-size:var(--fs-body);color:var(--ink-900);
  background:var(--paper);border:1px solid var(--line);border-radius:10px;
  padding:11px 15px;transition:border-color .2s,box-shadow .2s;width:100%}
.field textarea{resize:vertical;min-height:104px}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--teal-500);box-shadow:0 0 0 3px rgba(0,156,132,.14)}
.field.err input,.field.err select,.field.err textarea{border-color:#d9534f;box-shadow:0 0 0 3px rgba(217,83,79,.12)}
.field .msg{font-size:var(--fs-xs);color:#d9534f;min-height:0;display:none}
.field.err .msg{display:block}
.cta-form .btn[disabled]{cursor:not-allowed;opacity:.72;transform:none;box-shadow:none}
.form-ok{display:flex;align-items:center;gap:12px;background:var(--teal-50);color:var(--teal-700);
  border:1px solid var(--teal-100);border-radius:12px;padding:16px 18px;font-weight:500}
.form-error{margin-top:14px;background:#fff5f5;color:#b42318;
  border:1px solid rgba(217,83,79,.28);border-radius:12px;padding:14px 16px;font-weight:500}

/* reveal-on-scroll */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}

/* striped placeholder (imagery stand-ins) */
.ph{position:relative;background:
   repeating-linear-gradient(135deg, var(--paper-3) 0 11px, var(--paper-2) 11px 22px);
   border:1px solid var(--line);border-radius:var(--r-md);
   display:flex;align-items:center;justify-content:center;overflow:hidden}
.ph span{font-family:"Sora",monospace;font-size:var(--fs-xs);letter-spacing:.12em;color:var(--ink-400);
   text-transform:uppercase;background:rgba(255,255,255,.7);padding:4px 9px;border-radius:6px}

/* logo wall cell */
.logo-cell{display:flex;align-items:center;justify-content:center;height:84px;
  border-radius:12px;background:var(--paper);color:var(--ink-300);transition:all .25s var(--ease);
  font-family:"Sora";font-size:var(--fs-xs);letter-spacing:.04em}
.logo-cell:hover{box-shadow:var(--sh-sm)}

/* ===== Promo Banner carousel (shared) — focal 运营位 ===== */
.promo{padding:40px 0 8px}
.banner{position:relative;border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--sh-md);background:var(--ink-900)}
.banner-track{display:flex;transition:transform .6s var(--ease);will-change:transform}
.banner-slide{flex:0 0 100%;min-width:100%;position:relative;display:grid;grid-template-columns:1.12fr .88fr;
  min-height:clamp(280px,30vw,360px)}
.banner-slide .bn-l{position:relative;z-index:2;padding:clamp(30px,4vw,56px) clamp(28px,4vw,60px);
  display:flex;flex-direction:column;justify-content:center}
.banner-slide .bn-r{position:relative;overflow:hidden}
.banner-slide .bn-tag{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;font-family:"Sora";
  font-size:var(--fs-xs);font-weight:600;letter-spacing:.04em;padding:7px 14px;border-radius:999px}
.banner-slide .bn-tag i{width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}
.banner-slide h3{font-size:var(--fs-h2);font-weight:800;letter-spacing:-.02em;line-height:var(--lh-tight);margin:18px 0 0}
.banner-slide .bn-d{font-size:var(--fs-body);line-height:var(--lh-relaxed);margin:14px 0 0;max-width:480px}
.banner-slide .bn-meta{display:flex;gap:18px;margin:16px 0 0;flex-wrap:wrap;font-family:"Sora";font-size:var(--fs-sm)}
.banner-slide .bn-meta .mi{display:inline-flex;align-items:center;gap:7px}
.banner-slide .bn-cta{margin-top:auto;padding-top:26px}
.banner-slide .bn-cta .btn{align-self:flex-start}
/* slide themes */
.bs-pde{background:linear-gradient(120deg,var(--teal-800),#063f37)}
.bs-pde::after,.bs-svc::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(60% 80% at 100% 0%,rgba(0,156,132,.4),transparent 60%),radial-gradient(50% 70% at 80% 100%,rgba(242,180,76,.14),transparent 60%)}
.bs-pde .bn-tag{background:rgba(242,180,76,.16);color:var(--gold-300);border:1px solid rgba(242,180,76,.32)}
.bs-pde h3,.bs-svc h3{color:#fff}
.bs-pde .bn-d,.bs-svc .bn-d{color:rgba(255,255,255,.78)}
.bs-event{background:linear-gradient(120deg,#FCF6EA,#F6EAD2)}
.bs-event .bn-tag{background:var(--paper);color:var(--gold-600);border:1px solid var(--gold-300)}
.bs-event h3{color:var(--ink-900)}
.bs-event .bn-d{color:var(--ink-600,var(--ink-700))}
.bs-event .bn-meta{color:var(--ink-700)}
.bs-event .bn-meta svg{color:var(--gold-600)}
.bs-svc{background:linear-gradient(120deg,var(--teal-600),var(--teal-800))}
.bs-svc .bn-tag{background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.28)}
/* right-side abstract visuals */
.bn-viz{position:absolute;inset:0;z-index:1}
.bn-viz.grid{background-image:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px);background-size:34px 34px;
  -webkit-mask-image:radial-gradient(80% 80% at 70% 40%,#000,transparent);mask-image:radial-gradient(80% 80% at 70% 40%,#000,transparent)}
.bn-card{position:absolute;z-index:2;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);
  border-radius:14px;backdrop-filter:blur(8px);padding:14px 16px;box-shadow:0 20px 40px rgba(0,0,0,.28)}
.bn-card .bc-row{display:flex;justify-content:space-between;gap:14px;font-family:"Sora";font-size:var(--fs-xs);padding:7px 0;border-top:1px solid rgba(255,255,255,.08)}
.bn-card .bc-row:first-child{border-top:none}
.bn-card .bc-row .k{color:rgba(255,255,255,.7)}
.bn-card .bc-row .v{color:var(--gold-300)}
.bn-date{position:absolute;z-index:2;background:var(--paper);border-radius:16px;box-shadow:0 20px 44px rgba(180,130,30,.22);
  text-align:center;overflow:hidden;width:148px}
.bn-date .bd-top{background:var(--gold-400);color:var(--ink-900);font-family:"Sora";font-weight:700;font-size:var(--fs-xs);letter-spacing:.1em;padding:7px 0}
.bn-date .bd-day{font-family:"Sora";font-weight:800;font-size:var(--fs-display);color:var(--ink-900);line-height:1.1;padding:14px 0 2px}
.bn-date .bd-mo{font-size:var(--fs-sm);color:var(--ink-500);padding-bottom:14px}
/* controls */
.banner-arr{position:absolute;top:50%;transform:translateY(-50%);z-index:6;width:44px;height:44px;border-radius:50%;
  background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.3);backdrop-filter:blur(8px);color:#fff;
  display:flex;align-items:center;justify-content:center;transition:opacity .2s var(--ease)}
.banner-arr:hover{background:rgba(255,255,255,.3)}
.banner-arr.prev{left:18px}.banner-arr.next{right:18px}
.banner.theme-light .banner-arr{color:var(--ink-900) !important;background:rgba(20,32,28,.07) !important;border-color:rgba(20,32,28,.16) !important}
.banner.theme-light .banner-arr:hover{background:rgba(20,32,28,.14) !important}
.banner-dots{position:absolute;bottom:18px;left:clamp(28px,4vw,60px);z-index:6;display:flex;gap:9px}
.banner-dots button{width:9px;height:9px;border-radius:999px;border:none;background:rgba(255,255,255,.4);transition:width .25s var(--ease);padding:0}
.banner-dots button.on{width:26px;background:var(--paper)}
.banner.theme-light .banner-dots button{background:rgba(20,32,28,.25) !important}
.banner.theme-light .banner-dots button.on{background:var(--ink-900) !important}
@media (max-width:760px){
  :root{--fs-display:32px}
  .banner-slide{grid-template-columns:1fr}
  .banner-slide .bn-r{display:none}
  .banner-dots{left:50%;transform:translateX(-50%)}
  .banner-arr{display:none}
}

/* ===== Hero-integrated rotating spotlight (fused with slogan) ===== */
.hero-spot{position:relative;max-width:720px;margin:36px auto 0;border-radius:16px;background:var(--paper);
  border:1px solid var(--line);box-shadow:var(--sh-sm);overflow:hidden;text-align:left}
.hero-spot .banner-track{display:flex;transition:transform .6s var(--ease);will-change:transform}
.hs-slide{flex:0 0 100%;min-width:100%;display:flex;align-items:center;gap:15px;padding:14px 16px;color:var(--ink-900)}
.hs-slide:hover{background:var(--paper-2)}
.hs-ic{flex:0 0 46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff}
.hs-ic.pde{background:linear-gradient(135deg,var(--teal-500),var(--teal-700))}
.hs-ic.event{background:linear-gradient(135deg,var(--gold-400),var(--gold-600))}
.hs-ic.svc{background:linear-gradient(135deg,var(--teal-600),var(--teal-800))}
.hs-body{flex:1;min-width:0;text-align:left}
.hs-tag{display:block;font-family:"Sora";font-size:var(--fs-xs);font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--teal-600)}
.hs-title{display:block;font-size:var(--fs-body);font-weight:600;line-height:1.4;margin-top:3px;color:var(--ink-900);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hs-title b{color:var(--teal-700)}
.hs-go{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;font-family:"Sora";font-size:var(--fs-sm);font-weight:600;
  color:var(--teal-700);background:var(--teal-50);border:1px solid var(--teal-100);border-radius:999px;padding:9px 15px;transition:background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease)}
.hs-slide:hover .hs-go{background:var(--teal-500);border-color:var(--teal-500);color:#fff}
.hs-go svg{transition:transform .25s var(--ease)}
.hs-slide:hover .hs-go svg{transform:translateX(3px)}
.hs-dots{display:flex;gap:7px;justify-content:center;padding:0 0 11px}
.hs-dots button{width:7px;height:7px;border-radius:999px;border:none;background:rgba(20,32,28,.18);padding:0;transition:width .25s var(--ease)}
.hs-dots button.on{width:22px;background:var(--teal-500)}
@media (max-width:620px){
  .hs-title{white-space:normal}
  .hs-go{display:none}
  .hs-slide{padding:13px 14px;gap:12px}
}
