/* BRT Arrival Logger — transit-signage UI. Mobile-first, scales to desktop. */
:root{
  --bg:#0d0f11;
  --panel:#141719;
  --panel-2:#1b1f22;
  --line:#252b2f;
  --line-2:#333b41;
  --text:#eef1f2;
  --muted:#8b969d;
  --faint:#5b656b;
  --brt:#12b981;          /* line green — used for "live/active" */
  --brt-deep:#0c8f63;
  --signal:#ffb020;       /* amber — the key BRT time + emphasis */
  --danger:#f0616a;
  --r:11px;
  --shell:1080px;
  --ink-shadow:0 1px 0 rgba(255,255,255,.02) inset, 0 8px 24px rgba(0,0,0,.28);
}
@media (prefers-color-scheme: light){
  :root{
    --bg:#f5f6f7; --panel:#ffffff; --panel-2:#f0f2f3;
    --line:#e3e6e8; --line-2:#d2d7da; --text:#12171a; --muted:#5a656b; --faint:#8b969c;
    --brt-deep:#0a8f61; --ink-shadow:0 1px 2px rgba(0,0,0,.04), 0 8px 24px rgba(0,0,0,.06);
  }
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--bg); color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  font-size:15px; line-height:1.5; -webkit-font-smoothing:antialiased;
  padding-bottom:env(safe-area-inset-bottom);
}
.num,.val,.n,.big,.timer-readout,.v,.segs b,.chip b,.route-strip .code{font-variant-numeric:tabular-nums}

/* ---------- top bar ---------- */
.topbar{
  position:sticky; top:0; z-index:20;
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:12px max(16px,env(safe-area-inset-left)) 12px max(16px,env(safe-area-inset-left));
  padding-top:calc(12px + env(safe-area-inset-top));
  background:color-mix(in srgb,var(--bg) 88%, transparent);
  backdrop-filter:saturate(1.4) blur(10px);
  border-bottom:1px solid var(--line);
}
.topbar > *{max-width:var(--shell)}
.brand{display:flex; align-items:center; gap:10px; flex:0 0 auto}
.brt-badge{
  font:800 14px/1 -apple-system,system-ui,sans-serif; letter-spacing:.6px;
  color:#04140d; background:var(--brt); padding:6px 7px; border-radius:5px;
}
.brand-name{font-weight:650; letter-spacing:-.01em; font-size:15px; white-space:nowrap}
.od{display:flex; align-items:center; gap:12px; min-width:0; flex:1 1 auto; justify-content:flex-end}
.od-route{
  font-size:12.5px; color:var(--muted); font-weight:600; letter-spacing:.01em;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.dir-toggle{
  flex:0 0 auto; font:600 11px/1 inherit; letter-spacing:.06em; text-transform:uppercase;
  color:var(--muted); background:transparent; border:1px solid var(--line-2);
  padding:6px 10px; border-radius:999px; cursor:pointer; transition:.15s;
}
.dir-toggle:hover{color:var(--text); border-color:var(--faint)}
.dir-toggle:active{transform:scale(.95)}

/* ---------- tabs ---------- */
.tabs{
  position:sticky; top:56px; z-index:19; display:flex; gap:2px;
  padding:0 12px; margin:0 auto; max-width:var(--shell);
  background:var(--bg); border-bottom:1px solid var(--line); overflow-x:auto; scrollbar-width:none;
}
.tabs::-webkit-scrollbar{display:none}
.tab{
  flex:0 0 auto; padding:13px 14px; border:0; background:transparent; cursor:pointer;
  color:var(--faint); font:600 13.5px/1 inherit; letter-spacing:.01em;
  border-bottom:2px solid transparent; margin-bottom:-1px;
}
.tab:hover{color:var(--muted)}
.tab.is-active{color:var(--text); border-bottom-color:var(--brt)}

/* ---------- layout ---------- */
main{max-width:var(--shell); margin:0 auto; padding:20px max(16px,env(safe-area-inset-left))}
.panel{display:none}
.panel.is-active{display:block; animation:fade .18s ease}
@keyframes fade{from{opacity:0; transform:translateY(3px)}to{opacity:1}}

.hint{color:var(--muted); font-size:13px; margin:0 0 16px}
.hint strong{color:var(--text); font-weight:650}
h2{font-size:13px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); margin:0 0 12px}

