/* miraiasu ログインページ専用 CSS（base.css の上に読み込む）
   - 世界観は一覧・出馬表と共通（TUNNEL 背景、黒〜濃紺 × 青〜シアン発光、SAMPLE ロゴ）
   - スマホ最適化。PC は中央 1 カラム（最大幅 420px）で見られればよい
   - パネルの塗りは白寄りのすりガラスで暗い背景から浮かせている (2026-10-04)。ログインは ライセンスキー＋数字4桁 (同日改訂) */

body{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}
.login{position:relative;z-index:2;flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;
  width:100%;max-width:420px;margin:0 auto;padding:max(28px, 6vh) 18px 36px}

/* ロゴ */
.hero-logo{text-align:center;margin-bottom:26px;animation:fadeUp .5s both}
.hero-logo .ring{position:relative;width:68px;height:68px;margin:0 auto 14px;border-radius:50%;border:2px solid #fff;display:grid;place-items:center;
  box-shadow:0 0 22px rgba(var(--acc-rgb),.65), inset 0 0 14px rgba(var(--acc-rgb),.45)}
.hero-logo .ring::before{content:'';position:absolute;inset:-9px;border-radius:50%;border:1px dashed rgba(var(--acc-rgb),.6);animation:spin 14s linear infinite}
.hero-logo .ring i{font:900 20px/1 var(--en);letter-spacing:.04em;font-style:normal;text-shadow:0 0 12px rgba(var(--acc-rgb),.9)}
@keyframes spin{to{transform:rotate(360deg)}}
.hero-logo .b1{font:900 26px/1 var(--en);letter-spacing:.22em;text-shadow:0 0 16px rgba(var(--acc-rgb),.7)}
.hero-logo .b2{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:8px;font:600 9.5px/1 var(--en);letter-spacing:.3em;color:var(--soft)}

/* カード */
.card{width:100%;border:1px solid rgba(255,255,255,.32);border-radius:18px;padding:20px 18px 18px;
  background:rgba(255,255,255,.12);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.30), 0 10px 30px rgba(0,0,0,.45), 0 0 28px rgba(var(--acc-rgb),.12);
  animation:fadeUp .5s .08s both}
.card-h{display:flex;align-items:center;gap:8px;margin-bottom:16px}
.card-h .t{font:700 16px/1.2 var(--jp)}
.card-h .e{margin-left:auto;font:600 9.5px/1 var(--en);letter-spacing:.22em;color:var(--soft);white-space:nowrap}

