/* ===================================================================
   week-view.css — wv- namespace
   Warm editorial palette, matched to the homepage sph- system but
   dashboard-tuned: brighter ink ramp, dense spacing, functional type.
   Light by default; add data-theme="dark" on <html> for dark.
   =================================================================== */

:root, [data-theme="light"] {
  --wv-bg:#F8F8F6; --wv-surface:#FFFFFF; --wv-surface2:#F0EDE5;
  --wv-ink:#1A1815; --wv-ink2:rgba(26,24,21,.74); --wv-ink3:rgba(26,24,21,.56);
  --wv-line:rgba(26,24,21,.12); --wv-line2:rgba(26,24,21,.24);
  --wv-ok:#3B6D33;   --wv-ok-bg:rgba(59,109,51,.10);
  --wv-info:#2D4A7A; --wv-info-bg:rgba(45,74,122,.10);
  --wv-bad:#8B2D2D;  --wv-bad-bg:rgba(139,45,45,.10);
  --wv-btn:#1A1815;  --wv-btn-tx:#F8F8F6;
  --wv-scrim:rgba(26,24,21,.55);
}
[data-theme="dark"] {
  --wv-bg:#1C1A17; --wv-surface:#252320; --wv-surface2:#2E2B27;
  --wv-ink:#F4F1E8; --wv-ink2:rgba(244,241,232,.78); --wv-ink3:rgba(244,241,232,.58);
  --wv-line:rgba(244,241,232,.12); --wv-line2:rgba(244,241,232,.24);
  --wv-ok:#9CBF86;   --wv-ok-bg:rgba(143,173,122,.14);
  --wv-info:#93B2DF; --wv-info-bg:rgba(138,169,214,.14);
  --wv-bad:#D08383;  --wv-bad-bg:rgba(199,115,115,.14);
  --wv-btn:#F4F1E8;  --wv-btn-tx:#1C1A17;
  --wv-scrim:rgba(10,9,8,.7);
}

.wv-head, .wv-tabs, .wv-day, .wv-panel, .wv-toast,
.wv-blank-state { font-family:'Inter', system-ui, sans-serif; }

/* ---------- week bar ---------- */
.wv-head {
  display:flex; align-items:center; justify-content:space-between;
  gap:16px; flex-wrap:wrap; padding:16px 24px;
  background:var(--wv-surface); border:1px solid var(--wv-line);
  border-radius:10px 10px 0 0; border-bottom:none; color:var(--wv-ink);
}
.wv-title { font-family:'Newsreader', Georgia, serif; font-weight:500; font-size:19px; }
.wv-sub { font-size:13.5px; color:var(--wv-ink3); margin-top:2px; }
.wv-nav { display:flex; align-items:center; gap:8px; }
.wv-arrow {
  width:32px; height:32px; border-radius:6px; cursor:pointer;
  background:transparent; border:1px solid var(--wv-line2); color:var(--wv-ink2);
  font-size:17px; line-height:1; display:inline-flex; align-items:center; justify-content:center;
}
.wv-arrow:hover:not(:disabled) { background:var(--wv-surface2); color:var(--wv-ink); }
.wv-arrow:disabled { opacity:.3; cursor:default; }

/* ---------- platform tabs ---------- */
.wv-tabs {
  display:flex; gap:2px; padding:0 24px; overflow-x:auto;
  background:var(--wv-surface); border:1px solid var(--wv-line);
  border-radius:0 0 10px 10px; margin-bottom:16px;
}
.wv-tab {
  padding:13px 16px 12px; cursor:pointer; white-space:nowrap;
  background:transparent; border:none; border-bottom:2px solid transparent;
  font-family:inherit; font-size:14px; font-weight:500; color:var(--wv-ink3);
}
.wv-tab:hover { color:var(--wv-ink); }
.wv-tab.on { color:var(--wv-ink); border-bottom-color:var(--wv-ink); }
.wv-tabs-note {
  margin-left:auto; align-self:center; font-size:12.5px;
  color:var(--wv-ink3); padding-left:16px; white-space:nowrap;
}

