/* Hail A Taxi, site system for the homepage and booking flow.
   Shared server-rendered pages (blog, legal, admin, operator) still use css/style.css. */

@font-face{
  font-family:'Geist';
  src:url('../fonts/geist-latin-wght-normal.woff2') format('woff2');
  font-weight:100 900; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Geist Mono';
  src:url('../fonts/geist-mono-latin-wght-normal.woff2') format('woff2');
  font-weight:100 900; font-style:normal; font-display:swap;
}

:root{
  --field:#062A1E;
  --field-2:#0B3A29;
  --field-line:rgba(255,255,255,.14);
  --on-field:#F1F7F3;
  --on-field-2:rgba(241,247,243,.74);

  --bg:#F2F5F3;
  --surface:#FFFFFF;
  --surface-2:#E8EEEA;
  --ink:#0E1E18;
  --ink-2:#34463E;
  --muted:#586A62;
  --line:rgba(14,30,24,.11);
  --line-strong:rgba(14,30,24,.22);

  --accent:#2FB673;        /* brand green, used for fills */
  --accent-hover:#3CC682;
  --accent-ink:#0A6A3E;    /* brand green as text on light surfaces */
  --on-accent:#03140D;
  --accent-wash:#E3F5EB;
  --star:#FFC72C;          /* the logo's yellow, used only for the rating stars */
  --danger:#B3261E;
  --danger-wash:#FCECEA;

  --r-ctl:12px;            /* buttons, inputs */
  --r-card:20px;           /* containers */
  --shadow-1:0 1px 2px rgba(6,42,30,.06), 0 8px 24px -12px rgba(6,42,30,.18);
  --shadow-2:0 2px 4px rgba(6,42,30,.08), 0 28px 60px -24px rgba(6,42,30,.45);

  --ease-out:cubic-bezier(.23,1,.32,1);
  --ease-io:cubic-bezier(.77,0,.175,1);

  --font:'Geist',ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --mono:'Geist Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  color-scheme:light;
}

@media (prefers-color-scheme:dark){
  :root{
    --field:#04190F;
    --field-2:#0A2B1E;
    --bg:#07120D;
    --surface:#11241B;
    --surface-2:#173026;
    --ink:#E9F2ED;
    --ink-2:#BACBC1;
    --muted:#8EA298;
    --line:rgba(233,242,237,.12);
    --line-strong:rgba(233,242,237,.26);
    --accent-ink:#52D18F;
    --accent-wash:#0F2E20;
    --danger:#FF8A80;
    --danger-wash:#3A1512;
    --shadow-1:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
    --shadow-2:0 2px 4px rgba(0,0,0,.5), 0 28px 60px -24px rgba(0,0,0,.8);
    color-scheme:dark;
  }
}

*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth; scroll-padding-top:84px; -webkit-text-size-adjust:100%;}
body{
  font-family:var(--font); font-size:16px; line-height:1.55; color:var(--ink); background:var(--bg);
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; font-feature-settings:'ss01','cv11';
}
h1,h2,h3,h4{font-weight:640; letter-spacing:-.03em; line-height:1.06; text-wrap:balance;}
p{text-wrap:pretty;}
a{color:inherit; text-decoration:none;}
img{max-width:100%; display:block;}
button{font:inherit; color:inherit; cursor:pointer; background:none; border:0;}
input,select{font:inherit; color:inherit;}
.num{font-variant-numeric:tabular-nums; font-feature-settings:'tnum';}
.mono{font-family:var(--mono);}

/* Parts of the browser we did not draw, themed from the palette */
::selection{background:var(--accent); color:var(--on-accent);}
:focus-visible{outline:2px solid var(--accent); outline-offset:3px; border-radius:6px;}
input,select,textarea{caret-color:var(--accent);}
*{scrollbar-width:thin; scrollbar-color:var(--line-strong) transparent;}
a{text-underline-offset:.2em;}

.ic{width:1.25em; height:1.25em; flex:none; display:inline-block; vertical-align:-.2em;}
.ic-sm{width:1em; height:1em;}
.ic-lg{width:1.6em; height:1.6em;}
.sr{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap;}

.wrap{width:100%; max-width:1240px; margin:0 auto; padding:0 24px;}
@media (max-width:640px){.wrap{padding:0 16px;}}

/* ============ Buttons ============ */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.6em; white-space:nowrap;
  padding:16px 24px; line-height:1.25; border-radius:var(--r-ctl); font-weight:600; font-size:15.5px; letter-spacing:-.01em;
  transition:transform 160ms var(--ease-out), background-color 160ms ease, box-shadow 160ms ease, color 160ms ease, border-color 160ms ease;
}
.btn:active{transform:scale(.97);}
.btn-primary{background:var(--accent); color:var(--on-accent);}
.btn-ink{background:var(--ink); color:var(--bg);}
.btn-line{border:1.5px solid var(--line-strong); color:var(--ink); background:transparent;}
.btn-sm{height:42px; padding:0 18px; font-size:14.5px; line-height:1;}
.btn:disabled{opacity:.45; cursor:not-allowed; transform:none;}
.btn .ic{transition:transform 220ms var(--ease-out);}
@media (hover:hover) and (pointer:fine){
  .btn-primary:hover{background:var(--accent-hover);}
  .btn-ink:hover{background:var(--ink-2);}
  .btn-line:hover{border-color:var(--ink);}
  .btn:not(:disabled):hover .ic-go{transform:translateX(3px);}
}

