/* Shared readable wrapping. Keep Japanese punctuation with the preceding phrase;
   use emergency word wrapping only when an unbroken word exceeds its container. */
body { overflow-wrap: break-word; word-break: normal; line-break: strict; }
p, dd, li, address, figcaption { text-wrap: pretty; }
h1, h2, h3 { text-wrap: balance; }
.text-unit { display: inline-block; max-width: 100%; vertical-align: baseline; text-indent: 0; }
.inner, .menu-panel, .menu-panel li, .event-details dd, .news-list p,
.stage-times dd, .germany-grid article, .vendor-card, .products li { min-width: 0; }
.shop-link { height: auto; line-height: 1.8; }
.detail-heading small { line-height: 1.65; }
.heading-subtitle { display: block; font-size: .88em; line-height: 1.65; margin-top: .25em; }
.workshop-subtitle { display: block; font-size: .8em; font-weight: 500; line-height: 1.8; }
.workshop-info > div { display: block; margin-top: 5px; }
.workshop-info dt, .workshop-info dd { display: inline; }
.workshop-info dt { white-space: nowrap; }
.workshop-info dd { margin-left: .2em; }
.event-place { display: block; }
@supports (word-break: auto-phrase) {
  p, address, .vendor-card h3, .stage-card h3, .germany-links a,
  .workshop-info dd { word-break: auto-phrase; }
}
@media (max-width: 600px) {
  .stage-card h3 { font-size: clamp(18px, 4.6vw, 20px); line-height: 1.65; }
  .stage-card h3 small { font-size: clamp(14px, 3.8vw, 16px); line-height: 1.7; }
  .stage-card:first-of-type h3 { font-size: clamp(17px, 4.5vw, 20px); }
  .vendor-card h3 { font-size: clamp(18px, 4.6vw, 20px); line-height: 1.65; }
  .vendor-card p, .stage-card > p { line-height: 1.95; }
  .workshop-info { line-height: 1.9; }
  .detail-heading > span { font-size: clamp(30px, 8vw, 36px); }
  .detail-note, .photo-caption { line-height: 1.9; }
  .stage-times > div { grid-template-columns: 60px minmax(0, 1fr); gap: 10px; }
  .stage-times dd { font-size: 16px; }
  .germany-links a { line-height: 1.9; }
}
@media (max-width: 500px) {
  /* Give longer Japanese descriptions a full readable line on a phone. */
  .germany-grid { grid-template-columns: minmax(0, 1fr); gap: 42px; }
  .germany-photo { width: 85%; margin-inline: auto; }
  .germany-grid h3 { font-size: 18px; line-height: 1.7; }
  .germany-grid p { font-size: 14px; line-height: 1.95; }
  .germany-links { font-size: 13px; }
  .news-list li { grid-template-columns: minmax(0, 1fr); gap: 5px; }
  .event-details > div { grid-template-columns: minmax(0, 1fr); gap: 6px; }
  .event-details dt { text-align: left; padding: 0; }
  .event-details dd { font-size: 17px; line-height: 1.85; }
  .event-details small { font-size: 13px; line-height: 1.9; }
  .products ul { display: block; }
  .products li { display: inline; margin-right: .6em; }
  .menu-panel a, .menu-panel .pending { line-height: 1.6; }
  .footer-information nav a { display: inline-block; }
}
