/* RESET */ * { box-sizing: border-box; } body { margin: 0; background: #050816; color: #fff; font-family: system-ui, sans-serif; } /* TOPBAR */ .topbar { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; padding: 0.4rem 0.8rem; background: #0b1020; border-bottom: 1px solid #1f2937; } .logo-circle { width: 32px; height: 32px; background: radial-gradient(circle, #38bdf8, #1d4ed8, #020617); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; } .title-block { display: flex; flex-direction: column; } .main-title { font-size: 1rem; font-weight: 700; } .sub-title { font-size: 0.75rem; opacity: 0.7; } .btn-primary { padding: 0.25rem 0.7rem; font-size: 0.75rem; border-radius: 999px; border: 1px solid #22c55e; background: #16a34a; color: #f9fafb; cursor: pointer; } /* ROOT & LAYOUT */ .app-root { height: 100vh; display: flex; flex-direction: column; } .main-shell { flex: 1; display: flex; padding: 0.6rem; } /* MAP FULLSCREEN */ .map-shell { position: relative; flex: 1; border-radius: 1rem; overflow: hidden; border: 1px solid #1f2937; background: #020617; } .map-view { position: relative; width: 100%; height: 100%; } .maplibre-container { position: absolute; inset: 0; width: 100%; height: 100%; } /* Overlays autour de la map */ .map-overlay { position: absolute; pointer-events: none; } .map-overlay * { pointer-events: auto; } /* Haut */ .top-bar { top: 0.4rem; left: 0; right: 0; padding: 0 0.6rem; display: flex; justify-content: space-between; align-items: center; } .lookat-box { padding: 0.25rem 0.6rem; background: rgba(0,0,0,0.6); border-radius: 999px; font-size: 0.75rem; } .wire-title { font-size: 0.7rem; opacity: 0.7; } .zoom-buttons { display: flex; gap: 0.3rem; } /* Gauche */ .left-bar { left: 0.4rem; top: 50%; transform: translateY(-50%); display: flex; flex-direction: column; gap: 0.4rem; } /* Droite */ .right-bar { right: 0.4rem; top: 50%; transform: translateY(-50%); display: flex; flex-direction: column; gap: 0.4rem; } /* Bas */ .bottom-bar { bottom: 0.4rem; left: 50%; transform: translateX(-50%); display: flex; gap: 0.3rem; } /* Chips */ .chip-round, .chip-pill, .chip-egg, .chip-hex { background: rgba(20,25,50,0.9); border: 1px solid #1d4ed8; padding: 0.35rem 0.6rem; color: #fff; font-size: 0.75rem; cursor: pointer; border-radius: 999px; box-shadow: 0 4px 10px rgba(0,0,0,0.6); } .chip-egg { border-radius: 999px; } .chip-hex { border-radius: 0.4rem; } .chip-pill { border-radius: 999px; } /* Status en bas à gauche */ .map-status { position: absolute; left: 0.5rem; bottom: 0.5rem; font-size: 0.7rem; padding: 0.2rem 0.4rem; background: rgba(0,0,0,0.6); border-radius: 0.5rem; } /* === MARKERS (petits posts) === */ .post-marker { position: relative; background: rgba(15, 23, 42, 0.96); border-radius: 999px; padding: 4px 6px; border: 1px solid rgba(148, 163, 184, 0.9); box-shadow: 0 6px 16px rgba(0, 0, 0, 0.7); cursor: pointer; } .post-marker::after { content: ""; position: absolute; left: 50%; bottom: -7px; transform: translateX(-50%); width: 0; height: 0; border-width: 7px 7px 0 7px; border-style: solid; border-color: rgba(15, 23, 42, 0.96) transparent transparent transparent; } .post-marker-inner { display: flex; align-items: center; gap: 6px; } .post-marker-text { display: flex; flex-direction: column; max-width: 140px; } .post-marker-title { font-size: 0.7rem; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .post-marker-snippet { font-size: 0.65rem; opacity: 0.8; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .post-marker-image { width: 26px; height: 26px; border-radius: 999px; overflow: hidden; flex-shrink: 0; border: 1px solid rgba(148, 163, 184, 0.8); } .post-marker-image img { width: 100%; height: 100%; object-fit: cover; } .post-marker-image-placeholder { width: 100%; height: 100%; background: radial-gradient(circle at 30% 30%, #38bdf8, #1d4ed8, #020617); } /* === POPUP GROS POST === */ .maplibregl-popup-content { padding: 0; border-radius: 1rem; overflow: hidden; background: transparent; border: none; box-shadow: none; } .popup-post-card { background: rgba(15, 23, 42, 0.97); border-radius: 1rem; border: 1px solid rgba(148, 163, 184, 0.9); box-shadow: 0 14px 40px rgba(0, 0, 0, 0.85); color: #e5e7eb; } .popup-post-inner { padding: 0.65rem 0.75rem 0.75rem 0.75rem; } .popup-post-header { display: flex; align-items: center; gap: 0.6rem; margin-bottom: 0.4rem; } .popup-post-image { width: 40px; height: 40px; border-radius: 999px; overflow: hidden; flex-shrink: 0; border: 1px solid rgba(148, 163, 184, 0.9); } .popup-post-image img { width: 100%; height: 100%; object-fit: cover; } .popup-post-image-placeholder { background: radial-gradient(circle at 30% 30%, #38bdf8, #1d4ed8, #020617); } .popup-post-title { font-size: 0.9rem; font-weight: 600; } .popup-post-body { font-size: 0.8rem; line-height: 1.35; color: #cbd5f5; max-height: 190px; overflow-y: auto; }