.react-flow{direction:ltr}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1px;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab;position:absolute}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:-webkit-grab;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background:#1a192b;border:1px solid #fff;border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:-4px;left:50%;transform:translate(-50%)}.react-flow__handle-top{top:-4px;left:50%;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{top:50%;right:-4px;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{background:#ffffff80;margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{color:#222;text-align:center;background-color:#fff;border:1px solid #1a192b;border-radius:3px;width:150px;padding:10px;font-size:12px}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted #0059dccc}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{box-sizing:content-box;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fefefe;border:none;border-bottom:1px solid #eee;justify-content:center;align-items:center;width:16px;height:16px;padding:5px;display:flex}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:#3367d9;border:1px solid #fff;border-radius:1px;width:4px;height:4px;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border:0 solid #3367d9}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}:root{--bg:#eeece8;--surface:#fff;--border:#c8c4bc;--border-strong:#9a9590;--text:#111110;--text-secondary:#44423e;--text-tertiary:#6b6660;--forcing:#1e4068;--forcing-bg:#dde8f4;--quality:#1e5c38;--quality-bg:#d8eee0;--modifier:#5c4a20;--modifier-bg:#ede4cc;--non-negotiable:#6b1a1a;--non-negotiable-bg:#f2dada;--external:#4a4010;--external-bg:#e8e2c4;--forces-color:#6b1a1a;--forces-bg:#f2dada;--conflicts-color:#8b0f24;--conflicts-bg:#f8d0d6;--implies-color:#1e5c38;--implies-bg:#d8eee0;--flags-color:#4a4010;--flags-bg:#e8e2c4;--enables-color:#1e5c38;--enables-bg:#d8eee0;--warns-color:#8a5c00;--warns-bg:#f5e8c0;--blocks-color:#8b0f24;--blocks-bg:#f8d0d6;--commits-color:#3d5a7a;--commits-bg:#dde8f4;--font:system-ui, -apple-system, "Segoe UI", sans-serif;--radius:3px}body{font-family:var(--font);background:var(--bg);color:var(--text);min-height:100vh;font-size:14px;line-height:1.5}#root{flex-direction:column;min-height:100vh;display:flex}.app-nav{background:var(--text);border-bottom:1px solid var(--text);z-index:1000;align-items:stretch;gap:0;height:48px;padding:0 24px;display:flex;position:fixed;top:0;left:0;right:0}.app-nav-brand{border-right:1px solid #fff3;flex-direction:column;justify-content:center;margin-right:8px;padding-right:24px;display:flex}.app-nav-brand h1{color:#fff;letter-spacing:.01em;white-space:nowrap;font-size:13px;font-weight:600}.app-nav-brand span{color:#ffffff80;font-size:11px;font-weight:400}.nav-tab{height:48px;font-family:var(--font);color:#ffffff8c;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:0 16px;font-size:13px;font-weight:500;transition:color .1s,border-color .1s}.nav-tab:hover{color:#ffffffd9}.nav-tab.active{color:#fff;border-bottom-color:#fff}.view{flex:1;width:100%;max-width:1400px;margin:0 auto;padding:24px;overflow-y:auto}.view-header{align-items:baseline;gap:12px;margin-bottom:20px;display:flex}.view-header h2{font-size:16px;font-weight:600}.view-header p{color:var(--text-secondary);font-size:13px}.explorer-layout{grid-template-columns:1fr 320px;align-items:start;gap:20px;display:grid}@media (width<=900px){.explorer-layout{grid-template-columns:1fr}}.variable-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.variable-card{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--forcing);border-radius:var(--radius);padding:14px 16px}.variable-card[data-type=forcing]{border-left-color:var(--forcing)}.variable-card[data-type=quality]{border-left-color:var(--quality)}.variable-card[data-type=modifier]{border-left-color:var(--modifier)}.variable-card[data-type=non-negotiable]{border-left-color:var(--non-negotiable)}.variable-card[data-type=external]{border-left-color:var(--external)}.variable-card-header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.variable-card-name{font-size:13px;font-weight:600}.type-badge{text-transform:uppercase;letter-spacing:.06em;border-radius:var(--radius);white-space:nowrap;padding:2px 6px;font-size:10px;font-weight:600}.type-badge[data-type=forcing]{background:var(--forcing-bg);color:var(--forcing)}.type-badge[data-type=quality]{background:var(--quality-bg);color:var(--quality)}.type-badge[data-type=modifier]{background:var(--modifier-bg);color:var(--modifier)}.type-badge[data-type=non-negotiable]{background:var(--non-negotiable-bg);color:var(--non-negotiable)}.type-badge[data-type=external]{background:var(--external-bg);color:var(--external)}.option-list{flex-direction:column;gap:4px;display:flex}.option-btn{text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;font-family:var(--font);color:var(--text);cursor:pointer;align-items:center;gap:8px;padding:7px 10px;font-size:13px;transition:background .1s,border-color .1s;display:flex;position:relative}.option-btn:hover{border-color:var(--border-strong);background:var(--bg)}.option-btn.selected{background:var(--text);border-color:var(--text);color:#fff;font-weight:500}.option-btn.selected:before{content:"";background:#fff;border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.option-btn:not(.selected):before{content:"";border:1.5px solid var(--border-strong);background:0 0;border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.option-btn.status-forces{border-color:var(--forces-color);background:var(--forces-bg);color:var(--forces-color);border-width:1.5px}.option-btn.status-conflicts{border-color:var(--conflicts-color);background:var(--conflicts-bg);color:var(--conflicts-color);opacity:.7;border-width:1.5px;text-decoration:line-through}.option-btn.status-implies{border-color:var(--implies-color);background:var(--implies-bg);color:var(--implies-color);border-width:1.5px}.option-btn.status-flags{border-color:var(--flags-color);background:var(--flags-bg);color:var(--flags-color);border-width:1.5px}.option-status-tag{text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;margin-left:auto;font-size:10px;font-weight:600}.option-btn.status-forces .option-status-tag{color:var(--forces-color)}.option-btn.status-conflicts .option-status-tag{color:var(--conflicts-color)}.option-btn.status-implies .option-status-tag{color:var(--implies-color)}.option-btn.status-flags .option-status-tag{color:var(--flags-color)}.feedback-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;position:sticky;top:68px}.feedback-panel-title{text-transform:uppercase;letter-spacing:.08em;color:var(--text);margin-bottom:12px;font-size:11px;font-weight:700}.feedback-empty{color:var(--text-tertiary);font-size:13px;font-style:italic}.feedback-group{margin-bottom:14px}.feedback-group-label{text-transform:uppercase;letter-spacing:.07em;border-radius:var(--radius);margin-bottom:6px;padding:2px 6px;font-size:10px;font-weight:700;display:inline-block}.feedback-group-label.forces{background:var(--forces-bg);color:var(--forces-color)}.feedback-group-label.conflicts{background:var(--conflicts-bg);color:var(--conflicts-color)}.feedback-group-label.implies{background:var(--implies-bg);color:var(--implies-color)}.feedback-group-label.flags{background:var(--flags-bg);color:var(--flags-color)}.feedback-item{color:var(--text);border-bottom:1px solid var(--border);padding:6px 0;font-size:12px;line-height:1.4}.feedback-item:last-child{border-bottom:none}.feedback-item strong{color:var(--text);font-weight:500}.feedback-item .feedback-note{color:var(--text-tertiary);margin-top:2px;font-size:11px;display:block}.scenario-save-bar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:8px;margin-top:12px;padding:14px 16px;display:flex}.scenario-save-bar-title{text-transform:uppercase;letter-spacing:.07em;color:var(--text-secondary);font-size:12px;font-weight:600}.scenario-save-bar .input-row{gap:8px;display:flex}input[type=text],textarea,select{font-family:var(--font);color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);outline:none;width:100%;padding:7px 10px;font-size:13px;transition:border-color .1s}input[type=text]:focus,textarea:focus,select:focus{border-color:var(--border-strong);background:var(--surface)}textarea{resize:vertical;min-height:60px}.btn{font-family:var(--font);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;white-space:nowrap;padding:7px 14px;font-size:13px;font-weight:500;transition:background .1s,border-color .1s}.btn-primary{background:var(--text);color:#fff;border-color:var(--text)}.btn-primary:hover{background:#333}.btn-secondary{background:var(--surface);color:var(--text)}.btn-secondary:hover{background:var(--bg);border-color:var(--border-strong)}.btn-ghost{color:var(--text-secondary);background:0 0;border-color:#0000;padding:4px 8px}.btn-ghost:hover{color:var(--text);border-color:var(--border)}.btn-danger{color:var(--conflicts-color);background:0 0;border-color:#0000;padding:4px 8px}.btn-danger:hover{background:var(--conflicts-bg)}.btn:disabled{opacity:.4;cursor:not-allowed}.scenario-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;display:grid}.scenario-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.scenario-card-name{margin-bottom:4px;font-size:14px;font-weight:600}.scenario-card-date{color:var(--text-tertiary);margin-bottom:8px;font-size:11px}.scenario-card-note{color:var(--text-secondary);margin-bottom:10px;font-size:12px;line-height:1.4}.scenario-card-tags{flex-wrap:wrap;gap:4px;margin-bottom:12px;display:flex}.scenario-card-actions{border-top:1px solid var(--border);gap:6px;padding-top:10px;display:flex}.compare-selectors{grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px;display:grid}.compare-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);margin-bottom:6px;font-size:12px;font-weight:600}.compare-table{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;font-size:13px;overflow:hidden}.compare-table th{background:var(--bg);border-bottom:1px solid var(--border);text-align:left;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;padding:10px 14px;font-size:12px;font-weight:600}.compare-table td{border-bottom:1px solid var(--border);vertical-align:top;padding:10px 14px}.compare-table tr:last-child td{border-bottom:none}.compare-table tr.diff td{background:#fdf5e0;font-weight:500}.compare-table .variable-name{font-weight:500}.compare-table .type-col{width:100px}.compare-table .diff-indicator{text-align:center;width:24px;color:var(--flags-color);font-size:11px}.rules-table{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;margin-bottom:16px;font-size:13px;overflow:hidden}.rules-table th{background:var(--bg);border-bottom:1px solid var(--border);text-align:left;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;padding:10px 14px;font-size:12px;font-weight:600}.rules-table td{border-bottom:1px solid var(--border);vertical-align:top;padding:10px 14px}.rules-table tr:last-child td{border-bottom:none}.condition-chip{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);margin:2px 2px 2px 0;padding:2px 7px;font-size:11px;display:inline-block}.rel-badge{text-transform:uppercase;letter-spacing:.06em;border-radius:var(--radius);white-space:nowrap;padding:2px 7px;font-size:10px;font-weight:700}.rel-badge.forces{background:var(--forces-bg);color:var(--forces-color)}.rel-badge.conflicts{background:var(--conflicts-bg);color:var(--conflicts-color)}.rel-badge.implies{background:var(--implies-bg);color:var(--implies-color)}.rel-badge.flags{background:var(--flags-bg);color:var(--flags-color)}.rel-badge.enables{background:var(--enables-bg);color:var(--enables-color)}.rel-badge.warns{background:var(--warns-bg);color:var(--warns-color)}.rel-badge.blocks{background:var(--blocks-bg);color:var(--blocks-color)}.rel-badge.commits{background:var(--commits-bg);color:var(--commits-color)}.rule-note{color:var(--text-tertiary);margin-top:2px;font-size:11px}.modal-overlay{z-index:200;background:#1a1a1a66;justify-content:center;align-items:flex-start;padding:60px 24px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:560px;padding:24px}.modal-title{margin-bottom:20px;font-size:15px;font-weight:600}.form-field{margin-bottom:14px}.form-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px;font-size:12px;font-weight:600;display:block}.form-row{align-items:flex-end;gap:10px;display:flex}.chip-picker{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);flex-wrap:wrap;gap:5px;min-height:40px;padding:8px;display:flex}.chip{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;align-items:center;gap:4px;padding:3px 8px;font-size:12px;transition:background .1s,border-color .1s;display:inline-flex}.chip:hover{border-color:var(--border-strong)}.chip.selected{background:var(--text);color:#fff;border-color:var(--text)}.chip-remove{opacity:.6;font-size:14px;line-height:1}.rel-radio-group{flex-wrap:wrap;gap:6px;display:flex}.rel-radio{display:none}.rel-radio-label{cursor:pointer;border:1px solid var(--border);border-radius:var(--radius);text-transform:uppercase;letter-spacing:.05em;padding:5px 12px;font-size:12px;font-weight:600;transition:background .1s}.rel-radio:checked+.rel-radio-label.forces{background:var(--forces-bg);color:var(--forces-color);border-color:var(--forces-color)}.rel-radio:checked+.rel-radio-label.conflicts{background:var(--conflicts-bg);color:var(--conflicts-color);border-color:var(--conflicts-color)}.rel-radio:checked+.rel-radio-label.implies{background:var(--implies-bg);color:var(--implies-color);border-color:var(--implies-color)}.rel-radio:checked+.rel-radio-label.flags{background:var(--flags-bg);color:var(--flags-color);border-color:var(--flags-color)}.rel-radio:checked+.rel-radio-label.enables{background:var(--enables-bg);color:var(--enables-color);border-color:var(--enables-color)}.rel-radio:checked+.rel-radio-label.warns{background:var(--warns-bg);color:var(--warns-color);border-color:var(--warns-color)}.rel-radio:checked+.rel-radio-label.blocks{background:var(--blocks-bg);color:var(--blocks-color);border-color:var(--blocks-color)}.rel-radio:checked+.rel-radio-label.commits{background:var(--commits-bg);color:var(--commits-color);border-color:var(--commits-color)}.modal-actions{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;margin-top:20px;padding-top:16px;display:flex}.flex-gap{align-items:center;gap:8px;display:flex}.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.text-secondary{color:var(--text-secondary)}.text-small{font-size:12px}.text-tiny{font-size:11px}.divider{background:var(--border);height:1px;margin:16px 0}.empty-state{text-align:center;color:var(--text-tertiary);padding:48px 24px;font-size:13px}.empty-state p{margin-top:6px;font-size:12px}.variable-card-edit{border-top:1px solid var(--border);margin-top:10px;padding-top:10px}.option-edit-row{align-items:center;gap:6px;margin-bottom:4px;display:flex}.option-edit-row input{flex:1}.add-variable-btn{border:1px dashed var(--border-strong);border-radius:var(--radius);font-family:var(--font);color:var(--text-secondary);cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:6px;width:100%;padding:12px;font-size:13px;transition:background .1s,color .1s;display:flex}.add-variable-btn:hover{background:var(--surface);color:var(--text)}.selection-count{color:var(--text-tertiary);margin-left:auto;font-size:11px}
