/*
 * Campaign interior polish
 *
 * A visual-only layer for every campaign page except Home. Existing page
 * markup, IDs, runtime classes, storage keys, media bindings, and interaction
 * geometry remain owned by their feature styles. This file only softens and
 * unifies presentation after those styles have loaded.
 */

:root {
  --cp-page-radius: 20px;
  --cp-panel-radius: 15px;
  --cp-control-radius: 9px;
  --cp-panel-bg: color-mix(in srgb, var(--cx-surface) 68%, transparent);
  --cp-panel-bg-soft: color-mix(in srgb, var(--cx-surface) 48%, transparent);
  --cp-field-bg: color-mix(in srgb, var(--cx-field) 78%, transparent);
  --cp-line: color-mix(in srgb, var(--cx-accent-deep) 27%, transparent);
  --cp-line-strong: color-mix(in srgb, var(--cx-accent) 38%, transparent);
  --cp-shadow: 0 20px 58px rgba(0, 0, 0, .25);
  --cp-shadow-soft: 0 10px 30px rgba(0, 0, 0, .18);
}

/* ── Campaign shell and page frame ─────────────────────────────────────── */
body:not(.home-active) #content {
  width: min(100%, 1500px);
  max-width: 1500px;
  padding: clamp(24px, 3vw, 44px) clamp(18px, 2.6vw, 38px) 80px;
}

