/* v2 styles: public dashboard page and its editor (owner W2-PUB).
 * Deltas over css/public_dashboard/{dashboard,editor}.css, scoped under .dp-v2.
 * The page root `.pub-dashboard` / `.pub-editor` already takes its font and brand
 * colours from the v2 theme through `--fdfont` / `--teal` (common.css), so only
 * geometry and neutrals are restated here. */

/* ---- document ------------------------------------------------------------ */
/* Only the public dashboard and its editor: this file is linked on every page, and an unscoped
 * body rule turned every short page white below its content. */
.dp-v2 body:has(.pub-dashboard) { font-family: var(--dp-font); background: var(--dp-card); color: var(--dp-fg); }
.dp-v2 .pub-dashboard { font-size: var(--dp-font-size); }

/* ---- sticky bar ---------------------------------------------------------- */
.dp-v2 .pub-dashboard .pubbar { border-bottom-color: var(--dp-border); }
.dp-v2 .pub-dashboard .pubbar .fname { font-weight: 600; }
.dp-v2 .pub-dashboard .pubbar .yearctl { color: var(--dp-muted-fg); }
.dp-v2 .pub-dashboard .pubbar .yearctl select {
  height: 32px; border-color: var(--dp-input-border); border-radius: var(--dp-radius-ctl);
  padding: 0 .65rem; font-size: var(--dp-font-size); background: var(--dp-card);
}
.dp-v2 .pub-dashboard .pubbar .yearctl select:focus-visible {
  outline: 2px solid var(--dp-ring); outline-offset: 0;
}

/* ---- hero ---------------------------------------------------------------- */
.dp-v2 .pub-dashboard .hero .kick { color: var(--dp-muted-fg); }
.dp-v2 .pub-dashboard .hero .num { font-weight: 600; letter-spacing: -.02em; }
.dp-v2 .pub-dashboard .hero .metlabel { color: var(--dp-muted-fg); }
.dp-v2 .pub-dashboard .hero .headline { color: var(--dp-fg); font-weight: 600; }
.dp-v2 .pub-dashboard .hero .storyline { color: var(--dp-muted-fg); }
.dp-v2 .pub-dashboard .hero .proofline {
  background: var(--dp-muted); color: var(--dp-muted-fg); font-weight: 500;
}

/* ---- pulse tiles and chapters -------------------------------------------- */
.dp-v2 .pub-dashboard .ptile {
  background: var(--dp-card); border-color: var(--dp-border); border-radius: var(--dp-radius); box-shadow: none;
}
.dp-v2 .pub-dashboard .ptile .n { font-weight: 600; }
.dp-v2 .pub-dashboard .ptile .l { color: var(--dp-muted-fg); }
.dp-v2 .pub-dashboard .chapter { border-top-color: var(--dp-border); }
.dp-v2 .pub-dashboard .ch-txt .kick { color: var(--dp-muted-fg); }
.dp-v2 .pub-dashboard .ch-head { color: var(--dp-fg); }
.dp-v2 .pub-dashboard .ch-ctx { color: var(--dp-muted-fg); }
.dp-v2 .pub-dashboard .ch-graph .gcard {
  background: var(--dp-card); border-color: var(--dp-border); border-radius: var(--dp-radius); box-shadow: none;
}
.dp-v2 .pub-dashboard .ch-graph h3 { color: var(--dp-muted-fg); }
.dp-v2 .pub-dashboard .statwrap .bignum { color: var(--dp-fg); font-weight: 600; }
.dp-v2 .pub-dashboard .statwrap .blabel,
.dp-v2 .pub-dashboard .nodata,
.dp-v2 .pub-dashboard .lock { color: var(--dp-muted-fg); }

/* ---- footer -------------------------------------------------------------- */
.dp-v2 .pub-dashboard .p-cta { background: var(--dp-muted); border-radius: var(--dp-radius); }
.dp-v2 .pub-dashboard .p-cta .s { color: var(--dp-muted-fg); }
.dp-v2 .pub-dashboard .btn {
  height: 32px; padding: 0 .9rem; border-radius: var(--dp-radius); font-size: var(--dp-font-size);
}
.dp-v2 .pub-dashboard .btn-teal:hover { background: var(--dp-accent-fg); }
.dp-v2 .pub-dashboard .btn:focus-visible { outline: 2px solid var(--dp-ring); outline-offset: 2px; }
.dp-v2 .pub-dashboard .p-verif { border-top-color: var(--dp-border); }
.dp-v2 .pub-dashboard .p-verif p { color: var(--dp-muted-fg); }
.dp-v2 .pub-dashboard .p-verif b { color: var(--dp-fg); }

/* ---- editor (inside the app chrome) -------------------------------------- */
.dp-v2 .pub-editor .pub-edhead h1 { color: var(--dp-fg); font-size: 1.1rem; font-weight: 600; }
.dp-v2 .pub-editor .pub-edhead .sub { color: var(--dp-muted-fg); }
.dp-v2 .pub-editor .pub-editseg { background: var(--dp-card); }
.dp-v2 .pub-editor .pub-edstate { color: var(--dp-muted-fg); }
.dp-v2 .pub-editor .pub-edstate[data-state="saved"] { color: var(--dp-accent-fg); background: var(--dp-accent); }
.dp-v2 .pub-editor .pub-edstate[data-state="error"] {
  color: var(--dp-warning-fg); background: var(--dp-warning-bg); border-color: var(--dp-warning-border);
}
.dp-v2 .pub-editor .pub-frame,
.dp-v2 .pub-editor .pub-preview-host iframe {
  background: var(--dp-card); border-color: var(--dp-border); border-radius: var(--dp-radius); box-shadow: none;
}
.dp-v2 .pub-editor .pub-counter { color: var(--dp-muted-fg); }
.dp-v2 .pub-editor .pub-counter.full { color: var(--dp-warning-fg); }
.dp-v2 .pub-editor .pub-ferr {
  color: var(--dp-warning-fg); background: var(--dp-warning-bg); border-color: var(--dp-warning-border);
  border-radius: var(--dp-radius-ctl);
}
.dp-v2 .pub-editor [contenteditable].invalid { outline-color: var(--dp-orange); }
.dp-v2 .pub-editor .chtools button {
  background: var(--dp-card); border-color: var(--dp-border); border-radius: var(--dp-radius-ctl);
  box-shadow: none;
}
.dp-v2 .pub-editor .chtools button:hover { color: var(--dp-accent-fg); border-color: var(--dp-ring); }
.dp-v2 .pub-editor .addch button { background: var(--dp-card); border-color: var(--dp-input-border); }
.dp-v2 .pub-editor .addch button:hover { border-color: var(--dp-ring); }
