Social_Cooking/css/stylesheet_global.css

787 lines
16 KiB
CSS

/* 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: #D44B24;
--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-3: 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;
}
.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-3);
padding-top: 36px;
flex-shrink: 0;
}
/* Event-Beschrieb oberhalb von Eventtitel */
.event-date-time,
.event-location,
.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 */
.main-content {
margin-top: var(--space-8);
}
.container {
width: 90%;
max-width: 75rem;
margin: 0 auto;
}
.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 {
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 {
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 {
background: var(--tomato);
color: var(--butter-light);
}
.category-item.is-active, .category-item.active {
background: var(--tomato);
color: var(--butter-light);
}
.category-item-profile {
font-size: 1.25rem;
font-weight: 400;
line-height: 1;
padding: var(--space-1) var(--space-4);
}
.category-items {
display: inline-flex;
flex-wrap: wrap;
gap: var(--space-1);
}
.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-3);
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-3) 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;
padding: var(--space-3) 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);
}
/* Media Queries (Responsive) */
@media (max-width: 48rem) {
.container {
width: 95%;
}
.nav {
flex-direction: column;
}
}