/* 镜头特效：背景选择、录像、现场调参。悬停只用阴影 + 极轻底色。 */
.camfx-canvas{z-index:0}
.camfx-bg{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:8px}
.camfx-bg[aria-busy="true"]{opacity:.6;cursor:progress}
.camfx-bg button{min-width:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding:4px 0 5px;border:0;border-radius:8px;background:transparent;color:var(--fg-soft);font:500 var(--fs-xs)/1.1 var(--cjk);cursor:pointer;transition:background .18s,color .18s,box-shadow .18s}
.camfx-bg button span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.camfx-bg i{display:block;width:34px;height:24px;border-radius:5px;overflow:hidden;background:linear-gradient(135deg,#8a7a68,#3d342b);box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.camfx-bg [data-bg="blur"] i{background:radial-gradient(circle at 45% 40%,#c9b79d,#6b5d4e 70%);filter:blur(1.5px)}
.camfx-bg img{width:100%;height:100%;object-fit:cover;display:block}
.camfx-bg button:hover{background:color-mix(in srgb,var(--fg) 5%,transparent);color:var(--fg)}
.camfx-bg button:active{background:color-mix(in srgb,var(--fg) 9%,transparent)}
.camfx-bg button[aria-checked="true"]{color:var(--fg);background:color-mix(in srgb,var(--fg) 7%,transparent)}
.camfx-bg button[aria-checked="true"] i{box-shadow:0 0 0 2px var(--card),0 0 0 3.5px color-mix(in srgb,var(--fg) 45%,transparent)}
.camfx-bg button:focus-visible{outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--fg) 30%,transparent)}
.gesture-actions:has(.camfx-rec){flex-wrap:wrap}
.gesture-actions:has(.camfx-rec) .gesture-finish{flex:1 1 100%}
.gesture-actions:has(.camfx-rec) button:not(.gesture-finish){flex:1 1 0;padding-inline:6px}
.camfx-rec{display:inline-flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums}
.camfx-rec i{width:8px;height:8px;border-radius:50%;background:#c4402f;flex:none}
.camfx-rec[data-on="1"]{color:#c4402f}
.camfx-rec[data-on="1"] i{animation:camfxPulse 1s ease-in-out infinite}
@keyframes camfxPulse{50%{opacity:.25}}
.camfx-save{display:flex;align-items:center;justify-content:center;min-height:40px;margin-bottom:6px;border-radius:8px;background:color-mix(in srgb,#c4402f 10%,transparent);color:var(--fg);font:600 12px var(--cjk);text-decoration:none;transition:box-shadow .18s}
.camfx-save:hover{box-shadow:0 6px 16px rgba(44,32,14,.22)}
.camfx-save:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--fg) 30%,transparent)}
.camfx-save[hidden]{display:none}
/* 现场调参（?tune=1） */
.camfx-tune{position:fixed;z-index:96;left:14px;top:70px;width:240px;max-height:calc(100vh - 90px);overflow:auto;padding:10px 12px;border-radius:12px;background:rgba(24,19,14,.86);color:#f3ead9;font:var(--fs-xs)/1.4 var(--sans);box-shadow:0 12px 28px rgba(0,0,0,.3)}
.camfx-tune>b{display:block;margin-bottom:6px;font:600 12px var(--cjk)}
.camfx-tune dl{display:grid;grid-template-columns:auto 1fr;gap:2px 8px;margin:0 0 8px;font-variant-numeric:tabular-nums}
.camfx-tune dt{color:#bfae95}.camfx-tune dd{margin:0;text-align:right}
.camfx-tune label{display:block;margin:4px 0}
.camfx-tune label span{display:flex;justify-content:space-between}
.camfx-tune input{width:100%}
.camfx-tune div{display:flex;gap:6px;margin-top:8px}
.camfx-tune button{flex:1;min-height:32px;border:0;border-radius:7px;background:rgba(255,255,255,.12);color:inherit;font:500 var(--fs-xs) var(--cjk);cursor:pointer}
.camfx-tune button:hover{background:rgba(255,255,255,.2)}