/* ============ Navigation ============ */
.nav{
  position:fixed; inset:0 0 auto 0; z-index:40; height:68px; display:flex; align-items:center;
  color:var(--on-field); transition:background-color 220ms ease, box-shadow 220ms ease;
}
.nav.is-stuck, .nav.is-solid{background:var(--field); box-shadow:0 1px 0 var(--field-line);}
.nav .wrap{display:flex; align-items:center; justify-content:space-between; gap:24px;}
.logo{display:inline-flex; align-items:center; gap:0; font-weight:800; font-size:22px; letter-spacing:-.035em; line-height:1;}
.logo-mark{width:34px; height:34px; border-radius:9px; margin-right:10px;}
.logo-badge{color:#FFC72C;}
.nav-links{display:flex; align-items:center; gap:4px;}
.nav-links a{
  padding:9px 14px; border-radius:10px; font-size:14.5px; font-weight:500; color:var(--on-field-2);
  transition:color 150ms ease, background-color 150ms ease;
}
@media (hover:hover) and (pointer:fine){.nav-links a:hover{color:var(--on-field); background:rgba(255,255,255,.08);}}
.nav-end{display:flex; align-items:center; gap:14px;}
.nav-phone{font-size:14px; color:var(--on-field-2); white-space:nowrap;}
@media (max-width:1040px){.nav-phone{display:none;}}
@media (max-width:820px){.nav-links{display:none;}}

/* ============ Hero ============ */
.hero{
  position:relative; isolation:isolate; background:var(--field); color:var(--on-field);
  padding:112px 0 72px; min-height:min(92dvh,860px); display:flex; align-items:center;
}
.hero-photo{position:absolute; inset:0 0 0 auto; width:64%; z-index:-1; overflow:hidden;}
.hero-photo img{width:100%; height:100%; object-fit:cover; object-position:38% 62%; filter:saturate(1.05) brightness(.82);}
.hero-photo::after{
  content:''; position:absolute; inset:0;
  background:
    linear-gradient(90deg, var(--field) 0%, rgba(6,42,30,.72) 22%, rgba(6,42,30,0) 62%),
    linear-gradient(0deg, var(--field) 0%, rgba(6,42,30,0) 30%);
}
.hero-inner{max-width:660px;}
.hero h1{font-size:clamp(2.6rem,4.7vw,4.4rem); font-weight:660; letter-spacing:-.04em; line-height:1.02; margin-bottom:20px;}
.hero h1 .hl{color:var(--accent);}
.hero-sub{text-wrap:balance; font-size:clamp(1.05rem,1.4vw,1.2rem); color:var(--on-field-2); max-width:34em; margin-bottom:32px; line-height:1.5;}

/* Route finder */
.finder{
  position:relative; background:var(--surface); color:var(--ink); border-radius:var(--r-card); padding:14px;
  border:1px solid var(--line); box-shadow:var(--shadow-2); display:grid; gap:10px;
}
.finder-pair{position:relative; display:grid; gap:10px;}
.f-field{position:relative; display:block;}
.f-field > .f-label{display:block; font-size:12.5px; font-weight:600; color:var(--muted); margin:0 0 6px 2px; letter-spacing:-.005em;}
.f-box{
  display:flex; align-items:center; gap:12px; height:56px; padding:0 16px; background:var(--bg);
  border:1.5px solid transparent; border-radius:var(--r-ctl);
  transition:border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease;
}
.f-box:focus-within{border-color:var(--accent); background:var(--surface); box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 22%, transparent);}
.f-box .ic{color:var(--accent-ink);}
.f-box input, .f-box select{flex:1; min-width:0; height:100%; border:0; outline:0; background:transparent; font-size:16px; font-weight:500; letter-spacing:-.01em;}
.f-box input::placeholder{color:var(--muted); opacity:1; font-weight:400;}
.f-box select{appearance:none; -webkit-appearance:none; cursor:pointer; padding-right:22px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' fill='%23586A62'%3E%3Cpath d='M213.66 101.66l-80 80a8 8 0 0 1-11.32 0l-80-80a8 8 0 0 1 11.32-11.32L128 164.69l74.34-74.35a8 8 0 0 1 11.32 11.32Z'/%3E%3C/svg%3E") no-repeat right 0 center/14px;}
.f-swap{
  position:absolute; right:12px; top:50%; z-index:3; width:40px; height:40px; margin-top:-2px; border-radius:50%;
  display:grid; place-items:center; background:var(--surface); border:1.5px solid var(--line-strong); color:var(--ink-2);
  transition:transform 260ms var(--ease-out), border-color 150ms ease, color 150ms ease;
}
.f-swap:active{transform:scale(.92);}
.f-swap.spun{transform:rotate(180deg);}
.f-swap.spun:active{transform:rotate(180deg) scale(.92);}
@media (hover:hover) and (pointer:fine){.f-swap:hover{border-color:var(--accent); color:var(--accent-ink);}}
.finder-row{display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; align-items:end;}
.finder-row .btn{height:56px; padding:0 28px;}
.f-error{min-height:0; font-size:13.5px; color:var(--danger); padding:0 4px;}
.f-error:not(:empty){padding-top:2px;}

.suggest{
  position:absolute; left:0; right:0; top:calc(100% + 6px); z-index:20; background:var(--surface); color:var(--ink);
  border:1px solid var(--line); border-radius:var(--r-ctl); box-shadow:var(--shadow-2); overflow:hidden; max-height:280px; overflow-y:auto;
  transform-origin:top center; animation:pop 160ms var(--ease-out);
}
.suggest[hidden]{display:none;}
.suggest button{
  display:flex; align-items:flex-start; gap:10px; width:100%; padding:12px 14px; text-align:left; font-size:14.5px; line-height:1.35;
  border-bottom:1px solid var(--line); transition:background-color 120ms ease;
}
.suggest button:last-child{border-bottom:0;}
.suggest button .ic{margin-top:2px; color:var(--muted);}
.suggest button:hover, .suggest button[aria-selected="true"]{background:var(--accent-wash);}
@keyframes pop{from{opacity:0; transform:scale(.97) translateY(-4px);} to{opacity:1; transform:none;}}

@media (max-width:980px){
  .hero{padding:96px 0 48px; min-height:0; align-items:flex-start;}
  .hero-photo{width:100%; opacity:.42;}
  .hero-photo::after{background:linear-gradient(180deg, rgba(6,42,30,.35), var(--field) 92%);}
}
@media (max-width:520px){
  .hero h1{font-size:2.15rem; letter-spacing:-.035em;}
  .finder-row{grid-template-columns:1fr;}
  .finder-row .btn{width:100%;}
}

/* ============ Trust band ============ */
.band{background:var(--surface); border-bottom:1px solid var(--line);}
.band-list{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); list-style:none;}
.band-list li{display:flex; gap:14px; align-items:flex-start; padding:26px 24px 26px 0; font-size:14.5px; color:var(--ink-2); line-height:1.45;}
.band-list li + li{padding-left:24px; border-left:1px solid var(--line);}
.band-list .ic{width:26px; height:26px; color:var(--accent-ink); margin-top:1px;}
.band-list strong{display:block; color:var(--ink); font-weight:620; font-size:15.5px; letter-spacing:-.015em; margin-bottom:2px;}
@media (max-width:980px){
  .band-list{grid-template-columns:1fr 1fr;}
  .band-list li{padding:20px 16px 20px 0;}
  .band-list li:nth-child(odd){padding-left:0; border-left:0;}
  .band-list li:nth-child(even){padding-left:20px;}
  .band-list li:nth-child(n+3){border-top:1px solid var(--line);}
}
@media (max-width:560px){
  .band-list{grid-template-columns:1fr;}
  .band-list li, .band-list li:nth-child(even){padding:16px 0; border-left:0;}
  .band-list li + li{border-top:1px solid var(--line);}
}

