.gallery-container{width:100%;max-width:100%;margin:0 auto;padding:1.5rem 2rem}@media (max-width:768px){.gallery-container{padding:1rem}}.gallery-header{margin-bottom:2rem}.gallery-header-content{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem;display:flex}@media (max-width:768px){.gallery-header-content{flex-direction:column;align-items:center}}.gallery-header-text{text-align:center;flex:1}@media (max-width:768px){.gallery-header-text{width:100%}}.gallery-header-text h2{color:#0070f3;margin-bottom:.5rem;font-size:2rem;font-weight:700}.gallery-header-text .gallery-description{color:#666;font-size:1rem}@media (prefers-color-scheme:dark){.gallery-header-text .gallery-description{color:#999}}.gallery-selectors{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}@media (max-width:768px){.gallery-selectors{justify-content:center}}.overlay-toggle-button{color:#0070f3;cursor:pointer;white-space:nowrap;background:#fff;border:2px solid #0070f3;border-radius:8px;align-items:center;gap:.25rem;padding:.5rem 1rem;font-size:.875rem;font-weight:600;transition:all .2s;display:flex}@media (prefers-color-scheme:dark){.overlay-toggle-button{color:#79c0ff;background:#1a1a1a;border-color:#79c0ff}}.overlay-toggle-button:hover{color:#fff;background:#0070f3}@media (prefers-color-scheme:dark){.overlay-toggle-button:hover{color:#0d1117;background:#79c0ff}}.overlay-toggle-button:active{transform:scale(.98)}@media (max-width:480px){.overlay-toggle-button{padding:.25rem .5rem;font-size:.875rem}}.loading{text-align:center;color:#0070f3;padding:3rem;font-size:1.25rem}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;margin-bottom:2rem;display:grid}@media (max-width:1024px){.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}@media (max-width:768px){.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.5rem}}@media (max-width:480px){.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.5rem}}.gallery-item{cursor:pointer;background:#f5f5f5;border-radius:12px;transition:transform .3s,box-shadow .3s;position:relative;overflow:hidden}@media (prefers-color-scheme:dark){.gallery-item{background:#1a1a1a}}.gallery-item:hover{transform:translateY(-4px);box-shadow:0 10px 15px #0000001a}.gallery-item:hover .image-overlay{opacity:1}.gallery-item:hover .gallery-image{transform:scale(1.05)}.image-wrapper{aspect-ratio:4/3;width:100%;position:relative;overflow:hidden}.gallery-image{object-fit:cover;width:100%;height:100%;transition:transform .3s}.image-overlay{color:#fff;opacity:0;z-index:2;pointer-events:none;background:linear-gradient(#0000,#000c);padding:1.5rem;transition:opacity .3s;position:absolute;bottom:0;left:0;right:0}.image-overlay h3{color:#fff;margin-bottom:.25rem;font-size:1.25rem;font-weight:600}.image-overlay p{opacity:.9;color:#fff;font-size:.875rem}.modal-overlay{z-index:1000;background:#000000e6;justify-content:center;align-items:center;padding:1.5rem;animation:.2s fadeIn;display:flex;position:fixed;inset:0}@media (max-width:768px){.modal-overlay{padding:1rem}}.modal-content{background:#fff;border-radius:12px;max-width:1200px;max-height:90vh;animation:.3s slideUp;position:relative;overflow:hidden;box-shadow:0 20px 60px #00000080}@media (prefers-color-scheme:dark){.modal-content{background:#1a1a1a}}@media (max-width:768px){.modal-content{max-width:95vw;max-height:85vh}}.modal-close{color:#fff;cursor:pointer;z-index:10;background:#000000b3;border:none;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:24px;transition:background .2s,transform .2s;display:flex;position:absolute;top:1rem;right:1rem}.modal-close:hover{background:#000000e6;transform:scale(1.1)}.modal-close:active{transform:scale(.95)}.modal-nav{color:#fff;cursor:pointer;z-index:10;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000b3;border:none;border-radius:50%;justify-content:center;align-items:center;width:50px;height:50px;font-size:36px;line-height:1;transition:all .2s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}@media (max-width:768px){.modal-nav{width:44px;height:44px;font-size:30px}}@media (max-width:480px){.modal-nav{width:40px;height:40px;font-size:26px}}.modal-nav:hover{background:#000000e6;transform:translateY(-50%)scale(1.1)}.modal-nav:active{transform:translateY(-50%)scale(.95)}.modal-nav.modal-nav-prev{left:1rem}@media (max-width:480px){.modal-nav.modal-nav-prev{left:.5rem}}.modal-nav.modal-nav-next{right:1rem}@media (max-width:480px){.modal-nav.modal-nav-next{right:.5rem}}.modal-image-wrapper{background:#000;justify-content:center;align-items:center;width:100%;max-height:70vh;display:flex;position:relative}@media (max-width:768px){.modal-image-wrapper{max-height:60vh}}.modal-image{object-fit:contain;width:100%;height:auto;max-height:70vh}@media (max-width:768px){.modal-image{max-height:60vh}}.modal-info{background:#fff;padding:1.5rem}@media (prefers-color-scheme:dark){.modal-info{background:#1a1a1a}}.modal-title-container{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.modal-title-container h2{color:#333;flex:1;min-width:200px;margin:0;font-size:1.5rem;font-weight:600}@media (prefers-color-scheme:dark){.modal-title-container h2{color:#f0f0f0}}.modal-description-container{align-items:flex-start;gap:1rem;margin-top:1rem;display:flex}.modal-description-container p{color:#666;flex:1;margin:0;font-size:1rem;line-height:1.6}@media (prefers-color-scheme:dark){.modal-description-container p{color:#999}}.speak-button{color:#fff;cursor:pointer;background:#0070f3;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;font-size:24px;transition:all .2s;display:flex}.speak-button:hover{background:#0058c0;transform:scale(1.05)}.speak-button:active{transform:scale(.95)}.speak-button.speaking{background:#ff4081;animation:1.5s ease-in-out infinite pulse}.speak-button.speak-button-small{width:40px;height:40px;font-size:20px}@media (max-width:480px){.speak-button{width:44px;height:44px;font-size:20px}.speak-button.speak-button-small{width:36px;height:36px;font-size:18px}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.9;transform:scale(1.08)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
