:root{
    --ground:#090C0B;
    --surface:#101613;
    --inset:#0C110F;
    --hairline:#202B26;
    --hairline-soft:#1A231F;
    --text:#EBF2EE;
    --muted:#7E8C85;
    --accent:#2BE58A;
    --accent-dim:rgba(43,229,138,.14);
    --accent-glow:rgba(43,229,138,.30);
    --warm:#FF7A4D;
    --amber:#FFB454;
    --radius-panel:16px;
    --radius-ctl:12px;
    --font-display:"Bricolage Grotesque",sans-serif;
    --font-body:"Instrument Sans",sans-serif;
    --font-mono:"JetBrains Mono",monospace;
  }
  *,*::before,*::after{box-sizing:border-box}
  html,body{margin:0;padding:0}
  html{-webkit-text-size-adjust:100%}
  body{
    background:var(--ground);
    color:var(--text);
    font-family:var(--font-body);
    font-size:15px;
    line-height:1.5;
    min-height:100vh;
    overflow-x:hidden;
  }
  body::before{
    content:"";
    position:fixed;
    inset:0;
    pointer-events:none;
    background:
      radial-gradient(900px 480px at 12% -8%, rgba(43,229,138,.055), transparent 60%),
      radial-gradient(760px 420px at 92% 4%, rgba(255,122,77,.035), transparent 60%),
      radial-gradient(1100px 700px at 50% 115%, rgba(43,229,138,.04), transparent 62%);
    z-index:0;
  }
  ::selection{background:rgba(43,229,138,.28);color:#EAFBF2}
  :focus-visible{outline:2px solid rgba(43,229,138,.7);outline-offset:2px;border-radius:6px}
  button{font-family:inherit;cursor:pointer}
  input{font-family:inherit}
  .mono{font-family:var(--font-mono)}

  /* Header */
  .topbar{
    position:sticky;top:0;z-index:50;
    background:rgba(9,12,11,.82);
    backdrop-filter:blur(14px);
    -webkit-backdrop-filter:blur(14px);
    border-bottom:1px solid var(--hairline-soft);
  }
  .topbar-inner{
    max-width:1200px;margin:0 auto;
    padding:0 20px;
    height:64px;
    display:flex;align-items:center;justify-content:space-between;gap:16px;
  }
  .brand{display:flex;align-items:center;gap:11px;min-width:0}
  .brand svg{flex:none;display:block}
  .wordmark{
    font-family:var(--font-display);
    font-weight:800;
    font-size:19px;
    letter-spacing:-0.01em;
    color:var(--text);
    white-space:nowrap;
  }
  .brand-tag{
    font-family:var(--font-mono);
    font-size:10px;
    letter-spacing:.08em;
    color:var(--muted);
    border:1px solid var(--hairline);
    border-radius:999px;
    padding:3px 9px;
    white-space:nowrap;
  }
  .live-pill{
    display:flex;align-items:center;gap:8px;
    border:1px solid var(--hairline);
    background:var(--surface);
    border-radius:999px;
    padding:6px 13px;
    font-family:var(--font-mono);
    font-size:11px;
    letter-spacing:.08em;
    text-transform:uppercase;
    color:var(--muted);
  }
  #live-dot{
    width:8px;height:8px;border-radius:50%;
    background:#39463F;
    flex:none;
    transition:background .3s ease, box-shadow .3s ease;
  }
  #live-dot.on{
    background:var(--accent);
    box-shadow:0 0 10px rgba(43,229,138,.8), 0 0 22px rgba(43,229,138,.35);
    animation:pulse 2.2s ease-in-out infinite;
  }
  @keyframes pulse{
    0%,100%{box-shadow:0 0 8px rgba(43,229,138,.7), 0 0 18px rgba(43,229,138,.28)}
    50%{box-shadow:0 0 14px rgba(43,229,138,.95), 0 0 30px rgba(43,229,138,.45)}
  }

  /* Layout */
  .grid{
    position:relative;z-index:1;
    max-width:1200px;margin:0 auto;
    padding:26px 20px 10px;
    display:grid;
    grid-template-columns:1.6fr 1fr;
    gap:20px;
    align-items:start;
  }
  .panel,.card{
    background:linear-gradient(180deg,#121915 0%, var(--surface) 22%);
    border:1px solid var(--hairline);
    border-radius:var(--radius-panel);
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.045),
      0 18px 44px rgba(0,0,0,.42);
  }

  /* Chat */
  .chat{
    display:flex;flex-direction:column;
    height:calc(100dvh - 196px);
    min-height:580px;
    max-height:840px;
    overflow:hidden;
  }
  .chat-head{
    display:flex;align-items:center;gap:13px;
    padding:18px 20px 14px;
  }
  .avatar{
    width:46px;height:46px;flex:none;
    border-radius:14px;
    background:linear-gradient(160deg, rgba(255,122,77,.24), rgba(255,122,77,.12));
    border:1px solid rgba(255,122,77,.38);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.08), 0 6px 16px rgba(255,122,77,.10);
    display:flex;align-items:center;justify-content:center;
    font-size:24px;
  }
  .chat-title{min-width:0}
  .chat-title h1{
    margin:0;
    font-family:var(--font-display);
    font-weight:700;
    font-size:20px;
    letter-spacing:-0.01em;
    line-height:1.15;
  }
  #chat-sub{display:block;color:var(--muted);font-size:13px;margin-top:1px}
  #reset{
    margin-left:auto;flex:none;
    background:transparent;border:none;
    color:var(--muted);
    font-family:var(--font-mono);
    font-size:11px;letter-spacing:.08em;text-transform:uppercase;
    padding:7px 10px;border-radius:8px;
    transition:color .18s ease, background .18s ease;
  }
  #reset:hover{color:var(--accent);background:rgba(43,229,138,.07)}
  .route-deco{
    position:relative;
    margin:0 20px;
    border-top:1px dashed rgba(43,229,138,.30);
  }
  .route-deco::before,.route-deco::after{
    content:"";position:absolute;top:-3.5px;
    width:7px;height:7px;border-radius:50%;
  }
  .route-deco::before{left:0;background:var(--accent);box-shadow:0 0 8px rgba(43,229,138,.7)}
  .route-deco::after{right:0;background:var(--warm);box-shadow:0 0 8px rgba(255,122,77,.55)}
  .messages{
    flex:1 1 auto;min-height:0;
    overflow-y:auto;
    display:flex;flex-direction:column;gap:10px;
    padding:18px 20px;
    scroll-behavior:smooth;
  }
  .messages::-webkit-scrollbar{width:8px}
  .messages::-webkit-scrollbar-track{background:transparent}
  .messages::-webkit-scrollbar-thumb{background:#223029;border-radius:99px}
  .messages::-webkit-scrollbar-thumb:hover{background:#2C3D34}

  .bubble{
    max-width:78%;
    padding:11px 15px;
    font-size:14.5px;
    line-height:1.55;
    white-space:pre-wrap;
    word-break:break-word;
    animation:rise .28s ease both;
  }
  @keyframes rise{
    from{opacity:0;transform:translateY(7px)}
    to{opacity:1;transform:translateY(0)}
  }
  .bubble.u{
    align-self:flex-end;
    background:linear-gradient(180deg, rgba(43,229,138,.17), rgba(43,229,138,.10));
    border:1px solid rgba(43,229,138,.30);
    color:#E2FBEE;
    border-radius:16px 16px 6px 16px;
    box-shadow:0 6px 18px rgba(43,229,138,.07);
  }
  .bubble.b{
    align-self:flex-start;
    background:#131B17;
    border:1px solid var(--hairline);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
    color:var(--text);
    border-radius:16px 16px 16px 6px;
  }
  .bubble.b.think{
    color:var(--muted);
    font-style:italic;
    background:#0F1512;
    border-style:dashed;
  }
  .trace{
    align-self:flex-start;
    display:inline-flex;align-items:center;gap:6px;
    font-family:var(--font-mono);
    font-size:10px;letter-spacing:.08em;text-transform:uppercase;
    color:var(--accent);
    background:rgba(43,229,138,.07);
    border:1px solid rgba(43,229,138,.28);
    border-radius:999px;
    padding:4px 10px;
    animation:rise .28s ease both;
  }
  .trace::before{
    content:"";width:5px;height:5px;border-radius:50%;
    background:var(--accent);box-shadow:0 0 6px rgba(43,229,138,.8);
  }

  #composer{
    display:flex;gap:10px;
    padding:14px 16px 10px;
    border-top:1px solid var(--hairline-soft);
    background:rgba(12,17,15,.55);
  }
  #input{
    flex:1;min-width:0;
    background:var(--inset);
    border:1px solid var(--hairline);
    border-radius:var(--radius-ctl);
    color:var(--text);
    font-size:14.5px;
    padding:12px 15px;
    transition:border-color .18s ease, box-shadow .18s ease;
  }
  #input::placeholder{color:#5A6760}
  #input:focus{
    outline:none;
    border-color:rgba(43,229,138,.55);
    box-shadow:0 0 0 3px rgba(43,229,138,.14);
  }
  #send{
    flex:none;
    background:linear-gradient(180deg,#3BF59B,var(--accent));
    color:#06130C;
    font-weight:600;font-size:14px;
    border:none;
    border-radius:var(--radius-ctl);
    padding:0 24px;
    min-height:46px;
    box-shadow:0 0 0 1px rgba(43,229,138,.35), 0 8px 24px rgba(43,229,138,.28);
    transition:transform .16s ease, box-shadow .16s ease, filter .16s ease;
  }
  #send:hover{
    transform:translateY(-1px);
    filter:brightness(1.06);
    box-shadow:0 0 0 1px rgba(43,229,138,.5), 0 12px 30px rgba(43,229,138,.38);
  }
  #send:active{transform:translateY(0)}
  #suggestions{
    display:flex;flex-wrap:wrap;gap:8px;
    padding:2px 16px 16px;
    background:rgba(12,17,15,.55);
  }
  #suggestions button{
    background:transparent;
    border:1px solid #24302A;
    color:#9AA8A0;
    font-size:13px;
    border-radius:999px;
    padding:8px 15px;
    transition:border-color .18s ease, color .18s ease, background .18s ease, transform .18s ease;
  }
  #suggestions button:hover{
    border-color:rgba(43,229,138,.6);
    color:var(--accent);
    background:rgba(43,229,138,.06);
    transform:translateY(-1px);
  }

  /* Side cards */
  .side{display:flex;flex-direction:column;gap:20px;min-width:0}
  .card{padding:20px}
  .card-head{
    display:flex;align-items:baseline;justify-content:space-between;gap:12px;
    margin-bottom:14px;
  }
  .card-head h2{
    margin:0;
    font-family:var(--font-display);
    font-weight:700;
    font-size:18px;
    letter-spacing:-0.01em;
  }
  .card-note{
    font-family:var(--font-mono);
    font-size:10px;letter-spacing:.08em;text-transform:uppercase;
    color:var(--muted);
  }
  #w-user{
    font-family:var(--font-mono);
    font-size:11px;letter-spacing:.06em;
    color:var(--muted);
    text-align:right;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }

  .w-glow{
    position:relative;
    display:inline-block;
    padding:6px 18px 6px 0;
  }
  .w-glow::before{
    content:"";
    position:absolute;
    inset:-42% -34%;
    background:radial-gradient(closest-side, rgba(43,229,138,.17), transparent 72%);
    pointer-events:none;
  }
  #w-available{
    position:relative;
    font-family:var(--font-display);
    font-weight:800;
    font-size:clamp(42px, 4.6vw, 56px);
    letter-spacing:-0.03em;
    line-height:1;
    color:var(--accent);
    font-variant-numeric:tabular-nums;
    text-shadow:0 0 26px rgba(43,229,138,.38);
    min-height:1em;
  }
  .w-label{color:var(--text);font-size:14px;font-weight:500;margin-top:6px}
  .w-sub{color:var(--muted);font-size:13px;margin-top:6px;font-variant-numeric:tabular-nums}
  .w-sub span{color:#B9C6BF;font-variant-numeric:tabular-nums}
  .w-note{
    margin-top:14px;
    font-family:var(--font-mono);
    font-size:10px;letter-spacing:.08em;text-transform:uppercase;
    color:#5F6E66;
  }

  /* Quick fare */
  #fare-form{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
  }
  #fare-form input{
    width:100%;min-width:0;
    background:var(--inset);
    border:1px solid var(--hairline);
    border-radius:var(--radius-ctl);
    color:var(--text);
    font-size:14px;
    padding:11px 13px;
    transition:border-color .18s ease, box-shadow .18s ease;
  }
  #fare-form input::placeholder{color:#5A6760}
  #fare-form input:focus{
    outline:none;
    border-color:rgba(43,229,138,.55);
    box-shadow:0 0 0 3px rgba(43,229,138,.14);
  }
  #fare-form button{
    grid-column:1 / -1;
    background:#151E19;
    border:1px solid #26332C;
    color:var(--text);
    font-weight:600;font-size:14px;
    border-radius:var(--radius-ctl);
    padding:11px 16px;
    transition:border-color .18s ease, color .18s ease, background .18s ease, transform .16s ease;
  }
  #fare-form button:hover{
    border-color:rgba(43,229,138,.55);
    color:var(--accent);
    background:rgba(43,229,138,.06);
    transform:translateY(-1px);
  }
  #fare-out{margin-top:6px}
  .fare-row{
    display:grid;
    grid-template-columns:minmax(0,1.1fr) auto minmax(56px,.9fr) auto;
    align-items:center;
    gap:12px;
    padding:12px 0;
    border-bottom:1px solid var(--hairline-soft);
  }
  .fare-row:last-child{border-bottom:none}
  .fare-row .cls{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .fare-row .eta{
    font-family:var(--font-mono);
    font-size:11px;color:var(--muted);
    font-variant-numeric:tabular-nums;
    white-space:nowrap;
  }
  .fare-row .bar{
    height:4px;border-radius:999px;
    background:#18211D;
    overflow:hidden;
  }
  .fare-row .bar i{
    display:block;height:100%;
    background:linear-gradient(90deg, rgba(43,229,138,.55), var(--accent));
    border-radius:999px;
    box-shadow:0 0 8px rgba(43,229,138,.5);
  }
  .fare-row .price{
    font-family:var(--font-mono);
    font-size:13px;color:var(--accent);
    font-variant-numeric:tabular-nums;
    text-align:right;
    white-space:nowrap;
  }
  .fare-meta{
    font-family:var(--font-mono);
    font-size:11px;letter-spacing:.04em;
    color:var(--muted);
    padding-top:10px;
  }
  .fare-meta.est{color:var(--amber)}

  /* Scheduled rides */
  #sched-list{display:flex;flex-direction:column;gap:10px}
  .sched{
    border:1px solid var(--hairline);
    background:var(--inset);
    border-radius:12px;
    padding:12px 14px;
    display:flex;flex-direction:column;gap:3px;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.03);
  }
  .sched .route{font-weight:600;font-size:14px}
  .sched .when{
    font-family:var(--font-mono);
    font-size:11px;color:var(--muted);
    font-variant-numeric:tabular-nums;
  }
  .empty{color:var(--muted);font-size:13px;padding:6px 0}

  /* Footer */
  footer{
    position:relative;z-index:1;
    max-width:1200px;margin:0 auto;
    padding:26px 20px 34px;
    text-align:center;
    font-family:var(--font-mono);
    font-size:11px;letter-spacing:.08em;text-transform:uppercase;
    color:#55645C;
  }

  @media (max-width: 820px){
    .grid{grid-template-columns:1fr;padding:18px 16px 6px}
    .chat{height:auto;min-height:0;max-height:none}
    .messages{flex:none;height:50vh;min-height:300px}
    .brand-tag{display:none}
  }
  @media (max-width: 420px){
    .topbar-inner{padding:0 16px}
    .grid{padding:16px 16px 6px}
    .fare-row{grid-template-columns:minmax(0,1fr) auto;grid-auto-rows:auto}
    .fare-row .bar{grid-column:1 / -1;order:3}
    .fare-row .price{order:2}
  }
  @media (prefers-reduced-motion: reduce){
    *,*::before,*::after{
      animation:none !important;
      transition:none !important;
      scroll-behavior:auto !important;
    }
  }
