/* Font Import */ @import url('https://fonts.googleapis.com/css2?family=Bagel+Fat+One&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Jost:wght@300;400;600&display=swap'); /* Reset / Normalize */ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } /* Colors + Main Font */ :root { --max-width: 1200px; --padding: 1.5rem; --tomato: #D44B24; --tomato-dark: #B53A18; --tomato-light: #E5937C; --olive: #6B6B05; --olive-dark: #545404; --olive-light: #C8CC7A; --butter: #F5F1BC; --butter-light: #FAF9F0; --white: #ffffff; --black: #141411; --brown: #66340d; --blue: #3489DA; --blue-dark: #1D70BF; --error: #FF3B30; --error-text: #d91200; --font-main: 'Jost', sans-serif; --font-size-base: 1rem; /* Shadows */ --shadow-interaction: 0 0.1875rem 0.75rem rgba(102, 52, 13, 0.1); --shadow-error: 0 0 0 2px rgba(255, 59, 48, 0.1); /* Spacing Scale > 1rem = 16px*/ --space-0: 0.25rem; /* 4px */ --space-01: 0.375rem; /* 6px */ --space-1: 0.5rem; /* 8px */ --space-2: 0.75rem; /* 12px */ --space-16: 1rem; /* 16px */ --space-20: 1.25rem; /* 20px */ --space-4: 1.5rem; /* 24px */ --space-5: 2rem; /* 32px */ --space-40: 2.5rem; /* 40px */ --space-7: 3rem; /* 48px */ --space-8: 4rem; /* 64px */ /* Radius Scale */ --radius-pill: 100rem; --radius-sm: 0.5rem; --radius-md: 1rem; --radius-lg: 2rem; /* Letter Spacing */ --ls-none: 0; --ls-sm: 2.5%; --ls-la: 5%; } /* Base Styles */ body { font-family: var(--font-main); background-color: var(--butter); } img { max-width: 100%; display: block; } /* Typography */ h1, h2, h3, h4, h5, h6 { font-family: 'Bagel Fat One'; } h1 { font-size: clamp(2.25rem, 5vw, 3rem); font-weight: 600; line-height: 120%; letter-spacing: var(--ls-sm); color: var(--brown); margin-bottom: var(--space-5); } h2 { font-size: 2.5rem; font-weight: 600; line-height: 120%; letter-spacing: var(--ls-sm); color: var(--brown); margin-bottom: var(--space-4); } h3 { font-size: 2rem; font-weight: 600; line-height: 120%; letter-spacing: var(--ls-sm); color: var(--brown); margin-bottom: 1.5rem; } p { font-family: var(--font-main); font-size: 1.125rem; line-height: 1.5; color: var(--black); margin-bottom: 1rem; } .p-small { font-family: var(--font-main); font-size: 1rem; line-height: 1.5; margin-bottom: 0rem; } .label-input-field { font-family: var(--font-main); font-size: 1.125rem; font-weight: 600; letter-spacing: var(--ls-sm); line-height: 1; margin-bottom: var(--space-16); } label { font-family: var(--font-main); font-size: 1.125rem; font-weight: 600; letter-spacing: var(--ls-sm); line-height: 1; margin-bottom: var(--space-0); } .option { font-family: var(--font-main); font-size: 1rem; font-weight: 600; letter-spacing: var(--ls-sm); line-height: 1; margin-bottom: var(--space-16); } .link-text a{ color: var(--blue); margin-top: var(--space-4); text-decoration: none; transition: color 0.3s ease; } .link-text a:hover { color: var(--blue-dark); text-decoration: underline; } .link-text-footer{ color: var(--black); text-decoration: none; transition: color 0.3s ease; } .link-text-footer:hover { text-decoration: underline; } .error-message { color: var(--error-text); font-size: 1rem; } /* Margins */ .margin-bottom-24 { margin-bottom: var(--space-4); } .margin-bottom-40 { margin-bottom: var(--space-40); } .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; } /* Event-Beschrieb oberhalb von Eventtitel */ .event-location, .event-date-time, .event-gast, .profile-event-meta { color: var(--olive); font-family: var(--font-main); font-size: 1.125rem; font-weight: 400; line-height: 1; display: inline-flex; gap: var(--space-0); } /* Layout */ .layout-wide { width: 75%; max-width: 1200px; margin: 82px auto 0 auto; gap: 120px; } .layout-narrow { width: 55%; max-width: 900px; margin: 82px auto 0 auto; } /* .container { width: 80%; max-width: 75rem; margin: 0 auto; } */ /* Media Queries (Responsive) */ @media (max-width: 48rem) { .container { width: 95%; } .nav { flex-direction: column; } } .icon { width: 20px; height: 20px; flex: 0 0 20px; display: inline-block; } /* Top Navigation */ .top-nav-wrap { position: sticky; height: 58px; top: 1rem; z-index: 100; background: none; padding: 0 1rem; } .top-nav { background: var(--white); /*backdrop-filter: blur(3px) saturate(140%); -webkit-backdrop-filter: blur(3px) saturate(140%);*/ border-radius: var(--radius-lg); box-shadow: var(--shadow-interaction); display: flex; justify-content: space-between; align-items: center; min-height: 3rem; padding: 0.1875rem 0.75rem 0.1875rem var(--space-5); max-width: none; width: 100%; box-sizing: border-box; } .brand { display: inline-flex; align-items: center; height: 3.125rem; text-decoration: none; } .brand img { width: auto; height: 100%; max-width: 6.5rem; display: block; } .nav-tab { color: var(--black); font-size: 1.125rem; font-weight: 400; letter-spacing: var(--ls-sm); line-height: 1; text-decoration: none; padding-bottom: 4px; } .nav-tab:hover, .nav-tab:active, .nav-tab:focus-visible { text-decoration: underline; text-underline-offset: 6px; text-decoration-thickness: 1.5px; } .nav-tab--active { text-decoration: underline; text-underline-offset: 6px; text-decoration-thickness: 1.5px; } .nav-tab-links { display: flex; align-items: center; gap: var(--space-5); } /* Badge */ .badge, .host-role { position: relative; display: inline-block; width: fit-content; color: var(--olive-dark); font-family: var(--font-main); font-size: 1rem; font-weight: 600; letter-spacing: var(--ls-la); z-index: 0; } .badge::before, .host-role::before { content: ""; position: absolute; inset: 0; background-color: var(--olive-light); margin: -0.25rem -0.75rem; z-index: -1; clip-path: polygon( 1.5% 0%, 100% 0%, 98.5% 100%, 0% 100% ); } /* Buttons */ .button-primary { display: inline-block; padding: var(--space-01) var(--space-4); background-color: var(--olive); border: 1.5px solid var(--olive); border-radius: var(--radius-lg); font-family: var(--font-main); font-weight: 400; font-size: 1.25rem; color: var(--butter-light); cursor: pointer; text-decoration: none; transition: background-color 0.2s ease, border-color 0.2s ease; } .button-primary:hover { background-color: var(--olive-dark); border-color: var(--olive-dark); } .button-primary:disabled { border-color: transparent; background: transparent; color: var(--olive-dark); opacity: 0.6; padding: var(--space-01) 0 var(--space-01) var(--space-4); cursor: not-allowed; } .button-primary-abmelden { display: inline-block; padding: 0.375rem 1.5rem; background-color: var(--blue); border: 1.5px solid var(--blue); border-radius: var(--radius-lg); font-family: var(--font-main); font-weight: 400; font-size: 1.25rem; color: var(--butter-light); cursor: pointer; text-decoration: none; transition: background-color 0.2s ease, border-color 0.2s ease; } .button-primary-abmelden:hover, .button-primary-abmelden:focus-visible { background: var(--blue-dark); border-color: var(--blue-dark); } .button-primary-eigener-event{ display: inline-block; padding: 0.375rem 1.5rem; background-color: var(--blue); border: 1.5px solid var(--blue); border-radius: var(--radius-lg); font-family: var(--font-main); font-weight: 400; font-size: 1.25rem; color: var(--butter-light); cursor: pointer; text-decoration: none; transition: background-color 0.2s ease, border-color 0.2s ease; } .button-primary-eigener-event:hover { background: var(--blue-dark); border-color: var(--blue-dark); } .button-primary-eigener-event:disabled { border-color: transparent; background-color: var(--olive-light); color: var(--olive-dark); cursor: not-allowed; } .button-secondary { display: inline-block; padding: 0.375rem 1.5rem; background-color: transparent; border: 1.5px solid var(--olive); border-radius: var(--radius-lg); font-family: var(--font-main); font-weight: 400; font-size: 1.25rem; color: var(--olive); cursor: pointer; text-decoration: none; transition: color 0.2s ease; } .button-secondary:hover { color: var(--olive-dark); background-color: var(--olive-light); border-color: var(--olive-dark); } .button--outline { background-color: transparent; color: var(--olive); border: 1.5px solid var(--olive); } .button--outline:hover { background-color: var(--olive-light); color: var(--black); } .counter-button { width: 44px; height: 44px; background-color: var(--olive); border: 1.5px solid var(--olive); border-radius: var(--radius-lg); font-family: var(--font-main); font-weight: 400; font-size: 1.25rem; color: var(--butter-light); cursor: pointer; text-decoration: none; transition: background-color 0.2s ease, border-color 0.2s ease; } .counter-button:hover, .counter-button:focus-visible { background-color: var(--olive-dark); border-color: var(--olive-dark); } .category-item { border: 1.5px solid var(--tomato); color: var(--tomato); border-radius: var(--radius-pill); background: var(--butter-light); font-family: var(--font-main); font-weight: 400; font-size: 1.125rem; line-height: 1; padding: var(--space-1) var(--space-20); cursor: pointer; transition: background-color 0.2s ease, color 0.2s ease; } .category-item:hover, .category-item:focus-visible, .category-item.is-active, .category-item.active { background: var(--tomato); color: var(--butter-light); } .category-items { display: inline-flex; flex-wrap: wrap; gap: var(--space-1); } .category-item-profile { font-size: 1.25rem; font-weight: 400; line-height: 1; height: 44px; padding: 0 var(--space-4); display: inline-flex; align-items: center; gap: var(--space-16); } .button-small { background: var(--olive); color: var(--butter-light); border: none; font-size: 1.125rem; letter-spacing: var(--ls-sm); font-family: var(--font-main); font-weight: 400; line-height: 1; border-radius: var(--radius-pill); padding: 10px var(--space-16); text-decoration: none; cursor: pointer; } ยง .button-small:hover, .button-small:active, .button-small:focus-visible { background: var(--olive-dark); } .logout-button { margin-right: -1.25rem; } /* Auth-Links in ausgeloggter Navigation: klarer Aktiv-/Default-Zustand. */ .auth-nav-button--default { background: transparent; color: var(--olive); border: 2px solid var(--olive); } .auth-nav-button--default:hover, .auth-nav-button--default:focus-visible { background: var(--olive-light); color: var(--black); } .auth-nav-button--active { background: var(--olive); color: var(--butter-light); border: 2px solid var(--olive); } .profile-pill { width: 2.375rem; height: 2.375rem; border-radius: 1.1875rem; background: var(--tomato); color: var(--white); font-size: 1.0625rem; font-weight: 400; letter-spacing: var(--ls-ui); line-height: 1.3; display: inline-flex; align-items: center; justify-content: center; text-decoration: none; } /* Utilities */ .text-center { text-align: center; } .hidden { display: none !important; } /* Text Muted */ .text-muted { color: #888; font-size: 0.8rem; font-weight: 400; line-height: 1.4; } /* Instagram Invite */ .instagram-invite { display: flex; align-items: center; justify-content: center; height: 1em; /* keeps it aligned with text size */ margin-top: var(--space-7); } .instagram-invite__link { display: flex; align-items: center; gap: 16px; text-decoration: none; } .instagram-invite_icon { height: 32px; width: 32px; object-fit: contain; border-radius: 8px; filter: brightness(0) saturate(100%) invert(27%) sepia(81%) saturate(749%) hue-rotate(24deg) brightness(90%) contrast(90%); } .footer-invite_logo { height: 56px; width: 56px; object-fit: contain; } .inline { color: var(--tomato); display: flex; align-items: center; gap: 8px; } /* Modal / Popup */ .modal { display: none; position: fixed; z-index: 1000; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.4); animation: modalFadeIn 0.3s ease; } @keyframes modalFadeIn { from { opacity: 0; } to { opacity: 1; } } .modal.show { display: flex; justify-content: center; align-items: center; } .modal-content { background-color: var(--white); padding: var(--space-20) var(--space-20) var(--space-40) var(--space-20); border-radius: var(--radius-lg); box-shadow: var(--shadow-interaction); max-width: 500px; width: 90%; text-align: center; animation: modalSlideIn 0.3s ease; } @keyframes modalSlideIn { from { transform: translateY(-50px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .modal-header { position: relative; } .modal-header h2 { padding: var(--space-20)var(--space-20) 0 var(--space-20); } .close-btn { position: absolute; right: 0; top: 0; font-size: 28px; color: var(--black); background: none; border: none; cursor: pointer; width: 30px; height: 30px; display: flex; align-items: center; justify-content: center; } .modal-body { padding: var(--space-20) var(--space-20) var(--space-4) var(--space-20); } .modal-footer { display: flex; gap: var(--space-2); justify-content: center; } /* Snackbar */ .snackbar { position: fixed; bottom: 30px; left: 50%; transform: translateX(-50%) translateY(100px); background: var(--olive); color: var(--white); padding: var(--space-16) var(--space-40); border-radius: var(--radius-pill); font-size: 1rem; font-weight: 600; font-family: var(--font-main); box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2); opacity: 0; transition: transform 0.4s ease, opacity 0.4s ease; z-index: 9999; pointer-events: none; } .snackbar--visible { transform: translateX(-50%) translateY(0); opacity: 1; } .snackbar--danger { background: var(--tomato); } /* Lightbox */ .lightbox { position: fixed; inset: 0; z-index: 200; display: none; align-items: center; justify-content: center; padding: 24px; } .lightbox.is-open { display: flex; } .lightbox__backdrop { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.75); } .lightbox__content { position: relative; margin: 0; max-width: min(96vw, 1100px); max-height: 90vh; z-index: 1; } .lightbox__image { display: block; width: 100%; max-height: 90vh; object-fit: contain; border-radius: 16px; background: #111; } .lightbox__close { position: absolute; top: -42px; right: 0; border: 0; background: transparent; color: var(--white); font-size: 40px; line-height: 1; cursor: pointer; } /* Footer */ .footer { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; margin-top: 120px; padding: var(--space-16) var(--space-7); } .footer-links { display: flex; gap: var(--space-4); } /* Left aligned */ .footer-left { justify-self: start; } /* Centered */ .footer-center { justify-self: center; } /* Right aligned */ .footer-right { justify-self: end; display: flex; gap: var(--space-4); }