:root{--gray-page:#f2f4f6;--gray-chrome:#eef0f3;--gray-header:#e2e6ec;--gray-divider:#d3d8de;--gray-border:#7e8694;--gray-text-secondary:#4b5566;--gray-text-tertiary:#6b7280;--color-bg:#fff;--color-bg-page:var(--gray-page);--color-bg-subtle:var(--gray-chrome);--color-bg-muted:var(--gray-header);--color-bg-selected:#d7deea;--color-bg-footer:#343a40;--color-border:var(--gray-border);--color-border-muted:var(--gray-divider);--color-border-strong:#1a1a2e;--color-text:#1a1a2e;--color-text-secondary:var(--gray-text-secondary);--color-text-tertiary:var(--gray-text-tertiary);--color-text-on-dark:#fff;--color-primary:#365d94;--color-primary-contrast:#fff;--color-primary-muted:#5d7099;--color-link:var(--color-primary);--color-danger:#c92a2a;--color-danger-bg:#ffe3e3;--color-success:#227a34;--color-success-bg:#d3f9d8;--color-warning:#a83e08;--color-warning-bg:#fff4e6;--canvas-bg:#fbfcfd;--canvas-grid-dot:#ccd2d9;--canvas-edge-stroke:#5c5c66;--canvas-edge-stroke-active:var(--color-primary);--canvas-edge-stroke-width:1.5px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--font-size-canvas:13px;--font-size-sm:12px;--font-size-base:14px;--font-size-lg:16px;--font-size-xl:20px;--font-mono:ui-monospace, "Cascadia Mono", "Segoe UI Mono", Consolas, "SF Mono", Menlo, monospace;--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--color-text);font:14px/145% system-ui,Segoe UI,Roboto,sans-serif}body{color:var(--color-text);margin:0}button{color:inherit;font:inherit}#root{width:100vw;height:100vh}.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%}.modal__overlay{z-index:100;background:#00000059;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal__box{background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;min-width:320px;max-width:90vw;max-height:85vh;font-family:Segoe UI,Roboto,sans-serif;overflow-y:auto;box-shadow:0 1px 3px #0000001f}.modal__header{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.modal__header h2{font-size:var(--font-size-lg);margin:0}.modal__close{font-size:var(--font-size-base);cursor:pointer;color:var(--color-text-secondary);background:0 0;border:none}.modal__body{padding:var(--space-4)}.modal__field{gap:var(--space-1);flex-direction:column;margin-bottom:10px;font-size:13px;display:flex}.modal__field input[type=text],.modal__field input[type=number],.modal__field select{font-size:var(--font-size-base);padding:6px var(--space-2);border:1px solid var(--color-border);border-radius:4px}.modal__checkboxes{gap:14px;margin-bottom:10px;font-size:13px;display:flex}.modal__checkboxes label{align-items:center;gap:var(--space-1);display:flex}.modal__actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-3);display:flex}.modal__actions button{cursor:pointer;border:1px solid var(--color-border);background:var(--color-bg-subtle);border-radius:4px;padding:7px 14px;font-size:13px}.modal__actions button.modal__primary{background:var(--color-primary);color:var(--color-primary-contrast);border-color:var(--color-primary)}.modal__error{color:var(--color-danger);font-size:var(--font-size-sm);margin:4px 0 0}.method-form__parameter-row{gap:var(--space-1);margin-bottom:4px;display:flex}.method-form__parameter-row input{font-size:var(--font-size-base);padding:5px var(--space-2);border:1px solid var(--color-border);border-radius:4px;flex:1;min-width:0}.method-form__remove-param{border:1px solid var(--color-border);background:var(--color-bg-subtle);cursor:pointer;border-radius:4px;flex-shrink:0;padding:0 8px}.method-form__add-param{border:1px dashed var(--color-border);font-size:var(--font-size-sm);cursor:pointer;color:var(--color-text-secondary);background:0 0;border-radius:4px;margin-top:2px;padding:4px 8px}.uml-class-node{background:var(--color-bg);border:1.5px solid var(--color-border-strong);border-radius:4px;flex-direction:column;width:100%;height:100%;font-family:Segoe UI,Roboto,sans-serif;font-size:11px;display:flex;overflow:hidden}.uml-class-node__name{text-align:center;background:var(--color-bg-muted);border-bottom:1.5px solid var(--color-border-strong);padding:6px 8px;font-weight:700}.uml-class-node__name--abstract{font-style:italic}.uml-class-node__name-row{justify-content:center;align-items:center;gap:4px;display:flex}.uml-class-node__name-text{text-overflow:ellipsis;overflow:hidden}.uml-class-node__lock-icon{font-size:11px;line-height:1}.uml-class-node__edit-btn{font-size:var(--font-size-canvas);cursor:pointer;color:var(--color-text-secondary);background:0 0;border:none;border-radius:3px;padding:0 2px;line-height:1}.uml-class-node__edit-btn:hover{background:var(--color-bg-selected)}.uml-class-node__edit-btn[data-locked=true]{color:var(--color-warning);cursor:not-allowed}.uml-class-node__edit-btn--danger:hover{background:var(--color-danger-bg);color:var(--color-danger)}.uml-class-node__name-input{width:100%;font:inherit;text-align:center;border:1px solid var(--color-primary);box-sizing:border-box;border-radius:3px;padding:2px 4px;font-weight:700}.uml-class-node__section{border-bottom:1px solid var(--color-border-muted);flex:1;padding:3px 8px;overflow:hidden auto}.uml-class-node__section:last-child{border-bottom:none}.uml-class-node__row{white-space:normal;overflow-wrap:break-word;line-height:1.35;font-family:var(--font-mono);justify-content:space-between;align-items:baseline;gap:6px;display:flex}.uml-class-node__attr-text{overflow-wrap:break-word;min-width:0}.uml-class-node__attr-actions{opacity:0;flex-shrink:0;gap:2px;transition:opacity .15s;display:flex}.uml-class-node:hover .uml-class-node__attr-actions,.uml-class-node:focus-within .uml-class-node__attr-actions{opacity:1}.uml-class-node__mini-btn{cursor:pointer;color:var(--color-text-tertiary);background:0 0;border:none;border-radius:3px;padding:0 2px;font-size:11px;line-height:1}.uml-class-node__mini-btn:hover{background:var(--color-bg-selected)}.uml-class-node__add-attr{border:1px dashed var(--color-border);color:var(--color-text-secondary);font-size:var(--font-size-sm);cursor:pointer;opacity:0;background:0 0;border-radius:3px;width:100%;margin-top:2px;padding:2px 6px;transition:opacity .15s}.uml-class-node:hover .uml-class-node__add-attr,.uml-class-node:focus-within .uml-class-node__add-attr{opacity:1}.uml-class-node__add-attr:hover{background:var(--color-bg-muted)}.uml-class-node__row--pk{text-decoration:underline}.uml-class-node__empty{color:var(--color-text-tertiary);font-style:italic}.uml-class-node__handle{background:var(--color-bg);border:1.5px solid var(--color-primary);width:10px;height:10px}.uml-class-node__resize-handle{border-right:2px solid var(--color-border-strong);border-bottom:2px solid var(--color-border-strong);cursor:nwse-resize;width:12px;height:12px}.react-flow__edge-umlRelationship .react-flow__edge-path{stroke:var(--canvas-edge-stroke);stroke-width:var(--canvas-edge-stroke-width)}.react-flow__edge-umlRelationship.selected .react-flow__edge-path,.react-flow__edge-umlRelationship:focus .react-flow__edge-path,.react-flow__edge-umlRelationship:focus-visible .react-flow__edge-path,.react-flow__edge-umlRelationship:hover .react-flow__edge-path{stroke:var(--canvas-edge-stroke-active);stroke-width:calc(var(--canvas-edge-stroke-width) + .5px)}.uml-edge-label{font-family:var(--font-mono);font-size:var(--font-size-canvas);fill:var(--color-border-strong);paint-order:stroke;stroke:var(--canvas-bg);stroke-width:3px}.uml-edge-delete-fo{overflow:visible}.uml-edge-delete-btn{border:1px solid var(--color-danger);background:var(--color-bg);width:18px;height:18px;color:var(--color-danger);cursor:pointer;opacity:.7;border-radius:50%;padding:0;font-size:10px;line-height:1}.uml-edge-delete-btn:hover{opacity:1;background:var(--color-danger-bg)}.uml-edge-hit-area{cursor:copy;pointer-events:stroke}.uml-edge-waypoint-handle{fill:var(--color-bg);stroke:var(--color-primary);stroke-width:1.5px;cursor:grab;opacity:0;transition:opacity .15s}.uml-edge-waypoint-handle:active{cursor:grabbing}.react-flow__edge-umlRelationship:hover .uml-edge-waypoint-handle,.react-flow__edge-umlRelationship.selected .uml-edge-waypoint-handle{opacity:1}.cursor-overlay{pointer-events:none;z-index:15;position:absolute;inset:0;overflow:hidden}.cursor-overlay__cursor{align-items:center;gap:4px;transition:left 80ms linear,top 80ms linear;display:flex;position:absolute;transform:translate(-2px,-2px)}.cursor-overlay__dot{border:2px solid var(--color-bg);border-radius:50%;width:10px;height:10px;box-shadow:0 0 2px #0006}.cursor-overlay__label{white-space:nowrap;border-radius:8px;padding:1px 6px;font-family:Segoe UI,Roboto,sans-serif;font-size:11px}.package-panel{top:var(--space-3);left:var(--space-3);width:320px;max-width:calc(100vw - 2 * var(--space-3));background:var(--color-bg);border:1px solid var(--color-border);z-index:20;max-height:60vh;font-family:Segoe UI,Roboto,sans-serif;font-size:var(--font-size-base);border-radius:6px;flex-direction:column;display:flex;position:absolute;box-shadow:0 1px 3px #0000001f}.package-panel__header{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border-muted);justify-content:space-between;align-items:center;font-weight:600;display:flex}.package-panel__close{cursor:pointer;color:var(--color-text-secondary);background:0 0;border:none}.package-panel__list{padding:var(--space-2) var(--space-3);gap:var(--space-1);flex-direction:column;display:flex;overflow-y:auto}.package-panel__empty{color:var(--color-text-tertiary);font-style:italic;font-size:var(--font-size-sm);padding:var(--space-2) 0}.package-panel__item{align-items:center;gap:var(--space-2);padding:var(--space-1) 0;border-bottom:1px solid var(--color-border-muted);display:flex}.package-panel__item:last-child{border-bottom:none}.package-panel__name{flex:1;align-items:center;gap:4px;display:flex}.package-panel__lock-icon{font-size:11px}.package-panel__count{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.package-panel__row-actions{gap:4px;display:flex}.package-panel__row-actions button{cursor:pointer;background:0 0;border:none;font-size:13px}.package-panel__item--editing{align-items:stretch;gap:var(--space-2);padding:var(--space-2) 0;flex-direction:column}.package-panel__name-input{font-size:var(--font-size-base);padding:6px var(--space-2);border:1px solid var(--color-border);border-radius:4px}.package-panel__class-list{border:1px solid var(--color-border-muted);max-height:160px;padding:var(--space-1) var(--space-2);border-radius:4px;flex-direction:column;gap:2px;display:flex;overflow-y:auto}.package-panel__class-row{align-items:center;gap:var(--space-1);font-size:var(--font-size-sm);display:flex}.package-panel__actions{justify-content:flex-end;gap:var(--space-2);display:flex}.package-panel__actions button{cursor:pointer;border:1px solid var(--color-border);background:var(--color-bg-subtle);border-radius:4px;padding:5px 10px;font-size:13px}.package-panel__primary{color:var(--color-primary-contrast);background:var(--color-primary)!important;border-color:var(--color-primary)!important}.package-panel__add{margin-top:var(--space-1);border:1px dashed var(--color-border);padding:var(--space-1) var(--space-2);font-size:var(--font-size-sm);cursor:pointer;color:var(--color-text-secondary);background:0 0;border-radius:4px}.offline-badge{z-index:20;text-align:center;border-radius:6px;max-width:min(90vw,600px);padding:8px 16px;font-family:Segoe UI,Roboto,sans-serif;font-size:13px;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 2px 6px #0003}.offline-badge--offline{background:var(--color-warning);color:var(--color-text-on-dark)}.offline-badge--syncing{background:var(--color-primary);color:var(--color-text-on-dark)}.offline-badge__count{font-weight:600}.reconciliation-modal__summary{margin:0 0 10px;font-size:14px}.reconciliation-modal__applied{color:var(--color-success);font-weight:600}.reconciliation-modal__discarded{color:var(--color-danger);font-weight:600}.reconciliation-modal__details{max-height:260px;margin:0 0 8px;padding-left:18px;font-size:13px;overflow-y:auto}.reconciliation-modal__details li{margin-bottom:6px}.validation-dialog{width:480px;max-width:100%}.validation-dialog__banner{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-3);border-radius:4px;font-weight:600;display:flex}.validation-dialog__banner--ok{background:var(--color-success-bg);color:var(--color-success)}.validation-dialog__banner--blocked{background:var(--color-danger-bg);color:var(--color-danger)}.validation-dialog__section{margin-bottom:var(--space-4)}.validation-dialog__section h3{margin:0 0 var(--space-2);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.04em}.validation-dialog__section--errors h3{color:var(--color-danger)}.validation-dialog__section--warnings h3{color:var(--color-warning)}.validation-dialog__list{gap:var(--space-1);flex-direction:column;display:flex}.validation-dialog__issue{text-align:left;width:100%;font:inherit;padding:var(--space-2);border:1px solid var(--color-border-muted);background:var(--color-bg);cursor:pointer;border-radius:4px;display:block}.validation-dialog__issue:hover{background:var(--color-bg-selected);border-color:var(--color-border)}.validation-dialog__issue-element{font-family:var(--font-mono);font-weight:600;font-size:var(--font-size-sm)}.validation-dialog__issue-message{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.validation-dialog__generate-row{gap:var(--space-2);margin-top:var(--space-4);align-items:center;display:flex}.validation-dialog__generate-row input{font-family:var(--font-mono);font-size:var(--font-size-base);padding:6px var(--space-2);border:1px solid var(--color-border);border-radius:4px;flex:1}.ai-command{bottom:var(--space-3);left:var(--space-3);width:380px;max-width:calc(100vw - 2 * var(--space-3));background:var(--color-bg);border:1px solid var(--color-border);z-index:20;max-height:60vh;font-family:Segoe UI,Roboto,sans-serif;font-size:var(--font-size-base);border-radius:6px;flex-direction:column;display:flex;position:absolute;box-shadow:0 1px 3px #0000001f}.ai-command__header{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border-muted);justify-content:space-between;align-items:center;font-weight:600;display:flex}.ai-command__close{cursor:pointer;color:var(--color-text-secondary);font-size:var(--font-size-base);background:0 0;border:none}.ai-command__history{padding:var(--space-3);gap:var(--space-3);flex-direction:column;flex:1;display:flex;overflow-y:auto}.ai-command__empty{color:var(--color-text-tertiary);font-style:italic}.ai-command__example{border:1px dashed var(--color-border);color:var(--color-text-secondary);padding:4px var(--space-2);font-size:var(--font-size-sm);cursor:pointer;background:0 0;border-radius:4px;align-self:flex-start}.ai-command__example:hover{background:var(--color-bg-subtle)}.ai-command__entry{gap:var(--space-1);flex-direction:column;display:flex}.ai-command__command{background:var(--color-bg-selected);max-width:90%;color:var(--color-text);padding:6px var(--space-2);font-size:var(--font-size-sm);border-radius:10px 10px 2px;align-self:flex-end}.ai-command__response{max-width:95%;padding:var(--space-2);font-size:var(--font-size-sm);white-space:pre-wrap;border-radius:2px 10px 10px}.ai-command__response--applied{background:var(--color-success-bg);color:var(--color-success)}.ai-command__response--applied ul{margin:var(--space-1) 0 0;color:var(--color-text);padding-left:18px}.ai-command__response--rejected{background:var(--color-bg-subtle);color:var(--color-text);border:1px solid var(--color-border-muted)}.ai-command__response--failed{background:var(--color-warning-bg);color:var(--color-warning);border:1px solid var(--color-warning)}.ai-command__form{gap:var(--space-2);padding:var(--space-2) var(--space-3);border-top:1px solid var(--color-border-muted);display:flex}.ai-command__form input{font-size:var(--font-size-base);padding:6px var(--space-2);border:1px solid var(--color-border);border-radius:4px;flex:1}.ai-command__form button{padding:6px var(--space-3);background:var(--color-primary);color:var(--color-primary-contrast);cursor:pointer;border:none;border-radius:4px}.ai-command__form button:disabled{background:var(--color-primary-muted);cursor:default}.vision-modal{width:560px;max-width:100%}.vision-modal__simulated{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-3);background:var(--color-warning-bg);color:var(--color-warning);border-radius:4px;font-weight:600;display:flex}.vision-modal__message{margin:0 0 var(--space-3);color:var(--color-text-secondary)}.vision-modal__notes{margin:0 0 var(--space-3);font-size:var(--font-size-sm);color:var(--color-text-secondary);padding-left:18px}.vision-modal__section-title{font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-tertiary);margin:0 0 var(--space-2)}.vision-modal__classes{gap:var(--space-2);max-height:260px;margin-bottom:var(--space-4);flex-direction:column;display:flex;overflow-y:auto}.vision-modal__class{border:1px solid var(--color-border);padding:var(--space-2);border-radius:4px}.vision-modal__class--excluded{opacity:.5}.vision-modal__class-header{align-items:center;gap:var(--space-2);margin-bottom:var(--space-1);display:flex}.vision-modal__class-header input[type=text]{font-family:var(--font-mono);border:1px solid var(--color-border);border-radius:4px;flex:1;padding:4px 6px;font-weight:600}.vision-modal__attr{align-items:center;gap:var(--space-2);font-family:var(--font-mono);font-size:var(--font-size-sm);padding:2px 0 2px 24px;display:flex}.vision-modal__attr input[type=text]{font-family:var(--font-mono);font-size:var(--font-size-sm);border:1px solid var(--color-border);border-radius:4px;width:130px;padding:3px 6px}.vision-modal__relationships{gap:var(--space-1);margin-bottom:var(--space-3);flex-direction:column;display:flex}.vision-modal__relationship{font-family:var(--font-mono);font-size:var(--font-size-sm);padding:4px var(--space-2);border:1px solid var(--color-border-muted);border-radius:4px}.vision-modal__file-input{margin-bottom:var(--space-3)}.vision-modal__empty{color:var(--color-text-tertiary);font-style:italic}.er-table{background:var(--color-bg);border:1.5px solid var(--color-border-strong);min-width:200px;font-family:var(--font-mono);box-shadow:none;border-radius:4px;font-size:12px}.er-table__name{text-align:center;background:var(--color-bg-muted);border-bottom:1.5px solid var(--color-border-strong);padding:6px 8px;font-family:Segoe UI,Roboto,sans-serif;font-weight:700}.er-table--junction .er-table__name{color:var(--color-text-secondary);font-style:italic}.er-table__abstract-mark{color:var(--color-text-tertiary);font-size:10px;font-weight:400}.er-table__row{border-bottom:1px solid var(--color-border-muted);white-space:nowrap;align-items:center;gap:6px;padding:3px 8px;display:flex}.er-table__row:last-child{border-bottom:none}.er-table__row--pk{font-weight:700;text-decoration:underline}.er-table__key-badge{color:var(--color-primary);flex-shrink:0;width:32px;font-size:10px;font-weight:700}.er-table__col-name{flex:1}.er-table__col-type{color:var(--color-text-tertiary)}.er-table__empty{color:var(--color-text-tertiary);padding:6px 8px;font-family:Segoe UI,Roboto,sans-serif;font-style:italic}.react-flow__edge-erRelationship .react-flow__edge-path{stroke:var(--canvas-edge-stroke);stroke-width:var(--canvas-edge-stroke-width)}.react-flow__edge-erRelationship.selected .react-flow__edge-path,.react-flow__edge-erRelationship:hover .react-flow__edge-path{stroke:var(--canvas-edge-stroke-active);stroke-width:calc(var(--canvas-edge-stroke-width) + .5px)}.import-xmi{width:460px;max-width:100%}.import-xmi__message{margin:0 0 var(--space-3);font-size:var(--font-size-base);color:var(--color-text-secondary)}.import-xmi__file-input{width:100%;font-size:var(--font-size-base)}.import-xmi__report{margin-top:var(--space-3);max-height:320px;overflow-y:auto}.import-xmi__banner{padding:var(--space-2) var(--space-3);background:var(--color-danger-bg);color:var(--color-danger);border-radius:4px;font-weight:600}.import-xmi__section-title{margin:var(--space-3) 0 var(--space-2);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.04em}.import-xmi__section-title--errors{color:var(--color-danger)}.import-xmi__section-title--warnings{color:var(--color-warning)}.import-xmi__issues{gap:var(--space-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.import-xmi__issues li{padding:var(--space-2);border:1px solid var(--color-border-muted);border-radius:4px;display:block}.import-xmi__issue-element{font-family:var(--font-mono);font-weight:600;font-size:var(--font-size-sm);display:block}.import-xmi__issue-message{font-size:var(--font-size-sm);color:var(--color-text-secondary);display:block}.app{flex-direction:column;width:100vw;height:100vh;display:flex}.app__toolbar{align-items:center;gap:var(--space-2);padding:6px var(--space-3);background:var(--color-bg-subtle);border-bottom:1px solid var(--color-border);font-family:Segoe UI,Roboto,sans-serif;font-size:var(--font-size-base);flex-wrap:wrap;display:flex}.app__toolbar-group{align-items:center;gap:var(--space-1);padding-right:var(--space-2);border-right:1px solid var(--color-border);display:flex}.app__view-toggle{background:var(--color-bg);border-right:none;border:1px solid var(--color-border);border-radius:6px;gap:0;padding:2px}.app__view-toggle-btn{font-size:var(--font-size-sm);color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:3px 10px}.app__view-toggle-btn--active{background:var(--color-primary);color:var(--color-primary-contrast)}.app__toolbar-btn--fixed{min-width:96px}.app__toolbar-status{align-items:center;min-width:0;display:flex;overflow:hidden}.app__toolbar-status .app__collab-warning{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app__canvas{background:var(--canvas-bg);flex:1;min-height:0;position:relative}.app__canvas .react-flow__attribution a{color:var(--color-text-secondary)}.app__collab-status{font-size:var(--font-size-sm);padding:2px var(--space-2);background:var(--color-bg-subtle);color:var(--color-text-secondary);border-radius:10px}.app__collab-status[data-status=conectado]{background:var(--color-success-bg);color:var(--color-success)}.app__collab-status[data-status=error]{background:var(--color-danger-bg);color:var(--color-danger)}.app__collab-warning{font-size:var(--font-size-sm);color:var(--color-warning)}.app__new-class-btn{font-size:var(--font-size-sm);border:1px solid var(--color-primary);background:var(--color-primary);color:var(--color-primary-contrast);cursor:pointer;border-radius:4px;padding:4px 10px}.app__roster{gap:var(--space-1);display:flex}.app__roster-chip{padding:2px var(--space-2);background:var(--color-bg-subtle);color:var(--color-text);border-radius:10px;align-items:center;gap:4px;font-size:11px;font-weight:600;display:inline-flex}.app__roster-chip-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.app__session{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-left:auto}.app__toasts{top:var(--space-3);right:var(--space-3);z-index:20;gap:var(--space-2);flex-direction:column;display:flex;position:absolute}.app__toast{padding:var(--space-2) 14px;background:var(--color-bg-footer);color:var(--color-text-on-dark);border:1px solid #ffffff26;border-radius:6px;font-size:13px}.app__toast--warning{background:var(--color-warning)}.login-screen{background:var(--color-bg-subtle);justify-content:center;align-items:center;width:100vw;height:100vh;font-family:Segoe UI,Roboto,sans-serif;display:flex}.login-screen__form{gap:var(--space-3);background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;flex-direction:column;width:340px;padding:50px;display:flex;box-shadow:0 1px 3px #00000014}.login-screen__form h1{margin:0 0 var(--space-2);font-size:var(--font-size-xl);text-align:center;color:var(--color-text)}.login-screen__form label{gap:var(--space-1);color:var(--color-text-secondary);flex-direction:column;font-size:17px;display:flex}.login-screen__form input{font-size:var(--font-size-base);padding:6px var(--space-2);border:1px solid var(--color-border);border-radius:4px}.login-screen__form button{margin-top:var(--space-1);padding:var(--space-2);font-size:var(--font-size-base);background:var(--color-primary);color:var(--color-primary-contrast);cursor:pointer;border:none;border-radius:4px}.login-screen__form button:disabled{background:var(--color-primary-muted);cursor:default}.login-screen__error{color:var(--color-danger);font-size:var(--font-size-sm);margin:0}.login-screen__ayuda{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.login-screen__form .login-screen__alternar{margin-top:var(--space-1);padding:var(--space-1);font-size:var(--font-size-base);color:var(--color-primary);cursor:pointer;background:0 0;border:none;text-decoration:underline}.access-page{background:var(--color-bg-page);min-height:100vh;font-family:Segoe UI,Roboto,sans-serif}.access-page__header{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-bg-subtle);border-bottom:1px solid var(--color-border);display:flex}.access-page__brand{color:var(--color-text);font-weight:700}.access-page__back{color:var(--color-link);font-size:var(--font-size-sm);text-decoration:none}.access-page__back:hover{text-decoration:underline}.access-page__session{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-left:auto}.access-page__body{max-width:880px;padding:var(--space-5) var(--space-4);margin:0 auto}.access-page__row{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}.access-page__row h1{font-size:var(--font-size-xl);color:var(--color-text);margin:0}.access-page__primary-btn{padding:var(--space-2) var(--space-3);border:1px solid var(--color-primary);background:var(--color-primary);color:var(--color-primary-contrast);font-size:var(--font-size-base);cursor:pointer;border-radius:4px}.access-page__error{color:var(--color-danger);font-size:var(--font-size-base)}.access-page__actions{gap:var(--space-2);display:flex}.access-page__empty-box{align-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-4);border:1px dashed var(--color-border);text-align:center;border-radius:8px;flex-direction:column;display:flex}.access-page__empty-title{font-size:var(--font-size-lg);font-weight:600}.access-page__empty-box .access-page__empty{margin:0;padding:0;font-style:normal}.access-page__empty{color:var(--color-text-secondary);padding:var(--space-4) 0;font-style:italic}.access-list{gap:var(--space-2);flex-direction:column;display:flex}.access-list__item{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-4);background:var(--color-bg);border:1px solid var(--color-border);cursor:pointer;text-align:left;font:inherit;color:inherit;border-radius:6px;display:flex}.access-list__item:hover{background:var(--color-bg-selected)}.access-list__item-text{flex-direction:column;gap:2px;min-width:0;display:flex}.access-list__item-name{font-weight:600;font-size:var(--font-size-lg);line-height:1.3}.access-list__item-meta{font-size:var(--font-size-sm);text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-secondary);overflow:hidden}.access-role-badge{padding:2px var(--space-2);letter-spacing:.02em;background:var(--color-bg-muted);color:var(--color-text-secondary);border-radius:999px;flex-shrink:0;align-items:center;font-size:11px;font-weight:600;display:inline-flex}.access-role-badge--owner{background:var(--color-bg-selected);color:var(--color-primary)}.share-modal{width:440px;max-width:100%}.share-modal__section{margin-bottom:var(--space-4)}.share-modal__section h3{margin:0 0 var(--space-2);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-tertiary)}.share-modal__inline-form{gap:var(--space-2);align-items:center;display:flex}.share-modal__inline-form select,.share-modal__inline-form input{font-size:var(--font-size-base);padding:6px var(--space-2);border:1px solid var(--color-border);border-radius:4px}.share-modal__inline-form input[type=email]{flex:1}.share-modal__inline-form input[type=number]{width:130px}.share-modal__link-row{align-items:center;gap:var(--space-2);margin-top:var(--space-2);padding:var(--space-2);background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:4px;display:flex}.share-modal__link-row code{text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);font-size:var(--font-size-sm);flex:1;overflow:hidden}.share-modal__list{gap:var(--space-1);flex-direction:column;max-height:180px;display:flex;overflow-y:auto}.share-modal__list-item{justify-content:space-between;align-items:center;gap:var(--space-2);padding:6px var(--space-2);border:1px solid var(--color-border-muted);font-size:var(--font-size-sm);border-radius:4px;display:flex}.share-modal__list-item--inactive{opacity:.55}.share-modal__list-item-info{flex-direction:column;gap:2px;min-width:0;display:flex}.share-modal__list-item-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.share-modal__list-item-meta{color:var(--color-text-tertiary)}.share-modal__revoke{border:1px solid var(--color-danger);color:var(--color-danger);font-size:var(--font-size-sm);cursor:pointer;background:0 0;border-radius:4px;flex-shrink:0;padding:2px 8px}.share-modal__empty{color:var(--color-text-tertiary);font-size:var(--font-size-sm);font-style:italic}.invite-page{background:var(--color-bg-page);justify-content:center;align-items:center;width:100vw;height:100vh;font-family:Segoe UI,Roboto,sans-serif;display:flex}.invite-page__card{width:380px;max-width:90vw;padding:var(--space-6) var(--space-5);background:var(--color-bg);border:1px solid var(--color-border);text-align:center;border-radius:8px;box-shadow:0 1px 3px #00000014}.invite-page__card h1{margin:0 0 var(--space-3);font-size:var(--font-size-lg);color:var(--color-text)}.invite-page__role{color:var(--color-primary);font-weight:700}.invite-page__error{color:var(--color-danger);margin-bottom:var(--space-3)}.invite-page__action{margin-top:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-primary);color:var(--color-primary-contrast);font-size:var(--font-size-base);cursor:pointer;border:none;border-radius:4px}.invite-page__action:disabled{background:var(--color-primary-muted);cursor:default}.invite-page__nota{margin:0 0 var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.5}.invite-page__nota strong{color:var(--color-text)}