/* ---------- LOG: boarding sequence ---------- */
.seq{list-style:none; margin:0; padding:0}
.seq li{margin:0}
.stamp{
  position:relative; width:100%; display:grid; grid-template-columns:auto 1fr auto;
  align-items:center; gap:14px; text-align:left; cursor:pointer;
  background:var(--panel); border:1px solid var(--line); color:var(--text);
  padding:15px 16px; border-radius:var(--r);
  transition:border-color .15s, transform .05s, background .15s;
}
.seq li + li{margin-top:8px}
.stamp:hover{border-color:var(--line-2)}
.stamp:active{transform:scale(.99)}
/* connector line linking the steps */
.seq li + li .stamp::before{
  content:""; position:absolute; left:30px; top:-9px; width:2px; height:9px;
  background:var(--line-2);
}
.step{
  width:28px; height:28px; border-radius:50%; display:grid; place-items:center;
  font:700 13px/1 inherit; color:var(--muted);
  background:var(--panel-2); border:1px solid var(--line-2);
}
.stamp-body{display:flex; flex-direction:column; gap:1px; min-width:0}
.stamp .lbl{font-weight:600; font-size:15px; letter-spacing:-.005em}
.stamp .sub{font-size:11.5px; color:var(--faint)}
.stamp .val{font-size:23px; font-weight:700; color:var(--faint); letter-spacing:-.01em}
.stamp.set{border-color:color-mix(in srgb,var(--brt) 45%, var(--line))}
.stamp.set .step{color:var(--brt); border-color:var(--brt); background:color-mix(in srgb,var(--brt) 14%, var(--panel))}
.stamp.set .val{color:var(--text)}
.stamp.primary{background:linear-gradient(180deg,var(--panel),color-mix(in srgb,var(--signal) 6%, var(--panel)))}
.stamp.primary .lbl{color:var(--text)}
.stamp.primary.set{border-color:color-mix(in srgb,var(--signal) 55%, var(--line))}
.stamp.primary.set .step{color:var(--signal); border-color:var(--signal); background:color-mix(in srgb,var(--signal) 16%, var(--panel))}
.stamp.primary.set .val{color:var(--signal)}

/* derived readout */
.live{display:flex; flex-wrap:wrap; gap:8px; margin:16px 0 4px}
.live:empty{display:none}
.chip{
  display:inline-flex; align-items:baseline; gap:6px;
  font-size:11px; letter-spacing:.05em; text-transform:uppercase; color:var(--faint);
  background:var(--panel-2); border:1px solid var(--line); border-radius:7px; padding:6px 10px;
}
.chip b{font-size:14px; letter-spacing:0; text-transform:none; color:var(--text); font-weight:700}

/* edit + actions */
.edit-box{margin:18px 0; background:var(--panel); border:1px solid var(--line); border-radius:var(--r); overflow:hidden}
.edit-box summary{
  list-style:none; padding:13px 16px; cursor:pointer; user-select:none;
  font:600 12px/1 inherit; letter-spacing:.06em; text-transform:uppercase; color:var(--muted);
}
.edit-box summary::-webkit-details-marker{display:none}
.edit-box summary::after{content:"+"; float:right; color:var(--faint); font-size:15px}
.edit-box[open] summary::after{content:"–"}
.edit-grid{display:grid; grid-template-columns:1fr 1fr; gap:12px; padding:0 16px 16px}
.edit-grid label{display:flex; flex-direction:column; gap:5px; font-size:11px; letter-spacing:.05em; text-transform:uppercase; color:var(--faint)}
.edit-grid label.wide{grid-column:1/-1}
input[type=date],input[type=time],input[type=text],input[type=number]{
  background:var(--panel-2); border:1px solid var(--line-2); border-radius:8px;
  padding:10px 11px; color:var(--text); font:inherit; font-size:15px; width:100%;
}
input:focus{outline:none; border-color:var(--brt)}

