/* ============================================================================
 * D20Keep - Advanced Character System  (Phase 2 styles)
 * EVERYTHING scoped under .divine-character-system (+ body.dcs-modal-open).
 * Reuses existing theme tokens; introduces no global selectors.
 * ==========================================================================*/

.divine-character-system { --dcs-gold: var(--gold, var(--cx-accent)); --dcs-gold-dim: var(--gold-dim, var(--cx-accent-deep));
  --dcs-border: var(--border, var(--cx-border)); --dcs-card: var(--bg-card, var(--cx-surface)); --dcs-surface: var(--bg-surface, var(--cx-field));
  --dcs-text: var(--text-primary, var(--cx-text)); --dcs-dim: var(--text-dim, var(--cx-text-dim)); --dcs-red: var(--red, var(--cx-danger));
  --dcs-readable: var(--cx-accent-bright); --dcs-readable-dim: var(--cx-accent-bright);
  display: block; margin: 0 0 34px; }

.divine-character-system .dcs-wrap { border: 1px solid var(--dcs-border); border-radius: 14px;
  background: linear-gradient(160deg, color-mix(in srgb,var(--cx-accent-deep) 5%,transparent), rgba(0,0,0,.18)); padding: 20px 20px 24px; }
.divine-character-system .dcs-head { margin-bottom: 14px; }
.divine-character-system .dcs-title { font-family: 'Cinzel', serif; font-size: 21px; letter-spacing: .06em;
  color: var(--dcs-gold); }
.divine-character-system .dcs-sub { font-family: 'EB Garamond', serif; font-size: 13.5px; color: var(--dcs-dim); margin-top: 2px; }

/* player tabs */
.divine-character-system .dcs-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.divine-character-system .dcs-tab { font-family: 'Cinzel', serif; font-size: 12.5px; letter-spacing: .04em;
  padding: 7px 16px; border-radius: 9px; cursor: pointer; color: var(--dcs-text);
  background: color-mix(in srgb,var(--cx-text-strong) 4%,transparent); border: 1px solid var(--dcs-border); transition: all .18s; }
.divine-character-system .dcs-tab:hover { border-color: var(--dcs-gold-dim); }
.divine-character-system .dcs-tab.active { background: linear-gradient(150deg, color-mix(in srgb,var(--cx-accent-deep) 24%,transparent), color-mix(in srgb,var(--cx-accent-deep) 8%,transparent));
  border-color: var(--dcs-gold-dim); color: var(--dcs-gold); }

/* manager grid */
.divine-character-system .dcs-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; }
.divine-character-system .dcs-card { position: relative; text-align: left; cursor: pointer; padding: 0; overflow: hidden;
  border: 1px solid var(--dcs-border); border-radius: 12px; background: var(--dcs-card); color: var(--dcs-text);
  transition: transform .16s, border-color .16s, box-shadow .16s; display: flex; flex-direction: column; }
.divine-character-system .dcs-card:hover { transform: translateY(-3px); border-color: var(--dcs-gold-dim);
  box-shadow: 0 10px 30px rgba(0,0,0,.5), 0 0 18px color-mix(in srgb,var(--cx-accent-deep) 8%,transparent); }
.divine-character-system .dcs-card-empty { opacity: .72; }
.divine-character-system .dcs-card-empty:hover { opacity: 1; }
.divine-character-system .dcs-card-art { height: 110px; background-size: cover; background-position: center top;
  border-bottom: 1px solid var(--dcs-border); }
.divine-character-system .dcs-card-art-empty { display: flex; align-items: center; justify-content: center;
  background: radial-gradient(circle at 50% 40%, color-mix(in srgb,var(--cx-accent-deep) 10%,transparent), rgba(0,0,0,.25)); }
.divine-character-system .dcs-card-art-empty span { font-family: 'Cinzel', serif; font-size: 30px; color: color-mix(in srgb,var(--cx-accent-deep) 40%,transparent); }
.divine-character-system .dcs-card-body { padding: 11px 13px 13px; flex: 1; }
.divine-character-system .dcs-card-name { font-family: 'Cinzel', serif; font-size: 15px; color: var(--dcs-gold); }
.divine-character-system .dcs-card-meta { display: flex; align-items: center; gap: 8px; margin: 6px 0 4px; }
.divine-character-system .dcs-lvl { font-family: 'Cinzel', serif; font-size: 12px; color: var(--dcs-text); }
.divine-character-system .dcs-status { font-size: 10px; letter-spacing: .04em; text-transform: uppercase;
  padding: 1px 7px; border-radius: 9px; border: 1px solid var(--dcs-border); color: var(--dcs-dim); }
.divine-character-system .dcs-status-active { color: var(--cx-success); border-color: color-mix(in srgb,var(--cx-success) 40%,transparent); }
.divine-character-system .dcs-status-completed { color: var(--dcs-gold); border-color: var(--dcs-gold-dim); }
.divine-character-system .dcs-status-locked { color: var(--dcs-dim); }
.divine-character-system .dcs-card-class { font-family: 'EB Garamond', serif; font-size: 13.5px; color: var(--dcs-text); min-height: 18px; }
.divine-character-system .dcs-sub-tag { color: var(--dcs-dim); font-size: 12px; }
.divine-character-system .dcs-card-foot { display: flex; justify-content: space-between; margin-top: 8px;
  font-family: 'EB Garamond', serif; font-size: 11.5px; color: var(--dcs-dim); }
.divine-character-system .dcs-card-begin { font-family: 'EB Garamond', serif; font-size: 13.5px; color: var(--dcs-gold-dim); margin-top: 6px; }

/* ---- modal editor ---- */
body.dcs-modal-open { overflow: hidden; }
.divine-character-system .dcs-overlay { position: fixed; inset: 0; width: 100vw; height: 100vh; height: 100dvh; z-index: 9000; display: flex; align-items: center;
  justify-content: center; padding: 16px; background: color-mix(in srgb,var(--cx-bg) 74%,transparent); backdrop-filter: blur(3px);
  animation: dcsFade .18s ease; overflow: auto; box-sizing: border-box; }
@keyframes dcsFade { from { opacity: 0; } to { opacity: 1; } }
.divine-character-system .dcs-modal { width: min(880px, calc(100vw - 32px)); background: var(--dcs-surface);
  border: 1px solid var(--dcs-gold-dim); border-radius: 16px; box-shadow: 0 30px 80px rgba(0,0,0,.6);
  animation: dcsRise .22s ease; margin: auto; display: flex; flex-direction: column; max-height: calc(100vh - 32px); max-height: calc(100dvh - 32px); }
@keyframes dcsRise { from { transform: translateY(14px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
.divine-character-system .dcs-modal-head { flex: 0 0 auto; position: sticky; top: 0; z-index: 2; display: flex; align-items: center; gap: 14px;
  padding: 16px 20px; border-bottom: 1px solid var(--dcs-border);
  background: linear-gradient(180deg, color-mix(in srgb,var(--cx-surface) 98%,transparent), color-mix(in srgb,var(--cx-surface) 92%,transparent)); border-radius: 16px 16px 0 0; }
.divine-character-system .dcs-modal-title { flex: 1; font-family: 'Cinzel', serif; font-size: 19px; color: var(--dcs-gold); }
.divine-character-system .dcs-modal-sub { display: block; font-family: 'EB Garamond', serif; font-size: 11.5px;
  letter-spacing: .03em; color: var(--dcs-dim); text-transform: none; }
.divine-character-system .dcs-save { font-family: 'EB Garamond', serif; font-size: 12.5px; color: var(--cx-success); min-width: 70px; text-align: right; }
.divine-character-system .dcs-close { background: transparent; border: none; color: var(--dcs-dim); font-size: 26px;
  line-height: 1; cursor: pointer; padding: 0 4px; }
.divine-character-system .dcs-close:hover { color: var(--dcs-red); }
.divine-character-system .dcs-modal-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 8px 20px 22px; }
.divine-character-system .dcs-modal-foot { flex: 0 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 12px 20px; border-top: 1px solid var(--dcs-gold-dim);
  background: linear-gradient(0deg, color-mix(in srgb,var(--cx-surface) 98%,transparent), color-mix(in srgb,var(--cx-surface) 92%,transparent)); border-radius: 0 0 16px 16px; }
.divine-character-system .dcs-modal-foot-right { display: flex; gap: 10px; flex-wrap: wrap; }

/* ---- collapsible sections ---- */
.divine-character-system .dcs-section { border-bottom: 1px solid var(--dcs-border); }
.divine-character-system .dcs-section-head { width: 100%; text-align: left; background: transparent; border: none;
  cursor: pointer; display: flex; justify-content: space-between; align-items: center; padding: 14px 2px;
  font-family: 'Cinzel', serif; font-size: 13px; letter-spacing: .08em; text-transform: uppercase; color: var(--dcs-gold); }
.divine-character-system .dcs-chev { color: var(--dcs-gold-dim); font-size: 10px; }
.divine-character-system .dcs-section-body { display: none; padding: 4px 2px 18px; }
.divine-character-system .dcs-section.open > .dcs-section-body { display: block; }

/* ---- fields ---- */
.divine-character-system .dcs-row { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 6px; }
.divine-character-system .dcs-field { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 150px; }
.divine-character-system .dcs-field-num { max-width: 150px; }
.divine-character-system .dcs-field-area { flex-basis: 100%; }
.divine-character-system .dcs-field > span { font-family: 'Cinzel', serif; font-size: 9.5px; letter-spacing: .07em;
  text-transform: uppercase; color: var(--dcs-dim); }
.divine-character-system .dcs-input { width: 100%; background: var(--cx-bg-2); border: 1px solid var(--dcs-border);
  color: var(--dcs-text); border-radius: 8px; padding: 8px 10px; font-family: 'EB Garamond', serif; font-size: 14px; outline: none; }
.divine-character-system .dcs-input:focus { border-color: var(--dcs-gold-dim); }
.divine-character-system select.dcs-input { cursor: pointer; }
.divine-character-system .dcs-textarea { resize: vertical; min-height: 44px; line-height: 1.5; }
.divine-character-system .dcs-journal { min-height: 160px; }
.divine-character-system .dcs-w-sm { max-width: 72px; }
.divine-character-system .dcs-w-md { max-width: 140px; }

.divine-character-system .dcs-subhead { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: .1em;
  text-transform: uppercase; color: var(--dcs-gold-dim); margin: 16px 0 7px; display: flex; align-items: center; gap: 10px; }
.divine-character-system .dcs-derived { font-size: 16px; font-weight: 700; color: var(--dcs-gold); }
.divine-character-system .dcs-hint, .divine-character-system .dcs-note { font-family: 'EB Garamond', serif;
  font-size: 12px; color: var(--dcs-dim); text-transform: none; letter-spacing: 0; }
.divine-character-system .dcs-note { margin-bottom: 8px; }

/* multi-input lines + mini-cards */
.divine-character-system .dcs-line { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 7px; }
.divine-character-system .dcs-line .dcs-input { flex: 1; min-width: 90px; }
.divine-character-system .dcs-card-mini { border: 1px solid var(--dcs-border); border-radius: 10px; padding: 10px 12px;
  margin-bottom: 9px; background: color-mix(in srgb,var(--cx-surface) 45%,transparent); }

/* ability + checks + skills */
.divine-character-system .dcs-grid6 { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; }
.divine-character-system .dcs-checks { display: flex; flex-wrap: wrap; gap: 10px; }
.divine-character-system .dcs-check { display: inline-flex; align-items: center; gap: 6px; font-family: 'EB Garamond', serif;
  font-size: 13px; color: var(--dcs-text); cursor: pointer; }
.divine-character-system .dcs-skills { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px 14px; }
.divine-character-system .dcs-skill { display: flex; align-items: center; gap: 8px; font-family: 'EB Garamond', serif;
  font-size: 13.5px; color: var(--dcs-text); }
.divine-character-system .dcs-skill-state { width: 26px; height: 26px; border-radius: 7px; cursor: pointer;
  border: 1px solid var(--dcs-border); background: color-mix(in srgb,var(--cx-text-strong) 3%,transparent); color: var(--dcs-dim); font-size: 13px; }
.divine-character-system .dcs-skill-state.prof { color: var(--dcs-gold); border-color: var(--dcs-gold-dim); }
.divine-character-system .dcs-skill-state.exp { color: var(--cx-success); border-color: color-mix(in srgb,var(--cx-success) 50%,transparent); }

/* death saves + slots */
.divine-character-system .dcs-deathsaves { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px;
  font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--dcs-dim); }
.divine-character-system .dcs-pips { display: inline-flex; gap: 6px; margin-right: 8px; }
.divine-character-system .dcs-pip { width: 18px; height: 18px; border-radius: 50%; cursor: pointer;
  border: 1px solid var(--dcs-border); background: transparent; }
.divine-character-system .dcs-pip.succ { background: var(--cx-success); border-color: var(--cx-success); }
.divine-character-system .dcs-pip.fail { background: var(--dcs-red); border-color: var(--dcs-red); }
.divine-character-system .dcs-slots { display: grid; grid-template-columns: repeat(9, 1fr); gap: 7px; }
.divine-character-system .dcs-slot { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.divine-character-system .dcs-slot span { font-family: 'Cinzel', serif; font-size: 10px; color: var(--dcs-gold-dim); }
.divine-character-system .dcs-slot .dcs-input { text-align: center; padding: 6px 2px; }

/* add/del + chips */
.divine-character-system .dcs-add { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: .04em; cursor: pointer;
  padding: 7px 14px; border-radius: 8px; color: var(--dcs-gold); background: color-mix(in srgb,var(--cx-accent-deep) 10%,transparent);
  border: 1px solid var(--dcs-gold-dim); margin-top: 4px; transition: background .15s; }
.divine-character-system .dcs-add:hover { background: color-mix(in srgb,var(--cx-accent-deep) 20%,transparent); }
.divine-character-system .dcs-del { background: transparent; border: none; color: color-mix(in srgb,var(--cx-danger) 55%,transparent); cursor: pointer;
  font-size: 16px; line-height: 1; padding: 0 6px; }
.divine-character-system .dcs-del:hover { color: var(--dcs-red); }
.divine-character-system .dcs-chiplist { display: flex; flex-wrap: wrap; gap: 8px; }
.divine-character-system .dcs-chiprow { display: flex; align-items: center; gap: 2px; }
.divine-character-system .dcs-chiprow .dcs-input { min-width: 120px; }

/* ---- responsive ---- */
@media (max-width: 768px) {
  .divine-character-system .dcs-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
  .divine-character-system .dcs-grid6 { grid-template-columns: repeat(3, 1fr); }
  .divine-character-system .dcs-skills { grid-template-columns: repeat(2, 1fr); }
  .divine-character-system .dcs-slots { grid-template-columns: repeat(5, 1fr); }
  .divine-character-system .dcs-overlay { padding: 12px 8px; }
  .divine-character-system .dcs-modal-body { padding: 6px 13px 18px; }
  .divine-character-system .dcs-field-num { max-width: none; }
  .divine-character-system .dcs-input { font-size: 16px; } /* iOS no-zoom */
}
@media (max-width: 420px) {
  .divine-character-system .dcs-grid { grid-template-columns: 1fr 1fr; }
  .divine-character-system .dcs-grid6 { grid-template-columns: repeat(3, 1fr); }
  .divine-character-system .dcs-slots { grid-template-columns: repeat(3, 1fr); }
}

/* ============================================================================
 * Phase 3 — Divine Combat Dashboard (scoped)
 * ==========================================================================*/
.divine-character-system .dcs-headrow { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.divine-character-system .dcs-formtoggle { display: inline-flex; border: 1px solid var(--dcs-border); border-radius: 10px; overflow: hidden; }
.divine-character-system .dcs-form-btn { font-family: 'Cinzel', serif; font-size: 12px; letter-spacing: .04em; padding: 8px 16px;
  cursor: pointer; background: transparent; border: none; color: var(--dcs-dim); transition: all .18s; }
.divine-character-system .dcs-form-btn:hover { color: var(--dcs-text); }
.divine-character-system .dcs-form-btn.active { background: linear-gradient(150deg, color-mix(in srgb,var(--cx-accent-deep) 26%,transparent), color-mix(in srgb,var(--cx-accent-deep) 8%,transparent));
  color: var(--dcs-gold); }

.divine-character-system .dcs-dashboard { animation: dcsFade .2s ease; }
.divine-character-system .dcs-dash-strip { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 4px 0 14px; }
.divine-character-system .dcs-stat { flex: 1; min-width: 88px; border: 1px solid var(--dcs-border); border-radius: 10px;
  padding: 9px 12px; background: linear-gradient(160deg, color-mix(in srgb,var(--cx-accent-deep) 6%,transparent), rgba(0,0,0,.18)); }
.divine-character-system .dcs-stat span { display: block; font-family: 'Cinzel', serif; font-size: 9px; letter-spacing: .07em;
  text-transform: uppercase; color: var(--dcs-dim); }
.divine-character-system .dcs-stat strong { font-family: 'Cinzel', serif; font-size: 22px; color: var(--dcs-gold); }
.divine-character-system .dcs-dash-status { font-family: 'EB Garamond', serif; font-size: 12px; color: var(--cx-success);
  margin-left: auto; align-self: center; }

.divine-character-system .dcs-defrow { display: flex; flex-direction: column; gap: 6px; margin-bottom: 16px; }
.divine-character-system .dcs-def { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.divine-character-system .dcs-def b { font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .06em; text-transform: uppercase;
  color: var(--dcs-gold-dim); margin-right: 4px; }
.divine-character-system .dcs-chip { font-family: 'EB Garamond', serif; font-size: 12.5px; padding: 2px 10px; border-radius: 20px;
  border: 1px solid var(--dcs-border); color: var(--dcs-text); }
.divine-character-system .dcs-chip.res { border-color: color-mix(in srgb,var(--cx-success) 40%,transparent); color: var(--cx-success); }
.divine-character-system .dcs-chip.imm { border-color: color-mix(in srgb,var(--cx-accent-deep) 45%,transparent); color: var(--dcs-gold); }

.divine-character-system .dcs-dash-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 12px; }
.divine-character-system .dcs-dash-cols.lower { grid-template-columns: 2fr 1fr; }
.divine-character-system .dcs-dash-cols.single { grid-template-columns: 1fr; }
.divine-character-system .dcs-dash-col { border: 1px solid var(--dcs-border); border-radius: 12px; padding: 12px; background: color-mix(in srgb,var(--cx-surface) 40%,transparent); }
.divine-character-system .dcs-dash-coltitle { font-family: 'Cinzel', serif; font-size: 12px; letter-spacing: .08em; text-transform: uppercase;
  color: var(--dcs-gold); margin-bottom: 10px; }
.divine-character-system .dcs-empty { font-family: 'EB Garamond', serif; font-size: 13px; color: var(--dcs-dim); font-style: italic; }

.divine-character-system .dcs-feat { border: 1px solid var(--dcs-border); border-radius: 9px; padding: 9px 11px; margin-bottom: 7px;
  background: var(--dcs-card); cursor: pointer; transition: border-color .15s; }
.divine-character-system .dcs-feat:hover { border-color: var(--dcs-gold-dim); }
.divine-character-system .dcs-feat-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.divine-character-system .dcs-feat-name { font-family: 'EB Garamond', serif; font-size: 14.5px; color: var(--dcs-text); font-weight: 600; }
.divine-character-system .dcs-feat-tag { font-family: 'Cinzel', serif; font-size: 10px; color: var(--dcs-gold-dim); white-space: nowrap; }
.divine-character-system .dcs-feat-meta { font-family: 'EB Garamond', serif; font-size: 11.5px; color: var(--dcs-dim); margin-top: 2px; }
.divine-character-system .dcs-feat-desc { display: none; font-family: 'EB Garamond', serif; font-size: 13px; color: var(--dcs-text);
  margin-top: 7px; line-height: 1.5; border-top: 1px solid var(--dcs-border); padding-top: 7px; }
.divine-character-system .dcs-feat.open .dcs-feat-desc { display: block; }
.divine-character-system .dcs-pass-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 7px; }
.divine-character-system .dcs-pass-grid .dcs-feat { margin-bottom: 0; }

.divine-character-system .dcs-res { border: 1px solid var(--dcs-border); border-radius: 9px; padding: 9px 11px; margin-bottom: 8px;
  background: var(--dcs-card); }
.divine-character-system .dcs-res-top { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 7px; }
.divine-character-system .dcs-res-name { font-family: 'EB Garamond', serif; font-size: 14px; color: var(--dcs-text); font-weight: 600; }
.divine-character-system .dcs-res-recharge { font-family: 'Cinzel', serif; font-size: 9.5px; letter-spacing: .04em; text-transform: uppercase; color: var(--dcs-gold-dim); }
.divine-character-system .dcs-res-track { display: flex; align-items: center; gap: 10px; }
.divine-character-system .dcs-res-btn { width: 34px; height: 34px; border-radius: 8px; cursor: pointer; font-size: 18px; line-height: 1;
  background: color-mix(in srgb,var(--cx-text-strong) 5%,transparent); border: 1px solid var(--dcs-border); color: var(--dcs-gold); transition: background .15s; }
.divine-character-system .dcs-res-btn:hover:not([disabled]) { background: color-mix(in srgb,var(--cx-accent-deep) 18%,transparent); }
.divine-character-system .dcs-res-btn[disabled] { opacity: .3; cursor: default; }
.divine-character-system .dcs-res-count { font-family: 'Cinzel', serif; font-size: 16px; color: var(--dcs-text); min-width: 56px; text-align: center; }
.divine-character-system .dcs-res-count.spent { color: var(--dcs-red); }

.divine-character-system .dcs-dash-spells { border: 1px solid var(--dcs-border); border-radius: 12px; padding: 12px; background: color-mix(in srgb,var(--cx-surface) 40%,transparent); }
.divine-character-system .dcs-spell-search { margin-bottom: 12px; }
.divine-character-system .dcs-spell-group { margin-bottom: 12px; }
.divine-character-system .dcs-spell-lvl { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: .06em; text-transform: uppercase;
  color: var(--dcs-gold-dim); margin-bottom: 6px; border-bottom: 1px solid var(--dcs-border); padding-bottom: 4px; }
.divine-character-system .dcs-spell-lvl em { color: var(--dcs-dim); font-style: normal; font-size: 10px; }
.divine-character-system .dcs-spell { border: 1px solid transparent; border-radius: 8px; padding: 6px 8px; cursor: pointer; }
.divine-character-system .dcs-spell:hover { border-color: var(--dcs-border); background: color-mix(in srgb,var(--cx-text-strong) 2%,transparent); }
.divine-character-system .dcs-spell-head { display: flex; align-items: center; gap: 8px; }
.divine-character-system .dcs-spell-name { flex: 1; font-family: 'EB Garamond', serif; font-size: 14px; color: var(--dcs-text); }
.divine-character-system .dcs-spell-tag { font-family: 'Cinzel', serif; font-size: 9.5px; color: var(--dcs-gold-dim); }
.divine-character-system .dcs-spell .dcs-feat-desc, .divine-character-system .dcs-spell .dcs-feat-meta { padding-left: 26px; }
.divine-character-system .dcs-spell.open .dcs-feat-desc { display: block; }
.divine-character-system .dcs-fav { background: transparent; border: none; color: var(--dcs-gold-dim); font-size: 16px; cursor: pointer; padding: 0; line-height: 1; }
.divine-character-system .dcs-fav.on { color: var(--dcs-gold); }

@media (max-width: 768px) {
  .divine-character-system .dcs-dash-cols, .divine-character-system .dcs-dash-cols.lower { grid-template-columns: 1fr; }
  .divine-character-system .dcs-stat { min-width: 70px; }
}

/* ============================================================================
 * Phase 4 — App Shell (selector, nav tabs, save status, library, legacy)
 * ==========================================================================*/
.divine-character-system .dcs-status-wrap { display: inline-flex; align-items: center; gap: 8px; }
.divine-character-system .dcs-status-label { font-family: 'Cinzel', serif; font-size: 9px; letter-spacing: .08em;
  text-transform: uppercase; color: var(--dcs-dim); }
.divine-character-system .dcs-status { font-family: 'EB Garamond', serif; font-size: 12.5px; color: var(--cx-success); min-width: 64px; }
.divine-character-system .dcs-selector { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }

/* nav tabs */
.divine-character-system .dcs-navtabs { display: flex; flex-wrap: wrap; gap: 4px; margin: 16px 0 14px; border-bottom: 1px solid var(--dcs-border); }
.divine-character-system .dcs-navtab { font-family: 'Cinzel', serif; font-size: 12.5px; letter-spacing: .05em; padding: 9px 18px;
  cursor: pointer; background: transparent; border: none; border-bottom: 2px solid transparent; color: var(--dcs-dim);
  transition: color .15s, border-color .15s; margin-bottom: -1px; }
.divine-character-system .dcs-navtab:hover { color: var(--dcs-text); }
.divine-character-system .dcs-navtab.active { color: var(--dcs-gold); border-bottom-color: var(--dcs-gold); }

/* combat-tab form toggle row */
.divine-character-system .dcs-formtoggle-row { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-bottom: 14px; }
.divine-character-system .dcs-pick { max-width: 280px; }
.divine-character-system .dcs-pick-empty { font-family: 'EB Garamond', serif; font-size: 13px; color: var(--dcs-dim); font-style: italic; }

/* library (spells / features) */
.divine-character-system .dcs-lib-bar { margin-bottom: 12px; }
.divine-character-system .dcs-lib-search { width: 100%; }
.divine-character-system .dcs-filters { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.divine-character-system .dcs-filter { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: .03em; padding: 6px 13px; cursor: pointer;
  border-radius: 8px; background: color-mix(in srgb,var(--cx-text-strong) 4%,transparent); border: 1px solid var(--dcs-border); color: var(--dcs-dim); transition: all .15s; }
.divine-character-system .dcs-filter:hover { color: var(--dcs-text); }
.divine-character-system .dcs-filter.active { background: linear-gradient(150deg, color-mix(in srgb,var(--cx-accent-deep) 22%,transparent), color-mix(in srgb,var(--cx-accent-deep) 6%,transparent)); border-color: var(--dcs-gold-dim); color: var(--dcs-gold); }

/* summary (god sheet) */
.divine-character-system .dcs-sum-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 9px; margin-bottom: 18px; }
.divine-character-system .dcs-sum-block { margin-bottom: 16px; }
.divine-character-system .dcs-sum-title { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: .08em; text-transform: uppercase;
  color: var(--dcs-gold); margin-bottom: 8px; border-bottom: 1px solid var(--dcs-border); padding-bottom: 5px; }
.divine-character-system .dcs-sum-list { margin: 0; padding-left: 18px; font-family: 'EB Garamond', serif; font-size: 13.5px; color: var(--dcs-text); line-height: 1.6; }
.divine-character-system .dcs-chiprow-wrap { display: flex; flex-wrap: wrap; gap: 6px; }
.divine-character-system .dcs-summary .dcs-slots { display: flex; flex-wrap: wrap; gap: 8px; }
.divine-character-system .dcs-summary .dcs-slot { border: 1px solid var(--dcs-border); border-radius: 8px; padding: 6px 12px; align-items: center; }
.divine-character-system .dcs-summary .dcs-slot span { font-family: 'Cinzel', serif; font-size: 10px; color: var(--dcs-gold-dim); }
.divine-character-system .dcs-summary .dcs-slot strong { font-family: 'Cinzel', serif; font-size: 16px; color: var(--dcs-gold); }

/* legacy collapsible */
.divine-character-system.dcs-legacy { display: block; margin: 26px 0 0; border: 1px solid var(--dcs-border, var(--cx-border)); border-radius: 12px;
  background: rgba(0,0,0,.16); overflow: hidden; }
.divine-character-system.dcs-legacy .dcs-legacy-summary { cursor: pointer; padding: 14px 18px; font-family: 'Cinzel', serif; font-size: 13px; letter-spacing: .05em;
  color: var(--dcs-gold-dim, var(--cx-accent-deep)); list-style: none; }
.divine-character-system.dcs-legacy .dcs-legacy-summary::-webkit-details-marker { display: none; }
.divine-character-system.dcs-legacy .dcs-legacy-summary::before { content: '▸ '; color: var(--dcs-gold-dim, var(--cx-accent-deep)); }
.divine-character-system.dcs-legacy[open] .dcs-legacy-summary::before { content: '▾ '; }
.divine-character-system.dcs-legacy .dcs-legacy-note { font-family: 'EB Garamond', serif; font-size: 12px; letter-spacing: 0; color: var(--dcs-dim, var(--cx-text-dim)); }
.divine-character-system.dcs-legacy .dcs-legacy-body { padding: 8px 16px 16px; }

@media (max-width: 768px) {
  .divine-character-system .dcs-navtab { padding: 8px 12px; font-size: 11.5px; }
  .divine-character-system .dcs-sum-grid { grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)); }
}

