.gallery-container{max-width:1200px;min-height:100vh;margin:0 auto;padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.gallery-header{text-align:center;margin-bottom:40px;padding:0 20px}.gallery-header h1{color:#1a1a1a;margin:0 0 8px;font-size:2.5rem;font-weight:700}.gallery-header p{color:#666;margin:0 0 16px;font-size:1.1rem}.gallery-stats{color:#888;font-size:.9rem}.groups-section{margin-top:20px}.groups-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px;padding:0 20px;display:grid}.group-card{cursor:pointer;background:#fff;border:1px solid #f0f0f0;border-radius:12px;transition:all .3s;overflow:hidden;box-shadow:0 2px 8px #00000014}.group-card:hover{transform:translateY(-4px);box-shadow:0 8px 24px #0000001f}.group-preview{background:#f8f9fa;grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr;gap:2px;width:100%;height:200px;display:grid;position:relative;overflow:hidden}.preview-image{background-position:50%;background-repeat:no-repeat;background-size:cover;transition:transform .3s}.preview-1{grid-area:1/1/span 2}.preview-2{grid-area:1/2}.preview-3{grid-area:2/2}.group-card:hover .preview-image{transform:scale(1.05)}.more-images-overlay{color:#fff;background:#000000b3;justify-content:center;align-items:center;font-size:1.5rem;font-weight:600;display:flex;position:absolute;inset:0}.group-info{padding:16px}.group-title{color:#1a1a1a;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 8px;font-size:1.1rem;font-weight:600;line-height:1.4;display:-webkit-box;overflow:hidden}.group-meta{color:#666;justify-content:space-between;align-items:center;font-size:.85rem;display:flex}.image-count{font-weight:500}.upload-date{color:#888}.group-modal{z-index:1000;background:#000000f2;justify-content:center;align-items:center;width:100%;height:100%;padding:20px;display:flex;position:fixed;top:0;left:0}.modal-content{background:#fff;border-radius:12px;flex-direction:column;width:100%;max-width:90vw;height:100%;max-height:90vh;animation:.3s modalAppear;display:flex;position:relative;overflow:hidden}@keyframes modalAppear{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.close-button{color:#fff;cursor:pointer;z-index:1001;background:#000c;border:none;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:background .2s;display:flex;position:absolute;top:16px;right:16px}.close-button:hover{background:#000}.modal-header{background:#fff;border-bottom:1px solid #f0f0f0;padding:20px 24px 16px}.modal-header h2{color:#1a1a1a;margin:0 0 8px;font-size:1.25rem;font-weight:600}.modal-meta{color:#666;gap:16px;font-size:.9rem;display:flex}.modal-image-container{background:#f8f9fa;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative;overflow:hidden}.modal-image{object-fit:contain;max-width:100%;max-height:100%}.nav-button{color:#fff;cursor:pointer;z-index:100;background:#000000b3;border:none;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;transition:all .2s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.nav-button:hover:not(:disabled){background:#000000e6;transform:translateY(-50%)scale(1.05)}.nav-button:disabled{opacity:.3;cursor:not-allowed}.prev-button{left:20px}.next-button{right:20px}.modal-footer{background:#fff;border-top:1px solid #f0f0f0;justify-content:space-between;align-items:center;padding:16px 24px;display:flex}.image-counter{color:#1a1a1a;font-weight:600}.image-info{color:#666;gap:16px;font-size:.85rem;display:flex}.thumbnail-strip{background:#fafafa;border-top:1px solid #f0f0f0;gap:8px;padding:16px 24px;display:flex;overflow-x:auto}.thumbnail{cursor:pointer;border:2px solid #0000;border-radius:6px;flex-shrink:0;width:60px;height:60px;transition:all .2s;overflow:hidden}.thumbnail:hover{transform:scale(1.05)}.thumbnail.active{border-color:#0070f3}.thumbnail img{object-fit:cover;width:100%;height:100%}.gallery-loading{text-align:center;color:#666;padding:80px 20px}.loading-spinner{border:3px solid #f0f0f0;border-top-color:#0070f3;border-radius:50%;width:40px;height:40px;margin:0 auto 16px;animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.gallery-error{text-align:center;padding:80px 20px}.gallery-error h2{color:#d32f2f;margin:0 0 16px}.gallery-error p{color:#666;margin:0 0 24px}.gallery-error button{color:#fff;cursor:pointer;background-color:#0070f3;border:none;border-radius:6px;padding:12px 24px;font-size:.9rem;transition:background-color .2s}.gallery-error button:hover{background-color:#005bbd}.empty-gallery{text-align:center;color:#666;padding:80px 20px}.empty-gallery div{opacity:.5;margin-bottom:16px;font-size:4rem}.empty-gallery h3{color:#1a1a1a;margin:0 0 8px}.empty-gallery p{margin:0}@media (max-width:768px){.gallery-container{padding:16px}.gallery-header h1{font-size:2rem}.groups-grid{grid-template-columns:1fr;gap:16px;padding:0}.group-preview{height:160px}.modal-content{border-radius:8px;max-width:95vw;max-height:95vh}.modal-header{padding:16px 20px 12px}.modal-header h2{font-size:1.1rem}.modal-meta{flex-direction:column;gap:4px}.nav-button{width:40px;height:40px}.prev-button{left:12px}.next-button{right:12px}.modal-footer{flex-direction:column;align-items:flex-start;gap:8px;padding:12px 20px}.thumbnail-strip{padding:12px 20px}.thumbnail{width:50px;height:50px}}@media (max-width:480px){.gallery-header{margin-bottom:24px}.gallery-header h1{font-size:1.75rem}.group-info{padding:12px}.group-title{font-size:1rem}.close-button{width:36px;height:36px;top:12px;right:12px}}