.actions{display:flex; gap:10px; margin-top:16px}
.actions.wrap{flex-wrap:wrap}
.btn{
  flex:1; padding:12px 14px; border-radius:9px; border:1px solid var(--line-2);
  font:650 14px/1 inherit; cursor:pointer; background:var(--panel); color:var(--text); transition:.15s;
}
.btn:hover{border-color:var(--faint)}
.btn.small{flex:0 0 auto; padding:9px 13px; font-size:12.5px; margin-top:12px}
.btn.solid{background:var(--brt); border-color:var(--brt); color:#04140d}
.btn.solid:hover{background:var(--brt-deep); border-color:var(--brt-deep)}
.btn.danger-btn{color:var(--danger); border-color:color-mix(in srgb,var(--danger) 40%, var(--line))}
.btn.danger-btn:hover{border-color:var(--danger)}

/* ---------- route rail ---------- */
.log-aside{margin-top:24px}
.rail-title{font:600 11px/1 inherit; letter-spacing:.08em; text-transform:uppercase; color:var(--faint); margin:0 0 12px}
.route-strip{display:flex; flex-direction:column}
.route-strip .stop{display:flex; align-items:center; gap:12px; font-size:13.5px}
.route-strip .dot{
  width:11px; height:11px; border-radius:50%; border:2px solid var(--line-2);
  background:var(--bg); flex:0 0 auto; position:relative;
}
.route-strip .stop:not(:last-child) .dot::after{
  content:""; position:absolute; left:50%; top:11px; width:2px; height:26px;
  background:var(--line-2); transform:translateX(-50%);
}
.route-strip .stop.ends .dot{background:var(--brt); border-color:var(--brt)}
.route-strip .name{padding:7px 0; color:var(--muted)}
.route-strip .stop.ends .name{color:var(--text); font-weight:650}
.route-strip .code{margin-left:auto; font-size:11px; color:var(--faint); letter-spacing:.03em}

/* ---------- cards / grids ---------- */
.grid-2{display:grid; gap:14px}
.card{
  background:var(--panel); border:1px solid var(--line); border-radius:var(--r); padding:18px;
  margin-bottom:14px;
}
.grid-2 .card{margin-bottom:0}
.card.danger{border-color:color-mix(in srgb,var(--danger) 30%, var(--line))}
label.inline{display:flex; align-items:center; justify-content:space-between; gap:14px; font-size:14px; font-weight:600}
label.inline .unit{color:var(--faint); font-weight:400; font-size:12px}
label.inline input{width:96px; text-align:center; font-size:17px}

.plan-readout{font-size:14px}
.plan-readout .big{display:block; font-size:38px; font-weight:750; color:var(--signal); letter-spacing:-.02em; margin:2px 0}
.plan-readout .sub{color:var(--muted); font-size:12.5px}
.timer-readout{font-size:52px; font-weight:750; text-align:center; letter-spacing:-.02em; margin:6px 0 10px}

/* ---------- stats ---------- */
.stat-cards{display:grid; grid-template-columns:repeat(2,1fr); gap:12px; margin-bottom:14px}
.stat{background:var(--panel); border:1px solid var(--line); border-radius:var(--r); padding:15px 16px}
.stat .n{font-size:26px; font-weight:750; letter-spacing:-.02em}
.stat .k{font-size:11px; letter-spacing:.05em; text-transform:uppercase; color:var(--faint); margin-top:3px}

.hist{display:flex; align-items:flex-end; gap:4px; height:132px; padding-bottom:18px}
.hist .bar{
  flex:1; background:linear-gradient(180deg,var(--brt),var(--brt-deep));
  border-radius:3px 3px 0 0; min-height:2px; position:relative;
}
.hist .bar span{position:absolute; bottom:-17px; left:50%; transform:translateX(-50%); font-size:9px; color:var(--faint); white-space:nowrap}
.hist .empty{width:100%}

.dow-table{display:flex; flex-direction:column; gap:8px}
.dow-row{display:grid; grid-template-columns:40px 1fr auto; align-items:center; gap:12px; font-size:13px}
.dow-row .lbl{color:var(--faint); font-weight:650; font-size:11px; letter-spacing:.05em; text-transform:uppercase}
.dow-row .bar{height:7px; border-radius:4px; background:var(--brt); opacity:.9; min-width:0}
.dow-row .v{color:var(--text); font-weight:600; font-size:12px}

/* ---------- history ---------- */
.trip-list{display:grid; gap:10px}
.trip{background:var(--panel); border:1px solid var(--line); border-radius:var(--r); padding:15px 16px}
.trip .row1{display:flex; justify-content:space-between; align-items:baseline; gap:10px}
.trip .date{font-weight:700; font-size:14px}
.trip .dow{color:var(--faint); font-size:11.5px; margin-left:8px}
.trip .del{background:none; border:0; color:var(--faint); font-size:16px; cursor:pointer; padding:2px 6px; line-height:1}
.trip .del:hover{color:var(--danger)}
.trip .segs{display:flex; flex-wrap:wrap; gap:6px 16px; margin-top:9px; font-size:12.5px; color:var(--faint)}
.trip .segs b{color:var(--text); font-weight:700}
.trip .note{margin-top:9px; font-size:12.5px; color:var(--signal)}
.empty{color:var(--muted); text-align:center; padding:44px 20px; font-size:14px}

.foot{color:var(--faint); font-size:11px; text-align:center; letter-spacing:.03em; margin-top:22px}

/* ---------- toast ---------- */
.toast{
  position:fixed; left:50%; bottom:calc(24px + env(safe-area-inset-bottom));
  transform:translate(-50%,16px);
  background:var(--text); color:var(--bg); padding:11px 18px; border-radius:999px;
  font-size:13px; font-weight:650; opacity:0; pointer-events:none; transition:.22s; z-index:50;
  box-shadow:0 8px 30px rgba(0,0,0,.35); max-width:90%;
}
.toast.show{opacity:1; transform:translate(-50%,0)}

/* ============ responsive ============ */
@media (min-width:560px){
  .grid-2{grid-template-columns:repeat(2,1fr)}
  .grid-2 .span-2{grid-column:1/-1}
  .stat-cards{grid-template-columns:repeat(3,1fr)}
  .trip-list{grid-template-columns:repeat(2,1fr)}
}
@media (min-width:840px){
  main{padding:28px}
  .panel[data-panel="log"].is-active{
    display:grid; grid-template-columns:minmax(0,1fr) 260px; gap:36px; align-items:start;
  }
  .log-aside{margin-top:0; position:sticky; top:112px}
  .seq li + li{margin-top:10px}
  .trip-list{grid-template-columns:repeat(3,1fr)}
}
@media (min-width:1040px){
  .stat-cards{grid-template-columns:repeat(6,1fr)}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none !important; transition:none !important}
}