/* ============================================================================
 * Phase 5 — Combat Mode, Global Search, Pins, Resource extras
 * ==========================================================================*/
/* header combat-mode button + global search */
.divine-character-system .dcs-combat-enter { margin-left: 12px; font-family: 'Cinzel', serif; font-size: 11.5px; letter-spacing: .05em;
  padding: 8px 16px; border-radius: 9px; cursor: pointer; color: var(--cx-surface);
  background: linear-gradient(150deg, var(--dcs-gold), var(--dcs-gold-dim)); border: 1px solid var(--dcs-gold-dim);
  font-weight: 700; transition: filter .15s; }
.divine-character-system .dcs-combat-enter:hover { filter: brightness(1.1); }
.divine-character-system .dcs-globalsearch { position: relative; margin-top: 12px; }
.divine-character-system .dcs-gsearch-input { width: 100%; }
.divine-character-system .dcs-gsearch-results { display: none; position: absolute; z-index: 50; left: 0; right: 0; top: calc(100% + 6px);
  background: var(--dcs-surface); border: 1px solid var(--dcs-gold-dim); border-radius: 12px; box-shadow: 0 18px 50px rgba(0,0,0,.6);
  max-height: 420px; overflow-y: auto; padding: 10px; }
.divine-character-system .dcs-gsearch-results.open { display: block; }
.divine-character-system .dcs-gsearch-filters { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid var(--dcs-border); }
.divine-character-system .dcs-gs-group { margin-bottom: 8px; }
.divine-character-system .dcs-gs-cat { font-family: 'Cinzel', serif; font-size: 9.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--dcs-gold-dim); margin: 4px 0; }
.divine-character-system .dcs-gs-item { display: flex; justify-content: space-between; align-items: center; width: 100%; text-align: left;
  background: transparent; border: 1px solid transparent; border-radius: 8px; padding: 7px 10px; cursor: pointer; color: var(--dcs-text); }
.divine-character-system .dcs-gs-item:hover { border-color: var(--dcs-border); background: color-mix(in srgb,var(--cx-text-strong) 3%,transparent); }
.divine-character-system .dcs-gs-name { font-family: 'EB Garamond', serif; font-size: 14px; }
.divine-character-system .dcs-gs-tag { font-family: 'Cinzel', serif; font-size: 9px; letter-spacing: .04em; text-transform: uppercase; color: var(--dcs-dim); }

/* pin buttons */
.divine-character-system .dcs-pin { background: transparent; border: none; cursor: pointer; font-size: 13px; line-height: 1; padding: 0 2px;
  opacity: .35; filter: grayscale(1); transition: opacity .15s; }
.divine-character-system .dcs-pin:hover { opacity: .7; }
.divine-character-system .dcs-pin.on { opacity: 1; filter: none; }
.divine-character-system .dcs-feat-head, .divine-character-system .dcs-spell-head { gap: 6px; }

/* pinned strip */
.divine-character-system .dcs-pinned { border: 1px solid var(--dcs-gold-dim); border-radius: 12px; padding: 12px; margin-bottom: 14px;
  background: linear-gradient(160deg, color-mix(in srgb,var(--cx-accent-deep) 8%,transparent), rgba(0,0,0,.15)); }
.divine-character-system .dcs-pinned-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; }

/* resource extras */
.divine-character-system .dcs-res-reset { width: 30px; height: 34px; border-radius: 8px; cursor: pointer; font-size: 15px; line-height: 1;
  background: color-mix(in srgb,var(--cx-text-strong) 4%,transparent); border: 1px solid var(--dcs-border); color: var(--dcs-gold-dim); transition: background .15s; }
.divine-character-system .dcs-res-reset:hover { background: color-mix(in srgb,var(--cx-accent-deep) 16%,transparent); }
.divine-character-system .dcs-res-src { font-family: 'EB Garamond', serif; font-size: 11px; color: var(--dcs-dim); margin-top: 6px; }

/* ---- Combat Mode overlay ---- */
.divine-character-system .dcs-cm-overlay { position: fixed; inset: 0; z-index: 9500; background: radial-gradient(circle at 50% 0%, color-mix(in srgb,var(--cx-surface) 98%,transparent), color-mix(in srgb,var(--cx-bg) 99%,transparent));
  overflow-y: auto; animation: dcsFade .2s ease; padding: 12px; }
.divine-character-system .dcs-cm { width: min(1920px, calc(100vw - 24px)); max-width: none; margin: 0 auto; }
.divine-character-system .dcs-cm-sticky { position: sticky; top: 0; z-index: 3; background: linear-gradient(180deg, color-mix(in srgb,var(--cx-field) 97%,transparent), color-mix(in srgb,var(--cx-field) 90%,transparent));
  padding: 10px 4px 12px; margin-bottom: 14px; border-bottom: 1px solid var(--dcs-gold-dim); box-shadow: 0 14px 22px rgba(0,0,0,.28); }
.divine-character-system .dcs-cm-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 8px; }
.divine-character-system .dcs-cm-title { font-family: 'Cinzel', serif; font-size: 24px; color: var(--dcs-gold); }
.divine-character-system .dcs-cm-form { font-family: 'EB Garamond', serif; font-size: 13px; color: var(--dcs-readable-dim); margin-left: 12px; }
.divine-character-system .dcs-cm-exit { font-family: 'Cinzel', serif; font-size: 12px; letter-spacing: .05em; padding: 9px 18px; border-radius: 9px;
  cursor: pointer; color: var(--dcs-text); background: color-mix(in srgb,var(--cx-danger) 16%,transparent); border: 1px solid color-mix(in srgb,var(--cx-danger) 50%,transparent); }
.divine-character-system .dcs-cm-exit:hover { background: color-mix(in srgb,var(--cx-danger) 30%,transparent); }
.divine-character-system .dcs-cm-grid { display: grid; grid-template-columns: 300px minmax(0, 1fr) 330px; gap: 14px; align-items: start; }
.divine-character-system .dcs-cm-rollside { position: sticky; top: 76px; align-self: start; min-width: 0; }
.divine-character-system .dcs-cm-left > *, .divine-character-system .dcs-cm-section { margin-bottom: 14px; }
.divine-character-system .dcs-cm .dcs-dash-coltitle { color: var(--cx-accent-bright); text-shadow: 0 1px 2px rgba(0,0,0,.75); }
.divine-character-system .dcs-cm .dcs-feat-meta,
.divine-character-system .dcs-cm .dcs-res-src,
.divine-character-system .dcs-cm .dcs-empty,
.divine-character-system .dcs-cm .dcs-feat-tag,
.divine-character-system .dcs-cm .dcs-res-recharge { color: var(--dcs-readable-dim); }
.divine-character-system .dcs-cm .dcs-feat-desc { color: var(--dcs-readable); }
.divine-character-system .dcs-cm-tile-grid,
.divine-character-system #dcs-cm-spelllist .dcs-spell-grid,
.divine-character-system #dcs-cm-reslist.dcs-cm-resource-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; align-items: stretch; }
.divine-character-system .dcs-cm-tile-grid .dcs-feat { display: flex; flex-direction: column; min-height: 92px; margin-bottom: 0; padding: 10px 11px; }
.divine-character-system .dcs-cm-tile-grid .dcs-feat.open { grid-column: 1 / -1; min-height: 0; }
.divine-character-system .dcs-cm-tile-grid .dcs-feat-head { align-items: flex-start; }
.divine-character-system .dcs-cm-tile-grid .dcs-feat-name { line-height: 1.15; }
.divine-character-system .dcs-cm-tile-grid .dcs-feat-tag { margin-left: auto; }
.divine-character-system .dcs-cm-tile-grid .dcs-roll-actions { margin-top: auto; padding-top: 8px; }
.divine-character-system .dcs-cm-tile-grid .dcs-empty { grid-column: 1 / -1; }
.divine-character-system #dcs-cm-spelllist .dcs-spell { display: flex; flex-direction: column; min-height: 96px; margin-bottom: 0; padding: 10px 11px;
  border-color: var(--dcs-border); background: color-mix(in srgb,var(--cx-surface) 45%,transparent); }
.divine-character-system #dcs-cm-spelllist .dcs-spell:hover { border-color: var(--dcs-gold-dim); background: color-mix(in srgb,var(--cx-accent-deep) 8%,transparent); }
.divine-character-system #dcs-cm-spelllist .dcs-spell.open { grid-column: 1 / -1; min-height: 0; }
.divine-character-system #dcs-cm-spelllist .dcs-spell-head { align-items: flex-start; gap: 6px; }
.divine-character-system #dcs-cm-spelllist .dcs-spell-name { line-height: 1.15; min-width: 0; overflow-wrap: anywhere; }
.divine-character-system #dcs-cm-spelllist .dcs-spell-tag { margin-left: auto; white-space: nowrap; }
.divine-character-system #dcs-cm-spelllist .dcs-spell .dcs-feat-meta { padding-left: 0; margin-top: 5px; }
.divine-character-system #dcs-cm-spelllist .dcs-spell .dcs-feat-desc { padding-left: 0; margin-top: 8px; }
.divine-character-system #dcs-cm-spelllist .dcs-spell .dcs-roll-actions { margin-top: auto; padding-top: 8px; }
.divine-character-system #dcs-cm-spelllist .dcs-spell.open .dcs-roll-actions { margin-top: 8px; }
.divine-character-system #dcs-cm-reslist.dcs-cm-resource-grid .dcs-res { display: flex; flex-direction: column; min-height: 108px; margin-bottom: 0; padding: 10px 11px; }
.divine-character-system #dcs-cm-reslist.dcs-cm-resource-grid .dcs-res-top { align-items: flex-start; gap: 6px; margin-bottom: 8px; }
.divine-character-system #dcs-cm-reslist.dcs-cm-resource-grid .dcs-res-name { line-height: 1.15; min-width: 0; overflow-wrap: anywhere; }
.divine-character-system #dcs-cm-reslist.dcs-cm-resource-grid .dcs-res-recharge { margin-left: auto; white-space: nowrap; }
.divine-character-system #dcs-cm-reslist.dcs-cm-resource-grid .dcs-res-track { margin-top: auto; gap: 6px; justify-content: space-between; }
.divine-character-system #dcs-cm-reslist.dcs-cm-resource-grid .dcs-res-btn { width: 30px; height: 30px; font-size: 16px; }
.divine-character-system #dcs-cm-reslist.dcs-cm-resource-grid .dcs-res-reset { width: 30px; height: 30px; }
.divine-character-system #dcs-cm-reslist.dcs-cm-resource-grid .dcs-res-count { min-width: 46px; font-size: 14px; }
.divine-character-system #dcs-cm-reslist.dcs-cm-resource-grid .dcs-res-src { margin-top: 7px; line-height: 1.15; overflow-wrap: anywhere; }
.divine-character-system #dcs-cm-reslist.dcs-cm-resource-grid .dcs-empty { grid-column: 1 / -1; }
.divine-character-system .dcs-cm-hp { border: 1px solid var(--dcs-border); border-radius: 14px; padding: 14px; text-align: center;
  background: linear-gradient(160deg, color-mix(in srgb,var(--cx-success) 12%,transparent), rgba(0,0,0,.2)); }
.divine-character-system .dcs-cm-hp.low { background: linear-gradient(160deg, color-mix(in srgb,var(--cx-accent) 16%,transparent), rgba(0,0,0,.2)); }
.divine-character-system .dcs-cm-hp.zero { background: linear-gradient(160deg, color-mix(in srgb,var(--cx-danger) 20%,transparent), rgba(0,0,0,.2)); }
.divine-character-system .dcs-cm-hp-label { font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--dcs-readable-dim); text-shadow: 0 1px 2px rgba(0,0,0,.7); }
.divine-character-system .dcs-cm-hp-val { font-family: 'Cinzel', serif; font-size: 46px; font-weight: 900; color: var(--cx-success); line-height: 1.05; margin-top: 2px; }
.divine-character-system .dcs-cm-hp.low .dcs-cm-hp-val { color: var(--cx-accent); }
.divine-character-system .dcs-cm-hp.zero .dcs-cm-hp-val { color: var(--cx-danger); }
.divine-character-system .dcs-cm-hp-max { font-size: 18px; color: var(--dcs-readable-dim); margin-left: 6px; }
.divine-character-system .dcs-cm-hp-btns { display: flex; gap: 6px; justify-content: center; margin-top: 10px; flex-wrap: wrap; }
.divine-character-system .dcs-cm-hp-custom { display: flex; align-items: center; justify-content: center; gap: 6px; margin-top: 8px; }
.divine-character-system .dcs-cm-hp-amt { width: 82px; text-align: center; font-family: 'Cinzel', serif; font-size: 16px; padding: 5px 7px; }
.divine-character-system .dcs-cm-vitals { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.divine-character-system .dcs-cm-vital { border: 1px solid var(--dcs-border); border-radius: 10px; padding: 9px 12px; background: color-mix(in srgb,var(--cx-surface) 40%,transparent); }
.divine-character-system .dcs-cm-vital span { display: block; font-family: 'Cinzel', serif; font-size: 9px; letter-spacing: .06em; text-transform: uppercase; color: var(--dcs-readable-dim); text-shadow: 0 1px 2px rgba(0,0,0,.7); }
.divine-character-system .dcs-cm-vital strong { font-family: 'Cinzel', serif; font-size: 20px; color: var(--dcs-gold); }
.divine-character-system .dcs-cm-vital-roll { width: 100%; text-align: left; cursor: pointer; }
.divine-character-system .dcs-cm-vital-roll:hover { border-color: var(--dcs-gold-dim); background: color-mix(in srgb,var(--cx-accent-deep) 12%,transparent); }
.divine-character-system .dcs-cm-temp { width: 64px; font-size: 16px; padding: 2px 6px; }
.divine-character-system .dcs-cm-field { border: 1px solid var(--dcs-border); border-radius: 10px; padding: 11px; background: color-mix(in srgb,var(--cx-surface) 40%,transparent); }
.divine-character-system .dcs-cm-field > label { display: block; font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: var(--dcs-gold-dim); margin-bottom: 7px; }
.divine-character-system .dcs-cm-abil-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
.divine-character-system .dcs-abil-card { display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto auto; gap: 2px 6px; align-items: center;
  width: 100%; text-align: left; border: 1px solid var(--dcs-border); border-radius: 10px; padding: 8px 9px; cursor: pointer;
  color: var(--dcs-text); background: linear-gradient(160deg, color-mix(in srgb,var(--cx-accent-deep) 8%,transparent), rgba(0,0,0,.14)); }
.divine-character-system .dcs-abil-card:hover { border-color: var(--dcs-gold-dim); background: color-mix(in srgb,var(--cx-accent-deep) 13%,transparent); }
.divine-character-system .dcs-abil-label { grid-column: 1 / 3; font-family: 'Cinzel', serif; font-size: 9px; letter-spacing: .04em; text-transform: uppercase; color: var(--dcs-readable-dim); text-shadow: 0 1px 2px rgba(0,0,0,.65); }
.divine-character-system .dcs-abil-card strong { font-family: 'Cinzel', serif; font-size: 21px; color: var(--dcs-gold); line-height: 1; }
.divine-character-system .dcs-abil-card em { justify-self: end; min-width: 32px; height: 28px; border: 1px solid var(--dcs-gold-dim); border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center; color: var(--dcs-text); font-family: 'Cinzel', serif; font-size: 14px; font-style: normal; background: rgba(0,0,0,.22); }
.divine-character-system .dcs-cm-skills { padding-bottom: 14px; }
.divine-character-system .dcs-skill-head, .divine-character-system .dcs-skill-row { display: grid; grid-template-columns: 34px 42px 1fr 58px; align-items: center; gap: 8px; }
.divine-character-system .dcs-skill-head { font-family: 'Cinzel', serif; font-size: 9px; letter-spacing: .06em; text-transform: uppercase; color: var(--dcs-readable-dim); padding: 0 4px 5px; text-shadow: 0 1px 2px rgba(0,0,0,.65); }
.divine-character-system .dcs-skill-row { width: 100%; border: 0; border-top: 1px solid var(--dcs-border); padding: 6px 4px; cursor: pointer;
  color: var(--dcs-text); background: transparent; text-align: left; }
.divine-character-system .dcs-skill-row:hover { background: color-mix(in srgb,var(--cx-accent-deep) 8%,transparent); }
.divine-character-system .dcs-skill-prof { font-size: 16px; color: var(--dcs-readable-dim); text-align: center; }
.divine-character-system .dcs-skill-row.prof .dcs-skill-prof { color: var(--dcs-gold); }
.divine-character-system .dcs-skill-row.exp .dcs-skill-prof { color: var(--cx-accent-bright); }
.divine-character-system .dcs-skill-mod { font-family: 'Cinzel', serif; font-size: 12px; color: var(--dcs-readable-dim); }
.divine-character-system .dcs-skill-name { font-family: 'EB Garamond', serif; font-size: 15px; color: var(--dcs-text); min-width: 0; overflow-wrap: anywhere; }
.divine-character-system .dcs-skill-row strong { justify-self: end; min-width: 48px; border: 1px solid var(--dcs-border); border-radius: 7px; padding: 3px 7px;
  text-align: center; color: var(--dcs-gold); font-family: 'Cinzel', serif; font-size: 16px; background: rgba(0,0,0,.2); }
.divine-character-system .dcs-additional-skills-label { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--dcs-gold-dim);
  color: var(--dcs-readable-dim); text-align: center; font-family: 'EB Garamond', serif; font-size: 14px; }
