/* ============================================================
   分割ガイド: このstyleは将来 css/ へ分割しやすいよう
   [split: xxx.css] コメントで区切ってあります(新規追加分から適用)
============================================================ */
:root{
  --sky:#aee3ff; --sky-deep:#7ec8ff; --cream:#fff9ec; --navy:#2c3a55;
  --orange:#ff9b3d; --orange-deep:#f27d1a; --pink:#ff8fae; --green:#7fd08a;
  --panel:#ffffff; --shadow:0 6px 0 rgba(44,58,85,.18);
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{width:100%;height:100%;overflow:hidden;overscroll-behavior:none;position:fixed;}
body{
  /* 欧文・数字はFredoka、和文はM PLUS Rounded 1cへフォールバック */
  font-family:'Fredoka','M PLUS Rounded 1c','Hiragino Maru Gothic ProN',system-ui,sans-serif;
  background:linear-gradient(#aee3ff,#eaf7ff);color:var(--navy);
  touch-action:none;user-select:none;-webkit-user-select:none;
}
#game{position:absolute;inset:0;display:block;}
#fx{position:absolute;inset:0;pointer-events:none;z-index:15;}
#loader{position:absolute;inset:0;z-index:60;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:14px;
  background:linear-gradient(#aee3ff,#fdf3d8);transition:opacity .45s;}
#loader.fade{opacity:0;pointer-events:none;}
.l-bird{width:112px;animation:bob 1.05s ease-in-out infinite;}
.l-text{font-weight:800;font-size:16px;color:var(--navy);letter-spacing:.06em;}
.l-dots{display:flex;gap:9px;}
.l-dots span{width:11px;height:11px;border-radius:50%;background:var(--orange);
  border:2px solid var(--navy);animation:ldot .9s ease-in-out infinite;}
.l-dots span:nth-child(2){animation-delay:.15s;}
.l-dots span:nth-child(3){animation-delay:.3s;}
@keyframes ldot{0%,100%{transform:translateY(0);}40%{transform:translateY(-10px);}}
button{font-family:inherit;border:none;cursor:pointer;color:var(--navy);}

/* ---------- screens ---------- */
.screen{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:14px;padding:20px;text-align:center;z-index:30;}
/* モーダルはふわっと出る(display切替でアニメが再生される) */
.screen:not(.hidden){animation:scrIn .2s ease-out;}
.screen:not(.hidden) .card{animation:cardIn .28s cubic-bezier(.2,.85,.3,1.15);}
@keyframes scrIn{from{opacity:0;}}
@keyframes cardIn{from{opacity:0;transform:translateY(12px) scale(.95);}
  to{opacity:1;transform:translateY(0) scale(1);}}
.hidden{display:none!important;}
#title{padding-bottom:13vh;
  background:linear-gradient(180deg,rgba(174,227,255,0.3) 0%,rgba(174,227,255,0) 32%,
  rgba(255,247,232,0) 60%,rgba(255,247,232,0.9) 100%);}
#titleLogo{position:relative;line-height:.95;margin-bottom:2px;}
#titleLogo .l1,#titleLogo .l2,#countdown{
  font-family:'Fredoka','M PLUS Rounded 1c',sans-serif;letter-spacing:.03em;}
#timerChip{font-family:'Fredoka','M PLUS Rounded 1c',sans-serif;}
/* 縁取りの注意:
   ・Fredokaは600のみ収録。800を指定すると合成ボールドで字形がにじみ、
     その輪郭をtext-strokeがなぞるため線がガタつく → 600で指定する
   ・text-strokeは既定で字面の内側にも半分食いこむ → paint-orderで線を字の下に敷く */
#titleLogo .l1{display:block;font-weight:600;font-size:clamp(36px,10.6vw,70px);
  line-height:.9;letter-spacing:.01em;color:#fff;
  -webkit-text-stroke:6px var(--navy);paint-order:stroke fill;
  text-shadow:0 6px 0 var(--navy),0 9px 0 rgba(44,58,85,.25);}
