diff --git a/themes/intotheeast/css/style.css b/themes/intotheeast/css/style.css index 732c2ec..7045866 100644 --- a/themes/intotheeast/css/style.css +++ b/themes/intotheeast/css/style.css @@ -1772,3 +1772,139 @@ body::after { color: var(--color-ink-muted); font-style: italic; } + +/* ── Between-trips highlights grid ──────────────────────────────────────────── */ + +.home-highlights-header { + margin-bottom: var(--space-8); + padding-bottom: var(--space-6); + border-bottom: 1px solid var(--color-border); +} + +.home-highlights-title { + font-family: var(--font-display); + font-size: var(--text-2xl); + font-weight: 400; + color: var(--color-ink); + margin-bottom: var(--space-2); +} + +.home-highlights-subtitle { + font-size: var(--text-sm); + color: var(--color-ink-muted); +} + +.home-highlights-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: var(--space-6); + margin-bottom: var(--space-10); +} + +@media (max-width: 900px) { + .home-highlights-grid { grid-template-columns: repeat(2, 1fr); } +} + +@media (max-width: 600px) { + .home-highlights-grid { grid-template-columns: 1fr; } +} + +.home-highlight-card { + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + background: var(--color-canvas); + overflow: hidden; + display: flex; + flex-direction: column; +} + +.home-highlight-image { + aspect-ratio: 16 / 9; + overflow: hidden; +} + +.home-highlight-image img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; +} + +.home-highlight-body { + padding: var(--space-4); + display: flex; + flex-direction: column; + gap: var(--space-2); + flex: 1; +} + +.home-highlight-badge { + font-size: var(--text-xs); + font-weight: 600; + font-variant: small-caps; + letter-spacing: 0.08em; + color: var(--color-accent); +} + +.home-highlight-badge--journal { + color: var(--color-ink-muted); +} + +.home-highlight-title { + font-family: var(--font-display); + font-size: var(--text-lg); + font-weight: 400; + color: var(--color-ink); + text-decoration: none; + line-height: 1.3; +} + +.home-highlight-title:hover { color: var(--color-accent); } + +.home-highlight-trip { + margin-top: auto; + padding-top: var(--space-3); + border-top: 1px solid var(--color-border); + font-size: var(--text-xs); + color: var(--color-ink-muted); + display: flex; + flex-direction: column; + gap: var(--space-1); +} + +.home-highlight-trip-name { + font-weight: 600; + color: var(--color-ink-2); +} + +.home-highlight-tagline { font-style: italic; } + +.home-highlight-trip-link { + color: var(--color-accent); + text-decoration: none; + font-weight: 500; +} + +.home-highlight-trip-link:hover { text-decoration: underline; } + +.home-highlights-cta-wrap { + text-align: center; + padding-top: var(--space-4); + border-top: 1px solid var(--color-border); +} + +.home-highlights-cta { + display: inline-block; + color: var(--color-accent); + font-size: var(--text-sm); + font-weight: 500; + text-decoration: none; + padding: var(--space-3) var(--space-6); + border: 1px solid var(--color-accent); + border-radius: var(--radius-sm); +} + +.home-highlights-cta:hover { + background: var(--color-accent); + color: var(--color-canvas); +} diff --git a/themes/intotheeast/templates/home.html.twig b/themes/intotheeast/templates/home.html.twig index 944b57a..1c2137f 100644 --- a/themes/intotheeast/templates/home.html.twig +++ b/themes/intotheeast/templates/home.html.twig @@ -225,8 +225,155 @@ homeMap.on('load', function () { {% endif %} {% else %} -{# ════════════════════════════════════════════════ BETWEEN-TRIPS MODE (Task 3) #} -
Off season — highlights coming in Task 3.
+{# ══════════════════════════════════════════════════════ BETWEEN-TRIPS MODE #} + +{# ── Highlight selection ─────────────────────────────────────────────────── #} +{% set trips_page = grav.pages.find('/trips') %} +{% set pool = [] %} +{% if trips_page %} + {% for trip_item in trips_page.children.published() %} + {% set t_dailies = grav.pages.find(trip_item.route ~ '/dailies') %} + {% set t_stories = grav.pages.find(trip_item.route ~ '/stories') %} + {% set candidates = [] %} + {% if t_dailies %} + {% for e in t_dailies.children.published() %} + {% if e.header.featured %} + {% set candidates = candidates|merge([{'type': 'journal', 'page': e, 'trip': trip_item}]) %} + {% endif %} + {% endfor %} + {% endif %} + {% if t_stories %} + {% for s in t_stories.children.published() %} + {% if s.header.featured %} + {% set candidates = candidates|merge([{'type': 'story', 'page': s, 'trip': trip_item}]) %} + {% endif %} + {% endfor %} + {% endif %} + {% if candidates|length > 0 %} + {% set pool = pool|merge([random(candidates)]) %} + {% endif %} + {% endfor %} +{% endif %} +{% set pool = pool|shuffle %} +{% set highlights = pool|slice(0, 6) %} + +{# ── Map entries (entries with coordinates) ──────────────────────────────── #} +{% set highlights_map_entries = [] %} +{% for item in highlights %} + {% if item.page.header.lat is not empty and item.page.header.lng is not empty %} + {% set highlights_map_entries = highlights_map_entries|merge([{ + 'lat': item.page.header.lat|number_format(6, '.', ''), + 'lng': item.page.header.lng|number_format(6, '.', ''), + 'slug': item.page.slug, + 'title': item.page.title, + 'url': item.page.url + }]) %} + {% endif %} +{% endfor %} + +A few moments from past journeys
+No highlights yet — mark entries as featured to show them here.
+ {% endif %} + + +