feat: refonte visuelle cartoon — fond OpenFreeMap, marqueurs SVG, légende comic, SpotPanel clair
- Fond cartoon : OpenFreeMap bright transformé (îles #7ec850, océan #3ab5e6, bordure #4a7c2f) - Overlay vagues SVG subtil sur toute la carte (opacity 6%) - Marqueurs spots SVG expressifs : ★ (ok), ! (risque), ✕ (impact) — animation bounce sur impact - Sargasses #f4a020 avec texture dots MapLibre + contour épais 3.5px - Légende comic : fond #fffbf0, bordure 3px, ombre dure 4px 4px 0 #333, Fredoka One - SpotPanel blanc cassé avec ombre dure cartoon, gauge coloré pastel (vert/jaune/rouge) - Topbar #1a1a2e avec boutons bleus ombre dure + hover translate(-2px,-2px) - Timeline : step actif avec ombre dure cartoon - Police Fredoka One chargée via Google Fonts Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -4,13 +4,14 @@
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
width: min(420px, calc(100vw - 32px));
|
||||
background: #1e293b;
|
||||
border: 1px solid #334155;
|
||||
border-radius: 16px;
|
||||
background: #fffbf0;
|
||||
border: 3px solid #333;
|
||||
border-radius: 20px;
|
||||
padding: 20px;
|
||||
color: #f1f5f9;
|
||||
box-shadow: 0 8px 32px rgba(0, 0, 0, .5);
|
||||
color: #1a2a1a;
|
||||
box-shadow: 5px 5px 0px #333;
|
||||
z-index: 10;
|
||||
font-family: 'Fredoka', sans-serif;
|
||||
}
|
||||
|
||||
.spot-panel__close {
|
||||
@@ -18,52 +19,62 @@
|
||||
top: 12px;
|
||||
right: 12px;
|
||||
background: none;
|
||||
border: none;
|
||||
color: #94a3b8;
|
||||
font-size: 16px;
|
||||
border: 2px solid #333;
|
||||
border-radius: 8px;
|
||||
color: #333;
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
padding: 4px 8px;
|
||||
border-radius: 6px;
|
||||
padding: 2px 7px;
|
||||
font-weight: bold;
|
||||
box-shadow: 2px 2px 0 #333;
|
||||
transition: transform .1s, box-shadow .1s;
|
||||
}
|
||||
.spot-panel__close:hover {
|
||||
transform: translate(-1px, -1px);
|
||||
box-shadow: 3px 3px 0 #333;
|
||||
}
|
||||
.spot-panel__close:active {
|
||||
transform: translate(1px, 1px);
|
||||
box-shadow: 1px 1px 0 #333;
|
||||
}
|
||||
.spot-panel__close:hover { background: #334155; }
|
||||
|
||||
.spot-panel__header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
margin-bottom: 16px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.spot-panel__icon { font-size: 28px; }
|
||||
.spot-panel__name { margin: 0; font-size: 18px; font-weight: 600; }
|
||||
.spot-panel__region { margin: 2px 0 0; font-size: 13px; color: #94a3b8; }
|
||||
.spot-panel__icon { font-size: 28px; }
|
||||
.spot-panel__name { margin: 0; font-size: 19px; font-weight: 600; font-family: 'Fredoka One', cursive; color: #1a1a2e; }
|
||||
.spot-panel__region { margin: 2px 0 0; font-size: 13px; color: #555; }
|
||||
|
||||
/* Horizon label */
|
||||
.spot-panel__horizon-label {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-size: 13px;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
color: #94a3b8;
|
||||
color: #555;
|
||||
margin-bottom: 10px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: .05em;
|
||||
}
|
||||
.spot-panel__confidence { font-weight: 400; color: #64748b; }
|
||||
.spot-panel__confidence { font-weight: 400; color: #888; }
|
||||
|
||||
/* Score */
|
||||
.spot-panel__score { margin-bottom: 16px; }
|
||||
/* Score gauge */
|
||||
.spot-panel__score { margin-bottom: 14px; }
|
||||
|
||||
/* Gauge */
|
||||
.spot-panel__gauge {
|
||||
padding: 14px 16px 12px;
|
||||
border-radius: 12px;
|
||||
border-radius: 14px;
|
||||
margin-bottom: 12px;
|
||||
border: 2px solid rgba(0,0,0,0.15);
|
||||
}
|
||||
.gauge--low { background: rgba(20, 83, 45, 0.45); }
|
||||
.gauge--medium { background: rgba(120, 53, 15, 0.45); }
|
||||
.gauge--high { background: rgba(127, 29, 29, 0.45); }
|
||||
.gauge--low { background: #dcfce7; }
|
||||
.gauge--medium { background: #fef9c3; }
|
||||
.gauge--high { background: #fee2e2; }
|
||||
|
||||
.spot-panel__gauge-top {
|
||||
display: flex;
|
||||
@@ -78,28 +89,31 @@
|
||||
text-transform: uppercase;
|
||||
letter-spacing: .07em;
|
||||
}
|
||||
.gauge--low .spot-panel__gauge-label { color: #86efac; }
|
||||
.gauge--medium .spot-panel__gauge-label { color: #fcd34d; }
|
||||
.gauge--high .spot-panel__gauge-label { color: #fca5a5; }
|
||||
.gauge--low .spot-panel__gauge-label { color: #16a34a; }
|
||||
.gauge--medium .spot-panel__gauge-label { color: #d97706; }
|
||||
.gauge--high .spot-panel__gauge-label { color: #dc2626; }
|
||||
|
||||
.spot-panel__gauge-score {
|
||||
font-size: 30px;
|
||||
font-weight: 700;
|
||||
color: #f1f5f9;
|
||||
font-family: 'Fredoka One', cursive;
|
||||
font-size: 32px;
|
||||
font-weight: 400;
|
||||
color: #1a1a2e;
|
||||
line-height: 1;
|
||||
}
|
||||
.spot-panel__gauge-max {
|
||||
font-size: 13px;
|
||||
font-weight: 400;
|
||||
color: #64748b;
|
||||
color: #999;
|
||||
margin-left: 2px;
|
||||
font-family: 'Fredoka', sans-serif;
|
||||
}
|
||||
|
||||
.spot-panel__gauge-track {
|
||||
height: 5px;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
height: 6px;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
border-radius: 3px;
|
||||
overflow: hidden;
|
||||
border: 1px solid rgba(0,0,0,0.1);
|
||||
}
|
||||
.spot-panel__gauge-fill {
|
||||
height: 100%;
|
||||
@@ -110,6 +124,7 @@
|
||||
.gauge--medium .spot-panel__gauge-fill { background: #eab308; }
|
||||
.gauge--high .spot-panel__gauge-fill { background: #ef4444; }
|
||||
|
||||
/* Details */
|
||||
.spot-panel__details {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
@@ -117,21 +132,21 @@
|
||||
font-size: 13px;
|
||||
margin: 0;
|
||||
}
|
||||
.spot-panel__details dt { color: #94a3b8; }
|
||||
.spot-panel__details dd { margin: 0; font-weight: 500; }
|
||||
.spot-panel__details dt { color: #777; }
|
||||
.spot-panel__details dd { margin: 0; font-weight: 600; color: #1a1a2e; }
|
||||
|
||||
.spot-panel__loading,
|
||||
.spot-panel__no-data,
|
||||
.spot-panel__error { color: #94a3b8; font-size: 14px; text-align: center; padding: 12px 0; }
|
||||
.spot-panel__error { color: #f87171; }
|
||||
.spot-panel__error { font-size: 14px; text-align: center; padding: 12px 0; color: #777; }
|
||||
.spot-panel__error { color: #dc2626; }
|
||||
|
||||
/* Feedback */
|
||||
.spot-panel__feedback {
|
||||
border-top: 1px solid #334155;
|
||||
border-top: 2px solid #e5e7eb;
|
||||
padding-top: 14px;
|
||||
text-align: center;
|
||||
}
|
||||
.spot-panel__feedback p { margin: 0 0 10px; font-size: 13px; color: #94a3b8; }
|
||||
.spot-panel__feedback p { margin: 0 0 10px; font-size: 13px; color: #555; }
|
||||
|
||||
.spot-panel__feedback-btns {
|
||||
display: flex;
|
||||
@@ -141,47 +156,65 @@
|
||||
.spot-panel__feedback-btns button {
|
||||
flex: 1;
|
||||
padding: 8px 12px;
|
||||
border: 1px solid #475569;
|
||||
border-radius: 8px;
|
||||
background: #0f172a;
|
||||
color: #f1f5f9;
|
||||
border: 2px solid #333;
|
||||
border-radius: 10px;
|
||||
background: #f1f5f9;
|
||||
color: #1a1a2e;
|
||||
font-family: 'Fredoka', sans-serif;
|
||||
font-size: 13px;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
transition: background .15s;
|
||||
box-shadow: 2px 2px 0 #333;
|
||||
transition: transform .1s, box-shadow .1s;
|
||||
}
|
||||
.spot-panel__feedback-btns button:hover:not(:disabled) {
|
||||
transform: translate(-1px, -1px);
|
||||
box-shadow: 3px 3px 0 #333;
|
||||
}
|
||||
.spot-panel__feedback-btns button:active:not(:disabled) {
|
||||
transform: translate(1px, 1px);
|
||||
box-shadow: 1px 1px 0 #333;
|
||||
}
|
||||
.spot-panel__feedback-btns button:hover:not(:disabled) { background: #1e293b; border-color: #64748b; }
|
||||
.spot-panel__feedback-btns button:disabled { opacity: .5; cursor: default; }
|
||||
|
||||
.spot-panel__feedback-thanks {
|
||||
text-align: center;
|
||||
color: #86efac;
|
||||
color: #16a34a;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
margin: 0;
|
||||
padding-top: 14px;
|
||||
border-top: 1px solid #334155;
|
||||
border-top: 2px solid #e5e7eb;
|
||||
}
|
||||
|
||||
/* Push notifications */
|
||||
/* Push */
|
||||
.spot-panel__push {
|
||||
border-top: 1px solid #334155;
|
||||
border-top: 2px solid #e5e7eb;
|
||||
padding-top: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
.spot-panel__push-btn {
|
||||
width: 100%;
|
||||
padding: 9px 16px;
|
||||
border: 1px solid #475569;
|
||||
border-radius: 8px;
|
||||
background: #0f172a;
|
||||
color: #94a3b8;
|
||||
border: 2px solid #333;
|
||||
border-radius: 10px;
|
||||
background: #f1f5f9;
|
||||
color: #555;
|
||||
font-family: 'Fredoka', sans-serif;
|
||||
font-size: 13px;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
transition: background .15s, border-color .15s;
|
||||
box-shadow: 2px 2px 0 #333;
|
||||
transition: transform .1s, box-shadow .1s;
|
||||
}
|
||||
.spot-panel__push-btn:hover:not(:disabled) { background: #1e293b; border-color: #64748b; color: #f1f5f9; }
|
||||
.spot-panel__push-btn--active { border-color: #0ea5e9; color: #38bdf8; }
|
||||
.spot-panel__push-btn:hover:not(:disabled) {
|
||||
transform: translate(-1px, -1px);
|
||||
box-shadow: 3px 3px 0 #333;
|
||||
color: #1a1a2e;
|
||||
}
|
||||
.spot-panel__push-btn--active { border-color: #0ea5e9; color: #0284c7; background: #e0f2fe; }
|
||||
.spot-panel__push-btn:disabled { opacity: .5; cursor: default; }
|
||||
.spot-panel__push-error { color: #f87171; font-size: 12px; margin-top: 6px; }
|
||||
.spot-panel__push-error { color: #dc2626; font-size: 12px; margin-top: 6px; }
|
||||
|
||||
/* ── Mobile ── */
|
||||
@media (max-width: 480px) {
|
||||
@@ -191,16 +224,10 @@
|
||||
right: 0;
|
||||
transform: none;
|
||||
width: 100%;
|
||||
border-radius: 16px 16px 0 0;
|
||||
border-radius: 20px 20px 0 0;
|
||||
max-height: 70vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.spot-panel__feedback-btns {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.spot-panel__details {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.spot-panel__feedback-btns { flex-direction: column; }
|
||||
.spot-panel__details { grid-template-columns: 1fr; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user