.hero-line {
  font-size: .82em;
  white-space: nowrap;
}

@media (max-width: 620px) {
  .hero-line {
    font-size: .9em;
    white-space: normal;
  }
}

.has-photo {
  background-color: #e6e1d9;
  background-position: center top;
  background-repeat: no-repeat;
  background-size: cover;
}

.has-photo::before,
.has-photo::after {
  display: none;
}

.card-image.has-photo,
.detail-image.has-photo {
  background-position: center 12%;
}

/* 画像は常に3:4を保つ（横長化で顔が切れるのを防ぐ） */
.card-image.has-photo {
  height: auto;
  aspect-ratio: 3 / 4;
}

.catalog {
  max-width: 1480px;
  margin: 0 auto;
}

.view-switcher {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--line);
}

.view-switcher button {
  border: 0;
  background: var(--paper);
  color: var(--muted);
  padding: 13px 8px;
  font-size: 11px;
}

.view-switcher button.active {
  background: var(--ink);
  color: white;
}

.ai-note {
  backdrop-filter: blur(8px);
}

.copy-box-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.copy-box-actions button[data-action="open-chatgpt"] {
  background: white;
  color: var(--ink);
  border: 1px solid var(--line);
}

.notice-section {
  padding: 78px clamp(24px, 7vw, 110px);
  background: var(--cream);
}

.notice-section h2,
.policy-page h1,
.policy-page h2 {
  font-family: "Iowan Old Style", "Yu Mincho", serif;
  font-weight: 500;
}

.notice-section h2 { font-size: clamp(30px, 4vw, 48px); margin: 0 0 18px; }
.notice-section p { max-width: 760px; color: var(--muted); line-height: 1.9; }
.notice-section a { display: inline-block; margin-top: 12px; font-size: 13px; border-bottom: 1px solid var(--ink); }

.site-footer {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 24px;
  padding: 42px clamp(22px, 5vw, 78px);
  background: var(--ink);
  color: #e7eeea;
}

.site-footer .brand-mark { border-color: #e7eeea; }
.site-footer .brand small { color: #aebfbd; }
.footer-links { display: flex; gap: 18px; font-size: 12px; align-items: center; }
.site-footer small { grid-column: 1 / -1; color: #aebfbd; font-size: 10px; letter-spacing: .06em; }

.policy-page { max-width: 900px; padding: 95px clamp(24px, 7vw, 110px); }
.policy-page h1 { font-size: clamp(40px, 5vw, 66px); line-height: 1.2; margin: 0 0 20px; }
.policy-lead { max-width: 700px; color: var(--muted); line-height: 1.9; padding-bottom: 35px; border-bottom: 1px solid var(--line); }
.policy-page section { padding: 30px 0; border-bottom: 1px solid var(--line); }
.policy-page h2 { font-size: 28px; margin: 0 0 12px; }
.policy-page section p { color: var(--muted); line-height: 1.9; margin: 0; }
.policy-page strong { color: var(--rust); }
.policy-date { color: var(--muted); font-size: 12px; margin: 28px 0; }

.contact-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 16px !important;
}
.contact-buttons .light-button {
  background: var(--ink);
  color: white;
  justify-content: center;
  gap: 0;
  min-width: 0;
}

@media (max-width: 620px) {
  .site-footer { grid-template-columns: 1fr; padding: 34px 20px; }
  .footer-links { flex-wrap: wrap; gap: 12px; }
  .notice-section { padding: 60px 20px; }
  .policy-page { padding: 60px 20px; }
}