.divine-character-system .dcs-additional-skills-label.muted { padding-bottom: 2px; }
.divine-character-system .dcs-cond-row { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.divine-character-system .dcs-cond-chip button { background: transparent; border: none; color: var(--dcs-red); cursor: pointer; margin-left: 5px; font-size: 13px; }
.divine-character-system .dcs-dice { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 8px; }
.divine-character-system .dcs-die { font-family: 'Cinzel', serif; font-size: 12px; padding: 7px 11px; border-radius: 8px; cursor: pointer;
  background: color-mix(in srgb,var(--cx-accent-deep) 10%,transparent); border: 1px solid var(--dcs-gold-dim); color: var(--dcs-gold); transition: background .15s; }
.divine-character-system .dcs-die:hover { background: color-mix(in srgb,var(--cx-accent-deep) 24%,transparent); }
.divine-character-system .dcs-dice-custom { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; margin-bottom: 8px; color: var(--dcs-readable-dim); }
.divine-character-system .dcs-cm-rolltray { display: flex; flex-direction: column; gap: 8px;
  border: 1px solid var(--dcs-border); border-radius: 12px; padding: 10px; background: color-mix(in srgb,var(--cx-surface) 78%,transparent);
  box-shadow: 0 14px 28px rgba(0,0,0,.22); }
.divine-character-system .dcs-cm-rolltray-label { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--dcs-gold-dim); padding-bottom: 6px; border-bottom: 1px solid var(--dcs-border); }
.divine-character-system .dcs-roll-out { font-family: 'EB Garamond', serif; font-size: 13.5px; color: var(--dcs-text); min-height: 22px;
  max-height: calc(100vh - 150px); max-height: calc(100dvh - 150px); overflow-y: auto; padding-right: 4px; scroll-behavior: smooth; }
.divine-character-system .dcs-roll-card { border: 1px solid color-mix(in srgb,var(--cx-accent-deep) 18%,transparent); border-radius: 9px; padding: 7px 9px; margin-bottom: 6px;
  background: linear-gradient(135deg, color-mix(in srgb,var(--cx-accent-deep) 8%,transparent), rgba(0,0,0,.18)); }
.divine-character-system .dcs-roll-main { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.divine-character-system .dcs-roll-text { color: var(--dcs-text); font-size: 14px; line-height: 1.25; overflow-wrap: anywhere; }
.divine-character-system .dcs-roll-total { flex: 0 0 auto; font-family: 'Cinzel', serif; font-size: 22px; color: var(--dcs-gold); line-height: 1; }
.divine-character-system .dcs-roll-dice { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 6px; }
.divine-character-system .dcs-die-face { width: 34px; height: 34px; display: inline-flex; flex-direction: column; align-items: center; justify-content: center;
  border: 1px solid var(--dcs-gold-dim); border-radius: 8px; background: radial-gradient(circle at 35% 25%, color-mix(in srgb,var(--cx-accent-bright) 22%,transparent), color-mix(in srgb,var(--cx-accent-deep) 8%,transparent) 40%, rgba(0,0,0,.24));
  box-shadow: inset 0 0 12px color-mix(in srgb,var(--cx-accent-deep) 12%,transparent), 0 2px 8px rgba(0,0,0,.25); animation: dcsDiePop .24s ease; }
.divine-character-system .dcs-die-face b { font-family: 'Cinzel', serif; color: var(--dcs-gold); font-size: 15px; line-height: 1; }
.divine-character-system .dcs-die-face small { color: var(--dcs-readable-dim); font-size: 8px; line-height: 1; margin-top: 2px; }
.divine-character-system .dcs-roll-detail { margin-top: 4px; color: var(--dcs-readable-dim); font-size: 12px; line-height: 1.25; overflow-wrap: anywhere; }
.divine-character-system .dcs-roll-meta { margin-top: 3px; color: color-mix(in srgb,var(--cx-accent-bright) 72%,transparent); font-family: 'Cinzel', serif; font-size: 9px; letter-spacing: .04em; text-transform: uppercase; }
@keyframes dcsDiePop { from { opacity: 0; transform: translateY(4px) scale(.88); } to { opacity: 1; transform: translateY(0) scale(1); } }
.divine-character-system .dcs-roll-empty, .divine-character-system .dcs-roll-hint { color: var(--dcs-dim); font-family: 'EB Garamond', serif; font-size: 13px; }
.divine-character-system .dcs-roll-hint { margin-top: 2px; }

@media (max-width: 1500px) {
  .divine-character-system .dcs-cm-grid { grid-template-columns: 280px minmax(0, 1fr) 300px; }
  .divine-character-system .dcs-cm-tile-grid,
  .divine-character-system #dcs-cm-spelllist .dcs-spell-grid,
  .divine-character-system #dcs-cm-reslist.dcs-cm-resource-grid { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }
}

@media (max-width: 1180px) {
  .divine-character-system .dcs-cm-grid { grid-template-columns: 280px minmax(0, 1fr); }
  .divine-character-system .dcs-cm-rollside { grid-column: 1 / -1; position: relative; top: auto; }
  .divine-character-system .dcs-roll-out { max-height: 420px; }
  .divine-character-system .dcs-cm-tile-grid,
  .divine-character-system #dcs-cm-spelllist .dcs-spell-grid,
  .divine-character-system #dcs-cm-reslist.dcs-cm-resource-grid { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
}

@media (max-width: 768px) {
  .divine-character-system .dcs-cm { width: min(100%, calc(100vw - 18px)); }
  .divine-character-system .dcs-cm-grid { grid-template-columns: 1fr; }
  .divine-character-system .dcs-cm-rollside { grid-column: auto; }
  .divine-character-system .dcs-cm-tile-grid,
  .divine-character-system #dcs-cm-spelllist .dcs-spell-grid,
  .divine-character-system #dcs-cm-reslist.dcs-cm-resource-grid { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
  .divine-character-system .dcs-cm-abil-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .divine-character-system .dcs-cm-head { align-items: flex-start; }
  .divine-character-system .dcs-cm-rolltray { gap: 6px; }
  .divine-character-system .dcs-combat-enter { margin-left: 0; margin-top: 8px; }

  /* Touch targets: glyph buttons get a real ≥32px hit area (Apple HIG). */
  .divine-character-system .dcs-fav,
  .divine-character-system .dcs-pin,
  .divine-character-system .dcs-prep,
  .divine-character-system .dcs-rc { min-width: 32px; min-height: 32px; display: inline-flex; align-items: center; justify-content: center; }
  .divine-character-system .dcs-cm-pip { min-width: 30px; min-height: 30px; font-size: 20px; display: inline-flex; align-items: center; justify-content: center; }
  .divine-character-system .dcs-pip { width: 24px; height: 24px; }
  .divine-character-system .dcs-roll-btn { padding: 8px 12px; min-height: 36px; }

  /* iOS zooms any focused input under 16px; these carried inline 11px before. */
  .divine-character-system .dcs-prep-max,
  .divine-character-system select.dcs-spell-lvlset { font-size: 16px; }

  /* Notch/home-bar safe areas on the full-screen overlays. */
  .divine-character-system .dcs-overlay { padding: max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left)); }
  .divine-character-system .dcs-cm-overlay { padding: max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left)); }

  /* ---- Mobile combat tabs (deploy80) ---- */
  /* One panel at a time instead of a mile-long stack. */
  .divine-character-system .dcs-cm { padding-bottom: 86px; } /* clear the fixed bar */
  .divine-character-system .dcs-cm-grid[data-cmtab="stats"] > .dcs-cm-right,
  .divine-character-system .dcs-cm-grid[data-cmtab="stats"] > .dcs-cm-rollside,
  .divine-character-system .dcs-cm-grid[data-cmtab="combat"] > .dcs-cm-left,
  .divine-character-system .dcs-cm-grid[data-cmtab="combat"] > .dcs-cm-rollside,
  .divine-character-system .dcs-cm-grid[data-cmtab="rolls"] > .dcs-cm-left,
  .divine-character-system .dcs-cm-grid[data-cmtab="rolls"] > .dcs-cm-right { display: none; }

  .divine-character-system .dcs-cm-tabbar { display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 9600;
    gap: 6px; padding: 6px max(10px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left));
    background: color-mix(in srgb,var(--cx-field) 97%,transparent); border-top: 1px solid var(--dcs-gold-dim);
    box-shadow: 0 -10px 24px rgba(0, 0, 0, .45); backdrop-filter: blur(6px); }
  .divine-character-system .dcs-cm-tabbtn { flex: 1; position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 2px; min-height: 50px; background: none; border: none; border-radius: 10px; cursor: pointer;
    color: var(--dcs-readable-dim); font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .06em; text-transform: uppercase; }
  .divine-character-system .dcs-cm-tabico { font-size: 19px; line-height: 1; }
  .divine-character-system .dcs-cm-tabbtn.on { color: var(--dcs-gold); background: color-mix(in srgb,var(--cx-accent-deep) 12%,transparent); }
  .divine-character-system .dcs-cm-tabbadge { position: absolute; top: 4px; right: 16%; min-width: 16px; height: 16px; padding: 0 4px;
    display: inline-flex; align-items: center; justify-content: center; border-radius: 8px;
    background: var(--dcs-red); color: var(--cx-text-strong); font-family: sans-serif; font-size: 10px; font-style: normal; line-height: 1; }

  /* Always-visible HP in the sticky header. */
  .divine-character-system .dcs-cm-hpmini { display: inline-flex; align-items: baseline; gap: 1px; margin-left: 10px;
    padding: 2px 9px; border: 1px solid var(--dcs-gold-dim); border-radius: 10px;
    font-family: 'Cinzel', serif; font-size: 12px; color: var(--dcs-readable-dim); vertical-align: middle; }
  .divine-character-system .dcs-cm-hpmini b { color: var(--dcs-gold); font-size: 15px; }
  .divine-character-system .dcs-cm-hpmini.low b { color: var(--cx-accent); }
  .divine-character-system .dcs-cm-hpmini.zero b { color: var(--dcs-red); }
}

@media (max-width: 520px) {
  .divine-character-system .dcs-cm-overlay { padding: max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)); }
  .divine-character-system .dcs-cm-tile-grid,
  .divine-character-system #dcs-cm-spelllist .dcs-spell-grid,
  .divine-character-system #dcs-cm-reslist.dcs-cm-resource-grid { grid-template-columns: 1fr; }
  .divine-character-system .dcs-cm-abil-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .divine-character-system .dcs-skill-head, .divine-character-system .dcs-skill-row { grid-template-columns: 26px 34px 1fr 50px; gap: 5px; }
  .divine-character-system .dcs-skill-name { font-size: 14px; }
}

/* ============================================================================
 * Phase 6 — SRD lookup, row controls, search mode/clear
 * ==========================================================================*/
/* Mobile-polish: sizing for controls that previously carried inline styles.
 * Base = exact previous inline values, so desktop is pixel-identical; the
 * ≤768px block below can now actually override them (inline styles can't
 * be beaten by media queries). */
.divine-character-system .dcs-prep-max { width: 44px; font-size: 11px; padding: 1px 4px; }
.divine-character-system select.dcs-spell-lvlset { font-size: 11px; padding: 1px 4px; width: auto; }
.divine-character-system .dcs-prep { background: none; border: none; cursor: pointer; font-size: 13px; padding: 0 2px; line-height: 1; }
.divine-character-system .dcs-cm-pip { background: none; border: none; cursor: pointer; padding: 0 2px; font-size: 16px; line-height: 1; }

/* Mobile combat tabs (deploy80) — desktop never sees these. */
.divine-character-system .dcs-cm-tabbar { display: none; }
.divine-character-system .dcs-cm-hpmini { display: none; }
.divine-character-system .dcs-srd { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: .03em; cursor: pointer;
  padding: 7px 14px; border-radius: 8px; margin-left: 8px; color: var(--dcs-text);
  background: rgba(120,150,200,.12); border: 1px solid rgba(120,150,200,.4); transition: background .15s; }
.divine-character-system .dcs-srd:hover { background: rgba(120,150,200,.24); }
.divine-character-system .dcs-rowctrls { display: inline-flex; gap: 2px; align-items: center; margin-left: auto; }
.divine-character-system .dcs-rc { background: transparent; border: none; color: var(--dcs-dim); cursor: pointer; font-size: 12px;
  line-height: 1; padding: 3px 5px; border-radius: 6px; }
.divine-character-system .dcs-rc:hover { color: var(--dcs-gold); background: color-mix(in srgb,var(--cx-text-strong) 5%,transparent); }

/* lookup dialog */
.divine-character-system .dcs-lookup-modal { width: min(640px, 100%); }
.divine-character-system .dcs-lk-results { margin-top: 12px; max-height: 50vh; overflow-y: auto; }
.divine-character-system .dcs-lk-item { display: flex; flex-direction: column; align-items: flex-start; width: 100%; text-align: left;
  background: var(--dcs-card); border: 1px solid var(--dcs-border); border-radius: 9px; padding: 9px 12px; margin-bottom: 7px; cursor: pointer; transition: border-color .15s; }
.divine-character-system .dcs-lk-item:hover { border-color: var(--dcs-gold-dim); }
.divine-character-system .dcs-lk-name { font-family: 'EB Garamond', serif; font-size: 15px; color: var(--dcs-text); font-weight: 600; }
.divine-character-system .dcs-lk-sub { font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .03em; color: var(--dcs-gold-dim); margin-top: 2px; }

/* search mode bar */
.divine-character-system .dcs-gs-mode { display: flex; align-items: center; gap: 6px; margin-bottom: 10px; }
.divine-character-system .dcs-gs-modebtn { font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .05em; padding: 5px 12px; border-radius: 7px;
  cursor: pointer; background: color-mix(in srgb,var(--cx-text-strong) 4%,transparent); border: 1px solid var(--dcs-border); color: var(--dcs-dim); }
.divine-character-system .dcs-gs-modebtn.active { background: color-mix(in srgb,var(--cx-accent-deep) 18%,transparent); border-color: var(--dcs-gold-dim); color: var(--dcs-gold); }
.divine-character-system .dcs-gs-clear { margin-left: auto; font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .04em; padding: 5px 12px;
  border-radius: 7px; cursor: pointer; background: color-mix(in srgb,var(--cx-danger) 12%,transparent); border: 1px solid color-mix(in srgb,var(--cx-danger) 40%,transparent); color: var(--cx-danger); }
.divine-character-system .dcs-gs-clear:hover { background: color-mix(in srgb,var(--cx-danger) 24%,transparent); }

/* ============================================================================
 * Phase 7 — Bulk paste, JSON tools, paste buttons
 * ==========================================================================*/
.divine-character-system .dcs-paste { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: .03em; cursor: pointer;
  padding: 7px 14px; border-radius: 8px; margin-left: 8px; color: var(--dcs-text);
  background: rgba(150,130,200,.12); border: 1px solid rgba(150,130,200,.4); transition: background .15s; }
.divine-character-system .dcs-paste:hover { background: rgba(150,130,200,.24); }
.divine-character-system .dcs-toolbtns { display: flex; gap: 10px; flex-wrap: wrap; }
.divine-character-system .dcs-del-text { background: transparent; border: 1px solid var(--dcs-border); color: var(--dcs-dim);
  font-family: 'Cinzel', serif; font-size: 11px; padding: 7px 14px; border-radius: 8px; cursor: pointer; }
.divine-character-system .dcs-del-text:hover { color: var(--dcs-red); border-color: var(--dcs-red); }

.divine-character-system .dcs-import-modal { width: min(680px, 100%); }
.divine-character-system .dcs-im-actions { display: flex; gap: 10px; margin-top: 12px; align-items: center; }
.divine-character-system .dcs-im-preview { margin-top: 14px; max-height: 40vh; overflow-y: auto; }
.divine-character-system .dcs-im-count { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: .04em; color: var(--dcs-gold-dim); margin-bottom: 8px; }
.divine-character-system .dcs-im-card { display: flex; justify-content: space-between; align-items: center;
  background: var(--dcs-card); border: 1px solid var(--dcs-border); border-radius: 8px; padding: 8px 12px; margin-bottom: 6px; }
.divine-character-system .dcs-im-name { font-family: 'EB Garamond', serif; font-size: 15px; color: var(--dcs-text); }
.divine-character-system .dcs-im-sub { font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .03em; color: var(--dcs-gold-dim); }

/* ============================================================================
 * Phase 8 — Guided wizard, surfaced lookup rows
 * ==========================================================================*/
.divine-character-system .dcs-planets-toolbar { margin-bottom: 14px; }
.divine-character-system .dcs-srdrow { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0; }

/* dialogs must stack above the wizard overlay */
.divine-character-system .dcs-wizard-overlay { z-index: 9200; }
.divine-character-system .dcs-lookup-overlay, .divine-character-system .dcs-import-overlay { z-index: 9700; }

.divine-character-system .dcs-wizard-modal { width: min(760px, 100%); }
.divine-character-system .dcs-wiz-progress { height: 5px; background: var(--dcs-border); border-radius: 3px; margin: 4px 0 8px; overflow: hidden; }
.divine-character-system .dcs-wiz-bar { height: 100%; background: linear-gradient(90deg, var(--dcs-gold-dim), var(--dcs-gold)); transition: width .25s ease; }
.divine-character-system .dcs-wiz-steps { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-bottom: 6px; }
.divine-character-system .dcs-wiz-step { font-family: 'Cinzel', serif; font-size: 9.5px; letter-spacing: .04em; text-transform: uppercase; color: var(--dcs-dim); }
.divine-character-system .dcs-wiz-step.active { color: var(--dcs-gold); }
.divine-character-system .dcs-wiz-step.done { color: var(--dcs-gold-dim); }
.divine-character-system .dcs-wiz-footer { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 14px 4px 2px; margin-top: 12px; border-top: 1px solid var(--dcs-border); }
.divine-character-system .dcs-wiz-footer-right { display: flex; gap: 8px; flex-wrap: wrap; }
.divine-character-system .dcs-wiz-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin: 4px 0; }
.divine-character-system .dcs-wiz-abils { grid-template-columns: repeat(6, 1fr); }
.divine-character-system .dcs-wiz-field { display: flex; flex-direction: column; gap: 5px; }
.divine-character-system .dcs-wiz-field > span { font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .05em; text-transform: uppercase; color: var(--dcs-gold-dim); }
.divine-character-system .dcs-wiz-abil { text-align: center; }
.divine-character-system .dcs-wiz-planets { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; margin-top: 10px; }
.divine-character-system .dcs-wiz-planet { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; text-align: left;
  background: var(--dcs-card); border: 1px solid var(--dcs-border); border-radius: 10px; padding: 11px 13px; cursor: pointer; transition: border-color .15s; }
