/** * Masonry Grid — CSS Grid avec tailles visibles * Layout avec espaces minimisés via dense, drag-and-drop via @dnd-kit */ /* ─── Container ──────────────────────────────────── */ .masonry-container { width: 100%; padding: 0 8px 40px 8px; } /* ─── CSS Grid avec dense pour minimiser les trous ─ */ .masonry-css-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); grid-auto-rows: auto; gap: 12px; align-items: start; grid-auto-flow: dense; } /* ─── Sortable items ─────────────────────────────── */ .masonry-sortable-item { break-inside: avoid; box-sizing: border-box; will-change: transform; transition: opacity 0.15s ease-out; } /* Taille des notes : small=1 colonne, medium=2 colonnes, large=3 colonnes */ .masonry-sortable-item[data-size="medium"] { grid-column: span 2; } .masonry-sortable-item[data-size="large"] { grid-column: span 3; } /* ─── Note card base ─────────────────────────────── */ .note-card { width: 100% !important; min-width: 0; box-sizing: border-box; } /* ─── Drag overlay ───────────────────────────────── */ .masonry-drag-overlay { cursor: grabbing; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.25), 0 8px 16px rgba(0, 0, 0, 0.15); border-radius: 12px; opacity: 0.95; pointer-events: none; } /* ─── Mobile (< 480px) : 1 colonne ──────────────── */ @media (max-width: 479px) { .masonry-css-grid { grid-template-columns: 1fr; gap: 10px; } /* Sur mobile tout est 1 colonne */ .masonry-sortable-item[data-size="medium"], .masonry-sortable-item[data-size="large"] { grid-column: span 1; } .masonry-container { padding: 0 4px 16px 4px; } } /* ─── Small tablet (480–767px) : 2 colonnes ─────── */ @media (min-width: 480px) and (max-width: 767px) { .masonry-css-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; } /* Sur 2 colonnes, large prend tout */ .masonry-sortable-item[data-size="large"] { grid-column: span 2; } .masonry-container { padding: 0 8px 20px 8px; } } /* ─── Tablet (768–1023px) ────────────────────────── */ @media (min-width: 768px) and (max-width: 1023px) { .masonry-css-grid { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; } } /* ─── Desktop (1024–1279px) ─────────────────────── */ @media (min-width: 1024px) and (max-width: 1279px) { .masonry-css-grid { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 12px; } } /* ─── Large Desktop (1280px+) ───────────────────── */ @media (min-width: 1280px) { .masonry-css-grid { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; } .masonry-container { max-width: 1600px; margin: 0 auto; padding: 0 12px 32px 12px; } } /* ─── Print ──────────────────────────────────────── */ @media print { .masonry-sortable-item { break-inside: avoid; page-break-inside: avoid; } } /* ─── Reduced motion ─────────────────────────────── */ @media (prefers-reduced-motion: reduce) { .masonry-sortable-item { transition: none; } }