/** * Masonry Grid Styles * * Styles for responsive masonry layout similar to Google Keep * Handles note sizes, drag states, and responsive breakpoints */ /* Masonry Container */ .masonry-container { width: 100%; /* Reduced to compensate for item padding */ padding: 0 20px 40px 20px; } /* Masonry Item Base Styles - Width is managed by Muuri */ .masonry-item { display: block; position: absolute; z-index: 1; box-sizing: border-box; padding: 8px; /* 8px * 2 = 16px gap (Tighter spacing) */ } /* Masonry Item Content Wrapper */ .masonry-item-content { position: relative; width: 100%; /* height: auto - let content determine height */ box-sizing: border-box; } /* Ensure proper box-sizing for all elements in the grid */ .masonry-item *, .masonry-item-content * { box-sizing: border-box; } /* Note Card - Base styles */ .note-card { width: 100% !important; /* Force full width within grid cell */ min-width: 0; /* Prevent overflow */ } /* Note Size Styles - Desktop Default */ .masonry-item[data-size="small"], .note-card[data-size="small"] { min-height: 150px; height: auto !important; } .masonry-item[data-size="medium"], .note-card[data-size="medium"] { min-height: 200px; height: auto !important; } .masonry-item[data-size="large"], .note-card[data-size="large"] { min-height: 300px; height: auto !important; } /* Drag State Styles - Clean and flat behavior requested by user */ .masonry-item.muuri-item-dragging { z-index: 1000; opacity: 1 !important; /* Force opacity to 100% */ transition: none; } .masonry-item.muuri-item-dragging .note-card { transform: none !important; /* Force "straight" - no rotation, no scale */ box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); transition: none; } .masonry-item.muuri-item-releasing { z-index: 2; transition: all 0.3s cubic-bezier(0.25, 1, 0.5, 1); } .masonry-item.muuri-item-releasing .note-card { transform: scale(1) rotate(0deg); box-shadow: none; transition: all 0.3s cubic-bezier(0.25, 1, 0.5, 1); } .masonry-item.muuri-item-hidden { z-index: 0; opacity: 0; pointer-events: none; } /* Drag Placeholder - More visible and styled like Google Keep */ .muuri-item-placeholder { opacity: 0.3; background: rgba(100, 100, 255, 0.05); border: 2px dashed rgba(100, 100, 255, 0.3); border-radius: 12px; transition: all 0.2s ease-out; min-height: 150px !important; min-width: 100px !important; display: flex !important; align-items: center !important; justify-content: center !important; } .muuri-item-placeholder::before { content: ''; width: 40px; height: 40px; border-radius: 50%; background: rgba(100, 100, 255, 0.1); border: 2px dashed rgba(100, 100, 255, 0.2); } /* Mobile Styles (< 640px) */ @media (max-width: 639px) { .masonry-container { padding: 0 20px 16px 20px; } .masonry-item { padding: 8px; /* 16px gap on mobile */ } /* Smaller note sizes on mobile */ .masonry-item[data-size="small"], .masonry-item-content .note-card[data-size="small"] { min-height: 120px; height: auto !important; } .masonry-item[data-size="medium"], .masonry-item-content .note-card[data-size="medium"] { min-height: 160px; height: auto !important; } .masonry-item[data-size="large"], .masonry-item-content .note-card[data-size="large"] { min-height: 240px; height: auto !important; } /* Reduced drag effect on mobile */ .masonry-item.muuri-item-dragging .note-card { transform: scale(1.01); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); } } /* Tablet Styles (640px - 1023px) */ @media (min-width: 640px) and (max-width: 1023px) { .masonry-container { padding: 0 24px 20px 24px; } .masonry-item { padding: 8px; /* 16px gap */ } } /* Desktop Styles (1024px - 1279px) */ @media (min-width: 1024px) and (max-width: 1279px) { .masonry-container { padding: 0 28px 24px 28px; } .masonry-item { padding: 8px; } } /* Large Desktop Styles (1280px+) */ @media (min-width: 1280px) { .masonry-container { padding: 0 28px 32px 28px; max-width: 1600px; margin: 0 auto; } .masonry-item { padding: 8px; } } /* Smooth transition for layout changes */ .masonry-item, .masonry-item-content, .note-card { transition-property: box-shadow, opacity; transition-duration: 0.2s; transition-timing-function: ease-out; } /* Prevent layout shift during animations */ .masonry-item.muuri-item-positioning { transition: none !important; } /* Hide scrollbars during drag to prevent jitter */ body.muuri-dragging { overflow: hidden; } /* Optimize for reduced motion */ @media (prefers-reduced-motion: reduce) { .masonry-item, .masonry-item-content, .note-card { transition: none; } .masonry-item.muuri-item-dragging .note-card { transform: none; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); } } /* Print styles */ @media print { .masonry-item.muuri-item-dragging, .muuri-item-placeholder { display: none !important; } .masonry-item { break-inside: avoid; page-break-inside: avoid; } }