sw-fe/src/styles/mapMarkers.css

199 lines
3.8 KiB
CSS

/* ==========================================================
SOCIOWIRE MARKERS — ANCHOR STABLE (NO SHIFT)
Root = 0x0 on the exact geo point.
Bubble/Card are ABSOLUTE above the anchor.
========================================================== */
/* Root anchored by MapLibre at the geo point */
.post-pin {
position: relative;
width: 0;
height: 0;
pointer-events: none; /* children clickable */
transform: translate3d(0, 0, 0);
}
.post-pin * {
pointer-events: auto;
box-sizing: border-box;
}
/* =========================
COMPACT
========================= */
.post-pin--compact .post-pin-bubble {
position: absolute;
left: 0;
top: 0;
transform: translate(-50%, calc(-100% - 12px));
display: inline-flex;
align-items: center;
padding: 4px 8px;
border-radius: 999px;
background: rgba(6, 40, 80, 0.95);
border: 1px solid rgba(80, 180, 255, 0.9);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
max-width: 180px;
}
.post-pin-dot {
width: 10px;
height: 10px;
border-radius: 999px;
background: #ff8a00;
margin-right: 6px;
flex-shrink: 0;
}
.post-pin-text {
color: #e8f5ff;
font-size: 11px;
font-weight: 500;
max-width: 160px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* little pointer tip */
.post-pin--compact .post-pin-pointer-small {
position: absolute;
left: 0;
top: 0;
transform: translate(-50%, -100%);
width: 0;
height: 0;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-top: 9px solid rgba(6, 40, 80, 0.95);
filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.6));
}
/* =========================
EXPANDED
========================= */
.post-pin--expanded {
z-index: 999999;
}
.post-pin--expanded .post-card {
position: absolute;
left: 0;
top: 0;
transform: translate(-50%, calc(-100% - 14px));
min-width: 260px;
max-width: 320px;
background: rgba(8, 20, 40, 0.97);
border-radius: 14px;
padding: 10px 12px;
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.8);
border: 1px solid rgba(90, 190, 255, 0.9);
color: #e8f5ff;
}
/* header : catégorie + heure/date */
.post-card-header {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 11px;
margin-bottom: 6px;
}
.post-card-cat {
font-weight: 600;
color: #8fc5ff;
}
.post-card-time {
color: #9eb7ff;
}
/* corps : media + texte */
.post-card-main {
display: flex;
flex-direction: row;
gap: 8px;
margin-bottom: 6px;
}
.post-card-media {
width: 72px;
height: 72px;
border-radius: 10px;
background: radial-gradient(circle at 30% 30%, #4a9dff, #07152b);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.post-card-media-label {
font-size: 9px;
text-align: center;
color: #e8f5ff;
}
.post-card-info {
flex: 1;
min-width: 0;
}
.post-card-title {
font-size: 13px;
font-weight: 600;
margin-bottom: 2px;
}
.post-card-meta {
font-size: 10px;
color: #9eb7ff;
margin-bottom: 4px;
}
.post-card-body {
font-size: 11px;
color: #c7e3ff;
max-height: 70px;
overflow: hidden;
}
/* footer boutons */
.post-card-footer {
display: flex;
gap: 6px;
margin-bottom: 6px;
flex-wrap: wrap;
}
.post-card-btn {
border: none;
border-radius: 999px;
padding: 3px 8px;
font-size: 10px;
background: rgba(5, 35, 70, 0.95);
color: #e8f5ff;
cursor: pointer;
}
.post-card-comments {
font-size: 10px;
color: #9eb7ff;
padding: 4px 6px;
border-radius: 8px;
background: rgba(3, 14, 32, 0.95);
}
/* pointer under expanded card */
.post-pin--expanded .post-card-pointer {
position: absolute;
left: 0;
top: 0;
transform: translate(-50%, -100%);
width: 0;
height: 0;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-top: 11px solid rgba(8, 20, 40, 0.97);
filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.8));
}