/* Enhanced Atlas and Relationship Explorer surfaces. */
.atlas-map-column { position: relative; }
.atlas-map-tools { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem; padding: .65rem .15rem 0; color: var(--ink-soft); }.atlas-map-tools .outline-button { padding: .35rem .5rem; font-size: .62rem; }.map-tool-note { font-size: .64rem; }.key-denizen { background: #62b8a8; }
.relationship-toolbox { display: grid; gap: .7rem; padding: .85rem 0 .8rem; border-bottom: 1px solid rgba(255,255,255,.14); }
.relationship-mode-group, .relationship-filter-group, .relationship-graph-actions { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; }.relationship-mode-group .tiny-label, .relationship-filter-group .tiny-label { width: 100%; color: #a6c2ba; }
.relationship-board .filter-chip { color: #d5e2d7; background: rgba(255,255,255,.07); border-color: rgba(255,255,255,.17); }.relationship-board .filter-chip.active { color: #183343; background: #f4d184; border-color: #f4d184; }.relationship-graph-actions { justify-content: flex-end; }.relationship-graph-actions .icon-button { width: 1.8rem; height: 1.8rem; color: #f4e3b9; background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.2); }
.relationship-graph-stage { position: relative; min-height: 540px; margin-top: .85rem; overflow: hidden; background: radial-gradient(circle at 50% 0, rgba(232,173,89,.18), transparent 42%), #173844; border: 1px solid rgba(255,255,255,.14); border-radius: .6rem; }.relationship-graph-stage::before { content: ''; position: absolute; inset: 0; pointer-events: none; opacity: .2; background-image: radial-gradient(rgba(255,245,197,.35) 1px, transparent 1px); background-size: 22px 22px; }.relationship-graph-stage #relationship-graph { display: block; position: absolute; inset: 0; z-index: 2; width: 100%; height: 100%; min-height: 540px; }.relationship-graph-fallback { position: relative; z-index: 1; min-height: 540px; margin: 0; overflow: auto; background: transparent; }.relationship-graph-caption { display: flex; justify-content: space-between; gap: .8rem; padding: .6rem .1rem 0; color: #b8cec8; font-size: .62rem; }
.relationship-linear-list { display: grid; gap: .4rem; margin-top: .85rem; padding: .75rem; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.13); border-radius: .55rem; }.relationship-linear-list h3 { margin: .2rem 0 0; color: #f4e3b9; }.relationship-linear-row { display: grid; grid-template-columns: auto minmax(0,1fr) auto; gap: .55rem; align-items: center; min-width: 0; padding: .5rem; color: #f8e8ba; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12); border-radius: .4rem; text-align: left; }.relationship-linear-row:hover, .relationship-linear-row:focus-visible { background: rgba(46,200,173,.16); border-color: rgba(143,213,199,.7); outline: none; }.relationship-linear-row strong, .relationship-linear-row small { display: block; overflow-wrap: anywhere; }.relationship-linear-row strong { font-size: .66rem; }.relationship-linear-row small { margin-top: .15rem; color: #b8cec8; font-size: .57rem; }.relationship-linear-avatars { display: flex; align-items: center; gap: .25rem; color: #9ed6c8; }.relationship-linear-avatars i { display: grid; place-items: center; width: 1.55rem; height: 1.55rem; color: #173844; background: #d8aa59; border-radius: 50%; font-style: normal; font-size: .62rem; }.relationship-linear-avatars i:last-child { background: #62b8a8; }.relationship-linear-avatars b { font-size: .7rem; }
.relationship-inspector { padding: 1.15rem; background: linear-gradient(135deg, rgba(46,200,173,.1), rgba(232,173,89,.1)); border-color: rgba(46,200,173,.26); }.relationship-inspector h2 { margin: .2rem 0 .35rem; }.relationship-inspector p { color: var(--ink-soft); font-size: .75rem; line-height: 1.5; }.inspector-actions { display: flex; flex-wrap: wrap; gap: .45rem; align-items: center; margin-top: .8rem; }.inspector-actions .outline-button { padding: .45rem .55rem; font-size: .62rem; }.inspector-actions .text-button { padding: 0; font-size: .64rem; }
.relationship-node.faction { border-color: rgba(190,164,235,.6); }.relationship-node.guild { border-color: rgba(255,210,145,.62); }.relationship-node.faction .relation-portrait { border-radius: .35rem; transform: rotate(45deg); }.relationship-node.guild .relation-portrait { border-radius: .35rem; }
@media (max-width: 760px) { .relationship-graph-stage, .relationship-graph-stage #relationship-graph, .relationship-graph-fallback { min-height: 450px; }.relationship-graph-caption { display: grid; gap: .25rem; }.relationship-linear-row { grid-template-columns: 1fr auto; }.relationship-linear-avatars { display: none; } }

/* Each structural lens has its own visual grammar: branching house, charter ladder, or faction standing. */
.relationship-template-banner { display: flex; justify-content: space-between; gap: 1rem; align-items: center; margin: .85rem 0 .1rem; padding: .8rem .9rem; border: 1px solid rgba(255,255,255,.16); border-radius: .55rem; background: rgba(8,25,34,.28); }.relationship-template-title { display: flex; gap: .75rem; align-items: center; min-width: 0; }.relationship-template-title img { width: 3.6rem; height: 3.6rem; flex: 0 0 auto; border-radius: .65rem; box-shadow: 0 0 0 1px rgba(255,245,197,.18); }.relationship-template-banner h3 { margin: .16rem 0 .22rem; color: #f7e5b7; font: 700 1.03rem Georgia, serif; }.relationship-template-banner p { max-width: 44rem; color: #bdd2cd; font-size: .7rem; line-height: 1.45; }.relationship-template-grammar { display: grid; grid-template-columns: repeat(3, minmax(5.6rem, 1fr)); gap: .35rem; min-width: 16rem; }.relationship-template-grammar span { display: grid; gap: .25rem; align-items: center; padding: .42rem; color: #d9e8df; background: rgba(255,255,255,.06); border-radius: .35rem; font: 700 .55rem ui-sans-serif, system-ui, sans-serif; }.relationship-template-grammar i { display: grid; place-items: center; width: 1.15rem; height: 1.15rem; color: #183343; background: #f4d184; border-radius: 50%; font-style: normal; font-size: .56rem; }.relationship-stage-family { background: radial-gradient(circle at 50% 0, rgba(190,151,232,.23), transparent 38%), #27394a; }.relationship-stage-guild { background: linear-gradient(180deg, rgba(185,130,67,.21), transparent 34%), #1d3b44; }.relationship-stage-faction { background: radial-gradient(circle at 50% 0, rgba(80,172,157,.25), transparent 42%), #173844; }.relationship-template-family .relationship-template-banner { border-color: rgba(190,151,232,.42); }.relationship-template-guild .relationship-template-banner { border-color: rgba(255,211,145,.4); }.relationship-template-faction .relationship-template-banner { border-color: rgba(143,213,199,.4); }.relationship-plate-label { display: flex; justify-content: space-between; gap: .75rem; align-items: baseline; max-width: 42rem; margin: 0 auto 1rem; padding-bottom: .45rem; border-bottom: 1px solid rgba(255,255,255,.16); }.relationship-plate-label strong { color: #f4e3b9; font: 700 .76rem Georgia, serif; }.relationship-fallback-family .relationship-branches { grid-template-columns: repeat(2, minmax(0, 1fr)); }.relationship-fallback-family .relationship-root-node::after { content: 'House / bloodline'; display: block; position: absolute; margin: 3.7rem 0 0; color: #c8b6e1; font: 700 .56rem ui-sans-serif, system-ui, sans-serif; letter-spacing: .08em; text-transform: uppercase; }.relationship-fallback-guild .relationship-branches { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 1.4rem; }.relationship-fallback-guild .relationship-root-node { padding-bottom: .5rem; border-bottom: 2px solid rgba(255,211,145,.5); }.relationship-fallback-guild .relationship-branch { padding-top: 1.6rem; }.relationship-fallback-guild .relation-connector { height: 1.55rem; background: rgba(255,211,145,.7); }.relationship-fallback-guild .relationship-branch-copy { background: rgba(185,130,67,.12); border-radius: .35rem; }.relationship-fallback-faction .relationship-branches { grid-template-columns: 1fr; max-width: 40rem; margin: 1.25rem auto 0; }.relationship-fallback-faction .relationship-branch { grid-template-columns: 11rem minmax(0,1fr); align-items: center; padding: .45rem 0 .45rem 1.7rem; border-left: 2px solid rgba(143,213,199,.48); }.relationship-fallback-faction .relation-connector { top: 50%; left: 0; width: 1.5rem; height: 1px; }.relationship-fallback-faction .relation-connector::before { display: none; }.relationship-fallback-faction .relationship-branch-copy { text-align: right; }.relationship-fallback-faction .relationship-node { background: rgba(79,164,153,.13); }.relationship-template-guild .relationship-node.guild .relation-portrait { border-radius: .3rem; }.relationship-template-faction .relationship-node.faction .relation-portrait { border-radius: .3rem; transform: rotate(45deg); }.relationship-template-family .relationship-node.npc .relation-portrait { box-shadow: 0 0 0 3px rgba(190,151,232,.12); }.relationship-template-guild .relationship-node.pc .relation-portrait { box-shadow: 0 0 0 3px rgba(255,211,145,.14); }.relationship-template-faction .relationship-node.npc .relation-portrait { box-shadow: 0 0 0 3px rgba(143,213,199,.14); }
@media (max-width: 760px) { .relationship-template-banner { display: grid; }.relationship-template-grammar { min-width: 0; }.relationship-fallback-faction .relationship-branch { grid-template-columns: 1fr; padding-left: 1rem; }.relationship-fallback-faction .relationship-branch-copy { text-align: left; } }

/* Search is a transit surface: show enough identity to choose a destination, then hand off to the owning page. */
.search-result-card { align-items: center; }.search-result-main { display: flex; gap: .75rem; align-items: flex-start; min-width: 0; }.search-result-main > div { min-width: 0; }.search-result-avatar { display: grid; place-items: center; flex: 0 0 auto; width: 2.65rem; height: 2.65rem; margin-top: .1rem; color: #173844; background: #d8aa59; border: 2px solid rgba(255,245,197,.78); border-radius: 50%; font: 800 1rem Georgia, serif; }.search-result-avatar.teal { background: #3faaa0; }.search-result-avatar.violet { background: #9b7fac; }.search-result-avatar.rose { background: #d17b70; }.search-empty { min-height: 11rem; display: grid; place-items: center; align-content: center; gap: .35rem; text-align: center; }.search-empty p { max-width: 38rem; }.search-result-card h3 { overflow-wrap: anywhere; }

/* Sitewide design pass: an authored instrument, not a dashboard skin. */
:root {
  --shadow-soft: 0 10px 28px rgba(19, 36, 58, .09);
  --surface-glow: rgba(255, 255, 255, .52);
}

body {
  background:
    radial-gradient(circle at 87% 4%, rgba(80, 167, 160, .16), transparent 28rem),
    radial-gradient(circle at 7% 88%, rgba(163, 106, 91, .12), transparent 26rem),
    var(--night);
}

.content-wrap { min-height: 100vh; }
.topbar {
  position: sticky;
  top: 0;
  z-index: 8;
  box-shadow: 0 8px 22px rgba(19, 36, 58, .06);
}

.profile-device {
  background:
    linear-gradient(145deg, rgba(19, 36, 58, .08), rgba(46, 200, 173, .07)),
    linear-gradient(180deg, rgba(255, 255, 255, .42), rgba(251, 245, 232, .68));
}

.character-banner {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}
.character-page.side-alliance .character-banner {
  background-image:
    linear-gradient(90deg, rgba(10, 30, 45, .98) 0%, rgba(13, 54, 66, .9) 52%, rgba(13, 54, 66, .62) 100%),
    url('./assets/reveal/alliance-horizon.webp');
  background-position: center, 68% center;
  background-size: cover;
}
.character-page.side-horde .character-banner {
  background-image:
    linear-gradient(90deg, rgba(22, 22, 35, .98) 0%, rgba(61, 31, 43, .9) 52%, rgba(61, 31, 43, .62) 100%),
    url('./assets/reveal/horde-horizon.webp');
  background-position: center, 68% center;
  background-size: cover;
}
.hero-alliance {
  background-image:
    linear-gradient(116deg, rgba(12, 31, 48, .98), rgba(21, 65, 74, .8) 57%, rgba(37, 84, 86, .45)),
    url('./assets/reveal/alliance-horizon.webp');
  background-position: center, 74% center;
  background-size: cover;
}
.hero-alliance .moon { opacity: .58; }
.campfire-head {
  background-image:
    linear-gradient(110deg, rgba(26, 38, 37, .9), rgba(75, 55, 41, .42)),
    url('./assets/reveal/campfire-forest.webp');
  background-position: center, 46% center;
  background-size: cover;
}
.campfire-head h2, .campfire-head p { color: #f8f1dd; text-shadow: 0 1px 12px rgba(0, 0, 0, .45); }
.campfire-head p { color: #e5e6d5; }
.character-banner::after {
  content: '';
  position: absolute;
  z-index: -1;
  right: -5rem;
  bottom: -8rem;
  width: 22rem;
  height: 22rem;
  border: 1px solid rgba(242, 199, 121, .2);
  border-radius: 50%;
  box-shadow: 0 0 0 2rem rgba(242, 199, 121, .04), 0 0 0 4rem rgba(242, 199, 121, .025);
}

.compact-ties {
  background: linear-gradient(145deg, rgba(255, 255, 255, .74), rgba(232, 214, 182, .24));
  box-shadow: var(--shadow-soft);
}
.compact-ties .ledger-tag {
  color: var(--teal-deep);
  background: rgba(46, 200, 173, .1);
  border: 1px solid rgba(46, 200, 173, .18);
}
.related-mini-list button {
  background: rgba(255, 255, 255, .7);
  box-shadow: 0 2px 8px rgba(19, 36, 58, .035);
}

.relationship-graph-stage #relationship-graph,
.relationship-graph-stage #relationship-graph canvas { cursor: default !important; }

@media (max-width: 760px) {
  .topbar { position: sticky; }
  .character-banner::after { right: -10rem; bottom: -10rem; }
}

/* Living asset kit and durable workflow states */
.brand-mark img { display: block; width: 2.15rem; height: 2.15rem; }
.work-banner-mark img { display: block; width: 4.2rem; height: 4.2rem; }
.empty-fire-mark img { display: block; width: 5.2rem; height: 5.2rem; opacity: .9; }
.drawer-title-mark { display: flex; align-items: flex-start; gap: .7rem; }
.drawer-title-mark img { width: 2.7rem; height: 2.7rem; flex: 0 0 auto; }
.atlas-header-tools { align-items: center; }
.world-map-button { display: grid; place-items: center; padding: .25rem; overflow: hidden; }
.world-map-button img { width: 1.9rem; height: 1.9rem; border-radius: 50%; }
.theme-swatches { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: .45rem; margin: -.25rem 0 .85rem; }
.theme-swatch { display: grid; place-items: center; min-height: 2.25rem; padding: .35rem; color: #f6e5bd; border: 1px solid rgba(232,173,89,.35); border-radius: .45rem; font: 700 .62rem ui-sans-serif,system-ui,sans-serif; }
.theme-swatch.guild-device { background: linear-gradient(145deg,#183e50,#3c796f); }
.theme-swatch.field-journal { color: #45362d; background: linear-gradient(145deg,#dcc493,#a88362); }
.theme-swatch.war-room { background: linear-gradient(145deg,#482f38,#8e4e47); }
.theme-swatch.moonlit-archive { background: linear-gradient(145deg,#1d2b52,#536f9a); }
.page-revisions { margin-top: 1rem; padding: .75rem; background: rgba(232,214,182,.2); border: 1px solid var(--line); border-radius: .55rem; }
.page-revision-row { display: flex; justify-content: space-between; align-items: center; gap: .75rem; padding: .55rem 0; border-top: 1px solid rgba(125,102,65,.16); }
.page-revision-row:first-of-type { border-top: 0; }
.page-revision-row strong, .page-revision-row small { display: block; }
.page-revision-row strong { color: var(--ink); font-size: .7rem; text-transform: capitalize; }
.page-revision-row small { margin-top: .15rem; color: var(--ink-soft); font-size: .6rem; }
.module-order { margin-top: 1rem; padding: .8rem; background: rgba(232,214,182,.2); border: 1px solid var(--line); border-radius: .55rem; }
.module-order-row { display: flex; justify-content: space-between; align-items: center; gap: .7rem; padding: .55rem 0; border-bottom: 1px solid var(--line); }
.module-order-row:last-child { border-bottom: 0; }
.module-order-row > span:first-child { display: flex; align-items: center; gap: .6rem; font-size: .76rem; }
.module-order-row b { color: var(--gold-deep); font: 700 .65rem ui-sans-serif, system-ui, sans-serif; }
.module-order-actions { display: flex; align-items: center; gap: .35rem; }
.module-order-actions select { min-width: 4.5rem; padding: .25rem .35rem; color: var(--ink); background: rgba(255,255,255,.7); border: 1px solid var(--line); border-radius: .3rem; font-size: .64rem; }
.module-order-row .text-button { padding: .1rem .3rem; }
.module-order-row .text-button:disabled { opacity: .3; cursor: default; }
.draft-banner { margin: 0 0 1rem; padding: .7rem .8rem; color: var(--teal-deep); background: rgba(46,200,173,.09); border: 1px solid rgba(46,200,173,.22); border-radius: .45rem; font-size: .72rem; }
.page-columns { display: grid; grid-template-columns: minmax(0,1fr) minmax(12rem,.64fr); gap: 1.15rem; align-items: start; }
.page-column-main, .page-column-side { display: grid; gap: 1.15rem; min-width: 0; }
@media (max-width: 760px) { .page-columns { grid-template-columns: 1fr; } }
.thread-reply-note { margin: .55rem 0 0; padding: .6rem .7rem; color: var(--teal-deep); background: rgba(46,200,173,.08); border: 1px solid rgba(46,200,173,.2); border-radius: .45rem; font-size: .7rem; }
.reply-context { margin: .45rem 0 .6rem; padding: .45rem .6rem; color: var(--ink-soft); background: rgba(46,200,173,.06); border-left: 2px solid var(--teal); border-radius: .25rem; font-size: .68rem; }
.reply-context span, .reply-context small { display: block; }
.reply-context span { color: var(--teal-deep); font-weight: 700; }
.reply-context small { margin-top: .2rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.draft-preview { margin-top: 1rem; padding: .9rem 1rem; color: var(--ink); background: rgba(232,214,182,.2); border: 1px solid var(--line); border-radius: .55rem; }
.draft-preview p { margin: .5rem 0 0; white-space: pre-wrap; }
.guild-member-actions { display: flex; gap: .35rem; margin-left: .35rem; }
.guild-history { margin-top: 1rem; }
.guild-history-list { display: grid; gap: .65rem; }
.guild-history-list article { display: grid; grid-template-columns: auto 1fr; gap: .65rem; padding: .55rem 0; border-top: 1px solid var(--line); }
.guild-history-list article:first-child { border-top: 0; }
.guild-history-list strong, .guild-history-list small, .guild-history-list p { display: block; }
.guild-history-list small { margin-top: .18rem; color: var(--ink-soft); font-size: .62rem; }
.guild-history-list p { margin: .3rem 0 0; color: var(--ink-soft); font-size: .68rem; }
.history-mark { display: grid; place-items: center; width: 1.6rem; height: 1.6rem; color: var(--gold-deep); border: 1px solid var(--line); border-radius: 50%; }
.guild-suspension-shelf { margin: 1rem 0; }
.guild-suspension-list { display: grid; gap: .45rem; margin-top: .8rem; }
.guild-suspension-row { display: flex; align-items: flex-start; justify-content: space-between; gap: .8rem; padding: .7rem 0; border-top: 1px solid var(--line); }
.guild-suspension-row > div { display: grid; gap: .15rem; }
.guild-suspension-row small { color: var(--ink-soft); font-size: .62rem; }
.guild-suspension-row p { margin: .2rem 0 0; color: var(--ink-soft); font-size: .7rem; }
.guild-suspension-row .text-button { flex: 0 0 auto; }
.guild-ledger-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .45rem; margin: .8rem 0; }
.guild-ledger-summary span { display: grid; gap: .12rem; padding: .55rem; background: rgba(232,214,182,.22); border: 1px solid var(--line); border-radius: .35rem; }
.guild-ledger-summary strong { color: var(--teal-deep); font-size: .9rem; }
.guild-ledger-summary small { color: var(--ink-soft); font-size: .58rem; }
.ledger-review-note { margin-top: .6rem; padding: .55rem .65rem; background: rgba(46,200,173,.07); border-left: 2px solid var(--teal); border-radius: .25rem; }
.ledger-review-note p { margin: .2rem 0 0; color: var(--ink-soft); font-size: .68rem; }
.guild-event-history { margin: 1rem 0; }
.guild-event-history-list { display: grid; gap: .55rem; }
.guild-event-history-row { display: grid; grid-template-columns: auto 1fr; gap: .65rem; padding: .55rem 0; border-top: 1px solid var(--line); }
.guild-event-history-row:first-child { border-top: 0; }
.guild-event-history-row strong, .guild-event-history-row small, .guild-event-history-row p { display: block; }
.guild-event-history-row small { margin-top: .15rem; color: var(--ink-soft); font-size: .62rem; }
.guild-event-history-row p { margin: .25rem 0 0; color: var(--ink-soft); font-size: .68rem; }
@media (max-width: 560px) { .guild-ledger-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.archivist-shelf { margin: 1rem 0; }
.contribution-list { display: grid; gap: .65rem; margin: .8rem 0; }
.contribution-published { margin-left: .35rem; color: var(--teal-deep); background: rgba(46,200,173,.1); }
.contribution-row { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: .8rem; padding: .8rem 0; border-top: 1px solid var(--line); }
.contribution-row:first-child { border-top: 0; }
.contribution-row h3 { margin: .3rem 0; }
.contribution-row p { margin: .25rem 0; color: var(--ink-soft); font-size: .75rem; }
.contribution-row small { color: var(--ink-soft); font-size: .62rem; }
.contribution-actions { display: flex; align-items: flex-start; gap: .4rem; }
.review-folio-title { display: grid; gap: .25rem; padding: .8rem; margin-bottom: 1rem; background: rgba(232,214,182,.2); border: 1px solid var(--line); border-radius: .5rem; }
.review-note { margin-top: .5rem; padding: .5rem .65rem; background: rgba(143,213,199,.08); border-left: 2px solid var(--teal); border-radius: .25rem; }
.review-note p { margin: .25rem 0 0; }
.guild-events { margin: 1rem 0; }
.guild-event-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); gap: .8rem; margin-top: .8rem; }
.guild-event-card { padding: .9rem; border: 1px solid var(--line); border-radius: .6rem; background: rgba(232,214,182,.16); }
.event-outcome { margin: .75rem 0; padding: .65rem .75rem; border-left: 2px solid var(--gold); background: rgba(181, 147, 76, .09); }
.event-outcome p { margin: .25rem 0 0; }
.event-outcome small { color: var(--ink-soft); font-size: .65rem; }
.guild-event-status, .guild-event-meta, .guild-event-actions, .muster-actions { display: flex; align-items: center; justify-content: space-between; gap: .45rem; flex-wrap: wrap; }
.event-frame-label { display: inline-flex; align-items: center; gap: .25rem; color: var(--teal-deep); font-size: .62rem; }
.event-frame-label::before { content: '◈'; color: var(--gold-ink, #8a6322); }
.guild-event-card h3 { margin: .55rem 0 .3rem; }
.guild-event-card p { margin: 0 0 .65rem; color: var(--ink-soft); font-size: .75rem; }
.guild-event-card small, .guild-event-meta { color: var(--ink-soft); font-size: .62rem; }
.guild-event-meta { justify-content: flex-start; padding: .45rem 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.guild-event-actions { justify-content: flex-start; margin-top: .7rem; }
.event-reminder-row { display: flex; align-items: center; justify-content: space-between; gap: .5rem; flex-wrap: wrap; margin-top: .6rem; padding: .45rem .55rem; border: 1px solid rgba(178,132,53,.28); border-radius: .45rem; background: rgba(255,248,224,.48); }
.event-reminder-row .tiny-label { color: var(--gold-ink, #8a6322); }
.muster-actions { margin-left: auto; }
.event-fields { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; margin-top: 1rem; }
.guild-event-preview-controls { margin-top: 1rem; padding: .8rem; border: 1px solid rgba(96, 132, 151, .28); border-radius: .55rem; background: rgba(96, 132, 151, .06); }
.guild-event-preview-controls legend { padding: 0 .35rem; color: var(--teal-deep); font-size: .72rem; }
.preview-road-actions { display: flex; flex-wrap: wrap; gap: .4rem; margin: .65rem 0; }
.guild-event-preview { display: grid; gap: .3rem; padding: .75rem; border: 1px solid rgba(46, 200, 173, .28); border-radius: .45rem; background: rgba(255,255,255,.38); }
.guild-event-preview.is-blocked { border-color: rgba(181, 147, 76, .34); background: rgba(181, 147, 76, .08); }
.guild-event-preview.is-error { border-color: rgba(157, 75, 58, .34); background: rgba(157, 75, 58, .06); }
.guild-event-preview-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; flex-wrap: wrap; }
.guild-event-preview h4 { margin: .1rem 0; }
.guild-event-preview p { margin: 0; color: var(--ink-soft); font-size: .72rem; }
.guild-event-preview small { color: var(--ink-soft); font-size: .62rem; }
.guild-event-recollections { margin-top: .8rem; padding: .65rem .75rem; border: 1px solid rgba(181,147,76,.24); border-radius: .45rem; background: rgba(181,147,76,.055); }
.guild-event-recollections summary { display: flex; align-items: center; justify-content: space-between; gap: .5rem; cursor: pointer; list-style: none; }
.guild-event-recollections summary::-webkit-details-marker { display: none; }
.guild-event-recollections .muted-copy { margin: .65rem 0; font-size: .68rem; }
.guild-event-recollection-list { display: grid; gap: .55rem; }
.guild-event-recollection { display: grid; gap: .35rem; padding: .65rem; border-top: 1px solid var(--line); }
.guild-event-recollection:first-child { border-top: 0; }
.guild-event-recollection.is-withdrawn { opacity: .68; }
.guild-event-recollection-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.guild-event-recollection small { color: var(--ink-soft); font-size: .62rem; }
.guild-event-recollection p { margin: .3rem 0 0; white-space: pre-wrap; }
.guild-event-recollection-actions { display: flex; gap: .45rem; flex-wrap: wrap; }
.denizen-note-preview-controls { margin-top: 1rem; padding: .8rem; border: 1px solid rgba(96, 132, 151, .28); border-radius: .55rem; background: rgba(96, 132, 151, .06); }
.denizen-note-preview-controls legend { padding: 0 .35rem; color: var(--teal-deep); font-size: .72rem; }
.denizen-note-preview { display: grid; gap: .3rem; padding: .75rem; border: 1px solid rgba(46, 200, 173, .28); border-radius: .45rem; background: rgba(255,255,255,.38); }
.denizen-note-preview.is-blocked { border-color: rgba(181, 147, 76, .34); background: rgba(181, 147, 76, .08); }
.denizen-note-preview.is-error { border-color: rgba(157, 75, 58, .34); background: rgba(157, 75, 58, .06); }
.denizen-note-preview-head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; flex-wrap: wrap; }
.denizen-note-preview h4 { margin: .1rem 0; }
.denizen-note-preview p { margin: 0; color: var(--ink-soft); font-size: .72rem; }
.denizen-note-preview small { color: var(--ink-soft); font-size: .62rem; }
.denizen-note-frame-label { color: var(--teal-deep); font-size: .62rem; }
.guild-ledger { margin: 1rem 0; }
.guild-ledger-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); gap: .8rem; margin-top: .8rem; }
.guild-ledger-card { padding: .9rem; border: 1px solid var(--line); border-radius: .6rem; background: rgba(232,214,182,.12); }
.guild-ledger-card.is-void { opacity: .68; }
.guild-ledger-status, .guild-ledger-actions, .guild-ledger-amount { display: flex; align-items: center; justify-content: space-between; gap: .45rem; flex-wrap: wrap; }
.guild-ledger-amount { justify-content: flex-start; gap: .55rem; margin: .65rem 0 .2rem; color: var(--ink-soft); }
.guild-ledger-amount strong { color: var(--ink); font-size: 1.35rem; }
.guild-ledger-card h3 { margin: .2rem 0 .3rem; }
.guild-ledger-card p { margin: 0 0 .65rem; color: var(--ink-soft); font-size: .75rem; }
.guild-ledger-card small { color: var(--ink-soft); font-size: .62rem; }
.guild-ledger-actions { justify-content: flex-start; margin-top: .7rem; }
.guild-invitation-shelf { margin: 1rem 0; }
.guild-invite-form { display: flex; gap: .55rem; align-items: center; flex-wrap: wrap; margin-top: .75rem; }
.guild-invite-form select { flex: 1 1 16rem; min-width: 0; }
.guild-invitation-list, .guild-invitation-inbox { display: grid; gap: .4rem; margin-top: .8rem; }
.guild-invitation-inbox { padding-top: .8rem; border-top: 1px solid var(--line); }
.guild-invitation-row { display: flex; align-items: center; justify-content: space-between; gap: .7rem; padding: .6rem 0; border-top: 1px solid var(--line); }
.guild-invitation-row > span:first-child { display: grid; gap: .12rem; }
.guild-invitation-row small { color: var(--ink-soft); font-size: .62rem; }
.guild-invitation-actions { display: flex; gap: .45rem; }
.guild-pacts { margin: 1rem 0; border-color: rgba(96, 132, 151, .35); background: linear-gradient(135deg, rgba(96, 132, 151, .08), rgba(211, 155, 79, .05)); }
.guild-pact-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); gap: .8rem; margin-top: .8rem; }
.guild-pact-card { padding: .9rem; border: 1px solid var(--line); border-radius: .6rem; background: rgba(255,255,255,.3); }
.guild-pact-card.is-closed { opacity: .72; }
.guild-pact-status, .guild-pact-meta, .guild-pact-actions { display: flex; align-items: center; justify-content: space-between; gap: .55rem; flex-wrap: wrap; }
.guild-pact-card h3 { margin: .55rem 0 .3rem; }
.guild-pact-card p { margin: 0 0 .65rem; color: var(--ink-soft); font-size: .76rem; line-height: 1.45; }
.guild-pact-meta { justify-content: flex-start; padding: .45rem 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); color: var(--ink-soft); font-size: .62rem; }
.guild-pact-actions { justify-content: flex-start; margin-top: .7rem; }
.guild-pact-farewell { margin-top: .65rem; padding: .55rem .65rem; border-left: 2px solid rgba(211,155,79,.55); background: rgba(211,155,79,.08); }
.guild-pact-farewell p { margin: .2rem 0 0; }
.guild-pact-history { margin-top: .7rem; border-top: 1px solid var(--line); }
.guild-pact-history summary { display: flex; justify-content: space-between; gap: .5rem; padding: .55rem 0 .2rem; color: var(--teal-deep); cursor: pointer; font: 700 .68rem ui-sans-serif, system-ui, sans-serif; list-style: none; }
.guild-pact-history summary::-webkit-details-marker { display: none; }
.guild-pact-history p { margin: .25rem 0; font-size: .64rem; }
@media (max-width: 760px) { .guild-pact-list { grid-template-columns: 1fr; } }
.missive-row .missive-summary span, .missive-row .missive-summary small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.missive-row .missive-summary strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mail-safety-shelf { margin-top: 1rem; }
.mail-safety-list { display: grid; gap: .4rem; margin-top: .7rem; }
.mail-safety-row { display: flex; align-items: center; justify-content: space-between; gap: .7rem; padding: .6rem 0; border-top: 1px solid var(--line); }
.mail-safety-row span { display: grid; gap: .12rem; }
.mail-safety-row small { color: var(--ink-soft); font-size: .62rem; }
.mail-case-history { margin-top: 1rem; padding-top: .75rem; border-top: 1px solid var(--line); }
.mail-case-history summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; cursor: pointer; list-style: none; }
.mail-case-history summary::-webkit-details-marker { display: none; }
.mail-case-history summary > span:first-child { display: grid; gap: .15rem; }
.mail-case-list { display: grid; gap: .55rem; margin-top: .7rem; }
.mail-case-row { padding: .65rem .7rem; background: rgba(232,214,182,.16); border: 1px solid var(--line); border-radius: .45rem; }
.mail-case-row > div { display: flex; justify-content: space-between; gap: .8rem; align-items: baseline; }
.mail-case-row strong { text-transform: capitalize; font-size: .7rem; }
.mail-case-row small { color: var(--ink-soft); font-size: .6rem; }
.mail-case-row p { margin: .45rem 0 0; color: var(--ink-soft); font-size: .68rem; line-height: 1.4; }
.mail-case-timeline { margin-top: .55rem; padding-top: .45rem; border-top: 1px solid rgba(90,76,54,.14); }
.mail-case-timeline summary { display: flex; justify-content: space-between; gap: .6rem; color: var(--teal-deep); cursor: pointer; font: 700 .62rem ui-sans-serif, system-ui, sans-serif; }
.mail-case-timeline summary span { color: var(--ink-soft); font-weight: 600; }
.mail-case-timeline ol { display: grid; gap: .45rem; margin: .55rem 0 0 1rem; padding: 0; }
.mail-case-timeline li { padding-left: .15rem; color: var(--ink-soft); font-size: .65rem; }
.mail-case-timeline li strong { display: block; color: var(--ink); text-transform: capitalize; font-size: .66rem; }
.mail-case-timeline li small { display: block; margin-top: .1rem; color: var(--ink-soft); font-size: .58rem; }
.mail-case-timeline li p { margin: .2rem 0 0; font-size: .62rem; }
.mail-case-subject { margin-top: 1rem; }
.letter-attachment { display: flex; align-items: center; gap: .65rem; margin-top: 1rem; padding: .75rem .85rem; color: var(--ink); background: rgba(232,214,182,.22); border: 1px solid var(--line); border-radius: .55rem; }
.letter-attachment > span:nth-child(2) { display: grid; gap: .18rem; min-width: 0; }
.letter-attachment small { color: var(--ink-soft); font-size: .62rem; }
.letter-attachment .text-button { margin-left: auto; }
.letter-attachments { margin-top: 1.1rem; padding-top: .8rem; border-top: 1px solid var(--line); }
.letter-attachments-head { display: flex; justify-content: space-between; align-items: center; gap: .8rem; }
.letter-attachment-list { display: grid; gap: .45rem; }
.letter-attachment-list .letter-attachment { margin-top: .45rem; }
.missive-attachment-field { border: 0; padding: 0; margin: 1rem 0 0; }
.missive-attachment-field legend { padding: 0; margin-bottom: .55rem; font-weight: 650; color: var(--ink); }
.missive-attachment-picker { display: grid; gap: .4rem; max-height: 13rem; overflow: auto; padding: .55rem; border: 1px solid var(--line); border-radius: .55rem; background: rgba(232,214,182,.12); }
.attachment-option { display: flex; align-items: flex-start; gap: .55rem; padding: .5rem .55rem; border-radius: .4rem; cursor: pointer; }
.attachment-option:hover, .attachment-option:has(input:checked) { background: rgba(63,129,117,.1); }
.attachment-option input { margin-top: .18rem; accent-color: var(--teal); }
.attachment-option span { display: grid; gap: .15rem; min-width: 0; }
.attachment-option small { color: var(--ink-soft); font-size: .68rem; }
.notice-ward-actions { display: inline-flex; gap: .45rem; margin-left: .55rem; }
.notice-row-actions { display: flex; gap: .55rem; flex-wrap: wrap; margin-top: .3rem; }
.notice-audit { margin-top: .55rem; padding: .65rem .75rem; border-left: 2px solid var(--gold, #b38435); background: rgba(178,132,53,.08); border-radius: 0 .35rem .35rem 0; }
.notice-audit dl { display: grid; gap: .35rem; margin: .4rem 0; }
.notice-audit dl > div { display: flex; gap: .55rem; flex-wrap: wrap; }
.notice-audit dt { min-width: 7rem; color: var(--ink-soft); font-size: .62rem; }
.notice-audit dd { margin: 0; font-size: .68rem; }
.notice-audit p { margin: .45rem 0 0; color: var(--ink-soft); font-size: .68rem; }
.warden-shelf { margin: 1rem 0; }
.warden-case-list { display: grid; gap: .75rem; margin-top: .8rem; }
.warden-case-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(12rem, .38fr); gap: .9rem; padding: .85rem; border: 1px solid var(--line); border-radius: .6rem; background: rgba(232,214,182,.16); }
.warden-case-row h3 { margin: .45rem 0 .25rem; }
.warden-case-row p { margin: 0 0 .55rem; color: var(--ink-soft); font-size: .75rem; }
.warden-case-row small { color: var(--ink-soft); font-size: .62rem; }
.warden-case-preview { margin-top: .55rem; padding: .5rem .65rem; border-left: 2px solid rgba(140,62,72,.45); background: rgba(140,62,72,.06); }
.warden-metrics { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .45rem; margin: .85rem 0 .15rem; }
.warden-metric { display: grid; gap: .12rem; padding: .55rem .65rem; border: 1px solid var(--line); border-radius: .5rem; background: rgba(255,255,255,.28); }
.warden-metric strong { font-family: var(--display); font-size: 1.25rem; color: var(--ink); }
.warden-metric span { color: var(--ink-soft); font-size: .59rem; text-transform: uppercase; letter-spacing: .08em; }
.warden-metric.gold { border-color: rgba(164,122,48,.48); background: rgba(164,122,48,.09); }
.appointment-boundary { padding: .7rem .8rem; border: 1px dashed rgba(140,62,72,.45); border-radius: .5rem; background: rgba(140,62,72,.06); }
.appointment-boundary strong, .appointment-boundary p { display: block; }
.appointment-boundary p { margin: .2rem 0 0; color: var(--ink-soft); font-size: .7rem; }
.warden-case-preview p { margin: .25rem 0 0; font-size: .68rem; }
.warden-case-actions { display: grid; align-content: start; gap: .45rem; }
.warden-case-actions textarea { width: 100%; min-height: 4rem; resize: vertical; }
.warden-case-actions .text-button, .warden-case-actions .primary-button { justify-self: start; }
.warden-case-history { margin-top: .6rem; padding-top: .55rem; border-top: 1px solid var(--line); }
.warden-case-history ol { margin: .55rem 0 0 1.2rem; padding: 0; }
.warden-case-history li { padding: .25rem 0; color: var(--ink-soft); font-size: .68rem; }
.warden-case-history li strong, .warden-case-history li small, .warden-case-history li p { display: block; }
.warden-case-history li small { margin-top: .1rem; }
.warden-case-history li p { margin-top: .18rem; }
@media (max-width: 700px) { .warden-case-row { grid-template-columns: 1fr; } }
@media (max-width: 700px) { .warden-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.notice-ward-shelf { margin-top: .9rem; padding-top: .8rem; border-top: 1px solid var(--line); }
.notice-destination { color: var(--accent-deep); }
.notice-ward-list { display: grid; gap: .4rem; }
.notice-ward-row { display: flex; align-items: center; justify-content: space-between; gap: .7rem; padding: .55rem 0; border-top: 1px solid var(--line); }
.notice-ward-row span { display: grid; gap: .12rem; }
.notice-ward-row small { color: var(--ink-soft); font-size: .62rem; }
.campfire-wall .archive-band:disabled { opacity: .65; cursor: wait; }
.campfire-audit { margin-top: 1rem; }
.campfire-audit-list { display: grid; gap: .65rem; margin-top: .8rem; }
.campfire-audit-row { display: grid; grid-template-columns: auto minmax(0,1fr); gap: .7rem; padding: .7rem 0; border-top: 1px solid var(--line); }
.campfire-audit-row:first-child { border-top: 0; }
.campfire-audit-row strong, .campfire-audit-row small, .campfire-audit-row p { display: block; }
.campfire-audit-row small { margin-top: .18rem; color: var(--ink-soft); font-size: .62rem; }
.campfire-audit-row p { margin: .3rem 0 0; color: var(--ink-soft); font-size: .7rem; }
.campfire-safety { margin-top: 1rem; }
.campfire-safety-list { display: grid; gap: .4rem; margin-top: .8rem; }
.campfire-safety-row { display: flex; align-items: center; justify-content: space-between; gap: .8rem; padding: .65rem 0; border-top: 1px solid var(--line); }
.campfire-safety-row span { display: grid; gap: .12rem; }
.campfire-safety-row small { color: var(--ink-soft); font-size: .62rem; }
.theme-field-journal { --ink: #49382d; --ink-soft: #735d4c; --night: #403129; --line: rgba(98,71,45,.22); background: linear-gradient(145deg, #e0cb9f, #baa175); }
.theme-field-journal .character-banner, .theme-field-journal .character-songbook { background: linear-gradient(120deg, rgba(109,76,53,.96), rgba(71,54,46,.94)); }
.theme-war-room { --ink: #3d2731; --ink-soft: #70515b; --night: #40252d; background: linear-gradient(145deg, #e6c2a6, #b57b73); }
.theme-war-room .character-banner, .theme-war-room .character-songbook { background: linear-gradient(120deg, rgba(71,38,48,.98), rgba(119,61,62,.94)); }
.theme-moonlit-archive { --ink: #d9e5ec; --ink-soft: #afc4d3; --paper: #182b4c; --paper-2: #e8f2f4; --line: rgba(176,203,222,.2); background: linear-gradient(145deg, #172642, #2f4a69); }
.theme-moonlit-archive .card, .theme-moonlit-archive .compact-ties { color: var(--paper-2); background: rgba(21,38,67,.82); border-color: rgba(180,213,231,.2); }
.theme-moonlit-archive .character-banner, .theme-moonlit-archive .character-songbook { background: linear-gradient(120deg, rgba(13,33,66,.98), rgba(48,70,104,.96)); }
.theme-moonlit-archive .journal-feature h2, .theme-moonlit-archive .compact-ties h2 { color: #eef4ed; }
.theme-moonlit-archive .journal-feature p, .theme-moonlit-archive .compact-ties .tiny-label { color: #b5cedb; }
.loading-screen{min-height:100vh;display:grid;place-content:center;gap:.6rem;padding:2rem;max-width:42rem;margin:auto;text-align:center;color:var(--ink,#f8e8ba)}
.loading-seal{width:4rem;height:4rem;border:1px solid rgba(242,199,121,.5);border-radius:50%;display:grid;place-items:center;margin:0 auto 1rem;color:#f2c779;font-size:2rem;box-shadow:0 0 40px rgba(242,199,121,.18)}
.account-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(19rem,.8fr);gap:1rem;align-items:start}
.account-form form{display:grid;gap:.85rem;margin-top:1rem}
.form-field{display:grid;gap:.35rem;color:var(--ink,#f8e8ba);font-size:.9rem}
.form-field span{font-size:.76rem;text-transform:uppercase;letter-spacing:.08em;color:#9bc9bd}
.form-field input,.form-field select,.form-field textarea{width:100%;border:1px solid rgba(143,213,199,.28);border-radius:.55rem;background:rgba(7,25,34,.56);color:#f8e8ba;padding:.72rem .8rem;font:inherit;resize:vertical}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{outline:2px solid rgba(143,213,199,.7);outline-offset:2px}
.form-field small,.form-hint{color:#9aaeb0;font-size:.78rem}
.form-error{color:#ffb1a7;font-size:.85rem;margin:0}
.account-character-list{display:grid;gap:.5rem;margin-top:.8rem}
.account-character-row{display:grid;grid-template-columns:auto 1fr auto;gap:.7rem;align-items:center;text-align:left;padding:.7rem;border:1px solid rgba(143,213,199,.18);border-radius:.55rem;background:rgba(7,25,34,.36);color:inherit}
.account-character-row:hover{border-color:rgba(242,199,121,.6);background:rgba(28,68,76,.5)}
.account-character-row span:nth-child(2){display:grid;gap:.15rem}.account-character-row small{color:#9aaeb0}
.empty-state.compact{padding:1rem;margin:0}.composer-dialog{max-width:42rem}.source-links{display:grid;gap:.35rem;margin-top:.35rem}.source-links a{color:#9fe2d3}
.module-options{display:grid;gap:.55rem;border:1px solid rgba(143,213,199,.2);border-radius:.6rem;padding:.8rem;margin:1rem 0 0;color:#f8e8ba}.module-options legend{padding:0 .3rem;color:#9bc9bd;font-size:.76rem;text-transform:uppercase;letter-spacing:.08em}.module-options label{display:flex;gap:.55rem;align-items:center}
.playlist-track-fields{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin-top:1rem;padding-top:1rem;border-top:1px solid rgba(143,213,199,.16)}
.playlist-track-stack{display:grid;gap:.75rem;margin-top:1rem;max-height:24rem;overflow:auto;padding-right:.25rem}
.playlist-track-editor{margin:0;border:1px solid rgba(143,213,199,.2);border-radius:.6rem;padding:.2rem .8rem .8rem}
.playlist-track-editor legend{display:flex;justify-content:space-between;align-items:center;width:100%;padding:0 .35rem;color:#9bc9bd;font-size:.76rem;text-transform:uppercase;letter-spacing:.08em}
.playlist-track-editor .playlist-track-fields{margin-top:.35rem;padding-top:.65rem}
@media(max-width:620px){.playlist-track-fields{grid-template-columns:1fr}}
@media(max-width:620px){.event-fields{grid-template-columns:1fr}}
@media(max-width:860px){.account-layout{grid-template-columns:1fr}}
.trail-publication-bar{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin-top:1rem;padding:.75rem 0 0;border-top:1px solid var(--line)}
.trail-publication-bar > div:first-child{display:grid;gap:.18rem;min-width:0}.trail-publication-bar strong{font-size:.72rem}.trail-publication-bar small{color:var(--ink-soft);font-size:.62rem;overflow-wrap:anywhere}.trail-publication-actions{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:flex-end}.trail-publication-note{margin:.65rem 0 0;color:var(--ink-soft);font-size:.68rem;line-height:1.4}
.public-trail-header{align-items:start}.public-trail-card{max-width:58rem;margin:0 auto;padding:1.25rem}.public-trail-intro{display:flex;justify-content:space-between;gap:1rem;align-items:start;padding-bottom:1rem;border-bottom:1px solid var(--line)}.public-trail-intro p{max-width:34rem;margin:0;color:var(--ink-soft);font-size:.76rem;line-height:1.45}.public-trail-list{display:grid;gap:.55rem;margin:1rem 0 0;padding:0;list-style:none}.public-trail-list li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;align-items:start;padding:.8rem;border:1px solid var(--line);border-radius:.55rem;background:rgba(232,214,182,.2)}.public-trail-list li > div{display:grid;gap:.25rem;min-width:0}.public-trail-item{display:grid;gap:.18rem;padding:0;color:var(--ink);text-align:left}.public-trail-item:hover strong,.public-trail-item:focus-visible strong{color:var(--teal-deep);text-decoration:underline}.public-trail-item strong{font-size:.82rem}.public-trail-item small,.public-trail-source{color:var(--ink-soft);font-size:.66rem;line-height:1.35}.public-trail-source{font-style:italic}.public-trail-card + .public-trail-card{margin-top:1rem}
.public-trail-discovery{margin-top:1.25rem;padding:1.15rem}.public-trail-discovery .card-title-row{align-items:start}.public-trail-discovery .card-title-row p{max-width:44rem;margin:.35rem 0 0;color:var(--ink-soft);font-size:.76rem;line-height:1.4}.public-trail-discovery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin-top:.85rem}.public-trail-discovery-card{display:grid;gap:.5rem;padding:.85rem;border:1px solid var(--line);border-radius:.55rem;background:rgba(232,214,182,.16)}.public-trail-discovery-head{display:flex;justify-content:space-between;gap:.7rem;align-items:start}.public-trail-discovery-card h3{margin:.12rem 0 0;font-size:.92rem}.public-trail-discovery-card > p{margin:0;color:var(--ink-soft);font-size:.72rem;line-height:1.4}.public-trail-discovery-card > small{color:var(--ink-soft);font-size:.6rem;line-height:1.35}.public-trail-step-preview{display:grid;gap:.25rem}.public-trail-step-preview span{display:flex;gap:.4rem;align-items:baseline;color:var(--ink-soft);font-size:.66rem}.public-trail-step-preview b{color:var(--gold-deep);font-size:.58rem;letter-spacing:.05em}.public-trail-discovery-card .text-button{justify-self:start}
.public-trail-history{margin-top:1rem;padding-top:.8rem;border-top:1px solid var(--line)}.public-trail-history summary{display:flex;justify-content:space-between;gap:.8rem;cursor:pointer;color:var(--teal-deep);font:700 .68rem ui-sans-serif,system-ui,sans-serif}.public-trail-history summary small{color:var(--ink-soft);font-weight:600}.public-trail-history ol{display:grid;gap:.55rem;margin:.7rem 0 0;padding:0 0 0 1rem}.public-trail-history li{padding-left:.15rem;color:var(--ink-soft);font-size:.65rem}.public-trail-history li strong{display:block;color:var(--ink);text-transform:capitalize;font-size:.68rem}.public-trail-history li span{display:block;margin-top:.1rem;font-size:.59rem}.public-trail-history li p{margin:.2rem 0 0;font-size:.62rem;line-height:1.35}
.public-trail-search{display:flex;gap:.5rem;align-items:end;margin-top:.85rem}.public-trail-search label{display:grid;gap:.25rem;flex:1;color:var(--ink-soft);font:700 .6rem ui-sans-serif,system-ui,sans-serif;text-transform:uppercase;letter-spacing:.06em}.public-trail-search input{width:100%;padding:.58rem .65rem;color:var(--ink);background:rgba(255,255,255,.66);border:1px solid var(--line);border-radius:.45rem;font:.75rem/1.2 ui-sans-serif,system-ui,sans-serif}.public-trail-search input:focus{outline:2px solid rgba(37,148,133,.35);outline-offset:2px}
@media(max-width:680px){.trail-publication-bar,.public-trail-intro{display:grid}.trail-publication-actions{justify-content:start}.public-trail-header .seal{justify-self:start}}
@media(max-width:680px){.public-trail-discovery-grid{grid-template-columns:1fr}.public-trail-discovery-head{display:grid}.public-trail-search{display:grid;align-items:stretch}}
.work-scope-picker{display:grid;gap:.3rem;min-width:min(100%,18rem);color:var(--ink);font-size:.7rem}.work-scope-picker span{color:var(--ink-soft);font-size:.62rem;text-transform:uppercase;letter-spacing:.08em}.work-scope-picker select{border:1px solid var(--line);border-radius:.45rem;background:rgba(255,255,255,.5);color:var(--ink);padding:.5rem .6rem;font:inherit}.work-scope-summary{display:inline-flex;align-items:center;padding:.48rem .65rem;color:var(--teal-deep);background:rgba(46,200,173,.1);border:1px solid rgba(46,200,173,.23);border-radius:.4rem;font-size:.68rem}
.work-assignment-picker{display:grid;gap:.3rem;min-width:min(100%,18rem);color:var(--ink);font-size:.7rem}.work-assignment-picker span{color:var(--ink-soft);font-size:.62rem;text-transform:uppercase;letter-spacing:.08em}.work-assignment-picker select{border:1px solid var(--line);border-radius:.45rem;background:rgba(255,255,255,.5);color:var(--ink);padding:.5rem .6rem;font:inherit}
.work-log-shelf{margin-bottom:1rem}.work-log-list{display:grid;gap:.6rem}.work-log-row{display:flex;justify-content:space-between;gap:1rem;padding:.8rem 0;border-top:1px solid var(--line)}.work-log-row h3{margin:.2rem 0 .15rem;font-size:.85rem}.work-log-row p{margin:0;color:var(--ink-soft);font-size:.7rem}.work-log-row blockquote{margin:.45rem 0 0;padding:.45rem .65rem;border-left:2px solid var(--gold);color:var(--ink-soft);font-size:.68rem;line-height:1.45}.work-log-row > small{color:var(--ink-soft);font-size:.62rem;white-space:nowrap}.work-log-row .seal{display:inline-block}
.contribution-source-bundle{margin:1rem 0;padding:1rem;background:rgba(232,214,182,.2);border:1px solid var(--line);border-radius:.6rem}.contribution-source-bundle h3{margin:.2rem 0 0;font-size:1rem}.contribution-source-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.5rem;margin-top:.8rem}.contribution-source-form select,.contribution-source-form input{min-width:0;padding:.6rem .65rem;color:var(--ink);background:rgba(255,255,255,.65);border:1px solid var(--line);border-radius:.4rem;font:inherit;font-size:.75rem}.contribution-source-form button{justify-self:start}.contribution-source-list{display:grid;gap:.4rem;margin-top:.75rem}.contribution-source-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.6rem;align-items:start;padding:.65rem;background:rgba(255,255,255,.48);border:1px solid rgba(26,66,75,.12);border-radius:.45rem}.source-order{display:grid;place-items:center;width:1.6rem;height:1.6rem;color:var(--night);background:var(--gold);border-radius:50%;font:700 .62rem ui-sans-serif,system-ui,sans-serif}.contribution-source-row strong,.contribution-source-row small{display:block}.contribution-source-row small{margin-top:.15rem;color:var(--teal-deep);font-size:.66rem}.contribution-source-row p{margin:.25rem 0 0;color:var(--ink-soft);font-size:.7rem;line-height:1.35}.contribution-source-inline{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.45rem}.contribution-source-inline span{padding:.2rem .38rem;color:var(--teal-deep);background:rgba(46,200,173,.1);border:1px solid rgba(46,200,173,.2);border-radius:99px;font-size:.62rem}
.evidence-comparison-shelf{margin:1rem 0;padding:1rem;background:rgba(232,214,182,.2);border:1px solid var(--line);border-radius:.6rem}.evidence-comparison-shelf h3{margin:.2rem 0 0;font-size:1rem}.evidence-comparison-list{display:grid;gap:.4rem;margin-top:.75rem}.evidence-comparison-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.6rem;align-items:start;padding:.65rem;background:rgba(255,255,255,.48);border:1px solid rgba(26,66,75,.12);border-radius:.45rem}.evidence-comparison-row strong,.evidence-comparison-row small{display:block}.evidence-comparison-row small{margin-top:.15rem;color:var(--teal-deep);font-size:.66rem}.evidence-comparison-row p{margin:.25rem 0 0;color:var(--ink-soft);font-size:.7rem;line-height:1.35}.source-link-note{display:block;padding:.25rem 0;color:var(--ink-soft);font-size:.7rem}
.contribution-row.work-focus{outline:2px solid rgba(46,200,173,.5);outline-offset:.2rem}
.correction-shelf { margin-top: 1rem; padding-top: .9rem; border-top: 1px solid var(--line); }.correction-shelf h3 { margin: .2rem 0 0; }.correction-empty { margin: .7rem 0; padding: .7rem; color: var(--ink-soft); background: rgba(232,214,182,.18); border-radius: .35rem; font-size: .72rem; }.correction-public-row { display: grid; gap: .45rem; margin: .7rem 0; padding: .7rem; background: rgba(232,214,182,.2); border-left: 2px solid var(--teal); border-radius: .35rem; }.correction-public-row p { margin: .35rem 0; color: var(--ink); font-size: .74rem; line-height: 1.45; }.correction-public-row small { color: var(--ink-soft); font-size: .62rem; }.correction-public-row details { color: var(--ink-soft); font-size: .66rem; }.correction-public-row summary { cursor: pointer; color: var(--teal-deep); }.correction-private-note { display: grid; gap: .2rem; margin: .7rem 0; padding: .55rem .65rem; background: rgba(232,173,89,.1); border-left: 2px solid var(--gold); border-radius: .3rem; color: var(--ink-soft); font-size: .66rem; }.correction-queue { display: grid; gap: .65rem; margin: .8rem 0; }.correction-queue-row { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: .8rem; padding: .8rem 0; border-top: 1px solid var(--line); }.correction-queue-row:first-child { border-top: 0; }.correction-queue-row h3 { margin: .3rem 0; }.correction-queue-row p { margin: .25rem 0; color: var(--ink-soft); font-size: .75rem; line-height: 1.4; }.correction-queue-row small { color: var(--ink-soft); font-size: .62rem; }.correction-queue-row.work-focus { outline: 2px solid rgba(46,200,173,.5); outline-offset: .2rem; }
.work-charter-law{align-self:start;max-width:28rem}.work-charter-law summary{cursor:pointer;color:var(--teal-deep);font-size:.7rem;font-weight:700}.work-charter-law p{margin:.6rem 0 0;color:var(--ink-soft);font-size:.68rem;line-height:1.5}
.trail-history{margin-top:.75rem;padding-top:.65rem;border-top:1px solid var(--line)}.trail-history summary{cursor:pointer;color:var(--teal-deep);font-size:.68rem;font-weight:700}.trail-history ol{display:grid;gap:.35rem;margin:.55rem 0 0;padding:0;list-style:none}.trail-history li{display:flex;gap:.5rem;align-items:start;padding:.42rem 0}.trail-history li > span:last-child{display:grid;gap:.12rem}.trail-history small{display:block;color:var(--ink-soft);font-size:.62rem;line-height:1.35}.trail-history strong{font-size:.66rem}
.trail-route-brief{margin:.8rem 0;padding:.85rem;background:rgba(46,200,173,.07);border:1px solid rgba(46,200,173,.22);border-radius:.55rem}.trail-route-brief h4{margin:.18rem 0 0;font-size:.82rem;color:var(--ink)}.trail-route-uncertainty{margin:.65rem 0 0;color:var(--ink-soft);font-size:.68rem;line-height:1.45}.trail-route-editor{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem;align-items:end;margin-top:.7rem}.trail-route-editor .outline-button{justify-self:start}.trail-route-details{margin-top:.7rem;border-top:1px solid rgba(46,200,173,.18);padding-top:.55rem}.trail-route-details summary{display:flex;justify-content:space-between;cursor:pointer;color:var(--teal-deep);font-size:.68rem;font-weight:700}.trail-route-suggestions{display:grid;gap:.45rem;margin:.65rem 0 0;padding:0;list-style:none}.trail-route-suggestions li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:start;padding:.5rem;background:rgba(255,255,255,.36);border:1px solid var(--line);border-radius:.4rem}.trail-route-confidence{align-self:start;padding:.2rem .35rem;border-radius:99px;background:rgba(232,173,89,.18);color:var(--gold-deep);font:700 .56rem ui-sans-serif,system-ui,sans-serif;text-transform:uppercase;letter-spacing:.05em}.trail-route-suggestions li div{display:grid;gap:.15rem}.trail-route-suggestions strong{font-size:.7rem}.trail-route-suggestions small,.trail-route-suggestions p{color:var(--ink-soft);font-size:.63rem;line-height:1.35}.trail-route-suggestions p{margin:.1rem 0 0}.trail-route-fieldset{display:grid;gap:.6rem;margin:1rem 0;padding:.8rem;border:1px solid rgba(46,200,173,.24);border-radius:.55rem}.trail-route-fieldset legend{padding:0 .3rem;color:var(--teal-deep);font-size:.76rem;text-transform:uppercase;letter-spacing:.08em}.trail-route-fieldset .trail-route-editor{margin-top:0}
.campfire-message,.wall-message{content-visibility:auto;contain-intrinsic-size:88px}
.wall-scroll{overflow-anchor:none}
.wall-message{contain:layout paint style;}
.road-history{margin-top:1rem;color:var(--ink)}
.road-history summary{display:flex;align-items:center;justify-content:space-between;gap:.8rem;cursor:pointer;list-style:none}
.road-history summary::-webkit-details-marker{display:none}
.road-history summary > span:first-child{display:grid;gap:.18rem}
.road-history-body{padding-top:.75rem}
.road-history-body p{margin:0 0 .7rem;color:var(--ink-soft);font-size:.68rem;line-height:1.45}
.road-history-body ol{display:grid;gap:.5rem;margin:0;padding:0;list-style:none}
.road-history-body li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem;align-items:start}
.road-history-body li > span:last-child{display:grid;gap:.15rem}
.road-history-body small{color:var(--ink-soft);font-size:.62rem}
.road-history-mark{display:grid;place-items:center;width:1.35rem;height:1.35rem;border-radius:50%;color:var(--teal-deep);background:rgba(63,129,117,.12);font-size:.8rem}
.character-page{position:relative}
.page-ornament{position:absolute;top:5.2rem;right:1.25rem;width:3rem;height:3rem;opacity:.7;pointer-events:none;z-index:1}
.page-ornament img{width:100%;height:100%;object-fit:contain}
.page-ornament.ornament-campfire{opacity:.55}.page-ornament.ornament-atlas{opacity:.6}
@media(max-width:620px){.page-ornament{top:4.25rem;right:.7rem;width:2.25rem;height:2.25rem}}
.event-cadence{display:block;margin-top:.5rem;color:var(--teal-deep);font-size:.67rem;font-weight:700;letter-spacing:.02em}
.event-occurrence{display:block;margin-top:.2rem;color:var(--ink-soft);font-size:.62rem;font-style:italic}
.character-gallery{margin-top:1rem}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.7rem}.gallery-card{margin:0;border:1px solid var(--line);border-radius:.55rem;overflow:hidden;background:rgba(232,214,182,.14)}.gallery-image{display:grid;place-items:center;min-height:130px;padding:1rem;background:linear-gradient(145deg,rgba(25,62,71,.94),rgba(20,39,51,.94))}.gallery-image img{width:74px;height:74px;object-fit:contain;filter:drop-shadow(0 7px 12px rgba(0,0,0,.28))}.gallery-card figcaption{display:grid;gap:.22rem;padding:.6rem}.gallery-card figcaption strong{font-size:.76rem}.gallery-card figcaption small{color:var(--ink-soft);font-size:.62rem}.gallery-boundary-note{margin:.75rem 0 0;color:var(--ink-soft);font-size:.66rem}.gallery-workshop{margin:1rem 0;padding:1rem;border:1px solid var(--line);border-radius:.6rem;background:rgba(232,214,182,.12)}.gallery-workshop-form{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;align-items:end}.gallery-workshop-form .form-field:first-child{grid-column:1/-1}.gallery-workshop-form .outline-button{justify-self:start}.gallery-workshop-list{display:grid;gap:.45rem;margin-top:.8rem}.gallery-workshop-row{display:grid;grid-template-columns:38px 1fr auto;gap:.55rem;align-items:center;padding:.45rem;border-top:1px solid var(--line)}.gallery-workshop-row img{width:34px;height:34px;object-fit:contain}.gallery-workshop-row div{display:grid;gap:.15rem}.gallery-workshop-row small{color:var(--ink-soft);font-size:.62rem}.gallery-workshop-row .text-button{justify-self:end}@media(max-width:680px){.gallery-workshop-form{grid-template-columns:1fr}.gallery-workshop-row{grid-template-columns:32px 1fr}.gallery-workshop-row .text-button{grid-column:2;justify-self:start}}
.warden-handover{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap;margin-top:.35rem}.warden-handover select{max-width:15rem}.warden-held-note,.warden-assignment-note{display:block;color:var(--ink-soft);font-size:.65rem}.warden-assignment-note{margin-top:.2rem;font-style:italic}
.event-privacy-note{display:block;margin-top:.35rem;color:var(--ink-soft);font-size:.62rem}
.trail-route-editor{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:760px){.trail-route-editor{grid-template-columns:1fr}}
.public-trail-route{display:grid;gap:.25rem;margin:1rem 0;padding:.8rem;background:rgba(46,200,173,.07);border:1px solid rgba(46,200,173,.22);border-radius:.5rem}.public-trail-route strong{font-size:.76rem}.public-trail-route p{margin:0;color:var(--ink-soft);font-size:.66rem;line-height:1.4}
.media-intake-plan{display:grid;gap:.65rem;margin: .75rem 0;padding:.75rem;border:1px dashed rgba(63,129,117,.45);border-radius:.5rem;background:rgba(63,129,117,.06)}.media-intake-plan-grid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.media-intake-plan-status{display:grid;gap:.15rem;padding:.55rem;border-radius:.35rem;background:rgba(232,214,182,.25)}.media-intake-plan-status p{margin:0;color:var(--ink-soft);font-size:.65rem;line-height:1.4}.media-intake-plan-actions{display:flex;gap:.65rem;align-items:center;flex-wrap:wrap}.media-intake-history{border-top:1px solid var(--line);padding-top:.5rem}.media-intake-history ul{display:grid;gap:.35rem;margin:.5rem 0 0;padding:0;list-style:none}.media-intake-history li{display:grid;gap:.1rem}.media-intake-history small{color:var(--ink-soft);font-size:.62rem}.gallery-media-upload-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery-media-upload-grid .form-field:first-child{grid-column:auto}@media(max-width:680px){.media-intake-plan-grid,.gallery-media-upload-grid{grid-template-columns:1fr}.gallery-media-upload-grid .form-field:first-child{grid-column:auto}}
.page-workshop-state{align-items:center;background:rgba(22,36,38,.72);border:1px solid rgba(143,213,199,.22);border-radius:12px;display:flex;gap:.75rem;margin-bottom:1rem;padding:.75rem .9rem}.page-workshop-state .shelf-mark{flex:0 0 auto;height:2rem;width:2rem}.page-workshop-state>div{display:grid;gap:.15rem;min-width:0}.page-workshop-state strong{color:#f4e7c5;font-size:.95rem}.page-workshop-state small{color:#b9c6c0;line-height:1.45}.page-workshop-state>.tiny-label{margin-left:auto;white-space:nowrap}.page-workshop-unsaved{border-color:rgba(226,180,91,.28)}.page-workshop-saved{border-color:rgba(143,213,199,.38)}.page-workshop-conflict{border-color:rgba(219,121,104,.52)}.page-workshop-conflict .text-button{justify-self:start;margin-top:.2rem;padding-left:0}@media(max-width:600px){.page-workshop-state{align-items:flex-start}.page-workshop-state>.tiny-label{margin-left:0}}
.page-workshop-dialog{width:min(1120px,calc(100vw - 2rem));max-width:1120px}.page-workshop-body{display:grid;gap:.9rem}.page-workshop-grid{display:grid;grid-template-columns:minmax(190px,.8fr) minmax(340px,1.5fr) minmax(220px,.9fr);gap:.85rem;align-items:start}.page-workshop-controls,.page-workshop-stage,.page-workshop-wards{display:grid;gap:.75rem;min-width:0}.page-workshop-controls{padding-right:.75rem;border-right:1px solid var(--line)}.page-workshop-wards{padding-left:.75rem;border-left:1px solid var(--line)}.page-workshop-tray{display:grid;gap:.55rem;padding-top:.7rem;border-top:1px solid var(--line)}.page-workshop-tray .muted-copy{margin:0;font-size:.64rem;line-height:1.4}.page-workshop-module-list{display:grid;gap:.4rem}.page-workshop-module-card{display:grid;grid-template-columns:1.7rem minmax(0,1fr) auto;gap:.45rem;align-items:center;padding:.5rem;border:1px solid var(--line);border-radius:.45rem;background:rgba(232,214,182,.13);cursor:pointer}.page-workshop-module-card.is-protected{background:rgba(46,200,173,.07);cursor:default}.page-workshop-module-card input{accent-color:var(--teal-deep)}.page-workshop-module-mark{display:grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:.35rem;color:#f4e7c5;background:rgba(19,56,62,.82);font-size:.78rem}.page-workshop-module-copy{display:grid;gap:.12rem;min-width:0}.page-workshop-module-copy strong{font-size:.67rem}.page-workshop-module-copy small{color:var(--ink-soft);font-size:.57rem;line-height:1.3}.page-workshop-module-status{color:var(--teal-deep);font-size:.52rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.page-workshop-canvas{display:grid;gap:.55rem}.page-workshop-canvas-device{display:grid;gap:.75rem;min-height:18rem;padding:.8rem;border:1px solid rgba(143,213,199,.3);border-radius:.65rem;background:linear-gradient(145deg,rgba(24,62,80,.96),rgba(48,109,98,.9));box-shadow:inset 0 0 0 1px rgba(244,231,197,.08)}.page-workshop-canvas-device.theme-field-journal{background:linear-gradient(145deg,#a78561,#dec89c)}.page-workshop-canvas-device.theme-war-room{background:linear-gradient(145deg,#482f38,#9b5c58)}.page-workshop-canvas-device.theme-moonlit-archive{background:linear-gradient(145deg,#172642,#536f9a)}.page-workshop-canvas-banner{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.55rem;align-items:center;padding:.65rem;border-radius:.45rem;background:rgba(8,23,28,.42);color:#f4e7c5}.page-workshop-canvas-portrait{display:grid;place-items:center;width:2.35rem;height:2.35rem;border-radius:50%;background:rgba(244,231,197,.18);font-weight:800}.page-workshop-canvas-banner span:nth-child(2){display:grid;gap:.12rem;min-width:0}.page-workshop-canvas-banner strong{font-size:.75rem}.page-workshop-canvas-banner small{color:#cbd9d2;font-size:.58rem;line-height:1.3}.page-workshop-canvas-seal{color:#9fd8c8;font-size:.54rem;text-transform:uppercase;letter-spacing:.06em}.page-workshop-canvas-columns{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(120px,.7fr);gap:.65rem}.page-workshop-canvas-columns>div,.page-workshop-canvas-stack{display:grid;gap:.4rem}.page-workshop-canvas-module{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.3rem .45rem;align-items:center;padding:.55rem .6rem;border:1px solid rgba(244,231,197,.18);border-radius:.4rem;background:rgba(8,23,28,.35);color:#f4e7c5}.page-workshop-canvas-module>span{grid-row:span 2;color:#9fd8c8}.page-workshop-canvas-module strong{font-size:.63rem}.page-workshop-canvas-module small{color:#bfd0c9;font-size:.54rem}.page-workshop-canvas-empty{padding:.7rem;border:1px dashed rgba(244,231,197,.24);border-radius:.4rem;color:#cbd9d2;font-size:.58rem}.page-workshop-dialog .module-order,.page-workshop-dialog .gallery-workshop,.page-workshop-dialog .gallery-layout-workshop{margin:0}.page-workshop-dialog .module-order{padding:.7rem;border:1px solid var(--line);border-radius:.55rem;background:rgba(232,214,182,.1)}.page-workshop-dialog .gallery-workshop{padding:.75rem}.page-workshop-dialog .gallery-layout-workshop{padding:.65rem .75rem;border:1px solid var(--line);border-radius:.5rem;background:rgba(232,214,182,.1)}.page-workshop-dialog .accessibility-inspection{margin:0}.page-workshop-dialog .modal-footer{position:sticky;bottom:0;background:var(--paper);z-index:2}@media(max-width:980px){.page-workshop-grid{grid-template-columns:minmax(180px,.75fr) minmax(320px,1.25fr)}.page-workshop-wards{grid-column:1/-1;padding:0;border:0;grid-template-columns:1fr 1fr;align-items:start}}@media(max-width:680px){.page-workshop-dialog{width:calc(100vw - 1rem)}.page-workshop-grid{grid-template-columns:1fr}.page-workshop-controls,.page-workshop-wards{padding:0;border:0}.page-workshop-wards{grid-template-columns:1fr}.page-workshop-canvas-columns{grid-template-columns:1fr}.page-workshop-dialog .modal-footer{position:static;flex-wrap:wrap}.page-workshop-dialog .modal-footer button{flex:1 1 9rem}}
.atlas-pin-actions{display:grid;gap:.35rem}.atlas-pin-actions .text-button{text-align:left;padding:0}
.atlas-vector-surface{min-height:0!important;aspect-ratio:3/2;overflow:hidden;background:#d6d3af;border-color:rgba(19,36,58,.28);position:relative}
.atlas-map-svg{display:block;width:100%;height:100%;min-height:0;overflow:visible}
.atlas-svg-paper{fill:#b8c29d;fill-opacity:.72}
.atlas-svg-regions{isolation:isolate}
.atlas-svg-continent{cursor:pointer;outline:none}
.atlas-svg-continent-piece{fill:#567f73;fill-opacity:0;stroke:transparent;stroke-opacity:0;stroke-width:1;vector-effect:non-scaling-stroke;transition:fill-opacity .16s ease,stroke-opacity .16s ease}
.atlas-svg-continent.gold .atlas-svg-continent-piece{fill:#9a7950}.atlas-svg-continent.violet .atlas-svg-continent-piece{fill:#78688d}
.atlas-svg-continent-label{fill:#fff3c4;paint-order:stroke;stroke:#193c43;stroke-width:4px;stroke-linejoin:round;font:700 16px ui-sans-serif,system-ui,sans-serif;pointer-events:none;text-anchor:middle}
.atlas-svg-region{cursor:pointer;fill:#4f9384;fill-opacity:0;stroke:transparent;stroke-opacity:0;stroke-width:1;vector-effect:non-scaling-stroke;outline:none;transition:fill-opacity .16s ease,stroke-opacity .16s ease}
.atlas-svg-region.gold{fill:#b48a4f}.atlas-svg-region.violet{fill:#88709d}.atlas-svg-region.rose{fill:#a5625c}
.atlas-svg-pin{cursor:pointer;outline:none}.atlas-svg-pin circle{fill:#a85649;stroke:#fff2c6;stroke-width:2;vector-effect:non-scaling-stroke;filter:drop-shadow(0 2px 3px rgba(19,36,58,.35))}.atlas-svg-pin.teal circle{fill:#2eaaa0}.atlas-svg-pin.gold circle{fill:#d39b4f}.atlas-svg-pin.violet circle{fill:#967caf}.atlas-svg-pin.rose circle{fill:#c86868}.atlas-svg-pin:hover circle,.atlas-svg-pin:focus-visible circle,.atlas-svg-pin.selected circle{stroke:#173844;stroke-width:3}.atlas-svg-pin-callout{opacity:0;pointer-events:none;transition:opacity .16s ease}.atlas-svg-pin:hover .atlas-svg-pin-callout,.atlas-svg-pin:focus-visible .atlas-svg-pin-callout,.atlas-svg-pin.selected .atlas-svg-pin-callout{opacity:1}.atlas-svg-pin-callout rect{fill:rgba(19,36,58,.96);stroke:#f4e6b4;stroke-width:1;vector-effect:non-scaling-stroke}.atlas-svg-pin-callout text{fill:#f7ebc8;font:11px ui-sans-serif,system-ui,sans-serif}.atlas-svg-pin-callout tspan:last-child{fill:#d4e0d8;font-size:9px}.atlas-vector-empty{display:grid;place-content:center;gap:.35rem;align-content:center;padding:1.5rem;text-align:center;color:#f5e6bc;background:linear-gradient(145deg,#315f63,#1f414b)}.atlas-vector-empty-mark{display:grid;place-items:center;margin:0 auto;width:3rem;height:3rem;border:1px solid rgba(244,230,180,.45);border-radius:50%;font-size:1.4rem}.atlas-vector-empty strong{font:700 1rem Georgia,serif}.atlas-vector-empty small{max-width:20rem;color:#c7d7d0;font-size:.68rem;line-height:1.4}.atlas-selected-bearing{display:grid;gap:.16rem;margin:.7rem 0;padding:.65rem;border-left:2px solid var(--teal-deep);background:rgba(46,200,173,.08)}.atlas-selected-bearing strong{font-size:.8rem}.atlas-selected-bearing small{color:var(--ink-soft);font-size:.64rem;line-height:1.35}
@media(max-width:760px){.atlas-vector-surface{aspect-ratio:3/2}.atlas-svg-continent-label{font-size:13px}.atlas-svg-pin-callout{display:none}}
.atlas-tabs{display:flex;gap:.25rem;overflow-x:auto;margin:-.25rem 0 .7rem;padding:.2rem .1rem .35rem;scrollbar-width:thin}.atlas-tab{flex:0 0 auto;padding:.45rem .7rem;color:var(--ink-soft);background:rgba(232,214,182,.2);border:1px solid transparent;border-radius:.35rem;font:700 .65rem ui-sans-serif,system-ui,sans-serif;white-space:nowrap}.atlas-tab:hover,.atlas-tab:focus-visible{color:var(--teal-deep);border-color:rgba(46,200,173,.35);outline:none}.atlas-tab.active{color:#f7e8c2;background:linear-gradient(145deg,#1d5360,#173044);border-color:rgba(232,173,89,.42);box-shadow:0 0 0 2px rgba(232,173,89,.08)}.atlas-presentation-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;margin-bottom:.55rem}.atlas-presentation-controls .tiny-label{margin-right:.15rem}.atlas-presentation-controls .filter-chip{padding:.35rem .55rem}.atlas-static-note{margin-left:auto;color:var(--ink-soft);font-size:.62rem;font-style:italic}.atlas-map-mode-map .atlas-svg-paper{fill-opacity:.18}.atlas-map-mode-terrain .atlas-svg-paper{fill-opacity:.9}.atlas-map-mode-terrain .atlas-svg-region{fill-opacity:.22}.atlas-svg-region{vector-effect:non-scaling-stroke}.atlas-empty-copy{margin:.8rem 0;color:var(--ink-soft);font-size:.7rem;line-height:1.4}.atlas-popup-backdrop{position:fixed;inset:0;z-index:70;display:grid;place-items:center;padding:1rem;background:rgba(8,20,27,.74);backdrop-filter:blur(3px)}.atlas-popup{width:min(860px,calc(100vw - 2rem));max-height:min(780px,calc(100vh - 2rem));overflow:hidden;border:1px solid rgba(232,173,89,.38);border-radius:.75rem;background:var(--paper);box-shadow:0 24px 70px rgba(0,0,0,.36)}.atlas-popup-head{display:flex;justify-content:space-between;gap:1rem;align-items:start;padding:.85rem 1rem;border-bottom:1px solid var(--line);background:linear-gradient(145deg,#173844,#214b54);color:#f4e7c5}.atlas-popup-head h2{margin:.15rem 0 0;color:#f4e7c5;font:700 1.45rem Georgia,serif}.atlas-popup-head .tiny-label{color:#a8cfc0}.atlas-popup-head .modal-close{color:#f4e7c5;background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.18)}.atlas-popup-body{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(220px,.65fr);min-height:360px}.atlas-popup-plate{min-width:0;padding:.7rem;background:#173844}.atlas-popup-plate svg{display:block;width:100%;height:100%;max-height:470px;aspect-ratio:3/2;background:#365b5c}.atlas-popup-outline{fill:none;stroke:#ffd98a;stroke-width:2;stroke-opacity:.78;vector-effect:non-scaling-stroke}.atlas-popup-sub{cursor:pointer;fill:#4f9384;fill-opacity:.13;stroke:#f4e6b4;stroke-width:1;stroke-opacity:.76;vector-effect:non-scaling-stroke;transition:fill-opacity .14s ease,stroke-width .14s ease}.atlas-popup-sub.gold{fill:#b48a4f}.atlas-popup-sub.violet{fill:#88709d}.atlas-popup-sub.rose{fill:#a5625c}.atlas-popup-sub:hover,.atlas-popup-sub:focus-visible,.atlas-popup-sub.selected{fill-opacity:.48;stroke-width:2.3;outline:none}.atlas-popup-side{min-width:0;max-height:470px;overflow:auto;padding:.9rem;background:rgba(255,255,255,.54)}.atlas-popup-side h3{margin:.2rem 0 .65rem;color:var(--ink);font:700 .95rem Georgia,serif;text-transform:uppercase;letter-spacing:.06em}.atlas-popup-side ul{display:grid;gap:.2rem;margin:0;padding:0;list-style:none}.atlas-popup-sub-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.42rem;align-items:center;width:100%;padding:.45rem .4rem;color:var(--ink);background:transparent;border:1px solid transparent;border-radius:.35rem;text-align:left}.atlas-popup-sub-row:hover,.atlas-popup-sub-row:focus-visible,.atlas-popup-sub-row.selected{background:rgba(46,200,173,.1);border-color:rgba(46,200,173,.28);outline:none}.atlas-popup-sub-row .nm{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.68rem}.atlas-popup-sub-row small{color:var(--ink-soft);font-size:.58rem}.atlas-popup-sub-dot{width:.48rem;height:.48rem;border-radius:50%;background:#4f9384}.atlas-popup-sub-dot.gold{background:#b48a4f}.atlas-popup-sub-dot.violet{background:#88709d}.atlas-popup-sub-dot.rose{background:#a5625c}.atlas-popup-empty{padding:.5rem;color:var(--ink-soft);font-size:.68rem;font-style:italic}.atlas-popup-foot{display:flex;justify-content:space-between;gap:.8rem;align-items:center;padding:.65rem .9rem;border-top:1px solid var(--line);color:var(--ink-soft);font-size:.62rem}.atlas-popup-foot .text-button{padding:0;color:var(--teal-deep);font-size:.64rem}@media(max-width:760px){.atlas-static-note{width:100%;margin-left:0}.atlas-popup-body{grid-template-columns:1fr}.atlas-popup-side{max-height:250px}.atlas-popup-plate svg{max-height:330px}.atlas-popup-foot{display:grid;gap:.35rem}.atlas-popup-foot .text-button{justify-self:start}}
.search-result-alias,.search-result-neighbor{display:block;margin-top:.25rem;color:var(--teal-deep);font-size:.62rem;line-height:1.35}.search-result-neighbor{color:var(--gold-deep);font-style:italic}.search-neighbor-shelf{margin-top:1rem}.search-neighbor-shelf>.card-title-row{align-items:start}.search-neighbor-shelf>.card-title-row p{max-width:42rem}.search-neighbor-list{margin-top:.65rem}.search-neighbor-list .search-result-card{border-color:rgba(189,145,65,.38);background:rgba(239,220,174,.13)}
.dispatch-tale{border-left:2px solid rgba(164,117,205,.58)}.dispatch-boundary{display:block;margin-top:.45rem;color:var(--ink-soft);font-size:.64rem;line-height:1.35}.storyteller-shelf{margin:0 0 1rem;padding:1rem}.storyteller-shelf .card-title-row p{max-width:38rem;margin:.35rem 0 0;color:var(--ink-soft);font-size:.72rem;line-height:1.4}.storyteller-identity-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.75rem;padding:.8rem 0;border-top:1px solid var(--line)}.storyteller-identity-mark{display:grid;place-items:center;width:2.35rem;height:2.35rem;border-radius:50%;background:rgba(119,76,158,.16);color:#7b4f9a;font-size:1.15rem;box-shadow:inset 0 0 0 1px rgba(119,76,158,.22)}.storyteller-identity-mark.teal{background:rgba(46,160,145,.12);color:#287c71}.storyteller-identity-mark.gold{background:rgba(218,169,73,.16);color:#9a6e1b}.storyteller-identity-mark.rose{background:rgba(190,91,114,.14);color:#9a4960}.storyteller-identity-copy{min-width:0}.storyteller-identity-copy .card-title-row{align-items:start}.storyteller-identity-copy strong{display:block;font-size:.85rem}.storyteller-identity-copy small{display:block;margin-top:.2rem;color:var(--ink-soft);font-size:.64rem}.storyteller-identity-copy ul{display:grid;gap:.35rem;margin:.65rem 0 0;padding:0;list-style:none}.storyteller-identity-copy li{display:flex;justify-content:space-between;gap:.7rem;align-items:center;padding:.45rem .55rem;border-radius:.35rem;background:rgba(232,214,182,.18);font-size:.68rem}.storyteller-identity-copy li span{display:grid;gap:.15rem}.storyteller-identity-copy li small{font-size:.58rem}.storyteller-empty-row{color:var(--ink-soft);font-style:italic}.storyteller-dialog{max-width:48rem}.storyteller-identity-form,.storyteller-tale-form{display:grid;gap:.8rem;margin:0 0 1rem;padding:1rem;border:1px solid var(--line);border-radius:.65rem;background:rgba(232,214,182,.12)}.storyteller-identity-form h3,.storyteller-tale-form h3{margin:.15rem 0 0;font-size:.95rem}.storyteller-reveal-line{display:flex;justify-content:space-between;gap:.8rem;align-items:center;padding:.65rem .7rem;border-radius:.45rem;background:rgba(46,200,173,.08);border:1px solid rgba(46,200,173,.18)}.storyteller-reveal-line span{display:grid;gap:.15rem}.storyteller-reveal-line strong{font-size:.75rem}.storyteller-reveal-line small{color:var(--ink-soft);font-size:.62rem;line-height:1.35}.storyteller-preview-shelf{display:grid;gap:.55rem;margin-top:.3rem;padding-top:.8rem;border-top:1px solid var(--line)}.storyteller-preview-shelf h3{font-size:.85rem}.storyteller-preview-card{display:grid;gap:.6rem;padding:.8rem;border-radius:.55rem;background:rgba(15,38,43,.9);color:#f8e8ba;border:1px solid rgba(143,213,199,.25)}.storyteller-preview-head{display:flex;justify-content:space-between;gap:.6rem;align-items:center}.storyteller-preview-card h4{margin:0;font-size:.9rem}.storyteller-preview-card>p{margin:0;color:#e7d7b9;font-size:.72rem;line-height:1.5;white-space:pre-wrap}.storyteller-preview-card dl{display:grid;gap:.35rem;margin:0}.storyteller-preview-card dl div{display:grid;grid-template-columns:8rem minmax(0,1fr);gap:.5rem;font-size:.65rem}.storyteller-preview-card dt{color:#9bc9bd;text-transform:uppercase;letter-spacing:.05em}.storyteller-preview-card dd{margin:0}.connection-sealed{color:#c4d7cf}.connection-shown{color:#f2c779}.connection-open{color:#8fd5c7}.storyteller-preview-card>small{color:#b8c8c3;font-size:.62rem;line-height:1.4}.storyteller-preview-empty{margin:0;color:var(--ink-soft);font-size:.68rem;font-style:italic}.tale-reader-dialog{max-width:48rem}.tale-reader-seal{display:flex;gap:.7rem;align-items:center;padding:.75rem;border:1px solid rgba(143,213,199,.2);border-radius:.55rem;background:rgba(232,214,182,.15)}.tale-reader-seal>div{display:grid;gap:.15rem;flex:1}.tale-reader-seal strong{font-size:.8rem}.tale-reader-seal small{color:var(--ink-soft);font-size:.64rem;line-height:1.4}.tale-reader-body{margin:1rem 0;padding:1rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-family:Georgia,serif;font-size:1rem;line-height:1.75;white-space:pre-wrap}.tale-replies{display:grid;gap:.7rem}.tale-reply{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.65rem;padding:.65rem 0;border-top:1px solid var(--line)}.tale-reply p{margin:.25rem 0;color:var(--ink);font-size:.75rem;line-height:1.45;white-space:pre-wrap}.tale-reply small{color:var(--ink-soft);font-size:.6rem}.tale-reply-composer{display:grid;gap:.6rem;padding-top:.8rem;border-top:1px solid var(--line)}
@media(max-width:620px){.storyteller-reveal-line,.storyteller-preview-head,.tale-reader-seal{display:grid;align-items:start}.storyteller-preview-card dl div{grid-template-columns:1fr}.storyteller-identity-copy .card-title-row{display:grid}.storyteller-identity-copy li{align-items:start;display:grid}.storyteller-identity-copy li .text-button{justify-self:start}}
.page-chapter-banner{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.8rem;align-items:center;margin:0 0 1rem;padding:.8rem 1rem;border:1px solid rgba(143,213,199,.3);border-radius:.65rem;background:linear-gradient(120deg,rgba(25,62,71,.94),rgba(19,42,48,.9));color:#f5e8c3}.page-chapter-banner.closed{border-color:rgba(214,173,90,.42);background:linear-gradient(120deg,rgba(55,48,36,.94),rgba(34,39,40,.9))}.page-chapter-banner img{width:2.3rem;height:2.3rem}.page-chapter-banner>div{display:grid;gap:.15rem;min-width:0}.page-chapter-banner .eyebrow{color:#9fd8c8}.page-chapter-banner strong{font-size:1rem}.page-chapter-banner p{margin:.15rem 0 0;color:#d9d1bd;font-size:.68rem;line-height:1.4}.page-chapter-actions{display:flex!important;gap:.4rem;align-items:center;flex-wrap:wrap;justify-content:flex-end}.page-chapter-actions .outline-button{border-color:rgba(244,231,197,.3);color:#f4e7c5}.page-chapter-shelf{margin-top:1rem}.chapter-list{display:grid;gap:.55rem;margin-top:.8rem}.chapter-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.8rem;align-items:center;padding:.7rem;border-top:1px solid var(--line)}.chapter-row>div:first-child{display:grid;gap:.16rem}.chapter-row h3{margin:.15rem 0 0;font-size:.82rem}.chapter-row p{margin:.15rem 0;color:var(--ink-soft);font-size:.68rem;line-height:1.4}.chapter-row small{color:var(--ink-soft);font-size:.6rem}.chapter-row-actions{display:flex!important;gap:.4rem;align-items:center;flex-wrap:wrap;justify-content:flex-end}.chapter-row-closed{opacity:.76}.chapter-row .seal{justify-self:start}.chapter-row .danger-text{color:#a04c43}.modal-backdrop:has([data-chapter-composer]){z-index:75}@media(max-width:700px){.page-chapter-banner,.chapter-row{grid-template-columns:1fr}.page-chapter-banner img{display:none}.page-chapter-actions,.chapter-row-actions{justify-content:flex-start!important}.page-chapter-actions .outline-button{width:auto}}
.memorial-chapter-surface{margin:0 0 1rem;border-color:rgba(214,173,90,.32);background:linear-gradient(140deg,rgba(46,39,31,.96),rgba(29,35,36,.94));color:#f1e5c7}.memorial-chapter-surface .muted-copy,.memorial-chapter-surface .form-hint{color:#c9c1ad}.memorial-contributors{margin:1rem 0;padding-top:.8rem;border-top:1px solid rgba(244,231,197,.15)}.memorial-contributors h3{margin:0;font-size:.8rem}.memorial-contributors ul{display:grid;gap:.35rem;margin:.6rem 0 0;padding:0;list-style:none}.memorial-contributor-row{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.5rem .65rem;border:1px solid rgba(244,231,197,.14);border-radius:.45rem;background:rgba(10,19,20,.22)}.memorial-contributor-row span:first-child{display:grid;gap:.12rem}.memorial-contributor-row small,.memorial-entry-head small{color:#bfb7a5;font-size:.62rem}.memorial-inline-actions,.memorial-memory-actions{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap}.memorial-invite-desk,.memorial-memory-desk{display:grid;gap:.55rem;margin:1rem 0;padding:.8rem;border:1px solid rgba(143,213,199,.2);border-radius:.55rem;background:rgba(8,18,20,.26)}.memorial-invite-desk input,.memorial-memory-desk input,.memorial-memory-desk textarea{width:100%;border:1px solid rgba(244,231,197,.2);border-radius:.35rem;background:rgba(4,12,13,.5);color:#f4e7c5;padding:.55rem;font:inherit;font-size:.75rem}.memorial-memory-desk .eyebrow{margin:0;color:#9fd8c8}.memorial-memory-actions{justify-content:flex-start}.memorial-entry-list{display:grid;gap:.7rem;margin-top:1rem}.memorial-entry{padding:.85rem;border-left:2px solid #d6ad5a;border-radius:.35rem;background:rgba(10,18,20,.34)}.memorial-entry.withdrawn{opacity:.65;border-left-color:#887e6d}.memorial-entry-head{display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap}.memorial-entry h3{margin:.55rem 0 .25rem;font-size:.88rem;color:#f4e7c5}.memorial-entry p{margin:.55rem 0 0;color:#e1d8c4;white-space:pre-wrap;line-height:1.55;font-size:.75rem}.memorial-entry-actions{display:flex;gap:.45rem;flex-wrap:wrap;margin-top:.65rem}.memorial-chapter-surface .text-button{color:#c9e9df}.memorial-chapter-surface .danger-text{color:#e8a39a}
.question-mark{display:inline-flex;align-items:center;padding:.1rem .35rem;border:1px solid rgba(143,213,199,.35);border-radius:999px;color:#9fd8c8;font-size:.58rem;letter-spacing:.04em;text-transform:uppercase}.campfire-context-card{display:grid;gap:.18rem;margin:.45rem 0;padding:.55rem .7rem;border-left:2px solid #8fd5c7;border-radius:.35rem;background:rgba(19,48,50,.3)}.campfire-context-card strong{font-size:.76rem;color:#f4e7c5}.campfire-context-card small{color:#c9c1ad;font-size:.64rem}.campfire-context-card .text-button{justify-self:start;margin-top:.25rem;color:#9fd8c8}
.departure-plan{display:grid;gap:.8rem;margin:1rem 0;padding:.9rem;border:1px solid rgba(63,129,117,.28);border-radius:.6rem;background:rgba(63,129,117,.06)}.departure-plan-group{display:grid;gap:.45rem;padding-top:.65rem;border-top:1px solid var(--line)}.departure-plan-group ul{display:grid;gap:.4rem;margin:0;padding:0;list-style:none}.departure-plan-group li{display:flex;justify-content:space-between;gap:.8rem;align-items:start;padding:.55rem .6rem;border-radius:.4rem;background:rgba(232,214,182,.16)}.departure-plan-group li span{display:grid;gap:.15rem;min-width:0}.departure-plan-group li strong{font-size:.7rem}.departure-plan-group li small{color:var(--ink-soft);font-size:.58rem}.departure-plan-group li b{max-width:48%;color:var(--teal-deep);font-size:.6rem;text-align:right;line-height:1.35}.departure-recovery{padding:.7rem;border-radius:.45rem;background:rgba(214,173,90,.13);border:1px solid rgba(214,173,90,.3)}.departure-recovery strong{font-size:.72rem}.departure-recovery p{margin:.25rem 0;color:var(--ink-soft);font-size:.64rem;line-height:1.4}.departure-recovery small{color:var(--ink-soft);font-size:.58rem}@media(max-width:620px){.departure-plan-group li{display:grid}.departure-plan-group li b{max-width:none;text-align:left}}

/* ---------------------------------------------------------------------------
 * Atlas plate framing and camera
 *
 * The plate box follows the plate, not a fixed 3:2 guess. Continent plates are
 * portrait (Kalimdor 1750x2000, Eastern Kingdoms 1096x2000); forcing them into
 * a landscape box letterboxed away more than half the reading area. --atlas-aspect
 * is set per layer from the measured plate in _dimensions.json.
 * ------------------------------------------------------------------------- */
.atlas-shell { grid-template-columns: minmax(0, 1fr) minmax(286px, 23rem); align-items: start; }

.atlas-vector-surface {
  aspect-ratio: var(--atlas-aspect, 3 / 2);
  max-height: min(78vh, 860px);
  width: auto;
  max-width: 100%;
  margin-inline: auto;
}

/* The camera reads the plate at travel scale. */
/* pan-y keeps the page scrollable through the plate on touch; the drag handler takes
   horizontal and multi-touch gestures for the camera. */
.atlas-camera-surface { touch-action: pan-y; cursor: grab; }

.atlas-camera-surface::after {
  content: 'Hold Ctrl (or \2318) and scroll to zoom \00B7 drag to travel';
  position: absolute;
  inset: 0;
  z-index: 6;
  display: grid;
  place-items: center;
  padding: 1rem;
  color: #f9edc9;
  background: rgba(19, 36, 58, .62);
  font-size: .8rem;
  letter-spacing: .02em;
  text-align: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity .18s ease;
}
.atlas-camera-surface.atlas-camera-hint::after { opacity: 1; }
@media (prefers-reduced-motion: reduce) {
  .atlas-camera-surface::after { transition: none; }
}
.atlas-camera-surface.atlas-camera-panning { cursor: grabbing; }
.atlas-camera-surface .atlas-map-svg { transition: none; }

.atlas-camera-controls {
  position: absolute;
  top: .6rem;
  right: .6rem;
  z-index: 5;
  display: grid;
  gap: .25rem;
}
.atlas-camera-button {
  display: grid;
  place-items: center;
  width: 1.9rem;
  height: 1.9rem;
  padding: 0;
  color: #f9edc9;
  background: rgba(19, 36, 58, .74);
  border: 1px solid rgba(255, 255, 255, .22);
  border-radius: .4rem;
  font-size: .9rem;
  line-height: 1;
  cursor: pointer;
}
.atlas-camera-button:hover { background: rgba(19, 36, 58, .92); border-color: rgba(46, 200, 173, .5); }
.atlas-camera-button:focus-visible { outline: 2px solid var(--teal, #2ec8ad); outline-offset: 2px; }

/* A quiet mark that the reader has left the full plate. */
.atlas-camera-surface.atlas-camera-engaged .atlas-map-caption .tiny-label::after {
  content: ' · closed in';
  opacity: .75;
}

@media (max-width: 960px) {
  .atlas-vector-surface { max-height: min(62vh, 560px); }
}

/* ---------------------------------------------------------------------------
 * Region overlay: the plate reads first
 *
 * Every boundary used to sit on the map at 45% fill with a cream stroke, so the
 * art was permanently veiled and the plate's own labels fought a grid of outlines.
 * At rest the boundaries are now invisible. Hovering, focusing or selecting one
 * raises a faint wash of that region alone.
 *
 * The shapes stay in the DOM and stay hit-testable -- an invisible fill still
 * takes a pointer, where fill:none would not -- so clicking, keyboard focus and
 * the screen-reader labels are unchanged.
 * ------------------------------------------------------------------------- */
.atlas-svg-region {
  cursor: pointer;
  fill: #4f9384;
  fill-opacity: 0;
  stroke: transparent;
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
  outline: none;
  transition: fill-opacity .16s ease, stroke-opacity .16s ease;
}
.atlas-svg-region.gold { fill: #b48a4f; }
.atlas-svg-region.violet { fill: #88709d; }
.atlas-svg-region.rose { fill: #a5625c; }

.atlas-svg-region:hover,
.atlas-svg-region.selected {
  fill-opacity: .22;
  stroke: #cfe6dd;
  stroke-opacity: .5;
  stroke-width: 1;
}
.atlas-svg-region.selected { fill-opacity: .28; }

/* Keyboard focus has to be visible to be usable, so it reads a little stronger
   than hover -- still the region's own colour, never a white outline. */
.atlas-svg-region:focus-visible {
  fill-opacity: .34;
  stroke: #2ec8ad;
  stroke-opacity: .95;
  stroke-width: 2;
}

/* The world plate's continent shapes follow the same rule. */
.atlas-svg-continent-piece {
  fill: #567f73;
  fill-opacity: 0;
  stroke: transparent;
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
  transition: fill-opacity .16s ease, stroke-opacity .16s ease;
}
.atlas-svg-continent:hover .atlas-svg-continent-piece {
  fill-opacity: .2;
  stroke: #cfe6dd;
  stroke-opacity: .45;
}
.atlas-svg-continent:focus-visible .atlas-svg-continent-piece {
  fill-opacity: .32;
  stroke: #2ec8ad;
  stroke-opacity: .95;
  stroke-width: 2;
}

/* With no boundary showing at rest, the plate carries the reading, so its own
   ground should not be dulled by the paper wash underneath it either. */
.atlas-camera-surface .atlas-svg-paper { fill-opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  .atlas-svg-region,
  .atlas-svg-continent-piece { transition: none; }
}

/* Pointing at a folio row lights its boundary, and pointing at a boundary lights its row. */
.atlas-svg-region.atlas-linked {
  fill-opacity: .22;
  stroke: #cfe6dd;
  stroke-opacity: .5;
}
.atlas-region-row.atlas-linked {
  color: var(--teal-deep);
  background: rgba(46, 200, 173, .12);
  border-color: rgba(46, 200, 173, .45);
}

/* ---------------------------------------------------------------------------
 * The outer world is water
 *
 * Everything outside the continent plates -- the ground behind them and the gutter
 * between them -- was a paper gradient that read as grey and tan. On a world plate
 * that space is ocean, so it carries the same colour the plates' own open sea was
 * sampled at: rgb(27, 48, 68).
 * ------------------------------------------------------------------------- */
:root { --atlas-ocean: #1b3044; }

.atlas-vector-surface { background: var(--atlas-ocean); }
.atlas-camera-surface .atlas-svg-paper { fill: var(--atlas-ocean); fill-opacity: 1; }
.atlas-vector-surface.atlas-map-mode-terrain .atlas-svg-paper { fill-opacity: 1; }

/* ---------------------------------------------------------------------------
 * Lore beneath the plate, the hunt panel, and the subregion folio card
 * ------------------------------------------------------------------------- */
.atlas-lore { margin-top: .85rem; padding: .8rem .9rem; background: rgba(232,214,182,.26); border: 1px solid var(--line); border-left: 2px solid var(--teal-deep); border-radius: .5rem; }
.atlas-lore p { margin: .3rem 0 0; color: var(--ink); font-size: .82rem; line-height: 1.6; }
.atlas-lore-empty { border-left-color: rgba(125,102,65,.35); }
.atlas-lore-empty p { color: var(--ink-soft); font-style: italic; }

.atlas-hunt-panel { display: grid; gap: .7rem; }
.atlas-hunt-empty { display: grid; place-items: center; gap: .3rem; padding: 1.6rem 1rem; text-align: center; color: var(--ink-soft); background: rgba(232,214,182,.24); border: 1px dashed var(--line); border-radius: .55rem; }
.atlas-hunt-mark { display: grid; place-items: center; width: 2.2rem; height: 2.2rem; border: 1px solid var(--line); border-radius: 50%; font-size: 1rem; }
.atlas-hunt-empty strong { font-size: .82rem; }
.atlas-hunt-empty small { max-width: 17rem; font-size: .68rem; line-height: 1.45; }

/* The quarry list scrolls inside the panel so the plate beside it never moves. */
.atlas-hunt-scroll { display: grid; gap: .45rem; max-height: 26rem; overflow-y: auto; padding-right: .25rem; scrollbar-width: thin; }
.hunt-card { display: flex; gap: .6rem; padding: .6rem; background: rgba(232,214,182,.3); border: 1px solid var(--line); border-radius: .5rem; }
.hunt-card-mark { flex: 0 0 auto; display: grid; place-items: center; width: 2.1rem; height: 2.1rem; color: #f8e8ba; background: linear-gradient(145deg,#1e535d,#718e7c); border-radius: .4rem; font-size: 1rem; }
.hunt-card-mark.gold { background: linear-gradient(145deg,#68543c,#bf9c65); }
.hunt-card-mark.rose { background: linear-gradient(145deg,#6d3f3a,#a5625c); }
.hunt-card-body { min-width: 0; display: grid; gap: .12rem; }
.hunt-card-head { display: flex; justify-content: space-between; gap: .5rem; align-items: baseline; }
.hunt-card-head strong { font-size: .78rem; }
.hunt-card-level { flex: 0 0 auto; color: var(--ink-soft); font-size: .64rem; }
.hunt-card p { margin: .1rem 0 0; color: var(--ink-soft); font-size: .68rem; line-height: 1.4; }

.atlas-hunt-minimap { position: relative; display: grid; gap: .3rem; width: 100%; padding: 0; background: none; border: 1px solid var(--line); border-radius: .5rem; overflow: hidden; cursor: pointer; }
.atlas-hunt-minimap:hover { border-color: rgba(46,200,173,.5); }
.atlas-hunt-minimap:focus-visible { outline: 2px solid var(--teal-deep); outline-offset: 2px; }
.atlas-hunt-minimap-svg { display: block; width: 100%; height: 7rem; background: var(--atlas-ocean); }
.atlas-hunt-minimap-blank { display: grid; place-items: center; height: 7rem; background: var(--atlas-ocean); color: #cfe6dd; }
.atlas-mini-sib { fill: #4f9384; fill-opacity: .18; stroke: none; }
.atlas-mini-self { fill: #2ec8ad; fill-opacity: .5; stroke: #cfe6dd; stroke-opacity: .8; stroke-width: 1; vector-effect: non-scaling-stroke; }
.atlas-hunt-minimap-note { padding: .35rem .5rem; color: var(--ink-soft); font-size: .66rem; text-align: left; }

.atlas-subcard { position: relative; width: min(30rem, 92vw); max-height: 86vh; overflow-y: auto; background: var(--paper, #f3e8d0); border: 1px solid var(--line); border-radius: .7rem; }
.atlas-subcard-banner { display: block; width: 100%; height: 11rem; object-fit: cover; }
.atlas-subcard-banner-empty { display: grid; place-items: center; background: linear-gradient(145deg,#1e4150,#4a6b63); color: #d8e6dd; font-size: 2.2rem; }
.atlas-subcard-body { display: grid; gap: .4rem; padding: 1rem 1.1rem 1.2rem; }
.atlas-subcard-body h2 { margin: 0; font-size: 1.1rem; }
.atlas-subcard-body p { margin: 0; color: var(--ink-soft); font-size: .8rem; line-height: 1.6; }
.atlas-subcard-population { display: grid; gap: .1rem; margin-top: .55rem; padding: .7rem .8rem; color: #f9edc9; background: linear-gradient(145deg,#1e535d,#3c6d64); border: 1px solid rgba(255,255,255,.18); border-radius: .5rem; text-align: left; cursor: pointer; }
.atlas-subcard-population:hover { background: linear-gradient(145deg,#246270,#478077); }
.atlas-subcard-population strong { font-size: .86rem; }
.atlas-subcard-population span { color: #cfe6dd; font-size: .68rem; }
.atlas-subcard-population-pending { margin: .55rem 0 0; padding: .65rem .75rem; color: var(--ink-soft); background: rgba(232,214,182,.3); border: 1px dashed var(--line); border-radius: .5rem; font-size: .72rem; }

/* ---------------------------------------------------------------------------
 * Curated index search
 * ------------------------------------------------------------------------- */
.search-curated { display: grid; gap: .7rem; padding: .85rem 1rem; margin-bottom: .9rem; }
.search-curated-head { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .8rem; align-items: center; }
.search-curated-toggle { display: flex; gap: .55rem; align-items: center; padding: .3rem .1rem; background: none; border: none; color: var(--ink); text-align: left; cursor: pointer; }
.search-curated-toggle:focus-visible { outline: 2px solid var(--teal-deep); outline-offset: 3px; border-radius: .3rem; }
.search-curated-caret { color: var(--teal-deep); font-size: .8rem; }
.search-curated-toggle strong { display: block; font-size: .82rem; }
.search-curated-toggle small { display: block; color: var(--ink-soft); font-size: .66rem; }

/* The toggle sits beside the expander, never inside it: a reader must be able to
   see that player pages are being hidden without opening anything. */
.search-pc-toggle { display: flex; gap: .55rem; align-items: center; padding: .45rem .6rem; background: rgba(232,214,182,.34); border: 1px solid var(--line); border-radius: .5rem; cursor: pointer; }
.search-pc-toggle.on { background: rgba(46,200,173,.12); border-color: rgba(46,200,173,.45); }
.search-pc-toggle input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.search-pc-switch { flex: 0 0 auto; position: relative; width: 2.1rem; height: 1.1rem; background: rgba(19,36,58,.22); border-radius: 999px; transition: background .16s ease; }
.search-pc-switch::after { content: ''; position: absolute; top: .15rem; left: .15rem; width: .8rem; height: .8rem; background: #fdf6e4; border-radius: 50%; transition: transform .16s ease; }
.search-pc-toggle.on .search-pc-switch { background: var(--teal-deep, #1f7770); }
.search-pc-toggle.on .search-pc-switch::after { transform: translateX(1rem); }
.search-pc-toggle input:focus-visible + .search-pc-switch { outline: 2px solid var(--teal-deep); outline-offset: 2px; }
.search-pc-copy strong { display: block; font-size: .74rem; }
.search-pc-copy small { display: block; color: var(--ink-soft); font-size: .63rem; }

.search-form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: .6rem; padding-top: .7rem; border-top: 1px solid var(--line); }
.search-form-field { display: grid; gap: .22rem; min-width: 0; }
.search-form-field select, .search-form-field input { width: 100%; padding: .42rem .5rem; color: var(--ink); background: rgba(255,255,255,.55); border: 1px solid var(--line); border-radius: .4rem; font-size: .74rem; }
.search-form-field select:focus-visible, .search-form-field input:focus-visible { outline: 2px solid var(--teal-deep); outline-offset: 1px; }
.search-form-actions { display: flex; align-items: flex-end; }
@media (prefers-reduced-motion: reduce) { .search-pc-switch, .search-pc-switch::after { transition: none; } }

/* ---------------------------------------------------------------------------
 * The map is the page
 *
 * The plate was competing with a tall title banner, a presentation strip and a
 * legend before a reader saw any of it. The heading is reduced to a single line,
 * the map column takes the width, and the plate is sized so the whole world is
 * visible the moment the page loads rather than after a scroll.
 * ------------------------------------------------------------------------- */
.atlas-view-header { gap: .4rem; margin-bottom: .35rem; padding-bottom: .35rem; align-items: center; }
.atlas-view-header h1 { margin: 0; font-size: 1.35rem; line-height: 1.15; }
.atlas-view-header .eyebrow { margin: 0; font-size: .58rem; }
/* The standfirst repeats the folio heading directly beside it. */
.atlas-view-header > div:first-child > p:last-child { display: none; }
.atlas-header-tools .tiny-label { display: none; }

.atlas-tabs { margin: 0 0 .35rem; padding: .1rem .1rem .2rem; }
.atlas-breadcrumbs { margin-bottom: .4rem; font-size: .68rem; }
.atlas-breadcrumb.current span { color: var(--ink); font-weight: 600; }

.atlas-shell { padding: .6rem; gap: .8rem; grid-template-columns: minmax(0, 1fr) minmax(250px, 19rem); }
.atlas-map-key { padding: .4rem .15rem 0; font-size: .58rem; }

/* Fit the whole plate in the first screenful. The header, tabs, breadcrumbs and
   legend come to roughly 13rem; the rest of the viewport is the map. */
.atlas-vector-surface { max-height: calc(100vh - 13rem); }
@media (max-width: 960px) { .atlas-vector-surface { max-height: 58vh; } }

.atlas-lore { margin-top: .6rem; padding: .6rem .75rem; }
.atlas-lore p { font-size: .76rem; line-height: 1.5; }

/* ===========================================================================
 * Atlas — one bounded widget
 *
 * The shell was growing to whatever the folio list needed, so the page ran on
 * past the map and the "widget" stopped reading as one object. Map column and
 * folio now share one height, and the list scrolls inside it.
 * ======================================================================== */
.atlas-shell {
  --atlas-widget-h: min(74vh, 780px);
  align-items: stretch;
  padding: .75rem;
  gap: .9rem;
  border-radius: .8rem;
}
.atlas-map-column { display: flex; flex-direction: column; min-height: 0; }
.atlas-vector-surface { max-height: none; flex: 1 1 auto; min-height: 0; }

.atlas-folio {
  display: flex;
  flex-direction: column;
  min-height: 0;
  max-height: var(--atlas-widget-h);
  padding: .8rem .85rem;
  border-radius: .6rem;
}
/* Only the list scrolls; the heading and the reading note stay put. */
.atlas-region-list,
.atlas-hunt-scroll {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow-y: auto;
  padding-right: .3rem;
  scrollbar-width: thin;
  scrollbar-color: rgba(125,102,65,.35) transparent;
}
.atlas-region-list::-webkit-scrollbar, .atlas-hunt-scroll::-webkit-scrollbar { width: 7px; }
.atlas-region-list::-webkit-scrollbar-thumb, .atlas-hunt-scroll::-webkit-scrollbar-thumb { background: rgba(125,102,65,.3); border-radius: 99px; }
.atlas-folio-note { flex: 0 0 auto; margin-top: .6rem; padding-top: .5rem; }

/* The list is a legend for the map, not a competing index: quieter rows, no
   heavy chrome, the name doing the work. */
.atlas-region-row {
  padding: .42rem .5rem;
  background: transparent;
  border: 1px solid transparent;
  border-radius: .35rem;
}
.atlas-region-row + .atlas-region-row { border-top-color: rgba(125,102,65,.12); }
.atlas-region-row strong { font-size: .73rem; font-weight: 600; }
.atlas-region-row small { font-size: .6rem; opacity: .75; }
.atlas-region-row span[aria-hidden] { opacity: 0; transition: opacity .14s ease; }
.atlas-region-row:hover,
.atlas-region-row.atlas-linked { background: rgba(46,200,173,.10); border-color: rgba(46,200,173,.3); }
.atlas-region-row:hover span[aria-hidden],
.atlas-region-row.atlas-linked span[aria-hidden] { opacity: .6; }
.atlas-region-row:focus-visible { outline: 2px solid var(--teal-deep); outline-offset: -1px; }

/* Breadcrumbs now sit under the plate, where the legend used to be. */
.atlas-map-column .atlas-breadcrumbs {
  margin: .45rem 0 0;
  padding-top: .4rem;
  border-top: 1px solid rgba(125,102,65,.16);
  font-size: .66rem;
}

/* Highlights: a wash, no outline. The plate carries the detail; the overlay
   only needs to say "this one". */
.atlas-svg-region:hover,
.atlas-svg-region.selected,
.atlas-svg-region.atlas-linked { fill-opacity: .14; stroke: none; }
.atlas-svg-region.selected { fill-opacity: .20; }
.atlas-svg-region:focus-visible { fill-opacity: .26; stroke: #2ec8ad; stroke-opacity: .9; stroke-width: 1.5; }
.atlas-svg-continent:hover .atlas-svg-continent-piece { fill-opacity: .14; stroke: none; }

@media (max-width: 960px) {
  .atlas-shell { --atlas-widget-h: auto; }
  .atlas-folio { max-height: 24rem; }
}

/* ===========================================================================
 * Atlas — finish pass
 *
 * One spacing step (4px), one radius family, one accent. The plate is the
 * brightest thing on the page and everything else steps back from it.
 * ======================================================================== */
.atlas-shell {
  --atlas-step: .25rem;
  --atlas-radius: .55rem;
  --atlas-accent: #2ec8ad;
  background: linear-gradient(150deg, rgba(227,211,179,.4), rgba(255,255,255,.5));
  border-color: rgba(125,102,65,.2);
  box-shadow: 0 1px 2px rgba(19,36,58,.05), 0 8px 24px -16px rgba(19,36,58,.3);
}

/* Seat the plate: a dark well, so the art reads as inset rather than pasted on. */
.atlas-vector-surface {
  border-radius: var(--atlas-radius);
  border-color: rgba(19,36,58,.3);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.05), inset 0 2px 14px rgba(0,0,0,.28);
}

/* Controls: big enough to hit, dark enough to read against open water. */
.atlas-camera-controls { top: .5rem; right: .5rem; gap: .2rem; }
.atlas-camera-button {
  width: 2rem; height: 2rem;
  background: rgba(13,27,43,.72);
  border-color: rgba(255,255,255,.16);
  border-radius: .4rem;
  font-size: .95rem;
  backdrop-filter: blur(3px);
  transition: background .14s ease, border-color .14s ease, transform .14s ease;
}
.atlas-camera-button:hover { background: rgba(13,27,43,.92); border-color: rgba(46,200,173,.55); transform: translateY(-1px); }
.atlas-camera-button:active { transform: none; }

/* Folio head: the count is the status, so it carries the weight. */
.atlas-folio .card-title-row { flex: 0 0 auto; padding-bottom: calc(var(--atlas-step) * 2); border-bottom: 1px solid rgba(125,102,65,.16); }
.atlas-folio .card-title-row h2 { font-size: 1rem; line-height: 1.2; }
.atlas-folio .eyebrow { font-size: .55rem; letter-spacing: .09em; }
.atlas-folio > p { margin: calc(var(--atlas-step) * 2) 0 0; font-size: .72rem; }
.atlas-region-list { margin-top: calc(var(--atlas-step) * 2); gap: 0; }

/* Lore: a quiet footnote to the plate, not a second heading. */
.atlas-lore { margin-top: calc(var(--atlas-step) * 2); background: rgba(232,214,182,.2); border-left-width: 2px; border-radius: var(--atlas-radius); }
.atlas-lore .tiny-label { opacity: .65; }

.atlas-map-column .atlas-breadcrumbs { display: flex; flex-wrap: wrap; gap: .3rem; align-items: center; }
.atlas-map-column .atlas-breadcrumbs .text-button { font-size: .66rem; }
.atlas-map-column .atlas-breadcrumbs .text-button:hover { color: var(--teal-deep); text-decoration: underline; }

/* Motion is a cue, never a performance. */
@media (prefers-reduced-motion: reduce) {
  .atlas-camera-button, .atlas-region-row, .atlas-region-row span[aria-hidden] { transition: none; }
  .atlas-map-surface.atlas-drill-in { animation: none; }
}


/* ===========================================================================
 * Atlas — sizing, spacing and the continent switches
 *
 * THE SIZING RULE, because this broke three times:
 *
 *   The surface is the viewport. The plate fits inside it.
 *
 * It used to be the other way round -- the surface was cut to the plate's aspect
 * ratio, so its size came from whatever width the column happened to have, and the
 * column's height came from whatever the folio happened to contain. On a zone, where
 * the folio is a short empty hunt panel, that collapsed the row to 307px and rendered
 * a 1002x668 plate at 302x201 inside a 1060px column: 2.9% of the viewport.
 *
 * Now the shell owns an explicit height, the surface fills whatever box it is given,
 * and the SVG letterboxes inside it with preserveAspectRatio. Nothing downstream of
 * the plate can shrink the plate. The letterbox bars are ocean, because the surface
 * background is the same water the plates were sampled from, so a portrait plate in a
 * wide frame reads as a map in a sea rather than a picture with margins.
 * ======================================================================== */

/* The Atlas is a map tool, so it earns the page gutter back. 48px each side was
   costing ~100px of map on every screen. */
#main-content:has(.atlas-shell) { padding: 1rem 1.25rem 1.25rem; }

.atlas-shell {
  --atlas-widget-h: clamp(420px, 78vh, 940px);
  height: var(--atlas-widget-h);
  min-height: var(--atlas-widget-h);
  grid-template-rows: minmax(0, 1fr);
  /* The folio is a legend, not a second column of content. It stops growing at 15rem
     and gives everything else to the map. */
  grid-template-columns: minmax(0, 1fr) clamp(188px, 15vw, 248px);
  gap: .75rem;
  padding: .6rem;
  align-items: stretch;
}

.atlas-map-column { display: flex; flex-direction: column; min-height: 0; gap: 0; }

/* Fill the box. No aspect-ratio: the SVG handles fitting. */
.atlas-vector-surface {
  aspect-ratio: auto;
  flex: 1 1 0;
  width: 100%;
  min-width: 0;
  min-height: 0;
  max-width: none;
  max-height: none;
  margin: 0;
}

/* Below the plate, kept to the minimum that still reads. */
.atlas-map-column .atlas-breadcrumbs { flex: 0 0 auto; margin: .4rem 0 0; padding-top: .35rem; }
.atlas-lore { flex: 0 0 auto; margin-top: .4rem; padding: .5rem .65rem; }
.atlas-lore p { font-size: .74rem; line-height: 1.45; }

.atlas-folio { max-height: none; height: 100%; padding: .7rem .75rem; }

/* ---------------------------------------------------------------------------
 * Continent switches, over the folio list
 * ------------------------------------------------------------------------- */
.atlas-list-filters { display: flex; flex-wrap: wrap; gap: .3rem; margin: .5rem 0 .2rem; }
.atlas-list-filter {
  display: inline-flex; gap: .32rem; align-items: center;
  padding: .28rem .5rem;
  color: var(--ink-soft);
  background: rgba(232, 214, 182, .3);
  border: 1px solid rgba(125, 102, 65, .26);
  border-radius: 999px;
  font-size: .62rem; font-weight: 600;
  cursor: pointer;
  transition: background .14s ease, border-color .14s ease, color .14s ease, opacity .14s ease;
}
.atlas-list-filter-dot { width: .45rem; height: .45rem; border-radius: 50%; background: rgba(125, 102, 65, .3); transition: background .14s ease; }
.atlas-list-filter.on { color: var(--ink); background: rgba(46, 200, 173, .13); border-color: rgba(46, 200, 173, .45); }
.atlas-list-filter.on .atlas-list-filter-dot { background: var(--teal-deep, #1f7770); }
/* Off reads as off without relying on colour alone. */
.atlas-list-filter:not(.on) { opacity: .6; }
.atlas-list-filter:not(.on) .atlas-list-filter-dot { box-shadow: inset 0 0 0 1px rgba(125, 102, 65, .5); background: transparent; }
.atlas-list-filter:hover { border-color: rgba(46, 200, 173, .55); }
.atlas-list-filter:focus-visible { outline: 2px solid var(--teal-deep); outline-offset: 2px; }

/* ---------------------------------------------------------------------------
 * Density
 * ------------------------------------------------------------------------- */
.atlas-view-header { margin-bottom: .3rem; padding-bottom: .25rem; }
.atlas-view-header h1 { font-size: 1.25rem; }
.atlas-tabs { margin: 0 0 .3rem; }
.atlas-folio .card-title-row { padding-bottom: .4rem; }
.atlas-folio .card-title-row h2 { font-size: .92rem; }
.atlas-region-row { padding: .4rem .5rem; }
.atlas-region-row strong { font-size: .72rem; }
.atlas-region-row small { font-size: .585rem; }

@media (max-width: 1100px) {
  .atlas-shell { grid-template-columns: minmax(0, 1fr) minmax(180px, 14rem); }
}
@media (max-width: 960px) {
  #main-content:has(.atlas-shell) { padding: .75rem; }
  .atlas-shell { height: auto; min-height: 0; grid-template-rows: auto; grid-template-columns: 1fr; }
  .atlas-vector-surface { aspect-ratio: var(--atlas-aspect, 3 / 2); flex: 0 0 auto; height: auto; }
  .atlas-folio { height: auto; max-height: 22rem; }
}

/* ---------------------------------------------------------------------------
 * Folio rows are buttons
 *
 * A seated surface, a border, a hover lift and a press state, so they read as
 * things you can press — while staying calmer than the plate beside them. The
 * chevron waits for hover: forty-five rows should not be forty-five arrows.
 * ------------------------------------------------------------------------- */
.atlas-region-list { gap: .28rem; }
.atlas-region-row {
  display: flex; gap: .5rem; align-items: center;
  background: linear-gradient(180deg, rgba(255,255,255,.5), rgba(232,214,182,.34));
  border: 1px solid rgba(125,102,65,.26);
  border-radius: .4rem;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.45), 0 1px 1px rgba(19,36,58,.05);
  transition: background .14s ease, border-color .14s ease, transform .1s ease, box-shadow .14s ease;
}
.atlas-region-row + .atlas-region-row { border-top-color: rgba(125,102,65,.26); }
.atlas-region-row:hover,
.atlas-region-row.atlas-linked {
  background: linear-gradient(180deg, rgba(255,255,255,.62), rgba(224,243,236,.5));
  border-color: rgba(46,200,173,.48);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.6), 0 2px 6px -2px rgba(19,36,58,.18);
}
.atlas-region-row:active { transform: translateY(1px); box-shadow: inset 0 1px 1px rgba(19,36,58,.08); }
.atlas-region-row:focus-visible { outline: 2px solid var(--teal-deep); outline-offset: 1px; }
.atlas-row-copy { flex: 1 1 auto; min-width: 0; display: grid; gap: .06rem; text-align: left; }
.atlas-row-chevron { flex: 0 0 auto; opacity: 0; transition: opacity .14s ease, transform .14s ease; }
.atlas-region-row:hover .atlas-row-chevron,
.atlas-region-row.atlas-linked .atlas-row-chevron { opacity: .55; transform: translateX(2px); }

@media (prefers-reduced-motion: reduce) {
  .atlas-region-row, .atlas-row-chevron, .atlas-list-filter { transition: none; }
  .atlas-region-row:active { transform: none; }
}

/* The reading width cap is right for prose and wrong for a map. On the Atlas route the
   main column runs full-bleed: capped at 1500px and centred, it was leaving 108px of
   dead rail between the nav and the plate on a 1920 screen. */
#main-content:has(.atlas-shell) { width: 100%; max-width: none; margin-inline: 0; }

/* The letterbox surround belongs to the plate it frames. World and continent plates are
   edged in open sea, so ocean continues them; a zone plate is a parchment sheet, and
   ocean against it reads as a hard seam rather than a margin. */
.atlas-plate-zone, .atlas-plate-subregion { background: #241b12; }
.atlas-plate-zone .atlas-svg-paper, .atlas-plate-subregion .atlas-svg-paper { fill: #241b12; }