.divine-character-system .dcs-wiz-planet:hover { border-color: var(--dcs-gold-dim); }
.divine-character-system .dcs-wiz-planet.selected { border-color: var(--dcs-gold); background: color-mix(in srgb,var(--cx-accent-deep) 10%,transparent); }
.divine-character-system .dcs-wiz-pname { font-family: 'EB Garamond', serif; font-size: 15px; color: var(--dcs-text); font-weight: 600; }
.divine-character-system .dcs-wiz-pmeta { font-family: 'Cinzel', serif; font-size: 9.5px; letter-spacing: .03em; color: var(--dcs-dim); }
.divine-character-system .dcs-wiz-pmeta.has { color: var(--dcs-gold-dim); }
.divine-character-system .dcs-wiz-chips, .divine-character-system .dcs-wiz-skills { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.divine-character-system .dcs-wiz-chip { font-family: 'Cinzel', serif; font-size: 11px; padding: 6px 12px; border-radius: 7px; cursor: pointer;
  background: color-mix(in srgb,var(--cx-text-strong) 4%,transparent); border: 1px solid var(--dcs-border); color: var(--dcs-dim); }
.divine-character-system .dcs-wiz-chip.on { background: color-mix(in srgb,var(--cx-accent-deep) 18%,transparent); border-color: var(--dcs-gold-dim); color: var(--dcs-gold); }
.divine-character-system .dcs-wiz-skill { font-family: 'EB Garamond', serif; font-size: 13px; padding: 5px 10px; border-radius: 7px; cursor: pointer;
  background: color-mix(in srgb,var(--cx-text-strong) 3%,transparent); border: 1px solid var(--dcs-border); color: var(--dcs-text); }
.divine-character-system .dcs-wiz-skill.prof { border-color: var(--dcs-gold-dim); color: var(--dcs-gold); }
.divine-character-system .dcs-wiz-skill.exp { border-color: var(--dcs-gold); color: var(--dcs-gold); background: color-mix(in srgb,var(--cx-accent-deep) 12%,transparent); }
.divine-character-system .dcs-wiz-addrow { display: flex; gap: 8px; margin: 8px 0; }
.divine-character-system .dcs-wiz-addrow .dcs-input { flex: 1; }
.divine-character-system .dcs-wiz-list { margin-top: 10px; }
.divine-character-system .dcs-wiz-rev { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px solid var(--dcs-border); }
.divine-character-system .dcs-wiz-rev > span { font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .04em; text-transform: uppercase; color: var(--dcs-dim); }
.divine-character-system .dcs-wiz-rev > strong { font-family: 'EB Garamond', serif; font-size: 14px; color: var(--dcs-text); text-align: right; }

@media (max-width: 768px) {
  .divine-character-system .dcs-wiz-abils { grid-template-columns: repeat(3, 1fr); }
}

/* ============================================================================
 * Phase 9 — Constellation selector, Journey history, journal polish
 * ==========================================================================*/
.divine-character-system .dcs-planets-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.divine-character-system .dcs-viewtoggle { display: flex; gap: 4px; }
.divine-character-system .dcs-vt { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: .03em; padding: 7px 13px; border-radius: 8px; cursor: pointer;
  background: color-mix(in srgb,var(--cx-text-strong) 4%,transparent); border: 1px solid var(--dcs-border); color: var(--dcs-dim); }
.divine-character-system .dcs-vt.active { background: color-mix(in srgb,var(--cx-accent-deep) 18%,transparent); border-color: var(--dcs-gold-dim); color: var(--dcs-gold); }

/* constellation */
.divine-character-system .dcs-constellation { background: radial-gradient(ellipse at 50% 0%, color-mix(in srgb,var(--cx-surface) 50%,transparent), color-mix(in srgb,var(--cx-field) 40%,transparent)); border: 1px solid var(--dcs-border); border-radius: 16px; padding: 14px; }
.divine-character-system .dcs-constellation-svg { width: 100%; height: auto; display: block; }
.divine-character-system .dcs-node-link { stroke: color-mix(in srgb,var(--cx-accent-deep) 22%,transparent); stroke-width: 1.5; stroke-dasharray: 4 6; }
.divine-character-system .dcs-node { cursor: pointer; }
.divine-character-system .dcs-node-core { fill: var(--cx-accent-dim); stroke: var(--dcs-border); stroke-width: 2; transition: fill .15s, stroke .15s; }
.divine-character-system .dcs-node.started .dcs-node-core { fill: var(--cx-accent-dim); stroke: var(--dcs-gold-dim); }
.divine-character-system .dcs-node.completed .dcs-node-core { fill: var(--dcs-gold); stroke: var(--cx-accent-bright); }
.divine-character-system .dcs-node.empty .dcs-node-core { fill: var(--cx-surface); stroke: var(--cx-accent-dim); }
.divine-character-system .dcs-node:hover .dcs-node-core { stroke: var(--dcs-gold); }
.divine-character-system .dcs-node-glow { fill: color-mix(in srgb,var(--cx-accent-deep) 28%,transparent); }
.divine-character-system .dcs-node.completed:hover .dcs-node-glow { fill: color-mix(in srgb,var(--cx-accent-deep) 42%,transparent); }
.divine-character-system .dcs-node-ring { fill: none; stroke: var(--dcs-gold); stroke-width: 2.5; opacity: .9; }
.divine-character-system .dcs-node-name { fill: var(--dcs-text); font-family: 'Cinzel', serif; font-size: 14px; }
.divine-character-system .dcs-node.empty .dcs-node-name { fill: var(--dcs-dim); }
.divine-character-system .dcs-node-meta { fill: var(--dcs-gold-dim); font-family: 'EB Garamond', serif; font-size: 12px; }
.divine-character-system .dcs-node.empty .dcs-node-meta { fill: var(--cx-accent-dim); }

/* card journal line */
.divine-character-system .dcs-card-journal { font-family: 'EB Garamond', serif; font-size: 12px; color: var(--dcs-gold-dim); margin-top: 6px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* journey history */
.divine-character-system .dcs-journey-banner { font-family: 'Cinzel', serif; font-size: 20px; color: var(--dcs-gold); text-align: center; padding: 16px 0 6px; }
.divine-character-system .dcs-journey-banner span { display: block; font-family: 'EB Garamond', serif; font-size: 13px; color: var(--dcs-dim); margin-top: 4px; }
.divine-character-system .dcs-journey-item { display: flex; gap: 14px; align-items: flex-start; background: var(--dcs-card); border: 1px solid var(--dcs-border);
  border-left: 3px solid var(--dcs-gold-dim); border-radius: 10px; padding: 13px 16px; margin-bottom: 8px; cursor: pointer; transition: border-color .15s; }
.divine-character-system .dcs-journey-item:hover { border-color: var(--dcs-gold-dim); border-left-color: var(--dcs-gold); }
.divine-character-system .dcs-journey-num { font-family: 'Cinzel', serif; font-size: 22px; font-weight: 900; color: var(--dcs-gold-dim); min-width: 28px; text-align: center; }
.divine-character-system .dcs-journey-body { flex: 1; }
.divine-character-system .dcs-journey-head { display: flex; align-items: center; gap: 10px; }
.divine-character-system .dcs-journey-planet { font-family: 'Cinzel', serif; font-size: 16px; color: var(--dcs-text); }
.divine-character-system .dcs-journey-lvl { font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .04em; color: var(--dcs-gold); padding: 2px 8px; border: 1px solid var(--dcs-gold-dim); border-radius: 20px; }
.divine-character-system .dcs-journey-done { font-family: 'Cinzel', serif; font-size: 9px; letter-spacing: .05em; text-transform: uppercase; color: var(--cx-surface); background: var(--dcs-gold); padding: 2px 8px; border-radius: 20px; }
.divine-character-system .dcs-journey-class { font-family: 'EB Garamond', serif; font-size: 14px; color: var(--dcs-gold-dim); margin-top: 3px; }
.divine-character-system .dcs-journey-ach { font-family: 'EB Garamond', serif; font-size: 13px; color: var(--dcs-dim); margin-top: 4px; font-style: italic; }

/* ============================================================================
 * Phase 10 — Artifacts, Sources, Awards, journal links
 * ==========================================================================*/
.divine-character-system .dcs-artifacts { margin-top: 12px; }
.divine-character-system .dcs-artifact-card { border: 1px solid var(--dcs-gold-dim); border-radius: 12px; padding: 14px; margin-bottom: 12px;
  background: linear-gradient(160deg, color-mix(in srgb,var(--cx-accent-deep) 6%,transparent), rgba(0,0,0,.12)); }
.divine-character-system .dcs-art-name { font-family: 'Cinzel', serif; font-weight: 700; }
.divine-character-system .dcs-af-field { display: flex; flex-direction: column; gap: 4px; flex: 1; }
.divine-character-system .dcs-af-field > span { font-family: 'Cinzel', serif; font-size: 9px; letter-spacing: .05em; text-transform: uppercase; color: var(--dcs-gold-dim); }
.divine-character-system .dcs-art-toggles { align-items: center; }
.divine-character-system .dcs-check { display: inline-flex; align-items: center; gap: 6px; font-family: 'EB Garamond', serif; font-size: 13px; color: var(--dcs-text); cursor: pointer; }
.divine-character-system .dcs-art-charges { margin: 10px 0; }
.divine-character-system .dcs-art-ability { margin-top: 6px; }

/* sources */
.divine-character-system .dcs-src-filters { margin: 10px 0; }
.divine-character-system .dcs-src-frow { display: flex; flex-wrap: wrap; gap: 5px; align-items: center; margin-bottom: 6px; }
.divine-character-system .dcs-src-frow > span { font-family: 'Cinzel', serif; font-size: 9.5px; letter-spacing: .05em; text-transform: uppercase; color: var(--dcs-dim); min-width: 50px; }
.divine-character-system .dcs-src-count { font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .04em; color: var(--dcs-gold-dim); margin-bottom: 8px; }
.divine-character-system .dcs-src-group { margin-bottom: 12px; }
.divine-character-system .dcs-src-planet { font-family: 'Cinzel', serif; font-size: 13px; color: var(--dcs-gold); border-bottom: 1px solid var(--dcs-gold-dim); padding-bottom: 4px; margin-bottom: 6px; }
.divine-character-system .dcs-src-row { display: flex; align-items: baseline; gap: 10px; padding: 5px 0; border-bottom: 1px solid var(--dcs-border); }
.divine-character-system .dcs-src-type { font-family: 'Cinzel', serif; font-size: 9px; letter-spacing: .04em; text-transform: uppercase; color: var(--cx-surface); background: var(--dcs-gold-dim); padding: 2px 7px; border-radius: 10px; white-space: nowrap; }
.divine-character-system .dcs-src-name { font-family: 'EB Garamond', serif; font-size: 14.5px; color: var(--dcs-text); flex: 1; }
.divine-character-system .dcs-src-meta { font-family: 'EB Garamond', serif; font-size: 12px; color: var(--dcs-dim); text-align: right; }

/* awards */
.divine-character-system .dcs-award-row { display: flex; gap: 6px; margin-bottom: 6px; flex-wrap: wrap; }
.divine-character-system .dcs-award-legacy { font-family: 'EB Garamond', serif; font-size: 13px; color: var(--dcs-gold-dim); padding: 3px 0; }

/* inventory library */
.divine-character-system .dcs-inv-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 8px; margin-bottom: 12px; }
.divine-character-system .dcs-inv-group { margin-bottom: 16px; }
.divine-character-system .dcs-inv-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 14px; align-items: stretch; }
.divine-character-system .dcs-inv-zone { min-height: 270px; border: 1px solid color-mix(in srgb,var(--cx-accent-deep) 22%,transparent); border-radius: 14px; padding: 12px; background: color-mix(in srgb,var(--cx-bg) 42%,transparent); transition: border-color .15s ease, box-shadow .15s ease, background .15s ease; }
.divine-character-system .dcs-inv-zone.dragover { border-color: var(--dcs-gold); box-shadow: 0 0 0 2px color-mix(in srgb,var(--cx-accent-deep) 14%,transparent), 0 0 24px color-mix(in srgb,var(--cx-accent-deep) 16%,transparent); background: color-mix(in srgb,var(--cx-accent-deep) 8%,transparent); }
.divine-character-system .dcs-inv-zone-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 3px; }
.divine-character-system .dcs-inv-zone-head strong { font-family: 'Cinzel', serif; font-size: 13px; letter-spacing: .11em; text-transform: uppercase; color: var(--dcs-gold); }
.divine-character-system .dcs-inv-zone-head span { font-family: 'EB Garamond', serif; font-size: 12.5px; color: var(--dcs-dim); white-space: nowrap; }
.divine-character-system .dcs-inv-zone-sub { font-family: 'EB Garamond', serif; font-size: 12.5px; color: var(--dcs-dim); margin-bottom: 10px; }
.divine-character-system .dcs-inv-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 8px; align-items: stretch; }
.divine-character-system .dcs-inv-card { display: flex; flex-direction: column; min-height: 126px; border: 1px solid var(--dcs-border); border-radius: 9px; padding: 10px 11px;
  background: color-mix(in srgb,var(--cx-surface) 45%,transparent); cursor: grab; user-select: none; }
.divine-character-system .dcs-inv-card:active { cursor: grabbing; }
.divine-character-system .dcs-inv-card.dragging { opacity: .55; border-color: var(--dcs-gold); }
.divine-character-system .dcs-inv-card.is-empty { opacity: .72; }
.divine-character-system .dcs-inv-card:hover { border-color: var(--dcs-gold-dim); background: color-mix(in srgb,var(--cx-accent-deep) 7%,transparent); }
.divine-character-system .dcs-inv-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.divine-character-system .dcs-inv-name { font-family: 'EB Garamond', serif; font-size: 15px; line-height: 1.15; color: var(--dcs-text); font-weight: 600; min-width: 0; overflow-wrap: anywhere; }
.divine-character-system .dcs-inv-qty { flex: 0 0 auto; font-family: 'Cinzel', serif; font-size: 10px; color: var(--dcs-gold); border: 1px solid var(--dcs-gold-dim);
  border-radius: 999px; padding: 2px 7px; background: color-mix(in srgb,var(--cx-accent-deep) 8%,transparent); }
.divine-character-system .dcs-inv-desc { display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden;
  font-family: 'EB Garamond', serif; font-size: 12.5px; line-height: 1.28; color: var(--dcs-dim); margin-top: 7px; }
.divine-character-system .dcs-inv-foot { margin-top: auto; padding-top: 10px; display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.divine-character-system .dcs-inv-qty-controls { display: inline-flex; align-items: center; gap: 6px; }
.divine-character-system .dcs-inv-qty-now { font-family: 'Cinzel', serif; font-size: 9.5px; color: var(--dcs-dim); letter-spacing: .04em; text-transform: uppercase; min-width: 45px; text-align: center; }
.divine-character-system .dcs-inv-movehint { font-family: 'Cinzel', serif; font-size: 9px; color: var(--dcs-dim); letter-spacing: .08em; text-transform: uppercase; opacity: .72; }
.divine-character-system .dcs-inv-empty { grid-column: 1 / -1; margin: 0; min-height: 88px; display: flex; align-items: center; justify-content: center; text-align: center; }
.divine-character-system .dcs-mini { font-family: 'Cinzel', serif; font-size: 9.5px; letter-spacing: .04em; color: var(--dcs-gold);
  border: 1px solid var(--dcs-gold-dim); border-radius: 7px; padding: 4px 8px; background: color-mix(in srgb,var(--cx-accent-deep) 8%,transparent); cursor: pointer; }
.divine-character-system .dcs-inv-qty-controls .dcs-mini { min-width: 28px; padding: 4px 0; }
.divine-character-system .dcs-mini:hover { background: color-mix(in srgb,var(--cx-accent-deep) 18%,transparent); }
@media (max-width: 860px) {
  .divine-character-system .dcs-inv-split { grid-template-columns: 1fr; }
  .divine-character-system .dcs-inv-zone { min-height: 190px; }
}

/* journal tools */
.divine-character-system .dcs-journal-tools { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-bottom: 10px; }
.divine-character-system .dcs-journal-tools .dcs-input { flex: 1; min-width: 200px; }
.divine-character-system .dcs-major-check { font-size: 11px; white-space: nowrap; }

/* ============================================================================
 * Phase 11 — Validation, attunement, accessibility, mobile polish
 * ==========================================================================*/
/* focus states (keyboard navigation) */
.divine-character-system button:focus-visible,
.divine-character-system input:focus-visible,
.divine-character-system select:focus-visible,
.divine-character-system textarea:focus-visible,
.divine-character-system [role="button"]:focus-visible,
.divine-character-system .dcs-node:focus-visible {
  outline: 2px solid var(--dcs-gold); outline-offset: 2px; border-radius: 6px;
}
.divine-character-system .dcs-node:focus-visible .dcs-node-core { stroke: var(--dcs-gold); }

/* attunement bar */
.divine-character-system .dcs-attune-bar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 10px 0;
  padding: 10px 14px; border: 1px solid var(--dcs-gold-dim); border-radius: 10px; background: color-mix(in srgb,var(--cx-accent-deep) 6%,transparent); }
.divine-character-system .dcs-attune-bar.over { border-color: var(--dcs-red); background: color-mix(in srgb,var(--cx-danger) 10%,transparent); }
.divine-character-system .dcs-attune-label { font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: var(--dcs-gold-dim); }
.divine-character-system .dcs-attune-count { font-family: 'Cinzel', serif; font-size: 18px; color: var(--dcs-gold); }
.divine-character-system .dcs-attune-bar.over .dcs-attune-count { color: var(--dcs-red); }
.divine-character-system .dcs-attune-slots { display: inline-flex; align-items: center; gap: 6px; font-family: 'EB Garamond', serif; font-size: 12px; color: var(--dcs-dim); }
.divine-character-system .dcs-attune-warn { font-family: 'Cinzel', serif; font-size: 11px; color: var(--dcs-red); letter-spacing: .03em; }

/* validation */
.divine-character-system .dcs-validate-ok { font-family: 'EB Garamond', serif; font-size: 14px; color: var(--cx-success); padding: 6px 0; }
.divine-character-system .dcs-validate-head { font-family: 'Cinzel', serif; font-size: 12px; letter-spacing: .03em; color: var(--dcs-gold); margin-bottom: 8px; }
.divine-character-system .dcs-validate-row { display: flex; align-items: baseline; gap: 10px; padding: 6px 8px; border-radius: 7px; border-left: 3px solid var(--dcs-gold-dim); background: color-mix(in srgb,var(--cx-text-strong) 2%,transparent); margin-bottom: 5px; cursor: pointer; }
.divine-character-system .dcs-validate-row.dcs-v-error { border-left-color: var(--dcs-red); background: color-mix(in srgb,var(--cx-danger) 8%,transparent); }
.divine-character-system .dcs-validate-row:hover { background: color-mix(in srgb,var(--cx-text-strong) 5%,transparent); }
.divine-character-system .dcs-v-planet { font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .03em; color: var(--dcs-gold-dim); min-width: 90px; }
.divine-character-system .dcs-v-msg { font-family: 'EB Garamond', serif; font-size: 13.5px; color: var(--dcs-text); }

