/* Campaign Manager: scoped application of the Worldbuilder design guide.
   Public campaign pages and the live play interface retain their own themes. */
.campaign-manager {
    --cm-bg: #222324;
    --cm-panel: #2c2d2e;
    --cm-text: #ebeef5;
    --cm-muted: #a6a9ad;
    --cm-border: #47484a;
    --cm-accent: #54bbfa;
    --cm-focus: #c9cbd1;
    --cm-primary: #1e6d9e;
    --cm-primary-hover: #2483bd;
    --cm-primary-pressed: #185880;
    --cm-create: #0b4b26;
    --cm-create-hover: #07612f;
    --cm-create-pressed: #002e16;
    --cm-danger: #9f0e11;
    color: var(--cm-text);
    font: 14px/1.5 Lato, Arial, sans-serif;
    max-width: 1440px;
    margin: 0 auto;
    padding: 24px;
    color-scheme: dark;
}
.campaign-manager[data-campaign-theme="light"] {
    --cm-bg: #fafbfc;
    --cm-panel: #e7ebef;
    --cm-text: #20252b;
    --cm-muted: #48515c;
    --cm-border: #929daa;
    --cm-accent: #125078;
    --cm-focus: #125078;
    color-scheme: light;
}
.campaign-manager h1, .campaign-manager h2, .campaign-manager h3,
.campaign-manager h4, .campaign-manager h5 {
    font-family: Lato, Arial, sans-serif;
    color: var(--cm-text);
    font-weight: 700;
    text-transform: none;
    letter-spacing: normal;
    overflow-wrap: anywhere;
}
.campaign-manager h1 {font-size: 24px; margin: 0;}
.campaign-manager h2 {font-size: 21px;}
.campaign-manager h3 {font-size: 18px;}
.campaign-manager h4, .campaign-manager h5 {font-size: 14px;}
.campaign-manager a {color: var(--cm-accent);}
.campaign-manager a:hover {text-decoration: underline;}
.campaign-manager :is(a, button, input, select, textarea, summary):focus-visible {
    outline: 2px solid var(--cm-accent);
    outline-offset: 2px;
}
.campaign-manager-header {display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-bottom: 24px;}
.campaign-manager-eyebrow, .campaign-manager-world {color: var(--cm-muted); margin: 0 0 4px;}
.campaign-manager-eyebrow {font-size: 12px;}
.campaign-manager-world {margin-top: 8px;}
/* Profile sigil tabs, adapted to route links with aria-current. */
.campaign-manager-nav {--cm-tab-line: #b8bdc4; overflow-x: auto; scrollbar-width: thin; padding: 30px 24px 22px;}
.campaign-manager-nav .nav {display: flex; flex-wrap: nowrap; justify-content: safe center; align-items: center; gap: 28px; margin: 0; padding: 0; border: 0; background: transparent; list-style: none;}
.campaign-manager-nav .nav-item {flex: none;}
.campaign-manager-nav .nav-link {position: relative; display: block; min-height: 48px; padding: 10px 0 16px; border: 0; border-radius: 0; background: none; box-shadow: none; color: var(--cm-muted); font: 400 18px/1.5 Georgia, serif; text-transform: none; letter-spacing: 0; white-space: nowrap; transition: color .18s;}
.campaign-manager-nav .nav-link:hover, .campaign-manager-nav .nav-link[aria-current="page"] {color: var(--cm-text); background: none; text-decoration: none;}
.campaign-manager-nav .nav-link[aria-current="page"]::before {content: ''; position: absolute; bottom: .5px; left: 50%; box-sizing: border-box; width: 8px; height: 8px; transform: translateX(-50%) rotate(45deg); background: transparent; border: 1px solid var(--cm-tab-line); z-index: 1;}
.campaign-manager-nav .nav-link[aria-current="page"]::after {content: ''; position: absolute; bottom: 4px; left: 0; right: 0; height: 1px; background: linear-gradient(to right, var(--cm-tab-line) 0, var(--cm-tab-line) calc(50% - 6px), transparent calc(50% - 6px), transparent calc(50% + 6px), var(--cm-tab-line) calc(50% + 6px), var(--cm-tab-line) 100%);}
.campaign-manager-content {background: transparent; padding: 24px 8px 8px; min-height: 60vh;}
.campaign-manager-content > .container {max-width: none; width: 100%;}
.campaign-manager .ibox, .campaign-manager .ibox-box {border: 1px solid var(--cm-border); border-radius: 0; background: var(--cm-bg); box-shadow: none; margin-bottom: 20px; color: var(--cm-text);}
.campaign-manager .ibox-title, .campaign-manager .ibox-content, .campaign-manager .ibox-footer {
    background: transparent; color: var(--cm-text); border: 0; border-radius: 0; box-shadow: none; padding: 20px 24px;
}
.campaign-manager .ibox-title {min-height: 0; border:0; padding-bottom:16px;}
.campaign-manager .ibox-title + .ibox-content {padding-top:0;}
.campaign-manager .ibox-title h5 {float: none; margin: 0; font-size:18px; line-height:1.4;}
.campaign-manager .ibox-title small {color: var(--cm-muted); margin-top: 4px;}
.campaign-manager .ibox-footer {border-top: 1px solid var(--cm-border);}
.campaign-manager .ibox-footer .text-right {display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px;}
.campaign-manager hr {border-color: var(--cm-border);}
:is(.campaign-manager,.campaign-session-agenda) .btn {
    --cm-action: var(--cm-panel); --cm-action-hover: var(--cm-border); --cm-action-pressed: var(--cm-bg);
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    min-height: 36px; padding: 7px 12px; border: 1px solid var(--cm-border); border-radius: 0;
    background: var(--cm-action); color: var(--cm-text); font: 400 14px/20px Lato, Arial, sans-serif;
    text-shadow: none; box-shadow: none; white-space: normal; vertical-align: middle;
}
:is(.campaign-manager,.campaign-session-agenda) .btn:hover {background: var(--cm-action-hover); color: var(--cm-text); text-decoration: none;}
:is(.campaign-manager,.campaign-session-agenda) .btn:active {background: var(--cm-action-pressed);}
:is(.campaign-manager,.campaign-session-agenda) .btn-primary, :is(.campaign-manager,.campaign-session-agenda) .btn-info {
    --cm-action: var(--cm-primary); --cm-action-hover: var(--cm-primary-hover); --cm-action-pressed: var(--cm-primary-pressed);
    color: #fff; border-color: var(--cm-primary);
}
:is(.campaign-manager,.campaign-session-agenda) .btn-create, :is(.campaign-manager,.campaign-session-agenda) .btn-success, :is(.campaign-manager,.campaign-session-agenda) button.btn-primary[type="submit"] {
    --cm-action: var(--cm-create); --cm-action-hover: var(--cm-create-hover); --cm-action-pressed: var(--cm-create-pressed);
    color: #fff; border-color: var(--cm-create); font-weight: 700;
}
:is(.campaign-manager,.campaign-session-agenda) .btn-danger {--cm-action:#47484a; --cm-action-hover: var(--cm-danger); --cm-action-pressed: #560608;}
:is(.campaign-manager,.campaign-session-agenda) :is(.btn-primary,.btn-info,.btn-success,.btn-create,.btn-danger):hover {color: #fff;}
:is(.campaign-manager,.campaign-session-agenda) .btn-sm, :is(.campaign-manager,.campaign-session-agenda) .btn-xs {min-height: 28px; padding: 3px 8px; font-size: 12px;}
:is(.campaign-manager,.campaign-session-agenda) .btn-block {width: 100%;}
:is(.campaign-manager,.campaign-session-agenda) .btn i {margin: 0; color: inherit;}
:is(.campaign-manager,.campaign-session-agenda) .btn:disabled, :is(.campaign-manager,.campaign-session-agenda) .btn.disabled {opacity: .5; cursor: not-allowed;}
.campaign-manager label {font-size: 14px; font-weight: 400; color: var(--cm-muted); text-align: left;}
.campaign-manager :is(input:not([type]),input[type="text"],input[type="email"],input[type="url"],input[type="number"],input[type="search"],input[type="date"],textarea,select) {
    width: 100%; max-width: 100%; min-height: 38px; height: auto; padding: 8px 12px 9px;
    border: 0; border-bottom: 1px solid transparent; border-radius: 0; background-color: transparent;
    color: var(--cm-text); font: 400 16px/20px Lato, Arial, sans-serif; box-shadow: none;
}
.campaign-manager :is(input,textarea)::placeholder {color: var(--cm-muted); opacity: 1;}
.campaign-manager :is(input,textarea,select):hover {border-bottom-color: var(--cm-muted);}
.campaign-manager :is(input,textarea,select):focus {border-bottom-color: var(--cm-focus);}
.campaign-manager textarea {min-height: 96px; resize: vertical; padding: 10px 12px 12px;}
.campaign-manager select:not([multiple]):not([size]) {appearance: none; background-image: url('../../images/profile-select-chevron.svg'); background-repeat: no-repeat; background-position: right 6px center; background-size: 18px; padding-right: 34px;}
.campaign-manager select option {background: var(--cm-panel); color: var(--cm-text);}
.campaign-manager :is(input,textarea,select):disabled {opacity: .5; cursor: not-allowed;}
.campaign-manager :is(input,textarea)[readonly] {color: var(--cm-muted);}
.campaign-manager :is(input,textarea,select)[aria-invalid="true"], .campaign-manager .has-error :is(input,textarea,select) {border-bottom-color: var(--cm-danger);}
.campaign-manager .has-error .help-block {background: #560608; color: #fff; padding: 8px;}
.campaign-manager .form-control-description {color: var(--cm-muted); font-size: 12px; line-height: 1.5; text-align: left; margin-top: 8px;}
.campaign-manager .select2-container {max-width: 100%; text-align: left;}
.campaign-manager .select2-selection {background: transparent; border: 0; border-bottom: 1px solid var(--cm-border); border-radius: 0; min-height: 38px;}
.campaign-manager .select2-selection__rendered {color: var(--cm-text);}
.campaign-manager .select2-selection__choice {background: var(--cm-bg); color: var(--cm-text); border-color: var(--cm-border); border-radius: 0;}
.campaign-manager .table {color: var(--cm-text);}
.campaign-manager .table :is(td,th) {border-color: var(--cm-border); padding: 12px;}
.campaign-manager .character-block {display: block; min-height: 220px; border: 1px solid var(--cm-border); border-radius: 0; background-size: cover; background-position: center top; overflow: hidden;}
.campaign-manager .character-block-nameplate {background: rgba(0,0,0,.85); color: #fff; font: 700 14px/1.5 Lato,Arial,sans-serif; padding: 12px; overflow-wrap: anywhere;}
.campaign-manager .campaign-manager-empty {padding: 24px 16px; text-align: center; color: var(--cm-muted);}
.campaign-manager .img-avatar {width: 36px; height: 36px; border-radius: 50%; object-fit: cover;}
@media (max-width: 767px) {
    .campaign-manager {padding: 8px;}
    .campaign-manager-header {align-items: flex-start; flex-direction: column;}
    .campaign-manager-nav {padding: 30px 20px 22px;}
    .campaign-manager-nav .nav {gap: 22px;}
    .campaign-manager-nav .nav-link {font-size: 16px;}
    .campaign-manager-content {padding: 16px 0 0;}
    .campaign-manager .ibox-content, .campaign-manager .ibox-title, .campaign-manager .ibox-footer {padding: 12px;}
    .campaign-manager .pull-right {float: none !important; margin-bottom: 12px;}
    .campaign-manager .table {display: block; overflow-x: auto;}
}

/* Local secondary tabs use their content surface, including NPC editor tabs. */
.campaign-manager .nav-tabs {border-color: var(--cm-border);}
.campaign-manager .nav-tabs .nav-link {border: 0; border-radius: 0; color: var(--cm-muted); padding: 14px 20px; background: transparent;}
.campaign-manager .nav-tabs .nav-link:hover {background: var(--cm-bg); text-decoration: none;}
.campaign-manager .nav-tabs .nav-link.active {color: var(--cm-text); background: var(--cm-panel);}
.campaign-manager .alert {border-radius: 0; box-shadow: none;}
.campaign-manager .alert-info {background: #142d3d; border-color: #1e6d9e; color: #ebeef5;}
.campaign-manager .alert-success {background: #123b23; border-color: #237344; color: #ebeef5;}
.campaign-manager .alert-warning {background: #3d2d0e; border-color: #986f25; color: #ebeef5;}
.campaign-manager .alert-danger {background: #400607; border-color: #9f0e11; color: #ebeef5;}
.campaign-manager .alert a {color: #b9dfff; text-decoration: underline;}

.campaign-manager[data-campaign-theme="light"] .campaign-manager-nav {--cm-tab-line: #48515c;}

/* Profile portrait cards reuse @User/Presentation/card.html.twig.
   Scope the current profile card treatment without importing its page layout. */
:is(.campaign-manager,.campaign-public) .campaign-characters-section {margin-bottom: 28px;}
:is(.campaign-manager,.campaign-public) .campaign-section-heading {display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 16px;}
:is(.campaign-manager,.campaign-public) .campaign-section-heading h2 {margin: 0 0 4px;}
:is(.campaign-manager,.campaign-public) .campaign-section-heading p {margin: 0; color: var(--cm-muted);}
:is(.campaign-manager,.campaign-public) .campaign-character-grid {display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; margin-bottom: 24px;}
:is(.campaign-manager,.campaign-public) .campaign-character-grid-full {grid-template-columns: repeat(3, minmax(0, 1fr));}
:is(.campaign-manager,.campaign-public) .campaign-character {min-width: 0;}
:is(.campaign-manager,.campaign-public) .creator-card {position: relative; aspect-ratio: 3/4; min-height: 360px; border: 1px solid #47484a; background: transparent; perspective: 1400px; border-radius: 0; box-shadow: none; color: #ebeef5;}
:is(.campaign-manager,.campaign-public) .creator-card:hover, :is(.campaign-manager,.campaign-public) .creator-card:focus-within {border-color: #82b9d9;}
:is(.campaign-manager,.campaign-public) .creator-card-front, :is(.campaign-manager,.campaign-public) .creator-card-back {width: 100%; height: 100%; min-height: inherit; backface-visibility: hidden; -webkit-backface-visibility: hidden; transition: transform .5s cubic-bezier(.22,.7,.25,1); transform-origin: center; display: flex; flex-direction: column;}
:is(.campaign-manager,.campaign-public) .creator-card-front {position: relative; isolation: isolate; justify-content: flex-end; overflow: hidden; transform: rotateY(0deg);}
:is(.campaign-manager,.campaign-public) .creator-card-art {position: absolute; inset: 0; z-index: -2; display: block;}
:is(.campaign-manager,.campaign-public) .creator-card-art img {width: 100%; height: 100%; object-fit: cover; transition: transform .35s;}
:is(.campaign-manager,.campaign-public) .creator-card:hover .creator-card-art img {transform: scale(1.04);}
:is(.campaign-manager,.campaign-public) .creator-card-art::after {content: ''; position: absolute; inset: 0; background: linear-gradient(0deg,#0a0a0afa 0%,#0a0a0acd 22%,#0a0a0a66 53%,#0a0a0a08 78%);}
:is(.campaign-manager,.campaign-public) .creator-card-copy {padding: 24px 24px 74px;}
:is(.campaign-manager,.campaign-public) .creator-card h3 {font: 500 27px/1.25 Georgia,serif; color: #ebeef5; margin: 0 0 12px;}
:is(.campaign-manager,.campaign-public) .creator-card h3 a {color: #ebeef5; text-decoration: none;}
:is(.campaign-manager,.campaign-public) .creator-card-tags {display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none;}
:is(.campaign-manager,.campaign-public) .creator-card-tags li {padding: 4px 9px; background: #222324a8; border: 1px solid #71727566; color: #e1e4eb; font-size: 12px;}
:is(.campaign-manager,.campaign-public) .creator-card-back {position: absolute; inset: 0; padding: 24px 24px 74px; overflow: auto; background: #141414; transform: rotateY(180deg); pointer-events: none;}
:is(.campaign-manager,.campaign-public) .creator-card-description {color: #c9cbd1; line-height: 1.85; font-size: 15px; margin: 12px 0 30px; overflow-wrap: anywhere;}
:is(.campaign-manager,.campaign-public) .creator-card-description :is(img,video,iframe) {max-width: 100%;}
:is(.campaign-manager,.campaign-public) .creator-card-description :is(img,video) {height: auto;}
:is(.campaign-manager,.campaign-public) .creator-card-description pre {white-space: pre-wrap; overflow-wrap: anywhere;}
:is(.campaign-manager,.campaign-public) .creator-card-read-more {margin-top: auto; width: 100%; color: #ebeef5; background: #2c2d2e;}
:is(.campaign-manager,.campaign-public) .creator-card-read-more:hover {background: #47484a; color: #ebeef5;}
:is(.campaign-manager,.campaign-public) .creator-card.is-flipped .creator-card-front {transform: rotateY(-180deg); pointer-events: none;}
:is(.campaign-manager,.campaign-public) .creator-card.is-flipped .creator-card-back {transform: rotateY(0deg); pointer-events: auto;}
:is(.campaign-manager,.campaign-public) .creator-flip {position: absolute; right: 24px; bottom: 24px; z-index: 5; display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0; border: 1px solid #82b9d988; border-radius: 0; background: #1b1b1cc9; color: #e1e4eb; cursor: pointer;}
:is(.campaign-manager,.campaign-public) .creator-flip:hover {background: #213745; border-color: #82b9d9;}
:is(.campaign-manager,.campaign-public) .creator-flip-icon {width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round;}
:is(.campaign-manager,.campaign-public) .campaign-character-actions {position:absolute;left:24px;right:72px;bottom:24px;z-index:5;display:flex;flex-wrap:wrap;gap:8px;padding:0;}
/* Explicit tracks reserve metadata space without rendering empty labels/badges.
   Missing location or tags cannot move the title; controls have their own lower rail. */
:is(.campaign-manager,.campaign-public) .campaign-character .creator-card-copy {
    display:grid; grid-template-rows:68px 18px 32px; gap:8px;
    padding:24px 24px 74px; flex:none;
}
:is(.campaign-manager,.campaign-public) .campaign-character .creator-card-copy h3 {
    grid-row:1; margin:0; align-self:end; max-height:68px; overflow:hidden;
    display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
}
:is(.campaign-manager,.campaign-public) .campaign-character .creator-card-copy .creator-card-subtitle {
    grid-row:2; margin:0; line-height:18px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
:is(.campaign-manager,.campaign-public) .campaign-character .creator-card-copy .creator-card-tags {
    grid-row:3; margin:0; flex-wrap:nowrap; min-width:0; align-items:start;
}
:is(.campaign-manager,.campaign-public) .campaign-character .creator-card-tags li {
    min-width:0; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; line-height:20px;
}
:is(.campaign-manager,.campaign-public) .campaign-character .creator-card-controls {display:none;}
:is(.campaign-manager,.campaign-public) .campaign-character-managed .creator-card-copy {padding-bottom:108px;}
:is(.campaign-manager,.campaign-public) .campaign-character-actions {max-height:72px; overflow:auto;}

:is(.campaign-manager,.campaign-public) .campaign-character-managed .creator-card-back {padding-bottom:140px;}
/* Opacity retains keyboard access; focus-within reveals the complete action group. */
@media(hover:hover) and (pointer:fine) {
    :is(.campaign-manager,.campaign-public) .campaign-character-actions,:is(.campaign-manager,.campaign-public) .creator-flip {opacity:0;pointer-events:none;transition:opacity .18s;}
    :is(.campaign-manager,.campaign-public) .creator-card:hover .campaign-character-actions,:is(.campaign-manager,.campaign-public) .creator-card:focus-within .campaign-character-actions,
    :is(.campaign-manager,.campaign-public) .creator-card:hover .creator-flip,:is(.campaign-manager,.campaign-public) .creator-card:focus-within .creator-flip {opacity:1;pointer-events:auto;}
}
@media(prefers-reduced-motion:reduce){:is(.campaign-manager,.campaign-public) .campaign-character-actions,:is(.campaign-manager,.campaign-public) .creator-flip{transition:none;}}
:is(.campaign-manager,.campaign-public) .campaign-session-list {background: transparent; border: 0; padding: 0;}
@media(max-width: 1000px) {:is(.campaign-manager,.campaign-public) .campaign-character-grid-full {grid-template-columns: repeat(2,minmax(0,1fr));}}
@media(max-width: 600px) {:is(.campaign-manager,.campaign-public) .campaign-character-grid {grid-template-columns: minmax(0,1fr);} :is(.campaign-manager,.campaign-public) .creator-card {min-height: 390px;}}
@media(prefers-reduced-motion: reduce) {:is(.campaign-manager,.campaign-public) .creator-card-front,:is(.campaign-manager,.campaign-public) .creator-card-back,:is(.campaign-manager,.campaign-public) .creator-card-art img {transition: none;} :is(.campaign-manager,.campaign-public) .creator-card:hover .creator-card-art img {transform: none;}}

/* Date-led agenda: individual cards, with actual circular character portraits. */
.campaign-manager .campaign-sessions-title {margin: 0 0 16px;}
:is(.campaign-manager,.campaign-public) .campaign-session-agenda {display: grid; grid-template-columns: 64px minmax(0,1fr); gap: 16px; padding: 20px; margin-bottom: 16px; border: 1px solid var(--cm-border); border-radius: 0; background: var(--cm-bg);}
:is(.campaign-manager,.campaign-public) .campaign-session-date {border-right: 1px solid var(--cm-border); padding-right: 12px; color: var(--cm-muted); font-size: 12px; text-align: center;}
:is(.campaign-manager,.campaign-public) .campaign-session-date time, :is(.campaign-manager,.campaign-public) .campaign-session-date span {display: block;}
:is(.campaign-manager,.campaign-public) .campaign-session-date time {text-transform: uppercase;}
:is(.campaign-manager,.campaign-public) .campaign-session-date strong {display: block; color: var(--cm-text); font-size: 28px; line-height: 1.2; font-variant-numeric: tabular-nums;}
:is(.campaign-manager,.campaign-public) .campaign-session-details {min-width: 0;}
:is(.campaign-manager,.campaign-public) .campaign-session-heading {display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 12px;}
:is(.campaign-manager,.campaign-public) .campaign-session-heading > div:first-child {flex: 1 1 120px; min-width: 0;}
:is(.campaign-manager,.campaign-public) .campaign-session-heading h3 {margin: 0 0 6px; font-size: 18px;}
:is(.campaign-manager,.campaign-public) .campaign-session-meta {margin: 0; color: var(--cm-muted); font-size: 12px;}
:is(.campaign-manager,.campaign-public) .campaign-session-status {color: var(--cm-accent); font-size: 12px; margin: 0 0 10px;}
:is(.campaign-manager,.campaign-public) .campaign-session-play {display: flex; flex-wrap: wrap; gap: 8px;}
:is(.campaign-manager,.campaign-public) .campaign-session-excerpt {margin-top: 16px; overflow-wrap: anywhere;}
:is(.campaign-manager,.campaign-public) .campaign-session-excerpt img {max-width: 100%; height: auto;}
:is(.campaign-manager,.campaign-public) .campaign-session-portraits {display: flex; flex-wrap: wrap; gap: 6px; margin: 20px 0; padding: 0; list-style: none;}
:is(.campaign-manager,.campaign-public) .campaign-session-portraits a {display: block; border-radius: 50%;}
:is(.campaign-manager,.campaign-public) .campaign-session-portraits img {display: block; width: 36px; height: 36px; max-width: none; object-fit: cover; border-radius: 50%; border: 1px solid var(--cm-border);}
:is(.campaign-manager,.campaign-public) .campaign-session-journals {margin: 16px 0; overflow-wrap: anywhere;}
:is(.campaign-manager,.campaign-public) .campaign-session-actions {display: flex; flex-wrap: wrap; gap: 8px 16px; border-top: 1px solid var(--cm-border); padding-top: 12px; margin-top: 16px;}
:is(.campaign-manager,.campaign-public) .campaign-session-actions a {font-size: 12px; padding: 4px 0;}
@media(max-width: 600px) {:is(.campaign-manager,.campaign-public) .campaign-session-agenda {padding: 16px; gap: 12px; grid-template-columns: 56px minmax(0,1fr);}}

:is(.campaign-manager,.campaign-public) .campaign-session-report-action {border: 0; border-radius: 0; padding: 4px 0; background: transparent; color: var(--cm-accent); font: 400 12px/1.5 Lato,Arial,sans-serif; cursor: pointer;}
:is(.campaign-manager,.campaign-public) .campaign-session-report-action:hover {text-decoration: underline;}

/* Explanations use the shared illustrative frame, without nested panel fills. */
.campaign-manager .campaign-information {margin-bottom:20px;color:#ebeef5;}
.campaign-manager .campaign-information > .ibox-content {padding:0;background:transparent;border:0;}
.campaign-manager .campaign-information :is(h1,h2,h3,h4,h5,p,li,label) {color:inherit;}
.campaign-manager .campaign-information a:not(.btn) {color:#82b9d9;}
.campaign-manager .campaign-information :is(input,select,textarea) {color:#ebeef5;}
.campaign-manager .campaign-information select option {background:#212529;color:#ebeef5;}

/* The campaign cover begins at the content-page top and reveals the existing texture below. */
#page-wrapper:has(.campaign-manager-has-cover) {position:relative;isolation:isolate;}
#page-wrapper:has(.campaign-manager-has-cover) > .wrapper-content {position:static;transform:none;animation:none;}
.campaign-manager-cover {position:absolute;top:0;left:0;right:0;height:600px;z-index:-1;pointer-events:none;overflow:hidden;-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 20%,rgba(0,0,0,.8) 42%,rgba(0,0,0,.35) 72%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0%,#000 20%,rgba(0,0,0,.8) 42%,rgba(0,0,0,.35) 72%,transparent 100%);}
.campaign-manager-cover img {display:block;width:100%;height:100%;object-fit:cover;object-position:center top;}
.campaign-manager-cover::after {content:'';position:absolute;inset:0;background:rgba(0,0,0,.55);}
.campaign-manager-has-cover .campaign-manager-header {text-shadow:0 2px 10px #000;}
.campaign-manager-has-cover .campaign-manager-header h1 {color:#ebeef5;}
.campaign-manager-has-cover :is(.campaign-manager-eyebrow,.campaign-manager-world) {color:#c9cbd1;}
.campaign-manager-has-cover .campaign-manager-nav {--cm-tab-line:#b8bdc4;}
.campaign-manager-has-cover .campaign-manager-nav .nav-link {color:#c9cbd1;text-shadow:0 2px 10px #000;}
.campaign-manager-has-cover .campaign-manager-nav .nav-link:is(:hover,[aria-current="page"]) {color:#fff;}
@media(max-width:600px){.campaign-manager-cover{height:480px;}}

/* Align dashboard headings and the cards beneath them. */
@media(min-width:992px){
    .campaign-dashboard .campaign-section-heading {min-height:32px;box-sizing:border-box;align-items:flex-start;margin-bottom:12px;}
    .campaign-dashboard .campaign-section-heading .campaign-sessions-title {margin:0;}
}

/* Quiet working panels across Campaign Manager; information frames are separate. */
.campaign-manager .ibox-content .border-sideline {background:transparent;border:0;border-top:1px solid var(--cm-border);border-radius:0;padding:16px 0;margin-bottom:0!important;box-shadow:none;}
.campaign-manager .ibox-content .border-sideline h4 {font-size:14px;margin:0 0 4px;}
.campaign-manager .ibox-content .border-sideline small {color:var(--cm-muted);font-weight:400;}
.campaign-manager .ibox-content .border-sideline .btn {background:transparent;color:var(--cm-muted);border-color:transparent;}
.campaign-manager .ibox-content .border-sideline .btn:hover {background:var(--cm-panel);color:var(--cm-text);}
.campaign-manager .ibox-content .border-sideline .btn-danger:hover {background:var(--cm-danger);color:#fff;}
.campaign-manager .ibox .ibox {background:transparent;box-shadow:none;}
.campaign-manager .campaign-party-card {background:var(--cm-bg);border:1px solid var(--cm-border);padding:24px;margin-bottom:20px;}
.campaign-manager .campaign-party-identity {display:grid;grid-template-columns:80px minmax(0,1fr);gap:20px;align-items:center;}
.campaign-manager .campaign-party-no-crest {grid-template-columns:minmax(0,1fr);}
.campaign-manager .campaign-party-crest {display:block;width:80px;height:80px;object-fit:contain;object-position:center;}
.campaign-manager .campaign-party-identity h3 {font:400 23px/1.3 Georgia,serif;margin:0 0 6px;}
.campaign-manager .campaign-party-count {font-size:12px;color:var(--cm-muted);margin:0;}
.campaign-manager .campaign-party-description {margin:12px 0 0;overflow-wrap:anywhere;}
.campaign-manager .campaign-party-footer {display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;margin-top:20px;padding-top:16px;border-top:1px solid var(--cm-border);}
.campaign-manager .campaign-party-roster {display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:0;}
.campaign-manager .campaign-party-roster img {width:48px;height:48px;object-fit:cover;border-radius:50%;border:1px solid var(--cm-border);}
.campaign-manager .campaign-party-roster a {display:block;border-radius:50%;}
.campaign-manager .campaign-parties-section {margin-bottom:24px;}
@media(max-width:600px){.campaign-manager .campaign-party-card{padding:16px;}.campaign-manager .campaign-party-identity{gap:12px;grid-template-columns:44px minmax(0,1fr);}.campaign-manager .campaign-party-no-crest{grid-template-columns:minmax(0,1fr);}.campaign-manager .campaign-party-crest{width:44px;height:56px;}}

/* Invitation occupies a portrait-card slot; its form opens inside that same card. */
.campaign-manager .campaign-invitation-card {position:relative;aspect-ratio:3/4;min-height:360px;align-self:start;background:var(--cm-bg);border:1px solid var(--cm-border);color:var(--cm-text);}
.campaign-manager .campaign-invitation-intro {position:absolute;inset:24px 24px 90px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:16px;}
.campaign-manager .campaign-invitation-intro > i {font-size:36px;color:var(--cm-muted);}
.campaign-manager .campaign-invitation-intro h3 {font:400 27px/1.25 Georgia,serif;margin:0;}
.campaign-manager .campaign-invitation-intro p {margin:0;color:var(--cm-muted);}
.campaign-manager .campaign-invitation-disclosure > summary {position:absolute;bottom:24px;left:24px;right:24px;padding:10px 12px;background:var(--cm-create);color:#fff;text-align:center;cursor:pointer;font-weight:700;}
.campaign-manager .campaign-invitation-disclosure[open] {position:absolute;inset:0;background:var(--cm-bg);}
.campaign-manager .campaign-invitation-disclosure[open] > summary {top:16px;bottom:auto;background:var(--cm-panel);color:var(--cm-text);}
.campaign-manager .campaign-invitation-form {position:absolute;inset:76px 0 0;padding:0 24px 24px;overflow-y:auto;overscroll-behavior:contain;}
.campaign-manager .campaign-invitation-form p {font-size:12px;}
.campaign-manager .campaign-invitation-form h4 {font-size:14px;}
.campaign-manager .campaign-invitation-form textarea {min-height:96px;}
@media(max-width:600px){.campaign-manager .campaign-invitation-card{min-height:390px;}}

/* Page columns have a wider gutter than cards within either column. */
.campaign-manager {--cm-column-gap:56px;--cm-block-gap:24px;}
.campaign-manager .campaign-character-grid {gap:var(--cm-block-gap);margin-bottom:0;}
.campaign-manager .campaign-characters-section {margin-bottom:var(--cm-block-gap);}
.campaign-manager :is(.ibox,.ibox-box,.campaign-party-card,.campaign-session-agenda,.campaign-information) {margin-bottom:var(--cm-block-gap);}
@media(min-width:576px){
    .campaign-manager-content > .row,
    .campaign-manager-content > .container > .row {margin-left:calc(var(--cm-column-gap) / -2);margin-right:calc(var(--cm-column-gap) / -2);row-gap:var(--cm-block-gap);}
    .campaign-manager-content > .row > [class*="col-"],
    .campaign-manager-content > .container > .row > [class*="col-"] {padding-left:calc(var(--cm-column-gap) / 2);padding-right:calc(var(--cm-column-gap) / 2);}
}
@media(min-width:576px) and (max-width:1199px){.campaign-manager{--cm-column-gap:40px;}}
@media(max-width:575px){
    .campaign-manager-content > .row,
    .campaign-manager-content > .container > .row {row-gap:var(--cm-block-gap);}
}

/* Local page tabs: compact neutral surfaces, separate from the sigil navigation. */
.campaign-manager .campaign-inner-tabs {margin:0 0 20px;padding:0;border:0;border-bottom:1px solid var(--cm-border);background:transparent;box-shadow:none;}
.campaign-manager .campaign-inner-tabs.nav,.campaign-manager .campaign-inner-tabs > .nav {display:flex;flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;}
.campaign-manager .campaign-inner-tabs .nav-item {margin:0;}
.campaign-manager .campaign-inner-tabs .nav-link {display:block;min-height:44px;padding:12px 18px;border:0!important;border-radius:0;background:transparent;color:var(--cm-muted)!important;font:400 14px/20px Lato,Arial,sans-serif;text-transform:none!important;text-decoration:none!important;box-shadow:none;}
.campaign-manager .campaign-inner-tabs .nav-link:hover {background:var(--cm-panel);color:var(--cm-text)!important;text-decoration:none!important;}
.campaign-manager .campaign-inner-tabs .nav-link.active {background:var(--cm-bg);color:var(--cm-text)!important;box-shadow:none;border:0!important;}
.campaign-manager .campaign-inner-tabs .nav-link::before,.campaign-manager .campaign-inner-tabs .nav-link::after {content:none!important;}
.campaign-manager .campaign-inner-tabs .nav-link:focus-visible {outline:2px solid var(--cm-accent);outline-offset:-3px;}
@media(max-width:600px){.campaign-manager .campaign-inner-tabs .nav-link{padding:10px 12px;}}

.campaign-manager .campaign-information > .ibox-title {padding:0 0 16px;background:transparent;border:0;}
.campaign-manager .campaign-information > .ibox-title h5 {font-size:21px;color:inherit;}
.campaign-manager .campaign-information > .ibox-content {padding:0;background:transparent;border:0;}

/* Shared darker surface for session agendas and party identity cards. */
:is(.campaign-manager,.campaign-public) :is(.campaign-session-agenda,.campaign-party-card) {
    --cm-text:#ebeef5;
    --cm-muted:#a6a9ad;
    --cm-border:#3b3e42;
    --cm-accent:#54bbfa;
    --cm-panel:#25282c;
    --cm-bg:#111315;
    background:linear-gradient(135deg,#202429 0%,#171a1d 48%,#0d0f11 100%);
    color:var(--cm-text);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.025);
}

/* Tabbed working frames with the black, angled Prodromos heading. */
.campaign-manager :is(.ibox,.ibox-box):has(> .ibox-title) {position:relative;border:1px solid #000!important;background:var(--cm-bg)!important;}
.campaign-manager :is(.ibox,.ibox-box) > .ibox-title {position:relative;z-index:1;margin:-1px -1px 0;padding:0 0 8px;border:0!important;background:transparent!important;min-height:0;}
.campaign-manager :is(.ibox,.ibox-box) > .ibox-title :is(h4,h5) {display:inline-flex;align-items:center;gap:8px;max-width:100%;position:relative;top:0;margin:0;padding:8px 30px 8px 12px;min-height:35px;box-sizing:border-box;background:#0a0a0a;color:#ebeef5;font:700 16px/19px Lato,Arial,sans-serif;text-transform:uppercase;clip-path:polygon(0 0,100% 0,calc(100% - 9.38px) 100%,0 100%);}
.campaign-manager :is(.ibox,.ibox-box) > .ibox-title:has(.ibox-tools) {display:flex;align-items:center;justify-content:space-between;gap:12px;padding-right:12px;}
.campaign-manager :is(.ibox,.ibox-box) > .ibox-title:has(.ibox-tools) > .collapse-link {min-width:0;}
.campaign-manager :is(.ibox,.ibox-box) > .ibox-title .ibox-tools {position:static;float:none;flex:0 0 auto;margin:0;transform:none;display:flex;align-items:center;}
.campaign-manager :is(.ibox,.ibox-box) > .ibox-title .ibox-tools .collapse-link {display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;line-height:1;}
.campaign-manager :is(.ibox,.ibox-box) > .ibox-title .ibox-tools i {display:block;line-height:1;margin:0;vertical-align:middle;}
.campaign-manager :is(.ibox,.ibox-box) > .ibox-content {padding:12px 24px 24px;background:transparent!important;}
.campaign-manager :is(.ibox,.ibox-box) > .ibox-footer {background:var(--cm-panel);border-top:1px solid var(--cm-border);padding:16px 24px;}
.campaign-manager .campaign-npc-toolbar {display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:24px;flex-wrap:wrap;}
.campaign-manager .campaign-npc-search {flex:1 1 280px;max-width:600px;}
.campaign-manager .campaign-npc-search label {display:block;margin-bottom:4px;}
.campaign-manager #campaign-npc-count {font-size:12px;color:var(--cm-muted);margin:8px 0 0;}
.campaign-manager .campaign-character[hidden],.campaign-manager #campaign-npc-no-results[hidden] {display:none!important;}
.campaign-manager .creator-card-subtitle {color:#c9cbd1;font-size:12px;margin:0 0 12px;overflow-wrap:anywhere;}
@media(max-width:600px){.campaign-manager :is(.ibox,.ibox-box) > .ibox-title{padding-left:0;padding-right:0;}.campaign-manager :is(.ibox,.ibox-box) > :is(.ibox-content,.ibox-footer){padding-left:16px;padding-right:16px;}}

.campaign-dashboard .campaign-section-heading > h2 {margin:0;line-height:1.4;}

/* NPC creation shares the invitation tile and the manager's form surfaces. */
.campaign-manager .campaign-create-npc-card {display:block;text-decoration:none;transition:border-color .18s,background .18s;}
.campaign-manager .campaign-create-npc-card:hover {border-color:var(--cm-muted);background:var(--cm-panel);text-decoration:none;}
.campaign-manager .campaign-create-npc-card:focus-visible {outline:2px solid var(--cm-text);outline-offset:4px;}
.campaign-manager .campaign-create-npc-action {position:absolute;bottom:24px;left:24px;right:24px;padding:10px 12px;background:var(--cm-create);color:#fff;text-align:center;font-weight:700;}
.campaign-manager .campaign-create-npc-action i {margin-left:8px;}
/* A single character workspace keeps identity and portrait together. */
.campaign-manager .campaign-npc-create {max-width:1120px;margin-inline:auto;}
.campaign-manager .campaign-npc-page-heading {margin-bottom:28px;}
.campaign-manager .campaign-npc-page-heading h2 {margin:0 0 8px;}
.campaign-manager .campaign-npc-page-heading p,.campaign-manager .campaign-npc-hint {color:var(--cm-muted);margin:0;}
.campaign-manager .campaign-npc-workspace > .ibox-content {padding-top:24px;}
.campaign-manager .campaign-npc-identity {display:grid;grid-template-columns:minmax(200px,280px) minmax(0,1fr);gap:40px;padding-bottom:24px;}
.campaign-manager .campaign-npc-portrait h3 {font-size:14px;margin:0 0 12px;}
.campaign-manager .campaign-npc-portrait h3 span {font-weight:400;color:var(--cm-muted);margin-left:8px;}
.campaign-manager .campaign-npc-name-fields {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;}
.campaign-manager .campaign-npc-create .form-group {margin-bottom:20px;}
.campaign-manager .campaign-npc-hint {font-size:12px;line-height:1.6;}
.campaign-manager .campaign-npc-portrait .campaign-npc-hint {margin-top:12px;}
.campaign-manager .campaign-npc-extra {border-top:1px solid var(--cm-border);}
.campaign-manager .campaign-npc-extra summary {cursor:pointer;font-weight:700;padding:18px 0;}
.campaign-manager .campaign-npc-extra summary span {font-size:12px;font-weight:400;color:var(--cm-muted);margin-left:12px;}
.campaign-manager .campaign-npc-extra > div {padding:4px 0 8px;}
.campaign-manager .campaign-npc-links {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;}
.campaign-manager .campaign-npc-create-footer {display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.campaign-manager .campaign-npc-create .dropzone {background:var(--cm-bg);border:1px dashed var(--cm-border);min-height:280px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;padding:16px;}
.campaign-manager .campaign-npc-create .dropzone:hover {border-color:var(--cm-muted);}
.campaign-manager .campaign-npc-create .dz-message {margin:16px 0;color:var(--cm-muted);}
.campaign-manager .campaign-npc-create .dz-message > i {display:block;font-size:44px;margin-bottom:20px;}
.campaign-manager .campaign-npc-create .dz-message strong {display:block;color:var(--cm-text);margin-bottom:8px;}
@media(max-width:767px){
    .campaign-manager .campaign-npc-identity {grid-template-columns:1fr;gap:24px;}
    .campaign-manager .campaign-npc-portrait {max-width:100%;}
    .campaign-manager .campaign-npc-create .dropzone {min-height:180px;}
    .campaign-manager .campaign-npc-links {grid-template-columns:1fr;gap:0;}
}
@media(max-width:600px){.campaign-manager .campaign-npc-name-fields{grid-template-columns:1fr;gap:0;}}

/* Generated form rows stack labels; explicit .row layouts keep their grid. */
.campaign-manager .form-group:not(.row) {min-width:0;}
.campaign-manager .form-group:not(.row) > label {display:block;width:100%;max-width:100%;float:none;padding:0;margin-bottom:8px;white-space:normal;word-break:normal;overflow-wrap:normal;}
.campaign-manager .form-group:not(.row) > .select2-container {width:100%!important;}
.campaign-manager .form-group.row > label {word-break:normal;overflow-wrap:normal;}

/* The portrait preview occupies the whole upload frame. */
.campaign-manager .campaign-npc-create #fileUploader {position:relative;aspect-ratio:1;min-height:0;padding:0;overflow:hidden;}
.campaign-manager .campaign-npc-create #fileUploader .dz-message {width:100%;padding:24px 16px;margin:0;text-align:center;}
.campaign-manager .campaign-npc-create #fileUploader .dz-message > i {width:100%;text-align:center;margin:0 auto 20px;float:none;}
.campaign-manager .campaign-npc-create #fileUploader .dz-preview {position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;background:transparent;}
.campaign-manager .campaign-npc-create #fileUploader .dz-image {width:100%;height:100%;border-radius:0;}
.campaign-manager .campaign-npc-create #fileUploader .dz-image img {width:100%;height:100%;object-fit:cover;object-position:center;}
.campaign-manager .campaign-npc-create #fileUploader .dz-preview:hover .dz-image img {transform:none;filter:none;}
.campaign-manager .campaign-npc-create #fileUploader .dz-remove {position:absolute;z-index:30;bottom:0;left:0;right:0;padding:10px;background:rgba(0,0,0,.8);color:#fff;text-align:center;}
.campaign-manager .campaign-npc-create #fileUploader .dz-error-message {top:auto;bottom:44px;left:8px;width:calc(100% - 16px);}

/* Plot tree rows use the same neutral surface as other working lists. */
.campaign-manager .plot-list .list-box {background:transparent!important;color:var(--cm-text);border:0;border-bottom:1px solid var(--cm-border);border-radius:0;box-shadow:none;}
.campaign-manager .plot-list .list-box:hover {background:var(--cm-panel)!important;}

/* Session scheduling: compact date controls and distinct content groups. */
:is(.campaign-manager,.campaign-public) .campaign-session-create {max-width:1120px;margin-inline:auto;}
:is(.campaign-manager,.campaign-public) .campaign-session-create-heading {margin-bottom:28px;}
:is(.campaign-manager,.campaign-public) .campaign-session-create-heading h2 {margin:0 0 8px;}
:is(.campaign-manager,.campaign-public) .campaign-session-create-heading p {margin:0;color:var(--cm-muted);}
:is(.campaign-manager,.campaign-public) .campaign-session-create .ibox-content {padding-top:24px;}
:is(.campaign-manager,.campaign-public) .campaign-session-create-grid {display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:40px;}
:is(.campaign-manager,.campaign-public) .campaign-session-create .form-group {margin-bottom:20px;min-width:0;}
:is(.campaign-manager,.campaign-public) .campaign-session-create fieldset {border:0;padding:0;margin:0;min-width:0;}
:is(.campaign-manager,.campaign-public) .campaign-session-create legend {border:0;font-size:16px;font-weight:700;margin:0 0 12px;color:var(--cm-text);}
:is(.campaign-manager,.campaign-public) .campaign-session-date-fields {display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) minmax(0,1.2fr);gap:12px;}
:is(.campaign-manager,.campaign-public) .campaign-session-time-fields {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
:is(.campaign-manager,.campaign-public) .campaign-session-timezone,:is(.campaign-manager,.campaign-public) .campaign-session-field-hint {font-size:12px;line-height:1.6;color:var(--cm-muted);margin:0 0 20px;}
:is(.campaign-manager,.campaign-public) .campaign-session-participants {border-top:1px solid var(--cm-border);padding-top:24px;margin-top:8px;}
:is(.campaign-manager,.campaign-public) .campaign-session-participants h3 {font-size:18px;margin:0 0 20px;}
:is(.campaign-manager,.campaign-public) .campaign-session-participant-fields {display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:24px;}
:is(.campaign-manager,.campaign-public) .campaign-session-extra {border-top:1px solid var(--cm-border);}
:is(.campaign-manager,.campaign-public) .campaign-session-extra summary {padding:18px 0;cursor:pointer;font-weight:700;}
:is(.campaign-manager,.campaign-public) .campaign-session-extra summary span {font-size:12px;color:var(--cm-muted);font-weight:400;margin-left:12px;}
:is(.campaign-manager,.campaign-public) .campaign-session-extra-fields {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;padding-top:12px;}
:is(.campaign-manager,.campaign-public) .campaign-session-create-footer {display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;}
@media(max-width:767px){:is(.campaign-manager,.campaign-public) .campaign-session-create-grid{grid-template-columns:1fr;gap:12px;}:is(.campaign-manager,.campaign-public) .campaign-session-extra-fields{grid-template-columns:1fr;}:is(.campaign-manager,.campaign-public) .campaign-session-participant-fields{grid-template-columns:1fr;gap:0;}}

.campaign-dashboard .campaign-section-heading {margin-bottom:12px;}

/* Crest precedes the complete party content, including its roster and actions. */
.campaign-manager .campaign-party-has-crest {display:grid;grid-template-columns:80px minmax(0,1fr);gap:20px;align-items:start;}
.campaign-manager .campaign-party-content {min-width:0;}
.campaign-manager .campaign-party-identity {display:block;}
@media(max-width:600px){.campaign-manager .campaign-party-has-crest{grid-template-columns:44px minmax(0,1fr);gap:12px;}}

/* Campaign tables share the working-panel palette, including DataTables states. */
.campaign-manager table.table {width:100%;border-collapse:collapse;background:transparent!important;color:var(--cm-text);font-size:14px;}
.campaign-manager table.table > :is(thead,tbody,tfoot) > tr,
.campaign-manager table.table > :is(thead,tbody,tfoot) > tr > :is(th,td) {background:transparent!important;color:var(--cm-text);box-shadow:none!important;}
.campaign-manager table.table > :is(thead,tbody,tfoot) > tr > :is(th,td) {padding:12px;border:0;border-bottom:1px solid var(--cm-border);vertical-align:middle;line-height:1.5;}
.campaign-manager table.table > thead > tr > th {color:var(--cm-muted);font-weight:700;font-size:12px;text-transform:none;}
.campaign-manager table.table > tbody > tr:hover > td {background:var(--cm-panel)!important;}
.campaign-manager table.table .btn-group {display:inline-flex;gap:6px;white-space:nowrap;}
.campaign-manager table.table .btn {min-width:30px;min-height:30px;padding:5px 8px;}
.campaign-manager table.table :is(.btn-primary,.btn-info) {background:transparent;color:var(--cm-muted);border-color:var(--cm-border);box-shadow:none;}
.campaign-manager table.table :is(.btn-primary,.btn-info):hover {background:var(--cm-panel);color:var(--cm-text);}
.campaign-manager .dataTables_wrapper {color:var(--cm-text);}
.campaign-manager .dataTables_wrapper :is(.dataTables_filter,.dataTables_length) {margin-bottom:16px;}
.campaign-manager .dataTables_filter label {display:flex;align-items:center;gap:12px;}
.campaign-manager .dataTables_filter input {margin-left:0!important;max-width:240px;background:transparent!important;}
.campaign-manager .dataTables_length select {width:auto;display:inline-block;}
.campaign-manager .dataTables_wrapper .dataTables_info {color:var(--cm-muted);font-size:12px;padding-top:16px;}
.campaign-manager .dataTables_wrapper .dataTables_paginate .paginate_button {background:transparent!important;border:1px solid transparent!important;border-radius:0;color:var(--cm-muted)!important;box-shadow:none;}
.campaign-manager .dataTables_wrapper .dataTables_paginate .paginate_button:is(:hover,.current) {background:var(--cm-panel)!important;border-color:var(--cm-border)!important;color:var(--cm-text)!important;}
.campaign-manager .dataTables_wrapper .dataTables_paginate .paginate_button.disabled {opacity:.5;}
@media(max-width:600px){.campaign-manager .dataTables_wrapper{overflow-x:auto;}.campaign-manager .dataTables_filter label{justify-content:flex-start;}.campaign-manager table.table > :is(thead,tbody,tfoot) > tr > :is(th,td){padding:10px 8px;}}

/* Session editor: a roomy form beside compact management panels. */
:is(.campaign-manager,.campaign-public) .campaign-session-edit-heading {margin-bottom:24px;}
:is(.campaign-manager,.campaign-public) .campaign-session-edit-heading h2 {margin:0 0 8px;overflow-wrap:anywhere;}
:is(.campaign-manager,.campaign-public) .campaign-session-edit-heading p {margin:0;color:var(--cm-muted);}
:is(.campaign-manager,.campaign-public) .campaign-session-edit-columns {display:grid;grid-template-columns:minmax(0,1.8fr) minmax(280px,1fr);gap:var(--cm-column-gap);align-items:start;}
:is(.campaign-manager,.campaign-public) .campaign-session-edit :is(.campaign-session-edit-main,.campaign-session-edit-sidebar,.form-group) {min-width:0;}
:is(.campaign-manager,.campaign-public) .campaign-session-edit .form-group {margin-bottom:20px;}
:is(.campaign-manager,.campaign-public) .campaign-session-edit .select2-container {width:100%!important;}
:is(.campaign-manager,.campaign-public) .campaign-session-edit-fields {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;}
:is(.campaign-manager,.campaign-public) .campaign-session-edit-section {border-top:1px solid var(--cm-border);margin-top:24px;padding-top:24px;}
:is(.campaign-manager,.campaign-public) .campaign-session-edit-section h3 {font-size:18px;margin:0 0 12px;}
:is(.campaign-manager,.campaign-public) .campaign-session-edit-dates {display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:24px;}
:is(.campaign-manager,.campaign-public) .campaign-session-datetime {border:0;padding:0;margin:0;min-width:0;}
:is(.campaign-manager,.campaign-public) .campaign-session-datetime legend {border:0;font-size:16px;font-weight:700;margin:0 0 12px;color:var(--cm-text);}
:is(.campaign-manager,.campaign-public) .campaign-session-state-actions,:is(.campaign-manager,.campaign-public) .campaign-session-report-actions {display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
:is(.campaign-manager,.campaign-public) .campaign-session-state-actions > div {width:100%;}
:is(.campaign-manager,.campaign-public) .campaign-session-edit-roster {display:flex;gap:8px;flex-wrap:wrap;}
:is(.campaign-manager,.campaign-public) .campaign-session-edit-roster img {width:48px;height:48px;object-fit:cover;border-radius:50%;margin:0!important;}
:is(.campaign-manager,.campaign-public) .campaign-session-disclosure {border:1px solid #000!important;background:var(--cm-bg)!important;}
:is(.campaign-manager,.campaign-public) .campaign-session-disclosure > summary {display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 12px 8px 0;cursor:pointer;list-style:none;}
:is(.campaign-manager,.campaign-public) .campaign-session-disclosure > summary::-webkit-details-marker {display:none;}
:is(.campaign-manager,.campaign-public) .campaign-session-disclosure > summary > span {padding:8px 30px 8px 12px;background:#0a0a0a;color:#ebeef5;font:700 16px/19px Lato,Arial,sans-serif;text-transform:uppercase;clip-path:polygon(0 0,100% 0,calc(100% - 9.38px) 100%,0 100%);margin:-1px 0 0 -1px;}
:is(.campaign-manager,.campaign-public) .campaign-session-disclosure > summary > i {display:flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;}
:is(.campaign-manager,.campaign-public) .campaign-session-disclosure[open] > summary > i {transform:rotate(180deg);}
:is(.campaign-manager,.campaign-public) .campaign-session-disclosure > .ibox-content {display:block;}
:is(.campaign-manager,.campaign-public) .campaign-session-edit .post-actions-wrapper {display:none;}
@media(max-width:991px){:is(.campaign-manager,.campaign-public) .campaign-session-edit-columns{grid-template-columns:1fr;gap:24px;}}
@media(max-width:600px){:is(.campaign-manager,.campaign-public) .campaign-session-edit-fields,:is(.campaign-manager,.campaign-public) .campaign-session-edit-dates{grid-template-columns:1fr;gap:0;}}

/* Information content must not inherit legacy ibox background layers. */
.campaign-manager .campaign-information > :is(.campaign-information-content,.campaign-information-title) {background:transparent;border:0;box-shadow:none;padding:0;color:inherit;}
.campaign-manager .campaign-information > .campaign-information-title {margin-bottom:16px;}
.campaign-manager .campaign-information > .campaign-information-title h5 {font-size:21px;margin:0;color:inherit;}
.campaign-manager .campaign-information :is(.campaign-information-content,.campaign-information-title) > :first-child {margin-top:0;}
.campaign-manager .campaign-information .campaign-information-content > :last-child {margin-bottom:0;}

@media(min-width:1200px){
    .campaign-dashboard > .row > .col-lg-8 {flex:0 0 55%;max-width:55%;}
    .campaign-dashboard > .row > .col-lg-4 {flex:0 0 45%;max-width:45%;}
}
.campaign-manager-content[aria-busy="true"] {visibility:hidden;cursor:progress;}
.campaign-navigation-status {padding:8px 0;color:var(--cm-muted);font-size:12px;}
.campaign-navigation-status:empty {display:none;}

.campaign-content-stage {position:relative;}
.campaign-manager {--wb-loader-surface:var(--cm-bg);--wb-loader-text:var(--cm-text);--wb-loader-silver:var(--cm-focus);--wb-loader-line:var(--cm-border);}
.campaign-navigation-status.campaign-navigation-loading {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}

/* Centered Prodromos search; result counts are announced, not displayed. */
.campaign-manager .campaign-npc-search-panel {width:100%;max-width:624px;margin-inline:auto;}
.campaign-manager .campaign-npc-search-panel .ibox-content {padding:6px 12px;}
.campaign-manager .campaign-npc-search-panel .campaign-npc-search {width:100%;max-width:600px;margin-inline:auto;}
.campaign-manager .campaign-search-field {position:relative;}
.campaign-manager .campaign-search-field > svg {position:absolute;width:16px;height:16px;left:12px;top:50%;transform:translateY(-50%);fill:none;stroke:var(--cm-muted);stroke-width:1.5;pointer-events:none;}
.campaign-manager .campaign-search-field input[type="search"] {padding-left:36px;}
.campaign-sr-only {position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%);white-space:nowrap;border:0;}

/* Override legacy yellow link states at the Campaign Manager boundary. */
.campaign-manager a:not(.btn):not(.nav-link):is(:hover,:focus-visible,:active),
:is(.campaign-manager,.campaign-public) .campaign-session-report-action:is(:hover,:focus-visible,:active) {color:var(--cm-link-state,var(--cm-accent))!important;}
.campaign-manager .creator-card a {--cm-link-state:#ebeef5;}
.campaign-manager :is(.collapse-link,.campaign-create-npc-card) {--cm-link-state:var(--cm-text);}
.campaign-manager .campaign-manager-nav .nav-link:is(:hover,:focus-visible,:active) {color:var(--cm-text)!important;text-decoration:none!important;}
.campaign-manager-has-cover .campaign-manager-nav .nav-link:is(:hover,:focus-visible,:active) {color:#fff!important;}
.campaign-manager .btn {--cm-button-ink:var(--cm-text);}
.campaign-manager :is(.btn-primary,.btn-info,.btn-success,.btn-create,.btn-danger) {--cm-button-ink:#fff;}
.campaign-manager .btn:is(:hover,:focus-visible) {background:var(--cm-action-hover)!important;color:var(--cm-button-ink)!important;text-decoration:none!important;}
.campaign-manager .btn:active {background:var(--cm-action-pressed)!important;color:var(--cm-button-ink)!important;text-decoration:none!important;}
.campaign-manager .btn:is(:hover,:focus-visible,:active) :is(i,span) {color:inherit!important;}
.campaign-manager table.table :is(.btn-primary,.btn-info) {--cm-action-hover:var(--cm-panel);--cm-action-pressed:var(--cm-bg);--cm-button-ink:var(--cm-text);}

:is(.campaign-manager,.campaign-public) .campaign-session-date .campaign-session-year {margin-top:4px;}
:is(.campaign-manager,.campaign-public) .campaign-session-roster-count {margin:20px 0 8px;}
:is(.campaign-manager,.campaign-public) .campaign-session-roster-count + .campaign-session-portraits {margin-top:0;}

/* Public campaign styling: a generous code field and independent address form. */
.campaign-manager .campaign-styling-heading {margin-bottom:24px;}
.campaign-manager .campaign-styling-heading h2 {margin:0 0 8px;}
.campaign-manager .campaign-styling-heading p {margin:0;color:var(--cm-muted);}
.campaign-manager .campaign-styling-columns {display:grid;grid-template-columns:minmax(0,1.8fr) minmax(280px,1fr);gap:var(--cm-column-gap);align-items:start;}
.campaign-manager .campaign-styling-columns > * {min-width:0;}
.campaign-manager .campaign-styling .ibox > form {margin:0;}
.campaign-manager .campaign-styling .ibox > form > .ibox-content {padding:16px 24px 24px;background:transparent!important;}
.campaign-manager .campaign-styling .ibox > form > .ibox-footer {padding:16px 24px;border-top:1px solid var(--cm-border);background:var(--cm-panel);}
.campaign-manager .campaign-styling-editor-intro {display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.campaign-manager .campaign-styling-editor-intro label {margin:0;}
.campaign-manager .campaign-styling-editor-intro > span {font-size:12px;color:var(--cm-muted);}
.campaign-manager textarea.campaign-css-editor {min-height:440px;font:14px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace;tab-size:4;resize:vertical;white-space:pre-wrap;overflow-wrap:normal;}
.campaign-manager .campaign-styling-footer {display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.campaign-manager .campaign-styling-sidebar .campaign-styling-footer {justify-content:flex-end;}
.campaign-manager .campaign-styling-address {border-top:1px solid var(--cm-border);margin-top:20px;padding-top:16px;}
.campaign-manager .campaign-styling-address > span {display:block;color:var(--cm-muted);font-size:12px;margin-bottom:6px;}
.campaign-manager .campaign-styling-address a {overflow-wrap:anywhere;font-size:13px;}
.campaign-manager .campaign-styling-help {border-top:1px solid var(--cm-border);padding-top:12px;}
.campaign-manager .campaign-styling-help summary {cursor:pointer;font-weight:700;padding:4px 0;}
.campaign-manager .campaign-styling-help ul {padding-left:20px;}
.campaign-manager .campaign-styling-help li {margin-bottom:12px;}
.campaign-manager .campaign-styling-help pre {padding:12px;border:1px solid var(--cm-border);background:transparent;color:inherit;white-space:pre-wrap;overflow-wrap:anywhere;}
.campaign-manager .campaign-styling-help code {color:inherit;}
.campaign-manager .campaign-styling-membership {max-width:720px;margin-inline:auto;}
@media(max-width:991px){.campaign-manager .campaign-styling-columns{grid-template-columns:1fr;gap:24px;}.campaign-manager textarea.campaign-css-editor{min-height:320px;}}
@media(max-width:600px){.campaign-manager .campaign-styling .ibox > form > :is(.ibox-content,.ibox-footer){padding:16px;}}

/* Persistent shell notices: never shift the cover or remain attached to an old tab. */
.campaign-notifications {position:fixed;right:80px;bottom:24px;z-index:1060;width:min(380px,calc(100vw - 112px));max-height:50vh;overflow:auto;display:grid;gap:12px;}
.campaign-notifications:empty {display:none;}
.campaign-notice {display:flex;align-items:flex-start;gap:16px;padding:16px 18px;background:#172732;border:1px solid #41647b;color:#e9eaf0;box-shadow:0 8px 24px #0006;overflow-wrap:anywhere;}
.campaign-notice>div {flex:1;min-width:0;}
.campaign-notice-success {background:#123b23;border-color:#237344;}
.campaign-notice-error,.campaign-notice-danger {background:#400607;border-color:#9f0e11;}
.campaign-notice-warning {background:#3d2d0e;border-color:#986f25;}
.campaign-notice :is(h1,h2,h3,h4) {font-size:16px;line-height:1.3;margin:0 0 6px;color:inherit;}
.campaign-notice p {font-size:14px;line-height:1.5;margin:0;}
.campaign-notice [data-campaign-dismiss] {flex:none;background:transparent;border:0;color:inherit;font-size:24px;line-height:1;padding:0 4px;cursor:pointer;}
.campaign-notice button:focus-visible {outline:2px solid #c9d7e4;outline-offset:3px;}

.campaign-manager .campaign-party-description {overflow-wrap:anywhere;}
.campaign-manager .campaign-party-description > :last-child {margin-bottom:0;}
.campaign-manager .campaign-party-description :is(img,video,iframe) {max-width:100%;}

.campaign-notice p:has(> .btn),.campaign-notice-actions {display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;}
.campaign-notice .btn {border-radius:0;padding:7px 10px;font-size:13px;line-height:1.4;font-weight:600;text-decoration:none;box-shadow:none;background:#ffffff0d;border:1px solid #ffffff40;color:#e9eaf0;white-space:normal;}
.campaign-notice .btn-primary {background:#ffffff1a;border-color:#ffffff66;}
.campaign-notice .btn:hover,.campaign-notice .btn:focus-visible {background:#ffffff26;border-color:#ffffff99;color:#fff!important;text-decoration:none;}
.campaign-notice .btn:focus-visible {outline:2px solid #c9d7e4;outline-offset:3px;}
.campaign-notice .btn:active {background:#0003;color:#fff!important;}
@media(max-width:760px) {.campaign-notifications {right:16px;bottom:16px;width:calc(100vw - 32px);}}

.campaign-quests-layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(280px,1fr);gap:48px;align-items:start;}
.campaign-quests-layout>div,.campaign-quests-layout>aside{min-width:0;}
.campaign-manager #party-quests-wrapper{background:transparent;border:0;}
.campaign-manager #party-quests-wrapper>.ibox-title{margin-bottom:20px;}
.campaign-manager #party-quests-wrapper>.ibox-content{padding:0;}
.campaign-manager .campaign-quest-group-title{font-size:15px;margin:0 0 14px;color:var(--cm-muted);}
.campaign-manager .campaign-quest-group+.campaign-quest-group-title{margin-top:32px;}
.campaign-manager .campaign-quest-card{padding:0;margin-bottom:16px;background:linear-gradient(135deg,#202427,#101214);border:1px solid #000;overflow-wrap:anywhere;color:#e9eaf0;}
.campaign-manager .campaign-quest-card h3{font:normal 25px/1.3 Georgia,serif;margin-right:0;}
.campaign-manager .campaign-quest-card .label{display:inline-block;border-radius:0;background:#ffffff0d;border:1px solid #ffffff26;color:#d5d9df;padding:5px 8px;font-size:12px;}
.campaign-manager .campaign-quest-actions{display:flex;gap:6px;}
.campaign-manager .campaign-quest-actions .btn{padding:6px 9px;font-size:12px;}
.campaign-manager .campaign-quest-card .ml-2{margin-left:0!important;line-height:1.65;margin-top:16px;}
.campaign-manager .campaign-quest-secrets{border-top:1px solid var(--cm-line,#414549);padding-top:14px;margin-top:18px;}
.campaign-manager .campaign-quest-secrets summary{cursor:pointer;margin-bottom:12px;font-weight:600;}
.campaign-manager .campaign-quest-secrets small{font-weight:400;color:var(--cm-muted);margin-left:8px;}
.campaign-manager .campaign-quest-form .form-group{margin-bottom:20px;}
.campaign-manager .campaign-quest-form-footer{border-top:1px solid var(--cm-line,#414549);margin-top:24px;padding-top:16px;}
.campaign-manager .campaign-quest-form-footer p{font-size:13px;color:var(--cm-muted);margin-bottom:16px;}
.campaign-manager .campaign-quest-empty{padding:24px;border:1px dashed var(--cm-line,#414549);color:var(--cm-muted);}
@media(max-width:991px){.campaign-quests-layout{grid-template-columns:1fr;gap:24px;}}

.campaign-manager .campaign-cover-dropzone {padding:0;min-height:180px;cursor:pointer;border:1px dashed #71777d;background:#181b1d;}
.campaign-manager .campaign-cover-dropzone .dz-message {margin:0!important;display:flex;flex-direction:column;align-items:stretch;}
.campaign-manager .campaign-cover-dropzone img {width:100%;max-height:320px;object-fit:cover;border-radius:0;}
.campaign-manager .campaign-cover-dropzone img[hidden] {display:none;}
.campaign-manager .campaign-cover-dropzone span {padding:18px;font-size:14px;}
.campaign-manager .campaign-cover-dropzone:focus-visible {outline:2px solid #c9d7e4;outline-offset:3px;}
.campaign-manager .campaign-cover-actions {display:flex;flex-wrap:wrap;gap:8px;margin:12px 0;}
.campaign-manager [data-cover-status] {font-size:13px;color:var(--cm-muted);text-align:left;}

/* Quest dossier: angled type tab, objective body and a separate action footer. */
.campaign-manager .campaign-quest-tab{display:inline-block;max-width:100%;padding:13px 35px 13px 22px;background:#080909;color:#e9eaf0;clip-path:polygon(0 0,100% 0,calc(100% - 17px) 100%,0 100%);text-transform:uppercase;letter-spacing:.06em;font-size:14px;}
.campaign-manager .campaign-quest-body{padding:26px;}
.campaign-manager .campaign-quest-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:24px;}
.campaign-manager .campaign-quest-identity{min-width:0;flex:1;}
.campaign-manager .campaign-quest-status{flex:0 1 auto;text-align:right;max-width:45%;}
.campaign-manager .campaign-quest-status .quest-state-selector{display:block;margin-top:10px;}
.campaign-manager .campaign-quest-status .label{margin-bottom:4px;}
.campaign-manager .campaign-quest-status .label-default,.campaign-manager .campaign-quest-status .label-success{background:#193b2d;border-color:#3e6953;color:#e0e7e4;}
.campaign-manager .campaign-quest-status .label-danger{background:#3a2023;border-color:#795057;}
.campaign-manager .campaign-quest-status .label-warning{background:#383126;border-color:#76654a;}
.campaign-manager .campaign-quest-section-label{font:normal 11px/1.4 Lato,sans-serif;text-transform:uppercase;letter-spacing:.1em;color:var(--cm-muted);margin:0 0 10px;}
.campaign-manager .campaign-quest-objective{line-height:1.65;}
.campaign-manager .campaign-quest-objective>p:last-child{margin-bottom:0;}
.campaign-manager .campaign-quest-footer{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;padding:14px 26px;border-top:1px solid var(--cm-line,#414549);}
.campaign-manager .campaign-quest-context{font-size:13px;color:var(--cm-muted);}
@media(max-width:600px){.campaign-manager .campaign-quest-heading{flex-direction:column;gap:12px;}.campaign-manager .campaign-quest-status{max-width:100%;text-align:left;}.campaign-manager .campaign-quest-body{padding:20px;}.campaign-manager .campaign-quest-footer{padding:14px 20px;}}

/* Shared card action system: same controls for sessions, parties and quests. */
:is(.campaign-manager,.campaign-public) .campaign-card-footer{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid var(--cm-border,#414549);}
:is(.campaign-manager,.campaign-public) .campaign-card-context{margin-right:auto;color:var(--cm-muted);font-size:13px;}
:is(.campaign-manager,.campaign-public) .campaign-card-actions{display:flex;justify-content:flex-end;align-items:center;flex-wrap:wrap;gap:8px;min-width:0;}
.campaign-manager .campaign-quest-card>.campaign-card-footer{margin-top:0;padding:14px 26px;}
.campaign-manager .campaign-party-members{margin-top:20px;}
@media(max-width:600px){:is(.campaign-manager,.campaign-public) .campaign-card-footer{align-items:flex-start;}:is(.campaign-manager,.campaign-public) .campaign-card-context{flex-basis:100%;}:is(.campaign-manager,.campaign-public) .campaign-card-actions{width:100%;justify-content:flex-start;}.campaign-manager .campaign-quest-card>.campaign-card-footer{padding:14px 20px;}}

:is(.campaign-manager,.campaign-public) .campaign-card-top-actions{margin:0 0 16px;}
:is(.campaign-manager,.campaign-public) .campaign-card-top-actions .campaign-card-actions{justify-content:flex-start;}

/* Session lifecycle controls float alongside the heading, outside the footer. */
:is(.campaign-manager,.campaign-public) .campaign-session-details{container-type:inline-size;}
:is(.campaign-manager,.campaign-public) .campaign-session-summary{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;}
:is(.campaign-manager,.campaign-public) .campaign-session-summary-title{flex:1 1 140px;min-width:0;}
:is(.campaign-manager,.campaign-public) .campaign-session-summary .campaign-card-top-actions{flex:0 0 auto;margin:0 0 0 auto;}
:is(.campaign-manager,.campaign-public) .campaign-session-summary .campaign-card-actions{width:auto;flex-wrap:nowrap;}
@container(max-width:480px){
    :is(.campaign-manager,.campaign-public) .campaign-session-stop span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
    :is(.campaign-manager,.campaign-public) .campaign-card-actions .campaign-session-stop{width:28px;padding:3px;gap:0;}
}

/* Quest identity shares the top edge with its type and status tags. */
.campaign-manager .campaign-quest-card > .campaign-quest-heading{align-items:flex-start;flex-direction:row;flex-wrap:wrap;gap:12px;margin:0;}
.campaign-manager .campaign-quest-card h3.campaign-quest-tab{flex:0 1 auto;max-width:100%;min-width:0;margin:0;padding:13px 35px 13px 22px;font:600 18px/1.35 Lato,Arial,sans-serif;overflow-wrap:anywhere;}
.campaign-manager .campaign-quest-heading > .campaign-quest-status{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;max-width:100%;margin-left:auto;padding:12px 22px 0 0;}
.campaign-manager .campaign-quest-heading .quest-state-selector{flex-basis:100%;}
.campaign-manager .campaign-quest-status .campaign-quest-type{background:#ffffff0d;border-color:#ffffff26;color:#d5d9df;}
@media(max-width:600px){.campaign-manager .campaign-quest-heading > .campaign-quest-status{padding:0 20px 0;margin-bottom:4px;}}

:is(.campaign-manager,.campaign-public) .campaign-session-summary .campaign-card-actions{justify-content:flex-end;}

:is(.campaign-manager,.campaign-public) .campaign-session-summary-title.campaign-session-heading{display:block;}
:is(.campaign-manager,.campaign-public) .campaign-session-summary-title h3{margin-bottom:4px;}
:is(.campaign-manager,.campaign-public) .campaign-session-summary-title .campaign-session-status{margin:0;}

/* Match the standard 35px angled working-panel heading. */
.campaign-manager .campaign-quest-card h3.campaign-quest-tab{display:inline-flex;align-items:center;min-height:35px;padding:8px 30px 8px 12px;margin:-1px 0 0 -1px;background:#0a0a0a;font:700 16px/19px Lato,Arial,sans-serif;letter-spacing:0;clip-path:polygon(0 0,100% 0,calc(100% - 9.38px) 100%,0 100%);}
.campaign-manager .campaign-quest-heading>.campaign-quest-status{padding:4px 12px 0 0;}

/* Fit each bold date line to one measure without changing letter spacing. */
:is(.campaign-manager,.campaign-public) .campaign-session-date .campaign-date-line{display:block;width:30px;margin-inline:auto;font-variant-numeric:tabular-nums;font-weight:700;line-height:1.25;}
:is(.campaign-manager,.campaign-public) .campaign-session-date .campaign-date-line>span{display:inline-block;width:max-content;white-space:nowrap;letter-spacing:normal;font-weight:700;}

.campaign-manager .campaign-sessions-centered{width:100%;max-width:1000px;margin-inline:auto;}
.campaign-manager .campaign-sessions-toolbar{display:flex;justify-content:center;margin-bottom:24px;}
.campaign-manager .campaign-sessions-toolbar .btn{min-height:48px;padding:12px 24px;font-size:16px;line-height:22px;max-width:100%;white-space:normal;text-align:center;}

/* Focused NPC editor: a portrait rail and progressively disclosed form sections. */
.campaign-manager .campaign-npc-focused{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:32px;max-width:1200px;margin-inline:auto;align-items:start;}
.campaign-manager .campaign-npc-focused>.campaign-npc-focused-sidebar,.campaign-manager .campaign-npc-focused>.campaign-npc-focused-main{width:auto;max-width:none;padding:0;min-width:0;}
.campaign-manager .campaign-npc-editor-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px;}
.campaign-manager .campaign-npc-editor-heading h2{margin:0;font-size:21px;}
.campaign-manager .campaign-npc-section{border-bottom:1px solid var(--cm-border);padding:0 0 8px;}
.campaign-manager .campaign-npc-section summary{padding:16px 0;font-size:14px;font-weight:700;cursor:pointer;color:var(--cm-text);}
.campaign-manager .campaign-npc-field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px;}
.campaign-manager .campaign-npc-section .form-group{margin-bottom:20px;min-width:0;}
.campaign-manager .campaign-npc-section label{display:block;text-align:left;margin-bottom:6px;}
.campaign-manager .campaign-npc-section .select2-container{width:100%!important;}
.campaign-manager .campaign-npc-editor-footer{display:flex;justify-content:flex-end;gap:12px;flex-wrap:wrap;padding-top:20px;}
@media(max-width:767px){.campaign-manager .campaign-npc-focused{grid-template-columns:1fr;gap:24px;}.campaign-manager .campaign-npc-field-grid{grid-template-columns:1fr;}.campaign-manager .campaign-npc-focused-sidebar .campaign-npc-sidebar-portrait{max-width:300px;margin-inline:auto;}}

.campaign-manager .campaign-npc-focused-heading{max-width:1200px;margin:0 auto 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.campaign-manager .campaign-npc-focused-heading h2{font:32px/1.2 Georgia,serif;margin:6px 0 0;overflow-wrap:anywhere;}
.campaign-manager .campaign-npc-focused-sidebar>.ibox,.campaign-manager .campaign-npc-focused-sidebar>.ibox>.ibox-content{background:transparent;border:0;box-shadow:none;padding:0;}
.campaign-manager .campaign-npc-focused-sidebar .campaign-npc-sidebar-portrait{margin-top:0!important;}
.campaign-manager .campaign-npc-focused-sidebar [data-cover-preview]{aspect-ratio:3/4;object-fit:cover;width:100%;}
.campaign-manager .campaign-npc-focused-sidebar>.ibox>.ibox-content+.ibox-content{padding-top:16px;}
.campaign-manager .campaign-npc-focused-main>.ibox>.ibox-content{padding:8px 24px 24px;}
.campaign-manager .campaign-npc-section textarea{min-height:96px;}
.campaign-manager .campaign-npc-conversion{margin-top:24px;border-top:1px solid var(--cm-border);}
.campaign-manager .campaign-npc-conversion>summary{padding:16px 0;font-weight:700;cursor:pointer;}
.campaign-manager .campaign-npc-conversion>.ibox-content{padding:16px;}

/* Keep the editor shell independent of Bootstrap row/column pseudo-elements. */
.campaign-manager .campaign-npc-focused-shell{max-width:1200px;margin-inline:auto;}
.campaign-manager .campaign-npc-focused-shell .campaign-npc-focused-heading{width:100%;margin:0 0 24px;}
.campaign-manager .campaign-npc-focused-sidebar>.ibox{background:transparent!important;border:0!important;}
.campaign-manager .campaign-npc-focused-main .campaign-npc-section textarea{height:96px;min-height:96px;}
.campaign-manager .campaign-party-compact{display:block;padding:24px;}
.campaign-manager .campaign-party-compact .campaign-party-identity{display:flex;align-items:center;gap:20px;}
.campaign-manager .campaign-party-compact .campaign-party-crest{width:64px;height:80px;flex:none;object-fit:contain;}
.campaign-manager .campaign-party-compact .campaign-party-identity h3{font-size:26px;}
.campaign-manager .campaign-party-compact .campaign-party-members{margin-top:20px;}
.campaign-manager .campaign-party-compact .campaign-party-roster{gap:16px;}
.campaign-manager .campaign-party-compact .campaign-party-roster a{display:flex;align-items:center;gap:9px;border-radius:0;font-size:12px;color:var(--cm-text);}
.campaign-manager .campaign-party-compact .campaign-party-roster img{width:40px;height:40px;flex:none;}
.campaign-manager .campaign-party-compact .campaign-card-footer{margin-top:24px;}
@media(max-width:600px){.campaign-manager .campaign-party-compact{padding:18px;}.campaign-manager .campaign-party-compact .campaign-party-identity{gap:12px;}.campaign-manager .campaign-party-compact .campaign-party-identity h3{font-size:22px;}}

/* Secondary portrait tools form a quiet, compact sidebar stack. */
.campaign-manager .campaign-npc-sidebar-portrait .campaign-cover-actions{margin-top:8px;}
.campaign-manager .campaign-npc-sidebar-portrait [data-cover-status]:empty{display:none;}
.campaign-manager .campaign-npc-world-actions{padding:16px 0 0;margin-top:16px;border-top:1px solid var(--cm-border);}
.campaign-manager .campaign-npc-world-actions h3{font:700 12px/1.5 Lato,Arial,sans-serif;margin:0 0 10px;color:var(--cm-muted);}
.campaign-manager .campaign-npc-sidebar-actions{display:flex;flex-wrap:wrap;gap:8px;}
.campaign-manager .campaign-npc-focused-sidebar>.ibox{margin-bottom:0;}
.campaign-manager .campaign-npc-conversion{margin-top:16px;}
.campaign-manager .campaign-npc-conversion>summary{font-size:13px;padding:14px 0;}
.campaign-manager .campaign-npc-conversion>summary span{font-size:11px;font-weight:400;color:var(--cm-muted);margin-left:6px;white-space:nowrap;}
.campaign-manager .campaign-npc-conversion>.ibox-content{padding:0 0 16px;}
.campaign-manager .campaign-npc-transfer-notes{padding-left:18px;color:var(--cm-muted);font-size:12px;line-height:1.6;margin-bottom:16px;}
.campaign-manager .campaign-npc-conversion label{font-size:12px;}

/* The same session component owns its palette and media constraints on either surface. */
.campaign-session-agenda{--cm-primary:#1e6d9e;--cm-primary-hover:#2483bd;--cm-primary-pressed:#185880;font-family:Lato,Arial,sans-serif;}
.campaign-session-agenda .campaign-session-clock{margin-top:8px;font-size:12px;font-weight:400;}
.campaign-session-agenda .campaign-session-media{margin-top:16px;}
.campaign-session-agenda .campaign-session-media iframe{max-width:100%;}
.campaign-public .campaign-session-agenda h3{font-family:Lato,Arial,sans-serif;font-weight:700;text-transform:none;}

/* Extended profiles share the basic editor's focused section shell. */
.campaign-manager .campaign-npc-extended-portrait{display:block;width:100%;aspect-ratio:3/4;object-fit:cover;}
.campaign-manager .campaign-npc-advice{margin-top:20px;padding:20px;font-size:13px;line-height:1.6;}
.campaign-manager .campaign-npc-advice h3{font-size:14px;margin:0 0 12px;}
.campaign-manager .campaign-npc-advice p:last-child{margin-bottom:0;}
.campaign-manager .campaign-npc-extended-fields{padding-top:12px;}
.campaign-manager .campaign-npc-extended-fields .form-group.row{display:block;margin-left:0;margin-right:0;}
.campaign-manager .campaign-npc-extended-fields .form-group.row>label,.campaign-manager .campaign-npc-extended-fields .form-group.row>div{width:100%;max-width:100%;padding-left:0;padding-right:0;}
.campaign-manager .campaign-npc-extended-fields .col-form-label{padding-top:0;}
@media(max-width:767px){.campaign-manager .campaign-npc-extended-portrait{max-width:300px;margin-inline:auto;}}
