200 lines
No EOL
4.6 KiB
CSS
200 lines
No EOL
4.6 KiB
CSS
/* =========================================
|
||
Variabili globali
|
||
========================================= */
|
||
:root {
|
||
--header-height: 60px; /* cambia se il tuo header è più alto/basso */
|
||
}
|
||
|
||
/* =========================================
|
||
MAPPA GLOBALE (contenitore sotto l’header)
|
||
========================================= */
|
||
.global-map {
|
||
position: fixed;
|
||
top: var(--header-height);
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
|
||
width: 100%;
|
||
display: none; /* visibile solo con .open */
|
||
z-index: 10; /* sotto a bottom-sheet (9999) e modal (10000) */
|
||
background: #000; /* evita flash bianco durante init */
|
||
}
|
||
|
||
.global-map.open {
|
||
display: block;
|
||
}
|
||
|
||
/* Leaflet riempie il contenitore */
|
||
.global-map .leaflet-container {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
/* Marker immagine (miniatura) */
|
||
.leaflet-marker-icon.photo-marker {
|
||
border-radius: 8px;
|
||
box-shadow: 0 4px 12px rgba(0,0,0,0.25);
|
||
border: 2px solid rgba(255,255,255,0.9);
|
||
background: #fff;
|
||
}
|
||
|
||
/* Nascondi la gallery quando la mappa è aperta */
|
||
.gallery.hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
/* =========================================
|
||
BOTTOM SHEET — struttura base comune
|
||
========================================= */
|
||
.bottom-sheet {
|
||
position: fixed;
|
||
bottom: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
|
||
background: rgba(255,255,255,0.95);
|
||
backdrop-filter: blur(6px);
|
||
border-top: 1px solid #ddd;
|
||
box-shadow: 0 -2px 10px rgba(0,0,0,0.15);
|
||
|
||
display: none; /* diventa flex con .open */
|
||
flex-direction: column;
|
||
z-index: 9999; /* molto alto: il modal starà sopra (10000) */
|
||
}
|
||
|
||
.bottom-sheet.open {
|
||
display: flex;
|
||
}
|
||
|
||
/* Maniglia superiore */
|
||
.sheet-header {
|
||
height: 16px;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
}
|
||
|
||
.sheet-header::before {
|
||
content: "";
|
||
width: 40px;
|
||
height: 4px;
|
||
background: #bbb;
|
||
border-radius: 4px;
|
||
}
|
||
|
||
/* =========================================
|
||
BOTTOM SHEET FOTO (strip bassa come nel vecchio)
|
||
========================================= */
|
||
.photo-strip {
|
||
height: 140px; /* altezza originale della strip */
|
||
overflow-y: hidden; /* niente scroll verticale */
|
||
overflow-x: auto; /* scroll orizzontale per le foto */
|
||
}
|
||
|
||
/* Contenitore elementi della strip — compatibile con id e class */
|
||
#sheetGallery,
|
||
.sheet-gallery {
|
||
display: flex;
|
||
flex-direction: row;
|
||
overflow-x: auto;
|
||
padding: 10px;
|
||
gap: 10px;
|
||
|
||
-webkit-overflow-scrolling: touch;
|
||
scroll-snap-type: x proximity;
|
||
}
|
||
|
||
/* Singolo elemento della strip */
|
||
.sheet-item {
|
||
width: 90px;
|
||
height: 90px;
|
||
border-radius: 10px;
|
||
overflow: hidden;
|
||
flex-shrink: 0;
|
||
box-shadow: 0 2px 6px rgba(0,0,0,0.25);
|
||
background: #eee;
|
||
scroll-snap-align: start;
|
||
}
|
||
|
||
/* Miniatura della foto nella strip */
|
||
.sheet-thumb,
|
||
.sheet-item img {
|
||
width: 100%;
|
||
height: 100%;
|
||
object-fit: cover;
|
||
display: block;
|
||
border-radius: 8px; /* alias; la .sheet-item ha già 10px */
|
||
}
|
||
|
||
/* =========================================
|
||
BOTTOM SHEET OPZIONI (⋮) — menu grande
|
||
========================================= */
|
||
.options-sheet {
|
||
height: auto;
|
||
max-height: 80vh;
|
||
overflow-y: auto;
|
||
}
|
||
|
||
.sheet-content {
|
||
padding: 20px;
|
||
}
|
||
|
||
.sheet-btn {
|
||
width: 100%;
|
||
padding: 12px;
|
||
margin-bottom: 8px;
|
||
text-align: left;
|
||
background: #f5f5f5;
|
||
border: none;
|
||
border-radius: 8px;
|
||
font-size: 15px;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.sheet-btn:hover {
|
||
background: #e8e8e8;
|
||
}
|
||
|
||
#optionsSheet h3 {
|
||
margin-top: 20px;
|
||
margin-bottom: 10px;
|
||
font-size: 16px;
|
||
color: #444;
|
||
}
|
||
|
||
/* =========================================
|
||
OVERLAY per chiusura sheet/option
|
||
========================================= */
|
||
.sheet-overlay {
|
||
position: fixed;
|
||
inset: 0;
|
||
background: rgba(0,0,0,0.0); /* invisibile ma cliccabile */
|
||
display: none;
|
||
z-index: 80; /* appena sotto il bottom sheet */
|
||
}
|
||
|
||
.sheet-overlay.open {
|
||
display: block;
|
||
}
|
||
|
||
/* =========================================
|
||
MODAL sopra allo sheet
|
||
========================================= */
|
||
.modal.open {
|
||
z-index: 10000 !important; /* sopra al bottom sheet (9999) */
|
||
}
|
||
|
||
/* =========================================
|
||
Piccoli affinamenti facoltativi
|
||
========================================= */
|
||
/* scrollbar sottile solo per la strip (opzionale) */
|
||
#sheetGallery::-webkit-scrollbar,
|
||
.sheet-gallery::-webkit-scrollbar {
|
||
height: 8px;
|
||
}
|
||
#sheetGallery::-webkit-scrollbar-thumb,
|
||
.sheet-gallery::-webkit-scrollbar-thumb {
|
||
background: rgba(0,0,0,0.25);
|
||
border-radius: 4px;
|
||
} |