#titleLogo .l0{display:block;font-weight:600;
  font-family:'Fredoka','M PLUS Rounded 1c',sans-serif;
  font-size:clamp(19px,5vw,30px);letter-spacing:.16em;padding-left:.16em;
  color:var(--orange);-webkit-text-stroke:4px var(--navy);paint-order:stroke fill;
  text-shadow:0 3px 0 var(--navy);margin-bottom:-2px;}
/* 行先表示板ふうマーキー(EXPRESSの名残を意匠で) */
#titleLogo .l2{display:block;margin:10px auto 0;
  width:min(86vw,500px);overflow:hidden;white-space:nowrap;
  background:#1b2438;border:3px solid var(--navy);border-radius:10px;
  padding:7px 0;box-shadow:0 4px 0 rgba(44,58,85,.3),
    inset 0 0 14px rgba(0,0,0,.5);}
#titleLogo .mqTrack{display:inline-block;white-space:nowrap;
  animation:mqMove 14s linear infinite;will-change:transform;}
#titleLogo .mq{display:inline-block;font-weight:400;
  font-size:clamp(17px,4.6vw,26px);letter-spacing:.14em;
  color:var(--orange);text-shadow:0 0 8px rgba(255,155,61,.6);}
@keyframes mqMove{from{transform:translateX(0);}to{transform:translateX(-50%);}}
#titleLogo .jp{display:block;margin-top:10px;font-weight:800;font-size:clamp(15px,4.2vw,21px);
  color:var(--navy);}
.t-bird{width:clamp(100px,26vw,150px);height:auto;animation:bob 2.2s ease-in-out infinite;}
@keyframes bob{0%,100%{transform:translateY(0) rotate(-4deg);}50%{transform:translateY(-12px) rotate(4deg);}}
.btn{background:var(--panel);border:3px solid var(--navy);border-radius:999px;
  padding:14px 34px;font-size:19px;font-weight:800;box-shadow:var(--shadow);
  transition:transform .08s;}
