:root{
  --navy:#1B3A5C; --navy-d:#0F2440; --navy-l:#2A5080;
  --amber:#C88A3C; --amber-l:#E0A85A; --amber-ink:#8A5A1C;
  --teal:#2D8B7A;
  --paper:#FAF7F2; --surface:#F0EBE4; --surface2:#E4DDD4;
  --ink:#1A1A1A; --ink2:#4A4A4A; --muted:#6E6A63;
  --line:rgba(27,58,92,.14); --line2:rgba(27,58,92,.28);
  --good:#2F7D5B; --mod:#C88A3C; --bad:#B23A28; --info:#2A5080;
  --accent:#C88A3C;                    /* set live by the ambient engine */
  --disp:'Newsreader',Georgia,serif; --body:'Inter',system-ui,sans-serif; --mono:'JetBrains Mono',monospace;
  --pad:clamp(1.25rem,5vw,4.5rem); --maxw:1180px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:inherit}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad)}
.ribbon{background:var(--navy-d);color:#E9EDF2;font-family:var(--mono);font-size:.68rem;letter-spacing:.02em;padding:.5rem var(--pad);text-align:center}
.ribbon b{color:var(--amber-l)}.ribbon .k{color:#9FB2C6}
.nav{background:rgba(250,247,242,.9);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:.85rem;padding-bottom:.85rem}
.logo{font-family:var(--disp);font-weight:800;font-size:1.25rem;color:var(--navy);text-decoration:none;letter-spacing:-.01em}
.logo span{color:var(--amber-ink)}
.navlinks{display:flex;gap:1.5rem;font-size:.82rem;font-weight:500;color:var(--ink2)}
.navlinks a{text-decoration:none}.navlinks a:hover{color:var(--navy)}
.navlinks a.on{color:var(--navy);font-weight:700}
@media(max-width:760px){.navlinks{display:none}}

.masthead{padding:clamp(2rem,5vw,3.75rem) 0 2rem}
.kick{font-family:var(--mono);font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--amber-ink);display:inline-flex;align-items:center;gap:.5rem}
.kick .dot{width:8px;height:8px;border-radius:50%;background:var(--good);box-shadow:0 0 0 0 rgba(47,125,91,.5);animation:pulse 2.4s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(47,125,91,.5)}70%{box-shadow:0 0 0 9px rgba(47,125,91,0)}100%{box-shadow:0 0 0 0 rgba(47,125,91,0)}}
h1{font-family:var(--disp);font-weight:800;font-size:clamp(2.9rem,7vw,5.4rem);line-height:.96;letter-spacing:-.025em;color:var(--navy);margin:.7rem 0 .8rem}
.dek{font-family:var(--disp);font-size:clamp(1.15rem,2.2vw,1.5rem);line-height:1.4;color:var(--ink2);max-width:44ch}
.stamp{margin-top:1.3rem;font-family:var(--mono);font-size:.74rem;color:var(--muted);display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.stamp b{color:var(--ink2)}
.livedot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--good)}

/* conditions board — ambient */
.board{color:#fff;margin-top:.5rem;background:var(--navy);position:relative;overflow:hidden;
  background-image:radial-gradient(120% 140% at 85% -10%, rgba(224,168,90,.20) 0%, rgba(224,168,90,0) 46%), linear-gradient(180deg, var(--navy) 0%, var(--navy-d) 100%);
  transition:background-image .8s ease}
