@charset "Shift_JIS";

  :root{
    --bg:#0A0D13;
    --panel:#151B27;
    --panel-2:#1C2432;
    --panel-hi:#2A3448;
    --line:#2C3850;
    --border:#41506F;
    --text:#FFFFFF;
    --label:#EDF1F8;
    --amber:#FFC351;
    --amber-dim:rgba(255,195,81,.16);
    --amber-glow:rgba(255,195,81,.38);
    --red:#FF7B76;
    --red-dim:rgba(255,123,118,.15);
    --green:#4ADE80;
    --green-dim:rgba(74,222,128,.14);
    --blue:#6EC1FF;
    --blue-dim:rgba(110,193,255,.14);
    --violet:#C4A5FF;
    --violet-dim:rgba(196,165,255,.14);
    --r:12px;
    /* まとめ画像用パレット(JS共通・スキンごとに色定義) */
    --img-bg:#0B0F16; --img-panel:#161D2B; --img-text:#FFFFFF; --img-sub:#AEB9CE;
    --img-accent:#FFC351; --img-line:#2C3850;
    --img-pos:#4ADE80; --img-neg:#FF7B76;
    --img-tier-s:#FFC351; --img-tier-a:#FF7B76; --img-tier-b:#4ADE80; --img-tier-c:#6EC1FF; --img-tier-d:#C4A5FF;
    --img-dark:1;
  }
  #hnmRoot, #hnmRoot *{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
  #hnmRoot button{-webkit-user-select:none; user-select:none; touch-action:manipulation; -webkit-touch-callout:none;}
  #hnmRoot button:focus-visible, #hnmRoot input:focus-visible{outline:2px solid var(--amber); outline-offset:1px;}
  html{-webkit-text-size-adjust:100%;}
  #hnmRoot{
    display:block;
    position:relative; /* revealなどのposition:absoluteの基準にする */
    margin:0; padding:0;
    background:
      radial-gradient(90% 40% at 50% -5%, rgba(255,195,81,.07), transparent 70%),
      var(--bg);
    color:var(--text);
    font-family:-apple-system, BlinkMacSystemFont, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;
    font-size:16px;
  }
  .num{font-family:"SF Mono","Roboto Mono","Menlo","Courier New",monospace;}
  .app{max-width:440px; margin:0 auto; padding:.5rem .5rem calc(.6rem + env(safe-area-inset-bottom));}

  /* ================= design tokens (shell) ================= */
  :root{
    --s1:.25rem; --s2:.38rem; --s3:.55rem; --s4:.78rem;
    --key-r:14px;
    --lab:1.3rem; --micro:1.02rem;
  }
  .num{font-family:"SF Mono","Roboto Mono","Menlo","Courier New",monospace;}

  /* ================= header ================= */
  .hd{display:flex; align-items:flex-start; gap:var(--s3); margin-bottom:var(--s3);}
  .hd-id{min-width:0; flex:1;}
  .hd-kicker{display:block; font-size:var(--micro); font-weight:800; letter-spacing:.16em; color:var(--amber); margin-bottom:.1rem;}
  .hd-machine{display:block; font-size:1.02rem; font-weight:800; letter-spacing:.01em; color:var(--text); line-height:1.2; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .hd-btn{
    flex:none; border:1px solid var(--edge, var(--border)); background:var(--panel); color:var(--label);
    border-radius:999px; padding:.42rem .8rem; font-size:.76rem; font-weight:800; font-family:inherit; letter-spacing:.04em;
  }

  /* ================= 素性メーター(signature) ================= */
  .meter{margin-bottom:var(--s3);}
  .meter-bar{
    display:grid; grid-template-columns:repeat(3,1fr);
    background:linear-gradient(180deg,#0C1220,#070A10);
    border:1px solid var(--border); border-top:2px solid rgba(255,195,81,.55);
    border-radius:12px; overflow:hidden;
    box-shadow:inset 0 0 24px rgba(255,195,81,.07), inset 0 1px 0 rgba(255,255,255,.05);
  }
  .mt{padding:.42rem .3rem .5rem; text-align:center; border-right:1px solid var(--line); min-width:0;}
  .mt:last-child{border-right:none;}
  .mt-l{display:block; font-size:var(--micro); font-weight:800; letter-spacing:.1em; color:var(--label); margin-bottom:.14rem; white-space:nowrap;}
  .mt-v{display:block; font-size:1.42rem; font-weight:800; color:var(--amber); line-height:1;
    font-variant-numeric:tabular-nums; text-shadow:0 0 14px var(--amber-glow); white-space:nowrap;}

  /* ================= tabs / mode ================= */
  .tabs{display:grid; grid-template-columns:1fr 1fr; border-bottom:1px solid var(--line); margin-bottom:var(--s3);}
  .tabs .seg-btn{
    border:0; border-bottom:3px solid transparent; border-radius:0; background:transparent;
    padding:.58rem .2rem; font-size:1rem; font-weight:800; font-family:inherit; color:var(--label); letter-spacing:.04em;
  }
  .tabs .seg-btn.active{color:var(--amber); border-bottom-color:var(--amber);}

  .modebox{margin-bottom:var(--s3);}
  .seg2{display:grid; grid-template-columns:1fr 1fr; gap:.28rem; background:var(--panel);
    border:1px solid var(--line); border-radius:12px; padding:.24rem;}
  .seg2 .seg-btn{
    border:1px solid transparent; border-radius:9px; background:transparent; color:var(--label);
    padding:.52rem .2rem; font-size:.84rem; font-weight:800; font-family:inherit; letter-spacing:.02em;
  }
  .seg2 .seg-btn.active{background:var(--amber-dim); border-color:var(--amber); color:var(--amber);}
  .mode-note{margin:.3rem 0 0 .15rem; font-size:var(--micro); font-weight:800; color:var(--label); line-height:1.45;}

  /* ================= groups / grids ================= */
  .group{margin-bottom:var(--s3);}
  .glabel{display:block; font-size:var(--micro); font-weight:800; letter-spacing:.14em; color:var(--label); margin:0 0 var(--s2) .15rem;}
  .grid1{display:grid; grid-template-columns:1fr; gap:var(--s2); margin-bottom:var(--s2);}
  .grid2{display:grid; grid-template-columns:1fr 1fr; gap:var(--s2); margin-bottom:var(--s2);}
  .grid3{display:grid; grid-template-columns:repeat(3,1fr); gap:var(--s2); margin-bottom:var(--s2);}

  /* ================= counter key (the tap target) ================= */
  .cell{
    position:relative; overflow:hidden; min-width:0;
    background:linear-gradient(180deg,var(--panel-hi),var(--panel));
    border:1px solid var(--line); border-radius:var(--key-r);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.06), 0 2px 0 rgba(0,0,0,.45);
  }
  .chead{display:flex; align-items:flex-start; gap:.35rem; padding:.46rem .5rem .1rem;}
  .cno{display:none;}
  .cname{flex:1; min-width:0; font-size:var(--lab); font-weight:800; letter-spacing:.05em; color:var(--label); line-height:1.22;}
  .csub{display:block; font-size:var(--micro); font-weight:800; letter-spacing:.02em; color:var(--label); opacity:.86; line-height:1.25;}
  .cdec{
    flex:none; width:2.5rem; height:2rem; border-radius:10px;
    border:1px solid var(--border); background:rgba(0,0,0,.34); color:var(--label);
    font-size:1.15rem; font-weight:800; font-family:inherit; line-height:1;
  }
  .cdec:active{background:var(--red-dim); border-color:var(--red); color:var(--red);}
  .ctap{
    width:100%; display:flex; align-items:center; justify-content:space-between; gap:.4rem;
    padding:.06rem .5rem .5rem; background:transparent; border:0; font-family:inherit; text-align:left;
  }
  .cnum{font-size:2.3rem; font-weight:800; line-height:1; color:var(--text);
    font-variant-numeric:tabular-nums; letter-spacing:-.02em; min-width:0;}
  .cplus{
    flex:none; width:2.1rem; height:2.1rem; border-radius:50%; display:grid; place-items:center;
    border:1px solid rgba(255,195,81,.5); background:var(--amber-dim); color:var(--amber);
    font-size:.76rem; font-weight:800; letter-spacing:.02em;
  }
  .grid1 .cnum{font-size:2.6rem;}
  .grid3 .ctap{justify-content:center; padding-bottom:.62rem;}
  .grid3 .cnum{font-size:1.72rem;}
  .grid3 .cplus{position:absolute; right:.34rem; bottom:.34rem; width:1.5rem; height:1.5rem; font-size:.62rem;}
  .grid3 .cdec{width:2.1rem; height:1.8rem; font-size:1rem;}

  /* 自動計算セル: 触らない・琥珀で「計算結果」を示す */
  .cell.auto10{
    background:linear-gradient(180deg,rgba(255,195,81,.1),rgba(255,195,81,.03));
    border-color:rgba(255,195,81,.5); box-shadow:none;
  }
  .cell.auto10 .cname{color:var(--amber);}
  .ctapd{display:flex; align-items:center; justify-content:center; padding:.06rem .5rem .62rem;}
  .cell.auto10 .cnum{color:var(--amber); font-size:1.72rem; text-shadow:0 0 12px var(--amber-glow);}

  /* R構成比 */
  .rpct{flex:none; font-size:var(--micro); font-weight:800; color:var(--violet); letter-spacing:.02em;}
  .rwarn{display:none; font-size:var(--micro); font-weight:800; color:var(--red); line-height:1.4; margin-top:.1rem;}
  .rwarn.show{display:block;}

  /* 操作ガイド */
  .route-note{margin:.22rem 0 0 .1rem; font-size:var(--micro); font-weight:800; color:var(--label); line-height:1.45;}
  .vsub{font-size:var(--micro); font-weight:800; letter-spacing:.1em; color:var(--red); margin:.3rem 0 .28rem .15rem;}

  /* フィードバック */
  @keyframes fplus{0%{background:var(--amber-dim);}100%{background:transparent;}}
  @keyframes fminus{0%{background:var(--red-dim);}100%{background:transparent;}}
  .ctap.flash-plus{animation:fplus .22s ease-out;}
  .ctap.flash-minus{animation:fminus .22s ease-out;}
  @keyframes numpop{0%{transform:scale(1);}40%{transform:scale(1.13);}100%{transform:scale(1);}}
  .cnum.pop,.iv-full.pop{animation:numpop .18s ease-out;}

  /* ================= direct input mode ================= */
  .cdirect{
    display:none; width:calc(100% - 1rem); margin:0 .5rem .5rem;
    background:rgba(0,0,0,.34); border:1px solid var(--border); color:var(--text);
    border-radius:10px; padding:.42rem .5rem; font-size:1.32rem; font-weight:800; text-align:right;
  }
  .cdirect::placeholder{color:rgba(220,228,242,.4);}
  body.mode-direct .cell .ctap{display:none;}
  body.mode-direct .cell .cdec{display:none;}
  body.mode-direct .cell .cdirect{display:block;}
  body.mode-direct .cell.auto10 .ctapd{display:flex;}

  /* ================= invest / gain (数値入力・押す頻度は低い) ================= */
  .invest2{display:grid; grid-template-columns:1fr 1fr; gap:var(--s2); margin-bottom:var(--s2);}
  .invest1{grid-template-columns:1fr;}
  .icell{background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:.42rem .5rem .5rem; min-width:0;}
  .icell-wide{margin-top:var(--s2);}
  .cstep{flex:none; font-size:var(--micro); font-weight:800; color:var(--blue); letter-spacing:.02em;}
  .ival{color:var(--text);}
  .iv-full{display:block; font-size:1.16rem; font-weight:800; line-height:1.15; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin:.1rem 0 .34rem;}
  .iv-full small{font-size:.68rem; font-weight:800; color:var(--label); margin-left:.16rem;}
  .irow{display:flex; align-items:center; gap:.34rem;}
  .sbtn{
    flex:1; border:1px solid var(--border); background:rgba(0,0,0,.3); color:var(--text);
    border-radius:10px; padding:.44rem 0; font-size:1.1rem; font-weight:800; font-family:inherit; line-height:1;
  }
  .sbtn:active{background:var(--amber-dim); border-color:var(--amber); color:var(--amber);}
  #investCashMinus:active,#investMochiMinus:active{background:var(--red-dim); border-color:var(--red); color:var(--red);}
  .irow.invest-direct{display:none;}
  body.mode-direct .irow.invest-step{display:none;}
  body.mode-direct .irow.invest-direct{display:flex;}
  .gain-input{
    flex:1; min-width:0; background:rgba(0,0,0,.34); border:1px solid var(--border); color:var(--text);
    border-radius:10px; padding:.4rem .5rem; font-size:1.16rem; font-weight:800; text-align:right;
    font-family:"SF Mono","Roboto Mono","Menlo",monospace;
  }
  .gain-input::placeholder{color:rgba(220,228,242,.4);}
  .gain-unit{flex:none; font-size:.8rem; font-weight:800; color:var(--label);}
  .gain-note{font-size:var(--micro); font-weight:800; color:var(--blue); line-height:1.4; margin-top:.22rem;}

  /* ================= io ================= */
  .io{display:grid; grid-template-columns:1fr auto; gap:var(--s2); margin-top:var(--s3);}
  .progress-btn{
    border:0; border-radius:12px; background:var(--amber); color:#10131A;
    padding:.82rem .6rem; font-size:1.04rem; font-weight:800; font-family:inherit; letter-spacing:.04em;
    box-shadow:0 2px 0 rgba(0,0,0,.45);
  }
  .progress-btn:active{transform:translateY(1px); box-shadow:0 1px 0 rgba(0,0,0,.45);}
  .settings-btn{
    border:1px solid var(--border); background:var(--panel); color:var(--label);
    border-radius:12px; padding:.82rem 1rem; font-size:.9rem; font-weight:800; font-family:inherit; white-space:nowrap;
  }

  /* ================= focus / reduced motion ================= */
  .ctap:focus-visible,.cdec:focus-visible,.seg-btn:focus-visible,.sbtn:focus-visible,
  .progress-btn:focus-visible,.settings-btn:focus-visible,.hd-btn:focus-visible{
    outline:2px solid var(--amber); outline-offset:2px;
  }
  @media (prefers-reduced-motion:reduce){
    .ctap.flash-plus,.ctap.flash-minus,.cnum.pop,.iv-full.pop{animation:none;}
  }

  /* ================= 横向き: 読む列 / 押す列 の2カラム ================= */
  @media (orientation:landscape){
    .hd{margin-bottom:var(--s2);}
    .hd-machine{font-size:.92rem;}
    .meter{margin-bottom:var(--s2);}
    .mt-v{font-size:1.2rem;}
    .tabs{margin-bottom:var(--s2);}
    .modebox{margin-bottom:var(--s2);}
    #tab-play,#tab-hit{display:grid; grid-template-columns:1fr 1fr; gap:var(--s3); align-items:start;}
    #tab-play .group,#tab-hit .group{margin-bottom:0;}
    .cnum{font-size:1.8rem;}
    .grid1 .cnum{font-size:2rem;}
    .grid3 .cnum{font-size:1.5rem;}
    .io{margin-top:var(--s2);}
    .progress-btn{padding:.6rem .6rem;}
    .settings-btn{padding:.6rem .9rem;}
  }

  /* ---- ラベル折り返し(見切れ防止) ---- */
  .cname{overflow-wrap:anywhere;}
  .iv-full{white-space:normal; overflow:visible; text-overflow:clip;}
  /* R数セル: 構成比は独立行に置いて横詰まりを解消 */
  .grid3 .chead{flex-wrap:wrap;}
  .grid3 .cname{order:1;}
  .grid3 .cdec{order:2;}
  .grid3 .rpct{order:3; flex-basis:100%; text-align:right; margin-top:.08rem;}

  /* ---- 縦が短い端末(iPhone SE等): 余白と数字を詰めて等倍を守る ---- */
  @media (max-height:720px) and (orientation:portrait){
    :root{--s2:.3rem; --s3:.45rem;}
    .hd{margin-bottom:var(--s2);}
    .hd-machine{font-size:.96rem;}
    .mt{padding:.34rem .28rem .4rem;}
    .mt-v{font-size:1.28rem;}
    .tabs .seg-btn{padding:.48rem .2rem; font-size:.94rem;}
    .seg2 .seg-btn{padding:.44rem .2rem; font-size:.8rem;}
    .chead{padding:.34rem .45rem .06rem;}
    .ctap{padding:.04rem .45rem .34rem;}
    .ctapd{padding:.04rem .45rem .4rem;}
    .cnum{font-size:1.95rem;}
    .grid1 .cnum{font-size:2.15rem;}
    .grid3 .cnum{font-size:1.5rem;}
    .cell.auto10 .cnum{font-size:1.5rem;}
    .icell{padding:.34rem .45rem .42rem;}
    .iv-full{font-size:1.06rem; margin:.06rem 0 .24rem;}
    .sbtn{padding:.38rem 0;}
    .gain-note{margin-top:.14rem;}
    .progress-btn{padding:.66rem .6rem;}
    .settings-btn{padding:.66rem .85rem;}
  }

  /* ---- 横向き: 上段に「読む」、下段に「押す」を2カラムで ---- */
  @media (orientation:landscape){
    .app{
      max-width:none;
      display:grid; grid-template-columns:1fr 1fr; column-gap:var(--s3); row-gap:var(--s2);
      grid-template-areas:"hd meter" "tabs mode" "body body" "io io";
      align-content:start;
    }
    .app-lite{grid-template-areas:"hd meter" "mode mode" "body body" "io io";}
    .hd{grid-area:hd; margin-bottom:0; align-items:center;}
    .meter{grid-area:meter; margin-bottom:0;}
    .tabs{grid-area:tabs; margin-bottom:0; align-self:end;}
    .modebox{grid-area:mode; margin-bottom:0;}
    .mode-note{display:none;}
    #tab-play,#tab-hit{grid-area:body; display:grid; grid-template-columns:1fr 1fr; column-gap:var(--s3); align-items:start;}
    #tab-play .group,#tab-hit .group{margin-bottom:0;}
    .io{grid-area:io; margin-top:0;}
    .hd-kicker{display:none;}
    .hd-machine{font-size:.88rem;}
    .mt{padding:.28rem .25rem .34rem;}
    .mt-l{font-size:.6rem; letter-spacing:.06em;}
    .mt-v{font-size:1.12rem;}
    .tabs .seg-btn{padding:.4rem .2rem; font-size:.9rem;}
    .seg2{padding:.2rem;}
    .seg2 .seg-btn{padding:.36rem .2rem; font-size:.78rem;}
    .glabel{margin-bottom:.24rem;}
    .chead{padding:.3rem .45rem .04rem;}
    .ctap{padding:.02rem .45rem .3rem;}
    .ctapd{padding:.02rem .45rem .34rem;}
    .cnum{font-size:1.6rem;}
    .grid1 .cnum{font-size:1.75rem;}
    .grid3 .cnum{font-size:1.32rem;}
    .cell.auto10 .cnum{font-size:1.32rem;}
    .icell{padding:.3rem .42rem .38rem;}
    .iv-full{font-size:.94rem; margin:.04rem 0 .2rem;}
    .iv-full small{display:block; margin-left:0;}
    .sbtn{padding:.34rem 0; font-size:1rem;}
    .route-note{font-size:.6rem;}
    .io{display:grid; grid-template-columns:1fr auto;}
    .progress-btn{padding:.54rem .6rem; font-size:.96rem;}
    .settings-btn{padding:.54rem .8rem; font-size:.84rem;}
  }

  /* ---- ダーク版の微調整 ---- */
  @media (orientation:landscape){
    .mt-l{font-size:.58rem;}
    .seg2{padding:.16rem;}
  }

  /* ---- Pro(項目最多)の詰め ---- */
  @media (max-height:720px) and (orientation:portrait){
    .app-pro .cnum{font-size:1.8rem;}
    .app-pro .grid1 .cnum{font-size:2rem;}
    .app-pro .vsub{margin:.2rem 0 .2rem .15rem;}
  }
  @media (orientation:landscape){
    .app-pro .vsub{margin:.14rem 0 .16rem .15rem; font-size:.6rem;}
    .app-pro .cnum{font-size:1.4rem;}
    .app-pro .grid1 .cnum{font-size:1.55rem;}
    .app-pro .grid3 .cnum{font-size:1.15rem;}
    .app-pro .cell.auto10 .cnum{font-size:1.15rem;}
    .app-pro .chead{padding:.24rem .4rem .02rem;}
    .app-pro .ctap{padding:.02rem .4rem .24rem;}
  }
  /* ---- Lite(1画面・キーが大きい)の詰め ---- */
  @media (max-height:720px) and (orientation:portrait){
    .app-lite .grid1 .cnum{font-size:1.95rem;}
    .app-lite .chead{padding:.3rem .45rem .04rem;}
    .app-lite .ctap{padding:.02rem .45rem .3rem;}
  }
  @media (orientation:landscape){
    .app-lite #tab-play{grid-template-columns:1fr 1fr;}
    .app-lite .grid1 .cnum{font-size:1.7rem;}
  }
  @media (orientation:landscape){
    /* Pro: 拾い4セルを1行に並べて縦を稼ぐ */
    .app-pro #gridRoute{grid-template-columns:repeat(4,1fr);}
    .app-pro #gridRoute .ctap{justify-content:center; padding-bottom:.5rem;}
    .app-pro #gridRoute .cnum{font-size:1.15rem;}
    .app-pro #gridRoute .cplus{position:absolute; right:.3rem; bottom:.3rem; width:1.4rem; height:1.4rem; font-size:.58rem;}
    .app-pro #gridRoute .cdec{width:1.9rem; height:1.7rem; font-size:.95rem;}
    .app-pro #gridVSP{grid-template-columns:1fr 1fr;}
    .app-pro .glabel{margin-bottom:.16rem;}
    .app-pro .route-note{font-size:.56rem;}
  }

  /* ---- 縦が短い端末での階層別の追い込み ---- */
  @media (max-height:720px) and (orientation:portrait){
    /* Pro: 拾い4セルを1行にして2行ぶんの縦を回収 */
    .app-pro #gridRoute{grid-template-columns:repeat(4,1fr);}
    .app-pro #gridRoute .ctap{justify-content:center; padding-bottom:.48rem;}
    .app-pro #gridRoute .cnum{font-size:1.3rem;}
    .app-pro #gridRoute .cplus{position:absolute; right:.26rem; bottom:.26rem; width:1.3rem; height:1.3rem; font-size:.54rem;}
    .app-pro #gridRoute .cdec{width:1.8rem; height:1.6rem; font-size:.9rem;}
    .app-lite .grid1 .cnum{font-size:1.75rem;}
    .app-lite .chead{padding:.26rem .42rem .02rem;}
    .app-lite .ctap{padding:.02rem .42rem .26rem;}
    .app-lite .cdirect{font-size:1.15rem; padding:.32rem .45rem;}
  }
  @media (orientation:landscape){
    .app-pro .grid3 .cnum{font-size:1.05rem;}
    .app-pro #gridVSP .cnum{font-size:1.05rem;}
    .app-pro .vsub{margin:.1rem 0 .12rem .15rem;}
    .app-lite .grid1 .cnum{font-size:1.45rem;}
    .app-lite .chead{padding:.22rem .4rem .02rem;}
    .app-lite .ctap{padding:.02rem .4rem .22rem;}
    .app-lite .cdirect{font-size:1.1rem; padding:.28rem .45rem;}
  }
  /* ================= stats ================= */
  .stats{
    background:linear-gradient(180deg, var(--panel-2), var(--panel));
    border:1px solid var(--line); border-radius:var(--r);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.06);
    padding:.42rem .6rem .5rem;

    max-height:62vh; overflow-y:auto; -webkit-overflow-scrolling:touch;
  }
  .stats-grid{display:grid; grid-template-columns:1fr; gap:0;}
  .st{
    display:flex; flex-direction:row; justify-content:space-between; align-items:baseline; gap:.6rem;
    padding:.34rem 0; border-bottom:1px solid var(--line);
  }
  .stats-grid .st:last-child{border-bottom:none;}
  .stk{font-size:1rem; font-weight:800; color:var(--label); line-height:1.3;}
  .stv{
    font-size:1.42rem; font-weight:800; line-height:1.05; color:var(--text); white-space:nowrap;
    font-variant-numeric:tabular-nums;
  }
  .stv.hi{color:var(--amber); text-shadow:0 0 12px var(--amber-glow);}
  .stv.plus{color:var(--green);}
  .stv.minus{color:var(--red);}

  /* ================= share overlay ================= */
  .share-backdrop{
    position:absolute; inset:0; background:rgba(0,0,0,.78); z-index:999998;
    display:none; align-items:center; justify-content:center; padding:1rem;
  }
  .share-backdrop.show{display:flex;}
  .share-box{
    width:100%; max-width:440px; background:var(--panel);
    border:1px solid var(--border); border-radius:16px; padding:.95rem;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.06);
  }
  .share-box h3{margin:0 0 .6rem; font-size:1rem; color:var(--text);}
  .share-box img{width:100%; border-radius:8px; display:block; background:#fff;}
  .share-note{font-size:.76rem; color:var(--label); margin:.55rem 0;}
  .share-actions{display:flex; gap:.5rem;}
  .sh-btn{
    flex:1; border:1px solid var(--border); background:var(--panel-hi); color:var(--text);
    border-radius:10px; padding:.68rem 0; font-size:.92rem; font-weight:800; font-family:inherit;
  }
  .sh-btn.primary{border-color:var(--green); background:var(--green-dim); color:var(--green);}
  .sh-primary{border-color:var(--amber); background:var(--amber-dim); color:var(--amber);}
  .share-actions-2{flex-wrap:wrap;}
  .img-box{max-width:400px;}
  .img-hint{font-size:.76rem; color:var(--label); margin:.55rem 0 .7rem; text-align:center; line-height:1.5;}
  #summaryImg{width:100%; border-radius:10px; display:block; background:#111;}

  /* ================= settings sheet ================= */
  .sheet-backdrop{position:fixed; inset:0; background:rgba(0,0,0,.68); z-index:999997; display:none; align-items:center; justify-content:center; padding:1rem;}
  .sheet-backdrop.show{display:flex;}
  .sheet{
    width:100%; max-width:440px; margin:0 auto;
    background:var(--panel); border-top-left-radius:18px; border-top-right-radius:18px;
    border:1px solid var(--border); padding:1rem 1rem 1.3rem;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.06);
    max-height:92vh; overflow-y:auto; -webkit-overflow-scrolling:touch;
  }
  .sheet h2{font-size:1.08rem; margin:0 0 .9rem; color:var(--text);}
  .sheet .row2{margin-bottom:1rem;}
  .row-lbl{font-size:.86rem; color:var(--label); font-weight:800; margin-bottom:.45rem;}
  .chips{display:flex; gap:.4rem; flex-wrap:wrap; align-items:center;}
  .chip{
    padding:.46rem .82rem; border-radius:999px; border:1px solid var(--border);
    background:var(--panel-hi); color:var(--text); font-size:.88rem; font-weight:700; font-family:inherit;
  }
  .chip.active{border-color:var(--amber); color:var(--amber); background:var(--amber-dim);}
  .sheet input.setting-num{
    width:96px; background:rgba(0,0,0,.28); border:1px solid var(--line); color:var(--text);
    border-radius:8px; padding:.45rem .55rem; font-size:.94rem; font-weight:800;
    font-family:"SF Mono","Roboto Mono","Menlo",monospace;
  }
  .unit-note{font-size:.76rem; color:var(--label); margin-left:.4rem;}
  .sheet-actions{display:flex; gap:.5rem;}
  .sa-btn{
    flex:1; border:1px solid var(--border); background:var(--panel-hi); color:var(--text);
    border-radius:10px; padding:.66rem 0; font-size:.88rem; font-weight:800; font-family:inherit;
  }
  .sa-btn.danger{border-color:var(--red); background:var(--red-dim); color:var(--red);}
  .sheet-close{
    width:100%; margin-top:1rem; border:1px solid var(--border); background:var(--panel-hi); color:var(--text);
    border-radius:10px; padding:.7rem 0; font-weight:800; font-family:inherit; font-size:.94rem;
  }
  .save-note{text-align:center; font-size:.76rem; color:var(--label); margin-top:.5rem;}


  /* ===== Lite専用 ===== */
  .topbar-lite{justify-content:stretch;}
  .seg-mode-lite{flex:1; display:flex;}
  .seg-mode-lite .seg-btn{flex:1;}
  .invest1{grid-template-columns:1fr;}
  .g-pick-lite .cell{border-color:var(--amber); box-shadow:0 0 0 1px var(--amber-dim);}
  .g-pick-lite .cnum{color:var(--amber);}
  #tab-play .group{margin-bottom:.5rem;}
  #tab-play .grid1{margin-bottom:.28rem;}
  .topbar-lite{margin-bottom:.5rem;}
  .g-count .route-note{margin-top:.3rem;}

  /* ================= 使い方モーダル ================= */
  .help-body{max-height:60vh; overflow-y:auto; -webkit-overflow-scrolling:touch; margin:.2rem 0 .3rem;}
  .help-lead{font-size:.86rem; font-weight:700; color:var(--label); line-height:1.55; margin:.2rem 0 .7rem;}
  .help-steps{margin:0 0 .6rem; padding-left:1.3rem;}
  .help-steps li{font-size:.84rem; font-weight:700; color:var(--label); line-height:1.5; margin-bottom:.6rem;}
  .help-steps li b{color:var(--amber); font-weight:800;}
  .help-note{font-size:.78rem; font-weight:700; color:var(--label); line-height:1.6; opacity:.9; border-top:1px solid var(--line); padding-top:.5rem; margin:.4rem 0 0;}

  /* ================= 発表演出オーバーレイ ================= */
  .reveal{
    position:absolute; inset:0; z-index:999999; display:none;
    align-items:center; justify-content:center; overflow:hidden;
    background:radial-gradient(120% 90% at 50% 40%, rgba(20,26,38,.92), rgba(5,7,11,.98));
    -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px);
  }
  .reveal.show{display:flex; animation:revfade .25s ease-out;}
  @keyframes revfade{from{opacity:0;}to{opacity:1;}}
  .reveal.flash::after{
    content:""; position:absolute; inset:0; z-index:3; background:#fff; pointer-events:none;
    animation:revflash .26s ease-out;
  }
  @keyframes revflash{0%{opacity:.85;}100%{opacity:0;}}
  .reveal-inner{
    position:relative; z-index:2; text-align:center; padding:1.5rem;
    display:flex; flex-direction:column; align-items:center; gap:.5rem; max-width:440px; width:100%;
  }
  .reveal-heading{font-size:.92rem; font-weight:800; letter-spacing:.1em; color:var(--label); opacity:.85; margin-bottom:.4rem;}
  /* 3段階ステージ */
  .reveal-stages{display:flex; flex-direction:column; gap:.5rem; width:100%; max-width:340px; margin-bottom:.3rem;}
  .rstage{
    display:flex; justify-content:space-between; align-items:baseline; gap:.6rem;
    padding:.55rem .9rem; border:1px solid var(--line); border-radius:12px; background:var(--panel);
    opacity:0; transform:translateY(8px) scale(.96);
  }
  .rstage.pop{animation:banpop .42s cubic-bezier(.2,1.5,.35,1) forwards;}
  @keyframes banpop{0%{opacity:0;transform:translateY(8px) scale(.8);}55%{opacity:1;transform:translateY(0) scale(1.08);}100%{opacity:1;transform:translateY(0) scale(1);}}
  .rstage-label{font-size:.82rem; font-weight:800; color:var(--label); text-align:left;}
  .rstage-value{font-size:1.5rem; font-weight:800; font-variant-numeric:tabular-nums; white-space:nowrap;}
  .rstage-value.plus{color:var(--green);}
  .rstage-value.minus{color:var(--red);}
  /* 段階が進むほど大きく強調 */
  .rstage.lv1 .rstage-value{font-size:1.35rem;}
  .rstage.lv2 .rstage-value{font-size:1.7rem;}
  .rstage.lv3 .rstage-value{font-size:2.1rem;}
  .rstage.lv3{border-color:var(--border); box-shadow:0 0 18px rgba(255,195,81,.12);}
  .reveal-tier-wrap{display:flex; flex-direction:column; align-items:center; gap:.1rem; min-height:8.5rem; justify-content:center;}
  .reveal-tier{font-size:6.5rem; font-weight:800; line-height:1; font-family:"SF Mono","Roboto Mono","Menlo",monospace; display:inline-block;}
  .reveal.revealed .reveal-tier{animation:tierIn .5s cubic-bezier(.2,1.5,.4,1);}
  @keyframes tierIn{0%{transform:scale(0) rotate(-25deg);opacity:0;}100%{transform:scale(1) rotate(0);opacity:1;}}
  .reveal-tier-name{font-size:1.3rem; font-weight:800; letter-spacing:.1em; color:var(--text);}
  .reveal-hint{margin-top:1rem; font-size:.9rem; font-weight:800; color:var(--label); opacity:0; transition:opacity .4s; border:1px solid var(--border); border-radius:999px; padding:.5rem 1.2rem; background:var(--panel);}
  .reveal.tier-S .reveal-tier{color:var(--amber); text-shadow:0 0 30px rgba(255,195,81,.7),0 0 60px rgba(255,195,81,.4);}
  .reveal.tier-S .reveal-tier-name{color:var(--amber);}
  .reveal.tier-A .reveal-tier{color:var(--red); text-shadow:0 0 26px rgba(255,123,118,.6);}
  .reveal.tier-A .reveal-tier-name{color:var(--red);}
  .reveal.tier-B .reveal-tier{color:var(--green); text-shadow:0 0 22px rgba(74,222,128,.5);}
  .reveal.tier-B .reveal-tier-name{color:var(--green);}
  .reveal.tier-C .reveal-tier{color:var(--blue); text-shadow:0 0 18px rgba(110,193,255,.45);}
  .reveal.tier-C .reveal-tier-name{color:var(--blue);}
  .reveal.tier-D .reveal-tier{color:var(--violet); text-shadow:0 0 16px rgba(196,165,255,.4);}
  .reveal.tier-D .reveal-tier-name{color:var(--violet);}
  .reveal-confetti{position:absolute; inset:0; z-index:1; pointer-events:none; overflow:hidden;}
  .confetti-piece{position:absolute; top:-8%; width:10px; height:14px; opacity:.95; animation-name:conffall; animation-timing-function:cubic-bezier(.3,.2,.5,1); animation-fill-mode:forwards;}
  @keyframes conffall{0%{transform:translateY(-10vh) translateX(0) rotate(0);opacity:1;}100%{transform:translateY(110vh) translateX(var(--drift)) rotate(var(--rot));opacity:0;}}
  @media (prefers-reduced-motion:reduce){
    .reveal.revealed .reveal-tier,.reveal.revealed .reveal-amount{animation:none;}
    .reveal.flash::after{animation:none; opacity:0;}
    .confetti-piece{display:none;}
  }

  /* ==== v5 ==== */
  .cell-always-direct .ctap{display:none;}
  .cell-always-direct .cdec{display:none;}
  .cell-always-direct .cdirect{display:block;}
  .sthero{margin:0 0 .6rem; padding:.55rem .7rem .6rem; border:1px solid var(--line); border-radius:14px; background:var(--amber-dim);}
  .sthero-tier{font-size:1.45rem; font-weight:900; text-align:center; letter-spacing:.04em; margin-bottom:.25rem;}
  .sthero-tier.tier-S{color:var(--amber);}
  .sthero-tier.tier-A{color:var(--red);}
  .sthero-tier.tier-B{color:var(--green);}
  .sthero-tier.tier-C{color:var(--blue);}
  .sthero-tier.tier-D{color:var(--violet);}
  .sthero-tier.tier-none{color:var(--label); font-size:1.05rem;}
  .sthero-row{display:flex; justify-content:space-between; align-items:baseline; padding:.13rem 0;}
  .sthero-row .stv{font-size:1.25rem;}
  .stats-toggle{display:block; width:100%; padding:.5rem; margin:0 0 .45rem; font-weight:800; font-size:.92rem; color:var(--text); background:var(--panel-2); border:1px solid var(--line); border-radius:10px;}
  .stats-detail{display:none;}
  .stats-detail.open{display:block;}
  .stv .bnote{font-size:.72em; font-weight:800; margin-left:.15em;}

  /* v6: 4列表示時のルートセルはラベルを詰め、−ボタンをわずかに縮めて語中折れを防ぐ */
  @media (orientation:landscape){
    .app-pro #gridRoute .cname{font-size:.82rem; letter-spacing:0;}
    .app-pro #gridRoute .cdec{width:1.6rem;}
  }
  @media (max-height:720px) and (orientation:portrait){
    .app-pro #gridRoute .cname{font-size:.82rem; letter-spacing:0;}
    .app-pro #gridRoute .cdec{width:1.6rem;}
  }

  /* ==== v7: 級数アップ+ボタン圧縮(読みやすさ最優先・縮小フィット廃止) ==== */
  .hd-machine{font-size:1.18rem;}
  .hd-btn{font-size:.95rem; padding:.5rem .9rem;}
  .tabs .seg-btn{font-size:1.15rem; padding:.5rem .2rem;}
  .seg2 .seg-btn{font-size:1.05rem; padding:.46rem .2rem;}
  .chead{padding:.4rem .5rem .08rem;}
  .cdec{width:2.2rem; height:1.8rem; font-size:1.05rem;}
  .ctap{padding:.05rem .5rem .42rem;}
  .cnum{font-size:2.05rem;}
  .grid1 .cnum{font-size:2.2rem;}
  .grid3 .cnum{font-size:1.6rem;}
  .cell.auto10 .cnum{font-size:1.6rem;}
  .cplus{width:1.9rem; height:1.9rem; font-size:.95rem;}
  .grid3 .cplus{width:1.7rem; height:1.7rem; font-size:.85rem;}
  .grid3 .cdec{width:2rem; height:1.7rem; font-size:1rem;}
  .cdirect{font-size:1.3rem;}
  .sbtn{padding:.36rem 0; font-size:1.05rem;}
  .gain-input{font-size:1.25rem;}
  .gain-unit{font-size:1rem;}
  .ival{font-size:1.2rem;}
  .progress-btn{padding:.68rem .6rem; font-size:1.12rem;}
  .settings-btn{padding:.68rem .8rem; font-size:1rem;}
  /* 「縮めて等倍を守る」系の旧ルールを、縮めない方針で上書き(同メディアスコープで後勝ち) */
  @media (max-height:720px) and (orientation:portrait){
    :root{--s2:.38rem; --s3:.55rem;}
    .hd-machine{font-size:1.18rem;}
    .mt{padding:.42rem .3rem .5rem;}
    .mt-v{font-size:1.42rem;}
    .tabs .seg-btn{font-size:1.15rem; padding:.5rem .2rem;}
    .seg2 .seg-btn{font-size:1.05rem; padding:.46rem .2rem;}
    .chead{padding:.4rem .5rem .08rem;}
    .ctap{padding:.05rem .5rem .42rem;}
    .cnum{font-size:2.05rem;}
    .grid1 .cnum{font-size:2.2rem;}
    .grid3 .cnum{font-size:1.6rem;}
    .cell.auto10 .cnum{font-size:1.6rem;}
    .iv-full{font-size:1.2rem;}
    .sbtn{padding:.36rem 0;}
    .progress-btn{padding:.68rem .6rem;}
    .settings-btn{padding:.68rem .8rem;}
    /* Pro: 4列圧縮をやめて2列に(縮小より読みやすさ優先・スクロール許容) */
    .app-pro #gridRoute{grid-template-columns:1fr 1fr;}
    .app-pro #gridRoute .ctap{justify-content:space-between; padding-bottom:.42rem;}
    .app-pro #gridRoute .cnum{font-size:2.05rem;}
    .app-pro #gridRoute .cplus{position:static; width:1.9rem; height:1.9rem; font-size:.95rem;}
    .app-pro #gridRoute .cdec{width:2.2rem; height:1.8rem; font-size:1.05rem;}
    .app-pro #gridRoute .cname{font-size:var(--lab); letter-spacing:.02em;}
    .app-lite .grid1 .cnum{font-size:2.2rem;}
    .app-lite .chead{padding:.4rem .5rem .08rem;}
  }
  @media (orientation:landscape){
    .app-pro #gridRoute .cname{font-size:var(--lab); letter-spacing:.02em;}
    .app-pro #gridRoute .cdec{width:2.2rem;}
  }

  /* v7b: ラベル折れの解消(投資セル=注記を2行目へ / 3列セル=ラベル全幅化) */
  .icell .chead{flex-wrap:wrap;}
  .icell .cname{white-space:nowrap; flex:none;}
  .cstep{margin-left:auto;}
  .grid3 .cname{flex-basis:100%; font-size:1.15rem;}
  .grid3 .cdec{margin-left:auto;}

  /* v7c: Proルートセルのサブ(スロープ下段から)の語中折れ防止 */
  .app-pro #gridRoute .csub{font-size:.92rem;}

  /* v8.1: 主画面の数値入力欄を左揃えに(総開放回数・獲得出玉・まとめて入力時の各欄・投資直接入力) */
  .cdirect{text-align:left;}
  .gain-input{text-align:left;}

  /* ==== v9: 数値/単位の階層分離+面の言語の統一 ==== */
  .stv .u,.mt-v .u{font-size:.58em; font-weight:800; opacity:.92; margin-left:.07em; letter-spacing:0;
    font-family:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Hiragino Sans","Yu Gothic UI","Yu Gothic",sans-serif;}
  .mt-v{font-size:1.62rem;}
  .mt-l{letter-spacing:.06em;}
  .glabel{border-left:3px solid var(--amber); padding-left:.45rem; letter-spacing:.1em; color:var(--text); opacity:.85; line-height:1.2;}
  /* 入力する面=凹み(押す面の立体と対比) */
  .cdirect,.gain-input{background:rgba(0,0,0,.45); box-shadow:inset 0 2px 8px rgba(0,0,0,.45);}
  .cdirect:focus,.gain-input:focus{outline:2px solid var(--amber); outline-offset:0; border-color:var(--amber);}
  /* 自動計算=金の平面(押せない面) */
  .cell.auto10{background:linear-gradient(180deg,rgba(255,195,81,.10),rgba(255,195,81,.04)); border-color:rgba(255,195,81,.4); box-shadow:none;}
  /* モード切替: 選択中は塗りで明示 */
  .seg2 .seg-btn.active{background:var(--amber); border-color:var(--amber); color:#10131A;}
  .progress-btn{font-size:1.2rem; letter-spacing:.06em; background:linear-gradient(180deg,#FFD37E,var(--amber));}
  .sthero-k{font-size:.88rem; font-weight:800; letter-spacing:.14em; text-align:center; color:var(--label); margin-bottom:.05rem;}
  .stats-detail .stv{font-size:1.18rem;}

  /* v9.1: ヒーローをまとめ画像と同じカード表現に */
  .sthero-judge{display:flex; align-items:center; justify-content:center; gap:.8rem;
    border:2px solid currentColor; border-radius:12px; padding:.4rem .6rem .5rem; margin-bottom:.45rem;}
  .sthero-letter{font-size:2.7rem; font-weight:900; line-height:1;}
  .sthero-side{display:flex; flex-direction:column; align-items:flex-start; gap:.05rem;}
  .sthero-judge .sthero-k{font-size:.8rem; font-weight:800; letter-spacing:.12em; color:var(--label); margin:0; text-align:left;}
  .sthero-name{font-size:1.5rem; font-weight:900; line-height:1.1;}
  .sthero-judge.tier-S{color:var(--amber);}
  .sthero-judge.tier-A{color:var(--red);}
  .sthero-judge.tier-B{color:var(--green);}
  .sthero-judge.tier-C{color:var(--blue);}
  .sthero-judge.tier-D{color:var(--violet);}
  .sthero-judge.tier-none{color:var(--label);}
  .sthero-judge.tier-none .sthero-letter{font-size:2rem;}

  /* ==== v11: モード切替チップ ==== */
  .tier-seg{display:inline-flex; gap:.24rem; margin-bottom:.2rem;}
  .tier-chip{display:inline-block; padding:.2rem .62rem; border:1px solid var(--line); border-radius:999px;
    font-size:.82rem; font-weight:800; color:var(--label); text-decoration:none; letter-spacing:.06em; cursor:pointer;}
  .tier-chip.active{background:var(--amber); border-color:var(--amber); color:#10131A; cursor:default;}
