@font-face{font-family:Poppins;font-style:normal;font-weight:400;src:url(./pxiEyp8kv8JHgFVrJJnecmNE-by3JarPu.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Poppins;font-style:normal;font-weight:400;src:url(./pxiEyp8kv8JHgFVrJJfecg-cpxAROuN.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Poppins;font-style:normal;font-weight:600;src:url(./pxiByp8kv8JHgFVrLEj6Z1JlFc-K-CAhIAdZj.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Poppins;font-style:normal;font-weight:600;src:url(./pxiByp8kv8JHgFVrLEj6Z1xlFQ-zEkxB9Mr.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Poppins;font-style:normal;font-weight:700;src:url(./pxiByp8kv8JHgFVrLCz7Z1JlFc-K-cby-RkWa.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Poppins;font-style:normal;font-weight:700;src:url(./pxiByp8kv8JHgFVrLCz7Z1xlFQ-Qrb0O0WB.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}body{color:#fff;background:linear-gradient(135deg,#1f2937 0%,#374151 50%,#1e3a8a 100%);margin:0;padding:0;font-family:Poppins,sans-serif;overflow:hidden}.navbar{z-index:200;background:#0f172a;border-bottom:1px solid #ffffff14;align-items:center;gap:6px;height:52px;padding:0 8px;display:flex;position:fixed;top:0;left:0;right:0;box-shadow:0 2px 12px #0006}.navbar-brand{letter-spacing:-.3px;color:#f8fafc;white-space:nowrap;flex-shrink:0;margin-right:4px;font-size:1.05rem;font-weight:700}.desktop-menu{flex:1;align-items:center;gap:2px;min-width:0;display:flex}.menu-category{flex-shrink:0;position:relative}.menu-category:after{content:"";width:100%;height:8px;position:absolute;top:100%;left:0}.menu-category-btn{cursor:pointer;color:#cbd5e1;white-space:nowrap;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:6px;align-items:center;gap:5px;padding:4px 10px;font-size:.82rem;font-weight:500;transition:background .15s,color .15s;display:flex}.menu-category-btn:hover,.menu-category.open .menu-category-btn{color:#f8fafc;background:#ffffff1a}.menu-category-btn svg{stroke:currentColor;flex-shrink:0;width:16px;height:16px}.menu-dropdown{z-index:300;background:#1e293b;border:1px solid #ffffff1a;border-radius:10px;flex-direction:column;gap:2px;min-width:210px;padding:6px;display:none;position:absolute;top:calc(100% + 8px);left:0;box-shadow:0 8px 32px #00000080}.menu-category:hover .menu-dropdown,.menu-category.open .menu-dropdown{display:flex}.menu-item{cursor:pointer;color:#e2e8f0;white-space:nowrap;border-radius:7px;align-items:center;gap:10px;padding:8px 12px;font-size:.83rem;transition:background .12s;display:flex}.menu-item:hover{color:#f8fafc;background:#ffffff17}.menu-item svg{stroke:currentColor;color:#94a3b8;flex-shrink:0;width:18px;height:18px;transition:color .12s}.menu-item:hover svg{color:#e2e8f0}.menu-group-label{letter-spacing:.08em;text-transform:uppercase;color:#64748b;pointer-events:none;-webkit-user-select:none;user-select:none;padding:8px 12px 4px;font-size:.67rem;font-weight:700}.notation-option{white-space:normal!important;align-items:flex-start!important;gap:8px!important;padding:7px 12px!important}.notation-check{color:#22c55e;opacity:0;flex-shrink:0;width:16px;margin-top:1px;font-size:.9rem;transition:opacity .15s}.notation-option[aria-checked=true] .notation-check{opacity:1}.notation-option[aria-checked=true]{background:#ffffff0f}.notation-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.notation-name{color:#e2e8f0;font-size:.82rem;font-weight:600;line-height:1.3}.notation-year{color:#94a3b8;font-weight:400}.notation-desc{color:#64748b;font-size:.7rem;line-height:1.3}.notation-option[aria-checked=true] .notation-name{color:#f8fafc}.notation-option[aria-checked=true] .notation-desc{color:#94a3b8}.notation-tag{letter-spacing:.05em;color:#fff;border-radius:4px;flex-shrink:0;align-self:center;margin-top:0;padding:2px 5px;font-size:.6rem;font-weight:700}.navbar-separator{background:#ffffff26;flex-shrink:0;width:1px;height:28px;margin:0 4px}.tools-strip{scrollbar-width:none;-ms-overflow-style:none;flex:1;align-items:center;gap:3px;min-width:0;padding:0 2px;display:flex;overflow-x:auto}.tools-strip::-webkit-scrollbar{display:none}.main-menu-item{cursor:pointer;color:#fff;white-space:nowrap;-webkit-user-select:none;user-select:none;border:none;border-radius:7px;flex-shrink:0;align-items:center;gap:5px;padding:4px 10px;font-size:.78rem;font-weight:600;line-height:1;transition:transform .1s,box-shadow .1s,filter .1s;display:flex}.main-menu-item:hover{filter:brightness(1.15);transform:translateY(-1px);box-shadow:0 4px 12px #0006}.main-menu-item:active{filter:brightness(.95);transform:translateY(0)}.main-menu-item svg{stroke:currentColor;flex-shrink:0;width:16px;height:16px}.entity-btn{background:linear-gradient(135deg,#3b82f6,#1d4ed8)}.attribute-btn{background:linear-gradient(135deg,#10b981,#065f46)}.derived-btn{background:linear-gradient(135deg,#f59e0b,#b45309)}.multivalued-btn{background:linear-gradient(135deg,#06b6d4,#0e7490)}.relationship-btn{background:linear-gradient(135deg,#ec4899,#7c3aed)}.specialization-btn{background:linear-gradient(135deg,#eab308,#a16207)}.aggregation-btn{background:linear-gradient(135deg,#8b5cf6,#6d28d9)}.postit-btn{background:linear-gradient(135deg,#fbbf24,#d97706)}canvas{background:#fff;margin-top:52px;display:block}.menu-item:focus-visible,.menu-category-btn:focus-visible,.main-menu-item:focus-visible,.toolbar-button:focus-visible,button:focus-visible{outline-offset:2px;outline:2px solid #60a5fa}.tooltip{position:relative}.tooltip .tooltip-text{visibility:hidden;color:#f1f5f9;text-align:center;z-index:9000;opacity:0;white-space:normal;pointer-events:none;background:#0f172af2;border-radius:7px;width:max-content;max-width:240px;padding:6px 12px;font-size:.8rem;transition:opacity .2s;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0006}.tooltip:hover .tooltip-text{visibility:visible;opacity:1}.mobile-toggle{cursor:pointer;color:#cbd5e1;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:6px;transition:background .15s;display:none}.mobile-toggle:hover{background:#ffffff1a}#mobile-sidebar{z-index:190;background:#0f172a;border-right:1px solid #ffffff14;width:290px;height:calc(100vh - 52px);padding:12px;transition:left .25s cubic-bezier(.4,0,.2,1);position:fixed;top:52px;left:-290px;overflow-y:auto;box-shadow:4px 0 24px #0006}#mobile-sidebar.open{left:0}.mobile-menu-section{margin-bottom:16px}.mobile-menu-title{color:#64748b;text-transform:uppercase;letter-spacing:.8px;margin-bottom:6px;padding:0 8px;font-size:.7rem;font-weight:600}.mobile-menu-button{cursor:pointer;color:#e2e8f0;border-radius:8px;align-items:center;gap:12px;margin-bottom:2px;padding:10px 12px;font-size:.87rem;transition:background .15s;display:flex}.mobile-menu-button:hover{background:#ffffff14}.toolbar-button{border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;transition:transform .15s,box-shadow .15s;display:flex}.toolbar-button:hover{transform:scale(1.08);box-shadow:0 4px 16px #00000080}.tool-entity{background:linear-gradient(135deg,#3b82f6,#1d4ed8)}.tool-attribute{background:linear-gradient(135deg,#10b981,#065f46)}.tool-derived{background:linear-gradient(135deg,#f59e0b,#b45309)}.tool-multivalued{background:linear-gradient(135deg,#06b6d4,#0e7490)}.tool-relationship{background:linear-gradient(135deg,#ec4899,#7c3aed)}.tool-specialization{background:linear-gradient(135deg,#eab308,#a16207)}.tool-aggregation{background:linear-gradient(135deg,#8b5cf6,#6d28d9)}.tool-postit{background:linear-gradient(135deg,#fbbf24,#d97706)}.tool-increase,.tool-decrease{background:linear-gradient(135deg,#6b7280,#374151)}.tool-undo,.tool-redo{background:linear-gradient(135deg,#6366f1,#4338ca)}.tool-clear{background:linear-gradient(135deg,#ef4444,#b91c1c)}.tool-save{background:linear-gradient(135deg,#10b981,#065f46)}.tool-open{background:linear-gradient(135deg,#f59e0b,#b45309)}.tool-export{background:linear-gradient(135deg,#3b82f6,#1d4ed8)}#autosave-indicator{-webkit-backdrop-filter:blur(4px);transition:opacity .3s}.submenu{z-index:1050;background:#1e293b;border:1px solid #ffffff1a;border-radius:10px;flex-direction:column;gap:2px;min-width:180px;padding:6px;display:flex;position:fixed;box-shadow:0 8px 32px #00000080}.submenu-item{cursor:pointer;color:#e2e8f0;border-radius:7px;align-items:center;gap:8px;padding:8px 12px;font-size:.83rem;transition:background .12s;display:flex}.submenu-item:hover{background:#ffffff17}.submenu-item svg{flex-shrink:0;width:16px;height:16px}#sidePanel{scrollbar-width:thin;scrollbar-color:#374151 transparent}#extraButtons{opacity:0;transition:opacity .25s,transform .25s;transform:translateY(10px)}@media (width<=768px){.navbar .desktop-menu{display:none}.mobile-toggle{display:flex}canvas{margin-top:52px}#minimap,#credits{display:none!important}}@media (width>=769px){.mobile-toggle{display:none}#mobile-sidebar{display:none!important}}@media (width<=1199px) and (width>=769px){.main-menu-item span:not(.tooltip-text){display:none}.main-menu-item{padding:5px 8px}.main-menu-item svg{width:18px;height:18px}}#loadModal{transition:opacity .3s}#loadModal.hidden{opacity:0;pointer-events:none}.postit{cursor:pointer;background-color:#ff8;border:1px solid #e6e600;padding:10px;transition:transform .2s;box-shadow:2px 2px 5px #0003}.postit:hover{transform:scale(1.05)}#credits{color:#64748b;background:#0f172ad9;border:1px solid #ffffff0f;font-size:.72rem}#notation-badge{z-index:40;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none;-webkit-user-select:none;user-select:none;background:#0f172ad1;border:1px solid #ffffff1f;border-radius:10px;align-items:center;gap:7px;padding:6px 12px 6px 8px;transition:background .25s;display:flex;position:fixed;top:64px;right:14px;box-shadow:0 2px 12px #00000059}#notation-badge-tag{letter-spacing:.06em;color:#fff;background:#3b82f6;border-radius:5px;flex-shrink:0;padding:2px 6px;font-size:.65rem;font-weight:700;line-height:1.4;transition:background .25s}#notation-badge-label{color:#e2e8f0;white-space:nowrap;font-size:.76rem;font-weight:600;line-height:1.3}#notation-badge-sub{color:#94a3b8;white-space:nowrap;font-size:.65rem;line-height:1.3}#notation-badge.notation-chen #notation-badge-tag{background:#3b82f6}#notation-badge.notation-crow #notation-badge-tag{background:#10b981}@media (width<=480px){#notation-badge-sub{display:none}#notation-badge-label{font-size:.7rem}}@media print{.navbar,#mobile-sidebar,#sidePanel,#minimap,#credits,#validationDock,#viewControls,#canvasHints,.fixed,#notation-badge{display:none!important}canvas{margin-top:0!important}body{background:#fff;overflow:visible}}#validationDock{z-index:65;color:#e5e7eb;background:#111827f5;border:1px solid #374151;border-radius:10px;flex-direction:column;width:320px;max-height:min(340px,100vh - 268px);font-size:13px;transition:border-color .2s;display:flex;position:fixed;bottom:204px;left:12px;overflow:hidden;box-shadow:0 8px 24px #00000059}#validationDock[data-severity=error]{border-color:#7f1d1d}#validationDock[data-severity=warning]{border-color:#78350f}#validationDock[data-severity=clean]{border-color:#14532d}#validationDockHeader{cursor:pointer;-webkit-user-select:none;user-select:none;background:#1f2937e6;border-bottom:1px solid #374151;flex-shrink:0;align-items:center;gap:8px;padding:8px 10px;display:flex}#validationDock.collapsed #validationDockHeader{border-bottom:none}#validationDockIcon{font-size:14px;line-height:1}#validationDock[data-severity=error] #validationDockIcon{color:#f87171}#validationDock[data-severity=warning] #validationDockIcon{color:#fbbf24}#validationDock[data-severity=info] #validationDockIcon{color:#60a5fa}#validationDock[data-severity=clean] #validationDockIcon{color:#34d399}#validationDockTitle{white-space:nowrap;text-overflow:ellipsis;flex:1;font-weight:600;overflow:hidden}#validationDockCounts{flex-shrink:0;gap:4px;display:flex}#validationDockCounts .vc{border-radius:999px;align-items:center;gap:3px;padding:1px 6px;font-size:11px;font-weight:600;line-height:1.5;display:inline-flex}#validationDockCounts .vc-error{color:#fca5a5;background:#ef44442e}#validationDockCounts .vc-warning{color:#fcd34d;background:#f59e0b2e}#validationDockCounts .vc-info{color:#93c5fd;background:#3b82f62e}#validationDockToggle{color:#9ca3af;cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:2px 4px;font-size:14px;line-height:1;transition:transform .2s,color .15s}#validationDockToggle:hover{color:#e5e7eb;background:#ffffff0f}#validationDock.collapsed #validationDockToggle{transform:rotate(-90deg)}#validationDockBody{overscroll-behavior:contain;overflow-y:auto}#validationDock.collapsed #validationDockBody{display:none}#validationDockList{margin:0;padding:4px;list-style:none}#validationDockList li{cursor:pointer;border-left:3px solid #0000;border-radius:6px;align-items:flex-start;gap:8px;padding:7px 8px;transition:background .12s;display:flex}#validationDockList li:hover{background:#ffffff0d}#validationDockList li.sev-error{border-left-color:#ef4444}#validationDockList li.sev-warning{border-left-color:#f59e0b}#validationDockList li.sev-info{border-left-color:#3b82f6}#validationDockList .v-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px;margin-top:5px}#validationDockList .sev-error .v-dot{background:#ef4444}#validationDockList .sev-warning .v-dot{background:#f59e0b}#validationDockList .sev-info .v-dot{background:#3b82f6}#validationDockList .v-text{min-width:0}#validationDockList .v-title{color:#f3f4f6;margin-bottom:1px;font-size:12px;font-weight:600}#validationDockList .v-title .v-rule{color:#6b7280;margin-left:4px;font-size:10px;font-weight:500}#validationDockList .v-where{color:#9ca3af;white-space:nowrap;text-overflow:ellipsis;font-size:11px;display:block;overflow:hidden}#validationDockList .v-msg{display:none}#validationDockList li.expanded .v-msg{color:#9ca3af;border-top:1px solid #ffffff14;margin-top:5px;padding-top:5px;font-size:11.5px;line-height:1.45;display:block}#validationDockEmpty{color:#6ee7b7;padding:12px 10px;font-size:12px}#viewControls{z-index:64;background:#111827eb;border:1px solid #374151;border-radius:8px;align-items:center;gap:2px;padding:3px;display:flex;position:fixed;top:110px;right:12px;box-shadow:0 4px 12px #0000004d}#viewControls button{color:#d1d5db;cursor:pointer;background:0 0;border:none;border-radius:5px;padding:6px 9px;font-size:15px;font-weight:600;line-height:1;transition:background .12s,color .12s}#viewControls button:hover{color:#fff;background:#ffffff17}#viewControls #btnZoomLevel{font-variant-numeric:tabular-nums;color:#9ca3af;min-width:52px;font-size:12px}#viewControls .view-sep{background:#374151;align-self:stretch;width:1px;margin:3px 2px}#canvasHints{color:#cbd5e1;z-index:63;pointer-events:none;white-space:nowrap;background:#0f172af0;border:1px solid #64748b8c;border-radius:999px;align-items:center;gap:7px;padding:6px 14px;font-size:12px;transition:border-color .25s;display:flex;position:fixed;bottom:10px;left:50%;transform:translate(-50%);box-shadow:0 4px 14px #00000059}#canvasHints .hint{align-items:center;gap:6px;display:inline-flex}#canvasHints .hint em{color:#7dd3fc;font-style:normal;font-weight:500}#canvasHints .hint-dot{color:#64748b}#canvasHints kbd{color:#fff;background:#475569;border:1px solid #64748b;border-bottom-width:2px;border-radius:4px;padding:2px 6px;font-family:inherit;font-size:11px;font-weight:700;line-height:1.4}#canvasHints.pan-active{border-color:#3b82f6}#canvasHints.pan-active #hintPan kbd{background:#2563eb;border-color:#60a5fa}#canvasHints.pan-active #hintPan em{color:#bae6fd}@media (width<=1200px){#credits{display:none}}@media (width<=900px){#canvasHints #hintMiddle,#canvasHints .hint-dot:last-of-type{display:none}}@media (width<=768px){#validationDock{width:auto;max-height:34vh;bottom:12px;left:8px;right:76px}#canvasHints{display:none!important}#viewControls{top:62px;right:8px}}
