:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}#root{min-height:100vh}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.app{height:100vh;display:flex;flex-direction:column;overflow:hidden}.app-warning-banner{flex-shrink:0;display:flex;align-items:center;gap:.5rem;padding:.5rem 1.5rem;background:#ef444426;border-bottom:1px solid rgba(239,68,68,.4);color:#fca5a5;font-size:.875rem}.app-warning-icon{flex-shrink:0;font-size:1rem}.app-header{padding:1rem 1.5rem;background:var(--header-bg, #1e293b);border-bottom:1px solid var(--border-color, #334155)}.header-content{display:flex;justify-content:space-between;align-items:center;gap:1rem}.header-nav{flex-shrink:0}.header-link{background:none;border:none;color:var(--accent, #38bdf8);font-size:.875rem;cursor:pointer;padding:.25rem 0}.header-link:hover{text-decoration:underline}.app-header h1{margin:0;font-size:1.5rem;font-weight:600;color:var(--text-primary, #f8fafc)}.tagline{margin:.25rem 0 0;font-size:.875rem;color:var(--text-muted, #94a3b8)}.restore-overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0009}.restore-modal{padding:1.5rem;background:var(--sidebar-bg, #0f172a);border:1px solid var(--border-color, #334155);border-radius:8px;max-width:360px}.restore-modal h2{margin:0 0 .5rem;font-size:1.125rem;color:var(--text-primary, #f8fafc)}.restore-modal p{margin:0 0 1rem;font-size:.875rem;color:var(--text-muted, #94a3b8)}.restore-actions{display:flex;gap:.5rem;justify-content:flex-end}.undo-toast{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);z-index:999;padding:.5rem 1rem;background:var(--sidebar-bg, #0f172a);border:1px solid var(--border-color, #334155);border-radius:8px;font-size:.875rem;color:var(--text-primary, #f8fafc);box-shadow:0 4px 12px #0000004d}.undo-toast kbd{padding:.15rem .4rem;font-size:.75rem;background:var(--input-bg, #1e293b);border:1px solid var(--border-color, #334155);border-radius:4px}.app-main{flex:1;min-height:0;display:flex;gap:0;overflow:hidden}.instructions-page{flex:1;min-height:0;overflow-y:auto;padding:2rem 1.5rem;background:var(--editor-bg, #0c1222)}.instructions-content{max-width:56rem;margin:0 auto}.instructions-content h2{margin:0 0 .5rem;font-size:1.25rem;color:var(--text-primary, #f8fafc)}.instructions-content h3{margin:1.5rem 0 .5rem;font-size:1rem;color:var(--text-primary, #f8fafc)}.instructions-content p,.instructions-content ul,.instructions-content ol{margin:0 0 .75rem;font-size:.9375rem;color:var(--text-muted, #94a3b8);line-height:1.5}.instructions-content ul,.instructions-content ol{padding-left:1.5rem}.instructions-content code{padding:.1rem .3rem;font-size:.9em;background:#334155;border-radius:3px;color:#e2e8f0}.instructions-content li{margin-bottom:.5rem}.instructions-content kbd{padding:.2rem .5rem;font-size:.85em;font-weight:500;color:var(--text-primary, #f8fafc);background:#334155;border:1px solid #475569;border-radius:4px}.shortcuts-table{width:100%;margin:.5rem 0 1rem;border-collapse:collapse;font-size:.875rem}.shortcuts-table th,.shortcuts-table td{padding:.5rem .75rem;text-align:left;border-bottom:1px solid #475569;color:var(--text-primary, #f8fafc)}.shortcuts-table th{color:#cbd5e1;font-weight:600}.shortcuts-table td:first-child{white-space:nowrap;width:1%}.instructions-content .secondary-btn{margin-top:1rem}.sidebar{width:320px;flex-shrink:0;min-height:0;background:var(--sidebar-bg, #0f172a);border-right:1px solid var(--border-color, #334155);padding:1rem;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:1.25rem}.editor-pane{flex:1;min-height:0;padding:1.5rem;overflow-y:auto;background:var(--editor-bg, #0c1222);display:flex;flex-direction:column;gap:1.5rem}.editor-pane:focus{outline:1px solid var(--accent, #38bdf8);outline-offset:-1px}.dialogue-map{flex-shrink:0;border:1px solid var(--border-color, #334155);border-radius:8px;overflow:hidden;background:var(--node-bg, #1e293b)}.map-title-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding:.5rem 1rem;background:#0003;border-bottom:1px solid var(--border-color, #334155)}.map-title{margin:0;font-size:.8125rem;font-weight:600;color:var(--text-muted, #94a3b8)}.map-title-editable{cursor:pointer}.map-title-editable:hover{color:var(--text-primary, #f8fafc)}.map-title-input{margin:0;padding:.2rem .4rem;font-size:.8125rem;font-weight:600;color:var(--text-primary, #f8fafc);background:var(--input-bg, #1e293b);border:1px solid var(--accent, #38bdf8);border-radius:4px;min-width:8rem}.map-title-input:focus{outline:none}.map-drag-hint{font-size:.6875rem;color:var(--text-muted, #64748b);font-weight:400}.map-link-btn{padding:.25rem .5rem;font-size:.75rem;background:transparent;color:var(--accent, #38bdf8);border:1px solid var(--accent, #38bdf8);border-radius:4px;cursor:pointer}.map-link-btn:hover{background:#38bdf81a}.map-link-hint{font-size:.75rem;color:var(--text-muted, #94a3b8);display:flex;align-items:center;gap:.5rem}.map-cancel-link-btn{padding:.2rem .4rem;font-size:.6875rem;background:transparent;color:var(--text-muted, #64748b);border:none;cursor:pointer}.map-cancel-link-btn:hover{color:var(--text-primary, #f8fafc)}.map-background{fill:transparent;cursor:default}.map-empty-hint{font-size:12px;fill:var(--text-muted, #64748b);pointer-events:none}.map-container{padding:.5rem;overflow:auto;min-width:0;max-height:500px}.map-svg{display:block;width:100%;height:auto;min-height:80px}.map-node-group{cursor:pointer;-webkit-user-select:none;user-select:none}.map-node-group:hover .map-node{stroke:var(--accent, #38bdf8);stroke-width:2}.map-node{fill:#1e293b;stroke:#475569;stroke-width:1.5;transition:stroke .15s,stroke-width .15s,fill .15s}.map-node-group:hover .map-node,.map-node.selected{stroke:var(--accent, #38bdf8);stroke-width:2}.map-node.selected{fill:#38bdf81f}.map-node.start{stroke-dasharray:5 3;stroke:var(--accent, #38bdf8)}.map-node.linked-from-selected{stroke:#a78bfa;stroke-width:1.5;fill:#a78bfa14}.map-node.unreachable{fill:#ef444440;stroke:#ef4444}.map-node.unreachable.selected{fill:#ef444459;stroke:#ef4444}.map-node-id{fill:var(--text-muted, #94a3b8);font-weight:600}.map-node-preview{fill:var(--text-primary, #f8fafc)}.npc-name-field{margin-bottom:-.5rem}.npc-name-field label{display:block;font-size:.75rem;color:var(--text-muted, #64748b);margin-bottom:.25rem}.npc-name-field input{width:60%;padding:.4rem .6rem;font-size:.8125rem;background:var(--input-bg, #1e293b);border:1px solid var(--border-color, #334155);border-radius:6px;color:var(--text-primary, #f8fafc)}.genre-selector{margin-bottom:.5rem}.genre-selector label{display:block;font-size:.75rem;color:var(--text-muted, #64748b);margin-bottom:.25rem}.genre-select{width:100%;padding:.4rem .6rem;font-size:.8125rem;background:var(--input-bg, #1e293b);border:1px solid var(--border-color, #334155);border-radius:6px;color:var(--text-primary, #f8fafc)}.mood-selector{margin-bottom:.5rem}.mood-selector label{display:block;font-size:.75rem;color:var(--text-muted, #64748b);margin-bottom:.25rem}.mood-select{width:100%;padding:.4rem .6rem;font-size:.8125rem;background:var(--input-bg, #1e293b);border:1px solid var(--border-color, #334155);border-radius:6px;color:var(--text-primary, #f8fafc)}.category-panel{padding-bottom:1rem;border-bottom:1px solid var(--border-color, #334155)}.category-panel h2,.category-panel .help{margin:0 0 .5rem}.category-list{display:flex;flex-direction:column;gap:.25rem}.category-item{background:var(--node-bg, #1e293b);border-radius:8px;overflow:hidden}.category-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:.5rem .75rem;text-align:left;background:transparent;border:none;color:var(--text-primary, #f8fafc);font-size:.875rem;font-weight:600;cursor:pointer}.category-header:hover{background:#ffffff0a}.expand-icon{color:var(--text-muted, #64748b);font-size:1rem;line-height:1}.snippet-list{list-style:none;margin:0;padding:.25rem .5rem .5rem;border-top:1px solid var(--border-color, #334155)}.snippet-item{margin-top:.25rem}.add-snippet-btn{display:block;width:100%;padding:.4rem .6rem;text-align:left;font-size:.8125rem;background:transparent;color:var(--accent, #38bdf8);border:1px dashed transparent;border-radius:4px;cursor:pointer}.add-snippet-btn:hover{background:#38bdf81a;border-color:var(--accent, #38bdf8)}.flow-node-count{color:var(--text-muted, #64748b);font-weight:400;margin-left:.25rem}.variables-editor header,.node-list header{margin-bottom:.5rem}.variables-editor h2,.node-list h2,.import-panel h2,.export-panel h2{margin:0;font-size:.875rem;font-weight:600;color:var(--text-primary, #f8fafc)}.help{margin:.25rem 0 0;font-size:.75rem;color:var(--text-muted, #64748b)}.variable-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.variable-row{display:flex;align-items:center;gap:.5rem}.key-input{flex:0 0 100px;min-width:0}.value-input{flex:1;min-width:0}.equals{color:var(--text-muted, #64748b);font-size:.75rem}.add-btn,.add-choice-btn,.add-node-btn{margin-top:.5rem;padding:.4rem .75rem;font-size:.8125rem;background:transparent;color:var(--accent, #38bdf8);border:1px dashed var(--accent, #38bdf8)}.add-btn:hover,.add-choice-btn:hover,.add-node-btn:hover{background:#38bdf81a}.node-list header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem}.node-list-filter{margin-bottom:.5rem}.node-list-filter-input{width:100%;padding:.4rem .6rem;font-size:.8125rem;background:var(--input-bg, #1e293b);border:1px solid var(--border-color, #334155);border-radius:6px;color:var(--text-primary, #f8fafc)}.node-list-filter-input::placeholder{color:var(--text-muted, #64748b)}.node-list-filter-input:focus{outline:none;border-color:var(--accent, #38bdf8)}.node-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.node-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .75rem;text-align:left;background:var(--node-bg, #1e293b);border:1px solid transparent;border-radius:6px;color:var(--text-primary, #f8fafc);cursor:pointer;font-size:.8125rem}.node-item:hover{border-color:var(--border-color, #475569)}.node-item.selected{border-color:var(--accent, #38bdf8);background:#38bdf814}.node-item.unreachable{border-color:#ef444499;background:#ef444414}.node-item.unreachable.selected{border-color:#ef4444;background:#ef444426}.node-unreachable-warn{flex-shrink:0;color:#ef4444;font-size:.875rem}.node-id{flex-shrink:0;font-weight:600;color:var(--text-muted, #94a3b8);min-width:2ch}.node-preview{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.start-dot{flex-shrink:0;color:var(--accent, #38bdf8);font-size:.625rem}.start-node-field{display:flex;flex-direction:column;gap:.25rem}.start-node-field label{font-size:.8125rem;color:var(--text-muted, #94a3b8)}.export-panel-warning{margin:.5rem 0;padding:.5rem .75rem;background:#ef444426;border:1px solid rgba(239,68,68,.4);border-radius:6px;color:#fca5a5;font-size:.8125rem}.project-actions{display:flex;gap:.5rem}.new-tree-btn{width:100%}.import-actions{display:flex;gap:.5rem;margin-top:.5rem}.import-file-input{position:absolute;width:0;height:0;opacity:0;overflow:hidden}.export-actions{display:flex;gap:.5rem;margin-top:.5rem}.primary-btn{padding:.5rem 1rem;background:var(--accent, #38bdf8);color:#0f172a;border:none;font-weight:600}.primary-btn:hover{filter:brightness(1.1)}.secondary-btn{padding:.5rem 1rem;background:transparent;color:var(--accent, #38bdf8);border:1px solid var(--accent, #38bdf8)}.secondary-btn:hover{background:#38bdf81a}.node-editor{max-width:90%}.node-editor-header{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.node-editor-header .danger-btn,.node-editor-header .node-remove-btn{margin-left:auto}.node-editor .node-id{font-size:1rem}.start-badge{font-size:.6875rem;padding:.2rem .5rem;background:var(--accent, #38bdf8);color:#0f172a;border-radius:4px;font-weight:600}.unreachable-badge{font-size:.6875rem;padding:.2rem .5rem;background:#ef444433;color:#f87171;border:1px solid rgba(239,68,68,.5);border-radius:4px;font-weight:500}.node-links-to{font-size:.8125rem;color:var(--text-muted, #94a3b8);margin-bottom:1rem;display:flex;align-items:center;flex-wrap:wrap;gap:.35rem}.node-links-to-label{font-weight:500}.node-links-to-badge{display:inline-block;padding:.2rem .5rem;background:#38bdf826;color:var(--accent, #38bdf8);border-radius:4px;font-size:.75rem}.field{margin-bottom:1rem}.field label{display:block;font-size:.8125rem;color:var(--text-muted, #94a3b8);margin-bottom:.25rem}.field input,.field textarea{width:100%;padding:.5rem .75rem;font-size:.9375rem;background:var(--input-bg, #1e293b);border:1px solid var(--border-color, #334155);border-radius:6px;color:var(--text-primary, #f8fafc)}.field input:focus,.field textarea:focus{outline:none;border-color:var(--accent, #38bdf8)}.field textarea{resize:vertical;min-height:4rem}.node-mood-field .node-mood-select{width:100%;padding:.4rem .6rem;font-size:.8125rem;background:var(--input-bg, #1e293b);border:1px solid var(--border-color, #334155);border-radius:6px;color:var(--text-primary, #f8fafc)}.node-mood-hint{display:block;font-size:.6875rem;color:var(--text-muted, #64748b);margin-top:.25rem}.standard-greeting-picker{margin-top:.75rem}.standard-greeting-picker label{display:block;font-size:.8125rem;color:var(--text-muted, #94a3b8);margin-bottom:.25rem}.standard-greeting-select{width:100%;padding:.5rem .75rem;font-size:.875rem;background:var(--input-bg, #1e293b);border:1px solid var(--border-color, #334155);border-radius:6px;color:var(--text-primary, #f8fafc)}.standard-greeting-select:focus{outline:none;border-color:var(--accent, #38bdf8)}.node-editor-body{display:flex;flex-direction:column;gap:2rem}@media(min-width:768px){.node-editor-body{flex-direction:row;align-items:center;gap:2.5rem;justify-content:center}.node-editor-npc{flex:0 0 48%;min-width:0;display:flex;flex-direction:column;align-items:center}.node-editor-npc .field{width:100%}.choices-section{flex:1;min-width:0;margin-top:0;display:flex;flex-direction:column;align-items:center}.choices-section .choices-list,.choices-section .choices-header{width:100%}}.choices-section{margin-top:2rem}.choices-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.choices-header label{font-size:.8125rem;color:var(--text-muted, #94a3b8)}.choices-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.choice-row{display:flex;align-items:center;gap:.5rem}.choice-row.dragging{opacity:.5}.choice-row.drag-over{outline:2px dashed var(--accent, #38bdf8);outline-offset:2px}.choice-drag-handle{flex-shrink:0;cursor:grab;color:var(--text-muted, #64748b);font-size:.75rem;padding:.25rem;-webkit-user-select:none;user-select:none}.choice-drag-handle:active{cursor:grabbing}.choice-text{flex:1;min-width:0}.add-node-for-choice-btn{flex-shrink:0;padding:.4rem .5rem;font-size:.75rem;background:transparent;color:var(--accent, #38bdf8);border:1px dashed var(--accent, #38bdf8);border-radius:4px;cursor:pointer}.add-node-for-choice-btn:hover{background:#38bdf81a}.choice-row select{flex:0 0 140px;padding:.5rem;font-size:.8125rem;background:var(--input-bg, #1e293b);border:1px solid var(--border-color, #334155);border-radius:6px;color:var(--text-primary, #f8fafc)}.remove-btn{flex-shrink:0;width:28px;height:28px;padding:0;font-size:1.25rem;line-height:1;background:transparent;color:var(--text-muted, #64748b);border:none;cursor:pointer}.remove-btn:hover{color:#f87171}.danger-btn{margin-top:1.5rem;padding:.5rem 1rem;font-size:.8125rem;background:transparent;color:#f87171;border:1px solid #f87171}.danger-btn:hover{background:#f871711a}.empty-state{padding:3rem;text-align:center;color:var(--text-muted, #64748b)}
