:root{--bg: #0f1419;--surface: #1a2332;--surface2: #243044;--border: #334155;--text: #e2e8f0;--muted: #94a3b8;--accent: #38bdf8;--accent-dim: #0ea5e9;--danger: #f87171;--success: #4ade80;--warning: #fbbf24;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit}.app{display:flex;flex-direction:column;height:100vh}.top-bar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;padding:.6rem 1rem;background:var(--surface);border-bottom:1px solid var(--border)}.top-bar input{background:var(--bg);border:1px solid var(--border);color:var(--text);padding:.35rem .5rem;border-radius:4px;min-width:180px}.top-bar input.token{min-width:220px}.btn{background:var(--surface2);border:1px solid var(--border);color:var(--text);padding:.35rem .75rem;border-radius:4px;cursor:pointer}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent-dim);border-color:var(--accent);color:#0f172a;font-weight:600}.btn.danger{border-color:var(--danger);color:var(--danger)}.status{font-size:.85rem;padding:.2rem .5rem;border-radius:4px}.status.ok{background:#14532d;color:var(--success)}.status.err{background:#450a0a;color:var(--danger)}.main-panels{display:grid;grid-template-columns:280px 1fr 360px;flex:1;min-height:0}.sidebar{background:var(--surface);border-right:1px solid var(--border);overflow:auto;display:flex;flex-direction:column}.sidebar.right{border-right:none;border-left:1px solid var(--border)}.panel-section{padding:.75rem;border-bottom:1px solid var(--border)}.panel-section h3{margin:0 0 .5rem;font-size:.9rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.tabs{display:flex;gap:.25rem;flex-wrap:wrap;padding:.5rem;border-bottom:1px solid var(--border)}.tab{padding:.35rem .6rem;background:var(--surface2);border:1px solid var(--border);border-radius:4px;cursor:pointer;font-size:.85rem}.tab.active{border-color:var(--accent);color:var(--accent)}.center{overflow:auto;padding:1rem;background:var(--bg)}.section-zone{background:var(--surface);border:2px dashed var(--border);border-radius:8px;padding:.75rem;margin-bottom:1rem;min-height:100px}.section-zone.over{border-color:var(--accent);background:#1e3a5f}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;font-size:.9rem;color:var(--muted)}.card-list{display:flex;flex-direction:column;gap:.4rem}.card-block{background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:.5rem .6rem;cursor:grab;font-size:.85rem}.card-block.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.card-block .type{color:var(--accent);font-size:.75rem}.card-block .meta{color:var(--muted);font-size:.75rem}.pool-item{padding:.5rem;border:1px solid var(--border);border-radius:6px;margin-bottom:.4rem;background:var(--surface2);cursor:grab}.pool-item.used{opacity:.55}.tag{display:inline-block;font-size:.7rem;padding:.1rem .35rem;border-radius:3px;background:#334155;margin-right:.25rem}.filters input,.filters select{width:100%;margin-bottom:.4rem;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:.35rem;border-radius:4px}.errors{background:#450a0a;color:#fecaca;padding:.5rem 1rem;font-size:.85rem}.errors li{margin:.2rem 0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal{background:var(--surface);border:1px solid var(--border);border-radius:8px;max-width:900px;width:100%;max-height:90vh;overflow:auto;padding:1rem}.modal h2{margin-top:0}.modal textarea{width:100%;min-height:280px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:4px;font-family:ui-monospace,monospace;font-size:.85rem;padding:.5rem}.form-row{display:flex;gap:.5rem;margin-bottom:.5rem;flex-wrap:wrap}.form-row label{display:flex;flex-direction:column;gap:.2rem;font-size:.85rem;color:var(--muted);flex:1;min-width:120px}.form-row input,.form-row select{background:var(--bg);border:1px solid var(--border);color:var(--text);padding:.35rem;border-radius:4px}.drop-hint{color:var(--muted);font-size:.85rem;text-align:center;padding:1.5rem;border:1px dashed var(--border);border-radius:6px;margin:0;pointer-events:none}.section-zone.over .drop-hint{border-color:var(--accent);color:var(--accent)}.activity-log{border-top:1px solid var(--border);background:var(--surface)}.activity-log.collapsed .activity-log-body{display:none}.activity-log-header{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;padding:.4rem .75rem;border-bottom:1px solid var(--border)}.activity-log-actions{display:flex;flex-wrap:wrap;gap:.35rem;flex:1;justify-content:flex-end}.log-search{min-width:140px;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:.25rem .4rem;border-radius:4px;font-size:.8rem}.activity-log-actions select{background:var(--bg);border:1px solid var(--border);color:var(--text);font-size:.8rem;border-radius:4px}.activity-log.expanded .activity-log-body{max-height:220px;overflow:auto;font-family:ui-monospace,monospace;font-size:.72rem}.log-entry{padding:.35rem .75rem;border-bottom:1px solid var(--border);display:grid;grid-template-columns:auto auto auto 1fr auto;gap:.35rem .5rem;align-items:baseline}.log-entry.log-error{background:#7f1d1d40}.log-entry.log-warn{background:#78350f33}.log-time{color:var(--muted)}.log-cat{font-weight:600;text-transform:uppercase;font-size:.65rem}.log-cat-dnd{color:var(--cyan)}.log-cat-api,.log-cat-ha{color:var(--blue)}.log-cat-user{color:#a78bfa}.log-cat-error{color:var(--danger)}.log-level{color:var(--muted);font-size:.65rem}.log-msg{color:var(--text)}.log-dur{color:var(--muted);font-size:.65rem}.log-data{grid-column:1 / -1;margin:.25rem 0 0;padding:.35rem;background:var(--bg);border-radius:4px;overflow:auto;max-height:120px;white-space:pre-wrap}.debug-panel{max-height:180px;overflow:auto;font-family:monospace;font-size:.75rem;background:var(--bg);padding:.5rem;border-top:1px solid var(--border)}.write-warning{background:#422006;border:1px solid var(--warning);color:#fde68a;padding:.75rem;border-radius:6px;margin:.5rem 0}.toggle{display:flex;align-items:center;gap:.35rem;font-size:.85rem}.empty-state{color:var(--muted);text-align:center;padding:2rem}.dashboard-list-item{padding:.4rem .5rem;border-radius:4px;cursor:pointer;font-size:.85rem}.dashboard-list-item:hover{background:var(--surface2)}.dashboard-list-item .err{color:var(--danger);font-size:.75rem}
