
:root{
  --brand:#00C853; --brand-ink:#064B2B; --ink:#0A0F1A; --muted:#616C7A;
  --bg:#FFFFFF; --surface:#F6FBF8; --card:#FFFFFF; --border:#E5EAEF;
  --pill:#00C853; --pill-ink:#052112; --error:#D93025;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--ink);font:16px/1.55 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}
a{color:#0B7D3A;text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:1100px;margin:0 auto;padding:0 16px}

/* Motion tokens */
@media (prefers-reduced-motion: no-preference){
  .card, .pill, .btn{ transition: transform .15s ease, box-shadow .15s ease, background-color .15s ease; }
  .card:hover{ transform: translateY(-2px); box-shadow:0 18px 36px rgba(10,20,40,.10); }
  .btn:active, .pill:active{ transform: translateY(1px); }
}

/* App bar */
.appbar{position:sticky;top:0;z-index:100;background:#fff;border-bottom:1px solid var(--border)}
.appbar .row{max-width:1100px;margin:0 auto;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.logo{font-weight:900;color:var(--brand-ink);letter-spacing:.2px}
.topnav a{color:var(--brand-ink);font-weight:800;margin-left:14px}
.topnav a.live{background:var(--pill);color:var(--pill-ink);padding:8px 12px;border-radius:10px;border:1px solid #00A344}

/* Hero */
.hero{background:linear-gradient(180deg,#FFFFFF 0%, #E8FFF1 100%);border-bottom:1px solid var(--border)}
.hero .wrap{padding:28px 16px 14px}
.hero h1{font-size:32px;line-height:1.15;margin:0 0 8px;color:#053B18}
.hero p{margin:0 0 14px;color:var(--muted)}
.search{display:flex;align-items:center;gap:10px;background:#fff;border:2px solid #CDEFD9;border-radius:14px;padding:12px 14px;box-shadow:0 4px 14px rgba(10,20,40,.06)}
.search svg{width:20px;height:20px;color:#7a8492}
.search input{flex:1;border:0;outline:0;font-weight:650;color:var(--ink);background:transparent}
.results{list-style:none;margin:8px 0 0;padding:0;display:none}
.results.show{display:block}
.results li{margin:6px 0}
.results a{display:flex;align-items:center;gap:10px;background:var(--card);color:var(--ink);text-decoration:none;padding:12px;border-radius:12px;border:1px solid var(--border)}
.results a .id{display:inline-flex;align-items:center;justify-content:center;width:42px;height:30px;border-radius:999px;background:#CFFFE2;color:#075A24;font-weight:900}
.quick{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;background:var(--pill);color:var(--pill-ink);padding:10px 14px;border-radius:999px;font-weight:900;border:1px solid #00A344}

/* Cards */
.grid{max-width:1100px;margin:16px auto;padding:0 16px;display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (min-width:860px){ .grid{grid-template-columns: repeat(3, 1fr)} }
.card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:16px;box-shadow:0 14px 30px rgba(10,20,40,.06)}
.card .badge{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;background:#CFFFE2;color:#075A24;font-weight:900;margin-bottom:6px}
.card h2{color:var(--ink);margin:2px 0 4px;font-size:18px}
.card p{color:var(--muted);margin:0}

/* Live panel */
.panel{border-top:1px solid var(--border);}
.panel .wrap{padding:12px 16px}
.panel-head{display:flex;align-items:center;justify-content:space-between;margin:8px 0}
.panel h3{margin:0;color:var(--brand-ink)}
.seeall{font-weight:800}
.live-list{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:1fr;gap:8px}
.live-list li{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:10px}

/* Footer + bottom nav */
.foot{max-width:1100px;margin:0 auto;padding:12px 16px 90px;color:var(--muted)}
.foot a{color:#0E7A3A}
.bottombar{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-around;background:#fff;border-top:1px solid var(--border);padding:10px 4px;z-index:99}
.bottombar a{color:#0E7A3A;text-decoration:none;font-weight:900;padding:8px 12px;border-radius:10px}
.bottombar a.active{background:#CFFFE2}
@media (min-width:860px){ .bottombar{display:none} }

/* Route page shared */
.header-band{background:var(--card);border-bottom:1px solid var(--border)}
.header-band .wrap{display:flex;gap:12px;align-items:center;padding:12px 16px}
.badge{background:#CFFFE2;color:#075A24;border-radius:999px;padding:4px 10px;font-weight:900}
.tools{display:flex;gap:8px;margin:10px 0}
.btn{background:var(--pill);color:var(--pill-ink);border:1px solid #00A344;border-radius:10px;padding:10px 14px;cursor:pointer;font-weight:900}
.card-page{max-width:1100px;margin:12px auto;padding:0 16px}
.section{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:12px;box-shadow:0 12px 28px rgba(10,20,40,.06)}
ul.stops{list-style:none;margin:0;padding:0}
ul.stops li.stop{padding:12px 0;border-top:1px solid var(--border)}
ul.stops li.stop .row{display:flex;justify-content:space-between;gap:10px;align-items:center}
ul.stops li.stop .name{font-weight:900}
ul.stops li.stop .eta{font-variant-numeric:tabular-nums;color:#075A24}
ul.stops li.divider{padding:10px 0 4px;margin-top:6px;color:#046C2C;font-weight:900;text-transform:uppercase;font-size:12px}

#routeMap{height:300px;border-radius:12px;overflow:hidden;margin:8px 0 14px;border:1px solid var(--border)}
.leaflet-container a{color:#0E7A3A}
.leaflet-control-attribution{font-size:10px}
