/* ============================================================
   Waarning v2 — habit layer ("wv-" namespace)
   App shell, daily ritual, Today home, rewards. Additive only:
   nothing here overrides the legacy Prism stylesheet.
   ============================================================ */
:root {
  --wv-radius: 20px;
  --wv-radius-sm: 13px;
  --wv-tabbar-h: 62px;
  --wv-good: light-dark(#0f8a5f, #34d6a0);
  --wv-warn: light-dark(#b57500, #f6c94c);
  --wv-bad: light-dark(#c02f4a, #ff6b83);
  --wv-ink: var(--text, #0d1220);
  --wv-soft: var(--text-soft, #55617a);
  --wv-mute: var(--muted, #7c88a0);
  --wv-line: var(--line, color-mix(in srgb, currentColor 14%, transparent));
  --wv-card: color-mix(in srgb, var(--surface-low, #10151f) 82%, transparent);
  --wv-card-high: color-mix(in srgb, var(--surface-high, #161c29) 88%, transparent);
}

/* ---------- shell scaffolding ---------- */
body.wv-shell { padding-bottom: calc(var(--wv-tabbar-h) + env(safe-area-inset-bottom, 0px) + 6px); }
@media (min-width: 901px) { body.wv-shell { padding-bottom: 0; } }

.wv-tabbar {
  position: fixed; inset: auto 0 0 0; z-index: 60;
  display: grid; grid-template-columns: repeat(6, 1fr);
  gap: 2px; padding: 6px 6px calc(6px + env(safe-area-inset-bottom, 0px));
  background: color-mix(in srgb, var(--bg, #080b14) 88%, transparent);
  backdrop-filter: blur(20px) saturate(160%);
  border-top: 1px solid var(--wv-line);
}
@media (min-width: 901px) { .wv-tabbar { display: none; } }
.wv-tab {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: 3px;
  padding: 7px 2px 5px; border: 0; background: transparent; cursor: pointer;
  color: var(--wv-mute); text-decoration: none; font: 600 10px/1 var(--font, system-ui);
  border-radius: 12px; transition: color .18s ease, background .18s ease, transform .18s ease;
}
.wv-tab:active { transform: scale(.94); }
.wv-tab .wv-tab-ico { display: grid; place-items: center; }
.wv-tab.is-active { color: var(--accent, #ff9f43); background: color-mix(in srgb, var(--accent, #ff9f43) 12%, transparent); }
.wv-tab-dot {
  position: absolute; top: 3px; right: calc(50% - 20px);
  min-width: 15px; height: 15px; padding: 0 3px; border-radius: 9px;
  background: var(--wv-bad); color: #fff; font: 800 9px/15px var(--mono, ui-monospace); text-align: center; font-style: normal;
}

/* ---------- streak chip in the header ---------- */
.wv-streak-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 10px 5px 7px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--wv-line); background: color-mix(in srgb, var(--accent, #ff9f43) 10%, transparent);
  color: var(--wv-ink); font: 800 12px var(--mono, ui-monospace);
  transition: transform .16s ease, box-shadow .16s ease;
}
.wv-streak-chip:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(0,0,0,.18); }
.wv-streak-chip.is-open { border-color: color-mix(in srgb, var(--accent, #ff9f43) 55%, transparent); animation: wv-breathe 2.6s ease-in-out infinite; }
.wv-streak-chip .wv-streak-flame { display: grid; place-items: center; color: var(--accent, #ff9f43); }
.wv-streak-chip.is-done .wv-streak-flame { color: var(--wv-good); }
.wv-streak-slots { display: inline-flex; gap: 2px; margin-left: 2px; }
.wv-streak-slots u { width: 5px; height: 5px; border-radius: 50%; background: color-mix(in srgb, currentColor 25%, transparent); text-decoration: none; }
.wv-streak-slots u.on { background: var(--accent, #ff9f43); }
@keyframes wv-breathe { 0%,100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent, #ff9f43) 40%, transparent); } 50% { box-shadow: 0 0 0 6px color-mix(in srgb, var(--accent, #ff9f43) 0%, transparent); } }

/* ---------- toasts ---------- */
.wv-toasts {
  position: fixed; z-index: 90; left: 50%; transform: translateX(-50%);
  bottom: calc(var(--wv-tabbar-h) + env(safe-area-inset-bottom, 0px) + 12px);
  display: flex; flex-direction: column; gap: 8px; width: min(440px, calc(100vw - 24px)); pointer-events: none;
}
@media (min-width: 901px) { .wv-toasts { left: auto; right: 22px; transform: none; bottom: 22px; } }
.wv-toast {
  pointer-events: auto; display: flex; align-items: center; gap: 10px;
  padding: 11px 12px; border-radius: var(--wv-radius-sm);
  border: 1px solid var(--wv-line); background: var(--wv-card-high);
  backdrop-filter: blur(22px) saturate(160%); box-shadow: 0 18px 44px rgba(0,0,0,.32);
  opacity: 0; transform: translateY(10px) scale(.98); transition: opacity .22s ease, transform .22s ease;
}
.wv-toast.wv-toast-in { opacity: 1; transform: none; }
.wv-toast.wv-toast-out { opacity: 0; transform: translateY(6px) scale(.98); }
.wv-toast-icon { display: grid; place-items: center; color: var(--accent, #ff9f43); flex: none; }
.wv-toast-copy { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.wv-toast-copy strong { font: 800 13px var(--font, system-ui); color: var(--wv-ink); }
.wv-toast-copy span { font-size: 12px; color: var(--wv-soft); line-height: 1.4; }
.wv-toast-action { margin-left: auto; flex: none; border: 1px solid var(--wv-line); background: transparent; color: var(--accent, #ff9f43); border-radius: 999px; padding: 5px 11px; font: 800 11.5px var(--font, system-ui); cursor: pointer; }
.wv-toast-close { flex: none; border: 0; background: transparent; color: var(--wv-mute); font-size: 17px; line-height: 1; cursor: pointer; padding: 2px 4px; }
.wv-tone-good { border-color: color-mix(in srgb, var(--wv-good) 45%, transparent); }
.wv-tone-warn { border-color: color-mix(in srgb, var(--wv-warn) 50%, transparent); }
.wv-tone-bad { border-color: color-mix(in srgb, var(--wv-bad) 55%, transparent); }
.wv-tone-reward { border-color: color-mix(in srgb, var(--accent, #ff9f43) 55%, transparent); }

/* ---------- celebration ---------- */
.wv-celebrate-wrap { position: fixed; inset: 0; z-index: 95; display: grid; place-items: center; background: color-mix(in srgb, #05070d 55%, transparent); opacity: 0; transition: opacity .28s ease; }
.wv-celebrate-wrap.is-in { opacity: 1; }
.wv-celebrate {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center;
  padding: 30px 34px; border-radius: 26px; width: min(330px, calc(100vw - 40px));
  border: 1px solid color-mix(in srgb, var(--accent, #ff9f43) 45%, transparent);
  background: var(--wv-card-high); backdrop-filter: blur(26px) saturate(170%);
  box-shadow: 0 30px 90px rgba(0,0,0,.45); transform: scale(.9); transition: transform .3s cubic-bezier(.2,1.3,.4,1);
}
.wv-celebrate-wrap.is-in .wv-celebrate { transform: none; }
.wv-celebrate-burst { position: absolute; inset: -30%; border-radius: 50%; background: radial-gradient(circle, color-mix(in srgb, var(--accent, #ff9f43) 30%, transparent), transparent 62%); animation: wv-burst 1.4s ease-out; pointer-events: none; }
@keyframes wv-burst { from { transform: scale(.4); opacity: .9; } to { transform: scale(1.25); opacity: 0; } }
.wv-celebrate-glyph { font-size: 40px; line-height: 1; }
.wv-celebrate small { font: 800 10px var(--mono, ui-monospace); letter-spacing: .16em; color: var(--accent, #ff9f43); }
.wv-celebrate strong { font: 800 22px var(--font, system-ui); color: var(--wv-ink); }
.wv-celebrate p { margin: 4px 0 0; font-size: 12.5px; color: var(--wv-soft); line-height: 1.5; }

/* ---------- bottom sheet (More) ---------- */
.wv-sheet { position: fixed; inset: 0; z-index: 80; background: color-mix(in srgb, #05070d 52%, transparent); opacity: 0; transition: opacity .2s ease; display: flex; align-items: flex-end; justify-content: center; }
.wv-sheet.is-in { opacity: 1; }
.wv-sheet-panel { width: min(520px, 100%); border-radius: 26px 26px 0 0; padding: 12px 16px calc(20px + env(safe-area-inset-bottom, 0px)); background: var(--wv-card-high); backdrop-filter: blur(24px); border: 1px solid var(--wv-line); border-bottom: 0; transform: translateY(14px); transition: transform .24s ease; }
.wv-sheet.is-in .wv-sheet-panel { transform: none; }
.wv-sheet-grip { width: 42px; height: 4px; border-radius: 4px; background: var(--wv-line); margin: 0 auto 12px; }
.wv-sheet-title { margin: 0 0 10px; font: 800 16px var(--font, system-ui); color: var(--wv-ink); }
.wv-sheet-list { display: flex; flex-direction: column; gap: 4px; }
.wv-sheet-item { display: flex; align-items: center; gap: 11px; padding: 12px; border-radius: 13px; text-decoration: none; color: var(--wv-ink); font: 700 14px var(--font, system-ui); }
.wv-sheet-item:hover { background: color-mix(in srgb, var(--accent, #ff9f43) 10%, transparent); }
.wv-sheet-ico { color: var(--accent, #ff9f43); display: grid; place-items: center; }
.wv-sheet-arrow { margin-left: auto; color: var(--wv-mute); display: grid; place-items: center; }
.wv-sheet-close { width: 100%; margin-top: 12px; padding: 12px; border-radius: 13px; border: 1px solid var(--wv-line); background: transparent; color: var(--wv-soft); font: 700 13.5px var(--font, system-ui); cursor: pointer; }

/* ---------- footer + version marker ---------- */
.wv-foot {
  display: flex; flex-wrap: wrap; align-items: center; gap: 16px;
  margin: 34px auto 0; padding: 20px clamp(16px, 4vw, 26px) 26px; max-width: 1180px;
  border-top: 1px solid var(--wv-line); color: var(--wv-mute); font-size: 12.5px;
}
.wv-foot-brand { display: flex; align-items: center; gap: 10px; }
.wv-foot-mark { color: var(--accent, #ff9f43); display: grid; place-items: center; }
.wv-foot-brand span { display: flex; flex-direction: column; }
.wv-foot-brand strong { color: var(--wv-ink); font-size: 13.5px; }
.wv-foot-brand small { font-size: 11.5px; color: var(--wv-mute); }
.wv-foot-links { display: flex; flex-wrap: wrap; gap: 4px; margin-inline: auto; }
.wv-foot-links a { color: var(--wv-soft); text-decoration: none; padding: 6px 10px; border-radius: 999px; font-weight: 600; }
.wv-foot-links a:hover { color: var(--wv-ink); background: color-mix(in srgb, var(--accent, #ff9f43) 10%, transparent); }
.wv-foot-meta { display: flex; align-items: center; gap: 10px; }
.wv-foot-meta small { font-size: 11.5px; }
.wv-version {
  display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
  padding: 5px 11px; border-radius: 999px; border: 1px solid color-mix(in srgb, var(--accent, #ff9f43) 40%, transparent);
  background: color-mix(in srgb, var(--accent, #ff9f43) 12%, transparent);
  color: var(--wv-ink); font: 800 12px var(--mono, ui-monospace);
}
.wv-version:hover { background: color-mix(in srgb, var(--accent, #ff9f43) 20%, transparent); }
.wv-version small { font: 700 10px var(--mono, ui-monospace); color: var(--wv-soft); letter-spacing: .06em; text-transform: uppercase; }
.wv-version-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--wv-good); box-shadow: 0 0 0 3px color-mix(in srgb, var(--wv-good) 22%, transparent); }

/* ---------- ritual sheet ---------- */
.wv-rt { position: fixed; inset: 0; z-index: 85; background: color-mix(in srgb, #05070d 60%, transparent); backdrop-filter: blur(4px); display: flex; align-items: flex-end; justify-content: center; opacity: 0; transition: opacity .22s ease; }
@media (min-width: 761px) { .wv-rt { align-items: center; } }
.wv-rt.is-in { opacity: 1; }
.wv-rt-panel {
  width: min(560px, 100%); max-height: min(88vh, 860px); display: flex; flex-direction: column;
  border-radius: 26px 26px 0 0; border: 1px solid var(--wv-line); border-bottom: 0;
  background: var(--wv-card-high); backdrop-filter: blur(26px) saturate(170%); box-shadow: 0 -20px 70px rgba(0,0,0,.45);
  transform: translateY(18px); transition: transform .26s cubic-bezier(.2,.9,.3,1);
}
@media (min-width: 761px) { .wv-rt-panel { border-radius: 26px; border-bottom: 1px solid var(--wv-line); } }
.wv-rt.is-in .wv-rt-panel { transform: none; }
.wv-rt-head { display: flex; align-items: flex-start; gap: 12px; padding: 18px 18px 10px; }
.wv-rt-kicker { font: 800 9.5px var(--mono, ui-monospace); letter-spacing: .16em; color: var(--accent, #ff9f43); }
.wv-rt-head h2 { margin: 5px 0 0; font: 800 19px var(--font, system-ui); color: var(--wv-ink); }
.wv-rt-close { margin-left: auto; border: 1px solid var(--wv-line); background: transparent; color: var(--wv-soft); border-radius: 50%; width: 32px; height: 32px; display: grid; place-items: center; cursor: pointer; }
.wv-rt-tabs { display: flex; gap: 4px; padding: 0 14px 8px; overflow-x: auto; }
.wv-rt-tab { border: 0; background: transparent; color: var(--wv-mute); padding: 8px 12px; border-radius: 999px; font: 700 12.5px var(--font, system-ui); cursor: pointer; white-space: nowrap; }
.wv-rt-tab.is-active { color: var(--accent-ink, #11151d); background: var(--accent, #ff9f43); }
.wv-rt-scroll { overflow-y: auto; padding: 4px 16px calc(20px + env(safe-area-inset-bottom, 0px)); -webkit-overflow-scrolling: touch; }
.wv-rt-body { display: flex; flex-direction: column; gap: 14px; }
.wv-rt-h3 { margin: 6px 0 -4px; font: 800 12px var(--mono, ui-monospace); letter-spacing: .1em; text-transform: uppercase; color: var(--wv-mute); }

.wv-rt-streak { display: flex; align-items: center; gap: 14px; padding: 16px; border-radius: var(--wv-radius); border: 1px solid var(--wv-line); background: linear-gradient(135deg, color-mix(in srgb, var(--accent, #ff9f43) 16%, transparent), transparent); }
.wv-rt-flame { width: 54px; height: 54px; border-radius: 50%; display: grid; place-items: center; color: var(--wv-mute); background: color-mix(in srgb, currentColor 8%, transparent); }
.wv-rt-flame.is-lit { color: var(--accent, #ff9f43); background: color-mix(in srgb, var(--accent, #ff9f43) 18%, transparent); box-shadow: 0 0 24px color-mix(in srgb, var(--accent, #ff9f43) 40%, transparent); }
.wv-rt-streak-copy { display: flex; flex-direction: column; }
.wv-rt-streak-copy strong { font: 800 26px var(--mono, ui-monospace); color: var(--wv-ink); line-height: 1.05; }
.wv-rt-streak-copy small { font-size: 12px; color: var(--wv-soft); }

.wv-rt-slots { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.wv-rt-slot { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 13px 6px; border-radius: var(--wv-radius-sm); border: 1px solid var(--wv-line); background: var(--wv-card); color: var(--wv-soft); cursor: default; }
.wv-rt-slot b { font: 800 12.5px var(--font, system-ui); color: var(--wv-ink); }
.wv-rt-slot small { font-size: 10.5px; color: var(--wv-mute); text-align: center; }
.wv-rt-slot.is-now { cursor: pointer; border-color: color-mix(in srgb, var(--accent, #ff9f43) 60%, transparent); background: color-mix(in srgb, var(--accent, #ff9f43) 12%, transparent); animation: wv-breathe 2.4s ease-in-out infinite; }
.wv-rt-slot.is-now:active { transform: scale(.97); }
.wv-rt-slot.is-done { border-color: color-mix(in srgb, var(--wv-good) 50%, transparent); color: var(--wv-good); }
.wv-rt-slot.is-done .wv-rt-slot-ico { color: var(--wv-good); }

.wv-rt-quests { display: flex; flex-direction: column; gap: 8px; }
.wv-rt-quest { display: flex; align-items: center; gap: 10px; padding: 11px 12px; border-radius: var(--wv-radius-sm); border: 1px solid var(--wv-line); background: var(--wv-card); }
.wv-rt-quest.is-done { opacity: .62; }
.wv-rt-quest.is-done .wv-rt-quest-copy b { text-decoration: line-through; }
.wv-rt-check { flex: none; width: 24px; height: 24px; border-radius: 50%; border: 2px solid var(--wv-line); background: transparent; color: var(--accent-ink, #11151d); display: grid; place-items: center; cursor: pointer; }
.wv-rt-quest.is-done .wv-rt-check { background: var(--wv-good); border-color: var(--wv-good); color: #04150e; }
.wv-rt-quest-copy { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.wv-rt-quest-copy b { font: 700 13px var(--font, system-ui); color: var(--wv-ink); }
.wv-rt-quest-copy small { font-size: 11.5px; color: var(--wv-mute); line-height: 1.35; }
.wv-rt-xp { margin-left: auto; font: 800 11.5px var(--mono, ui-monospace); color: var(--accent, #ff9f43); }
.wv-rt-go { flex: none; width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; color: var(--wv-soft); border: 1px solid var(--wv-line); text-decoration: none; }
.wv-rt-progress { position: relative; height: 26px; border-radius: 999px; background: color-mix(in srgb, currentColor 8%, transparent); overflow: hidden; display: grid; place-items: center; }
.wv-rt-progress i { position: absolute; inset: 0 auto 0 0; background: color-mix(in srgb, var(--accent, #ff9f43) 30%, transparent); transition: width .4s ease; }
.wv-rt-progress small { position: relative; font: 800 11px var(--mono, ui-monospace); color: var(--wv-ink); }

.wv-rt-rank { display: flex; align-items: center; gap: 16px; padding: 16px; border-radius: var(--wv-radius); border: 1px solid var(--wv-line); background: var(--wv-card); }
.wv-rt-rank-ring { position: relative; display: grid; place-items: center; }
.wv-rt-rank-ring b { position: absolute; font: 800 28px var(--mono, ui-monospace); color: var(--wv-ink); }
.wv-rt-rank > div:last-child { display: flex; flex-direction: column; gap: 3px; }
.wv-rt-rank strong { font: 800 18px var(--font, system-ui); color: var(--wv-ink); }
.wv-rt-rank small { font-size: 12px; color: var(--wv-soft); }
.wv-rt-badges { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; }
.wv-rt-badge { display: flex; flex-direction: column; gap: 3px; padding: 12px; border-radius: var(--wv-radius-sm); border: 1px dashed var(--wv-line); opacity: .5; }
.wv-rt-badge.is-owned { opacity: 1; border-style: solid; border-color: color-mix(in srgb, var(--accent, #ff9f43) 45%, transparent); background: color-mix(in srgb, var(--accent, #ff9f43) 9%, transparent); }
.wv-rt-badge-ico { color: var(--accent, #ff9f43); }
.wv-rt-badge b { font: 800 12.5px var(--font, system-ui); color: var(--wv-ink); }
.wv-rt-badge small { font-size: 10.5px; color: var(--wv-mute); line-height: 1.35; }
.wv-rt-note { margin: 0; font-size: 11.5px; color: var(--wv-mute); line-height: 1.5; }

.wv-rt-chart { display: grid; grid-template-columns: repeat(14, 1fr); gap: 4px; align-items: end; height: 118px; padding: 12px; border-radius: var(--wv-radius); border: 1px solid var(--wv-line); background: var(--wv-card); }
.wv-rt-bar { display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: 4px; height: 100%; }
.wv-rt-bar i { display: block; width: 100%; height: var(--h, 6%); border-radius: 4px; background: linear-gradient(180deg, var(--accent, #ff9f43), color-mix(in srgb, var(--accent, #ff9f43) 40%, transparent)); }
.wv-rt-bar.is-empty i { background: color-mix(in srgb, currentColor 12%, transparent); }
.wv-rt-bar.is-today i { box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent, #ff9f43) 45%, transparent); }
.wv-rt-bar small { font: 700 9px var(--mono, ui-monospace); color: var(--wv-mute); }
.wv-rt-cal { display: grid; grid-template-columns: repeat(7, 1fr); gap: 5px; }
.wv-rt-cal-day { aspect-ratio: 1; border-radius: 6px; background: color-mix(in srgb, currentColor 8%, transparent); }
.wv-rt-cal-day.lv-1 { background: color-mix(in srgb, var(--accent, #ff9f43) 30%, transparent); }
.wv-rt-cal-day.lv-2 { background: color-mix(in srgb, var(--accent, #ff9f43) 60%, transparent); }
.wv-rt-cal-day.lv-3 { background: var(--accent, #ff9f43); }
.wv-rt-cal-day.is-today { outline: 2px solid color-mix(in srgb, var(--accent, #ff9f43) 70%, transparent); outline-offset: 1px; }
.wv-rt-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.wv-rt-stats div { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 11px 4px; border-radius: var(--wv-radius-sm); border: 1px solid var(--wv-line); }
.wv-rt-stats b { font: 800 18px var(--mono, ui-monospace); color: var(--wv-ink); }
.wv-rt-stats small { font-size: 10px; color: var(--wv-mute); text-align: center; }
.wv-rt-release-head { display: flex; align-items: baseline; gap: 8px; }
.wv-rt-release-head strong { font: 800 17px var(--font, system-ui); color: var(--wv-ink); }
.wv-rt-release-head small { font: 700 11px var(--mono, ui-monospace); color: var(--accent, #ff9f43); letter-spacing: .1em; text-transform: uppercase; }
.wv-rt-release { padding: 13px 14px; border-radius: var(--wv-radius-sm); border: 1px solid var(--wv-line); background: var(--wv-card); }
.wv-rt-release header { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin-bottom: 6px; }
.wv-rt-release header b { font: 800 13px var(--font, system-ui); color: var(--wv-ink); }
.wv-rt-release header time { font: 700 11px var(--mono, ui-monospace); color: var(--wv-mute); }
.wv-rt-release ul { margin: 0; padding-left: 17px; display: flex; flex-direction: column; gap: 4px; }
.wv-rt-release li { font-size: 12.5px; color: var(--wv-soft); line-height: 1.45; }

@media (prefers-reduced-motion: reduce) {
  .wv-streak-chip, .wv-rt-slot.is-now, .wv-celebrate-burst { animation: none !important; }
  .wv-toast, .wv-rt-panel, .wv-sheet-panel, .wv-celebrate { transition: none !important; }
}

/* ============================================================
   Today home screen
   ============================================================ */
.wv-skip { position: absolute; left: -9999px; top: 0; z-index: 100; padding: 10px 14px; background: var(--accent, #ff9f43); color: var(--accent-ink, #11151d); border-radius: 0 0 10px 0; font: 700 13px var(--font, system-ui); }
.wv-skip:focus { left: 0; }
.wv-kicker { display: block; font: 800 10.5px var(--mono, ui-monospace); letter-spacing: .15em; color: var(--accent, #ff9f43); text-transform: uppercase; }

.wv-today { padding: 30px 0 6px; }
.wv-today-head { display: flex; align-items: flex-end; gap: 20px; flex-wrap: wrap; margin-bottom: 18px; }
.wv-today-head h1 { margin: 10px 0 8px; font: 800 clamp(26px, 4.4vw, 42px)/1.06 var(--font, system-ui); letter-spacing: -.02em; color: var(--wv-ink); }
.wv-today-sub { margin: 0; max-width: 620px; font-size: 14.5px; line-height: 1.6; color: var(--wv-soft); }
.wv-loc { margin-left: auto; display: flex; flex-direction: column; align-items: flex-end; gap: 5px; position: relative; }
.wv-loc-btn { display: inline-flex; align-items: center; gap: 7px; padding: 8px 14px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--wv-line); background: var(--wv-card); color: var(--wv-ink); font: 700 13.5px var(--font, system-ui); }
.wv-loc-btn:hover { border-color: color-mix(in srgb, var(--accent, #ff9f43) 55%, transparent); }
.wv-loc-pin { width: 7px; height: 7px; border-radius: 50%; background: var(--accent, #ff9f43); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #ff9f43) 25%, transparent); }
.wv-loc small { font-size: 11.5px; color: var(--wv-mute); }
.wv-loc-search { position: absolute; top: calc(100% + 8px); right: 0; z-index: 30; width: 250px; }
.wv-loc-search input { width: 100%; box-sizing: border-box; border: 1px solid var(--wv-line); background: var(--wv-card-high); color: var(--wv-ink); border-radius: 12px; padding: 10px 13px; font-size: 13.5px; }
#ov-loc-results { margin-top: 5px; border-radius: 12px; overflow: hidden; background: var(--wv-card-high); border: 1px solid var(--wv-line); backdrop-filter: blur(18px); }
#ov-loc-results:empty { display: none; }
#ov-loc-results button { display: block; width: 100%; text-align: left; padding: 10px 13px; border: 0; background: transparent; color: var(--wv-ink); font-size: 13px; cursor: pointer; }
#ov-loc-results button:hover { background: color-mix(in srgb, var(--accent, #ff9f43) 14%, transparent); }

.wv-today-grid { display: grid; grid-template-columns: minmax(220px, .74fr) minmax(280px, 1.15fr) minmax(250px, .95fr); gap: 14px; align-items: stretch; }
@media (max-width: 1040px) { .wv-today-grid { grid-template-columns: 1fr 1fr; } .wv-missions { grid-column: 1 / -1; } }
@media (max-width: 720px) { .wv-today-grid { grid-template-columns: 1fr; } }

.wv-dial, .wv-verdict, .wv-missions, .wv-card {
  border: 1px solid var(--wv-line); border-radius: var(--wv-radius); padding: 20px;
  background: var(--wv-card); backdrop-filter: blur(18px) saturate(150%);
}
.wv-dial { display: flex; flex-direction: column; align-items: center; gap: 11px; text-align: center; cursor: pointer; transition: transform .2s ease; }
.wv-dial:hover { transform: translateY(-2px); }
.wv-dial > b { font-size: 15px; color: var(--signal, var(--accent)); font-weight: 800; }
.wv-dial > p { margin: 0; font-size: 12px; color: var(--wv-soft); line-height: 1.5; max-width: 230px; }

.wv-verdict { display: flex; flex-direction: column; gap: 10px; }
.wv-verdict-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.wv-live { display: inline-flex; align-items: center; gap: 6px; font: 800 9.5px var(--mono, ui-monospace); letter-spacing: .14em; color: var(--wv-good); }
.wv-live i { width: 6px; height: 6px; border-radius: 50%; background: var(--wv-good); animation: wv-blink 1.8s ease-in-out infinite; }
@keyframes wv-blink { 0%,100% { opacity: 1; } 50% { opacity: .3; } }
.wv-new-pill { padding: 4px 10px; border-radius: 999px; font: 700 11px var(--font, system-ui); color: var(--wv-soft); border: 1px solid var(--wv-line); }
.wv-new-pill.is-hot { color: var(--accent-ink, #11151d); background: var(--accent, #ff9f43); border-color: transparent; }
.wv-verdict h2 { margin: 0; font: 800 21px/1.25 var(--font, system-ui); color: var(--wv-ink); }
.wv-verdict p { margin: 0; font-size: 13.5px; line-height: 1.55; color: var(--wv-soft); }
.wv-verdict[data-tone="warn"] { border-color: color-mix(in srgb, var(--wv-warn) 45%, transparent); }
.wv-verdict[data-tone="bad"] { border-color: color-mix(in srgb, var(--wv-bad) 55%, transparent); box-shadow: 0 0 40px color-mix(in srgb, var(--wv-bad) 14%, transparent); }
.wv-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 2px; }
.wv-act { display: inline-flex; align-items: center; gap: 6px; padding: 10px 15px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--wv-line); background: transparent; color: var(--wv-ink); text-decoration: none; font: 700 13px var(--font, system-ui); }
.wv-act:hover { border-color: color-mix(in srgb, var(--accent, #ff9f43) 60%, transparent); }
.wv-act-primary { background: var(--accent, #ff9f43); color: var(--accent-ink, #11151d); border-color: transparent; }
.wv-act.is-on { border-color: color-mix(in srgb, var(--wv-good) 60%, transparent); color: var(--wv-good); }

.wv-checkin { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 4px; padding-top: 12px; border-top: 1px dashed var(--wv-line); }
.wv-streakbig { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--wv-line); background: transparent; color: var(--wv-mute); }
.wv-streakbig.is-lit { color: var(--accent, #ff9f43); border-color: color-mix(in srgb, var(--accent, #ff9f43) 50%, transparent); background: color-mix(in srgb, var(--accent, #ff9f43) 10%, transparent); }
.wv-streakbig b { font: 800 16px var(--mono, ui-monospace); }
.wv-streakbig small { font-size: 10.5px; font-weight: 700; }
.wv-slotstrip { display: flex; gap: 6px; }
.wv-slot { display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px; border-radius: 999px; cursor: default;
  border: 1px solid var(--wv-line); background: transparent; color: var(--wv-mute); font: 700 12px var(--font, system-ui); }
.wv-slot i { display: grid; place-items: center; }
.wv-slot.is-done { color: var(--wv-good); border-color: color-mix(in srgb, var(--wv-good) 45%, transparent); }
.wv-slot.is-now { cursor: pointer; color: var(--accent-ink, #11151d); background: var(--accent, #ff9f43); border-color: transparent; animation: wv-breathe 2.4s ease-in-out infinite; }
.wv-slot.is-now:active { transform: scale(.96); }

.wv-missions { display: flex; flex-direction: column; gap: 9px; }
.wv-missions header { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.wv-missions h3 { margin: 0; font: 800 14px var(--font, system-ui); color: var(--wv-ink); }
.wv-linkish { border: 0; background: transparent; color: var(--accent, #ff9f43); font: 700 12px var(--font, system-ui); cursor: pointer; padding: 2px 4px; }
#wv-mission-list { display: flex; flex-direction: column; gap: 7px; }
.wv-mission { display: flex; align-items: center; gap: 9px; padding: 9px 10px; border-radius: 12px; border: 1px solid var(--wv-line); }
.wv-mission.is-done { opacity: .6; }
.wv-mission.is-done .wv-mission-copy b { text-decoration: line-through; }
.wv-mission-check { flex: none; width: 21px; height: 21px; border-radius: 50%; border: 2px solid var(--wv-line); background: transparent; display: grid; place-items: center; cursor: pointer; color: #04150e; }
.wv-mission.is-done .wv-mission-check { background: var(--wv-good); border-color: var(--wv-good); }
.wv-mission-copy { display: flex; flex-direction: column; min-width: 0; }
.wv-mission-copy b { font: 700 12.5px var(--font, system-ui); color: var(--wv-ink); }
.wv-mission-copy small { font-size: 10.5px; color: var(--wv-mute); line-height: 1.35; }
.wv-mission-xp { margin-left: auto; font: 800 11px var(--mono, ui-monospace); color: var(--accent, #ff9f43); }
.wv-mission-go { flex: none; width: 25px; height: 25px; border-radius: 50%; display: grid; place-items: center; border: 1px solid var(--wv-line); color: var(--wv-soft); text-decoration: none; }
.wv-rank-strip { margin-top: auto; padding-top: 10px; border-top: 1px dashed var(--wv-line); }
.wv-rank-line { display: flex; align-items: baseline; gap: 7px; }
.wv-rank-line b { font: 800 12.5px var(--font, system-ui); color: var(--wv-ink); }
.wv-rank-line span { font-size: 11.5px; color: var(--accent, #ff9f43); font-weight: 700; }
.wv-rank-line small { margin-left: auto; font: 700 10.5px var(--mono, ui-monospace); color: var(--wv-mute); }
.wv-rank-bar { height: 5px; border-radius: 4px; margin-top: 6px; background: color-mix(in srgb, currentColor 10%, transparent); overflow: hidden; }
.wv-rank-bar i { display: block; height: 100%; border-radius: 4px; background: var(--accent, #ff9f43); transition: width .5s ease; }

.wv-pulse { display: flex; align-items: center; gap: 10px; margin-top: 14px; padding: 10px 12px; border-radius: 14px; border: 1px solid var(--wv-line); background: var(--wv-card); overflow: hidden; }
.wv-pulse-tag { flex: none; font: 800 9.5px var(--mono, ui-monospace); letter-spacing: .14em; color: var(--accent, #ff9f43); }
.wv-pulse-track { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; }
.wv-pulse-track::-webkit-scrollbar { display: none; }
.wv-pulse-item { flex: none; white-space: nowrap; padding: 6px 11px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--wv-line); background: transparent; color: var(--wv-soft); font: 600 12px var(--font, system-ui); }
.wv-pulse-item:hover { color: var(--wv-ink); border-color: color-mix(in srgb, var(--accent, #ff9f43) 50%, transparent); }
.wv-pulse-item.tone-warn { color: var(--wv-warn); border-color: color-mix(in srgb, var(--wv-warn) 40%, transparent); }
.wv-pulse-item.tone-bad { color: var(--wv-bad); border-color: color-mix(in srgb, var(--wv-bad) 45%, transparent); }

.wv-sec { padding: 26px 0 4px; }
.wv-sec-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 14px; margin-bottom: 14px; }
.wv-sec-head h2 { margin: 6px 0 0; font: 800 21px var(--font, system-ui); color: var(--wv-ink); }
.wv-card-title { margin: 0 0 12px; font: 800 14px var(--font, system-ui); color: var(--wv-ink); }
.wv-now-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 760px) { .wv-now-grid { grid-template-columns: 1fr; } }
.wv-card { cursor: pointer; }

.wv-places { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; }
.wv-places-empty { margin: 0; font-size: 13px; color: var(--wv-mute); line-height: 1.55; }
.wv-place { position: relative; display: flex; align-items: center; gap: 11px; padding: 13px; border-radius: 15px; cursor: pointer; border: 1px solid var(--wv-line); background: var(--wv-card); }
.wv-place:hover { border-color: color-mix(in srgb, var(--accent, #ff9f43) 50%, transparent); }
.wv-place-ring { flex: none; width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center;
  background: conic-gradient(var(--accent, #ff9f43) calc(var(--v, 0) * 1%), color-mix(in srgb, currentColor 12%, transparent) 0); }
.wv-place-ring b { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: var(--wv-card-high); font: 800 13px var(--mono, ui-monospace); color: var(--wv-ink); }
.wv-place-copy { display: flex; flex-direction: column; min-width: 0; }
.wv-place-copy b { font: 700 13px var(--font, system-ui); color: var(--wv-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wv-place-copy small { font-size: 10.5px; color: var(--wv-mute); }
.wv-place-x { position: absolute; top: 6px; right: 6px; width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; border: 0; background: transparent; color: var(--wv-mute); cursor: pointer; opacity: 0; transition: opacity .15s ease; }
.wv-place:hover .wv-place-x { opacity: 1; }

.wv-chan-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(258px, 1fr)); gap: 12px; }
.wv-chan { display: flex; flex-direction: column; gap: 8px; padding: 18px; border-radius: var(--wv-radius); cursor: pointer;
  border: 1px solid var(--wv-line); background: var(--wv-card); text-decoration: none; color: inherit; transition: transform .18s ease, border-color .18s ease; }
.wv-chan:hover { transform: translateY(-3px); border-color: color-mix(in srgb, var(--accent, #ff9f43) 50%, transparent); }
.wv-chan .ico { width: 38px; height: 38px; border-radius: 11px; display: grid; place-items: center; background: color-mix(in srgb, var(--accent, #ff9f43) 14%, transparent); color: var(--accent, #ff9f43); }
.wv-chan h3 { margin: 0; font: 800 16px var(--font, system-ui); color: var(--wv-ink); }
.wv-chan p { margin: 0; font-size: 12.5px; line-height: 1.5; color: var(--wv-soft); }
.wv-chan .count { margin-top: auto; padding-top: 6px; font: 700 11.5px var(--mono, ui-monospace); color: var(--wv-mute); letter-spacing: .04em; }
.wv-chan .count b { color: var(--accent, #ff9f43); font-size: 14px; }

.wv-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 12px; padding-bottom: 10px; }
.wv-step { padding: 17px; border-radius: var(--wv-radius); border: 1px solid var(--wv-line); background: var(--wv-card); }
.wv-step b { font: 800 12px var(--mono, ui-monospace); color: var(--accent, #ff9f43); letter-spacing: .1em; }
.wv-step strong { display: block; margin: 7px 0 4px; font: 800 15px var(--font, system-ui); color: var(--wv-ink); }
.wv-step span { font-size: 12.5px; line-height: 1.5; color: var(--wv-soft); }

/* ============================================================
   Detail drawer — the list behind every number
   ============================================================ */
.wv-dr { position: fixed; inset: 0; z-index: 88; background: color-mix(in srgb, #05070d 62%, transparent); backdrop-filter: blur(4px); display: flex; align-items: flex-end; justify-content: center; opacity: 0; transition: opacity .2s ease; }
@media (min-width: 761px) { .wv-dr { align-items: center; } }
.wv-dr.is-in { opacity: 1; }
.wv-dr-panel { width: min(620px, 100%); max-height: min(86vh, 900px); display: flex; flex-direction: column;
  border-radius: 24px 24px 0 0; border: 1px solid var(--wv-line); background: var(--wv-card-high); backdrop-filter: blur(26px) saturate(170%);
  box-shadow: 0 -20px 70px rgba(0,0,0,.45); transform: translateY(18px); transition: transform .24s cubic-bezier(.2,.9,.3,1); }
@media (min-width: 761px) { .wv-dr-panel { border-radius: 24px; } }
.wv-dr.is-in .wv-dr-panel { transform: none; }
.wv-dr-head { display: flex; align-items: flex-start; gap: 12px; padding: 18px 18px 12px; }
.wv-dr-kicker { font: 800 9.5px var(--mono, ui-monospace); letter-spacing: .16em; color: var(--accent, #ff9f43); }
.wv-dr-head h2 { margin: 5px 0 0; font: 800 18px var(--font, system-ui); color: var(--wv-ink); }
.wv-dr-close { margin-left: auto; width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; border: 1px solid var(--wv-line); background: transparent; color: var(--wv-soft); cursor: pointer; }
.wv-dr-list { overflow-y: auto; display: flex; flex-direction: column; gap: 7px; padding: 0 16px 12px; }
.wv-dr-item { display: flex; flex-direction: column; gap: 3px; padding: 12px 13px; border-radius: 13px; text-decoration: none;
  border: 1px solid var(--wv-line); border-left: 3px solid var(--wv-line); background: var(--wv-card); color: inherit; }
.wv-dr-item:hover { border-color: color-mix(in srgb, var(--accent, #ff9f43) 45%, transparent); }
.wv-dr-item b { font: 700 13.5px var(--font, system-ui); color: var(--wv-ink); line-height: 1.35; }
.wv-dr-item small { font: 700 11px var(--mono, ui-monospace); color: var(--wv-mute); }
.wv-dr-item p { margin: 3px 0 0; font-size: 12.5px; line-height: 1.5; color: var(--wv-soft); }
.wv-dr-item time { font-size: 10.5px; color: var(--wv-mute); }
.wv-dr-item.tone-warn { border-left-color: var(--wv-warn); }
.wv-dr-item.tone-bad { border-left-color: var(--wv-bad); }
.wv-dr-item.tone-extreme { border-left-color: var(--wv-bad); box-shadow: inset 0 0 22px color-mix(in srgb, var(--wv-bad) 12%, transparent); }
.wv-dr-item.tone-ok { border-left-color: var(--wv-good); }
.wv-dr-skel { height: 58px; border-radius: 13px; background: linear-gradient(90deg, color-mix(in srgb, currentColor 7%, transparent), color-mix(in srgb, currentColor 13%, transparent), color-mix(in srgb, currentColor 7%, transparent)); background-size: 200% 100%; animation: wv-shimmer 1.4s linear infinite; }
@keyframes wv-shimmer { to { background-position: -200% 0; } }
.wv-dr-empty { margin: 0; padding: 18px 4px; font-size: 13px; color: var(--wv-mute); line-height: 1.55; }
.wv-dr-full { display: block; text-align: center; padding: 14px; margin: 0 16px calc(16px + env(safe-area-inset-bottom, 0px)); border-radius: 13px;
  background: color-mix(in srgb, var(--accent, #ff9f43) 14%, transparent); color: var(--accent, #ff9f43); text-decoration: none; font: 800 13px var(--font, system-ui); }
.wv-checkin-cta { margin-top: 8px; padding: 9px 14px; border-radius: 999px; cursor: pointer; border: 1px solid var(--wv-line);
  background: var(--accent, #ff9f43); color: var(--accent-ink, #11151d); font: 700 12.5px var(--font, system-ui); }
.wv-checkin-cta.is-complete { background: transparent; color: var(--wv-good); border-color: color-mix(in srgb, var(--wv-good) 50%, transparent); }

.wv-trend { margin-top: 2px; padding: 5px 11px; border-radius: 999px; font: 700 11.5px var(--mono, ui-monospace); border: 1px solid var(--wv-line); color: var(--wv-mute); }
.wv-trend.is-up { color: var(--wv-bad); border-color: color-mix(in srgb, var(--wv-bad) 45%, transparent); }
.wv-trend.is-down { color: var(--wv-good); border-color: color-mix(in srgb, var(--wv-good) 45%, transparent); }
.wv-search-btn{display:inline-flex;align-items:center;gap:5px;padding:7px 9px;border:1px solid var(--wv-line);border-radius:10px;background:transparent;color:var(--wv-soft);cursor:pointer}.wv-search-btn:hover{color:var(--wv-ink);border-color:color-mix(in srgb,var(--accent) 55%,transparent)}.wv-search-btn kbd{font:700 9px var(--mono,ui-monospace);opacity:.7}
.wv-pal{position:fixed;inset:0;z-index:92;display:flex;align-items:flex-start;justify-content:center;padding:10vh 16px;background:color-mix(in srgb,#05070d 64%,transparent);backdrop-filter:blur(5px);opacity:0;transition:opacity .18s ease}.wv-pal.is-in{opacity:1}.wv-pal-panel{width:min(600px,100%);max-height:70vh;overflow:hidden;border:1px solid var(--wv-line);border-radius:20px;background:var(--wv-card-high);box-shadow:0 24px 90px #0007}.wv-pal-head{display:flex;align-items:center;gap:9px;padding:13px 15px;border-bottom:1px solid var(--wv-line)}.wv-pal-ico{color:var(--accent)}.wv-pal-input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:var(--wv-ink);font:600 15px var(--font,system-ui)}.wv-pal-head kbd{font:700 10px var(--mono,ui-monospace);color:var(--wv-mute)}.wv-pal-list{padding:7px;max-height:58vh;overflow:auto}.wv-pal-item{display:flex;align-items:center;gap:10px;width:100%;padding:11px 12px;border:0;border-radius:11px;background:transparent;color:var(--wv-ink);text-align:left;cursor:pointer}.wv-pal-item.is-active,.wv-pal-item:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}.wv-pal-item-ico{display:grid;place-items:center;color:var(--accent)}.wv-pal-item b{font:700 13px var(--font,system-ui)}.wv-pal-item small{margin-left:auto;color:var(--wv-mute);font:600 10px var(--mono,ui-monospace)}.wv-pal-empty{padding:16px;color:var(--wv-mute);font-size:13px}.wv-dr-count{display:block;margin-top:4px;color:var(--wv-mute);font:600 10.5px var(--mono,ui-monospace)}.wv-dr-more{display:block;width:100%;padding:11px;border:1px solid var(--wv-line);border-radius:12px;background:transparent;color:var(--accent);font:700 12px var(--font,system-ui);cursor:pointer}
.wv-directory{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px}.wv-directory a{padding:12px 14px;border:1px solid var(--wv-line);border-radius:12px;background:var(--wv-card);color:var(--wv-ink);text-decoration:none;font:700 12.5px var(--font,system-ui)}.wv-directory a:hover{border-color:color-mix(in srgb,var(--accent) 55%,transparent);color:var(--accent)}
/* v2.2 visual polish: vivid signal intelligence, serious hierarchy */
:root{--wv-cyan:#42d9ff;--wv-violet:#9b7bff;--wv-pink:#ff5c91;--wv-lime:#a6e86c}
body.wv-shell{background:radial-gradient(900px 420px at 8% -8%,color-mix(in srgb,var(--wv-violet) 12%,transparent),transparent 68%),radial-gradient(720px 420px at 95% 0%,color-mix(in srgb,var(--wv-cyan) 9%,transparent),transparent 64%),var(--bg,#080b14)}
.wv-today{position:relative}.wv-today:before{content:"";position:absolute;inset:0 -30vw auto;height:1px;background:linear-gradient(90deg,transparent,var(--accent),var(--wv-cyan),transparent);opacity:.8}
.wv-today-head h1{background:linear-gradient(100deg,var(--text,#fff) 18%,color-mix(in srgb,var(--accent) 78%,white) 62%,var(--wv-cyan));-webkit-background-clip:text;background-clip:text;color:transparent}
.wv-dial{background:radial-gradient(circle at 50% 20%,color-mix(in srgb,var(--signal) 13%,transparent),transparent 48%),var(--wv-card);box-shadow:inset 0 1px 0 #fff2,0 18px 60px color-mix(in srgb,var(--signal) 12%,transparent)}
.wv-verdict,.wv-missions{box-shadow:inset 0 1px 0 #fff2,0 14px 45px #0002}.wv-chan{position:relative;overflow:hidden}.wv-chan:after{content:"";position:absolute;width:100px;height:100px;right:-50px;top:-50px;border-radius:50%;background:color-mix(in srgb,var(--accent) 12%,transparent);filter:blur(14px);pointer-events:none}.wv-chan:nth-child(3n) .ico{color:var(--wv-cyan);background:color-mix(in srgb,var(--wv-cyan) 14%,transparent)}.wv-chan:nth-child(3n+1) .ico{color:var(--wv-violet);background:color-mix(in srgb,var(--wv-violet) 14%,transparent)}.wv-chan:nth-child(3n+2) .ico{color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent)}
.wv-chan .ico svg{display:block}.wv-act,.wv-slot,.wv-streakbig,.wv-mission-check,.wv-search-btn,.wv-loc-btn,.wv-linkish,.wv-pulse-item,.wv-place,.wv-rt-tab,.wv-tab,.wv-sheet-item,.wv-dr-more,.wv-dr-close,.wv-rt-close{transition:transform .16s ease,border-color .16s ease,background .16s ease,box-shadow .16s ease}.wv-act:focus-visible,.wv-slot:focus-visible,.wv-chan:focus-visible,.wv-pulse-item:focus-visible,.wv-place:focus-visible,.wv-search-btn:focus-visible,.wv-loc-btn:focus-visible,.wv-tab:focus-visible{outline:3px solid color-mix(in srgb,var(--wv-cyan) 80%,transparent);outline-offset:2px}
.wv-act-primary{box-shadow:0 8px 24px color-mix(in srgb,var(--accent) 28%,transparent)}.wv-act-primary:hover{transform:translateY(-2px);box-shadow:0 12px 30px color-mix(in srgb,var(--accent) 40%,transparent)}
.wv-pulse{border-color:color-mix(in srgb,var(--wv-cyan) 24%,var(--wv-line));background:linear-gradient(90deg,color-mix(in srgb,var(--wv-cyan) 7%,transparent),var(--wv-card))}.wv-pulse-tag{color:var(--wv-cyan)}
.wv-new-pill.is-hot{box-shadow:0 0 18px color-mix(in srgb,var(--accent) 35%,transparent)}
.wv-trend{font-weight:800}.wv-trend.is-down{background:color-mix(in srgb,var(--wv-good) 10%,transparent)}.wv-trend.is-up{background:color-mix(in srgb,var(--wv-bad) 10%,transparent)}
@media(max-width:600px){.wv-today{padding-top:22px}.wv-today-head{gap:12px}.wv-loc{margin-left:0;align-items:flex-start}.wv-loc-search{left:0;right:auto;width:min(300px,calc(100vw - 44px))}.wv-actions{display:grid;grid-template-columns:1fr 1fr}.wv-act-primary{grid-column:1/-1;justify-content:center}.wv-checkin{align-items:stretch}.wv-slotstrip{flex:1;justify-content:space-between}.wv-slot{padding-inline:8px}.wv-slot span{display:none}.wv-streakbig{padding-inline:9px}.wv-streakbig small{display:none}.wv-rt-stats{grid-template-columns:repeat(2,1fr)}}

.wv-digest{margin-top:18px;padding:18px;border:1px solid color-mix(in srgb,var(--wv-violet) 30%,var(--wv-line));border-radius:22px;background:linear-gradient(135deg,color-mix(in srgb,var(--wv-violet) 9%,transparent),var(--wv-card))}.wv-digest-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:12px}.wv-digest-head h2{margin:6px 0 0;font:800 19px var(--font,system-ui);color:var(--wv-ink)}.wv-digest-fresh{font:700 10px var(--mono,ui-monospace);color:var(--wv-cyan);border:1px solid color-mix(in srgb,var(--wv-cyan) 35%,transparent);border-radius:999px;padding:5px 9px}.wv-digest-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}.wv-digest-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:5px;min-height:120px;padding:13px;border:1px solid var(--wv-line);border-left:3px solid var(--wv-good);border-radius:14px;background:color-mix(in srgb,var(--surface-low,#10151f) 72%,transparent);color:var(--wv-ink);text-align:left;cursor:pointer}.wv-digest-card:hover{transform:translateY(-2px);border-color:var(--wv-cyan);box-shadow:0 8px 24px #0003}.wv-digest-card.tone-warn{border-left-color:var(--wv-warn)}.wv-digest-card.tone-bad{border-left-color:var(--wv-bad)}.wv-digest-channel{font:800 9px var(--mono,ui-monospace);letter-spacing:.12em;color:var(--wv-cyan)}.wv-digest-card b{font:800 13px/1.35 var(--font,system-ui)}.wv-digest-card small{font:700 10.5px var(--mono,ui-monospace);color:var(--wv-mute)}.wv-digest-card p{margin:2px 0 0;font-size:11.5px;line-height:1.4;color:var(--wv-soft)}.wv-digest-card i{position:absolute;right:11px;bottom:11px;color:var(--accent)}.wv-digest-loading,.wv-digest-empty{grid-column:1/-1;margin:0;padding:16px;color:var(--wv-mute);font-size:13px}
/* v2.2.2 Glass Signal System: color is informative, never decorative noise */
:root{--glass-border:color-mix(in srgb,#fff 18%,transparent);--glass-highlight:color-mix(in srgb,#fff 10%,transparent);--glass-shadow:0 24px 80px rgba(0,0,0,.24)}
body.wv-shell:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(560px 420px at 12% 12%,color-mix(in srgb,var(--signal,var(--accent)) 10%,transparent),transparent 70%),radial-gradient(520px 440px at 88% 35%,color-mix(in srgb,var(--wv-cyan) 7%,transparent),transparent 72%);opacity:.85}
.wv-dial,.wv-verdict,.wv-missions,.wv-card,.wv-digest,.wv-place,.wv-chan,.wv-step{border-color:color-mix(in srgb,var(--glass-border),var(--wv-line));background:linear-gradient(145deg,color-mix(in srgb,#fff 7%,transparent),transparent 38%),linear-gradient(135deg,color-mix(in srgb,var(--surface-high,#161c29) 70%,transparent),color-mix(in srgb,var(--surface-low,#10151f) 60%,transparent));backdrop-filter:blur(24px) saturate(145%);box-shadow:inset 0 1px 0 var(--glass-highlight),var(--glass-shadow)}
.wv-dial{border-color:color-mix(in srgb,var(--signal,var(--accent)) 42%,var(--glass-border));box-shadow:inset 0 1px 0 #fff2,0 0 0 1px color-mix(in srgb,var(--signal,var(--accent)) 8%,transparent),0 26px 90px color-mix(in srgb,var(--signal,var(--accent)) 20%,transparent)}
.wv-dial .ov-risk-ring{box-shadow:0 0 0 7px color-mix(in srgb,var(--signal) 8%,transparent),0 0 48px color-mix(in srgb,var(--signal) 42%,transparent),inset 0 1px #fff3;transition:box-shadow .6s ease,transform .35s ease}.wv-dial:hover .ov-risk-ring{transform:scale(1.025)}
.wv-verdict[data-tone="bad"]{background:linear-gradient(135deg,color-mix(in srgb,var(--wv-bad) 13%,transparent),transparent 52%),var(--wv-card)}.wv-verdict[data-tone="warn"]{background:linear-gradient(135deg,color-mix(in srgb,var(--wv-warn) 12%,transparent),transparent 52%),var(--wv-card)}
.wv-digest{border-color:color-mix(in srgb,var(--wv-violet) 40%,var(--glass-border));background:linear-gradient(135deg,color-mix(in srgb,var(--wv-violet) 13%,transparent),color-mix(in srgb,var(--wv-cyan) 4%,transparent) 58%,transparent)}
.wv-digest-card{background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 7%,transparent),color-mix(in srgb,#fff 4%,transparent));backdrop-filter:blur(18px) saturate(160%);transition:transform .2s cubic-bezier(.2,.8,.2,1),box-shadow .2s ease,border-color .2s ease}.wv-digest-card:hover{transform:translateY(-4px) scale(1.01);box-shadow:0 16px 38px color-mix(in srgb,var(--accent) 14%,transparent),inset 0 1px #fff3}
.wv-chan{transition:transform .2s cubic-bezier(.2,.8,.2,1),box-shadow .2s ease,border-color .2s ease}.wv-chan:hover{box-shadow:0 18px 42px color-mix(in srgb,var(--accent) 12%,transparent),inset 0 1px #fff3}.wv-chan .ico{box-shadow:inset 0 1px #fff3,0 8px 22px color-mix(in srgb,currentColor 16%,transparent)}
.wv-pulse{box-shadow:inset 0 1px #fff2,0 12px 34px #0002}.wv-pulse-item{box-shadow:inset 0 1px #fff2}.wv-pulse-item:active,.wv-act:active,.wv-search-btn:active,.wv-loc-btn:active{transform:scale(.96)}
.wv-streak-chip{box-shadow:inset 0 1px #fff3,0 8px 22px color-mix(in srgb,var(--accent) 16%,transparent)}
.wv-rt-panel,.wv-dr-panel,.wv-sheet-panel,.wv-pal-panel{border-color:color-mix(in srgb,#fff 18%,var(--wv-line));background:linear-gradient(145deg,color-mix(in srgb,#fff 8%,transparent),transparent 35%),color-mix(in srgb,var(--surface-high,#161c29) 88%,transparent);box-shadow:inset 0 1px #fff3,0 30px 100px #0006}
@media (prefers-reduced-motion:reduce){.wv-dial:hover .ov-risk-ring,.wv-digest-card:hover,.wv-chan:hover{transform:none}}
/* v2.2.4 Prism Glass: controlled color follows the live signal */
html[data-theme="dark"]{--wv-glass-opacity:.48}html[data-theme="light"]{--wv-glass-opacity:.68}
body.wv-shell{isolation:isolate;background-color:var(--bg,#080b14)}
body.wv-shell:after{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;background:linear-gradient(115deg,color-mix(in srgb,var(--signal,var(--accent)) 5%,transparent),transparent 36%,color-mix(in srgb,var(--wv-violet) 4%,transparent) 70%,transparent);mix-blend-mode:screen}
.wv-dial,.wv-verdict,.wv-missions,.wv-card,.wv-digest,.wv-place,.wv-chan,.wv-step{position:relative;overflow:hidden;border:1px solid color-mix(in srgb,var(--signal,var(--accent)) 18%,var(--glass-border));background:linear-gradient(135deg,color-mix(in srgb,#fff 9%,transparent) 0%,transparent 24%),linear-gradient(145deg,color-mix(in srgb,var(--signal,var(--accent)) 8%,transparent),transparent 62%),color-mix(in srgb,var(--surface-high,#161c29) var(--wv-glass-opacity,.58),transparent);box-shadow:inset 0 1px 0 #fff3,inset 0 -1px 0 #0002,0 18px 55px #0002;}
.wv-dial:before,.wv-verdict:before,.wv-missions:before,.wv-card:before,.wv-digest:before,.wv-place:before,.wv-chan:before,.wv-step:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,#fff2,transparent 18%,transparent 76%,color-mix(in srgb,var(--signal,var(--accent)) 9%,transparent));opacity:.65}
.wv-dial>* ,.wv-verdict>* ,.wv-missions>* ,.wv-card>* ,.wv-digest>* ,.wv-place>* ,.wv-chan>* ,.wv-step>*{position:relative}
.wv-today-head,.wv-sec-head{letter-spacing:-.01em}.wv-sec{scroll-margin-top:24px}
.wv-kicker{color:color-mix(in srgb,var(--signal,var(--accent)) 72%,var(--accent));text-shadow:0 0 18px color-mix(in srgb,var(--signal,var(--accent)) 28%,transparent)}
.wv-risk-inner{box-shadow:inset 0 1px 8px #fff2,inset 0 -10px 24px color-mix(in srgb,var(--signal) 22%,transparent),0 0 28px color-mix(in srgb,var(--signal) 20%,transparent)}
.wv-digest-card,.wv-chan{min-height:132px}.wv-digest-card:after,.wv-chan:after{content:"";position:absolute;right:-38px;bottom:-45px;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--signal,var(--accent)) 18%,transparent),transparent 68%);pointer-events:none}
.wv-digest-card:nth-child(2n){--signal:var(--wv-cyan)}.wv-digest-card:nth-child(3n){--signal:var(--wv-violet)}.wv-digest-card:nth-child(4n){--signal:var(--wv-warn)}
.wv-digest-card:hover,.wv-chan:hover,.wv-place:hover{border-color:color-mix(in srgb,var(--signal,var(--accent)) 58%,var(--glass-border));box-shadow:inset 0 1px #fff4,0 18px 42px color-mix(in srgb,var(--signal,var(--accent)) 16%,transparent)}
.wv-act-primary{background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 62%,var(--wv-pink)));color:var(--accent-ink,#11151d);}
.wv-live i{box-shadow:0 0 0 4px color-mix(in srgb,var(--wv-good) 20%,transparent),0 0 14px var(--wv-good)}
.wv-streakbig,.wv-slot.is-now,.wv-streak-chip{box-shadow:inset 0 1px #fff3,0 8px 26px color-mix(in srgb,var(--accent) 18%,transparent)}
.wv-tabbar{box-shadow:0 -10px 40px #0004,inset 0 1px #fff2}.wv-tab.is-active{box-shadow:inset 0 0 18px color-mix(in srgb,var(--accent) 10%,transparent)}
.wv-dr-item,.wv-rt-quest,.wv-rt-slot,.wv-rt-badge{background:linear-gradient(135deg,#fff1,transparent 38%),color-mix(in srgb,var(--surface-low,#10151f) 76%,transparent);backdrop-filter:blur(16px) saturate(145%)}
@media(max-width:720px){.wv-today-grid,.wv-now-grid,.wv-chan-grid,.wv-digest-grid{gap:10px}.wv-dial,.wv-verdict,.wv-missions,.wv-card,.wv-digest,.wv-chan{border-radius:18px}.wv-digest-card,.wv-chan{min-height:118px;padding:15px}.wv-today-head h1{font-size:clamp(27px,8vw,37px)}}
@media(prefers-reduced-motion:reduce){.wv-digest-card:hover,.wv-chan:hover,.wv-place:hover{transform:none}}
