/* Guide cards carousel (parking-guides hub) */
.guide-carousel { margin:10px 0 60px; }
.guide-carousel__head { display:flex; align-items:end; justify-content:space-between; gap:16px; margin-bottom:18px; }
.guide-carousel__head h2 { margin:0; }
.guide-carousel__controls { display:none; gap:10px; }
.guide-carousel.is-enhanced .guide-carousel__controls { display:flex; }
.guide-carousel__btn { width:46px; height:46px; border-radius:50%; border:1px solid rgba(17,31,57,.18); background:#fff; color:var(--navy); font-size:1.4rem; line-height:1; cursor:pointer; display:grid; place-items:center; transition:transform 120ms ease, background 120ms ease; }
.guide-carousel__btn:hover:not([disabled]) { background:var(--navy); color:#fff; }
.guide-carousel__btn:active:not([disabled]) { transform:scale(.95); }
.guide-carousel__btn[disabled] { opacity:.35; cursor:default; }
.guide-carousel__btn:focus-visible, .guide-card:focus-visible { outline:3px solid var(--green); outline-offset:3px; }
.guide-carousel__track { list-style:none; margin:0; padding:4px 2px 18px; display:grid; grid-auto-flow:column; grid-auto-columns:calc((100% - 48px) / 3); gap:24px; overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth; overscroll-behavior-x:contain; -webkit-overflow-scrolling:touch; scrollbar-width:thin; }
.guide-carousel__track > li { scroll-snap-align:start; display:flex; }
.guide-card { display:flex; flex-direction:column; width:100%; overflow:hidden; border-radius:22px; background:#fff; border:1px solid rgba(17,31,57,.10); color:inherit; text-decoration:none; box-shadow:0 10px 30px rgba(17,31,57,.06); transition:transform 160ms ease, box-shadow 160ms ease; }
.guide-card:hover { transform:translateY(-3px); box-shadow:0 18px 40px rgba(17,31,57,.12); }
.guide-card__media { aspect-ratio:16/9; background:#dfe6ef; overflow:hidden; }
.guide-card__media img { display:block; width:100%; height:100%; object-fit:cover; }
.guide-card__body { display:flex; flex-direction:column; gap:8px; padding:18px 20px 20px; flex:1; }
.guide-card__body strong { color:var(--navy); font-size:1.12rem; line-height:1.25; }
.guide-card__body span { color:var(--muted); font-size:.97rem; line-height:1.5; }
.guide-card__more { margin-top:auto; padding-top:6px; color:var(--navy) !important; font-weight:800; }
.guide-carousel__status { margin:4px 0 0; color:var(--muted); font-size:.9rem; }
@media (max-width:900px){ .guide-carousel__track{ grid-auto-columns:calc((100% - 24px) / 2); } }
@media (max-width:600px){ .guide-carousel__track{ grid-auto-columns:84%; gap:16px; } .guide-carousel__btn{ width:42px; height:42px; } }
@media (prefers-reduced-motion:reduce){ .guide-carousel__track{ scroll-behavior:auto; } .guide-card, .guide-carousel__btn{ transition:none; } }
/* Parking news (hub) and news status box (news pages) — 30 Oct 2026 */
.parking-news { margin:10px 0 56px; }
.parking-news__head { margin-bottom:18px; }
.parking-news__head h2 { margin:0 0 6px; }
.parking-news__head p { margin:0; color:var(--muted); }
.parking-news__grid { display:grid; grid-template-columns:minmax(0,1.7fr) minmax(260px,1fr); gap:24px; }
.news-feature { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); overflow:hidden; border-radius:24px; background:var(--navy); color:#fff; text-decoration:none; box-shadow:0 18px 44px rgba(17,31,57,.18); outline:3px solid transparent; transition:transform 160ms ease, box-shadow 160ms ease; }
.news-feature:hover { transform:translateY(-3px); box-shadow:0 24px 54px rgba(17,31,57,.26); }
.news-feature:focus-visible { outline-color:var(--green); outline-offset:3px; }
.news-feature__media { display:flex; align-items:center; background:#14264a; }
.news-feature__media img { display:block; width:100%; height:auto; aspect-ratio:16/9; }
.news-feature__body { display:flex; flex-direction:column; gap:10px; padding:24px 26px; }
.news-feature__body strong { font-size:clamp(1.25rem,2.2vw,1.6rem); line-height:1.2; }
.news-feature__body span { color:#d7dfeb; line-height:1.55; }
.news-feature .guide-card__more { margin-top:auto; color:var(--green) !important; }
.news-badge { align-self:flex-start; padding:5px 12px; border-radius:999px; background:var(--green); color:var(--navy) !important; font-size:.82rem; font-weight:900; letter-spacing:.06em; text-transform:uppercase; }
.news-weekly { padding:22px 24px; border-radius:24px; background:#fff; border:1px solid rgba(17,31,57,.10); border-top:6px solid var(--amber); }
.news-weekly__kicker { margin:0; color:#087b50; font-weight:900; letter-spacing:.08em; text-transform:uppercase; font-size:.82rem; }
.news-weekly h3 { margin:4px 0 12px; color:var(--navy); font-size:1.2rem; }
.news-weekly ol { list-style:none; margin:0; padding:0; display:grid; gap:14px; }
.news-weekly li { display:grid; grid-template-columns:58px 1fr; column-gap:10px; row-gap:2px; }
.news-weekly li time { grid-row:span 2; color:var(--muted); font-weight:800; font-size:.92rem; }
.news-weekly li a { color:var(--navy); font-weight:700; line-height:1.35; }
.news-weekly li span { color:var(--muted); font-size:.88rem; }
.news-weekly__note { margin:14px 0 0; color:var(--muted); font-size:.88rem; }
.news-status { margin:0 0 34px; padding:18px 22px; border-radius:16px; background:#fff7e6; border-left:6px solid var(--amber); }
.news-status p { margin:0; }
@media (max-width:900px){ .parking-news__grid{ grid-template-columns:1fr; } }
@media (max-width:600px){ .news-feature{ grid-template-columns:1fr; } .news-feature__body{ padding:20px; } }
@media (prefers-reduced-motion:reduce){ .news-feature{ transition:none; } }

/* Data visualisation (news pages) — 30 Oct 2026. Bars #2b63c6, highlight #00a35f (validated vs #fff). */
.viz-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin:0 0 40px; }
.viz-stat { display:flex; flex-direction:column; gap:6px; padding:18px 18px 16px; border-radius:18px; background:#fff; border:1px solid rgba(17,31,57,.10); }
.viz-stat__num { color:var(--navy); font-size:clamp(1.9rem,4vw,2.6rem); font-weight:900; line-height:1; letter-spacing:-.03em; }
.viz-stat__num small { font-size:.5em; font-weight:800; letter-spacing:0; }
.viz-stat__label { color:var(--muted); font-size:.95rem; line-height:1.4; }
.viz-stat--accent { border-top:5px solid #00a35f; }
.viz-stats .viz-source { grid-column:1/-1; margin:0; }
.viz-chart { max-width:760px; margin:6px auto 38px; padding:22px 24px 18px; border-radius:20px; background:#fff; border:1px solid rgba(17,31,57,.10); }
.viz-chart figcaption { display:flex; flex-direction:column; gap:4px; margin-bottom:16px; }
.viz-chart figcaption strong { color:var(--navy); font-size:1.15rem; }
.viz-chart figcaption span { color:var(--muted); font-size:.93rem; }
.viz-bars { list-style:none; margin:0; padding:0; display:grid; gap:12px; }
.viz-bar { display:grid; grid-template-columns:minmax(120px,190px) 1fr auto; align-items:center; gap:12px; padding:2px 0; border-radius:8px; }
.viz-bar:hover { background:#f2f5f9; }
.viz-bar__label { color:var(--ink); font-size:.95rem; }
.viz-bar__track { height:22px; border-radius:0 4px 4px 0; background:#eef2f7; overflow:hidden; }
.viz-bar__fill { display:block; height:100%; width:var(--v); background:#2b63c6; border-radius:0 4px 4px 0; transition:filter 120ms ease; }
.viz-bar--accent .viz-bar__fill { background:#00a35f; }
.viz-bar:hover .viz-bar__fill { filter:brightness(1.12); }
.viz-bar__value { min-width:84px; color:var(--navy); font-weight:800; font-size:.95rem; text-align:right; }
.viz-note { margin:14px 0 6px; color:var(--ink); font-size:.95rem; }
.viz-table summary { cursor:pointer; color:var(--navy); font-weight:700; font-size:.92rem; }
.viz-table table { width:100%; margin-top:10px; border-collapse:collapse; font-size:.92rem; }
.viz-table caption { text-align:left; color:var(--muted); margin-bottom:6px; }
.viz-table th, .viz-table td { padding:6px 8px; border-bottom:1px solid #e2e8e5; text-align:left; }
.viz-source { margin:10px 0 0; color:var(--muted); font-size:.85rem; }
.viz-timeline { list-style:none; margin:18px 0 22px; padding:0; display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:0; counter-reset:t; }
.viz-timeline li { position:relative; padding:28px 10px 0 0; }
.viz-timeline li::before { content:""; position:absolute; top:8px; left:0; right:0; height:4px; background:#d7dfeb; }
.viz-timeline li::after { content:""; position:absolute; top:2px; left:0; width:16px; height:16px; border-radius:50%; background:#fff; border:3px solid #9aa9bf; box-sizing:border-box; }
.viz-timeline li.is-done::before { background:#2b63c6; }
.viz-timeline li.is-done::after { background:#2b63c6; border-color:#2b63c6; }
.viz-timeline li.is-now::after { background:#00a35f; border-color:#00a35f; box-shadow:0 0 0 5px rgba(0,163,95,.18); }
.viz-timeline__when { display:block; color:var(--navy); font-weight:800; font-size:.9rem; }
.viz-timeline__what { display:block; color:var(--muted); font-size:.88rem; line-height:1.35; margin-top:2px; }
.viz-timeline li.is-now .viz-timeline__when { color:#087b50; }
@media (max-width:760px){
  .viz-stats{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .viz-chart{ padding:18px 16px 14px; }
  .viz-bar{ grid-template-columns:1fr auto; row-gap:4px; }
  .viz-bar__label{ grid-column:1 / -1; }
  .viz-timeline{ grid-template-columns:1fr; }
  .viz-timeline li{ padding:0 0 16px 30px; }
  .viz-timeline li::before{ top:0; bottom:0; left:6px; right:auto; width:4px; height:auto; }
  .viz-timeline li::after{ top:2px; left:0; }
}
@media (prefers-reduced-motion:reduce){ .viz-bar__fill{ transition:none; } }
/* Homepage: news + guides section (30 Oct 2026). Scoped tokens so it works on the dark journey theme. */
.home-news-guides { --navy:#111f39; --ink:#10151f; --muted:#5b6675; --green:#00d77a; --amber:#f5b84b; position:relative; z-index:20; padding:clamp(56px,8vw,110px) clamp(20px,5vw,88px); background:#f7f9f5; color:var(--ink); font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; line-height:1.6; }
.home-news-guides__inner { width:min(1180px,100%); margin:0 auto; }
.home-ng-eyebrow { margin:0 0 8px; color:#087b50; font-weight:900; letter-spacing:.1em; text-transform:uppercase; font-size:.85rem; }
.home-news-guides h2 { margin:0 0 10px; color:var(--navy); font-size:clamp(2rem,4.2vw,3.4rem); line-height:1.05; letter-spacing:-.03em; }
.home-ng-lede { max-width:60ch; margin:0 0 34px; color:var(--muted); font-size:1.05rem; }
.home-news-guides h3 { margin:0; color:var(--navy); font-size:clamp(1.35rem,2.4vw,1.8rem); line-height:1.15; }
.home-news-guides .parking-news__head h3 { margin-bottom:6px; }
.home-news-guides .news-weekly h3 { margin:4px 0 12px; font-size:1.2rem; }
.home-news-guides a { color:inherit; }
.home-news-guides .news-feature { color:#fff; }
.home-news-guides .guide-carousel { margin-bottom:24px; }
.home-ng-all { margin:0; }
.home-ng-all a { display:inline-block; padding:12px 20px; border-radius:999px; background:var(--navy); color:#fff !important; font-weight:800; text-decoration:none; }
.home-ng-all a:hover { background:#1b3156; }