.page:not(#page-home),
.page:not(#page-home).active {
  min-width: 0;
  padding: clamp(22px, 3vw, 40px);
  background:
    radial-gradient(circle at 100% 0%, color-mix(in srgb, var(--cx-accent) 5%, transparent), transparent 32%),
    color-mix(in srgb, var(--cx-surface) 76%, transparent);
  border: 1px solid var(--cp-line);
  border-radius: var(--cp-page-radius);
  box-shadow: var(--cp-shadow);
  backdrop-filter: blur(14px) saturate(112%);
}

/* A configured texture owns the surface. Removing only the default paint
   keeps the established pseudo-layer, media URL, and assignment key intact. */
.page:not(#page-home).cx-surface-textured:not(.cx-texture-error),
.page:not(#page-home) .cx-surface-textured:not(.cx-texture-error) {
  background-color: transparent !important;
  background-image: none !important;
}

.page:not(#page-home) > .page-header,
.page:not(#page-home) .atlas-hero,
.page:not(#page-home) .st-app-boot > .page-header {
  position: relative;
  margin: 0 0 clamp(24px, 3vw, 38px);
  padding: clamp(22px, 2.7vw, 34px);
  overflow: hidden;
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--cx-field) 70%, transparent), color-mix(in srgb, var(--cx-surface) 38%, transparent));
  border: 1px solid var(--cp-line);
  border-radius: 17px;
  box-shadow: var(--cp-shadow-soft);
  backdrop-filter: blur(10px);
}

.page:not(#page-home) > .page-header::after,
.page:not(#page-home) .atlas-hero::after,
.page:not(#page-home) .st-app-boot > .page-header::after {
  content: '';
  position: absolute;
  inset: auto 28px 0;
  height: 1px;
  background: linear-gradient(90deg, var(--cx-accent-deep), transparent 74%);
  opacity: .62;
  pointer-events: none;
}

.page:not(#page-home) .page-title,
.page:not(#page-home) .atlas-title {
  max-width: 980px;
  font-size: clamp(32px, 4vw, 54px);
  letter-spacing: .015em;
  line-height: 1.06;
  text-wrap: balance;
}

.page:not(#page-home) .page-description,
.page:not(#page-home) .page-subtitle,
.page:not(#page-home) .atlas-desc {
  max-width: 900px;
  color: var(--cx-text-soft, var(--paper-muted));
  font-size: clamp(16px, 1.55vw, 19px);
  line-height: 1.62;
}

.page:not(#page-home) .section { margin-bottom: clamp(30px, 4vw, 48px); }
.page:not(#page-home) .section-title,
.page:not(#page-home) .section-header {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 18px;
  padding: 0 0 11px;
  border-bottom-color: var(--cp-line);
  font-size: 11px;
  letter-spacing: .16em;
}
.page:not(#page-home) .section-title::before,
.page:not(#page-home) .section-header::before {
  content: '';
  width: 24px;
  height: 1px;
  background: var(--cx-accent-deep);
}

/* ── Shared panels, cards, empty states, and toolbars ──────────────────── */
.page:not(#page-home) :is(
  .card, .stat-block, .ability, .nation-card, .img-card, .inv-card,
  .award-card, .session-card, .session-header-card, .leg-item-card,
  .gallery-upload, .gallery-item, .sw-explainer, .sw-submit-card,
  .sw-history-nav, .sw-entry-card, .cr-panel, .fallen-card,
  .bx-row, .bx-record, .sl-collection, .sl-entry, .sl-read,
  .quests-rail, .quests-detail, .wiki-panel, .wiki-editor,
  .codex-admin-card, .dcs-panel, .dcs-card, .dcs-combat-card,
  .dcs-resource-card, .dcs-spell-card, .dcs-action-card
) {
  background: var(--cp-panel-bg);
  border-color: var(--cp-line);
  border-radius: var(--cp-panel-radius);
  box-shadow: var(--cp-shadow-soft);
  backdrop-filter: blur(9px) saturate(108%);
}

.page:not(#page-home) :is(
  .card, .nation-card, .img-card, .inv-card, .award-card, .session-card,
  .leg-item-card, .gallery-item, .sw-entry-card, .fallen-card, .bx-row,
  .sl-entry, .codex-admin-card, .dcs-card, .dcs-combat-card
):hover {
  border-color: var(--cp-line-strong);
  box-shadow: 0 16px 40px rgba(0, 0, 0, .24);
  transform: translateY(-2px);
}

.page:not(#page-home) :is(
  .quests-toolbar, .items-edit-bar, .npc-subtabs, .session-nav-bar,
  .bx-toolbar, .sl-toolbar, .fallen-toolbar, .wiki-toolbar,
  .atlas-toolbar, .st-toolbar, .codex-admin-tabs, .cxw-subnav
) {
  padding: 12px;
  background: color-mix(in srgb, var(--cx-field) 54%, transparent);
  border: 1px solid var(--cp-line);
  border-radius: 13px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, .13);
  backdrop-filter: blur(9px);
}

.page:not(#page-home) :is(
  .wiki-empty, .quests-empty, .quests-rail-empty, .gallery-empty,
  .fallen-empty, .bx-empty, .sl-empty, .cxw-empty, .st-empty,
  .npc-none, .dash-empty
) {
  padding: clamp(28px, 5vw, 60px) 24px;
  background: color-mix(in srgb, var(--cx-field) 34%, transparent);
  border: 1px dashed var(--cp-line-strong);
  border-radius: var(--cp-panel-radius);
  color: var(--cx-text-dim, var(--paper-dim));
  text-align: center;
}

/* ── Controls: keep every existing selector and event binding ──────────── */
.page:not(#page-home) :is(
  .button, .wiki-button, .wiki-btn, .cx-btn, .fwx-btn, .nwx-btn,
  .new-session-btn, .session-nav-btn, .add-event-btn, .inv-btn,
  .sw-submit-btn, .sw-nav-btn, .items-edit-btn, .items-save-btn,
  .items-add-btn, .npc-subtab, .quests-filter, .st-view-btn,
  .st-menu-btn, .atlas-button, .gallery-button, .codex-admin-btn,
  .dcs-tab, .dcs-mobile-tab, .cxw-subnav button
) {
  min-height: 40px;
  border-radius: var(--cp-control-radius);
  box-shadow: none;
  transition: color .16s ease, background .16s ease, border-color .16s ease, transform .16s ease, box-shadow .16s ease;
}

.page:not(#page-home) :is(
  .button, .wiki-button, .wiki-btn, .cx-btn, .fwx-btn, .nwx-btn,
  .new-session-btn, .session-nav-btn, .add-event-btn, .inv-btn,
  .sw-submit-btn, .sw-nav-btn, .items-edit-btn, .items-save-btn,
  .items-add-btn, .npc-subtab, .quests-filter, .st-view-btn,
  .st-menu-btn, .atlas-button, .gallery-button, .codex-admin-btn,
  .dcs-tab, .dcs-mobile-tab, .cxw-subnav button
):hover:not(:disabled) {
  transform: translateY(-1px);
  box-shadow: 0 8px 18px rgba(0, 0, 0, .18);
}

.page:not(#page-home) :is(input, select, textarea, [contenteditable="true"]),
.cx-modal :is(input, select, textarea),
.inv-modal :is(input, select, textarea) {
  background: var(--cp-field-bg);
  border-color: var(--cp-line);
  border-radius: var(--cp-control-radius);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .025);
}

.page:not(#page-home) :is(input, select, textarea, [contenteditable="true"]):focus,
.cx-modal :is(input, select, textarea):focus,
.inv-modal :is(input, select, textarea):focus {
  border-color: var(--cx-accent-deep);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--cx-accent) 11%, transparent);
}

.page:not(#page-home) :is(table, .wiki-table) {
  border-color: var(--cp-line);
  border-radius: 12px;
}
.page:not(#page-home) :is(th, .wiki-table th) {
  background: color-mix(in srgb, var(--cx-field) 58%, transparent);
  color: var(--cx-accent);
  letter-spacing: .1em;
}
.page:not(#page-home) :is(td, th) { border-color: var(--cp-line); }

/* ── Page-family refinements ───────────────────────────────────────────── */

/* Current Party / Character Forge: preserve every combat and editor grid. */
#page-party .divine-character-system,
#page-party .dcs-legacy {
  padding: clamp(14px, 2vw, 24px);
  background: color-mix(in srgb, var(--cx-field) 34%, transparent);
  border: 1px solid var(--cp-line);
  border-radius: 17px;
}
#page-party .dcs-legacy { margin-top: 22px; }
#page-party .char-sheet,
#page-party .dcs-panel,
#page-party .dcs-card { border-radius: 14px; }

/* Timeline: same geometry and edit workflow, softer surfaces. */
#page-story .st-app {
  gap: 18px;
  background: transparent;
}
#page-story :is(.st-side, .st-toolbar, .st-card, .st-edit, .st-popmenu, .st-cal-group) {
  background: var(--cp-panel-bg);
  border-color: var(--cp-line);
  border-radius: var(--cp-panel-radius);
  box-shadow: var(--cp-shadow-soft);
  backdrop-filter: blur(9px);
}
#page-story .st-card { overflow: hidden; }

/* Atlas: map stays dominant; tree, toolbar, and lore read as supporting glass. */
#page-atlas .atlas-layout { gap: 16px; }
#page-atlas :is(.atlas-nav, .atlas-tree, .atlas-map-col, .atlas-lore, .atlas-viewer) {
  border-color: var(--cp-line);
  border-radius: var(--cp-panel-radius);
}
#page-atlas :is(.atlas-nav, .atlas-tree, .atlas-lore) {
  background: var(--cp-panel-bg);
  box-shadow: var(--cp-shadow-soft);
  backdrop-filter: blur(9px);
}
#page-atlas .atlas-map-col { overflow: hidden; box-shadow: var(--cp-shadow-soft); }

/* Wiki, rules, pantheon, creatures, factions, and NPC relationship tools. */
#page-wiki :is(.wkx-side, .wkx-main, .wkx-inspector, .wiki-side, .wiki-main),
#page-campaign-rules .cr-panel,
.pwx-app > *, .cwx-app > *, .fwx-app > *, .nwx-app > * {
  border-color: var(--cp-line);
}
#page-wiki :is(.wkx-side, .wkx-inspector, .wiki-side),
.pwx-side, .pwx-inspector, .cwx-side, .cwx-inspector,
.fwx-side, .fwx-inspector, .nwx-side, .nwx-inspector {
  background: color-mix(in srgb, var(--cx-field) 54%, transparent);
  backdrop-filter: blur(10px);
}
.pwx-app, .cwx-app, .fwx-app, .nwx-app, .wkx-app {
  overflow: hidden;
  border: 1px solid var(--cp-line);
  border-radius: 17px;
  box-shadow: var(--cp-shadow-soft);
}
.pwx-card, .cwx-card, .fwx-list-row, .nwx-conn-item, .wkx-card {
  border-radius: 13px;
}

/* Quests, records, inventories, and session notes. */
#page-quests .quests-layout,
#page-sessions .session-layout,
#page-starswishes .sw-layout,
#page-inventory .inv-grid { gap: clamp(14px, 2vw, 24px); }
#page-quests .quests-rail,
#page-quests .quests-detail { min-width: 0; }
#page-inventory .inv-card,
#page-awards .inv-card,
#page-sessions :is(.session-card, .session-header-card),
#page-starswishes :is(.sw-submit-card, .sw-history-nav, .sw-explainer) {
  padding: clamp(18px, 2.3vw, 28px);
}
#page-items .leg-item-card,
#page-npcs .npc-full-card,
#page-gallery .gallery-card,
#page-gallery .gallery-item {
  overflow: hidden;
  border-radius: var(--cp-panel-radius);
}
#page-items .leg-item-img,
#page-npcs :is(.npc-portrait, .npc-mini-portrait),
#page-gallery :is(.gallery-card img, .gallery-item img),
#page-fallen :is(.fallen-por, .fallen-tribute-por),
.pwx-card-por, .cwx-card-por {
  background: color-mix(in srgb, var(--cx-field) 62%, transparent);
}

/* Bestiary, scripture, memorials, and catalog reading views. */
#page-constructs .bx-toolbar,
#page-scripture .sl-toolbar { margin-bottom: 18px; }
#page-constructs .bx-letter,
#page-scripture .sl-coll-head {
  padding: 13px 16px;
  background: color-mix(in srgb, var(--cx-field) 42%, transparent);
  border-radius: 11px;
}
#page-fallen .fallen-gallery { gap: clamp(16px, 2vw, 26px); }

