/* サイト共通ローディングアニメーション（スピードメーター） */
#yakuji-loader{position:fixed;inset:0;z-index:9999;background:#FAFAF8;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2em;transition:opacity .45s ease;animation:yakujiLoaderFailsafe .45s ease 4.5s forwards}
#yakuji-loader.is-done{opacity:0;pointer-events:none}
/* JSが動かない環境でもページが隠れたままにならないフェイルセーフ */
@keyframes yakujiLoaderFailsafe{to{opacity:0;visibility:hidden;pointer-events:none}}
@media (prefers-reduced-motion:reduce){#yakuji-loader{display:none}}

.speedo{width:220px;height:220px;position:relative;animation:speedoIn .4s cubic-bezier(.16,1,.3,1) both}
.speedo svg{width:100%;height:100%}
@keyframes speedoIn{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}

#arc-bg{stroke-dasharray:565;stroke-dashoffset:0}
#arc-fill{stroke-dasharray:565;stroke-dashoffset:565;animation:arcFill .6s cubic-bezier(.4,0,.2,1) .1s forwards}
@keyframes arcFill{0%{stroke-dashoffset:565}60%{stroke-dashoffset:30}80%{stroke-dashoffset:80}100%{stroke-dashoffset:45}}

#arc-red{stroke-dasharray:130;stroke-dashoffset:130;animation:arcRed .25s ease .55s forwards}
@keyframes arcRed{to{stroke-dashoffset:0}}

#needle{transform-origin:110px 155px;transform:rotate(-125deg);animation:needleSpin 1.1s cubic-bezier(.22,1,.36,1) .05s forwards}
@keyframes needleSpin{0%{transform:rotate(-125deg)}40%{transform:rotate(75deg)}58%{transform:rotate(65deg)}72%{transform:rotate(70deg)}85%{transform:rotate(55deg)}100%{transform:rotate(60deg)}}

#needle-glow{transform-origin:110px 155px;transform:rotate(-125deg);opacity:0;animation:needleSpin 1.1s cubic-bezier(.22,1,.36,1) .05s forwards,needleGlow .3s ease .35s both}
@keyframes needleGlow{0%{opacity:0}50%{opacity:1}100%{opacity:0}}

.rz{animation:rzFlash .15s ease .4s both}
@keyframes rzFlash{0%{opacity:0}60%{opacity:1}100%{opacity:.45}}

.sline{stroke-dasharray:30;stroke-dashoffset:30;animation:slineIn .2s ease both}
.sline:nth-child(1){animation-delay:.38s}
.sline:nth-child(2){animation-delay:.42s}
.sline:nth-child(3){animation-delay:.36s}
.sline:nth-child(4){animation-delay:.44s}
@keyframes slineIn{to{stroke-dashoffset:0;opacity:0}}

.loader-word{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:.95rem;letter-spacing:.5em;color:#999;opacity:0;animation:wordIn .5s ease .7s forwards}
@keyframes wordIn{from{opacity:0;letter-spacing:.8em}to{opacity:1;letter-spacing:.5em}}

.loader-bar{width:120px;height:1px;background:#ddd;overflow:hidden;position:relative}
.loader-bar::after{content:"";position:absolute;left:-100%;top:0;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(192,54,42,.7),transparent);animation:barSweep .6s ease .1s forwards}
.loader-bar::before{content:"";position:absolute;left:-100%;top:0;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(192,54,42,.4),transparent);animation:barSweep .35s ease .75s forwards}
@keyframes barSweep{from{left:-100%}to{left:100%}}

.pulse-ring{position:absolute;inset:0;border-radius:50%;border:1px solid rgba(192,54,42,0);animation:pulseRing .4s ease .38s forwards}
@keyframes pulseRing{0%{transform:scale(.85);border-color:rgba(192,54,42,.6)}100%{transform:scale(1.15);border-color:rgba(192,54,42,0)}}