.btn:active{transform:translateY(4px);box-shadow:0 2px 0 rgba(44,58,85,.18);}
.btn.primary{background:var(--orange);color:#fff;text-shadow:0 2px 0 rgba(0,0,0,.12);}
.btn.small{padding:9px 22px;font-size:15px;}
/* フッターは欧文もふくめて全部を和文書体で揃える
   (Fredokaは600のみなので、混ざるとAMIXだけ太く見えてしまう) */
.credit{position:absolute;bottom:calc(10px + env(safe-area-inset-bottom));font-size:12px;
  font-family:'M PLUS Rounded 1c','Hiragino Maru Gothic ProN',system-ui,sans-serif;
  font-weight:500;color:var(--navy);opacity:.75;}
.credit a{color:inherit;font-family:inherit;font-weight:inherit;}

/* ---------- howto / pause / result ---------- */
.modal-bg{background:rgba(44,58,85,.45);z-index:40;}
.card{background:var(--cream);border:3px solid var(--navy);border-radius:22px;
  box-shadow:var(--shadow);padding:22px 20px;max-width:420px;width:min(92vw,420px);
  max-height:80vh;overflow-y:auto;-webkit-overflow-scrolling:touch;}
.card h3{font-size:20px;font-weight:800;margin-bottom:10px;}
.card hr{border:none;border-top:2px dashed rgba(44,58,85,.22);
  margin:14px 0 10px;}
.card h4{font-size:13.5px;font-weight:800;color:var(--orange-deep);
  margin:12px 0 4px;text-align:left;}
.card h4::before{content:"◆ ";font-size:11px;}
.card ul{list-style:none;text-align:left;font-size:14px;line-height:1.75;font-weight:500;}
.card ul li{padding-left:1.1em;text-indent:-1.1em;margin-bottom:4px;}
.card ul li::before{content:"・";}
.card .btnrow{display:flex;gap:10px;justify-content:center;margin-top:16px;flex-wrap:wrap;}
.modal-lead{font-size:13px;font-weight:500;line-height:1.75;margin:2px 0 4px;}
.modal-lead b{color:var(--orange-deep);}
/* ====================[あそびかた: モードごとに色分けしたカード]==================== */
.card.howto{width:min(94vw,480px);padding:20px 16px 18px;
  background:linear-gradient(#fff9ec 0%,#fff4de 100%);}
.card.howto h3{font-size:22px;color:var(--orange-deep);letter-spacing:.04em;}
.card.howto h3::after{content:"";display:block;width:64px;height:5px;margin:6px auto 0;
  border-radius:99px;background:linear-gradient(90deg,var(--orange),var(--pink));}
.hlead{font-size:12.5px;font-weight:700;opacity:.7;margin-bottom:4px;}
/* おすすめの遊び順(番号つきのステップ) */
.hstep{margin-top:12px;padding:12px 14px 11px;text-align:left;
  border:2.5px dashed var(--orange);border-radius:16px;
  background:rgba(255,255,255,.72);}
.hstep-t{font-size:12px;font-weight:800;color:var(--orange-deep);
  letter-spacing:.03em;margin-bottom:7px;}
.hstep ol{list-style:none;counter-reset:hs;}
.hstep ol li{counter-increment:hs;position:relative;
  padding-left:26px;margin-bottom:5px;font-size:13.5px;line-height:1.6;}
.hstep ol li::before{content:counter(hs);position:absolute;left:0;top:1px;
  width:19px;height:19px;border-radius:50%;
  background:var(--orange);color:#fff;border:2px solid var(--navy);
  font-size:11px;font-weight:800;line-height:19px;text-align:center;}
.hstep>p{margin-top:8px;padding-top:7px;font-size:12.5px;line-height:1.6;
  border-top:1.5px dashed rgba(44,58,85,.25);}
.hsec{--c:var(--orange);
  background:#fff;border:2.5px solid var(--navy);border-radius:16px;
  padding:12px 13px 11px;margin:13px 0 0;text-align:left;
  box-shadow:0 4px 0 rgba(44,58,85,.15);}
.hsec>h4{display:inline-flex;align-items:center;gap:5px;margin:0 0 7px;
  background:var(--c);color:#fff;border:2.5px solid var(--navy);border-radius:999px;
  padding:3px 13px 3px 8px;font-size:12.5px;font-weight:800;letter-spacing:.03em;
  text-shadow:0 1px 0 rgba(0,0,0,.18);box-shadow:0 2px 0 rgba(44,58,85,.2);}
.hsec>h4::before{content:none;}                 /* 既定の◆は使わない */
.hsec .hico{width:9px;height:9px;border-radius:50%;background:#fff;
  border:2px solid var(--navy);box-sizing:content-box;flex:none;}
.hsec ul{font-size:13.5px;line-height:1.7;}
.hsec ul li{padding-left:1.15em;text-indent:-1.15em;margin-bottom:5px;}
.hsec ul li:last-child{margin-bottom:0;}
.hsec ul li::before{content:"●";color:var(--c);font-size:9px;
  vertical-align:2px;margin-right:.45em;}
/* キー操作の対応表 */
.hkeys{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:7px;}
.hkeys td{padding:5px 0;border-bottom:1px dashed rgba(44,58,85,.22);vertical-align:middle;}
.hkeys tr:last-child td{border-bottom:none;}
.hkeys td:first-child{width:44%;white-space:nowrap;}
.hkeys kbd{display:inline-block;min-width:1.5em;margin-right:2px;padding:2px 6px;
  background:#fff;border:2px solid var(--navy);border-radius:6px;
  box-shadow:0 2px 0 rgba(44,58,85,.28);
  font-family:inherit;font-size:11.5px;font-weight:800;line-height:1.3;text-align:center;}
.hsec b{color:var(--navy);background:linear-gradient(transparent 62%,color-mix(in srgb,var(--c) 38%,transparent) 62%);}
@supports not (color: color-mix(in srgb,red,blue)){
  .hsec b{background:none;text-decoration:underline;text-decoration-color:var(--c);
    text-decoration-thickness:3px;text-underline-offset:2px;}
}
#result .card h2{font-size:26px;font-weight:800;color:var(--orange-deep);margin-bottom:6px;}
.res-grid{display:flex;gap:14px;justify-content:center;margin:12px 0;}
.res-item{background:#fff;border:2px solid var(--navy);border-radius:14px;padding:10px 16px;min-width:96px;}
.res-item .lbl{font-size:11px;font-weight:700;opacity:.7;}
.res-item .val{font-size:24px;font-weight:800;}
#resRank{font-size:17px;font-weight:800;background:#fff3d9;border:2px dashed var(--orange);
  border-radius:12px;padding:8px 14px;display:inline-block;}

/* ---------- HUD ---------- */
#hud{position:absolute;inset:0;pointer-events:none;z-index:20;
  padding:calc(10px + env(safe-area-inset-top)) 12px calc(10px + env(safe-area-inset-bottom));}
.chip{background:rgba(255,255,255,.92);border:2px solid var(--navy);border-radius:14px;
  padding:5px 12px;font-weight:800;box-shadow:0 3px 0 rgba(44,58,85,.15);}
#hudTop{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;}
#hudLeft{display:flex;flex-direction:column;gap:6px;font-size:14px;}
#timerChip{font-size:24px;padding:6px 20px;color:var(--navy);
  min-width:118px;box-sizing:border-box;text-align:center;
  font-variant-numeric:tabular-nums;font-feature-settings:'tnum';}
#timerChip.low{color:#e8452c;}   /* 残りわずかは赤文字のみ(明滅なし) */
@keyframes blink{50%{opacity:.4;}}
#hudRight{display:flex;gap:8px;pointer-events:auto;}
.iconbtn{width:44px;height:44px;border-radius:12px;background:rgba(255,255,255,.92);
  border:2px solid var(--navy);font-size:18px;font-weight:800;box-shadow:0 3px 0 rgba(44,58,85,.15);}
#distChip{position:absolute;right:14px;bottom:calc(174px + env(safe-area-inset-bottom));
  font-size:15px;color:var(--navy);}   /* はばたくボタン(上端156px)に被らない高さ */