/* ---------- day card ---------- */
.wv-day {
  display:grid; grid-template-columns:132px 1fr; gap:24px;
  padding:24px; margin-bottom:12px; color:var(--wv-ink);
  background:var(--wv-surface); border:1px solid var(--wv-line); border-radius:10px;
}
.wv-day.wv-past { opacity:.72; }
.wv-thumb {
  position:relative; width:132px; aspect-ratio:9/16;
  border-radius:8px; overflow:hidden;
  background:var(--wv-surface2); border:1px solid var(--wv-line);
}
.wv-thumb img, .wv-thumb video { width:100%; height:100%; object-fit:cover; display:block; }
.wv-thumb.wv-busy {
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:10px; text-align:center; padding:12px;
}
.wv-spin {
  width:24px; height:24px; border-radius:50%;
  border:2px solid var(--wv-line2); border-top-color:var(--wv-info);
  animation:wv-spin 1s linear infinite;
}
@keyframes wv-spin { to { transform:rotate(360deg); } }
.wv-thumb-note { font-size:12px; color:var(--wv-ink3); line-height:1.4; }

.wv-body { min-width:0; }
.wv-when {
  font-size:13px; color:var(--wv-ink3); margin-bottom:12px;
  display:flex; align-items:center; gap:10px; flex-wrap:wrap;
}
.wv-text {
  font-size:15px; line-height:1.6; margin:0 0 16px; color:var(--wv-ink);
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.wv-stat {
  display:inline-flex; align-items:center; gap:6px;
  padding:5px 11px; border-radius:5px; font-size:13px; font-weight:500;
}
.wv-stat.wv-ok   { background:var(--wv-ok-bg);   color:var(--wv-ok); }
.wv-stat.wv-info { background:var(--wv-info-bg); color:var(--wv-info); }
.wv-stat.wv-bad  { background:var(--wv-bad-bg);  color:var(--wv-bad); }
.wv-acts { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.wv-note { font-size:13px; color:var(--wv-ink3); }

/* ---------- buttons ---------- */
.wv-btn {
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  padding:11px 18px; border-radius:7px; cursor:pointer;
  font-family:inherit; font-size:14px; font-weight:500; line-height:1;
  border:1px solid transparent; white-space:nowrap;
  transition:background .15s ease, opacity .15s ease;
}
.wv-btn-p { background:var(--wv-btn); color:var(--wv-btn-tx); }
.wv-btn-p:hover { opacity:.88; }
.wv-btn-p:disabled { opacity:.45; cursor:default; }
.wv-btn-q { background:transparent; color:var(--wv-ink2); border-color:var(--wv-line2); }
.wv-btn-q:hover { background:var(--wv-surface2); color:var(--wv-ink); }

/* ---------- empty ---------- */
.wv-blank-state {
  padding:64px 40px; text-align:center; color:var(--wv-ink);
  background:var(--wv-surface); border:1px solid var(--wv-line); border-radius:10px;
}
.wv-blank-state h3 { font-family:'Newsreader',Georgia,serif; font-weight:500; font-size:22px; margin:0 0 10px; }
.wv-blank-state p { font-size:14.5px; color:var(--wv-ink3); max-width:420px; margin:0 auto; line-height:1.6; }

/* ---------- panel ---------- */
.wv-scrim {
  position:fixed; inset:0; background:var(--wv-scrim); z-index:1000;
  display:flex; align-items:flex-start; justify-content:center;
  padding:40px 20px; overflow-y:auto;
}
.wv-panel {
  width:100%; max-width:620px; background:var(--wv-bg); color:var(--wv-ink);
  border:1px solid var(--wv-line2); border-radius:12px; overflow:hidden;
}
.wv-panel-head {
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:16px 24px; border-bottom:1px solid var(--wv-line); background:var(--wv-surface);
}
.wv-panel-title { font-family:'Newsreader',Georgia,serif; font-weight:500; font-size:19px; }
.wv-panel-sub { font-size:13px; color:var(--wv-ink3); margin-top:2px; }
.wv-close {
  width:34px; height:34px; border-radius:6px; cursor:pointer;
  background:transparent; border:1px solid var(--wv-line2);
  color:var(--wv-ink2); font-size:20px; line-height:1; font-family:inherit;
}
.wv-close:hover { background:var(--wv-surface2); }
.wv-panel-body { padding:24px; }
.wv-panel-foot {
  display:flex; justify-content:space-between; align-items:center; gap:8px;
  padding:16px 24px; border-top:1px solid var(--wv-line); background:var(--wv-surface);
}
.wv-foot-btns { display:flex; gap:8px; }
.wv-foot-note { font-size:12.5px; color:var(--wv-ink3); }

/* shared-image strip */
.wv-shared {
  display:flex; gap:16px; align-items:center; padding:12px; margin-bottom:24px;
  background:var(--wv-surface); border:1px solid var(--wv-line); border-radius:8px;
}
.wv-shared img { width:56px; aspect-ratio:9/16; object-fit:cover; border-radius:5px; display:block; flex-shrink:0; }
.wv-shared-blank { width:56px; aspect-ratio:9/16; border-radius:5px; background:var(--wv-surface2); flex-shrink:0; }
.wv-shared-label { font-size:13.5px; font-weight:500; }
.wv-shared-note { font-size:12.5px; color:var(--wv-ink3); margin-top:2px; }

/* caption fields */
.wv-field { margin-bottom:24px; }
.wv-field-head { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:8px; }
.wv-field-label { font-size:14px; font-weight:600; }
.wv-count { font-size:12.5px; color:var(--wv-ink3); }
.wv-count.wv-over { color:var(--wv-bad); font-weight:600; }
.wv-area {
  width:100%; min-height:110px; resize:vertical;
  padding:12px 16px; border-radius:8px;
  background:var(--wv-surface); color:var(--wv-ink); border:1px solid var(--wv-line2);
  font-family:inherit; font-size:14.5px; line-height:1.6;
}
.wv-area:focus { outline:2px solid var(--wv-ink); outline-offset:-1px; }
.wv-area::placeholder { color:var(--wv-ink3); }
.wv-field-foot { display:flex; justify-content:flex-end; margin-top:6px; }
.wv-link {
  background:none; border:none; cursor:pointer; padding:4px 2px;
  font-family:inherit; font-size:13px; color:var(--wv-ink2);
  text-decoration:underline; text-underline-offset:3px;
}
.wv-link:hover { color:var(--wv-ink); }

/* picture panel */
.wv-preview { display:flex; justify-content:center; margin-bottom:24px; }
.wv-preview img {
  width:200px; aspect-ratio:9/16; object-fit:cover;
  border-radius:10px; border:1px solid var(--wv-line); display:block;
}
.wv-preview-blank { width:200px; }
.wv-label { font-size:14px; font-weight:600; margin-bottom:6px; }
.wv-sublabel { font-size:13px; color:var(--wv-ink3); margin-bottom:12px; }
.wv-chips { display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; }
.wv-chip {
  padding:6px 12px; border-radius:999px; cursor:pointer;
  background:transparent; border:1px solid var(--wv-line2);
  font-family:inherit; font-size:12.5px; color:var(--wv-ink2);
}
.wv-chip:hover { background:var(--wv-surface2); color:var(--wv-ink); }
.wv-learn {
  margin-top:16px; padding:12px 16px; border-radius:8px;
  background:var(--wv-info-bg); color:var(--wv-info);
  font-size:13px; line-height:1.5;
}

/* toast */
.wv-toast {
  position:fixed; bottom:28px; left:50%;
  transform:translateX(-50%) translateY(40px);
  background:var(--wv-ink); color:var(--wv-bg);
  padding:12px 22px; border-radius:7px; font-size:14px;
  font-family:'Inter',system-ui,sans-serif;
  opacity:0; pointer-events:none; z-index:1100;
  transition:opacity .2s ease, transform .2s ease;
}
.wv-toast.on { opacity:1; transform:translateX(-50%) translateY(0); }

@media (max-width:640px) {
  .wv-day { grid-template-columns:96px 1fr; gap:16px; padding:16px; }
  .wv-thumb { width:96px; }
  .wv-tabs-note { display:none; }
  .wv-panel-foot { flex-direction:column; align-items:stretch; }
  .wv-foot-btns .wv-btn { flex:1; }
}
@media (prefers-reduced-motion: reduce) {
  .wv-spin { animation:none; }
  .wv-toast { transition:none; }
}

/* #postsContainer keeps its .posts-grid class from the old two-up layout */
#postsContainer { display:block !important; grid-template-columns:none !important; gap:0 !important; }
.wv-past-bar {
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:12px 20px; margin-bottom:12px;
  background:var(--wv-surface); border:1px solid var(--wv-line);
  border-radius:8px; font-size:13.5px; color:var(--wv-ink3);
}
.wv-past-sum { min-width:0; }