Horizon / src /pages /MapView.css
NKessler's picture
Upload 6270 files
4083225 verified
Raw
History Blame Contribute Delete
4.79 kB
.map-view-page {
display: grid;
gap: var(--sp-5);
}
.map-view {
position: relative;
background: var(--bg);
overflow: hidden;
min-height: clamp(420px, 68vh, 760px);
border: 1px solid var(--border);
}
.map-view__hint {
position: absolute;
bottom: var(--sp-5);
right: var(--sp-5);
font-family: var(--font-mono);
font-size: var(--fs-xs);
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--text-faint);
background: rgba(13, 15, 20, 0.6);
border: 1px solid var(--border);
padding: 6px 10px;
pointer-events: none;
}
/* spinner reused across views */
.spin {
animation: spin 900ms linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
.map-view__loading {
position: absolute;
bottom: var(--sp-5);
left: var(--sp-5);
display: flex;
align-items: center;
gap: var(--sp-2);
font-size: var(--fs-xs);
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--text-muted);
background: rgba(13, 15, 20, 0.6);
border: 1px solid var(--border);
padding: 6px 10px;
}
/* ---------- Legend ---------- */
.map-legend {
position: absolute;
top: var(--sp-5);
left: var(--sp-5);
z-index: 4;
background: rgba(13, 15, 20, 0.65);
border: 1px solid var(--border);
padding: var(--sp-3) var(--sp-4);
min-width: 220px;
}
.map-legend__title {
margin-bottom: var(--sp-2);
}
.map-legend__bar {
display: grid;
grid-template-columns: repeat(5, 1fr);
height: 8px;
}
.map-legend__cell {
height: 100%;
}
.map-legend__scale {
display: grid;
grid-template-columns: max-content 1fr max-content;
align-items: center;
column-gap: var(--sp-3);
margin-top: var(--sp-2);
width: 100%;
}
.map-legend__scale-label {
font-size: var(--fs-xs);
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--text-faint);
white-space: nowrap;
}
.map-legend__scale-label--low {
justify-self: start;
}
.map-legend__scale-label--high {
justify-self: end;
}
/* Visual bridge so “low” and “high” read as ends of the scale, not a tight pair. */
.map-legend__scale-gap {
display: block;
height: 1px;
min-width: var(--sp-4);
background: linear-gradient(
90deg,
transparent,
var(--border) 35%,
var(--border-strong) 50%,
var(--border) 65%,
transparent
);
opacity: 0.85;
}
/* ---------- Tooltip ---------- */
.map-tooltip {
position: fixed;
top: 0;
left: 0;
z-index: 6;
background: rgba(13, 15, 20, 0.92);
border: 1px solid var(--border-strong);
padding: var(--sp-3) var(--sp-4);
min-width: 200px;
pointer-events: none;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
}
.map-tooltip__name {
font-family: var(--font-display);
font-size: var(--fs-lg);
margin-bottom: var(--sp-2);
}
.map-tooltip__row {
display: flex;
justify-content: space-between;
align-items: baseline;
font-size: var(--fs-xs);
margin-top: 2px;
}
.map-tooltip__row.faint {
color: var(--text-faint);
letter-spacing: 0.06em;
}
.map-articles {
border: 1px solid var(--border);
background: var(--surface);
padding: var(--sp-5);
}
.map-articles__head {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: var(--sp-4);
margin-bottom: var(--sp-4);
}
.map-articles__title {
margin-top: 4px;
font-family: var(--font-display);
}
.map-articles__loading {
display: flex;
align-items: center;
gap: var(--sp-2);
font-size: var(--fs-xs);
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--text-muted);
}
.map-articles__list {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
}
.map-article {
padding: var(--sp-4) 0;
border-top: 1px dashed var(--border);
}
.map-article:first-child {
border-top: 0;
padding-top: 0;
}
.map-article__title {
font-family: var(--font-display);
color: var(--text);
text-decoration: none;
}
.map-article__title:hover {
text-decoration: underline;
}
.map-article__meta {
margin-top: var(--sp-1);
color: var(--text-muted);
display: flex;
gap: var(--sp-2);
font-size: var(--fs-xs);
}
.map-article__summary {
margin-top: var(--sp-2);
color: var(--text-muted);
line-height: var(--lh-relaxed);
}
@media (max-width: 900px) {
.map-view {
min-height: clamp(360px, 56vh, 560px);
}
.map-legend {
top: var(--sp-3);
left: var(--sp-3);
min-width: 0;
width: calc(100% - (2 * var(--sp-3)));
max-width: 320px;
}
.map-view__loading {
left: var(--sp-3);
bottom: var(--sp-3);
}
.map-view__hint {
right: var(--sp-3);
bottom: var(--sp-3);
max-width: calc(100% - (2 * var(--sp-3)));
}
}
@media (max-width: 640px) {
.map-legend,
.map-view__hint {
display: none;
}
.map-articles {
padding: var(--sp-4);
}
}