/* ============ Sections ============ */
.sec{padding:112px 0;}
.sec-head{max-width:640px; margin-bottom:44px;}
.sec-head h2{font-size:clamp(2rem,3.6vw,3.1rem); font-weight:650; letter-spacing:-.038em;}
.sec-head p{margin-top:14px; color:var(--muted); font-size:17px; max-width:34em;}
@media (max-width:760px){.sec{padding:72px 0;} .sec-head{margin-bottom:32px;}}

/* ============ Fare board ============ */
.board{background:var(--surface); border:1px solid var(--line); border-radius:var(--r-card); box-shadow:var(--shadow-1); overflow:hidden;}
.board-bar{display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px; padding:18px 22px; border-bottom:1px solid var(--line);}
.board-route{display:flex; align-items:center; gap:10px; font-weight:600; letter-spacing:-.015em; font-size:16px; flex-wrap:wrap;}
.board-route .ic{color:var(--muted);}
.board-route small{font-weight:500; color:var(--muted); font-size:13.5px; margin-left:6px;}
.seg-ctl{position:relative; display:inline-grid; grid-template-columns:repeat(3,1fr); padding:4px; background:var(--bg); border-radius:var(--r-ctl);}
.seg-ctl button{
  position:relative; z-index:1; height:36px; padding:0 14px; border-radius:9px; font-size:14px; font-weight:560; color:var(--muted);
  transition:color 180ms ease;
}
.seg-ctl button[aria-pressed="true"]{color:var(--ink);}
.seg-ctl .thumb{
  position:absolute; z-index:0; top:4px; bottom:4px; left:4px; width:calc((100% - 8px) / 3); border-radius:9px; background:var(--surface);
  box-shadow:0 1px 2px rgba(6,42,30,.14), 0 0 0 1px var(--line); transition:transform 260ms var(--ease-io);
}
.rows{list-style:none; position:relative;}
.row{
  display:grid; grid-template-columns:168px minmax(0,1fr) auto; gap:26px; align-items:center; padding:18px 22px;
  border-top:1px solid var(--line); background:var(--surface); transition:background-color 160ms ease;
}
.row:first-child{border-top:0;}
.row-img{aspect-ratio:3/2; border-radius:12px; overflow:hidden; background:var(--bg);}
.row-img img{width:100%; height:100%; object-fit:cover;}
.row h3{font-size:19px; letter-spacing:-.025em; font-weight:620; display:flex; align-items:center; gap:10px; flex-wrap:wrap;}
.row-meta{display:flex; gap:16px; flex-wrap:wrap; margin-top:8px; color:var(--muted); font-size:14px;}
.row-meta span{display:inline-flex; align-items:center; gap:6px;}
.row-meta .perk{color:var(--accent-ink); font-weight:520;}
@media (max-width:760px){.row-meta .perk{display:none;}}
.tag{
  display:inline-flex; align-items:center; height:24px; padding:0 10px; border-radius:99px; background:var(--accent-wash); color:var(--accent-ink);
  font-size:12.5px; font-weight:620; letter-spacing:-.005em;
}
.row-price{text-align:right;}
.row-price b{display:block; font-size:30px; font-weight:650; letter-spacing:-.04em; line-height:1;}
.row-price span{display:block; margin-top:5px; font-size:13px; color:var(--muted);}
@media (hover:hover) and (pointer:fine){.row:hover{background:var(--bg);}}
.row.skeleton .row-img, .row.skeleton i{background:linear-gradient(100deg,var(--surface-2) 30%,var(--bg) 50%,var(--surface-2) 70%); background-size:200% 100%; animation:shimmer 1.3s linear infinite;}
.row.skeleton i{display:block; height:16px; border-radius:6px; margin-bottom:10px;}
@keyframes shimmer{to{background-position:-200% 0;}}
.board-foot{display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; padding:16px 22px; border-top:1px solid var(--line); background:var(--bg); font-size:14px; color:var(--muted);}
.board-foot a{color:var(--accent-ink); font-weight:600; display:inline-flex; align-items:center; gap:6px;}
.board-empty{padding:40px 22px; text-align:center; color:var(--muted);}
@media (max-width:760px){
  .seg-ctl{width:100%;}
  .seg-ctl button{flex:1; padding:0 6px; font-size:13px; white-space:nowrap;}
  .row{grid-template-columns:104px minmax(0,1fr); gap:6px 16px; padding:16px;}
  .row-price{grid-column:2; text-align:left; display:flex; align-items:baseline; gap:8px;}
  .row-price b{font-size:26px;}
  .row-price span{margin:0;}
  .row h3{font-size:17px;}
}

/* ============ How it works ============ */
.how{display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:72px; align-items:start;}
.how-head{position:sticky; top:104px;}
.how-head h2{font-size:clamp(2rem,3.6vw,3.1rem); font-weight:650; letter-spacing:-.038em; margin-bottom:16px;}
.how-head p{color:var(--muted); font-size:17px; max-width:26em;}
.stepper{list-style:none; position:relative; counter-reset:s;}
.stepper::before{content:''; position:absolute; left:27px; top:28px; bottom:28px; width:2px; background:var(--line);}
.stepper li{position:relative; display:grid; grid-template-columns:56px 1fr; gap:24px; padding:0 0 44px;}
.stepper li:last-child{padding-bottom:0;}
.stepper .dot{
  position:relative; z-index:1; width:56px; height:56px; border-radius:50%; display:grid; place-items:center;
  background:var(--surface); border:1.5px solid var(--line-strong); color:var(--accent-ink);
  transition:background-color 300ms var(--ease-out), color 300ms var(--ease-out), border-color 300ms var(--ease-out);
}
.stepper .dot .ic{width:26px; height:26px;}
.stepper li.in .dot{background:var(--accent); color:var(--on-accent); border-color:var(--accent);}
.stepper h3{font-size:22px; letter-spacing:-.03em; font-weight:620; margin:12px 0 8px;}
.stepper p{color:var(--muted); font-size:16.5px; max-width:32em;}
@media (max-width:900px){
  .how{grid-template-columns:1fr; gap:36px;}
  .how-head{position:static;}
}