/* journal links */
.divine-character-system .dcs-jlinks { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.divine-character-system .dcs-jlink { font-family: 'EB Garamond', serif; font-size: 12.5px; color: var(--dcs-gold); background: color-mix(in srgb,var(--cx-accent-deep) 10%,transparent);
  border: 1px solid var(--dcs-gold-dim); border-radius: 7px; padding: 4px 10px; cursor: pointer; }
.divine-character-system .dcs-jlink:hover { background: color-mix(in srgb,var(--cx-accent-deep) 22%,transparent); }

/* mobile polish */
@media (max-width: 768px) {
  .divine-character-system .dcs-navtabs { overflow-x: auto; flex-wrap: nowrap; -webkit-overflow-scrolling: touch; padding-bottom: 4px; }
  .divine-character-system .dcs-navtab { white-space: nowrap; flex: 0 0 auto; }
  .divine-character-system .dcs-planets-toolbar { flex-direction: column; align-items: stretch; }
  .divine-character-system .dcs-viewtoggle { justify-content: stretch; }
  .divine-character-system .dcs-viewtoggle .dcs-vt { flex: 1; }
  .divine-character-system .dcs-row { flex-direction: column; }
  .divine-character-system .dcs-modal-foot { flex-wrap: wrap; }
  .divine-character-system .dcs-src-row { flex-wrap: wrap; }
  .divine-character-system .dcs-award-row { flex-direction: column; }
  .divine-character-system .dcs-attune-bar { gap: 8px; }
}

/* ============================================================================
 * Phase 12 — D&D Beyond / WotC PDF importer (optional)
 * ==========================================================================*/
.divine-character-system .dcs-pdf-overlay { z-index: 9700; } /* above the editor modal */
.divine-character-system .dcs-pdf-modal { width: min(720px, 100%); }
.divine-character-system .dcs-pdf-btn { font-size: 11px; padding: 6px 11px; }
.divine-character-system .dcs-pdf-drop { border: 1.5px dashed var(--dcs-gold-dim); border-radius: 12px; padding: 18px; text-align: center;
  background: color-mix(in srgb,var(--cx-accent-deep) 5%,transparent); margin: 12px 0; }
.divine-character-system .dcs-pdf-drop input[type="file"] { color: var(--dcs-text); font-family: 'EB Garamond', serif; }
.divine-character-system .dcs-pdf-hint { font-family: 'EB Garamond', serif; font-size: 12px; color: var(--dcs-dim); margin-top: 8px; }
.divine-character-system .dcs-pdf-error { font-family: 'EB Garamond', serif; font-size: 14px; color: var(--dcs-red);
  border: 1px solid var(--dcs-red); border-radius: 10px; padding: 12px 14px; margin-bottom: 10px; background: color-mix(in srgb,var(--cx-danger) 8%,transparent); }
.divine-character-system .dcs-pdf-sec { border: 1px solid var(--dcs-border); border-radius: 10px; padding: 12px 14px; margin-bottom: 10px; }
.divine-character-system .dcs-pdf-sec .dcs-check strong { font-family: 'Cinzel', serif; color: var(--dcs-gold); }
.divine-character-system .dcs-pdf-warn { font-family: 'EB Garamond', serif; font-size: 12.5px; color: var(--dcs-gold); margin: 6px 0; }
.divine-character-system .dcs-pdf-preview { font-family: 'EB Garamond', serif; font-size: 13px; color: var(--dcs-dim); margin: 6px 0;
  max-height: 110px; overflow-y: auto; word-break: break-word; }

/* Phase 13 — flattened-text fallback source + confidence banners */
.divine-character-system .dcs-pdf-source { font-family: 'Cinzel', serif; font-size: 12px; letter-spacing: .02em; color: var(--dcs-gold);
  border: 1px solid var(--dcs-gold-dim); border-radius: 8px; padding: 8px 12px; margin-bottom: 10px; background: color-mix(in srgb,var(--cx-accent-deep) 6%,transparent); }
.divine-character-system .dcs-pdf-source-text { color: var(--cx-accent); }
.divine-character-system .dcs-pdf-confidence { border: 1px solid var(--dcs-gold-dim); border-radius: 8px; padding: 8px 12px; margin-bottom: 10px;
  background: color-mix(in srgb,var(--cx-accent-deep) 5%,transparent); font-family: 'EB Garamond', serif; font-size: 12.5px; color: var(--dcs-gold); }
.divine-character-system .dcs-pdf-confidence div { padding: 2px 0; }

/* Combat Mode action roll buttons */
.divine-character-system .dcs-roll-actions { display: flex; flex-wrap: wrap; gap: 6px; margin: 7px 0 3px; }
.divine-character-system .dcs-roll-btn { border: 1px solid var(--dcs-gold-dim); border-radius: 7px; padding: 4px 8px;
  background: color-mix(in srgb,var(--cx-accent-deep) 8%,transparent); color: var(--dcs-gold); font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .03em; cursor: pointer; }
.divine-character-system .dcs-roll-btn:hover { background: color-mix(in srgb,var(--cx-accent-deep) 18%,transparent); }

/* ============================================================================
 * Deploy93/94 — 3D dice animation + divine natural-20 swirl
 * All classes are dcs-d3d* / dcs-dice3d* / dcs-crit* / dcs-max* — none collide
 * with the .dcs-die roller buttons or .dcs-die-face roll-log pips. CSS-3D only.
 * ==========================================================================*/
.dcs-dice3d-host { position: fixed; inset: 0; z-index: 2147483000; pointer-events: none;
  display: flex; align-items: center; justify-content: center; perspective: 900px; isolation: isolate; transform: translateZ(0); }

.dcs-dice3d-tray { display: flex; flex-wrap: wrap; gap: 18px; align-items: center; justify-content: center;
  max-width: 90vw; transform-style: preserve-3d; animation: dcsTrayIn .2s ease, dcsTrayOut .4s ease 1.15s forwards; }
@keyframes dcsTrayIn { from { opacity: 0; transform: scale(.7); } to { opacity: 1; transform: scale(1); } }
@keyframes dcsTrayOut { to { opacity: 0; transform: scale(.9) translateY(-20px); } }

.dcs-d3d-wrap { width: 84px; height: 84px; transform-style: preserve-3d; }
.dcs-d3d { width: 84px; height: 84px; position: relative; transform-style: preserve-3d;
  animation: dcsTumble 1.15s cubic-bezier(.2,.8,.25,1) forwards; }
/* Settle at full turns on every axis so the die ends FACING FORWARD
   (720 = 2 full turns; the front face is what shows the rolled value). */
@keyframes dcsTumble {
  0%   { transform: rotateX(0) rotateY(0) rotateZ(0) scale(.6); }
  60%  { transform: rotateX(560deg) rotateY(430deg) rotateZ(120deg) scale(1.12); }
  100% { transform: rotateX(720deg) rotateY(720deg) rotateZ(0) scale(1); }
}

/* Faceted "gem" token for d4/d8/d10/d12/d20. */
.dcs-d3d-gem { display: flex; flex-direction: column; align-items: center; justify-content: center;
  background: radial-gradient(circle at 38% 30%, var(--cx-surface), var(--cx-field) 75%);
  border: 2px solid var(--dcs-gold-dim); color: var(--dcs-gold);
  box-shadow: 0 0 22px color-mix(in srgb,var(--cx-accent-deep) 35%,transparent), inset 0 0 18px rgba(0,0,0,.6);
  font-family: 'Cinzel', serif; backface-visibility: hidden; }
.dcs-d3d-num { font-size: 30px; font-weight: 700; line-height: 1; }
.dcs-d3d-type { font-size: 10px; letter-spacing: .12em; opacity: .7; margin-top: 2px; }
.dcs-d3d-shape-d20 { clip-path: polygon(50% 0,93% 25%,93% 75%,50% 100%,7% 75%,7% 25%); }
.dcs-d3d-shape-d12 { clip-path: polygon(50% 0,90% 20%,100% 60%,75% 95%,25% 95%,0 60%,10% 20%); }
.dcs-d3d-shape-d10 { clip-path: polygon(50% 0,90% 38%,68% 100%,32% 100%,10% 38%); }
.dcs-d3d-shape-d8  { clip-path: polygon(50% 0,100% 50%,50% 100%,0 50%); }
.dcs-d3d-shape-d4  { clip-path: polygon(50% 4%,96% 96%,4% 96%); }
.dcs-d3d-shape-dN  { clip-path: polygon(50% 0,93% 25%,93% 75%,50% 100%,7% 75%,7% 25%); }

/* Real cube for d6 — rolled value sits on the FRONT face, which the tumble
   (ending at full turns) leaves facing the viewer. */
.dcs-d3d-cube { transform-style: preserve-3d; }
.dcs-d3d-cube .dcs-d3d-face { position: absolute; width: 84px; height: 84px; display: flex;
  align-items: center; justify-content: center; font-family: 'Cinzel', serif; font-size: 34px; font-weight: 700;
  color: var(--dcs-gold); background: radial-gradient(circle at 40% 32%, var(--cx-surface), var(--cx-field) 78%);
  border: 2px solid var(--dcs-gold-dim); box-shadow: inset 0 0 16px rgba(0,0,0,.6); backface-visibility: hidden; }
.dcs-d3d-cube .f-front  { transform: translateZ(42px); }
.dcs-d3d-cube .f-back   { transform: rotateY(180deg) translateZ(42px); }
.dcs-d3d-cube .f-right  { transform: rotateY(90deg) translateZ(42px); }
.dcs-d3d-cube .f-left   { transform: rotateY(-90deg) translateZ(42px); }
.dcs-d3d-cube .f-top    { transform: rotateX(90deg) translateZ(42px); }
.dcs-d3d-cube .f-bottom { transform: rotateX(-90deg) translateZ(42px); }

/* Max-value die glows gold. */
.dcs-d3d[data-max="1"].dcs-d3d-gem,
.dcs-d3d[data-max="1"] .f-front { border-color: var(--dcs-gold);
  box-shadow: 0 0 34px color-mix(in srgb,var(--cx-accent) 80%,transparent), inset 0 0 20px color-mix(in srgb,var(--cx-accent) 35%,transparent); color: var(--cx-accent-bright); }

.dcs-dice3d-total { width: 100%; text-align: center; margin-top: 6px; font-family: 'Cinzel', serif;
  font-size: 40px; color: var(--dcs-gold); text-shadow: 0 0 18px color-mix(in srgb,var(--cx-accent-deep) 60%,transparent);
  opacity: 0; animation: dcsTotalIn .4s ease .95s forwards; }
@keyframes dcsTotalIn { from { opacity: 0; transform: scale(.6); } to { opacity: 1; transform: scale(1); } }

/* ---- Divine natural-20 swirl (single d20 = 20 only) ---- */
.dcs-crit-swirl { position: fixed; inset: 0; z-index: 2147483020; pointer-events: none; overflow: hidden;
  animation: dcsCritFade .6s ease 3.55s forwards; }
.dcs-crit-swirl .dcs-crit-ring { position: absolute; top: 50%; left: 50%; width: 40vmax; height: 40vmax;
  margin: -20vmax 0 0 -20vmax; border-radius: 50%;
  border: 3px solid transparent; border-top-color: color-mix(in srgb,var(--cx-accent) 90%,transparent); border-right-color: color-mix(in srgb,var(--cx-accent) 40%,transparent);
  animation: dcsCritSpin 1.4s linear infinite, dcsCritGrow 1.8s ease forwards; }
.dcs-crit-swirl .dcs-crit-ring.r2 { width: 60vmax; height: 60vmax; margin: -30vmax 0 0 -30vmax;
  border-top-color: color-mix(in srgb,var(--cx-accent-bright) 70%,transparent); animation: dcsCritSpin 2s linear infinite reverse, dcsCritGrow 1.8s ease forwards; }
.dcs-crit-swirl .dcs-crit-burst { position: absolute; inset: 0;
  background: radial-gradient(circle at 50% 50%, color-mix(in srgb,var(--cx-accent) 42%,transparent), color-mix(in srgb,var(--cx-accent) 10%,transparent) 35%, transparent 60%);
  animation: dcsCritPulse 1.8s ease forwards; }
.dcs-crit-swirl .dcs-crit-word { position: absolute; top: 50%; left: 0; right: 0; text-align: center;
  transform: translateY(-50%); font-family: 'Cinzel', serif; font-size: clamp(38px, 11vw, 120px); font-weight: 700;
  letter-spacing: .1em; color: var(--cx-accent-bright); text-shadow: 0 0 30px color-mix(in srgb,var(--cx-accent) 90%,transparent), 0 0 60px color-mix(in srgb,var(--cx-accent) 50%,transparent);
  animation: dcsCritWord 1.8s cubic-bezier(.2,.9,.2,1) forwards; }
@keyframes dcsCritSpin { to { transform: rotate(360deg); } }
@keyframes dcsCritGrow { from { opacity: 0; transform: scale(.4) rotate(0); } 30% { opacity: 1; } to { opacity: .9; transform: scale(1) rotate(40deg); } }
@keyframes dcsCritPulse { 0% { opacity: 0; } 30% { opacity: 1; } 100% { opacity: 0; } }
@keyframes dcsCritWord { 0% { opacity: 0; transform: translateY(-50%) scale(.6); } 35% { opacity: 1; transform: translateY(-50%) scale(1.08); } 80% { opacity: 1; transform: translateY(-50%) scale(1); } 100% { opacity: 0; transform: translateY(-50%) scale(1.02); } }
@keyframes dcsCritFade { to { opacity: 0; } }

/* ---- Subtle MAX ROLL flash (any non-nat20 die hitting its own max) ---- */
.dcs-max-flash { position: fixed; inset: 0; z-index: 2147483010; pointer-events: none; display: flex;
  align-items: center; justify-content: center; }
.dcs-max-flash .dcs-max-word { font-family: 'Cinzel', serif; font-size: clamp(24px, 6vw, 58px); font-weight: 700;
  letter-spacing: .14em; color: var(--cx-accent-bright); text-shadow: 0 0 20px color-mix(in srgb,var(--cx-accent) 70%,transparent);
  animation: dcsMaxWord 3s ease forwards; }
@keyframes dcsMaxWord { 0% { opacity: 0; transform: translateY(14px) scale(.9); } 30% { opacity: 1; transform: translateY(0) scale(1); } 75% { opacity: 1; } 100% { opacity: 0; transform: translateY(-10px) scale(1); } }

/* Respect reduced-motion: keep the result readable, drop the spin. */
@media (prefers-reduced-motion: reduce) {
  .dcs-d3d { animation: dcsTrayIn .2s ease forwards; }
  .dcs-crit-swirl .dcs-crit-ring { animation: dcsCritGrow 1.2s ease forwards; }
}

/* Deploy97 — screen-traveling dice throw. The dice now enter from off-screen,
   arc across the viewport, bounce, roll, and settle on the real result. */
.dcs-dice3d-host { align-items: stretch; justify-content: stretch; overflow: hidden; }
.dcs-dice3d-tray.dcs-dice3d-arena {
  position: fixed;
  inset: 0;
  z-index: 2147483001;
  width: 100vw;
  height: 100vh;
  max-width: none;
  display: block;
  transform-style: preserve-3d;
  animation: dcsArenaOut .55s ease 4.05s forwards;
}
.dcs-dice3d-arena .dcs-d3d-wrap {
  position: absolute;
  left: 0;
  top: 0;
  width: clamp(58px, 9vw, 84px);
  height: clamp(58px, 9vw, 84px);
  transform-style: preserve-3d;
  animation: dcsDieAcross var(--dur, 1650ms) cubic-bezier(.12,.72,.18,1) var(--delay, 0ms) forwards;
  opacity: 0;
  filter: drop-shadow(0 18px 20px rgba(0,0,0,.5));
}
.dcs-dice3d-arena .dcs-d3d {
  width: 100%;
  height: 100%;
  animation: dcsTumbleAcross var(--dur, 1650ms) cubic-bezier(.08,.76,.2,1) var(--delay, 0ms) forwards;
}
.dcs-dice3d-arena .dcs-d3d-cube .dcs-d3d-face {
  width: 100%;
  height: 100%;
  font-size: clamp(24px, 4vw, 34px);
}
.dcs-dice3d-arena .dcs-d3d-cube .f-front  { transform: translateZ(calc(clamp(58px, 9vw, 84px) / 2)); }
.dcs-dice3d-arena .dcs-d3d-cube .f-back   { transform: rotateY(180deg) translateZ(calc(clamp(58px, 9vw, 84px) / 2)); }
.dcs-dice3d-arena .dcs-d3d-cube .f-right  { transform: rotateY(90deg) translateZ(calc(clamp(58px, 9vw, 84px) / 2)); }
.dcs-dice3d-arena .dcs-d3d-cube .f-left   { transform: rotateY(-90deg) translateZ(calc(clamp(58px, 9vw, 84px) / 2)); }
.dcs-dice3d-arena .dcs-d3d-cube .f-top    { transform: rotateX(90deg) translateZ(calc(clamp(58px, 9vw, 84px) / 2)); }
.dcs-dice3d-arena .dcs-d3d-cube .f-bottom { transform: rotateX(-90deg) translateZ(calc(clamp(58px, 9vw, 84px) / 2)); }
.dcs-dice3d-arena .dcs-dice3d-total {
  position: fixed;
  left: 0;
  right: 0;
  bottom: max(28px, env(safe-area-inset-bottom));
  width: auto;
  margin: 0;
  font-size: clamp(38px, 10vw, 78px);
  animation: dcsTotalThrowIn .35s ease 1.35s forwards;
}
@keyframes dcsDieAcross {
  0% { opacity: 0; transform: translate3d(var(--sx), var(--sy), -80px) scale(.66); }
  8% { opacity: 1; }
  42% { opacity: 1; transform: translate3d(var(--mx), var(--my), 110px) scale(1.14); }
  70% { opacity: 1; transform: translate3d(calc(var(--ex) - 18px), calc(var(--ey) - 36px), 28px) scale(1.02); }
  84% { opacity: 1; transform: translate3d(calc(var(--ex) + 10px), calc(var(--ey) + 7px), 0) scale(.96); }
  92% { opacity: 1; transform: translate3d(calc(var(--ex) - 5px), calc(var(--ey) - 10px), 0) scale(1); }
  100% { opacity: 1; transform: translate3d(var(--ex), var(--ey), 0) scale(1); }
}
@keyframes dcsTumbleAcross {
  0%   { transform: rotateX(0) rotateY(0) rotateZ(0); }
  42%  { transform: rotateX(calc(var(--spin, 1) * 620deg)) rotateY(calc(var(--spin, 1) * 740deg)) rotateZ(calc(var(--spin, 1) * 260deg)); }
  70%  { transform: rotateX(calc(var(--spin, 1) * 1080deg)) rotateY(calc(var(--spin, 1) * 920deg)) rotateZ(calc(var(--spin, 1) * 420deg)); }
  84%  { transform: rotateX(calc(var(--spin, 1) * 1320deg)) rotateY(calc(var(--spin, 1) * 1200deg)) rotateZ(calc(var(--spin, 1) * 540deg)); }
  92%  { transform: rotateX(calc(var(--spin, 1) * 1420deg)) rotateY(calc(var(--spin, 1) * 1340deg)) rotateZ(calc(var(--spin, 1) * 660deg)); }
  100% { transform: rotateX(1440deg) rotateY(1440deg) rotateZ(720deg); }
}
@keyframes dcsTotalThrowIn { from { opacity: 0; transform: translateY(18px) scale(.82); } to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes dcsArenaOut { to { opacity: 0; } }
@media (max-width: 640px) {
  .dcs-dice3d-arena .dcs-d3d-wrap { width: 62px; height: 62px; }
  .dcs-dice3d-arena .dcs-d3d-num { font-size: 23px; }
  .dcs-dice3d-arena .dcs-d3d-type { font-size: 8px; }
}
@media (prefers-reduced-motion: reduce) {
  .dcs-dice3d-tray.dcs-dice3d-arena { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 14px; animation: dcsArenaOut .45s ease 3.4s forwards; }
  .dcs-dice3d-arena .dcs-d3d-wrap { position: static; opacity: 1; animation: none; }
  .dcs-dice3d-arena .dcs-d3d { animation: none; }
}

/* ---- Combat customization restore (deploy99) ---- */
.divine-character-system .dcs-cm-overlay {
  background-color: var(--dcs-cm-bg, var(--cx-field));
  background-image: radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--dcs-cm-bg, var(--cx-field)) 78%, var(--cx-accent) 10%), color-mix(in srgb,var(--cx-bg) 99%,transparent));
}
/* Deploy110 — Panel color should affect only the actual cards/panels,
   not the larger section/field containers that hold those cards. */
