.omamori-shell { max-width: 1180px; }
.omamori-shell .article-hero h1 { max-width: 100%; font-size: clamp(1.85rem, 3.1vw, 2.85rem); line-height: 1.3; }
.omamori-shell .article-hero .lead { max-width: 78ch; }
.omamori-shell [hidden] { display: none !important; }
.omamori-shell :is(a, button, select, summary, [tabindex]):focus-visible { outline: 3px solid #975b08; outline-offset: 4px; }
.omamori-shell :is(h2, h3, .omamori-card) { scroll-margin-top: 150px; }
.omamori-shell h2 { font-size: clamp(1.45rem, 3vw, 1.9rem); }
.omamori-shell a { color: #124f55; text-underline-offset: 3px; }
.omamori-total { font-weight: 700; color: #155e63; }
.omamori-index { margin: 28px 0 38px; padding: clamp(16px, 3vw, 28px); border: 1px solid #a8c7c0; border-radius: 18px; background: #eff7f5; }
.omamori-index > h2 { margin-top: 0; }
.omamori-destinations { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.omamori-destination-link { display: flex; flex-direction: column; gap: 7px; min-width: 0; padding: 16px; background: #fff; border: 1px solid #9dbdb6; border-radius: 12px; text-decoration: none; overflow-wrap: anywhere; }
.omamori-destination-link strong { font-size: 1.3rem; text-decoration: underline; text-underline-offset: 4px; }
.omamori-destination-link:is(:hover, [aria-current]) { border-color: #155e63; background: #deeeea; box-shadow: inset 0 0 0 1px #155e63; }
.omamori-destination-count, .omamori-destination-coverage { color: #48636a; font-size: 0.76rem; line-height: 1.5; }
.omamori-destination-preview { font-size: 0.85rem; line-height: 1.55; }
.omamori-region-picker { margin-top: 16px; }
.omamori-region-picker > summary { cursor: pointer; padding: 12px 0; min-height: 44px; font-weight: 700; }
.omamori-regions { display: flex; flex-wrap: wrap; gap: 8px; }
.omamori-regions a { padding: 10px 15px; min-height: 44px; border: 1px solid #9dbdb6; border-radius: 9px; background: #fff; font-weight: 700; }
.omamori-filters { display: grid; grid-template-columns: 1.5fr 1fr 1fr auto; align-items: end; gap: 14px; margin-top: 22px; }
.omamori-filters > div { min-width: 0; }
.omamori-filters label { display: block; margin-bottom: 7px; font-weight: 700; }
.omamori-filters select, .omamori-filters button { width: 100%; min-height: 46px; padding: 10px 12px; border: 1px solid #789c99; border-radius: 8px; background: #fff; color: #163f44; font: inherit; }
.omamori-filters button { cursor: pointer; }
.omamori-index p { line-height: 1.65; font-size: 0.9rem; }
.omamori-stock { border-left: 3px solid #967347; padding-left: 12px; }
.omamori-region { margin: 40px 0 52px; }
.omamori-region > h2 { display: flex; gap: 16px; flex-wrap: wrap; align-items: baseline; padding-bottom: 14px; border-bottom: 2px solid #8dafaa; }
.omamori-region > h2 span { font-size: 0.87rem; font-weight: 500; color: #48636a; }
.omamori-city > h3 { display: flex; flex-wrap: wrap; align-items: baseline; gap: 12px; font-size: 1.4rem; margin: 28px 0 12px; }
.omamori-city > h3 span { color: #48636a; font-size: 0.85rem; font-weight: 500; }
.omamori-venue { margin: 26px 0; padding: clamp(16px, 3vw, 28px); border: 1px solid #bfd4cf; border-radius: 18px; background: #fff; overflow-wrap: anywhere; }
.omamori-venue header { display: flex; flex-direction: column; gap: 7px; }
.omamori-venue header h4 { margin: 0; font-size: 1.25rem; line-height: 1.4; }
.omamori-visit { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 26px; margin: 18px 0 10px; }
.omamori-visit:empty { display: none; }
.omamori-visit dt { color: #3d5b60; font-size: 0.82rem; font-weight: 700; margin-bottom: 4px; }
.omamori-visit dd { margin: 0; font-size: 0.9rem; line-height: 1.65; font-variant-numeric: tabular-nums; }
.omamori-refs, .omamori-venue-links { font-size: 0.8rem; }
.omamori-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; list-style: none; padding: 0; margin: 18px 0 0; }
.omamori-card { display: flex; align-items: flex-start; flex-direction: column; min-width: 0; padding: 18px; border: 1px solid #cfdfdb; border-top: 3px solid #8dafaa; border-radius: 12px; background: #f8fbfa; }
.omamori-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.omamori-tag, .omamori-kind { font-size: 0.75rem; padding: 3px 7px; border-radius: 5px; color: #285955; background: #e6f0ed; }
.omamori-kind { color: #5a4524; background: #f5ead7; font-weight: 700; }
.omamori-card h5 { font-size: 1.08rem; line-height: 1.5; margin: 10px 0 4px; }
.omamori-card p { margin: 8px 0; font-size: 0.88rem; line-height: 1.65; }
.omamori-card .omamori-japanese { margin: 0 0 6px; color: #48636a; font-size: 0.76rem; }
.omamori-card .omamori-note { background: #fff4e1; color: #5a4524; padding: 10px; border-radius: 6px; font-size: 0.8rem; }
.omamori-card > :nth-last-child(2) { margin-bottom: 16px; }
.omamori-card .omamori-photo-link { align-self: stretch; display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: auto; min-height: 52px; padding: 8px 10px 8px 14px; border: 1px solid #155e63; border-radius: 10px; background: #fff; color: #124f55; font-size: 0.86rem; font-weight: 700; line-height: 1.35; text-decoration: none; }
.omamori-photo-link-text { display: flex; flex-direction: column; min-width: 0; }
.omamori-photo-link-text small { color: #48636a; font-size: 0.72rem; font-weight: 500; overflow-wrap: anywhere; }
.omamori-photo-link-icon { flex: none; display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: #e6f0ed; font-size: 0.9rem; }
.omamori-card .omamori-photo-link:hover { background: #155e63; color: #fff; }
.omamori-card .omamori-photo-link:hover small { color: #e6f0ed; }
.omamori-card .omamori-photo-link:hover .omamori-photo-link-icon { background: rgb(255 255 255 / 18%); }
@media (prefers-reduced-motion: no-preference) {
  .omamori-card .omamori-photo-link { transition: background-color 150ms ease, color 150ms ease; }
}
@media (forced-colors: active) {
  .omamori-card .omamori-photo-link { border-color: LinkText; }
}
.omamori-empty { padding: 22px; border: 1px solid #bfd4cf; background: #fff; border-radius: 12px; }
.omamori-shell .source-box summary { cursor: pointer; padding: 12px 0; }
.omamori-shell .source-box li { font-size: 0.9rem; margin-bottom: 10px; overflow-wrap: anywhere; }
@media (max-width: 900px) {
  .omamori-filters { grid-template-columns: 1fr 1fr; }
  .omamori-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .omamori-destinations { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
  .omamori-destination-link { padding: 12px; }
  .omamori-destination-link strong { font-size: 1.15rem; }
  .omamori-shell :is(h2, h3, .omamori-card) { scroll-margin-top: 20px; }
  .omamori-filters, .omamori-grid, .omamori-visit { grid-template-columns: minmax(0, 1fr); }
  .omamori-regions a { flex-grow: 1; text-align: center; }
  .omamori-venue { padding: 16px; }
}