/* Admin remains dense and familiar, with clearer selected/editing states. */
#page-admin .codex-admin-shell {
  gap: 18px;
  background: transparent;
}
#page-admin :is(.codex-admin-side, .codex-admin-main) {
  background: color-mix(in srgb, var(--cx-field) 48%, transparent);
  border: 1px solid var(--cp-line);
  border-radius: 16px;
  box-shadow: var(--cp-shadow-soft);
  backdrop-filter: blur(10px);
}
#page-admin .codex-admin-tab.active {
  background: color-mix(in srgb, var(--cx-accent) 13%, transparent);
  border-color: var(--cx-accent-deep);
  box-shadow: inset 3px 0 0 var(--cx-accent);
}
#page-admin .codex-admin-card-row { gap: 14px; }
#page-admin .codex-admin-thumb { border-radius: 11px; }

/* DM Workshop and combat interfaces are intentionally conservative: their
   dense drag/drop and tracker geometry is unchanged. */
#page-workshop .cxw-page,
#page-workshop #cxw-root { min-width: 0; }
#page-workshop :is(.cxw-tool-card, .cxw-col, .cxw-card, .cxw-capture, .cxw-drawer, .cxw-confirm) {
  border-radius: 13px;
}
.dcs-modal-panel,
.cx-modal-card,
.inv-modal-box,
.session-modal-content,
.fallen-tribute,
.atlas-dialog,
.cxw-drawer,
.cxw-confirm {
  border-color: var(--cp-line-strong);
  border-radius: 18px;
  box-shadow: 0 30px 90px rgba(0, 0, 0, .62);
}