/* ============ Destinations bento ============ */
.bento{
  display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); grid-template-rows:repeat(3,230px); gap:14px;
}
.dest{
  position:relative; isolation:isolate; overflow:hidden; border-radius:var(--r-card); color:#fff; display:flex; align-items:flex-end;
  padding:22px; background:var(--field-2); text-align:left; width:100%;
  transition:transform 260ms var(--ease-out), box-shadow 260ms var(--ease-out);
}
.dest:active{transform:scale(.985);}
.dest img{position:absolute; inset:0; z-index:-2; width:100%; height:100%; object-fit:cover; transition:transform 700ms var(--ease-out);}
.dest::before{content:''; position:absolute; inset:0; z-index:-1; background:linear-gradient(180deg, rgba(4,25,15,0) 30%, rgba(4,25,15,.86) 100%);}
.dest-body{width:100%; display:flex; align-items:flex-end; justify-content:space-between; gap:14px;}
.dest-route{font-size:18px; font-weight:620; letter-spacing:-.025em; line-height:1.2;}
.dest-route small{display:block; font-size:13.5px; font-weight:500; opacity:.8; letter-spacing:0; margin-bottom:4px;}
.dest-price{text-align:right; flex:none;}
.dest-price small{display:block; font-size:12.5px; opacity:.8;}
.dest-price b{font-size:26px; font-weight:650; letter-spacing:-.04em; line-height:1;}
.dest-a{grid-column:1 / span 2; grid-row:1 / span 2;}
.dest-a .dest-route{font-size:clamp(1.5rem,2.4vw,2.1rem); letter-spacing:-.035em;}
.dest-a .dest-price b{font-size:40px;}
.dest-b{grid-column:3; grid-row:1;}
.dest-c{grid-column:4; grid-row:1;}
.dest-d{grid-column:3 / span 2; grid-row:2;}
.dest-e{grid-column:1 / span 2; grid-row:3;}
.dest-f{grid-column:3 / span 2; grid-row:3;}
.dest.tint{background:var(--accent); color:var(--on-accent);}
.dest.tint::before{display:none;}
.dest.tint .dest-price b{font-size:46px;}
.dest.deep{background:var(--field); color:var(--on-field);}
.dest.deep::before{display:none;}
.dest.deep .dest-price b{font-size:46px; color:var(--accent);}
.dest .go{position:absolute; top:16px; right:16px; width:38px; height:38px; border-radius:50%; display:grid; place-items:center; background:rgba(255,255,255,.18); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); opacity:0; transform:translate(-4px,4px); transition:opacity 200ms ease, transform 260ms var(--ease-out);}
.dest.tint .go{background:rgba(3,20,13,.14);}
@media (hover:hover) and (pointer:fine){
  .dest:hover{box-shadow:var(--shadow-2);}
  .dest:hover img{transform:scale(1.045);}
  .dest:hover .go{opacity:1; transform:none;}
}
.note{margin-top:18px; font-size:13.5px; color:var(--muted); max-width:52em;}
@media (max-width:900px){
  .bento{grid-template-columns:repeat(2,minmax(0,1fr)); grid-template-rows:none; grid-auto-rows:200px;}
  .dest-a{grid-column:1 / span 2; grid-row:auto; min-height:300px;}
  .dest-b,.dest-c{grid-column:auto; grid-row:auto;}
  .dest-d,.dest-e,.dest-f{grid-column:1 / span 2; grid-row:auto;}
}
@media (max-width:520px){
  .bento{grid-template-columns:1fr;}
  .dest-a,.dest-b,.dest-c,.dest-d,.dest-e,.dest-f{grid-column:1;}
}

/* ============ Reviews ============ */
.sec-rev{overflow-x:clip;}
.rev-head{display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin-bottom:36px; flex-wrap:wrap;}
.rev-head .sec-head{margin:0;}
.rev-ctl{display:flex; gap:10px;}
.rev-ctl button{width:48px; height:48px; border-radius:50%; display:grid; place-items:center; border:1.5px solid var(--line-strong); transition:transform 160ms var(--ease-out), border-color 150ms ease, opacity 150ms ease;}
.rev-ctl button:active{transform:scale(.93);}
.rev-ctl button:disabled{opacity:.35; cursor:default;}
@media (hover:hover) and (pointer:fine){.rev-ctl button:not(:disabled):hover{border-color:var(--ink);}}
.rev-track{
  --edge:max(24px, calc((100vw - 1240px) / 2 + 24px));
  display:flex; gap:16px; overflow-x:auto; scroll-snap-type:x mandatory; padding:4px var(--edge) 20px; margin:0 calc(50% - 50vw);
  scroll-padding-inline:var(--edge); scrollbar-width:none;
}
.rev-track::-webkit-scrollbar{display:none;}
.rev{
  flex:0 0 min(420px,84vw); scroll-snap-align:start; background:var(--surface); border:1px solid var(--line); border-radius:var(--r-card);
  padding:28px; display:flex; flex-direction:column; justify-content:space-between; gap:28px; min-height:290px;
}
.stars{display:flex; gap:3px; color:var(--star);}
.stars .off{color:var(--line-strong);}
.rev blockquote{font-size:17.5px; line-height:1.5; letter-spacing:-.015em; margin-top:16px; text-wrap:pretty;}
.rev-who{display:flex; align-items:center; gap:12px;}
.avatar{width:42px; height:42px; border-radius:50%; background:var(--field-2); color:var(--accent); display:grid; place-items:center; font-weight:650; font-size:14px; letter-spacing:.01em;}
.rev-who b{display:block; font-weight:620; font-size:15px; letter-spacing:-.01em;}
.rev-who span{font-size:13.5px; color:var(--muted);}
@media (max-width:640px){.rev-track{--edge:16px;}}