/* 入力 */
.field{margin-top:12px}
.field:first-of-type{margin-top:0}
.field label{display:flex;align-items:baseline;gap:8px;font:700 12.5px/1 var(--jp);margin-bottom:7px}
.field label small{font:600 9px/1 var(--en);letter-spacing:.2em;color:var(--soft)}
.inp{position:relative;display:flex;align-items:center;height:50px;border-radius:12px;border:1px solid rgba(255,255,255,.30);background:rgba(3,6,15,.45);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08);transition:border-color .15s, box-shadow .15s}
.inp:focus-within{border-color:var(--acc);box-shadow:0 0 0 1px rgba(var(--acc-rgb),.55), 0 0 16px rgba(var(--acc-rgb),.4)}
.inp.err{border-color:#ff5c7a;box-shadow:0 0 0 1px rgba(255,92,122,.5), 0 0 14px rgba(255,92,122,.35)}
.inp .ic{flex:0 0 42px;text-align:center;color:var(--soft);font:700 13px/1 var(--en);letter-spacing:.04em}
.inp input{flex:1 1 auto;min-width:0;height:100%;border:0;outline:0;background:transparent;color:#fff;font:600 16px/1 var(--jp);padding:0 4px 0 0}
.inp input::placeholder{color:rgba(255,255,255,.38);font-weight:500}
.inp input:-webkit-autofill{-webkit-text-fill-color:#fff;box-shadow:0 0 0 1000px rgba(11,63,168,.55) inset;caret-color:#fff}
.eye{box-sizing:border-box;flex:0 0 auto;width:52px;height:34px;margin-right:6px;border-radius:8px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.07);
  color:rgba(255,255,255,.85);font:700 11px/1 var(--jp);text-align:center;cursor:pointer;padding:0}
.eye:hover{border-color:var(--acc);color:#fff}
.hint{display:block;margin-top:6px;font:500 11px/1.5 var(--jp);color:#ff8aa0;min-height:0}
.hint:empty{display:none}

/* 補助行（パスワードをお忘れの方: リンクではなく点線下線。ホバー／タップで吹き出し） */
.aux{display:flex;align-items:center;justify-content:flex-end;margin-top:12px}
.help{position:relative;display:inline-block;font:600 12.5px/1 var(--jp);color:rgba(255,255,255,.85);cursor:help;outline:0;
  border-bottom:1px dotted rgba(255,255,255,.7);padding-bottom:3px}
.help:hover,.help:focus-visible,.help.is-open{color:#fff;border-bottom-color:var(--acc)}
.help .pop{position:absolute;right:0;bottom:calc(100% + 10px);width:min(290px, 78vw);padding:10px 12px;border-radius:10px;
  background:rgba(var(--ink-rgb),.96);border:1px solid rgba(var(--acc-rgb),.6);box-shadow:0 0 18px rgba(var(--acc-rgb),.3), 0 8px 24px rgba(0,0,0,.5);
  color:#fff;font:500 12px/1.6 var(--jp);text-align:left;white-space:normal;cursor:default;
  opacity:0;transform:translateY(4px);pointer-events:none;transition:opacity .15s, transform .15s;z-index:3}
.help .pop b{color:var(--soft)}
.help .pop::after{content:'';position:absolute;right:18px;top:100%;border:6px solid transparent;border-top-color:rgba(var(--acc-rgb),.6)}
.help:hover .pop,.help:focus-visible .pop,.help.is-open .pop{opacity:1;transform:none;pointer-events:auto}
@media (hover:none){ .help:hover:not(.is-open) .pop{opacity:0;transform:translateY(4px);pointer-events:none} }

/* ログインボタン（ラベルが「ログイン」⇄「認証中」で変わるため横幅＝カード幅で固定） */
.btn{box-sizing:border-box;width:100%;height:52px;margin-top:18px;border-radius:13px;border:1px solid var(--acc);background:var(--acc);color:var(--ink);
  font:700 16px/1 var(--jp);letter-spacing:.06em;cursor:pointer;box-shadow:0 0 20px rgba(var(--acc-rgb),.45);transition:.15s;position:relative;overflow:hidden;
  display:flex;align-items:center;justify-content:center;gap:10px}
.btn:hover{background:#fff;color:var(--acc)}
.btn .e{font:700 10px/1 var(--en);letter-spacing:.22em;opacity:.8}
.btn.busy{pointer-events:none;background:linear-gradient(180deg, rgba(var(--acc-rgb),.5), rgba(var(--acc-rgb),.25)),var(--panel);color:#fff;border-color:rgba(var(--acc-rgb),.8)}
.btn.busy::after{content:'';position:absolute;left:-40%;top:0;bottom:0;width:40%;background:linear-gradient(90deg, transparent, rgba(255,255,255,.35), transparent);animation:shine 1s linear infinite}
@keyframes shine{to{left:110%}}
.btn .dot{display:none;width:8px;height:8px;border-radius:50%;background:#fff;box-shadow:0 0 8px #fff;animation:pulse 1s ease-in-out infinite}
.btn.busy .dot{display:block}
.btn.ok{background:#10b981;border-color:#10b981;color:#fff;box-shadow:0 0 20px rgba(16,185,129,.6)}

/* 認証ログ（端末風 1 行） */
.auth-log{margin-top:10px;min-height:18px;font:600 11.5px/1.5 var(--num);letter-spacing:.06em;color:var(--soft);text-align:center;opacity:0;transition:opacity .2s}
.auth-log.on{opacity:1}
.auth-log::before{content:'> ';color:var(--acc)}

/* 下部注記 */
.foot{margin-top:22px;padding:0 6px}
.foot a{color:var(--soft)}
.foot .ver{display:block;margin-top:0;font:600 9px/1 var(--en);letter-spacing:.22em;color:rgba(255,255,255,.4)}

/* 横幅が広い（PC）ときはカードを少し大きく */
@media (min-width:720px){ .card{padding:26px 24px 22px} .hero-logo .b1{font-size:30px} }
/* 低身長端末（横向きなど）ではロゴを詰める */
@media (max-height:620px){ .hero-logo{margin-bottom:14px} .hero-logo .ring{width:52px;height:52px;margin-bottom:8px} }
