/* 取扱店。色・書体は各ページで --osw-* を上書きする */
.osw{--osw-ink:#000;--osw-mute:#686d75;--osw-line:#b9bec6;--osw-bg:#eef0f2;--osw-accent:#000;--osw-jp:inherit;--osw-en:inherit;--osw-name-size:clamp(22px,2.9vw,44px);--osw-name-weight:300;color:var(--osw-ink);position:relative}

/* 索引 */
.osw-index{list-style:none;border-top:1px solid var(--osw-line)}
.osw-v{border-bottom:1px solid var(--osw-line)}
.osw-hit{all:unset;box-sizing:border-box;width:100%;display:grid;grid-template-columns:9em 1fr auto;align-items:baseline;gap:clamp(12px,3vw,40px);padding:clamp(20px,2.6vw,34px) 0;cursor:pointer;transition:padding .5s cubic-bezier(.2,.8,.2,1),color .4s}
.osw-hit:focus-visible{outline:2px solid var(--osw-ink);outline-offset:4px}
.osw-kind{font-size:12px;letter-spacing:.14em;color:var(--osw-mute)}
.osw-name{font-family:var(--osw-jp);font-weight:var(--osw-name-weight);font-size:var(--osw-name-size);line-height:1.2;letter-spacing:.04em}
.osw-area{font-size:13px;letter-spacing:.1em;color:var(--osw-mute)}
.osw-name{transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.osw-index:hover .osw-hit{color:var(--osw-mute)}
.osw-index .osw-v:hover .osw-hit,.osw-v.open .osw-hit{color:var(--osw-ink)}
.osw-index .osw-v:hover .osw-name,.osw-v.open .osw-name{transform:translateX(clamp(8px,1.6vw,24px))}
.osw-more{display:grid;grid-template-rows:0fr;transition:grid-template-rows .55s cubic-bezier(.2,.8,.2,1)}
.osw-v.open .osw-more{grid-template-rows:1fr}
.osw-in{overflow:hidden;min-height:0;display:flex;flex-direction:column}
.osw-ph{position:relative;margin:0;width:min(100%,720px);height:clamp(220px,34vw,360px);border-radius:3px;overflow:hidden}
.osw-ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .8s,transform 5s cubic-bezier(.2,.6,.2,1)}
.osw-ph img+img{opacity:0}
.osw-ph:hover img{transform:scale(1.05)}
.osw-ph:hover img+img{opacity:1}
.osw-more p{font-size:13px;line-height:1.8;color:var(--osw-mute);padding-top:14px}
.osw-en{display:block;font-family:var(--osw-en);font-size:15px;letter-spacing:.06em;color:var(--osw-ink)}
.osw-more a{align-self:flex-start;font-size:12.5px;color:var(--osw-ink);text-underline-offset:4px;padding:8px 0 26px}

/* レンズ: 箱の O。施設の写真が円の中に浮かぶ */
.osw-lens{position:fixed;left:0;top:0;z-index:60;width:280px;height:280px;border-radius:50%;pointer-events:none;opacity:0;transition:opacity .35s;will-change:transform}
.osw-lens.on{opacity:1}
.osw-lensph{position:absolute;inset:0;border-radius:50%;overflow:hidden;box-shadow:0 0 0 10px var(--osw-accent);background:var(--osw-bg)}
.osw-lensph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.osw-lensph img+img{opacity:0;animation:osw-ph 4s 1.2s ease-in-out infinite alternate}
@keyframes osw-ph{0%,30%{opacity:0}70%,100%{opacity:1}}
.osw-lenslabel{position:absolute;left:50%;bottom:-40px;transform:translateX(-50%);white-space:nowrap;font-family:var(--osw-en);font-size:12px;letter-spacing:.1em;color:var(--osw-ink)}

/* すべての取扱店 */
.osw-all{margin-top:clamp(40px,5vw,72px)}
.osw-all summary{list-style:none;display:inline-flex;align-items:center;gap:14px;cursor:pointer;font-size:14px;letter-spacing:.1em;padding:12px 0}
.osw-all summary::-webkit-details-marker{display:none}
.osw-all summary:focus-visible{outline:2px solid var(--osw-ink);outline-offset:4px}
.osw-count{font-family:var(--osw-en);font-size:12px;color:var(--osw-mute)}
.osw-all summary i{width:14px;height:14px;position:relative}
.osw-all summary i::before,.osw-all summary i::after{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:currentColor;transition:transform .4s}
.osw-all summary i::after{transform:rotate(90deg)}
.osw-all[open] summary i::after{transform:rotate(0)}
.osw-regions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px clamp(24px,4vw,56px);padding-top:24px}
.osw-region h4{font-weight:500;font-size:13px;letter-spacing:.14em;padding:14px 0 6px;border-top:1px solid var(--osw-line)}
.osw-region ul{list-style:none}
.osw-region li{padding:5px 0;font-size:13px;line-height:1.55}
.osw-region a{color:var(--osw-ink);text-decoration:none}
.osw-region a:hover{text-decoration:underline;text-underline-offset:4px}
.osw-region small{display:block;font-size:11px;color:var(--osw-mute)}
.osw-fine{margin-top:24px;font-size:12px;color:var(--osw-mute)}

@media (max-width:860px){
  .osw-hit{grid-template-columns:1fr auto;gap:4px 12px}
  .osw-kind{grid-column:1/-1}
  .osw-regions{grid-template-columns:1fr}
}
@media (pointer:coarse){.osw-lens{display:none}}
@media (prefers-reduced-motion:reduce){.osw-more,.osw-hit{transition:none}.osw-lensph img+img{animation:none}}
