/*
 * Self-service rides (bike-page "Start ride" panel, /ride/{id}, /account/rides).
 * Mobile-first — this is a phone UI used next to a bike: 44px+ tap targets, one column,
 * sticky action bar. Breakpoints 600 / 768. Branding: red #d81817 (hover #b01215), slate palette,
 * radius 8px (controls) / 12px (cards) / 14px (hero containers).
 * Class prefixes: .rd-* shared primitives, .rs-* start panel, .rp-* ride page, .rl-* rides list.
 */
.rd-page{background:linear-gradient(180deg,#fff 0,#f8fafc 22rem);padding:1rem 0 2.5rem;color:#0f172a;min-height:60vh}
.rd-page--bar{padding-bottom:9.5rem}
.rd-shell{width:min(100% - 1.5rem,640px);margin-inline:auto}
.rd-shell--wide{width:min(100% - 1.5rem,860px)}
[hidden]{display:none!important}

.rd-back{display:inline-flex;align-items:center;gap:.45rem;min-height:44px;color:#475569;font-size:.8125rem;font-weight:700;text-decoration:none}
.rd-back:hover{color:#d81817}

.rd-card{border:1px solid #e2e8f0;background:#fff;border-radius:12px;box-shadow:0 12px 32px rgba(15,23,42,.06);padding:1.1rem;margin-bottom:.9rem}
.rd-card--attention{border-color:#fca5a5;box-shadow:0 0 0 3px rgba(216,24,23,.1)}
.rd-eyebrow{margin:0 0 .6rem;color:#64748b;font-size:.6875rem;font-weight:800;text-transform:uppercase;letter-spacing:.09em}
.rd-h2{margin:0 0 .5rem;font-size:1.05rem;font-weight:850;letter-spacing:-.01em;color:#0f172a}
.rd-muted{color:#64748b;font-size:.8125rem;line-height:1.5;margin:.4rem 0 0}

/* Buttons */
.rd-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;width:100%;min-height:52px;padding:.7rem 1.1rem;border:2px solid transparent;border-radius:10px;font:inherit;font-size:1rem;font-weight:800;line-height:1.2;text-decoration:none;cursor:pointer;transition:background .15s,border-color .15s,color .15s,opacity .15s}
.rd-btn--primary{background:#d81817;color:#fff;box-shadow:0 10px 25px rgba(216,24,23,.22)}
.rd-btn--primary:hover{background:#b01215;color:#fff}
.rd-btn--secondary{background:#fff;color:#0f172a;border-color:#cbd5e1}
.rd-btn--secondary:hover{border-color:#94a3b8;color:#0f172a}
.rd-btn--danger{background:#0f172a;color:#fff}
.rd-btn--danger:hover{background:#1e293b;color:#fff}
.rd-btn[disabled],.rd-btn[aria-disabled="true"]{opacity:.55;cursor:not-allowed;box-shadow:none}
.rd-btn:focus-visible{outline:3px solid rgba(216,24,23,.28);outline-offset:3px}
.rd-btn-row{display:grid;gap:.6rem}

/* Notices */
.rd-notice{display:flex;gap:.65rem;align-items:flex-start;margin:0 0 .9rem;padding:.8rem .9rem;border-radius:10px;border:1px solid #e2e8f0;background:#f8fafc;color:#334155;font-size:.875rem;line-height:1.45}
.rd-notice i{margin-top:.12rem;flex:0 0 auto}
.rd-notice--warn{background:#fffbeb;border-color:#fde68a;color:#92400e}
.rd-notice--error{background:#fef2f2;border-color:#fecaca;color:#991b1b}
.rd-notice--ok{background:#ecfdf5;border-color:#a7f3d0;color:#065f46}

/* Spinner + status icon */
.rd-spin{display:inline-block;width:1.15em;height:1.15em;border:.18em solid rgba(100,116,139,.3);border-top-color:#d81817;border-radius:50%;animation:rd-rot .8s linear infinite;vertical-align:-.2em}
.rd-btn--primary .rd-spin{border-color:rgba(255,255,255,.4);border-top-color:#fff}
@keyframes rd-rot{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.rd-spin{animation-duration:2.4s}}

/* Badges */
.rd-badge{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .6rem;border-radius:999px;font-size:.6875rem;font-weight:800;letter-spacing:.02em;white-space:nowrap;background:#f1f5f9;color:#475569;border:1px solid #e2e8f0}
.rd-badge--live{background:#ecfdf5;color:#047857;border-color:#a7f3d0}
.rd-badge--wait{background:#fffbeb;color:#b45309;border-color:#fde68a}
.rd-badge--done{background:#f1f5f9;color:#334155}
.rd-badge--bad{background:#fef2f2;color:#b91c1c;border-color:#fecaca}
.rd-badge--muted{background:#f8fafc;color:#64748b}
.rd-badge--open{background:#ecfdf5;color:#047857;border-color:#a7f3d0}
.rd-badge--closed{background:#fef2f2;color:#b91c1c;border-color:#fecaca}

/* Map */
.rd-map{height:220px;border-radius:10px;overflow:hidden;background:#e2e8f0;border:1px solid #e2e8f0;z-index:0}
.rd-map--tall{height:260px}
.rd-map-link{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;margin-top:.3rem;color:#d81817;font-size:.875rem;font-weight:800;text-decoration:none}
.rd-map-link:hover{color:#b01215}

/* ── Start panel (bike page) ───────────────────────────────────────────── */
.rs-panel{padding:1.1rem}
.rs-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:.35rem}
.rs-title{margin:0;font-size:1.35rem;line-height:1.15;font-weight:850;letter-spacing:-.025em}
.rs-lead{margin:.2rem 0 1rem;color:#475569;font-size:.9rem;line-height:1.5}
.rs-block{padding:.9rem 0;border-top:1px solid #e2e8f0}
.rs-station{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}
.rs-station__name{margin:0;font-size:1rem;font-weight:800}
.rs-hours{color:#64748b;font-size:.8125rem;margin:.2rem 0 0}
.rs-prices{margin:0;padding:0;list-style:none;display:grid;gap:.4rem}
.rs-price{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.7rem .85rem;border:1px solid #e2e8f0;border-radius:10px;background:#f8fafc}
.rs-price__label{font-weight:700;color:#334155}
.rs-price__value{font-size:1.1rem;font-weight:850;color:#d81817}
.rs-note{display:flex;gap:.6rem;align-items:flex-start;margin:.7rem 0 0;color:#475569;font-size:.8125rem;line-height:1.5}
.rs-note i{margin-top:.15rem;color:#94a3b8;flex:0 0 auto}
.rs-cta{margin-top:.4rem}
.rs-auth{margin-top:.9rem;padding:.9rem;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc}
.rs-auth p{margin:0 0 .75rem;color:#334155;font-size:.875rem;line-height:1.5}
.rs-unavail{display:flex;gap:.7rem;align-items:flex-start;padding:.9rem;border-radius:12px;background:#fffbeb;border:1px solid #fde68a;color:#92400e;font-size:.9rem;line-height:1.5;margin-top:.4rem}
.rs-unavail i{margin-top:.15rem}
.rs-refresh{margin-top:.7rem}

/* ── Ride page ─────────────────────────────────────────────────────────── */
.rp-hero{text-align:center;padding:1.4rem 1.1rem}
.rp-hero__icon{display:grid;place-items:center;width:4rem;height:4rem;margin:0 auto .8rem;border-radius:50%;background:#f1f5f9;color:#475569;font-size:1.6rem}
.rp-hero[data-tone="live"] .rp-hero__icon{background:#ecfdf5;color:#059669}
.rp-hero[data-tone="wait"] .rp-hero__icon{background:#fff7ed;color:#c2410c}
.rp-hero[data-tone="pay"] .rp-hero__icon{background:#fef2f2;color:#d81817}
.rp-hero[data-tone="done"] .rp-hero__icon{background:#ecfdf5;color:#059669}
.rp-hero[data-tone="bad"] .rp-hero__icon{background:#fef2f2;color:#dc2626}
.rp-hero[data-tone="paused"] .rp-hero__icon{background:#fffbeb;color:#d97706}
.rp-title{margin:0;font-size:1.45rem;line-height:1.15;font-weight:850;letter-spacing:-.025em}
.rp-sub{margin:.45rem auto 0;max-width:30rem;color:#475569;font-size:.9375rem;line-height:1.5}
.rp-stats{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
.rp-stat{padding:.85rem .8rem;border-radius:10px;background:#f8fafc;border:1px solid #f1f5f9;min-width:0}
.rp-stat__label{display:block;color:#64748b;font-size:.6875rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.rp-stat__value{display:block;margin-top:.2rem;font-size:1.65rem;font-weight:850;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:#0f172a;overflow-wrap:anywhere}
.rp-stat__value--price{color:#d81817}
.rp-stat__hint{display:block;min-height:1.1em;margin-top:.2rem;color:#64748b;font-size:.75rem;line-height:1.35}
.rp-hold{margin:.8rem 0 0;color:#64748b;font-size:.75rem;line-height:1.5}
.rp-dl{display:grid;gap:.1rem;margin:0}
.rp-dl>div{display:flex;justify-content:space-between;gap:1rem;padding:.65rem 0;border-top:1px solid #f1f5f9}
.rp-dl>div:first-child{border-top:0}
.rp-dl dt{color:#64748b;font-size:.8125rem}
.rp-dl dd{margin:0;text-align:right;font-weight:750;font-size:.9rem;overflow-wrap:anywhere}
.rp-dl .rp-total dd{font-size:1.25rem;color:#d81817;font-weight:850}
.rp-bike{display:flex;align-items:center;gap:.8rem}
.rp-bike__icon{display:grid;place-items:center;flex:0 0 2.6rem;height:2.6rem;border-radius:10px;background:#fef2f2;color:#d81817}
.rp-bike__name{display:block;font-weight:800;line-height:1.3;overflow-wrap:anywhere}
.rp-bike__meta{display:block;color:#64748b;font-size:.8125rem;margin-top:.1rem;overflow-wrap:anywhere}
.rp-bike code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:800;color:#334155}
.rp-invoice{margin-top:.9rem}
.rp-help{text-align:center;margin:1rem 0 0;color:#64748b;font-size:.8125rem}
.rp-help a{color:#d81817;font-weight:800;text-decoration:none}

.rd-actionbar{position:fixed;z-index:40;left:0;right:0;bottom:0;padding:.75rem .75rem calc(.75rem + env(safe-area-inset-bottom,0px));background:rgba(255,255,255,.97);border-top:1px solid #e2e8f0;box-shadow:0 -10px 30px rgba(15,23,42,.1);backdrop-filter:blur(8px)}
.rd-actionbar__inner{width:min(100%,640px);margin-inline:auto}
.rd-actionbar__row{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
.rd-actionbar__row--single{grid-template-columns:1fr}
.rd-confirm{margin-bottom:.75rem}
.rd-confirm__title{margin:0;font-size:1rem;font-weight:850}
.rd-confirm__body{margin:.25rem 0 .75rem;color:#475569;font-size:.875rem;line-height:1.45}

/* ── Rides list ────────────────────────────────────────────────────────── */
.rl-head{margin:0 0 1rem}
.rl-title{margin:0;font-size:1.6rem;font-weight:850;letter-spacing:-.03em}
.rl-sub{margin:.3rem 0 0;color:#64748b;font-size:.9rem}
.rl-list{display:grid;gap:.7rem;margin:0;padding:0;list-style:none}
.rl-item{display:block;padding:1rem;border:1px solid #e2e8f0;border-radius:12px;background:#fff;box-shadow:0 8px 22px rgba(15,23,42,.05);color:inherit;text-decoration:none;min-height:44px}
.rl-item:hover{border-color:#cbd5e1}
.rl-item:focus-visible{outline:3px solid rgba(216,24,23,.28);outline-offset:2px}
.rl-item__top{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem}
.rl-item__bike{font-weight:850;line-height:1.3;overflow-wrap:anywhere}
.rl-item__meta{margin:.3rem 0 0;color:#64748b;font-size:.8125rem;line-height:1.4}
.rl-item__nums{display:flex;gap:1rem;margin-top:.55rem;font-size:.9rem;font-weight:750}
.rl-item__amount{color:#d81817}
.rl-empty{text-align:center;padding:2rem 1rem}
.rl-empty i{font-size:2rem;color:#cbd5e1;margin-bottom:.6rem}

@media (min-width:600px){
  .rd-page{padding-top:1.5rem}
  .rd-shell{width:min(100% - 2.5rem,640px)}
  .rd-shell--wide{width:min(100% - 2.5rem,860px)}
  .rd-card{padding:1.35rem}
  .rd-btn-row--2{grid-template-columns:1fr 1fr}
  .rp-title{font-size:1.75rem}
  .rp-stat__value{font-size:1.9rem}
  .rd-map{height:260px}
}
@media (min-width:768px){
  .rd-actionbar{left:50%;right:auto;transform:translateX(-50%);width:min(640px,100%);border:1px solid #e2e8f0;border-bottom:0;border-radius:14px 14px 0 0}
}

/* The site-wide floating contact button would sit on top of the sticky action bar; the ride page has its own "Contact us" link. */
.page-ride .ct-fab{display:none}
