:root{--bg:#f4f5f7;--surface:#fff;--surface-2:#f8fafc;--border:#e2e6ec;--text:#1c2430;--muted:#6b7682;--accent:#4f46e5;--accent-hover:#4338ca;--accent-soft:#eef2ff;--ok:#15803d;--ok-soft:#dcfce7;--err:#b91c1c;--err-soft:#fee2e2;--radius:10px;--radius-sm:7px;--shadow:0 1px 2px rgba(16,24,40,.04),0 4px 12px rgba(16,24,40,.06);--mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace}*{box-sizing:border-box}body,html{height:100%}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.45;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;height:100vh}.app-header{display:flex;align-items:center;gap:10px;padding:10px 18px;background:var(--surface);border-bottom:1px solid var(--border)}.app-header .brand{font-weight:700;letter-spacing:-.01em}.app-header .brand .dot{color:var(--accent)}.app-header .sub{color:var(--muted);font-size:12px;border-left:1px solid var(--border);padding-left:10px}.toolbar{display:flex;align-items:center;gap:14px;padding:10px 18px;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap}.toolbar label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-right:-8px}.toolbar .spacer{flex:1 1}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:7px 9px;outline:none;transition:border-color .12s,box-shadow .12s}select{cursor:pointer}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}button{font:inherit;cursor:pointer;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);padding:7px 13px;font-weight:500;transition:background .12s,border-color .12s,opacity .12s}button:hover{background:var(--surface-2);border-color:#cdd3db}button:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.panes{flex:1 1;display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:14px;gap:14px;padding:14px 18px;min-height:0;background:var(--bg)}.pane{display:flex;flex-direction:column;min-height:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.pane>h3{margin:0;padding:10px 14px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--surface-2);border-bottom:1px solid var(--border)}.pane-body{padding:12px 14px;overflow:auto;flex:1 1}.tree{font-family:var(--mono);font-size:12.5px}.seg{margin-bottom:10px}.seg-head{display:flex;gap:8px;align-items:baseline}.seg-tag{font-weight:700;color:var(--accent);background:var(--accent-soft);padding:0 6px;border-radius:5px}.seg-name{color:var(--muted);font-family:ui-sans-serif,system-ui,sans-serif;font-size:11px}.elem{padding-left:14px;color:var(--text)}.elem .pos{color:#aab1bb}.elem .nm{color:var(--muted)}.elem .val{color:var(--text);background:var(--surface-2);padding:0 5px;border-radius:4px}.loop{border-left:2px solid var(--accent-soft);padding-left:10px;margin:6px 0 10px}.loop>.loop-name{font-family:ui-sans-serif,system-ui,sans-serif;font-size:11px;font-weight:600;color:var(--accent)}.rule-row{display:flex;gap:8px;align-items:center;margin-bottom:8px}.rule-row input{flex:1 1;font-family:var(--mono);font-size:12.5px}.rule-row .rule-arrow{color:var(--muted)}.rule-row .rule-remove{padding:6px 9px;color:var(--muted)}.rule-row .rule-remove:hover{color:var(--err);border-color:var(--err);background:var(--err-soft)}.rule-add{margin-top:4px;color:var(--accent);border-style:dashed}.rule-add:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-hover)}pre{margin:0;font-family:var(--mono);white-space:pre-wrap;word-break:break-word;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;color:var(--text)}.statusbar,pre{font-size:12.5px}.statusbar{display:flex;align-items:center;gap:10px;padding:8px 18px;background:var(--surface);border-top:1px solid var(--border);color:var(--muted)}.status-pill{font-weight:700;font-size:11px;letter-spacing:.04em;padding:2px 9px;border-radius:999px}.status-pill.ok{color:var(--ok);background:var(--ok-soft)}.status-pill.err{color:var(--err);background:var(--err-soft)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(1200px 500px at 50% -10%,var(--accent-soft),transparent),var(--bg);padding:24px}.login-card{width:100%;max-width:360px;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:28px 26px}.login-card .brand{font-size:20px;font-weight:700;letter-spacing:-.01em}.login-card .brand .dot{color:var(--accent)}.login-card .tagline{color:var(--muted);font-size:12.5px;margin:4px 0 20px}.login-card form{display:flex;flex-direction:column;gap:6px}.login-card label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-top:8px}.login-card button{margin-top:18px;width:100%;padding:9px}.ai-panel{margin:0 18px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px}.ai-panel h3{margin:0 0 10px;font-size:14px}.ai-panel label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:4px}.ai-panel textarea{width:100%;font-family:var(--mono)}.ai-panel .ai-actions{display:flex;gap:8px;margin-top:10px}.ai-panel ul{margin:10px 0 0;padding-left:18px}.error{color:var(--err);font-size:13px;margin-top:12px}