#distDot{display:inline-block;width:11px;height:11px;border-radius:50%;
  background:var(--orange);border:2px solid var(--navy);margin-right:7px;vertical-align:-1px;}
/* トーストは襲来ゲージ・ボスHPバーより下に出す(重ならないよう下限を固定) */
#toasts{position:absolute;top:max(22%,calc(136px + env(safe-area-inset-top)));
  left:0;right:0;display:flex;flex-direction:column;
  align-items:center;gap:8px;}
/* 状況報告は1行で読ませたいので、画面幅にあわせて文字を縮める。
   万一はみ出す文言が来ても折り返さず、末尾を省略する */
.toast{background:rgba(255,255,255,.95);border:2px solid var(--navy);border-radius:999px;
  padding:8px 20px;font-weight:800;font-size:clamp(12px,3.9vw,16px);
  box-shadow:0 3px 0 rgba(44,58,85,.15);
  white-space:nowrap;max-width:94vw;overflow:hidden;text-overflow:ellipsis;
  animation:toast-in 1.8s ease forwards;}
.toast.big{font-size:clamp(14px,4.7vw,19px);color:var(--orange-deep);}
@keyframes toast-in{0%{transform:translateY(14px) scale(.8);opacity:0;}
  12%{transform:translateY(0) scale(1);opacity:1;}
  80%{opacity:1;}100%{opacity:0;transform:translateY(-10px);}}
