:root{--hue-primary:215;--hue-secondary:262;--hue-success:158;--hue-warning:38;--hue-danger:0;--hue-info:192;--lane-hue-0:215;--lane-hue-1:262;--lane-hue-2:158;--lane-hue-3:38;--lane-hue-4:192;--lane-hue-5:320;--font-sans:"Inter", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--shadow-sm:0 1px 3px #00000014, 0 1px 2px #0000000f;--shadow-md:0 4px 12px #0000001a, 0 2px 6px #00000012;--shadow-lg:0 12px 32px #00000024, 0 4px 12px #00000017;--shadow-glass:0 8px 32px #0000001f;--transition-fast:.12s ease;--transition-medium:.24s cubic-bezier(.4, 0, .2, 1);--transition-slow:.4s cubic-bezier(.4, 0, .2, 1)}[data-theme=light]{--bg-base:#f2f4f8;--bg-surface:#fcfcfd;--bg-glass:#ffffffb8;--bg-glass-strong:#ffffffe0;--bg-elevated:#f6f7f9;--bg-hover:hsl(var(--hue-primary) 60% 95%);--bg-active:hsl(var(--hue-primary) 60% 90%);--border-subtle:#dadee7;--border-default:#c2c9d6;--border-strong:#94a0b8;--border-glass:#fff9;--text-primary:#151c28;--text-secondary:#525c6f;--text-muted:#89909f;--text-on-accent:#fff;--accent-primary:hsl(var(--hue-primary) 72% 50%);--accent-primary-bg:hsl(var(--hue-primary) 72% 50% / .12);--accent-secondary:hsl(var(--hue-secondary) 65% 55%);--accent-success:hsl(var(--hue-success) 60% 42%);--accent-warning:hsl(var(--hue-warning) 85% 52%);--accent-danger:hsl(var(--hue-danger) 72% 55%);--scrollbar-track:#e7e9ef;--scrollbar-thumb:#bcc3d2}[data-theme=dark]{--bg-base:#11141d;--bg-surface:#171b26;--bg-glass:#1d2335bd;--bg-glass-strong:#21273be6;--bg-elevated:#1e222f;--bg-hover:hsl(var(--hue-primary) 40% 20%);--bg-active:hsl(var(--hue-primary) 40% 25%);--border-subtle:#2d3243;--border-default:#3f465a;--border-strong:#58617e;--border-glass:#7a8ab833;--text-primary:#eceef4;--text-secondary:#98a1b3;--text-muted:#676f7e;--text-on-accent:#fff;--accent-primary:hsl(var(--hue-primary) 75% 62%);--accent-primary-bg:hsl(var(--hue-primary) 75% 62% / .15);--accent-secondary:hsl(var(--hue-secondary) 68% 68%);--accent-success:hsl(var(--hue-success) 55% 52%);--accent-warning:hsl(var(--hue-warning) 85% 60%);--accent-danger:hsl(var(--hue-danger) 72% 62%);--scrollbar-track:#1b1f2d;--scrollbar-thumb:#3f465a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;font-size:16px}body{font-family:var(--font-sans);background-color:var(--bg-base);color:var(--text-primary);transition:background-color var(--transition-slow), color var(--transition-slow);min-height:100vh;overflow:hidden}a{color:var(--accent-primary);text-decoration:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}input,textarea{font-family:inherit}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--scrollbar-track)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:3px}.glass{background:var(--bg-glass);-webkit-backdrop-filter:blur(16px)saturate(180%);border:1px solid var(--border-glass);box-shadow:var(--shadow-glass)}.glass-strong{background:var(--bg-glass-strong);-webkit-backdrop-filter:blur(24px)saturate(200%);border:1px solid var(--border-glass);box-shadow:var(--shadow-lg)}#root{flex-direction:column;height:100vh;display:flex;overflow:hidden}.app-header{background:var(--bg-glass-strong);-webkit-backdrop-filter:blur(20px)saturate(180%);border-bottom:1px solid var(--border-glass);box-shadow:var(--shadow-sm);z-index:100;flex:none;align-items:center;gap:12px;padding:10px 20px;display:flex;overflow:visible}.app-logo{letter-spacing:-.02em;color:var(--text-primary);align-items:center;gap:10px;font-size:1.05rem;font-weight:700;display:flex}.app-logo svg{flex-shrink:0}.app-header-nav{gap:4px;margin:0 8px;display:flex}.header-spacer{flex:1}.app-header-actions{align-items:center;gap:8px;display:flex}.tab-btn{border-radius:var(--radius-md);color:var(--text-secondary);transition:background var(--transition-fast), color var(--transition-fast);white-space:nowrap;align-items:center;gap:6px;padding:6px 14px;font-size:.825rem;font-weight:500;display:flex}.tab-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.tab-btn.active{background:var(--accent-primary-bg);color:var(--accent-primary)}.icon-btn{border-radius:var(--radius-sm);width:34px;height:34px;color:var(--text-secondary);transition:background var(--transition-fast), color var(--transition-fast);justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.icon-btn:disabled{opacity:.35;cursor:not-allowed}.btn-primary{border-radius:var(--radius-md);background:var(--accent-primary);color:var(--text-on-accent);box-shadow:0 2px 6px hsl(var(--hue-primary) 72% 50% / .35);transition:filter var(--transition-fast), box-shadow var(--transition-fast);align-items:center;gap:6px;padding:7px 14px;font-size:.825rem;font-weight:600;display:inline-flex}.btn-primary:hover{filter:brightness(1.08);box-shadow:0 3px 10px hsl(var(--hue-primary) 72% 50% / .45)}.btn-ghost{border-radius:var(--radius-md);color:var(--text-secondary);border:1px solid var(--border-default);transition:all var(--transition-fast);align-items:center;gap:6px;padding:6px 12px;font-size:.825rem;font-weight:500;display:inline-flex}.btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--border-strong)}.app-content{flex:1;display:flex;position:relative;overflow:hidden}.sidebar{background:var(--bg-glass);-webkit-backdrop-filter:blur(16px);border-right:1px solid var(--border-subtle);z-index:10;flex-direction:column;flex-shrink:0;gap:0;width:220px;display:flex;overflow-y:auto}.sidebar-section{padding:12px 12px 8px}.sidebar-title{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);padding:0 4px 8px;font-size:.7rem;font-weight:700}.palette-grid{grid-template-columns:1fr 1fr;gap:6px;display:grid}.palette-item{border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-surface);color:var(--text-secondary);cursor:grab;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;flex-direction:column;align-items:center;gap:5px;padding:8px 4px;font-size:.7rem;font-weight:500;display:flex}.palette-item:hover{border-color:var(--accent-primary);color:var(--accent-primary);background:var(--accent-primary-bg);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.palette-item:active{cursor:grabbing;transform:translateY(0)}.palette-item svg{flex-shrink:0}.canvas-wrapper{background:radial-gradient(ellipse at 20% 20%, hsl(var(--hue-primary) 60% 50% / .06) 0%, transparent 60%), radial-gradient(ellipse at 80% 80%, hsl(var(--hue-secondary) 60% 50% / .05) 0%, transparent 60%), var(--bg-base);flex:1;position:relative;overflow:auto}.canvas-wrapper.snap-visible{background-image:radial-gradient(ellipse at 20% 20%, hsl(var(--hue-primary) 60% 50% / .06) 0%, transparent 60%), radial-gradient(ellipse at 80% 80%, hsl(var(--hue-secondary) 60% 50% / .05) 0%, transparent 60%), radial-gradient(circle, var(--border-subtle) 1px, transparent 1px);background-position:0 0,0 0,0 0;background-size:auto,auto,20px 20px}.swimlane-canvas{min-width:1200px;position:relative}.swimlane{border-bottom:1px solid var(--border-subtle);min-height:180px;display:flex;position:relative}.swimlane:last-child{border-bottom:none}.swimlane-label{writing-mode:vertical-lr;letter-spacing:.06em;text-transform:uppercase;width:140px;color:var(--text-on-accent);cursor:default;-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:center;align-items:center;padding:12px 8px;font-size:.78rem;font-weight:700;display:flex;position:relative;transform:rotate(180deg)}.swimlane-label-edit{background:0 0;flex-shrink:0;justify-content:center;align-items:center;width:140px;padding:4px;display:flex}.swimlane-label-edit input{width:28px;color:var(--text-on-accent);text-align:center;writing-mode:vertical-lr;background:#fff3;border:none;border-bottom:1px solid #fff9;outline:none;padding:2px 0;font-size:.75rem;transform:rotate(180deg)}.swimlane-body{flex:1;position:relative;overflow:visible}.process-node{cursor:move;-webkit-user-select:none;user-select:none;transition:filter var(--transition-fast);justify-content:center;align-items:center;display:flex;position:absolute}.process-node:hover .node-connect-handle{opacity:1}.process-node.selected .node-shape{outline:2px solid var(--accent-primary);outline-offset:3px}.node-shape{justify-content:center;align-items:center;display:flex;position:relative}.node-label{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;pointer-events:none;text-align:center;max-width:120px;font-size:.65rem;font-weight:600;position:absolute;bottom:-20px;left:50%;overflow:hidden;transform:translate(-50%)}.node-id-badge{font-size:.6rem;font-family:var(--font-mono);color:var(--text-muted);white-space:nowrap;pointer-events:none;position:absolute;top:-16px;left:50%;transform:translate(-50%)}.node-connect-handle{background:var(--accent-primary);border:2px solid var(--bg-surface);cursor:crosshair;opacity:0;width:16px;height:16px;transition:opacity var(--transition-fast);z-index:20;color:#fff;border-radius:50%;justify-content:center;align-items:center;font-size:9px;display:flex;position:absolute;top:50%;right:-18px;transform:translateY(-50%)}.shape-start{opacity:.85;background:currentColor;border:3px solid;border-radius:50%;width:44px;height:44px}.shape-end{background:currentColor;border:5px solid;border-radius:50%;width:44px;height:44px;position:relative}.shape-end:after{content:"";background:var(--bg-base);border:3px solid;border-radius:50%;position:absolute;inset:4px}.shape-task{border-radius:var(--radius-sm);background:var(--bg-glass-strong);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:110px;height:50px;color:var(--text-primary);text-align:center;box-shadow:var(--shadow-sm);border:2px solid;justify-content:center;align-items:center;padding:4px 8px;font-size:.72rem;font-weight:600;display:flex}.shape-decision{background:var(--bg-glass-strong);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:64px;height:64px;box-shadow:var(--shadow-sm);border:2px solid;transform:rotate(45deg)}.shape-decision-label{text-align:center;max-width:52px;color:var(--text-primary);font-size:.62rem;font-weight:600;transform:rotate(-45deg)}.shape-gate{background:var(--bg-glass-strong);color:currentColor;border:2.5px solid;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:1rem;font-weight:700;display:flex}.shape-connector{background:var(--bg-glass-strong);color:currentColor;border:2px solid;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.shape-junction{background:currentColor;border-radius:50%;width:20px;height:20px}.connections-svg{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;overflow:visible}.connection-path{fill:none;stroke:var(--text-muted);stroke-width:2px;marker-end:url(#arrowhead);transition:stroke var(--transition-fast)}.connection-path:hover{stroke:var(--accent-primary);cursor:pointer;pointer-events:stroke}.connection-path.drawing{stroke:var(--accent-primary);stroke-dasharray:6 4;opacity:.75}.raci-wrapper{flex:1;padding:24px;overflow:auto}.raci-table{border-collapse:separate;border-spacing:0;border-radius:var(--radius-lg);box-shadow:var(--shadow-md);background:var(--bg-surface);border:1px solid var(--border-default);overflow:hidden}.raci-table th,.raci-table td{border-right:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle)}.raci-table th:last-child,.raci-table td:last-child{border-right:none}.raci-th-diagonal{vertical-align:bottom;background:var(--bg-elevated);width:44px;height:80px;padding:0;position:relative}.raci-th-diagonal-inner{transform-origin:0 100%;white-space:nowrap;color:var(--text-secondary);letter-spacing:.04em;font-size:.7rem;font-weight:700;position:absolute;bottom:8px;left:50%;transform:rotate(-45deg)translate(-50%)}.raci-th-activity{text-align:left;color:var(--text-secondary);background:var(--bg-elevated);min-width:180px;padding:10px 14px;font-size:.75rem;font-weight:600}.raci-td-activity{color:var(--text-primary);background:var(--bg-surface);padding:8px 14px;font-size:.8rem}.raci-td-activity .node-type-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:4px;margin-left:6px;padding:1px 6px;font-size:.6rem;font-weight:700;display:inline-block}.badge-task{background:hsl(var(--hue-primary) 60% 50% / .15);color:hsl(var(--hue-primary) 60% 42%)}[data-theme=dark] .badge-task{color:hsl(var(--hue-primary) 75% 68%)}.badge-decision{background:hsl(var(--hue-warning) 80% 50% / .15);color:hsl(var(--hue-warning) 80% 40%)}[data-theme=dark] .badge-decision{color:hsl(var(--hue-warning) 85% 65%)}.raci-cell{text-align:center;cursor:pointer;width:44px;transition:background var(--transition-fast);padding:0}.raci-cell:hover .raci-cell-inner{background:var(--bg-hover)}.raci-cell-inner{height:38px;transition:background var(--transition-fast), color var(--transition-fast);border-radius:0;justify-content:center;align-items:center;font-size:.8rem;font-weight:800;display:flex}.raci-cell-inner.raci-R{background:hsl(var(--hue-primary) 65% 50% / .18);color:hsl(var(--hue-primary) 65% 40%)}[data-theme=dark] .raci-cell-inner.raci-R{background:hsl(var(--hue-primary) 65% 50% / .25);color:hsl(var(--hue-primary) 75% 72%)}.raci-cell-inner.raci-A{background:hsl(var(--hue-secondary) 65% 55% / .18);color:hsl(var(--hue-secondary) 65% 42%)}[data-theme=dark] .raci-cell-inner.raci-A{background:hsl(var(--hue-secondary) 65% 55% / .25);color:hsl(var(--hue-secondary) 68% 75%)}.raci-cell-inner.raci-C{background:hsl(var(--hue-info) 60% 48% / .15);color:hsl(var(--hue-info) 60% 38%)}[data-theme=dark] .raci-cell-inner.raci-C{background:hsl(var(--hue-info) 60% 48% / .22);color:hsl(var(--hue-info) 65% 72%)}.raci-cell-inner.raci-I{background:hsl(var(--hue-success) 55% 42% / .15);color:hsl(var(--hue-success) 55% 38%)}[data-theme=dark] .raci-cell-inner.raci-I{background:hsl(var(--hue-success) 55% 42% / .22);color:hsl(var(--hue-success) 60% 68%)}.raci-cell-home .raci-cell-inner{outline-offset:-2px;outline:2px solid #a3adc24d}.raci-cell-inner.raci-home-r{box-shadow:inset 0 0 0 2px hsl(var(--hue-primary) 65% 50% / .4)}.raci-empty-hint{color:var(--border-default);-webkit-user-select:none;user-select:none;font-size:.6rem}.raci-cell{cursor:pointer}.audit-wrapper{background:radial-gradient(ellipse at 30% 30%, hsl(var(--hue-info) 60% 50% / .05) 0%, transparent 55%), radial-gradient(ellipse at 70% 70%, hsl(var(--hue-success) 55% 50% / .04) 0%, transparent 55%), var(--bg-base);flex:1;position:relative;overflow:auto}.audit-canvas{min-width:1100px;min-height:700px;position:relative}.audit-svg{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;overflow:visible}.audit-connection{fill:none;stroke:hsl(var(--hue-danger) 72% 55%);stroke-width:1.5px;stroke-dasharray:6 4}.audit-node{cursor:move;-webkit-user-select:none;user-select:none;flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute}.audit-node.selected-first{filter:drop-shadow(0 0 6px var(--accent-primary))}.stick-figure{flex-direction:column;align-items:center;gap:0;display:flex}.stick-head{border:2.5px solid hsl(var(--hue-primary) 60% 50%);background:hsl(var(--hue-primary) 60% 50% / .12);border-radius:50%;width:28px;height:28px}.stick-body{background:hsl(var(--hue-primary) 55% 48%);border-radius:2px;width:2.5px;height:26px}.stick-arms{gap:0;display:flex;position:relative;top:-18px}.stick-arm{background:hsl(var(--hue-primary) 55% 48%);transform-origin:50%;border-radius:2px;width:20px;height:2.5px}.stick-arm:first-child{transform:rotate(-30deg)}.stick-arm:last-child{transform:rotate(30deg)}.stick-legs{gap:6px;display:flex;position:relative;top:-14px}.stick-leg{background:hsl(var(--hue-primary) 55% 48%);border-radius:2px;width:2.5px;height:22px}.stick-leg:first-child{transform:rotate(-15deg)}.stick-leg:last-child{transform:rotate(15deg)}.stick-label{color:var(--text-secondary);text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:80px;margin-top:-8px;font-size:.68rem;font-weight:600;overflow:hidden}.asset-block{border-radius:var(--radius-sm);border:1.5px solid hsl(var(--hue-info) 65% 55% / .6);background:hsl(var(--hue-info) 65% 55% / .12);width:100px;box-shadow:var(--shadow-sm);transition:border-color var(--transition-fast), background var(--transition-fast);flex-direction:column;align-items:center;gap:4px;padding:8px 10px;display:flex}.asset-block:hover{border-color:hsl(var(--hue-info) 65% 55%);background:hsl(var(--hue-info) 65% 55% / .2)}.asset-icon{font-size:1.1rem}.asset-label{color:hsl(var(--hue-info) 55% 38%);text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:88px;font-size:.68rem;font-weight:600;overflow:hidden}[data-theme=dark] .asset-label{color:hsl(var(--hue-info) 65% 72%)}.preset-panel{border-top:1px solid var(--border-subtle);flex-direction:column;gap:6px;padding:12px;display:flex}.preset-btn{border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-surface);text-align:left;cursor:pointer;transition:all var(--transition-fast);align-items:flex-start;gap:8px;padding:8px 10px;display:flex}.preset-btn:hover{border-color:var(--accent-secondary);background:hsl(var(--hue-secondary) 65% 55% / .08)}.preset-btn-icon{flex-shrink:0;margin-top:1px;font-size:.9rem}.preset-btn-text{flex-direction:column;gap:1px;display:flex}.preset-btn-title{color:var(--text-primary);font-size:.75rem;font-weight:600}.preset-btn-subtitle{color:var(--text-muted);font-size:.65rem}.add-lane-bar{border-top:1px solid var(--border-subtle);background:var(--bg-glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);align-items:center;gap:8px;padding:10px 16px;display:flex}.add-lane-input{border-radius:var(--radius-sm);border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-primary);transition:border-color var(--transition-fast);outline:none;flex:1;padding:6px 10px;font-size:.8rem}.add-lane-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px hsl(var(--hue-primary) 72% 50% / .12)}.inline-editor-overlay{z-index:9000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#00000059;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.inline-editor-box{background:var(--bg-glass-strong);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border:1px solid var(--border-glass);border-radius:var(--radius-lg);min-width:300px;box-shadow:var(--shadow-lg);flex-direction:column;gap:12px;padding:20px 24px;display:flex}.export-dialog{min-width:460px;max-width:520px;max-height:90vh;overflow-y:auto}.inline-editor-box h3{color:var(--text-primary);font-size:.9rem;font-weight:700}.form-group{flex-direction:column;gap:4px;display:flex}.form-label{color:var(--text-secondary);font-size:.72rem;font-weight:600}.form-input{border-radius:var(--radius-sm);border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-primary);transition:border-color var(--transition-fast);outline:none;padding:7px 10px;font-size:.82rem}.form-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px hsl(var(--hue-primary) 72% 50% / .12)}.editor-actions{justify-content:flex-end;gap:8px;display:flex}.tooltip-wrapper{display:inline-flex;position:relative}.tooltip-wrapper:after{content:attr(data-tooltip);white-space:nowrap;background:var(--text-primary);color:var(--bg-base);pointer-events:none;opacity:0;z-index:9999;transition:opacity var(--transition-fast);border-radius:4px;padding:3px 7px;font-size:.68rem;font-weight:500;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%)}.tooltip-wrapper:hover:after{opacity:1}.status-bar{background:var(--bg-glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border-subtle);color:var(--text-muted);flex:none;align-items:center;gap:16px;padding:5px 20px;font-size:.68rem;display:flex}.status-dot{background:var(--accent-success);border-radius:50%;width:6px;height:6px}.audit-toolbar{z-index:10;flex-direction:column;gap:6px;display:flex;position:absolute;top:16px;right:16px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.fade-in{animation:fadeIn var(--transition-medium) both}.scale-in{animation:scaleIn var(--transition-medium) both}.snap-chip{border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);border-radius:20px;align-items:center;gap:5px;padding:4px 10px;font-size:.72rem;font-weight:600;display:inline-flex}.snap-chip.active{border-color:var(--accent-primary);color:var(--accent-primary);background:var(--accent-primary-bg)}.lane-remove-btn{color:#fffc;opacity:0;width:20px;height:20px;transition:opacity var(--transition-fast);cursor:pointer;background:#fff3;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:11px;display:flex;position:absolute;top:4px;right:4px}.swimlane-label:hover .lane-remove-btn{opacity:1}
