:root{--bg: #0b0d10;--panel: #12161c;--panel2: #0f1318;--text: #e7eef7;--muted: #98a7b8;--accent: #7cc4ff;--border: #222a33;--timeline-edge: #ffffff;--header-h: 44px;--footer-h: 28px;--chip-book-border: rgba(124, 196, 255, .9);--chip-book-bg: rgba(124, 196, 255, .14);--chip-character-border: rgba(107, 203, 119, .9);--chip-character-bg: rgba(107, 203, 119, .14);--chip-location-border: rgba(255, 146, 43, .95);--chip-location-bg: rgba(255, 146, 43, .14);--thread-border: #ffe66d}@media(prefers-color-scheme:light){:root{--bg: #f5f7fa;--panel: #ffffff;--panel2: #ffffff;--text: #0e1720;--muted: #526274;--accent: #0b66c3;--border: #d8dee6;--timeline-edge: #1a2430;--chip-book-border: rgba(11, 102, 195, .85);--chip-book-bg: rgba(11, 102, 195, .1);--chip-character-border: rgba(46, 125, 50, .75);--chip-character-bg: rgba(46, 125, 50, .1);--chip-location-border: rgba(230, 126, 34, .85);--chip-location-bg: rgba(230, 126, 34, .1);--thread-border: #d4b100}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.35 system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}body.modalOpen{overflow:hidden}.layout{height:100%;display:grid;grid-template-rows:auto 1fr auto}.header{background:#0c1016b8;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-bottom:1px solid rgba(255,255,255,.1);box-shadow:0 4px 20px #0000004d;color:#ffffffeb;padding:12px 16px;display:flex;align-items:center;justify-content:space-between}.header .title{font-weight:650;letter-spacing:.2px}.headerActions{display:flex;align-items:center;gap:10px}.headerBtn{border:1px solid rgba(255,255,255,.1);background:#ffffff0f;color:#fffc;padding:7px 10px;border-radius:10px;font-size:12px;cursor:pointer}.headerBtn:hover{background:#ffffff1a;border-color:#ffffff2e}.headerBtn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.main{position:relative;overflow:hidden}.floatingPanel{position:fixed;width:280px;background:#0c1016b8;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid rgba(255,255,255,.1);border-radius:14px;box-shadow:0 8px 32px #00000073;z-index:10;display:flex;flex-direction:row;overflow:hidden}.floatingPanel.animated{transition:transform .25s ease}.panelInner{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.floatingPanel--left{left:12px;top:calc(var(--header-h) + 12px);bottom:calc(var(--footer-h) + 12px)}.floatingPanel--left.collapsed{transform:translate(-272px)}.floatingPanel--right{right:12px;top:calc(var(--header-h) + 12px);bottom:calc(var(--footer-h) + 12px)}.floatingPanel--right.collapsed{transform:translate(272px)}.panelHeader{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.08);font-weight:600;font-size:13px}.panelSub{color:var(--muted);font-size:11px;font-weight:400}.panelBody{flex:1;overflow-y:auto;padding:12px;color:#ffffffb8;font-size:13px}.panelTabs{display:flex;gap:0}.panelTab{background:none;border:none;padding:2px 8px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;color:#ffffff61;border-bottom:2px solid transparent;transition:color .15s ease,border-color .15s ease}.panelTab:hover{color:#ffffffb3}.panelTab.active{color:#fffffff2;border-bottom-color:var(--accent)}.charactersList{display:grid;gap:14px}.characterCard{padding:12px;border-bottom:1px solid var(--border);border-radius:8px}.characterCard:last-child{border-bottom:0}.characterCardHeader{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.charRemoveBtn{background:none;border:none;color:#ffffff59;font-size:16px;cursor:pointer;padding:0 4px;line-height:1}.charRemoveBtn:hover{color:#fffc}.characterCardBody{display:grid;gap:8px}.charDetailRow{display:flex;flex-direction:column;gap:2px}.charDetailLabel{color:#ffffff73;font-size:11px;text-transform:uppercase;letter-spacing:.4px}.charDetailValue{font-size:13px;color:#ffffffd9;display:flex;align-items:center;gap:6px}.charSceneLink{background:none;border:none;color:var(--accent);font:inherit;font-size:12px;cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:2px}.charSceneLink:hover{color:#fff}.charNovelTitle{color:#ffffff73;font-size:11px}.panelPlaceholder{color:#fff6;font-size:12px;text-align:center;padding:32px 16px}.floatingPanel{color:#ffffffeb}.floatingPanel .panelHeader{color:#fffffff2}.floatingPanel .panelSub{color:#ffffff8c}.floatingPanel .filterLabel,.floatingPanel .control{color:#fff9}.floatingPanel .filterRow input[type=text],.floatingPanel .filterRow input[list],.floatingPanel .locationPickerWrap input[type=text],.floatingPanel .locationTree{background:#ffffff0f;border-color:#ffffff1a;color:#ffffffeb}.floatingPanel .msChip{background:#ffffff0f;border-color:#ffffff1a;border-left-color:var(--chip-accent, rgba(255, 255, 255, .1));border-left-width:3px;color:#ffffffeb}.floatingPanel .filterRow .clearFilterBtn{background:#ffffff0f;border-color:#ffffff1a;color:#ffffffb3}.floatingPanel .treeControlBtn,.floatingPanel .clearAllBtn{background:#ffffff0f;border-color:#ffffff1a;color:#fff9}.floatingPanel .clearAllBtn:hover{color:#ffffffeb;border-color:#fff3}.floatingPanel .pill{background:#ffffff0f;border-color:#ffffff1f;color:#ffffffd9}.floatingPanel .pill button{color:#ffffff80}.floatingPanel .pill button:hover{color:#ffffffeb}.floatingPanel .chip{border-color:#ffffff1f;color:#ffffffd9}.floatingPanel .chip button{border-color:#ffffff1f;color:#ffffff80}.floatingPanel .chip button:hover{color:#ffffffeb}.floatingPanel .synopsisItemMeta{color:#ffffff80}.floatingPanel .synopsisItem:hover{background:#ffffff0f}.floatingPanel .synopsisItemTitle{color:#ffffffeb}.floatingPanel .detailsSectionTitle{color:#ffffff8c}.floatingPanel .locNode .locLabel{color:#ffffffd9}.floatingPanel .locNode .locType{color:#ffffff73;background:#ffffff0f}.floatingPanel .locNode .locCount{color:#ffffff73}.floatingPanel .locNoResults{color:#ffffff80}.floatingPanel .typeaheadCanonical{color:#ffffffeb}.floatingPanel .typeaheadAliases,.floatingPanel .typeaheadMatchHint{color:#ffffff80}.floatingPanel .toggleBtn,.floatingPanel .controlValue{color:#ffffffb8}.panelEdge{width:20px;min-width:20px;background:transparent;border:none;color:#ffffff59;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;padding:0;flex-shrink:0;transition:color .15s ease,background .15s ease}.panelEdge:hover{color:#fffc;background:#ffffff0f}.floatingPanel--left .panelEdge{border-left:1px solid rgba(255,255,255,.06)}.floatingPanel--right .panelEdge{border-right:1px solid rgba(255,255,255,.06)}.viewport{position:absolute;inset:0;display:flex;flex-direction:column}.tabBar{display:flex;gap:0;justify-content:center;background:var(--panel);border-bottom:1px solid var(--border);padding:0 12px;flex-shrink:0}.tabBtn{background:none;border:none;border-bottom:2px solid transparent;color:var(--muted);padding:10px 16px;font-size:13px;font-weight:500;cursor:pointer;transition:color .15s,border-color .15s}.tabBtn:hover{color:var(--text)}.tabBtn.active{color:var(--accent);border-bottom-color:var(--accent)}.tabContent{flex:1;position:relative;overflow:hidden;background:#07090c}@media(prefers-color-scheme:light){.tabContent{background:#fbfcfe}}.tabPane{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:15px}.tabPane[hidden]{display:none}canvas{width:100%;height:100%;display:block}.narrativeCanvas{cursor:grab;background:var(--bg)}.narrativeCanvas:active{cursor:grabbing}.characterNetworkWrap{display:flex;flex-direction:column;width:100%;height:100%;min-height:0}.characterStats{padding:6px 12px;font-size:11px;color:var(--muted);background:#0a0e1680;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}.characterCanvasWrap{position:relative;flex:1;min-height:0}.characterCanvas{cursor:grab;background:var(--bg)}.characterCanvas:active{cursor:grabbing}.densityOverlay{position:absolute;top:12px;right:12px;padding:10px 12px;border-radius:10px;background:#12141cd1;color:#e8eefc;font:12px/1.2 system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial;box-shadow:0 10px 24px #00000040;pointer-events:auto;z-index:3;transition:right .25s ease}.densityOverlay--shifted{right:292px}.densityTitle{font-weight:600;margin-bottom:6px}.densityRow{display:flex;align-items:center;gap:8px;margin-bottom:6px}.densityLabel{min-width:40px;font-size:12px}.densitySelect{flex:1;background:#121826;color:#e8eefc;border:1px solid rgba(255,255,255,.15);border-radius:6px;padding:4px 6px;font-size:12px;font-family:inherit}.densitySlider{width:120px}.densityValue{min-width:34px;text-align:right;font-size:11px}.progressOverlay{position:absolute;right:12px;bottom:12px;padding:6px 10px;border-radius:8px;background:#0c0e14b3;color:#e8eefc;font:11px/1.2 system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial;box-shadow:0 8px 18px #0003;pointer-events:none;z-index:2}.viewContainer{position:absolute;inset:0;width:100%;height:100%}.viewContainer[hidden]{display:none}.viewContainer canvas{width:100%;height:100%;display:block}.sceneTitle{position:absolute;top:12px;left:12px;z-index:11;padding:6px 10px;border-radius:10px;background:#0a0c0f8c;border:1px solid rgba(255,255,255,.12);color:#ffffffe6;font-size:13px;font-weight:600;letter-spacing:.2px;pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.characterView{background:radial-gradient(circle at 20% 20%,#141924,#0b0f16 55%,#080b10);overflow:hidden}.ribbonsView{background:radial-gradient(circle at 20% 20%,#101622,#0b1018 55%,#070b10);overflow:hidden}.globeView{background:#000;overflow:hidden}.footer{background:#0c1016b8;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-top:1px solid rgba(255,255,255,.1);box-shadow:0 -4px 20px #0000004d;padding:6px 16px;font-size:11px;color:#ffffff8c;display:flex;align-items:center;justify-content:space-between}.footerLeft{display:flex;align-items:center;gap:8px}.footerKeys{display:flex;align-items:center;gap:6px;font-size:10px;color:#ffffff59}.footerKeys kbd{display:inline-block;padding:1px 5px;border-radius:4px;border:1px solid rgba(255,255,255,.15);background:#ffffff0f;color:#ffffff80;font-family:inherit;font-size:10px;line-height:1.4;margin-right:1px}.footerRight{display:flex;align-items:center;gap:8px}.modalOverlay{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:24px;background:#0000008c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modalOverlay[hidden]{display:none}.modalDialog{width:min(760px,calc(100vw - 48px));max-height:min(80vh,720px);overflow:auto;background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:0 18px 60px #00000080}.modalHeader{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 14px 10px;border-bottom:1px solid var(--border)}.modalTitle{font-size:14px;font-weight:700;letter-spacing:.2px}.modalCloseBtn{width:32px;height:32px;border-radius:10px;border:1px solid var(--border);background:var(--panel2);color:var(--text);font-size:18px;line-height:1;cursor:pointer}.modalCloseBtn:hover{border-color:#ffffff38}.modalCloseBtn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.modalBody{padding:14px;color:var(--text)}.modalBody p{margin:0 0 12px}.modalBody ul{margin:8px 0 14px 18px;padding:0}.modalBody li{margin:6px 0}.modalSectionTitle{margin-top:10px;margin-bottom:6px;color:var(--muted);font-size:12px;font-weight:650;letter-spacing:.2px}.modalFootnote{margin-top:12px;color:var(--muted);font-size:12px;line-height:1.35}.loadingOverlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:16px}.errorOverlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.errorCard{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:28px 32px;max-width:460px;text-align:center}.errorTitle{font-weight:650;font-size:16px;margin-bottom:8px;color:#fa5252}.errorText{color:var(--muted);font-size:13px;line-height:1.5}.tooltip{position:fixed;pointer-events:none;z-index:9999;max-width:420px;background:#0a0c0feb;border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:10px 12px;color:var(--text);box-shadow:0 10px 30px #00000059}.tooltip[hidden]{display:none}.tooltip .tTitle{font-weight:650;margin-bottom:6px}.tooltip .tLine{color:#ffffffc7;font-size:12px}.chipRow{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:8px;padding:4px 8px;border-radius:999px;border:1px solid var(--border);background:var(--panel2);font-size:12px}.chip.chipBook{border-color:var(--chip-book-border);background:var(--chip-book-bg)}.chip.chipCharacter{border-color:var(--chip-character-border);background:var(--chip-character-bg)}.chip.chipLocation{border-color:var(--chip-location-border);background:var(--chip-location-bg)}.chip button{width:18px;height:18px;border-radius:999px;border:1px solid var(--border);background:transparent;color:var(--muted);cursor:pointer;line-height:1;padding:0}.chip button:hover{color:var(--text)}.threadChip{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:999px;font-size:11px;border:2px solid;border-color:var(--thread-border)}.threadChip .threadDot{width:10px;height:10px;border-radius:50%}.threadChip button{width:16px;height:16px;border-radius:999px;border:1px solid var(--border);background:transparent;color:var(--muted);cursor:pointer;line-height:1;padding:0;font-size:10px}.threadChip button:hover{color:var(--text)}.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:999px;border:1px solid var(--border);background:var(--panel2);font-size:12px}.pill.pillLocation{cursor:pointer}.pill.pillLocation:hover{border-color:#ffffff38}.pill button{width:18px;height:18px;border-radius:999px;border:1px solid var(--border);background:transparent;color:var(--muted);cursor:pointer;line-height:1;padding:0}.pill button:hover{color:var(--text)}.debugLink{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.78rem;text-decoration:none;cursor:pointer}.synopsisList{display:grid;gap:14px}.synopsisItem{padding:12px;border-bottom:1px solid var(--border);border-radius:8px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.synopsisItem:hover{background:var(--panel2)}.synopsisItem.isSelected{background:#7cc4ff1f;border:1px solid var(--accent)}.synopsisItem:last-child{border-bottom:0}.synopsisItemTitle{font-size:12px;font-weight:650;letter-spacing:.2px;margin-bottom:6px}.synopsisItemMeta{color:var(--muted);font-size:11px;margin-bottom:8px}.synopsisItemText{white-space:pre-wrap}.synopsisItemSection{margin-top:10px}.synopsisItemSection .detailsSectionTitle{margin-bottom:6px}.synopsisItemSection .detailsList{display:flex;flex-wrap:wrap;gap:5px}.detailsSection{margin-bottom:16px}.detailsSectionTitle{color:var(--muted);font-size:12px;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between}.detailsText{white-space:pre-wrap}.detailsList{display:flex;flex-wrap:wrap;gap:6px}.filterBar{display:flex;flex-direction:column;gap:16px}.filterGroup{display:grid;gap:6px}.filterLabel{font-size:12px;color:var(--muted)}.filterRow{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}.filterRow input[type=text],.filterRow input[list]{background:var(--panel2);border:1px solid var(--border);border-radius:8px;padding:8px 10px;color:var(--text);min-width:0;width:100%}.filterRow button{width:36px;height:36px;border-radius:10px;border:1px solid var(--border);background:var(--panel2);color:var(--text);font-size:18px;line-height:1;cursor:pointer}.filterRow button:hover{border-color:#ffffff38}.multiSelectChips{display:flex;flex-wrap:wrap;gap:6px}.msChip{padding:4px 10px;border-radius:6px;border:1px solid var(--border);background:var(--panel2);color:var(--text);font-size:12px;cursor:pointer;transition:background .15s,border-color .15s,color .15s;line-height:1.4;border-left:3px solid var(--chip-accent, transparent)}.msChip:hover{border-color:#ffffff38}.msChipActive{background:var(--chip-accent, var(--accent));border-color:var(--chip-accent, var(--accent));color:#fff;border-left-color:var(--chip-accent, var(--accent))}.msChipEmpty{font-size:11px;color:var(--muted);font-style:italic;padding:2px 0}.filterControls{display:flex;flex-direction:column;gap:10px}.control{display:grid;gap:6px;color:var(--muted);font-size:12px}.control input[type=range]{width:100%}.controlValue{color:#ffffffe6;font-weight:650}.control-inline{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--panel2);color:var(--text)}.selectedFilters{min-height:0}.filterExpression{display:flex;flex-direction:column;gap:6px}.exprGroup--root{display:flex;flex-wrap:wrap;align-items:center;gap:5px}.exprGroup--nested{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px;padding:3px 4px;border:1px dashed rgba(255,255,255,.12);border-radius:8px;background:#ffffff08}.exprItem{display:inline-flex;align-items:center;gap:3px}.exprOp{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:4px;color:var(--muted);font-size:9px;font-weight:700;padding:2px 5px;cursor:pointer;text-transform:uppercase;letter-spacing:.5px;-webkit-user-select:none;user-select:none;transition:border-color .15s,color .15s,background .15s;flex-shrink:0}.exprOp:hover{border-color:var(--accent);color:var(--accent);background:#7cc4ff14}.exprOp--or{color:#b48cffcc;border-color:#b48cff40}.exprOp--or:hover{color:#b48cff;border-color:#b48cff80;background:#b48cff14}.exprBracket{font-size:18px;font-weight:700;color:#fff;-webkit-user-select:none;user-select:none;line-height:1;display:inline-flex;align-items:center;gap:1px}.exprBracketOpen{margin-right:-1px}.exprBracketClose{margin-left:-1px}.exprUnwrap{font-size:8px;background:transparent;border:none;color:#fff3;cursor:pointer;padding:0 2px;line-height:1;transition:color .15s}.exprUnwrap:hover{color:var(--text)}.exprChip{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:999px;border:1px solid var(--border);background:var(--panel2);font-size:11px;white-space:nowrap;line-height:1.4}.exprChip--book{border-color:var(--chip-book-border);background:var(--chip-book-bg)}.exprChip--char{border-color:var(--chip-character-border);background:var(--chip-character-bg)}.exprChip--loc{border-color:var(--chip-location-border);background:var(--chip-location-bg)}.exprChip--pov{border-style:dashed;color:var(--text)}.exprChip--thread .exprChipRemove{color:#1a1a2e99;border-color:#1a1a2e40}.exprChip--thread .exprChipRemove:hover{color:#1a1a2ee6;border-color:#1a1a2e80}.exprChip--thread .threadDot{display:none}.exprChipLabel{max-width:140px;overflow:hidden;text-overflow:ellipsis}.exprChipRemove{width:14px;height:14px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:transparent;color:var(--muted);cursor:pointer;line-height:1;padding:0;font-size:10px;display:inline-flex;align-items:center;justify-content:center;transition:color .15s,border-color .15s;flex-shrink:0}.exprChipRemove:hover{color:var(--text);border-color:#ffffff4d}.filterExpression--grouping .exprChip{cursor:pointer;transition:box-shadow .15s,outline .15s}.filterExpression--grouping .exprChip:hover{box-shadow:0 0 0 2px #7cc4ff59}.exprChip--selected{outline:2px solid var(--accent);outline-offset:1px;box-shadow:0 0 0 4px #7cc4ff2e}.filterExpression--grouping .exprGroup--nested{cursor:pointer}.filterExpression--grouping .exprGroup--nested:hover{box-shadow:0 0 0 2px #7cc4ff59}.exprGroup--selected{outline:2px solid var(--accent);outline-offset:1px;box-shadow:0 0 0 4px #7cc4ff2e}.exprToolbar{display:flex;align-items:center;min-height:26px}.exprBracketBtn{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:6px;border:1px dashed rgba(255,255,255,.2);background:transparent;color:#ffffff80;cursor:pointer;font-size:11px;transition:border-color .15s,color .15s,background .15s}.exprBracketBtn:hover{border-color:var(--accent);color:var(--accent);background:#7cc4ff0f}.exprBracketBtnIcon{font-weight:700;font-size:13px;letter-spacing:-1px}.exprBracketBtnLabel{font-size:10px}.exprGroupBar{display:flex;align-items:center;gap:6px;padding:4px 8px;border-radius:8px;background:#7cc4ff14;border:1px solid rgba(124,196,255,.2)}.exprGroupBarHint{font-size:10px;color:#ffffff8c;margin-right:2px;white-space:nowrap}.exprGroupBtn{font-size:10px;padding:3px 8px;border-radius:6px;border:1px solid var(--accent);background:#7cc4ff1f;color:var(--accent);cursor:pointer;transition:background .15s,opacity .15s;white-space:nowrap}.exprGroupBtn:hover:not(:disabled){background:#7cc4ff38}.exprGroupBtn:disabled{opacity:.35;cursor:default}.exprGroupBtn--or{border-color:#b48cff99;background:#b48cff1a;color:#b48cffe6}.exprGroupBtn--or:hover:not(:disabled){background:#b48cff33}.exprGroupBtn--cancel{border-color:#ffffff26;background:transparent;color:#ffffff80}.exprGroupBtn--cancel:hover{background:#ffffff0f;color:#ffffffd9}.typeaheadWrap{position:relative;width:100%;min-width:0}.typeaheadWrap input{width:100%}.typeahead{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:30;background:#10141ceb;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid rgba(255,255,255,.1);border-radius:10px;box-shadow:0 12px 36px #00000073;max-height:260px;overflow:auto;padding:6px}.typeaheadItem{display:grid;grid-template-columns:1fr;gap:2px;padding:8px 10px;border-radius:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.typeaheadItem:hover,.typeaheadItem[aria-selected=true]{background:#ffffff12}.typeaheadCanonical{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.typeaheadAliases{color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.typeaheadMatchHint{margin-top:1px;color:var(--muted);font-size:11px}.typeaheadMainRow{display:flex;align-items:baseline;gap:10px;min-width:0}.locationPickerWrap{display:flex;flex-direction:column;gap:8px}.locationPickerWrap input[type=text]{background:var(--panel2);border:1px solid var(--border);border-radius:8px;padding:8px 10px;color:var(--text);width:100%;box-sizing:border-box}.locationTreeControls{display:flex;gap:4px;justify-content:flex-end;margin-bottom:4px}.treeControlBtn{background:var(--panel2);border:1px solid var(--border);border-radius:4px;color:var(--muted);padding:2px 6px;font-size:12px;cursor:pointer;width:24px;height:20px;display:flex;align-items:center;justify-content:center}.treeControlBtn:hover{background:#7cc4ff14;border-color:#7cc4ff4d}.treeControlBtn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.locationTree{max-height:200px;overflow-y:auto;border:1px solid var(--border);border-radius:8px;background:var(--panel2);padding:6px}.locNode{display:flex;align-items:center;gap:4px;padding:3px 4px;border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:12px}.locNode:hover{background:#7cc4ff14}.locNode.selected{background:#7cc4ff2e}.locNode .locToggle{width:16px;height:16px;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:10px;flex-shrink:0;border-radius:3px;background:none;border:none;padding:0;cursor:pointer}.locNode .locToggle:hover{background:#ffffff1a}.locNode .locToggle.empty{visibility:hidden}.locNode .locCheck{width:14px;height:14px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.locNode .locLabel{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.locNode .locType{font-size:9px;color:var(--muted);padding:1px 4px;border-radius:3px;background:#ffffff0d;flex-shrink:0}.locNode .locCount{font-size:10px;color:var(--muted);flex-shrink:0}.locChildren{margin-left:16px}.locChildren.collapsed{display:none}.locationTree.searching .locChildren{margin-left:0}.locationTree.searching .locToggle{display:none}.locNoResults{color:var(--muted);font-size:12px;padding:8px;text-align:center}.clearAllBtn{border:1px solid var(--border);background:var(--panel2);color:var(--muted);padding:8px 12px;border-radius:10px;font-size:12px;cursor:pointer;width:100%}.clearAllBtn:hover{color:var(--text);border-color:#ffffff38}.globeWrap{position:relative;width:100%;height:100%;overflow:hidden;background:#000}.globeWrap .mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.globeCanvas{display:block;position:absolute;inset:0;z-index:0}.globeControls{position:absolute;top:12px;left:12px;display:flex;flex-direction:column;gap:6px;z-index:10;background:#0009;border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:8px 10px;font-size:12px;color:#fffc;transition:left .25s ease}.globeControls--shifted{left:292px}.narrativeControls{position:absolute;top:12px;left:12px;display:flex;flex-direction:column;gap:10px;z-index:10;background:#0009;border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:8px 10px;font-size:12px;color:#fffc;transition:left .25s ease}.narrativeControls .control{display:flex;align-items:center;gap:8px;color:#fffffff2}.narrativeControls select{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:5px;color:#ffffffeb;font-size:12px;padding:3px 6px;cursor:pointer}.narrativeControls--shifted{left:292px}.convergenceToggle{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:12px;color:#fffc}.convergenceToggle input[type=checkbox]{accent-color:rgb(255,160,60)}.globeCheckbox{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:12px;color:#fffc}.globeCheckbox input[type=checkbox]{accent-color:var(--accent)}.globeGridLabels{position:absolute;inset:0;pointer-events:none;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;z-index:2}.globeUserLabels{position:absolute;inset:0;pointer-events:none;z-index:3}.globeSceneOverlay{position:absolute;inset:0;pointer-events:none;z-index:4}.globeHoverCoords{position:absolute;top:10px;right:12px;padding:6px 8px;border-radius:10px;background:#00000073;border:1px solid rgba(255,255,255,.08);font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:#ffffffd9;pointer-events:none;z-index:8;white-space:pre}.globeKeyLegend{position:absolute;right:12px;bottom:10px;padding:8px 10px;border-radius:10px;background:#00000073;border:1px solid rgba(255,255,255,.08);font-size:11px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:#ffffffb3;white-space:pre;pointer-events:none;z-index:8;transition:right .25s ease}.globeKeyLegend--shifted{right:292px}.narrativeKeyLegend{position:absolute;right:12px;bottom:10px;padding:8px 10px;border-radius:10px;background:#00000073;border:1px solid rgba(255,255,255,.08);font-size:11px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:#ffffffb3;white-space:pre;pointer-events:none;z-index:8;transition:right .25s ease}.narrativeKeyLegend--shifted{right:292px}.globeDistanceLegend{position:absolute;bottom:12px;left:12px;z-index:8;background:#666;border-radius:6px;padding:6px 10px;font-size:11px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:#ffffffe6;pointer-events:none}.globeDistanceLegend .legendBarContainer{height:4px;border-radius:2px;display:flex;width:100%}.globeDistanceLegend .legendSegment{height:100%;border-radius:0;flex-shrink:0}.globeDistanceLegend .legendLabel{text-align:center;white-space:nowrap;font-size:11px;color:#ffffffe6}.sceneReader{max-width:800px;margin:0 auto;padding:2rem;background:var(--panel);min-height:100%;font-family:Georgia,Times New Roman,serif;line-height:1.6;color:var(--text);overflow-y:auto;max-height:100%}.readerContent{max-width:600px;margin:0 auto;padding:2rem;background:#ffffff05;border-radius:8px;box-shadow:0 4px 20px #0000001a;border:1px solid rgba(255,255,255,.05)}.readerTitle{font-size:2.2rem;font-weight:300;margin-bottom:2rem;text-align:center;color:var(--accent);border-bottom:2px solid var(--accent);padding-bottom:1rem}.readerSubtitle{font-size:1.4rem;font-weight:400;margin:2rem 0 1.5rem;color:var(--muted);font-style:italic}.readerHeading{font-size:1.2rem;font-weight:600;margin:2rem 0 1rem;color:var(--text)}.readerParagraph{margin-bottom:1.2rem;text-indent:1.5rem;font-size:1.1rem;text-align:justify;-webkit-hyphens:auto;hyphens:auto}.readerLoading{display:flex;align-items:center;justify-content:center;height:200px;font-size:1.1rem;color:var(--muted)}.readerError{display:flex;align-items:center;justify-content:center;height:200px;font-size:1.1rem;color:#fa5252;text-align:center;padding:2rem}.tabPane.tabPane--reader{align-items:flex-start;padding:1rem 0;overflow-y:auto}@media(prefers-color-scheme:dark){.readerContent{background:#0000004d;border-color:#ffffff14}}@media(prefers-color-scheme:light){.sceneReader{background:#fafafa}.readerContent{background:#fff;border-color:#e0e0e0;box-shadow:0 2px 8px #0000001a}.readerTitle{color:#2c3e50;border-color:#3498db}.readerParagraph{color:#2c3e50}}.globeWrap .sceneBubble{position:absolute;transform:translate(-50%,-50%);border-radius:999px;background:#0f2040bf;border:1px solid rgba(42,68,120,.85);box-shadow:0 0 8px #0a142899;pointer-events:auto;cursor:pointer}.globeWrap .sceneBubble.direct{background:#d62626cc;border-color:#e85050e6;box-shadow:0 0 10px #a81616a6}.globeWrap .sceneBubble.descendant{background:#0f2040bf;border-color:#2a4478d9}.globeWrap .sceneBubble.warren{background:radial-gradient(circle at 30% 30%,color-mix(in srgb,var(--warren-color, hsl(270 80% 60%)) 40%,transparent),color-mix(in srgb,var(--warren-color, hsl(270 80% 60%)) 60%,rgba(0,0,0,.2)),#141432d9);border:2px solid color-mix(in srgb,var(--warren-color, hsl(270 80% 60%)) 80%,transparent);box-shadow:0 0 12px color-mix(in srgb,var(--warren-color, hsl(270 80% 60%)) 70%,transparent),0 0 24px color-mix(in srgb,var(--warren-color, hsl(270 80% 60%)) 50%,transparent),inset 0 0 8px #ffffff1a;animation:warrenGlow 3s ease-in-out infinite alternate}.globeWrap .sceneBubble.warren:before{content:"";position:absolute;inset:-4px;border-radius:50%;background:radial-gradient(circle,transparent 40%,color-mix(in srgb,var(--warren-color, hsl(270 80% 60%)) 40%,transparent) 50%,transparent 70%);animation:warrenWarp 4s linear infinite;pointer-events:none}@keyframes warrenGlow{0%{box-shadow:0 0 12px color-mix(in srgb,var(--warren-color, hsl(270 80% 60%)) 70%,transparent),0 0 24px color-mix(in srgb,var(--warren-color, hsl(270 80% 60%)) 50%,transparent),inset 0 0 8px #ffffff1a}to{box-shadow:0 0 16px color-mix(in srgb,var(--warren-color, hsl(270 80% 60%)) 90%,transparent),0 0 32px color-mix(in srgb,var(--warren-color, hsl(270 80% 60%)) 70%,transparent),inset 0 0 12px #fff3}}@keyframes warrenWarp{0%{transform:scale(1) rotate(0);opacity:.3}25%{transform:scale(1.1) rotate(90deg);opacity:.5}50%{transform:scale(.9) rotate(180deg);opacity:.7}75%{transform:scale(1.05) rotate(270deg);opacity:.4}to{transform:scale(1) rotate(360deg);opacity:.3}}.globeWrap #warren-line-overlay{position:absolute;inset:0;pointer-events:none;z-index:3}.globeWrap #warren-line-overlay svg{width:100%;height:100%;display:block}.globeWrap .warrenGuideLine{stroke:#ff3b3b;stroke-width:1;stroke-linecap:round;opacity:.75}.globeWrap #thread-path-overlay{position:absolute;inset:0;pointer-events:none;z-index:3}.globeWrap #thread-path-overlay svg{width:100%;height:100%;display:block}.globeWrap #thread-label-overlay{position:absolute;inset:0;pointer-events:none;z-index:5}.globeWrap .threadSeqLabel{position:absolute;transform:translate(-50%,-50%);width:18px;height:18px;border-radius:999px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#fff;pointer-events:auto;cursor:pointer}.globeWrap #distance-overlay{position:absolute;inset:0;pointer-events:none;z-index:6}.globeWrap #distance-overlay svg{width:100%;height:100%;display:block}.globeWrap .user-label{position:absolute;transform:translate(-50%,-50%);font-size:12px;line-height:1;color:#fffffff2;text-shadow:0 1px 4px rgba(0,0,0,.6);pointer-events:auto;cursor:default;white-space:nowrap;padding:3px 8px;border-radius:6px;background:#00000059;border:1px solid rgba(255,255,255,.12)}.globeWrap .user-label:before{content:"";display:inline-block;width:6px;height:6px;border-radius:999px;background:currentColor;margin-right:4px;vertical-align:middle}.globeWrap .user-label.selected{background:#0000008c;border-color:#ffffffbf;box-shadow:0 0 0 2px #ffffff26}.globeWrap .grid-label{position:absolute;transform:translate(-50%,-50%);font-size:11px;line-height:1;color:#fffffff2;text-shadow:0 1px 3px rgba(0,0,0,.5);pointer-events:none}.arcView{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;background:var(--bg-dark, #0c121c)}.arcSearchBar{display:flex;align-items:center;gap:10px;padding:6px 12px;background:#ffffff08;border-bottom:1px solid rgba(255,255,255,.06);flex-shrink:0;flex-wrap:wrap}.arcSearchBar .filterGroup{margin:0;min-width:180px;max-width:260px}.arcSearchBar .filterLabel{display:none}.arcSearchBarInfo{display:flex;align-items:center;gap:8px;font-size:12px;color:#c8d2e6cc}.arcCharacterPill{display:inline-block;padding:2px 10px;border-radius:12px;border:2px solid;font-size:12px;font-weight:600;color:#e6eef8e6;background:#ffffff0f}.arcSceneCount{opacity:.6;font-size:11px}.arcCompareBtn{padding:2px 10px;border-radius:10px;border:1px solid rgba(255,255,255,.15);background:#ffffff0a;color:#c8d2e6b3;font-size:11px;cursor:pointer;transition:all .15s}.arcCompareBtn:hover{background:#ffffff14;color:#e6eef8e6}.arcCompareBtn--active{border-color:#64a0ff80;background:#64a0ff1f;color:#8cbefff2}.arcCompareSearch{display:flex;align-items:center;gap:8px}.arcCompareSearch .filterGroup{margin:0;min-width:160px;max-width:220px}.arcCompareSearch .filterLabel{display:none}.arcCanvas{flex:1;width:100%;min-height:0;cursor:grab}.arcCanvas:active{cursor:grabbing}.arcEmptyState{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:40px 20px}.arcEmptyTitle{font-size:18px;font-weight:600;color:#c8d2e6b3}.arcEmptySubtitle{font-size:13px;color:#c8d2e666}.arcEmptyPills{display:flex;flex-wrap:wrap;gap:8px;max-width:600px;justify-content:center}.arcEmptyPill{display:inline-flex;align-items:center;gap:6px;padding:5px 14px;border-radius:16px;border:2px solid;background:#ffffff0a;color:#e6eef8d9;font-size:13px;cursor:pointer;transition:all .15s}.arcEmptyPill:hover{background:#ffffff1a}.arcEmptyPillCount{font-size:10px;opacity:.5}.pillWithArc{display:inline-flex;align-items:center;gap:3px}.pillArcBtn{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:none;background:#ffffff14;color:#c8d2e699;border-radius:4px;font-size:10px;cursor:pointer;padding:0;line-height:1;transition:all .12s}.pillArcBtn:hover{background:#ffffff2e;color:#e6eef8f2}.arcSummaryPanel{max-height:200px;overflow-y:auto;padding:10px 16px;background:#ffffff08;border-bottom:1px solid rgba(255,255,255,.06);flex-shrink:0}.arcSummaryBooks{display:flex;flex-direction:column;gap:8px}.arcSummaryBlock{margin-bottom:6px}.arcSummaryTitle{font-size:11px;font-weight:600;color:#c8d2e699;text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.arcSummaryText{font-size:12px;line-height:1.5;color:#c8d2e6cc}
