.gallery-page { width:min(calc(100% - 40px),1080px); margin:0 auto; padding:72px 0 96px; }
.gallery-head { display:flex; justify-content:space-between; gap:20px; align-items:end; margin-bottom:28px; }
.gallery-head a { color:var(--accent-dark); text-decoration:none; }
.gallery-head-actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:14px; }
.gallery-view-toggle { display:inline-flex; gap:4px; padding:4px; border:1px solid var(--line); border-radius:999px; background:rgba(255,255,255,.82); }
.gallery-view-toggle a { padding:6px 12px; border-radius:999px; }
.gallery-view-toggle a[aria-current="page"] { background:var(--accent-dark); color:#fff; }
.gallery-filter-note { display:flex; gap:14px; justify-content:space-between; align-items:center; margin:0 0 22px; padding:10px 14px; border:1px solid var(--line); border-radius:14px; background:rgba(255,255,255,.7); font-size:.9rem; }
.gallery-filter-note a { color:var(--accent-dark); }
.gallery-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; align-items:start; }
.gallery-card-wrap { min-width:0; }
.gallery-card { display:block; overflow:hidden; border:1px solid var(--line); border-radius:22px; background:rgba(255,255,255,.88); text-decoration:none; }
.gallery-card img { width:100%; aspect-ratio:1/1; object-fit:cover; display:block; }
.gallery-card > div { padding:18px 20px 22px; }
.gallery-card h2 { font-size:1.35rem; }
.gallery-series,.gallery-date { margin:8px 0 0; color:var(--muted); font-size:.9rem; }
.gallery-tags { display:flex; flex-wrap:wrap; gap:7px; margin-top:10px; }
.gallery-tag { display:inline-flex; padding:4px 9px; border:1px solid var(--line); border-radius:999px; color:var(--accent-dark); background:rgba(255,255,255,.8); text-decoration:none; font-size:.78rem; line-height:1.4; }
.gallery-detail { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr); gap:42px; align-items:start; }
.gallery-images { display:grid; gap:18px; }
.gallery-images img { width:100%; display:block; border-radius:20px; background:#fff; }
.gallery-copy { position:sticky; top:118px; padding:26px; border:1px solid var(--line); border-radius:22px; background:rgba(255,255,255,.9); }
.gallery-copy h1 { margin-bottom:14px; }
.gallery-copy .gallery-tags { margin:14px 0 18px; }
.gallery-loading,.gallery-error { padding:48px 0; }
.calendar-nav { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:14px; margin:0 0 16px; }
.calendar-nav a { color:var(--accent-dark); text-decoration:none; }
.calendar-nav a:last-child { text-align:right; }
.calendar-nav strong { font-size:1.05rem; }
.gallery-calendar { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:1px; overflow:hidden; border:1px solid var(--line); border-radius:18px; background:var(--line); }
.calendar-weekday { padding:8px 4px; background:rgba(255,255,255,.96); text-align:center; color:var(--muted); font-size:.78rem; font-weight:700; }
.calendar-cell { min-height:128px; padding:8px; background:rgba(255,255,255,.92); }
.calendar-cell.is-empty { background:rgba(247,251,249,.65); }
.calendar-day { display:inline-flex; min-width:26px; height:26px; align-items:center; justify-content:center; margin-bottom:7px; color:var(--text); text-decoration:none; font-size:.8rem; }
.calendar-cell.has-work .calendar-day { border-radius:999px; background:var(--accent-dark); color:#fff; }
.calendar-work { display:grid; gap:5px; color:var(--text); text-decoration:none; font-size:.72rem; line-height:1.35; }
.calendar-work + .calendar-work { margin-top:8px; padding-top:8px; border-top:1px solid var(--line); }
.calendar-work img { width:100%; aspect-ratio:1/1; object-fit:cover; border-radius:8px; display:block; background:#fff; }
@media (max-width:760px) {
  .gallery-grid { grid-template-columns:1fr 1fr; }
  .gallery-detail { grid-template-columns:1fr; }
  .gallery-copy { position:static; }
  .calendar-cell { min-height:92px; padding:5px; }
  .calendar-work span { display:none; }
}
@media (max-width:520px) {
  .gallery-grid { grid-template-columns:1fr; }
  .gallery-head { align-items:flex-start; flex-direction:column; }
  .gallery-head-actions { width:100%; justify-content:space-between; }
  .gallery-calendar { font-size:.82rem; }
  .calendar-cell { min-height:68px; }
  .calendar-day { min-width:22px; height:22px; }
}