/* ============ Closing CTA ============ */
.close{background:var(--accent); color:var(--on-accent); padding:96px 0;}
.close .wrap{display:flex; align-items:center; justify-content:space-between; gap:40px; flex-wrap:wrap;}
.close h2{font-size:clamp(2.2rem,4.6vw,4rem); font-weight:660; letter-spacing:-.045em; line-height:1.02; max-width:11em;}
.close .btn{height:60px; padding:0 34px; font-size:17px;}
.close .btn-ink{background:var(--field); color:var(--on-field);}
@media (hover:hover) and (pointer:fine){.close .btn-ink:hover{background:var(--field-2);}}

/* ============ FAQ ============ */
.faq{display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:72px; align-items:start;}
.faq-head{position:sticky; top:104px;}
.faq-head h2{font-size:clamp(2rem,3.6vw,3.1rem); font-weight:650; letter-spacing:-.038em; margin-bottom:16px;}
.faq-head p{color:var(--muted); font-size:17px; margin-bottom:24px; max-width:24em;}
.qa{border-top:1px solid var(--line);}
.qa:last-child{border-bottom:1px solid var(--line);}
.qa summary{
  display:flex; align-items:center; justify-content:space-between; gap:20px; padding:22px 0; cursor:pointer; list-style:none;
  font-size:18px; font-weight:600; letter-spacing:-.02em; line-height:1.3;
}
.qa summary::-webkit-details-marker{display:none;}
.qa summary .ic{color:var(--accent-ink); transition:transform 260ms var(--ease-out);}
.qa[open] summary .ic{transform:rotate(45deg);}
.qa .a{padding:0 40px 24px 0; color:var(--muted); font-size:16.5px; max-width:38em;}
@supports (interpolate-size:allow-keywords){
  .qa{interpolate-size:allow-keywords;}
  .qa::details-content{block-size:0; overflow:hidden; opacity:0; transition:block-size 280ms var(--ease-out), opacity 220ms ease, content-visibility 280ms allow-discrete;}
  .qa[open]::details-content{block-size:auto; opacity:1;}
}
@media (max-width:900px){.faq{grid-template-columns:1fr; gap:32px;} .faq-head{position:static;}}

/* ============ Footer ============ */
.foot{background:var(--field); color:var(--on-field-2); padding:72px 0 0;}
.foot-grid{display:grid; grid-template-columns:1.5fr 1fr 1fr 1fr; gap:40px; padding-bottom:56px; border-bottom:1px solid var(--field-line);}
.foot .logo{color:var(--on-field);}
.foot-brand p{margin:18px 0 22px; max-width:22em; font-size:15px;}
.foot h3{font-size:13.5px; font-weight:600; color:var(--on-field); letter-spacing:-.005em; margin-bottom:16px;}
.foot-col{display:flex; flex-direction:column; gap:12px;}
.foot-col a{font-size:15px; transition:color 150ms ease;}
@media (hover:hover) and (pointer:fine){.foot-col a:hover{color:var(--accent);}}
.social{display:flex; gap:10px;}
.social a{width:40px; height:40px; border-radius:50%; display:grid; place-items:center; border:1px solid var(--field-line); transition:background-color 150ms ease, color 150ms ease, transform 160ms var(--ease-out);}
.social a:active{transform:scale(.93);}
@media (hover:hover) and (pointer:fine){.social a:hover{background:var(--accent); color:var(--on-accent); border-color:var(--accent);}}
.foot-bottom{display:flex; justify-content:space-between; gap:12px 24px; flex-wrap:wrap; padding:24px 0 32px; font-size:13.5px;}
.foot-credits{padding:0 0 28px; font-size:12.5px; color:rgba(241,247,243,.55); max-width:70em;}
.foot-credits a{text-decoration:underline;}
@media (max-width:900px){.foot-grid{grid-template-columns:1fr 1fr;} .foot-brand{grid-column:1 / -1;}}
@media (max-width:520px){.foot-grid{grid-template-columns:1fr;}}

.fab{
  position:fixed; right:22px; bottom:22px; z-index:30; width:58px; height:58px; border-radius:50%; display:grid; place-items:center;
  background:#25D366; color:#fff; box-shadow:0 10px 26px -8px rgba(0,0,0,.5); transition:transform 200ms var(--ease-out);
}
.fab .ic{width:32px; height:32px;}
.fab:active{transform:scale(.94);}
@media (hover:hover) and (pointer:fine){.fab:hover{transform:scale(1.06);}}
@media (max-width:640px){.fab{right:14px; bottom:14px; width:52px; height:52px;}}

/* ============ Motion ============ */
@media (prefers-reduced-motion:no-preference){
  .rise{animation:rise 800ms var(--ease-out) both; animation-delay:calc(var(--i,0) * 70ms + 60ms);}
  @keyframes rise{from{opacity:0; transform:translateY(14px);} to{opacity:1; transform:none;}}
  .js .reveal{opacity:0; transform:translateY(18px); transition:opacity 700ms var(--ease-out), transform 700ms var(--ease-out); transition-delay:calc(var(--i,0) * 60ms);}
  .js .reveal.in{opacity:1; transform:none;}
  .hero-photo img{animation:drift 1400ms var(--ease-out) both;}
  @keyframes drift{from{transform:scale(1.06); opacity:.6;} to{transform:none; opacity:1;}}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:.01ms !important; transition-duration:.01ms !important;}
}

/* ==========================================================
   Booking flow (book.html)
   ========================================================== */
.page-book .nav{background:var(--field); box-shadow:0 1px 0 var(--field-line);}
.book{padding:104px 0 96px; min-height:100dvh;}
.book-grid{display:grid; grid-template-columns:minmax(0,1fr) 360px; gap:32px; align-items:start;}
.progress{display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:28px;}
.progress .seg{display:block; position:relative; padding-top:12px; font-size:13.5px; font-weight:560; color:var(--muted); letter-spacing:-.005em; transition:color 200ms ease;}
.progress .seg::before{content:''; position:absolute; top:0; left:0; right:0; height:4px; border-radius:4px; background:var(--line-strong); opacity:.5; transition:background-color 260ms var(--ease-out), opacity 260ms ease;}
.progress .seg.done::before, .progress .seg.active::before{background:var(--accent); opacity:1;}
.progress .seg.active, .progress .seg.done{color:var(--ink);}
.step h1, .step h2.step-title{font-size:clamp(1.8rem,3vw,2.5rem); font-weight:650; letter-spacing:-.038em; margin-bottom:8px;}
.step-lead{color:var(--muted); font-size:16.5px; margin-bottom:24px;}
.step.enter{animation:stepin 340ms var(--ease-out) both;}
@keyframes stepin{from{opacity:0; transform:translateY(10px);} to{opacity:1; transform:none;}}