.divine-character-system .dcs-cm-vital,
.divine-character-system .dcs-cm-rolltray,
.divine-character-system .dcs-roll-card,
.divine-character-system #dcs-cm-spelllist .dcs-spell,
.divine-character-system #dcs-cm-reslist .dcs-res,
.divine-character-system .dcs-feat,
.divine-character-system .dcs-pinned,
.divine-character-system .dcs-abil-card,
.divine-character-system .dcs-skill-row,
.divine-character-system .dcs-cm-custom-panel {
  background-color: color-mix(in srgb, var(--dcs-cm-panel, var(--cx-surface)) 82%, transparent);
}
.divine-character-system .dcs-cm .dcs-abil-card {
  background-image: linear-gradient(160deg, color-mix(in srgb,var(--cx-text-strong) 4.5%,transparent), rgba(0,0,0,.14));
}
.divine-character-system .dcs-cm .dcs-abil-card:hover,
.divine-character-system .dcs-cm .dcs-skill-row:hover {
  background-color: color-mix(in srgb, var(--dcs-cm-panel, var(--cx-surface)) 72%, var(--dcs-gold, var(--cx-accent)));
}
.divine-character-system .dcs-cm-section {
  background-color: transparent;
}
.divine-character-system .dcs-cm-hp {
  background-color: color-mix(in srgb, var(--dcs-cm-panel, var(--cx-surface)) 72%, transparent);
}
.divine-character-system .dcs-cm-hpstyle-gold .dcs-cm-hp-val,
.divine-character-system .dcs-cm-hpstyle-gold .dcs-cm-hpmini b { color: var(--dcs-gold); }
.divine-character-system .dcs-cm-hpstyle-player .dcs-cm-hp-val,
.divine-character-system .dcs-cm-hpstyle-player .dcs-cm-hpmini b { color: var(--dcs-gold); }
.divine-character-system .dcs-cm-dicetheme-gold .dcs-die-face,
.divine-character-system .dcs-cm-dicetheme-gold .dcs-die,
.divine-character-system .dcs-cm-dicetheme-player .dcs-die-face,
.divine-character-system .dcs-cm-dicetheme-player .dcs-die { border-color: var(--dcs-gold); color: var(--dcs-gold); }
.divine-character-system .dcs-cm-text-small { font-size: 14px; }
.divine-character-system .dcs-cm-text-normal { font-size: 16px; }
.divine-character-system .dcs-cm-text-large { font-size: 18px; }
.divine-character-system .dcs-cm-density-compact .dcs-cm-left > *,
.divine-character-system .dcs-cm-density-compact .dcs-cm-section { margin-bottom: 8px; }
.divine-character-system .dcs-cm-density-compact .dcs-cm-field,
.divine-character-system .dcs-cm-density-compact .dcs-cm-section,
.divine-character-system .dcs-cm-density-compact .dcs-cm-vital,
.divine-character-system .dcs-cm-density-compact .dcs-cm-hp { padding: 8px; }
.divine-character-system .dcs-cm-density-spacious .dcs-cm-left > *,
.divine-character-system .dcs-cm-density-spacious .dcs-cm-section { margin-bottom: 20px; }
.divine-character-system .dcs-cm-density-spacious .dcs-cm-field,
.divine-character-system .dcs-cm-density-spacious .dcs-cm-section,
.divine-character-system .dcs-cm-density-spacious .dcs-cm-vital,
.divine-character-system .dcs-cm-density-spacious .dcs-cm-hp { padding: 16px; }
.divine-character-system .dcs-cm-buttons-sharp button,
.divine-character-system .dcs-cm-buttons-sharp .dcs-btn,
.divine-character-system .dcs-cm-buttons-sharp .dcs-input { border-radius: 2px !important; }
.divine-character-system .dcs-cm-buttons-rounded button,
.divine-character-system .dcs-cm-buttons-rounded .dcs-btn,
.divine-character-system .dcs-cm-buttons-rounded .dcs-input { border-radius: 10px !important; }
.divine-character-system .dcs-cm-buttons-pill button,
.divine-character-system .dcs-cm-buttons-pill .dcs-btn,
.divine-character-system .dcs-cm-buttons-pill .dcs-input { border-radius: 999px !important; }
.divine-character-system .dcs-cm-custom-panel { margin-top: 18px; padding: 14px; border: 1px solid var(--dcs-border); border-radius: 14px; }
.divine-character-system .dcs-cm-custom-grid { display: grid; grid-template-columns: repeat(5, minmax(140px, 1fr)); gap: 10px; margin-top: 10px; }
.divine-character-system .dcs-cm-color-grid { grid-template-columns: repeat(4, minmax(120px, 1fr)); }
.divine-character-system .dcs-cm-custom-control { display: grid; gap: 5px; font-family: 'EB Garamond', serif; color: var(--dcs-readable); }
.divine-character-system .dcs-cm-custom-control span,
.divine-character-system .dcs-cm-section-toggle span { font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: var(--dcs-readable-dim); }
.divine-character-system .dcs-cm-color { width: 100%; min-height: 38px; border: 1px solid var(--dcs-border); background: rgba(0,0,0,.25); cursor: pointer; }
.divine-character-system .dcs-cm-wallpaper-box { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: end; margin-top: 12px; }
.divine-character-system .dcs-cm-toggle-grid { display: grid; grid-template-columns: repeat(5, minmax(130px, 1fr)); gap: 8px; margin-top: 12px; }
.divine-character-system .dcs-cm-section-toggle { display: flex; align-items: center; gap: 7px; padding: 8px 9px; border: 1px solid var(--dcs-border); border-radius: 10px; background: rgba(0,0,0,.18); cursor: pointer; }
.divine-character-system .dcs-cm-section-toggle input { accent-color: var(--dcs-gold); }
.divine-character-system .dcs-cm-custom-actions { margin-top: 12px; display: flex; justify-content: flex-end; }
@media (max-width: 900px) {
  .divine-character-system .dcs-cm-custom-grid,
  .divine-character-system .dcs-cm-color-grid,
  .divine-character-system .dcs-cm-toggle-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .divine-character-system .dcs-cm-wallpaper-box { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .divine-character-system .dcs-cm-custom-grid,
  .divine-character-system .dcs-cm-color-grid,
  .divine-character-system .dcs-cm-toggle-grid { grid-template-columns: 1fr; }
}

/* Deploy100 — make non-d6 dice roll reliably too.
   The d6 is a true cube with visible faces, but the other dice were flat
   faceted tokens. Rotating those flat tokens through full X/Y flips made them
   vanish edge-on/back-face during the throw, which made it look like only d6
   was fixed. Keep all non-d6 dice visibly face-forward while still spinning,
   bouncing, and settling on the rolled value. */
.dcs-dice3d-arena .dcs-d3d-gem {
  backface-visibility: visible;
  transform-origin: 50% 50%;
  animation: dcsGemTumbleAcross var(--dur, 1650ms) cubic-bezier(.08,.76,.2,1) var(--delay, 0ms) forwards;
}
.dcs-dice3d-arena .dcs-d3d-gem::before {
  content: "";
  position: absolute;
  inset: 6px;
  clip-path: inherit;
  border: 1px solid color-mix(in srgb,var(--cx-accent) 22%,transparent);
  background: linear-gradient(135deg, color-mix(in srgb,var(--cx-accent) 16%,transparent), transparent 42%, rgba(0,0,0,.22));
  pointer-events: none;
}
.dcs-dice3d-arena .dcs-d3d-gem .dcs-d3d-num,
.dcs-dice3d-arena .dcs-d3d-gem .dcs-d3d-type {
  position: relative;
  z-index: 1;
}
@keyframes dcsGemTumbleAcross {
  0%   { transform: rotateX(24deg) rotateY(-18deg) rotateZ(0deg) scale(.74); }
  28%  { transform: rotateX(-22deg) rotateY(20deg) rotateZ(calc(var(--spin, 1) * 260deg)) scale(1.12); }
  52%  { transform: rotateX(18deg) rotateY(-16deg) rotateZ(calc(var(--spin, 1) * 560deg)) scale(1.04); }
  72%  { transform: rotateX(-14deg) rotateY(12deg) rotateZ(calc(var(--spin, 1) * 790deg)) scale(.98); }
  88%  { transform: rotateX(8deg) rotateY(-7deg) rotateZ(calc(var(--spin, 1) * 910deg)) scale(1.02); }
  100% { transform: rotateX(0deg) rotateY(0deg) rotateZ(calc(var(--spin, 1) * 1080deg)) scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  .dcs-dice3d-arena .dcs-d3d-gem { animation: none; }
}

/* Deploy101 — make every non-d6 die feel like it is actually rolling.
   The gem dice now flash temporary face values during flight and reveal the
   true rolled value only when the die settles. */
.dcs-dice3d-arena .dcs-d3d-gem { overflow: hidden; }
.dcs-dice3d-arena .dcs-d3d-gem .dcs-d3d-finalnum {
  opacity: 0;
  animation: dcsFinalFaceReveal var(--dur, 1650ms) steps(1, end) var(--delay, 0ms) forwards;
}
.dcs-dice3d-arena .dcs-d3d-rollnum {
  position: absolute;
  left: 50%;
  top: 43%;
  z-index: 2;
  opacity: 0;
  transform: translate(-50%, -50%) scale(.92);
  font-size: 30px;
  font-weight: 700;
  line-height: 1;
  color: inherit;
  text-shadow: 0 2px 10px rgba(0,0,0,.55);
  pointer-events: none;
}
.dcs-dice3d-arena .dcs-d3d-rollnum.rn1 { animation: dcsRollFace1 var(--dur, 1650ms) linear var(--delay, 0ms) forwards; }
.dcs-dice3d-arena .dcs-d3d-rollnum.rn2 { animation: dcsRollFace2 var(--dur, 1650ms) linear var(--delay, 0ms) forwards; }
.dcs-dice3d-arena .dcs-d3d-rollnum.rn3 { animation: dcsRollFace3 var(--dur, 1650ms) linear var(--delay, 0ms) forwards; }
.dcs-dice3d-arena .dcs-d3d-rollnum.rn4 { animation: dcsRollFace4 var(--dur, 1650ms) linear var(--delay, 0ms) forwards; }
.dcs-dice3d-arena .dcs-d3d-rollnum.rn5 { animation: dcsRollFace5 var(--dur, 1650ms) linear var(--delay, 0ms) forwards; }
@keyframes dcsRollFace1 { 0%,17% { opacity: 1; transform: translate(-50%, -50%) scale(.92) rotate(-8deg); } 18%,100% { opacity: 0; } }
@keyframes dcsRollFace2 { 0%,17% { opacity: 0; } 18%,34% { opacity: 1; transform: translate(-50%, -50%) scale(1.08) rotate(10deg); } 35%,100% { opacity: 0; } }
@keyframes dcsRollFace3 { 0%,34% { opacity: 0; } 35%,51% { opacity: 1; transform: translate(-50%, -50%) scale(.98) rotate(-14deg); } 52%,100% { opacity: 0; } }
@keyframes dcsRollFace4 { 0%,51% { opacity: 0; } 52%,68% { opacity: 1; transform: translate(-50%, -50%) scale(1.12) rotate(12deg); } 69%,100% { opacity: 0; } }
@keyframes dcsRollFace5 { 0%,68% { opacity: 0; } 69%,84% { opacity: 1; transform: translate(-50%, -50%) scale(1) rotate(-6deg); } 85%,100% { opacity: 0; } }
@keyframes dcsFinalFaceReveal { 0%,84% { opacity: 0; } 85%,100% { opacity: 1; } }
@media (max-width: 640px) {
  .dcs-dice3d-arena .dcs-d3d-rollnum { font-size: 23px; }
}
@media (prefers-reduced-motion: reduce) {
  .dcs-dice3d-arena .dcs-d3d-gem .dcs-d3d-finalnum { opacity: 1; animation: none; }
  .dcs-dice3d-arena .dcs-d3d-rollnum { display: none; }
}

/* Deploy102 — physical faceted rolling for every non-d6 die.
   Previous versions made only the d6 feel like a real object because the other
   dice were flat tokens. These rules turn d4/d8/d10/d12/d20/d100 into a
   multi-face 3D body with temporary numbered faces during the tumble and the
   final result revealed only as the front face settles. */
.dcs-dice3d-arena .dcs-d3d-poly {
  position: relative;
  transform-style: preserve-3d;
  animation: dcsPolyTumbleAcross var(--dur, 1650ms) cubic-bezier(.08,.76,.2,1) var(--delay, 0ms) forwards !important;
  transform-origin: 50% 50%;
}
.dcs-dice3d-arena .dcs-d3d-poly .dcs-d3d-pface {
  position: absolute;
  inset: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'Cinzel', serif;
  color: var(--dcs-gold);
  font-size: clamp(20px, 3.7vw, 32px);
  font-weight: 800;
  text-shadow: 0 2px 12px rgba(0,0,0,.75);
  background: radial-gradient(circle at 36% 28%, var(--cx-surface) 0%, var(--cx-surface) 48%, var(--cx-bg) 100%);
  border: 2px solid var(--dcs-gold-dim);
  box-shadow: inset 0 0 18px rgba(0,0,0,.66), 0 0 14px color-mix(in srgb,var(--cx-accent-deep) 18%,transparent);
  backface-visibility: hidden;
  transform-style: preserve-3d;
}
.dcs-dice3d-arena .dcs-d3d-poly .dcs-d3d-pface::after {
  content: "";
  position: absolute;
  inset: 4px;
  clip-path: inherit;
  border: 1px solid color-mix(in srgb,var(--cx-accent) 22%,transparent);
  background: linear-gradient(145deg, color-mix(in srgb,var(--cx-accent-bright) 18%,transparent), transparent 42%, rgba(0,0,0,.28));
  pointer-events: none;
}
.dcs-dice3d-arena .dcs-d3d-poly .dcs-d3d-pface b { position: relative; z-index: 2; }
.dcs-dice3d-arena .dcs-d3d-poly-d4 .dcs-d3d-pface { clip-path: polygon(50% 3%, 97% 97%, 3% 97%); }
.dcs-dice3d-arena .dcs-d3d-poly-d8 .dcs-d3d-pface { clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); }
.dcs-dice3d-arena .dcs-d3d-poly-d10 .dcs-d3d-pface { clip-path: polygon(50% 0, 91% 35%, 70% 100%, 30% 100%, 9% 35%); }
.dcs-dice3d-arena .dcs-d3d-poly-d12 .dcs-d3d-pface { clip-path: polygon(50% 0, 89% 20%, 100% 61%, 74% 96%, 26% 96%, 0 61%, 11% 20%); }
.dcs-dice3d-arena .dcs-d3d-poly-d20 .dcs-d3d-pface,
.dcs-dice3d-arena .dcs-d3d-poly-dN .dcs-d3d-pface { clip-path: polygon(50% 0, 93% 25%, 93% 75%, 50% 100%, 7% 75%, 7% 25%); }

.dcs-dice3d-arena .dcs-d3d-poly .pf-front { transform: translateZ(calc(clamp(58px, 9vw, 84px) * .43)); }
.dcs-dice3d-arena .dcs-d3d-poly .pf1  { transform: rotateY(58deg) rotateZ(18deg) translateZ(calc(clamp(58px, 9vw, 84px) * .43)); }
.dcs-dice3d-arena .dcs-d3d-poly .pf2  { transform: rotateY(-58deg) rotateZ(-18deg) translateZ(calc(clamp(58px, 9vw, 84px) * .43)); }
.dcs-dice3d-arena .dcs-d3d-poly .pf3  { transform: rotateX(58deg) rotateZ(44deg) translateZ(calc(clamp(58px, 9vw, 84px) * .43)); }
.dcs-dice3d-arena .dcs-d3d-poly .pf4  { transform: rotateX(-58deg) rotateZ(-44deg) translateZ(calc(clamp(58px, 9vw, 84px) * .43)); }
.dcs-dice3d-arena .dcs-d3d-poly .pf5  { transform: rotateY(112deg) rotateX(16deg) translateZ(calc(clamp(58px, 9vw, 84px) * .43)); }
.dcs-dice3d-arena .dcs-d3d-poly .pf6  { transform: rotateY(-112deg) rotateX(-16deg) translateZ(calc(clamp(58px, 9vw, 84px) * .43)); }
.dcs-dice3d-arena .dcs-d3d-poly .pf7  { transform: rotateX(112deg) rotateY(20deg) translateZ(calc(clamp(58px, 9vw, 84px) * .43)); }
.dcs-dice3d-arena .dcs-d3d-poly .pf8  { transform: rotateX(-112deg) rotateY(-20deg) translateZ(calc(clamp(58px, 9vw, 84px) * .43)); }
.dcs-dice3d-arena .dcs-d3d-poly .pf9  { transform: rotateY(146deg) rotateZ(62deg) translateZ(calc(clamp(58px, 9vw, 84px) * .43)); }
.dcs-dice3d-arena .dcs-d3d-poly .pf10 { transform: rotateY(-146deg) rotateZ(-62deg) translateZ(calc(clamp(58px, 9vw, 84px) * .43)); }
.dcs-dice3d-arena .dcs-d3d-poly .pf11 { transform: rotateX(146deg) rotateZ(80deg) translateZ(calc(clamp(58px, 9vw, 84px) * .43)); }
.dcs-dice3d-arena .dcs-d3d-poly .pf12 { transform: rotateX(-146deg) rotateZ(-80deg) translateZ(calc(clamp(58px, 9vw, 84px) * .43)); }
.dcs-dice3d-arena .dcs-d3d-poly .pf13 { transform: rotateY(180deg) rotateZ(30deg) translateZ(calc(clamp(58px, 9vw, 84px) * .43)); }
.dcs-dice3d-arena .dcs-d3d-poly .pf14 { transform: rotateX(180deg) rotateZ(-30deg) translateZ(calc(clamp(58px, 9vw, 84px) * .43)); }

.dcs-dice3d-arena .dcs-d3d-poly .pf-front b {
  opacity: 0;
  animation: dcsPolyFinalReveal var(--dur, 1650ms) steps(1, end) var(--delay, 0ms) forwards;
}
.dcs-dice3d-arena .dcs-d3d-poly .dcs-d3d-polytype {
  position: absolute;
  left: 0;
  right: 0;
  bottom: -16px;
  z-index: 5;
  text-align: center;
  opacity: 0;
  transform: translateZ(calc(clamp(58px, 9vw, 84px) * .46));
  animation: dcsPolyTypeReveal var(--dur, 1650ms) steps(1, end) var(--delay, 0ms) forwards;
}
.dcs-dice3d-arena .dcs-d3d-poly[data-max="1"] .pf-front {
  border-color: var(--dcs-gold);
  box-shadow: 0 0 34px color-mix(in srgb,var(--cx-accent) 78%,transparent), inset 0 0 22px color-mix(in srgb,var(--cx-accent) 32%,transparent);
  color: var(--cx-accent-bright);
}
@keyframes dcsPolyTumbleAcross {
  0%   { transform: rotateX(38deg) rotateY(-34deg) rotateZ(0deg) scale(.68); }
  18%  { transform: rotateX(calc(var(--spin, 1) * 245deg)) rotateY(calc(var(--spin, 1) * -310deg)) rotateZ(calc(var(--spin, 1) * 150deg)) scale(.98); }
  38%  { transform: rotateX(calc(var(--spin, 1) * 580deg)) rotateY(calc(var(--spin, 1) * 470deg)) rotateZ(calc(var(--spin, 1) * 340deg)) scale(1.14); }
  58%  { transform: rotateX(calc(var(--spin, 1) * 920deg)) rotateY(calc(var(--spin, 1) * -760deg)) rotateZ(calc(var(--spin, 1) * 560deg)) scale(1.02); }
  74%  { transform: rotateX(calc(var(--spin, 1) * 1210deg)) rotateY(calc(var(--spin, 1) * 1030deg)) rotateZ(calc(var(--spin, 1) * 735deg)) scale(.94); }
  88%  { transform: rotateX(calc(var(--spin, 1) * 1395deg)) rotateY(calc(var(--spin, 1) * -1260deg)) rotateZ(calc(var(--spin, 1) * 865deg)) scale(1.02); }
  100% { transform: rotateX(1440deg) rotateY(1440deg) rotateZ(720deg) scale(1); }
}
@keyframes dcsPolyFinalReveal { 0%,84% { opacity: 0; } 85%,100% { opacity: 1; } }
@keyframes dcsPolyTypeReveal { 0%,84% { opacity: 0; } 85%,100% { opacity: .72; } }
@media (prefers-reduced-motion: reduce) {
  .dcs-dice3d-arena .dcs-d3d-poly { animation: none !important; }
  .dcs-dice3d-arena .dcs-d3d-poly .pf-front b,
  .dcs-dice3d-arena .dcs-d3d-poly .dcs-d3d-polytype { opacity: 1; animation: none; }
}

/* Deploy103 — canvas-based physical polyhedral dice animation.
   Uses one foreground canvas so d4/d8/d10/d12/d20/d100 animate as tumbling
   faceted objects instead of flat pre-rolled badges. */
.dcs-dice3d-tray.dcs-dice3d-canvas-arena {
  position: fixed;
  inset: 0;
  z-index: 2147483001;
  width: 100vw;
  height: 100vh;
  max-width: none;
  display: block;
  pointer-events: none;
  opacity: 1;
  animation: dcsCanvasDiceArenaOut .7s ease 4.45s forwards;
}
.dcs-dice3d-canvas-arena .dcs-dice3d-canvas {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  display: block;
  pointer-events: none;
}
.dcs-dice3d-canvas-arena .dcs-dice3d-total {
  position: fixed;
  left: 0;
  right: 0;
  bottom: max(28px, env(safe-area-inset-bottom));
  width: auto;
  margin: 0;
  font-size: clamp(38px, 10vw, 78px);
  opacity: 0;
  animation: dcsTotalThrowIn .35s ease 1.85s forwards;
}
@keyframes dcsCanvasDiceArenaOut { to { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  .dcs-dice3d-canvas-arena .dcs-dice3d-total { opacity: 1; animation: none; }
}

/* ---- Deploy104: WebGL true-3D dice tray ---- */
.dcs-dice3d-tray.dcs-dice3d-webgl { position: fixed; inset: 0; display: block; max-width: none;
  animation: dcsTrayIn .2s ease; }
.dcs-dice3d-webgl canvas.dcs-dice3d-canvas { position: absolute; inset: 0; }
.dcs-dice3d-total-webgl { position: absolute; left: 0; right: 0; bottom: 16vh; margin: 0; }

/* ---- Deploy106: Dice Style panel ---- */
.dcs-cm-dicestyle { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--dcs-border); }
.dcs-dice-presets { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 12px; }
.dcs-dice-preset { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: .05em;
  padding: 8px 12px; border: 2px solid; border-radius: 9px; cursor: pointer;
  min-height: 36px; box-shadow: inset 0 0 12px rgba(0,0,0,.45); }
.dcs-dice-preset:hover { filter: brightness(1.25); }
.dcs-dice-texrow { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 12px 0 4px; }
.dcs-dice-texlabel { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--dcs-readable-dim, var(--cx-accent)); margin-right: 4px; }
.dcs-dice-tex { font-family: 'EB Garamond', serif; font-size: 13px; padding: 6px 12px; min-height: 32px;
  background: color-mix(in srgb,var(--cx-accent-deep) 6%,transparent); color: var(--dcs-readable, var(--cx-accent-bright));
  border: 1px solid var(--dcs-border); border-radius: 8px; cursor: pointer; }
.dcs-dice-tex.on { border-color: var(--dcs-gold); color: var(--dcs-gold); background: color-mix(in srgb,var(--cx-accent-deep) 16%,transparent); }

/* Image-texture chips: show the texture as a thumbnail with a readable label. */
.dcs-dice-tex-img { position: relative; background-size: cover; background-position: center;
  color: var(--cx-text-strong) !important; border-color: color-mix(in srgb,var(--cx-text-strong) 25%,transparent) !important;
  text-shadow: 0 1px 3px #000, 0 0 6px #000; min-width: 84px; }
.dcs-dice-tex-img.on { border-color: var(--dcs-gold) !important; box-shadow: 0 0 0 2px color-mix(in srgb,var(--cx-accent-deep) 50%,transparent); }

/* Dice texture upload button */
.dcs-dice-uploadrow { display: flex; align-items: center; gap: 10px; margin-top: 10px; }
.dcs-dice-upload { display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
  font-family: 'EB Garamond', serif; font-size: 13px; padding: 8px 14px; min-height: 36px;
  color: var(--dcs-gold); background: color-mix(in srgb,var(--cx-accent-deep) 10%,transparent); border: 1px dashed var(--dcs-gold-dim);
  border-radius: 8px; }
.dcs-dice-upload:hover { background: color-mix(in srgb,var(--cx-accent-deep) 18%,transparent); }
.dcs-dice-upstatus { font-size: 12px; color: var(--dcs-readable-dim, var(--cx-accent)); }

/* Deploy113: restore the mobile Combat Mode tab bar after later global rules. */
@media (max-width: 768px) {
  body #dcs-cm-tabhost.divine-character-system .dcs-cm-tabbar,
  .divine-character-system .dcs-cm-tabbar {
    display: flex !important;
  }
  .divine-character-system .dcs-cm-hpmini {
    display: inline-flex !important;
  }
  .divine-character-system .dcs-cm {
    padding-bottom: calc(86px + env(safe-area-inset-bottom)) !important;
  }
}
@media (min-width: 769px) {
  body #dcs-cm-tabhost.divine-character-system .dcs-cm-tabbar {
    display: none !important;
  }
}

/* ── D&D Beyond importer ── */
.dcs-ddb-inp{width:auto;min-width:36px;background:rgba(0,0,0,.35);border:1px solid color-mix(in srgb,var(--cx-accent) 35%,transparent);border-radius:4px;color:var(--gold,var(--cx-accent));padding:2px 6px;font:inherit;margin:0 8px 4px 2px}
.dcs-ddb-row{padding:1px 0}
.dcs-ddb-row .dcs-dim{opacity:.55;font-size:.85em}
.dcs-ddb-fallback{margin-top:10px}
.dcs-ddb-fallback summary{cursor:pointer;opacity:.75}
.dcs-ddb-fallback textarea{width:100%;margin-top:6px;background:rgba(0,0,0,.35);border:1px solid color-mix(in srgb,var(--cx-accent) 30%,transparent);border-radius:6px;color:inherit;padding:8px;font-family:monospace;font-size:.8em}
#dcs-ddb-url{width:100%;background:rgba(0,0,0,.35);border:1px solid color-mix(in srgb,var(--cx-accent) 35%,transparent);border-radius:6px;color:inherit;padding:8px 10px;margin:6px 0}
.dcs-field span{display:block;font-size:.85em;opacity:.75;margin-top:8px}

/* ============================================================================
 * deploy132 — feature & fix pass
 * (1) Handcrafted checkbox controls  (2) portraits  (3) prepared-state UI
 * (4) casting-time & components editor  (5) Short Rest dialog  (6) Backstory
 * (7) readability: metadata raised to a 12–13.5px baseline, muted ink
 *     brightened while staying visually secondary. Same brass/parchment
 *     palette — no new visual language.
 * ==========================================================================*/

/* ---- readability: brighter (but still secondary) muted ink ---- */
.divine-character-system { --dcs-dim: var(--cx-text-soft); --dcs-readable-dim: var(--cx-accent-bright); }

