/* Custom Wood Grain Effect */ .wood-grain { position: absolute; inset: 0; background-image: repeating-linear-gradient(90deg, transparent, transparent 50px, rgba(139, 69, 19, 0.1) 50px, rgba(139, 69, 19, 0.1) 51px ), repeating-linear-gradient(0deg, transparent, transparent 100px, rgba(160, 82, 45, 0.05) 100px, rgba(160, 82, 45, 0.05) 101px ); } /* Custom Scrollbar for Dark Mode */ .dark::-webkit-scrollbar { width: 12px; } .dark::-webkit-scrollbar-track { background: #1f2937; } .dark::-webkit-scrollbar-thumb { background: #4b5563; border-radius: 6px; } .dark::-webkit-scrollbar-thumb:hover { background: #6b7280; } /* Magazine Animation */ @keyframes magazineOpen { from { transform: scale(0.8) rotateY(-90deg); opacity: 0; } to { transform: scale(1) rotateY(0); opacity: 1; } } .magazine-open { animation: magazineOpen 0.5s ease-out; } /* Object Hover Effects */ .tabletop-object { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .tabletop-object:hover { transform: translateY(-8px) rotateZ(2deg); filter: drop-shadow(0 20px 40px rgba(0, 0, 0, 0.3)); } .tabletop-object.dragging { transform: scale(1.1) rotateZ(5deg); z-index: 1000; filter: drop-shadow(0 30px 60px rgba(0, 0, 0, 0.4)); } /* Magazine Spine */ .magazine-spine { background: linear-gradient(135deg, #1e293b 0%, #334155 50%, #1e293b 100%); position: relative; overflow: hidden; } .magazine-spine::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: repeating-linear-gradient( 90deg, transparent, transparent 2px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.1) 4px ); } /* File Cabinet Texture */ .file-cabinet { background: linear-gradient(135deg, #6b7280 0%, #4b5563 50%, #374151 100%); position: relative; } .file-cabinet::after { content: ''; position: absolute; top: 10%; left: 10%; right: 10%; height: 2px; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent); } /* Art Frame */ .art-frame { background: linear-gradient(135deg, #d97706 0%, #92400e 100%); padding: 12px; box-shadow: inset 0 0 20px rgba(0, 0, 0, 0.3), 0 10px 30px rgba(0, 0, 0, 0.2); } .art-canvas { background: #f3f4f6; box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.1); } /* Sticky Note */ .sticky-note { transform: rotate(-3deg); transition: transform 0.2s ease; } .sticky-note:hover { transform: rotate(-1deg) scale(1.05); } /* Device Mockup */ .device-mockup { background: #1f2937; border-radius: 20px; padding: 20px; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3); } .device-screen { background: #000; border-radius: 10px; overflow: hidden; } /* Physics-based animations */ @keyframes gentleFloat { 0%, 100% { transform: translateY(0) rotateZ(0); } 50% { transform: translateY(-5px) rotateZ(1deg); } } .floating { animation: gentleFloat 4s ease-in-out infinite; } /* Loading States */ .loading-shimmer { background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: shimmer 2s infinite; } @keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } /* Accessibility Focus States */ *:focus-visible { outline: 3px solid #3b82f6; outline-offset: 2px; } /* Touch Device Optimizations */ @media (hover: none) { .tabletop-object:hover { transform: none; filter: none; } .tabletop-object:active { transform: scale(1.05); filter: drop-shadow(0 15px 30px rgba(0, 0, 0, 0.3)); } } /* Print Styles */ @media print { body { background: white; } #tabletop { position: static; overflow: visible; } .tabletop-object { break-inside: avoid; page-break-inside: avoid; } }