.card{background:var(--surface); border:1px solid var(--line); border-radius:var(--r-card); padding:28px; box-shadow:var(--shadow-1);}
.card + .card{margin-top:16px;}
.card h3{font-size:19px; letter-spacing:-.025em; font-weight:620; margin-bottom:6px;}
@media (max-width:640px){.card{padding:20px;}}

.field-row{display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:16px;}
.field{display:block; position:relative;}
.field label{display:block; font-size:13.5px; font-weight:600; color:var(--ink-2); margin-bottom:8px;}
.field label em{font-style:normal; font-weight:500; color:var(--muted);}
.field input, .field select{
  width:100%; height:54px; padding:0 16px; background:var(--bg); border:1.5px solid transparent; border-radius:var(--r-ctl);
  font-size:16px; font-weight:500; letter-spacing:-.01em; outline:0;
  transition:border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease;
}
.field select{appearance:none; -webkit-appearance:none; padding-right:40px; cursor:pointer;
  background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' fill='%23586A62'%3E%3Cpath d='M213.66 101.66l-80 80a8 8 0 0 1-11.32 0l-80-80a8 8 0 0 1 11.32-11.32L128 164.69l74.34-74.35a8 8 0 0 1 11.32 11.32Z'/%3E%3C/svg%3E") no-repeat right 16px center/14px;}
.field input::placeholder{color:var(--muted); opacity:1; font-weight:400;}
.field input:focus, .field select:focus{border-color:var(--accent); background-color:var(--surface); box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 22%, transparent);}
.field input[type=date]{min-height:54px;}
.field-hint{font-size:13.5px; color:var(--muted); margin-top:8px;}
.autocomplete-results{margin-bottom:16px;}
.autocomplete-list{
  position:absolute; left:0; right:0; top:calc(100% + 6px); z-index:20; background:var(--surface); border:1px solid var(--line);
  border-radius:var(--r-ctl); box-shadow:var(--shadow-2); max-height:280px; overflow-y:auto; transform-origin:top center; animation:pop 160ms var(--ease-out);
}
.autocomplete-list div{padding:12px 16px; font-size:14.5px; line-height:1.35; cursor:pointer; border-bottom:1px solid var(--line);}
.autocomplete-list div:last-child{border-bottom:0;}
@media (hover:hover){.autocomplete-list div:hover{background:var(--accent-wash);}}
.route-fields{position:relative;}
.route-fields .swap{position:absolute; right:14px; top:62px; margin-top:0; z-index:3;}
.inline-error{display:flex; gap:10px; align-items:flex-start; padding:12px 14px; margin-top:16px; border-radius:var(--r-ctl); background:var(--danger-wash); color:var(--danger); font-size:14.5px; font-weight:500;}
.inline-error:empty{display:none;}

.wizard-actions{display:flex; justify-content:space-between; align-items:center; gap:12px; margin-top:24px;}
.wizard-actions .btn{min-width:170px;}
@media (max-width:520px){.wizard-actions .btn-primary{flex:1;} .wizard-actions .btn{min-width:0;}}

/* Vehicle result rows */
.vehicle-list{display:flex; flex-direction:column; gap:12px; margin-top:20px;}
.vehicle-card{
  position:relative; display:grid; grid-template-columns:132px minmax(0,1fr) auto; gap:20px; align-items:center; padding:14px 18px 14px 14px;
  background:var(--surface); border:1.5px solid var(--line); border-radius:var(--r-card); cursor:pointer; text-align:left;
  transition:border-color 160ms ease, background-color 160ms ease, box-shadow 200ms ease, transform 160ms var(--ease-out), opacity 200ms ease;
  animation:stepin 420ms var(--ease-out) both; animation-delay:calc(var(--i,0) * 45ms);
}
.vehicle-card:active{transform:scale(.99);}
@media (hover:hover) and (pointer:fine){.vehicle-card:hover{border-color:var(--line-strong);}}
.vehicle-card.selected{border-color:var(--accent); background:var(--accent-wash); box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 24%, transparent);}
.vehicle-card.disabled{opacity:.5; cursor:not-allowed;}
.vehicle-card img{width:100%; height:auto; aspect-ratio:3/2; object-fit:cover; border-radius:12px; background:var(--bg);}
.vehicle-card h3{font-size:18px; margin:0 0 6px; letter-spacing:-.025em; display:flex; gap:10px; align-items:center; flex-wrap:wrap;}
.vehicle-meta{display:flex; gap:16px; flex-wrap:wrap; color:var(--muted); font-size:14px;}
.vehicle-meta span{display:inline-flex; align-items:center; gap:6px;}
.vehicle-card .field-hint{margin-top:6px; font-size:13px;}
.vehicle-card .field-hint.warn{color:var(--danger);}
.vehicle-price{text-align:right;}
.vehicle-price .amount{font-size:28px; font-weight:650; letter-spacing:-.04em; line-height:1; font-variant-numeric:tabular-nums;}
.vehicle-price .label{font-size:13px; color:var(--muted); margin-top:5px;}
.vehicle-card .tick{position:absolute; top:12px; right:12px; width:24px; height:24px; border-radius:50%; display:grid; place-items:center; background:var(--accent); color:var(--on-accent); transform:scale(.6); opacity:0; transition:transform 220ms var(--ease-out), opacity 160ms ease;}
.vehicle-card.selected .tick{transform:none; opacity:1;}
.vehicle-card.selected .vehicle-price{margin-top:12px;}
@media (max-width:640px){
  .vehicle-card{grid-template-columns:96px minmax(0,1fr); gap:6px 14px; padding:12px;}
  .vehicle-price{grid-column:2; text-align:left; display:flex; align-items:baseline; gap:8px;}
  .vehicle-card.selected .vehicle-price{margin-top:0;}
  .vehicle-price .amount{font-size:24px;}
  .vehicle-price .label{margin:0;}
}
.vehicle-list.loading .vehicle-card{pointer-events:none;}

.trip-summary{
  display:flex; justify-content:space-between; align-items:center; gap:14px; flex-wrap:wrap; margin-bottom:16px; padding:16px 20px;
  background:var(--field); color:var(--on-field); border-radius:var(--r-card);
}
.trip-summary .route{font-weight:560; font-size:15px; letter-spacing:-.01em;}
.trip-summary .stats{display:flex; gap:18px; color:var(--accent); font-size:14px; font-weight:560; font-variant-numeric:tabular-nums;}