/* ---- readability: raise small metadata to a comfortable baseline ---- */
.divine-character-system .dcs-feat-meta { font-size: 13px; }
.divine-character-system .dcs-spell-tag { font-size: 11.5px; }
.divine-character-system .dcs-feat-tag { font-size: 11px; }
.divine-character-system .dcs-spell-lvl { font-size: 12px; }
.divine-character-system .dcs-spell-lvl em { font-size: 11px; }
.divine-character-system .dcs-subhead { font-size: 12px; }
.divine-character-system .dcs-hint, .divine-character-system .dcs-note { font-size: 13.5px; }
.divine-character-system .dcs-cm-field > label { font-size: 11.5px; }
.divine-character-system .dcs-cm-vital span { font-size: 10.5px; }
.divine-character-system .dcs-abil-label { font-size: 10.5px; }
.divine-character-system .dcs-skill-head { font-size: 10.5px; }
.divine-character-system .dcs-roll-meta { font-size: 10.5px; }
.divine-character-system .dcs-stat span { font-size: 10.5px; }
.divine-character-system .dcs-def b { font-size: 11px; }
.divine-character-system .dcs-lk-sub { font-size: 11.5px; }
.divine-character-system .dcs-res-src { font-size: 12px; }
.divine-character-system .dcs-prep-max { width: 48px; font-size: 12px; }
.divine-character-system select.dcs-spell-lvlset { font-size: 12px; }
.divine-character-system .dcs-empty { font-size: 13.5px; }

/* ---- (4) handcrafted checkbox controls (Prepared / Concentration / V·S·M /
        Short Rest picks). Brass fill + inked check when on; visibly empty
        parchment-well when off; full hover / focus-visible / active /
        disabled states; keyboard friendly (real <input type=checkbox>). ---- */
.divine-character-system .dcs-check { gap: 8px; user-select: none; }
.divine-character-system .dcs-check input[type="checkbox"] {
  -webkit-appearance: none; appearance: none; margin: 0; flex: 0 0 auto;
  width: 18px; height: 18px; border-radius: 4px; cursor: pointer; position: relative;
  background: linear-gradient(160deg, rgba(0,0,0,.42), color-mix(in srgb,var(--cx-text-strong) 3%,transparent));
  border: 1.5px solid var(--dcs-gold-dim);
  box-shadow: inset 0 1px 3px rgba(0,0,0,.55);
  transition: background .15s, border-color .15s, box-shadow .15s;
}
.divine-character-system .dcs-check input[type="checkbox"]:hover {
  border-color: var(--dcs-gold); box-shadow: inset 0 1px 3px rgba(0,0,0,.55), 0 0 0 3px color-mix(in srgb,var(--cx-accent-deep) 10%,transparent);
}
.divine-character-system .dcs-check input[type="checkbox"]:focus-visible {
  outline: 2px solid var(--dcs-gold); outline-offset: 2px;
}
.divine-character-system .dcs-check input[type="checkbox"]:active { transform: scale(.94); }
.divine-character-system .dcs-check input[type="checkbox"]:checked {
  background: linear-gradient(150deg, var(--dcs-gold), var(--dcs-gold-dim));
  border-color: var(--dcs-gold);
}
.divine-character-system .dcs-check input[type="checkbox"]:checked::after {
  content: ''; position: absolute; left: 5px; top: 1.5px; width: 5px; height: 9px;
  border: solid var(--cx-surface); border-width: 0 2.5px 2.5px 0; transform: rotate(42deg);
}
.divine-character-system .dcs-check input[type="checkbox"]:disabled {
  opacity: .38; cursor: not-allowed; border-style: dashed;
}
.divine-character-system .dcs-check > span { font-size: 13px; color: var(--dcs-readable); }
.divine-character-system .dcs-check input[type="checkbox"]:checked + span { color: var(--dcs-gold); }

/* ---- (2) character portraits: folio frame, cover-crop inside a deliberate
        square, click opens the full uncropped image ---- */
.divine-character-system .dcs-portrait {
  display: inline-flex; align-items: center; justify-content: center; overflow: hidden;
  width: 64px; height: 64px; flex: 0 0 auto; padding: 0; cursor: pointer;
  border: 1px solid var(--dcs-gold-dim); border-radius: 8px;
  background: linear-gradient(160deg, color-mix(in srgb,var(--cx-accent-deep) 10%,transparent), rgba(0,0,0,.35));
  box-shadow: inset 0 0 0 2px rgba(0,0,0,.45), 0 2px 6px rgba(0,0,0,.4);
}
.divine-character-system .dcs-portrait img { width: 100%; height: 100%; object-fit: cover; object-position: top center; display: block; }
.divine-character-system .dcs-portrait:hover { border-color: var(--dcs-gold); }
.divine-character-system .dcs-portrait:focus-visible { outline: 2px solid var(--dcs-gold); outline-offset: 2px; }
.divine-character-system .dcs-portrait-empty { cursor: default; }
.divine-character-system .dcs-portrait-empty span { font-family: 'Cinzel', serif; font-size: 24px; color: var(--dcs-gold-dim); }
.divine-character-system .dcs-portrait-broken img { display: none; }
.divine-character-system .dcs-headrow { display: flex; align-items: flex-start; gap: 14px; }
.divine-character-system .dcs-headrow > div:nth-child(2) { flex: 1; }
.divine-character-system .dcs-portrait-cm { width: 40px; height: 40px; margin-right: 10px; border-radius: 6px; }
.divine-character-system.dcs-portrait-lightbox {
  position: fixed; inset: 0; z-index: 2147483200; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 12px; cursor: zoom-out;
  background: color-mix(in srgb,var(--cx-bg) 90%,transparent); padding: 24px;
}
.divine-character-system.dcs-portrait-lightbox img {
  max-width: min(92vw, 900px); max-height: 82vh; object-fit: contain;
  border: 1px solid var(--dcs-gold-dim); border-radius: 8px; box-shadow: 0 10px 50px rgba(0,0,0,.8);
}
.divine-character-system.dcs-portrait-lightbox .dcs-portrait-caption {
  font-family: 'Cinzel', serif; font-size: 13px; letter-spacing: .06em; color: var(--dcs-readable-dim);
}

/* ---- (3) prepared state: bar + badge + filter; each spell listed once ---- */
.divine-character-system .dcs-prep-bar {
  display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin: 4px 0 10px;
  padding: 7px 10px; border: 1px solid var(--dcs-border); border-radius: 8px;
  background: linear-gradient(160deg, color-mix(in srgb,var(--cx-accent-deep) 6%,transparent), rgba(0,0,0,.2));
}
.divine-character-system .dcs-prep-count { font-family: 'Cinzel', serif; font-size: 12px; letter-spacing: .05em; text-transform: uppercase; color: var(--cx-success); }
.divine-character-system .dcs-prep-filter {
  font-family: 'Cinzel', serif; font-size: 11.5px; letter-spacing: .03em; cursor: pointer;
  padding: 4px 11px; border-radius: 7px; color: var(--dcs-readable-dim);
  background: color-mix(in srgb,var(--cx-text-strong) 4%,transparent); border: 1px solid var(--dcs-border); transition: all .15s;
}
.divine-character-system .dcs-prep-filter:hover { border-color: var(--dcs-gold-dim); color: var(--dcs-gold); }
.divine-character-system .dcs-prep-filter:focus-visible { outline: 2px solid var(--dcs-gold); outline-offset: 2px; }
.divine-character-system .dcs-prep-filter.on { background: linear-gradient(150deg, color-mix(in srgb,var(--cx-success) 20%,transparent), color-mix(in srgb,var(--cx-success) 6%,transparent)); border-color: color-mix(in srgb,var(--cx-success) 50%,transparent); color: var(--cx-success); }
.divine-character-system .dcs-prep-maxlabel { margin-left: auto; font-family: 'EB Garamond', serif; font-size: 12.5px; color: var(--dcs-dim); }
.divine-character-system .dcs-prep-badge {
  font-family: 'Cinzel', serif; font-size: 10.5px; letter-spacing: .04em; white-space: nowrap;
  color: var(--cx-success); border: 1px solid color-mix(in srgb,var(--cx-success) 40%,transparent); border-radius: 6px; padding: 1px 7px;
  background: color-mix(in srgb,var(--cx-success) 10%,transparent);
}
.divine-character-system .dcs-spell.is-prepared { border-left: 2px solid color-mix(in srgb,var(--cx-success) 55%,transparent); }

/* ---- (9) spells referenced inside combat action sections ---- */
.divine-character-system .dcs-spell-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.divine-character-system .dcs-spell-chip {
  font-family: 'EB Garamond', serif; font-size: 13px; color: var(--dcs-readable);
  border: 1px solid var(--dcs-border); border-left: 2px solid var(--dcs-gold-dim);
  border-radius: 7px; padding: 3px 9px; background: color-mix(in srgb,var(--cx-accent-deep) 5%,transparent);
}
.divine-character-system .dcs-spell-chip em { font-style: normal; font-family: 'Cinzel', serif; font-size: 10.5px; color: var(--dcs-gold-dim); margin-left: 4px; }

/* ---- (7/9) spell editor rows: casting-time select, components line ---- */
.divine-character-system .dcs-ctsel { max-width: 150px; }
.divine-character-system .dcs-comps-line { align-items: center; flex-wrap: wrap; }
.divine-character-system .dcs-comps-label { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--dcs-gold-dim); margin-right: 4px; }
.divine-character-system .dcs-material-text { flex: 1; min-width: 180px; }

/* ---- (10) half proficiency (◐) states ---- */
.divine-character-system .dcs-skill-state.half { color: var(--dcs-gold-dim); border-color: var(--dcs-gold-dim); }
.divine-character-system .dcs-skill-row.half .dcs-skill-prof { color: var(--dcs-gold-dim); }

/* ---- (12) rest controls + Short Rest dialog ---- */
.divine-character-system .dcs-rest-row { display: flex; flex-wrap: wrap; gap: 8px; }
.divine-character-system .dcs-sr-overlay { display: flex; align-items: center; justify-content: center; padding: 18px; z-index: 2147483100; }
/* bug4a: the quick-add dialog is a sibling overlay on document.body; without an
   explicit z-index it inherits the Combat Mode overlay's stacking (9500) and can
   render behind it. Lift it (and the short-rest dialog) above the active overlay,
   and center them as flex overlays so they never flow to the bottom of the page. */
.divine-character-system .dcs-qa-overlay { display: flex; align-items: center; justify-content: center; padding: 18px; z-index: 2147483200; }
.divine-character-system .dcs-qa-overlay .dcs-qa-modal { margin: auto; }
.divine-character-system .dcs-sr-modal {
  width: min(560px, 94vw); max-height: 86vh; overflow-y: auto;
  border: 1px solid var(--dcs-gold-dim); border-radius: 12px; padding: 18px 20px 20px;
  background: linear-gradient(165deg, var(--cx-field), var(--cx-field));
  box-shadow: 0 14px 60px rgba(0,0,0,.75);
}
.divine-character-system .dcs-sr-title { font-family: 'Cinzel', serif; font-size: 18px; letter-spacing: .06em; color: var(--dcs-gold); margin-bottom: 4px; }
.divine-character-system .dcs-sr-note { font-family: 'EB Garamond', serif; font-size: 13.5px; color: var(--dcs-readable-dim); margin-bottom: 10px; }
.divine-character-system .dcs-sr-note.muted { color: var(--dcs-dim); }
.divine-character-system .dcs-sr-item { display: flex; margin: 5px 0; }
.divine-character-system .dcs-sr-item em { font-style: normal; color: var(--dcs-dim); font-size: 12.5px; margin-left: 6px; }
.divine-character-system .dcs-sr-hd { margin: 8px 0; }
.divine-character-system .dcs-sr-hd-label { display: block; font-family: 'EB Garamond', serif; font-size: 13.5px; color: var(--dcs-readable); margin-bottom: 5px; }
.divine-character-system .dcs-sr-hd-controls { display: flex; align-items: center; gap: 8px; font-family: 'EB Garamond', serif; font-size: 13.5px; color: var(--dcs-readable-dim); }
.divine-character-system .dcs-sr-rollhd { font-size: 12.5px; }
.divine-character-system .dcs-sr-summary {
  margin-top: 14px; padding: 9px 11px; border: 1px dashed var(--dcs-gold-dim); border-radius: 8px;
  font-family: 'EB Garamond', serif; font-size: 13.5px; color: var(--dcs-readable);
  background: color-mix(in srgb,var(--cx-accent-deep) 5%,transparent);
}
.divine-character-system .dcs-sr-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 14px; }

/* ---- (11) Backstory tab ---- */
.divine-character-system .dcs-backstory .dcs-card-mini { margin-bottom: 12px; }
.divine-character-system .dcs-bs-titlefield { font-family: 'Cinzel', serif; letter-spacing: .04em; }
.divine-character-system .dcs-bs-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.divine-character-system .dcs-bs-hidden { opacity: .72; }
.divine-character-system .dcs-bs-title.muted { font-family: 'Cinzel', serif; font-size: 13px; color: var(--dcs-dim); }
.divine-character-system .dcs-bs-title.muted em { font-style: normal; font-size: 11.5px; letter-spacing: .03em; }

/* ============================================================================
 * deploy133 — Shared Campaign Spell Compendium (player-facing)
 * ==========================================================================*/
/* Search result source labels: Campaign / Open5e / on-character */
.divine-character-system .dcs-lk-group { font-family: 'Cinzel', serif; font-size: 11.5px; letter-spacing: .08em;
  text-transform: uppercase; color: var(--dcs-gold-dim); margin: 12px 0 6px; padding-bottom: 4px;
  border-bottom: 1px solid var(--dcs-border); }
.divine-character-system .dcs-lk-tag { font-family: 'Cinzel', serif; font-size: 10px; letter-spacing: .05em;
  border-radius: 6px; padding: 1px 7px; margin-left: 8px; vertical-align: 1px; white-space: nowrap; }
.divine-character-system .dcs-lk-tag.camp { color: var(--dcs-gold); border: 1px solid var(--dcs-gold-dim); background: color-mix(in srgb,var(--cx-accent-deep) 10%,transparent); }
.divine-character-system .dcs-lk-tag.o5e { color: var(--dcs-readable-dim); border: 1px solid var(--dcs-border); background: color-mix(in srgb,var(--cx-text-strong) 3%,transparent); }
.divine-character-system .dcs-lk-tag.added { color: var(--cx-success); border: 1px solid color-mix(in srgb,var(--cx-success) 40%,transparent); background: color-mix(in srgb,var(--cx-success) 10%,transparent); }
.divine-character-system .dcs-lk-tag.pending { color: var(--cx-accent); border: 1px dashed var(--dcs-gold-dim); background: color-mix(in srgb,var(--cx-accent-deep) 6%,transparent); }
/* Spell editor: campaign link chip + save/submit control */
.divine-character-system .dcs-comp-line { align-items: center; flex-wrap: wrap; gap: 8px; }
.divine-character-system .dcs-comp-chip { font-family: 'Cinzel', serif; font-size: 10.5px; letter-spacing: .05em;
  color: var(--dcs-gold); border: 1px solid var(--dcs-gold-dim); border-radius: 6px; padding: 1px 8px;
  background: color-mix(in srgb,var(--cx-accent-deep) 10%,transparent); white-space: nowrap; }
.divine-character-system .dcs-comp-chip.broken { color: var(--dcs-dim); border-style: dashed; background: color-mix(in srgb,var(--cx-text-strong) 2%,transparent); }
.divine-character-system .dcs-comp-btn { font-family: 'Cinzel', serif; font-size: 11px; letter-spacing: .03em;
  width: auto; height: auto; padding: 3px 10px; white-space: nowrap; }

/* ── deploy139: Combat Mode quick add ───────────────────────────── */
.dcs-cm-sechead{display:flex;align-items:center;justify-content:space-between;gap:10px}
.dcs-cm-qadd{font-family:Cinzel,serif;font-size:10px;letter-spacing:.05em;color:var(--cx-accent-deep);background:none;border:1px solid color-mix(in srgb,var(--cx-accent) 40%,transparent);border-radius:14px;padding:2px 11px;cursor:pointer;min-height:24px;text-transform:uppercase;flex-shrink:0}
.dcs-cm-qadd:hover{color:var(--cx-accent);border-color:color-mix(in srgb,var(--cx-accent) 70%,transparent);background:color-mix(in srgb,var(--cx-accent) 6%,transparent)}
.dcs-cm-qadd:focus-visible{outline:2px solid var(--cx-accent);outline-offset:2px}
.dcs-qa-modal{max-width:440px}
.dcs-qa-field{display:block;margin:10px 0 0}
.dcs-qa-field span{display:block;font-family:Cinzel,serif;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--cx-accent-deep);margin-bottom:4px}
.dcs-qa-field span em{font-style:normal;text-transform:none;letter-spacing:0;color:var(--cx-accent-deep);font-family:'EB Garamond',serif;font-size:12px}
.dcs-qa-field .dcs-input{width:100%}
.dcs-qa-row{display:flex;gap:12px}
.dcs-qa-field.small{flex:1}
.dcs-qa-desc{min-height:74px;resize:vertical;font-family:'EB Garamond',serif;line-height:1.5}
.dcs-qa-err{font-family:'EB Garamond',serif;font-size:13.5px;color:var(--cx-danger);min-height:18px;margin-top:8px}
@media(max-width:640px){.dcs-qa-row{flex-direction:column;gap:0}}


/* deploy141: dedicated saving throw block */
.divine-character-system .dcs-save-card{position:relative}
.divine-character-system .dcs-save-prof{position:absolute;top:6px;right:8px;color:var(--dcs-readable-dim);font-size:11px}
.divine-character-system .dcs-save-card.prof{border-color:color-mix(in srgb,var(--cx-accent) 55%,transparent);background:color-mix(in srgb,var(--cx-accent) 8%,transparent)}
.divine-character-system .dcs-save-card.prof .dcs-save-prof{color:var(--dcs-gold)}


/* deploy141: spell casting dialog */
.dcs-cast-modal{position:fixed;inset:0;z-index:100080;display:grid;place-items:center;padding:20px}
.dcs-cast-backdrop{position:absolute;inset:0;background:color-mix(in srgb,var(--cx-bg) 78%,transparent)}
.dcs-cast-card{position:relative;width:min(520px,calc(100vw - 28px));max-height:calc(100vh - 36px);overflow:auto;background:var(--cx-surface);border:1px solid color-mix(in srgb,var(--cx-accent) 62%,transparent);box-shadow:0 18px 54px rgba(0,0,0,.58);padding:20px;color:var(--cx-accent-bright)}
.dcs-cast-card h3{margin:0 0 15px;color:var(--cx-accent-bright);font-family:Cinzel,serif;font-size:19px}
.dcs-cast-field{display:grid;gap:6px;margin:12px 0}.dcs-cast-field>span{font-size:12px;color:var(--cx-accent)}
.dcs-cast-preview{display:grid;gap:5px;margin:13px 0;padding:12px;border-left:3px solid var(--cx-accent-deep);background:rgba(0,0,0,.22)}
.dcs-cast-preview strong{font-size:18px;color:var(--cx-accent)}.dcs-cast-preview span,.dcs-cast-preview small{color:var(--cx-accent)}.dcs-cast-preview details{margin-top:5px}.dcs-cast-preview p{white-space:pre-wrap;margin:6px 0 0}
.dcs-cast-status{min-height:20px;color:var(--cx-accent);font-size:12px}.dcs-cast-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.dcs-cast-confirm{border-color:var(--cx-accent-deep)!important}
.dcs-cast-btn{border-color:color-mix(in srgb,var(--cx-accent-deep) 65%,transparent)!important;color:var(--cx-accent-bright)!important}
@media(max-width:600px){.dcs-cast-modal{align-items:end;padding:10px}.dcs-cast-card{width:100%;max-height:82vh;padding:16px}}

/* ── deploy142: Utility Features ─────────────────────────────────── */
.dcs-cm-utility-list{display:flex;flex-direction:column;gap:10px}
.dcs-util-card{border:1px solid color-mix(in srgb,var(--cx-accent) 28%,transparent);border-radius:10px;padding:11px 13px;background:rgba(0,0,0,.22)}
.dcs-util-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.dcs-util-name{font-family:Cinzel,serif;font-size:14.5px;color:var(--cx-text-strong)}
.dcs-util-src{font-family:Cinzel,serif;font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--cx-accent-deep)}
.dcs-util-trigger{font-family:'EB Garamond',serif;font-size:13px;font-style:italic;color:var(--cx-accent-deep);margin-top:3px}
.dcs-util-desc{font-family:'EB Garamond',serif;font-size:13.5px;line-height:1.5;color:var(--cx-text-soft);margin-top:5px}
.dcs-util-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:9px}
.dcs-util-pip{display:inline-block;width:11px;height:11px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--cx-accent) 55%,transparent);margin-right:3px;vertical-align:middle}
.dcs-util-pip.full{background:var(--cx-accent-deep)}
.dcs-util-count,.dcs-util-recharge{font-family:Cinzel,serif;font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--cx-text-dim)}
.dcs-util-recharge{border:1px solid color-mix(in srgb,var(--cx-accent-deep) 40%,transparent);border-radius:5px;padding:1px 7px}
.dcs-util-btn{font-size:11.5px;min-height:32px}
.dcs-util-btn[disabled]{opacity:.4;cursor:default}
/* ── deploy142 #9: simplified HP controls ───────────────────────── */
/* Bug 6 (HP box): the base .dcs-cm-hp-custom sets align-items:center, which in
   this column layout shrink-wraps the button rows and collapses the flex:1
   Damage/Heal buttons to the inherited 34px .dcs-res-btn square — so the labels
   overflow and collide. Force full-width rows and override the square sizing so
   each button fits its label. */
