.map-viewer{width:100%;height:100%;overflow:hidden;cursor:grab;background:var(--color-canvas-bg, #303030)}.map-viewer:active{cursor:grabbing}.map-viewer canvas{display:block}.map-viewer-page{display:flex;flex-direction:column;height:100vh;background:var(--color-viewer-bg, #0f0f23);color:var(--color-text-primary)}.viewer-header{display:flex;align-items:center;gap:16px;padding:16px 24px;background:var(--color-background-toolbar);border-bottom:1px solid var(--color-border-medium)}.viewer-header h1{flex:1;font-size:1.25rem;font-weight:500;margin:0}.viewer-header .back-btn{background:var(--color-background-dropdown);border:none;color:var(--color-text-primary);padding:8px 16px;border-radius:6px;cursor:pointer;font-size:.875rem;transition:background .2s}.viewer-header .back-btn:hover{background:var(--color-background-hover)}.visibility-badge{padding:4px 12px;border-radius:12px;font-size:.75rem;font-weight:600;color:var(--color-text-primary)}.viewer-info{display:flex;gap:24px;padding:12px 24px;background:var(--color-viewer-info-bg, #16213e);font-size:.875rem;color:var(--color-text-secondary)}.viewer-info span{display:flex;gap:6px}.viewer-info strong{color:var(--color-text-primary)}.viewer-canvas-container{flex:1;overflow:hidden}.viewer-loading,.viewer-error{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.viewer-loading .spinner{width:40px;height:40px;border:3px solid var(--color-border-medium);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.viewer-error{background:var(--color-background-toolbar);margin:24px;border-radius:8px;padding:48px}.viewer-error h2{font-size:1.5rem;margin:0;color:var(--color-error, #ff6b6b)}.viewer-error p{color:var(--color-text-secondary);margin:8px 0 24px}.viewer-error button{background:var(--color-primary);border:none;color:var(--color-text-primary);padding:12px 24px;border-radius:6px;cursor:pointer;font-size:1rem;transition:background .2s}.viewer-error button:hover{background:var(--color-primary-dark)}
