:root{--table:#1e2a26;--table-glow:#3b4a3c;--table-text:#e6e8d9;--table-muted:#abbca9;--bg:#1e2a26;--panel:#f3f0e7;--panel-2:#ebe7dc;--field:#fffdf7;--line:#d3dbcd;--text:#263a32;--muted:#69766c;--accent:#315d4b;--accent-2:#3d6f59;--select:#e1e9db;--gold:#dcc18a;--danger:#a8352b;--hidden:#a8352b;--shown:#2f7a50;--warn:#8a6214;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit;color:inherit}button{background:var(--panel-2);border:1px solid var(--line);cursor:pointer;border-radius:6px;padding:6px 10px}button:hover{border-color:#9bad96}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);border-color:var(--accent-2);color:#fff}button.small{padding:3px 8px;font-size:12px}button.link{color:var(--accent);background:0 0;border:none;padding:2px 4px}button.danger,.danger{color:var(--danger)}input,select,textarea{background:var(--field);border:1px solid var(--line);border-radius:6px;width:100%;padding:5px 8px}textarea{resize:vertical}kbd{border:1px solid var(--line);color:var(--muted);border-radius:4px;margin-left:6px;padding:0 4px;font-size:11px}.muted{color:var(--muted)}.small{font-size:12px}.error{color:var(--danger)}.center{flex-direction:column;justify-content:center;align-items:center;gap:12px;height:100%;display:flex}.app{grid-template:"top top top""rail stage inspector"1fr/240px 1fr 330px;height:100%;display:grid}.banners{z-index:6;flex-direction:column;display:flex;position:absolute;top:0;left:0;right:0}.topbar{background:var(--panel);border-bottom:1px solid var(--line);grid-area:top;align-items:center;gap:12px;padding:8px 12px;display:flex;position:relative}.crumbs{white-space:nowrap;align-items:center;gap:6px;display:flex;overflow:hidden}.crumbs .brand{margin-right:8px;font-weight:700}.crumbs .sep{color:var(--muted)}.search-button{text-align:left;min-width:220px;color:var(--muted);margin-left:auto}.top-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.view-as{color:var(--muted);align-items:center;gap:6px;display:flex}.view-as select{width:auto}.status{white-space:nowrap;font-size:12px}.status-live{color:var(--shown)}.status-connecting,.status-reconnecting{color:var(--warn)}.status-removed,.status-signed-out{color:var(--danger)}.me{color:var(--muted)}.players-wrap{position:relative}.players-menu{min-width:220px;top:30px;right:0}.invite-pop{z-index:20;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;align-items:center;gap:8px;width:560px;padding:8px;display:flex;position:absolute;top:48px;right:12px}.invite-pop span{white-space:nowrap}.banner{align-items:center;gap:12px;padding:6px 12px;display:flex}.banner.warn{color:#ffd27a;background:#f0e2c2}.banner.preview{background:#dfe8f0}.rail{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;grid-area:rail;gap:14px;padding:10px;display:flex;overflow:auto}.rail section{flex-direction:column;gap:6px;display:flex}.panel-title{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 4px;font-size:11px}.rail-list{margin:0;padding:0;list-style:none}.rail-item{text-align:left;background:0 0;border:1px solid #0000;width:100%;padding:4px 6px}.rail-item.active{background:var(--panel-2);border-color:var(--line)}.upload,.add-part-form{background:var(--panel-2);border-radius:8px;flex-direction:column;gap:6px;padding:8px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.row-label{color:var(--muted);min-width:86px;font-size:12px}.row select{flex:1;width:auto}.legend{margin-top:auto}.glyph.hidden{color:var(--hidden)}.glyph.shown{color:var(--shown)}.stage{grid-area:stage;min-height:0;position:relative;overflow:hidden}.map-view{background:#0b0c10;position:absolute;inset:0}.map-view.drawing{cursor:crosshair}.map-empty{height:100%;color:var(--muted);justify-content:center;align-items:center;display:flex}.map-error{background:#4a1515;border-radius:6px;padding:6px 10px;position:absolute;bottom:12px;left:12px}.map-error.gm{z-index:7;border:1px solid #ff6b6b;top:56px;bottom:auto;right:12px}.fog-toolbar{z-index:5;background:var(--panel);border:1px solid var(--line);border-radius:10px;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;width:max-content;max-width:calc(100% - 24px);padding:6px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.fog-toolbar button.active{background:var(--accent);border-color:var(--accent-2);color:#fff}.fog-for{color:var(--muted);align-items:center;gap:6px;display:flex}.fog-for select{width:auto}.inspector{background:var(--panel);border-left:1px solid var(--line);flex-direction:column;grid-area:inspector;gap:10px;padding:10px;display:flex;overflow:auto}.card{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:8px;padding:10px;display:flex}.card h3,.card h4{margin:0}.card h4{color:var(--muted);font-size:12px}.card-head{flex-direction:column;gap:4px;display:flex}.part{border-top:1px solid var(--line);flex-direction:column;gap:4px;padding-top:8px;display:flex}.part-hidden{background:repeating-linear-gradient(135deg,#0000 0 8px,#ff5a5a0d 8px 16px)}.part-head{align-items:center;gap:6px;display:flex}.part-label{color:var(--muted);font-size:12px;font-weight:600}.part-body{white-space:pre-wrap;margin:0}.add-part{flex-wrap:wrap;gap:6px;display:flex}.fog-list{margin:0;padding-left:18px;font-size:12px}.tag{border-radius:4px;padding:0 4px;font-size:11px}.tag.reveal{color:#1f5236;background:#dceadf}.tag.hide{color:#7a2a22;background:#f3dcd6}.vis{flex-wrap:wrap;align-items:center;gap:6px;display:flex;position:relative}.vis-label{font-size:12px}.vis-label.is-hidden{color:var(--hidden)}.vis-label.is-shown{color:var(--shown)}.menu{z-index:30;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;flex-direction:column;min-width:170px;padding:4px;display:flex;position:absolute;box-shadow:0 8px 24px #0006}.vis .menu{top:26px;left:0}.context-menu{position:fixed}.menu-item{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:8px;width:100%;padding:6px 8px;display:flex}.menu-item:hover{background:var(--select)}.menu-item input{width:auto}.menu-sep{background:var(--line);height:1px;margin:4px 0}.modal-backdrop{z-index:50;background:#00000080;justify-content:center;align-items:flex-start;padding-top:12vh;display:flex;position:fixed;inset:0}.modal,.palette{background:var(--panel);border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:10px;width:460px;padding:16px;display:flex}.modal h3{margin:0}.modal-actions{justify-content:flex-end;gap:8px;display:flex}.palette{width:560px;padding:10px}.palette input{padding:10px;font-size:16px}.palette-results{max-height:50vh;margin:0;padding:0;list-style:none;overflow:auto}.palette-results li{cursor:pointer;border-radius:6px;justify-content:space-between;padding:8px;display:flex}.palette-results li.active{background:var(--select)}.toasts{z-index:60;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:16px;right:16px}.toast{border-radius:8px;max-width:380px;padding:8px 12px}.toast.error{background:#f3dcd6}.toast.info{background:var(--select)}.auth{justify-content:center;align-items:center;height:100%;display:flex}.auth-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:12px;width:360px;padding:24px;display:flex}.auth-card h1{margin:0;font-size:20px}.auth-card label{color:var(--muted);flex-direction:column;gap:4px;display:flex}.filter{margin-bottom:4px}.composer{background:var(--panel);border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:10px;width:620px;padding:14px;display:flex}.composer-head{justify-content:space-between;align-items:baseline;display:flex}.composer-line{padding:10px;font-size:16px}.type-pills{flex-wrap:wrap;gap:4px;display:flex}.pill{border-radius:999px;padding:3px 10px;font-size:12px}.pill.active{background:var(--accent);border-color:var(--accent-2);color:#fff}.chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.chip{background:var(--panel-2);border:1px solid var(--line);border-radius:999px;align-items:center;gap:4px;padding:1px 8px;font-size:12px;display:inline-flex}.chip.unresolved{border-color:var(--warn);color:#ffd27a}.chip-x{color:var(--muted);background:0 0;border:none;padding:0 2px}.canon-count{cursor:help;margin-left:auto}.context-search ul{max-height:160px;margin:4px 0 0;padding:0;list-style:none;overflow:auto}.notice{background:var(--select);border-radius:6px;margin:0;padding:6px 8px}.notice.amber{color:#4f3a0e;background:#fbefd2;border:1px solid #e6cf92}.notice.amber .link,.notice.amber a{color:#4f3a0e;font-weight:600;text-decoration:underline}.draft-card{border-style:dashed;border-color:#6b7489}.draft-head{color:var(--muted);font-size:12px}.tag.draft{color:#f3f1ea;letter-spacing:.05em;background:#3b4152}.draft-status{color:var(--warn);flex-wrap:nowrap;align-items:flex-start}.draft-status .grow{flex:1}.pulse{color:var(--warn);animation:1.2s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.3}}.banner-inline{background:var(--select);border-radius:6px;padding:6px 8px;font-size:13px}.banner-inline.error{background:#f3dcd6}.raw-text{white-space:pre-wrap;background:var(--field);border-radius:6px;max-height:160px;padding:6px;font-size:11px;overflow:auto}.draft-text{align-items:center;gap:6px;display:flex}.part.ghost{opacity:.6;border-top-style:dashed}.part.ghost:focus-within{opacity:1}.ref-picker{z-index:40;min-width:240px;max-height:300px;position:absolute;overflow:auto}.part,.on-map,.linked-from{position:relative}.linked-from,.on-map{border-top:1px solid var(--line);flex-direction:column;align-items:flex-start;gap:2px;padding-top:8px;display:flex}.floating-picker{z-index:40;position:absolute}.hover-card{z-index:20;background:var(--panel);border:1px solid var(--line);pointer-events:none;border-radius:8px;max-width:300px;padding:8px 10px;position:absolute;box-shadow:0 8px 24px #0006}.hover-card p{margin:4px 0 0}.lore-group .group-head{color:var(--text);background:0 0;border:none;padding:2px 0;font-size:12px;font-weight:600}.badge{color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:0 4px;font-size:11px}.draft-actions{margin-top:4px}.fog-toolbar button,.fog-for{white-space:nowrap}.part>button.link,.part.ghost>button.link{text-align:left;align-self:flex-start}.draft-footer{background:var(--panel-2);border-top:1px solid var(--line);z-index:2;border-radius:0 0 8px 8px;flex-direction:column;gap:6px;margin:0 -10px -10px;padding:8px 10px 10px;display:flex;position:sticky;bottom:-10px}.draft-footer .draft-actions{margin-top:0}.toasts{right:346px;bottom:var(--toast-bottom,72px)}.session-wrap{position:relative}.session-pill{white-space:nowrap}.session-pill.tone-green{color:var(--shown);border-color:#2f6b4c}.session-pill.tone-blue{color:var(--accent);border-color:#2b4f78}.session-pill.tone-amber{color:var(--warn);border-color:#6b5420}.session-pill.tone-pending,.session-pill.tone-busy{color:var(--warn)}.session-pill.tone-muted{color:var(--muted)}.session-panel{z-index:30;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:8px;width:560px;max-width:calc(100vw - 24px);max-height:calc(100vh - 80px);padding:12px;display:flex;position:absolute;top:34px;right:0;overflow:auto;box-shadow:0 8px 24px #00000073}.session-panel p{margin:0}.session-head{color:var(--muted);letter-spacing:.04em;justify-content:space-between}.mode-choice{border:1px solid var(--line);border-radius:6px;flex-direction:column;gap:4px;margin:0;padding:6px 8px;display:flex}.mode-choice label{font-size:13px}.mode-choice input{width:auto}.setup-steps{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.setup-step{border-top:1px solid var(--line);flex-direction:column;gap:4px;padding-top:6px;display:flex}.step-head{justify-content:space-between}.setup-step .ok{color:var(--shown)}.copy-row{align-items:flex-start;gap:6px;display:flex}.copy-row code{background:var(--field);border:1px solid var(--line);white-space:pre-wrap;word-break:normal;overflow-wrap:normal;-webkit-user-select:all;user-select:all;border-radius:4px;flex:1;padding:4px 6px;font-size:12px;overflow-x:auto}.pair-code{flex-wrap:wrap}.pair-code .code{letter-spacing:.12em;background:var(--field);-webkit-user-select:all;user-select:all;border-radius:4px;padding:2px 8px;font-size:18px}.session-actions{justify-content:flex-end;gap:8px}.session-status .capability{margin-top:4px}.notice.blue{background:var(--select)}.draft-part.skeleton .part-body{font-style:italic}.copy-row .nowrap{white-space:nowrap}.rail-tabs{gap:4px;display:flex}.rail-tabs .pill{flex:1}.library{flex-direction:column;gap:8px;min-height:0;display:flex}.library select{max-width:130px}.tile-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.tile{background:var(--panel-2);border:1px solid var(--line);cursor:grab;border-radius:6px;flex-direction:column;align-items:center;gap:4px;width:100%;padding:4px;display:flex}.tile img,.tile-missing{object-fit:contain;background:#2a2e38;border-radius:4px;width:88px;height:88px}.tile-missing{color:#ffd27a;text-align:center;justify-content:center;align-items:center;font-size:12px;display:flex}.tile-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:12px;overflow:hidden}.toolbar-sep{background:var(--line);align-self:stretch;width:1px;margin:0 2px}.crumb{color:var(--muted);white-space:nowrap}.map-compose{flex-direction:column;gap:6px;margin-top:6px;display:flex}input.grid-px{width:56px}.angle{align-items:center;gap:4px;display:inline-flex}.angle input{width:56px}.stack-list{margin:0;padding:0;list-style:none}.toast-action{margin-left:10px}.import-dialog{width:560px}.import-rows{flex-direction:column;gap:4px;max-height:240px;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.import-row{align-items:baseline;gap:10px;font-size:13px;display:flex}.import-name{min-width:140px;font-family:ui-monospace,monospace}.import-row.done .import-status{color:var(--shown)}.import-row.failed .import-status,.import-row.refused .import-status{color:var(--hidden)}input[type=checkbox],input[type=radio],input[type=color]{width:auto}.map-compose label,.card label.row{align-items:center;gap:6px;display:inline-flex}.badge,.badge-text{color:var(--accent,#d9a441);font-weight:600}.drag-ghost{z-index:20;pointer-events:none;background:var(--panel,#222);border:1px solid var(--accent,#d9a441);border-radius:999px;padding:2px 8px;font-size:12px;position:absolute}.art-picker{width:min(720px,100vw - 32px)}.art-picker .tile-grid{max-height:50vh;overflow:auto}.tile.selected{outline:2px solid var(--accent,#d9a441)}.tile:disabled{opacity:.5;cursor:not-allowed}.tile.loading{background:var(--line,#333);min-height:80px;display:block}.token-form .row{align-items:center;gap:8px}.art-chosen img,.art-thumb{object-fit:contain;vertical-align:middle;width:32px;height:32px}.token-art-row{align-items:center;gap:8px}.campaign-crumb{display:inline-block;position:relative}.crumb-button{color:inherit;background:0 0;border:1px solid #0000;border-radius:6px;padding:2px 6px}.crumb-button:hover{border-color:var(--line)}.role-chip{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:1px 6px;font-size:11px}.role-chip.gm{border-color:var(--accent);color:var(--accent)}.campaign-menu{z-index:60;min-width:300px;max-height:70vh;position:fixed;overflow:auto}.menu-heading{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:6px 8px 2px;font-size:11px}.menu-item.active{font-weight:600}.menu-item.indent{padding-left:22px}.panel-title .scope{text-transform:none;letter-spacing:0;color:var(--text)}.campaigns-page{background:var(--bg);min-height:100vh;color:var(--text);padding:16px}.campaigns-head{align-items:center;gap:12px;max-width:640px;margin:0 auto 16px;display:flex}.campaigns-head h1{flex:1;margin:0;font-size:18px}.campaigns-card{background:var(--panel);border:1px solid var(--line);border-radius:10px;max-width:640px;margin:0 auto;padding:16px}.campaigns-world ul{margin:0 0 12px;padding:0;list-style:none}.campaign-row{color:var(--text);align-items:center;gap:8px;padding:6px 4px;text-decoration:none;display:flex}.campaign-row:hover{background:var(--panel-2)}.new-campaign-notes{white-space:normal;color:var(--muted);padding:0;list-style:none}.auth-card .account-choice{gap:16px}.auth-card .account-choice label{color:var(--text);flex-direction:row;align-items:center;gap:6px}#your-token-art{margin-top:16px}#your-token-art .tile button{margin-top:4px}.modal input:disabled,.modal select:disabled,.upload input:disabled{opacity:.6;cursor:progress}.world-settings{width:min(980px,100vw - 32px);max-height:calc(100vh - 64px);overflow:auto}.world-settings-head{justify-content:space-between;gap:12px}.world-settings-head h3{margin:0}.world-settings-body{grid-template-columns:240px 1fr;align-items:start;gap:16px;display:grid}.type-list{border-right:1px solid var(--line);flex-direction:column;gap:4px;padding-right:12px;display:flex}.type-row{justify-content:space-between}.pin-letter{text-align:center;color:#fff;background:#2a3b5c;border-radius:999px;min-width:18px;font-size:11px;display:inline-block}.type-editor{flex-direction:column;gap:8px;display:flex}.slot-rows{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.slot-row{grid-template-columns:minmax(110px,1fr) 138px minmax(110px,.9fr) minmax(160px,1.6fr) auto;align-items:center;gap:6px;display:grid}.slot-row .slot-hint{grid-column:4}.slot-actions{gap:4px;display:flex}.members{border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:4px;padding:8px;display:flex}.member-row{align-items:center;gap:6px;display:flex}.relabel{margin:2px 0 0}.draw-status{z-index:6;background:var(--panel);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:4px;max-width:min(760px,100% - 32px);padding:6px 10px;font-size:13px;display:flex;position:absolute;top:48px;left:50%;transform:translate(-50%)}.draw-line.reveal{color:var(--shown)}.draw-line.hide{color:var(--hidden)}.draw-line.region{color:#c9a2ff}.draw-problem{color:var(--danger)}.edit-banner.warn,.warn-text{color:var(--warn)}.region-naming{z-index:7;background:var(--panel);border:1px solid #7a4fd0;border-radius:8px;gap:6px;padding:6px;display:flex;position:absolute}.region-naming input{width:180px}.tint-caption{margin:2px 0 0;font-size:12px}.fog-toolbar .seg{gap:2px;display:inline-flex}.fog-toolbar .tool-group{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.fog-toolbar button.active.reveal{background:#1d6b45}.fog-toolbar button.active.hide{background:#8a2b2b}.brush-size{align-items:center;gap:4px;display:inline-flex}.brush-size input{width:80px}.regions,.fog-history{margin-top:10px}.new-region{align-items:center;gap:4px;display:inline-flex}.new-region button.active{background:#5a3a9a}.region-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.region-row{border:1px solid var(--line);border-radius:6px;padding:6px}.region-row:hover{border-color:#7a4fd0}.region-actions{align-items:center;gap:4px;display:inline-flex}.menu-wrap{position:relative}.menu-wrap .menu{z-index:10;background:var(--panel);border:1px solid var(--line);border-radius:6px;flex-direction:column;min-width:140px;padding:4px;display:flex;position:absolute;top:100%;right:0}.menu-wrap .menu button{text-align:left}.menu-wrap .menu button.danger{color:var(--danger)}.inline-rename{flex-wrap:wrap;gap:4px;display:flex}.row-between{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.entry-card .part input,.entry-card .part textarea,.entry-card .card-head>input{background:0 0;border-color:#0000;padding-left:4px;padding-right:4px}.entry-card .part input:hover,.entry-card .part textarea:hover,.entry-card .card-head>input:hover{border-color:var(--line)}.entry-card .part input:focus,.entry-card .part textarea:focus,.entry-card .card-head>input:focus,.entry-card .part.ghost input,.entry-card .part.ghost textarea{background:var(--field);border-color:var(--accent);outline:none}.entry-card .card-head>input{font-size:16px;font-weight:600}.entry-card .part textarea{resize:none;overflow:hidden}.part-menu{align-items:center;gap:4px;margin-left:auto;display:inline-flex}button.quiet{background:0 0;border-color:#0000;padding:0 6px}button.quiet:hover,button.quiet[aria-expanded=true]{border-color:var(--line)}.part.ghost.opened{opacity:1}.add-detail .menu-wrap{display:block}.add-detail-button{border-style:dashed;width:100%}.menu-wrap .menu.align-left{left:0;right:auto}.menu-wrap .menu{z-index:35;min-width:180px;max-height:min(460px,100vh - 120px);overflow:auto;box-shadow:0 8px 24px #0006}.menu-wrap .menu .menu-group{flex-direction:column;display:flex}.menu-wrap .menu button{color:var(--text);background:0 0;border:none;padding:6px 8px}.menu-wrap .menu button:hover:not(:disabled),.menu-wrap .menu button:focus-visible{background:var(--select);outline:none}.menu-wrap .menu button:disabled{color:var(--muted)}.menu-heading{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:4px 8px 2px;font-size:11px}.fog-toolbar .toolbar-break{flex-basis:100%;height:0}.grid-snap{display:inline-flex;position:relative}.grid-snap-pop{background:var(--panel);border:1px solid var(--line);z-index:6;border-radius:8px;gap:6px;padding:6px;display:flex;position:absolute;bottom:calc(100% + 8px);right:0;box-shadow:0 8px 24px #0006}.fog-toolbar button:focus-visible,.tile:focus-visible,.composer-tabs button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.composer-tabs{border-bottom:1px solid var(--line);align-items:center;gap:6px;padding-bottom:8px;display:flex}.composer-tabs button.active{background:var(--accent);color:var(--text);border-color:var(--accent)}.composer-panel{flex-direction:column;gap:8px;display:flex}.field-label{color:var(--muted);font-size:12px;font-weight:600}.tile.selected,.tile[aria-pressed=true]{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.tile{cursor:pointer}.tile[draggable=true]{cursor:grab}.lib-selection{z-index:2;border:1px solid var(--line);background:#1c2433;border-radius:8px;flex-direction:column;align-items:stretch;gap:6px;padding:10px;display:flex;position:sticky;bottom:0;box-shadow:0 -6px 16px #00000059}.lib-selection-name{overflow-wrap:anywhere}.lib-selection .row{flex-wrap:wrap;gap:6px;display:flex}.fog-dragging button:disabled{pointer-events:none}.menu-wrap .menu.up{top:auto;bottom:calc(100% + 4px)}.import-panel{flex-direction:column;width:min(1000px,100vw - 24px);max-height:calc(100vh - 48px);padding:0;display:flex}.import-head{border-bottom:1px solid var(--line);padding:16px 20px 10px}.import-head h3{margin:0 0 4px}.import-body{flex-direction:column;gap:10px;min-height:0;padding:12px 20px;display:flex;overflow:auto}.import-foot{border-top:1px solid var(--line);justify-content:flex-end;align-items:center;gap:8px;padding:12px 20px;display:flex}.import-foot>span:first-child{margin-right:auto}.drop-zone{border:2px dashed var(--line);border-radius:10px;flex-direction:column;align-items:center;gap:10px;padding:28px;display:flex}.drop-zone.hover{border-color:var(--accent);background:#4da3ff0f}.import-mapping{border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:6px;padding:8px 12px;display:flex}.mapping-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto auto;align-items:center;gap:8px;display:grid}.mapping-src{overflow-wrap:anywhere}.import-table{border-collapse:collapse;width:100%;font-size:13px}.import-table th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--line);padding:6px 8px;font-size:11px}.import-table td{border-bottom:1px solid var(--line);vertical-align:top;padding:6px 8px}.import-table input[type=checkbox]{width:auto}.import-path{overflow-wrap:anywhere}.ok-text{color:var(--shown)}.progress{background:#2a2f3b;border-radius:3px;height:6px;overflow:hidden}.progress>div{background:var(--accent);height:100%}.progress.small-bar{height:4px;margin-top:4px}.lib-select-bar .row{flex-wrap:wrap;gap:4px;display:flex}.tile{position:relative}.tile-check{pointer-events:none;width:auto;position:absolute;top:6px;left:6px}.tile-grid.multi .tile{cursor:pointer}.tile-more{text-align:center;grid-column:1/-1}.organize-dialog{flex-direction:column;gap:10px;width:min(640px,100vw - 24px);display:flex}.organize-dialog .field{grid-template-columns:120px 1fr;align-items:center;gap:8px;display:grid}.preview-dialog{flex-direction:column;gap:8px;width:min(960px,100vw - 24px);max-height:calc(100vh - 48px);display:flex}.preview-title{overflow-wrap:anywhere;margin:0}.checkerboard{background-color:#cfd3da;background-image:linear-gradient(45deg,#9aa1ad 25%,#0000 25%),linear-gradient(-45deg,#9aa1ad 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#9aa1ad 75%),linear-gradient(-45deg,#0000 75%,#9aa1ad 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px}.preview-stage{border-radius:8px;justify-content:center;align-items:flex-start;min-height:200px;max-height:calc(100vh - 340px);display:flex;overflow:auto}.preview-stage.fit img{object-fit:contain;max-width:100%;max-height:calc(100vh - 340px)}.preview-stage.actual img{max-width:none}.preview-uses{flex-direction:column;gap:6px;display:flex}.modal-backdrop.tall{padding-top:24px}.row-tags{margin-left:6px;display:inline}.row-tags summary{cursor:pointer;color:var(--muted,#9aa3ad);-webkit-text-decoration:underline dotted;text-decoration:underline dotted;display:inline}.row-tags[open] .row-tag-list{flex-wrap:wrap;gap:3px;margin-top:4px;display:flex}.row-tag-list .tag{overflow-wrap:anywhere;background:#2a3340}.row-tag-list .tag.folder-tag{background:#2d2a40;font-style:italic}.app.shell{background:radial-gradient(ellipse at 50% 40%, var(--table-glow), var(--table) 85%);color:var(--text);grid-template:"top""table"1fr/1fr;position:relative}.tablebar{background:var(--panel);z-index:8;border-bottom:1px solid #cad4c4;grid-area:top;align-items:center;gap:20px;min-height:64px;padding:10px 22px;display:flex;position:relative}.tablebar .brand{letter-spacing:-.05em;font:24px Georgia,serif}.bar-campaign{border-left:1px solid var(--line);flex-direction:column;padding-left:18px;line-height:1.3;display:flex}.bar-campaign .crumb-button{background:0 0;border:none;padding:0;font-weight:650}.bar-title{font-weight:650}.bar-actions{align-items:center;gap:10px;margin-left:auto;display:flex}.tablebar button{background:0 0}.tablebar button.active,.taskbar button.active{background:var(--select);border-color:#9bad96}.scene-picker{padding:8px 14px;font-size:15px}.tablebar .status{color:var(--shown);font-size:12px}.account-wrap{position:relative}.account-menu{min-width:260px;left:auto;right:0}.table-area{flex-direction:column;grid-area:table;min-height:0;display:flex;position:relative;overflow:hidden}.scene-head{color:var(--table-text);padding:20px 30px 10px}.scene-head h1{margin:0 0 4px;font:26px/1.2 Georgia,serif}.scene-head p{color:var(--table-muted);margin:0}.table-body{flex:1;gap:24px;min-height:0;padding:10px 30px 92px;display:flex}.table-body .stage{border:1px solid #4b5a4d;border-radius:6px;flex:1;min-width:0;overflow:hidden}.table-body.no-map{justify-content:center;align-items:flex-start;overflow:auto}.empty-table{color:var(--table-muted);align-self:center}.scene-cards{flex-direction:column;flex-shrink:0;gap:18px;width:min(380px,34vw);padding-bottom:8px;display:flex;overflow:auto}.table-body.no-map .scene-cards{flex-flow:wrap;justify-content:center;width:auto;max-width:100%}.table-body.no-map .lore-card{width:min(420px,42vw)}.lore-card{background:var(--panel);color:var(--text);border:1px solid #d2d9c8;border-radius:12px;padding:22px 24px;box-shadow:0 18px 38px #0c150e66}.lore-card h3{margin:4px 0 14px;font:26px/1.2 Georgia,serif}.lore-card-part p:last-child{white-space:pre-wrap;margin:0 0 14px;font:17px/1.55 Georgia,serif}.lore-card-private{background:#eae1cd;border-left:3px solid #c0a36b;padding:10px 14px;font-size:13px}.lore-card-private p{margin:6px 0 0}.eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 6px;font-size:11px;font-weight:700}.taskbar{background:var(--panel);z-index:7;border-radius:12px;gap:6px;padding:7px;display:flex;position:absolute;bottom:22px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0b130f80}.taskbar button{background:0 0;border-color:#0000;padding:9px 16px;font-size:15px}.taskbar button:hover:not(:disabled){background:var(--select)}.task-panel{z-index:9;background:var(--panel);border:1px solid #cfd8c8;border-radius:12px;flex-direction:column;width:390px;min-height:0;display:flex;position:absolute;top:80px;bottom:18px;right:18px;box-shadow:0 18px 40px #0b130f80}.task-panel-head{justify-content:space-between;align-items:center;padding:16px 20px 8px;display:flex}.task-panel-head h2{margin:0;font:26px Georgia,serif}.task-panel-head h2:focus{outline:none}.task-panel-body{flex-direction:column;flex:1;gap:12px;min-height:0;padding:6px 20px 20px;display:flex;overflow:auto}.task-panel-body .card{background:var(--panel-2)}.nb-list,.scene-list,.people-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.nb-item{text-align:left;background:0 0;border-color:#0000;width:100%;padding:5px 8px}.nb-item.active,.nb-item:hover{background:var(--select)}.scene-list{gap:10px}.scene-row{text-align:left;background:var(--field);flex-direction:column;gap:3px;width:100%;padding:12px 14px;display:flex}.scene-row.active{background:var(--select);border-color:#9bad96}.people-list li{align-items:center;gap:8px;display:flex}.people-list li>span{flex:1}.add-list{flex-direction:column;gap:10px;display:flex}.add-list>button,.add-map{text-align:left;background:var(--field);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:4px;padding:12px 14px;display:flex}.new-scene{flex-direction:column;gap:8px;display:flex}.no-scene{text-align:center;max-width:520px;color:var(--table-text);margin:auto;padding-bottom:90px}.no-scene h1{font:30px Georgia,serif}.no-scene .muted{color:var(--table-muted)}.no-scene .scene-list{text-align:left;margin:18px 0}.no-scene .scene-row .muted{color:var(--muted)}.back{align-self:flex-start}.app.shell .banners{z-index:10}.app.shell .fog-toolbar{bottom:12px}.app.shell .scene-row{color:var(--text)}.app.shell .map-view{background:#17211d}.app.shell .toasts{left:50%;right:auto;bottom:max(96px, var(--toast-bottom,0px));align-items:center;transform:translate(-50%)}.app.shell.with-panel .taskbar,.app.shell.with-panel .toasts{left:calc(50% - 204px)}.app.shell .scene-head{box-sizing:border-box;align-items:center;gap:18px;min-height:104px;display:flex}.app.shell .scene-head-title{flex-shrink:0;max-width:34%}.app.shell .scene-head .fog-toolbar{flex:1;justify-content:flex-end;width:auto;max-width:none;margin-left:auto;position:static;transform:none}.app.shell.with-panel .scene-head .fog-toolbar{margin-right:400px}.app.shell .toasts{bottom:96px}.app.shell .fog-toolbar,.app.shell .task-panel,.app.shell .taskbar,.app.shell .lore-card{color:var(--text)}.app.shell .scene-head{z-index:6;flex-shrink:0;height:124px;min-height:124px;padding-top:12px;padding-bottom:8px;position:relative;overflow:visible}.task-status-slot:empty{display:none}.task-status-slot .draw-status{max-width:none;position:static;transform:none}.task-panel.panel-library{width:480px}.app.shell.with-panel.panel-library .taskbar,.app.shell.with-panel.panel-library .toasts{left:calc(50% - 249px)}.app.shell.with-panel.panel-library .scene-head .fog-toolbar{margin-right:490px}.app.shell .tablebar{z-index:auto}.app.shell .tablebar .menu,.app.shell .tablebar .session-panel{z-index:60}.app.shell.with-panel .stage .fog-toolbar{justify-content:flex-start;max-width:calc(100% - 440px);left:16px;transform:none}.app.shell.with-panel.panel-library .stage .fog-toolbar{max-width:calc(100% - 520px)}.app.shell .lib-selection{background:var(--panel-2);min-height:150px;box-shadow:0 -6px 16px #1e2a262e}.app.shell .lib-selection-empty{justify-content:center}.lore-card{flex-direction:column;display:flex;position:relative}.lore-card:focus-visible,.lore-card:focus{outline:3px solid var(--gold);outline-offset:5px}.lore-card.hidden-card{background:#f2ecdd;border:2px dashed #d2b574}.card-top{align-items:center;gap:10px;margin-bottom:8px;display:flex}.card-top .eyebrow{flex:1;margin:0}.tag{color:#45624e;white-space:nowrap;background:#e2e9db;border-radius:20px;align-items:center;padding:4px 9px;font-size:11px;display:inline-flex}.tag.private{color:#785929;background:#eee0c4}.drag-handle{color:#7b8b78;cursor:grab;background:0 0;border:0;padding:0 6px;font-size:20px}.lore-card-private .eyebrow{color:#7f6338;font-size:10px}.card-foot{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;margin-top:14px;padding-top:12px;display:flex}.card-slot{border:2px dashed #0000;border-radius:10px;min-height:14px;transition:min-height .1s}.scene-cards.dragging .card-slot{border-color:#dcc18a8c;min-height:40px}.card-slot.over{border-color:var(--gold);background:#dcc18a1f}.card-slot.big{width:min(300px,40vw);min-height:300px;color:var(--table-text);flex-direction:column;justify-content:center;align-items:center;gap:6px;display:flex}.slot-plus{font-size:28px}.slot-title{font:22px Georgia,serif}.table-body.no-map .scene-cards.dragging{align-items:stretch}.card-actions{flex-direction:column;gap:8px;display:flex}.card-actions>button{text-align:left;background:var(--field);padding:10px 14px}.card-remove{border-top:1px solid var(--line);padding-top:12px}.card-remove h3{margin:0 0 4px}.choose-details{border:0;flex-direction:column;gap:8px;margin:0;padding:0;display:flex}.choose-details legend{margin-bottom:6px;font-weight:650}.choose-row{align-items:flex-start;gap:10px;display:flex}.choose-row input{width:auto;margin-top:3px}.block{display:block}.strong{font-weight:650}.show-for{flex-direction:column;gap:6px;display:flex}.show-preview{background:var(--field);border:1px solid var(--line);border-radius:10px;padding:14px 16px}.show-text{white-space:pre-wrap;margin:8px 0 0;font:16px/1.5 Georgia,serif}.show-details{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.place-on-table{border:1px solid var(--line);background:var(--panel-2);border-radius:10px;flex-direction:column;gap:10px;padding:12px;display:flex}.place-chip{background:var(--field);cursor:grab;border:1px solid #d2c39a;border-radius:8px;flex-direction:column;gap:2px;padding:10px 12px;display:flex}.place-open{align-self:flex-start}.nb-reader-head{justify-content:space-between}.task-status-slot .region-naming{flex-wrap:wrap;gap:6px;display:flex;position:static!important}.app.shell .scene-cards{margin:0 -18px;padding:12px 18px 40px}.app.shell .table-body.no-map{padding-bottom:150px}.fit-map{z-index:4;background:var(--panel);border:1px solid var(--line);position:absolute;top:12px;left:12px;box-shadow:0 1px 4px #00000040}.quick-create{border-bottom:1px solid var(--line);flex-direction:column;gap:8px;margin-bottom:4px;padding-bottom:12px;display:flex}.quick-create .type-pills{flex-wrap:wrap;gap:6px;display:flex}.quick-create textarea{resize:vertical}.quick-create button[type=submit]{align-self:flex-start}.quick-actions{align-items:stretch;gap:8px}.quick-create .quick-actions button{align-self:stretch;margin:0}button.draft-it{border-color:var(--accent);color:var(--accent);background:var(--field)}button.draft-it:disabled{opacity:.55}.draft-it-row{padding:8px 10px}.draft-it-row .ai-job-line{gap:8px}.draft-it-row .dot.hollow{background:0 0;border:1px solid}.show-details{border:0;flex-direction:column;gap:8px;margin:0;padding:0;display:flex}.show-details legend{margin-bottom:6px}.show-also ul{margin:4px 0 0;padding-left:16px}.log-lines{flex-direction:column;gap:8px;max-height:50vh;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.log-lines li{white-space:pre-wrap;line-height:1.4}.log-when{margin-right:4px}.art-disc{color:#fff;background:#8f2d2d;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-weight:700;display:inline-flex}.art-disc.player{background:#2f7d4f}.new-scene .grid-size input{width:4.5em}.app.shell .table-body.no-map{margin-bottom:250px;padding-bottom:24px;padding-right:438px}.app.shell .table-body.no-map .lore-card{width:min(420px,50vw - 320px)}.session-pill{align-items:center;gap:6px;display:inline-flex}.session-pill .dot{background:currentColor;border-radius:50%;width:8px;height:8px;display:inline-block}.session-pill .dot.hollow{background:0 0;border:1.5px solid}.session-pill.tone-green{color:#2f7a50;background:#e7f1ea;border-color:#8cc0a1}.session-pill.tone-amber{color:#8a6214;background:#fbefd2;border-color:#e6cf92}.session-pill.tone-grey{color:#7a8278;border-color:#c9cfc4}.session-pill.tone-muted,.session-pill.tone-pending{color:var(--muted)}.session-pill.tone-off{color:#9aa197;opacity:.7}.session-pill.active{box-shadow:inset 0 0 0 1px}.dot.pulse{animation:2s ease-in-out infinite ai-pulse}@keyframes ai-pulse{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.dot.pulse{animation:none}}.ai-panel{flex-direction:column;gap:12px;display:flex}.ai-steps{flex-direction:column;gap:14px;margin:0;padding:0;list-style:none;display:flex}.ai-steps>li{border-top:1px solid var(--line);padding-top:12px}.ai-steps h3{justify-content:space-between;margin:0 0 6px;font-size:14px;display:flex}.ai-steps .radio{margin-right:16px}.copy-row{align-items:center;gap:8px;margin:4px 0;display:flex}.copy-row code{background:var(--panel-2);overflow-wrap:anywhere;border-radius:4px;flex:1;padding:4px 6px;font-size:12px}.pair-code{letter-spacing:.08em;border:1px solid var(--line);background:var(--field);border-radius:6px;padding:4px 10px;font-size:18px;font-weight:700}.ai-status{border:1px solid var(--line);border-radius:8px;padding:10px 12px}.ai-status p{margin:0}.ai-status p+p,.ai-status .copy-row{margin-top:6px}.ai-status .dot{background:currentColor;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.ai-status.online{color:#2f6b49;background:#e7f1ea;border-color:#8cc0a1}.ai-status.writing{color:#5e4410;background:#fbefd2;border-color:#e6cf92}.ai-status.offline{background:var(--panel-2);color:var(--text)}.ai-status.offline .dot{background:#9aa197}.ai-lists{grid-template-columns:1fr 1fr;gap:12px;display:grid}.ai-lists ul{margin:4px 0 0;padding-left:16px}.ai-actions{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:4px 12px;padding-top:10px}.ai-panel>button{align-self:flex-start}.ai-panel button.danger{background:var(--field);border-color:#e3b3ad}.ai-actions-inline{justify-content:space-between;align-items:center;gap:8px}.ai-actions-inline p{margin:0}.ai-job-line{justify-content:space-between;align-items:center;display:flex}.ai-usage{border-top:1px solid var(--line);padding-top:10px}.campaign-settings .switch-row{align-items:center;gap:10px}.narrator{flex-direction:column;gap:10px;min-height:0;display:flex}.narrator-transcript{flex-direction:column;gap:10px;max-height:55vh;padding-top:12px;display:flex;overflow-y:auto;-webkit-mask-image:linear-gradient(#0000 0,#000 24px);mask-image:linear-gradient(#0000 0,#000 24px)}.narrator-says{white-space:pre-wrap;margin:0;font-family:Georgia,Iowan Old Style,serif;font-size:15px;line-height:1.5}.narrator-you{background:var(--select);max-width:85%;color:var(--text);white-space:pre-wrap;border-radius:12px 12px 2px;align-self:flex-end;margin:0;padding:6px 10px;font-size:13px}.narrator-you.pending.waiting{border:1px dashed var(--accent-2);background:0 0}.narrator-you.pending.stopped,.narrator-you.pending.failed{opacity:.75}.narrator-state{text-align:right;margin-top:2px;display:block}.narrator-compose{flex-direction:column;gap:4px;display:flex}.narrator-compose textarea{resize:vertical;width:100%}.ai-log-group ul{margin:0 0 12px;padding:0;list-style:none}.ai-log-line{text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;max-width:100%;font-family:Georgia,Iowan Old Style,serif;display:inline-block;overflow:hidden}.ai-log-row{border-top:1px solid var(--line);justify-content:space-between;gap:8px;padding:6px 0;display:flex}.ai-log-row.undone>div{opacity:.6;text-decoration:line-through}.ai-log-row.refused>div{opacity:.7}.ai-log-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.ai-log-head>p{min-width:0;overflow:hidden}.ai-log-head>button,.ai-log-head>span{flex:none}.ai-log-row.blocking{border-left:3px solid var(--warn);background:#fbf3df;padding-left:6px}.chip.amber{color:var(--warn);background:#f5e6c4}
