/* =========================================================
   ローディング画面（ぬま猫）
   - JSが有効で、そのタブで初めて開いたページだけ表示（2回目以降は出さない）
   - 最長でも約2.5秒で必ず消える（表示速度・SEOへの影響を抑えるため）
   ========================================================= */
.kv-loader{display:none}
html.kv-loading .kv-loader{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;background:radial-gradient(circle at 50% 42%,#123038 0,#071116 52%,#03070c 100%);transition:opacity .6s ease,visibility .6s ease}
html.kv-loading.kv-loaded .kv-loader{opacity:0;visibility:hidden}
html.kv-loading:not(.kv-loaded){overflow:hidden}
.kv-loader__inner{position:relative;display:grid;justify-items:center;gap:22px}
.kv-loader__mark{position:relative;width:132px;height:132px;margin:34px 0 52px}
.kv-loader__mark::before{content:"";position:absolute;inset:-34px;border:1px solid rgba(123,229,233,.22);border-radius:50%;animation:kv-ring 2.4s ease-in-out infinite}
.kv-loader__mark::after{content:"";position:absolute;inset:-34px;border-radius:50%;border-top:1px solid #7be5e9;animation:kv-spin 1.6s linear infinite}
.kv-loader__cat,.kv-loader__dots{position:absolute;inset:0;width:100%;height:100%;filter:drop-shadow(0 0 18px rgba(123,229,233,.35))}
.kv-loader__cat{animation:kv-float 2.4s ease-in-out infinite}
.kv-loader__dots{animation:kv-bubble 1.6s ease-in infinite}
.kv-loader__text{margin:0;font:600 10px/1 "Noto Sans JP",sans-serif;letter-spacing:.42em;color:#7be5e9;text-indent:.42em}
.kv-loader__bar{width:120px;height:1px;background:rgba(123,229,233,.15);overflow:hidden}
.kv-loader__bar i{display:block;width:40%;height:100%;background:linear-gradient(90deg,transparent,#7be5e9,#a4e0bd);animation:kv-bar 1.2s ease-in-out infinite}
@keyframes kv-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes kv-bubble{0%{transform:translateY(0);opacity:1}70%{opacity:.9}100%{transform:translateY(-18px);opacity:0}}
@keyframes kv-ring{0%,100%{transform:scale(.96);opacity:.5}50%{transform:scale(1.04);opacity:1}}
@keyframes kv-spin{to{transform:rotate(360deg)}}
@keyframes kv-bar{0%{transform:translateX(-100%)}100%{transform:translateX(260%)}}
@media (prefers-reduced-motion:reduce){.kv-loader__cat,.kv-loader__dots,.kv-loader__mark::before,.kv-loader__mark::after,.kv-loader__bar i{animation:none}}
