sw-fe/src/styles/map.css

1912 lines
37 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:root{
--sw-subcats-nudge: -45px; /* subcats vertical nudge */
--sw-below-overlap: 80px; /* sociowall overlaps map */
}
.map-page{
display:flex;
flex-direction:column;
width:100%;
}
/* Map stage - 7/8 of viewport on desktop */
.map-stage{
position:relative;
width:100%;
height: clamp(500px, 87.5vh, 1100px);
overflow: hidden;
}
.map-stage--placeholder{
display:flex;
align-items:center;
justify-content:center;
background:
radial-gradient(circle at 20% 20%, rgba(56,189,248,0.2), transparent 45%),
radial-gradient(circle at 80% 30%, rgba(14,116,144,0.25), transparent 40%),
linear-gradient(135deg, rgba(2,6,23,0.9), rgba(6,14,36,0.95));
border: 1px solid rgba(56,189,248,0.25);
}
.map-placeholder-content{
text-align:center;
padding: 16px 20px;
border-radius: 16px;
background: rgba(2, 6, 23, 0.5);
border: 1px solid rgba(148, 163, 184, 0.25);
color: #e2e8f0;
box-shadow: 0 14px 30px rgba(2,6,23,0.4);
}
.map-placeholder-title{
font-size: 18px;
font-weight: 600;
letter-spacing: 0.02em;
}
.map-placeholder-subtitle{
margin-top: 6px;
font-size: 13px;
color: rgba(226, 232, 240, 0.75);
}
.map-placeholder-overlay{
position:absolute;
display:flex;
gap: 10px;
z-index: 2;
opacity: 0.85;
}
.map-placeholder-top{
top: 16px;
left: 50%;
transform: translateX(-50%);
}
.map-placeholder-left{
left: 16px;
top: 50%;
transform: translateY(-50%);
flex-direction: column;
}
.map-placeholder-right{
right: 16px;
top: 50%;
transform: translateY(-50%);
flex-direction: column;
}
.map-placeholder-bottom{
left: 50%;
bottom: 18px;
transform: translateX(-50%);
}
.map-placeholder-pill{
width: 42px;
height: 42px;
border-radius: 14px;
background: linear-gradient(135deg, rgba(148,163,184,0.15), rgba(56,189,248,0.25));
border: 1px solid rgba(148, 163, 184, 0.25);
box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.4);
animation: map-skel-pulse 1.6s ease-in-out infinite;
}
.map-placeholder-pill--wide{
width: min(520px, calc(100vw - 72px));
height: 48px;
border-radius: 18px;
}
.map-placeholder-chip{
width: 84px;
height: 30px;
border-radius: 999px;
background: linear-gradient(135deg, rgba(148,163,184,0.18), rgba(14,116,144,0.25));
border: 1px solid rgba(148, 163, 184, 0.25);
animation: map-skel-pulse 1.6s ease-in-out infinite;
}
@keyframes map-skel-pulse{
0%{ opacity: 0.5; }
50%{ opacity: 1; }
100%{ opacity: 0.6; }
}
/* Landscape: vh is small, but still keep map tall */
@media (orientation: landscape){
:root{ --sw-below-overlap: 60px; }
.map-stage{ height: clamp(400px, 80vh, 900px); }
}
.map-container,
.maplibre-container{
position:absolute;
inset:0;
width:100%;
height:100%;
}
.map-status{
position:absolute;
left:.5rem;
bottom:.5rem;
font-size:.7rem;
padding:.2rem .4rem;
background:rgba(0,0,0,.6);
border-radius:.5rem;
z-index:30;
}
/* BELOW MAP (scroll area) overlaps map */
.below-stage{
margin-top: calc(var(--sw-below-overlap) * -1);
position:relative;
z-index:25;
padding: 0.5rem 1rem 1.5rem;
transition: opacity 320ms ease, filter 320ms ease;
}
.below-row{
display:flex;
gap:.6rem;
align-items:stretch;
min-width:0;
}
/* stack only ultra-small (NOT normal portrait phones) */
@media (max-width: 340px){
.below-row{ flex-direction:column; }
}
/* ======== OVERLAYS ======== */
.map-overlay{
position:absolute;
pointer-events:none;
z-index:40;
}
.map-overlay *{ pointer-events:auto; }
/* TOP: centré horizontalement, petit offset en haut */
.map-overlay-top{
top: .7rem;
left:50%;
transform:translateX(-50%);
max-width: min(980px, calc(100vw - 24px));
width:100%;
z-index: 500; /* Au-dessus des filtres (z-index: 300) */
}
/* Left / right: filtres */
.map-overlay-left{
left:.7rem;
top:50%;
transform:translateY(-50%);
display:flex;
flex-direction:column;
gap:.5rem;
}
.map-overlay-right{
right:.7rem;
top:50%;
transform:translateY(-50%);
display:flex;
flex-direction:column;
gap:.5rem;
}
/* BOTTOM: sub-cats au-dessus du Sociowall */
.map-overlay-bottom{
bottom: calc(3.2rem + var(--sw-below-overlap, 0px) + env(safe-area-inset-bottom) + var(--sw-subcats-nudge, 0px));
left:50%;
transform:translateX(-50%);
display:flex;
gap:.4rem;
}
/* Crosshair pour création */
.map-crosshair{
left:50%;
top:30%;
transform:translate(-50%,-50%);
}
.crosshair-aim{
width:34px;
height:34px;
border-radius:999px;
border:1px solid #38bdf8;
position:relative;
box-shadow:0 0 14px rgba(56,189,248,.9);
}
.crosshair-aim::before,
.crosshair-aim::after{
content:"";
position:absolute;
left:50%;
top:50%;
background:#38bdf8;
transform:translate(-50%,-50%);
}
.crosshair-aim::before{
width:70%;
height:1px;
}
.crosshair-aim::after{
width:1px;
height:70px;
}
.create-panel-compact{
position:absolute;
left:50%;
top:45%;
transform:translate(-50%,-45%);
width:300px;
max-height:74vh;
overflow:auto;
background: var(--sw-panel-bg, rgba(7, 10, 14, 0.78));
backdrop-filter: blur(18px);
border-radius:18px;
border:1px solid var(--sw-panel-border, rgba(56,189,248,0.5));
box-shadow: 0 20px 40px rgba(0,0,0,0.65), 0 0 30px rgba(56,189,248,0.25);
padding: .4rem .5rem .55rem;
color: var(--sw-text, #e5e7eb);
}
.create-panel-header{
display:flex;
justify-content:space-between;
align-items:center;
font-size:.8rem;
letter-spacing:.08em;
text-transform:uppercase;
color:var(--sw-text,#e5e7eb);
margin-bottom:.25rem;
}
.create-panel-body{
display:flex;
flex-direction:column;
gap:.4rem;
}
.create-step-label{
font-size:.65rem;
text-transform:uppercase;
letter-spacing:.2em;
color:var(--sw-muted,rgba(255,255,255,0.6));
}
.create-panel-hero{
font-size:.85rem;
color:var(--sw-text,#f8fafc);
margin:0;
}
.create-panel-step{
display:flex;
flex-direction:column;
gap:.35rem;
}
.create-panel-note{
font-size:.75rem;
color:var(--sw-muted,rgba(255,255,255,0.6));
margin:0;
}
.create-panel-field{
display:flex;
flex-direction:column;
gap:.25rem;
font-size:.7rem;
color:var(--sw-text,#e5e7eb);
}
.create-panel-selects select,
.create-input-narrow{
background:rgba(255,255,255,0.04);
color:var(--sw-text,#e5e7eb);
border-radius:.65rem;
border:1px solid var(--sw-panel-border,rgba(255,255,255,0.28));
padding:.35rem .55rem;
}
.create-panel-selects select{
min-height:36px;
}
.create-input-narrow::placeholder{
color:var(--sw-muted,rgba(255,255,255,0.6));
}
.create-textarea-tight{
background:rgba(255,255,255,0.03);
border:1px solid var(--sw-panel-border,rgba(255,255,255,0.28));
color:var(--sw-text,#e5e7eb);
border-radius:.8rem;
padding:.35rem .6rem;
font-size:.75rem;
min-height:100px;
resize:none;
}
.create-panel-actions{
display:flex;
justify-content:space-between;
gap:.5rem;
margin-top:.2rem;
}
.create-panel-btn{
flex:1;
padding:.4rem .6rem;
font-size:.7rem;
border-radius:999px;
border:1px solid var(--sw-panel-border,rgba(226,232,240,0.4));
background:var(--sw-chip-bg,rgba(15,23,42,0.75));
color:var(--sw-text,#e5e7eb);
}
.create-panel-btn.primary{
background:linear-gradient(120deg,#38bdf8,#22c55e);
border-color:transparent;
color:#0f172a;
}
.create-panel-hero,
.create-panel-note,
.create-hint-tight{
margin:0;
}
.create-link-preview-tight{
border-radius:12px;
padding:.25rem;
background:var(--sw-panel-bg-2,rgba(15,23,42,0.8));
border:1px solid var(--sw-panel-border,rgba(148,163,184,0.4));
}
.create-post-header{
display:flex;
justify-content:space-between;
align-items:center;
font-size:.8rem;
margin-bottom:.4rem;
color:#e5e7eb;
}
.create-mode-bar{
display:flex;
flex-direction:column;
gap:.35rem;
margin-bottom:.4rem;
}
.create-mode-bar-label{
font-size:.66rem;
text-transform:uppercase;
letter-spacing:.18em;
color:#94a3b8;
}
.create-mode-chips{
display:flex;
gap:.35rem;
flex-wrap:wrap;
}
.create-mode-chip{
flex:1 1 110px;
display:flex;
align-items:center;
gap:.4rem;
padding:.35rem .65rem;
border-radius:999px;
border:1px solid rgba(148, 163, 184, 0.4);
background:rgba(15, 23, 42, 0.65);
color:#e5e7eb;
font-size:.7rem;
cursor:pointer;
transition:border-color .2s ease, box-shadow .2s ease;
}
.create-mode-chip.is-active{
border-color:transparent;
background:linear-gradient(120deg,#38bdf8,#22c55e);
color:#0f172a;
box-shadow:0 10px 20px rgba(56,189,248,.25);
}
.create-mode-hint{
font-size:.72rem;
color:#cbd5f5;
line-height:1.3;
min-height:1.1rem;
}
.mode-change-btn{
margin-top:.5rem;
align-self:flex-start;
}
.mode-selector-widget{
position:absolute;
left:50%;
top:18%;
transform:translate(-50%, -5%);
pointer-events:auto;
}
.mode-selector-bg{
position:absolute;
inset:0;
border-radius:18px;
background:linear-gradient(135deg,var(--sw-panel-bg-2,rgba(15,23,42,0.95)),var(--sw-panel-bg,rgba(15,23,42,0.8)));
border:1px solid var(--sw-panel-border,rgba(56,189,248,0.4));
box-shadow:0 20px 30px rgba(0,0,0,0.45);
}
.mode-selector-chips{
position:relative;
display:flex;
flex-wrap:wrap;
gap:.5rem;
padding:.5rem;
z-index:1;
}
.mode-selector-chip{
display:flex;
align-items:center;
gap:.35rem;
padding:.5rem .8rem;
border-radius:999px;
border:1px solid var(--sw-panel-border,rgba(255,255,255,0.15));
background:var(--sw-panel-bg,rgba(15,23,42,0.9));
color:var(--sw-text,#e5e7eb);
font-size:.7rem;
cursor:pointer;
transition:transform .15s ease, border-color .15s ease;
}
.mode-selector-chip.is-active{
border-color:rgba(56,189,248,0.8);
background:rgba(56,189,248,0.25);
}
.mode-selector-chip i{
font-size:1rem;
}
.create-mode-details{
display:flex;
flex-direction:column;
gap:.2rem;
font-size:.68rem;
color:#9ca3af;
}
.create-stepper{
background:rgba(255,255,255,0.02);
border-radius:999px;
padding:.2rem .3rem;
margin-bottom:.35rem;
}
.create-step{
font-size:.6rem;
}
.create-mode-detail-line{
display:flex;
gap:.35rem;
}
.create-mode-detail-line::before{
content:"•";
font-size:.9rem;
line-height:1.8;
color:#38bdf8;
}
@media (max-width: 640px){
.create-mode-chips{
flex-wrap:nowrap;
overflow-x:auto;
}
.create-mode-chip{
flex:0 0 auto;
}
}
.create-mode-panel{
margin-bottom:.4rem;
display:flex;
flex-direction:column;
gap:.35rem;
}
.create-mode-summary{
display:none;
align-items:center;
justify-content:space-between;
gap:.35rem;
border-radius:999px;
border:1px solid rgba(148,163,184,0.4);
padding:.35rem .6rem;
background:rgba(15,23,42,0.5);
font-size:.72rem;
color:#e5e7eb;
margin-bottom:.4rem;
}
.create-mode-summary-label{
display:flex;
align-items:center;
gap:.3rem;
}
.create-mode-summary-btn{
border-radius:999px;
border:1px solid rgba(148,163,184,0.6);
background:transparent;
color:#e5e7eb;
padding:.2rem .6rem;
font-size:.65rem;
cursor:pointer;
}
.create-mode-title{
font-size:.68rem;
text-transform:uppercase;
letter-spacing:.18em;
color:#94a3b8;
}
.create-mode-chips{
display:flex;
flex-wrap:wrap;
gap:.4rem;
}
.create-mode-chip{
flex:1 1 110px;
display:flex;
align-items:center;
gap:.35rem;
padding:.35rem .6rem;
border-radius:999px;
border:1px solid rgba(148, 163, 184, 0.5);
background:rgba(15,23,42,0.65);
color:#e5e7eb;
font-size:.7rem;
cursor:pointer;
transition:border-color .2s ease, box-shadow .2s ease;
}
.create-mode-chip:hover{
border-color:rgba(56,189,248,0.8);
}
.create-mode-chip.is-active{
border-color:transparent;
background:linear-gradient(120deg,#38bdf8,#22c55e);
color:#0f172a;
box-shadow:0 6px 16px rgba(34,197,94,0.35);
}
.create-mode-icon{
font-size:0.9rem;
}
.create-mode-helper{
font-size:.72rem;
color:#cbd5f5;
line-height:1.25;
min-height:1.2rem;
}
@media (max-width: 640px){
.create-mode-summary{
display:flex;
}
.create-mode-panel{
display:none;
}
.create-mode-panel.create-mode-visible-mobile{
display:flex;
}
}
@media (max-width: 640px){
.create-post-panel{
bottom:3%;
left:50%;
transform:translateX(-50%);
width:95%;
max-width:100%;
max-height:70vh;
border-radius:14px;
padding:.5rem .6rem .6rem;
}
.create-mode-chips{
gap:.3rem;
flex-wrap:nowrap;
overflow-x:auto;
}
.create-mode-chip{
flex:0 0 auto;
}
.create-mode-chip span{
font-size:.65rem;
}
.create-mode-title{
font-size:.6rem;
}
.create-stepper{
gap:.25rem;
}
.create-step-label{
font-size:.6rem;
}
.create-hint{
font-size:.65rem;
}
}
.create-close{
background:transparent;
border:none;
color:#9ca3af;
font-size:.85rem;
padding:.1rem .3rem;
cursor:pointer;
}
.create-stepper{
display:flex;
justify-content:space-between;
align-items:center;
gap:.4rem;
margin:.3rem 0 .35rem;
}
.create-step{
display:flex;
align-items:center;
gap:.35rem;
color:#64748b;
font-size:.68rem;
text-transform:uppercase;
letter-spacing:.08em;
}
.create-step-active{
color:#e2e8f0;
}
.create-step-dot{
width:18px;
height:18px;
border-radius:50%;
display:flex;
align-items:center;
justify-content:center;
font-size:.65rem;
background:#0f172a;
border:1px solid #334155;
color:#cbd5f5;
}
.create-step-current .create-step-dot{
background:linear-gradient(120deg, #38bdf8, #22c55e);
border-color:transparent;
color:#0f172a;
font-weight:700;
}
.create-step-label{
font-weight:600;
}
.create-step-progress{
height:4px;
background:rgba(148, 163, 184, 0.15);
border-radius:999px;
overflow:hidden;
}
.create-step-progress span{
display:block;
height:100%;
background:linear-gradient(90deg, #38bdf8, #22c55e);
}
.create-step-body{
margin-top:.35rem;
padding-bottom:.4rem;
}
.create-row{
display:flex;
align-items:center;
gap:.5rem;
margin-bottom:.4rem;
}
.create-link-row{
display:flex;
align-items:center;
gap:.5rem;
margin-bottom:.35rem;
}
.create-link-input{
flex:1;
margin-bottom:0;
}
.create-link-btn{
border-radius:999px;
border:1px solid rgba(148, 163, 184, 0.4);
background:#0f172a;
color:#e2e8f0;
padding:.35rem .7rem;
font-size:.7rem;
cursor:pointer;
white-space:nowrap;
}
.create-link-btn:disabled{
opacity:.6;
cursor:not-allowed;
}
.create-link-meta{
display:flex;
gap:.6rem;
font-size:.68rem;
color:#94a3b8;
margin-bottom:.35rem;
}
.create-link-error{
font-size:.68rem;
color:#f87171;
margin-bottom:.35rem;
}
.crosshair-label{
font-size:.75rem;
color:#cbd5f5;
}
.create-hint{
margin-top:.2rem;
font-size:.7rem;
color:#94a3b8;
}
.create-row select{
flex:1;
background:#020617;
border-radius:999px;
border:1px solid #4b5563;
padding:.35rem .7rem;
font-size:.75rem;
color:#e5e7eb;
}
.create-input{
width:100%;
margin-bottom:.3rem;
border-radius:999px;
border:1px solid #4b5563;
padding:.35rem .7rem;
background:#020617;
color:#e5e7eb;
font-size:.8rem;
}
.create-textarea{
width:100%;
border-radius:.75rem;
border:1px solid #4b5563;
padding:.35rem .7rem;
background:#020617;
color:#e5e7eb;
resize:none;
font-size:.78rem;
}
.create-image-option{
margin-top:.4rem;
}
.create-checkbox{
display:flex;
align-items:center;
gap:.5rem;
font-size:.72rem;
color:#e5e7eb;
cursor:pointer;
}
.create-image-panel{
display:flex;
flex-direction:column;
gap:.4rem;
margin-top:.35rem;
}
.create-image-choice{
display:flex;
gap:.5rem;
align-items:center;
margin:.25rem 0 .35rem;
}
.create-image-choice-btn{
flex:1;
padding:.4rem .6rem;
border-radius:999px;
border:1px solid rgba(148, 163, 184, 0.35);
background:rgba(15, 23, 42, 0.6);
color:#e2e8f0;
font-size:.72rem;
font-weight:700;
cursor:pointer;
}
.create-image-choice-btn.is-active{
border-color: rgba(56, 189, 248, 0.7);
box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.2);
}
.create-image-placeholder{
display:flex;
align-items:center;
gap:.6rem;
padding:.6rem;
border-radius:12px;
border:1px dashed rgba(148, 163, 184, 0.4);
background:rgba(15, 23, 42, 0.45);
margin:.35rem 0 .65rem;
}
.create-image-placeholder-title{
font-size:.8rem;
font-weight:800;
color:#e2e8f0;
}
.create-image-placeholder-sub{
font-size:.7rem;
color:#94a3b8;
}
.create-image-row{
display:flex;
gap:.5rem;
align-items:center;
}
.create-file-input{
display:none;
}
.create-file-btn{
display:inline-flex;
align-items:center;
gap:.4rem;
padding:.35rem .7rem;
border-radius:999px;
border:1px solid rgba(148, 163, 184, 0.4);
color:#e2e8f0;
font-size:.7rem;
background:rgba(15, 23, 42, 0.8);
cursor:pointer;
}
.create-file-btn--camera{
border-color: rgba(56, 189, 248, 0.65);
color:#e0f2fe;
}
.create-uploading{
font-size:.7rem;
color:#38bdf8;
}
.create-image-gallery{
display:flex;
flex-direction:column;
gap:.3rem;
margin-bottom:.4rem;
}
.create-gallery-title{
font-size:.7rem;
text-transform:uppercase;
letter-spacing:0.2em;
color:rgba(226, 232, 240, 0.7);
}
.create-gallery-items{
display:flex;
flex-wrap:nowrap;
gap:.3rem;
overflow-x:auto;
padding-bottom:.25rem;
}
.create-gallery-item{
position:relative;
width:54px;
height:54px;
}
.create-gallery-item img{
width:100%;
height:100%;
object-fit:cover;
border-radius:10px;
border:1px solid rgba(148, 163, 184, 0.5);
}
.create-gallery-remove{
position:absolute;
top:-6px;
right:-6px;
width:22px;
height:22px;
border-radius:50%;
border:1px solid rgba(255,255,255,0.4);
background:rgba(15,23,42,0.8);
color:#f8fafc;
font-size:12px;
display:flex;
align-items:center;
justify-content:center;
cursor:pointer;
}
.create-gallery-row{
display:flex;
gap:0;
margin-top:.1rem;
overflow-x:auto;
padding-bottom:.05rem;
}
.create-gallery-row figure{
margin:0;
}
.create-gallery-row--bottom{
margin-bottom:.2rem;
}
.create-gallery-static{
width:44px;
height:44px;
border-radius:12px;
border:1px solid rgba(255,255,255,0.3);
overflow:hidden;
flex:0 0 auto;
}
.create-gallery-static img{
width:100%;
height:100%;
object-fit:cover;
display:block;
}
.create-link-preview-card{
position:relative;
border-radius:18px;
background:rgba(15,23,42,0.85);
border:1px solid rgba(148,163,184,0.4);
box-shadow:0 20px 40px rgba(2,6,23,0.35);
padding:.35rem;
display:flex;
flex-direction:column;
gap:.45rem;
margin-bottom:.5rem;
}
.create-link-preview-card img{
width:100%;
height:140px;
border-radius:14px;
object-fit:cover;
border:1px solid rgba(148,163,184,0.5);
display:block;
}
.create-image-url-row{
display:flex;
gap:.4rem;
}
.create-gallery-add{
flex:0 0 auto;
padding:.35rem .65rem;
border-radius:999px;
border:1px solid rgba(56, 189, 248, 0.7);
background:rgba(56, 189, 248, 0.15);
color:#e0f2fe;
font-size:.72rem;
font-weight:700;
cursor:pointer;
}
.create-link-preview-meta{
display:flex;
flex-direction:column;
gap:.2rem;
font-size:.7rem;
color:#cbd5f5;
}
.create-muted{
font-size:.7rem;
color:#94a3b8;
}
.create-privacy-row{
display:flex;
align-items:center;
gap:.5rem;
font-size:.7rem;
color:#e5e7eb;
}
.create-privacy-row label{
white-space:nowrap;
color:#cbd5f5;
}
.create-privacy-row select{
flex:1;
background:#020617;
border-radius:999px;
border:1px solid #4b5563;
padding:.3rem .6rem;
font-size:.72rem;
color:#e5e7eb;
}
.create-error{
margin-top:.25rem;
font-size:.7rem;
color:#f97373;
}
.create-actions{
margin-top:.6rem;
display:flex;
justify-content:space-between;
align-items:center;
gap:.5rem;
}
.create-actions-right{
display:flex;
gap:.45rem;
align-items:center;
}
.create-back{
background:transparent;
border:1px solid rgba(148, 163, 184, 0.4);
color:#cbd5f5;
padding:.35rem .8rem;
border-radius:999px;
font-size:.72rem;
cursor:pointer;
}
.create-back:disabled{
opacity:.45;
cursor:not-allowed;
}
.create-review-card{
display:grid;
grid-template-columns:72px 1fr;
gap:.7rem;
padding:.6rem;
margin-top:.5rem;
border-radius:12px;
border:1px solid rgba(148, 163, 184, 0.35);
background:rgba(2, 6, 23, 0.7);
}
.create-review-media{
width:72px;
height:72px;
border-radius:12px;
overflow:hidden;
background:rgba(30, 41, 59, 0.85);
display:flex;
align-items:center;
justify-content:center;
}
.create-review-media img{
width:100%;
height:100%;
object-fit:cover;
}
.create-review-icon{
width:46px;
height:46px;
border-radius:14px;
background:rgba(56, 189, 248, 0.2);
display:flex;
align-items:center;
justify-content:center;
color:#38bdf8;
font-size:1.1rem;
}
.create-review-meta{
display:flex;
flex-direction:column;
gap:.2rem;
}
.create-review-title{
font-size:.85rem;
color:#e2e8f0;
font-weight:600;
}
.create-review-sub{
font-size:.7rem;
color:#94a3b8;
}
.create-review-body{
font-size:.74rem;
color:#cbd5f5;
max-height:3.8em;
overflow:hidden;
}
.create-review-visibility{
font-size:.68rem;
color:#38bdf8;
}
body[data-theme="blue"] .create-post-panel{
background: rgba(12, 20, 60, 0.96);
border-color: rgba(96, 165, 250, 0.95);
box-shadow: 0 16px 40px rgba(2,8,26,.85), 0 0 24px rgba(56,189,248,.5);
}
body[data-theme="blue"] .create-row select,
body[data-theme="blue"] .create-input,
body[data-theme="blue"] .create-textarea,
body[data-theme="blue"] .create-privacy-row select,
body[data-theme="blue"] .create-link-btn{
background: #0b1b3b;
border-color: rgba(96, 165, 250, 0.5);
color:#e2e8f0;
}
body[data-theme="blue"] .create-step{
color:#94a3b8;
}
body[data-theme="blue"] .create-step-active{
color:#e2e8f0;
}
body[data-theme="blue"] .create-step-dot{
background:#0b1b3b;
border-color: rgba(96, 165, 250, 0.6);
color:#e2e8f0;
}
body[data-theme="blue"] .create-back{
border-color: rgba(96, 165, 250, 0.55);
color:#e2e8f0;
}
body[data-theme="blue"] .create-review-card{
background: rgba(3, 10, 28, 0.7);
border-color: rgba(96, 165, 250, 0.4);
}
body[data-theme="light"] .create-post-panel{
background: rgba(248, 250, 252, 0.98);
border-color: rgba(148, 163, 184, 0.9);
box-shadow: 0 18px 36px rgba(15, 23, 42, 0.15);
color:#0f172a;
}
body[data-theme="light"] .create-row select,
body[data-theme="light"] .create-input,
body[data-theme="light"] .create-textarea,
body[data-theme="light"] .create-privacy-row select,
body[data-theme="light"] .create-link-btn{
background:#ffffff;
border-color: rgba(148, 163, 184, 0.7);
color:#0f172a;
}
body[data-theme="light"] .create-step{
color:#64748b;
}
body[data-theme="light"] .create-step-active{
color:#0f172a;
}
body[data-theme="light"] .create-step-dot{
background:#ffffff;
border-color: rgba(148, 163, 184, 0.7);
color:#334155;
}
body[data-theme="light"] .create-step-current .create-step-dot{
color:#0f172a;
}
body[data-theme="light"] .create-hint,
body[data-theme="light"] .create-muted{
color:#64748b;
}
body[data-theme="light"] .create-back{
border-color: rgba(148, 163, 184, 0.7);
color:#0f172a;
}
body[data-theme="light"] .create-review-card{
background: rgba(241, 245, 249, 0.95);
border-color: rgba(148, 163, 184, 0.6);
}
body[data-theme="light"] .create-review-title{
color:#0f172a;
}
body[data-theme="light"] .create-review-body{
color:#334155;
}
.chip-pill{
background: rgba(15, 23, 42, 0.96);
border: 1px solid rgba(148, 163, 184, 0.85);
color: #e5e7eb;
padding: 0.45rem 0.9rem;
font-size: 0.78rem;
border-radius: 999px;
cursor: pointer;
box-shadow: 0 5px 12px rgba(0,0,0,.7), 0 0 12px rgba(56,189,248,.35);
}
/* ===== SEARCHBAR TOP ===== */
.sw-searchbar{
pointer-events: auto;
display:flex;
align-items:center;
gap: .55rem;
padding: 0.42rem 0.70rem;
border-radius: 999px;
background: rgba(15, 23, 42, 0.92);
border: 1px solid rgba(148, 163, 184, 0.85);
box-shadow: 0 5px 12px rgba(0,0,0,.70), 0 0 14px rgba(56,189,248,.22);
backdrop-filter: blur(10px);
min-height: 38px;
width: 100%; /* ✅ prend toute la largeur de son conteneur */
}
.sw-searchbar:focus-within{
border-color: rgba(56,189,248,.85);
box-shadow: 0 8px 18px rgba(0,0,0,.72), 0 0 18px rgba(56,189,248,.35);
}
.sw-search-icon{
font-size: 14px;
opacity: .95;
}
.sw-search-input{
border: none;
outline: none;
background: transparent;
color: #e5e7eb;
font-size: 0.80rem;
font-weight: 800;
width: 100%;
max-width: 100%;
min-width: 0;
}
.sw-search-input::placeholder{
color: rgba(203, 213, 225, 0.88);
font-weight: 800;
}
.sw-search-clear{
border: none;
cursor: pointer;
width: 28px;
height: 28px;
border-radius: 999px;
background: rgba(2,6,23,.35);
border: 1px solid rgba(148,163,184,.35);
color: #e5e7eb;
font-weight: 900;
display:grid;
place-items:center;
}
.sw-search-clear:active{
transform: scale(0.97);
}
/* Light theme */
body[data-theme="light"] .sw-searchbar{
background: rgba(255,255,255,0.92);
border-color: rgba(148, 163, 184, 0.85);
box-shadow: 0 8px 18px rgba(0,0,0,.10);
}
body[data-theme="light"] .sw-search-input{
color:#0B1220;
}
body[data-theme="light"] .sw-search-input::placeholder{
color: rgba(91, 103, 122, 0.92);
}
body[data-theme="light"] .sw-search-clear{
background: rgba(255,255,255,.85);
color:#0B1220;
border-color: rgba(148,163,184,.55);
}
/* ===== TOP ROW: search + 2 icônes ===== */
/* Ligne entière */
.sw-top-row{
display:flex;
align-items:center;
justify-content:space-between;
gap:0.75rem;
width:100%;
}
/* ✅ Search = prend tout, icônes juste ce quil faut */
.sw-top-search{
flex: 1 1 auto;
max-width: 100%;
}
/* bloc des 2 boutons à droite, taille compacte */
.map-top-actions{
flex: 0 0 auto;
display:flex;
flex-direction:row;
align-items:center;
justify-content:flex-end;
gap:0.5rem;
}
/* boutons icône */
.map-action-btn{
display:flex;
flex-direction:column;
align-items:center;
justify-content:center;
padding:0.35rem 0.55rem;
border-radius:999px;
border:1px solid rgba(255,255,255,0.15);
background:rgba(5, 25, 60, 0.25);
backdrop-filter:blur(8px);
box-shadow:0 6px 14px rgba(0,0,0,0.35);
font-size:0.7rem;
line-height:1.1;
cursor:pointer;
white-space:nowrap;
}
.map-action-btn:disabled{
opacity:0.45;
cursor:default;
}
.map-action-icon{
font-size:1.05rem;
margin-bottom:0.15rem;
}
.map-action-label{
font-size:0.6rem;
text-transform:uppercase;
letter-spacing:0.04em;
}
/* petits écrans : on compresse un peu les boutons */
@media (max-width:480px){
.sw-top-row{
gap:0.5rem;
}
.map-action-btn{
padding:0.3rem 0.45rem;
}
}
/* === CACHER LES BOUTONS DE ZOOM MAPLIBRE (+/-) === */
.maplibregl-ctrl-zoom-in,
.maplibregl-ctrl-zoom-out{
display:none !important;
}
/* FIX FINAL : Texte blanc sur boutons MY SPOT / NEW WIRE (force le texte) */
.map-action-btn,
.map-action-btn * {
color: #e5e7eb !important; /* blanc forcé */
}
/* FIX FINAL : Texte noir sous thème Blue (comme Light) */
body[data-theme="blue"] .map-action-btn,
body[data-theme="blue"] .map-action-btn * {
color: #0b1220 !important; /* noir forcé */
}
/* Light theme : texte noir si besoin */
body[data-theme="light"] .map-action-btn,
body[data-theme="light"] .map-action-btn * {
color: #0b1220 !important;
}
/* FIX FINAL : Supprime le spot blanc MapLibre (cercle blanc en bas à droite) */
.maplibregl-ctrl-bottom-right,
.maplibregl-ctrl-group {
display: none !important;
}
.maplibregl-ctrl {
background: transparent !important;
box-shadow: none !important;
}
.map-overlay.mode-selector-widget{
pointer-events:none;
}
/* ===== FLOATING CREATE UI ===== */
.create-floating-ui{
--cf-bg: rgba(15,20,30,0.92);
--cf-border: rgba(100,116,139,0.25);
--cf-text: #f1f5f9;
--cf-muted: #cbd5e1;
--cf-accent: #e2e8f0;
--cf-glow: rgba(226,232,240,0.08);
--cf-input: rgba(30,41,59,0.9);
position:fixed;
bottom:50%;
left:50%;
transform:translate(-50%, 50%);
z-index:9000;
display:flex;
flex-direction:column;
gap:6px;
width:min(320px, calc(100vw - 24px));
pointer-events:none;
}
body[data-theme="light"] .create-floating-ui{
--cf-bg: rgba(255,255,255,0.94);
--cf-border: rgba(148,163,184,0.3);
--cf-text: #1e293b;
--cf-muted: #475569;
--cf-accent: #334155;
--cf-glow: rgba(51,65,85,0.08);
--cf-input: rgba(241,245,249,0.95);
}
body[data-theme="blue"] .create-floating-ui{
--cf-bg: rgba(15,23,42,0.95);
--cf-border: rgba(51,65,85,0.5);
--cf-text: #f1f5f9;
--cf-muted: #cbd5e1;
--cf-accent: #e2e8f0;
--cf-glow: rgba(226,232,240,0.06);
--cf-input: rgba(30,41,59,0.98);
}
/* Close button - inline top right */
.cfloat-close{
position:absolute;
top:-40px;
right:0;
width:32px;
height:32px;
border-radius:8px;
background: var(--cf-bg);
border:1px solid var(--cf-border);
color: var(--cf-muted);
font-size:0.85rem;
display:flex;
align-items:center;
justify-content:center;
cursor:pointer;
pointer-events:auto;
backdrop-filter:blur(20px) saturate(1.2);
-webkit-backdrop-filter:blur(20px) saturate(1.2);
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
transition:all 0.2s;
}
.cfloat-close:hover{
background:rgba(239,68,68,0.15);
border-color:rgba(239,68,68,0.5);
color:#ef4444;
}
/* Box base - stacked */
.cfloat-box{
background: var(--cf-bg);
border:1px solid var(--cf-border);
border-radius:12px;
padding:10px 14px;
backdrop-filter:blur(20px) saturate(1.2);
-webkit-backdrop-filter:blur(20px) saturate(1.2);
pointer-events:auto;
color: var(--cf-text);
animation: cfloat-in 0.2s ease-out;
box-shadow: 0 4px 16px rgba(0,0,0,0.15);
}
@keyframes cfloat-in{
from{ opacity:0; transform:translateY(8px); }
to{ opacity:1; transform:translateY(0); }
}
/* Step indicator */
.cfloat-step{
display:flex;
align-items:center;
justify-content:center;
gap:8px;
font-weight:600;
font-size:0.9rem;
padding:6px 10px;
}
.cfloat-step i{
color: var(--cf-accent);
font-size:1rem;
}
/* Hint */
.cfloat-hint{
text-align:center;
padding:10px 14px;
}
.cfloat-hint p{
margin:0;
font-size:0.9rem;
line-height:1.4;
color: var(--cf-muted);
}
/* Category */
.cfloat-category label{
display:block;
font-size:0.7rem;
font-weight:600;
text-transform:uppercase;
letter-spacing:0.05em;
color: var(--cf-muted);
margin-bottom:6px;
}
.cfloat-selects{
display:flex;
gap:6px;
}
.cfloat-selects select{
flex:1;
background: var(--cf-input);
color: var(--cf-text);
border:1px solid var(--cf-border);
border-radius:8px;
padding:8px 10px;
font-size:0.85rem;
cursor:pointer;
}
.cfloat-selects select:focus{
outline:none;
border-color: var(--cf-accent);
}
/* Title */
.cfloat-title label{
display:block;
font-size:0.7rem;
font-weight:600;
text-transform:uppercase;
letter-spacing:0.05em;
color: var(--cf-muted);
margin-bottom:6px;
}
.cfloat-title input{
width:100%;
background: var(--cf-input);
color: var(--cf-text);
border:1px solid var(--cf-border);
border-radius:8px;
padding:10px 12px;
font-size:0.9rem;
}
.cfloat-title input:focus{
outline:none;
border-color: var(--cf-accent);
}
.cfloat-meta{
display:block;
margin-top:4px;
font-size:0.7rem;
color: var(--cf-accent);
}
.cfloat-error{
display:block;
margin-top:4px;
font-size:0.7rem;
color:#ef4444;
}
/* Preview - compact */
.cfloat-preview{
display:flex;
align-items:center;
gap:10px;
padding:6px;
}
.cfloat-preview img{
width:60px;
height:45px;
object-fit:cover;
border-radius:6px;
flex-shrink:0;
}
.cfloat-preview span{
font-size:0.8rem;
color: var(--cf-muted);
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}
/* Description */
.cfloat-desc label{
display:block;
font-size:0.7rem;
font-weight:600;
text-transform:uppercase;
letter-spacing:0.05em;
color: var(--cf-muted);
margin-bottom:6px;
}
.cfloat-desc textarea{
width:100%;
background: var(--cf-input);
color: var(--cf-text);
border:1px solid var(--cf-border);
border-radius:8px;
padding:8px 10px;
font-size:0.85rem;
resize:none;
height:60px;
}
.cfloat-desc textarea:focus{
outline:none;
border-color: var(--cf-accent);
}
/* Image */
.cfloat-image{
padding:6px 10px;
}
.cfloat-img-toggle{
display:flex;
gap:6px;
margin-bottom:8px;
}
.cfloat-img-toggle button{
flex:1;
padding:6px 8px;
border-radius:6px;
border:1px solid var(--cf-border);
background:transparent;
color: var(--cf-muted);
font-size:0.8rem;
cursor:pointer;
transition:all 0.15s;
}
.cfloat-img-toggle button.active{
background: rgba(255,255,255,0.15);
border-color: var(--cf-text);
color: var(--cf-text);
}
.cfloat-img-toggle button i{
margin-right:3px;
}
.cfloat-img-upload{
display:flex;
gap:6px;
}
.cfloat-img-upload label{
flex:1;
padding:8px 6px;
border-radius:6px;
border:1px dashed var(--cf-border);
background: var(--cf-input);
color: var(--cf-muted);
font-size:0.7rem;
text-align:center;
cursor:pointer;
transition:all 0.15s;
}
.cfloat-img-upload label:hover{
border-color: var(--cf-accent);
color: var(--cf-accent);
}
.cfloat-img-upload label i{
display:block;
font-size:1rem;
margin-bottom:2px;
}
/* Gallery thumbnails */
.cfloat-gallery{
display:flex;
flex-wrap:wrap;
gap:6px;
margin-top:8px;
}
.cfloat-gallery-item{
position:relative;
width:60px;
height:60px;
border-radius:8px;
overflow:hidden;
border:1px solid var(--cf-border);
}
.cfloat-gallery-item img{
width:100%;
height:100%;
object-fit:cover;
}
.cfloat-gallery-item button{
position:absolute;
top:2px;
right:2px;
width:20px;
height:20px;
border-radius:50%;
border:none;
background:rgba(0,0,0,0.6);
color:#fff;
font-size:0.65rem;
cursor:pointer;
display:flex;
align-items:center;
justify-content:center;
}
.cfloat-gallery-item button:hover{
background:rgba(239,68,68,0.8);
}
/* Error box */
.cfloat-error-box{
display:flex;
align-items:center;
gap:8px;
background:rgba(239,68,68,0.15);
border-color:rgba(239,68,68,0.4);
color:#fca5a5;
}
.cfloat-error-box i{
color:#ef4444;
font-size:0.9rem;
}
.cfloat-error-box span{
font-size:0.8rem;
line-height:1.3;
}
/* Navigation */
.cfloat-nav{
display:flex;
gap:8px;
padding:6px 10px;
}
.cfloat-btn{
flex:1;
padding:10px 16px;
border-radius:8px;
border:1px solid var(--cf-border);
background: var(--cf-input);
color: var(--cf-text);
font-size:0.85rem;
font-weight:600;
cursor:pointer;
display:flex;
align-items:center;
justify-content:center;
gap:6px;
transition:all 0.15s;
}
.cfloat-btn:disabled{
opacity:0.4;
cursor:not-allowed;
}
.cfloat-btn:hover:not(:disabled){
border-color: var(--cf-accent);
}
.cfloat-btn-primary{
background: var(--cf-accent);
border-color: var(--cf-accent);
color:#0f172a;
}
.cfloat-btn-primary:hover:not(:disabled){
filter:brightness(1.1);
}
/* ===== MODE SELECTOR V2 - IMPROVED DESIGN ===== */
.mode-selector-backdrop{
position:fixed;
inset:0;
background:rgba(0,0,0,0.5);
z-index:9998;
backdrop-filter:blur(4px);
}
.mode-selector-v2{
--ms-bg: rgba(8,12,24,0.95);
--ms-glass: rgba(15,23,42,0.85);
--ms-border: rgba(56,189,248,0.3);
--ms-text: #f1f5f9;
--ms-text-muted: #94a3b8;
--ms-accent: #38bdf8;
--ms-glow: rgba(56,189,248,0.25);
position:absolute;
left:50%;
top:50%;
transform:translate(-50%,-50%);
pointer-events:auto;
background: var(--ms-bg);
backdrop-filter: blur(20px);
border-radius:18px;
border:1px solid var(--ms-border);
box-shadow:
0 25px 60px rgba(0,0,0,0.5),
0 0 40px var(--ms-glow);
padding:1rem;
min-width:260px;
z-index:9999;
}
body[data-theme="light"] .mode-selector-v2{
--ms-bg: rgba(248,250,252,0.97);
--ms-glass: rgba(255,255,255,0.9);
--ms-border: rgba(148,163,184,0.5);
--ms-text: #1e293b;
--ms-text-muted: #475569;
--ms-accent: #0ea5e9;
--ms-glow: rgba(14,165,233,0.15);
}
body[data-theme="blue"] .mode-selector-v2{
--ms-bg: rgba(15,23,42,0.97);
--ms-glass: rgba(30,41,59,0.9);
--ms-border: rgba(71,85,105,0.5);
--ms-text: #e2e8f0;
--ms-text-muted: #94a3b8;
--ms-accent: #60a5fa;
--ms-glow: rgba(96,165,250,0.15);
}
.mode-selector-v2 .mode-selector-bg{
display:none;
}
.mode-selector-close{
position:absolute;
top:0.6rem;
right:0.6rem;
width:28px;
height:28px;
border-radius:50%;
border:1px solid var(--ms-border);
background: var(--ms-glass);
color: var(--ms-text-muted);
font-size:0.9rem;
display:flex;
align-items:center;
justify-content:center;
cursor:pointer;
transition:all 0.2s ease;
z-index:10;
}
.mode-selector-close:hover{
background:rgba(239,68,68,0.15);
border-color:rgba(239,68,68,0.5);
color:#f87171;
transform:scale(1.05);
}
.mode-selector-title{
text-align:center;
font-size:1rem;
font-weight:700;
color: var(--ms-text);
margin-bottom:0.8rem;
padding-right:1.5rem;
}
.mode-selector-v2 .mode-selector-chips{
display:flex;
flex-direction:column;
gap:0.5rem;
padding:0;
}
.mode-selector-v2 .mode-selector-chip{
display:flex;
align-items:center;
gap:0.7rem;
padding:0.7rem 1rem;
border-radius:12px;
border:1px solid var(--ms-border);
background: var(--ms-glass);
color: var(--ms-text);
font-size:0.9rem;
font-weight:500;
cursor:pointer;
transition:all 0.2s ease;
text-align:left;
}
.mode-selector-v2 .mode-selector-chip i{
font-size:1.1rem;
width:22px;
text-align:center;
color: var(--ms-accent);
}
.mode-selector-v2 .mode-selector-chip:hover{
border-color: var(--ms-accent);
transform:translateX(3px);
}
.mode-selector-v2 .mode-selector-chip.is-active{
background: var(--ms-glow);
border-color: var(--ms-accent);
}
@media (max-width: 360px){
.mode-selector-v2{
min-width:auto;
width:calc(100vw - 24px);
padding:0.8rem;
}
.mode-selector-v2 .mode-selector-chip{
padding:0.6rem 0.8rem;
font-size:0.85rem;
}
}