/* Shared base for every published template. Layout lives in <TEMPLATE>.css. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:16px}
body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.65 "Noto Sans SC",system-ui,-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;text-rendering:optimizeLegibility}
img{max-width:100%;display:block;height:auto}
a{color:inherit;text-underline-offset:3px}
h1,h2,h3,p,li,a,figcaption,summary,blockquote,span{overflow-wrap:anywhere;word-break:normal}
:lang(zh-Hans) h1,:lang(zh-Hans) h2{word-break:normal;line-break:strict}
h1,h2,h3{margin:0;text-wrap:balance}
p{margin:0 0 1em}
ul,ol{margin:0;padding:0;list-style:none}
figure{margin:0}
blockquote{margin:0}
button{font:inherit}
:focus-visible{outline:3px solid var(--accent);outline-offset:4px}
.bc-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.bc-skip{position:absolute;left:12px;top:-60px;z-index:50;background:var(--fg);color:var(--bg);padding:10px 16px;text-decoration:none}
.bc-skip:focus{top:12px}
.bc-banner{position:sticky;top:0;z-index:40;background:#282326;color:#fff;font:600 13px/1.4 "Noto Sans SC",system-ui,sans-serif;padding:8px 16px;text-align:center}
.bc-logo{max-height:44px;width:auto;object-fit:contain}
details>summary{cursor:pointer;list-style:none}
details>summary::-webkit-details-marker{display:none}
details>summary::after{content:"+";float:right;margin-left:16px;font-weight:400;transition:transform .15s}
details[open]>summary::after{transform:rotate(45deg)}
.bc-k{display:block;font-size:12px;letter-spacing:.12em;text-transform:uppercase;opacity:.75}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
@media print{.bc-banner,.bc-skip{display:none}}

/* ---- Shared modern building blocks (all CSS-only, motion-safe) ---- */
/* Scroll reveal: elements fade/rise in as they enter the viewport. */
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    .bc-reveal{animation:bc-reveal linear both;animation-timeline:view();animation-range:entry 0% cover 28%}
    .bc-reveal-img img{animation:bc-zoom linear both;animation-timeline:view();animation-range:entry 0% cover 60%}
  }
}
@keyframes bc-reveal{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes bc-zoom{from{transform:scale(1.08)}to{transform:scale(1)}}
/* Marquee band: repeating text ticker. Static (wrapping) when motion is reduced. */
.bc-marquee{overflow:hidden;white-space:nowrap;display:flex;gap:0}
.bc-marquee>span{display:inline-flex;gap:2.5em;padding-right:2.5em;flex:none}
@media (prefers-reduced-motion: no-preference){.bc-marquee>span{animation:bc-marquee 32s linear infinite}.bc-marquee:hover>span{animation-play-state:paused}}
@media (prefers-reduced-motion: reduce){.bc-marquee{white-space:normal}.bc-marquee>span+span{display:none}}
@keyframes bc-marquee{to{transform:translateX(-100%)}}
/* Film grain overlay for warmth (decorative, pointer-transparent). */
.bc-grain{position:relative;isolation:isolate}
.bc-grain::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;opacity:.12;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.6'/%3E%3C/svg%3E")}
/* Mobile sticky contact bar (WhatsApp / call). Shown on small screens only. */
.bc-dock{display:none}
@media (max-width:760px){
  .bc-dock{display:flex;gap:8px;position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:30;padding:8px;border-radius:999px;background:var(--dock-bg,var(--fg));box-shadow:0 10px 30px rgba(0,0,0,.22)}
  .bc-dock a{flex:1;min-height:48px;display:flex;align-items:center;justify-content:center;gap:8px;border-radius:999px;text-decoration:none;font-weight:600;font-size:15px;color:var(--dock-fg,var(--bg))}
  .bc-dock a.bc-dock-main{background:var(--accent);color:var(--on-accent)}
  .bc-dock svg{width:20px;height:20px;flex:none}
  body.bc-has-dock{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
}
@media print{.bc-dock{display:none}}
