:root{color-scheme:light;--navy-950: #0b1426;--navy-900: #12223f;--navy-800: #1c3155;--navy-700: #29466f;--mint-500: #25b999;--mint-400: #48d1b2;--mint-100: #dff8f1;--mint-50: #f1fcf8;--blue-500: #3975d7;--blue-100: #e8f0ff;--ink: #18253a;--muted: #6a778a;--line: #dfe5ec;--line-strong: #cbd4df;--paper: #ffffff;--canvas: #f4f7f9;--warm: #fbfaf7;--danger: #c84444;--danger-soft: #fff0ee;--shadow-sm: 0 1px 2px rgb(12 25 46 / 6%), 0 4px 12px rgb(12 25 46 / 5%);--shadow-lg: 0 24px 70px rgb(7 20 42 / 22%);--radius-sm: 8px;--radius: 12px;--radius-lg: 18px;--font-body: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-display: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden}body{background:var(--canvas);color:var(--ink);font-family:var(--font-body);font-size:14px;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid rgb(57 117 215 / 28%);outline-offset:2px}.skip-link{position:fixed;z-index:2000;top:12px;left:12px;padding:10px 14px;border-radius:var(--radius-sm);background:var(--navy-950);color:#fff;transform:translateY(-160%);transition:transform .16s ease}.skip-link:focus{transform:translateY(0)}.app-shell{display:grid;grid-template-rows:76px minmax(0,1fr);width:100%;height:100%}.topbar{z-index:20;display:grid;grid-template-columns:minmax(250px,1fr) auto minmax(250px,1fr);align-items:center;gap:24px;padding:0 24px;border-bottom:1px solid rgb(255 255 255 / 10%);background:radial-gradient(circle at 18% -120%,rgb(72 209 178 / 23%),transparent 45%),var(--navy-900);color:#fff;box-shadow:0 2px 18px #08142729}.brand,.brand-copy,.top-actions,.document-state,.canvas-context,.canvas-context>div,.tool-btn>span:last-child,.setting-row>span,.section-title-row{display:flex}.brand{align-items:center;gap:12px}.brand-mark{position:relative;display:block;width:36px;height:36px;flex:none;border:1px solid rgb(255 255 255 / 24%);border-radius:10px;background:#ffffff12}.brand-mark span{position:absolute;width:12px;height:9px;border:1.5px solid var(--mint-400);border-radius:2px}.brand-mark span:first-child{left:6px;top:7px}.brand-mark span:nth-child(2){right:6px;bottom:7px}.brand-mark i{position:absolute;left:15px;top:16px;width:9px;height:1px;background:#fff;transform:rotate(39deg);transform-origin:left center}.brand-copy{flex-direction:column;gap:2px}.brand-copy strong{font:700 16px/1.2 var(--font-display);letter-spacing:-.02em}.brand-copy small{color:#ffffff9e;font-size:11px}.document-state{align-items:center;gap:8px;padding:7px 12px;border:1px solid rgb(255 255 255 / 12%);border-radius:999px;color:#ffffffb8;background:#050f1f2e;font-size:12px}.state-dot{width:7px;height:7px;border-radius:50%;background:var(--mint-400);box-shadow:0 0 0 4px #48d1b21f}.top-actions{justify-content:flex-end;align-items:center;gap:7px}.btn,.icon-btn,.mini-action,.tool-btn,.setting-row,.text-action,.zoom-controls button,.context-menu button{border:0;cursor:pointer;transition:border-color .15s ease,background .15s ease,color .15s ease,transform .15s ease,opacity .15s ease}.btn{display:inline-flex;min-height:40px;align-items:center;justify-content:center;gap:8px;padding:0 15px;border:1px solid transparent;border-radius:9px;font-weight:600}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn:disabled{cursor:not-allowed;opacity:.42}.btn-primary{background:var(--mint-400);color:var(--navy-950);box-shadow:0 6px 18px #13a3852e}.btn-primary:hover{background:#62dfc2}.btn-quiet{background:transparent;color:#ffffffc2}.btn-quiet:hover{background:#ffffff14;color:#fff}.btn-secondary{border-color:var(--line-strong);background:var(--paper);color:var(--ink)}.btn-secondary:hover{border-color:#aeb9c7;background:var(--warm)}.btn-danger{border-color:#efc7c3;background:var(--danger-soft);color:#a53333}.btn-danger:hover{border-color:#e29c96}.btn-add{width:100%;margin-top:10px;border:1px dashed #b7c5d4;background:#f8fafb;color:var(--navy-700)}.btn-add:hover{border-color:var(--mint-500);background:var(--mint-50);color:#117a66}.icon-btn{width:38px;height:38px;border:1px solid rgb(255 255 255 / 16%);border-radius:50%;background:#ffffff0d;color:#fffc;font-weight:700}.icon-btn:hover{background:#ffffff1f;color:#fff}.workspace{display:flex;min-width:0;min-height:0}.tool-panel{z-index:10;display:flex;width:252px;min-width:252px;flex-direction:column;overflow:auto;border-right:1px solid var(--line);background:var(--paper);box-shadow:6px 0 20px #10223e08}.panel-section{padding:21px 18px;border-bottom:1px solid #edf0f3}.compact-section{padding-top:16px;padding-bottom:17px}.eyebrow{margin:0 0 12px;color:#8190a2;font-size:10px;font-weight:700;letter-spacing:.15em;line-height:1;text-transform:uppercase}.tool-buttons{display:grid;gap:7px}.tool-btn{display:grid;grid-template-columns:36px 1fr;align-items:center;min-height:48px;gap:11px;padding:6px 10px;border:1px solid transparent;border-radius:10px;background:transparent;color:#344259;text-align:left}.tool-btn:hover{background:#f5f7f9}.tool-btn.active{border-color:#bfe9df;background:var(--mint-50);color:#0f6d5a;box-shadow:inset 3px 0 0 var(--mint-500)}.tool-btn>span:last-child{min-width:0;align-items:center;justify-content:space-between;gap:8px}.tool-btn strong{font-size:13px;font-weight:600}.tool-btn small{color:#9aa5b2;font-size:10px}.tool-icon{display:grid;width:30px;height:30px;place-items:center;border-radius:7px;background:#edf1f5;color:var(--navy-700);font-size:16px}.active .tool-icon{background:#d8f3ec;color:#0b826b}.entity-icon:after{width:15px;height:11px;border:1.5px solid currentColor;border-radius:2px;content:""}.association-icon:after{width:16px;height:11px;border:1.5px solid currentColor;border-radius:50%;content:""}.edit-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.mini-action{min-height:34px;padding:0 9px;border:1px solid var(--line);border-radius:8px;background:#fff;color:#5e6b7d;font-size:12px}.mini-action:hover:not(:disabled){border-color:#b8c2ce;background:#f7f9fa;color:var(--ink)}.mini-action:disabled{cursor:not-allowed;opacity:.38}.danger-action{grid-column:1 / -1}.danger-action:not(:disabled){border-color:#f1d1ce;color:var(--danger)}.model-summary dl{display:grid;gap:9px;margin:0}.model-summary dl>div{display:flex;align-items:center;justify-content:space-between}.model-summary dt{color:var(--muted);font-size:12px}.model-summary dd{min-width:27px;margin:0;padding:3px 7px;border-radius:999px;background:#f0f3f6;color:var(--navy-800);font-size:11px;font-weight:700;text-align:center}.canvas-settings{display:grid;gap:2px}.canvas-settings .eyebrow{margin-bottom:7px}.setting-row{display:flex;width:100%;min-height:35px;align-items:center;justify-content:space-between;padding:0;background:transparent;color:#5d6a7d;font-size:12px}.setting-row>span{align-items:center;gap:8px}.setting-icon{display:grid;width:18px;height:18px;place-items:center;font-style:normal}.grid-icon{border:1px solid #aeb9c6;background-image:linear-gradient(90deg,transparent 46%,#c3cbd5 46%,#c3cbd5 54%,transparent 54%),linear-gradient(transparent 46%,#c3cbd5 46%,#c3cbd5 54%,transparent 54%)}.switch{position:relative;width:29px;height:17px;border-radius:99px;background:#cbd3dc}.switch:after{position:absolute;top:3px;left:3px;width:11px;height:11px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000002e;content:"";transition:transform .15s ease}.setting-row.active .switch{background:var(--mint-500)}.setting-row.active .switch:after{transform:translate(12px)}.panel-footer{display:grid;gap:2px;margin-top:auto;padding:12px 14px 16px}.text-action{min-height:36px;padding:0 8px;border-radius:8px;background:transparent;color:var(--navy-700);font-size:12px;text-align:left}.text-action:hover{background:#f2f5f7}.muted-action{color:#8490a0}.canvas-shell{display:grid;min-width:0;min-height:0;flex:1;grid-template-rows:62px minmax(0,1fr);background:var(--canvas)}.canvas-toolbar{z-index:5;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 22px;border-bottom:1px solid var(--line);background:#ffffffde;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.canvas-context{min-width:0;align-items:center;gap:12px}.canvas-context>div{min-width:0;flex-direction:column;gap:2px}.canvas-context strong{color:#28364b;font-family:var(--font-display);font-size:13px}.canvas-context div>span{overflow:hidden;color:#7a8797;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.context-badge{padding:5px 7px;border:1px solid #bddfd7;border-radius:6px;background:var(--mint-50);color:#177762;font-size:9px;font-weight:700;letter-spacing:.09em}.zoom-controls{display:flex;flex:none;align-items:center;overflow:hidden;border:1px solid var(--line-strong);border-radius:9px;background:#fff;box-shadow:var(--shadow-sm)}.zoom-controls button{min-width:34px;height:32px;padding:0 8px;border-right:1px solid var(--line);background:#fff;color:#657286;font-weight:600}.zoom-controls button:hover{background:#f4f7f9;color:var(--navy-800)}.zoom-controls button:last-child{border-right:0}.zoom-controls #zoom-level{min-width:58px;color:#40506a;font-size:11px}.canvas-frame{position:relative;min-width:0;min-height:0;overflow:hidden}#canvas-container{width:100%;height:100%;background:var(--canvas);outline:none}.canvas-legend{position:absolute;z-index:3;right:17px;bottom:15px;display:flex;align-items:center;gap:13px;padding:8px 11px;border:1px solid rgb(203 212 223 / 76%);border-radius:8px;background:#ffffffe0;color:#7b8796;box-shadow:var(--shadow-sm);font-size:10px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.canvas-legend span{display:flex;align-items:center;gap:5px}.legend-entity{width:10px;height:8px;border:1px solid var(--blue-500);border-radius:1px}.legend-association{width:11px;height:8px;border:1px solid var(--mint-500);border-radius:50%}.modal-overlay{position:fixed;z-index:1000;inset:0;display:none;align-items:center;justify-content:center;padding:24px;background:#071224a3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.modal-overlay.active{display:flex;animation:fade-in .15s ease both}@keyframes fade-in{0%{opacity:0}}.modal-content{display:flex;width:min(620px,100%);max-height:min(850px,calc(100vh - 48px));flex-direction:column;overflow:hidden;border:1px solid rgb(255 255 255 / 30%);border-radius:var(--radius-lg);background:var(--paper);box-shadow:var(--shadow-lg);animation:modal-up .18s ease both}.modal-large{width:min(850px,100%)}.help-modal{width:min(780px,100%)}@keyframes modal-up{0%{transform:translateY(10px) scale(.985)}}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:22px 24px 18px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fff,#fcfcfb)}.modal-header .eyebrow{margin-bottom:7px;color:var(--mint-500)}.modal-header h2{margin:0;color:var(--navy-900);font:700 21px/1.2 var(--font-display);letter-spacing:-.025em}.modal-close{display:grid;width:34px;height:34px;place-items:center;border:0;border-radius:50%;background:#f1f4f6;color:#708095;cursor:pointer;font-size:23px;line-height:1}.modal-close:hover{background:#e7ecef;color:var(--ink)}.modal-body{overflow-y:auto;padding:22px 24px}.modal-intro{margin:0 0 18px;color:var(--muted);line-height:1.55}.modal-section+.modal-section{margin-top:24px;padding-top:22px;border-top:1px solid #edf0f2}.modal-label{display:block;margin-bottom:8px;color:#354359;font-size:12px;font-weight:700}.section-title-row{align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:9px}.section-title-row .modal-label{margin:0}.section-title-row>span:last-child{color:#929caa;font-size:10px}.modal-input,.modal-body textarea,.attribute-editor input,.attribute-editor select,.connection-item input,.connection-item select{width:100%;border:1px solid var(--line-strong);border-radius:8px;background:#fff;color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease}.modal-input{height:43px;padding:0 12px}.modal-body textarea{min-height:170px;padding:12px;resize:vertical;font:12px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace}.modal-input:focus,.modal-body textarea:focus,.attribute-editor input:focus,.attribute-editor select:focus,.connection-item input:focus,.connection-item select:focus{border-color:var(--blue-500);box-shadow:0 0 0 3px #3975d71a;outline:none}.file-picker{display:flex;min-height:48px;align-items:center;justify-content:center;margin:0 0 18px;border:1px dashed #aebccc;border-radius:9px;background:#f8fafb;color:var(--navy-700);cursor:pointer;font-weight:600}.file-picker:hover{border-color:var(--mint-500);background:var(--mint-50)}.file-picker input{position:absolute;width:1px;height:1px;opacity:0}.form-error{min-height:18px;margin:7px 0 0;color:var(--danger);font-size:12px}.modal-footer{display:flex;justify-content:flex-end;gap:9px;padding:16px 24px;border-top:1px solid var(--line);background:#fafbf9}.split-footer{display:grid;grid-template-columns:auto 1fr auto auto}.attributes-container{display:grid;gap:9px}.attribute-editor{overflow:hidden;border:1px solid var(--line);border-radius:10px;background:#fcfdfd}.attribute-editor-header{display:grid;grid-template-columns:30px minmax(150px,1fr) 31px 31px 31px;align-items:center;gap:6px;padding:9px;border-bottom:1px solid #edf0f3;background:#fff}.attribute-order{color:#98a3b1;font:600 10px/1 ui-monospace,SFMono-Regular,monospace;text-align:center}.attr-name-input{height:34px;padding:0 9px;font-weight:600}.btn-icon{width:31px;height:31px;padding:0;border:1px solid var(--line);border-radius:7px;background:#fff;color:#778496;cursor:pointer}.btn-icon:hover:not(:disabled){border-color:#b3bfcc;background:#f4f7f8;color:var(--ink)}.btn-icon:disabled{cursor:not-allowed;opacity:.3}.btn-delete-attr,.btn-delete-conn{color:var(--danger)}.attribute-editor-body{display:grid;grid-template-columns:minmax(150px,.8fr) 1fr minmax(180px,1.1fr);gap:11px;padding:11px}.attr-row{display:flex;min-width:0;align-items:center;gap:7px}.attr-row>label{flex:none;color:#7b8796;font-size:10px;font-weight:700}.attr-row select,.attr-row input[type=text]{min-width:0;height:34px;padding:0 8px;font-size:11px}.attr-checkboxes{justify-content:center;gap:9px;padding:0 7px;border-right:1px solid #e8ecef;border-left:1px solid #e8ecef}.attr-checkboxes label{display:flex;align-items:center;gap:4px;color:#536176;font-size:10px;cursor:pointer}.attr-checkboxes input{accent-color:var(--mint-500)}.attr-enum-section{grid-column:1 / -1;padding-top:7px;border-top:1px solid #edf0f2}.attr-enum-section>label{display:block;margin-bottom:7px;color:#7b8796;font-size:10px;font-weight:700}.attr-enum-tags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:7px}.enum-tag{display:inline-flex;align-items:center;gap:4px;padding:4px 7px;border-radius:999px;background:var(--blue-100);color:#315e9f;font-size:10px}.enum-tag-remove{display:grid;width:14px;height:14px;padding:0;place-items:center;border:0;border-radius:50%;background:#315e9f1a;color:inherit;cursor:pointer;line-height:1}.attr-enum-input{height:34px;padding:0 9px}.connections-container{display:grid;gap:8px}.connection-item{display:grid;grid-template-columns:minmax(110px,.8fr) minmax(170px,1.3fr) minmax(130px,1fr) 34px;align-items:center;gap:8px;padding:10px;border:1px solid var(--line);border-radius:9px;background:#fcfdfd}.connection-item strong{overflow:hidden;color:var(--navy-800);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.connection-item select,.connection-item input{height:34px;padding:0 8px;font-size:11px}.no-connections,.no-attributes{margin:0;padding:18px;border:1px dashed var(--line-strong);border-radius:9px;color:#8b96a4;background:#fafbfb;font-size:12px;text-align:center}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.help-grid section{position:relative;min-height:145px;padding:20px;border:1px solid var(--line);border-radius:12px;background:#fcfdfd}.help-grid h3{margin:0 0 8px;color:var(--navy-800);font:700 14px/1.3 var(--font-display)}.help-grid p{margin:0;color:var(--muted);font-size:12px;line-height:1.6}.help-step{display:inline-block;margin-bottom:15px;color:var(--mint-500);font:700 11px/1 var(--font-display);letter-spacing:.08em}.help-grid .shortcut-card{grid-column:1 / -1;min-height:0;background:var(--navy-900)}.shortcut-card h3{color:#fff}.shortcut-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;color:#ffffffad;font-size:11px}kbd{padding:2px 5px;border:1px solid #d8dee5;border-radius:4px;background:#f5f7f8;color:#58667a;font:600 9px/1.2 ui-monospace,SFMono-Regular,monospace;box-shadow:0 1px #cbd3dc}.context-menu{position:fixed;z-index:1100;display:none;min-width:178px;overflow:hidden;padding:6px;border:1px solid var(--line-strong);border-radius:10px;background:#fff;box-shadow:0 14px 34px #0a19312e}.context-menu button{display:flex;width:100%;min-height:34px;align-items:center;justify-content:space-between;padding:0 9px;border-radius:6px;background:#fff;color:#46546a;font-size:12px;text-align:left}.context-menu button:hover{background:#f2f5f7;color:var(--ink)}.context-menu .danger-menu-item{color:var(--danger)}.context-menu kbd{margin-left:20px;border:0;background:transparent;box-shadow:none}.toast{position:fixed;z-index:1400;left:50%;bottom:24px;max-width:min(420px,calc(100vw - 32px));padding:10px 15px;border:1px solid rgb(255 255 255 / 14%);border-radius:999px;background:var(--navy-950);color:#fff;box-shadow:0 10px 30px #0612253d;font-size:12px;opacity:0;pointer-events:none;transform:translate(-50%,12px);transition:opacity .16s ease,transform .16s ease}.toast.visible{opacity:1;transform:translate(-50%)}.noscript{position:fixed;z-index:3000;inset:0;display:grid;place-items:center;background:var(--navy-950);color:#fff}@media(max-width:1040px){.topbar{grid-template-columns:1fr auto}.document-state{display:none}.tool-panel{width:218px;min-width:218px}.canvas-legend span:nth-last-child(-n+2){display:none}.attribute-editor-body{grid-template-columns:1fr 1fr}.attr-checkboxes{border-right:0}.attr-row:last-of-type{grid-column:1 / -1}}@media(max-width:720px){html,body{overflow:auto}.app-shell{min-width:360px;height:auto;min-height:100%;grid-template-rows:auto auto}.topbar{position:sticky;top:0;grid-template-columns:1fr auto;min-height:66px;padding:10px 13px}.brand-copy small,#btn-example{display:none}.top-actions .btn{width:38px;min-height:38px;padding:0}.top-actions .btn span:last-child{display:none}.workspace{min-height:calc(100vh - 66px);flex-direction:column}.tool-panel{position:relative;width:100%;min-width:0;overflow:visible;border-right:0;border-bottom:1px solid var(--line)}.tool-panel .panel-section:first-child{padding:9px 10px}.tool-panel .eyebrow,.tool-panel .compact-section,.tool-panel .model-summary,.tool-panel .canvas-settings,.panel-footer{display:none}.tool-buttons{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.tool-btn{min-width:0;grid-template-columns:27px minmax(0,1fr);min-height:42px;gap:4px;padding:4px 5px}.tool-btn strong{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.tool-btn small{display:none}.tool-icon{width:27px;height:27px}.canvas-shell{min-height:620px;grid-template-rows:58px 560px}.canvas-toolbar{padding:0 10px}.canvas-context div>span{display:none}.canvas-context strong{display:block;max-width:128px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zoom-controls .fit-btn,.canvas-legend{display:none}.modal-overlay{align-items:flex-end;padding:0}.modal-content,.modal-large,.help-modal{width:100%;max-height:92vh;border-radius:18px 18px 0 0}.modal-header,.modal-body{padding-right:17px;padding-left:17px}.modal-footer{padding:13px 17px}.attribute-editor-header{grid-template-columns:24px minmax(100px,1fr) 29px 29px 29px}.attribute-editor-body{grid-template-columns:1fr}.attr-checkboxes{justify-content:flex-start;border:0}.attr-row:last-of-type{grid-column:auto}.connection-item{grid-template-columns:1fr 34px}.connection-item strong,.connection-item select,.connection-item input{grid-column:1}.connection-item .btn-delete-conn{grid-column:2;grid-row:1}.help-grid{grid-template-columns:1fr}.help-grid .shortcut-card{grid-column:auto}.shortcut-grid,.split-footer{grid-template-columns:1fr 1fr}.split-footer span{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
