
/* ===== 全局背景预设(挂在 body[data-bg];固定视口基调层,z-index:-1)===== */
body[data-bg]::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none}
body[data-bg="noise"]::before{background:var(--color-surface,#fff);opacity:1;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E")}
body[data-bg="aurora"]::before{background-color:var(--color-surface,#fff);filter:blur(48px);
  background-image:
    radial-gradient(38rem 28rem at 12% 8%, color-mix(in srgb, var(--color-primary,#4f7) 42%, transparent), transparent 62%),
    radial-gradient(34rem 26rem at 88% 22%, color-mix(in srgb, var(--color-accent, var(--color-primary,#4af)) 40%, transparent), transparent 62%),
    radial-gradient(44rem 34rem at 55% 104%, color-mix(in srgb, var(--color-secondary, var(--color-primary,#a5f)) 34%, transparent), transparent 62%)}
body[data-bg="dot-grid"]::before{background:var(--color-surface,#fff);
  background-image:radial-gradient(color-mix(in srgb, var(--color-primary,#345) 22%, transparent) 1.4px, transparent 1.5px);
  background-size:22px 22px;background-position:-11px -11px}

/* ===== section 级效果旋钮(挂在 .secfx 包裹;可叠加。off=无包裹)===== */
.secfx{position:relative}
.secfx-glass :is(article,figure,.card,[class*="card"]){
  background:color-mix(in srgb, var(--color-surface,#fff) 60%, transparent)!important;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border:1px solid color-mix(in srgb, #fff 40%, transparent);
  box-shadow:0 1px 0 color-mix(in srgb,#fff 55%,transparent) inset, 0 12px 34px rgba(15,23,42,.14)}
.secfx-dark{background:var(--color-ink, #0d1526);color:var(--color-on-dark,#fff)}
.secfx-dark :is(h1,h2,h3,h4,p,li,span){color:inherit}
.secfx-dark::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(30rem 20rem at 82% -12%, color-mix(in srgb, var(--color-accent, var(--color-primary,#4af)) 42%, transparent), transparent 70%)}
.secfx-dark > *{position:relative;z-index:1}
.secfx-divider-slant{clip-path:polygon(0 0,100% 0,100% calc(100% - 3.5vw),0 100%)}
.secfx-divider-wave{overflow:hidden}
.secfx-divider-wave::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3.5vw;min-height:28px;
  background:var(--color-surface,#fff);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 120' preserveAspectRatio='none'%3E%3Cpath d='M0 60 C 300 120 900 0 1200 60 L1200 120 L0 120 Z'/%3E%3C/svg%3E") no-repeat bottom/100% 100%;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 120' preserveAspectRatio='none'%3E%3Cpath d='M0 60 C 300 120 900 0 1200 60 L1200 120 L0 120 Z'/%3E%3C/svg%3E") no-repeat bottom/100% 100%}
.secfx-watermark{overflow:hidden}
.secfx-watermark::before{content:attr(data-watermark);position:absolute;left:50%;top:50%;translate:-50% -50%;z-index:0;
  font-family:var(--font-heading, inherit);font-weight:900;font-size:clamp(5rem,20vw,18rem);line-height:.8;
  letter-spacing:-.04em;text-transform:uppercase;white-space:nowrap;pointer-events:none;color:transparent;
  -webkit-text-stroke:2px color-mix(in srgb, var(--color-primary,#8895a7) 16%, transparent);
  text-stroke:2px color-mix(in srgb, var(--color-primary,#8895a7) 16%, transparent)}
.secfx-watermark > *{position:relative;z-index:1}
.secfx-overlap :is(article,figure,.card,img):first-of-type{transform:translateY(-2.5rem);position:relative;z-index:2}

/* ===== 图片滤镜:duotone 品牌色滤镜(只作用于 content-media 图片,不改源文件)===== */
body[data-duotone="on"] img[src*="/content-media/"]{
  filter:grayscale(var(--fx-duo,.6)) contrast(calc(1 + var(--fx-duo,.6)*.15))
    sepia(calc(var(--fx-duo,.6)*.7)) hue-rotate(var(--fx-duo-hue,-18deg)) saturate(calc(1 + var(--fx-duo,.6)));
  transition:filter .25s ease}

@media(prefers-reduced-motion:reduce){
  body[data-duotone="on"] img[src*="/content-media/"]{transition:none}}
