.db-map{background:white;border:1px solid #dce3ec;border-radius:12px;overflow:hidden;display:flex;flex-direction:column;min-width:0}.map-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;gap:12px}.map-header h2{font-size:18px;color:#172b4d;font-weight:700}.map-header p{font-size:12px;color:#64748b;margin-top:6px}.map-version{font-size:12px;color:#64748b}.map-topbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px 20px;border-top:1px solid #eef2f6;border-bottom:1px solid #e2e8f0}.map-search{display:flex;align-items:center;gap:9px;padding:8px 12px;border:1px solid #dce3ec;border-radius:7px;color:#64748b}.map-search input{border:0;outline:none;width:165px;font-size:12px;color:#334155;background:transparent}.map-topbar select{border:1px solid #dce3ec;padding:8px 10px;background:white;border-radius:7px;font-size:12px}.map-legend{display:flex;align-items:center;gap:14px;font-size:11px;color:#475569;margin-left:auto}.map-legend i{width:7px;height:7px;display:inline-block;border-radius:50%;margin-right:5px}.map-legend .green{background:#0d9488}.map-legend .blue{background:#3b82f6}.map-legend .amber{background:#d97706}.map-legend .violet{background:#8b5cf6}.map-workspace{position:relative;height:clamp(600px,calc(100vh - 230px),900px);min-height:500px;background:#f7f9fc}.map-viewport{height:100%;width:100%;overflow:hidden;touch-action:none;cursor:grab;background-image:radial-gradient(#cbd5e1 .8px,transparent .8px);background-size:20px 20px}.map-viewport.dragging{cursor:grabbing}.map-stage{position:relative;width:1120px;height:740px;transform-origin:0 0;will-change:transform}.map-edges{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.map-edges path{stroke:#a8b7ca;stroke-width:1.5;fill:none}.map-edges text{fill:#64748b;font-size:11px;font-weight:600;paint-order:stroke;stroke:#f7f9fc;stroke-width:6px;stroke-linejoin:round}.map-edges .selected path{stroke:#0d9488;stroke-width:2.5}.map-node{position:absolute;width:270px;height:163px;border:1px solid #d8e1ec;border-radius:10px;background:white;box-shadow:0 4px 12px #3341550b;padding:0;text-align:left;cursor:pointer;color:#334155;overflow:hidden}.map-node:hover,.map-node.selected{border-color:var(--map-tone);box-shadow:0 6px 18px #33415518}.map-node.dim{opacity:.24}.map-node.green{--map-tone:#0f766e;--map-tint:#eefbf7}.map-node.blue{--map-tone:#2563eb;--map-tint:#eff6ff}.map-node.amber{--map-tone:#b45309;--map-tint:#fffbeb}.map-node.violet{--map-tone:#7c3aed;--map-tint:#f5f3ff}.map-node-title{display:flex;align-items:center;gap:10px;padding:11px 14px;background:var(--map-tint);border-bottom:1px solid #eef2f6}.map-node-title strong{display:block;font-size:13px;font-weight:700;color:#24364b}.map-node-title small{display:block;font-size:10px;color:#64748b;margin-top:3px}.map-node-icon{display:flex;align-items:center;justify-content:center;width:30px;height:30px;background:white;border-radius:7px;color:var(--map-tone);font-size:13px}.map-fields{padding:8px 13px}.map-fields>div{display:flex;gap:7px;align-items:center;font-size:11px;line-height:21px}.map-fields em{font-style:normal;color:#7b8ba0;font-size:9px;margin-left:auto}.map-key{font-size:9px;color:#94a3b8;width:17px;text-align:center;flex-shrink:0}.map-key.pk{color:#b45309;font-weight:700}.map-key.fk{color:#2563eb;font-weight:700}.map-node-foot{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #f1f5f9;padding:5px 13px;font-size:9px;color:#64748b;background:#fcfdff}.map-node-foot i{font-size:8px}.map-zoom{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);display:flex;align-items:center;padding:4px;gap:2px;border:1px solid #dce3ec;border-radius:9px;background:white;box-shadow:0 5px 16px #33415510}.map-zoom button{border:0;background:transparent;padding:9px 12px;color:#334155;cursor:pointer;font-size:12px;border-radius:6px;white-space:nowrap}.map-zoom button:hover{background:#f1f5f9}.map-zoom>span{height:20px;width:1px;background:#e2e8f0;margin:0 4px}.map-help{position:absolute;bottom:24px;left:20px;color:#64748b;font-size:10px;pointer-events:none}.map-help i{margin-right:5px}.map-footer{padding:12px 20px;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:11px;color:#64748b;border-top:1px solid #e2e8f0}.map-footer b{font-size:10px;font-weight:700;margin:0 6px;color:#475569}.map-details{position:absolute;right:12px;top:12px;bottom:68px;width:340px;padding:20px;overflow:auto;background:white;border:1px solid #dce3ec;border-radius:10px;box-shadow:0 10px 26px #33415516;z-index:5}.map-details[hidden]{display:none}.map-details header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.map-details header button{border:0;background:#f1f5f9;border-radius:6px;padding:7px 9px;cursor:pointer}.map-detail-icon{font-size:18px;color:#0d9488}.map-details h3{font-size:17px;margin:0 0 6px}.map-note{font-size:12px;color:#64748b;line-height:1.8;margin:8px 0}.map-details h4{font-size:12px;margin:22px 0 10px}.map-details h4 span{font-weight:400;color:#64748b;margin-left:7px}.map-relation-row{font-size:11px;padding:10px 0;border-top:1px solid #eef2f6}.map-relation-row strong{font-weight:600;display:block;line-height:1.7}.map-relation-row span{color:#64748b;display:block;margin-top:4px}.map-details>.btn{margin-top:16px}.map-sample-scroll{overflow:auto}.map-sample-scroll table{width:100%;font-size:10px;border-collapse:collapse}.map-sample-scroll th{background:#f8fafc;color:#475569;text-align:left;font-size:10px;white-space:nowrap;padding:8px}.map-sample-scroll td{font-size:10px;padding:9px 8px;border-bottom:1px solid #eef2f6;color:#334155;max-width:135px;overflow-wrap:anywhere;white-space:normal;line-height:1.7}.map-tooltip{position:fixed;z-index:200;width:344px;max-width:calc(100vw - 24px);padding:15px;border:1px solid #dce3ec;border-radius:10px;background:white;box-shadow:0 10px 30px #33415526;pointer-events:none}.map-tooltip strong{font-size:13px;display:block;color:#172b4d}.map-tooltip>span,.map-tooltip small{display:block;font-size:10px;color:#64748b;margin:7px 0}.db-map:fullscreen{height:100vh;border-radius:0}.db-map:fullscreen .map-workspace{flex:1;height:auto}.map-viewport:focus-visible{outline:2px solid #2563eb;outline-offset:-3px}.map-stage button:focus-visible{outline:3px solid #2563eb;outline-offset:2px}
@media(max-width:1200px){.map-legend{display:none}.map-help{display:none}.map-topbar>[data-map-action]{margin-left:auto}}
@media(max-width:760px){.map-header{padding:16px}.map-header h2{font-size:16px}.map-version{display:none}.map-topbar{padding:10px;gap:8px}.map-search{flex:1;min-width:0}.map-search input{width:100%;min-width:0}.map-topbar select{max-width:155px}.map-topbar>[data-map-action]{margin:0}.map-workspace{height:580px;min-height:480px}.map-details{width:calc(100% - 20px);left:10px;right:10px;bottom:65px}.map-footer{padding:12px;font-size:10px}.map-zoom button{padding:9px 10px}}
