.gallery-wrapper{max-width:1200px;margin:80px auto;padding:0 20px;display:flex;flex-direction:column;gap:40px;box-sizing:border-box}.gallery-group{width:100%}.gallery-item{position:relative;overflow:hidden}.gallery-item img{width:100%;height:100%;object-fit:cover;border-radius:12px;display:block;box-shadow:0 4px 10px rgba(0,0,0,.08);transition:transform .3s ease;aspect-ratio:1/1;cursor:pointer}.gallery-group.group1{display:grid;grid-template-columns:1fr}.gallery-group.group1 .item-1{grid-column:1/-1}.gallery-group.group1 .item-1 img{aspect-ratio:3/1;height:auto}.gallery-group.group2{display:grid;grid-template-columns:1fr 1fr;grid-gap:24px;gap:24px}.gallery-group.group2 img{aspect-ratio:1/1;height:auto}.gallery-group.group3a{display:grid;grid-template-columns:1fr 1fr;grid-gap:24px;gap:24px}.gallery-group.group3a .item-1{grid-column:1/-1}.gallery-group.group3a .item-1 img{aspect-ratio:3/1;height:auto}.gallery-group.group3a .item-2 img,.gallery-group.group3a .item-3 img{aspect-ratio:1/1;height:auto}.gallery-group.group3b{display:grid;grid-template-columns:1fr 1fr;grid-gap:24px;gap:24px}.gallery-group.group3b .item-1{grid-column:1/-1;grid-row:2}.gallery-group.group3b .item-2{grid-column:1/2;grid-row:1}.gallery-group.group3b .item-3{grid-column:2/3;grid-row:1}.gallery-group.group3b .item-1 img{aspect-ratio:3/1;height:auto}.gallery-group.group3b .item-2 img,.gallery-group.group3b .item-3 img{aspect-ratio:1/1;height:auto}.gallery-group.group4a{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:150px;grid-gap:24px;gap:24px;min-height:300px}.gallery-group.group4a .item-1{grid-column:1;grid-row:span 2}.gallery-group.group4a .item-2{grid-column:2/span 2;grid-row:span 3}.gallery-group.group4a .item-3{grid-column:1;grid-row:span 3}.gallery-group.group4a .item-4{grid-column:2/span 2;grid-row:span 2}.gallery-group.group4b{display:grid;grid-template-columns:1fr 1fr 1fr;grid-auto-rows:150px;grid-gap:16px;gap:16px;min-height:300px}.gallery-group.group4b .item-1{grid-column:1/span 2;grid-row:span 2}.gallery-group.group4b .item-2{grid-column:3;grid-row:span 3}.gallery-group.group4b .item-3{grid-column:1/span 2;grid-row:span 3}.gallery-group.group4b .item-4{grid-column:3;grid-row:span 2}.gallery-modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:999999;padding:20px}.gallery-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.85);z-index:-1}.gallery-modal img{max-width:900px;max-height:auto;width:90%;height:90%;border-radius:12px;object-fit:contain;animation:modalimage .3s ease}@keyframes modalimage{0%{transform:scale(.6)}to{transform:scale(1)}}.gallery-loader{display:flex;justify-content:center;align-items:center;min-height:30vh}.gallery-loader .spinner{width:80px;height:80px;border:6px solid #eee;border-top-color:#ca3d7c;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@media (max-width:768px){.gallery-wrapper{padding:0 16px;margin:40px auto;gap:32px}.gallery-group.group2,.gallery-group.group3a,.gallery-group.group3b{gap:16px}.gallery-group.group4a,.gallery-group.group4b{grid-template-columns:1fr 1fr;gap:12px;grid-auto-rows:120px;min-height:unset}.gallery-group.group4a .item-1{grid-column:1;grid-row:span 2}.gallery-group.group4a .item-2{grid-column:2;grid-row:span 3}.gallery-group.group4a .item-3{grid-column:1;grid-row:span 3}.gallery-group.group4a .item-4{grid-column:2;grid-row:span 2}.gallery-group.group4b .item-1{grid-column:1;grid-row:span 2}.gallery-group.group4b .item-2{grid-column:2;grid-row:span 3}.gallery-group.group4b .item-3{grid-column:1;grid-row:span 3}.gallery-group.group4b .item-4{grid-column:2;grid-row:span 2}.gallery-modal img{max-width:100%;max-height:80vh;width:100%;height:auto}}@media (max-width:500px){.gallery-wrapper{padding:0 12px;margin:32px auto;gap:24px}.gallery-group.group2,.gallery-group.group3a,.gallery-group.group3b{gap:12px}.gallery-group.group4a,.gallery-group.group4b{gap:10px;grid-auto-rows:100px}.gallery-item img{border-radius:8px;box-shadow:0 2px 6px rgba(0,0,0,.06)}.gallery-modal{padding:12px}.gallery-modal img{max-width:100%;max-height:70vh;border-radius:10px}}