/* SHARED — neutral Host wallpaper projection mechanics only.
 * Named wallpapers belong to provider-owned resource packages.
 */
:root { --aipp-shell-wall-opacity:0; --aipp-shell-wall-image:none; }
.aipp-shell-bg { opacity:1 !important; overflow:hidden; }
.aipp-shell-bg-color { position:absolute; inset:0; z-index:0; pointer-events:none; background:var(--aipp-bg); }
.aipp-shell-bg-image { position:absolute; inset:0; z-index:1; pointer-events:none; opacity:var(--aipp-shell-wall-opacity,0); background-image:var(--aipp-shell-wall-image,none); background-size:cover; background-position:var(--aipp-shell-wall-position,center); background-repeat:no-repeat; transition:opacity .35s ease; }
.aipp-shell-bg-animation { position:absolute; inset:0; z-index:2; overflow:hidden; pointer-events:none; opacity:0; transition:opacity .35s ease; }
.aipp-shell-bg-animation>canvas { width:100%; height:100%; display:block; background:transparent; pointer-events:none; }
html[data-aipp-background="custom"] { --aipp-shell-wall-opacity:var(--aipp-shell-wall-custom-opacity,.42); }
html[data-aipp-fx-motion="off"] .aipp-shell-bg-image { transition:none; }
