Files
PolyWeather/monitoring-web/static/style.css
T

197 lines
3.2 KiB
CSS

* { margin:0; padding:0; box-sizing:border-box; }
body {
background: #0f1117;
color: #c8cdd4;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
min-height: 100vh;
}
.page {
max-width: 1500px;
margin: 0 auto;
padding: 24px 28px;
}
.header {
display: flex;
justify-content: space-between;
align-items: baseline;
margin-bottom: 28px;
padding-bottom: 14px;
border-bottom: 1px solid #1e2130;
}
.header h1 {
font-size: 24px;
font-weight: 600;
color: #e8eaed;
letter-spacing: 0.02em;
}
/* ── grid ── */
.card-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 18px;
}
@media (max-width: 1100px) { .card-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .card-grid { grid-template-columns: 1fr; } }
/* ── card ── */
.card {
background: #161822;
border: 1px solid #1e2130;
border-radius: 12px;
padding: 22px 26px;
transition: border-color 0.3s, box-shadow 0.3s;
position: relative;
}
.card:hover {
border-color: #2a2e40;
}
/* ── card-top ── */
.card-top {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 14px;
font-size: 15px;
flex-wrap: wrap;
}
.city-name {
color: #e0e3e8;
font-weight: 700;
}
.airport {
color: #6a7180;
font-weight: 400;
}
.local-time {
margin-left: auto;
color: #4a5160;
font-variant-numeric: tabular-nums;
font-size: 14px;
}
.badge {
font-size: 12px;
padding: 2px 7px;
border-radius: 4px;
font-weight: 600;
}
.new-high {
background: rgba(124, 58, 237, 0.18);
color: #a78bfa;
}
.new-high-card {
border-color: rgba(124, 58, 237, 0.30);
}
/* ── temp ── */
.card-temp {
margin: 8px 0 10px;
font-weight: 700;
line-height: 1.15;
}
.temp-value {
font-size: 52px;
color: #e8eaed;
letter-spacing: -0.03em;
}
.temp-value.na {
color: #3a4050;
font-size: 32px;
}
.temp-value.warm {
color: #f59e0b;
}
.temp-value.new-high-val {
color: #c084fc;
}
.temp-unit {
font-size: 22px;
color: #5a6170;
margin-left: 3px;
}
/* ── meta ── */
.card-meta {
display: flex;
flex-direction: column;
gap: 5px;
margin-bottom: 2px;
}
.meta-row {
display: flex;
align-items: baseline;
gap: 8px;
font-size: 14px;
}
.meta-row .label {
color: #4a5160;
}
.meta-row .value {
color: #9aa0b0;
font-variant-numeric: tabular-nums;
}
.meta-row .value.na {
color: #3a4050;
}
.meta-row .trend {
margin-left: auto;
}
/* ── trend ── */
.trend { font-size: 18px; font-weight: 700; }
.trend.rising { color: #34d399; }
.trend.falling { color: #60a5fa; }
.trend.flat { color: #5a6170; }
/* ── runway ── */
.card-runway { margin-top: 12px; }
.runway-divider {
height: 1px;
background: #1e2130;
margin-bottom: 8px;
}
.runway-row {
display: flex;
justify-content: space-between;
font-size: 13px;
margin-bottom: 2px;
}
.runway-label { color: #4a5160; }
.runway-temp { color: #7a8290; font-variant-numeric: tabular-nums; }
/* ── obs age ── */
.obs-age { font-size: 13px; color: #5a6170; }
/* ── HTMX indicator ── */
.htmx-indicator {
text-align: center;
padding: 14px;
font-size: 14px;
color: #3a4050;
display: none;
}
.htmx-request .htmx-indicator,
.htmx-request.htmx-indicator { display: block; }