[data-tooltip]{cursor:help;position:relative}[data-tooltip]:hover:after,[data-tooltip]:hover:before{opacity:1;transition:opacity .2s ease-in-out,visibility .2s ease-in-out;visibility:visible}[data-tooltip]:before{background-color:rgba(0,0,0,.9);border-radius:6px;bottom:calc(100% + 8px);box-shadow:0 4px 12px rgba(0,0,0,.3);color:#fff;content:attr(data-tooltip);font-size:.875rem;line-height:1.4;padding:8px 12px;white-space:nowrap}[data-tooltip]:after,[data-tooltip]:before{left:50%;opacity:0;pointer-events:none;position:absolute;transform:translateX(-50%);visibility:hidden;z-index:1000}[data-tooltip]:after{border:6px solid transparent;border-top-color:rgba(0,0,0,.9);bottom:calc(100% + 2px);content:""}[data-tooltip-pos=top]:before{bottom:calc(100% + 8px);top:auto}[data-tooltip-pos=bottom]:before{bottom:auto;top:calc(100% + 8px)}[data-tooltip-pos=bottom]:after{border-bottom-color:rgba(0,0,0,.9);border-top-color:transparent;bottom:auto;top:calc(100% + 2px)}[data-tooltip-pos=left]:before{bottom:auto;left:auto;right:calc(100% + 8px);top:50%;transform:translateY(-50%)}[data-tooltip-pos=left]:after{border-left-color:rgba(0,0,0,.9);border-top-color:transparent;bottom:auto;left:auto;right:calc(100% + 2px);top:50%;transform:translateY(-50%)}[data-tooltip-pos=right]:before{bottom:auto;left:calc(100% + 8px);top:50%;transform:translateY(-50%)}[data-tooltip-pos=right]:after{border-right-color:rgba(0,0,0,.9);border-top-color:transparent;bottom:auto;left:calc(100% + 2px);top:50%;transform:translateY(-50%)}.gallery-header{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:16px;box-shadow:0 10px 25px rgba(102,126,234,.2);margin-bottom:2rem;padding:2rem}.gallery-header h1{color:#fff;font-size:2.5rem;font-weight:700;text-shadow:0 2px 4px rgba(0,0,0,.1)}.gallery-header p{color:hsla(0,0%,100%,.95);font-size:1.125rem}.gallery-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.08);overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1)}.gallery-card:hover{box-shadow:0 12px 24px rgba(0,0,0,.15);transform:translateY(-4px)}.gallery-card img{transition:transform .5s cubic-bezier(.4,0,.2,1)}.gallery-card:hover img{transform:scale(1.08)}.btn-enhanced{overflow:hidden;position:relative;transition:all .3s ease}.btn-enhanced:before{background:hsla(0,0%,100%,.2);border-radius:50%;content:"";height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transition:width .6s,height .6s;width:0}.btn-enhanced:hover:before{height:300px;width:300px}.filter-pill{position:relative;transition:all .2s ease}.filter-pill.active{box-shadow:0 4px 12px rgba(59,130,246,.3)}.skeleton{animation:loading 1.5s infinite;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);background-size:200% 100%}@keyframes loading{0%{background-position:200% 0}to{background-position:-200% 0}}.empty-state{padding:4rem 2rem;text-align:center}.empty-state-icon{align-items:center;animation:float 3s ease-in-out infinite;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:50%;display:flex;height:120px;justify-content:center;margin:0 auto 1.5rem;width:120px}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.empty-state-icon svg{color:#fff;height:64px;width:64px}.ai-badge{align-items:center;animation:pulse 2s ease-in-out infinite;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;color:#fff;display:inline-flex;font-size:.75rem;font-weight:600;gap:4px;padding:4px 8px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.8}}.view-toggle{background:#fff;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.08);display:flex;padding:4px}.view-toggle button{background:transparent;border:none;border-radius:6px;color:#6b7280;cursor:pointer;padding:8px 12px;transition:all .2s ease}.view-toggle button.active{background:#3b82f6;color:#fff}.search-wrapper{position:relative}.search-wrapper input{transition:all .3s ease}.search-wrapper input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.1)}.tag-pill{align-items:center;background:rgba(59,130,246,.1);border-radius:12px;color:#1e40af;display:inline-flex;font-size:.75rem;font-weight:500;gap:4px;padding:4px 10px;transition:all .2s ease}.tag-pill:hover{background:rgba(59,130,246,.2);transform:scale(1.05)}.lightbox-controls{display:flex;gap:12px;justify-content:center;margin-top:1rem}.lightbox-btn{backdrop-filter:blur(10px);background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);border-radius:8px;color:#fff;cursor:pointer;font-size:.875rem;padding:8px 16px;transition:all .2s ease}.lightbox-btn:hover{background:hsla(0,0%,100%,.2);transform:translateY(-2px)}.lightbox-media-container{align-items:center;display:flex;justify-content:center;margin:0 auto;max-height:80vh;max-width:90vw}.lightbox-media-container img,.lightbox-media-container video{height:auto;max-height:80vh;max-width:90vw;object-fit:contain;width:auto}.back-to-gallery-btn{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,100%,.15);border:1px solid hsla(0,0%,100%,.3);border-radius:8px;color:#fff;cursor:pointer;display:inline-flex;font-size:.875rem;gap:6px;padding:8px 16px;transition:all .2s ease}.back-to-gallery-btn:hover{background:hsla(0,0%,100%,.25);transform:translateY(-1px)}.lightbox-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem;padding:.5rem 0}.exif-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.exif-item{background:hsla(0,0%,100%,.05);border-radius:8px;padding:.75rem}.stats-badge{align-items:center;background:#fff;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.08);display:inline-flex;gap:8px;padding:8px 16px}.stats-badge-value{color:#1f2937;font-size:1.5rem;font-weight:700}.stats-badge-label{color:#6b7280;font-size:.875rem}@media (max-width:640px){.gallery-header{padding:1.5rem}.gallery-header h1{font-size:1.875rem}[data-tooltip]:before{max-width:200px;white-space:normal}}.sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}*{transition-timing-function:cubic-bezier(.4,0,.2,1)}.gallery-card[draggable=true]{cursor:grab;position:relative}.gallery-card[draggable=true]:active{cursor:grabbing}.gallery-card.dragging{box-shadow:0 8px 25px rgba(0,0,0,.15);opacity:.5;transform:scale(.95)}.album-drop-target{position:relative;transition:all .2s ease}.album-drop-target.drag-over{border-color:#8b5cf6!important;border-width:2px;box-shadow:0 0 0 4px rgba(139,92,246,.2),0 8px 25px rgba(139,92,246,.3);transform:scale(1.05)}.album-drop-target.drag-over:after{background:rgba(139,92,246,.1);border-radius:inherit;content:"";inset:0;pointer-events:none;position:absolute;z-index:10}.gallery-card[draggable=true]:not(.dragging):hover:after{background:rgba(0,0,0,.75);border-radius:4px;bottom:4px;color:#fff;content:"Drag to album";font-size:.7rem;left:50%;opacity:0;padding:4px 8px;pointer-events:none;position:absolute;transform:translateX(-50%);transition:opacity .2s;white-space:nowrap}body:has(.album-drop-target) .gallery-card[draggable=true]:not(.dragging):hover:after{opacity:1}.gallery-card.reorder-dragging{border:2px dashed var(--color-primary,#3b82f6);opacity:.4;transform:scale(.95)}.gallery-card.reorder-drop-target{border:2px solid var(--color-primary,#3b82f6);box-shadow:0 0 0 4px rgba(59,130,246,.2);transform:scale(1.02)}.gallery-card.reorder-drop-target:before{background:rgba(59,130,246,.1);content:"";inset:0;pointer-events:none;position:absolute;z-index:1}.album-reorder-hint{align-items:center;background:var(--color-info-bg,#eff6ff);border:1px solid var(--color-info-border,#bfdbfe);border-radius:.5rem;color:var(--color-info-text,#1e40af);display:flex;font-size:.875rem;gap:.5rem;margin-bottom:1rem;padding:.5rem 1rem}.album-reorder-hint svg{flex-shrink:0;height:16px;width:16px}