.divine-character-system .dcs-cm-hp-custom.simplified{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:12px;margin-top:14px}
.divine-character-system .dcs-cm-hp-custom.simplified .dcs-hp-primary{display:flex;gap:10px;width:100%}
/* Damage / Heal: full labelled buttons, not 34px squares */
.divine-character-system .dcs-cm-hp-custom.simplified .dcs-hp-dmg,
.divine-character-system .dcs-cm-hp-custom.simplified .dcs-hp-heal{flex:1 1 0;width:auto;height:auto;min-height:50px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:14px;font-weight:700;border-radius:12px;padding:0 12px;white-space:nowrap}
/* secondary row: Amount grows, Revert is a labelled button, Reset is the icon */
.divine-character-system .dcs-cm-hp-custom.simplified .dcs-hp-secondary{display:flex;gap:8px;align-items:flex-end;justify-content:stretch;width:100%}
.dcs-hp-amtwrap{display:flex;flex-direction:column;gap:3px;align-items:flex-start;flex:1 1 auto;min-width:0}
.dcs-hp-amtlabel{font-family:'Cinzel',serif;font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--dcs-readable-dim);padding-left:2px}
.divine-character-system .dcs-cm-hp-custom.simplified .dcs-hp-revert{flex:0 0 auto;width:auto;height:auto;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:0 14px;font-size:12.5px;white-space:nowrap}
.divine-character-system .dcs-cm-hp-custom.simplified .dcs-hp-reset{flex:0 0 auto;width:44px;height:auto;min-height:44px;display:inline-flex;align-items:center;justify-content:center;font-size:18px}
.dcs-cm-hp-custom.simplified .dcs-cm-hp-amt{width:100%;box-sizing:border-box;text-align:center;font-size:17px;height:44px}
.dcs-hp-dmg{color:var(--cx-danger);border-color:color-mix(in srgb,var(--cx-danger) 50%,transparent)}
.dcs-hp-dmg:hover{background:color-mix(in srgb,var(--cx-danger) 12%,transparent)}
.dcs-hp-heal{color:var(--cx-success);border-color:color-mix(in srgb,var(--cx-success) 50%,transparent)}
.dcs-hp-heal:hover{background:color-mix(in srgb,var(--cx-success) 12%,transparent)}
/* ── deploy142 #10/#11: collapsible sections + heading hierarchy ── */
.dcs-cm-cwrap{margin-bottom:12px}
.dcs-cm-cwrap-head{display:flex;align-items:center;gap:8px;padding:4px 0 6px;border-bottom:1px solid color-mix(in srgb,var(--cx-accent) 22%,transparent);margin-bottom:8px}
.dcs-cm-cwrap.is-collapsed .dcs-cm-cwrap-head{margin-bottom:0;border-bottom-color:color-mix(in srgb,var(--cx-accent) 12%,transparent)}
.dcs-cm-cwrap-title{font-family:Cinzel,serif;font-size:13px;letter-spacing:.07em;text-transform:uppercase;color:var(--cx-accent-deep);flex:1}
.dcs-cm-cwrap-head.emph{border-bottom-width:2px;border-bottom-color:color-mix(in srgb,var(--cx-accent) 40%,transparent);padding-bottom:8px}
.dcs-cm-cwrap-head.emph .dcs-cm-cwrap-title{font-size:16px;color:var(--cx-accent);letter-spacing:.09em}
.dcs-cm-collapse-btn{background:none;border:1px solid color-mix(in srgb,var(--cx-accent) 35%,transparent);border-radius:6px;color:var(--cx-accent-deep);width:26px;height:26px;cursor:pointer;font-size:11px;line-height:1;flex-shrink:0}
.dcs-cm-collapse-btn:hover{border-color:var(--cx-accent);color:var(--cx-accent)}
.dcs-cm-collapse-btn:focus-visible{outline:2px solid var(--cx-accent);outline-offset:2px}
.dcs-cm-cwrap .dcs-cm-field>label{display:none} /* the wrap heading owns the title */
.dcs-cm-cwrap .dcs-cm-hp-label{font-size:10px;opacity:.7}
.dcs-cm-mini{font-family:Cinzel,serif;font-size:10px;letter-spacing:.04em;color:var(--cx-accent-deep);background:none;border:1px solid color-mix(in srgb,var(--cx-accent) 35%,transparent);border-radius:6px;padding:4px 10px;cursor:pointer;min-height:30px;margin-right:6px}
.dcs-cm-mini:hover{border-color:var(--cx-accent);color:var(--cx-accent)}
/* library function groups (#8) */
.dcs-lib-group-title{font-family:Cinzel,serif;font-size:13.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--cx-accent);margin:16px 0 8px;padding-bottom:5px;border-bottom:1px solid color-mix(in srgb,var(--cx-accent) 25%,transparent)}
.dcs-lib-group-title em{font-style:normal;color:var(--cx-text-dim);font-size:11px}
@media(max-width:640px){
  .dcs-cm-hp-custom.simplified .dcs-cm-hp-amt{width:100%}
  .dcs-hp-dmg,.dcs-hp-heal{min-height:50px} .dcs-hp-revert{min-height:44px;flex:1} .dcs-cm-hp-custom.simplified .dcs-hp-secondary{flex-wrap:wrap} /* thumb-accessible */
  .dcs-cm-collapse-btn{width:34px;height:34px}
}
/* deploy142 #3: tab-top add controls */
.dcs-lib-bar{display:flex;gap:9px;align-items:center}
.dcs-lib-add{flex-shrink:0;white-space:nowrap;min-height:38px}
/* ── shared small-button style (Save Notes, Roll, Rest, etc.) ───── */
.divine-character-system .dcs-btn{font-family:Cinzel,serif;font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;
  padding:8px 15px;border-radius:8px;cursor:pointer;color:var(--cx-text);background:color-mix(in srgb,var(--cx-accent) 8%,transparent);
  border:1px solid color-mix(in srgb,var(--cx-accent) 40%,transparent);transition:background .15s,border-color .15s;line-height:1.2}
.divine-character-system .dcs-btn:hover{background:color-mix(in srgb,var(--cx-accent) 16%,transparent);border-color:var(--cx-accent)}
.divine-character-system .dcs-btn:disabled{opacity:.4;cursor:not-allowed}

/* ── deploy142 #4: party overview landing ───────────────────────── */
.dcs-overview .dcs-headtools{display:flex;gap:12px;align-items:center;flex:0 0 auto}
.dcs-ov-manage{display:inline-flex;align-items:center;gap:8px;padding:9px 16px}
.dcs-ov-mico{font-size:13px;filter:grayscale(1) brightness(1.3);opacity:.8}
/* layout toggle */
.divine-character-system .dcs-overview .dcs-headrow{justify-content:space-between;align-items:flex-start}
.dcs-ov-layout{display:inline-flex;border:1px solid color-mix(in srgb,var(--cx-accent) 40%,transparent);border-radius:9px;overflow:hidden}
.dcs-ov-lbtn{font-family:Cinzel,serif;font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:9px 17px;cursor:pointer;
  background:transparent;color:var(--cx-text-dim);border:0;border-right:1px solid color-mix(in srgb,var(--cx-accent) 28%,transparent);transition:background .15s,color .15s}
.dcs-ov-lbtn:last-child{border-right:0}
.dcs-ov-lbtn:hover{color:var(--cx-text);background:color-mix(in srgb,var(--cx-accent) 6%,transparent)}
.dcs-ov-lbtn.active{background:color-mix(in srgb,var(--cx-accent) 14%,transparent);color:var(--cx-accent)}

.dcs-ov-grid{margin-top:18px}
.dcs-ov-foot{text-align:center;font-family:'EB Garamond',serif;font-size:13.5px;color:var(--cx-accent-deep);margin-top:20px;padding-top:16px;border-top:1px solid color-mix(in srgb,var(--cx-accent) 14%,transparent)}
.dcs-ov-footico{color:var(--cx-accent-deep);margin-right:5px}

/* the row/card frame */
.dcs-ov-card{position:relative;transition:border-color .15s,box-shadow .15s}
.dcs-ov-open{all:unset;display:grid;box-sizing:border-box;width:100%;cursor:pointer;align-items:center;
  grid-template-columns:auto minmax(150px,1.15fr) minmax(150px,1.05fr) minmax(110px,.85fr) minmax(230px,1.2fr);
  column-gap:0;padding:20px 26px}
.dcs-ov-open:focus-visible{outline:2px solid var(--cx-accent);outline-offset:-3px;border-radius:12px}
.dcs-ov-open>*{padding:0 22px}
.dcs-ov-open>.dcs-ov-portwrap{padding-left:4px}
.dcs-ov-open>.dcs-ov-id,.dcs-ov-open>.dcs-ov-hpcol,.dcs-ov-open>.dcs-ov-condcol,.dcs-ov-open>.dcs-ov-combat{border-left:1px solid color-mix(in srgb,var(--cx-accent) 16%,transparent)}
.dcs-ov-open>.dcs-ov-portwrap{border-left:0}

/* portrait — octagonal notched frame */
.dcs-ov-portwrap{display:flex;align-items:center;justify-content:center}
.dcs-ov-portrait{width:104px;height:104px;object-fit:cover;flex-shrink:0;
  clip-path:polygon(20px 0,calc(100% - 20px) 0,100% 20px,100% calc(100% - 20px),calc(100% - 20px) 100%,20px 100%,0 calc(100% - 20px),0 20px);
  border:0;background:rgba(0,0,0,.3);box-shadow:0 0 0 1px color-mix(in srgb,var(--cx-accent) 45%,transparent),0 0 0 5px color-mix(in srgb,var(--cx-field) 90%,transparent),0 0 0 6px color-mix(in srgb,var(--cx-accent) 28%,transparent)}
button.dcs-ov-portrait{cursor:pointer;padding:0}

/* identity */
.dcs-ov-id{min-width:0}
.dcs-ov-name{font-family:Cinzel,serif;font-weight:600;font-size:24px;color:var(--cx-accent-bright);line-height:1.1;letter-spacing:.01em}
.dcs-ov-player{font-family:'EB Garamond',serif;font-size:14px;color:var(--cx-accent);margin-top:9px}
.dcs-ov-species{font-family:'EB Garamond',serif;font-size:14px;color:var(--cx-text-soft);margin-top:3px}
.dcs-ov-classline{font-family:'EB Garamond',serif;font-size:14px;color:var(--cx-text-soft);margin-top:3px}
.dcs-ov-classline .dcs-ov-dot{color:var(--cx-accent-dim);font-weight:400;margin:0 3px}
.dcs-ov-classline .dcs-ov-world{color:var(--cx-accent-deep)}

/* HP column */
.dcs-ov-collabel{display:block;font-style:normal;font-family:Cinzel,serif;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--cx-accent-deep);margin-bottom:9px}
.dcs-ov-hpval{font-family:Cinzel,serif;line-height:1}
.dcs-ov-hpval strong{font-size:30px;color:var(--cx-text-strong);font-weight:600}
.dcs-ov-hpval i{font-style:normal;font-size:19px;color:var(--cx-accent-deep)}
.dcs-ov-hpbar{height:8px;border-radius:5px;background:rgba(0,0,0,.45);border:1px solid color-mix(in srgb,var(--cx-accent) 22%,transparent);overflow:hidden;margin:11px 0 10px}
.dcs-ov-hpbar span{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,var(--cx-success),var(--cx-success))}
.dcs-ov-status{font-family:'EB Garamond',serif;font-size:14.5px;color:var(--cx-success);display:flex;align-items:center;gap:7px}
.dcs-ov-statusdot{width:8px;height:8px;border-radius:50%;background:var(--cx-success);flex-shrink:0}
.dcs-ov-temp{font-family:'EB Garamond',serif;font-size:13.5px;color:#7f95a8;margin-top:7px}
.dcs-ov-hpcol.dcs-ov-hp-low .dcs-ov-hpbar span{background:linear-gradient(90deg,var(--cx-accent-deep),var(--cx-accent))}
.dcs-ov-hpcol.dcs-ov-hp-low .dcs-ov-status{color:var(--cx-accent)}
.dcs-ov-hpcol.dcs-ov-hp-low .dcs-ov-statusdot{background:var(--cx-accent)}
.dcs-ov-hpcol.dcs-ov-hp-zero .dcs-ov-hpbar span{background:linear-gradient(90deg,var(--cx-danger),var(--cx-danger))}
.dcs-ov-hpcol.dcs-ov-hp-zero .dcs-ov-hpval strong{color:var(--cx-danger)}
.dcs-ov-hpcol.dcs-ov-hp-zero .dcs-ov-status{color:var(--cx-danger)}
.dcs-ov-hpcol.dcs-ov-hp-zero .dcs-ov-statusdot{background:var(--cx-danger)}

/* conditions column */
.dcs-ov-conds{display:flex;flex-direction:column;gap:9px;align-items:flex-start}
.dcs-ov-cond{display:inline-flex;align-items:center;gap:8px;font-family:'EB Garamond',serif;font-size:14.5px;color:#c9a9c9}
.dcs-ov-conddot{width:9px;height:9px;border-radius:50%;background:#a86ca8;box-shadow:0 0 6px rgba(168,108,168,.6);flex-shrink:0}
.dcs-ov-none{color:var(--cx-accent-dim);font-size:18px}

/* combat column */
.dcs-ov-combat{display:flex;flex-direction:column;gap:14px}
.dcs-ov-cbtrio{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.dcs-ov-cbcell{display:flex;flex-direction:column;align-items:flex-start}
.dcs-ov-cbcell em{font-style:normal;font-family:Cinzel,serif;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--cx-accent-deep);margin-bottom:5px}
.dcs-ov-cbcell strong{font-family:Cinzel,serif;font-size:23px;color:var(--cx-text-strong);font-weight:600;line-height:1}
.dcs-ov-cbcell strong span{font-size:13px;color:var(--cx-text-dim);font-weight:400}
.dcs-ov-caster{margin-top:2px}
.dcs-ov-passive{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:12px;border-top:1px solid color-mix(in srgb,var(--cx-accent) 16%,transparent)}
.dcs-ov-passive em{font-style:normal;font-family:Cinzel,serif;font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--cx-text-dim)}
.dcs-ov-passive strong{font-family:Cinzel,serif;font-size:17px;color:var(--cx-text)}
.dcs-ov-attack{display:flex;flex-direction:column;gap:5px;padding-top:12px;border-top:1px solid color-mix(in srgb,var(--cx-accent) 16%,transparent)}
.dcs-ov-attack em{font-style:normal;font-family:Cinzel,serif;font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--cx-accent-deep)}
.dcs-ov-atkline{font-family:'EB Garamond',serif;font-size:15px;color:var(--cx-text-soft)}
.dcs-ov-atkline b{color:var(--cx-text-strong);font-weight:600}

/* DM notes (admin) below a row */
.dcs-ov-notes{padding:14px 26px 20px;border-top:1px dashed color-mix(in srgb,var(--cx-accent) 20%,transparent)}
.dcs-ov-notes-label{font-family:Cinzel,serif;font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--cx-accent-deep);display:block;margin-bottom:7px}
.dcs-ov-notes-label em{font-style:italic;text-transform:none;letter-spacing:0;color:var(--cx-accent-deep);font-family:'EB Garamond',serif}
.dcs-ov-notes-text{width:100%;max-width:720px;resize:vertical;font-size:13.5px;min-height:60px}
.dcs-ov-notes-row{display:flex;align-items:center;gap:12px;margin-top:9px}
.dcs-ov-notes-status{font-family:'EB Garamond',serif;font-size:12.5px;color:var(--cx-text-dim)}
.dcs-tab-overview{opacity:.85}

/* ROWS layout — separated by hairline rules, no card chrome */
.dcs-ov-grid.dcs-ov-rows{display:block;border:1px solid color-mix(in srgb,var(--cx-accent) 30%,transparent);border-radius:16px;overflow:hidden;background:linear-gradient(180deg,color-mix(in srgb,var(--cx-field) 50%,transparent),color-mix(in srgb,var(--cx-field) 60%,transparent))}
.dcs-ov-rows .dcs-ov-card{border-top:1px solid color-mix(in srgb,var(--cx-accent) 18%,transparent)}
.dcs-ov-rows .dcs-ov-card:first-child{border-top:0}
.dcs-ov-rows .dcs-ov-card:hover{background:color-mix(in srgb,var(--cx-accent) 3%,transparent)}

/* CARDS layout — each character in its own framed card */
.dcs-ov-grid.dcs-ov-cards{display:grid;grid-template-columns:1fr;gap:18px}
.dcs-ov-cards .dcs-ov-card{border:1px solid color-mix(in srgb,var(--cx-accent) 32%,transparent);border-radius:16px;
  background:linear-gradient(168deg,color-mix(in srgb,var(--cx-surface) 85%,transparent),color-mix(in srgb,var(--cx-field) 90%,transparent));box-shadow:0 6px 18px rgba(0,0,0,.35)}
.dcs-ov-cards .dcs-ov-card:hover{border-color:color-mix(in srgb,var(--cx-accent) 50%,transparent);box-shadow:0 8px 24px rgba(0,0,0,.45)}

@media(max-width:1080px){
  .dcs-ov-open{grid-template-columns:auto 1fr 1fr;grid-auto-rows:auto;row-gap:20px}
  .dcs-ov-open>.dcs-ov-portwrap{grid-row:1;grid-column:1}
  .dcs-ov-open>.dcs-ov-id{grid-row:1;grid-column:2/4;border-left:1px solid color-mix(in srgb,var(--cx-accent) 16%,transparent)}
  .dcs-ov-open>.dcs-ov-hpcol{grid-row:2;grid-column:1/2;border-left:0;padding-left:4px}
  .dcs-ov-open>.dcs-ov-condcol{grid-row:2;grid-column:2/3}
  .dcs-ov-open>.dcs-ov-combat{grid-row:2;grid-column:3/4}
}
@media(max-width:680px){
  .dcs-ov-open{grid-template-columns:auto 1fr;padding:18px}
  .dcs-ov-open>*{padding:0 0 0 16px}
  .dcs-ov-open>.dcs-ov-portwrap{grid-row:1;grid-column:1;padding:0}
  .dcs-ov-open>.dcs-ov-id{grid-row:1;grid-column:2;border-left:0}
  .dcs-ov-open>.dcs-ov-hpcol{grid-row:2;grid-column:1/3;border-left:0;padding-left:0}
  .dcs-ov-open>.dcs-ov-condcol{grid-row:3;grid-column:1/3;border-left:0;padding-left:0}
  .dcs-ov-open>.dcs-ov-combat{grid-row:4;grid-column:1/3;border-left:0;padding-left:0}
  .dcs-ov-portrait{width:88px;height:88px}
  .dcs-overview .dcs-headtools{flex-wrap:wrap}
}
/* ── deploy142 #5: player passwords panel ───────────────────────── */
.codex-cred-list{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.codex-cred-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;border:1px solid color-mix(in srgb,var(--cx-accent) 25%,transparent);border-radius:10px;padding:10px 13px}
.codex-cred-who{display:flex;flex-direction:column}
.codex-cred-badge{font-family:Cinzel,serif;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;border-radius:6px;padding:2px 8px;border:1px solid}
.codex-cred-badge.stored{color:var(--cx-success);border-color:color-mix(in srgb,var(--cx-success) 50%,transparent)}
.codex-cred-badge.env{color:var(--cx-accent);border-color:color-mix(in srgb,var(--cx-accent) 50%,transparent)}
.codex-cred-badge.none{color:var(--cx-text-dim);border-color:color-mix(in srgb,var(--cx-accent-deep) 40%,transparent)}
.codex-cred-actions{display:flex;gap:7px;flex-wrap:wrap}
.codex-cred-out{grid-column:1/-1;font-size:13px}
.codex-cred-out:empty{display:none}
.codex-cred-ok{color:var(--cx-success)}
.codex-cred-pw{background:rgba(0,0,0,.35);border:1px solid color-mix(in srgb,var(--cx-accent) 40%,transparent);border-radius:6px;padding:3px 9px;font-size:14px;letter-spacing:.05em;user-select:all}
@media(max-width:640px){.codex-cred-row{grid-template-columns:1fr}}
/* ── deploy142 #1: locations + wiki tables ──────────────────────── */
.wiki-locline{display:flex;gap:7px;flex-wrap:wrap;align-items:center;margin:4px 0 10px}
.wiki-locbadge{font-family:Cinzel,serif;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--cx-accent);border:1px solid color-mix(in srgb,var(--cx-accent) 45%,transparent);border-radius:6px;padding:2px 10px}
.wiki-loctag{font-family:'EB Garamond',serif;font-size:12.5px;color:var(--cx-text-soft);border:1px solid color-mix(in srgb,var(--cx-accent) 28%,transparent);border-radius:6px;padding:1px 9px}
.wiki-ed-locrow{margin-top:8px}
.wiki-ed-tags{font-size:13px}
.wiki-table,.wiki-content table{border-collapse:collapse;width:100%;margin:12px 0;font-family:'EB Garamond',serif;font-size:14px}
.wiki-content th,.wiki-content td,.wiki-table th,.wiki-table td{border:1px solid color-mix(in srgb,var(--cx-accent) 32%,transparent);padding:7px 11px;text-align:left;min-width:64px;color:var(--cx-accent-bright)}
.wiki-content th,.wiki-table th{font-family:Cinzel,serif;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--cx-accent-deep);background:color-mix(in srgb,var(--cx-accent) 8%,transparent)}
.wiki-content tr:nth-child(even) td{background:color-mix(in srgb,var(--cx-text-strong) 2%,transparent)}
.wiki-table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
.wiki-tablebar{display:inline-flex;gap:4px;margin-left:8px;padding-left:8px;border-left:1px solid color-mix(in srgb,var(--cx-accent) 30%,transparent)}
.wiki-tablebar button{font-size:11px}
.wiki-ed-body table td:empty::after{content:'\00a0'}
/* ── deploy142 #12: DM console sync chrome ──────────────────────── */
.dc-portrait{width:26px;height:26px;border-radius:6px;object-fit:cover;margin-right:6px;vertical-align:middle;border:1px solid color-mix(in srgb,var(--cx-accent) 35%,transparent)}
.dc-condline{display:block;margin-top:2px}
.dc-chip{display:inline-block;font-size:10.5px;border:1px solid color-mix(in srgb,var(--cx-danger) 50%,transparent);color:var(--cx-danger);border-radius:5px;padding:0 6px;margin-right:4px}
.dc-chip-temp{border-color:rgba(106,150,201,.5);color:#8ab0e0}
