/* hiro-loading.css — ローディング画面（扉が開いて、中へ入っていく）
   位置・倍率は管理メニュー「ローディング画面」の設定が、<head> の中に --ld-* として出力されます（無いときは下の初期値） */
.ld{display:none}
html.is-loading{overflow:hidden}
html.is-loading .ld{display:block;position:fixed;inset:0;z-index:99999;background:#fff;overflow:hidden;transition:opacity .9s ease}
.ld__stage{position:absolute;left:50%;top:50%;width:max(100vw,calc(100vh * var(--ld-w,1408) / var(--ld-h,768)));aspect-ratio:var(--ld-w,1408)/var(--ld-h,768);transform:translate(-50%,-50%)}
.ld__zoom{position:absolute;inset:0;transform-origin:var(--ld-zx,50.9%) var(--ld-zy,53.9%);transform:scale(1);transition:transform 1.9s cubic-bezier(.55,.05,.75,.4)}
.ld__base{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;max-width:none}
.ld__doorway{position:absolute;left:var(--ld-dx,43.75%);top:var(--ld-dy,27.2%);width:var(--ld-dw,14.35%);height:var(--ld-dh,53.4%);perspective:900px}
.ld__door{position:absolute;inset:0;transform-origin:left center;transform:rotateY(0deg);transition:transform 1.5s cubic-bezier(.4,0,.2,1);transform-style:preserve-3d}
.ld__door img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;max-width:none}
.ld__door .is-open{display:none}
.ld.is-open .ld__door .is-close{display:none}
.ld.is-open .ld__door .is-open{display:block}
.ld.is-open .ld__door{transform:rotateY(-80deg)}
.ld__veil{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}
.ld.is-zoom .ld__zoom{transform:scale(var(--ld-scale,9))}
.ld.is-zoom .ld__veil{opacity:1;transition:opacity .9s ease 1.0s}
.ld.is-out{opacity:0;pointer-events:none}
/* サイト本体は、ローディング中は見えない → 白からフェードイン */
html.is-loading #container>:not(#hiro-ld){opacity:0}
html.is-revealing #container>:not(#hiro-ld){animation:hiro-ld-reveal .9s ease both}
@keyframes hiro-ld-reveal{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){
  html.is-loading .ld{display:none}
  html.is-loading #container>:not(#hiro-ld){opacity:1}
}
