/* World Dispatch: shared identity and readable tools across ForecastGeo. */
:root { --bg:#101b20; --bg-deep:#0c161b; --bg-panel:#14252b; --bg-raised:#1b3037; --cyan:#9ae8ce; --cyan-dim:#9ae8ce55; --amber:#edb96f; --line:#afc7c536; --line-soft:#afc7c522; --focus:#edb96f; }
body { background:var(--bg); }
.topbar { background:#101b20f5; border-bottom-color:#9ae8ce40; }
.wordmark__ring { border-color:var(--cyan); position:relative; }
.wordmark__ring::after { content:'';position:absolute;inset:3px -5px;border-block:1px solid var(--cyan);transform:rotate(-35deg); }
.site-section-nav { display:flex; gap:8px 24px; flex-wrap:wrap; max-width:1240px; margin:auto; padding:6px clamp(16px,3vw,40px); border-bottom:1px solid var(--line); }
.site-section-nav a { display:inline-flex; align-items:center; min-height:44px; color:var(--ink-muted); text-decoration:none; font:11px var(--font-mono); }
.site-section-nav a:hover,.site-section-nav a[aria-current] { color:var(--cyan); text-decoration:underline; text-underline-offset:7px; }
.page-head { background-image:linear-gradient(#9ae8ce07 1px,transparent 1px),linear-gradient(90deg,#9ae8ce07 1px,transparent 1px);background-size:40px 40px;border-bottom:1px solid #9ae8ce40; }
.page-head__kicker { color:var(--amber);letter-spacing:.13em; }
.page-head__kicker::before { content:'✳';margin-right:10px; }
.page-head__title { font:400 clamp(32px,4.5vw,54px)/1.1 Georgia,'Times New Roman',serif;letter-spacing:-.035em;overflow-wrap:anywhere; }
.page-head__lede { max-width:78ch;line-height:1.7; }
.panel__heading { font:400 clamp(23px,3vw,30px)/1.25 Georgia,serif;letter-spacing:-.02em; }
.panel__body { max-width:85ch; }
.panel--alt { background:#122127; }
.metric,.stat-tile,.notice,.code-block,.auth-form__input,.btn,.badge { border-radius:4px; }
.metric-row { gap:16px; }
.table-scroll { border:1px solid var(--line);border-radius:3px; }
.table-scroll:focus-visible { outline:2px solid var(--amber);outline-offset:4px; }
thead { background:#1b3037; }
th,td { padding:12px; }
tbody tr:hover { background:#9ae8ce06; }
.cluster-member__title,.cluster-list a,.run__article { line-height:1.5; }
.cluster-member__title { font-family:Georgia,serif;font-size:19px; }
.cluster-member { padding-block:16px; }
.article-wrap { max-width:820px;padding-top:36px; }
.article-title { font:400 clamp(30px,4.5vw,48px)/1.14 Georgia,serif;letter-spacing:-.025em; }
.article-summary { line-height:1.75; }
.article-back { min-height:44px;display:inline-flex;align-items:center; }
.article-image img { max-width:100%;height:auto; }
.article-actions .btn,.auth-form button,.saved-item__remove { min-height:44px; }
.auth-form { padding:24px;border:1px solid var(--line);background:var(--bg-panel);border-radius:4px;max-width:520px; }
.auth-form__input { min-height:46px; }
.auth-form__error { line-height:1.6; }
.auth-form__hint { line-height:1.5; }
.saved-item { padding-block:16px; }
.page-legal-nav { flex-wrap:wrap;line-height:2; }
.site-footer { border-top:2px solid #9ae8ce60; }
a { text-underline-offset:3px; }
:focus-visible { outline:2px solid var(--amber);outline-offset:4px; }
@media(max-width:600px) {
 .site-section-nav { gap:0 20px; }
 .site-section-nav a { font-size:10px;min-height:40px; }
 .page-head { padding-top:26px;padding-bottom:24px; }
 .page-head__title { font-size:34px; }
 .panel { padding-block:28px; }
 .auth-form { padding:18px; }
 .article-wrap { padding-top:24px; }
 .article-actions > * { max-width:100%; }
 .metric-row { gap:10px; }
 .pagination { flex-wrap:wrap; }
 .pagination__nums { flex-wrap:wrap; }
}

.auth-form[hidden], #delete-trigger[hidden] { display:none; }
.password-toggle { justify-self:start; min-height:44px; background:transparent; color:var(--cyan); border:0; padding:0 8px; font:12px var(--font-body); cursor:pointer; }
.save-feedback { color:var(--amber); font-size:13px; line-height:1.5; }
/* Keep utility links legible before and after visiting account/legal pages. */
a { color:var(--cyan); }
/* Analytical pages can use a wider table without lengthening prose lines. */
body:has(.chart-table,.framing-table) .panel__inner { max-width:1120px; }
body:has(.chart-table,.framing-table) .page-head { max-width:1164px; }