.board .wrap{padding-top:clamp(1.6rem,3.5vw,2.4rem);padding-bottom:clamp(1.6rem,3.5vw,2.4rem);position:relative;z-index:1}
.board-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:.6rem;border-bottom:1px solid rgba(255,255,255,.18);padding-bottom:.9rem}
.board-head h2{font-family:var(--disp);font-weight:700;font-size:1.15rem;color:#fff}
.board-head .sub{font-family:var(--mono);font-size:.7rem;color:rgba(255,255,255,.62)}
.grid{display:grid;grid-template-columns:repeat(3,1fr)}
@media(max-width:820px){.grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:480px){.grid{grid-template-columns:1fr}}
.cell{padding:1.5rem;border-bottom:1px solid rgba(255,255,255,.14);border-right:1px solid rgba(255,255,255,.14)}
.cell:nth-child(3n+1){padding-left:0}
.cell:nth-child(3n){border-right:none}
@media(max-width:820px){.cell:nth-child(2n){border-right:none}.cell:nth-child(2n+1){padding-left:0}}
@media(max-width:480px){.cell{padding-left:0!important;border-right:none!important}}
.lbl{font-family:var(--mono);font-size:.66rem;font-weight:500;letter-spacing:.13em;text-transform:uppercase;color:rgba(255,255,255,.6);display:block;margin-bottom:.7rem}
.val{font-family:var(--disp);font-weight:700;font-size:clamp(2.1rem,4.5vw,3.1rem);line-height:1;color:#fff;letter-spacing:-.01em}
.val .u{font-size:.42em;font-weight:500;color:rgba(255,255,255,.68);margin-left:.15em}
.sub{margin-top:.6rem;font-size:.84rem;color:rgba(255,255,255,.72);line-height:1.4}
.chip{display:inline-block;font-family:var(--mono);font-size:.62rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:.22rem .5rem;border-radius:3px;margin-top:.7rem}
.c-good{background:#8FD3B6;color:#0A2A1D}.c-mod{background:var(--amber-l);color:#3A2708}
.c-bad{background:#EFA79B;color:#4A120A}.c-info{background:#A9C4E4;color:#0F2440}.c-slate{background:#8E9AA8;color:#0F2440}
.cell .tagpill{font-family:var(--mono);font-size:.58rem;color:rgba(255,255,255,.74);border:1px solid rgba(255,255,255,.34);border-radius:3px;padding:.12rem .35rem;margin-left:.4rem;vertical-align:middle}
.spark{width:100%;height:34px;display:block;margin-top:.7rem}
.spark path{fill:none;stroke:var(--accent);stroke-width:2;vector-effect:non-scaling-stroke}
.spark .fill{fill:var(--accent);opacity:.14;stroke:none}
.sunwrap{margin-top:.7rem}

/* brief that writes itself */
.brief{font-family:var(--disp);font-size:clamp(1.2rem,2.3vw,1.5rem);line-height:1.55;color:var(--ink)}
.brief em{font-style:normal;background:linear-gradient(transparent 62%,rgba(224,168,90,.4) 62%)}
.brief .cursor{display:inline-block;width:.5ch;background:var(--amber-ink);animation:blink 1s steps(2) infinite;color:transparent}
@keyframes blink{50%{opacity:0}}

.body{padding:clamp(2.2rem,5vw,3.5rem) 0}
.cols{display:grid;grid-template-columns:1.7fr 1fr;gap:clamp(2rem,5vw,4rem)}
@media(max-width:900px){.cols{grid-template-columns:1fr;gap:2.5rem}}
h2.sec{font-family:var(--disp);font-weight:700;font-size:clamp(1.5rem,3vw,2rem);color:var(--navy);letter-spacing:-.01em;margin:0 0 1.1rem;display:flex;align-items:center;gap:.6rem}
h2.sec::before{content:"";width:.5rem;height:.5rem;background:var(--accent);flex:0 0 auto}
.block{margin-bottom:clamp(2rem,4vw,2.8rem)}

.stats{display:grid;grid-template-columns:repeat(4,1fr);border-top:2px solid var(--accent);border-bottom:1px solid var(--line)}
@media(max-width:640px){.stats{grid-template-columns:repeat(2,1fr)}}
.stat{padding:1.1rem 1rem;border-right:1px solid var(--line)}
.stat:last-child{border-right:none}
.stat .n{font-family:var(--disp);font-weight:800;font-size:2rem;color:var(--navy);line-height:1}
.stat .t{font-size:.74rem;color:var(--muted);margin-top:.4rem;line-height:1.3}
.stat .d{font-family:var(--mono);font-size:.68rem;margin-top:.35rem}
.up{color:var(--bad)}.flat{color:var(--good)}

.chart{margin-top:1.4rem}
.bars{display:flex;align-items:flex-end;gap:3px;height:96px}
.bars .b{flex:1;background:var(--navy-l);border-radius:2px 2px 0 0;min-height:3px}
.bars .b.pk{background:var(--accent)}
.hlabel{display:flex;gap:3px;margin-top:.5rem}
.hlabel span{flex:1;text-align:center;font-family:var(--mono);font-size:.52rem;color:var(--muted)}
.chartcap{font-size:.78rem;color:var(--ink2);margin-top:.7rem}

/* zone strip */
.zones{margin-top:1.6rem}
.zbar{display:flex;height:38px;border-radius:3px;overflow:hidden;border:1px solid var(--line)}
.zseg{display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:.62rem;color:#fff;font-weight:700}
.zkey{display:flex;gap:1rem;flex-wrap:wrap;margin-top:.6rem;font-size:.75rem;color:var(--ink2)}
.zkey b{font-family:var(--mono);color:var(--ink)}
.dotk{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:.35rem;vertical-align:middle}

.nlist{border-top:1px solid var(--line)}
.nrow{display:flex;gap:.8rem;align-items:baseline;padding:.6rem 0;border-bottom:1px solid var(--line);font-size:.86rem}
.nrow .tm{font-family:var(--mono);font-size:.72rem;color:var(--muted);flex:0 0 62px}
.nrow .ty{font-weight:700;color:var(--navy);flex:0 0 128px}
.nrow .loc{color:var(--ink2)}
@media(max-width:560px){.nrow .ty{flex-basis:100px}}

.erow{display:flex;gap:1rem;padding:.85rem 0;border-bottom:1px solid var(--line);align-items:baseline}
.erow .when{flex:0 0 92px;font-family:var(--mono);font-size:.7rem;color:var(--amber-ink);font-weight:700;text-transform:uppercase}
.erow .ev{font-family:var(--disp);font-size:1.05rem;color:var(--ink)}
.erow .where{font-size:.78rem;color:var(--muted);margin-top:.15rem}

.rail .panel{border:1px solid var(--line);background:var(--surface);padding:1.2rem;margin-bottom:1.5rem}
.rail h3{font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--navy);margin-bottom:.9rem}
.feed{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.82rem;padding:.42rem 0;border-bottom:1px solid var(--line)}
.feed:last-child{border-bottom:none}.feed .nm{color:var(--ink2)}
.s{font-family:var(--mono);font-size:.6rem;font-weight:700;padding:.14rem .4rem;border-radius:3px}
.s-live{background:#CDEBDD;color:#0A2A1D}.s-pend{background:#E7DFD1;color:#7A5A1E}
.nb{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}
.nb a{font-size:.8rem;text-decoration:none;color:var(--ink2);padding:.35rem .5rem;background:var(--paper);border:1px solid var(--line)}
.nb a:hover{border-color:var(--navy);color:var(--navy)}
.src{font-size:.78rem;color:var(--ink2);line-height:1.9}
.src a{color:var(--navy-l);text-decoration:none;border-bottom:1px solid var(--line2)}
.src a:hover{border-color:var(--navy)}
footer{background:var(--navy-d);color:rgba(255,255,255,.72);padding:2rem 0;font-size:.8rem}
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem}
footer a{color:var(--amber-l);text-decoration:none}
.fn{font-family:var(--disp);color:#fff;font-weight:700;font-size:1rem}

/* ── neighborhood-profile additions ── */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:inherit}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad)}
.ribbon{background:var(--navy-d);color:#E9EDF2;font-family:var(--mono);font-size:.68rem;letter-spacing:.02em;padding:.5rem var(--pad);text-align:center}
.ribbon b{color:var(--amber-l)}.ribbon .k{color:#9FB2C6}
.nav{background:rgba(250,247,242,.9);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:.85rem;padding-bottom:.85rem}
.logo{font-family:var(--disp);font-weight:800;font-size:1.25rem;color:var(--navy);text-decoration:none;letter-spacing:-.01em}
.logo span{color:var(--amber-ink)}
.navlinks{display:flex;gap:1.5rem;font-size:.82rem;font-weight:500;color:var(--ink2)}
.navlinks a{text-decoration:none}.navlinks a:hover{color:var(--navy)}
.navlinks a.on{color:var(--navy);font-weight:700}
@media(max-width:760px){.navlinks{display:none}}

.masthead{padding:clamp(2rem,5vw,3.5rem) 0 1.6rem}
.kick{font-family:var(--mono);font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--amber-ink)}
h1{font-family:var(--disp);font-weight:800;font-size:clamp(2.6rem,6.5vw,4.6rem);line-height:1;letter-spacing:-.025em;color:var(--navy);margin:.7rem 0 .8rem}
.dek{font-family:var(--disp);font-size:clamp(1.1rem,2.1vw,1.4rem);line-height:1.45;color:var(--ink2);max-width:52ch}

.rail-metrics{background:var(--navy);color:#fff}
.rail-metrics .wrap{display:grid;grid-template-columns:repeat(6,1fr)}
@media(max-width:900px){.rail-metrics .wrap{grid-template-columns:repeat(3,1fr)}}
@media(max-width:520px){.rail-metrics .wrap{grid-template-columns:repeat(2,1fr)}}
.m{padding:1.15rem 1.1rem;border-right:1px solid rgba(255,255,255,.16)}
.m .lbl{font-family:var(--mono);font-size:.6rem;letter-spacing:.11em;text-transform:uppercase;color:rgba(255,255,255,.58);display:block;margin-bottom:.5rem}
.m .v{font-family:var(--disp);font-weight:700;font-size:1.75rem;line-height:1;color:#fff}
.m .v .u{font-size:.44em;font-weight:500;color:rgba(255,255,255,.66);margin-left:.12em}
.m .d{font-size:.72rem;color:rgba(255,255,255,.66);margin-top:.4rem}
.tag{font-family:var(--mono);font-size:.54rem;color:var(--amber-ink);border:1px solid rgba(138,90,28,.45);border-radius:3px;padding:.1rem .32rem;margin-left:.35rem;vertical-align:middle}
.m .tag{color:var(--amber-l);border-color:rgba(224,168,90,.5)}

.body{padding:clamp(2.2rem,5vw,3.5rem) 0}
.cols{display:grid;grid-template-columns:1.7fr 1fr;gap:clamp(2rem,5vw,4rem)}
@media(max-width:900px){.cols{grid-template-columns:1fr;gap:2.5rem}}
h2.sec{font-family:var(--disp);font-weight:700;font-size:clamp(1.5rem,3vw,2rem);color:var(--navy);letter-spacing:-.01em;margin:0 0 1.1rem;display:flex;align-items:center;gap:.6rem}
h2.sec::before{content:"";width:.5rem;height:.5rem;background:var(--accent);flex:0 0 auto}
.block{margin-bottom:clamp(2rem,4vw,2.8rem)}
p.lead{font-family:var(--disp);font-size:clamp(1.15rem,2.2vw,1.4rem);line-height:1.55;color:var(--ink);margin-bottom:1rem}
p{color:var(--ink2);margin-bottom:1rem;max-width:64ch}
p b{color:var(--ink)}

/* comparison viz */
.cmp{margin-top:.5rem;border-top:2px solid var(--accent)}
.crow{display:grid;grid-template-columns:150px 1fr;gap:1rem;align-items:center;padding:.7rem 0;border-bottom:1px solid var(--line)}
@media(max-width:560px){.crow{grid-template-columns:110px 1fr}}
.crow .cl{font-size:.82rem;color:var(--ink2)}
.crow .cl b{display:block;color:var(--ink);font-size:.86rem}
.cpair{display:flex;flex-direction:column;gap:4px}
.cbar{display:flex;align-items:center;gap:.5rem}
.cbar .track{flex:1;background:var(--surface2);height:13px;border-radius:2px;overflow:hidden}
.cbar .fill{height:100%}
.cbar .fill.dt{background:var(--amber)}
.cbar .fill.ct{background:var(--navy-l)}
.cbar .num{flex:0 0 74px;font-family:var(--mono);font-size:.72rem;color:var(--ink);text-align:right}
.cnote{font-size:.72rem;color:var(--muted);margin-top:.15rem}
.legend{display:flex;gap:1.2rem;font-size:.75rem;color:var(--ink2);margin:.6rem 0 0}
.legend .dotk{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:.35rem;vertical-align:middle}

/* block pulse */
.blockpulse{margin-top:.5rem}
.bp{display:flex;align-items:center;gap:.7rem;padding:.4rem 0}
.bp .st{flex:0 0 150px;font-size:.82rem;color:var(--ink2)}
.bp .tr{flex:1;background:var(--surface2);height:14px;border-radius:2px;overflow:hidden}
.bp .fl{height:100%;background:var(--navy-l)}
.bp .fl.hot{background:var(--amber)}
.bp .ct{flex:0 0 34px;text-align:right;font-family:var(--mono);font-size:.72rem;color:var(--ink)}
@media(max-width:560px){.bp .st{flex-basis:110px;font-size:.76rem}}

/* departure board */
.dep{background:var(--navy-d);border-radius:4px;padding:1rem 1.1rem;margin-top:.5rem}
.dep h4{font-family:var(--mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--amber-l);margin-bottom:.6rem}
.drow{display:flex;justify-content:space-between;gap:1rem;font-family:var(--mono);font-size:.82rem;color:#E9EDF2;padding:.34rem 0;border-bottom:1px solid rgba(255,255,255,.1)}
.drow:last-child{border-bottom:none}
.drow .dest{color:rgba(255,255,255,.8)}
.drow .tm{color:#8FD3B6;font-weight:700}

/* table */
table.dt{width:100%;border-collapse:collapse;font-size:.9rem;margin-top:.5rem}
table.dt caption{text-align:left;font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--navy);padding-bottom:.6rem}
table.dt th{text-align:left;font-weight:600;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;padding:.5rem .6rem;border-bottom:1.5px solid var(--navy)}
table.dt td{padding:.6rem;border-bottom:1px solid var(--line);color:var(--ink2)}
table.dt td.n{font-family:var(--mono);color:var(--ink);font-weight:500}
table.dt tr:last-child td{border-bottom:none}

.tr{display:grid;grid-template-columns:130px 1fr;gap:1rem;padding:.8rem 0;border-bottom:1px solid var(--line);align-items:baseline}
.tr .k{font-family:var(--mono);font-size:.72rem;color:var(--navy);font-weight:700;text-transform:uppercase}
.tr .v{font-size:.9rem;color:var(--ink2)}
@media(max-width:520px){.tr{grid-template-columns:1fr;gap:.25rem}}

.rail .panel{border:1px solid var(--line);background:var(--surface);padding:1.2rem;margin-bottom:1.5rem}
.rail h3{font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--navy);margin-bottom:.9rem}
.nb{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}
.nb a{font-size:.78rem;text-decoration:none;color:var(--ink2);padding:.35rem .5rem;background:var(--paper);border:1px solid var(--line)}
.nb a:hover{border-color:var(--navy);color:var(--navy)}
.nb a.cur{background:var(--navy);color:#fff;border-color:var(--navy)}
.src{font-size:.78rem;color:var(--ink2);line-height:2}
.src a{color:var(--navy-l);text-decoration:none;border-bottom:1px solid var(--line2)}
.method{font-size:.78rem;color:var(--muted);line-height:1.6}
.method b{color:var(--ink2)}
.dev a{display:block;font-size:.85rem;text-decoration:none;color:var(--ink2);padding:.5rem 0;border-bottom:1px solid var(--line)}
.dev a:hover{color:var(--navy)}
.dev a span{display:block;font-size:.72rem;color:var(--muted);margin-top:.15rem}
footer{background:var(--navy-d);color:rgba(255,255,255,.72);padding:2rem 0;font-size:.8rem}
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem}
footer a{color:var(--amber-l);text-decoration:none}
.fn{font-family:var(--disp);color:#fff;font-weight:700;font-size:1rem}
