diff --git a/app.py b/app.py index 1a61c9c..fd40f62 100644 --- a/app.py +++ b/app.py @@ -121,6 +121,7 @@ def results(slug, travel_date): return render_template( 'results.html', trips=trips, + destinations=DESTINATIONS, destination=destination, travel_date=travel_date, slug=slug, diff --git a/templates/base.html b/templates/base.html index 29042f3..47c41b5 100644 --- a/templates/base.html +++ b/templates/base.html @@ -47,6 +47,138 @@ padding: 2rem; } + .field-label { + display: block; + font-weight: 600; + margin-bottom: 0.4rem; + } + + .form-control { + width: 100%; + padding: 0.6rem 0.8rem; + font-size: 1rem; + border: 1px solid #cbd5e0; + border-radius: 4px; + } + + .fixed-station { + padding: 0.85rem 1rem; + border: 1px solid #cbd5e0; + border-radius: 10px; + background: linear-gradient(180deg, #f8fbff 0%, #eef4fa 100%); + } + + .fixed-station strong { + display: block; + color: #0f172a; + font-size: 1rem; + margin-bottom: 0.2rem; + } + + .fixed-station span { + display: block; + color: #475569; + font-size: 0.9rem; + } + + .destination-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); + gap: 0.75rem; + } + + .destination-option { + position: relative; + } + + .destination-option input { + position: absolute; + opacity: 0; + inset: 0; + margin: 0; + cursor: pointer; + } + + .destination-option label { + display: block; + min-height: 100%; + padding: 0.95rem 1rem; + border: 1px solid #cbd5e0; + border-radius: 10px; + background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%); + cursor: pointer; + transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease; + } + + .destination-option label strong { + display: block; + color: #0f172a; + font-size: 1rem; + margin-bottom: 0.2rem; + } + + .destination-option label span { + display: block; + color: #475569; + font-size: 0.9rem; + } + + .destination-option input:hover + label { + border-color: #7aa7d9; + box-shadow: 0 4px 12px rgba(0, 83, 159, 0.08); + } + + .destination-option input:focus-visible + label { + border-color: #00539f; + box-shadow: 0 0 0 3px rgba(0, 83, 159, 0.2); + } + + .destination-option input:checked + label { + border-color: #00539f; + background: linear-gradient(180deg, #eef6ff 0%, #dcecff 100%); + box-shadow: 0 8px 20px rgba(0, 83, 159, 0.16); + transform: translateY(-1px); + } + + .chip-row { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + } + + .chip-link, + .chip-current { + display: inline-block; + padding: 0.35rem 0.8rem; + border: 1px solid #cbd5e0; + border-radius: 999px; + font-size: 0.9rem; + text-decoration: none; + } + + .chip-link { + color: #00539f; + background: #fff; + } + + .chip-link:hover { + border-color: #7aa7d9; + background: #f8fbff; + } + + .chip-current { + color: #fff; + background: #00539f; + border-color: #00539f; + font-weight: 600; + } + + @media (max-width: 640px) { + .card { + padding: 1.25rem; + } + } + a { color: #00539f; } diff --git a/templates/index.html b/templates/index.html index c01df6f..c8300a4 100644 --- a/templates/index.html +++ b/templates/index.html @@ -4,33 +4,49 @@