/* ---- Full-viewport shell ---- */ .app { display: flex; flex-direction: column; height: 100vh; overflow: hidden; } /* ---- Top header ---- */ .app-header { flex-shrink: 0; height: 48px; display: flex; align-items: center; gap: 1rem; padding: 0 1rem; background: #1f2937; border-bottom: 1px solid #374151; z-index: 10; } .app-brand { font-size: 1.05rem; font-weight: 700; color: #f9fafb; letter-spacing: 0.08em; white-space: nowrap; margin-right: 0.5rem; } .app-brand span { color: #818cf8; } .app-map-controls { display: flex; align-items: center; gap: 0.5rem; flex: 1; } .map-select { background: #111827; border: 1px solid #4b5563; border-radius: 6px; color: #e5e7eb; padding: 0.3rem 0.6rem; font-size: 0.85rem; min-width: 160px; max-width: 280px; outline: none; cursor: pointer; } .map-select:focus { border-color: #6366f1; } .map-select option { background: #1f2937; } .header-btn { background: #374151; border: 1px solid #4b5563; border-radius: 6px; color: #e5e7eb; cursor: pointer; font-size: 0.82rem; padding: 0.3rem 0.65rem; line-height: 1.4; white-space: nowrap; transition: background 0.12s; } .header-btn:hover { background: #4b5563; } .header-btn.danger:hover { background: #7f1d1d; border-color: #ef4444; color: #fca5a5; } .new-map-form { display: flex; gap: 0.3rem; align-items: center; } .new-map-form input { background: #111827; border: 1px solid #6366f1; border-radius: 6px; color: #e5e7eb; padding: 0.3rem 0.6rem; font-size: 0.85rem; width: 160px; outline: none; } .new-map-form button { background: #6366f1; border: none; border-radius: 6px; color: white; cursor: pointer; font-size: 0.82rem; padding: 0.3rem 0.65rem; transition: background 0.12s; } .new-map-form button:hover { background: #4f46e5; } .new-map-form .cancel-btn { background: #374151; border: 1px solid #4b5563; } .new-map-form .cancel-btn:hover { background: #4b5563; } /* ---- Grid area (fills remainder) ---- */ .app-grid-area { flex: 1; position: relative; overflow: hidden; } /* ── Floating panel stack – bottom-left corner ── */ .floating-panels-container { position: absolute; bottom: 14px; left: 14px; display: flex; flex-direction: column; gap: 8px; z-index: 20; } /* ---- No-map placeholder ---- */ .empty-state { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.75rem; color: #4b5563; } .empty-state p { font-size: 1.1rem; } .empty-state .empty-hint { font-size: 0.85rem; color: #374151; } /* ---- Auth area (right side of header) ---- */ .app-auth { display: flex; align-items: center; gap: 0.5rem; margin-left: auto; flex-shrink: 0; } .app-username { font-size: 0.82rem; color: #9ca3af; white-space: nowrap; } /* ---- Public checkbox in new-map form ---- */ .new-map-public { display: flex; align-items: center; gap: 0.3rem; font-size: 0.82rem; color: #9ca3af; cursor: pointer; white-space: nowrap; user-select: none; } .new-map-public input[type='checkbox'] { accent-color: #6366f1; cursor: pointer; }