/* ---------- WORLD DOCUMENTS ----------
   The canonical binder: a quiet shelf on the left, one Markdown page on the
   canvas. All colours and type sizes come from the house tokens. */
.wd-panel{display:grid;align-content:start;gap:18px;padding:12px 10px 88px;min-height:0}
.wd-panel-section{display:grid;gap:6px;min-width:0}
.wd-canon-section{padding-top:12px;border-top:var(--bd) solid var(--edge)}
.wd-panel-label,.wd-archive-label{padding:0 6px;color:var(--muted);font-size:var(--t-tiny);font-weight:var(--w-semi);letter-spacing:var(--ls-label)}
.wd-archive-label{margin-top:12px}
.wd-worlds,.wd-docs{display:grid;gap:2px;min-width:0}
.wd-world-row{display:grid;gap:1px;width:100%;padding:6px 8px;border:0;border-radius:var(--r-sm);background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
.wd-world-row:hover,.wd-world-row.on{background:var(--sel)}
.wd-world-row.on .wd-world-name{color:var(--accent)}
.wd-world-name{overflow:hidden;color:var(--ink2);font-size:var(--t-small);text-overflow:ellipsis;white-space:nowrap}
/* Canon titles are meaning, not filenames. The old one-line ellipsis made
   World Overview, Canon & Hidden Truth, and People & Relationships read as
   nearly identical fragments in the narrow shelf. Let the title use the row
   it needs; the full wording is also carried as a native title affordance. */
.wd-doc-title{color:var(--ink2);font-size:var(--t-small);line-height:var(--lh-tight);
  overflow-wrap:anywhere;white-space:normal}
.wd-world-count,.wd-doc-domain{overflow:hidden;color:var(--muted);font-size:var(--t-tiny);text-overflow:ellipsis;white-space:nowrap}
.wd-panel-empty{padding:8px 6px;color:var(--muted);font-size:var(--t-small);line-height:var(--lh-body)}
.wd-world-about{margin:6px 6px 0;padding:0}
.wd-world-import{max-width:100%;margin:2px 0 0}
.wd-world-import .fw-add-lines{min-width:0}
.wd-world-import .fw-add-sub{white-space:normal;line-height:var(--lh-body)}

.wd-doc-row{position:relative;display:flex;align-items:flex-start;gap:5px;min-width:0;width:100%;padding:6px 7px;border:0;border-radius:var(--r-sm);background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
.wd-doc-row:hover,.wd-doc-row.on{background:var(--sel)}
.wd-doc-row.on .wd-doc-title{color:var(--accent);font-weight:var(--w-med)}
.wd-doc-main{display:grid;gap:1px;min-width:0;flex:1}
.wd-doc-ops{position:absolute;right:5px;bottom:4px;display:flex;align-items:center;
  border-radius:var(--r-sm);background:var(--chrome);opacity:0}
.wd-doc-row:hover .wd-doc-ops,.wd-doc-row:focus-within .wd-doc-ops{opacity:1}
.wd-op{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;border-radius:var(--r-sm);color:var(--muted);font-size:var(--t-small);cursor:pointer}
.wd-op:hover{background:var(--chrome);color:var(--text)}
.wd-op.disabled{opacity:.22;pointer-events:none}
.wd-dirty{flex:none;width:6px;height:6px;border-radius:50%;background:var(--accent)}
.wd-doc-row.archived{cursor:default;opacity:.72}
.wd-doc-row.renaming{padding:4px 6px}
.wd-rename,.wd-new-name,.wd-new-domain{min-width:0;width:100%;padding:6px 8px;border:var(--bd) solid var(--edge);border-radius:var(--r-sm);background:var(--inset);color:var(--text);font:inherit;font-size:var(--t-small);outline:none}
.wd-rename:focus,.wd-new-name:focus,.wd-new-domain:focus{border-color:var(--accent)}

.wd-add{display:flex;align-items:center;gap:8px;justify-self:start;padding:6px 8px;border:0;border-radius:var(--r-sm);background:none;color:var(--muted);font:inherit;font-size:var(--t-small);cursor:pointer}
.wd-add:hover{background:var(--sel);color:var(--text)}
.wd-plus{display:flex;align-items:center;justify-content:center;width:21px;height:21px;border:var(--bd) solid var(--edge);border-radius:var(--r-sm)}
.wd-new{display:grid;gap:6px;padding:6px}
.wd-new-actions{display:flex;gap:4px}
.wd-small-action{padding:5px 8px;border:var(--bd) solid var(--edge);border-radius:var(--r-sm);background:none;color:var(--text);font:inherit;font-size:var(--t-tiny);cursor:pointer}
.wd-small-action:hover{background:var(--sel)}
.wd-small-action.quiet{border-color:transparent;color:var(--muted)}

/* The open document owns the whole canvas and scrolls inside its own
   textarea, never as a short card the stage scrolls past. `height:100%`
   is what makes `flex:1` mean anything when the mount above is Novel
   Forge's, which puts this straight into `.house-stage`. */
.wd-canvas{display:flex;flex:1;flex-direction:column;height:100%;min-height:0;padding:18px 26px 14px}
.wd-canvas-head{display:flex;align-items:end;justify-content:space-between;gap:24px;padding:0 4px 13px}
.wd-canvas-head h2{margin:3px 0 0;color:var(--text);font-family:var(--font-trajan);font-size:var(--t-title);font-weight:var(--w-med)}
.wd-kicker,.wd-canon-mark{color:var(--accent-line);font-size:var(--t-tiny);letter-spacing:var(--ls-label);text-transform:uppercase}
.wd-canon-mark{color:var(--muted);text-align:right}
.wd-canvas-side{display:grid;justify-items:end;gap:6px}
.wd-back{padding:5px 9px;border:var(--bd) solid var(--edge);border-radius:var(--r-sm);background:none;color:var(--muted);font:inherit;font-size:var(--t-tiny);cursor:pointer}
.wd-back:hover{background:var(--sel);color:var(--text)}
/* THE PAPER AND THE PROSE TYPE ARE GONE FROM THIS SHEET. A World document
   is raw Markdown source, so it wears the Novel manuscript's own sheet and
   gutter (partials.js sourceEditor, styles/audiobook.css) rather than a
   second card with a 360px floor that made it look like rendered prose while
   showing `#` and `**`. Nothing about the paper is redefined here; only the
   inset this canvas gives it. */
.wd-canvas .fw-m-page{padding-top:0}
/* The saved line sits under the sheet's own column, the width the manuscript
   status already uses, so the two editors read the same way. */
.wd-status{width:min(78ch,94%);min-height:22px;margin:0 auto;padding:7px 5px 0;color:var(--muted);font-size:var(--t-tiny);text-align:right}
.wd-status.live{color:var(--accent-line)}
.wd-empty-canvas{display:grid;place-content:center;flex:1;min-height:420px;padding:28px;text-align:center}
.wd-empty-canvas h2{margin:0;color:var(--text);font-family:var(--font-trajan);font-size:var(--t-title);font-weight:var(--w-med)}
.wd-empty-canvas p{max-width:460px;margin:9px auto 0;color:var(--muted);font-size:var(--t-small);line-height:var(--lh-body)}

.wd-face-tabs{display:flex;gap:3px;align-items:center;margin-top:7px}
.wd-face{padding:5px 10px;border:var(--bd) solid transparent;border-radius:var(--r-pill);background:none;color:var(--muted);font:inherit;font-size:var(--t-small);cursor:pointer}
.wd-face:hover{color:var(--text);background:var(--sel)}
.wd-face.on{border-color:var(--edge);background:var(--chrome);color:var(--text)}
.wd-structure{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px;align-items:start;padding:10px 6px}
.wd-structure .fw-col{min-width:0}
.wd-people-layout{min-width:0;padding:10px 6px}
.wd-people-col{gap:12px}
.wd-people-note{max-width:78ch;padding-bottom:2px;font-size:var(--t-small)}
.wd-people-layout .home-company{min-width:0}
.wd-people-layout .home-grid{grid-template-columns:repeat(auto-fill,minmax(168px,210px));justify-content:start;gap:var(--s5)}
.wd-people-layout .home-card{display:block;width:100%;text-align:left}
.wd-novel{display:grid;gap:6px;margin-bottom:14px;padding-bottom:14px;border-bottom:var(--bd) solid var(--edge)}
.wd-novel-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:0 7px;color:var(--accent-line);font-size:var(--t-tiny);font-weight:var(--w-semi);letter-spacing:var(--ls-label)}
.wd-novel-head small{overflow:hidden;color:var(--muted);font-size:var(--t-tiny);font-weight:var(--w-med);letter-spacing:0;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:1000px){.wd-structure{grid-template-columns:minmax(0,1fr)}.wd-canon-mark{display:none}.wd-canvas{padding:14px 12px 10px}}
@media (max-width:620px){.wd-people-layout .home-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3)}}
