:root{--motion-ink:#151b21;--motion-paper:#f7f5f1;--motion-blue:#3657ff}

.page-loader,.page-curtain{position:fixed;inset:0;pointer-events:none}
.page-loader{z-index:1000;display:none;place-items:center;background:var(--motion-paper);visibility:hidden;opacity:0;transition:opacity .42s ease,visibility 0s linear .42s}
.js .page-loader{display:grid}
.is-loading .page-loader{visibility:visible;opacity:1;transition:none}
.loader-mark{display:grid;justify-items:center;gap:9px;transform:translateY(0);transition:transform .65s cubic-bezier(.2,.8,.2,1),opacity .35s ease}
.page-ready .loader-mark{transform:translateY(-12px);opacity:0}
.loader-mark__latin{padding-left:.34em;color:var(--motion-ink);font:600 clamp(27px,3vw,40px)/1 Sora,ui-sans-serif,sans-serif;letter-spacing:.34em}
.loader-mark__rule{position:relative;width:58px;height:2px;overflow:hidden;background:rgba(21,27,33,.12)}
.loader-mark__rule::after{content:"";position:absolute;inset:0;background:var(--motion-blue);animation:loader-line 1.05s cubic-bezier(.7,0,.3,1) infinite}
.loader-mark__jp{padding-left:.5em;color:var(--motion-ink);font:500 12px/1 "Noto Sans JP",sans-serif;letter-spacing:.5em}
.loader-mark__status{margin-top:20px;color:rgba(21,27,33,.48);font:600 8px/1 Sora,ui-sans-serif,sans-serif;letter-spacing:.2em;text-transform:uppercase}
@keyframes loader-line{0%{transform:translateX(-105%)}48%,56%{transform:translateX(0)}100%{transform:translateX(105%)}}

.page-curtain{z-index:1100;visibility:hidden;opacity:1;background:var(--motion-ink);transform:translateY(101%);transition:transform .3s cubic-bezier(.76,0,.24,1),visibility 0s linear .3s;will-change:transform,opacity}
.page-curtain::before{content:"";position:absolute;top:0;right:0;left:0;height:2px;background:var(--motion-blue)}
.page-leaving .page-curtain{visibility:visible;opacity:1;transform:translateY(0);transition:transform .3s cubic-bezier(.76,0,.24,1)}
.transition-arrival .page-loader,.page-arrived .page-loader{display:none}
.transition-arrival .page-curtain{visibility:visible;opacity:1;transform:translateY(0);transition:none}
.page-arrived .page-curtain{visibility:hidden;opacity:0;transform:translateY(0);transition:opacity .22s ease,visibility 0s linear .22s}
.curtain-reset .page-curtain{visibility:hidden;opacity:1;transform:translateY(101%);transition:none}

::view-transition-old(root),::view-transition-new(root){animation:none!important;mix-blend-mode:normal}

.js [data-reveal]{opacity:0;transform:translateY(34px);transition:opacity .72s ease,transform .85s cubic-bezier(.2,.8,.2,1);transition-delay:var(--reveal-delay,0ms)}
.js [data-reveal="fade"]{transform:none}
.js [data-reveal="left"]{transform:translateX(-38px)}
.js [data-reveal="right"]{transform:translateX(38px)}
.js [data-reveal].is-revealed{opacity:1;transform:none}
.js .hero-device[data-reveal]{transform:translate(-50%,34px)}
.js .hero-device[data-reveal].is-revealed{transform:translateX(-50%)}
.js.is-loading [data-reveal]{transition:none}
.site-header{transition:opacity .6s ease,transform .75s cubic-bezier(.2,.8,.2,1)}
.js.is-loading .site-header{opacity:0;transform:translateY(-18px)}
.page-ready .site-header{opacity:1;transform:none}
.is-targeted{animation:section-pulse .75s cubic-bezier(.2,.8,.2,1)}
@keyframes section-pulse{0%{filter:brightness(1)}42%{filter:brightness(1.055)}100%{filter:brightness(1)}}

@media(max-width:620px){.loader-mark__latin{font-size:27px}}
@media(prefers-reduced-motion:reduce){
  .page-loader,.page-curtain{transition:none}.loader-mark,.site-header,.js [data-reveal]{transition:none!important;animation:none!important}
  .page-leaving .page-curtain,.transition-arrival .page-curtain,.page-arrived .page-curtain{visibility:hidden;transform:none}
  .js [data-reveal]{opacity:1;transform:none}
}
