@charset "Shift_JIS";

  :root{
    --bg:#FFF3DE;
    --card:#FFFFFF;
    --ink:#26314F;
    --ink-soft:#3A4666;
    --line:#26314F;
    --win:#F2F4FA;
    --winline:#C9D1E4;
    --orange:#F08C00;
    --orange-ink:#B96300;
    --orange-pale:#FFE9BF;
    --red:#FF6B81;
    --red-ink:#D6373D;
    --red-pale:#FFDEE3;
    --blue:#5BC2FF;
    --blue-ink:#0E7DC2;
    --blue-pale:#DDF2FF;
    --purple:#B39DFF;
    --purple-ink:#7C5CE0;
    --purple-pale:#EDE7FF;
    --green:#4ED99B;
    --green-ink:#158A4E;
    --green-pale:#DDF7EA;
    --yellow:#FFC93C;
    --r:16px;
    --pop-shadow:0 3px 0 var(--ink);
    /* まとめ画像用パレット(JS共通・スキンごとに色定義) */
    --img-bg:#FFF3DE; --img-panel:#FFFFFF; --img-text:#26314F; --img-sub:#3A4666;
    --img-accent:#B96300; --img-line:#C9D1E4;
    --img-pos:#158A4E; --img-neg:#D6373D;
    --img-tier-s:#F08C00; --img-tier-a:#D6373D; --img-tier-b:#158A4E; --img-tier-c:#0E7DC2; --img-tier-d:#7C5CE0;
    --img-dark:0;
  }
  #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:3px solid var(--blue-ink); outline-offset:1px;}
  html{-webkit-text-size-adjust:100%;}
  #hnmRoot{
    display:block;
    position:relative; /* revealなどのposition:absoluteの基準にする */
    margin:0; padding:0;
    background:
      radial-gradient(circle at 12% -4%, rgba(255,201,60,.35), transparent 30%),
      radial-gradient(circle at 92% 0%, rgba(91,194,255,.28), transparent 26%),
      var(--bg);
    color:var(--ink);
    font-family:"Hiragino Maru Gothic ProN","Hiragino Sans","Yu Gothic",-apple-system,BlinkMacSystemFont,Meiryo,sans-serif;
    font-size:16px;
    font-weight:700;
  }
  .num{font-family:inherit; font-variant-numeric:tabular-nums;}
  .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;
    /* 文字コントラスト確保用の濃色(背景がクリーム/白のため) */
    --sh-accent-ink:#9C5300; --sh-note-ink:#0B6699;
  }
  .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(--sh-accent-ink); margin-bottom:.1rem;}
  .hd-machine{display:block; font-size:1.02rem; font-weight:800; color:var(--ink); line-height:1.2; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .hd-btn{
    flex:none; border:2px solid var(--ink); background:var(--card); color:var(--ink);
    border-radius:999px; padding:.4rem .8rem; font-size:.76rem; font-weight:800; font-family:inherit; letter-spacing:.04em;
    box-shadow:0 2px 0 var(--ink);
  }
  .hd-btn:active{transform:translateY(2px); box-shadow:none;}

  /* ================= 素性メーター(signature) ================= */
  .meter{margin-bottom:var(--s3);}
  .meter-bar{
    display:grid; grid-template-columns:repeat(3,1fr);
    background:var(--card); border:2px solid var(--ink); border-top:5px solid var(--orange);
    border-radius:14px; overflow:hidden; box-shadow:0 3px 0 var(--ink);
  }
  .mt{padding:.42rem .3rem .5rem; text-align:center; border-right:2px solid var(--winline); min-width:0;}
  .mt:last-child{border-right:none;}
  .mt-l{display:block; font-size:var(--micro); font-weight:800; letter-spacing:.08em; color:var(--ink-soft); margin-bottom:.14rem; white-space:nowrap;}
  .mt-v{display:block; font-size:1.42rem; font-weight:800; color:var(--sh-accent-ink); line-height:1;
    font-variant-numeric:tabular-nums; white-space:nowrap;}

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

  .modebox{margin-bottom:var(--s3);}
  .seg2{display:grid; grid-template-columns:1fr 1fr; gap:.3rem; background:var(--win);
    border:2px solid var(--ink); border-radius:14px; padding:.26rem; box-shadow:0 2px 0 var(--ink);}
  .seg2 .seg-btn{
    border:2px solid transparent; border-radius:10px; background:transparent; color:var(--ink-soft);
    padding:.5rem .2rem; font-size:.84rem; font-weight:800; font-family:inherit;
  }
  .seg2 .seg-btn.active{background:var(--yellow); border-color:var(--ink); color:var(--ink);}
  .mode-note{margin:.3rem 0 0 .15rem; font-size:var(--micro); font-weight:800; color:var(--ink-soft); 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(--ink-soft); 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:var(--card); border:2px solid var(--ink); border-radius:var(--key-r);
    box-shadow:0 3px 0 var(--ink);
  }
  .cell:active{transform:translateY(3px); box-shadow:none;}
  .chead{display:flex; align-items:flex-start; gap:.35rem; padding:.44rem .5rem .1rem;}
  .cno{display:none;}
  .cname{flex:1; min-width:0; font-size:var(--lab); font-weight:800; letter-spacing:.03em; color:var(--ink); line-height:1.22;}
  .csub{display:block; font-size:var(--micro); font-weight:800; color:var(--ink-soft); line-height:1.25;}
  .cdec{
    flex:none; width:2.5rem; height:2rem; border-radius:10px;
    border:2px solid var(--ink); background:var(--win); color:var(--ink);
    font-size:1.15rem; font-weight:800; font-family:inherit; line-height:1;
  }
  .cdec:active{background:var(--red-pale); border-color:var(--red-ink); color:var(--red-ink);}
  .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(--ink);
    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:2px solid var(--ink); background:var(--yellow); color:var(--ink);
    font-size:.76rem; font-weight:800;
  }
  .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:var(--orange-pale); border-color:var(--orange);}
  .cell.auto10:active{transform:none; box-shadow:0 3px 0 var(--ink);}
  .cell.auto10 .cname{color:var(--sh-accent-ink);}
  .ctapd{display:flex; align-items:center; justify-content:center; padding:.06rem .5rem .62rem;}
  .cell.auto10 .cnum{color:var(--sh-accent-ink); font-size:1.72rem;}

  /* R構成比 */
  .rpct{flex:none; font-size:var(--micro); font-weight:800; color:var(--purple-ink);}
  .rwarn{display:none; font-size:var(--micro); font-weight:800; color:var(--red-ink); 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(--ink-soft); line-height:1.45;}
  .vsub{font-size:var(--micro); font-weight:800; letter-spacing:.1em; color:var(--red-ink); margin:.3rem 0 .28rem .15rem;}

  /* フィードバック */
  @keyframes fplus{0%{background:var(--yellow);}100%{background:transparent;}}
  @keyframes fminus{0%{background:var(--red-pale);}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:var(--win); border:2px solid var(--winline); color:var(--ink);
    border-radius:10px; padding:.4rem .5rem; font-size:1.32rem; font-weight:800; text-align:right;
  }
  .cdirect::placeholder{color:rgba(38,49,79,.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(--card); border:2px solid var(--winline); border-radius:12px; padding:.4rem .5rem .5rem; min-width:0;}
  .icell-wide{margin-top:var(--s2);}
  .cstep{flex:none; font-size:var(--micro); font-weight:800; color:var(--sh-note-ink);}
  .ival{color:var(--ink);}
  .iv-full{display:block; font-size:1.16rem; font-weight:800; line-height:1.15; margin:.1rem 0 .34rem;}
  .iv-full small{font-size:.68rem; font-weight:800; color:var(--ink-soft); margin-left:.16rem;}
  .irow{display:flex; align-items:center; gap:.34rem;}
  .sbtn{
    flex:1; border:2px solid var(--ink); background:var(--win); color:var(--ink);
    border-radius:10px; padding:.42rem 0; font-size:1.1rem; font-weight:800; font-family:inherit; line-height:1;
    box-shadow:0 2px 0 var(--ink);
  }
  .sbtn:active{transform:translateY(2px); box-shadow:none; background:var(--yellow);}
  #investCashMinus:active,#investMochiMinus:active{background:var(--red-pale);}
  .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:var(--win); border:2px solid var(--winline); color:var(--ink);
    border-radius:10px; padding:.38rem .5rem; font-size:1.16rem; font-weight:800; text-align:right;
    font-family:"SF Mono","Roboto Mono","Menlo",monospace;
  }
  .gain-input::placeholder{color:rgba(38,49,79,.4);}
  .gain-unit{flex:none; font-size:.8rem; font-weight:800; color:var(--ink-soft);}
  .gain-note{font-size:var(--micro); font-weight:800; color:var(--sh-note-ink); 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:2px solid var(--ink); border-radius:14px; background:var(--yellow); color:var(--ink);
    padding:.78rem .6rem; font-size:1.04rem; font-weight:800; font-family:inherit; letter-spacing:.04em;
    box-shadow:0 4px 0 var(--ink);
  }
  .progress-btn:active{transform:translateY(4px); box-shadow:none;}
  .settings-btn{
    border:2px solid var(--ink); background:var(--card); color:var(--ink);
    border-radius:14px; padding:.78rem 1rem; font-size:.9rem; font-weight:800; font-family:inherit; white-space:nowrap;
    box-shadow:0 4px 0 var(--ink);
  }
  .settings-btn:active{transform:translateY(4px); box-shadow:none;}

  /* ================= 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:3px solid var(--orange); outline-offset:2px;
  }
  @media (prefers-reduced-motion:reduce){
    .ctap.flash-plus,.ctap.flash-minus,.cnum.pop,.iv-full.pop{animation:none;}
    .cell:active,.sbtn:active,.progress-btn:active,.settings-btn:active,.hd-btn:active{transform:none;}
  }

  /* ---- ラベル折り返し(見切れ防止) ---- */
  .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;}
  }

  /* ---- ポップ版は枠線と影が厚く縦に膨らむため、専用に詰める ---- */
  .cell{box-shadow:0 2px 0 var(--ink);}
  .cell:active{transform:translateY(2px);}
  .cell.auto10:active{box-shadow:0 2px 0 var(--ink);}
  .chead{padding:.38rem .45rem .06rem;}
  .ctap{padding:.04rem .45rem .42rem;}
  .ctapd{padding:.04rem .45rem .48rem;}
  .meter-bar{border-top-width:4px; box-shadow:0 2px 0 var(--ink);}
  .mt{padding:.36rem .28rem .42rem;}
  .icell{padding:.34rem .45rem .42rem;}
  .iv-full{margin:.06rem 0 .28rem;}
  .sbtn{padding:.38rem 0; box-shadow:0 2px 0 var(--ink);}
  .progress-btn{padding:.7rem .6rem; box-shadow:0 3px 0 var(--ink);}
  .progress-btn:active{transform:translateY(3px);}
  .settings-btn{padding:.7rem .9rem; box-shadow:0 3px 0 var(--ink);}
  .settings-btn:active{transform:translateY(3px);}
  @media (max-height:720px) and (orientation:portrait){
    .cnum{font-size:1.8rem;}
    .grid1 .cnum{font-size:2rem;}
    .grid3 .cnum{font-size:1.4rem;}
    .cell.auto10 .cnum{font-size:1.4rem;}
    .chead{padding:.3rem .4rem .04rem;}
    .ctap{padding:.02rem .4rem .3rem;}
    .ctapd{padding:.02rem .4rem .34rem;}
    .icell{padding:.28rem .4rem .34rem;}
    .iv-full{font-size:1rem; margin:.04rem 0 .2rem;}
    .progress-btn{padding:.56rem .6rem;}
    .settings-btn{padding:.56rem .85rem;}
  }
  @media (orientation:landscape){
    .cnum{font-size:1.45rem;}
    .grid1 .cnum{font-size:1.6rem;}
    .grid3 .cnum{font-size:1.2rem;}
    .cell.auto10 .cnum{font-size:1.2rem;}
    .chead{padding:.26rem .4rem .02rem;}
    .ctap{padding:.02rem .4rem .26rem;}
    .ctapd{padding:.02rem .4rem .3rem;}
    .icell{padding:.24rem .4rem .3rem;}
    .iv-full{font-size:.88rem; margin:.02rem 0 .16rem;}
    .sbtn{padding:.28rem 0; font-size:.94rem;}
    .meter-bar{border-top-width:3px;}
    .mt{padding:.22rem .22rem .28rem;}
    .mt-v{font-size:1rem;}
    .mt-l{font-size:.58rem;}
    .tabs .seg-btn{padding:.32rem .2rem; font-size:.86rem;}
    .seg2{padding:.16rem;}
    .seg2 .seg-btn{padding:.28rem .2rem; font-size:.74rem;}
    .progress-btn{padding:.44rem .6rem; font-size:.92rem;}
    .settings-btn{padding:.44rem .8rem; font-size:.8rem;}
  }

  /* ---- 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:var(--card);
    border:2px solid var(--line); border-radius:var(--r);
    box-shadow:var(--pop-shadow);
    padding:.42rem .62rem .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:2px dotted var(--winline);
  }
  .stats-grid .st:last-child{border-bottom:none;}
  .stk{font-size:1rem; font-weight:800; color:var(--ink); line-height:1.3;}
  .stv{
    font-size:1.42rem; font-weight:800; line-height:1.05; color:var(--ink); white-space:nowrap;
    font-variant-numeric:tabular-nums;
  }
  .stv.hi{color:var(--orange-ink);}
  .stv.plus{color:var(--green-ink);}
  .stv.minus{color:var(--red-ink);}

  /* ================= share overlay ================= */
  .share-backdrop{
    position:absolute; inset:0; background:rgba(38,49,79,.5); 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(--card);
    border:2px solid var(--line); border-radius:22px; padding:.95rem;
    box-shadow:0 5px 0 var(--ink);
  }
  .share-box h3{margin:0 0 .6rem; font-size:1.05rem; color:var(--ink);}
  .share-box img{width:100%; border-radius:10px; display:block; background:#fff; border:2px solid var(--winline);}
  .share-note{font-size:.78rem; color:var(--ink-soft); margin:.55rem 0; font-weight:800;}
  .share-actions{display:flex; gap:.5rem;}
  .sh-btn{
    flex:1; border:2px solid var(--line); background:var(--win); color:var(--ink);
    border-radius:12px; padding:.68rem 0; font-size:.94rem; font-weight:800; font-family:inherit;
    box-shadow:var(--pop-shadow);
  }
  .sh-btn:active{transform:translateY(3px); box-shadow:none;}
  .sh-btn.primary{background:var(--green); color:var(--ink);}
  .sh-primary{background:var(--yellow); color:var(--ink);}
  .share-actions-2{flex-wrap:wrap;}
  .img-box{max-width:400px;}
  .img-hint{font-size:.78rem; color:var(--ink-soft); margin:.55rem 0 .7rem; text-align:center; line-height:1.5; font-weight:700;}
  #summaryImg{width:100%; border-radius:12px; display:block; background:#fff; border:2px solid var(--winline);}

  /* ================= settings sheet ================= */
  .sheet-backdrop{position:fixed; inset:0; background:rgba(38,49,79,.5); 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(--bg); border-top-left-radius:24px; border-top-right-radius:24px;
    border:2px solid var(--line); border-bottom:none; padding:1rem 1rem 1.3rem;
    max-height:92vh; overflow-y:auto; -webkit-overflow-scrolling:touch;
  }
  .sheet h2{font-size:1.1rem; margin:0 0 .9rem; color:var(--ink);}
  .sheet .row2{margin-bottom:1rem;}
  .row-lbl{font-size:.88rem; color:var(--ink); 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:2px solid var(--line);
    background:var(--card); color:var(--ink); font-size:.88rem; font-weight:800; font-family:inherit;
    box-shadow:0 2px 0 var(--ink);
  }
  .chip:active{transform:translateY(2px); box-shadow:none;}
  .chip.active{background:var(--yellow); color:var(--ink);}
  .sheet input.setting-num{
    width:96px; background:var(--card); border:2px solid var(--line); color:var(--ink);
    border-radius:10px; padding:.45rem .55rem; font-size:.94rem; font-weight:800;
    font-family:inherit; font-variant-numeric:tabular-nums;
  }
  .unit-note{font-size:.78rem; color:var(--ink-soft); margin-left:.4rem; font-weight:800;}
  .sheet-actions{display:flex; gap:.5rem;}
  .sa-btn{
    flex:1; border:2px solid var(--line); background:var(--card); color:var(--ink);
    border-radius:12px; padding:.66rem 0; font-size:.88rem; font-weight:800; font-family:inherit;
    box-shadow:0 2px 0 var(--ink);
  }
  .sa-btn:active{transform:translateY(2px); box-shadow:none;}
  .sa-btn.danger{background:var(--red-pale); color:var(--red-ink); border-color:var(--red-ink); box-shadow:0 2px 0 var(--red-ink);}
  .sheet-close{
    width:100%; margin-top:1rem; border:2px solid var(--line); background:var(--card); color:var(--ink);
    border-radius:12px; padding:.7rem 0; font-weight:800; font-family:inherit; font-size:.94rem;
    box-shadow:0 2px 0 var(--ink);
  }
  .sheet-close:active{transform:translateY(2px); box-shadow:none;}
  .save-note{text-align:center; font-size:.78rem; color:var(--ink-soft); margin-top:.5rem; font-weight:800;}


  /* ===== 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(--orange); box-shadow:0 3px 0 var(--orange);}
  .g-pick-lite .cnum{color:var(--orange-ink);}
  #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:800; color:var(--ink); 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:800; color:var(--ink); line-height:1.5; margin-bottom:.6rem;}
  .help-steps li b{color:var(--orange-ink); font-weight:800;}
  .help-note{font-size:.78rem; font-weight:800; color:var(--ink-soft); line-height:1.6; border-top:2px solid var(--winline); 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(circle at 15% 10%, rgba(255,201,60,.5), transparent 35%),
      radial-gradient(circle at 88% 8%, rgba(91,194,255,.4), transparent 32%),
      radial-gradient(circle at 50% 100%, rgba(255,107,129,.35), transparent 45%),
      var(--bg);
  }
  .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:.8;}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:.95rem; font-weight:800; letter-spacing:.08em; color:var(--ink-soft); margin-bottom:.4rem;}
  .reveal-stages{display:flex; flex-direction:column; gap:.55rem; width:100%; max-width:340px; margin-bottom:.3rem;}
  .rstage{
    display:flex; justify-content:space-between; align-items:baseline; gap:.6rem;
    padding:.55rem .9rem; border:2px solid var(--line); border-radius:14px; background:var(--card);
    opacity:0; transform:translateY(8px) scale(.96); box-shadow:0 2px 0 var(--line);
  }
  .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(--ink); text-align:left;}
  .rstage-value{font-size:1.5rem; font-weight:800; font-variant-numeric:tabular-nums; white-space:nowrap; color:var(--ink);}
  .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(--ink);}
  @keyframes amtpop{0%{transform:scale(1.25);}60%{transform:scale(.96);}100%{transform:scale(1);}}
  .reveal-tier-wrap{display:flex; flex-direction:column; align-items:center; gap:.15rem; min-height:9rem; justify-content:center;}
  .reveal-tier{font-size:6.8rem; font-weight:800; line-height:1; display:inline-block; -webkit-text-stroke:3px var(--ink);}
  .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.4rem; font-weight:800; letter-spacing:.08em; color:var(--ink); background:var(--card); border:2px solid var(--ink); border-radius:999px; padding:.2rem 1rem; box-shadow:0 3px 0 var(--ink); opacity:0; transition:opacity .3s;}
  .reveal.revealed .reveal-tier-name{opacity:1;}
  .reveal-hint{margin-top:1.1rem; font-size:.92rem; font-weight:800; color:var(--ink); opacity:0; transition:opacity .4s; border:2px solid var(--ink); border-radius:999px; padding:.55rem 1.3rem; background:var(--card); box-shadow:0 3px 0 var(--ink);}
  .reveal.tier-S .reveal-tier{color:var(--yellow);}
  .reveal.tier-A .reveal-tier{color:var(--red);}
  .reveal.tier-B .reveal-tier{color:var(--green);}
  .reveal.tier-C .reveal-tier{color:var(--blue);}
  .reveal.tier-D .reveal-tier{color:var(--purple);}
  .reveal.tier-S .reveal-amount{color:var(--orange-ink);}
  .reveal-confetti{position:absolute; inset:0; z-index:1; pointer-events:none; overflow:hidden;}
  .confetti-piece{position:absolute; top:-8%; width:11px; height:15px; opacity:.98; border:1.5px solid rgba(38,49,79,.25); 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:2px solid var(--line); border-radius:14px; background:var(--orange-pale);}
  .sthero-tier{font-size:1.45rem; font-weight:900; text-align:center; letter-spacing:.04em; margin-bottom:.25rem;}
  .sthero-tier.tier-S{color:var(--sh-accent-ink);}
  .sthero-tier.tier-A{color:#B02A30;}
  .sthero-tier.tier-B{color:#106B3C;}
  .sthero-tier.tier-C{color:var(--sh-note-ink);}
  .sthero-tier.tier-D{color:#5F3DBE;}
  .sthero-tier.tier-none{color:var(--ink); 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(--ink); background:var(--card); border:2px 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:.95; 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(--orange); padding-left:.45rem; letter-spacing:.1em; color:var(--ink); line-height:1.2;}
  .cdirect,.gain-input{background:#FDFDFE; box-shadow:inset 0 2px 5px rgba(38,49,79,.14);}
  .cdirect:focus,.gain-input:focus{outline:3px solid var(--orange); outline-offset:0; border-color:var(--orange);}
  .cell.auto10{background:var(--orange-pale); border-color:var(--orange); box-shadow:none;}
  .seg2 .seg-btn.active{background:var(--orange); border-color:var(--ink); color:#26314F;}
  .progress-btn{font-size:1.2rem; letter-spacing:.06em;}
  .sthero-k{font-size:.88rem; font-weight:800; letter-spacing:.14em; text-align:center; color:var(--ink-soft); 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; background:#FDFDFE;}
  .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(--ink-soft); margin:0; text-align:left;}
  .sthero-name{font-size:1.5rem; font-weight:900; line-height:1.1;}
  .sthero-judge.tier-S{color:var(--sh-accent-ink);}
  .sthero-judge.tier-A{color:#B02A30;}
  .sthero-judge.tier-B{color:#106B3C;}
  .sthero-judge.tier-C{color:var(--sh-note-ink);}
  .sthero-judge.tier-D{color:#5F3DBE;}
  .sthero-judge.tier-none{color:var(--ink);}
  .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:2px solid var(--line); border-radius:999px;
    font-size:.82rem; font-weight:800; color:var(--ink); text-decoration:none; letter-spacing:.06em; cursor:pointer; background:#FFFFFF;}
  .tier-chip.active{background:var(--orange); border-color:var(--ink); color:#26314F; cursor:default;}
