/* --------------------------------------------------------- Shared Typography Tokens Reuse common text styles across nav, controls and buttons --------------------------------------------------------- */ .meta-filter select, .meta-filter input[type="date"], .detail-primary-btn { font-family: var(--font-main); font-size: 1.125rem; line-height: 1; color: var(--black); } /* Heading hierarchy: page title > detail title > card title > section title */ .overview-title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-24); } .overview-title-row .overview-title { margin-bottom: var(--space-24); } .detail-title { margin-bottom: var(--space-24); } .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-row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-16); margin-bottom: var(--space-2); } .category-group { display: flex; gap: var(--space-8); margin-bottom: 0; flex-wrap: wrap; flex: 1; } .event-tag { border: 1.5px solid var(--tomato); color: var(--tomato); border-radius: var(--radius-pill); font-family: var(--font-main); font-weight: 400; font-size: 1rem; line-height: 1; padding: var(--space-8) var(--space-20); } .meta-filter-group { display: flex; flex-wrap: nowrap; gap: var(--space-16); margin-bottom: 0; } .meta-filter { display: block; } .meta-filter span { display: none; } .meta-filter select, .meta-filter input[type="date"] { border: 1.5px solid var(--olive); border-radius: var(--radius-sm); background: var(--butter-light); height: 37px; padding: 0 var(--space-24); box-sizing: border-box; } .meta-filter select:focus, .meta-filter input[type="date"]:focus { border: 1.5px solid var(--olive-dark); outline: 2px solid var(--butter); } .meta-filter input[type="date"] { color-scheme: light; accent-color: var(--olive-dark); } .meta-filter input[type="date"]::-webkit-calendar-picker-indicator { cursor: pointer; filter: invert(8%) sepia(5%) saturate(300%) hue-rotate(10deg) brightness(10%) contrast(95%); transition: background-color 0.2s ease; } .meta-filter input[type="date"]::-webkit-calendar-picker-indicator:hover { filter: brightness(0.8); } .meta-filter select { cursor: pointer; appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='currentColor' stroke-width='1.5' fill='none' stroke-linecap='butt' stroke-linejoin='miter'/%3E%3C/svg%3E"); background-repeat: no-repeat; color: var(--black); background-position: right var(--space-24) center; } /* --------------------------------------------------------- Overview Event Cards --------------------------------------------------------- */ .event-list { display: flex; flex-direction: column; gap: var(--space-16); } .event-card { /* Core card container for every overview event entry. */ background: var(--butter-light); border: 1.5px solid var(--olive-light); border-radius: var(--radius-lg); padding: var(--space-32) var(--space-40); display: flex; gap: var(--space-40); cursor: pointer; transition: box-shadow 0.2s ease, transform 0.2s ease; } .event-card:hover { box-shadow: var(--shadow-interaction); transform: translateY(-3px); } .event-main { min-width: 0; flex: 1; } .event-location, .event-date-time, .event-gast { display: inline-flex; gap: var(--space-0); } .event-top-row { /* Primary metadata line: location + date/time/guest counters. */ display: flex; align-items: center; gap: var(--space-24); margin-bottom: var(--space-0); flex-wrap: wrap; } .event-location { display: inline-flex; gap: var(--space-0); } .event-location .icon path{ width: 20px; height: 20px; flex: 0 0 20px; display: block; } .event-meta-row { display: flex; align-items: center; gap: var(--space-8); flex-wrap: wrap; } .event-tag { border: 1.5px solid var(--tomato); color: var(--tomato); border-radius: var(--radius-pill); font-family: var(--font-main); font-weight: 400; font-size: 1rem; line-height: 1; padding: var(--space-8) var(--space-20); } .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; flex-direction: column; align-items: center; justify-content: flex-end; gap: var(--space-16); padding-top: 36px; flex-shrink: 0; } .button-plaetze { border: none; padding: var(--space-8) var(--space-24); font-family: var(--font-main); font-weight: 400; font-size: 1.125rem; color: var(--olive); } .event-spots { color: var(--olive); font-size: 18px; white-space: nowrap; } .event-spots-full, .detail-spots-pill-full { /* Sold-out visual state, intentionally high-contrast and always filled. */ border: 1.5px solid var(--tomato-light); padding: var(--space-8) var(--space-24); border-radius: var(--radius-pill); color: var(--butter-light); background: var(--tomato-light); font-family: var(--font-main); font-weight: 400; font-size: 1.25rem; cursor: not-allowed; } .btn-primary-register { background: var(--olive); } .btn-primary-own, .btn-primary-own:disabled { background: var(--olive-light); color: var(--black); opacity: 1; cursor: not-allowed; } /* --------------------------------------------------------- Overview Empty State --------------------------------------------------------- */ .empty-state { text-align: center; padding: 42px var(--space-32); border: 2px solid var(--olive-light); border-radius: var(--radius-lg); background: var(--butter-light); margin-top: 8px; } .empty-state-kicker { margin: 0 0 8px; color: var(--olive); font-size: 13px; font-weight: 600; letter-spacing: var(--ls-lg); } .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; } /* --------------------------------------------------------- Detail Page --------------------------------------------------------- */ .detail-page { display: grid; gap: 14px; } .detail-hero { display: grid; margin-bottom: var(--space-40); } .detail-top-row { display: inline-flex; align-items: center; gap: var(--space-32); 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: 1fr 1fr; grid-template-areas: "side gallery"; gap: var(--space-40); align-items: stretch; } .detail-side-stack { grid-area: side; display: grid; gap: var(--space-16); align-content: start; } .host-header { display: flex; align-items: center; gap: 10px; margin-bottom: 30px; } .host-name { margin-left: 12px; font-weight: 600; letter-spacing: var(--ls-sm); } /* .host-role { border: 1.5px solid var(--olive-light); background: var(--olive-light);; color: var(--olive); border-radius: var(--radius-pill); font-family: var(--font-main); font-weight: 400; font-size: 1rem; line-height: 1; letter-spacing: var(--ls-lg); padding: var(--space-8) var(--space-20); }*/ .detail-gallery { grid-area: gallery; display: grid; } .detail-gallery-large { /* Editorial mosaic: first image spans two rows, side images stack vertically. */ grid-template-columns: 1fr 1fr; grid-template-rows: repeat(2, minmax(220px, 1fr)); gap: var(--space-16); min-height: 520px; } .detail-gallery-large img { width: 100%; height: 100%; min-height: 220px; object-fit: cover; border-radius: var(--radius-md); box-shadow: var(--shadow-interaction); } .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: translateY(-3px); } .detail-gallery-large img:first-child { grid-row: 1 / 3; } .detail-gallery-large--single { grid-template-columns: 1fr 1fr; grid-template-rows: auto; align-items: start; } .detail-gallery-large--single .detail-gallery-item { grid-column: 1 / -1; grid-row: auto; align-self: start; } .detail-gallery-large--single .detail-gallery-image { height: auto; min-height: 0; object-fit: contain; object-position: top center; background: var(--butter-light); } .detail-gallery-large--single img:first-child { grid-row: auto; } .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; z-index: 200; inset: 0; background: var(--black); opacity: 0.6; } .detail-lightbox-content { position: relative; z-index: 300; margin: 0; max-width: min(96vw, 1100px); max-height: 90vh; } .detail-lightbox-image { display: block; width: 100%; max-height: 80vh; object-fit: contain; border-radius: var(--radius-md); background: var(--black); } .detail-lightbox-close { position: absolute; top: -40px; right: -40px; border: 0; background: transparent; color: var(--butter-light); font-size: 40px; line-height: 1; cursor: pointer; } .detail-panel { background: var(--butter-light); border-radius: var(--radius-md); padding: var(--space-24) var(--space-32); } .detail-panel-compact { padding: 12px 14px; } .detail-menu-list { margin: 20px; list-style: disc; font-size: 1.125rem; line-height: 1.5; } .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-lg); 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(--butter-light); display: inline-flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 500; } .participant-more { font-size: 12px; opacity: 0.7; } .detail-participants-full { display: flex; flex-direction: column; gap: 10px; } .detail-participant-item { display: flex; align-items: center; gap: 10px; } .participant-name { font-size: 0.95rem; font-weight: 500; color: var(--black); } .detail-participants-link { background: none; border: none; color: var(--olive); font-size: 0.85rem; font-weight: 600; cursor: pointer; padding: 0; text-decoration: underline; text-underline-offset: 3px; } .detail-participants-link:hover { color: var(--olive-dark); } .detail-action-bar { /* Sticky bottom CTA bar with summary and booking controls. */ display: flex; justify-content: space-between; align-items: center; gap: var(--space-16); background: var(--white); border: 1.5px solid var(--olive-light); border-radius: var(--radius-md); box-shadow: var(--shadow-interaction); padding: var(--space-24) var(--space-32); margin-top: var(--space-40); position: sticky; bottom: var(--space-40); z-index: 100; } .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: 16px; flex-wrap: wrap; } .detail-action-location, .detail-action-meta-text { color: var(--olive); font-size: 1rem; } .detail-action-location img { width: 18px; height: 18px; } .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-8); } .detail-spots-pill { border: none; padding: var(--space-8) var(--space-24); font-family: var(--font-main); font-weight: 400; font-size: 1rem; color: var(--olive); } .detail-spots-pill-full { border: 1.5px solid var(--tomato-light); color: var(--butter-light); background: var(--tomato-light); font-family: var(--font-main); font-weight: 400; font-size: 1.25rem; cursor: not-allowed; } .detail-action-btn-wrap { display: flex; flex-direction: column; align-items: center; gap: 4px; } .detail-dereg-hint { display: block; font-size: 11px; font-weight: 400; color: var(--olive); opacity: 0.75; } .detail-dereg-hint--closed { color: var(--tomato); font-weight: 500; opacity: 1; } .detail-primary-btn { border-radius: var(--radius-pill); color: var(--white); padding: 10px 22px; cursor: pointer; transition: background-color 0.2s ease, border-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease; } .detail-primary-btn-register { border: 2px solid var(--olive); background: var(--olive); } .detail-primary-btn-register:not(:disabled):hover, .detail-primary-btn-register:not(:disabled):focus-visible { background: #575704; border-color: #575704; transform: translateY(-1px); box-shadow: 0 4px 10px rgba(107, 107, 5, 0.28); } .detail-primary-btn-danger { border: 2px solid var(--tomato); background: var(--tomato); } .detail-primary-btn-danger:not(:disabled):hover, .detail-primary-btn-danger:not(:disabled):focus-visible { background: var(--tomato-dark); border-color: var(--tomato-dark); transform: translateY(-1px); box-shadow: 0 4px 10px rgba(188, 74, 52, 0.28); } .detail-primary-btn:not(:disabled):active { transform: translateY(0); box-shadow: 0 2px 6px rgba(102, 52, 13, 0.22); } .detail-primary-btn-own, .detail-primary-btn-own:disabled { border-color: var(--olive-light); background: var(--olive-light); color: var(--black); opacity: 1; 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; } .overview-info-button { width: 44px; height: 44px; flex-basis: 44px; font-size: 1.5rem; } .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; } .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-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-gallery-large--single { grid-template-columns: 1fr; grid-template-rows: auto; } .detail-lightbox { padding: 12px; } .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; } .overview-title-row { align-items: flex-start; gap: 12px; } .overview-info-button { width: 40px; height: 40px; flex-basis: 40px; font-size: 1.35rem; margin-top: 2px; } .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; } }