.conference-weather { margin: 1.5em 0; text-align: left; min-width: 0; overflow-wrap: anywhere; }
.conference-weather h2, .conference-weather h3 { text-transform: none; }
.conference-weather .table_inside { width: 100%; max-width: 100%; overflow-x: auto; }
.conference-weather table { width: 100%; border-collapse: collapse; font-size: 90%; }
.conference-weather caption { text-align: left; font-weight: bold; padding: .5em; }
.conference-weather th, .conference-weather td { padding: .5em; border-bottom: 1px solid #bbb; text-align: left; vertical-align: top; }
.conference-weather small { display: block; }
.conference-weather .weather-note { font-size: 85%; }
.conference-weather .fa-solid { width: 1.2em; text-align: center; }
.conference-weather .weather-metrics, .conference-weather .weather-days, .conference-weather .weather-weeks { list-style: none; padding-left: 0; margin: .5em 0; }
.conference-weather li { margin: .4em 0; }
.weather-detailed h2:not(:first-child) { margin-top: 1.5em; }
.weather-detailed .table_inside { margin: 1em 0; }

/* Scope the compact layout to the explicitly requested landing-page preview. */
table.banners.weather-preview { width: 100%; max-width: 38em; table-layout: fixed; margin-left: auto; margin-right: auto; }
.weather-preview > thead > tr > th { width: 50%; }
.weather-preview > thead > tr > th:first-child { padding-bottom: .65em; }
.weather-preview > tbody > tr > td { display: table-cell; vertical-align: top; padding: .5em; }
.weather-preview .conference-weather { margin: 0; font-size: 90%; }
.weather-preview .weather-metrics > li { margin: .6em 0; }
.weather-preview .conference-weather p { margin: .5em 0; padding: 0; }
.weather-preview .weather-clock::before { display: none; }
@media screen and (max-width: 700px) {
    table.banners.weather-preview,
    .weather-preview > tbody,
    .weather-preview > tbody > tr,
    .weather-preview > tbody > tr > td { display: block; width: auto; }
    .weather-preview > thead { display: none; }
    .weather-preview .weather-clock::before {
        content: attr(data-label); display: block; font-weight: bold; text-align: center;
    }
    .weather-detailed th, .weather-detailed td { padding: .4em; }
}
@media print { .conference-weather .table_inside { overflow: visible; } }

/* One shared, server-rendered hourly climate chart; no external SVG resources. */
.conference-weather .weather-profile { margin: .6em 0; width: 100%; max-width: 42em; }
.conference-weather .weather-profile figcaption { font-weight: bold; margin-bottom: .35em; }
.conference-weather .weather-profile-svg { display: block; width: 100%; height: auto; overflow: visible; }
.conference-weather .weather-profile-svg text { font-family: inherit; font-size: 13px; fill: #172637; }
.conference-weather .weather-grid { fill: none; stroke: #d3d9df; stroke-width: .7; }
.conference-weather .weather-temperature-band { opacity: .22; stroke: none; }
.conference-weather .weather-temperature-line { fill: none; stroke-width: 2.5; stroke-linejoin: round; }
.conference-weather .weather-rain-bar { fill: #507b9c; }
.conference-weather .weather-profile-svg .weather-missing-hour { font-size: 10px; }
.conference-weather .weather-hourly-values { margin: 1em 0; }
.conference-weather .weather-hourly-values summary { cursor: pointer; }
.weather-detailed .weather-profile-svg { max-width: 38em; }

/* Give the compact card distinct chart, summary and attribution sections. */
.weather-preview .weather-profile { margin: 1em 0 1.2em; }
.weather-preview .weather-profile figcaption { text-align: center; margin-bottom: .75em; }
.weather-preview .conference-weather h3 { text-align: center; }
.weather-preview .conference-weather .weather-metrics { width: fit-content; max-width: 100%; margin: 1em auto 1.2em; text-align: left; }
.weather-preview .conference-weather .weather-note { margin: 1em 0; line-height: 1.3; }
.weather-preview .conference-weather small.weather-credit { display: block; margin: 1em 0 .5em; font-size: 80%; line-height: 1.3; }

/* The detailed page has independent, full-width charts with readable axes. */
.weather-detailed .weather-planning-chart { margin: 1.2em 0; max-width: 100%; overflow-x: auto; }
.weather-detailed .weather-planning-chart figcaption { font-weight: bold; margin-bottom: .5em; }
.weather-detailed .weather-planning-svg { display: block; width: 100%; min-width: 560px; height: auto; }
.weather-detailed .weather-planning-svg text { font-family: inherit; font-size: 18px; fill: #172637; }
.weather-detailed .weather-planning-band { fill: #3264ae; opacity: .18; stroke: none; }
.weather-detailed .weather-planning-line { fill: none; stroke: #3264ae; stroke-width: 3; stroke-linejoin: round; }
.weather-detailed > p { line-height: 1.5; }

/* Keep historical climate beside the day-weighted weekly anomalies. */
.weather-compact table.weather-outlook { table-layout: fixed; font-size: 90%; }
.weather-compact .weather-outlook td { padding: .4em .25em; vertical-align: middle; }
.weather-compact .weather-outlook td[rowspan],
.weather-compact .weather-outlook tr:last-child td:last-child { border-left: 1px solid #d3d9df; }
.weather-compact .table_inside + small.weather-credit { margin-top: 1.25em; }

/* The day-weighted EC46 offset illustrates a climate shift, not an hourly forecast. */
.conference-weather .weather-mean-shift,
.conference-weather .weather-shift-sample { fill: none; stroke: #8b1e2d; stroke-width: 2; stroke-linejoin: round; }
.conference-weather .weather-mean-shift-point { fill: #8b1e2d; }
.conference-weather .weather-profile-svg .weather-shift-key text { font-size: 11px; fill: #8b1e2d; }

/* Read each daily forecast downwards, before the historical reference charts. */
.weather-compact .weather-forecast { margin: 0 0 1em; }
.weather-compact table.weather-days { table-layout: fixed; margin: 0; font-size: 85%; }
.weather-compact .weather-days th,
.weather-compact .weather-days td { padding: .45em .15em; text-align: center; vertical-align: middle; white-space: nowrap; }
.weather-compact .weather-days th:first-child { width: 1.5em; }
.weather-compact .weather-days .fa-solid { width: 1em; }
.weather-compact .weather-days tbody tr:first-child td { font-size: 125%; }

/* Colour identifies the condition or metric; shapes and accessible labels remain available. */
.weather-compact .weather-days .fa-sun,
.weather-compact .weather-days .fa-cloud-sun { color: #a65b00; }
.weather-compact .weather-days .fa-moon { color: #6555a6; }
.weather-compact .weather-days .fa-cloud,
.weather-compact .weather-days .fa-smog { color: #617181; }
.weather-compact .weather-days .fa-droplet,
.weather-compact .weather-days .fa-cloud-rain,
.weather-compact .weather-days .fa-cloud-showers-heavy,
.weather-compact .weather-days .fa-cloud-sun-rain { color: #176ba0; }
.weather-compact .weather-days .fa-snowflake { color: #16798b; }
.weather-compact .weather-days .fa-cloud-bolt { color: #803e90; }

/* Layered Free SVG contours keep the sun, cloud and rain independently coloured. */
.weather-compact .weather-days .weather-condition-symbol { width: 1.25em; height: 1.125em; vertical-align: -.125em; }
.weather-compact .weather-days .weather-symbol-sun { fill: #a65b00; }
.weather-compact .weather-days .weather-symbol-cloud { fill: #617181; }
.weather-compact .weather-days .weather-symbol-rain { fill: #176ba0; }

/* Centre the icon itself, independently of inline spacing and glyph width. */
.weather-compact .weather-days th[scope="row"] > .fa-solid,
.weather-compact .weather-days th[scope="row"] > .weather-condition-symbol {
    display: block;
    width: 1.25em;
    height: 1.125em;
    line-height: 1.125em;
    margin: 0 auto;
}