.availability-msg{display:flex; align-items:center; gap:10px; padding:12px 14px; border-radius:var(--r-ctl); font-size:14.5px; font-weight:520; margin-top:16px; background:var(--bg); color:var(--ink-2); animation:stepin 240ms var(--ease-out);}
.availability-msg.ok{background:var(--accent-wash); color:var(--accent-ink);}
.availability-msg.bad{background:var(--danger-wash); color:var(--danger);}
.availability-msg .spin{animation:spin .8s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}

#payment-element{margin:18px 0; padding:17px 16px; min-height:54px; background:var(--bg); border:1.5px solid transparent; border-radius:var(--r-ctl); transition:border-color 150ms ease, box-shadow 150ms ease, background-color 150ms ease;}
#payment-element.StripeElement--focus{border-color:var(--accent); background:var(--surface); box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 22%, transparent);}
#payment-element.StripeElement--invalid{border-color:var(--danger);}
.pay-summary{display:flex; justify-content:space-between; align-items:baseline; padding:16px 0 0; margin-top:14px; border-top:1px solid var(--line);}
.pay-summary .total{font-size:28px; font-weight:650; letter-spacing:-.04em; font-variant-numeric:tabular-nums;}
#fare-breakdown{font-size:13.5px; color:var(--muted); margin-top:12px;}
#payment-error{color:var(--danger); font-size:14.5px; font-weight:500; margin-top:10px;}
#payment-error:empty{display:none;}
.secure{display:flex; gap:8px; align-items:center; color:var(--muted); font-size:13.5px; margin-top:14px;}

.confirm-hero{padding:8px 0 28px;}
.confirm-hero .ok-badge{width:64px; height:64px; border-radius:50%; background:var(--accent); color:var(--on-accent); display:grid; place-items:center; margin-bottom:20px; animation:badge 520ms var(--ease-out) both;}
.confirm-hero .ok-badge .ic{width:34px; height:34px;}
@keyframes badge{from{transform:scale(.8); opacity:0;} to{transform:none; opacity:1;}}
.confirm-hero h2{font-size:clamp(2rem,3.6vw,3rem); font-weight:660; letter-spacing:-.04em; margin-bottom:8px;}
.confirm-hero p{color:var(--muted); font-size:17px;}
.confirm-hero .mono{color:var(--ink); font-weight:600; letter-spacing:.04em;}
.driver-card{display:flex; align-items:center; gap:16px; background:var(--surface); border:1px solid var(--line); border-radius:var(--r-card); padding:20px; margin-bottom:16px; box-shadow:var(--shadow-1);}
.driver-avatar{width:54px; height:54px; border-radius:50%; background:var(--field-2); color:var(--accent); display:grid; place-items:center; font-weight:650; font-size:18px; flex:none;}
.trip-status-badge{font-size:13px; font-weight:620; padding:6px 12px; border-radius:99px; background:var(--accent-wash); color:var(--accent-ink);}
.next-list{list-style:none; display:grid; gap:14px; margin-top:14px;}
.next-list li{display:flex; gap:12px; color:var(--ink-2); font-size:15.5px;}
.next-list .ic{color:var(--accent-ink); margin-top:2px;}

/* Trip summary rail */
.rail{position:sticky; top:92px; display:grid; gap:14px;}
.rail-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--r-card); padding:22px; box-shadow:var(--shadow-1);}
.rail-card h3{font-size:16px; letter-spacing:-.02em; font-weight:620; margin-bottom:16px;}
.legs{position:relative; display:grid; gap:16px; padding-left:26px;}
.legs::before{content:''; position:absolute; left:6px; top:10px; bottom:10px; width:2px; background:var(--line-strong);}
.leg{position:relative; font-size:14.5px; line-height:1.4; color:var(--ink);}
.leg::before{content:''; position:absolute; left:-25px; top:5px; width:10px; height:10px; border-radius:50%; background:var(--surface); border:2px solid var(--accent);}
.leg + .leg::before{background:var(--accent);}
.leg small{display:block; color:var(--muted); font-size:12.5px; margin-bottom:2px;}
.leg.empty{color:var(--muted);}
.rail-lines{display:grid; gap:12px; margin-top:18px; padding-top:18px; border-top:1px solid var(--line); font-size:14.5px;}
.rail-lines div{display:flex; justify-content:space-between; gap:12px;}
.rail-lines dt{color:var(--muted);}
.rail-lines dd{font-weight:560; text-align:right; font-variant-numeric:tabular-nums;}
.rail-total{display:flex; justify-content:space-between; align-items:baseline; margin-top:16px; padding-top:16px; border-top:1px solid var(--line);}
.rail-total span{color:var(--muted); font-size:14.5px;}
.rail-total b{font-size:28px; font-weight:650; letter-spacing:-.04em; font-variant-numeric:tabular-nums;}
.rail-perks{display:grid; gap:12px; font-size:14px; color:var(--ink-2);}
.rail-perks div{display:flex; gap:10px; align-items:flex-start;}
.rail-perks .ic{color:var(--accent-ink); margin-top:2px;}

@media (max-width:980px){
  .book-grid{grid-template-columns:1fr;}
  .rail{position:static; order:2;}
}
@media (max-width:640px){
  .field-row{grid-template-columns:1fr;}
  .progress{gap:6px;} .progress .seg{font-size:12px;}
  .book{padding-top:92px;}
}

.spin{animation:spin .8s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}


/* ==========================================================
   Inner pages: blog, company, legal, forms, admin, operator.
   One header, footer and type system for the whole site. Legacy class
   names and colour variables used by older page bodies map onto the tokens.
   ========================================================== */
