Files
papa-kind-treff.info/public/assets/css/styles.css
2025-12-25 01:50:07 +01:00

132 lines
7.2 KiB
CSS
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* =============================
schwarzesbrett.online Styles
Struktur:
1) CSS Reset & Base
2) Design Tokens (Variablen)
3) Utilities
4) Layout (Container, Grid)
5) Components (Buttons, Chips, Cards, Forms, Modal, Toast)
6) Sections (Header, Hero, Footer)
============================= */
/* 1) Reset & Base */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji"; color: var(--color-text); background: var(--color-bg); }
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; }
input, textarea, select { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
/* 2) Tokens */
:root {
--color-bg: #f7f2ea;
--color-surface: #ffffff;
--color-border: #e5d8c1;
--color-muted: #5f6b7a;
--color-text: #26323f;
--color-primary: #34485a; /* Basisfarbe */
--color-primary-contrast: #ffffff;
--color-accent: #e9b049; /* warmes Highlight */
--color-accent-soft: #fdf4e0;
--color-highlight: #99433f; /* Akzent 2 */
--radius-sm: 10px;
--radius-md: 14px;
--radius-lg: 18px;
--shadow-card: 0 1px 2px rgba(0,0,0,0.04), 0 10px 32px rgba(0,0,0,0.08);
--maxw: 1180px;
}
/******************** 3) Utilities ********************/
.container { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: 16px; }
.hide { display: none !important; }
.text-muted { color: var(--color-muted); }
.grid { display: grid; gap: 16px; }
.grid-2 { grid-template-columns: repeat(2, minmax(0,1fr)); }
.grid-3 { grid-template-columns: repeat(3, minmax(0,1fr)); }
@media (max-width: 900px){ .grid-2, .grid-3 { grid-template-columns: 1fr; } }
.mt-1{margin-top:4px} .mt-2{margin-top:8px} .mt-3{margin-top:12px} .mt-4{margin-top:16px}
.mb-2{margin-bottom:8px} .mb-4{margin-bottom:16px}
.p-2{padding:8px} .p-3{padding:12px} .p-4{padding:16px} .p-6{padding:24px}
.rounded { border-radius: var(--radius-sm); } .rounded-md { border-radius: var(--radius-md); } .rounded-lg { border-radius: var(--radius-lg); }
.border { border: 1px solid var(--color-border); }
.surface { background: var(--color-surface); }
.shadow-card { box-shadow: var(--shadow-card); }
.center { display:flex; align-items:center; justify-content:center; }
.badge { display:inline-block; padding: 4px 8px; border:1px solid var(--color-border); border-radius: 999px; font-size: 12px; }
.clamp-2 { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.clamp-3 { display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
/******************** 4) Layout ********************/
.header { position: sticky; top:0; z-index: 40; backdrop-filter: blur(4px); background: rgba(255,255,255,0.9); border-bottom:1px solid var(--color-border); }
.header .nav { display:flex; gap:24px; align-items:center; }
.header .brand { display:flex; align-items:center; gap:8px; font-weight:600; font-size:18px; letter-spacing: -0.2px; }
.header .menu-btn { display:none; border-radius: 10px; padding:8px; }
@media (max-width: 800px){ .header .nav { display:none; } .header .menu-btn { display:block; } }
.mobile-menu { display:none; border-top:1px solid var(--color-border); }
.mobile-menu.open { display:block; }
.hero { border-bottom:1px solid var(--color-border); background: var(--color-surface); }
.hero h1 { font-size: clamp(24px, 3vw, 36px); line-height: 1.15; font-weight: 700; }
.hero .sub { color: var(--color-muted); }
.footer { border-top:1px solid var(--color-border); font-size:14px; color: var(--color-muted); }
/******************** 5) Components ********************/
/* Buttons */
.btn { display:inline-flex; align-items:center; gap:8px; padding:10px 14px; border-radius: var(--radius-sm); border:1px solid transparent; cursor:pointer; background: var(--color-primary); color: var(--color-primary-contrast); }
.btn:hover { opacity:.92; }
.btn.outline { background: transparent; color: var(--color-text); border-color: var(--color-border); }
.btn.ghost { background: transparent; color: var(--color-text); }
.btn.block { display:flex; width:100%; justify-content:center; }
/* Chips */
.chips { display:flex; gap:8px; overflow:auto; padding-bottom:4px; }
.chip { padding:8px 12px; border:1px solid var(--color-border); background:#fff; border-radius:999px; cursor:pointer; white-space:nowrap; }
.chip.active { background: var(--color-primary); color: var(--color-primary-contrast); }
/* Note Card (Korkbrett-Gefühl) */
.note { background:#fffdf6; border:1px solid var(--color-border); border-radius: var(--radius-sm); position:relative; }
.note.pin::before{ content:""; position:absolute; width:12px; height:12px; background:#ef4444; border-radius:999px; top:-6px; left:50%; transform:translateX(-50%); box-shadow:0 1px 0 rgba(0,0,0,.15) inset; }
/* Card */
.card { background: var(--color-surface); border:1px solid var(--color-border); border-radius: var(--radius-md); overflow:hidden; box-shadow: var(--shadow-card); }
.card .img { height: 180px; width: 100%; object-fit: cover; display:block; }
.card .body { padding:16px; }
.card .row { display:flex; justify-content:space-between; align-items:center; gap:8px; font-size:12px; color: var(--color-muted); }
.card h3 { margin:8px 0 0; font-size:16px; }
/* Results List */
.results { display:grid; gap:16px; grid-template-columns: repeat(3, minmax(0,1fr)); }
@media (max-width: 1000px){ .results { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px){ .results { grid-template-columns: 1fr; } }
/* Forms */
.label { display:block; font-size:13px; color:var(--color-muted); }
.input, .select, .textarea { width:100%; padding:10px 12px; border:1px solid var(--color-border); border-radius: var(--radius-sm); background: #fff; }
.textarea { min-height: 120px; resize: vertical; }
.input:focus, .select:focus, .textarea:focus { border-color: var(--color-primary); outline: none; box-shadow: 0 0 0 3px rgba(17,24,39,.12); }
.form-row { display:grid; gap:12px; grid-template-columns: repeat(2, minmax(0,1fr)); }
@media (max-width: 800px){ .form-row { grid-template-columns: 1fr; } }
/* Search Bar */
.search { display:grid; gap:12px; grid-template-columns: 1fr 160px 140px; }
@media (max-width: 720px){ .search { grid-template-columns: 1fr; } }
/* Modal */
.modal { position: fixed; inset:0; background: rgba(0,0,0,.4); display:none; align-items:center; justify-content:center; padding:16px; }
.modal.open { display:flex; }
.modal .panel { width:100%; max-width: 720px; background:#fff; border-radius: var(--radius-lg); box-shadow: var(--shadow-card); padding: 20px; }
.modal .panel .head { display:flex; align-items:center; justify-content:space-between; margin-bottom: 12px; }
/* Toast */
.toast { position:fixed; top:16px; left:50%; transform:translateX(-50%); background: var(--color-primary); color: #fff; padding: 10px 14px; border-radius: 12px; box-shadow: var(--shadow-card); display:none; }
.toast.show { display:block; }
/* CTA Section */
.cta { background: var(--color-accent-soft); border-block:1px solid #fcd34d55; }
/* Icon util */
.icon { width: 20px; height: 20px; display:inline-block; }