/* Public site pages: home, search, booking, checkout, ticket, bookings, about, contact, policy */
.hero{position:relative;background:radial-gradient(1100px 520px at 12% -10%,#1c5aaa 0%,var(--ink) 48%,#08172d 100%);color:#fff;padding:calc(var(--nav-h) + 48px) 0 120px;overflow:hidden}
.hero::after{content:'';position:absolute;inset:auto 0 0 0;height:120px;background:linear-gradient(180deg,transparent,rgba(0,0,0,.18))}
.hero-inner{max-width:var(--container);margin:0 auto;padding:0 20px;display:grid;grid-template-columns:1.05fr .95fr;gap:40px;align-items:center;position:relative;z-index:1}
.hero h1{color:#fff;font-size:clamp(34px,4.6vw,58px);margin:14px 0 14px} .hero h1 em{font-style:normal;color:var(--brass-light)} .hero .lede{font-size:17px;color:var(--on-ink-soft);max-width:520px;line-height:1.6}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}
.slide-card{position:relative;border-radius:26px;overflow:hidden;aspect-ratio:16/10;box-shadow:0 40px 80px -30px rgba(0,0,0,.7);border:1px solid rgba(255,255,255,.12);background:var(--ink-2)}
.slide{position:absolute;inset:0;opacity:0;transition:opacity .7s;background-size:cover;background-position:center} .slide.is-active{opacity:1} .slide img{width:100%;height:100%;object-fit:cover}
.slide-shade{position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,rgba(8,23,45,.85))} .slide-caption{position:absolute;left:22px;right:22px;bottom:20px} .slide-caption .ev{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--brass-light);font-weight:700} .slide-caption h3{color:#fff;margin:4px 0 0;font-size:22px}
.slide-nav{position:absolute;right:16px;top:16px;display:flex;gap:6px} .slide-nav button{width:34px;height:34px;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:rgba(13,35,68,.5);color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.slide-dots{position:absolute;left:22px;top:18px;display:flex;gap:6px} .slide-dots i{width:22px;height:4px;border-radius:2px;background:rgba(255,255,255,.35);cursor:pointer} .slide-dots i.is-active{background:var(--brass-light)}
.search-wrap{max-width:var(--container);margin:-78px auto 0;padding:0 20px;position:relative;z-index:3}
.search-card{background:var(--surface);border-radius:22px;box-shadow:var(--shadow-lg);padding:18px 20px 20px;border:1px solid var(--border)}
.mode-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px} .mode-tab{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border-radius:12px;border:1px solid var(--border);background:var(--surface-alt);font-weight:600;cursor:pointer;color:var(--text-2);transition:.15s} .mode-tab:hover{border-color:var(--primary-2);color:var(--primary)} .mode-tab.active{background:var(--ink);color:#fff;border-color:var(--ink);box-shadow:0 8px 18px -10px rgba(13,35,68,.8)} .mode-tab .ico{width:18px;height:18px} .mode-tab small{font-weight:500;opacity:.7;font-size:11px}
.search-grid{display:grid;grid-template-columns:1.2fr auto 1.2fr .9fr auto;gap:12px;align-items:end} .search-grid.local{grid-template-columns:1fr 1fr auto 1fr auto} .search-grid .field{margin:0} .search-grid .swap{height:44px;width:44px;border-radius:10px;border:1px solid var(--border);background:var(--surface);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--text-2)} .search-grid .swap:hover{background:var(--primary-soft);color:var(--primary)}
.search-hint{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px;font-size:12.5px;color:var(--text-3)} .search-hint span{display:inline-flex;align-items:center;gap:6px}
.section{padding:64px 0} .section-compact{padding-top:8px} .section-stats{padding-top:24px} .section-hd{margin-bottom:28px} .section-hd-flush{margin:0} .section-hd-centered{margin-left:auto;margin-right:auto} .section-hd p{color:var(--text-2);max-width:560px;font-size:16px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:40px} .stat-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:18px 20px;display:flex;gap:14px;align-items:center;box-shadow:var(--shadow-sm)} .stat-card .ic{width:44px;height:44px;border-radius:12px;background:var(--primary-soft);color:var(--primary);display:inline-flex;align-items:center;justify-content:center} .stat-card .v{font-family:var(--serif);font-size:26px;font-weight:700;color:var(--ink);line-height:1} .stat-card .l{font-size:12.5px;color:var(--text-2);font-weight:600;margin-top:4px}
.routes-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px} .skeleton-route{height:140px}
.route-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:18px;cursor:pointer;transition:.18s;box-shadow:var(--shadow-sm);position:relative;overflow:hidden} .route-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--primary-3)}
.route-card .cities{display:flex;justify-content:space-between;align-items:center;font-family:var(--serif);font-weight:700;font-size:18px;color:var(--ink)} .route-card .cities .ico{color:var(--brass)} .route-card .fare{margin-top:12px;font-weight:800;color:var(--primary);font-size:16px} .route-card .fare small{font-weight:500;color:var(--text-3);font-size:12px;margin-right:4px} .route-card .meta{font-size:12.5px;color:var(--text-2);margin-top:4px;display:flex;gap:8px;flex-wrap:wrap}
.journey{display:flex;align-items:center;gap:8px;margin:12px 0 0} .journey-dot{width:9px;height:9px;border-radius:50%;background:var(--brass-light);box-shadow:0 0 0 3px var(--brass-soft)} .journey-dot.end{background:var(--primary-2);box-shadow:0 0 0 3px var(--primary-soft)} .journey-line{flex:1;height:2px;background:repeating-linear-gradient(90deg,var(--border) 0 6px,transparent 6px 12px)}
.ops-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px} .op-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:20px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:10px;transition:.18s} .op-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.op-logo{width:52px;height:52px;border-radius:14px;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:800;font-size:20px;box-shadow:var(--shadow)} .op-card h3{font-size:18px;margin:0} .op-card p{font-size:13.5px;color:var(--text-2);margin:0;flex:1} .op-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--text-2)} .op-meta span{display:inline-flex;align-items:center;gap:4px}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:18px} .step{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:26px;position:relative;box-shadow:var(--shadow-sm)} .step .n{width:40px;height:40px;border-radius:12px;background:var(--ink);color:var(--brass-light);font-family:var(--serif);font-weight:800;font-size:18px;display:inline-flex;align-items:center;justify-content:center;margin-bottom:16px} .step h3{font-size:19px} .step p{color:var(--text-2);margin:0;font-size:14.5px}
.feature-band{background:var(--ink);color:#fff;border-radius:28px;padding:44px;display:grid;grid-template-columns:1.1fr .9fr;gap:36px;align-items:center;position:relative;overflow:hidden} .feature-band h2{color:#fff} .feature-band p{color:var(--on-ink-soft);font-size:15.5px} .feature-list{display:grid;gap:12px} .feature-list div{display:flex;gap:12px;align-items:flex-start;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);padding:14px 16px;border-radius:14px} .feature-list .ico{color:var(--brass-light);margin-top:2px} .feature-list b{display:block} .feature-list span{font-size:13px;color:var(--on-ink-soft)}
.reviews{display:grid;grid-template-columns:repeat(3,1fr);gap:16px} .review{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:20px} .review .stars{color:var(--brass);display:flex;gap:2px;margin-bottom:8px} .review .stars .ico{width:14px;height:14px;fill:currentColor} .review p{font-size:14px;color:var(--text);margin:0 0 10px} .review small{color:var(--text-2)}
.cta-band{background:linear-gradient(135deg,var(--ink),var(--primary-2));border-radius:24px;padding:40px;display:flex;justify-content:space-between;align-items:center;gap:24px;color:#fff;flex-wrap:wrap} .cta-band h2{color:#fff;margin:0 0 6px;font-size:26px} .cta-band p{color:var(--on-ink-soft);margin:0;max-width:520px}
.page-hd{background:linear-gradient(135deg,var(--ink),var(--primary));color:#fff;padding:36px 0 30px} .page-hd h1{color:#fff;margin:6px 0 4px;font-size:clamp(26px,3.4vw,38px)} .page-hd p{color:var(--on-ink-soft);margin:0}
.results{display:grid;grid-template-columns:270px 1fr;gap:24px;max-width:var(--container);margin:24px auto;padding:0 20px;align-items:start}
.filters{position:sticky;top:calc(var(--nav-h) + 16px)} .filter-block{margin-bottom:18px} .filter-block h4{margin:0 0 10px;font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3)} .filter-opt{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:14px;cursor:pointer} .filter-opt input{accent-color:var(--primary);width:16px;height:16px}
.trip{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:18px 20px;display:grid;grid-template-columns:1.1fr 1.5fr auto;gap:18px;align-items:center;margin-bottom:14px;box-shadow:var(--shadow-sm);transition:.18s} .trip:hover{box-shadow:var(--shadow-md);border-color:var(--primary-3)}
.trip .op{display:flex;gap:12px;align-items:center} .trip .op-name{font-weight:700;font-size:15.5px} .trip .op-sub{font-size:12.5px;color:var(--text-2);display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:3px}
.trip .times{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center} .trip .t{font-family:var(--serif);font-size:22px;font-weight:700;color:var(--ink);line-height:1} .trip .c{font-size:12px;color:var(--text-2);margin-top:4px;max-width:150px} .trip .dur{text-align:center;font-size:12px;color:var(--text-2)}
.trip .side{text-align:right;min-width:150px} .trip .fare{font-family:var(--serif);font-size:24px;font-weight:800;color:var(--primary)} .trip .fare small{font-family:var(--sans);font-size:11.5px;color:var(--text-3);font-weight:500;display:block} .trip .seats{font-size:12.5px;color:var(--success);font-weight:600;margin:4px 0 8px} .trip .seats.low{color:var(--warning)} .trip .seats.none{color:var(--danger)}
.perks{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px} .perk{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:var(--text-2);background:var(--surface-alt);padding:3px 8px;border-radius:99px;border:1px solid var(--border-light)} .perk .ico{width:12px;height:12px}
.ride{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:18px;display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;margin-bottom:12px;box-shadow:var(--shadow-sm)} .ride .veh{width:56px;height:56px;border-radius:14px;background:var(--primary-soft);color:var(--primary);display:inline-flex;align-items:center;justify-content:center} .ride .veh .ico{width:28px;height:28px}
.book-layout{display:grid;grid-template-columns:1fr 340px;gap:24px;max-width:var(--container);margin:24px auto;padding:0 20px;align-items:start}
.stepper{display:flex;align-items:center;gap:8px;margin:20px auto 0;max-width:var(--container);padding:0 20px;flex-wrap:wrap} .step-pill{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:var(--surface);border:1px solid var(--border);font-weight:600;font-size:13px;color:var(--text-2)} .step-pill .n{width:22px;height:22px;border-radius:50%;background:var(--border);display:inline-flex;align-items:center;justify-content:center;font-size:11px;color:var(--text-2)} .step-pill.active{border-color:var(--primary);color:var(--primary)} .step-pill.active .n{background:var(--primary);color:#fff} .step-pill.done .n{background:var(--success);color:#fff} .step-sep{flex:0 0 22px;height:2px;background:var(--border)}
.summary{position:sticky;top:calc(var(--nav-h) + 16px)} .sum-row{display:flex;justify-content:space-between;padding:8px 0;font-size:14px;border-bottom:1px dashed var(--border-light)} .sum-row.total{border:0;font-weight:800;font-size:17px;padding-top:12px;color:var(--ink)} .sum-row .muted{font-size:12px}
.class-card{border:1px solid var(--border);border-radius:14px;padding:14px;display:flex;gap:12px;align-items:center;cursor:pointer;transition:.15s;background:var(--surface)} .class-card:hover{border-color:var(--primary-2)} .class-card.active{border-color:var(--brass);background:var(--brass-soft)} .class-card b{display:block} .class-card small{color:var(--text-2)}
.pay-layout{display:grid;grid-template-columns:1fr 1fr;gap:24px;max-width:1000px;margin:28px auto;padding:0 20px;align-items:start}
.wallet-shell{max-width:420px;margin:24px auto;background:#0d2344;border-radius:36px;padding:14px;box-shadow:var(--shadow-lg)} .wallet{background:#fff;border-radius:26px;overflow:hidden;min-height:640px;display:flex;flex-direction:column} .wallet-top{background:linear-gradient(135deg,#0f7a3d,#1d7a5c);color:#fff;padding:20px 20px 24px} .wallet-body{padding:18px 20px;flex:1} .wallet-row{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px dashed var(--border-light);font-size:14px} .wallet-choice{display:grid;grid-template-columns:repeat(2,1fr);gap:8px} .wallet-choice button{border:1px solid var(--border);border-radius:12px;padding:10px;background:var(--surface);font-weight:600;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:13px} .wallet-choice button.active{border-color:var(--success);background:var(--success-soft)}
.pin{display:flex;gap:8px;justify-content:center;margin:12px 0} .pin input{width:44px;height:52px;text-align:center;font-size:22px;border:1px solid var(--border);border-radius:10px}
.about-hero{background:linear-gradient(135deg,var(--ink) 0%,var(--primary-2) 100%);color:#fff;padding:60px 0 70px;text-align:center} .about-hero h1{color:#fff;font-size:clamp(30px,4vw,48px)} .about-hero p{color:var(--on-ink-soft);max-width:640px;margin:0 auto;font-size:17px}
.prose{max-width:820px;margin:0 auto;font-size:15.5px;line-height:1.7} .prose h2{margin-top:36px;font-size:26px} .prose h3{margin-top:24px} .prose ul{padding-left:20px} .prose li{margin:6px 0}
.contact-grid{display:grid;grid-template-columns:1fr 1.2fr;gap:24px} .contact-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:20px;display:flex;gap:14px;align-items:flex-start} .contact-card .ic{width:44px;height:44px;border-radius:12px;background:var(--brass-soft);color:var(--brass-dark);display:inline-flex;align-items:center;justify-content:center;flex:none} .contact-card b{display:block;font-size:15px} .contact-card span{color:var(--text-2);font-size:14px}
.auth-wrap{min-height:calc(100vh - var(--nav-h));display:grid;grid-template-columns:1fr 1fr} .auth-side{background:radial-gradient(900px 500px at 20% 0%,#1c5aaa,var(--ink) 60%);color:#fff;padding:60px 56px;display:flex;flex-direction:column;justify-content:center} .auth-side h1{color:#fff;font-size:40px} .auth-side p{color:var(--on-ink-soft);font-size:16px;max-width:420px}
.auth-form{padding:48px 56px;display:flex;flex-direction:column;justify-content:center;max-width:560px;width:100%;margin:0 auto}
.test-accounts{margin-top:22px;border:1px dashed var(--brass);border-radius:14px;padding:14px;background:var(--brass-soft)} .test-accounts h4{margin:0 0 4px;display:flex;align-items:center;gap:8px} .test-acc{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;background:#fff;margin-top:6px;font-size:13px;cursor:pointer;border:1px solid transparent} .test-acc:hover{border-color:var(--brass)} .test-acc b{display:block;font-size:13px} .test-acc small{color:var(--text-2);font-size:11.5px} .test-acc code{font-size:11px;background:var(--surface-alt);padding:2px 6px;border-radius:6px}
.bk-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:18px 20px;display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;margin-bottom:12px;box-shadow:var(--shadow-sm)} .bk-card .ic{width:48px;height:48px;border-radius:14px;background:var(--primary-soft);color:var(--primary);display:inline-flex;align-items:center;justify-content:center} .bk-card h3{font-size:17px;margin:0 0 3px} .bk-card .meta{font-size:13px;color:var(--text-2);display:flex;gap:10px;flex-wrap:wrap}
.notice-strip{background:var(--brass-soft);color:var(--brass-dark);font-size:13px;padding:8px 0;text-align:center;font-weight:600}

@media (max-width:1024px){.hero-inner{grid-template-columns:1fr} .slide-card{max-width:640px} .routes-grid,.ops-grid{grid-template-columns:repeat(2,1fr)} .stats{grid-template-columns:repeat(2,1fr)} .results{grid-template-columns:1fr} .filters{position:static} .book-layout{grid-template-columns:1fr} .summary{position:static} .pay-layout{grid-template-columns:1fr} .auth-wrap{grid-template-columns:1fr} .auth-side{display:none} .feature-band{grid-template-columns:1fr;padding:28px} .steps,.reviews{grid-template-columns:1fr} .contact-grid{grid-template-columns:1fr} .search-grid,.search-grid.local{grid-template-columns:1fr 1fr} .search-grid .swap{display:none} .search-grid .btn{grid-column:span 2}}
@media (max-width:640px){.hero{padding-top:calc(var(--nav-h) + 24px);padding-bottom:110px} .routes-grid,.ops-grid,.stats{grid-template-columns:1fr} .search-grid,.search-grid.local{grid-template-columns:1fr} .search-grid .btn{grid-column:auto} .trip{grid-template-columns:1fr} .trip .side{text-align:left;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px} .trip .side .fare{font-size:20px} .ride{grid-template-columns:auto 1fr} .ride .act{grid-column:span 2} .bk-card{grid-template-columns:auto 1fr} .bk-card .act{grid-column:span 2} .auth-form{padding:28px 20px} .cta-band{padding:26px} .section{padding:44px 0} .search-card{padding:14px} .mode-tab{padding:8px 12px;font-size:13px} .mode-tab small{display:none}}

/* ---- v3: four-step how-it-works, ride cards ---- */
.steps.steps-4{grid-template-columns:repeat(4,1fr)} .step-link{display:inline-block;margin-top:12px;font-weight:700;font-size:13.5px}
.bk-card.ride-card{grid-template-columns:auto 1fr auto;align-items:start}
@media (max-width:1024px){.steps.steps-4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.steps.steps-4{grid-template-columns:1fr}}