@font-face{
  font-family:'JetBrains Mono';
  src:url('../fonts/geist-mono-latin-wght-normal.woff2') format('woff2');
  font-weight:100 900; font-style:normal; font-display:swap;
}
:root{
  --slate:var(--muted); --ink-line:var(--line); --paper:var(--surface); --amber:var(--accent); --amber-dark:var(--accent-ink);
  --teal:var(--accent-ink); --success:var(--accent-ink); --error:var(--danger); --radius:var(--r-ctl); --ink-soft:var(--ink-2);
  --border:var(--line); --ivory-dim:var(--surface-2); --brass:#9A6B15;
}
.container{width:100%; max-width:1240px; margin:0 auto; padding:0 24px;}
@media (max-width:640px){.container{padding:0 16px;}}
body.has-nav{padding-top:68px;}
.nav-brand{display:flex; align-items:center; gap:14px; min-width:0;}
.nav-tag{display:inline-flex; align-items:center; height:26px; padding:0 10px; border-radius:99px; background:rgba(255,255,255,.1); color:var(--on-field-2); font-size:13px; font-weight:560;}
.nav-link{padding:9px 14px; border-radius:10px; font-size:14.5px; font-weight:500; color:var(--on-field-2); transition:color 150ms ease, background-color 150ms ease;}
.nav-meta{font-size:14px; color:var(--on-field-2); white-space:nowrap;}
@media (hover:hover) and (pointer:fine){.nav-link:hover{color:var(--on-field); background:rgba(255,255,255,.08);}}
@media (max-width:640px){.nav-meta{display:none;}}

.eyebrow{display:block; font-size:13.5px; font-weight:600; letter-spacing:-.005em; color:var(--accent-ink);}
.btn-brass{background:var(--accent); color:var(--on-accent);}
.btn-outline{border:1.5px solid var(--line-strong); color:var(--ink); background:transparent;}
.btn-full{width:100%;}
@media (hover:hover) and (pointer:fine){
  .btn-brass:hover{background:var(--accent-hover);}
  .btn-outline:hover{border-color:var(--ink);}
}
.field textarea{
  width:100%; min-height:120px; padding:14px 16px; background:var(--bg); border:1.5px solid transparent; border-radius:var(--r-ctl);
  font-size:16px; font-weight:500; letter-spacing:-.01em; outline:0; resize:vertical; font-family:inherit;
  transition:border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease;
}
.field textarea:focus{border-color:var(--accent); background-color:var(--surface); box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 22%, transparent);}

.trip-type-toggle{display:inline-flex; gap:4px; padding:4px; background:var(--bg); border-radius:var(--r-ctl);}
.trip-type-toggle button{height:38px; padding:0 16px; border-radius:9px; font-size:14px; font-weight:560; color:var(--muted); transition:color 160ms ease, background-color 160ms ease;}
.trip-type-toggle button.active{background:var(--surface); color:var(--ink); box-shadow:0 1px 2px rgba(6,42,30,.14), 0 0 0 1px var(--line);}

.page-wrap{max-width:820px; margin:0 auto; padding:56px 24px 96px;}
.page-wrap h1{font-size:clamp(2rem,4vw,3rem); font-weight:650; letter-spacing:-.038em; margin:12px 0 18px;}
.page-wrap h2{font-size:1.4rem; letter-spacing:-.025em; margin:36px 0 12px;}
.page-wrap h3{font-size:1.1rem; letter-spacing:-.02em; margin:24px 0 8px;}
.page-wrap p{font-size:16.5px; line-height:1.7; color:var(--ink-2); margin-bottom:14px;}
.page-wrap ul, .page-wrap ol{margin:0 0 16px 22px; color:var(--ink-2); font-size:16px; line-height:1.75;}
.page-wrap li{margin-bottom:6px;}
.page-wrap strong{color:var(--ink);}
.page-wrap a:not(.btn){color:var(--accent-ink); text-decoration:underline; text-underline-offset:.2em;}
.legal-updated{display:block; font-size:13.5px; color:var(--muted); margin-bottom:24px;}
.blog-wrap{max-width:760px;}
.blog-date{font-size:13.5px; color:var(--muted);}
.post-list{display:flex; flex-direction:column; gap:16px; margin-top:28px;}
.post-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--r-card); padding:26px; box-shadow:var(--shadow-1); transition:transform 200ms var(--ease-out), border-color 160ms ease;}
@media (hover:hover) and (pointer:fine){.post-card:hover{border-color:var(--line-strong); transform:translateY(-2px);}}
.post-card h2{font-size:1.35rem; margin:8px 0 10px;}
.page-wrap .post-card h2 a{color:var(--ink); text-decoration:none;}
@media (hover:hover) and (pointer:fine){.page-wrap .post-card h2 a:hover{color:var(--accent-ink);}}
.post-card p{margin:0; color:var(--muted); font-size:15.5px;}
.post-body{margin-top:22px;}
.post-body h2{margin:34px 0 10px;}
.post-body h3{margin:22px 0 6px; font-size:1.1rem;}
.post-body ul{padding-left:1.2em; margin:10px 0 14px;}
.post-body li{margin:6px 0;}
.post-body a{color:var(--accent-ink);}
.page-wrap .back-link{display:inline-block; margin:0 10px 18px 0; color:var(--accent-ink); font-weight:600; font-size:14.5px; text-decoration:none;}

.faq-list{display:flex; flex-direction:column; margin-top:12px;}
.faq-item{border-top:1px solid var(--line);}
.faq-item:last-child{border-bottom:1px solid var(--line);}
.faq-q{display:flex; align-items:center; justify-content:space-between; gap:20px; padding:20px 0; cursor:pointer; list-style:none; font-size:17px; font-weight:600; letter-spacing:-.02em;}
.faq-q::-webkit-details-marker{display:none;}
.faq-icon{color:var(--accent-ink); font-size:22px; line-height:1; transition:transform 260ms var(--ease-out);}
.faq-item[open] .faq-icon{transform:rotate(45deg);}
.faq-a{padding:0 36px 22px 0; color:var(--muted); font-size:16px; line-height:1.65;}

.login-wrap{max-width:440px; margin:0 auto; padding:56px 24px 96px;}
.login-wrap h2{font-size:1.9rem; font-weight:650; letter-spacing:-.035em; margin-bottom:20px;}
.login-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--r-card); padding:28px; box-shadow:var(--shadow-1);}

.admin-wrap, .op-wrap{padding-top:44px;}
.admin-wrap h2, .op-wrap h2{font-size:1.6rem; letter-spacing:-.03em;}

.fare-table{width:100%; border-collapse:collapse; margin:14px 0 22px; font-size:15.5px;}
.fare-table th,.fare-table td{text-align:left; padding:11px 12px; border-bottom:1px solid var(--line);}
.fare-table th{font-size:13px; color:var(--muted); font-weight:600;}
.fare-table td:last-child,.fare-table th:last-child{text-align:right;}
.page-wrap .lead{font-size:1.1rem; color:var(--muted);}
