:root{--font-scale:1;--radius:6px}html[data-theme=light]{--color-bg:#f5f6f8;--color-surface:#fff;--color-surface-alt:#eef0f3;--color-border:#d7dbe0;--color-text:#1b1f24;--color-text-muted:#5b6472;--color-accent:#2f6fed;--color-accent-contrast:#fff;--color-danger:#d1373f;--color-warning:#9a6700;--color-warning-bg:#fff6e5;--color-danger-bg:#fdeceb}html[data-theme=dark]{--color-bg:#14171c;--color-surface:#1c2027;--color-surface-alt:#262b33;--color-border:#343b46;--color-text:#e7eaee;--color-text-muted:#9aa4b2;--color-accent:#5b8dfa;--color-accent-contrast:#0b1220;--color-danger:#ff6b6b;--color-warning:#e3b341;--color-warning-bg:#3a2f11;--color-danger-bg:#3a1c1e}html[data-font-size=sm]{--font-scale:.875}html[data-font-size=md]{--font-scale:1}html[data-font-size=lg]{--font-scale:1.15}html[data-font-size=xl]{--font-scale:1.3}body{background:var(--color-bg);color:var(--color-text);font-size:calc(14px * var(--font-scale))}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:system-ui,Segoe UI,Roboto,sans-serif}button,input,select,textarea{font:inherit;color:inherit}.app-loading{height:100vh;color:var(--color-text-muted);justify-content:center;align-items:center;display:flex}.app-shell{flex-direction:column;height:100vh;display:flex}.top-menu{background:var(--color-surface);border-bottom:1px solid var(--color-border);align-items:center;gap:12px;padding:8px 16px;display:flex}.top-menu .brand{margin-right:auto;font-weight:600}.app-body{flex:1;min-height:0;display:flex}.tree-sidebar{border-right:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0;width:280px;padding:8px;overflow-y:auto}.tree-node{border-radius:var(--radius);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:4px 8px;display:flex}.tree-node:hover{background:var(--color-surface-alt)}.tree-node.selected{background:var(--color-accent);color:var(--color-accent-contrast)}.tree-node.dragging{opacity:.5}.tree-section-name{font-weight:600}.tree-children{margin-left:18px}.tree-empty-hint{color:var(--color-text-muted);padding:8px;font-size:.9em}.detail-panel{flex:1;padding:16px 24px;overflow-y:auto}.detail-empty{color:var(--color-text-muted);text-align:center;padding:40px}.detail-title{margin-bottom:12px;font-size:1.3em;font-weight:600}.panel-section{margin-bottom:24px}.panel-section h3{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 8px;font-size:1em}.folder-list{flex-wrap:wrap;gap:8px;margin-bottom:8px;display:flex}.folder-chip{background:var(--color-surface-alt);border:1px solid var(--color-border);border-radius:999px;align-items:center;gap:6px;padding:4px 6px 4px 12px;display:flex}.folder-chip input{background:0 0;border:none;min-width:80px}.folder-chip button{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none}.folder-chip.readonly{opacity:.75}.rule-group{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);margin-bottom:12px;padding:12px}.rule-group-header{color:var(--color-text-muted);align-items:center;gap:8px;margin-bottom:8px;font-size:.9em;display:flex}.condition-node{border:1px dashed var(--color-border);border-radius:var(--radius);margin:4px 0;padding:8px}.condition-node.leaf{border-style:solid;flex-wrap:wrap;align-items:center;gap:6px;display:flex}.condition-node .group-label{align-items:center;gap:6px;margin-bottom:4px;font-size:.85em;font-weight:600;display:inline-flex}.condition-node .children{flex-direction:column;gap:4px;margin-left:16px;display:flex}.node-actions{gap:4px;margin-left:auto;display:flex}.icon-btn{border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;border-radius:4px;padding:2px 6px;font-size:.85em}.icon-btn:hover{background:var(--color-surface-alt)}.warning-badge{background:var(--color-warning-bg);color:var(--color-warning);border-radius:4px;margin-left:4px;padding:1px 6px;font-size:.8em;display:inline-block}.error-text{color:var(--color-danger);font-size:.85em}.action-row{border-top:1px solid var(--color-border);flex-wrap:wrap;align-items:center;gap:12px;margin-top:8px;padding-top:8px;display:flex}button{border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius);cursor:pointer;padding:6px 12px}button.primary{background:var(--color-accent);color:var(--color-accent-contrast);border-color:var(--color-accent)}button:disabled{opacity:.6;cursor:default}input[type=text],input:not([type]),select,textarea{border:1px solid var(--color-border);background:var(--color-surface);border-radius:4px;padding:4px 8px}.login-screen{background:var(--color-bg);justify-content:center;align-items:center;height:100vh;display:flex}.login-form{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);flex-direction:column;gap:10px;width:320px;padding:24px;display:flex}.login-form label{flex-direction:column;gap:4px;font-size:.9em;display:flex}.login-subtitle{color:var(--color-text-muted);margin:-8px 0 8px}.form-error{color:var(--color-danger);font-size:.9em}.modal-backdrop{z-index:100;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border-radius:var(--radius);border:1px solid var(--color-border);width:560px;max-width:92vw;max-height:85vh;padding:20px;overflow-y:auto}.modal h2{margin-top:0}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.modal textarea{width:100%;min-height:160px;font-family:ui-monospace,Consolas,monospace}.import-warnings{background:var(--color-warning-bg);color:var(--color-warning);border-radius:var(--radius);max-height:160px;padding:8px 12px;font-size:.9em;overflow-y:auto}.context-menu{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);z-index:200;min-width:160px;position:fixed;box-shadow:0 4px 16px #0003}.context-menu button{text-align:left;background:0 0;border:none;border-radius:0;width:100%;display:block}.context-menu button:hover{background:var(--color-surface-alt)}.save-status{color:var(--color-text-muted);font-size:.85em}
