.tim-bokun-gallery {
    position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-template-rows: repeat(2, minmax(0, 1fr)); gap: 8px;
    width: 100%; aspect-ratio: 2.7; margin: 0 0 30px; overflow: hidden;
}
.tim-bokun-gallery-photo { display: block; min-width: 0; min-height: 0; overflow: hidden; }
.tim-bokun-gallery-photo:first-child { grid-column: span 2; grid-row: span 2; }
.tim-bokun-gallery-photo img { display: block; width: 100%; height: 100%; max-width: none; object-fit: cover; transition: filter .2s; }
.tim-bokun-gallery-photo:hover img { filter: brightness(.93); }
.tim-bokun-gallery-photo[hidden] { display: none !important; }
.tim-bokun-gallery--count-1 .tim-bokun-gallery-photo:first-child { grid-column: 1 / -1; }
.tim-bokun-gallery--count-2 .tim-bokun-gallery-photo:nth-child(2) { grid-column: span 2; grid-row: span 2; }
.tim-bokun-gallery--count-3 .tim-bokun-gallery-photo:nth-child(n+2) { grid-row: span 2; }
.tim-bokun-gallery--count-4 .tim-bokun-gallery-photo:nth-child(4) { grid-column: span 2; }
.tim-bokun-gallery .tim-bokun-gallery-all {
    position: absolute; right: 16px; top: 16px; display: block;
    padding: 10px 18px; border: 1px solid #e2e5e9; border-radius: 4px;
    background: #fff; color: #1763a6; font: inherit; font-size: 14px; font-weight: 600;
    line-height: 1.4; text-decoration: none; box-shadow: 0 1px 3px #00000016;
}
.bokuned-single-desc .tim-bokun-activity-title {
    color: #37434d; font-family: inherit; font-size: 28px; line-height: 1.2;
    font-weight: 700; margin: 0 0 22px; padding: 0;
}
.tim-bokun-activity-title::after { content: ""; display: block; width: 40px; height: 5px; margin-top: 12px; border-radius: 2px; background: #1763a6; }
.tim-bokun-photo-dialog {
    position: fixed; inset: 0; width: min(1200px, 96vw); max-width: 96vw;
    height: min(850px, 94vh); max-height: 94vh; padding: 16px;
    border: 0; border-radius: 6px; background: #111; color: #fff; overflow: hidden;
}
.tim-bokun-photo-dialog::backdrop { background: rgba(0,0,0,.85); }
.tim-bokun-photo-dialog .tim-bokun-photo-content { display: flex; height: 100%; flex-direction: column; align-items: center; justify-content: center; gap: 12px; }
.tim-bokun-photo-dialog img { display: block; max-width: 100%; max-height: calc(100% - 96px); object-fit: contain; }
.tim-bokun-photo-dialog .tim-bokun-photo-close,
.tim-bokun-photo-dialog .tim-bokun-photo-nav {
    border: 1px solid #777; border-radius: 4px; padding: 8px 14px;
    background: #222; color: #fff; font: inherit; cursor: pointer;
}
.tim-bokun-photo-dialog .tim-bokun-photo-close { align-self: flex-end; }
.tim-bokun-photo-dialog .tim-bokun-photo-controls { display: flex; align-items: center; gap: 16px; }
.tim-bokun-photo-dialog button:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
.tim-bokun-official-calendar { width: 100%; min-width: 0; }
@media (max-width: 600px) {
    .tim-bokun-gallery { aspect-ratio: 1.55; gap: 4px; }
    .tim-bokun-gallery .tim-bokun-gallery-all { top: 8px; right: 8px; padding: 8px 12px; }
    .bokuned-single-desc .tim-bokun-activity-title { font-size: 24px; }
}
@media (prefers-reduced-motion: reduce) { .tim-bokun-gallery-photo img { transition: none; } }
