/* 平成テーマ：白地に薄紫の本線・黄緑の坂上線・青の波止場線。ゲーム画面＋上部HUD＋下部「まもなく」 */
:root{
  --bg:#FFFFFF; --ink:#2F3266; --ink2:#5E6283; --navy:#565A92; --lav:#C6B8F6; --lavd:#9C8BE0;
  --green:#8DC63F; --green-ink:#4E7A1C; --blue:#4A8FE7; --blue-ink:#2A63B0; --depot:#9A9BAE; --station:#EFEBFC; --conn:#1F7A5C; --freight:#7A5C48; --ship:#2A63B0; --panel:#F5F3FE; --line:#E4DFFB;
  --stop:#E5484D; --go:#4CAF2E; --exp:#B4462E;
  --f-body:'Zen Maru Gothic','Hiragino Maru Gothic ProN','Yu Gothic',sans-serif;
  --f-num:'Outfit','Zen Maru Gothic',sans-serif;
  color-scheme: light;
}
body{background:var(--bg);color:var(--ink);font-family:var(--f-body)}
.wrap{max-width:1000px;margin:0 auto;padding-inline:16px;padding-block:16px;display:flex;flex-direction:column;gap:12px}
.hud{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px 24px}
.brand{display:flex;align-items:flex-end;gap:14px}
.clock{font-family:var(--f-num);font-weight:700;font-size:40px;line-height:1;letter-spacing:-0.02em;font-variant-numeric:tabular-nums}
.brand small{display:block;font-size:12px;font-weight:700;color:var(--navy);letter-spacing:0.1em}
.brand span{font-size:13px;color:var(--ink2)}
.stats{display:flex;flex-wrap:wrap;align-items:center;gap:20px}
.stat{display:flex;flex-direction:column;align-items:flex-end}
.stat b{font-family:var(--f-num);font-size:22px;font-variant-numeric:tabular-nums}
.stat b i{font-style:normal;color:var(--ink2);font-size:15px}
.stat em{font-style:normal;font-size:11px;color:var(--ink2)}
.lives{display:flex;gap:6px}
.lives i{width:12px;height:12px;border-radius:50%;background:var(--green);display:block}
.lives i.off{background:transparent;border:2px solid #B9BCD6;box-sizing:border-box}
.btns{display:flex;gap:8px}
button{font-family:var(--f-body);cursor:pointer}
.ib{height:40px;min-width:44px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font-weight:700;font-size:13px}
.ib:hover{border-color:var(--lavd)}
.ib:focus-visible,.cta:focus-visible{outline:3px solid var(--lavd);outline-offset:2px}
/* タイトル・プロローグ・コース選択では、時計や得点などゲーム中の表示を隠す（場所は残して盤面をずらさない） */
body[data-screen="menu"] .hud, body[data-screen="menu"] .next{visibility:hidden}
.guide{display:flex;align-items:center;gap:12px;min-height:52px;padding:10px 16px;border-radius:12px;background:var(--ink);color:#fff;font-size:17px;font-weight:700;line-height:1.4}
.guide b{flex:none;padding:4px 10px;border-radius:999px;background:var(--lav);color:var(--ink);font-size:13px}
.guide.wait{background:var(--panel);color:var(--ink2)}
.guide.wait b{background:var(--line)}
.stage{position:relative;width:100%;aspect-ratio:960/480;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--bg)}
canvas{display:block;width:100%;height:100%;touch-action:manipulation}
.toast{position:absolute;left:50%;top:10px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:8px 14px;border-radius:999px;font-size:13px;white-space:nowrap;pointer-events:none;transition:opacity .2s}
.overlay{position:absolute;inset:0;background:rgba(255,255,255,.94);display:flex;align-items:safe center;justify-content:center;padding:16px;overflow:auto}
.card{max-width:560px;display:flex;flex-direction:column;gap:12px}
.card.wide{max-width:900px;width:100%}
.diagram{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:8px;background:#fff}
.dg-wrap{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:14px;align-items:start}
.dg-notes{display:flex;flex-direction:column;gap:8px}
.card .dg-notes p.talk{padding:10px 12px;font-size:13px;line-height:1.55}
.dg-notes .no{flex:none;width:20px;height:20px;border-radius:50%;background:var(--exp);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}
.dg-guide{font-size:12px;color:var(--ink2);margin:0}
.card h1{margin:0;font-size:26px;text-wrap:balance}
.card .eyebrow{font-size:12px;font-weight:700;letter-spacing:0.12em;color:var(--navy)}
.card ul{margin:0;padding-left:1.2em;display:flex;flex-direction:column;gap:6px;font-size:14px;line-height:1.6;color:var(--ink)}
.card p{margin:0;font-size:14px;line-height:1.6;color:var(--ink2)}
.result{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.result div{background:var(--panel);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column}
.result b{font-family:var(--f-num);font-size:24px;font-variant-numeric:tabular-nums}
.result em{font-style:normal;font-size:12px;color:var(--ink2)}
.cta{align-self:flex-start;height:48px;padding:0 24px;border:none;border-radius:999px;background:var(--navy);color:#fff;font-weight:700;font-size:15px}
.cta:hover{background:var(--ink)}
.btnrow{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.btnrow .cta{align-self:auto}
.ghost{height:48px;padding:0 20px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--ink);font-weight:700;font-size:14px}
.ghost:hover{border-color:var(--lavd)}
.ghost:focus-visible,.stg:focus-visible{outline:3px solid var(--lavd);outline-offset:2px}
.stages{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
@media (max-width:760px){.stages{grid-template-columns:repeat(2,minmax(0,1fr))}}
.stg{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--ink);text-align:left}
.stg:hover{border-color:var(--lavd);background:#EFEBFD}
.stg b{font-size:15px}
.stg-no{font-size:12px;font-weight:700;color:var(--navy);letter-spacing:0.08em}
.stg-meta{font-size:12px;color:var(--ink2)}
.stg[disabled]{cursor:not-allowed;opacity:.55;background:var(--bg)}
.stg[disabled]:hover{border-color:var(--line);background:var(--bg)}
.demo-note{font-size:13px;line-height:1.6;color:var(--ink);background:var(--panel);border-radius:10px;padding:10px 14px;margin:0}
.demo-note a{color:var(--navy);font-weight:700}
.demo-end{display:flex;flex-direction:column;gap:8px;align-items:flex-start;padding:14px 16px;border-radius:12px;background:#EFEBFC;font-size:14px;line-height:1.6}
.demo-end .cta{display:inline-flex;align-items:center;text-decoration:none}
.fb{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:700;color:var(--ink)}
.fb textarea,.fb input{font:inherit;font-weight:500;font-size:14px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}
.fb textarea:focus-visible,.fb input:focus-visible{outline:3px solid var(--lavd);outline-offset:1px}
.fb-note{font-size:12px!important}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.title-art{cursor:pointer;display:block;width:520px;max-width:100%;height:auto;border-radius:12px;border:1px solid var(--line)}
.card h1.title{font-size:36px;letter-spacing:0.04em}
.card p.story{font-size:20px;line-height:1.8;color:var(--ink);font-weight:500}
.card p.talk{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:12px;background:var(--panel);color:var(--ink);font-size:15px}
.talk b{flex:none;padding:2px 10px;border-radius:999px;background:var(--navy);color:#fff;font-size:12px;line-height:1.8}
.next{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-height:40px}
.next>span{font-size:12px;color:var(--ink2);margin-right:4px}
.chip{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:var(--panel);font-size:12px;color:var(--ink2)}
.chip b{font-family:var(--f-num);color:var(--ink);font-size:14px}
.chip i{width:10px;height:10px;border-radius:50%;display:block}
.chip .exp{color:var(--exp);font-weight:700}
.chip .cn{color:var(--conn);font-weight:700}
.chip .fr{color:var(--freight);font-weight:700}
.chip .ex{color:#fff;background:var(--exp);border-radius:4px;padding:0 5px;font-weight:700}
.chip .sh{color:var(--ship);font-weight:700}
@media (max-width:640px){.clock{font-size:30px}.stat b{font-size:18px}.card h1{font-size:20px}.card ul{font-size:12px}}
