/* DM desk: one session to prepare and one decision at a time. */
.content-area:has(> #settingsView:not(.hidden)) { padding-bottom: var(--weave-space-4); }
.desk-shell { margin-bottom: var(--weave-space-5); min-width: 0; }
.desk-shell[hidden] { display: none; }
.desk-header { display: flex; align-items: center; justify-content: space-between; gap: var(--weave-space-4); margin-bottom: var(--weave-space-4); }
.desk-header h2 { margin: 0; font: var(--weave-weight-semibold) var(--weave-text-2xl) / var(--weave-leading-snug) var(--weave-font-display); }
.desk-tabs { display: flex; gap: var(--weave-space-5); overflow-x: auto; border-bottom: 1px solid var(--weave-color-rule); }
.desk-tabs a { flex: none; display: flex; align-items: center; gap: var(--weave-space-2); min-height: 44px; color: var(--weave-color-secondary); border-bottom: 2px solid transparent; text-decoration: none; }
.desk-tabs a[aria-current] { color: var(--weave-color-action); border-color: var(--weave-color-action); }
.desk-tab-count { padding: 0 var(--weave-space-2); background: var(--weave-color-selected); border-radius: var(--weave-radius-full); font-size: var(--weave-text-xs); }
.desk-body { margin: 0; }
.desk-columns { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(340px, 1fr); gap: var(--weave-space-6); align-items: start; }
.desk-overview, .desk-preparation { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--weave-space-4); min-width: 0; }
.desk-section { min-width: 0; }
.desk-section-head { display: flex; justify-content: space-between; align-items: baseline; gap: var(--weave-space-3); margin-bottom: var(--weave-space-3); }
.desk-section-head h3, .desk-needs h3 { margin: 0; font: var(--weave-weight-semibold) var(--weave-text-xl) / var(--weave-leading-snug) var(--weave-font-display); }
.desk-section-head > a { flex: none; font-size: var(--weave-text-sm); }
.desk-link { border: 0; padding: var(--weave-space-1) 0; background: none; color: var(--weave-color-action); font: inherit; font-size: var(--weave-text-sm); text-decoration: underline; cursor: pointer; }
.desk-link:focus-visible, .desk-tabs a:focus-visible { outline: 2px solid var(--weave-color-action); outline-offset: 2px; }
.desk-rubric, #deskBeforeNext h3, #deskThreads h3 { margin: 0; color: var(--weave-color-action); font: var(--weave-weight-semibold) var(--weave-text-md) / var(--weave-leading-ui) var(--weave-font-display); }
.desk-progress, .desk-needs { padding: var(--weave-space-5); border: 1px solid var(--weave-color-rule); border-radius: var(--weave-radius-md); background: var(--weave-color-paper); min-width: 0; }
.desk-steps { display: flex; list-style: none; padding: 0; margin: var(--weave-space-4) 0; }
.desk-step { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: var(--weave-space-2); position: relative; font-size: var(--weave-text-sm); }
.desk-step::before { content: ""; position: absolute; top: var(--weave-space-4); left: var(--weave-space-6); right: var(--weave-space-2); border-top: 2px solid var(--weave-color-rule); }
.desk-step:last-child::before { display: none; }
.desk-step-mark { display: grid; place-items: center; width: var(--weave-space-6); height: var(--weave-space-6); border: 1px solid var(--weave-color-rule-strong); border-radius: var(--weave-radius-full); }
.desk-step-done { color: var(--weave-color-success); }
.desk-step-done .desk-step-mark { background: var(--weave-color-success-surface); border-color: var(--weave-color-success); }
.desk-step-current { color: var(--weave-color-action); }
.desk-step-current .desk-step-mark { background: var(--weave-color-selected); border-color: var(--weave-color-action); }
.desk-step-optional, .desk-step-locked, .desk-step-note { color: var(--weave-color-secondary); }
.desk-step-note { font-size: var(--weave-text-xs); padding-right: var(--weave-space-2); }
.desk-anytime { display: flex; align-items: center; gap: var(--weave-space-3); border: 1px dashed var(--weave-color-rule-strong); padding: var(--weave-space-3); margin-top: var(--weave-space-3); font-size: var(--weave-text-sm); }
.desk-anytime > span:nth-child(2) { flex: 1; }
.desk-prep-checkpoint { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; margin: 0; font: var(--weave-text-lg) / var(--weave-leading-ui) var(--weave-font-reading); }
.desk-threads { list-style: none; margin: 0; padding: 0; }
.desk-threads li { padding: var(--weave-space-1) 0; border-bottom: 1px solid var(--weave-color-rule); }
.desk-threads a { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--weave-color-ink); font-size: var(--weave-text-sm); }
.desk-segments { display: flex; margin: var(--weave-space-4) 0; border: 1px solid var(--weave-color-rule-strong); border-radius: var(--weave-radius-md); }
.desk-segment { flex: 1; min-height: 44px; background: none; border: 0; color: var(--weave-color-secondary); font: inherit; cursor: pointer; }
.desk-segment[aria-selected="true"] { background: var(--weave-color-selected); color: var(--weave-color-action); font-weight: var(--weave-weight-semibold); }
.desk-needs blockquote { display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.desk-question h4 { font: var(--weave-weight-semibold) var(--weave-text-xl) / var(--weave-leading-snug) var(--weave-font-display); margin: 0 0 var(--weave-space-3); }
.desk-question blockquote, .desk-name-quote blockquote { background: var(--weave-color-hover); padding: var(--weave-space-3); margin: var(--weave-space-3) 0; font: italic var(--weave-text-lg) / var(--weave-leading-ui) var(--weave-font-reading); }
.desk-question blockquote footer, .desk-name-quote blockquote footer { font: var(--weave-text-xs) / var(--weave-leading-ui) var(--weave-font-ui); }
.desk-needs .memory-review-actions { display: grid; gap: var(--weave-space-2); }
.desk-needs .memory-review-actions > button { text-align: left; }
.desk-last-answer { display: flex; align-items: center; justify-content: space-between; gap: var(--weave-space-3); }
.desk-last-answer { color: var(--weave-color-success); border-top: 1px solid var(--weave-color-rule); padding-top: var(--weave-space-3); font-size: var(--weave-text-sm); }
.desk-last-answer > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.desk-edit-error { color: var(--weave-color-danger); }
.desk-edit-error:empty { display: none; }
.desk-empty, .desk-clear { color: var(--weave-color-secondary); }
.session-header-edit { display: flex; flex-wrap: wrap; gap: var(--weave-space-3); margin-top: var(--weave-space-3); font-size: var(--weave-text-sm); }
.session-header-edit form { display: flex; flex-wrap: wrap; gap: var(--weave-space-2); }
@media (max-width: 760px) {
  .desk-section-head { flex-wrap: wrap; }
  .desk-tabs { gap: var(--weave-space-3); }
  .desk-columns { grid-template-columns: minmax(0, 1fr); }
  .desk-needs { grid-row: 1; }
  .desk-progress, .desk-needs { padding: var(--weave-space-4); }
  .desk-step { font-size: var(--weave-text-2xs); }
  .desk-step strong { font: inherit; font-weight: var(--weave-weight-semibold); }
  .desk-anytime { flex-wrap: wrap; }
}

.side-panel { position: fixed; inset: 0 0 0 auto; margin: 0; width: 440px; max-width: 100%; height: 100dvh; max-height: 100dvh; box-sizing: border-box; padding: var(--weave-space-5); border: 0; border-left: 1px solid var(--weave-color-rule); border-radius: 0; color: var(--weave-color-ink); background: var(--weave-color-paper); overflow-y: auto; overflow-wrap: anywhere; font: var(--weave-text-sm) / var(--weave-leading-ui) var(--weave-font-ui); }
.side-panel[open] { display: flex; flex-direction: column; gap: 0; }
.side-panel::backdrop { background: var(--weave-color-scrim); }
body:has(.side-panel[open]) { overflow: hidden; }
.character-panel-header { display: flex; align-items: start; gap: var(--weave-space-3); }
.character-panel-header > div { flex: 1; min-width: 0; }
.character-panel-header .desk-party-face { flex-shrink: 0; }
.character-panel h2 { margin: 0; font: var(--weave-weight-semibold) var(--weave-text-2xl) / var(--weave-leading-snug) var(--weave-font-display); }
.character-panel h3 { font-size: var(--weave-text-lg); }
.character-panel .meta { color: var(--weave-color-secondary); }
.character-panel-close { flex-shrink: 0; display: grid; place-items: center; width: 44px; height: 44px; border: 0; background: none; color: inherit; font: var(--weave-text-2xl) / var(--weave-leading-snug) var(--weave-font-ui); cursor: pointer; }
.character-panel-tabs { display: flex; gap: var(--weave-space-3); margin-top: var(--weave-space-5); border-bottom: 1px solid var(--weave-color-rule); }
.character-panel-tabs button { flex: 1; min-width: 0; white-space: nowrap; padding: var(--weave-space-2) 0; min-height: 44px; border: 0; border-bottom: 2px solid transparent; border-radius: 0; background: none; color: var(--weave-color-secondary); font: inherit; cursor: pointer; }
.character-panel-tabs [aria-selected="true"] { border-bottom-color: var(--weave-color-action); color: var(--weave-color-action); }
.character-panel-content { flex-shrink: 0; min-height: 240px; padding: var(--weave-space-4) 0; }
.character-panel-facts { display: grid; gap: var(--weave-space-2) var(--weave-space-3); grid-template-columns: auto minmax(0, 1fr); }
.character-panel-facts dt { color: var(--weave-color-secondary); }
.character-panel-facts dd { margin: 0; }
.character-panel-sessions { padding-left: var(--weave-space-4); }
.character-panel-sessions li { margin-bottom: var(--weave-space-3); }
.character-panel-actions { margin-top: auto; display: flex; flex-wrap: wrap; gap: var(--weave-space-2); padding-top: var(--weave-space-4); border-top: 1px solid var(--weave-color-rule); }
.character-switch-form, .character-switch-form label { display: grid; gap: var(--weave-space-2); }
.character-switch-form { gap: var(--weave-space-3); margin-bottom: var(--weave-space-4); }
.character-switch-form :is(input, select, textarea) { width: 100%; min-width: 0; box-sizing: border-box; }
.side-panel :is(button, a):focus-visible { outline: 2px solid var(--weave-color-action); outline-offset: 2px; }
@media (max-width: 760px) {
  .side-panel { inset: 0; width: 100%; border: 0; }
}

@media (min-width: 761px) {
  .desk-needs { max-height: calc(100dvh - 250px); overflow-y: auto; box-sizing: border-box; }
}

.character-panel-header .desk-party-face { display: grid; place-items: center; width: var(--weave-space-7); height: var(--weave-space-7); background: var(--weave-color-hover); border-radius: var(--weave-radius-full); overflow: hidden; }
.character-panel-header .desk-party-face img { width: 100%; height: 100%; object-fit: cover; }

/* World: the list and the page share one calm reading surface. */
/* DM forms belong to the reader page; actions follow its existing prose. */
.dm-inline-action { padding: 4px 0; border: 0; background: none; color: var(--weave-color-action); font: inherit; font-size: var(--weave-text-sm); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.dm-inline-action:disabled { opacity: .55; cursor: wait; }
.world-dm-naming, .world-dm-aliases, .world-dm-actions, .world-dm-name, .world-dm-spelling { display: flex; align-items: center; flex-wrap: wrap; gap: var(--weave-space-3); }
.world-dm-naming { margin: var(--weave-space-2) 0 var(--weave-space-4); }
.world-dm-aliases, .world-dm-meta { color: var(--weave-color-secondary); font-size: var(--weave-text-sm); }
.world-dm-alias { display: inline-flex; align-items: center; gap: var(--weave-space-1); padding: 0 var(--weave-space-2); background: var(--weave-color-hover); border-radius: var(--weave-radius-sm); }
.world-dm-controls { margin-top: var(--weave-space-5); }
.world-dm-actions, .thread-dm-actions { border-top: 1px solid var(--weave-color-rule); padding-top: var(--weave-space-3); }
.world-dm-name, .world-dm-spelling, .world-dm-actions form { flex-basis: 100%; }
.world-dm-controls input, .world-dm-naming input, .world-dm-controls select { max-width: 100%; min-width: 0; }
.world-article h2 .dm-inline-action { margin-left: var(--weave-space-3); vertical-align: middle; }
.thread-dm-detail { display: grid; gap: var(--weave-space-3); max-width: 760px; margin: var(--weave-space-4) 0; min-width: 0; }
.thread-dm-detail label { display: grid; gap: var(--weave-space-2); font-size: var(--weave-text-sm); color: var(--weave-color-secondary); }
.thread-dm-detail input, .thread-dm-detail textarea, .thread-dm-detail select { width: 100%; min-width: 0; box-sizing: border-box; }
.thread-dm-detail > button { justify-self: start; }
.thread-dm-meta, .thread-dm-actions { display: flex; gap: var(--weave-space-3); align-items: center; flex-wrap: wrap; font-size: var(--weave-text-sm); }
.thread-dm-meta, .thread-dm-history { color: var(--weave-color-secondary); }
.thread-dm-heading { font-size: var(--weave-text-md); }
.thread-dm-history { max-height: 240px; overflow-y: auto; }
.thread-dm-history > div { display: flex; gap: var(--weave-space-3); padding: var(--weave-space-2) 0; border-bottom: 1px solid var(--weave-color-rule); }
.thread-dm-feedback:empty, .thread-dm-merge[hidden] { display: none; }
/* Sessions use the same five saved steps as Overview. */
.desk-editorial-review .desk-link { margin-inline-end: 8px; }

.desk-decisions { max-width: 900px; display: grid; gap: var(--weave-space-5); }
.desk-decisions > .meta { margin: 0; }
.desk-decisions h3 { font: var(--weave-weight-semibold) var(--weave-text-xl) / var(--weave-leading-snug) var(--weave-font-display); margin: 0 0 var(--weave-space-3); }
.desk-character-row { display: flex; align-items: start; gap: var(--weave-space-4); padding: var(--weave-space-3) 0; border-bottom: 1px solid var(--weave-color-rule); }
.desk-character-context { flex: 1; min-width: 0; }
.desk-character-controls { display: flex; align-items: center; flex-wrap: wrap; gap: var(--weave-space-3); }
.desk-character-context input { font: var(--weave-text-md) / var(--weave-leading-ui) var(--weave-font-ui); max-width: 100%; padding: var(--weave-space-2); border: 1px solid var(--weave-color-rule-strong); background: var(--weave-color-paper); color: var(--weave-color-ink); }
.desk-character-context p { margin: var(--weave-space-1) 0; }
.desk-decisions .desk-question { padding: var(--weave-space-4) 0; border-bottom: 1px solid var(--weave-color-rule); }
.desk-decisions .desk-question h4 { font: var(--weave-weight-medium) var(--weave-text-lg) / var(--weave-leading-snug) var(--weave-font-display); margin: var(--weave-space-2) 0; }
.desk-handled summary, .desk-name-quote summary { padding: var(--weave-space-2) 0; cursor: pointer; list-style-position: inside; background: none; border: 0; }
.desk-handled div.desk-handled-row { display: flex; align-items: center; gap: var(--weave-space-3); padding: var(--weave-space-2) 0; border: 0; border-bottom: 1px solid var(--weave-color-rule); border-radius: 0; background: none; }

.desk-decisions .memory-review-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--weave-space-2); }
