/** * Modul: Pinnwand / Notizen (Notes) * Zweck: Styles für Masonry-Grid, Sticky-Note-Karten, Modal * Abhängigkeiten: tokens.css, layout.css */ /* -------------------------------------------------------- * Seiten-Layout * -------------------------------------------------------- */ .notes-page { display: flex; flex-direction: column; height: calc(100dvh - var(--nav-height-mobile) - var(--safe-area-inset-bottom)); max-width: var(--content-max-width); margin: 0 auto; } @media (min-width: 1024px) { .notes-page { height: 100dvh; } } /* -------------------------------------------------------- * Header / Toolbar * -------------------------------------------------------- */ .notes-toolbar { display: flex; align-items: center; justify-content: space-between; padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--color-border); background-color: var(--color-surface); flex-shrink: 0; gap: var(--space-3); } .notes-toolbar__title { font-size: var(--text-lg); font-weight: var(--font-weight-bold); } /* -------------------------------------------------------- * Masonry-Grid * -------------------------------------------------------- */ .notes-grid { flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: var(--space-4); columns: 2; column-gap: var(--space-3); } @media (min-width: 600px) { .notes-grid { columns: 3; } } @media (min-width: 900px) { .notes-grid { columns: 4; } } @media (min-width: 1200px) { .notes-grid { columns: 5; } } /* -------------------------------------------------------- * Notiz-Karte * -------------------------------------------------------- */ .note-card { break-inside: avoid; margin-bottom: var(--space-3); border-radius: var(--radius-md); padding: var(--space-3); cursor: pointer; position: relative; transition: transform var(--transition-fast), box-shadow var(--transition-fast); box-shadow: var(--shadow-sm); } .note-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); } .note-card--pinned { box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15); } .note-card__pin { position: absolute; top: var(--space-2); right: var(--space-2); width: 24px; height: 24px; border-radius: var(--radius-full); background: rgba(0,0,0,0.1); border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; min-height: unset; opacity: 0; transition: opacity var(--transition-fast), background-color var(--transition-fast); color: rgba(0,0,0,0.6); } .note-card--pinned .note-card__pin { opacity: 1; background: rgba(0,0,0,0.15); } .note-card:hover .note-card__pin { opacity: 1; } .note-card__pin:hover { background: rgba(0,0,0,0.2); } .note-card__title { font-size: var(--text-sm); font-weight: var(--font-weight-semibold); margin-bottom: var(--space-1); color: rgba(0,0,0,0.8); padding-right: var(--space-6); } .note-card__content { font-size: var(--text-sm); line-height: var(--line-height-relaxed); color: rgba(0,0,0,0.75); word-break: break-word; white-space: pre-wrap; } /* Markdown-light: fett, kursiv, Listen */ .note-card__content strong { font-weight: var(--font-weight-bold); } .note-card__content em { font-style: italic; } .note-card__footer { display: flex; align-items: center; justify-content: space-between; margin-top: var(--space-2); padding-top: var(--space-2); border-top: 1px solid rgba(0,0,0,0.08); } .note-card__creator { display: flex; align-items: center; gap: var(--space-1); font-size: var(--text-xs); color: rgba(0,0,0,0.5); } .note-card__avatar { width: 16px; height: 16px; border-radius: var(--radius-full); display: inline-flex; align-items: center; justify-content: center; font-size: 9px; font-weight: var(--font-weight-bold); color: #ffffff; flex-shrink: 0; } .note-card__delete { width: 24px; height: 24px; border-radius: var(--radius-full); background: rgba(0,0,0,0.08); border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; min-height: unset; color: rgba(0,0,0,0.5); opacity: 0; transition: opacity var(--transition-fast), background-color var(--transition-fast); } .note-card:hover .note-card__delete { opacity: 1; } .note-card__delete:hover { background: rgba(255,59,48,0.2); color: var(--color-danger); } /* -------------------------------------------------------- * Leer-Zustand * -------------------------------------------------------- */ .notes-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--space-12) var(--space-6); text-align: center; flex: 1; color: var(--color-text-secondary); } .notes-empty__icon { width: 56px; height: 56px; color: var(--color-text-disabled); margin-bottom: var(--space-4); } /* -------------------------------------------------------- * Modal * -------------------------------------------------------- */ .note-modal-overlay { position: fixed; inset: 0; background-color: rgba(0,0,0,0.5); z-index: var(--z-modal); display: flex; align-items: flex-end; justify-content: center; animation: fadeIn var(--transition-fast) ease; } @media (min-width: 768px) { .note-modal-overlay { align-items: center; padding: var(--space-4); } } .note-modal { background-color: var(--color-surface); border-radius: var(--radius-lg) var(--radius-lg) 0 0; width: 100%; max-height: 90dvh; display: flex; flex-direction: column; overflow: hidden; animation: slideUp var(--transition-base) ease; } @media (min-width: 768px) { .note-modal { border-radius: var(--radius-lg); max-width: 520px; max-height: 80dvh; } } .note-modal__header { display: flex; align-items: center; justify-content: space-between; padding: var(--space-4); border-bottom: 1px solid var(--color-border); flex-shrink: 0; } .note-modal__title { font-size: var(--text-lg); font-weight: var(--font-weight-bold); } .note-modal__close { width: 32px; height: 32px; border-radius: var(--radius-full); background: var(--color-border); border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; color: var(--color-text-secondary); min-height: unset; } .note-modal__body { flex: 1; overflow-y: auto; padding: var(--space-4); display: flex; flex-direction: column; gap: var(--space-3); } /* Farb-Auswahl */ .note-color-picker { display: flex; flex-wrap: wrap; gap: var(--space-2); } .note-color-swatch { width: 28px; height: 28px; border-radius: var(--radius-full); border: 2px solid transparent; cursor: pointer; transition: transform var(--transition-fast), border-color var(--transition-fast); } .note-color-swatch:hover { transform: scale(1.15); } .note-color-swatch--active { border-color: var(--color-text-primary); transform: scale(1.1); } .note-modal__footer { display: flex; align-items: center; justify-content: flex-end; gap: var(--space-3); padding: var(--space-4); border-top: 1px solid var(--color-border); flex-shrink: 0; }