:root {
    --page: #f4f6f8;
    --surface: #ffffff;
    --surface-subtle: #fafbfc;
    --text: #17202b;
    --muted: #748091;
    --border: #e6e9ee;

    --radius: 18px;
    --small-radius: 12px;
}

* {
    box-sizing: border-box;
}

html,
body {
    margin: 0;
    min-height: 100%;
}

body {
    background: var(--page);
    color: var(--text);
    font-family:
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        Roboto,
        Helvetica,
        Arial,
        sans-serif;
    line-height: 1.4;
}


/*
|--------------------------------------------------------------------------
| Page
|--------------------------------------------------------------------------
*/

.weather-page {
    width: min(800px, calc(100% - 40px));
    margin: clamp(24px, 4vw, 48px) auto;
}

.page-header {
    margin-bottom: 18px;
}

.eyebrow {
    margin-bottom: 4px;
    color: var(--muted);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .09em;
    text-transform: uppercase;
}

.page-header h1 {
    margin: 0;
    font-size: clamp(28px, 3.4vw, 40px);
    letter-spacing: -.035em;
    line-height: 1.08;
}


/*
|--------------------------------------------------------------------------
| Station
|--------------------------------------------------------------------------
*/

.station {
    margin-bottom: 18px;
    padding: clamp(18px, 2vw, 26px);
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
}

.station-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 24px;
    margin-bottom: 20px;
}

.station-header h2 {
    margin: 0;
    font-size: clamp(19px, 2vw, 23px);
    line-height: 1.2;
}

.station-time {
    flex-shrink: 0;
    color: var(--muted);
    font-size: 11px;
    line-height: 1.3;
    text-align: right;
}

.station-time span,
.station-time strong {
    display: block;
}

.station-time strong {
    margin-top: 2px;
    color: var(--text);
    font-size: 13px;
    font-weight: 650;
}


/*
|--------------------------------------------------------------------------
| Main station content
|--------------------------------------------------------------------------
*/

.station-content {
    display: grid;
    grid-template-columns:
        minmax(170px, 220px)
        minmax(0, 1fr);
    align-items: start;
    gap: clamp(18px, 2.5vw, 32px);
}


/*
|--------------------------------------------------------------------------
| Primary measurement
|--------------------------------------------------------------------------
*/

.primary-measurement {
    min-width: 0;
    padding-top: 10px;
}

.primary-label {
    margin-bottom: 4px;
    color: var(--muted);
    font-size: 12px;
}

.primary-value {
    font-size: clamp(48px, 5.8vw, 76px);
    font-weight: 300;
    letter-spacing: -.06em;
    line-height: .95;
    white-space: nowrap;
}


/*
|--------------------------------------------------------------------------
| Measurement groups
|--------------------------------------------------------------------------
*/

.groups {
    display: grid;
    grid-template-columns:
        repeat(
            auto-fit,
            minmax(min(260px, 100%), 1fr)
        );
    gap: 12px;
}

.measurement-group {
    min-width: 0;
    border: 1px solid var(--border);
    border-radius: var(--small-radius);
    overflow: hidden;
}

.measurement-group h3 {
    margin: 0;
    padding: 9px 13px;

    background: var(--surface-subtle);
    border-bottom: 1px solid var(--border);

    color: var(--muted);

    font-size: 10px;
    font-weight: 700;
    letter-spacing: .07em;
    line-height: 1.3;

    text-transform: uppercase;
}


/*
|--------------------------------------------------------------------------
| Measurements
|--------------------------------------------------------------------------
*/

.measurement {
    display: flex;
    align-items: center;
    justify-content: space-between;

    gap: 14px;

    min-height: 40px;
    padding: 9px 13px;
}

.measurement + .measurement {
    border-top: 1px solid var(--border);
}

.measurement-label {
    min-width: 0;
    color: var(--muted);
    font-size: 13px;
    line-height: 1.25;
}

.measurement-value {
    flex-shrink: 0;

    font-size: 15px;
    font-weight: 650;
    line-height: 1.25;

    text-align: right;
    white-space: nowrap;
}


/*
|--------------------------------------------------------------------------
| Footer / empty states
|--------------------------------------------------------------------------
*/

.station-footer {
    margin-top: 14px;

    color: var(--muted);

    font-size: 10px;
    line-height: 1.35;
}

.empty,
.station-empty {
    color: var(--muted);
}

.empty {
    padding: 40px 20px;

    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);

    text-align: center;
}

.station-empty {
    padding: 28px 0 6px;
}


/*
|--------------------------------------------------------------------------
| Medium screens
|--------------------------------------------------------------------------
*/

@media (max-width: 900px) {

    .weather-page {
        width: min(100% - 28px, 1440px);
    }

    .station-content {
        grid-template-columns:
            minmax(150px, 190px)
            minmax(0, 1fr);
        gap: 18px;
    }

    .groups {
        grid-template-columns: 1fr;
    }

    .primary-value {
        font-size: clamp(46px, 8vw, 66px);
    }
}


/*
|--------------------------------------------------------------------------
| Mobile
|--------------------------------------------------------------------------
*/

@media (max-width: 650px) {

    .weather-page {
        width: calc(100% - 20px);
        margin: 18px auto;
    }

    .page-header {
        margin-bottom: 14px;
    }

    .station {
        margin-bottom: 12px;
        padding: 16px;
        border-radius: 15px;
    }

    .station-header {
        margin-bottom: 16px;
    }

    .station-content {
        grid-template-columns: 1fr;
        gap: 16px;
    }

    .primary-measurement {
        padding-top: 0;
    }

    .primary-value {
        font-size: clamp(48px, 16vw, 68px);
    }

    .groups {
        grid-template-columns:
            repeat(
                auto-fit,
                minmax(min(220px, 100%), 1fr)
            );
        gap: 10px;
    }
}


/*
|--------------------------------------------------------------------------
| Small mobile
|--------------------------------------------------------------------------
*/

@media (max-width: 480px) {

    .station-header {
        align-items: flex-end;
        gap: 12px;
    }

    .station-header h2 {
        font-size: 18px;
    }

    .station-time {
        font-size: 10px;
    }

    .station-time strong {
        font-size: 12px;
    }

    .measurement-group h3 {
        padding: 8px 11px;
    }

    .measurement {
        min-height: 38px;
        padding: 8px 11px;
    }

    .measurement-label {
        font-size: 12px;
    }

    .measurement-value {
        font-size: 14px;
    }
}