#hawkCam{position:absolute;top:calc(76px + env(safe-area-inset-top));left:50%;
  transform:translateX(-50%);width:158px;height:104px;z-index:18;pointer-events:none;
  border:3px solid var(--navy);border-radius:14px;
  box-shadow:0 4px 0 rgba(44,58,85,.25),0 0 0 3px rgba(255,255,255,.5);}
#hawkCam span{position:absolute;top:-13px;left:10px;background:#e8452c;color:#fff;
  font-size:11px;font-weight:800;padding:2px 9px;border-radius:999px;
  border:2px solid var(--navy);letter-spacing:.05em;}
#hawkCam.lock{border-color:#e8452c;animation:lockpulse .5s steps(2) infinite;}
@keyframes lockpulse{50%{box-shadow:0 4px 0 rgba(44,58,85,.25),0 0 0 5px rgba(232,69,44,.6);}}
#countdown{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:clamp(70px,22vw,130px);font-weight:600;color:#fff;
  -webkit-text-stroke:8px var(--navy);paint-order:stroke fill;
  text-shadow:0 6px 0 rgba(44,58,85,.3);z-index:25;
  pointer-events:none;}
#countdown span{display:inline-block;
  animation:cdpop .7s cubic-bezier(.34,1.56,.64,1) both;}
@keyframes cdpop{
  0%{transform:scale(0) rotate(-16deg);opacity:0;}
  60%{transform:scale(1.22) rotate(5deg);opacity:1;}
  80%{transform:scale(.94) rotate(-2deg);}
  100%{transform:scale(1) rotate(0);}}

/* ---------- controls ---------- */
#controls{position:absolute;inset:0;z-index:22;pointer-events:none;}
#stickZone{position:absolute;left:0;bottom:0;width:46%;height:46%;pointer-events:auto;}
#stickBase{position:absolute;left:34px;bottom:calc(40px + env(safe-area-inset-bottom));
  width:110px;height:110px;border-radius:50%;background:rgba(255,255,255,.5);
  border:3px solid rgba(44,58,85,.55);}
#stickKnob{position:absolute;left:50%;top:50%;width:56px;height:56px;border-radius:50%;
  background:#fff;border:3px solid var(--navy);box-shadow:0 3px 0 rgba(44,58,85,.2);
  transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:15px;color:var(--navy);}
#flapZone{position:absolute;right:0;bottom:0;width:46%;height:52%;pointer-events:auto;}
#flapBtn{position:absolute;right:30px;bottom:calc(44px + env(safe-area-inset-bottom));
  width:112px;height:112px;border-radius:50%;background:var(--orange);
  border:4px solid var(--navy);box-shadow:0 6px 0 rgba(44,58,85,.3);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  color:#fff;font-weight:800;font-size:17px;text-shadow:0 2px 0 rgba(0,0,0,.15);
  transition:transform .06s;}
#flapBtn .sub{font-size:11px;opacity:.9;}
#flapBtn.on{transform:translateY(5px) scale(.97);box-shadow:0 1px 0 rgba(44,58,85,.3);
  background:var(--orange-deep);}
.btn.night{background:#1b2438;color:#8fe7ff;border-color:#0e1524;
  text-shadow:0 2px 0 rgba(0,0,0,.4);}
/* タイトルのサウンド切りかえはHUDの♪と同じ見た目で右上に置く(アイコンのみ) */
#sndTgl{position:absolute;top:calc(12px + env(safe-area-inset-top));right:14px;
  z-index:5;}
#sndTgl.off{color:#8a91a0;background:rgba(255,255,255,.75);}
#modeRow{display:flex;flex-direction:column;gap:10px;align-items:stretch;}
#subRow{display:flex;gap:8px;margin-top:4px;justify-content:center;}
.btn.mode{position:relative;display:flex;flex-direction:column;gap:3px;align-items:center;
  padding:13px 22px;min-width:240px;line-height:1.15;}
.btn.mode span{font-size:11px;font-weight:700;opacity:.72;letter-spacing:.03em;}
.btn.night.mode span{opacity:.8;}