/* ── Responsive safeguards ─────────────────────────────────────────────── */
@media (max-width: 1100px) {
  .page:not(#page-home),
  .page:not(#page-home).active { border-radius: 17px; }
  #page-admin .codex-admin-shell { grid-template-columns: 1fr; }
  #page-admin .codex-admin-side { position: static; }
  .pwx-app, .cwx-app, .fwx-app, .nwx-app, .wkx-app { border-radius: 14px; }
}

@media (max-width: 900px) {
  body:not(.home-active) #content { padding: 18px 12px 72px; }
  .page:not(#page-home),
  .page:not(#page-home).active { padding: 16px; border-radius: 15px; }
  .page:not(#page-home) > .page-header,
  .page:not(#page-home) .atlas-hero,
  .page:not(#page-home) .st-app-boot > .page-header {
    padding: 22px 20px;
    border-radius: 14px;
  }
  .page:not(#page-home) .page-title,
  .page:not(#page-home) .atlas-title { font-size: clamp(30px, 8vw, 44px); }
  #page-story .st-app { gap: 12px; }
  #page-sessions .session-nav-bar { align-items: stretch; }
}

@media (max-width: 640px) {
  :root { --cp-panel-radius: 12px; --cp-control-radius: 8px; }
  .page:not(#page-home),
  .page:not(#page-home).active { padding: 12px; }
  .page:not(#page-home) > .page-header,
  .page:not(#page-home) .atlas-hero,
  .page:not(#page-home) .st-app-boot > .page-header { padding: 20px 17px; }
  .page:not(#page-home) :is(
    .quests-toolbar, .items-edit-bar, .npc-subtabs, .session-nav-bar,
    .bx-toolbar, .sl-toolbar, .fallen-toolbar, .wiki-toolbar,
    .atlas-toolbar, .st-toolbar, .codex-admin-tabs, .cxw-subnav
  ) { padding: 9px; }
  #page-inventory .item-table { min-width: 560px; }
  #page-inventory .inv-card:has(.item-table) { overflow-x: auto; }
  #page-admin .codex-admin-card-row { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .page:not(#page-home) * { transition-duration: .01ms !important; }
}
