.container { max-width: 1100px; margin: 0 auto; padding: 20px; } /* --------------------------------------------------------- Shared Typography Tokens Reuse common text styles across nav, controls and buttons --------------------------------------------------------- */ .nav-link, .login-pill, .category-item, .meta-filter select, .meta-filter input[type="date"], .btn-primary, .empty-state-btn, .detail-primary-btn { font-family: "Jost", sans-serif; font-size: 17px; font-weight: 500; letter-spacing: var(--ls-ui); } .event-date-time, .event-location { color: var(--olive); font-size: 18px; font-weight: 400; line-height: 1.3; } /* Heading hierarchy: page title > detail title > card title > section title */ .overview-title { margin: 0 0 var(--space-4); color: var(--olive); font-family: "Bagel Fat One", cursive; font-size: clamp(38px, 5vw, 44px); font-weight: 400; line-height: 1.15; } .detail-title { margin: 0; color: var(--brown); font-family: "Bagel Fat One", cursive; font-size: clamp(44px, 6vw, 52px); line-height: 1.15; font-weight: 400; } .event-title { margin: 0 0 var(--space-3); color: var(--brown); font-family: "Bagel Fat One", cursive; font-size: clamp(32px, 4.2vw, 44px); font-weight: 400; line-height: 1.15; } .detail-section-title { margin: 0 0 10px; color: var(--brown); font-family: "Bagel Fat One", cursive; font-size: 28px; font-weight: 400; line-height: 1.15; } /* --------------------------------------------------------- Overview Header + Filters --------------------------------------------------------- */ .filter-label { margin: 0 0 var(--space-1); color: var(--olive); font-size: 18px; letter-spacing: var(--ls-label); font-weight: 500; } .filter-row { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-3); margin-bottom: var(--space-6); } .category-group { display: flex; gap: var(--space-2); margin-bottom: 0; flex-wrap: wrap; flex: 1; } .category-item { border: 2px solid var(--olive); border-radius: var(--radius-md); background: var(--butter); color: var(--black); line-height: 1.3; padding: var(--space-1) var(--space-4); min-height: 40px; cursor: pointer; transition: background-color 0.2s ease, border-color 0.2s ease; } .category-item:hover { background: #faf8e8; } .category-item.active { border-color: transparent; background: var(--olive); color: var(--white); } .meta-filter-group { display: flex; flex-wrap: nowrap; gap: var(--space-2); margin-bottom: 0; } .meta-filter { display: block; min-width: 220px; } .meta-filter span { display: none; } .meta-filter select, .meta-filter input[type="date"] { border: 2px solid var(--olive); border-radius: var(--radius-md); background: var(--butter); color: var(--black); line-height: 1.3; padding: var(--space-1) var(--space-4); min-height: 40px; height: 40px; box-sizing: border-box; } .meta-filter select:focus, .meta-filter input[type="date"]:focus { outline: 2px solid rgba(107, 107, 5, 0.35); outline-offset: 1px; } /* --------------------------------------------------------- Overview Event Cards --------------------------------------------------------- */ .event-list { display: flex; flex-direction: column; gap: 18px; } .event-card { /* Core card container for every overview event entry. */ background: rgba(255, 255, 255, 0.9); border-radius: var(--radius-lg); padding: var(--space-5) 40px var(--space-4); display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-6); cursor: pointer; box-shadow: 0 3px 12px rgba(102, 52, 13, 0.1); } .event-main { min-width: 0; flex: 1; } .event-date-time { margin: 0; } .event-top-row { /* Primary metadata line: location + date/time/guest counters. */ display: flex; align-items: center; gap: var(--space-5); margin-bottom: var(--space-1); flex-wrap: wrap; } .event-location { display: inline-flex; align-items: center; gap: 6px; } .event-location img { width: 18px; height: 18px; display: block; filter: brightness(0) saturate(100%) invert(35%) sepia(95%) saturate(501%) hue-rotate(22deg) brightness(96%) contrast(96%); } .event-meta-row { display: flex; align-items: center; gap: var(--space-1); flex-wrap: wrap; margin-bottom: 12px; } .event-tag { border: 1px solid var(--tomato); color: var(--tomato); border-radius: var(--radius-pill); padding: 7px 14px; font-size: 14px; font-weight: 500; letter-spacing: var(--ls-ui); line-height: 1; text-transform: uppercase; } .event-spec-chip { display: none; } .event-specs { display: none; } .event-capacity { display: none; } .event-hints { display: none; } .event-side { /* Right-side action area: availability status and optional signup button. */ display: flex; align-items: center; gap: var(--space-3); padding-top: 36px; flex-shrink: 0; } .event-spots { color: var(--olive); font-size: 18px; font-weight: 500; white-space: nowrap; } .event-spots-full { /* Sold-out visual state, intentionally high-contrast and always filled. */ border: 2px solid var(--tomato); border-radius: var(--radius-pill); color: var(--white); background: var(--tomato); opacity: 1; font-weight: 600; font-size: 14px; padding: 7px 14px; line-height: 1; } .btn-primary { background: var(--olive); color: #fffde8; border: none; border-radius: var(--radius-pill); padding: 10px 22px; font-size: 16px; line-height: 1.3; cursor: pointer; white-space: nowrap; } .btn-primary:hover { filter: brightness(0.95); } /* --------------------------------------------------------- Overview Empty State --------------------------------------------------------- */ .empty-state { text-align: center; padding: 42px var(--space-5); border: 2px solid var(--olive-light); border-radius: var(--radius-lg); background: rgba(255, 255, 255, 0.92); margin-top: 8px; box-shadow: 0 3px 12px rgba(102, 52, 13, 0.08); } .empty-state-kicker { margin: 0 0 8px; color: var(--olive); font-size: 13px; font-weight: 600; letter-spacing: var(--ls-label); text-transform: uppercase; } .empty-state h3 { margin: 0; font-family: "Jost", sans-serif; font-size: 28px; font-weight: 600; color: var(--brown); line-height: 1.25; } .empty-state p { margin: 12px 0 0; font-size: 18px; color: var(--black); } .empty-state-link { display: inline-block; margin-top: 20px; text-decoration: none; } .empty-state-btn { border: 0; border-radius: var(--radius-pill); background: var(--olive); color: var(--white); font-weight: 600; padding: 10px 22px; cursor: pointer; } .empty-state-btn:hover { filter: brightness(0.95); } /* --------------------------------------------------------- Detail Page --------------------------------------------------------- */ .detail-page { display: grid; gap: 14px; } .detail-back { display: inline-flex; align-items: center; justify-content: flex-start; gap: var(--space-1); width: fit-content; color: var(--tomato); text-decoration: none; font-family: "Jost", sans-serif; font-size: 17px; font-weight: 500; letter-spacing: var(--ls-none); line-height: 1.2; } .detail-back span { font-size: 24px; line-height: 1; } .detail-hero { display: grid; gap: var(--space-1); } .detail-top-row { display: flex; align-items: center; gap: var(--space-5); flex-wrap: wrap; } .detail-meta { margin: 0; font-size: 26px; color: var(--brown); } .detail-chip-row { margin-bottom: 0; } .detail-content-grid { /* Two-column detail layout: content stack (left) + gallery (right). */ display: grid; grid-template-columns: minmax(260px, 0.75fr) minmax(0, 1.25fr); grid-template-areas: "side gallery"; gap: var(--space-3); align-items: stretch; } .detail-side-stack { grid-area: side; display: grid; gap: var(--space-2); align-content: start; } .host-card { border: 2px solid var(--butter); box-shadow: 0 3px 12px rgba(102, 52, 13, 0.1); } .host-header { display: flex; align-items: center; gap: 10px; margin-bottom: 30px; } .host-avatar { width: 32px; height: 32px; border-radius: 999px; background: var(--olive); color: var(--white); display: inline-flex; align-items: center; font-size: 13px; } .host-name { font-weight: 500; } .host-role { padding: 4px 10px; border: 1px solid var(--olive-light); border-radius: var(--radius-pill); background: rgba(107, 107, 5, 0.08); color: var(--olive); font-size: 12px; font-weight: 600; letter-spacing: var(--ls-label); text-transform: uppercase; } .host-card p { margin: 0 0 10px; font-size: 20px; line-height: 1.3; color: var(--black); } .detail-gallery { grid-area: gallery; display: grid; } .detail-gallery-large { /* Editorial mosaic: first image spans two rows, side images stack vertically. */ grid-template-columns: 1.4fr 1fr; grid-template-rows: repeat(2, minmax(220px, 1fr)); gap: 12px; min-height: 520px; } .detail-gallery-large img { width: 100%; height: 100%; min-height: 220px; object-fit: cover; border: 2px solid var(--black); border-radius: 20px; box-shadow: 0 4px 12px rgba(34, 28, 26, 0.14); } .detail-gallery-item { display: block; border: 0; background: transparent; padding: 0; cursor: zoom-in; } .detail-gallery-image { transition: transform 0.2s ease; } .detail-gallery-item:hover .detail-gallery-image, .detail-gallery-item:focus-visible .detail-gallery-image { transform: scale(1.015); } .detail-gallery-large img:first-child { grid-row: 1 / 3; } .detail-lightbox { /* Full-screen overlay for enlarged gallery image view. */ position: fixed; inset: 0; z-index: 200; display: none; align-items: center; justify-content: center; padding: 24px; } .detail-lightbox.is-open { display: flex; } .detail-lightbox-backdrop { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.75); } .detail-lightbox-content { position: relative; margin: 0; max-width: min(96vw, 1100px); max-height: 90vh; z-index: 1; } .detail-lightbox-image { display: block; width: 100%; max-height: 90vh; object-fit: contain; border-radius: 16px; background: #111; } .detail-lightbox-close { position: absolute; top: -42px; right: 0; border: 0; background: transparent; color: var(--white); font-size: 40px; line-height: 1; cursor: pointer; } .detail-panel { background: rgba(255, 255, 255, 0.86); border-radius: var(--radius-md); padding: 14px 16px; } .detail-panel-compact { padding: 12px 14px; } .detail-menu-list { margin: 20px; list-style: disc; font-size: 20px; line-height: 1.35; } .detail-participants-head { display: flex; align-items: center; justify-content: space-between; gap: 20px; } .detail-participants-link { font-size: 12px; font-weight: 600; color: var(--tomato); letter-spacing: var(--ls-label); text-decoration: none; } .detail-avatar-row { display: flex; align-items: center; gap: 10px; } .participant-avatar { width: 34px; height: 34px; border-radius: 50%; background: var(--tomato); color: var(--white); display: inline-flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 500; } .participant-more { font-size: 12px; opacity: 0.7; } .detail-action-bar { /* Sticky bottom CTA bar with summary and booking controls. */ display: flex; justify-content: space-between; align-items: center; gap: var(--space-2); background: rgba(255, 255, 255, 0.95); border: 1px solid var(--olive-light); border-radius: var(--radius-md); padding: 10px 14px; position: sticky; bottom: 18px; z-index: 12; box-shadow: 0 3px 12px rgba(102, 52, 13, 0.1); } .detail-action-summary { display: grid; gap: 2px; } .detail-action-summary small { font-size: 17px; opacity: 0.75; color: var(--brown); } .detail-action-meta { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; } .detail-action-location { color: var(--olive); font-size: 17px; } .detail-action-location img { width: 16px; height: 16px; } .detail-action-meta-text { color: var(--brown); } .detail-action-summary strong { font-size: 40px; font-family: "Bagel Fat One", cursive; line-height: 1.2; font-weight: 400; color: var(--brown); } .detail-action-buttons { display: flex; align-items: center; gap: var(--space-1); } .detail-spots-pill { border: 2px solid var(--olive-light); border-radius: var(--radius-pill); opacity: 0.5; font-size: 14px; letter-spacing: var(--ls-ui); padding: 7px 14px; color: var(--olive); } .detail-spots-pill-full { border-color: var(--tomato); color: var(--tomato); opacity: 1; font-weight: 600; } .detail-primary-btn { border: 2px solid var(--tomato); border-radius: var(--radius-pill); background: var(--tomato); color: var(--white); padding: 10px 22px; cursor: pointer; } .detail-primary-btn:disabled { opacity: 0.45; cursor: not-allowed; } /* --------------------------------------------------------- Responsive: Tablet (<= 850px) --------------------------------------------------------- */ @media (max-width: 850px) { .top-nav { padding-left: 16px; min-height: 64px; } .brand { height: 40px; } .brand img { width: auto; height: 100%; max-width: 84px; } .overview-title { font-size: 34px; } .top-nav-links { gap: 8px; } .nav-link, .login-pill { font-size: 15px; padding: 8px 14px; } .profile-pill { width: 34px; height: 34px; border-radius: 17px; font-size: 15px; } .category-group { gap: 10px; } .category-item { font-size: 15px; padding: 8px 14px; } .meta-filter { min-width: 155px; } .meta-filter select, .meta-filter input[type="date"] { font-size: 15px; padding: 8px 14px; min-height: 38px; height: 38px; } .event-card { flex-direction: column; align-items: stretch; gap: 16px; padding: 22px 20px 20px; } .event-title { font-size: 34px; } .event-date-time, .event-location, .event-spots { font-size: 18px; } .event-side { padding-top: 0; justify-content: space-between; } .event-side-full { justify-content: flex-end; } .btn-primary { font-size: 17px; padding: 8px 18px; } .detail-title { font-size: 40px; } .detail-meta { font-size: 18px; } .detail-top-row { gap: 12px; } .detail-content-grid { grid-template-columns: minmax(230px, 0.8fr) minmax(0, 1.2fr); grid-template-areas: "side gallery"; gap: 12px; } .detail-side-stack { gap: 10px; } .detail-gallery-large { grid-template-columns: 1fr; grid-template-rows: repeat(3, minmax(180px, auto)); min-height: auto; } .detail-gallery-large img { min-height: 180px; } .detail-gallery-large img:first-child { grid-row: auto; } .detail-lightbox { padding: 12px; } .detail-lightbox-close { top: -36px; font-size: 34px; } .detail-section-title { font-size: 24px; } .detail-action-bar { flex-direction: column; align-items: stretch; bottom: 10px; } .detail-action-summary strong { font-size: 32px; } .detail-action-buttons { flex-wrap: wrap; } } /* --------------------------------------------------------- Responsive: Mobile (<= 640px) --------------------------------------------------------- */ @media (max-width: 640px) { .top-nav { flex-direction: row; align-items: center; justify-content: space-between; gap: 10px; padding-top: 8px; padding-bottom: 8px; } .top-nav-wrap { padding: 6px 12px; } .overview-title { font-size: 30px; } .top-nav-links { width: auto; justify-content: flex-end; gap: 8px; flex-wrap: nowrap; } .top-nav-links .nav-link.active { display: none; } .filter-row { flex-direction: row; align-items: flex-end; flex-wrap: wrap; gap: 12px; } .detail-content-grid { grid-template-columns: 1fr; grid-template-areas: "side" "gallery"; } .meta-filter-group { width: auto; flex-wrap: wrap; gap: 10px; } .meta-filter { flex: 1 1 160px; min-width: 140px; } }