/* ── Wallpaper text colour + previews (js/theme-engine.js applyWallpapers, js/apps/theme.js) ──
   data-wall-tone="light|dark" is set on a surface (#v-home, #lockscreen, a theme-app preview) by 文字颜色:
   浅色 / 深色, or 自动 from the picture as shown under that surface's text. No attribute = the theme's own ink. */
[data-wall-tone="light"]{--wall-ink:#FFFFFF;--wall-ink2:rgba(255,255,255,.88);--wall-shadow:0 1px 3px rgba(0,0,0,.42)}
[data-wall-tone="dark"]{--wall-ink:#1D232B;--wall-ink2:rgba(29,35,43,.8);--wall-shadow:0 1px 3px rgba(255,255,255,.45)}

#v-home[data-wall-tone] .phone-status,#v-home[data-wall-tone] .home-date,#v-home[data-wall-tone] .desk-item.desk-app .app-btn,#lockscreen[data-wall-tone] .lock-date,#lockscreen[data-wall-tone] .lock-empty,#lockscreen[data-wall-tone] .lock-unlock-btn{color:var(--wall-ink2);text-shadow:var(--wall-shadow)}
#v-home[data-wall-tone] .desk-dots i:not(.active){opacity:.45}
#v-home[data-wall-tone] .desk-dots i.active{opacity:1}

/* ── Theme app previews: [data-wp-preview] > .wp-layer (painted like the real layer) + a mock of that surface's text ── */
.wp-preview{position:relative;width:min(100%,200px,21vh);width:min(100%,200px,21dvh);margin:0 auto;aspect-ratio:390/844;border-radius:22px;overflow:hidden;background:var(--bg);box-shadow:var(--shadow-md);color:var(--ink);isolation:isolate}
.wp-layer{position:absolute;inset:0;z-index:0;background:var(--bg);background-size:cover;background-position:center;background-repeat:no-repeat}
.wp-layer::after{content:'';position:absolute;inset:0;background:#000;opacity:var(--wallpaper-overlay,0)}
.wp-mock{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;pointer-events:none}
.wp-mock-status{align-self:stretch;display:flex;justify-content:space-between;padding:7px 12px 0;font-size:8px;font-weight:600;color:var(--ink2)}
.wp-mock-clock{margin-top:9%;font-family:var(--font-display);font-size:34px;font-weight:300;line-height:1;color:var(--ink)}
.wp-mock-date{margin-top:4px;font-size:8.5px;color:var(--ink2)}
.wp-mock-apps{margin-top:auto;margin-bottom:22%;display:grid;grid-template-columns:repeat(4,1fr);gap:12px 10px;padding:0 12px;width:100%;box-sizing:border-box}
.wp-mock-app{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:7px;color:var(--ink2)}
.wp-mock-app i{width:24px;height:24px;border-radius:8px;background:var(--bg);box-shadow:var(--shadow)}
.wp-mock.lock .wp-mock-date{margin-top:18%;font-size:8.5px}
.wp-mock.lock .wp-mock-clock{margin-top:3px;font-size:40px}
.wp-mock-notif{margin-top:14%;width:82%;padding:7px 9px;border-radius:10px;background:color-mix(in srgb,var(--surface) 86%,transparent);border:1px solid var(--line-soft);font-size:8px;color:var(--ink);text-align:left}
.wp-mock-hint{margin-top:auto;margin-bottom:9%;font-size:8px;color:var(--ink2)}
.wp-mock-hint::before{content:'';display:block;width:22px;height:3px;margin:0 auto 5px;border-radius:2px;background:currentColor;opacity:.45}
.wp-preview[data-wall-tone] .wp-mock-clock{color:var(--wall-ink);text-shadow:var(--wall-shadow)}
.wp-preview[data-wall-tone] .wp-mock-status,.wp-preview[data-wall-tone] .wp-mock-date,.wp-preview[data-wall-tone] .wp-mock-app,.wp-preview[data-wall-tone] .wp-mock-hint{color:var(--wall-ink2);text-shadow:var(--wall-shadow)}
.wp-note{margin:10px 2px 0;font-size:12.5px;line-height:1.5;color:var(--ink2)}
.wp-note button{margin-left:6px}
