﻿*{margin:0;padding:0;box-sizing:border-box}:root{--bg-dark:#3c453e;--bg-card:#333944;--bg-header:#2b2d3a;--accent:#d7b47c;--accent-hover:#e3c38c;--text-primary:#f2e6c8;--text-secondary:#c9c1ae;--border:#4a4f52}body{font-family:"Cinzel","Trajan Pro","Palatino Linotype","Book Antiqua",serif;background:var(--bg-dark);color:var(--text-primary);min-height:100vh}header{background:linear-gradient(135deg,var(--bg-header),var(--bg-card));padding:1rem 2rem;border-bottom:2px solid var(--accent);display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.75rem}.header-content h1{font-size:2rem;color:var(--accent);text-shadow:0 0 10px rgba(233,69,96,.5)}.subtitle{color:var(--text-secondary);font-size:.9rem}nav{display:flex;gap:.5rem}.nav-btn{background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border);padding:.75rem 1.5rem;cursor:pointer;font-size:1rem;border-radius:4px;transition:all .2s}.nav-btn:hover{background:var(--bg-header);border-color:var(--accent)}.nav-btn.active{background:var(--accent);border-color:var(--accent)}main{padding:1.5rem;max-width:1800px;margin:0 auto}.view{display:none}.view.active{display:block}.controls{display:flex;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.controls input,.controls select{padding:.75rem 1rem;background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);border-radius:4px;font-size:1rem}.controls input{flex:1;min-width:200px}.controls input:focus,.controls select:focus{outline:none;border-color:var(--accent)}.map-stats{margin-bottom:1rem;color:var(--text-secondary)}.map-list{display:flex;flex-direction:column;gap:2px}.map-list-header{display:grid;grid-template-columns:80px 1fr 150px 120px 100px;gap:1rem;padding:.75rem 1rem;background:var(--bg-header);border:1px solid var(--border);border-radius:4px 4px 0 0;font-weight:700;color:var(--accent);font-size:.85rem}.map-list-row{display:grid;grid-template-columns:80px 1fr 150px 120px 100px;gap:1rem;padding:.6rem 1rem;background:var(--bg-card);border:1px solid var(--border);border-top:none;cursor:pointer;transition:all .15s;align-items:center}.map-list-row:hover{background:var(--bg-header);border-color:var(--accent)}.map-list-row:last-child{border-radius:0 0 4px 4px}.map-list-id{color:var(--accent);font-weight:700;font-family:monospace}.map-list-name{color:var(--text-primary);display:flex;flex-direction:column;gap:.2rem;min-width:0}.map-list-size,.map-list-warps,.map-list-connections{color:var(--text-secondary);font-size:.9rem}@media(max-width:768px){.map-list-header,.map-list-row{grid-template-columns:60px 1fr 80px}.map-list-warps,.map-list-connections{display:none}}.world-map-controls{display:flex;gap:.5rem;margin-bottom:1rem;align-items:center}.world-map-controls button{background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border);padding:.5rem 1rem;cursor:pointer;border-radius:4px;font-size:1.2rem;min-width:40px}.world-map-controls button:hover{background:var(--bg-header);border-color:var(--accent)}.world-map-controls input{padding:.5rem 1rem;background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);border-radius:4px;margin-left:auto;width:150px}
.zoom-indicator{padding:.5rem .75rem;background:var(--bg-header);border:1px solid var(--border);border-radius:4px;color:var(--accent);font-size:.9rem;font-family:monospace;min-width:60px;text-align:center}#world-container{width:100%;height:calc(100vh - 200px);min-height:500px;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;overflow:hidden;position:relative}#world-svg{width:100%;height:100%;cursor:grab}#world-canvas{width:100%;height:100%;display:block;cursor:grab}#world-canvas:active{cursor:grabbing}#world-svg:active{cursor:grabbing}#world-svg .map-node-thumb{pointer-events:none;filter:saturate(1.05) contrast(1.05)}#world-svg .map-node-frame{fill:none;stroke:var(--accent);stroke-width:2;pointer-events:none;transition:stroke .2s,stroke-width .2s}#world-svg .map-node-group:hover .map-node-frame{stroke:var(--accent-hover);stroke-width:3}#world-svg .map-node-group.highlighted .map-node-frame{stroke:#fff;stroke-width:3}#world-svg .connection-line{stroke:#e945604d;stroke-width:1;fill:none}#world-svg .map-label{fill:#f2e6c8;font-size:12px;font-weight:700;text-anchor:middle;pointer-events:none;text-shadow:0 2px 4px #00000080}.tooltip{position:fixed;background:var(--bg-card);border:1px solid var(--accent);padding:.75rem 1rem;border-radius:4px;pointer-events:none;z-index:1000;display:none;box-shadow:0 4px 12px #00000080}.tooltip.visible{display:block}.tooltip-title{color:var(--accent);font-weight:700;margin-bottom:.25rem}.tooltip-info{color:var(--text-secondary);font-size:.85rem}.tooltip-preview{margin:.5rem 0;border-radius:4px;overflow:hidden;border:1px solid var(--border);background:var(--bg-dark);max-width:220px}.tooltip-preview img{display:block;width:100%;height:auto}.modal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:#000c;z-index:2000;align-items:center;justify-content:center;padding:2rem}.modal.active{display:flex}.modal-content{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;max-width:900px;width:100%;max-height:90vh;overflow-y:auto;position:relative}.modal-close{position:absolute;top:1rem;right:1rem;background:none;border:none;color:var(--text-secondary);font-size:2rem;cursor:pointer;z-index:10}.modal-close:hover{color:var(--accent)}.modal-header{padding:1.5rem;border-bottom:1px solid var(--border)}.modal-header h2{color:var(--accent)}.modal-body{padding:1.5rem;display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}@media(max-width:768px){.modal-body{grid-template-columns:1fr}}.modal-image{background:var(--bg-dark);border-radius:4px;overflow:hidden}
.modal-map-container{position:relative}
.modal-map-container img{width:100%;height:auto;display:block}
.modal-map-doors{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}
.modal-map-markers{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}
.modal-map-doors .modal-door{pointer-events:all;cursor:pointer}
.modal-map-doors .modal-door:hover rect{fill:var(--accent-hover);filter:drop-shadow(0 0 3px var(--accent))}.modal-info .info-row{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid var(--border)}.modal-info .info-row span:first-child{color:var(--text-secondary)}.connections-section{margin-top:1rem}.connections-section h3{color:var(--accent);margin-bottom:.75rem;font-size:1rem}#modal-connections{display:flex;flex-wrap:wrap;gap:.5rem}.connection-chip{background:var(--bg-header);padding:.25rem .75rem;border-radius:20px;font-size:.85rem;cursor:pointer;border:1px solid var(--border);transition:all .2s}.connection-chip:hover{background:var(--accent);border-color:var(--accent)}.loading{text-align:center;padding:3rem;color:var(--text-secondary)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-dark)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--accent)}
.variant-toggle{display:flex;flex-wrap:wrap;gap:.4rem;padding:.75rem .75rem 0}.variant-toggle button{background:var(--bg-header);color:var(--text-primary);border:1px solid var(--border);padding:.35rem .75rem;border-radius:999px;cursor:pointer;font-size:.8rem;transition:all .15s}.variant-toggle button:hover{border-color:var(--accent)}.variant-toggle button.active{background:var(--accent);border-color:var(--accent);color:#fff}.map-icon{cursor:pointer}.map-icon circle{fill:var(--accent);stroke:#1b1f2a;stroke-width:2}.map-icon text{fill:#1b1f2a;font-size:10px;font-weight:700;text-anchor:middle;pointer-events:none}
.world-map-layout{display:grid;grid-template-columns:320px minmax(0,1fr) 220px;gap:1rem;align-items:stretch}#world-editor{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:1rem;display:flex;flex-direction:column;gap:1rem;min-height:500px;max-height:calc(100vh - 200px);overflow:auto}.editor-section{display:flex;flex-direction:column;gap:.5rem}.editor-section label{color:var(--text-secondary);font-size:.85rem;text-transform:uppercase;letter-spacing:.06em}.editor-row{display:flex;gap:.5rem}.editor-row input{flex:1}.editor-toggle{display:flex;gap:.5rem;align-items:center;color:var(--text-primary)}.editor-selected{padding:.5rem .75rem;background:var(--bg-header);border:1px solid var(--border);border-radius:6px}.editor-status{color:var(--text-secondary);font-size:.85rem}.editor-connectors{display:flex;flex-direction:column;gap:.5rem;max-height:220px;overflow:auto;padding-right:.25rem}.editor-conn{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.4rem .6rem;background:var(--bg-header);border:1px solid var(--border);border-radius:6px;font-size:.85rem}.editor-conn-btn{background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border);padding:.25rem .6rem;border-radius:999px;font-size:.75rem;cursor:pointer}.editor-conn-btn:hover{border-color:var(--accent)}.editor-empty{color:var(--text-secondary);font-size:.85rem}#editor-export,#editor-fit{background:var(--bg-header);color:var(--text-primary);border:1px solid var(--border);padding:.5rem .75rem;border-radius:6px;cursor:pointer}#editor-export:hover,#editor-fit:hover{border-color:var(--accent)}#editor-import{color:var(--text-secondary)}#world-svg .map-node .map-node-frame{stroke-width:2;stroke:var(--accent)}#world-svg .map-node.selected .map-node-frame{stroke:var(--accent-hover);stroke-width:3}#world-svg .map-node:hover .map-node-frame{stroke:var(--accent-hover)}#world-svg .connection-line.built-in{stroke:#d7b47c80;stroke-width:1.5}#world-svg .map-label{font-size:12px;font-weight:700;paint-order:stroke;stroke:#1b1f2acc;stroke-width:3}#world-svg .map-node-thumb{image-rendering:auto}.dev-tools{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:1rem;display:flex;flex-direction:column;gap:.6rem;min-height:200px;max-height:calc(100vh - 200px)}.dev-tools-header{color:var(--text-secondary);font-size:.85rem;text-transform:uppercase;letter-spacing:.06em}.viewer-mode .dev-tools{display:none}.viewer-mode .world-map-layout{grid-template-columns:320px 1fr}@media(max-width:980px){.world-map-layout{grid-template-columns:1fr}.dev-tools{display:none}#world-editor{max-height:none}}
.catalog-list,.section-list{display:flex;flex-direction:column;gap:.5rem;overflow:auto;padding-right:.25rem}
.catalog-list{max-height:360px}
.catalog-item,.section-item{display:flex;align-items:center;gap:.5rem;padding:.4rem .6rem;background:var(--bg-header);border:1px solid var(--border);border-radius:6px;font-size:.85rem;cursor:pointer;transition:all .15s}
.catalog-item:hover,.section-item:hover{border-color:var(--accent)}
.catalog-item.active,.section-item.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.catalog-id{color:var(--accent);font-weight:700;font-family:monospace}
.catalog-name,.section-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.editor-section input[type="text"],.editor-section input[type="number"],.editor-section input[type="range"],.editor-section select{padding:.5rem .6rem;background:var(--bg-header);border:1px solid var(--border);color:var(--text-primary);border-radius:6px;font-size:.9rem}
.editor-section input:focus,.editor-section select:focus{outline:none;border-color:var(--accent)}
.section-fields{display:flex;gap:.5rem;align-items:center}
.section-fields input[type="text"]{flex:1}
.section-list{max-height:220px}
.section-swatch{width:16px;height:16px;border-radius:4px;border:1px solid var(--border);flex-shrink:0}
.section-count{color:var(--text-secondary);font-size:.75rem}
.section-rect{fill-opacity:.18;stroke:var(--accent);stroke-width:2}
.section.selected .section-rect{stroke:var(--accent-hover)}
.section-label-bg{fill:#00000066}
.section-label{fill:var(--text-primary);font-size:30px;font-weight:700;paint-order:stroke;stroke:#000;stroke-width:6;text-anchor:middle}
.section-draft{stroke-dasharray:6 4}
.world-draw-mode #world-svg{cursor:crosshair}
.section-rect{pointer-events:none}
.section-label-bg,.section-label{pointer-events:all;cursor:move}
#world-svg .door-marker rect,.modal-map-doors .modal-door rect{fill:var(--accent);stroke:#1b1f2a;stroke-width:1}
#world-svg .door-marker .door-arch,.modal-map-doors .modal-door .door-arch{fill:none;stroke:#1b1f2a;stroke-width:1}
#world-svg .door-marker circle,.modal-map-doors .modal-door circle{fill:#1b1f2a}
#world-svg .door-preview rect{fill:#e3c38c;stroke:#fff}
#world-svg .door-preview .door-arch{stroke:#fff}
#world-svg .door-preview circle{fill:#fff}

.door-card{position:fixed;min-width:220px;max-width:320px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:.75rem;box-shadow:0 12px 24px #00000080;z-index:2500;display:none}
.door-card.visible{display:block}
.door-card-close{position:absolute;top:.35rem;right:.5rem;background:none;border:none;color:var(--text-secondary);font-size:1.2rem;cursor:pointer}
.door-card-title{font-weight:700;color:var(--accent);margin-bottom:.5rem}
.door-card-preview{background:var(--bg-dark);border-radius:6px;overflow:hidden;border:1px solid var(--border);cursor:pointer}
.door-card-preview img{width:100%;height:auto;display:block}
.door-card-meta{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;color:var(--text-secondary);margin:.5rem 0}
.door-card-meta strong{color:var(--text-primary);font-weight:600;margin-right:.35rem}
.door-card-open{width:100%;background:var(--bg-header);color:var(--text-primary);border:1px solid var(--border);padding:.4rem .6rem;border-radius:6px;cursor:pointer}
.door-card-open:hover{border-color:var(--accent)}

.map-viewer{position:fixed;inset:0;background:#000c;display:none;z-index:2600;align-items:center;justify-content:center;padding:1.5rem}
.map-viewer.visible{display:flex}
.map-viewer-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--border)}
.map-viewer-title{color:var(--accent);font-weight:700}
.map-viewer-close{background:none;border:none;color:var(--text-secondary);font-size:1.4rem;cursor:pointer;pointer-events:auto;position:relative;z-index:5}
.map-viewer-canvas{flex:1;background:#0b0e14;position:relative;overflow:hidden;cursor:grab;touch-action:none;pointer-events:auto}
.map-viewer-header{position:relative;z-index:5}
.map-viewer-canvas:active{cursor:grabbing}
#map-viewer-image{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(1);transform-origin:center center;user-select:none;pointer-events:auto}
.map-viewer-doors{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(1);transform-origin:center center;pointer-events:none;overflow:visible;z-index:4}
.map-viewer-markers{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(1);transform-origin:center center;pointer-events:none;overflow:visible;z-index:3}
#map-viewer-image,.map-viewer-doors,.map-viewer-markers{will-change:transform}
.map-viewer-doors .viewer-door{pointer-events:all;cursor:pointer}
.map-viewer-doors .viewer-door .door-hitarea{pointer-events:all}
.map-viewer-doors .viewer-door:hover rect:not(.door-hitarea){fill:var(--accent-hover);filter:drop-shadow(0 0 4px var(--accent))}
.map-viewer-doors .viewer-door:hover .viewer-door-label{fill:var(--accent)}
.map-viewer-doors .viewer-door rect:not(.door-hitarea){fill:var(--accent);stroke:#1b1f2a;stroke-width:2;pointer-events:none}
.map-viewer-doors .viewer-door .door-arch{fill:none;stroke:#1b1f2a;stroke-width:1.5;pointer-events:none}
.map-viewer-doors .viewer-door circle{fill:#1b1f2a;pointer-events:none}
.map-viewer-doors .viewer-door-label{fill:var(--text-primary);font-size:11px;font-weight:700;text-anchor:middle;paint-order:stroke;stroke:#1b1f2a;stroke-width:3;pointer-events:none}
.map-viewer-doors .viewer-door-label{font-size:22px}

#world-svg .door-marker{cursor:pointer;pointer-events:all}

#world-svg .connection-line{fill:none;pointer-events:none;stroke-linecap:round;stroke-linejoin:round}
#world-svg .connection-line.outline{stroke:#000;stroke-width:4;opacity:.85}
#world-svg .connection-line.manual{stroke:var(--accent);stroke-width:2.5;opacity:.9}

.editor-action{background:var(--bg-header);color:var(--text-primary);border:1px solid var(--border);padding:.5rem .75rem;border-radius:6px;cursor:pointer;font-size:.85rem}
.editor-action:hover{border-color:var(--accent)}
.editor-action.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.editor-action-danger:hover{border-color:#e94560;color:#e94560}
.editor-actions-row{display:flex;gap:.5rem;flex-wrap:wrap}
.editor-actions-row .editor-action{flex:1;min-width:60px;text-align:center}
.viewer-panel{display:none;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:.75rem;max-height:420px;overflow:hidden}
.viewer-panel-header{display:flex;align-items:center;justify-content:space-between;color:var(--accent);font-weight:600;margin-bottom:.5rem}
.viewer-panel-search input{width:100%;padding:.45rem .6rem;background:var(--bg-header);border:1px solid var(--border);color:var(--text-primary);border-radius:6px;font-size:.85rem}
.viewer-map-list{margin-top:.5rem;display:flex;flex-direction:column;gap:.4rem;max-height:320px;overflow:auto;padding-right:.25rem}
.viewer-map-item{display:flex;justify-content:space-between;gap:.5rem;padding:.35rem .5rem;background:var(--bg-header);border:1px solid var(--border);border-radius:6px;cursor:pointer;font-size:.85rem}
.viewer-map-item:hover{border-color:var(--accent)}
.viewer-map-id{color:var(--accent);font-family:monospace}
.viewer-map-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.viewer-mode #world-editor,.viewer-mode #catalog-search,.viewer-mode #catalog-list,.viewer-mode #section-list,.viewer-mode #search-world,.viewer-mode #clear-tiles{display:none}
.viewer-mode #viewer-toggle{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.viewer-mode .viewer-panel{display:block;grid-column:1}
.viewer-mode .world-map-layout{grid-template-columns:320px 1fr}
.viewer-mode #world-container{grid-column:2}
.viewer-mode .viewer-jumps{grid-column:2}
.section.highlight .section-rect{stroke:var(--accent-hover);filter:drop-shadow(0 0 6px var(--accent))}
.viewer-jumps{display:none;gap:.5rem;flex-wrap:wrap;align-items:center;margin-bottom:.75rem}
.viewer-jumps .viewer-jump{background:var(--bg-header);color:var(--text-primary);border:1px solid var(--border);padding:.5rem .75rem;border-radius:999px;cursor:pointer;font-size:.9rem;transition:all .15s}
.viewer-jumps .viewer-jump:hover{border-color:var(--accent);background:var(--bg-card)}
.viewer-mode .viewer-jumps{display:flex}

.map-viewer-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;max-width:90vw;max-height:90vh;width:min(1200px,90vw);height:min(800px,90vh);display:flex;flex-direction:row;overflow:hidden}

/* Connections panel in map viewer */
.map-viewer-main{flex:1;display:grid;grid-template-columns:260px 1fr;grid-template-rows:auto 1fr;min-width:0}
.map-viewer-header{grid-column:1 / -1}
.map-viewer-canvas{grid-column:2}
.map-viewer-details{grid-column:1;border-top:none;border-right:1px solid var(--border);min-height:0;overflow:auto}
.map-viewer-section-title{font-size:.85rem}
.map-viewer-list{gap:.8rem}
.map-viewer-connections{width:308px;background:var(--bg-header);border-left:1px solid var(--border);display:flex;flex-direction:column}
.map-viewer-details{padding:.75rem 1rem;border-top:1px solid var(--border);display:grid;grid-template-columns:1fr 1fr;gap:.75rem;background:var(--bg-card)}
.map-viewer-section{display:flex;flex-direction:column;gap:.4rem}
.map-viewer-section-title{display:none}
.map-viewer-list{display:flex;flex-direction:column;gap:.6rem}
.map-viewer-group{display:flex;flex-direction:column;gap:.4rem}
.map-viewer-group-title{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary)}
.map-viewer-chips{display:flex;flex-direction:column;gap:.35rem}
.map-viewer-chip{width:fit-content}
.map-viewer-chip{background:var(--bg-header);border:1px solid var(--border);border-radius:999px;padding:.2rem .6rem;font-size:.75rem;color:var(--text-primary);cursor:pointer;transition:border-color .15s, background .15s}
.map-viewer-chip:hover{border-color:var(--accent);background:var(--bg-dark)}
.map-viewer-chip:focus{outline:2px solid var(--accent);outline-offset:2px}
.map-viewer-chip.boss{border-color:#e94560;color:#e94560;font-weight:700}
.map-viewer-empty{color:var(--text-secondary);font-size:.8rem}
.connections-header{display:flex;justify-content:center;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--border);background:var(--bg-card)}
.connections-header span{color:var(--accent);font-weight:600;font-size:.95rem}
.connections-content{flex:1;overflow-y:auto;padding:.75rem}
.connections-list{display:flex;flex-direction:column;gap:.75rem}
.connections-actions{display:flex;justify-content:flex-end}
.conn-item-actions{display:flex;align-items:center;margin-left:auto}
.conn-item-btn{background:var(--bg-header);color:var(--text-primary);border:1px solid var(--border);padding:.25rem .6rem;border-radius:999px;font-size:.7rem;cursor:pointer;transition:border-color .15s, background .15s}
.conn-item-btn:hover{border-color:var(--accent);background:var(--bg-dark)}
.map-viewer-panel{position:relative}
.map-viewer-header{position:relative;z-index:30;background:var(--bg-card);pointer-events:auto}
.map-viewer-close{z-index:9999;pointer-events:auto;position:absolute;top:.6rem;right:.9rem}
.map-viewer-header{padding-right:3rem}
.map-viewer-header *{pointer-events:auto}
.map-viewer-main{display:grid;grid-template-columns:max-content 1fr;grid-template-rows:auto 1fr}
.map-viewer-canvas{grid-column:2;grid-row:2;z-index:1}
.map-viewer-details{grid-column:1;grid-row:2;border-right:1px solid var(--border);border-top:none;display:flex;flex-direction:column;overflow:auto;max-width:360px;min-width:200px}
.map-viewer-section{width:max-content;max-width:340px}
.map-viewer-details .map-viewer-section{flex:1}

.hidden-modal{position:fixed;inset:0;background:#000c;display:none;align-items:center;justify-content:center;z-index:2800;padding:2rem}
.hidden-modal.visible{display:flex}
.hidden-modal-content{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;max-width:520px;width:100%;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}
.hidden-modal-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--border)}
.hidden-modal-header span{color:var(--accent);font-weight:700}
.hidden-modal-close{background:none;border:none;color:var(--text-secondary);font-size:1.4rem;cursor:pointer}
.hidden-modal-close:hover{color:var(--accent)}
.hidden-modal-body{padding:1rem;display:flex;flex-direction:column;gap:.5rem;overflow:auto}
.hidden-modal-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .6rem;background:var(--bg-header);border:1px solid var(--border);border-radius:6px;font-size:.85rem}
.loading-screen{position:absolute;inset:0;background:#000;display:flex;align-items:center;justify-content:center;z-index:5;pointer-events:none}
.loading-screen.hidden{display:none}
.loading-box{display:flex;flex-direction:column;gap:.75rem;min-width:260px;align-items:center}
.loading-title{color:#fff;font-weight:700;letter-spacing:.06em}
.loading-bar{width:280px;max-width:70vw;height:10px;background:#222;border:1px solid #444;border-radius:999px;overflow:hidden}
.loading-bar-fill{height:100%;width:0%;background:#d7b47c;transition:width .2s ease}
.hidden-modal-search{width:100%;padding:.5rem .6rem;background:var(--bg-header);border:1px solid var(--border);color:var(--text-primary);border-radius:6px;font-size:.85rem}
.hidden-modal-search:focus{outline:none;border-color:var(--accent)}
.hidden-modal-list{display:flex;flex-direction:column;gap:.5rem;max-height:50vh;overflow:auto;padding-right:.25rem}
.conn-item{display:flex;align-items:center;gap:.75rem;padding:.5rem;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:all .15s}
.conn-item:hover{border-color:var(--accent);background:var(--bg-dark)}
.conn-item.current{border-color:var(--accent);pointer-events:none}
.conn-item-thumb{width:60px;height:60px;border-radius:6px;overflow:hidden;flex-shrink:0;border:1px solid var(--border)}
.conn-item-thumb img{width:100%;height:100%;object-fit:cover}
.conn-item-info{flex:1;min-width:0}
.conn-item-name{color:var(--text-primary);font-weight:600;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conn-item-id{color:var(--accent);font-size:.8rem;font-family:monospace}
.conn-item-meta{color:var(--text-secondary);font-size:.75rem;margin-top:.25rem}
.connections-empty{color:var(--text-secondary);text-align:center;padding:2rem 1rem;font-size:.9rem}

.entity-search-wrapper{position:relative;display:flex;justify-content:center;margin-bottom:.75rem}
.entity-search-wrapper input{width:100%;max-width:400px;padding:.6rem 1rem;background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);border-radius:8px;font-size:.95rem}
.entity-search-wrapper input:focus{outline:none;border-color:var(--accent)}
.entity-suggestions{position:absolute;top:100%;left:50%;transform:translateX(-50%);width:100%;max-width:400px;max-height:280px;overflow-y:auto;background:var(--bg-card);border:1px solid var(--border);border-top:none;border-radius:0 0 8px 8px;z-index:100;display:none}
.entity-suggestions.visible{display:block}
.entity-suggestion{padding:.5rem 1rem;cursor:pointer;font-size:.9rem;display:flex;justify-content:space-between;align-items:center;gap:.5rem}
.entity-suggestion:hover,.entity-suggestion.active{background:var(--bg-header)}
.entity-suggestion-name{color:var(--text-primary)}
.entity-suggestion-type{color:var(--text-secondary);font-size:.75rem;text-transform:uppercase}

.entity-card{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);min-width:420px;max-width:600px;max-height:70vh;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:1rem;box-shadow:0 12px 32px #000000a0;z-index:2700;display:none;overflow:hidden;flex-direction:column}
.entity-card.visible{display:flex}
.entity-card-close{position:absolute;top:.5rem;right:.6rem;background:none;border:none;color:var(--text-secondary);font-size:1.3rem;cursor:pointer}
.entity-card-close{z-index:9999;pointer-events:auto}
.entity-card-close:hover{color:var(--accent)}
.entity-card-title{font-size:1.1rem;font-weight:700;color:var(--accent);margin-bottom:.25rem;padding-right:1.5rem}
.entity-card-type{font-size:.8rem;color:var(--text-secondary);text-transform:uppercase;margin-bottom:.5rem}
.entity-card-tags{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.6rem}
.entity-card-tag{padding:.15rem .5rem;border-radius:999px;font-size:.7rem;font-weight:700;text-transform:uppercase;border:1px solid var(--border);background:var(--bg-header);color:var(--text-primary)}
.entity-card-tag.boss{border-color:#e94560;color:#e94560}
.entity-card-tag.quest{border-color:#d7b47c;color:#d7b47c}
.entity-card-section-title{font-size:.85rem;color:var(--text-secondary);margin-bottom:.5rem}
.entity-card-maps{display:flex;flex-direction:column;gap:.4rem;overflow-y:auto;max-height:calc(70vh - 120px)}
.entity-card-map{display:flex;align-items:center;gap:.6rem;padding:.5rem .6rem;background:var(--bg-header);border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:all .15s}
.entity-card-map:hover{border-color:var(--accent);background:var(--bg-dark)}
.entity-card-map-thumb{width:48px;height:48px;border-radius:4px;overflow:hidden;border:1px solid var(--border);flex-shrink:0}
.entity-card-map-thumb img{width:100%;height:100%;object-fit:cover}
.entity-card-map-info{flex:1;min-width:0}
.entity-card-map-name{color:var(--text-primary);font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.entity-card-map-id{color:var(--accent);font-size:.8rem;font-family:monospace}
.entity-card-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:.4rem .75rem;margin-bottom:.75rem;padding:.6rem;background:var(--bg-header);border-radius:6px}
.entity-card-stat{display:flex;justify-content:space-between;font-size:.85rem}
.entity-card-stat-label{color:var(--text-secondary)}
.entity-card-stat-value{color:var(--text-primary);font-weight:600;font-family:monospace}
.map-list-name-row{display:flex;align-items:center;gap:.5rem;min-width:0}.map-list-name-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-list-meta{color:var(--text-secondary);font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.map-list-badges{display:inline-flex;gap:.3rem}
.map-list-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;border-radius:999px;font-size:.75rem;font-weight:800;line-height:1;border:1px solid var(--border);background:var(--bg-header);color:var(--text-primary)}
.map-list-badge.quest{border-color:#d7b47c;color:#d7b47c}
.map-list-badge.boss{border-color:#e94560;color:#e94560}
.map-list-badges.conn-item-badges .map-list-badge{min-width:16px;height:16px;font-size:.7rem}
.conn-item-name{display:flex;align-items:center;gap:.4rem}
.map-viewer-markers{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(1);transform-origin:center center;pointer-events:none;overflow:visible;z-index:3}
.map-viewer-markers .viewer-marker circle{fill:#1b1f2acc;stroke:var(--accent);stroke-width:2}
.map-viewer-markers .viewer-marker{pointer-events:all;cursor:pointer}
.map-viewer-markers .viewer-marker text{fill:var(--text-primary);font-weight:800;text-anchor:middle;paint-order:stroke;stroke:#000000aa;stroke-width:3;pointer-events:none}
.map-viewer-markers .viewer-marker.quest circle{stroke:#d7b47c}
.map-viewer-markers .viewer-marker.boss circle{stroke:#e94560}
.map-viewer-markers .viewer-marker.boss{filter:drop-shadow(0 0 4px #e94560) drop-shadow(0 0 10px #e94560)}
.viewer-panel{max-height:none;height:calc(100vh - 200px);min-height:500px;display:flex;flex-direction:column;gap:.6rem;padding:1rem}
.viewer-panel-header{margin-bottom:0}
.viewer-panel-search input{font-size:.95rem;padding:.55rem .7rem}
.viewer-map-list{flex:1;min-height:0;max-height:none;padding-right:.4rem}
.viewer-map-item{padding:.45rem .6rem;font-size:.9rem}
.viewer-map-name{font-weight:600}
.viewer-mode .world-map-layout{grid-template-columns:minmax(260px,320px) 1fr}
.viewer-jumps{margin:0 0 .5rem .25rem;justify-content:flex-start;align-items:flex-start}
.world-map-controls .entity-search-wrapper{margin-left:auto;margin-bottom:0;justify-content:flex-end}
.world-map-controls .entity-search-wrapper input{width:280px;max-width:320px;margin-left:0}
.world-map-controls .entity-suggestions{left:auto;right:0;transform:none}
/* Layout fix: keep world container in center and dev tools on right */
.world-map-layout > #world-editor{grid-column:1}
.world-map-layout > #world-container{grid-column:2}
.world-map-layout > .viewer-jumps{grid-column:2}
.world-map-layout > #viewer-panel{grid-column:3}
.world-map-layout > #dev-tools{grid-column:3}
.viewer-panel{display:none}
.viewer-mode .viewer-panel{display:flex}

.host-view .world-map-layout{grid-template-columns:minmax(260px,320px) 1fr;position:relative}
.host-view #viewer-panel{grid-column:1}
.host-view #world-container{grid-column:2}
.host-view .viewer-jumps{grid-column:2}
.host-view main{padding:1rem}
.host-view .world-map-controls{margin-bottom:.25rem}
.host-view .viewer-jumps{
  margin:0;
  align-items:center;
  position:absolute;
  top:10px;
  left:50%;
  transform:translateX(-50%);
  z-index:6;
}
.host-view .world-map-controls{padding-bottom:0}

/* Disable loading overlay */
.loading-screen{display:none!important}

/* Badge icons */
.badge-icon{width:16px;height:16px;display:block;image-rendering:pixelated}
.conn-icon{width:18px;height:18px;display:inline-block;image-rendering:pixelated;margin-right:.35rem;vertical-align:middle}

/* Prevent text selection while dragging */
body,.world-map-layout,#world-container,#world-svg{user-select:none;-webkit-user-select:none}input,textarea{user-select:text;-webkit-user-select:text}
#world-container img,#world-svg image{-webkit-user-drag:none}

/* Door icon */
.door-icon{image-rendering:pixelated;pointer-events:auto}

/* Door card badges */
.door-card-badges{margin-top:.5rem;display:flex;flex-direction:column;gap:.5rem}
.door-card-badges-title{font-size:.8rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}
.door-card-badges-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:.4rem}
.door-card-badge{display:flex;align-items:center;gap:.4rem;padding:.35rem .45rem;background:var(--bg-header);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);cursor:pointer}
.door-card-badge:hover{border-color:var(--accent)}
.door-card-badge.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.door-card-badge img{width:18px;height:18px;image-rendering:pixelated}
.door-card-badge span{font-size:.8rem}

.viewer-marker-icon{image-rendering:pixelated;pointer-events:auto}

/* Layer toggle */

to{opacity:inherit}}


.section-click-assign #world-svg{cursor:crosshair}


#world-svg .map-node-badge{pointer-events:none}
#world-svg .map-node-badge image{image-rendering:pixelated}
#world-svg .map-node-badge.quest image{filter:drop-shadow(0 0 4px #d7b47c) drop-shadow(0 0 10px #d7b47c)}
#world-svg .map-node-badge.boss image{filter:drop-shadow(0 0 4px #e94560) drop-shadow(0 0 10px #e94560)}

.door-card-action{width:100%;background:var(--bg-header);color:var(--text-primary);border:1px solid var(--border);padding:.4rem .6rem;border-radius:6px;cursor:pointer;margin-top:.5rem}
.door-card-action:hover{border-color:var(--accent)}

#world-svg .map-tile-marker{pointer-events:all;cursor:pointer}
#world-svg .map-tile-marker image{image-rendering:pixelated}
#world-svg .map-tile-marker.quest image{filter:drop-shadow(0 0 4px #d7b47c) drop-shadow(0 0 10px #d7b47c)}
#world-svg .map-tile-marker.boss image{filter:drop-shadow(0 0 4px #e94560) drop-shadow(0 0 10px #e94560)}

.hide-map-control{position:relative;display:flex;align-items:center;gap:.4rem}
.hide-map-panel{position:absolute;top:calc(100% + 6px);left:0;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:.5rem;min-width:220px;z-index:20;display:none;box-shadow:0 10px 20px #00000066}
.hide-map-panel.active{display:block}
#hide-map-input{width:100%;padding:.45rem .6rem;background:var(--bg-header);border:1px solid var(--border);color:var(--text-primary);border-radius:6px;font-size:.85rem}
#hide-map-input:focus{outline:none;border-color:var(--accent)}
.hide-map-suggestions{margin-top:.4rem;max-height:200px;overflow:auto;display:none}
.hide-map-suggestions.visible{display:block}
.hide-map-item{display:flex;gap:.5rem;align-items:center;padding:.35rem .5rem;border-radius:6px;cursor:pointer;background:var(--bg-header);border:1px solid var(--border);font-size:.8rem}
.hide-map-item + .hide-map-item{margin-top:.35rem}
.hide-map-item:hover{border-color:var(--accent);background:var(--bg-dark)}
.hide-map-id{color:var(--accent);font-family:monospace}
.hide-map-name{color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hide-map-empty{color:var(--text-secondary);font-size:.8rem;padding:.35rem .5rem}

.monster-list{display:flex;flex-direction:column;gap:2px;max-width:700px;margin:0 auto}
.monster-card-backdrop{position:fixed;inset:0;display:none;align-items:center;justify-content:center;z-index:2600;background:#0006}
.monster-card-backdrop.visible{display:flex}
.monster-card{position:relative;min-width:260px;max-width:360px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:.75rem;box-shadow:0 12px 24px #00000080;display:none}
.monster-card.visible{display:block}
.monster-card-close{position:absolute;top:.35rem;right:.5rem;background:none;border:none;color:var(--text-secondary);font-size:1.2rem;cursor:pointer}
.monster-card-close:hover{color:var(--accent)}
.monster-card-title{font-weight:700;color:var(--accent);margin-bottom:.5rem;padding-right:1.5rem}
.monster-card-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:.4rem .75rem;margin-bottom:.6rem;padding:.5rem;background:var(--bg-header);border-radius:6px}
.monster-card-stat{display:flex;justify-content:space-between;font-size:.85rem}
.monster-card-stat span:first-child{color:var(--text-secondary)}
.monster-card-section-title{font-size:.8rem;color:var(--text-secondary);margin:.4rem 0}
.monster-card-maps{display:flex;flex-direction:column;gap:.35rem;max-height:260px;overflow:auto}
.monster-card-map{padding:.35rem .5rem;background:var(--bg-header);border:1px solid var(--border);border-radius:6px;font-size:.85rem}
.monster-card-empty{color:var(--text-secondary);font-size:.85rem}
.monster-db .controls{max-width:700px;margin:0 auto .5rem auto}
.monster-db .controls input{width:100%}
.monster-sort{background:none;border:none;color:var(--accent);font-weight:700;font-size:.85rem;cursor:pointer;text-align:left;padding:0}
.monster-sort:hover{color:var(--accent-hover)}
.monster-row.boss .monster-name{color:#ffb3b3;text-shadow:0 0 6px rgba(255,60,60,.6)}
.monster-boss-badge{display:inline-flex;align-items:center;margin-right:.4rem}
.monster-boss-icon{width:18px;height:18px;filter:drop-shadow(0 0 6px rgba(255,60,60,.9))}
.monster-list-header{display:grid;grid-template-columns:1fr 140px 140px;gap:1rem;padding:.75rem 1rem;background:var(--bg-header);border:1px solid var(--border);border-radius:4px 4px 0 0;font-weight:700;color:var(--accent);font-size:.85rem}
.monster-row{display:grid;grid-template-columns:1fr 140px 140px;gap:1rem;padding:.6rem 1rem;background:var(--bg-card);border:1px solid var(--border);border-top:none;align-items:center}
.monster-row:hover{background:var(--bg-header);border-color:var(--accent)}
.monster-row:last-child{border-radius:0 0 4px 4px}
.monster-name{color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.monster-hp,.monster-exp{color:var(--text-secondary);font-family:monospace}
@media(max-width:768px){.monster-list-header,.monster-row{grid-template-columns:1fr 100px}.monster-exp{display:none}}

.map-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}
.map-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden;cursor:pointer;transition:border-color .15s,transform .15s}
.map-card:hover{border-color:var(--accent);transform:translateY(-2px)}
.map-card-thumb{background:var(--bg-dark);aspect-ratio:1/1;display:flex;align-items:center;justify-content:center}
.map-card-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.map-card-info{padding:.6rem .75rem;display:flex;align-items:center;justify-content:space-between;gap:.5rem}
.map-card-name{color:var(--text-primary);font-weight:600;display:flex;align-items:center;gap:.5rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.map-card-badges{display:inline-flex;gap:.3rem}
.map-list{max-width:700px;margin:0 auto}
.map-list-row-compact{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem}
.map-list-thumb{width:64px;height:64px;border-radius:6px;overflow:hidden;background:var(--bg-dark);border:1px solid var(--border);flex:0 0 auto}
.map-list-thumb img{width:100%;height:100%;object-fit:cover;display:block}

.modal-stat-row{display:flex;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}
.modal-stat{display:flex;align-items:center;gap:.4rem;background:var(--bg-header);border:1px solid var(--border);border-radius:999px;padding:.25rem .6rem;font-size:.8rem}
.modal-stat span:first-child{color:var(--text-secondary)}
.modal-section{margin-top:.75rem}
.modal-section h3{color:var(--accent);margin-bottom:.4rem;font-size:.9rem}
.modal-list{display:flex;flex-wrap:wrap;gap:.4rem;max-height:200px;overflow:auto}
.modal-chip{background:var(--bg-header);border:1px solid var(--border);border-radius:999px;padding:.2rem .6rem;font-size:.75rem;color:var(--text-primary)}
.modal-empty{color:var(--text-secondary);font-size:.8rem}
.modal-map-click{cursor:pointer}
.view-toggle{display:flex;gap:.5rem;align-items:center}
.toggle-btn{background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border);padding:.6rem .9rem;border-radius:4px;cursor:pointer;transition:all .2s;font-size:.9rem}
.toggle-btn:hover{background:var(--bg-header);border-color:var(--accent)}
.toggle-btn.active{background:var(--accent);border-color:var(--accent);color:#2b2d3a}
.map-list-title{display:flex;align-items:center;gap:.5rem;min-width:0;font-weight:600}
.map-list-badges-inline{display:inline-flex;gap:.3rem}
body.world-dragging #world-svg .map-node-thumb{filter:none}
body.world-dragging #world-svg .map-label{text-shadow:none;stroke:none}
body.world-dragging #world-svg .section-label{stroke:none}
body.world-dragging #world-svg .section.highlight .section-rect{filter:none}
body.world-dragging #world-svg .map-node-badge.quest image,body.world-dragging #world-svg .map-node-badge.boss image,body.world-dragging #world-svg .map-tile-marker.quest image,body.world-dragging #world-svg .map-tile-marker.boss image{filter:none}
