:root{
  --bg:#07131c; --bg2:#0d1e2b; --card:#112837; --line:#1e4055;
  --ink:#e8f3f8; --dim:#8fa9b8; --accent:#3fc9a8; --accent2:#5eb3ff;
  --warn:#f2b544; --free:#3fc9a8; --pad:16px;
}
*{box-sizing:border-box}
html,body{margin:0}
body{
  background:radial-gradient(1200px 600px at 50% -200px,#12374d,var(--bg)) fixed;
  color:var(--ink);
  font:16px/1.5 ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  padding-bottom:env(safe-area-inset-bottom);
  -webkit-text-size-adjust:100%;
}
header{padding:28px var(--pad) 8px;text-align:center}
h1{margin:0;font-size:1.5rem;letter-spacing:-.02em}
.sub{margin:6px 0 0;color:var(--dim);font-size:.9rem}
main{max-width:720px;margin:0 auto;padding:0 var(--pad) 40px}

.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:var(--pad);margin-top:16px}

.tabs{display:flex;gap:8px;margin-bottom:14px}
.tab{flex:1;padding:9px;border-radius:9px;border:1px solid var(--line);background:transparent;
  color:var(--dim);font:inherit;font-size:.88rem;cursor:pointer}
.tab.on{background:var(--accent);border-color:var(--accent);color:#04242c;font-weight:600}

.fld{display:block;margin-bottom:12px}
.fld>span{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.07em;color:var(--dim);margin-bottom:5px}
select,input{
  width:100%;padding:11px 12px;border-radius:9px;border:1px solid var(--line);
  background:var(--bg2);color:var(--ink);font:inherit;
}
select:focus,input:focus{outline:2px solid var(--accent2);outline-offset:1px}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
@media(max-width:520px){.grid3{grid-template-columns:1fr}}

.row{display:flex;gap:8px;flex-wrap:wrap}
.ghost{padding:8px 12px;border-radius:8px;border:1px dashed var(--line);background:transparent;
  color:var(--accent2);font:inherit;font-size:.85rem;cursor:pointer}
.ghost:hover{border-color:var(--accent2)}
.stopRow{display:flex;gap:8px;align-items:flex-end;margin-bottom:10px}
.stopRow .fld{flex:1;margin:0}
.stopRow .del{padding:11px 12px;border-radius:9px;border:1px solid var(--line);
  background:transparent;color:var(--dim);cursor:pointer;font:inherit;line-height:1}

.go{width:100%;margin-top:6px;padding:14px;border:0;border-radius:11px;
  background:linear-gradient(180deg,#4fdcb8,#2ba98b);color:#04242c;
  font:inherit;font-weight:700;font-size:1rem;cursor:pointer}
.go:disabled{opacity:.55;cursor:progress}
.hint{color:var(--dim);font-size:.82rem;margin:10px 0 0;min-height:1em}
.hint.err{color:#ff8f8f}

.res{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:var(--pad);margin-top:16px}
.res.best{border-color:var(--accent);box-shadow:0 0 0 1px rgba(63,201,168,.25)}
.resHead{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.resHead h2{margin:0;font-size:1.05rem}
.price{font-size:1.5rem;font-weight:700;color:var(--accent);white-space:nowrap}
.price small{display:block;font-size:.7rem;font-weight:400;color:var(--dim);text-align:right}
.tagline{color:var(--dim);font-size:.85rem;margin:4px 0 0}

.steps{list-style:none;margin:14px 0 0;padding:0}
.steps li{position:relative;padding:0 0 16px 26px;border-left:2px solid var(--line)}
.steps li:last-child{border-left-color:transparent;padding-bottom:0}
.steps li::before{content:"";position:absolute;left:-7px;top:4px;width:12px;height:12px;
  border-radius:50%;background:var(--bg2);border:2px solid var(--line)}
.steps li.ferry::before{background:var(--accent2);border-color:var(--accent2)}
.steps li.ferry.free::before{background:var(--free);border-color:var(--free)}
.steps .when{font-variant-numeric:tabular-nums;font-weight:600;font-size:.95rem}
.steps .what{color:var(--dim);font-size:.87rem;margin-top:2px}
.steps .beby{color:var(--warn);font-size:.83rem;margin-top:3px}
.steps .wait{color:var(--warn);font-size:.83rem;margin-top:3px;font-weight:600}
.steps .money{font-size:.83rem;margin-top:3px;color:var(--accent)}
.steps .money.zero{color:var(--free);font-weight:600}
.steps .note{font-size:.8rem;color:var(--dim);margin-top:4px;font-style:italic}
.badge{display:inline-block;font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;
  padding:2px 7px;border-radius:99px;border:1px solid var(--line);color:var(--dim);margin-left:6px;vertical-align:1px}
.badge.book{border-color:var(--accent2);color:var(--accent2)}
.badge.walk{border-color:var(--warn);color:var(--warn)}
.badge.free{border-color:var(--free);color:var(--free)}

.legHead{margin:22px 0 0;font-size:.75rem;text-transform:uppercase;letter-spacing:.09em;color:var(--accent2)}
.stay{color:var(--dim);font-size:.85rem;margin:6px 0 0}
.totals{display:flex;gap:18px;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.totals div{font-size:.85rem;color:var(--dim)}
.totals b{display:block;color:var(--ink);font-size:1.05rem;font-variant-numeric:tabular-nums}

footer{margin-top:26px;color:var(--dim);font-size:.8rem}
.fine{line-height:1.55}
a{color:var(--accent2)}
