:root{ --accent:#F2B829; --ink:#23201A; --bg:#E7E2D6; --bg-lo:#D8D2C2; }
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;height:100%;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Hiragino Sans","Noto Sans JP",sans-serif;
  background:radial-gradient(120% 80% at 50% 16%, #EFEADE 0%, var(--bg) 50%, var(--bg-lo) 100%) fixed;
  display:flex;flex-direction:column;align-items:center;overflow:hidden;
}
/* app = 全面 */
.app{position:relative;width:100%;max-width:520px;height:100dvh;display:flex;flex-direction:column;}

/* ---------- HUD（上の細い帯・ラフ） ---------- */
.hud{position:absolute;inset:0 0 auto 0;z-index:20;
  display:flex;align-items:center;gap:14px;
  padding:max(12px,env(safe-area-inset-top,0)) 14px 0;pointer-events:none;}
.grp{display:flex;flex-direction:column;line-height:1;}
.grp .lab{font-size:9px;letter-spacing:.18em;color:#8a8475;font-weight:700;}
.grp .num{font-variant-numeric:tabular-nums;font-weight:800;font-size:19px;color:var(--ink);margin-top:3px;}
.spacer{flex:1;}
.ob{pointer-events:auto;width:34px;height:34px;padding:0;font-size:16px;line-height:1;
  border:none;border-radius:11px;background:#fff;color:var(--ink);
  box-shadow:0 2px 5px rgba(0,0,0,.14);cursor:pointer;}
.ob:active{transform:translateY(1px);}

/* ---------- play field ---------- */
.stage{flex:1;position:relative;min-height:0;}
canvas{position:absolute;inset:0;display:block;width:100%;height:100%;touch-action:none;}

/* ---------- controller（右下・フィールドに重ねる） ---------- */
.pad{position:absolute;right:16px;bottom:max(18px,env(safe-area-inset-bottom,0));
  width:120px;height:120px;border-radius:22px;z-index:20;touch-action:none;user-select:none;
  background:linear-gradient(160deg,#ffffffcc,#ffffff7a);border:1px solid #ffffff;
  box-shadow:0 6px 16px rgba(40,36,28,.18), inset 0 1px 0 #fff;backdrop-filter:blur(2px);}
.pad::before,.pad::after{content:'';position:absolute;background:rgba(35,32,26,.16);}
.pad::before{left:16px;right:16px;top:50%;height:2px;transform:translateY(-50%);}
.pad::after{top:16px;bottom:16px;left:50%;width:2px;transform:translateX(-50%);}
.padknob{position:absolute;left:50%;top:50%;width:42px;height:42px;border-radius:50%;
  transform:translate(-50%,-50%);
  background:radial-gradient(circle at 38% 32%, #FFD86A, var(--accent) 62%, #d99e16);
  box-shadow:0 4px 9px rgba(40,36,28,.3), inset 0 2px 3px #ffffffaa;}

/* ---------- stage clear banner（ラフ） ---------- */
.banner{position:absolute;inset:0;z-index:30;display:none;align-items:center;justify-content:center;
  flex-direction:column;gap:10px;background:rgba(231,226,214,.86);backdrop-filter:blur(2px);text-align:center;padding:24px;}
.banner.show{display:flex;}
.banner .big{font-size:26px;font-weight:800;letter-spacing:.04em;color:var(--ink);}
.banner .small{font-size:13px;color:#6f6a5c;}
.banner button{font:inherit;font-weight:700;font-size:14px;border:none;background:var(--accent);color:#3a2f10;
  padding:10px 22px;border-radius:12px;cursor:pointer;box-shadow:0 3px 8px rgba(40,36,28,.2);}

/* ---------- 画面オーバーレイ（タイトル/STスタート/ゲームオーバー・ラフ） ---------- */
.screen{position:absolute;inset:0;z-index:40;display:none;align-items:center;justify-content:center;
  flex-direction:column;gap:14px;background:rgba(231,226,214,.92);backdrop-filter:blur(3px);text-align:center;padding:24px;cursor:pointer;}
.screen.show{display:flex;}
.scr-logo{font-size:34px;font-weight:800;letter-spacing:.04em;color:var(--ink);margin-bottom:6px;}
.scr-big{font-size:26px;font-weight:800;letter-spacing:.04em;color:var(--ink);}
.scr-small{font-size:13px;color:#6f6a5c;}
.scr-sub{font-size:11px;color:#8a8475;letter-spacing:.08em;margin-top:2px;}
.scr-btn{font:inherit;font-weight:700;font-size:15px;border:none;background:var(--accent);color:#3a2f10;
  padding:11px 30px;border-radius:12px;cursor:pointer;box-shadow:0 3px 8px rgba(40,36,28,.2);min-width:180px;}
.scr-btn.ghost{background:#fff;color:var(--ink);}
.scr-btn:active{transform:translateY(1px);}
.scr-btn:disabled{opacity:.4;cursor:default;}

/* ---------- ステージセレクター ---------- */
.selector{display:flex;align-items:center;gap:10px;margin:2px 0 6px;}
.selarrow{font:inherit;font-weight:800;font-size:16px;border:none;background:#fff;color:var(--ink);
  width:40px;height:40px;border-radius:11px;cursor:pointer;box-shadow:0 2px 5px rgba(40,36,28,.14);}
.selarrow:active{transform:translateY(1px);}
.selten{font:inherit;font-weight:700;font-size:13px;padding:9px 10px;border-radius:10px;
  border:1px solid #cdc7b7;background:#fff;color:var(--ink);}
.selnum{font-variant-numeric:tabular-nums;font-weight:800;font-size:16px;color:var(--ink);min-width:64px;}
