:root{--navy:#14213d;--navy2:#1d2d50;--red:#b23a2e;--cream:#f7f1e3;--brass:#c9a227;--ink:#1b1b1b;--muted:#5b6170;--card:#fffdf8;--line:#e3dccb}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--cream);line-height:1.55}
a{color:var(--red)}.wrap{max-width:1180px;margin:0 auto;padding:0 20px}
.top{background:var(--navy);color:#fff;position:sticky;top:0;z-index:1000}
.nav{display:flex;align-items:center;justify-content:space-between;height:62px;gap:12px}
.brand{color:#fff;text-decoration:none;font-size:1.25rem;letter-spacing:.5px;white-space:nowrap}.brand b{color:var(--brass)}.logo{margin-right:4px}
nav{display:flex;gap:18px;align-items:center}nav a{color:#dfe6f3;text-decoration:none;font-size:.95rem}nav a:hover{color:#fff}
.btn-sm{background:var(--red);color:#fff!important;padding:7px 12px;border-radius:6px}
.rails{height:8px;background:repeating-linear-gradient(90deg,#6b4f2a 0 10px,transparent 10px 22px),linear-gradient(#9aa3ad,#9aa3ad);background-size:auto,100% 2px;background-position:0 0,0 3px;background-repeat:repeat-x,no-repeat;background-color:var(--navy2)}
.hero{background:linear-gradient(160deg,var(--navy) 0%,var(--navy2) 60%,#2b3f6b 100%);color:#fff;padding:56px 0 64px}
.hero.small{padding:34px 0 40px}.hero h1{font-family:Georgia,"Times New Roman",serif;font-size:clamp(1.9rem,4.5vw,3.1rem);line-height:1.12;margin:.2em 0 .35em;max-width:820px}
.kicker{font-family:ui-monospace,Menlo,Consolas,monospace;color:var(--brass);letter-spacing:3px;font-size:.8rem;margin:0}
.lead{font-size:1.12rem;max-width:760px}.hero .lead{color:#d9e1ef}.hero .crumbs a{color:#d9e1ef}
.mapwrap{margin-top:-34px;position:relative}
.filters{background:var(--card);border:1px solid var(--line);border-radius:12px 12px 0 0;padding:14px;display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;box-shadow:0 8px 24px rgba(20,33,61,.12)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 12px;cursor:pointer;font-size:.9rem}.chip small{color:var(--muted)}
.chip.active{background:var(--navy);color:#fff;border-color:var(--navy)}.chip.active small{color:#c9d3e6}
.sel{font-size:.9rem;color:var(--muted)}.sel select{margin-left:6px;padding:7px;border-radius:8px;border:1px solid var(--line);font-size:.95rem}
#leaf{height:460px;border:1px solid var(--line);border-top:0;border-radius:0 0 12px 12px;box-shadow:0 8px 24px rgba(20,33,61,.12)}
.count{color:var(--muted);font-size:.9rem}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:16px;margin:18px auto 40px}
.card{background:var(--card);border:1px solid var(--line);border-left:5px solid var(--red);border-radius:10px;padding:14px 16px}
.card h3{margin:.35em 0 .3em;font-family:Georgia,serif;font-size:1.12rem}.card h3 a{color:var(--navy);text-decoration:none}.card h3 a:hover{text-decoration:underline}
.card p{margin:.3em 0;font-size:.93rem;color:#333}.card-top{display:flex;justify-content:space-between;gap:8px;align-items:center}
.loc{color:var(--muted);font-size:.85rem}.loc.big{font-size:1rem}
.tag{display:inline-block;font-size:.75rem;padding:3px 8px;border-radius:5px;font-weight:600;background:#eee}
.t-caboose{background:#f6d9d4;color:#7d2219}.t-traincar{background:#dbe5f7;color:#1d3a73}.t-depot{background:#efe3c0;color:#6b5210}.t-trackside{background:#dcefe0;color:#1f5a2c}
.tip{color:#6b5210!important;font-weight:600}
.cta{display:flex;justify-content:space-between;align-items:center;gap:20px;background:var(--navy);color:#fff;border-radius:14px;padding:24px 28px;margin-bottom:40px;flex-wrap:wrap}.cta h2{margin:0 0 4px;font-family:Georgia,serif}
.btn{display:inline-block;background:var(--red);color:#fff;text-decoration:none;padding:11px 18px;border-radius:8px;font-weight:600;border:0;cursor:pointer;font-size:1rem}
.btn.ghost{background:transparent;color:var(--muted);border:1px dashed #b9b3a3;cursor:default}
.newsletter{background:#ece3cd;border-top:4px solid var(--brass);padding:36px 0}.newsletter h2{font-family:Georgia,serif;margin:0 0 6px;color:var(--navy)}
.nl{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.nl input{flex:1;min-width:220px;padding:11px;border-radius:8px;border:1px solid #cfc6af;font-size:1rem}
.nl button{background:var(--navy);color:#fff;border:0;border-radius:8px;padding:11px 18px;font-weight:600;cursor:pointer}.nl-msg{width:100%;color:#1f5a2c;font-weight:600}
.foot{background:var(--navy);color:#c9d3e6;padding:24px 0;font-size:.92rem}.small{font-size:.82rem;color:var(--muted)}.foot .small{color:#9fb0cc}
.detail{padding:24px 20px 40px}.detail h1{font-family:Georgia,serif;color:var(--navy);font-size:clamp(1.7rem,4vw,2.5rem);margin:.25em 0 .1em}
.crumbs{font-size:.85rem;color:var(--muted)}.cols{display:grid;grid-template-columns:1.6fr 1fr;gap:28px;margin-top:10px}
.box{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 16px;margin:14px 0}.box h2{font-size:1rem;margin:.2em 0;color:var(--navy)}
.tipbox{border-left:5px solid var(--brass)}.actions{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}
#mini{height:260px;border-radius:10px;border:1px solid var(--line)}
.statelist{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin:24px auto 40px}
.stbtn{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:12px;text-decoration:none;color:var(--navy);font-weight:600}.stbtn small{display:block;color:var(--muted);font-weight:400}
.narrow{max-width:720px}.submit{display:grid;gap:12px}.submit label{display:grid;gap:4px;font-weight:600;font-size:.93rem}
.submit input,.submit select,.submit textarea{padding:10px;border:1px solid #cfc6af;border-radius:8px;font:inherit;font-weight:400}.submit .check{display:flex;gap:8px;font-weight:400}
.leaflet-popup-content a{font-weight:600;color:var(--navy)}
@media (max-width:760px){nav a:not(.btn-sm){display:none}.cols{grid-template-columns:1fr}#leaf{height:360px}.hero{padding:36px 0 50px}}
.bh-embed{margin-top:10px;min-height:60px}
