:root{--bg: #0d1017;--panel: #141922;--panel-2: #1a2130;--panel-3: #171d28;--border: #263041;--text: #e6eaf2;--muted: #9aa4b2;--accent: #8fa8ff;--accent-hover: #6f89ef;--on-accent: #0a1a4a;--danger: #ff6b6b;--danger-hover: #d94a4a;--on-danger: #0d1017;--hover-wash: rgba(255, 255, 255, .08);--nav-hover: #1d2431;--nav-active: #1c2747;--input-bg: #10151d;--focus-ring: #314a7d;--topbar: #151b26;--topbar-muted: #8b95a5;--err-bg: #2c1619;--err-border: #5c3138;--err-text: #ffb4b4;--ok-bg: #12251b;--ok-border: #2f5a3f;--ok-text: #7fe0a8;--info-bg: #16203c;--info-border: #314a7d;--info-text: #b7c8ff;--shadow: 0 8px 24px rgba(0, 0, 0, .35)}:root[data-theme=light]{--bg: #f4f5f7;--panel: #ffffff;--panel-2: #ffffff;--panel-3: #f2f4f8;--border: #dde1e7;--text: #20242c;--muted: #66707c;--accent: #1f5fdd;--accent-hover: #174fc0;--on-accent: #ffffff;--danger: #c53030;--danger-hover: #a72828;--on-danger: #ffffff;--hover-wash: rgba(0, 0, 0, .06);--nav-hover: #eef1f5;--nav-active: #e3ecfc;--input-bg: #ffffff;--focus-ring: #bcd0f5;--topbar: #1c2333;--topbar-muted: #b7c0cc;--err-bg: #fdecec;--err-border: #f2c2c2;--err-text: #8f1d1d;--ok-bg: #e8f6ec;--ok-border: #bfe3c9;--ok-text: #14532d;--info-bg: #eef2fb;--info-border: #c8d6f3;--info-text: #1e3a8a;--shadow: 0 8px 24px rgba(20, 24, 32, .08)}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.45}h1,h2,h3{margin:0 0 12px}h1{font-size:20px}h2{font-size:17px}p{margin:0 0 12px}.muted{color:var(--muted)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px}.auth-page,.flow-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{width:100%;max-width:380px;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:28px;box-shadow:var(--shadow)}.flow-card{width:100%;max-width:560px;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:24px 28px 28px;box-shadow:var(--shadow)}.flow-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border)}.brand{font-weight:600}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;background:var(--topbar);color:#fff}.topbar .brand{font-size:16px}.topbar .muted{color:var(--topbar-muted)}.topbar .btn-ghost{color:#fff}.topbar .btn-ghost:hover:not(:disabled){background:#ffffff1f}.topbar-right{display:flex;align-items:center;gap:12px}.body{display:flex;flex:1;align-items:stretch}.sidebar{width:220px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--border);padding:14px 10px}.nav-section{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:14px 8px 6px;font-weight:600}.nav-section:first-child{margin-top:0}.nav-link{display:block;padding:7px 10px;border-radius:6px;color:var(--text);text-decoration:none}.nav-link:hover{background:var(--nav-hover)}.nav-link.active{background:var(--nav-active);color:var(--accent);font-weight:600}.nav-dot{display:inline-block;width:8px;height:8px;margin-left:8px;border-radius:50%;background:#e5484d;vertical-align:middle}.danger-text{color:var(--danger)}.sidebar-note{margin:14px 8px;font-size:13px;color:var(--muted)}.content{flex:1;padding:24px;max-width:900px}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:20px 22px;margin-bottom:18px}.card h2{margin-top:0}.field{display:block;margin-bottom:14px}.field-label{display:block;font-size:13px;font-weight:600;margin-bottom:5px}.filter-row{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}.filter-row .field{flex:1 1 220px}.filter-row .field:has(select){flex:0 0 auto}.field-hint{display:block;font-size:12px;color:var(--muted);margin-top:4px}input[type=text],input:not([type]),input[type=password],input[type=number],input[type=email],select,textarea{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font:inherit;background:var(--input-bg);color:var(--text)}input[type=text]:focus,input[type=password]:focus,input[type=number]:focus,input[type=email]:focus,select:focus,textarea:focus{outline:2px solid var(--focus-ring);border-color:var(--accent)}textarea{min-height:110px;resize:vertical}input[type=file]{font:inherit}input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}.check-row{display:flex;align-items:center;gap:8px;margin-bottom:14px}.select-inline{width:auto}.otp-row{display:flex;gap:8px;justify-content:center}.otp-box{width:44px;height:52px;text-align:center;font-size:22px;font-weight:600;border:1px solid var(--border);border-radius:8px;background:var(--surface, #fff);color:inherit;padding:0}.otp-box:focus{outline:2px solid var(--primary, #0a6);outline-offset:1px}.otp-box:disabled{opacity:.6}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.form-grid>button,.form-grid>.btn-row{justify-self:start;align-self:center}.btn{display:inline-block;padding:8px 14px;border:1px solid var(--border);border-radius:6px;background:var(--input-bg);color:var(--text);font:inherit;font-weight:600;cursor:pointer}.btn:hover:not(:disabled){background:var(--btn-hover)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-danger{background:var(--danger);border-color:var(--danger);color:var(--on-danger)}.btn-danger:hover:not(:disabled){background:var(--danger-hover)}.btn-ghost{background:transparent;border-color:transparent;color:inherit}.btn-ghost:hover:not(:disabled){background:var(--hover-wash)}.btn-small{padding:4px 8px;font-size:13px}.btn-block{width:100%}.btn-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.notice{padding:10px 12px;border-radius:6px;margin-bottom:14px;font-size:14px}.notice-error{background:var(--err-bg);color:var(--err-text);border:1px solid var(--err-border)}.notice-success{background:var(--ok-bg);color:var(--ok-text);border:1px solid var(--ok-border)}.notice-info{background:var(--info-bg);color:var(--info-text);border:1px solid var(--info-border)}.qr{display:block;border:1px solid var(--border);border-radius:8px;margin:4px 0 12px}.qr-placeholder{width:240px;height:240px;display:flex;align-items:center;justify-content:center;color:var(--muted);border:1px dashed var(--border);border-radius:8px;margin:4px 0 12px;padding:8px;text-align:center}.secret-box{background:var(--panel-3);border:1px solid var(--border);border-radius:6px;padding:6px 8px;margin:4px 0 10px}.table-wrap{overflow-x:auto}table.table{width:100%;border-collapse:collapse;font-size:14px}.table th,.table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:middle}.table th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.table td.actions,.card-table td.actions{white-space:nowrap}.table .notice{margin-bottom:0}.splash{min-height:100vh;display:flex;align-items:center;justify-content:center;color:var(--muted)}.split-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.split-row .btn-row{flex-wrap:nowrap;flex-shrink:0}.test-result{margin-top:14px}.pwd-input{position:relative;display:block}.pwd-input input{padding-right:42px;width:100%}.pwd-eye{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--muted);padding:6px;line-height:0;border-radius:4px}.pwd-eye:hover{color:var(--text);background:var(--hover-wash)}.qr img{max-width:260px;border-radius:8px;margin:12px 0}.row-inline{display:flex;align-items:center;gap:6px}.setting-hint{position:relative;cursor:help;color:var(--muted, #8a8a8a);font-size:13px;-webkit-user-select:none;user-select:none}.setting-hint:after{content:attr(data-hint);position:absolute;left:0;bottom:140%;width:300px;max-height:260px;overflow:auto;background:#1c1c1c;color:#eaeaea;border:1px solid rgba(255,255,255,.12);border-radius:6px;padding:10px 12px;font-size:12.5px;line-height:1.5;white-space:pre-line;z-index:30;opacity:0;pointer-events:none;transition:opacity .14s ease}.setting-hint:hover:after,.setting-hint:focus-visible:after{opacity:1}.setting-example{font-size:12px;margin-top:2px}.err-line{color:var(--err-text);background:var(--err-bg);border:1px solid var(--err-border);border-radius:6px;padding:8px 12px;font-size:13px;margin:4px 0}.mono-area{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;background:var(--input-bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:10px 12px;resize:vertical}.chip-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;max-height:180px;overflow-y:auto}.btn.chip{border-radius:999px;font-size:12px;padding:3px 10px;border:1px solid var(--border);background:var(--panel-2);color:var(--muted)}.btn.chip.chip-on{background:var(--nav-active);color:var(--accent);border-color:var(--focus-ring)}.chip.chip-static{display:inline-flex;align-items:center;gap:4px;border-radius:999px;font-size:12px;padding:3px 6px 3px 10px;background:var(--panel-2);border:1px solid var(--border);color:var(--text)}.btn.btn-small.chip-x{padding:0 4px;font-size:11px;line-height:1;color:var(--muted)}.chip-filter,.chip-input{display:flex;gap:6px;align-items:center}.chip-filter input,.chip-input input{flex:1}.gating-grid{display:flex;flex-wrap:wrap;gap:8px}.gating-row{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:6px;padding:4px 8px;background:var(--panel-2)}.graph-editor{border:1px solid var(--border);border-radius:8px;background:var(--panel);margin-top:6px}.graph-toolbar{display:flex;align-items:center;gap:12px;padding:8px 12px;border-bottom:1px solid var(--border)}.graph-hint{font-size:12px}.graph-body{display:flex;flex-direction:column;gap:0;align-items:stretch}.graph-canvas{flex:1 1 auto;width:100%;min-width:0;max-height:480px;overflow:auto;background:var(--panel-2);border-radius:6px 6px 0 0;-webkit-user-select:none;user-select:none}.graph-svg{display:block;touch-action:none;-webkit-user-select:none;user-select:none}.graph-edge{fill:none;stroke:var(--focus-ring);stroke-width:2;marker-end:url(#graph-arrow);pointer-events:stroke;cursor:pointer}.graph-edge.selected{stroke:var(--danger);stroke-width:3.5;marker-end:url(#graph-arrow-danger)}.graph-arrow-head{fill:var(--focus-ring)}.graph-arrow-head-danger{fill:var(--danger)}.graph-arrow-head-accent{fill:var(--accent)}.graph-edge-del{cursor:pointer}.graph-edge-del-bg{fill:var(--danger);stroke:var(--on-danger);stroke-width:1.5}.graph-edge-del-x{fill:var(--on-danger);font-size:12px;font-weight:700}.graph-edge.temp{pointer-events:none;stroke:var(--accent);stroke-dasharray:6 4;marker-end:url(#graph-arrow-accent)}.graph-node rect.graph-node-rect{fill:var(--panel-3);stroke:var(--border);stroke-width:1.5;cursor:grab}.graph-node.selected rect.graph-node-rect{stroke:var(--accent);stroke-width:2}.graph-node.drop-hint rect.graph-node-rect{stroke:var(--accent);stroke-width:3;stroke-dasharray:5 3}.graph-node-title{fill:var(--text);font-size:13px;font-weight:600}.graph-node-meta{fill:var(--muted);font-size:11px}.graph-port{fill:var(--panel-3);stroke:var(--accent);stroke-width:2;cursor:crosshair}.graph-port-hit{fill:transparent;stroke:none;cursor:crosshair}.graph-port.in-dot{fill:var(--panel-3);stroke:var(--accent);stroke-width:2;cursor:crosshair;pointer-events:none}.graph-node.drop-hint .graph-port.in-dot{fill:var(--accent)}.graph-node:hover .graph-port.in-dot,.graph-node:hover .graph-port.out{fill:var(--accent-hover)}.graph-port.out.source{fill:var(--accent);stroke:var(--on-accent);stroke-width:3}.graph-delete{cursor:pointer}.graph-delete-bg{fill:var(--danger);opacity:.85}.graph-delete-x{fill:var(--on-danger);font-size:11px;font-weight:700}.graph-panel{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:10px;align-items:start;width:100%;padding:12px;border-top:1px solid var(--border)}.graph-panel h4,.graph-panel .btn-row,.graph-panel .graph-hint,.graph-panel>.field:has(textarea){grid-column:1 / -1}.graph-panel h4{margin:0;font-size:14px}.graph-panel .field{margin-bottom:0}.form-grid .span2{grid-column:1 / -1}.error-text{color:var(--danger, #b3261e);font-size:13px}code.json{display:block;white-space:pre-wrap;background:var(--surface-variant, #eee);padding:6px;border-radius:6px;font-size:12px}
