@import url(https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,700;1,500&family=Noto+Serif+TC:wght@500;700&family=Noto+Sans+TC:wght@400;500;700&display=swap);.field label,body,html{font-family:var(--font-body)}.cs-item,.cs-trigger{text-align:left;cursor:pointer}.card-pick-cell,.cs-item,.cs-trigger,.header-btn,.num-ctrl button,.tab{cursor:pointer}.gm-brush-opt,.gm-cell,.gm-grid,.num-ctrl button{user-select:none}.preview-pane .preview-loading.hidden,.toast{opacity:0}:root{color-scheme:dark;--obsidian:#0a0812;--obsidian-deep:#050308;--surface-1:#14101c;--surface-2:#1d1828;--surface-3:#251d36;--border-soft:rgba(212, 168, 74, 0.14);--border-strong:rgba(212, 168, 74, 0.34);--gold:#d4a84a;--gold-bright:#f0c96b;--gold-deep:#8a6a28;--ember:#c5534a;--ember-glow:rgba(197, 83, 74, 0.25);--ink:#ece4d1;--ink-dim:#9c947c;--ink-faint:#5e5740;--font-display:"Cormorant Garamond","Noto Serif TC","Merriweather",serif;--font-heading:"Noto Serif TC","Merriweather",serif;--font-body:"Noto Sans TC",-apple-system,"Segoe UI",sans-serif;--font-mono:"Consolas","Menlo","Monaco",monospace}*{box-sizing:border-box}[hidden],select[data-cs]{display:none!important}body,html{margin:0;padding:0;height:100%;background:radial-gradient(ellipse 80% 60% at 50% 0,rgba(212,168,74,.07),transparent 60%),radial-gradient(ellipse 70% 50% at 50% 100%,rgba(138,106,40,.06),transparent 60%),linear-gradient(180deg,var(--obsidian) 0,var(--obsidian-deep) 100%);color:var(--ink);font-size:16px;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body::before{content:"";position:fixed;inset:0;pointer-events:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.82  0 0 0 0 0.66  0 0 0 0 0.29  0 0 0 0.04 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");mix-blend-mode:screen;opacity:.35;z-index:1}.editor-header,.editor-header h1,.editor-root,.header-btn,.preview-pane{position:relative}.editor-root{display:grid;grid-template-rows:auto 1fr;height:100vh;overflow:hidden;z-index:2}.editor-header{display:flex;align-items:center;gap:18px;padding:16px 28px 18px;background:linear-gradient(180deg,rgba(29,24,40,.6) 0,rgba(20,16,28,.4) 100%);border-bottom:1px solid var(--border-soft);flex-wrap:wrap}.editor-header::after{content:"";position:absolute;left:28px;right:28px;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,var(--gold) 20%,var(--gold-bright) 50%,var(--gold) 80%,transparent);opacity:.55}.editor-header h1{margin:0;font-family:var(--font-display);font-size:32px;font-weight:700;letter-spacing:.08em;color:var(--ink);text-shadow:0 0 24px rgba(212,168,74,.25);padding-left:24px}.editor-header h1::before{content:"◆";position:absolute;left:0;top:50%;transform:translateY(-52%);color:var(--gold);font-size:14px;text-shadow:0 0 10px rgba(212,168,74,.7)}.editor-header .spacer{flex:1}.editor-header a.back-link{color:var(--gold);text-decoration:none;font-size:15px;font-family:var(--font-heading);letter-spacing:.04em;padding:6px 4px;transition:color .15s,text-shadow .15s}.editor-header a.back-link:hover{color:var(--gold-bright);text-shadow:0 0 10px rgba(240,201,107,.4)}.header-btn{padding:10px 20px;font-size:15px;font-family:var(--font-heading);letter-spacing:.05em;background:linear-gradient(180deg,rgba(37,29,54,.7),rgba(20,16,28,.8));color:var(--ink);border:1px solid var(--border-strong);border-radius:2px;text-decoration:none;display:inline-block;transition:.18s;overflow:hidden}.field-group h3,.tab{font-family:var(--font-heading);font-size:16px}.header-btn:hover:not(:disabled){background:linear-gradient(180deg,rgba(55,44,80,.85),rgba(29,24,40,.9));border-color:var(--gold);color:var(--gold-bright);box-shadow:0 0 18px rgba(212,168,74,.2),inset 0 0 12px rgba(212,168,74,.08)}.header-btn:disabled{opacity:.35;cursor:not-allowed;filter:grayscale(.4)}.header-btn.primary{background:linear-gradient(180deg,var(--gold) 0,var(--gold-deep) 100%);border-color:var(--gold-bright);color:var(--obsidian-deep);font-weight:700;text-shadow:0 1px 0 rgba(240,201,107,.6);box-shadow:0 2px 14px rgba(212,168,74,.25),inset 0 1px 0 rgba(255,240,190,.5)}.header-btn.primary:hover:not(:disabled){background:linear-gradient(180deg,var(--gold-bright) 0,var(--gold) 100%);color:var(--obsidian-deep);box-shadow:0 4px 24px rgba(212,168,74,.45),inset 0 1px 0 rgba(255,240,190,.6);transform:translateY(-1px)}.char-chip .remove-chip:hover,.header-btn.danger,.tree-node-btn.tree-node-rm{color:var(--ember)}.header-btn.danger:hover:not(:disabled){background:linear-gradient(180deg,rgba(80,30,28,.8),rgba(50,20,18,.9));border-color:var(--ember);color:#f4a49d;box-shadow:0 0 18px var(--ember-glow),inset 0 0 12px rgba(197,83,74,.15)}.editor-body{display:grid;grid-template-columns:minmax(440px,1fr) minmax(440px,1fr);overflow:hidden}@media (max-width:960px){.editor-body{grid-template-columns:1fr;grid-template-rows:1fr 1fr}}.editor-pane{overflow-y:auto;padding:24px 32px 80px;border-right:1px solid var(--border-soft);background:linear-gradient(180deg,rgba(14,10,22,.4),transparent 300px);scrollbar-width:thin;scrollbar-color:rgba(212,168,74,0.3) transparent}.editor-pane::-webkit-scrollbar{width:10px}.editor-pane::-webkit-scrollbar-track{background:0 0}.editor-pane::-webkit-scrollbar-thumb{background:rgba(212,168,74,.25);border-radius:0;border:2px solid transparent;background-clip:content-box}.editor-pane::-webkit-scrollbar-thumb:hover{background:rgba(212,168,74,.5);background-clip:content-box}.preview-pane{overflow:hidden;background:radial-gradient(ellipse at center,rgba(212,168,74,.05),transparent 70%),#000}.preview-pane::after,.preview-pane::before{content:"";position:absolute;width:46px;height:46px;pointer-events:none;z-index:2;opacity:.7}.preview-pane::before{top:14px;left:14px;border-top:1px solid var(--gold);border-left:1px solid var(--gold)}.preview-pane::after{bottom:14px;right:14px;border-bottom:1px solid var(--gold);border-right:1px solid var(--gold)}.preview-pane iframe{width:100%;height:100%;border:0;display:block}.preview-pane .preview-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--gold);font-family:var(--font-display);font-size:18px;letter-spacing:.3em;text-transform:uppercase;background:radial-gradient(ellipse at center,#141020 0,#000 100%);pointer-events:none;transition:opacity .4s;z-index:3}.preview-pane .preview-loading::after{content:"";display:inline-block;width:20px;margin-left:4px;overflow:hidden;animation:1.4s steps(4,end) infinite dots}@keyframes dots{0%,100%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}.tabs{display:flex;gap:0;margin-bottom:24px;border-bottom:1px solid var(--border-soft);position:sticky;top:0;background:linear-gradient(180deg,var(--obsidian) 85%,transparent);z-index:10;padding-top:4px}.cs-trigger,.cs-wrap,.field-group,.field-group h3,.tab{position:relative}.tab{padding:12px 24px;background:0 0;border:none;color:var(--ink-dim);letter-spacing:.08em;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .18s}.desc-mode-row label:hover,.soul-mode-row label:hover,.tab:hover{color:var(--ink)}.card-pick-cell.selected .card-pick-name,.char-cell.selected .char-name,.cs-item.selected,.cs-item:hover,.tab.active,.tag-cell.selected .tag-cell-name{color:var(--gold-bright)}.tab.active{border-bottom-color:var(--gold);text-shadow:0 0 12px rgba(240,201,107,.3)}.tab.active::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(212,168,74,.12),transparent);pointer-events:none}.tab-panel{display:none}.json-panel .json-error.show,.tab-panel.active{display:block}.field-group{margin-bottom:34px}.field-group h3{margin:0 0 18px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);padding-bottom:10px;display:flex;align-items:center;gap:12px}.field-group h3::before{content:"";width:6px;height:6px;background:var(--gold);transform:rotate(45deg);box-shadow:0 0 8px rgba(212,168,74,.6);flex-shrink:0}.cs-trigger,input[type=radio]{box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}.field-group h3::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,var(--gold) 0,rgba(212,168,74,.4) 20%,transparent 100%)}.field-row{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-bottom:14px}.field-row.triple{grid-template-columns:repeat(3,1fr)}#mode-modal .tag-modal-grid,.field-row.single{grid-template-columns:1fr}.field label{display:block;font-size:13px;font-weight:500;letter-spacing:.05em;color:var(--ink-dim);margin-bottom:7px;text-transform:uppercase}.cs-item,.cs-trigger{color:var(--ink);font-family:var(--font-body)}.field input[type=number],.field input[type=text],.field input[type=url],.field select,.field textarea{width:100%;padding:11px 14px;background-color:var(--surface-2);border:1px solid var(--border-soft);border-radius:2px;color:var(--ink);font-family:var(--font-body);font-size:15px;box-shadow:inset 0 1px 2px rgba(0,0,0,.4);transition:border-color .15s,box-shadow .2s,background-color .15s}.cs-trigger:hover,.field input:hover,.field select:hover,.field textarea:hover,.skill-block:hover{border-color:var(--border-strong)}.cs-trigger:focus,.cs-wrap.cs-open .cs-trigger,.field input:focus,.field select:focus,.field textarea:focus{outline:0;border-color:var(--gold);background-color:var(--surface-3);box-shadow:inset 0 1px 2px rgba(0,0,0,.4),0 0 0 3px rgba(212,168,74,.15),0 0 14px rgba(212,168,74,.18)}.field textarea{min-height:90px;resize:vertical;line-height:1.65;font-size:14.5px}.cs-wrap{width:100%}.cs-trigger{width:100%;padding:11px 32px 11px 14px;background-color:var(--surface-2);border:1px solid var(--border-soft);border-radius:2px;font-size:15px;display:flex;align-items:center;justify-content:space-between;transition:border-color .15s,background-color .15s}.cs-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cs-caret{width:10px;height:6px;margin-left:8px;flex-shrink:0;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6' fill='none'><path d='M1 1L5 5L9 1' stroke='%23d4a84a' stroke-width='1.6' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:center;transition:transform .15s}.cs-wrap.cs-open .cs-caret{transform:rotate(180deg)}.cs-menu{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:9000;max-height:280px;overflow-y:auto;background:linear-gradient(180deg,var(--surface-2),var(--obsidian));border:1px solid var(--gold);border-radius:2px;box-shadow:0 10px 32px rgba(0,0,0,.75),0 0 18px rgba(212,168,74,.18);padding:4px;display:flex;flex-direction:column;gap:1px;scrollbar-width:thin;scrollbar-color:rgba(212,168,74,0.35) transparent}.chars-grid,.tag-modal-grid{scrollbar-width:thin;scrollbar-color:rgba(212,168,74,0.3) transparent}.cs-item{display:block;width:100%;padding:9px 14px;background:0 0;border:1px solid transparent;border-radius:2px;font-size:14.5px;transition:background-color .1s,color .1s,border-color .1s}.card-pick-cell,.char-cell,.need-login,.tag-cell,.tag-modal-empty,.tree-node-label{text-align:center}.cs-item:hover{background-color:rgba(212,168,74,.12);border-color:var(--border-soft)}.cs-item.selected{background-color:rgba(212,168,74,.22);border-color:var(--border-strong);font-weight:700}.confirm-modal .confirm-content{max-width:440px}.confirm-modal .confirm-message{margin:0;padding:8px 4px;font-family:var(--font-body);font-size:15px;line-height:1.6;color:var(--ink)}#card-modal .tag-modal-grid.card-picker-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr))}.card-pick-cell{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 6px 8px;background:rgba(29,24,40,.5);border:1px solid var(--border-soft);border-radius:2px;font-family:var(--font-body);color:var(--ink);transition:background .12s,border-color .12s,transform .12s}.card-pick-cell:hover,.mode-cell:hover{background:rgba(55,44,80,.6);border-color:var(--gold);transform:translateY(-1px)}.card-pick-cell.selected,.tag-cell.selected{background:linear-gradient(180deg,rgba(212,168,74,.22),rgba(138,106,40,.12));border-color:var(--gold);box-shadow:0 0 12px rgba(212,168,74,.25)}.card-pick-cell img{width:64px;height:64px;object-fit:contain;border-radius:2px;filter:drop-shadow(0 1px 2px rgba(0, 0, 0, .5))}.card-pick-name{font-size:12px;line-height:1.3;color:var(--ink);word-break:break-word;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}.card-pick-id{font-size:10px;color:var(--ink-dim);letter-spacing:.04em}.field-hint{font-family:var(--font-body);font-size:12px;color:var(--ink-dim);padding:4px 2px 0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.num-input{position:relative;display:block;width:100%}.num-input>input[type=number]{width:100%;padding-right:34px}.num-ctrl{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:2px;pointer-events:none}.num-ctrl button{pointer-events:auto;background:linear-gradient(180deg,rgba(212,168,74,.18),rgba(138,106,40,.12));border:1px solid var(--border-strong);color:var(--gold);font-size:8px;line-height:1;padding:3px 7px;border-radius:1px;transition:.12s;font-family:var(--font-body)}.num-ctrl button:hover{background:linear-gradient(180deg,var(--gold-bright),var(--gold));color:var(--obsidian-deep);border-color:var(--gold-bright);box-shadow:0 0 6px rgba(212,168,74,.5)}.num-ctrl button:active{transform:scale(.92)}input[type=radio]{appearance:none;-webkit-appearance:none;width:16px;height:16px;border:1.5px solid var(--border-strong);border-radius:50%;background:var(--surface-2);cursor:pointer;position:relative;transition:.18s;margin:0;flex-shrink:0}input[type=radio]:hover{border-color:var(--gold)}input[type=radio]:checked{border-color:var(--gold);background:var(--surface-3);box-shadow:0 0 10px rgba(212,168,74,.5),inset 0 1px 2px rgba(0,0,0,.4)}input[type=radio]:checked::after{content:"";position:absolute;inset:3px;background:radial-gradient(circle at 30% 30%,var(--gold-bright),var(--gold) 60%,var(--gold-deep));border-radius:50%;box-shadow:0 0 6px rgba(212,168,74,.6)}#f-json{min-height:75vh}.json-panel textarea{width:100%;min-height:calc(100vh - 240px);padding:16px;background:#0a0812;border:1px solid var(--border-soft);border-radius:2px;color:#ddd0a8;font-family:var(--font-mono);font-size:14px;line-height:1.65;resize:vertical;tab-size:2;box-shadow:inset 0 2px 8px rgba(0,0,0,.6)}.json-panel .json-hint{margin-top:10px;font-size:13.5px;color:var(--ink-dim);font-style:italic;line-height:1.6;padding-left:12px;border-left:2px solid var(--border-strong)}.json-panel .json-error{margin-top:10px;padding:10px 14px;background:rgba(197,83,74,.12);border-left:3px solid var(--ember);border-radius:0;color:#f4a49d;font-size:13.5px;display:none}.skill-block{border:1px solid var(--border-soft);border-radius:2px;padding:16px 18px;margin-bottom:14px;background:linear-gradient(180deg,rgba(37,29,54,.35) 0,rgba(20,16,28,.2) 100%);position:relative;transition:border-color .2s,background .2s}.skill-block::before{content:"";position:absolute;top:0;left:0;width:2px;height:100%;background:linear-gradient(180deg,var(--gold) 0,transparent 100%);opacity:.5}.add-skill-btn,.skill-block .remove-skill{background:0 0;cursor:pointer;letter-spacing:.1em;font-family:var(--font-heading)}.skill-block .skill-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.skill-block .skill-header h4{margin:0;font-family:var(--font-heading);font-size:14px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--gold)}.skill-block .remove-skill{border:1px solid transparent;color:var(--ink-dim);font-size:13px;padding:5px 12px;border-radius:2px;transition:.15s}.skill-block .remove-skill:hover{background:rgba(197,83,74,.15);border-color:var(--ember);color:#f4a49d}.add-skill-btn{width:100%;padding:12px;border:1px dashed var(--border-strong);border-radius:2px;color:var(--gold);font-size:14px;margin-top:6px;transition:.18s}.add-skill-btn:hover:not(:disabled){background:rgba(212,168,74,.08);border-style:solid;color:var(--gold-bright);box-shadow:inset 0 0 12px rgba(212,168,74,.1)}.add-skill-btn:disabled{opacity:.3;cursor:not-allowed}.chars-chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:8px;min-height:40px;padding:8px 10px;border:1px solid var(--border-soft);background:rgba(10,8,18,.5);border-radius:2px}.chars-chips:empty::before{content:"尚未選擇";color:var(--ink-faint);font-size:13.5px;padding:3px 4px;font-style:italic}.char-chip{display:inline-flex;align-items:center;gap:8px;padding:5px 12px 5px 6px;background:linear-gradient(180deg,rgba(55,44,80,.6),rgba(29,24,40,.8));border:1px solid var(--border-strong);border-radius:16px;font-size:13.5px;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.3)}.char-chip .remove-chip,.chars-toggle-btn{background:0 0;color:var(--ink-dim);cursor:pointer}.char-chip img{width:24px;height:24px;object-fit:contain;filter:drop-shadow(0 0 4px rgba(212, 168, 74, .25))}.char-cell img,.skill-tag-chip img,.tag-cell img{object-fit:contain;filter:drop-shadow(0 1px 2px rgba(0, 0, 0, .5))}.char-chip .remove-chip{border:none;font-size:17px;padding:0 3px;line-height:1;transition:color .15s}.chars-toggle-btn{width:100%;padding:10px;border:1px dashed var(--border-soft);border-radius:2px;font-family:var(--font-heading);font-size:14px;letter-spacing:.08em;transition:.15s}.chars-custom-add,.chars-custom-title{color:var(--gold);font-family:var(--font-heading);font-size:12.5px}.chars-toggle-btn:hover{border-color:var(--gold);color:var(--gold)}.chars-picker{margin-top:10px;padding:14px;background:rgba(10,8,18,.7);border:1px solid var(--border-soft);border-radius:2px;box-shadow:inset 0 2px 10px rgba(0,0,0,.5)}.chars-custom{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;align-items:center;padding:12px;margin-bottom:12px;background:rgba(20,16,28,.5);border:1px dashed var(--border-strong);border-radius:2px}.chars-custom-title{grid-column:1/-1;letter-spacing:.12em;text-transform:uppercase;margin-bottom:2px}.chars-custom input[type=text],.chars-custom input[type=url]{padding:8px 10px;background:var(--surface-2);border:1px solid var(--border-soft);border-radius:2px;color:var(--ink);font-family:var(--font-body);font-size:13px;box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}.chars-custom input:focus,.soul-stats-row label input[type=number]:focus{outline:0;border-color:var(--gold);box-shadow:inset 0 1px 2px rgba(0,0,0,.4),0 0 0 2px rgba(212,168,74,.15)}.chars-custom-add{padding:8px 14px;background:linear-gradient(180deg,rgba(212,168,74,.18),rgba(138,106,40,.12));border:1px solid var(--border-strong);letter-spacing:.08em;cursor:pointer;border-radius:2px;transition:.15s}.chars-custom-add:hover{background:linear-gradient(180deg,var(--gold-bright),var(--gold));color:var(--obsidian-deep);box-shadow:0 0 10px rgba(212,168,74,.4)}.chars-search{width:100%;padding:10px 14px;background:var(--surface-2);border:1px solid var(--border-soft);border-radius:2px;color:var(--ink);font-family:var(--font-body);font-size:14.5px;margin-bottom:12px;box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}.chars-search:focus{outline:0;border-color:var(--gold);box-shadow:inset 0 1px 2px rgba(0,0,0,.4),0 0 0 3px rgba(212,168,74,.12)}.chars-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px;max-height:300px;overflow-y:auto;padding:4px}.char-cell{display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 4px 6px;background:rgba(29,24,40,.5);border:1px solid transparent;border-radius:2px;cursor:pointer;transition:.15s}.char-cell:hover{background:rgba(55,44,80,.6);border-color:var(--border-strong)}.char-cell.selected{background:linear-gradient(180deg,rgba(212,168,74,.2),rgba(138,106,40,.1));border-color:var(--gold);box-shadow:0 0 12px rgba(212,168,74,.2),inset 0 0 8px rgba(212,168,74,.1)}.char-cell img{width:44px;height:44px}.char-cell.selected img{filter:drop-shadow(0 0 6px rgba(212, 168, 74, .4))}.char-cell .char-name{font-size:12px;color:var(--ink-dim);line-height:1.3;word-break:break-word}.char-cell.user-char{position:relative;border-left:2px solid var(--gold)}.char-cell .char-delete{position:absolute;top:2px;right:2px;width:18px;height:18px;padding:0;background:rgba(197,83,74,.25);border:1px solid var(--ember);border-radius:2px;color:var(--ink);font-size:10px;line-height:1;cursor:pointer;transition:background .12s,color .12s,border-color .12s,transform .12s}.char-cell .char-delete:hover{background:rgba(197,83,74,.55);border-color:#ff8a6e;color:#fff;transform:scale(1.08)}.soul-mode-row{display:flex;gap:20px;align-items:center;margin-bottom:12px;font-size:14px;color:var(--ink-dim);font-family:var(--font-heading)}.desc-mode-row label,.soul-mode-row label{display:inline-flex;align-items:center;gap:6px;cursor:pointer;padding:4px 6px;transition:color .15s}.soul-mode-row input[type=radio]{accent-color:var(--gold);cursor:pointer}.soul-stats-row{display:flex;flex-direction:column;gap:8px;padding:10px 14px;background:rgba(10,8,18,.5);border:1px solid var(--border-soft);border-radius:2px;margin-bottom:10px}.desc-mode-row,.soul-stats-row label{align-items:center;font-family:var(--font-heading);display:flex}.desc-textarea,.soul-stats-row label input[type=number]{background:var(--surface-2);box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}.soul-stats-row label{gap:14px;font-size:14px;color:var(--ink);letter-spacing:.05em;white-space:nowrap}.soul-stats-row label .num-input{width:160px;margin-left:auto;flex-shrink:0}.soul-stats-row label input[type=number]{padding:8px 12px;border:1px solid var(--border-soft);border-radius:2px;color:var(--ink);font-family:var(--font-body);font-size:14.5px;transition:border-color .15s,box-shadow .2s}.desc-textarea,.desc-tree-container{border:1px solid var(--border-soft)}.desc-editor{display:flex;flex-direction:column;gap:8px}.desc-mode-row{gap:20px;font-size:13px;color:var(--ink-dim)}.desc-textarea{width:100%;padding:11px 14px;border-radius:2px;color:var(--ink);font-family:var(--font-body);font-size:14.5px;line-height:1.65;min-height:96px;resize:vertical}.desc-textarea:focus,.grid-modal .gm-field input:focus,.tag-modal-search:focus{outline:0;border-color:var(--gold);box-shadow:inset 0 1px 2px rgba(0,0,0,.4),0 0 0 3px rgba(212,168,74,.15)}.desc-tree-container{padding:8px;background:rgba(10,8,18,.5);border-radius:2px;box-shadow:inset 0 2px 8px rgba(0,0,0,.5)}.grid-modal .gm-field input,.tree-text{box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}.tree-node{position:relative;padding:10px 12px;margin-bottom:8px;background:rgba(29,24,40,.55);border:1px solid var(--border-soft);border-left:2px solid var(--gold);border-radius:2px}.tree-node.is-root{background:rgba(20,16,28,.7);border-left-color:var(--gold-bright)}.tree-node .tree-type,.tree-node-btn{border:1px solid var(--border-soft);cursor:pointer}.tree-node-header{display:flex;align-items:center;gap:10px;margin-bottom:8px}.tree-node-label{font-family:var(--font-heading);font-size:12px;color:var(--gold);letter-spacing:.1em;min-width:26px}.grid-modal .gm-field input,.grid-modal .gm-field label,.tree-node .tree-type,.tree-node-btn,.tree-text{font-family:var(--font-body)}.tree-node .tree-type{flex:1;max-width:180px;padding:5px 28px 5px 10px;background:var(--surface-2);border-radius:2px;color:var(--ink);font-size:12.5px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6' fill='none'><path d='M1 1L5 5L9 1' stroke='%23d4a84a' stroke-width='1.4' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 10px center;appearance:none}.tree-node .tree-type:focus{outline:0;border-color:var(--gold)}.tree-node-btns{display:flex;gap:3px;margin-left:auto}.tree-node-btn{padding:3px 8px;font-size:11px;background:rgba(212,168,74,.1);border-radius:2px;color:var(--gold);line-height:1;transition:.12s}.tree-node-btn:hover{background:var(--gold);color:var(--obsidian-deep);border-color:var(--gold-bright)}.tree-node-btn.tree-node-rm:hover{background:var(--ember);color:#fff;border-color:var(--ember)}.tree-text{width:100%;padding:8px 10px;background:#0f0a18;border:1px solid var(--border-soft);border-radius:2px;color:var(--ink);font-size:13.5px;line-height:1.55;resize:vertical;min-height:44px}.grid-tag-insert-btn,.tree-add-child{font-family:var(--font-heading);cursor:pointer}.tree-text:focus{outline:0;border-color:var(--gold);box-shadow:inset 0 1px 2px rgba(0,0,0,.4),0 0 0 2px rgba(212,168,74,.12)}.tree-children{margin-top:8px;padding-left:14px;border-left:1px dashed var(--border-soft)}.tree-children:empty{margin-top:0;padding-left:0;border-left:0}.tree-add-child{display:inline-block;margin-top:6px;padding:5px 12px;background:0 0;border:1px dashed var(--border-soft);border-radius:2px;color:var(--ink-dim);font-size:11.5px;letter-spacing:.06em;transition:.15s}.grid-tag-insert-btn,.modal-header{letter-spacing:.08em;color:var(--gold)}.tree-add-child:hover{border-color:var(--gold);color:var(--gold);background:rgba(212,168,74,.06)}.grid-tag-toolbar{position:absolute;z-index:10005;background:linear-gradient(180deg,var(--surface-3),var(--surface-1));border:1px solid var(--gold);border-radius:2px;padding:4px 6px;box-shadow:0 6px 24px rgba(0,0,0,.7),0 0 12px rgba(212,168,74,.25)}.grid-tag-insert-btn{background:0 0;border:none;font-size:12.5px;padding:4px 10px}.grid-tag-insert-btn:hover{color:var(--gold-bright);text-shadow:0 0 8px rgba(240,201,107,.5)}.grid-tag-insert-btn.editing{background:linear-gradient(180deg,var(--gold),var(--gold-deep));color:var(--obsidian-deep);border-radius:2px;font-weight:700;box-shadow:0 0 10px rgba(212,168,74,.4)}.grid-tag-insert-btn.editing:hover{color:var(--obsidian-deep);text-shadow:none;filter:brightness(1.1)}.modal-backdrop{position:fixed;inset:0;background:rgba(5,3,8,.8);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:10100;padding:20px}.modal-content{background:linear-gradient(180deg,var(--surface-1),var(--obsidian));border:1px solid var(--gold);box-shadow:0 30px 80px rgba(0,0,0,.8),0 0 40px rgba(212,168,74,.2);max-width:900px;width:100%;max-height:90vh;display:flex;flex-direction:column}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;font-family:var(--font-display);font-size:22px;font-weight:700;border-bottom:1px solid var(--border-soft);position:relative}.modal-header::after{content:"";position:absolute;left:24px;right:24px;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,var(--gold) 20%,var(--gold-bright) 50%,var(--gold) 80%,transparent);opacity:.55}.modal-close{background:0 0;border:1px solid transparent;color:var(--ink-dim);cursor:pointer;font-size:18px;padding:2px 10px;border-radius:2px;transition:.15s}.gm-brush-label,.gm-brush-title,.grid-modal .gm-field label{font-size:12px;text-transform:uppercase}.modal-close:hover{color:var(--ember);border-color:var(--ember)}.modal-body{flex:1;overflow-y:auto;padding:20px 24px}.modal-footer{display:flex;align-items:center;gap:10px;padding:14px 24px;border-top:1px solid var(--border-soft)}.grid-modal .gm-row{display:flex;gap:14px;margin-bottom:18px;flex-wrap:wrap}.grid-modal .gm-field{display:flex;flex-direction:column;gap:6px;flex:1 1 200px}.grid-modal .gm-field.small{flex:0 0 90px}.grid-modal .gm-field label{letter-spacing:.06em;color:var(--ink-dim)}.grid-modal .gm-field input{padding:10px 12px;background:var(--surface-2);border:1px solid var(--border-soft);border-radius:2px;color:var(--ink);font-size:14.5px}.gm-brush-section{padding:14px 16px;background:rgba(10,8,18,.5);border:1px solid var(--border-soft);border-radius:2px;margin-bottom:18px}.gm-brush-opt,.gm-grid-wrap{border:1px solid var(--border-soft)}.gm-brush-title{font-family:var(--font-heading);letter-spacing:.15em;color:var(--gold);margin-bottom:10px}.gm-brush-label,.gm-brush-opt{color:var(--ink-dim);font-family:var(--font-body)}.gm-brush-group{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}.gm-brush-group:last-child{margin-bottom:0}.gm-brush-label{letter-spacing:.05em;min-width:40px}.need-login p,.toast{letter-spacing:.08em}.gm-brush-options{display:flex;flex-wrap:wrap;gap:4px;flex:1}.gm-cell,.gm-upgraded-toggle{align-items:center;cursor:pointer}.gm-brush-opt{padding:5px 10px;background:var(--surface-2);border-radius:2px;cursor:pointer;font-size:12.5px;font-weight:700;line-height:1.2;transition:background .12s,border-color .12s,color .12s,box-shadow .12s}.gm-brush-opt:hover,.tag-type-chip:hover{border-color:var(--gold);color:var(--ink)}.gm-brush-opt.active{background:linear-gradient(180deg,var(--gold),var(--gold-deep));border-color:var(--gold-bright);color:var(--obsidian-deep);box-shadow:0 0 10px rgba(212,168,74,.35)}.gm-upgraded-toggle{display:inline-flex;gap:6px;font-family:var(--font-body);font-size:13px;color:var(--ink)}.gm-grid-wrap{display:flex;justify-content:center;padding:16px;background:rgba(0,0,0,.35);border-radius:2px}.gm-grid{display:grid;gap:4px;touch-action:none}.gm-cell{width:50px;height:50px;background:#0a0812;border:1px solid var(--border-soft);border-radius:2px;position:relative;display:flex;justify-content:center;font-size:11px;color:var(--ink-dim);transition:border-color .12s,background .12s;overflow:hidden}.need-login .btn-primary,.toast{font-size:15px;font-family:var(--font-heading)}.gm-cell:hover{border-color:var(--gold);background:#1a0f1c}.gm-cell .gm-cell-main{position:absolute;inset:3px;display:flex;align-items:center;justify-content:center}.gm-cell .gm-cell-main img{max-width:100%;max-height:100%;object-fit:contain;pointer-events:none}.gm-cell .gm-cell-race{position:absolute;right:1px;top:1px;width:18px;height:18px;pointer-events:none}.gm-cell .gm-cell-label{position:relative;z-index:1;pointer-events:none;text-shadow:0 0 3px #000}.toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%) translateY(8px);background:linear-gradient(180deg,var(--surface-3) 0,var(--surface-1) 100%);color:var(--ink);padding:14px 30px;border-radius:2px;border:1px solid var(--gold);transition:opacity .25s,transform .25s;pointer-events:none;z-index:10000;box-shadow:0 10px 40px rgba(0,0,0,.6),0 0 20px rgba(212,168,74,.2)}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.need-login{padding:100px 20px;color:var(--ink-dim);font-family:var(--font-heading)}.need-login p{font-size:17px;margin:0 0 22px}.need-login .btn-primary{display:inline-block;padding:14px 32px;background:linear-gradient(180deg,var(--gold) 0,var(--gold-deep) 100%);color:var(--obsidian-deep);border:1px solid var(--gold-bright);border-radius:2px;text-decoration:none;font-weight:700;letter-spacing:.1em;box-shadow:0 4px 20px rgba(212,168,74,.3),inset 0 1px 0 rgba(255,240,190,.5);transition:.2s}.need-login .btn-primary:hover{background:linear-gradient(180deg,var(--gold-bright) 0,var(--gold) 100%);transform:translateY(-1px);box-shadow:0 6px 28px rgba(212,168,74,.45),inset 0 1px 0 rgba(255,240,190,.6)}.grid-tag-toolbar{display:flex;gap:6px}.tag-modal{width:min(720px,92vw);max-height:86vh;display:flex;flex-direction:column}.tag-modal .modal-body{display:flex;flex-direction:column;gap:12px;overflow:hidden}.tag-modal-info{font-family:var(--font-body);font-size:13px;color:var(--ink-dim);padding:8px 12px;background:rgba(20,16,28,.5);border-left:2px solid var(--gold);border-radius:2px}.tag-modal-search,.tag-type-chip{background:var(--surface-2);border:1px solid var(--border-soft)}.tag-modal-search{width:100%;padding:10px 14px;border-radius:2px;color:var(--ink);font-family:var(--font-body);font-size:14.5px;box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}.tag-modal-empty,.tag-type-chip{color:var(--ink-dim);font-family:var(--font-body)}.tag-modal-types{display:flex;flex-wrap:wrap;gap:6px}.tag-type-chip{padding:6px 12px;border-radius:2px;font-size:12.5px;font-weight:700;cursor:pointer;transition:background .12s,border-color .12s,color .12s,box-shadow .12s;--tag-type-color:var(--gold)}.skill-tag-chip,.tag-cell{border:1px solid var(--border-soft)}.tag-type-chip.active{background:var(--tag-type-color);border-color:var(--gold-bright);color:#fff;box-shadow:0 0 10px rgba(212,168,74,.3)}.tag-modal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;overflow-y:auto;padding:4px;max-height:50vh}.tag-modal-empty{grid-column:1/-1;padding:30px;font-size:13px}.tag-cell{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 6px 8px;background:rgba(29,24,40,.5);border-left:3px solid var(--tag-color,#444);border-radius:2px;cursor:pointer;font-family:var(--font-body);transition:background .12s,border-color .12s,transform .12s;color:var(--ink)}.tag-cell:hover{background:rgba(55,44,80,.6);border-color:var(--gold);border-left-color:var(--tag-color,var(--gold));transform:translateY(-1px)}.tag-cell img{width:40px;height:40px}.tag-cell-name{font-size:12px;line-height:1.3;color:var(--ink);word-break:break-word}.skill-tags-editor{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:8px;background:rgba(10,8,18,.4);border:1px dashed var(--border-soft);border-radius:2px;min-height:44px}.mode-cell,.skill-tag-chip{align-items:center;font-family:var(--font-body)}.skill-tag-chip{display:inline-flex;gap:6px;padding:4px 4px 4px 10px;background:rgba(29,24,40,.8);border-left:3px solid var(--tag-color,#444);border-radius:2px;font-size:12.5px;color:var(--ink)}.skill-tag-chip img{width:22px;height:22px}.skill-tag-chip .chip-remove{width:22px;height:22px;background:0 0;border:1px solid var(--border-soft);border-radius:2px;color:var(--ink-dim);font-size:11px;line-height:1;cursor:pointer;padding:0;transition:background .12s,border-color .12s,color .12s}.skill-tag-chip .chip-remove:hover{background:rgba(197,83,74,.25);border-color:var(--ember);color:#fff}.skill-tag-add-btn{padding:6px 12px;background:0 0;border:1px dashed var(--border-strong);border-radius:2px;color:var(--ink-dim);font-family:var(--font-body);font-size:12.5px;cursor:pointer;transition:border-color .12s,color .12s,background .12s}.skill-tag-add-btn:hover{border-color:var(--gold);color:var(--gold);background:rgba(212,168,74,.08)}.skill-tags-label{display:block;font-family:var(--font-body);font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-dim);margin-top:10px;margin-bottom:6px}.modes-hint{font-family:var(--font-body);font-size:12.5px;color:var(--ink-dim);padding:8px 12px;margin-bottom:10px;background:rgba(20,16,28,.5);border-left:2px solid var(--gold);border-radius:2px}.modes-hint code{padding:1px 6px;background:rgba(212,168,74,.12);border:1px solid rgba(212,168,74,.3);border-radius:2px;color:var(--gold-bright);font-size:12px}.mode-block .mode-id-tag{margin-left:8px;padding:2px 8px;background:rgba(212,168,74,.12);border:1px solid rgba(212,168,74,.3);border-radius:2px;color:var(--gold);font-family:var(--font-body);font-size:11.5px;font-weight:400;letter-spacing:.04em}.mode-cell{display:flex;gap:10px;padding:10px 12px;background:rgba(29,24,40,.5);border:1px solid var(--border-soft);border-left:3px solid var(--gold);border-radius:2px;cursor:pointer;color:var(--ink);transition:background .12s,border-color .12s,transform .12s;text-align:left}.mode-cell-idx{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;background:linear-gradient(180deg,var(--gold),var(--gold-deep));color:var(--obsidian-deep);font-weight:700;font-size:12px;border-radius:2px}.mode-cell-name{flex:1;font-size:14px}.mode-cell-id{font-size:11px;color:var(--ink-dim);letter-spacing:.04em}