@import url('/styles.css');.detail-main{padding:16px 0 30px}.detail-hero{padding:18px;margin-bottom:12px}.detail-hero h1{margin:0;color:#0b4c89;font-size:25px}.detail-hero p{color:#748397;font-size:10px;margin:6px 0 0}.detail-grid{display:grid;grid-template-columns:1.6fr .8fr;gap:12px}.detail-panel{padding:14px}.detail-list{display:flex;flex-direction:column}.detail-row{padding:12px 0;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}.detail-row strong{font-size:11px;display:block}.detail-row small{font-size:8px;color:#7d8b9a}.detail-row p{font-size:9px;line-height:1.5;color:#52657b}.data-table{width:100%;border-collapse:collapse;font-size:9px}.data-table th,.data-table td{text-align:left;padding:8px;border-bottom:1px solid var(--line)}.data-table th{color:#0b4c89}.back-link{font-size:9px;color:#1765b8;text-decoration:none;font-weight:700}.warning{padding:10px;border-radius:6px;background:#fff5d9;border:1px solid #f0d88f;font-size:9px;color:#70590c;margin:10px 0}.admin-note{font-size:8px;color:#778696}@media(max-width:800px){.detail-grid{grid-template-columns:1fr}}
/* Traffic & Roads dedicated page */
.traffic-masthead{grid-template-columns:250px 1fr}.traffic-page-title{justify-self:end;display:flex;align-items:center;gap:7px;font-size:10px;font-weight:800}.traffic-page-title svg{width:18px}.traffic-hero{display:flex;justify-content:space-between;align-items:center}.traffic-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:10px}.traffic-stat{padding:12px}.traffic-stat>span{font-size:7px;font-weight:800;color:#768698}.traffic-stat>strong{display:block;font-size:20px;color:#0a4a84;margin:4px 0}.traffic-stat>small{font-size:7px;color:#83909e}.traffic-live-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(340px,.75fr);gap:10px;margin-bottom:10px}.traffic-map-panel,.traffic-list-panel{min-height:525px}.traffic-map{height:455px;border-radius:8px;overflow:hidden;background:#edf1f4}.traffic-legend{display:flex;gap:15px;align-items:center;margin-top:8px;font-size:7px;color:#788898}.traffic-legend span{display:flex;align-items:center;gap:4px}.legend-dot{width:9px;height:9px;border:2px solid #315f87;border-radius:50%;display:inline-block}.legend-line{width:18px;height:4px;background:#315f87;border-radius:3px;display:inline-block}.traffic-inline-status{font-size:7px;color:#738598;font-weight:700}.traffic-live-list{max-height:465px;overflow:auto}.traffic-road-row{display:flex;gap:9px;padding:10px 1px;border-bottom:1px solid var(--line)}.traffic-road-icon{width:28px;height:28px;border-radius:6px;background:#eef4f9;display:grid;place-items:center;flex:0 0 auto}.traffic-road-icon svg{width:15px;color:#1d659d}.traffic-road-copy{min-width:0;flex:1}.traffic-road-copy>div{display:flex;align-items:center;justify-content:space-between;gap:6px}.traffic-road-copy strong{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.traffic-road-copy span{display:block;font-size:7px;text-transform:capitalize;color:#536b80;margin-top:3px}.traffic-road-copy small{display:block;font-size:7px;color:#8996a4;margin-top:3px}.traffic-road-copy .freshness-badge{display:inline-block;margin:0;font-size:6px;white-space:nowrap}.traffic-bottom-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:10px;margin-bottom:10px}.provider-list{display:flex;flex-direction:column}.provider-row{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}.provider-row strong{font-size:9px}.provider-row small{display:block;font-size:7px;color:#8493a1;margin-top:2px}.provider-state{font-size:6px;font-weight:900;padding:4px 6px;border-radius:999px;height:max-content}.provider-ok{background:#eaf8ef;color:#08783b}.provider-error{background:#fff0f0;color:#a61717}.provider-waiting{background:#f1f4f6;color:#637486}.traffic-history-row{padding:8px 0}.traffic-data-note{display:flex;gap:10px;align-items:flex-start;padding:13px}.traffic-data-note>svg{width:18px;color:#1765b8}.traffic-data-note strong{font-size:9px}.traffic-data-note p{font-size:8px;color:#738397;line-height:1.45;margin:4px 0 0}.traffic-popup{display:flex;flex-direction:column;gap:3px}.traffic-popup strong{font-size:12px}.traffic-popup span,.traffic-popup small{font-size:10px}.leaflet-container{font-family:Inter,Arial,sans-serif}
@media(max-width:1000px){.traffic-live-grid{grid-template-columns:1fr}.traffic-stat-grid{grid-template-columns:1fr 1fr}.traffic-bottom-grid{grid-template-columns:1fr}}@media(max-width:600px){.traffic-stat-grid{grid-template-columns:1fr}.traffic-map{height:360px}.traffic-masthead{grid-template-columns:1fr auto}.traffic-page-title span{display:none}}
.news-detail-row{display:grid!important;grid-template-columns:140px 1fr;gap:12px;align-items:start}.news-detail-row>img{width:140px;height:82px;object-fit:cover;border-radius:6px;background:#e8edf2}.news-detail-row>div{min-width:0}@media(max-width:650px){.news-detail-row{grid-template-columns:90px 1fr}.news-detail-row>img{width:90px;height:62px}}

/* Electricity */
.electricity-masthead{grid-template-columns:250px 1fr}.electricity-page-title{justify-self:end;display:flex;align-items:center;gap:7px;font-size:10px;font-weight:800}.electricity-page-title svg{width:18px}.electricity-hero,.schools-hero{display:flex;align-items:center;justify-content:space-between;gap:20px}.data-label-legend{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.data-label{display:inline-flex;align-items:center;border-radius:999px;font-size:6px!important;font-weight:900!important;line-height:1;padding:4px 6px;white-space:nowrap}.data-live{background:#dff7e9;color:#08783b}.data-latest-published{background:#e8f1fb;color:#145b9b}.data-historical{background:#f0edf9;color:#5d3a92}.data-estimated{background:#fff2cf;color:#886000}.electricity-stat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:10px}.electricity-stat{padding:12px;min-width:0}.electricity-stat>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:5px}.electricity-stat>div:first-child>span{font-size:7px;color:#6e7f90;font-weight:900}.electricity-stat>strong{display:block;font-size:19px;color:#0b4c89;margin:7px 0 3px;line-height:1.15}.electricity-stat>small{font-size:7px;color:#7c8b9a}.point-source{display:flex;flex-direction:column;gap:2px;font-size:6px;color:#8491a0;margin-top:7px;line-height:1.35;overflow-wrap:anywhere}.point-source a{color:#1765b8;text-decoration:none;font-weight:700}.electricity-main-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,.65fr);gap:10px;margin-bottom:10px}.electricity-chart{min-height:310px;display:grid;place-items:center}.electricity-chart svg{width:100%;height:auto;overflow:visible}.electricity-chart text{font:8px Inter,Arial,sans-serif;fill:#728297}.chart-gridline{stroke:#e3e8ee;stroke-width:1}.chart-line{fill:none;stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.chart-line.demand{stroke:#d80d1a}.chart-line.capacity{stroke:#1765b8}.chart-legend{display:flex;gap:16px;font-size:7px;color:#66798d}.chart-legend span{display:flex;align-items:center;gap:5px}.chart-key{width:20px;height:3px;border-radius:2px}.chart-key.demand{background:#d80d1a}.chart-key.capacity{background:#1765b8}.tariff-period{border-radius:9px;background:#eff5fb;padding:22px;text-align:center}.tariff-period>strong{display:block;font-size:31px;color:#0a4a84;margin:13px 0 5px}.tariff-period>small{font-size:8px;color:#6a7b8e;text-transform:capitalize}.tariff-next{display:flex;flex-direction:column;gap:5px;padding:14px 0;border-bottom:1px solid var(--line)}.tariff-next span{font-size:7px;text-transform:uppercase;color:#748598;font-weight:800}.tariff-next strong{font-size:10px}.tariff-panel>div>p{font-size:8px;line-height:1.5;color:#65778a}.electricity-notices-panel,.electricity-history-panel{margin-bottom:10px}.electricity-notice{display:grid;grid-template-columns:145px 1fr;gap:15px;padding:14px 0;border-bottom:1px solid var(--line)}.notice-date{display:flex;align-items:flex-start;flex-direction:column;gap:7px}.notice-date>strong{font-size:10px;color:#0b4c89}.notice-copy>a{text-decoration:none;color:inherit}.notice-copy>a>strong{font-size:11px}.notice-copy>p{font-size:8px;line-height:1.5;color:#5f7286;margin:6px 0}.notice-copy dl{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:10px 0}.notice-copy dl>div{background:#f7f9fb;border-radius:6px;padding:8px}.notice-copy dt{font-size:6px;color:#79899a;text-transform:uppercase;font-weight:800}.notice-copy dd{font-size:8px;margin:4px 0 0}.electricity-stats td>strong{display:block}.electricity-stats td>small{display:block;color:#8290a0;margin-top:3px}.electricity-bottom-grid,.schools-bottom-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.electricity-data-rule,.school-data-rule{display:flex;align-items:flex-start;gap:12px;padding:16px;background:#ecf7ef;border-color:#bee2c8}.electricity-data-rule>svg,.school-data-rule>svg{width:24px;color:#08783b;flex:0 0 auto}.electricity-data-rule strong,.school-data-rule strong{font-size:11px;color:#075c32}.electricity-data-rule p,.school-data-rule p{font-size:8px;color:#486a58;line-height:1.5;margin:5px 0}.provider-list{display:flex;flex-direction:column}.provider-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}.provider-row strong{font-size:8px}.provider-row small{font-size:6px;color:#8493a1;overflow-wrap:anywhere}.provider-state{font-size:6px;font-weight:900;padding:4px 6px;border-radius:999px}.provider-ok{background:#eaf8ef;color:#08783b}.provider-error{background:#fff0f0;color:#a61717}.provider-waiting{background:#f1f4f6;color:#637486}

/* Schools */
.school-counts{display:flex;gap:8px}.school-counts>div{background:#edf4fa;border-radius:8px;padding:10px 16px;display:flex;align-items:baseline;gap:5px}.school-counts strong{font-size:22px;color:#0b4c89}.school-counts span{font-size:7px;color:#6d7e90}.schools-layout{display:grid;grid-template-columns:minmax(330px,.72fr) minmax(0,1.28fr);gap:10px;margin-bottom:10px}.school-search{height:35px;border:1px solid var(--line);border-radius:7px;display:flex;align-items:center;padding:0 8px;margin-bottom:9px}.school-search svg{width:14px;color:#708196}.school-search input{border:0;outline:0;width:100%;font:inherit;font-size:9px;padding:0 7px}.school-directory{display:flex;flex-direction:column;gap:7px;max-height:890px;overflow:auto}.school-card{border:1px solid var(--line);border-radius:7px;padding:10px;background:#fbfcfe}.school-card-head{display:flex;gap:8px;align-items:flex-start}.school-card-head>svg{width:17px;color:#1765b8}.school-card-head a{text-decoration:none;color:inherit}.school-card-head strong{display:block;font-size:9px}.school-card-head span{display:block;font-size:7px;color:#748598;margin-top:3px}.school-card dl{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:9px 0 0}.school-card dl>div{background:#fff;border-radius:5px;padding:6px}.school-card dt{font-size:6px;text-transform:uppercase;color:#8190a0}.school-card dd{font-size:7px;margin:3px 0 0}.school-card dd a{color:#1765b8}.school-notices{display:flex;flex-direction:column}.school-notice{display:grid;grid-template-columns:130px 1fr;gap:14px;padding:13px 0;border-bottom:1px solid var(--line)}.school-notice-date{display:flex;align-items:flex-start;flex-direction:column;gap:4px}.school-notice-date svg{width:16px;color:#1765b8}.school-notice-date strong{font-size:9px;color:#0b4c89}.school-notice-date span{font-size:6px;color:#8290a0}.school-notice>div:last-child>a{text-decoration:none;color:inherit}.school-notice>div:last-child>a>strong{font-size:10px}.school-notice p{font-size:8px;line-height:1.5;color:#65778a}.school-name-pill{display:inline-flex;margin-top:6px;font-size:6px;font-weight:800;background:#edf4fa;color:#145b9b;border-radius:999px;padding:4px 6px}

@media(max-width:1050px){.electricity-stat-grid{grid-template-columns:repeat(2,1fr)}.electricity-main-grid,.schools-layout{grid-template-columns:1fr}.school-directory{max-height:none}.notice-copy dl{grid-template-columns:1fr 1fr}}@media(max-width:700px){.electricity-hero,.schools-hero{align-items:flex-start;flex-direction:column}.data-label-legend{justify-content:flex-start}.electricity-stat-grid{grid-template-columns:1fr}.electricity-notice,.school-notice{grid-template-columns:1fr}.notice-copy dl{grid-template-columns:1fr}.electricity-bottom-grid,.schools-bottom-grid{grid-template-columns:1fr}.electricity-masthead{grid-template-columns:1fr auto}.electricity-page-title span{display:none}.electricity-stats{display:block;overflow-x:auto}.provider-row{grid-template-columns:1fr auto}.provider-row>small:last-child{grid-column:1/3}}

/* v1.7.1 school logos and upcoming/history grouping */
.school-page-logo,.school-notice-logo{width:38px;height:38px;object-fit:contain;border:1px solid var(--line);border-radius:7px;background:#fff;padding:3px;display:grid;place-items:center;flex:0 0 auto}.school-notice-logo{width:48px;height:48px;margin-bottom:4px}.school-logo-fallback{background:#eaf2f9;color:#0b4c89;font-size:9px;font-weight:900}.school-notice-group{display:flex;align-items:baseline;justify-content:space-between;padding:10px 0 5px;border-bottom:2px solid #1765b8}.school-notice-group.historical{margin-top:18px;border-bottom-color:#a6b3c0}.school-notice-group h3{font-size:11px;color:#0b4c89;margin:0}.school-notice-group small{font-size:7px;color:#7c8b99}

.property-detail-row{display:grid!important;grid-template-columns:150px 1fr;gap:12px;align-items:center}.property-detail-row>img{width:150px;height:94px;object-fit:cover;border-radius:7px;background:#e8edf2}.property-detail-row>div{min-width:0}@media(max-width:650px){.property-detail-row{grid-template-columns:100px 1fr}.property-detail-row>img{width:100px;height:70px}}

.job-detail-row{display:flex;gap:14px;align-items:center}.job-detail-logo{width:48px;height:48px;object-fit:contain;border-radius:10px;background:rgba(255,255,255,.05);padding:4px;flex:0 0 auto}.job-detail-row>div{min-width:0}

.business-detail-row{display:flex;align-items:center;gap:12px}.business-detail-logo{width:56px;height:56px;object-fit:contain;border-radius:8px;border:1px solid #e2e8ed;background:#fff;flex:0 0 56px}

/* v1.9.9 South African Judiciary court branding */
.detail-hero-branded{display:flex;align-items:center;gap:18px}
.detail-hero-logo.court-logo{width:108px;height:108px;object-fit:contain;flex:0 0 auto;background:#fff;border-radius:8px}
.court-case-row{display:grid!important;grid-template-columns:62px minmax(0,1fr);gap:12px;align-items:center}
.court-case-logo{width:58px;height:58px;object-fit:contain;background:#fff;border-radius:6px}
.court-case-copy{min-width:0;display:block}
.court-case-copy strong,.court-case-copy p,.court-case-copy small{display:block}
@media(max-width:640px){.detail-hero-branded{align-items:flex-start}.detail-hero-logo.court-logo{width:82px;height:82px}.court-case-row{grid-template-columns:46px minmax(0,1fr)}.court-case-logo{width:42px;height:42px}}

/* v1.9.12 news page hierarchy + publisher logo fallback */
.news-detail-row{grid-template-columns:minmax(0,1fr)!important}
.news-detail-row.has-image{grid-template-columns:140px minmax(0,1fr)!important}
.news-detail-thumb{width:140px;height:82px;object-fit:cover;border-radius:6px;background:#e8edf2}
.news-detail-thumb.is-publisher-logo{object-fit:contain;background:#fff;border:1px solid var(--line)}
.news-detail-copy{min-width:0;display:flex;flex-direction:column;align-items:flex-start}
.news-detail-category{display:inline-block;font-size:7px;font-weight:850;text-transform:uppercase;color:#0e5ea8;margin:0 0 4px}
.news-detail-copy>strong{display:block;font-size:10px;line-height:1.35}
.news-detail-copy>small{display:block;margin-top:4px;color:#8491a0}
.news-detail-copy>p{margin-top:7px}
@media(max-width:650px){.news-detail-row.has-image{grid-template-columns:90px minmax(0,1fr)!important}.news-detail-thumb{width:90px;height:62px}}

/* v1.9.13 deterministic news page rows. */
.news-detail-row{display:grid!important;grid-template-columns:140px minmax(0,1fr)!important;gap:14px;align-items:center}
.news-detail-media{width:140px;height:82px;position:relative;display:grid;place-items:center;overflow:hidden;border-radius:6px;background:#edf2f6;border:1px solid var(--line)}
.news-detail-media-fallback{font-size:18px;font-weight:900;letter-spacing:.04em;color:#31536f;text-transform:uppercase}
.news-detail-media .news-detail-thumb{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:5px;background:#e8edf2}
.news-detail-media .news-detail-thumb.is-publisher-logo{object-fit:contain;background:#fff;padding:5px}
.news-detail-copy{min-width:0}
@media(max-width:650px){.news-detail-row{grid-template-columns:90px minmax(0,1fr)!important}.news-detail-media{width:90px;height:62px}.news-detail-media-fallback{font-size:14px}}

/* v1.9.16 tender thumbnails */
.tender-detail-row{display:grid;grid-template-columns:58px minmax(0,1fr);gap:12px;align-items:center}.tender-detail-thumb{width:58px;height:58px;object-fit:contain;border:1px solid var(--line);border-radius:8px;background:#fff;padding:4px}.tender-detail-row>span{min-width:0}

/* v1.9.16 Plett events */
.event-detail-list{gap:8px}.event-detail-row{display:grid;grid-template-columns:112px minmax(0,1fr);gap:12px;align-items:start}.event-detail-media{width:112px;height:76px;position:relative;display:grid;place-items:center;overflow:hidden;border-radius:7px;background:#e8edf2;border:1px solid var(--line)}.event-detail-media>img,.event-detail-fallback{grid-area:1/1;width:100%;height:100%}.event-detail-media>img{object-fit:cover;z-index:2}.event-detail-fallback{display:grid;place-items:center;background:linear-gradient(135deg,#eef3f8,#dde7f0);color:#0b4c89}.event-detail-fallback svg{width:24px;height:24px}.event-detail-copy{min-width:0}.event-detail-copy strong{display:block;margin-bottom:4px}.event-detail-copy p{margin:0 0 5px}.event-detail-copy small{display:block}
@media(max-width:700px){.event-detail-row{grid-template-columns:82px minmax(0,1fr)}.event-detail-media{width:82px;height:60px}}

/* Facebook full-page media feed */
.facebook-feed-card{padding:16px 0 20px;border-bottom:1px solid var(--line)}.facebook-feed-card:first-child{padding-top:4px}.facebook-feed-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.facebook-feed-head a{text-decoration:none;color:inherit}.facebook-feed-head strong{font-size:12px;color:#124d88}.facebook-feed-head small{font-size:8px;color:#7d8b9a}.facebook-feed-text{font-size:10px;line-height:1.55;color:#40556d;margin:8px 0 0;white-space:pre-line}.facebook-post-media{margin-top:10px;max-width:760px}.facebook-media-grid{display:grid;gap:4px;border-radius:9px;overflow:hidden}.facebook-media-grid.media-count-2,.facebook-media-grid.media-count-3,.facebook-media-grid.media-count-4{grid-template-columns:repeat(2,minmax(0,1fr))}.facebook-image-media{display:block;min-width:0;background:#e8edf2}.facebook-image-media img{display:block;width:100%;height:310px;object-fit:cover}.facebook-media-grid.media-count-3 .facebook-image-media:first-child{grid-row:span 2}.facebook-video-media video{display:block;width:100%;max-height:560px;background:#000;border-radius:9px}.facebook-video-embed{position:relative;width:min(100%,720px);aspect-ratio:16/9;overflow:hidden;border-radius:9px;background:#000}.facebook-video-embed iframe{position:absolute;inset:0;width:100%!important;height:100%!important}.facebook-video-poster{height:360px;position:relative;display:block;overflow:hidden;border-radius:9px;background:#101820;color:#fff;text-decoration:none}.facebook-video-poster img{width:100%;height:100%;object-fit:cover;display:block;opacity:.9}.facebook-play-mark{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:52px;height:52px;border-radius:50%;background:rgba(0,0,0,.72);display:grid;place-items:center;color:#fff;font-size:20px;padding-left:3px}.facebook-video-poster small{position:absolute;left:10px;bottom:9px;background:rgba(0,0,0,.65);padding:4px 7px;border-radius:4px;color:#fff;font-size:8px}.facebook-video-link{min-height:150px;border-radius:9px;background:#101820;color:#fff;text-decoration:none;display:flex;align-items:center;justify-content:center;gap:12px;position:relative}.facebook-video-link .facebook-play-mark{position:static;transform:none}.facebook-feed-foot{margin-top:9px}.facebook-feed-foot a{font-size:8px;font-weight:700;color:#1765b8;text-decoration:none}@media(max-width:720px){.facebook-image-media img{height:210px}.facebook-video-poster{height:230px}}

.facebook-image-media img{height:auto;max-height:none;object-fit:contain}
