/* ============================================================
 * table-side.css — the human-run side: the Cast (and next, Locations).
 * Loaded after style.css; only adds what these pages need.
 * ============================================================ */
.cast-filters { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin-bottom: .75rem; }
.cast-filters input[type=search] { flex: 1 1 260px; padding: .4rem .6rem; background: var(--smoke, #211C17); color: var(--vellum, #E8DFCE); border: 1px solid var(--iron, #4A3F32); border-radius: 4px; font: inherit; }
.cast-filters select { padding: .35rem .5rem; background: var(--smoke, #211C17); color: var(--vellum, #E8DFCE); border: 1px solid var(--iron, #4A3F32); border-radius: 4px; font: inherit; font-size: .9rem; }
.cast-table { width: 100%; border-collapse: collapse; font-size: .92rem; }
.cast-table th { text-align: left; padding: .45rem .5rem; border-bottom: 1px solid var(--iron, #4A3F32); color: var(--ash, #9C8F7A); font-weight: 600; font-size: .78rem; text-transform: uppercase; letter-spacing: .06em; white-space: nowrap; }
.cast-table th.sortable { cursor: pointer; }
.cast-table th.sortable:hover, .cast-table th.on { color: var(--ember-2, #E09550); }
.cast-table th.on::after { content: ' ▾'; }
.cast-table td { padding: .45rem .5rem; border-bottom: 1px solid rgba(74, 63, 50, .5); vertical-align: middle; }
.cast-row { cursor: pointer; }
.cast-row:hover td { background: rgba(232, 223, 206, .04); }
.cast-row.is-dead td { opacity: .6; }
.cast-table td.portrait { width: 44px; padding: .25rem .4rem; }
.cast-table td.portrait img, .no-portrait { width: 36px; height: 36px; border-radius: 4px; object-fit: cover; display: inline-grid; place-items: center; background: var(--oak-2, #362E25); color: var(--ash, #9C8F7A); font-family: 'IM Fell English', serif; font-size: 1.1rem; }
.cast-table td.name { font-family: 'IM Fell English', serif; font-size: 1.1rem; white-space: nowrap; }
.cast-table td.name a { text-decoration: none; }
.cast-table td.summary { max-width: 360px; color: var(--ash, #9C8F7A); }
.cast-table .tags { display: block; font-size: .78rem; color: var(--ember-2, #E09550); }
.cast-table .badge { font-size: .65rem; vertical-align: middle; }

.cast-sheet { display: grid; grid-template-columns: 280px 1fr; gap: 1rem; align-items: start; }
@media (max-width: 800px) { .cast-sheet { grid-template-columns: 1fr; } }
.cast-side { text-align: center; }
.cast-portrait { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 6px; border: 1px solid var(--iron, #4A3F32); }
.cast-portrait-empty { display: grid; place-items: center; background: var(--oak-2, #362E25); color: var(--ash, #9C8F7A); font-family: 'IM Fell English', serif; font-size: 4rem; }
.cast-upload { display: flex; gap: .4rem; align-items: center; justify-content: center; margin: .5rem 0; flex-wrap: wrap; }
.cast-upload input[type=file] { max-width: 170px; font-size: .8rem; color: var(--ash, #9C8F7A); }
.cast-facts { text-align: left; margin: .75rem 0 0; display: grid; grid-template-columns: auto 1fr; gap: .25rem .6rem; font-size: .9rem; }
.cast-facts dt { color: var(--ash, #9C8F7A); }
.cast-facts dd { margin: 0; }
.cast-summary { text-align: left; margin-top: .75rem; font-style: italic; }

/* Inside the Atlas's modal: no sidebar, tight padding. */
.embed-body { margin: 0; padding: .75rem 1rem 1.5rem; background: var(--smoke, #211C17); }
.embed-body .wrap { padding: 0; max-width: none; }
.embed-body .page-head { padding: .75rem 1rem; }
.embed-body .page-head h1 { font-size: 1.6rem; margin: 0; }
.loc-acts { margin-left: .5rem; }
.loc-acts .btn.small { font-size: .75rem; padding: .1rem .45rem; vertical-align: middle; }
.loc-mapslot { text-align: left; margin-top: .9rem; padding-top: .6rem; border-top: 1px solid var(--iron, #4A3F32); }
.loc-mapslot h4 { margin: 0 0 .2rem; font-family: 'IM Fell English', serif; font-weight: 400; color: var(--ember-2, #E09550); }
.loc-mapslot .cast-upload { justify-content: flex-start; }

/* Home: two doors. */
.home-doors { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1rem; margin-bottom: 1rem; }
.home-door { display: block; text-decoration: none; color: inherit; padding: 1.25rem 1.4rem; transition: border-color .15s; }
.home-door:hover { border-color: var(--ember-2, #E09550); }
.home-door-kicker { color: var(--ash, #9C8F7A); font-size: .78rem; text-transform: uppercase; letter-spacing: .08em; }
.home-door h2 { margin: .2rem 0 .5rem; font-family: 'IM Fell English', serif; font-weight: 400; color: var(--ember-2, #E09550); }
.home-door p { margin: 0 0 .75rem; }
.home-door-foot { color: var(--ember-2, #E09550); }
.home-first { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; border-color: var(--ember, #C9772E); margin-bottom: 1rem; }
.home-first h2 { margin: .2rem 0 .3rem; font-family: 'IM Fell English', serif; font-weight: 400; color: var(--ember-2, #E09550); }
.home-first p { margin: 0; max-width: 60ch; }
.home-chars { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; }
.home-chars h3 { margin: 0 0 .25rem; }
/* Landing: two doors in the hero. */
.lp-doors { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1rem; margin: 1.5rem 0 .75rem; text-align: left; }
.lp-door { padding: 1.25rem 1.4rem; background: var(--oak, #2C251E); border: 1px solid var(--iron, #4A3F32); border-radius: 8px; }
.lp-door h3 { margin: 0 0 .4rem; font-family: 'IM Fell English', serif; font-weight: 400; font-size: 1.5rem; color: var(--ember-2, #E09550); }
.lp-door p { margin: 0 0 .6rem; }
.lp-door-note { color: var(--ash, #9C8F7A); font-size: .9rem; }

/* Locations */
.loc-main .panel { margin-bottom: 1rem; }
.loc-main h3 { margin: 0 0 .4rem; font-family: 'IM Fell English', serif; font-weight: 400; color: var(--ember-2, #E09550); }
.loc-tree { list-style: none; margin: 0; padding: 0; }
.loc-head { padding: .6rem .6rem .2rem; color: var(--ash, #9C8F7A); font-size: .78rem; text-transform: uppercase; letter-spacing: .08em; }
.loc-row { display: grid; grid-template-columns: 48px 1fr; grid-template-areas: "thumb name" "thumb meta" "thumb blurb"; gap: .1rem .6rem; align-items: center; padding: .5rem .6rem; border-bottom: 1px solid rgba(74, 63, 50, .5); cursor: pointer; }
.loc-row:hover { background: rgba(232, 223, 206, .04); }
.loc-thumb { grid-area: thumb; width: 44px; height: 44px; border-radius: 4px; object-fit: cover; }
.loc-thumb-empty { background: var(--oak-2, #362E25); display: block; }
.loc-row .name { grid-area: name; font-family: 'IM Fell English', serif; font-size: 1.1rem; }
.loc-row .name a { text-decoration: none; }
.loc-row .meta { grid-area: meta; color: var(--ash, #9C8F7A); font-size: .82rem; }
.loc-row .tags { color: var(--ember-2, #E09550); margin-left: .4rem; }
.loc-blurb { grid-area: blurb; color: var(--ash, #9C8F7A); font-size: .88rem; font-style: italic; }
.loc-image { width: 100%; border-radius: 6px; border: 1px solid var(--iron, #4A3F32); }

/* The stat block, in the classic shape. */
.statblock { font-size: .95rem; }
.statblock .sb-head h2 { margin: 0; font-family: 'IM Fell English', serif; color: var(--ember-2, #E09550); }
.statblock .sb-sub { margin: 0 0 .5rem; font-style: italic; color: var(--ash, #9C8F7A); }
.statblock p { margin: .3rem 0; }
.statblock h3 { margin: .5rem 0 .3rem; font-family: 'IM Fell English', serif; font-weight: 400; color: var(--ember-2, #E09550); }
.statblock hr.rule-ember { margin: .5rem 0; }
.sb-abilities { width: 100%; text-align: center; border-collapse: collapse; }
.sb-abilities th { color: var(--ash, #9C8F7A); font-size: .78rem; letter-spacing: .08em; }
.sb-abilities td { font-family: 'IBM Plex Mono', monospace; }
.sb-text { white-space: pre-wrap; }

/* The editor. */
.cast-editor label { display: block; margin: .5rem 0; color: var(--ash, #9C8F7A); font-size: .85rem; }
.cast-editor input:not([type=checkbox]), .cast-editor select, .cast-editor textarea { display: block; width: 100%; margin-top: .2rem; padding: .35rem .5rem; background: var(--smoke, #211C17); color: var(--vellum, #E8DFCE); border: 1px solid var(--iron, #4A3F32); border-radius: 4px; font: inherit; font-size: .95rem; box-sizing: border-box; }
.cast-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 0 .75rem; }
.cast-grid-6 { grid-template-columns: repeat(6, 1fr); gap: 0 .5rem; }
.cast-check, .cast-checks label { display: inline-flex !important; align-items: center; gap: .35rem; color: var(--vellum, #E8DFCE) !important; margin: .3rem .8rem .3rem 0 !important; }
.cast-checks { border: 1px solid var(--iron, #4A3F32); border-radius: 4px; padding: .3rem .6rem; margin: .5rem 0; }
.cast-checks legend { color: var(--ash, #9C8F7A); font-size: .8rem; padding: 0 .3rem; }
.cast-editor h3 { margin: 1rem 0 .25rem; font-family: 'IM Fell English', serif; font-weight: 400; color: var(--ember-2, #E09550); }
.cast-attacks { width: 100%; border-collapse: collapse; }
.cast-attacks th { text-align: left; color: var(--ash, #9C8F7A); font-size: .78rem; font-weight: 600; }
.cast-attacks td { padding: .15rem .2rem; }
.cast-danger { color: var(--ember-2, #E09550); margin-left: auto; }
.btn.small { padding: .2rem .55rem; font-size: .8rem; }
