:root{--bg: #0b0f17;--bg-raised: #111827;--bg-panel: #0f1521;--border: #1f2937;--border-soft: #182130;--text: #e5e7eb;--text-dim: #9ca3af;--text-faint: #64748b;--accent: #4ade80;--api: #38bdf8;--overlay: #fb923c;--danger: #f87171;--warn: #fbbf24;font-size:15px}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif}#app{display:flex;flex-direction:column;height:100vh}#topbar{display:flex;align-items:center;gap:20px;padding:0 16px;height:52px;background:var(--bg-raised);border-bottom:1px solid var(--border);flex-shrink:0}.brand{display:flex;align-items:center;gap:10px}.brand-name{font-weight:700;letter-spacing:.2px}.brand-sub{color:var(--text-faint);font-size:.82rem;white-space:nowrap}.brand-sub em{color:var(--overlay);font-style:normal}#tabs{display:flex;gap:4px;margin-left:12px}.tab{appearance:none;background:transparent;border:1px solid transparent;color:var(--text-dim);font:inherit;padding:7px 18px;border-radius:8px;cursor:pointer;transition:color .15s,background .15s}.tab:hover{color:var(--text);background:#ffffff0a}.tab.active{color:var(--accent);border-color:#4ade8033;background:#4ade8011}.mode-switch{margin-left:auto;display:flex;background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:3px;gap:3px}.mode-switch button{appearance:none;background:transparent;border:0;color:var(--text-dim);font:inherit;font-size:.85rem;padding:5px 14px;border-radius:6px;cursor:pointer}.mode-switch button.active{background:var(--border);color:var(--text)}#content{flex:1;min-height:0;position:relative}.view{position:absolute;inset:0;display:none;overflow-y:auto}.view.active{display:block}.empty-state{padding:40px;text-align:center;color:var(--text-faint);border:1px dashed var(--border);border-radius:12px;margin:20px}.dim-note{color:var(--text-faint);font-size:.82rem;padding:4px 0}.result-count{color:var(--text-faint);font-size:.78rem;margin-left:auto;white-space:nowrap}.explorer{display:flex;height:100%}.tasks-left{width:400px;min-width:340px;display:flex;flex-direction:column;background:var(--bg-panel);border-right:1px solid var(--border)}.toolbar{padding:12px;display:flex;flex-direction:column;gap:8px;border-bottom:1px solid var(--border-soft)}.toolbar input[type=search],.toolbar select{width:100%;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:8px;font:inherit;font-size:.86rem;padding:8px 10px;outline:none}.toolbar input:focus,.toolbar select:focus{border-color:var(--accent)}.toggle-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.mini-toggle{display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--text-dim);cursor:pointer;user-select:none}.mini-toggle input{accent-color:var(--accent)}.task-list,.item-list{flex:1;overflow-y:auto;padding:6px}.task-row,.item-row{padding:8px 10px;border-radius:9px;cursor:pointer;transition:background .1s}.task-row:hover,.item-row:hover{background:#ffffff08}.task-row.selected,.item-row.selected{background:#38bdf81a;outline:1px solid #38bdf83d}.task-row-head{display:flex;align-items:center;gap:8px}.task-name{font-weight:600;font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-row-sub{display:flex;gap:10px;margin-top:3px;color:var(--text-faint);font-size:.75rem;padding-left:15px}.trader-dot{width:9px;height:9px;border-radius:50%;background:var(--tc, #8899aa);flex-shrink:0}.trader-dot.big{width:12px;height:12px}.kappa-tag,.lk-tag{font-size:.62rem;font-weight:800;padding:1px 6px;border-radius:5px;background:#4ade8018;color:var(--accent)}.lk-tag{background:#63c5c018;color:#63c5c0}.patch-flag{color:var(--overlay);font-size:.72rem}.item-row{display:flex;align-items:center;gap:10px}.item-icon{width:34px;height:34px;object-fit:contain;background:#00000042;border-radius:7px;padding:2px;flex-shrink:0}.item-cell-main{flex:1;min-width:0}.item-cell-price{text-align:right}.item-name{font-size:.85rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-sub{color:var(--text-faint);font-size:.72rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-price{font-variant-numeric:tabular-nums;font-size:.84rem;font-weight:600}.item-change{font-size:.72rem;font-variant-numeric:tabular-nums}.item-change.up{color:var(--accent)}.item-change.down{color:var(--danger)}.show-more{appearance:none;width:calc(100% - 12px);margin:8px 6px;background:var(--bg-raised);border:1px dashed var(--border);color:var(--text-dim);font:inherit;font-size:.82rem;padding:9px;border-radius:9px;cursor:pointer}.show-more:hover{color:var(--text);border-color:var(--text-faint)}.view-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:60%;gap:16px;color:var(--text-dim)}.task-detail-panel{flex:1;overflow-y:auto;padding:20px 24px}.sheet{max-width:900px}.sheet-header{margin-bottom:16px}.sheet-title{display:flex;align-items:center;gap:12px}.sheet-title h2{margin:0;font-size:1.35rem}.overlay-banner{font-size:.68rem;font-weight:700;letter-spacing:.04em;color:var(--overlay);background:#fb923c15;border:1px solid #fb923c38;padding:3px 10px;border-radius:999px}.sheet-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:7px;color:var(--text-dim);font-size:.85rem}.meta-sep{color:var(--text-faint)}.patch-note{color:var(--warn);font-size:.78rem}.wiki-link{color:var(--api);text-decoration:none;font-size:.85rem}.wiki-link:hover{text-decoration:underline}.sheet-id{display:inline-block;margin-top:8px;color:var(--text-faint);font-size:.74rem}.link-btn{appearance:none;background:transparent;border:0;padding:0;color:var(--api);font:inherit;cursor:pointer;text-align:left}.link-btn:hover{text-decoration:underline}.block{background:var(--bg-panel);border:1px solid var(--border);border-radius:13px;padding:14px 16px;margin-bottom:14px}.block-title{font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;color:var(--text-faint);margin-bottom:10px}.reward-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.reward-grid.two{grid-template-columns:1fr 1fr}@media(max-width:900px){.reward-grid.two{grid-template-columns:1fr}}.overlay-diff-block{background:#fb923c0c;border:1px solid #fb923c30;border-radius:12px;padding:12px 15px;margin-bottom:14px}.overlay-diff-block .block-title{color:var(--overlay)}.ovl-row{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;padding:4px 0;font-size:.86rem}.ovl-row code{color:var(--text-faint);font-size:.76rem}.ovl-row .arrow{color:var(--text-faint)}.req-list{display:flex;flex-direction:column;gap:6px}.req-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:.87rem}.req-dim{color:var(--text-faint);font-size:.78rem}.objective-list{display:flex;flex-direction:column;gap:7px}.objective{border:1px solid var(--border-soft);border-radius:10px;padding:8px 12px;background:var(--bg)}.objective summary{cursor:pointer;display:flex;align-items:center;gap:8px;flex-wrap:wrap;list-style:none}.objective summary::-webkit-details-marker{display:none}.objective summary:before{content:"▸";color:var(--text-faint)}.objective[open] summary:before{content:"▾"}.objective code{color:var(--text-faint);font-size:.74rem}.obj-desc{font-size:.88rem}.type-badge{font-size:.64rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;background:#38bdf815;color:var(--api);padding:2px 8px;border-radius:5px}.objective-body{padding-top:8px}.obj-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}.chip-static{font-size:.72rem;padding:3px 10px;border-radius:999px;background:#ffffff0d;color:var(--text-dim)}.kv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:7px}.kv-grid.wide{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));margin-top:4px}.kv{display:flex;justify-content:space-between;gap:10px;background:var(--bg);border:1px solid var(--border-soft);border-radius:8px;padding:6px 10px;font-size:.8rem}.kv span{color:var(--text-faint)}.kv b{font-weight:600;text-align:right;word-break:break-word}.item-chip-row{display:flex;flex-wrap:wrap;gap:7px}.item-chip{appearance:none;display:inline-flex;align-items:center;gap:7px;background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:5px 11px 5px 6px;color:var(--text);font:inherit;font-size:.82rem;cursor:pointer;transition:border-color .12s}.item-chip:hover{border-color:var(--api)}.item-chip img{width:28px;height:28px;object-fit:contain;background:#00000042;border-radius:6px;padding:1px}.item-chip b{color:var(--warn);font-weight:700}.usage-line{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;padding:3px 0;font-size:.85rem}.price-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin-bottom:14px}.price-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:11px;padding:11px 14px;display:flex;flex-direction:column;gap:3px}.price-card span{color:var(--text-faint);font-size:.72rem}.price-card b{font-size:1.02rem;font-variant-numeric:tabular-nums}.price-card b.up{color:var(--accent)}.price-card b.down{color:var(--danger)}.item-hero{width:110px;height:110px;object-fit:contain;background:radial-gradient(circle at 50% 45%,#1d2637,#0b0f17);border-radius:14px;border:1px solid var(--border);padding:8px}.item-desc{color:var(--text-dim);font-size:.88rem;line-height:1.55}.trader-root.active{overflow-y:auto}.trader-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;padding:22px;max-width:1280px;margin:0 auto}.trader-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:15px;padding:17px 18px;display:flex;flex-direction:column;gap:10px;transition:border-color .15s,transform .15s}.trader-card:hover{border-color:color-mix(in srgb,var(--tc) 55%,var(--border));transform:translateY(-2px)}.trader-head{display:flex;align-items:center;gap:13px}.trader-avatar{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--tc) 22%,var(--bg));color:var(--tc);font-size:1.3rem;font-weight:800;border:1px solid color-mix(in srgb,var(--tc) 40%,transparent)}.trader-name{font-weight:700;font-size:1.02rem}.trader-sub{color:var(--text-faint);font-size:.76rem;margin-top:2px}.trader-desc{color:var(--text-dim);font-size:.8rem;line-height:1.5;margin:0}.trader-levels{display:flex;flex-wrap:wrap;gap:5px}.lvl-pill{font-size:.68rem;padding:3px 9px;border-radius:999px;background:#ffffff0a;border:1px solid var(--border);color:var(--text-dim);font-variant-numeric:tabular-nums}.lvl-pill.locked{opacity:.55;border-style:dashed}.trader-tasks-btn{appearance:none;align-self:flex-start;background:color-mix(in srgb,var(--tc) 13%,transparent);border:1px solid color-mix(in srgb,var(--tc) 35%,transparent);color:var(--tc);font:inherit;font-size:.82rem;font-weight:600;padding:6px 14px;border-radius:8px;cursor:pointer;transition:filter .12s}.trader-tasks-btn:hover{filter:brightness(1.25)}.badge{font-size:.68rem;font-weight:600;padding:2px 8px;border-radius:6px;background:#ffffff0d;color:var(--text-dim);white-space:nowrap}.badge.cat-red{background:#f8717118;color:var(--danger)}.badge.cat-blue{background:#38bdf815;color:var(--api)}.badge.cat-green{background:#4ade8015;color:var(--accent)}.badge.cat-yellow{background:#fbbf2415;color:var(--warn)}.badge.cat-purple{background:#a78bfa18;color:#a78bfa}.badge.cat-gray{background:#94a3b815;color:#94a3b8}.src-tag{display:inline-block;font-size:.6rem;font-weight:800;letter-spacing:.08em;border-radius:4px;padding:1px 6px}.src-tag.api{background:#38bdf81f;color:var(--api)}.src-tag.overlay{background:#fb923c1f;color:var(--overlay)}.btn-zone{appearance:none;font:inherit;font-size:.78rem;color:var(--overlay);background:#fb923c12;border:1px solid #fb923c33;border-radius:7px;padding:4px 12px;cursor:pointer}.btn-zone:hover{background:#fb923c22}.diff-view{overflow-y:auto}.diff-view.active{display:block}#diff-root{max-width:1180px;width:100%;margin:0 auto;padding:22px 22px 60px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:18px}.stat-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;padding:13px 15px}.stat-value{font-size:1.55rem;font-weight:700;font-variant-numeric:tabular-nums}.stat-label{color:var(--text-dim);font-size:.76rem;margin-top:2px;line-height:1.35}.stat-mode{color:var(--text-faint)}.stat-card.ok .stat-value{color:var(--accent)}.stat-card.warn .stat-value{color:var(--warn)}.stat-card.bad .stat-value{color:var(--danger)}.diff-filters{margin-bottom:14px;display:flex;flex-direction:column;gap:10px}#diff-search{max-width:420px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:7px;font:inherit;font-size:.85rem;padding:7px 9px;outline:none}#diff-search:focus{border-color:var(--accent)}.chip-row{display:flex;flex-wrap:wrap;gap:6px}.chip{appearance:none;font:inherit;font-size:.76rem;padding:4px 11px;border-radius:999px;border:1px solid var(--border);background:var(--bg-panel);color:var(--text-dim);cursor:pointer;transition:all .12s}.chip b{font-weight:600;margin-left:3px;color:var(--text-faint)}.chip.on{border-color:var(--accent);color:var(--accent);background:#4ade800f}.chip.on b{color:var(--accent)}.chip-clear{border-style:dashed}.chip-clear:hover{color:var(--text)}.diff-count{color:var(--text-faint);font-size:.78rem;margin-bottom:8px}.diff-table{width:100%;border-collapse:collapse;font-size:.87rem}.diff-table th{text-align:left;color:var(--text-faint);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;padding:8px 10px;border-bottom:1px solid var(--border)}.diff-table td{padding:9px 10px;border-bottom:1px solid var(--border-soft);vertical-align:top}.diff-table tbody tr{cursor:pointer;transition:background .1s}.diff-table tbody tr:hover{background:#ffffff05}.diff-table tbody tr.selected{background:#38bdf80d}.task-id{color:var(--text-faint);font-family:ui-monospace,monospace;font-size:.72rem;margin-top:2px}.obj-note{color:var(--text-faint);font-size:.74rem}.mode-tag{background:#a78bfa22;color:#a78bfa;padding:1px 6px;border-radius:5px}.stale-name{color:var(--danger)}.badge-row{display:flex;flex-wrap:wrap;gap:4px;max-width:320px}.task-detail{margin-top:22px;background:var(--bg-panel);border:1px solid var(--border);border-radius:14px;padding:20px 22px}.task-detail h2{margin:0 0 6px;font-size:1.25rem}.detail-sub{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:16px}.detail-sub code{color:var(--text-faint);font-size:.78rem}.detail-sub a{color:var(--api);text-decoration:none}.detail-sub a:hover{text-decoration:underline}.explain{color:var(--text-dim);font-size:.88rem;background:#f8717110;border:1px solid #f8717126;border-radius:9px;padding:10px 14px}.field-diffs{display:flex;flex-direction:column;gap:10px;margin:8px 0 4px}.fdiff{border:1px solid var(--border-soft);border-radius:10px;overflow:hidden}.fdiff-field{font-family:ui-monospace,monospace;font-size:.76rem;color:var(--warn);background:#fbbf240a;padding:6px 12px;border-bottom:1px solid var(--border-soft)}.fdiff-values{display:grid;grid-template-columns:1fr 1fr}@media(max-width:900px){.fdiff-values{grid-template-columns:1fr}}.fdiff-val{padding:9px 12px;font-size:.83rem;word-break:break-word}.fdiff-val.api{border-right:1px solid var(--border-soft)}.absent{color:var(--text-faint)}.fdiff-none{color:var(--text-faint);font-size:.8rem;padding:4px 0 2px}.zone-line{margin-top:8px;font-size:.8rem;color:var(--text-dim)}.zone-line.ok{color:var(--accent)}.zone-line.add{color:var(--overlay)}.zone-line.conflict{color:var(--danger)}.task-detail h3{font-size:.95rem;margin:18px 0 4px}#loading-overlay{position:fixed;inset:0;background:#0b0f17e0;backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:2000}.loader-box{text-align:center}.spinner{width:44px;height:44px;margin:0 auto 18px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loader-box .spinner{margin-bottom:18px}#loading-text{font-weight:600}.loader-log{margin-top:8px;color:var(--text-dim);font-size:.85rem;min-height:1.2em}.items-root .view-loading .spinner{margin:0 auto}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#29354a;border-radius:6px;border:2px solid var(--bg-panel)}::-webkit-scrollbar-track{background:transparent}@media(max-width:860px){.brand-sub{display:none}.explorer{flex-direction:column}.tasks-left{width:100%;min-width:0;max-height:45vh;border-right:0;border-bottom:1px solid var(--border)}}
