/* Album components shared by the public gallery and its admin screens. */
.ga-heading{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;margin-bottom:1.75rem}
.ga-heading .page-title{margin-bottom:.4rem}.ga-muted{color:#64748b;font-size:.9rem;line-height:1.6}.ga-actions{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap}.ga-actions form{margin:0}
.ga-button{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:44px;padding:.65rem 1rem;background:#4f46e5;border:1px solid transparent;border-radius:10px;color:#fff;font:500 .9rem 'Kanit',sans-serif;text-decoration:none;cursor:pointer;transition:background .2s}
.ga-button:hover{background:#4338ca;color:#fff}.ga-secondary{background:#f1f5f9;color:#334155;border-color:#e2e8f0}.ga-secondary:hover{background:#e2e8f0;color:#0f172a}.ga-danger{background:#fff1f2;color:#be123c;border-color:#fecdd3}.ga-danger:hover{background:#ffe4e6;color:#9f1239}
.ga-back{display:block;color:#0369a1;margin-bottom:.6rem;font-size:.9rem;min-height:30px}.ga-album-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem}
.ga-album-card,.ga-photo-card{min-width:0;overflow:hidden;display:flex;flex-direction:column;background:#fff;border:1px solid #e2e8f0;border-radius:18px;box-shadow:0 10px 30px rgba(15,23,42,.05)}
.ga-cover{display:block;aspect-ratio:16/9;position:relative;background:#edf2f7;overflow:hidden}.ga-cover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s}.ga-cover:hover img{transform:scale(1.04)}
.ga-placeholder{display:flex;width:100%;height:100%;align-items:center;justify-content:center;flex-direction:column;gap:.5rem;color:#64748b}.ga-placeholder i{font-size:2rem}.ga-card-body{padding:1.25rem;display:flex;flex-direction:column;flex:1;min-width:0;gap:.65rem}.ga-card-body h2{font-size:1.15rem;line-height:1.5;margin:0;overflow-wrap:anywhere}.ga-card-body h2 a{color:#0f172a;text-decoration:none}.ga-card-body h3{font-size:.95rem;line-height:1.5;overflow-wrap:anywhere}.ga-card-actions{margin-top:auto;padding-top:.5rem}
.ga-status{align-self:flex-start;color:#047857;background:#d1fae5;font-size:.78rem;border-radius:100px;padding:.2rem .6rem}.ga-draft{color:#92400e;background:#fef3c7}.ga-photo-count{position:absolute;bottom:.75rem;right:.75rem;color:#fff;background:rgba(15,23,42,.8);border-radius:100px;font-size:.8rem;padding:.35rem .65rem}.ga-card-description{font-size:.9rem;line-height:1.6;color:#64748b;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.ga-album-link{margin-top:auto;display:inline-flex;align-items:center;gap:.4rem;color:#0369a1;font-size:.9rem;min-height:44px}
.ga-empty{padding:3rem 1.5rem;text-align:center;color:#64748b;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:16px}.ga-empty>i{display:block;font-size:3rem;color:#94a3b8;margin-bottom:.8rem}.ga-empty h2,.ga-empty h3{color:#334155;margin-bottom:.5rem}.ga-empty .ga-button{margin-top:1rem}.ga-notice{padding:1rem 1.25rem;color:#065f46;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:12px;margin-bottom:1.5rem}.ga-error{color:#9f1239;background:#fff1f2;border-color:#fecdd3}
.ga-panel{background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:1.5rem}.ga-form{display:flex;flex-direction:column;gap:1.25rem;max-width:1000px}.ga-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}.ga-form label{display:block;font-weight:500;margin-bottom:.5rem}.ga-form input:not([type=hidden]),.ga-form select,.ga-form textarea{display:block;width:100%;max-width:100%;font:inherit;padding:.7rem .8rem;border:1px solid #cbd5e1;border-radius:9px;background:#fff;color:#0f172a}.ga-form small{display:block;color:#64748b;line-height:1.6;margin-top:.4rem}.ga-form textarea{resize:vertical}.ga-upload{padding:1.25rem;border:1px dashed #93c5fd;border-radius:12px;background:#f8fbff}.ga-upload-preview{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}.ga-upload-preview img{width:100px;height:100px;border-radius:8px;object-fit:cover}.ga-edit-preview{display:block;max-height:360px;max-width:100%;object-fit:contain;align-self:flex-start;border-radius:12px}.ga-photo-heading{margin-top:2.5rem}.ga-photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}.ga-photo-card>a{aspect-ratio:4/3;display:block;overflow:hidden}.ga-photo-card img{display:block;width:100%;height:100%;object-fit:cover}.ga-pagination{display:flex;justify-content:center;align-items:center;gap:1rem;margin-top:2rem}
.ga-public-hero{padding:3rem 0;background:linear-gradient(135deg,#eff6ff,#f0fdfa);border-bottom:1px solid #e2e8f0}.ga-public-hero h1{font-size:clamp(1.8rem,4vw,2.8rem);line-height:1.35;color:#0f172a;margin:.5rem 0 1rem;overflow-wrap:anywhere}.ga-public-hero p{color:#475569;line-height:1.75}.ga-description{max-width:850px;white-space:normal;overflow-wrap:anywhere;margin-top:.7rem}.ga-public-photos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem}.ga-public-photo{min-width:0;margin:0;overflow:hidden;border:1px solid #e2e8f0;background:#fff;border-radius:14px}.ga-public-photo>a{display:block;aspect-ratio:4/3;position:relative;overflow:hidden}.ga-public-photo img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .3s}.ga-public-photo>a:hover img{transform:scale(1.04)}.ga-zoom{position:absolute;right:.75rem;bottom:.75rem;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:rgba(15,23,42,.7);color:#fff}.ga-public-photo figcaption{padding:.9rem 1rem;font-size:.9rem;line-height:1.6;color:#334155;overflow-wrap:anywhere}
.ga-public a:focus-visible,.ga-public button:focus-visible,.ga-button:focus-visible,.ga-form input:focus-visible,.ga-form select:focus-visible,.ga-form textarea:focus-visible{outline:3px solid #0284c7;outline-offset:3px}
@media(max-width:1199px){.ga-album-grid,.ga-public-photos{grid-template-columns:repeat(2,minmax(0,1fr))}.ga-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:767px){.ga-album-grid,.ga-public-photos,.ga-form-grid{grid-template-columns:minmax(0,1fr)}.ga-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ga-panel{padding:1rem}.ga-public-hero{padding:2rem 0}.ga-heading{gap:1rem}.ga-upload{padding:1rem}.ga-pagination{gap:.6rem;flex-wrap:wrap}}
@media(max-width:420px){.ga-photo-grid{grid-template-columns:minmax(0,1fr)}}
@media(prefers-reduced-motion:reduce){.ga-cover img,.ga-public-photo img{transition:none}.ga-cover:hover img,.ga-public-photo>a:hover img{transform:none}}
