feat: apply design tokens to stats, map, mini-map; teal markers
This commit is contained in:
@@ -347,12 +347,12 @@ body {
|
|||||||
.lightbox-prev:hover,
|
.lightbox-prev:hover,
|
||||||
.lightbox-next:hover { background: rgba(255,255,255,0.26); }
|
.lightbox-next:hover { background: rgba(255,255,255,0.26); }
|
||||||
|
|
||||||
/* ── Map page ───────────────────────────────────────────────────────────────── */
|
/* ── Map page ────────────────────────────────────────────────────────────────── */
|
||||||
|
|
||||||
.map-page .site-main { max-width: none; padding: 0; }
|
.map-page .site-main { max-width: none; padding: 0; }
|
||||||
|
|
||||||
.map-container {
|
.map-container {
|
||||||
height: calc(100vh - 61px);
|
height: calc(100vh - var(--site-header-height));
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -361,72 +361,87 @@ body {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
color: #666;
|
color: var(--color-ink-muted);
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Stats page ─────────────────────────────────────────────────────────────── */
|
/* ── Stats page ──────────────────────────────────────────────────────────────── */
|
||||||
|
|
||||||
|
.stats-heading {
|
||||||
|
font-family: var(--font-display);
|
||||||
|
font-size: var(--text-2xl);
|
||||||
|
font-weight: 400;
|
||||||
|
margin-bottom: var(--space-8);
|
||||||
|
color: var(--color-ink);
|
||||||
|
}
|
||||||
|
|
||||||
.stats-grid {
|
.stats-grid {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(2, 1fr);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
gap: 1rem;
|
gap: var(--space-4);
|
||||||
margin-bottom: 2rem;
|
margin-bottom: var(--space-8);
|
||||||
}
|
}
|
||||||
|
|
||||||
.stat-block {
|
.stat-block {
|
||||||
border: 1px solid #e5e5e5;
|
background: var(--color-canvas);
|
||||||
border-radius: 8px;
|
border: 1px solid var(--color-border);
|
||||||
padding: 1.25rem 1rem;
|
border-radius: var(--radius-md);
|
||||||
|
padding: var(--space-6) var(--space-5);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
box-shadow: 0 1px 3px rgba(0,0,0,0.06);
|
box-shadow: var(--shadow-sm);
|
||||||
}
|
}
|
||||||
|
|
||||||
.stat-value {
|
.stat-value {
|
||||||
display: block;
|
display: block;
|
||||||
font-size: 2.5rem;
|
font-family: var(--font-display);
|
||||||
font-weight: 700;
|
font-size: var(--text-3xl);
|
||||||
color: #0066cc;
|
font-weight: 400;
|
||||||
|
color: var(--color-accent);
|
||||||
line-height: 1.1;
|
line-height: 1.1;
|
||||||
margin-bottom: 0.3rem;
|
margin-bottom: var(--space-2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.stat-label {
|
.stat-label {
|
||||||
display: block;
|
display: block;
|
||||||
font-size: 0.8rem;
|
font-size: var(--text-xs);
|
||||||
color: #666;
|
font-weight: 600;
|
||||||
|
color: var(--color-ink-muted);
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
letter-spacing: 0.04em;
|
letter-spacing: 0.07em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.stats-countries {
|
.stats-countries {
|
||||||
font-size: 0.9rem;
|
font-size: var(--text-sm);
|
||||||
color: #444;
|
color: var(--color-ink-2);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 1.8;
|
line-height: 1.9;
|
||||||
}
|
}
|
||||||
|
|
||||||
.stats-countries-label {
|
.stats-countries-label {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
display: block;
|
display: block;
|
||||||
margin-bottom: 0.4rem;
|
margin-bottom: var(--space-2);
|
||||||
color: #1a1a1a;
|
color: var(--color-ink);
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: var(--text-xs);
|
||||||
|
letter-spacing: 0.07em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.stats-note {
|
.stats-note {
|
||||||
font-size: 0.78rem;
|
font-size: var(--text-xs);
|
||||||
color: #999;
|
color: var(--color-ink-muted);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin-top: 1.5rem;
|
margin-top: var(--space-6);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Mini-map on tracker feed ───────────────────────────────────────────────── */
|
/* ── Mini-map on tracker feed ────────────────────────────────────────────────── */
|
||||||
|
|
||||||
.feed-map-wrap {
|
.feed-map-wrap {
|
||||||
margin-bottom: 2rem;
|
margin-bottom: var(--space-10);
|
||||||
border-radius: 8px;
|
border-radius: var(--radius-md);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
border: 1px solid #e5e5e5;
|
border: 1px solid var(--color-border);
|
||||||
|
box-shadow: var(--shadow-sm);
|
||||||
}
|
}
|
||||||
|
|
||||||
.feed-map {
|
.feed-map {
|
||||||
@@ -435,20 +450,23 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 520px) {
|
@media (min-width: 520px) {
|
||||||
.feed-map { height: 320px; }
|
.feed-map { height: 300px; }
|
||||||
}
|
}
|
||||||
|
|
||||||
.feed-map-link {
|
.feed-map-link {
|
||||||
display: block;
|
display: block;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
font-size: 0.8rem;
|
font-size: var(--text-xs);
|
||||||
color: #0066cc;
|
font-weight: 500;
|
||||||
|
color: var(--color-accent);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
padding: 0.4rem 0.6rem;
|
padding: var(--space-2) var(--space-4);
|
||||||
background: #fafafa;
|
background: var(--color-paper);
|
||||||
border-top: 1px solid #e5e5e5;
|
border-top: 1px solid var(--color-border);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.feed-map-link:hover { color: var(--color-accent-hover); }
|
||||||
|
|
||||||
/* ── Login form ─────────────────────────────────────────────────────────────── */
|
/* ── Login form ─────────────────────────────────────────────────────────────── */
|
||||||
|
|
||||||
.login-form { max-width: 400px; margin: var(--space-8) auto; padding: 0 var(--space-4); }
|
.login-form { max-width: 400px; margin: var(--space-8) auto; padding: 0 var(--space-4); }
|
||||||
|
|||||||
@@ -48,17 +48,17 @@ if (ENTRIES.length === 0) {
|
|||||||
var latLngs = ENTRIES.map(function(e) { return [parseFloat(e.lat), parseFloat(e.lng)]; });
|
var latLngs = ENTRIES.map(function(e) { return [parseFloat(e.lat), parseFloat(e.lng)]; });
|
||||||
|
|
||||||
// Route polyline
|
// Route polyline
|
||||||
L.polyline(latLngs, { color: '#0066cc', weight: 3, opacity: 0.7 }).addTo(map);
|
L.polyline(latLngs, { color: '#1F6B5A', weight: 3, opacity: 0.7 }).addTo(map);
|
||||||
|
|
||||||
// Markers
|
// Markers
|
||||||
ENTRIES.forEach(function(entry, i) {
|
ENTRIES.forEach(function(entry, i) {
|
||||||
var isLatest = (i === ENTRIES.length - 1);
|
var isLatest = (i === ENTRIES.length - 1);
|
||||||
var size = isLatest ? 18 : 12;
|
var size = isLatest ? 18 : 12;
|
||||||
var color = isLatest ? '#0044aa' : '#0066cc';
|
var color = isLatest ? '#155244' : '#1F6B5A';
|
||||||
|
|
||||||
var icon = L.divIcon({
|
var icon = L.divIcon({
|
||||||
className: '',
|
className: '',
|
||||||
html: '<div style="width:' + size + 'px;height:' + size + 'px;background:' + color + ';border:2px solid #fff;border-radius:50%;box-shadow:0 1px 4px rgba(0,0,0,0.4);' + (isLatest ? 'box-shadow:0 0 0 3px rgba(0,102,204,0.3),0 1px 4px rgba(0,0,0,0.4);' : '') + '"></div>',
|
html: '<div style="width:' + size + 'px;height:' + size + 'px;background:' + color + ';border:2px solid #fff;border-radius:50%;box-shadow:0 1px 4px rgba(0,0,0,0.4);' + (isLatest ? 'box-shadow:0 0 0 3px rgba(31,107,90,0.3),0 1px 4px rgba(0,0,0,0.4);' : '') + '"></div>',
|
||||||
iconSize: [size, size],
|
iconSize: [size, size],
|
||||||
iconAnchor: [size/2, size/2],
|
iconAnchor: [size/2, size/2],
|
||||||
popupAnchor: [0, -(size/2 + 4)]
|
popupAnchor: [0, -(size/2 + 4)]
|
||||||
@@ -70,7 +70,7 @@ if (ENTRIES.length === 0) {
|
|||||||
}
|
}
|
||||||
popupContent += '<div style="font-size:0.75rem;color:#666;margin-bottom:2px;">📅 ' + entry.date + '</div>';
|
popupContent += '<div style="font-size:0.75rem;color:#666;margin-bottom:2px;">📅 ' + entry.date + '</div>';
|
||||||
popupContent += '<div style="font-weight:600;font-size:0.9rem;margin-bottom:8px;">' + entry.title + '</div>';
|
popupContent += '<div style="font-weight:600;font-size:0.9rem;margin-bottom:8px;">' + entry.title + '</div>';
|
||||||
popupContent += '<a href="' + entry.url + '" style="color:#0066cc;font-size:0.85rem;text-decoration:none;">Read entry →</a>';
|
popupContent += '<a href="' + entry.url + '" style="color:#1F6B5A;font-size:0.85rem;text-decoration:none;">Read entry →</a>';
|
||||||
popupContent += '</div>';
|
popupContent += '</div>';
|
||||||
|
|
||||||
L.marker([parseFloat(entry.lat), parseFloat(entry.lng)], { icon: icon })
|
L.marker([parseFloat(entry.lat), parseFloat(entry.lng)], { icon: icon })
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
<div class="stats-page">
|
<div class="stats-page">
|
||||||
<h1 style="font-size:1.5rem;margin-bottom:1.5rem;">Trip Statistics</h1>
|
<h1 class="stats-heading">Trip Statistics</h1>
|
||||||
|
|
||||||
<div class="stats-grid">
|
<div class="stats-grid">
|
||||||
<div class="stat-block">
|
<div class="stat-block">
|
||||||
|
|||||||
@@ -35,13 +35,13 @@ L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
|||||||
var latLngs = FEED_ENTRIES.map(function(e) { return [parseFloat(e.lat), parseFloat(e.lng)]; });
|
var latLngs = FEED_ENTRIES.map(function(e) { return [parseFloat(e.lat), parseFloat(e.lng)]; });
|
||||||
|
|
||||||
if (latLngs.length > 1) {
|
if (latLngs.length > 1) {
|
||||||
L.polyline(latLngs, { color: '#0066cc', weight: 3, opacity: 0.7 }).addTo(map);
|
L.polyline(latLngs, { color: '#1F6B5A', weight: 3, opacity: 0.7 }).addTo(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
FEED_ENTRIES.forEach(function(entry, i) {
|
FEED_ENTRIES.forEach(function(entry, i) {
|
||||||
var isLatest = (i === FEED_ENTRIES.length - 1);
|
var isLatest = (i === FEED_ENTRIES.length - 1);
|
||||||
var size = isLatest ? 16 : 10;
|
var size = isLatest ? 16 : 10;
|
||||||
var color = isLatest ? '#0044aa' : '#0066cc';
|
var color = isLatest ? '#155244' : '#1F6B5A';
|
||||||
var icon = L.divIcon({
|
var icon = L.divIcon({
|
||||||
className: '',
|
className: '',
|
||||||
html: '<div style="width:' + size + 'px;height:' + size + 'px;background:' + color + ';border:2px solid #fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,0.35);cursor:pointer;"></div>',
|
html: '<div style="width:' + size + 'px;height:' + size + 'px;background:' + color + ';border:2px solid #fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,0.35);cursor:pointer;"></div>',
|
||||||
|
|||||||
Reference in New Issue
Block a user