/* ============================================================
   チョーナイス - 21日間腸活チャレンジ
   ============================================================ */
:root{
  --brand:#0B6FB4;
  --brand-d:#075289;
  --brand-l:#E8F3FB;
  --mint:#25B6A0;
  --mint-l:#E4F6F3;
  --pink:#F4788A;
  --gold:#F5A623;
  --gold-l:#FFF4E0;
  --ink:#3A4A54;
  --ink-2:#6C7C86;
  --ink-3:#A4B0B8;
  --line:#EFE9E1;
  --bg:#FCF8F3;
  --card:#FFFFFF;
  --shadow:0 3px 14px rgba(120,100,80,.09);
  --shadow-l:0 10px 30px rgba(120,100,80,.16);
  --r-s:10px; --r-m:16px; --r-l:22px;
  --tabh:62px;
  --sat: env(safe-area-inset-top, 0px);
  --sab: env(safe-area-inset-bottom, 0px);
}
*,*::before,*::after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;height:100%}
body{
  font-family:"Hiragino Kaku Gothic ProN","Hiragino Sans",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans JP",Meiryo,sans-serif;
  color:var(--ink);background:#FFFCFD;font-size:15px;line-height:1.65;
  -webkit-font-smoothing:antialiased;overscroll-behavior-y:none;
}
/* PC・タブレットで本体の左右にあまる所：パステルピンクにロゴを斜めに敷く */
body::before{
  content:"";position:fixed;left:-60%;top:-60%;width:220%;height:220%;
  z-index:-1;pointer-events:none;transform:rotate(-22deg);opacity:.16;
  background-image:url(../img/bg-tile.webp);
  background-repeat:repeat;background-size:230px auto
}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}
input,select,textarea{font:inherit}
h1,h2,h3,h4,p,ul,ol{margin:0}
ul,ol{padding:0;list-style:none}
[hidden]{display:none !important}

/* ---------- レイアウト ---------- */
.app{
  position:relative;max-width:520px;min-height:var(--appvh, 100%);margin:0 auto;background:var(--bg);
  display:flex;flex-direction:column;box-shadow:0 0 40px rgba(11,50,80,.12);
}
.screen{
  flex:1;padding:14px 16px calc(var(--tabh) + var(--sab) + 26px);
  touch-action:manipulation;
  animation:fade .26s ease;
}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---------- ヘッダー ---------- */
.appbar{
  position:sticky;top:0;z-index:40;
  background:rgba(255,255,255,.94);backdrop-filter:blur(10px);
  color:var(--ink);padding-top:var(--sat);
  box-shadow:0 2px 14px rgba(120,100,80,.05);
}
/* ヘッダーの下辺をもくもく雲のシルエットに */
.appbar::after{
  content:"";position:absolute;left:0;right:0;bottom:-9px;height:10px;z-index:2;
  background:radial-gradient(circle at 11px 0, rgba(255,255,255,.96) 11px, rgba(255,255,255,0) 12px);
  background-size:22px 10px;background-repeat:repeat-x
}
.appbar__inner{display:flex;align-items:center;justify-content:space-between;height:54px;padding:0 16px}
/* ヘッダー左：レベル・名前・経験値 */
.pstat{
  display:flex;align-items:center;gap:9px;
  background:#fff;border:2px solid #EAF2F7;border-radius:999px;
  padding:4px 14px 4px 4px;box-shadow:0 2px 8px rgba(40,70,90,.1);
  transition:transform .14s
}
.pstat:active{transform:scale(.97)}
.pstat__lv{
  width:36px;height:36px;flex:0 0 36px;border-radius:50%;
  background:#FFB454;color:#fff;
  display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1
}
.pstat__lv small{font-size:8px;font-weight:900;letter-spacing:.06em;opacity:.95}
.pstat__lv b{font-size:15px;font-weight:900;margin-top:-1px}
.pstat__body{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:104px}
.pstat__name{font-size:13px;font-weight:900;color:var(--ink);line-height:1}
.pstat__xp{
  position:relative;display:block;width:100%;height:13px;border-radius:99px;
  background:#EEF4F7;overflow:hidden
}
.pstat__xp > i{display:block;height:100%;width:0;border-radius:99px;background:#5FD3B8;transition:width .6s}
.pstat__xp > em{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:9px;font-weight:900;font-style:normal;color:#3B4B55;
  font-variant-numeric:tabular-nums;letter-spacing:.02em
}
.appbar__pt{
  display:flex;align-items:center;gap:6px;background:var(--gold-l);
  border:1px solid #F3DEB4;border-radius:999px;padding:5px 12px 5px 6px;color:#8A6100;
  transition:transform .15s;
}
.appbar__pt:active{transform:scale(.94)}
.appbar__pt-icon{
  width:20px;height:20px;border-radius:50%;background:var(--gold);color:#5A3A00;
  font-size:12px;font-weight:900;display:grid;place-items:center
}
.appbar__pt-num{font-size:14px;font-weight:800;font-variant-numeric:tabular-nums}
.appbar__actions{display:flex;align-items:center;gap:8px}
.appbar__gear{
  width:34px;height:34px;border-radius:50%;display:grid;place-items:center;
  background:var(--brand-l);border:1px solid #D8E9F6;
  color:var(--brand);font-size:16px;line-height:1
}
.appbar__gear:active{transform:scale(.92)}

/* ---------- 下部タブ ---------- */
.tabbar{
  position:fixed;bottom:0;left:0;right:0;z-index:50;
  max-width:520px;margin:0 auto;
  display:grid;grid-auto-flow:column;grid-auto-columns:1fr;
  background:rgba(255,253,250,.97);backdrop-filter:blur(10px);
  border-top:1px solid var(--line);
  padding-bottom:var(--sab);
  box-shadow:0 -2px 14px rgba(16,52,78,.07);
}
.tab{
  position:relative;height:var(--tabh);display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:3px;color:var(--ink-3);
  transition:color .18s;
}
.tab__icon{width:21px;height:21px;fill:currentColor;transition:transform .2s}
.tab__img{width:22px;height:22px;object-fit:contain;transition:transform .2s}
.tab.is-active .tab__img{transform:translateY(-2px) scale(1.08)}
.tab__label{font-size:9px;font-weight:800;letter-spacing:0;white-space:nowrap}
.tab.is-active{color:var(--brand)}
.tab.is-active .tab__icon{transform:translateY(-2px) scale(1.08)}
.tab.is-active::before{
  content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);
  width:26px;height:3px;border-radius:0 0 4px 4px;background:var(--brand)
}
.tab__badge{
  position:absolute;top:9px;right:calc(50% - 16px);
  width:9px;height:9px;border-radius:50%;background:var(--pink);
  box-shadow:0 0 0 2px #fff;animation:pulse 1.6s infinite
}
@keyframes pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.25);opacity:.75}}

/* ---------- 汎用パーツ ---------- */
.card{background:var(--card);border-radius:var(--r-m);box-shadow:var(--shadow);padding:16px;margin-bottom:14px}
.card--flat{box-shadow:none;border:1px solid var(--line)}
.sec-title{display:flex;align-items:center;gap:7px;font-size:14px;font-weight:800;margin-bottom:10px}
.sec-title::before{content:"";width:4px;height:15px;border-radius:2px;background:var(--brand)}
.sec-title .more{margin-left:auto;font-size:11.5px;font-weight:700;color:var(--brand)}
.muted{color:var(--ink-2);font-size:12.5px}
.tiny{font-size:11px;color:var(--ink-3)}
.center{text-align:center}
.row{display:flex;align-items:center;gap:10px}
.spacer{flex:1}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  height:50px;padding:0 20px;border-radius:999px;font-weight:800;font-size:15px;
  background:#41A9E6;color:#fff;
  box-shadow:0 5px 14px rgba(33,137,206,.28);
  transition:transform .12s,box-shadow .12s;width:100%;
}
.btn:active{transform:translateY(1px) scale(.99);box-shadow:0 2px 6px rgba(11,111,180,.3)}
.btn--ghost{background:#fff;color:var(--brand);border:1.5px solid var(--brand);box-shadow:none}
.btn--sub{background:#4CD0B8;box-shadow:none}
.btn--gold{background:#FFB454;color:#6B4400;box-shadow:none}
.btn--sm{height:38px;font-size:13px;padding:0 16px;width:auto}
.btn[disabled]{opacity:.42;pointer-events:none;box-shadow:none}

.pill{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:800;
  padding:3px 10px;border-radius:999px;background:var(--brand-l);color:var(--brand)}
.pill--mint{background:var(--mint-l);color:#128271}
.pill--gold{background:var(--gold-l);color:#A96C00}
.pill--pink{background:#FDEAED;color:#D2445B}

/* ---------- 21日カレンダー ---------- */
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}
.cal__cell{
  aspect-ratio:1/1;border-radius:11px;background:#F1F5F8;border:1.5px solid transparent;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-size:11px;font-weight:800;color:var(--ink-3);position:relative;transition:transform .15s
}
.cal__cell:active{transform:scale(.93)}
.cal__cell.is-done{background:#2FBBA0;color:#fff;border-color:transparent;
  box-shadow:0 3px 8px rgba(30,156,136,.3)}
.cal__cell.is-part{background:var(--gold-l);color:#A96C00;border-color:#F6CE86}
.cal__cell.is-today{border-color:var(--brand);color:var(--brand);background:#fff;
  box-shadow:0 0 0 3px rgba(11,111,180,.13)}
.cal__cell.is-today.is-done{background:#2FBBA0;color:#fff;border-color:#fff}
.cal__cell.is-today.is-part{background:var(--gold-l);color:#A96C00}
.cal__cell.is-future{opacity:.55}
.cal__chk{font-size:14px;line-height:1}

/* ---------- スコアリング ---------- */
.score-ring{display:flex;align-items:center;gap:16px}
.ring{position:relative;width:104px;height:104px;flex:0 0 104px}
.ring svg{transform:rotate(-90deg)}
.ring__num{
  position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-weight:900;font-size:27px;line-height:1
}
.ring__num small{font-size:10px;font-weight:700;color:var(--ink-3);letter-spacing:.06em}
.score-bars{flex:1;min-width:0;display:flex;flex-direction:column;gap:9px}
.sbar__t{display:flex;justify-content:space-between;font-size:11.5px;font-weight:700;margin-bottom:3px}
.sbar__b{height:7px;border-radius:99px;background:#EDF2F5;overflow:hidden}
.sbar__b > i{display:block;height:100%;border-radius:99px;transition:width .6s}

/* ---------- 記録画面 ---------- */
.datenav{
  display:flex;align-items:center;justify-content:space-between;background:#fff;
  border-radius:999px;padding:6px 8px;box-shadow:var(--shadow);margin-bottom:14px
}
.datenav__btn{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;
  color:var(--brand);font-size:17px;font-weight:900;background:var(--brand-l)}
.datenav__btn[disabled]{opacity:.3;pointer-events:none}
.datenav__label{font-weight:800;font-size:14px;text-align:center}
.datenav__label small{display:block;font-size:10px;color:var(--ink-3);font-weight:700}

.qtitle{font-size:13.5px;font-weight:800;margin-bottom:2px}
.qhint{font-size:11px;color:var(--ink-3);margin-bottom:10px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{
  border:1.5px solid var(--line);background:#fff;border-radius:12px;
  padding:9px 13px;font-size:13px;font-weight:700;color:var(--ink-2);
  display:inline-flex;align-items:center;gap:6px;transition:all .16s
}
.chip:active{transform:scale(.95)}
.chip.is-on{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 3px 9px rgba(11,111,180,.28)}
.chip--mint.is-on{background:var(--mint);border-color:var(--mint);box-shadow:0 3px 9px rgba(37,182,160,.28)}
.chip--warn.is-on{background:var(--pink);border-color:var(--pink);box-shadow:0 3px 9px rgba(244,120,138,.28)}
.chip__emo{font-size:16px}
.chip--grid{flex:1 1 calc(33.333% - 8px);justify-content:center;flex-direction:column;gap:2px;padding:11px 4px}
.chip--half{flex:1 1 calc(50% - 8px);justify-content:center}

.bristol{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.bcell{
  border:1.5px solid var(--line);background:#fff;border-radius:10px;padding:7px 2px;
  display:flex;flex-direction:column;align-items:center;gap:3px;transition:all .16s
}
.bcell:active{transform:scale(.92)}
.bcell__n{font-size:10px;font-weight:900;color:var(--ink-3)}
.bcell__i{font-size:17px;line-height:1}
.bcell.is-on{border-color:var(--brand);background:var(--brand-l);box-shadow:0 0 0 2px rgba(11,111,180,.12)}
.bcell.is-good.is-on{border-color:var(--mint);background:var(--mint-l);box-shadow:0 0 0 2px rgba(37,182,160,.15)}
.bristol-note{margin-top:9px;background:var(--brand-l);border-radius:10px;padding:9px 11px;
  font-size:11.5px;font-weight:700;color:var(--brand-d);line-height:1.5}

.stepper{display:flex;align-items:center;gap:14px;justify-content:center}
.stepper__b{width:42px;height:42px;border-radius:50%;background:var(--brand-l);color:var(--brand);
  font-size:20px;font-weight:900;display:grid;place-items:center}
.stepper__b:active{transform:scale(.9)}
.stepper__v{font-size:26px;font-weight:900;min-width:74px;text-align:center}
.stepper__v small{font-size:12px;color:var(--ink-3);margin-left:2px}

.savebar{position:sticky;bottom:calc(var(--tabh) + var(--sab) + 8px);z-index:20;margin-top:16px}
.saved-note{display:flex;align-items:center;justify-content:center;gap:6px;font-size:12px;
  font-weight:800;color:var(--mint);margin-top:8px}

/* ---------- コラム ---------- */
.tagrow{display:flex;gap:7px;overflow-x:auto;padding-bottom:10px;margin-bottom:4px;scrollbar-width:none}
.tagrow::-webkit-scrollbar{display:none}
.tagrow .chip{flex:0 0 auto;padding:7px 14px;font-size:12px}
.col-card{
  display:flex;gap:12px;background:#fff;border-radius:var(--r-m);padding:12px;
  box-shadow:var(--shadow);margin-bottom:11px;text-align:left;width:100%;align-items:center;
  transition:transform .12s
}
.col-card:active{transform:scale(.985)}
.col-thumb{
  width:74px;height:74px;flex:0 0 74px;border-radius:13px;display:grid;place-items:center;
  font-size:33px;background:var(--brand-l)
}
.col-body{flex:1;min-width:0}
.col-t{font-size:13.5px;font-weight:800;line-height:1.4;margin-bottom:3px}
.col-d{font-size:11.5px;color:var(--ink-2);line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.col-meta{display:flex;align-items:center;gap:6px;margin-top:6px}
.col-read{opacity:.62}
.col-read .col-thumb{filter:grayscale(.35)}

.article h2{font-size:19px;font-weight:900;line-height:1.45;margin-bottom:8px}
.article h3{font-size:14.5px;font-weight:800;margin:20px 0 7px;padding-left:9px;border-left:4px solid var(--brand);line-height:1.4}
.article p{font-size:14px;line-height:1.9;margin-bottom:12px;color:#2A3B46}
.article .lead{background:var(--brand-l);border-radius:12px;padding:12px 14px;font-size:13px;font-weight:700;color:var(--brand-d);line-height:1.7}
.article ul.pt{margin:4px 0 14px}
.article ul.pt li{position:relative;padding-left:22px;font-size:13.5px;line-height:1.8;margin-bottom:4px}
.article ul.pt li::before{content:"\25CE";position:absolute;left:2px;color:var(--mint);font-weight:900}
.article-hero{height:132px;border-radius:var(--r-m);display:grid;place-items:center;font-size:60px;margin-bottom:14px}

/* ---------- ポイント ---------- */
.ptcard{
  border-radius:var(--r-l);padding:20px 18px;color:#fff;margin-bottom:14px;position:relative;overflow:hidden;
  background:#FFB454;
  box-shadow:0 8px 22px rgba(229,130,28,.32)
}
.ptcard::after{content:"";position:absolute;width:180px;height:180px;border-radius:50%;
  background:rgba(255,255,255,.13);right:-50px;bottom:-90px}
.ptcard__l{font-size:14px;font-weight:900;letter-spacing:0;opacity:.95}
.ptcard__v{font-size:40px;font-weight:900;line-height:1;letter-spacing:-.02em;white-space:nowrap}
.ptcard__v small{font-size:16px;margin-left:3px}
.ptcard__sub{font-size:11.5px;opacity:.92;font-weight:700;position:relative;z-index:1}

.mission{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px dashed var(--line)}
.mission:last-child{border-bottom:0}
.mission__emo{width:38px;height:38px;flex:0 0 38px;border-radius:11px;background:var(--gold-l);
  display:grid;place-items:center;font-size:19px}
.mission__t{font-size:13px;font-weight:800;line-height:1.35}
.mission__s{font-size:10.5px;color:var(--ink-3);font-weight:700}
.mission__p{font-size:13px;font-weight:900;color:var(--gold);white-space:nowrap}
.mission.is-done .mission__p{color:var(--mint)}
.mission.is-done .mission__emo{background:var(--mint-l)}

.coupon{
  display:flex;gap:12px;align-items:center;background:#fff;border-radius:var(--r-m);
  padding:13px;box-shadow:var(--shadow);margin-bottom:11px;position:relative;overflow:hidden
}
.coupon__img{width:66px;height:66px;flex:0 0 66px;border-radius:12px;background:var(--gold-l);
  display:grid;place-items:center;font-size:30px}
.coupon__b{flex:1;min-width:0}
.coupon__t{font-size:13px;font-weight:800;line-height:1.35}
.coupon__c{font-size:11px;color:var(--ink-3);font-weight:700;margin-top:2px}
.coupon__act{text-align:center}
.coupon__p{font-size:14px;font-weight:900;color:var(--gold);margin-bottom:4px}
.coupon.is-locked{opacity:.62}

.hist{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
.hist:last-child{border-bottom:0}
.hist__t{font-size:12.5px;font-weight:700;flex:1}
.hist__d{font-size:10.5px;color:var(--ink-3)}
.hist__p{font-size:13px;font-weight:900;color:var(--mint)}
.hist__p.minus{color:var(--pink)}

.badges{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.badge{text-align:center}
.badge__c{
  width:100%;aspect-ratio:1/1;display:grid;place-items:center;font-size:25px;
  background:none;color:var(--ink-3);margin-bottom:4px;border:0;overflow:visible
}
.badge.is-got .badge__c{background:none;box-shadow:none}
.badge__n{font-size:9.5px;font-weight:800;color:var(--ink-2);line-height:1.3}
.badge:not(.is-got) .badge__c{filter:grayscale(1);opacity:.5}

/* ---------- クイズ ---------- */
.quiz-hero{
  border-radius:var(--r-l);padding:18px;color:#fff;margin-bottom:14px;
  background:#9E8AEE;box-shadow:none
}
.quiz-hero h3{font-size:17px;font-weight:900;margin-bottom:4px}
.quiz-hero p{font-size:12px;opacity:.92;line-height:1.6}
.qprog{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.qprog__b{flex:1;height:7px;border-radius:99px;background:#E5EAEF;overflow:hidden}
.qprog__b > i{display:block;height:100%;background:#9E8AEE;transition:width .4s}
.qprog__n{font-size:11.5px;font-weight:800;color:var(--ink-2)}
.qq{font-size:16.5px;font-weight:800;line-height:1.6;margin-bottom:14px}
.qopt{
  width:100%;text-align:left;background:#fff;border:2px solid var(--line);border-radius:14px;
  padding:14px 15px;font-size:14px;font-weight:700;margin-bottom:10px;display:flex;gap:10px;align-items:center;
  transition:all .16s
}
.qopt:active{transform:scale(.985)}
.qopt__m{width:24px;height:24px;flex:0 0 24px;border-radius:50%;background:#EEF3F7;color:var(--ink-2);
  font-size:12px;font-weight:900;display:grid;place-items:center}
.qopt.is-correct{border-color:var(--mint);background:var(--mint-l)}
.qopt.is-correct .qopt__m{background:var(--mint);color:#fff}
.qopt.is-wrong{border-color:var(--pink);background:#FDEAED}
.qopt.is-wrong .qopt__m{background:var(--pink);color:#fff}
.qexp{border-radius:14px;padding:13px 15px;font-size:13px;line-height:1.75;font-weight:700;
  animation:fade .3s ease;margin-bottom:12px}
.qexp.ok{background:var(--mint-l);color:#0E6E5E}
.qexp.ng{background:#FDEAED;color:#B33A50}
.qresult{text-align:center;padding:14px 0}
.qresult__s{font-size:52px;font-weight:900;line-height:1;color:var(--brand)}
.qresult__s small{font-size:18px;color:var(--ink-3)}

/* ---------- シート / モーダル ---------- */
.sheet-wrap{position:fixed;inset:0;z-index:90;display:flex;align-items:flex-end;justify-content:center}
.sheet-bg{position:absolute;inset:0;background:rgba(14,32,44,.5);animation:fade .2s}
.sheet{
  position:relative;width:100%;max-width:520px;max-height:88vh;overflow-y:auto;
  background:#fff;border-radius:22px 22px 0 0;padding:20px 18px calc(24px + var(--sab));
  animation:up .3s cubic-bezier(.2,.9,.3,1);-webkit-overflow-scrolling:touch
}
@keyframes up{from{transform:translateY(100%)}to{transform:none}}
.sheet__grip{width:38px;height:4px;border-radius:99px;background:var(--line);margin:0 auto 14px}
.sheet h3{font-size:17px;font-weight:900;margin-bottom:8px}

/* ---------- トースト / 演出 ---------- */
.toast-wrap{position:fixed;left:0;right:0;bottom:calc(var(--tabh) + var(--sab) + 16px);z-index:95;
  display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}
.toast{
  background:rgba(30,42,50,.95);color:#fff;border-radius:999px;padding:10px 18px;font-size:13px;
  font-weight:800;box-shadow:var(--shadow-l);animation:toastIn .3s cubic-bezier(.2,.9,.3,1);
  display:flex;align-items:center;gap:7px;max-width:88%
}
.toast--gold{background:#F5A623}
.toast--mint{background:#2FBBA0}
@keyframes toastIn{from{opacity:0;transform:translateY(14px) scale(.94)}to{opacity:1;transform:none}}
.toast.out{animation:toastOut .25s forwards}
@keyframes toastOut{to{opacity:0;transform:translateY(-6px)}}

.reward{position:fixed;inset:0;z-index:100;display:grid;place-items:center;
  background:rgba(10,30,45,.62);animation:fade .25s}
.reward__box{
  background:#fff;border-radius:24px;padding:26px 22px;width:min(84vw,340px);text-align:center;
  box-shadow:var(--shadow-l);animation:pop .45s cubic-bezier(.2,1.3,.4,1)
}
@keyframes pop{from{transform:scale(.75);opacity:0}to{transform:none;opacity:1}}
.reward__emo{font-size:64px;line-height:1;margin-bottom:8px;animation:bob 1.6s ease-in-out infinite}
.reward__t{font-size:19px;font-weight:900;margin-bottom:6px}
.reward__d{font-size:13px;color:var(--ink-2);line-height:1.7;margin-bottom:16px}
.confetti{position:fixed;inset:0;pointer-events:none;z-index:99;overflow:hidden}
.confetti i{position:absolute;top:-20px;width:9px;height:14px;border-radius:2px;animation:fall linear forwards}
@keyframes fall{to{transform:translateY(110vh) rotate(720deg);opacity:.1}}

/* ---------- オンボーディング ---------- */
.ob{padding:8px 0}
.ob__step{font-size:11px;font-weight:800;color:var(--brand);letter-spacing:.1em;margin-bottom:6px}
.ob__t{font-size:21px;font-weight:900;line-height:1.5;margin-bottom:6px}
.ob__d{font-size:13px;color:var(--ink-2);line-height:1.75;margin-bottom:18px}
.ob__bar{display:flex;gap:5px;margin-bottom:18px}
.ob__bar i{flex:1;height:4px;border-radius:99px;background:var(--line)}
.ob__bar i.on{background:var(--brand)}
.ob-hero{font-size:74px;text-align:center;margin:6px 0 12px;animation:bob 3s ease-in-out infinite}
.input{
  width:100%;height:50px;border-radius:13px;border:1.5px solid var(--line);padding:0 14px;
  font-size:15px;font-weight:700;background:#fff
}
.input:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,111,180,.12)}

/* ---------- 空状態 ---------- */
.empty{text-align:center;padding:34px 16px;color:var(--ink-3)}
.empty__e{font-size:44px;margin-bottom:8px;opacity:.7}
.empty__t{font-size:13px;font-weight:700}

@media (min-width:600px){
  body{font-size:16px}
  .screen{padding-left:20px;padding-right:20px}
}


/* ============================================================
   アメーバ状ボタン（押したくなる表現）
   ============================================================ */
@keyframes blobMorph{
  0%,100%{border-radius:46% 54% 52% 48% / 54% 48% 52% 46%}
  25%{border-radius:56% 44% 46% 54% / 44% 56% 44% 56%}
  50%{border-radius:48% 52% 58% 42% / 56% 42% 58% 44%}
  75%{border-radius:54% 46% 44% 56% / 46% 58% 42% 54%}
}
@keyframes blobPop{
  0%{transform:scale(1)}
  40%{transform:scale(.9,1.08)}
  70%{transform:scale(1.08,.94)}
  100%{transform:scale(1)}
}
.blobs{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.blobs--1{grid-template-columns:1fr}
.blobs--3{grid-template-columns:repeat(3,1fr);gap:10px}
.blob{
  position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;
  min-height:124px;padding:20px 14px;text-align:center;
  font-size:14.5px;font-weight:800;color:var(--ink);line-height:1.4;
  background:#FFFFFF;border:2px solid #E3EBF1;
  border-radius:24px;
  box-shadow:0 4px 12px rgba(16,52,78,.07);
  transition:transform .18s cubic-bezier(.2,1.3,.4,1),box-shadow .18s,background .18s,color .18s,border-color .18s;
}
.blob__emo{font-size:40px;line-height:1;transition:transform .2s}
.blob__sub{font-size:11px;font-weight:700;color:var(--ink-3);line-height:1.5}
.blob:active{transform:scale(.96);box-shadow:0 2px 6px rgba(16,52,78,.12)}
.blob.is-tapped{animation:blobPop .42s ease}
/* 「とった！」などの選択色。アイコンがミント色の〇なので、
   選択色をミントにすると絵が消えてしまう。ピンクにして見分けられるようにする */
.blob.is-on{
  background:#F4788A;color:#fff;border-color:transparent;
  box-shadow:0 6px 16px rgba(214,88,110,.26)
}
.blob.is-on .blob__sub{color:rgba(255,255,255,.9)}
.blob.is-on .blob__emo{transform:scale(1.12)}
.blob--no.is-on{background:#8FA6B3;box-shadow:none}
.blob--warn.is-on{background:#F4788A;box-shadow:none}
.blob--brand.is-on{background:#41A9E6;box-shadow:none}
.blob__check{
  position:absolute;top:10px;right:10px;width:24px;height:24px;border-radius:50%;
  background:#fff;color:#E4566E;font-size:13px;font-weight:900;display:grid;place-items:center;
  box-shadow:0 2px 6px rgba(0,0,0,.15)
}

/* 大きなCTA（ぷるぷる） */
.cta{
  position:relative;width:100%;min-height:84px;display:flex;align-items:center;justify-content:center;gap:12px;
  color:#fff;font-size:17px;font-weight:900;letter-spacing:.02em;padding:16px 20px;
  background:#FFB454;
  border-radius:38px 46px 40px 44px;
  animation:ctaMorph 6.5s ease-in-out infinite;
  box-shadow:0 12px 26px rgba(240,150,20,.4);
  transition:transform .18s
}
@keyframes ctaMorph{
  0%,100%{border-radius:38px 46px 40px 44px;transform:scale(1)}
  33%{border-radius:48px 36px 46px 40px;transform:scale(1.012)}
  66%{border-radius:42px 48px 36px 46px;transform:scale(.995)}
}
.cta:active{transform:scale(.96)}
.cta__emo{font-size:32px;animation:bob 2.2s ease-in-out infinite}
.cta__sub{display:block;font-size:11px;font-weight:800;opacity:.95;margin-top:3px}
.cta--done{background:#5FD3B8;box-shadow:none}
.cta__body{text-align:center;line-height:1.4}

/* ============================================================
   記録：一問一答フロー
   ============================================================ */
.stepbar{display:flex;align-items:center;gap:9px;margin-bottom:16px}
.stepbar__b{flex:1;height:8px;border-radius:99px;background:#E5EDF2;overflow:hidden}
.stepbar__b > i{display:block;height:100%;border-radius:99px;
  background:#3BC7AE;transition:width .45s cubic-bezier(.2,.9,.3,1)}
.stepbar__n{font-size:11.5px;font-weight:800;color:var(--ink-2);white-space:nowrap}

.qcard{
  background:#fff;border-radius:24px;padding:22px 18px 20px;box-shadow:var(--shadow);
  margin-bottom:14px;animation:qIn .32s cubic-bezier(.2,.9,.3,1)
}
@keyframes qIn{from{opacity:0;transform:translateX(22px)}to{opacity:1;transform:none}}
.qcard--back{animation:qInBack .32s cubic-bezier(.2,.9,.3,1)}
@keyframes qInBack{from{opacity:0;transform:translateX(-22px)}to{opacity:1;transform:none}}
.qcard__emo{font-size:44px;text-align:center;line-height:1;margin-bottom:8px;animation:bob 2.6s ease-in-out infinite}
.qcard__q{font-size:19px;font-weight:900;text-align:center;line-height:1.5;margin-bottom:5px}
.qcard__h{font-size:12px;color:var(--ink-3);text-align:center;font-weight:700;margin-bottom:18px;line-height:1.6}
.qcard__note{
  margin-top:14px;background:var(--brand-l);border-radius:14px;padding:11px 13px;
  font-size:12px;font-weight:700;color:var(--brand-d);line-height:1.6;text-align:center
}
.qnav{display:flex;gap:10px;margin-top:16px}
.qnav .btn{flex:1}
.qnav .btn--back{flex:0 0 112px;padding:0 8px;font-size:13.5px;white-space:nowrap}
.qnav .btn--back:only-child{flex:1}

.bgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
.bblob{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  min-height:96px;padding:12px 6px;background:#fff;border:2px solid #E3EBF1;
  border-radius:20px;
  box-shadow:0 4px 10px rgba(16,52,78,.07);transition:transform .18s,background .18s,border-color .18s
}
.bblob:active{transform:scale(.95)}
.bblob__n{font-size:10.5px;font-weight:900;color:var(--ink-3)}
.bblob__i{font-size:28px;line-height:1}
.bblob__l{font-size:10px;font-weight:800;color:var(--ink-2);line-height:1.35}
.bblob.is-on{border-color:transparent;background:#41A9E6;
  box-shadow:0 5px 13px rgba(11,111,180,.24)}
.bblob.is-on .bblob__n,.bblob.is-on .bblob__l{color:#fff}
.bblob.is-good.is-on{background:#3BC7AE;box-shadow:none}

.sum{display:flex;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px dashed var(--line)}
.sum:last-of-type{border-bottom:0}
.sum__emo{width:42px;height:42px;flex:0 0 42px;border-radius:14px;background:var(--brand-l);
  display:grid;place-items:center;font-size:21px}
.sum__t{font-size:12.5px;font-weight:800}
.sum__v{font-size:11.5px;color:var(--ink-2);font-weight:700;line-height:1.5}
.sum__edit{font-size:11px;font-weight:800;color:var(--brand);white-space:nowrap}

/* 画像素材を入れたときの受け皿（sprite差し替え用） */
.spr{display:inline-block;background-repeat:no-repeat;background-size:cover;vertical-align:middle}


/* ============================================================
   画像素材（assets/img/）を入れたときのスタイル
   ============================================================ */
.ico{display:inline-block;object-fit:contain;vertical-align:middle}

@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes squish{
  0%,100%{transform:scale(1,1)}
  45%{transform:scale(1.04,.96)}
  70%{transform:scale(.98,1.03)}
}

/* キャラクター画像 */
.charimg{
  width:206px;height:206px;object-fit:contain;
  animation:squish 2.6s ease-in-out infinite;transform-origin:50% 86%
}

/* ロゴ画像 */
.ob-logo{display:block;width:78%;max-width:300px;margin:6px auto 0}
.ob-hero .charimg,.ob-hero svg{width:120px;height:120px;display:inline-block}

/* コラムのサムネ */
.col-thumb .ico{width:100%!important;height:100%!important;object-fit:cover;border-radius:13px}
.article-hero{background-size:cover;background-position:center}

/* バッジ */
.badge__c .ico{width:96%!important;height:96%!important;object-fit:contain}
.badge:not(.is-got) .badge__c .ico{filter:grayscale(1)}

/* 一問一答のアイコン */
.qcard__emo .ico{width:64px!important;height:64px!important}
.sum__emo .ico{width:30px!important;height:30px!important}
.bblob__i .ico{width:38px!important;height:38px!important}
.blob__emo .ico{width:42px!important;height:42px!important}


/* ---------- スプラッシュ ---------- */
.splash{
  position:fixed;inset:0;z-index:200;background:#F4FAFD;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;
  transition:opacity .5s ease
}
.splash.out{opacity:0;pointer-events:none}
.splash__logo{width:70%;max-width:280px;animation:splashIn .7s cubic-bezier(.2,1.2,.4,1)}
@keyframes splashIn{from{opacity:0;transform:scale(.86) translateY(10px)}to{opacity:1;transform:none}}
.splash__t{font-size:12px;font-weight:800;color:var(--brand);letter-spacing:.14em}
.splash__dots{display:flex;gap:6px;margin-top:4px}
.splash__dots i{width:7px;height:7px;border-radius:50%;background:var(--brand);opacity:.3;
  animation:dot 1.1s ease-in-out infinite}
.splash__dots i:nth-child(2){animation-delay:.18s}
.splash__dots i:nth-child(3){animation-delay:.36s}
@keyframes dot{0%,100%{opacity:.25;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}

/* ---------- 各所のアイコンサイズ ---------- */
.reward__emo .ico{width:auto!important;height:auto!important;max-width:150px;max-height:150px}
.mission__emo .ico{width:28px!important;height:28px!important}
.coupon__img .ico{width:50px!important;height:50px!important}
.quiz-hero h3 .ico{width:26px!important;height:26px!important;margin-right:2px}
.cta__emo .ico{width:44px!important;height:44px!important;object-fit:contain}
.ob-hero .ico{width:96px!important;height:96px!important}
.sec-title .ico,.col-thumb .ico{vertical-align:middle}


/* ============================================================
   ホーム：アメーバ型のお部屋
   ============================================================ */
.room-wrap{position:relative;margin-bottom:18px}
.room{
  position:relative;width:100%;aspect-ratio:1/0.84;overflow:hidden;
  background-size:100% auto;background-position:center top;background-repeat:no-repeat;
  background-color:#E9F3FB;
  border-radius:40% 44% 38% 42% / 26% 22% 30% 26%;
  animation:roomMorph 20s ease-in-out infinite;
  box-shadow:0 16px 36px rgba(120,100,80,.2), inset 0 0 0 5px rgba(255,255,255,.8);
}
@keyframes roomMorph{
  0%,100%{border-radius:40% 44% 38% 42% / 26% 22% 30% 26%}
  25%{border-radius:46% 38% 44% 36% / 22% 30% 24% 30%}
  50%{border-radius:36% 46% 40% 46% / 30% 24% 28% 22%}
  75%{border-radius:44% 40% 46% 38% / 24% 28% 22% 30%}
}
/* 名前とレベル（左上） */
.room__id{
  position:absolute;left:14px;top:14px;z-index:3;
  display:flex;align-items:center;gap:7px;
  background:rgba(255,255,255,.92);border-radius:999px;padding:6px 12px 6px 10px;
  box-shadow:0 4px 12px rgba(80,70,60,.14)
}
.room__name{font-size:14px;font-weight:900;color:var(--ink);letter-spacing:.02em}
.room__lv{
  font-size:10.5px;font-weight:900;color:#7A5200;background:#FFD98A;
  border-radius:999px;padding:3px 8px
}
/* DAYと連続（右上） */
.room__day{
  position:absolute;right:14px;top:14px;z-index:3;display:flex;flex-direction:column;gap:5px;align-items:flex-end
}
.room__day span{
  background:rgba(255,255,255,.9);border-radius:999px;padding:5px 11px;
  font-size:11px;font-weight:800;color:var(--ink-2);box-shadow:0 3px 10px rgba(80,70,60,.12)
}
.room__day b{color:var(--brand);font-size:13px;font-weight:900}
.room__day .fire b{color:#E88A2A}

/* キャラクターと影（床のラインに合わせる） */
.room__char{
  position:absolute;left:50%;transform:translateX(-50%);
  bottom:calc(100% - var(--floor));
  height:var(--ch);width:auto;z-index:2;
  animation:charBob 3.8s ease-in-out infinite;transform-origin:50% 100%;
  mix-blend-mode:multiply;
  filter:drop-shadow(0 5px 7px rgba(70,55,40,.14))
}
@keyframes charBob{
  0%,100%{transform:translateX(-50%) translateY(0) scale(1,1)}
  45%{transform:translateX(-50%) translateY(-5px) scale(1.02,.98)}
  70%{transform:translateX(-50%) translateY(0) scale(.99,1.01)}
}
.room__shadow{
  position:absolute;left:50%;bottom:calc(100% - var(--floor) - 6px);
  transform:translateX(-50%);z-index:1;
  width:var(--shw);height:var(--shh);
  background:radial-gradient(ellipse at center,rgba(90,70,50,.26) 0%,rgba(90,70,50,.12) 45%,rgba(90,70,50,0) 72%);
  animation:shadowPulse 3.8s ease-in-out infinite
}
@keyframes shadowPulse{0%,100%{transform:translateX(-50%) scale(1);opacity:1}45%{transform:translateX(-50%) scale(.9);opacity:.75}}
.room__sparkle{position:absolute;font-size:15px;z-index:2;animation:twinkle 2.8s ease-in-out infinite}
@keyframes twinkle{0%,100%{transform:scale(.7) rotate(-8deg);opacity:.3}50%{transform:scale(1.1) rotate(8deg);opacity:.95}}

/* キャラクターの吹き出し */
.talk{
  position:relative;margin:-14px 10px 0;z-index:5;
  background:#fff;border-radius:20px;padding:13px 16px;
  font-size:13.5px;font-weight:800;line-height:1.7;color:#3B4B55;
  box-shadow:0 8px 20px rgba(120,100,80,.16);
  animation:talkIn .5s cubic-bezier(.2,1.2,.4,1)
}
@keyframes talkIn{from{opacity:0;transform:translateY(-6px) scale(.97)}to{opacity:1;transform:none}}
.talk::before{
  content:"";position:absolute;top:-8px;left:50%;transform:translateX(-50%);
  border:8px solid transparent;border-bottom-color:#fff;border-top:0
}

/* ============================================================
   記録CTA（吹き出し付き）
   ============================================================ */
.cta-wrap{position:relative;padding-top:16px;margin-bottom:20px}
.cta-bubble{
  position:absolute;top:-4px;left:50%;transform:translateX(-50%);z-index:3;
  background:#fff;color:var(--brand);border:2px solid #FFD68A;
  border-radius:999px;padding:6px 16px;font-size:12px;font-weight:900;white-space:nowrap;
  box-shadow:0 6px 14px rgba(120,100,80,.16);
  animation:bubbleBounce 2.2s ease-in-out infinite
}
@keyframes bubbleBounce{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-5px)}}
.cta-bubble::after{
  content:"";position:absolute;bottom:-9px;left:50%;transform:translateX(-50%);
  border:8px solid transparent;border-top-color:#FFD68A;border-bottom:0
}
.cta-bubble::before{
  content:"";position:absolute;bottom:-6px;left:50%;transform:translateX(-50%);z-index:1;
  border:7px solid transparent;border-top-color:#fff;border-bottom:0
}

/* ============================================================
   花丸ゲージ
   ============================================================ */
.flowers{background:#fff;border-radius:24px;padding:16px 16px 14px;box-shadow:var(--shadow);margin-bottom:16px}
.fl-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line);cursor:pointer}
.fl-row:last-of-type{border-bottom:0}
.fl-row__t{font-size:13px;font-weight:900;width:78px;flex:0 0 78px;color:var(--ink);white-space:nowrap}
.fl-row__m{flex:1;display:flex;gap:5px}
.fl{width:26px;height:26px;flex:0 0 26px;transition:transform .3s}
.fl--on{animation:flPop .45s cubic-bezier(.2,1.5,.4,1) both}
@keyframes flPop{from{transform:scale(0) rotate(-40deg)}to{transform:scale(1) rotate(0)}}
.fl-row__n{font-size:11.5px;font-weight:900;color:var(--ink-3);white-space:nowrap}
.fl-exp{display:flex;align-items:center;gap:9px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.fl-exp__b{flex:1;height:9px;border-radius:99px;background:#F1EBE3;overflow:hidden}
.fl-exp__b > i{display:block;height:100%;border-radius:99px;
  background:#FFB454;transition:width .8s cubic-bezier(.2,.9,.3,1)}
.fl-exp__t{font-size:11px;font-weight:800;color:var(--ink-2);white-space:nowrap}


/* ============================================================
   ホーム：ゲーム画面（背景／中景／キャラクター／前景）
   ============================================================ */
.stage{
  position:relative;overflow:hidden;
  margin:0;
  height:calc(var(--appvh, 100dvh) - var(--tickerh) - var(--tabh) - var(--sat) - var(--sab));
  min-height:420px;
  background:#D6EEF8;
}
/* ホームだけ余白なしの全画面 */
.screen--home{padding:0!important;overflow:hidden}
.stage__layer{position:absolute;inset:0;background-repeat:no-repeat}
.stage__bg{background-size:cover;background-position:center top;
  filter:saturate(1.02) brightness(1.02)}
/* 空が白すぎて雲が見えないので、上ほど青くなる薄い色を重ねる。
   下は透明にして、丘の緑はそのまま見せる */
.stage__bg::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,
    rgba(133,198,236,.46) 0%,
    rgba(150,208,240,.34) 34%,
    rgba(180,222,244,.14) 56%,
    rgba(255,255,255,0) 72%)
}
.stage__mid{background-size:var(--islandW, 100%) auto;
  background-position:left 50% bottom calc(0px - var(--islandY, 24px));
  filter:saturate(1.16) contrast(1.07)}
.stage__fg{background-size:150% auto;
  background-position:left 50% bottom calc(0px - var(--fgY, 12px));
  pointer-events:none;z-index:4;
  filter:saturate(1.1) contrast(1.05)}

.stage__char{
  position:absolute;left:50%;z-index:3;
  transform:translateX(-50%);
  bottom:var(--charY);height:var(--charH);width:auto;
  animation:charHop 3.2s cubic-bezier(.3,.7,.4,1) infinite;transform-origin:50% 100%;
  /* 空の水色とキャラの水色が同化しないように、白いフチをつける */
  filter:saturate(1.16) contrast(1.06)
    drop-shadow(0 2px 0 #fff) drop-shadow(0 -2px 0 #fff)
    drop-shadow(2px 0 0 #fff) drop-shadow(-2px 0 0 #fff)
    drop-shadow(0 3px 6px rgba(40,80,60,.14));
  cursor:pointer;-webkit-tap-highlight-color:transparent;
}
@keyframes charBreath{
  0%,100%{transform:translateX(-50%) translateY(0) scale(1,1)}
  45%{transform:translateX(-50%) translateY(-6px) scale(1.02,.98)}
  70%{transform:translateX(-50%) translateY(0) scale(.99,1.01)}
}
/* 左へぴょん、右へぴょん。着地でぷにっとつぶれる */
@keyframes charHop{
  0%  {transform:translateX(-50%) translate(0,0) scale(1,1)}
  6%  {transform:translateX(-50%) translate(0,6px) scale(1.1,.9)}
  18% {transform:translateX(-50%) translate(calc(var(--hopX) * -.55),-34px) scale(.9,1.12) rotate(-6deg)}
  30% {transform:translateX(-50%) translate(calc(var(--hopX) * -1),0) scale(1.12,.88)}
  38% {transform:translateX(-50%) translate(calc(var(--hopX) * -1),0) scale(1,1)}
  45% {transform:translateX(-50%) translate(calc(var(--hopX) * -1),6px) scale(1.1,.9)}
  58% {transform:translateX(-50%) translate(0,-36px) scale(.9,1.12) rotate(6deg)}
  70% {transform:translateX(-50%) translate(var(--hopX),0) scale(1.12,.88)}
  78% {transform:translateX(-50%) translate(var(--hopX),0) scale(1,1)}
  84% {transform:translateX(-50%) translate(var(--hopX),5px) scale(1.08,.92)}
  94% {transform:translateX(-50%) translate(calc(var(--hopX) * .4),-26px) scale(.93,1.08)}
  100%{transform:translateX(-50%) translate(0,0) scale(1,1)}
}
.stage__char.is-tapped{animation:charJump .55s cubic-bezier(.2,1.4,.4,1)}
@keyframes charJump{
  0%{transform:translateX(-50%) translateY(0) scale(1,1)}
  25%{transform:translateX(-50%) translateY(4px) scale(1.1,.9)}
  55%{transform:translateX(-50%) translateY(-22px) scale(.94,1.08)}
  100%{transform:translateX(-50%) translateY(0) scale(1,1)}
}
/* 接地の影：画像には焼き込まず、フラットな楕円をアプリ側で描く */
.stage__shadow{
  position:absolute;left:50%;transform:translateX(-50%);z-index:2;
  margin-left:var(--shX, 0px);
  bottom:calc(var(--charY) - var(--shH) / 2);
  height:var(--shH);width:auto;aspect-ratio:5/1;
  background:rgba(70,110,60,.2);border-radius:50%;
  animation:shHop 3.2s cubic-bezier(.3,.7,.4,1) infinite
}
@keyframes shHop{
  0%  {transform:translateX(-50%) translateX(0) scale(1);opacity:1}
  6%  {transform:translateX(-50%) translateX(0) scale(1.12,1);opacity:1}
  18% {transform:translateX(-50%) translateX(calc(var(--hopX) * -.55)) scale(.62,.5);opacity:.45}
  30%,45%{transform:translateX(-50%) translateX(calc(var(--hopX) * -1)) scale(1.06,1);opacity:1}
  58% {transform:translateX(-50%) translateX(0) scale(.62,.5);opacity:.45}
  70%,84%{transform:translateX(-50%) translateX(var(--hopX)) scale(1.06,1);opacity:1}
  94% {transform:translateX(-50%) translateX(calc(var(--hopX) * .4)) scale(.72,.6);opacity:.6}
  100%{transform:translateX(-50%) translateX(0) scale(1);opacity:1}
}

/* しゃべる・タップしたとき：影も同じ動きに切りかえる（横に動かさない） */
.stage__shadow.is-tapped{animation:shJump .55s cubic-bezier(.2,1.4,.4,1)}
@keyframes shJump{
  0%  {transform:translateX(-50%) scale(1);opacity:1}
  25% {transform:translateX(-50%) scale(1.08,1);opacity:1}
  55% {transform:translateX(-50%) scale(.7,.6);opacity:.5}
  100%{transform:translateX(-50%) scale(1);opacity:1}
}

/* 継続日数（左上・大きく） */
.streak{
  position:absolute;left:16px;top:12px;z-index:6;color:#fff;text-align:left;
  text-shadow:0 2px 10px rgba(30,70,95,.45), 0 1px 2px rgba(30,70,95,.35);
  line-height:1;pointer-events:none
}
.streak__l{display:block;font-size:12px;font-weight:900;letter-spacing:.14em;opacity:.95;margin-bottom:2px}
.streak__n{font-size:58px;font-weight:900;letter-spacing:-.03em;
  font-variant-numeric:tabular-nums;display:inline-block;
  animation:streakPop .6s cubic-bezier(.2,1.4,.4,1)}
@keyframes streakPop{from{transform:scale(.7);opacity:0}to{transform:none;opacity:1}}
.streak__u{font-size:19px;font-weight:900;margin-left:3px}
.streak__sub{
  display:inline-flex;align-items:center;gap:6px;margin-top:8px;
  background:rgba(255,255,255,.9);border-radius:999px;padding:5px 12px;
  color:var(--ink);text-shadow:none;box-shadow:0 3px 10px rgba(40,70,90,.16)
}
.streak__name{font-size:12.5px;font-weight:900}
.streak__lv{font-size:10px;font-weight:900;color:#7A5200;
  background:#FFD98A;border-radius:999px;padding:2px 8px}

/* 右上のDAY */
.stage__day{
  position:absolute;right:16px;top:16px;z-index:6;
  background:rgba(255,255,255,.9);border-radius:999px;padding:6px 13px;
  font-size:11.5px;font-weight:800;color:var(--ink-2);box-shadow:0 3px 10px rgba(40,70,90,.16)
}
.stage__day b{color:var(--brand);font-size:14px;font-weight:900}

/* キャラクターの吹き出し */
.stage__talk{
  position:absolute;left:50%;transform:translateX(-50%);z-index:7;
  bottom:calc(var(--charY) + var(--charH) + 14px);
  width:min(56%,208px);min-height:104px;background:#fff;border-radius:30px;
  padding:18px 16px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  font-size:14.5px;font-weight:800;line-height:1.9;color:#3B4B55;text-align:center;
  box-shadow:0 12px 28px rgba(40,70,90,.2);
  animation:talkPop .35s cubic-bezier(.2,1.3,.4,1)
}
/* キャラの左右の動きに合わせて、吹き出しも同じだけ動く */
@keyframes talkFollow{
  0%  {margin-left:0}
  18% {margin-left:calc(var(--hopX) * -.3)}
  30%,45%{margin-left:calc(var(--hopX) * -.55)}
  58% {margin-left:0}
  70%,84%{margin-left:calc(var(--hopX) * .55)}
  94% {margin-left:calc(var(--hopX) * .22)}
  100%{margin-left:0}
}
@keyframes talkPop{from{opacity:0;transform:translateX(-50%) translateY(8px) scale(.94)}
  to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}
/* しっぽも丸く（ふきだしからこぼれた小さな丸2つ） */
.stage__talk::after{
  content:"";position:absolute;bottom:-13px;left:calc(50% - 16px);
  width:17px;height:17px;border-radius:50%;background:#fff;
  box-shadow:14px 10px 0 -5px #fff
}
.stage__hint{
  position:absolute;left:50%;transform:translateX(-50%);z-index:5;
  bottom:calc(var(--charY) + var(--charH) + 16px);
  background:rgba(255,255,255,.82);border-radius:999px;padding:4px 12px;
  font-size:10.5px;font-weight:800;color:var(--ink-2);white-space:nowrap;
  animation:hintFloat 2.6s ease-in-out infinite;pointer-events:none
}
@keyframes hintFloat{0%,100%{transform:translateX(-50%) translateY(0);opacity:.75}50%{transform:translateX(-50%) translateY(-4px);opacity:1}}

/* 右下の大きな丸ボタン（左上だけ見える） */
.corner-btn{
  --moko:#FFA8C0;
  position:absolute;right:-56px;bottom:-56px;z-index:8;
  width:206px;height:206px;border-radius:50%;
  background:none;box-shadow:none;
  animation:mokoPulse 1.9s ease-in-out infinite;
  transition:transform .14s cubic-bezier(.2,1.3,.4,1)
}
@keyframes mokoPulse{
  0%,100%{transform:scale(1)}
  50%{transform:scale(1.06)}
}
.corner-btn:active{animation:none;transform:scale(.93)}

/* わく（この層だけをタップでくるっと回す） */
.corner-btn__bg{
  position:absolute;inset:0;border-radius:50%;
  background:var(--moko);
  box-shadow:inset 0 0 0 5px rgba(255,255,255,.55);
  background-repeat:no-repeat;background-size:contain;background-position:center
}
/* フチのモコモコ（円周にそって小さな丸を並べる／画像がないときの代用） */
.corner-btn__bg::before{
  content:"";position:absolute;left:50%;top:50%;width:56px;height:56px;margin:-28px;
  border-radius:50%;background:var(--moko);
  box-shadow:
       0px -101px 0 -4px var(--moko),
     -39px  -93px 0 -6px var(--moko),
     -71px  -71px 0 -3px var(--moko),
     -93px  -39px 0 -6px var(--moko),
    -101px    0px 0 -4px var(--moko),
     -93px   39px 0 -8px var(--moko),
     -71px   71px 0 -7px var(--moko),
      39px  -93px 0 -8px var(--moko),
      71px  -71px 0 -7px var(--moko)
}
.corner-btn__bg.is-spin{animation:mokoSpin .42s cubic-bezier(.3,.85,.3,1)}
@keyframes mokoSpin{from{transform:rotate(0)}to{transform:rotate(360deg)}}

/* 画像版 */
.corner-btn--img{width:222px;height:222px;right:-70px;bottom:-70px}
.corner-btn--img .corner-btn__in{left:90px;top:88px;width:100px}
.corner-btn--img .corner-btn__bg{
  background-color:transparent;box-shadow:none
}
.corner-btn--img .corner-btn__bg::before{display:none}
.corner-btn--img:active{animation:none;transform:scale(.94)}

/* ボタンの中身（見えている左上に置く） */
.corner-btn__in{
  position:absolute;left:81px;top:81px;transform:translate(-50%,-50%);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  width:92px;pointer-events:none;text-align:center;z-index:2
}
.corner-btn__t{font-size:19px;font-weight:900;line-height:1.3;color:#fff;letter-spacing:.04em;
  text-shadow:0 1px 3px rgba(180,70,100,.25)}
.corner-btn__lab{width:70px;height:auto;display:block}

/* 記録ずみ（グレー） */
.corner-btn--done{--moko:#AEBAC2;animation:none}
.corner-btn--done .corner-btn__bg{box-shadow:inset 0 0 0 5px rgba(255,255,255,.5)}
.corner-btn--done.corner-btn--img .corner-btn__bg{background-color:transparent;box-shadow:none}
.corner-btn--done .corner-btn__t{color:#fff;text-shadow:0 1px 3px rgba(70,90,105,.3);font-size:19px}

/* ボタンを指す吹き出し */
.corner-tag{font-size:11px;
  position:absolute;right:112px;bottom:112px;z-index:9;
  background:#fff;color:#B06A00;border:2px solid #FFD68A;
  border-radius:999px;padding:6px 14px;font-size:11.5px;font-weight:900;white-space:nowrap;
  box-shadow:0 6px 16px rgba(40,70,90,.2);
  animation:tagBounce 2.2s ease-in-out infinite
}
@keyframes tagBounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
.corner-tag::after{
  content:"";position:absolute;right:-7px;bottom:10px;
  border:7px solid transparent;border-left-color:#FFD68A;border-right:0
}


/* ============================================================
   カレンダー：ログインボーナス
   ============================================================ */
.lb{
  background:#FFB454;
  border-radius:22px;padding:16px;margin-bottom:16px;color:#6B4400;
  box-shadow:0 8px 20px rgba(240,160,40,.28)
}
.lb__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.lb__t{font-size:16px;font-weight:900}
.lb__s{font-size:11.5px;font-weight:800;opacity:.85;margin-top:2px}
.lb__badge{background:#fff;border-radius:999px;padding:5px 13px;font-size:12px;font-weight:900;color:#B06A00}
.lb__days{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.lb-day{
  background:rgba(255,255,255,.55);border-radius:12px;padding:7px 2px;text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:2px
}
.lb-day__n{font-size:8.5px;font-weight:800;opacity:.75}
.lb-day__ico{font-size:15px;line-height:1}
.lb-day__p{font-size:9px;font-weight:900}
.lb-day.is-got{background:rgba(255,255,255,.92)}
.lb-day.is-now{background:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.85);animation:lbPulse 1.6s ease-in-out infinite}
@keyframes lbPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
.lb__btn{margin-top:14px;background:#fff;color:#B06A00;box-shadow:0 4px 12px rgba(150,90,0,.2)}
.lb__done{margin-top:12px;text-align:center;font-size:12.5px;font-weight:800;
  background:rgba(255,255,255,.6);border-radius:999px;padding:9px}

/* 月カレンダー */
.mc__nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.mc__title{font-size:15px;font-weight:900}
.mc__wd{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:5px}
.mc__wd span{text-align:center;font-size:10px;font-weight:800;color:var(--ink-3)}
.mc__wd .sun{color:#E4737F}
.mc__wd .sat{color:#5B9BD5}
.mc{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.mc__cell{
  aspect-ratio:1/1;border-radius:10px;background:#F7F2EA;border:1.5px solid transparent;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px
}
.mc__cell--empty{background:none}
.mc__n{font-size:11px;font-weight:800;color:var(--ink-2)}
.mc__st{font-size:11px;line-height:1;height:12px}
.mc__cell.is-login{background:#FFF3DF}
.mc__cell.is-rec{background:#E8F7E4}
.mc__cell.is-today{border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,111,180,.12)}
.mc__cell.is-future{opacity:.4}
.mc__sum{display:flex;gap:16px;justify-content:center;margin-top:12px;
  font-size:12px;font-weight:800;color:var(--ink-2)}
.mc__sum b{font-size:16px;color:var(--brand);margin-right:2px}

.mgoal{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line)}
.mgoal:last-of-type{border-bottom:0}
.mgoal__t{font-size:12.5px;font-weight:800;width:96px;flex:0 0 96px}
.mgoal__b{flex:1;height:8px;border-radius:99px;background:#F1EBE3;overflow:hidden}
.mgoal__b > i{display:block;height:100%;border-radius:99px;background:#FFB454;transition:width .6s}
.mgoal__p{font-size:11.5px;font-weight:900;color:#B06A00;white-space:nowrap}
.mgoal.is-ok .mgoal__p{color:var(--mint)}
.mgoal.is-ok .mgoal__b > i{background:var(--mint)}

/* ============================================================
   クイズ：タイマー・キャラのリアクション
   ============================================================ */
.qtop{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.qtime{flex:1;display:flex;align-items:center;gap:8px;
  background:#fff;border-radius:999px;padding:7px 13px;box-shadow:var(--shadow)}
.qtime__ico{font-size:14px}
.qtime__bar{flex:1;height:8px;border-radius:99px;background:#EFE9E1;overflow:hidden}
.qtime__bar > i{display:block;height:100%;border-radius:99px;background:#5FD3B8;transition:width 1s linear}
.qtime__n{font-size:13px;font-weight:900;color:var(--ink-2);min-width:20px;text-align:right;
  font-variant-numeric:tabular-nums}
.qtime.is-warn .qtime__bar > i{background:#FFB454}
.qtime.is-warn .qtime__n{color:#E08A20}
.qtime.is-warn{animation:qWarn .8s ease-in-out infinite}
@keyframes qWarn{0%,100%{transform:scale(1)}50%{transform:scale(1.02)}}
.qtime.is-over .qtime__bar > i{background:#F4788A}
.qtime.is-over .qtime__n{color:#E4586E}

.qchar{position:relative;height:150px;display:grid;place-items:center;margin-bottom:8px}
.qchar__img{height:132px;width:auto;transition:transform .25s}
.qchar--think .qchar__img{animation:charBreath 3s ease-in-out infinite}
.qchar--happy .qchar__img{animation:qJump .6s cubic-bezier(.2,1.4,.4,1) 2}
@keyframes qJump{
  0%{transform:translateY(0) scale(1,1)}
  30%{transform:translateY(-26px) scale(.94,1.08)}
  60%{transform:translateY(0) scale(1.08,.92)}
  100%{transform:translateY(0) scale(1,1)}
}
.qchar--sad .qchar__img{animation:qSad .7s ease both}
@keyframes qSad{
  0%{transform:translateY(0) rotate(0) scale(1,1)}
  100%{transform:translateY(8px) rotate(-6deg) scale(1.04,.94)}
}
.qchar--surprised .qchar__img{animation:qShake .5s ease 2}
@keyframes qShake{
  0%,100%{transform:translateX(0)}
  25%{transform:translateX(-7px) rotate(-3deg)}
  75%{transform:translateX(7px) rotate(3deg)}
}
.qchar__fx{position:absolute;inset:0;pointer-events:none;display:grid;place-items:start center}
.qchar__word{
  display:inline-block;margin-top:2px;background:#fff;border-radius:999px;
  padding:6px 15px;font-size:13px;font-weight:900;color:var(--ink);
  box-shadow:0 6px 16px rgba(40,70,90,.2);animation:wordPop .4s cubic-bezier(.2,1.4,.4,1)
}
@keyframes wordPop{from{opacity:0;transform:scale(.7) translateY(6px)}to{opacity:1;transform:none}}
.qchar--happy .qchar__word{color:#0E8E76}
.qchar--sad .qchar__word{color:#C2566A}
.qchar--surprised .qchar__word{color:#D08A12}

.qcard-q{border-radius:22px}
.qexp.to{background:#FFF1DC;color:#A06A12}

.qstats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}
.qstat{background:#FAF6F0;border-radius:16px;padding:12px 6px;text-align:center}
.qstat b{display:block;font-size:22px;font-weight:900;color:var(--brand);line-height:1.1}
.qstat b small{font-size:12px;color:var(--ink-3)}
.qstat span{font-size:10px;font-weight:800;color:var(--ink-3)}
.qrule{display:flex;gap:11px;align-items:flex-start;background:#F3F8FB;border-radius:16px;
  padding:12px 14px;font-size:12px;font-weight:700;line-height:1.7;color:var(--ink-2)}
.qrule__i{font-size:20px;line-height:1.2}

/* ============================================================
   賞状
   ============================================================ */
.cert-list{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.cert-mini{
  border-radius:14px;padding:10px 4px;text-align:center;border:2px solid #F0E4C8;background:#FFFDF7;
  display:flex;flex-direction:column;gap:2px
}
.cert-mini__r{font-size:12px;font-weight:900;color:#B08114}
.cert-mini__s{font-size:10px;font-weight:800;color:var(--ink-2)}
.cert-mini__d{font-size:8.5px;font-weight:700;color:var(--ink-3)}
.cert-mini--gold{border-color:#F0C64C;background:#FFFBEE}
.cert-mini--silver{border-color:#CFD6DC;background:#FBFCFD}
.cert-mini--silver .cert-mini__r{color:#7C8A95}
.cert-mini--bronze{border-color:#E0BE9A;background:#FFF9F3}
.cert-mini--bronze .cert-mini__r{color:#A9713F}

.cert{
  position:relative;border-radius:18px;padding:26px 20px 20px;text-align:center;
  background:#FFFDF6;border:3px double #E2C978;
  box-shadow:0 10px 26px rgba(120,100,60,.18)
}
.cert--silver{border-color:#C6CDD3;background:#FCFDFE}
.cert--bronze{border-color:#DDB68E;background:#FFFAF4}
.cert__seal{font-size:44px;line-height:1;margin-bottom:6px}
.cert__title{font-size:22px;font-weight:900;letter-spacing:.5em;color:#6B5A2A;margin-bottom:10px;
  text-indent:.5em}
.cert--silver .cert__title{color:#5C6772}
.cert--bronze .cert__title{color:#8A5F3A}
.cert__rank{
  display:block;width:fit-content;margin:0 auto 14px;
  background:#F0C64C;color:#6B4400;border-radius:999px;
  padding:5px 18px;font-size:14px;font-weight:900
}
.cert--silver .cert__rank{background:#D5DCE2;color:#4E5A64}
.cert--bronze .cert__rank{background:#E7C3A0;color:#7A4E28}
.cert__name{font-size:17px;font-weight:900;display:block;width:fit-content;
  margin:0 auto 16px;border-bottom:1.5px solid rgba(120,100,60,.25);padding:0 10px 6px}
.cert__body{font-size:13px;font-weight:700;line-height:2;color:#4E4636;margin-bottom:18px}
.cert__foot{display:flex;justify-content:space-between;font-size:11px;font-weight:800;color:#8A7A56}


/* クイズ画面の背景 */
.screen--quiz{
  background-color:#DFF3EC;
  background-repeat:no-repeat;background-size:100% auto;background-position:center top;
  background-attachment:local
}
.qtime__ico .ico{width:18px!important;height:18px!important}
.qrule__i .ico{width:28px!important;height:28px!important}
.qexp .ico{width:20px!important;height:20px!important;vertical-align:-4px;margin-right:2px}
.cert__seal .ico{width:auto!important;height:76px!important}
.qstat span .ico{width:14px!important;height:14px!important;vertical-align:-2px}

/* カレンダーの画像 */
.lb{background-size:cover;background-position:center}
.lb-day__ico .ico{width:22px!important;height:22px!important}
.lb__s .ico{width:17px!important;height:17px!important;vertical-align:-3px}
.mc__st .ico{width:14px!important;height:14px!important}



/* ============================================================
   フラットなボタン（グラデーションをやめる）
   ============================================================ */
.btn{background:#41A9E6;box-shadow:none}
.btn--ghost{background:#fff;color:var(--brand);border:2px solid #BFDFF3;box-shadow:none}
.btn--sub{background:#4CD0B8;box-shadow:none}
.btn--gold{background:#FFB454;color:#6B4400;box-shadow:none}
.cta{background:#FFB454;box-shadow:none;animation:none;border-radius:26px}
.cta--done{background:#5FD3B8;box-shadow:none}
.quiz-hero{background:#9E8AEE;box-shadow:none}
.ptcard{background:#FFB454;box-shadow:none}
.lb{box-shadow:none}
.lb__btn{background:#fff;color:#B06A00;box-shadow:none}
.fl-exp__b > i{background:#FFB454}
.xpbar > i{background:#FFB454;box-shadow:none}

.today-done{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:800;
  color:#0E6E5E;background:#E8F7F2;border-radius:14px;padding:11px 13px;margin-bottom:11px}
.today-done .ico{width:20px!important;height:20px!important}


/* ============================================================
   流れる雲とゆれる海
   ============================================================ */
.stage__sky{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.cloud{
  position:absolute;left:-45%;aspect-ratio:5/2;
  background:#fff;border-radius:999px;
  animation-name:cloudDrift;animation-timing-function:linear;animation-iteration-count:infinite
}
/* CSSで作る雲のふくらみ */
.cloud::before,.cloud::after{
  content:"";position:absolute;background:#fff;border-radius:50%
}
.cloud::before{width:46%;height:105%;left:12%;top:-52%}
.cloud::after{width:32%;height:76%;right:16%;top:-34%}
.cloud--img{
  /* background:none!important だと、インラインで指定した画像まで消えてしまう */
  background-color:transparent!important;border-radius:0;
  background-repeat:no-repeat!important;background-size:contain!important;
  height:auto;padding-bottom:0;aspect-ratio:5/3;
  /* うすい空の上でも形が分かるように、ふちを少し落とす */
  filter:drop-shadow(0 2px 0 rgba(105,165,200,.3)) drop-shadow(0 6px 10px rgba(90,150,190,.18))
}
.cloud--img::before,.cloud--img::after{display:none}
@keyframes cloudDrift{
  0%{transform:translateX(0)}
  100%{transform:translateX(calc(100vw + 60%))}
}
/* 1周のうち一部だけ横切って、残りは画面の外で待つ（雲をまばらにする） */
@keyframes cloudCross1{
  0%  {transform:translateX(0)}
  50% {transform:translateX(calc(100vw + 60%))}
  100%{transform:translateX(calc(100vw + 60%))}
}
@keyframes cloudCross2{
  0%  {transform:translateX(0)}
  54% {transform:translateX(calc(100vw + 60%))}
  100%{transform:translateX(calc(100vw + 60%))}
}
@keyframes cloudCross3{
  0%  {transform:translateX(0)}
  58% {transform:translateX(calc(100vw + 60%))}
  100%{transform:translateX(calc(100vw + 60%))}
}
.cloud--x1{animation-name:cloudCross1}
.cloud--x2{animation-name:cloudCross2}
.cloud--x3{animation-name:cloudCross3}
/* 前景の海をゆっくり揺らす */
.stage__fg{animation:seaSway 9s ease-in-out infinite}
@keyframes seaSway{
  0%,100%{transform:translate(0,0)}
  50%{transform:translate(-6px,3px)}
}


/* ============================================================
   左上のキャラ名／右上の継続日数／左下の腸活スコア
   ============================================================ */
.charid{
  position:absolute;left:14px;top:16px;z-index:6;
  display:inline-flex;align-items:center;gap:7px;
  background:rgba(255,255,255,.9);border-radius:999px;padding:6px 12px;
  box-shadow:0 3px 10px rgba(40,70,90,.14)
}
.charid__name{font-size:13px;font-weight:900;color:var(--ink)}
.charid__lv{font-size:10.5px;font-weight:900;color:#7A5200;
  background:#FFD98A;border-radius:999px;padding:2px 9px}

/* 腸活スコア：4項目のゲージ（画面上） */
.hudbars{
  position:absolute;left:14px;right:14px;top:98px;z-index:6;
  background:none;box-shadow:none;padding:0;
  display:flex;flex-direction:column;gap:6px;text-align:left;
  transition:transform .15s
}
.hudbars:active{transform:scale(.99)}
.hudbars__row{display:flex;align-items:center;gap:8px}
.hudbars__t{
  font-size:10.5px;font-weight:900;color:#3B4B55;width:66px;flex:0 0 66px;
  text-shadow:0 1px 3px rgba(255,255,255,.95), 0 0 6px rgba(255,255,255,.85)
}
.hudbars__b{
  flex:1;height:14px;border-radius:99px;background:#EEF4F7;
  border:2px solid #fff;box-sizing:border-box;overflow:hidden;
  box-shadow:0 2px 6px rgba(40,70,90,.16)
}
.hudbars__b > i{display:block;height:100%;border-radius:99px;transition:width .6s}
.hudbars__v{
  font-size:11px;font-weight:900;color:#3B4B55;width:26px;text-align:right;
  font-variant-numeric:tabular-nums;
  text-shadow:0 1px 3px #fff, 0 0 6px rgba(255,255,255,.9)
}

/* 腸活スコア：大きな丸ゲージ（左下） */
.hud{
  position:absolute;left:10px;bottom:16px;z-index:7;width:auto;
  background:none;box-shadow:none;padding:0;border-radius:0;
  display:flex;flex-direction:row;align-items:center;gap:9px;text-align:left;
  transition:transform .15s
}
.hud:active{transform:scale(.97)}
.hud__ttl{
  font-size:12.5px;font-weight:900;color:#3B4B55;line-height:1.35;white-space:nowrap;
  text-shadow:0 1px 3px rgba(255,255,255,.95), 0 0 8px rgba(255,255,255,.85)
}
.hud__ttl b{display:block;font-size:17px;font-weight:900;margin-top:3px;letter-spacing:-.03em}
.hud .ring{filter:drop-shadow(0 0 3px #fff) drop-shadow(0 0 6px rgba(255,255,255,.95)) drop-shadow(0 3px 8px rgba(60,80,95,.22))}
.hud .ring__num{font-weight:900;text-shadow:0 1px 3px rgba(255,255,255,.9)}

/* 継続日数（左上・大きく） */
.streak{
  position:absolute;left:16px;top:12px;z-index:6;color:#fff;text-align:left;
  text-shadow:0 2px 10px rgba(30,70,95,.45), 0 1px 2px rgba(30,70,95,.35);
  line-height:1;pointer-events:none
}
.streak__l{display:block;font-size:12px;font-weight:900;letter-spacing:.14em;opacity:.95;margin-bottom:2px}
.streak__n{font-size:58px;font-weight:900;letter-spacing:-.03em;
  font-variant-numeric:tabular-nums;display:inline-block;
  animation:streakPop .6s cubic-bezier(.2,1.4,.4,1)}
@keyframes streakPop{from{transform:scale(.7);opacity:0}to{transform:none;opacity:1}}
.streak__u{font-size:19px;font-weight:900;margin-left:3px}
.streak__sub{
  display:inline-flex;align-items:center;gap:6px;margin-top:8px;
  background:rgba(255,255,255,.9);border-radius:999px;padding:5px 12px;
  color:var(--ink);text-shadow:none;box-shadow:0 3px 10px rgba(40,70,90,.16)
}
.streak__name{font-size:12.5px;font-weight:900}
.streak__lv{font-size:10px;font-weight:900;color:#7A5200;
  background:#FFD98A;border-radius:999px;padding:2px 8px}

/* 右上のDAY */
.stage__day{
  position:absolute;right:16px;top:16px;z-index:6;
  background:rgba(255,255,255,.9);border-radius:999px;padding:6px 13px;
  font-size:11.5px;font-weight:800;color:var(--ink-2);box-shadow:0 3px 10px rgba(40,70,90,.16)
}
.stage__day b{color:var(--brand);font-size:14px;font-weight:900}

/* ボタンを指す吹き出し */
.corner-tag{font-size:11px;
  position:absolute;right:112px;bottom:112px;z-index:9;
  background:#fff;color:#B06A00;border:2px solid #FFD68A;
  border-radius:999px;padding:6px 14px;font-size:11.5px;font-weight:900;white-space:nowrap;
  box-shadow:0 6px 16px rgba(40,70,90,.2);
  animation:tagBounce 2.2s ease-in-out infinite
}
@keyframes tagBounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
.corner-tag::after{
  content:"";position:absolute;right:-7px;bottom:10px;
  border:7px solid transparent;border-left-color:#FFD68A;border-right:0
}


/* ============================================================
   カレンダー：ログインボーナス
   ============================================================ */
.lb{
  background:#FFB454;
  border-radius:22px;padding:16px;margin-bottom:16px;color:#6B4400;
  box-shadow:0 8px 20px rgba(240,160,40,.28)
}
.lb__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.lb__t{font-size:16px;font-weight:900}
.lb__s{font-size:11.5px;font-weight:800;opacity:.85;margin-top:2px}
.lb__badge{background:#fff;border-radius:999px;padding:5px 13px;font-size:12px;font-weight:900;color:#B06A00}
.lb__days{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.lb-day{
  background:rgba(255,255,255,.55);border-radius:12px;padding:7px 2px;text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:2px
}
.lb-day__n{font-size:8.5px;font-weight:800;opacity:.75}
.lb-day__ico{font-size:15px;line-height:1}
.lb-day__p{font-size:9px;font-weight:900}
.lb-day.is-got{background:rgba(255,255,255,.92)}
.lb-day.is-now{background:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.85);animation:lbPulse 1.6s ease-in-out infinite}
@keyframes lbPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
.lb__btn{margin-top:14px;background:#fff;color:#B06A00;box-shadow:0 4px 12px rgba(150,90,0,.2)}
.lb__done{margin-top:12px;text-align:center;font-size:12.5px;font-weight:800;
  background:rgba(255,255,255,.6);border-radius:999px;padding:9px}

/* 月カレンダー */
.mc__nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.mc__title{font-size:15px;font-weight:900}
.mc__wd{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:5px}
.mc__wd span{text-align:center;font-size:10px;font-weight:800;color:var(--ink-3)}
.mc__wd .sun{color:#E4737F}
.mc__wd .sat{color:#5B9BD5}
.mc{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.mc__cell{
  aspect-ratio:1/1;border-radius:10px;background:#F7F2EA;border:1.5px solid transparent;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px
}
.mc__cell--empty{background:none}
.mc__n{font-size:11px;font-weight:800;color:var(--ink-2)}
.mc__st{font-size:11px;line-height:1;height:12px}
.mc__cell.is-login{background:#FFF3DF}
.mc__cell.is-rec{background:#E8F7E4}
.mc__cell.is-today{border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,111,180,.12)}
.mc__cell.is-future{opacity:.4}
.mc__sum{display:flex;gap:16px;justify-content:center;margin-top:12px;
  font-size:12px;font-weight:800;color:var(--ink-2)}
.mc__sum b{font-size:16px;color:var(--brand);margin-right:2px}

.mgoal{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line)}
.mgoal:last-of-type{border-bottom:0}
.mgoal__t{font-size:12.5px;font-weight:800;width:96px;flex:0 0 96px}
.mgoal__b{flex:1;height:8px;border-radius:99px;background:#F1EBE3;overflow:hidden}
.mgoal__b > i{display:block;height:100%;border-radius:99px;background:#FFB454;transition:width .6s}
.mgoal__p{font-size:11.5px;font-weight:900;color:#B06A00;white-space:nowrap}
.mgoal.is-ok .mgoal__p{color:var(--mint)}
.mgoal.is-ok .mgoal__b > i{background:var(--mint)}

/* ============================================================
   クイズ：タイマー・キャラのリアクション
   ============================================================ */
.qtop{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.qtime{flex:1;display:flex;align-items:center;gap:8px;
  background:#fff;border-radius:999px;padding:7px 13px;box-shadow:var(--shadow)}
.qtime__ico{font-size:14px}
.qtime__bar{flex:1;height:8px;border-radius:99px;background:#EFE9E1;overflow:hidden}
.qtime__bar > i{display:block;height:100%;border-radius:99px;background:#5FD3B8;transition:width 1s linear}
.qtime__n{font-size:13px;font-weight:900;color:var(--ink-2);min-width:20px;text-align:right;
  font-variant-numeric:tabular-nums}
.qtime.is-warn .qtime__bar > i{background:#FFB454}
.qtime.is-warn .qtime__n{color:#E08A20}
.qtime.is-warn{animation:qWarn .8s ease-in-out infinite}
@keyframes qWarn{0%,100%{transform:scale(1)}50%{transform:scale(1.02)}}
.qtime.is-over .qtime__bar > i{background:#F4788A}
.qtime.is-over .qtime__n{color:#E4586E}

.qchar{position:relative;height:150px;display:grid;place-items:center;margin-bottom:8px}
.qchar__img{height:132px;width:auto;transition:transform .25s}
.qchar--think .qchar__img{animation:charBreath 3s ease-in-out infinite}
.qchar--happy .qchar__img{animation:qJump .6s cubic-bezier(.2,1.4,.4,1) 2}
@keyframes qJump{
  0%{transform:translateY(0) scale(1,1)}
  30%{transform:translateY(-26px) scale(.94,1.08)}
  60%{transform:translateY(0) scale(1.08,.92)}
  100%{transform:translateY(0) scale(1,1)}
}
.qchar--sad .qchar__img{animation:qSad .7s ease both}
@keyframes qSad{
  0%{transform:translateY(0) rotate(0) scale(1,1)}
  100%{transform:translateY(8px) rotate(-6deg) scale(1.04,.94)}
}
.qchar--surprised .qchar__img{animation:qShake .5s ease 2}
@keyframes qShake{
  0%,100%{transform:translateX(0)}
  25%{transform:translateX(-7px) rotate(-3deg)}
  75%{transform:translateX(7px) rotate(3deg)}
}
.qchar__fx{position:absolute;inset:0;pointer-events:none;display:grid;place-items:start center}
.qchar__word{
  display:inline-block;margin-top:2px;background:#fff;border-radius:999px;
  padding:6px 15px;font-size:13px;font-weight:900;color:var(--ink);
  box-shadow:0 6px 16px rgba(40,70,90,.2);animation:wordPop .4s cubic-bezier(.2,1.4,.4,1)
}
@keyframes wordPop{from{opacity:0;transform:scale(.7) translateY(6px)}to{opacity:1;transform:none}}
.qchar--happy .qchar__word{color:#0E8E76}
.qchar--sad .qchar__word{color:#C2566A}
.qchar--surprised .qchar__word{color:#D08A12}

.qcard-q{border-radius:22px}
.qexp.to{background:#FFF1DC;color:#A06A12}

.qstats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}
.qstat{background:#FAF6F0;border-radius:16px;padding:12px 6px;text-align:center}
.qstat b{display:block;font-size:22px;font-weight:900;color:var(--brand);line-height:1.1}
.qstat b small{font-size:12px;color:var(--ink-3)}
.qstat span{font-size:10px;font-weight:800;color:var(--ink-3)}
.qrule{display:flex;gap:11px;align-items:flex-start;background:#F3F8FB;border-radius:16px;
  padding:12px 14px;font-size:12px;font-weight:700;line-height:1.7;color:var(--ink-2)}
.qrule__i{font-size:20px;line-height:1.2}

/* ============================================================
   賞状
   ============================================================ */
.cert-list{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.cert-mini{
  border-radius:14px;padding:10px 4px;text-align:center;border:2px solid #F0E4C8;background:#FFFDF7;
  display:flex;flex-direction:column;gap:2px
}
.cert-mini__r{font-size:12px;font-weight:900;color:#B08114}
.cert-mini__s{font-size:10px;font-weight:800;color:var(--ink-2)}
.cert-mini__d{font-size:8.5px;font-weight:700;color:var(--ink-3)}
.cert-mini--gold{border-color:#F0C64C;background:#FFFBEE}
.cert-mini--silver{border-color:#CFD6DC;background:#FBFCFD}
.cert-mini--silver .cert-mini__r{color:#7C8A95}
.cert-mini--bronze{border-color:#E0BE9A;background:#FFF9F3}
.cert-mini--bronze .cert-mini__r{color:#A9713F}

.cert{
  position:relative;border-radius:18px;padding:26px 20px 20px;text-align:center;
  background:#FFFDF6;border:3px double #E2C978;
  box-shadow:0 10px 26px rgba(120,100,60,.18)
}
.cert--silver{border-color:#C6CDD3;background:#FCFDFE}
.cert--bronze{border-color:#DDB68E;background:#FFFAF4}
.cert__seal{font-size:44px;line-height:1;margin-bottom:6px}
.cert__title{font-size:22px;font-weight:900;letter-spacing:.5em;color:#6B5A2A;margin-bottom:10px;
  text-indent:.5em}
.cert--silver .cert__title{color:#5C6772}
.cert--bronze .cert__title{color:#8A5F3A}
.cert__rank{
  display:block;width:fit-content;margin:0 auto 14px;
  background:#F0C64C;color:#6B4400;border-radius:999px;
  padding:5px 18px;font-size:14px;font-weight:900
}
.cert--silver .cert__rank{background:#D5DCE2;color:#4E5A64}
.cert--bronze .cert__rank{background:#E7C3A0;color:#7A4E28}
.cert__name{font-size:17px;font-weight:900;display:block;width:fit-content;
  margin:0 auto 16px;border-bottom:1.5px solid rgba(120,100,60,.25);padding:0 10px 6px}
.cert__body{font-size:13px;font-weight:700;line-height:2;color:#4E4636;margin-bottom:18px}
.cert__foot{display:flex;justify-content:space-between;font-size:11px;font-weight:800;color:#8A7A56}


/* クイズ画面の背景 */
.screen--quiz{
  background-color:#DFF3EC;
  background-repeat:no-repeat;background-size:100% auto;background-position:center top;
  background-attachment:local
}
.qtime__ico .ico{width:18px!important;height:18px!important}
.qrule__i .ico{width:28px!important;height:28px!important}
.qexp .ico{width:20px!important;height:20px!important;vertical-align:-4px;margin-right:2px}
.cert__seal .ico{width:auto!important;height:76px!important}
.qstat span .ico{width:14px!important;height:14px!important;vertical-align:-2px}

/* カレンダーの画像 */
.lb{background-size:cover;background-position:center}
.lb-day__ico .ico{width:22px!important;height:22px!important}
.lb__s .ico{width:17px!important;height:17px!important;vertical-align:-3px}
.mc__st .ico{width:14px!important;height:14px!important}



/* ============================================================
   フラットなボタン（グラデーションをやめる）
   ============================================================ */
.btn{background:#41A9E6;box-shadow:none}
.btn--ghost{background:#fff;color:var(--brand);border:2px solid #BFDFF3;box-shadow:none}
.btn--sub{background:#4CD0B8;box-shadow:none}
.btn--gold{background:#FFB454;color:#6B4400;box-shadow:none}
.cta{background:#FFB454;box-shadow:none;animation:none;border-radius:26px}
.cta--done{background:#5FD3B8;box-shadow:none}
.quiz-hero{background:#9E8AEE;box-shadow:none}
.ptcard{background:#FFB454;box-shadow:none}
.lb{box-shadow:none}
.lb__btn{background:#fff;color:#B06A00;box-shadow:none}
.fl-exp__b > i{background:#FFB454}
.xpbar > i{background:#FFB454;box-shadow:none}

.today-done{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:800;
  color:#0E6E5E;background:#E8F7F2;border-radius:14px;padding:11px 13px;margin-bottom:11px}
.today-done .ico{width:20px!important;height:20px!important}



/* ============================================================
   左上のキャラ名／右上の継続日数／左下の腸活スコア
   ============================================================ */
.charid{
  position:absolute;left:14px;top:16px;z-index:6;
  display:inline-flex;align-items:center;gap:7px;
  background:rgba(255,255,255,.9);border-radius:999px;padding:6px 12px;
  box-shadow:0 3px 10px rgba(40,70,90,.14)
}
.charid__name{font-size:13px;font-weight:900;color:var(--ink)}
.charid__lv{font-size:10.5px;font-weight:900;color:#7A5200;
  background:#FFD98A;border-radius:999px;padding:2px 9px}

/* ============================================================
   クイズ タイムアタック
   ============================================================ */
/* カウントダウン */
.qcount{
  position:fixed;inset:0;z-index:60;display:grid;place-items:center;
  background:rgba(255,253,250,.4)
}
/* カウントダウンと「スタート！」は丸ゴシックの太字で、わくわくする感じに */
.qcount__n{
  font-family:"M PLUS Rounded 1c","Hiragino Maru Gothic ProN","Hiragino Maru Gothic Pro",
    "Kosugi Maru",sans-serif;
  font-size:132px;font-weight:800;color:#fff;line-height:1;letter-spacing:.02em;
  -webkit-text-stroke:12px #41A9E6;paint-order:stroke fill;
  text-shadow:0 10px 0 rgba(31,127,188,.28)
}
.qcount__n.pop{animation:qCountPop .7s cubic-bezier(.2,1.5,.4,1)}
.qcount__n.is-go{
  font-size:72px;-webkit-text-stroke:11px #FFB454;
  text-shadow:0 9px 0 rgba(214,128,20,.3);
  animation:qGoPop .6s cubic-bezier(.2,1.6,.4,1)
}
@keyframes qCountPop{
  0%  {transform:scale(.4) rotate(-8deg);opacity:0}
  35% {transform:scale(1.2) rotate(3deg);opacity:1}
  70% {transform:scale(.96) rotate(-1deg)}
  100%{transform:scale(1) rotate(0);opacity:1}
}
@keyframes qGoPop{
  0%  {transform:scale(.3) rotate(-12deg);opacity:0}
  40% {transform:scale(1.28) rotate(5deg);opacity:1}
  70% {transform:scale(.94) rotate(-2deg)}
  100%{transform:scale(1) rotate(0);opacity:1}
}

/* ゲーム中のヘッダー */
.qhud{
  position:relative;display:flex;align-items:center;gap:12px;margin-bottom:16px;
  background:#fff;border-radius:20px;padding:10px 12px;box-shadow:var(--shadow)
}
.qhud__time{flex:1;min-width:0;display:flex;align-items:center;gap:7px}
.qhud__lab{font-size:10px;font-weight:900;color:var(--ink-3);flex:0 0 auto}
.qhud__bar{
  flex:1;height:12px;border-radius:99px;background:#EEF4F7;
  border:2px solid #fff;box-sizing:border-box;overflow:hidden;
  box-shadow:0 1px 4px rgba(40,70,90,.16)
}
.qhud__bar > i{display:block;height:100%;width:100%;border-radius:99px;background:#5FD3B8;transition:width .1s linear}
.qhud__n{font-size:14px;font-weight:900;color:var(--ink);min-width:22px;text-align:right;
  font-variant-numeric:tabular-nums}
.qhud__time.is-low .qhud__bar > i{background:#F4788A}
.qhud__time.is-low .qhud__n{color:#E4586E;animation:qWarn .7s ease-in-out infinite}
.qhud__score{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15;flex:0 0 auto;margin-right:2px}
.qhud__score span{font-size:8.5px;font-weight:900;color:var(--ink-3);letter-spacing:.06em}
.qhud__score b{font-size:16px;font-weight:900;color:var(--brand);font-variant-numeric:tabular-nums}
.qhud__score b.is-up{animation:qScorePop .45s ease-out}
@keyframes qScorePop{0%{transform:scale(1)}40%{transform:scale(1.3);color:#FFB454}100%{transform:scale(1)}}
.qring{
  position:relative;flex:0 0 auto;width:40px;height:40px;border-radius:50%;
  display:grid;place-items:center
}
.qring > i{position:absolute;inset:4px;border-radius:50%;background:#fff}
.qring > span{position:relative;font-size:14px;font-weight:900;color:var(--ink);
  font-variant-numeric:tabular-nums}
.qring.is-low > span{color:#E4586E}
.qcombo{
  position:absolute;right:12px;bottom:-13px;background:#FFB454;color:#6B4400;
  border-radius:999px;padding:3px 11px;display:flex;align-items:baseline;gap:4px;
  box-shadow:0 4px 12px rgba(240,160,60,.35);animation:qCountPop .35s ease-out
}
.qcombo b{font-size:14px;font-weight:900;line-height:1}
.qcombo span{font-size:9px;font-weight:900}

/* 正誤フラッシュ */
.qflash{
  position:fixed;left:50%;top:80%;transform:translate(-50%,-50%);z-index:55;
  font-size:26px;font-weight:900;padding:14px 28px;border-radius:999px;
  pointer-events:none;animation:qFlashIn .35s cubic-bezier(.2,1.4,.4,1)
}
.qflash--ok{background:#5FD3B8;color:#fff;box-shadow:0 10px 26px rgba(60,190,160,.4)}
.qflash--ng{background:#F4788A;color:#fff;box-shadow:0 10px 26px rgba(230,110,130,.35);font-size:20px}
.qflash--to{background:#A9B6BF;color:#fff;box-shadow:0 10px 26px rgba(120,140,155,.35);font-size:20px}
@keyframes qFlashIn{0%{transform:translate(-50%,-50%) scale(.4);opacity:0}100%{transform:translate(-50%,-50%) scale(1);opacity:1}}

/* 結果 */
.qtimeup{
  text-align:center;font-size:30px;font-weight:900;color:#F4788A;
  letter-spacing:.06em;margin-bottom:4px;animation:qCountPop .5s ease-out
}
.qresult__p{font-size:46px;font-weight:900;line-height:1;color:var(--brand);
  font-variant-numeric:tabular-nums}
.qbest{
  display:inline-block;margin-top:8px;background:#FFB454;color:#6B4400;
  border-radius:999px;padding:4px 14px;font-size:12px;font-weight:900
}
.qsum{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:16px}
.qsum > div{background:#F7F3EC;border-radius:14px;padding:10px 4px}
.qsum b{display:block;font-size:20px;font-weight:900;color:var(--ink);line-height:1.1}
.qsum b small{font-size:12px;color:var(--ink-3)}
.qsum span{font-size:9.5px;font-weight:800;color:var(--ink-3)}

/* 学びのおさらい */
.qrev__top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.qrev__ttl{font-size:14px;font-weight:900;color:var(--ink)}
.qrev__n{font-size:12px;font-weight:900;color:var(--ink-3);font-variant-numeric:tabular-nums}
.qrev__dots{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:12px}
.qrev__dot{width:9px;height:9px;border-radius:50%;background:#D8E1E7}
.qrev__dot--ok{background:#5FD3B8}
.qrev__dot--ng{background:#F4788A}
.qrev__dot--to{background:#A9B6BF}
.qrev__dot.is-now{box-shadow:0 0 0 3px rgba(65,169,230,.35)}
.qrev__badge{
  display:inline-flex;align-items:center;gap:5px;border-radius:999px;
  padding:4px 13px;font-size:12px;font-weight:900;margin-bottom:10px
}
.qrev__badge--ok{background:var(--mint-l);color:#0E6E5E}
.qrev__badge--ng{background:#FDEAED;color:#B33A50}
.qrev__badge--to{background:#EDF1F4;color:#5E6E79}
.qrev__ans{display:flex;flex-direction:column;gap:7px;margin-top:12px}
.qrev__opt{
  display:flex;align-items:center;gap:9px;border-radius:14px;padding:10px 12px;
  background:#F7F3EC;font-size:13px;font-weight:700;line-height:1.5;color:var(--ink-2)
}
.qrev__m{
  width:24px;height:24px;flex:0 0 24px;border-radius:50%;background:#E3EAEF;color:var(--ink-3);
  display:grid;place-items:center;font-size:11px;font-weight:900
}
.qrev__opt.is-correct{background:var(--mint-l);color:#0E6E5E;font-weight:900}
.qrev__opt.is-correct .qrev__m{background:var(--mint);color:#fff}
.qrev__opt.is-wrong{background:#FDEAED;color:#B33A50}
.qrev__opt.is-wrong .qrev__m{background:var(--pink);color:#fff}

/* 動きを減らす設定の端末では、ゆっくりにする。
   キャラだけ別のアニメにすると影と位置がズレるので、2つとも同じ動きのまま遅くする */
@media (prefers-reduced-motion: reduce){
  .stage__char,.stage__shadow{animation-duration:7s}
}

/* 腸活スコアのポップアップ */
.scpop{text-align:center}
.scpop__head{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:18px}
.scpop__ttl{font-size:13px;font-weight:900;color:var(--ink-3);letter-spacing:.06em}
.scpop__rank{font-size:21px;font-weight:900}
.scpop__rows{display:flex;flex-direction:column;gap:11px;text-align:left}
.scpop__row{display:flex;align-items:center;gap:10px}
.scpop__t{font-size:12px;font-weight:900;color:var(--ink-2);width:78px;flex:0 0 78px}
.scpop__b{flex:1;height:14px;border-radius:99px;background:#EEF4F7;overflow:hidden;
  box-shadow:inset 0 1px 2px rgba(40,70,90,.08)}
.scpop__b > i{display:block;height:100%;border-radius:99px;transition:width .7s cubic-bezier(.2,.9,.3,1)}
.scpop__v{font-size:12.5px;font-weight:900;width:30px;text-align:right;
  font-variant-numeric:tabular-nums;color:var(--ink-2)}
.scpop__note{font-size:11.5px;color:var(--ink-3);line-height:1.7;margin-top:16px;text-align:left}

/* ============================================================
   ヘッダー下：腸活耳より情報（横に流れる）
   ============================================================ */
:root{--tickerh:36px}
.ticker{
  position:relative;z-index:40;display:flex;align-items:center;
  width:100%;height:var(--tickerh);max-width:520px;margin:0 auto;overflow:hidden;
  background:#FFF6E4
}
.ticker__win{flex:1;min-width:0;overflow:hidden;position:relative;height:100%}
.ticker__run{
  position:absolute;left:0;top:0;height:100%;display:flex;align-items:center;
  white-space:nowrap;will-change:transform;
  animation:tickerRun 60s linear infinite
}
.ticker__i{
  padding:0 28px;font-size:14px;font-weight:800;color:#7A5200;position:relative
}
.ticker__i::after{
  content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);
  width:5px;height:5px;border-radius:50%;background:#FFD08A
}
@keyframes tickerRun{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ============================================================
   ステージ右側のボタン列
   ============================================================ */
.rail{
  position:absolute;left:10px;top:74px;z-index:9;
  display:flex;flex-direction:column;gap:14px
}
.rail__b{
  position:relative;width:56px;padding:2px 0;
  background:none;box-shadow:none;border-radius:0;
  display:flex;flex-direction:column;align-items:center;gap:2px;
  transition:transform .14s
}
.rail__b:active{transform:scale(.9)}
.rail__e{font-size:30px;line-height:1;filter:drop-shadow(0 1px 3px rgba(255,255,255,.9))}
.rail__t{
  font-size:11px;font-weight:900;color:#3B4B55;line-height:1;
  text-shadow:0 1px 3px rgba(255,255,255,.95), 0 0 6px rgba(255,255,255,.9)
}
.rail__badge{
  position:absolute;top:-1px;right:6px;width:9px;height:9px;border-radius:50%;
  background:var(--pink);box-shadow:0 0 0 2px #fff;animation:pulse 1.6s infinite
}

/* 島に置いた模様がえアイテム */
.deco-item{
  position:absolute;z-index:2;font-size:38px;line-height:1;
  transform-origin:50% 100%;pointer-events:none;
  filter:drop-shadow(0 3px 4px rgba(60,80,95,.18));
  animation:decoBob 4.4s ease-in-out infinite
}
@keyframes decoBob{0%,100%{translate:0 0}50%{translate:0 -5px}}
.deco-item[data-i="1"]{animation-delay:-1.5s}
.deco-item[data-i="2"]{animation-delay:-3s}

/* ============================================================
   お知らせ
   ============================================================ */
.pagehead{margin:2px 4px 14px}
.pagehead h2{font-size:20px;font-weight:900;color:var(--ink);line-height:1.3}
.pagehead p{font-size:12px;color:var(--ink-3);font-weight:700;margin-top:4px;line-height:1.6}
.newslist{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
.newsrow{
  background:var(--card);border-radius:var(--r-m);box-shadow:var(--shadow);
  padding:14px 16px;text-align:left;transition:transform .14s
}
.newsrow:active{transform:scale(.99)}
.newsrow__top{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.newstag{
  font-size:9.5px;font-weight:900;color:#fff;border-radius:999px;padding:3px 9px
}
.newsrow__d{font-size:10.5px;font-weight:800;color:var(--ink-3)}
.newsrow__new{
  font-size:9px;font-weight:900;color:#fff;background:var(--pink);
  border-radius:999px;padding:2px 7px;letter-spacing:.04em
}
.newsrow__t{font-size:14px;font-weight:900;line-height:1.55;color:var(--ink)}
.newsrow.is-new{box-shadow:0 4px 14px rgba(244,120,138,.18)}
.newsart__t{font-size:18px;font-weight:900;line-height:1.5;margin:8px 0 12px}
.newsart__b p{font-size:13.5px;line-height:1.9;color:var(--ink-2);margin-bottom:12px}

/* ============================================================
   着せ替え・ショップ
   ============================================================ */
.seg{display:flex;gap:8px;margin-bottom:14px}
.seg__b{
  flex:1;height:46px;border-radius:16px;background:#fff;color:var(--ink-3);
  font-size:13px;font-weight:900;box-shadow:var(--shadow);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  transition:transform .14s
}
.seg__b:active{transform:scale(.98)}
.seg__b.is-on{background:var(--brand);color:#fff}
.seg__n{font-size:9.5px;font-weight:800;opacity:.85}
.slots{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.slot{
  border-radius:16px;background:#F7F3EC;border:2px dashed #DDD3C4;
  min-height:96px;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:4px;padding:8px 4px;text-align:center
}
.slot.is-set{background:#EAF6FC;border:2px solid #BFE3F5}
.slot__e{font-size:24px;color:#C6BCA9;line-height:1}
.slot__n{font-size:9.5px;font-weight:800;color:var(--ink-3);line-height:1.3}
.slot__x{font-size:9px;font-weight:900;color:#E4586E}
.itgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.itcard{
  border-radius:16px;background:#F7F3EC;padding:12px 4px 9px;
  display:flex;flex-direction:column;align-items:center;gap:5px;
  transition:transform .14s
}
.itcard:active{transform:scale(.97)}
.itcard__e{font-size:30px;line-height:1}
.itcard__n{font-size:9.5px;font-weight:800;color:var(--ink-2);line-height:1.35;text-align:center}
.itcard__b{
  font-size:10px;font-weight:900;color:#7A5200;background:#FFD98A;
  border-radius:999px;padding:3px 10px
}
.itcard.is-on{background:#E6F7F1;box-shadow:inset 0 0 0 2px #5FD3B8}
.itcard.is-on .itcard__b{background:#5FD3B8;color:#fff}
.itcard.is-have .itcard__b{background:#DDE5EA;color:#7B8B96}
.itcard.is-off{opacity:.5}
.ptbar{
  display:flex;align-items:center;justify-content:space-between;
  background:#FFB454;color:#6B4400;border-radius:18px;padding:13px 18px;margin-bottom:14px
}
.ptbar span{font-size:11.5px;font-weight:900}
.ptbar b{font-size:19px;font-weight:900;font-variant-numeric:tabular-nums}

/* ============================================================
   Q&A
   ============================================================ */
.faq{border-bottom:1px dashed var(--line)}
.faq:last-child{border-bottom:0}
.faq__q{
  width:100%;display:flex;align-items:flex-start;gap:9px;padding:13px 0;text-align:left
}
.faq__mark{
  width:22px;height:22px;flex:0 0 22px;border-radius:50%;background:var(--brand);color:#fff;
  display:grid;place-items:center;font-size:11px;font-weight:900
}
.faq__mark--a{background:#5FD3B8}
.faq__qt{flex:1;font-size:13.5px;font-weight:800;line-height:1.6;color:var(--ink)}
.faq__arrow{
  width:10px;height:10px;flex:0 0 10px;margin-top:6px;
  border-right:2.5px solid #9FB0BC;border-bottom:2.5px solid #9FB0BC;
  transform:rotate(45deg);transition:transform .2s
}
.faq.is-open .faq__arrow{transform:rotate(-135deg)}
.faq__a{display:none;gap:9px;padding:0 0 14px 0}
.faq.is-open .faq__a{display:flex}
.faq__a > span:last-child{flex:1;font-size:13px;line-height:1.85;color:var(--ink-2);font-weight:700}

/* ============================================================
   WEBサイト（ブランドバナー）
   ============================================================ */
.banners{display:flex;flex-direction:column;gap:11px;margin-bottom:12px}
.banner{
  display:flex;align-items:center;gap:13px;border-radius:20px;padding:16px;
  color:#fff;text-decoration:none;box-shadow:0 6px 16px rgba(40,70,90,.14);transition:transform .14s
}
.banner:active{transform:scale(.985)}
.banner__e{
  width:46px;height:46px;flex:0 0 46px;border-radius:14px;
  background:rgba(255,255,255,.25);display:grid;place-items:center;font-size:24px
}
.banner__tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.banner__tx b{font-size:15.5px;font-weight:900;line-height:1.3}
.banner__tx i{font-size:10.5px;font-weight:800;font-style:normal;opacity:.92}
.banner__tx em{font-size:11px;font-style:normal;opacity:.9;line-height:1.5;margin-top:2px}
.banner__go{font-size:24px;font-weight:900;opacity:.8;line-height:1}

@media (prefers-reduced-motion: reduce){
  .deco-item{animation-duration:12s}
}

/* ============================================================
   ステージ内のステータス（枠なし）
   ============================================================ */
.hd{
  position:absolute;left:10px;right:10px;top:10px;z-index:10;
  display:flex;align-items:center;justify-content:space-between;gap:8px
}
.hd__me{
  display:flex;align-items:center;gap:8px;
  background:#fff;border-radius:999px;padding:3px 13px 3px 3px;
  box-shadow:0 2px 8px rgba(40,70,90,.12);transition:transform .14s
}
.hd__me:active{transform:scale(.97)}
.hd__lv{
  width:40px;height:40px;flex:0 0 40px;border-radius:50%;background:#FFB454;color:#fff;
  display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1
}
.hd__lv small{font-size:9px;font-weight:900;letter-spacing:.06em}
.hd__body{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:88px}
.hd__lv b{
  font-size:19px;font-weight:900;margin-top:-2px;
  -webkit-text-stroke:2.5px #2E2A26;paint-order:stroke fill
}
.hd__name{font-size:15px;font-weight:900;color:var(--ink);line-height:1;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}
.hd__xp{
  position:relative;display:block;width:100%;height:14px;border-radius:99px;
  background:#EDF3F6;overflow:hidden
}
.hd__xp > i{display:block;height:100%;width:0;border-radius:99px;background:#5FD3B8;transition:width .6s}
.hd__xp > em{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:10px;font-weight:900;font-style:normal;color:#3B4B55;font-variant-numeric:tabular-nums
}
.hd__right{display:flex;align-items:center;gap:6px}
.hd__pt{
  display:flex;align-items:center;gap:3px;background:none;color:#fff;
  border-radius:0;padding:2px 2px 2px 0;box-shadow:none;
  transition:transform .14s;white-space:nowrap
}
/* 袋文字（白のふちどり付き） */
.hd__pt .hd__pt-l,.hd__pt b,.hd__pt .hd__pt-u{
  color:#fff;
  -webkit-text-stroke:3.5px #4A6B7A;
  paint-order:stroke fill;
  text-shadow:0 2px 4px rgba(30,60,80,.28)
}
.hd__pt-l{font-size:13px;font-weight:900;margin-left:0}
.hd__pt:active{transform:scale(.95)}
.hd__pt-i{
  width:26px;height:26px;border-radius:50%;background:none;
  display:grid;place-items:center;font-size:18px;line-height:1;align-self:center;
  filter:drop-shadow(0 0 2px #fff) drop-shadow(0 2px 3px rgba(30,60,80,.3))
}
.hd__pt-i--img{background:none;width:26px;height:26px;object-fit:contain}
.hd__pt-u{font-size:13px;font-weight:900;font-style:normal;letter-spacing:.02em}
.hd__gear-i{font-size:19px;line-height:1}
.hd__gear-i--img{width:23px;height:23px;object-fit:contain}
.hd__pt b{font-size:19px;font-weight:900;font-variant-numeric:tabular-nums}
.hd__gear{
  width:38px;height:38px;border-radius:50%;background:#fff;
  color:var(--brand);font-size:19px;box-shadow:0 2px 8px rgba(40,70,90,.12);
  display:grid;place-items:center;transition:transform .14s
}
.hd__gear:active{transform:scale(.92)}

/* はじめてから◯日目 */
.dayno{
  position:absolute;left:16px;top:58px;z-index:8;pointer-events:none;
  display:flex;flex-direction:column;align-items:flex-start;gap:1px
}
.dayno__l{
  font-size:11px;font-weight:900;color:#5A6B76;letter-spacing:.06em;
  text-shadow:0 1px 3px rgba(255,255,255,.95), 0 0 8px rgba(255,255,255,.9)
}
.dayno__b{display:flex;align-items:baseline;gap:2px}
.dayno__n{
  font-size:46px;font-weight:900;line-height:.95;color:var(--brand);
  font-variant-numeric:tabular-nums;letter-spacing:-.03em;
  text-shadow:0 2px 4px rgba(255,255,255,.95), 0 0 14px rgba(255,255,255,.9)
}
.dayno__u{
  font-size:15px;font-weight:900;color:#3B4B55;
  text-shadow:0 1px 3px rgba(255,255,255,.95), 0 0 8px rgba(255,255,255,.9)
}

/* ============================================================
   きょうのポイント（右の縦列）
   ============================================================ */
.miss{
  position:absolute;right:8px;top:56px;z-index:9;width:80px;
  background:#fff;border-radius:22px;
  box-shadow:0 4px 14px rgba(40,70,90,.14);
  padding:8px 8px 10px;
  display:flex;flex-direction:column;align-items:center;gap:8px
}
.miss__head{
  width:100%;display:flex;flex-direction:column;align-items:center;gap:2px;
  padding:1px 0 6px;border-bottom:1px dashed #E2E9EE
}
.miss__ttl{
  font-size:11px;font-weight:900;color:#3B4B55;line-height:1.3;text-align:center
}
.miss__arrow{
  width:8px;height:8px;margin-top:1px;
  border-right:2.2px solid #9FB0BC;border-bottom:2.2px solid #9FB0BC;
  transform:rotate(-135deg) translate(-2px,-2px);transition:transform .22s
}
.miss.is-closed .miss__arrow{transform:rotate(45deg) translate(-1px,-1px)}
.miss__list{
  display:flex;flex-direction:column;align-items:center;gap:9px;
  padding:6px 7px 2px;margin:-6px -7px -2px;
  overflow:hidden;transition:max-height .28s ease, opacity .22s ease;
  max-height:420px;opacity:1
}
.miss.is-closed{padding-bottom:8px}
.miss.is-closed .miss__list{max-height:0;opacity:0;padding-top:0;padding-bottom:0;margin-top:0}
.miss.is-closed .miss__head{border-bottom:0;padding-bottom:0}
.miss__b{
  position:relative;width:60px;height:60px;border-radius:50%;
  background:#fff;
  box-shadow:0 2px 6px rgba(40,70,90,.12), inset 0 0 0 2.5px #FFB454;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;
  transition:transform .14s
}
.miss__b:active{transform:scale(.92)}
.miss__e{font-size:23px;line-height:1.1}
.miss__t{font-size:9.5px;font-weight:900;color:var(--ink-2);line-height:1;white-space:nowrap}
.miss__p{
  position:absolute;right:-3px;top:-3px;width:19px;height:19px;
  border-radius:50%;background:#5FD3B8;color:#fff;
  display:grid;place-items:center;box-shadow:0 0 0 2px #fff
}
.miss__b.is-done{background:#F4F7F9;box-shadow:inset 0 0 0 2.5px #DCE4E9}
.miss__b.is-done .miss__e{filter:grayscale(1);opacity:.55}
.miss__b.is-done .miss__t{color:#9FB0BC}

.miss__ok{font-size:11px;line-height:1;color:#fff}
.miss__ok--img{width:11px;height:11px;object-fit:contain}

/* せまい画面では、腸活スコアの文字が記録ボタンにかぶるので縦積みにする */
@media (max-width:364px){
  .hud{flex-direction:column;align-items:flex-start;gap:5px}
  .hud__ttl{font-size:10px}
  .hud__ttl b{font-size:13px}
  .rail__b{width:46px;height:46px}
  .miss__b{width:46px;height:46px}
  .miss{width:64px}
  .miss__e{font-size:17px}
}

/* アイコンを画像に差し替えたとき用 */
.rail__e--img{width:34px;height:34px;object-fit:contain}
.miss__e--img{width:28px;height:28px;object-fit:contain}
.deco-item--img{width:42px;height:auto;font-size:0}

/* ============================================================
   画面のヘッダー（画像 or 単色）
   ============================================================ */
.hero{
  position:relative;border-radius:var(--r-m);overflow:hidden;
  min-height:104px;margin-bottom:14px;color:#fff;
  display:flex;align-items:flex-end;
  background-size:cover;background-position:center
}
.hero--img::after{
  content:"";position:absolute;inset:0;
  background:rgba(20,50,70,.28)
}
.hero__in{position:relative;z-index:2;padding:16px 18px 15px;width:100%}
.hero__t{font-size:18px;font-weight:900;line-height:1.35;text-shadow:0 2px 6px rgba(20,50,70,.35)}
.hero__s{font-size:11.5px;font-weight:800;line-height:1.65;margin-top:5px;opacity:.95;
  text-shadow:0 1px 4px rgba(20,50,70,.35)}

/* ============================================================
   クイズのモード選択
   ============================================================ */
.qmode{display:flex;gap:9px;margin-bottom:11px}
.qmode__b{
  flex:1;border-radius:16px;padding:12px 6px 10px;background:#F7F3EC;
  display:flex;flex-direction:column;align-items:center;gap:3px;
  font-size:12.5px;font-weight:900;color:var(--ink-2);transition:transform .14s
}
.qmode__b span{font-size:9.5px;font-weight:800;color:var(--ink-3)}
.qmode__b:active{transform:scale(.98)}
.qmode__b.is-on{background:var(--brand);color:#fff}
.qmode__b.is-on span{color:rgba(255,255,255,.85)}
.qmode__b--wrong.is-on{background:#F4788A}
.qmode__b[disabled]{opacity:.45}
.qcats{display:flex;flex-wrap:wrap;gap:7px}
.qcat{
  border-radius:999px;padding:8px 14px;background:#F1F5F8;color:var(--ink-2);
  font-size:12px;font-weight:900;display:inline-flex;align-items:baseline;gap:5px;
  transition:transform .14s
}
.qcat span{font-size:9.5px;font-weight:800;color:var(--ink-3)}
.qcat:active{transform:scale(.97)}
.qcat.is-on{background:#9E8AEE;color:#fff}
.qcat.is-on span{color:rgba(255,255,255,.85)}

/* ============================================================
   ログインボーナスのポップアップ
   ============================================================ */
/* ============================================================
   ログインボーナス
   ============================================================ */
.lbx{text-align:center}
.lbx__ttl{
  position:relative;display:flex;align-items:center;justify-content:center;
  height:44px;margin:0 -4px 6px
}
.lbx__ttl::before,.lbx__ttl::after{
  content:"";position:absolute;top:50%;width:26px;height:26px;
  background:#FFB454;transform:translateY(-50%) rotate(45deg);border-radius:5px
}
.lbx__ttl::before{left:0}
.lbx__ttl::after{right:0}
.lbx__ttl span{
  position:relative;z-index:2;display:block;width:100%;
  background:#FFB454;color:#fff;border-radius:12px;
  padding:10px 18px;font-size:17px;font-weight:900;letter-spacing:.04em
}
.lbx__s{font-size:12px;font-weight:800;color:var(--ink-3);margin-bottom:14px}
.lbx__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.lbd{
  position:relative;border-radius:14px;background:#F7F3EC;padding:8px 2px 7px;
  display:flex;flex-direction:column;align-items:center;gap:2px;overflow:hidden
}
.lbd__d{
  font-size:9px;font-weight:900;color:#fff;background:#9FB0BC;
  border-radius:999px;padding:2px 8px;line-height:1.2
}
.lbd__i{height:28px;display:grid;place-items:center}
.lbd__e{font-size:22px;line-height:1}
.lbd__e--img{width:26px;height:26px;object-fit:contain}
.lbd__p{font-size:12px;font-weight:900;color:#7A5200;line-height:1}
.lbd__p i{font-size:9px;font-style:normal;margin-left:1px}
.lbd--last{grid-column:span 2;background:#FFF1D6;box-shadow:inset 0 0 0 2.5px #FFB454}
.lbd--last .lbd__d{background:#F4788A}
.lbd--last .lbd__p{font-size:15px}
.lbd.is-now{box-shadow:inset 0 0 0 2.5px #41A9E6}
.lbd.is-now .lbd__d{background:#41A9E6}
.lbd.is-done{background:#EEF3F6}
.lbd.is-done .lbd__e,.lbd.is-done .lbd__p{opacity:.35}

/* 受け取りずみのスタンプ */
.lbd__stamp{
  position:absolute;inset:0;margin:auto;width:52px;height:52px;border-radius:50%;
  display:grid;place-items:center;
  border:3px solid #E4586E;color:#E4586E;
  font-size:22px;font-weight:900;
  background:rgba(255,255,255,.55);
  transform:rotate(-14deg) scale(1);opacity:0;visibility:hidden
}
.lbd.is-done .lbd__stamp{opacity:.9;visibility:visible}
.lbd.is-stamping .lbd__stamp{animation:stampPress .42s cubic-bezier(.3,1.6,.4,1)}
@keyframes stampPress{
  0%{opacity:0;transform:rotate(-30deg) scale(2.6)}
  55%{opacity:1;transform:rotate(-10deg) scale(.86)}
  75%{transform:rotate(-16deg) scale(1.06)}
  100%{opacity:.9;transform:rotate(-14deg) scale(1)}
}

/* 下段：ひとことキャラクター */
.lbx__foot{
  display:flex;align-items:flex-end;justify-content:space-between;gap:8px;margin-top:14px
}
.lbx__talk{
  position:relative;flex:1;background:#EAF6FC;border-radius:16px;padding:12px 14px;
  font-size:12.5px;font-weight:800;color:#3B4B55;line-height:1.7;text-align:left
}
.lbx__talk b{color:#E08A20;font-size:15px}
.lbx__talk::after{
  content:"";position:absolute;right:-7px;bottom:16px;
  border:7px solid transparent;border-left-color:#EAF6FC;border-right:0
}
.lbx__char{flex:0 0 auto;line-height:0}
.lbx__char img{height:96px;width:auto;display:block}

/* ロック中のコラムはグレーに */
.col-card.is-locked{opacity:.55;filter:grayscale(.85)}
.col-card.is-locked .col-t{color:var(--ink-3)}

/* ダブルタップの拡大をしない */
html{touch-action:manipulation}
button, a{touch-action:manipulation}

/* ============================================================
   クイズのライフ
   ============================================================ */
.qhud__life{display:flex;gap:3px}
.qlife__h{
  width:8px;height:8px;border-radius:50%;background:#F4788A;
  box-shadow:0 0 0 1.5px #fff
}
.qlife__h.is-off{background:#DCE4E9}

/* ============================================================
   カレンダー画面
   ============================================================ */
/* カレンダー上部のヘッダー帯 */
.cbar{
  position:relative;margin:-14px -16px 24px;padding:14px 16px 18px;
  background:#fff;display:flex;flex-direction:column;align-items:flex-start;gap:8px
}
.cbar::after{
  content:"";position:absolute;left:0;right:0;bottom:-9px;height:10px;z-index:2;
  background:radial-gradient(circle at 11px 0, #fff 11px, rgba(255,255,255,0) 12px);
  background-size:22px 10px;background-repeat:repeat-x
}
.cbar__logo{height:40px;display:flex;align-items:center}
.cbar__logo .appbar__logoimg{height:40px;width:auto;display:block}
.cbar__tx{
  width:100%;display:flex;align-items:center;justify-content:center;gap:10px
}
.cbar__l{font-size:14px;font-weight:900;color:var(--ink-2)}
.cbar__ring{
  width:68px;height:68px;flex:0 0 68px;border-radius:50%;
  background:#fff;box-shadow:inset 0 0 0 5px var(--brand);
  display:grid;place-items:center
}
.cbar__ring b{
  font-size:34px;font-weight:900;line-height:1;color:var(--brand);
  font-variant-numeric:tabular-nums;letter-spacing:-.02em
}
.cbar__u{font-size:17px;font-weight:900;color:var(--ink-2)}

.chstart{
  background:var(--card);border-radius:var(--r-m);box-shadow:var(--shadow);
  padding:26px 20px 24px;text-align:center;margin-bottom:14px
}
.chstart__e{margin-bottom:6px}
.chstart__t{font-size:22px;font-weight:900;color:var(--ink)}
.chstart__s{font-size:13px;font-weight:700;color:var(--ink-2);line-height:1.8;margin-top:8px}
.chstart__list{
  list-style:none;margin-top:18px;display:flex;flex-direction:column;gap:8px;text-align:left
}
.chstart__list li{
  background:#F7F3EC;border-radius:12px;padding:10px 14px;
  font-size:12.5px;font-weight:800;color:var(--ink-2);line-height:1.6
}

.chcard{padding:16px 14px}
.chgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.chd{
  aspect-ratio:1/1;border-radius:12px;background:#F1F5F8;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;
  transition:transform .12s
}
.chd:active{transform:scale(.94)}
.chd__n{font-size:9.5px;font-weight:900;color:var(--ink-3);line-height:1}
.chd__f{font-size:16px;line-height:1.15}
.chd.is-done{background:#E6F7F1}
.chd.is-done .chd__n{color:#2FBBA0}
.chd.is-future{opacity:.45}
.chd.is-today{box-shadow:inset 0 0 0 2.5px var(--brand)}

.chdone{
  background:var(--card);border-radius:var(--r-m);box-shadow:var(--shadow);
  padding:26px 20px;text-align:center;margin-bottom:14px
}
.chdone__t{font-size:21px;font-weight:900;color:var(--brand);margin-top:6px}
.chdone__s{font-size:13px;font-weight:700;color:var(--ink-2);line-height:1.8;margin-top:8px}
.chdone__st{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:20px}
.chdone__st > div{background:#F7F3EC;border-radius:14px;padding:12px 4px}
.chdone__st b{display:block;font-size:20px;font-weight:900;color:var(--ink)}
.chdone__st span{font-size:9.5px;font-weight:800;color:var(--ink-3)}

.mc__cell{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}
.mc__cell.is-done{background:#E6F7F1;border-color:transparent}
.mc__st{font-size:14px;line-height:1.15;height:17px}
.mc__cell.is-future{opacity:.4}
.mc__arrow{
  width:32px;height:32px;border-radius:50%;background:#F1F5F8;color:var(--ink-2);
  font-size:18px;font-weight:900;display:grid;place-items:center
}
.mc__arrow[disabled]{opacity:.35}
.mc__legend{
  display:flex;flex-wrap:wrap;gap:6px 10px;margin-top:12px;justify-content:center
}
.mc__legend span{font-size:9.5px;font-weight:800;color:var(--ink-3);display:inline-flex;align-items:center;gap:3px}
.mc__legend i{font-style:normal;font-size:13px}

/* 日付をタップしたときのポップアップ */
.dayp{text-align:center}
.dayp__d{font-size:14px;font-weight:900;color:var(--ink-3)}
.dayp__f{font-size:17px;font-weight:900;margin-top:6px;display:flex;
  flex-direction:column;align-items:center;gap:2px}
.dayp__rows{display:flex;flex-direction:column;gap:7px;margin-top:18px;text-align:left}
.dayp__r{
  display:flex;align-items:center;justify-content:space-between;
  background:#F7F3EC;border-radius:12px;padding:10px 14px
}
.dayp__r span{font-size:12px;font-weight:900;color:var(--ink-3)}
.dayp__r b{font-size:12.5px;font-weight:900;color:var(--ink-2)}
.dayp__r.is-on{background:#E6F7F1}
.dayp__r.is-on b{color:#0E6E5E}
.dayp__memo{
  margin-top:12px;background:#FFF6E4;border-radius:12px;padding:12px 14px;
  font-size:12.5px;line-height:1.7;color:#7A5200;text-align:left
}

/* 5段階フェイスを画像にしたとき */
.chd__f--img{width:18px;height:18px;object-fit:contain}
.mc__st--img{width:16px;height:16px;object-fit:contain}
.lgf{font-style:normal;font-size:13px}
.lgf--img{width:13px;height:13px;object-fit:contain}
.dayp__fe{font-size:46px;line-height:1.1}
.dayp__fe--img{width:56px;height:56px;object-fit:contain}

/* ============================================================
   クイズのジャンル
   ============================================================ */
.gen{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.gen__b{
  --gc:#41A9E6;
  position:relative;border-radius:14px;background:#F7F3EC;padding:8px;height:46px;
  display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:7px;
  transition:transform .14s
}
.gen__b--wide{grid-column:1 / -1;justify-content:center;gap:9px}
.gen__b:active{transform:scale(.97)}
.gen__b.is-on{background:var(--gc);box-shadow:0 4px 14px rgba(40,70,90,.18)}
.gen__e{font-size:24px;line-height:1;flex:0 0 auto}
.gen__e--img{width:28px;height:28px;object-fit:contain;flex:0 0 auto}
.gen__n{font-size:13px;font-weight:900;color:var(--ink);white-space:nowrap}
.gen__c{font-size:10px;font-weight:800;color:var(--ink-3)}
.gen__b.is-on .gen__n,.gen__b.is-on .gen__c{color:#fff}
.gen__b--wide .gen__n{font-size:14.5px}
.gen__b--wide .gen__c{align-self:center}

/* クイズ中のライフは左上に */
.qhud__life{
  position:absolute;left:12px;top:-11px;display:flex;gap:3px;
  background:#fff;border-radius:999px;padding:4px 9px;
  box-shadow:0 2px 8px rgba(40,70,90,.16)
}

/* ============================================================
   21日間チャレンジの進み具合
   ============================================================ */
.road{padding:0 6px 18px;margin-bottom:14px;background:none;box-shadow:none}
.road__head{display:flex;align-items:baseline;justify-content:space-between}
.road__t{font-size:15px;font-weight:900;color:var(--ink)}
.road__n{font-size:19px;font-weight:900;color:var(--brand);font-variant-numeric:tabular-nums}
.road__n small{font-size:11px;color:var(--ink-3)}
.road__s{font-size:13.5px;font-weight:800;color:var(--ink-2);line-height:1.75;text-align:center;margin:0}
.road__track{
  position:relative;height:12px;border-radius:99px;background:#EDF3F6;
  margin:44px 10px 0
}
.road__fill{height:100%;border-radius:99px;background:#5FD3B8;transition:width .8s cubic-bezier(.2,.9,.3,1)}
.road__stop{
  position:absolute;top:50%;transform:translate(-50%,-50%);
  width:20px;height:20px;border-radius:50%;background:#fff;
  box-shadow:inset 0 0 0 2.5px #D8E2E8;display:grid;place-items:center
}
.road__stop i{font-style:normal;font-size:8.5px;font-weight:900;color:#9FB0BC}
.road__stop.is-done{box-shadow:inset 0 0 0 2.5px #2FBBA0}
.road__stop.is-done i{color:#2FBBA0}
.road__me{
  position:absolute;bottom:14px;transform:translateX(-50%);
  transition:left .8s cubic-bezier(.2,.9,.3,1);pointer-events:none
}
.road__char{height:42px;width:auto;display:block;animation:roadBob 1.6s ease-in-out infinite}
@keyframes roadBob{
  0%,100%{transform:translateY(0) rotate(-3deg)}
  50%{transform:translateY(-4px) rotate(3deg)}
}
.road__goal{
  text-align:right;font-size:10px;font-weight:900;color:var(--ink-3);
  letter-spacing:.08em;margin:6px 10px 0
}

.bene{display:flex;flex-direction:column;gap:9px}
.bene__i{display:flex;align-items:flex-start;gap:11px;background:#F7F3EC;border-radius:14px;padding:12px 14px}
.bene__e{font-size:22px;line-height:1.2}
.bene__b{display:flex;flex-direction:column;gap:2px}
.bene__b b{font-size:13px;font-weight:900;color:var(--ink)}
.bene__b i{font-size:11.5px;font-style:normal;font-weight:700;color:var(--ink-2);line-height:1.65}

/* ============================================================
   ポイント画面
   ============================================================ */
.ptbtns{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px}
.ptbtn{
  border-radius:16px;background:#fff;box-shadow:var(--shadow);
  height:54px;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;
  font-size:14px;font-weight:900;color:var(--ink);transition:transform .14s
}
.ptbtn:active{transform:scale(.97)}
.ptbtn__e{font-size:20px;line-height:1}
.ptbtn__e--img{width:22px;height:22px;object-fit:contain}
.ptbtn--gold{background:#FFB454;color:#6B4400}

.lots{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}
.lot{
  display:flex;align-items:center;gap:12px;background:var(--card);
  border-radius:18px;box-shadow:var(--shadow);padding:14px
}
.lot__img{
  width:56px;height:56px;flex:0 0 56px;border-radius:16px;background:#F7F3EC;
  display:grid;place-items:center
}
.lot__b{flex:1;min-width:0}
.lot__t{font-size:13.5px;font-weight:900;color:var(--ink);line-height:1.45}
.lot__l{font-size:11px;font-weight:700;color:var(--ink-3);line-height:1.5;margin-top:2px}
.lot__w{
  display:inline-block;margin-top:5px;font-size:10px;font-weight:900;
  color:#7A5200;background:#FFD98A;border-radius:999px;padding:2px 9px
}
.lot__act{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:0 0 auto}
.lot__p{font-size:13px;font-weight:900;color:var(--brand);font-variant-numeric:tabular-nums}
.lot.is-done{opacity:.6}

.terms{text-align:left}
.terms__h{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.terms__e{width:56px;height:56px;flex:0 0 56px;border-radius:16px;background:#F7F3EC;
  display:grid;place-items:center}
.terms__t{font-size:15px;font-weight:900;color:var(--ink);line-height:1.4}
.terms__s{font-size:11.5px;font-weight:800;color:var(--ink-3);margin-top:3px}
.terms__ttl{font-size:12px;font-weight:900;color:var(--ink-2);margin-bottom:8px}
.terms__list{
  margin:0;padding:14px 16px 14px 32px;background:#F7F3EC;border-radius:14px;
  max-height:210px;overflow-y:auto
}
.terms__list li{font-size:11.5px;line-height:1.85;color:var(--ink-2);font-weight:700;margin-bottom:7px}
.terms__ok{
  display:flex;align-items:center;gap:9px;margin-top:14px;
  background:#FFF6E4;border-radius:14px;padding:13px 15px;
  font-size:13px;font-weight:900;color:#7A5200
}
.terms__ok input{width:20px;height:20px;accent-color:#FFB454}
.qhud__life .qlife__h{width:9px;height:9px}

/* クイズのベストスコア */
.qbest{
  display:flex;align-items:center;justify-content:center;gap:10px;
  background:var(--card);border-radius:var(--r-m);box-shadow:var(--shadow);
  padding:10px;margin-bottom:10px
}
.qbest__l{font-size:12px;font-weight:900;color:var(--ink-3)}
.qbest__v{font-size:36px;font-weight:900;line-height:1;color:var(--brand);
  font-variant-numeric:tabular-nums;letter-spacing:-.02em}

/* 「すべてのジャンル」は高さを2倍に */
.gen__b--wide{height:54px}
.gen__b--wide .gen__e{font-size:30px}
.gen__b--wide .gen__e--img{width:34px;height:34px}
.gen__b--wide .gen__n{font-size:15.5px}

/* 吹き出しは1行ずつブロックにして、途中で折り返さないようにする */
.stage__talk .tl{flex:0 0 100%;display:block}

/* 保有ポイント：ラベル左・数字右 */
.ptcard__top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.ptcard__l{letter-spacing:0}

/* 画面ヘッダー（クイズ・コラムなど）＝カレンダーと同じ白い帯 */
.cbar--page{gap:7px;padding-bottom:12px}
.cbar--page .cbar__logo{height:26px}
.cbar--page .cbar__logo .appbar__logoimg{height:26px}
.cbar__page{width:100%;text-align:center}
.cbar__t{font-size:19px;font-weight:900;color:var(--ink);line-height:1.35}
.pagenote{
  font-size:13px;font-weight:800;color:var(--ink);line-height:1.7;
  text-align:center;margin:0 8px 14px
}

/* ============================================================
   コインが飛ぶ演出
   ============================================================ */
.coins{position:fixed;inset:0;z-index:300;pointer-events:none}
.coin{
  position:fixed;width:26px;height:26px;font-size:22px;line-height:1;
  transform:translate(-50%,-50%);
  animation:coinFly .85s cubic-bezier(.35,.05,.25,1) forwards
}
img.coin{object-fit:contain}
@keyframes coinFly{
  0%{transform:translate(-50%,-50%) scale(.4) rotate(0);opacity:0}
  18%{transform:translate(-50%,-50%) scale(1.15) rotate(20deg);opacity:1}
  30%{transform:translate(calc(-50% + var(--dx) * .06), calc(-50% + var(--dy) * .02 - 26px))
      scale(1) rotate(60deg);opacity:1}
  100%{transform:translate(calc(-50% + var(--dx)), calc(-50% + var(--dy)))
      scale(.35) rotate(320deg);opacity:0}
}
.hd__pt.is-pop{animation:ptPop .5s cubic-bezier(.2,1.5,.4,1)}
@keyframes ptPop{
  0%,100%{transform:scale(1)}
  35%{transform:scale(1.18)}
  65%{transform:scale(.97)}
}

/* ============================================================
   画面遷移でボタンやカードが上から落ちてくる
   ============================================================ */
.drop-in{animation:dropIn .5s cubic-bezier(.18,1.4,.35,1) backwards}
@keyframes dropIn{
  0%{opacity:0;transform:translateY(-46px) scale(.94)}
  55%{opacity:1;transform:translateY(7px) scale(1.015)}
  78%{transform:translateY(-3px) scale(.998)}
  100%{opacity:1;transform:translateY(0) scale(1)}
}
@media (prefers-reduced-motion: reduce){
  .drop-in{animation-duration:.34s}
}

/* 設定アイコンは彩度を落としてグレーに */
.rail__b[data-go="settings"] .rail__e{filter:grayscale(1) brightness(.95)}
.rail__b[data-go="settings"] .rail__e--img{filter:grayscale(1) brightness(.95) drop-shadow(0 1px 3px rgba(255,255,255,.9))}

/* ヘッダー右下：きょうのポイント取得状況 */
.cbar__chip{
  align-self:flex-end;margin-top:-2px;
  display:inline-flex;align-items:center;gap:5px;
  background:#FFF1D6;color:#7A5200;border-radius:999px;padding:5px 12px 5px 8px;
  font-size:11px;font-weight:900;white-space:nowrap
}
.cbar__chip.is-done{background:#E6F7F1;color:#0E6E5E}
.cbar__chip-i{font-size:13px;line-height:1}
.cbar__chip-i--img{width:15px;height:15px;object-fit:contain}

/* ログインボーナスの飾りを画像に */
.lbx__ttl--img{background:none}
.lbx__ttl--img::before,.lbx__ttl--img::after{display:none}
.lbx__ttl--img{
  position:relative;display:block;width:82%;max-width:284px;height:auto;
  margin:0 auto 4px;aspect-ratio:464 / 263;
  background-repeat:no-repeat;background-position:center;background-size:100% 100%
}
.lbx__ttl--img span{
  position:absolute;left:0;right:0;top:66%;transform:translateY(-50%);
  background:none;color:#fff;font-size:19px;font-weight:900;padding:0;
  text-align:center;letter-spacing:.02em;
  text-shadow:0 2px 3px rgba(170,100,15,.45)
}
.lbd__stamp--img{
  border:0;background-repeat:no-repeat;background-position:center;background-size:contain;
  background-color:transparent
}
.lbd__e--img{width:30px;height:30px;object-fit:contain}

/* ヘッダーをまるごと画像にしたとき */
.cbar--img{
  display:block;position:relative;padding:0;
  aspect-ratio:1536 / 599;
  background-repeat:no-repeat;background-position:center;background-size:100% 100%;
  /* 下ふちのもくもくは、白ではなく画像そのものを型抜きして作る */
  -webkit-mask-image:
    radial-gradient(circle at 11px 0, #000 11px, rgba(0,0,0,0) 12px),
    linear-gradient(#000,#000);
  -webkit-mask-size:22px 10px, 100% calc(100% - 10px);
  -webkit-mask-position:left bottom, left top;
  -webkit-mask-repeat:repeat-x, no-repeat;
  mask-image:
    radial-gradient(circle at 11px 0, #000 11px, rgba(0,0,0,0) 12px),
    linear-gradient(#000,#000);
  mask-size:22px 10px, 100% calc(100% - 10px);
  mask-position:left bottom, left top;
  mask-repeat:repeat-x, no-repeat
}
.cbar--img::after{display:none}
.cbar--img .cbar__chip{position:absolute;right:12px;bottom:18px;margin:0}

/* ============================================================
   読み込み中の画面
   ============================================================ */
.loading{
  position:fixed;inset:0;z-index:500;background:#FFF0F5;
  overflow:hidden;display:block
}
.loading__tile{
  position:absolute;left:-55%;top:-55%;width:210%;height:210%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:34px;transform:rotate(-22deg);opacity:.15;pointer-events:none;
  animation:loadDrift 16s linear infinite
}
.loading__row{display:flex;gap:38px;flex:0 0 auto;white-space:nowrap}
.loading__tile img{height:62px;width:auto;display:block;flex:0 0 auto}
.loading__tile span{
  font-size:34px;font-weight:900;color:#E2708F;letter-spacing:.04em;
  flex:0 0 auto;white-space:nowrap
}
@keyframes loadDrift{
  from{transform:rotate(-22deg) translate(0,0)}
  to{transform:rotate(-22deg) translate(-186px,-96px)}
}
.loading__t{
  font-family:"M PLUS Rounded 1c","Hiragino Maru Gothic ProN","Hiragino Maru Gothic Pro",
    "Kosugi Maru",var(--font-base,sans-serif);
  font-size:19px;font-weight:800;color:#E2708F;letter-spacing:.06em
}
.loading__t i{font-style:normal;animation:loadDot 1.2s infinite}
.loading__t i:nth-child(2){animation-delay:.2s}
.loading__t i:nth-child(3){animation-delay:.4s}
@keyframes loadDot{0%,60%,100%{opacity:.25}30%{opacity:1}}

/* ============================================================
   ステータス画面
   ============================================================ */
.stcard__top{display:flex;align-items:center;gap:14px}
.stcard__ch{
  width:92px;height:92px;flex:0 0 92px;border-radius:24px;background:#EAF6FC;
  display:grid;place-items:center;overflow:hidden
}
.stcard__img{height:78px;width:auto;display:block}
.stcard__b{flex:1;min-width:0}
.stcard__name{font-size:17px;font-weight:900;color:var(--ink);line-height:1.3}
.stcard__stage{font-size:11.5px;font-weight:800;color:var(--ink-3);margin-top:3px}
.stcard__lv{
  display:inline-flex;align-items:baseline;gap:4px;margin-top:8px;
  background:#FFB454;color:#fff;border-radius:999px;padding:4px 14px
}
.stcard__lv span{font-size:10px;font-weight:900}
.stcard__lv b{font-size:18px;font-weight:900}
.stexp{margin-top:16px}
.stexp__t{display:flex;align-items:baseline;justify-content:space-between}
.stexp__t span{font-size:11.5px;font-weight:800;color:var(--ink-3)}
.stexp__t b{font-size:13px;font-weight:900;color:var(--brand)}
.stexp__b{
  height:14px;border-radius:99px;background:#EEF4F7;overflow:hidden;margin-top:6px;
  border:2px solid #fff;box-sizing:border-box;box-shadow:0 2px 6px rgba(40,70,90,.12)
}
.stexp__b > i{display:block;height:100%;border-radius:99px;background:#5FD3B8;transition:width .8s}
.stexp__n{font-size:10.5px;font-weight:800;color:var(--ink-3);text-align:right;margin-top:5px}

.stgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.stgrid > div{background:#F7F3EC;border-radius:14px;padding:12px 2px;text-align:center}
.stgrid b{display:block;font-size:19px;font-weight:900;color:var(--ink);line-height:1.1}
.stgrid span{font-size:9px;font-weight:800;color:var(--ink-3)}

.stexps{display:flex;flex-direction:column;gap:7px}
.stexps__i{display:flex;align-items:center;gap:10px;background:#F7F3EC;border-radius:12px;padding:10px 13px}
.stexps__e{font-size:18px;line-height:1}
.stexps__t{flex:1;font-size:12.5px;font-weight:800;color:var(--ink-2)}
.stexps__v{font-size:12px;font-weight:900;color:#0E6E5E}

.ststages{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.ststage{text-align:center;opacity:.45}
.ststage.is-got{opacity:1}
.ststage__i{
  aspect-ratio:1/1;border-radius:16px;background:#F1F5F8;
  display:grid;place-items:center;overflow:hidden;margin-bottom:5px
}
.ststage__img{width:82%;height:auto;display:block}
.ststage__lockx{font-size:18px}
.ststage__lockx--img{width:20px;height:20px;object-fit:contain;opacity:.5}
.ststage__n{font-size:9px;font-weight:900;color:var(--ink-2);line-height:1.3}
.ststage__lv{font-size:8.5px;font-weight:800;color:var(--ink-3);margin-top:1px}
.ststage.is-now .ststage__i{background:#E6F7F1;box-shadow:inset 0 0 0 2.5px #2FBBA0}

.loading.out{animation:loadOut .42s ease forwards}
@keyframes loadOut{to{opacity:0}}

/* ステータス画面のデモ用リセット */
.stdemo{margin-top:16px}
.stdemo__btn{color:var(--pink);border-color:var(--pink)}

/* ============================================================
   初期設定：横長の選択ボタンと、左右2列のナビ
   ============================================================ */
.oblist{display:flex;flex-direction:column;gap:11px}
.oblob{
  position:relative;display:flex;align-items:center;gap:16px;width:100%;
  min-height:76px;padding:16px 18px;text-align:left;
  font-size:16px;font-weight:800;color:var(--ink);line-height:1.4;
  background:#fff;border:2px solid #E3EBF1;border-radius:22px;
  box-shadow:0 4px 12px rgba(16,52,78,.07);
  transition:transform .18s cubic-bezier(.2,1.3,.4,1),box-shadow .18s,background .18s,color .18s,border-color .18s
}
.oblob__emo{font-size:36px;line-height:1;flex:0 0 auto}
.oblob__emo .ico{width:40px!important;height:40px!important}
.oblob__l{flex:1;min-width:0}
.oblob__check{
  flex:0 0 26px;width:26px;height:26px;border-radius:50%;
  display:grid;place-items:center;font-size:14px;font-weight:900;
  background:#EEF4F7;color:#fff;transition:background .18s,color .18s
}
.oblob:active{transform:scale(.98);box-shadow:0 2px 6px rgba(16,52,78,.12)}
.oblob.is-on{background:#3BC7AE;color:#fff;border-color:transparent;box-shadow:0 6px 16px rgba(30,156,136,.26)}
.oblob.is-on .oblob__check{background:#fff;color:#2A9E88}
.oblob.is-tapped{animation:blobPop .42s ease}

.obnav{margin-top:24px}
.obnav--2{display:grid;grid-template-columns:1fr 1.35fr;gap:11px;align-items:stretch}
.obnav--2 .btn,.obnav--2 .cta{margin:0;width:100%}
.obnav--2 .cta{min-height:0}

/* カレンダーの「はじめてから〇日目」帯（ロゴなし・1画面に収める） */
.cbar--day{padding:12px 16px 14px;align-items:center;gap:0}
.cbar--day .cbar__tx{gap:12px}
.cbar--day .cbar__l{font-size:16px}
.cbar--day .cbar__u{font-size:18px}
.cbar--day .cbar__ring{width:60px;height:60px;flex:0 0 60px;box-shadow:inset 0 0 0 4px var(--brand)}
.cbar--day .cbar__ring b{font-size:31px}

/* ============================================================
   ポイント：ランク表示とバッジのページ送り
   ============================================================ */
.ptcard{padding:16px 18px 18px}
.ptcard__top{display:flex;align-items:center;gap:12px;position:relative;z-index:1}
.ptcard__crown{
  flex:0 0 62px;width:62px;height:62px;display:grid;place-items:center;
  background:rgba(255,255,255,.2);border-radius:20px
}
.ptcard__crown .ico{width:46px!important;height:46px!important}
.ptcard__crown > span{font-size:34px;line-height:1}
.ptcard__ttl{flex:1;min-width:0}
.ptcard__rank{
  display:inline-block;background:rgba(255,255,255,.26);border-radius:999px;
  padding:4px 12px;font-size:12.5px;font-weight:900;letter-spacing:.02em;margin-bottom:6px
}
/* ランク名が長いと（ゴールドランクなど）ポイント数に重なるので、折り返さず小さめに */
.ptcard__rank{white-space:nowrap;font-size:11.5px;padding:4px 10px}
.ptcard__ttl{flex:1 1 auto;min-width:0}
.ptcard__v{flex:0 0 auto;font-size:min(40px, 9.4vw)}
.ptcard__next{
  position:relative;z-index:1;margin-top:12px;padding-top:11px;
  border-top:1.5px dashed rgba(255,255,255,.42);
  font-size:12px;font-weight:800;opacity:.95
}

.bpager{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:12px}
.bpager__n{font-size:11.5px;font-weight:800;color:var(--ink-3);font-variant-numeric:tabular-nums}
.bpager__b{
  width:36px;height:36px;border-radius:50%;border:2px solid var(--line);background:#fff;
  font-size:13px;font-weight:900;color:var(--brand);line-height:1;
  display:grid;place-items:center;transition:transform .15s,background .15s,border-color .15s
}
.bpager__b:active{transform:scale(.9)}
.bpager__b[disabled]{opacity:.32;color:var(--ink-3)}

/* 読込中：右下でキャラクターがぴょんぴょん跳ねる */
.loading__b{
  position:absolute;right:22px;bottom:calc(22px + var(--sab));
  display:flex;flex-direction:column;align-items:flex-end;gap:2px
}
.loading__ch{height:76px;display:flex;align-items:flex-end;padding-right:14px}
.loading__chimg{
  height:72px;width:auto;display:block;
  animation:loadHop 1.05s cubic-bezier(.3,.7,.4,1) infinite;transform-origin:50% 100%
}
@keyframes loadHop{
  0%  {transform:translateY(0) scale(1,1)}
  12% {transform:translateY(3px) scale(1.12,.88)}
  42% {transform:translateY(-26px) scale(.9,1.12)}
  70% {transform:translateY(0) scale(1.1,.9)}
  84% {transform:translateY(0) scale(.98,1.02)}
  100%{transform:translateY(0) scale(1,1)}
}

/* ============================================================
   ホームの背景でうごくもの（鳥・風・葉っぱ・ちょうちょ・きらきら）
   ============================================================ */
.stage__amb{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.stage__amb > i{position:absolute;display:block}

/* 鳥：3コマではばたきながら、左から右へ */
.bird{
  left:-18%;aspect-ratio:1/1;
  animation-name:birdFly;animation-timing-function:linear;animation-iteration-count:infinite
}
.bird__f{
  position:absolute;inset:0;background-repeat:no-repeat;background-size:contain;
  background-position:center;opacity:0;
  animation:flap .42s steps(1,end) infinite
}
.bird__f:nth-child(2){animation-delay:.14s}
.bird__f:nth-child(3){animation-delay:.28s}
/* 次のコマに少し重ねる。きっちり1/3ずつにすると、切りかわりに一瞬なにも映らず点滅する */
@keyframes flap{0%,36%{opacity:1}36.01%,100%{opacity:0}}
@keyframes birdFly{
  0%  {transform:translate(0,0)}
  25% {transform:translate(32vw,-14px)}
  50% {transform:translate(64vw,6px)}
  75% {transform:translate(96vw,-10px)}
  100%{transform:translate(128vw,0)}
}
/* ゆっくり大きく波打ちながら横切る */
@keyframes birdWave{
  0%  {transform:translate(0,0)}
  20% {transform:translate(26vw,-26px)}
  40% {transform:translate(52vw,14px)}
  60% {transform:translate(78vw,-22px)}
  80% {transform:translate(104vw,10px)}
  100%{transform:translate(130vw,-6px)}
}
/* ななめ上へ飛び去っていく */
@keyframes birdUp{
  0%  {transform:translate(0,40px) scale(1)}
  30% {transform:translate(38vw,-4px) scale(.9)}
  65% {transform:translate(80vw,-52px) scale(.72)}
  100%{transform:translate(130vw,-104px) scale(.55)}
}
/* ずっと遠くを、小さくまっすぐ */
@keyframes birdFar{
  0%  {transform:translate(0,0)}
  50% {transform:translate(64vw,-6px)}
  100%{transform:translate(130vw,0)}
}
/* 右から左へ帰っていく */
@keyframes birdBack{
  0%  {transform:translate(130vw,0) scaleX(-1)}
  30% {transform:translate(88vw,-16px) scaleX(-1)}
  60% {transform:translate(46vw,8px) scaleX(-1)}
  100%{transform:translate(0,-10px) scaleX(-1)}
}
.bird--wave{animation-name:birdWave}
.bird--up  {animation-name:birdUp}
.bird--far {animation-name:birdFar;opacity:.5!important}
.bird--back{animation-name:birdBack}

/* 葉っぱ・花びら：くるくる落ちる */
.fall{
  top:-10%;aspect-ratio:1/1;opacity:.9;
  background-repeat:no-repeat;background-size:contain;background-position:center;
  animation-name:fallDrift;animation-timing-function:linear;animation-iteration-count:infinite
}
@keyframes fallDrift{
  0%  {transform:translate(0,0) rotate(0deg);opacity:0}
  10% {opacity:.9}
  25% {transform:translate(22px,26vh) rotate(120deg)}
  50% {transform:translate(-16px,50vh) rotate(230deg)}
  75% {transform:translate(20px,74vh) rotate(340deg)}
  90% {opacity:.9}
  100%{transform:translate(-8px,102vh) rotate(460deg);opacity:0}
}

/* ちょうちょ：島のまわりをふわふわ */
.bfly{
  left:18%;top:60%;width:36px;aspect-ratio:1/1;
  animation:bflyPath 14s ease-in-out infinite
}
.bfly__f{
  position:absolute;inset:0;background-repeat:no-repeat;background-size:contain;
  background-position:center;opacity:0;
  animation:flap2 .34s steps(1,end) infinite
}
.bfly__f:nth-child(2){animation-delay:.17s}
@keyframes flap2{0%,54%{opacity:1}54.01%,100%{opacity:0}}
@keyframes bflyPath{
  0%  {transform:translate(0,0)}
  20% {transform:translate(38px,-26px)}
  40% {transform:translate(96px,4px)}
  60% {transform:translate(148px,-30px)}
  80% {transform:translate(72px,-8px)}
  100%{transform:translate(0,0)}
}

/* きらきら */
.amb-spark{
  width:22px;aspect-ratio:1/1;opacity:0;
  background-repeat:no-repeat;background-size:contain;background-position:center;
  animation:ambTwinkle 4.2s ease-in-out infinite
}
@keyframes ambTwinkle{
  0%,72%,100%{opacity:0;transform:scale(.5)}
  80%{opacity:.95;transform:scale(1)}
  90%{opacity:.35;transform:scale(.8)}
}

/* 動きを減らす設定でも、背景の生きものは止めずにゆっくりにする
   （完全に止めると画面が死んで見えるため） */
@media (prefers-reduced-motion: reduce){
  .bird{animation-duration:46s}
  .fall{animation-duration:34s}
  .bfly{animation-duration:30s}
  .amb-spark{animation-duration:7s}
}

/* きょうのかつどう：済マーク */
.miss__p{
  background:#E8453C;width:22px;height:22px;right:-4px;top:-4px;
  font-size:10.5px;font-weight:900;letter-spacing:0;line-height:1
}
.miss__all{
  position:absolute;right:-5px;top:-7px;z-index:2;
  width:26px;height:26px;border-radius:50%;background:#E8453C;color:#fff;
  display:grid;place-items:center;font-size:12px;font-weight:900;
  box-shadow:0 0 0 2.5px #fff, 0 2px 6px rgba(40,70,90,.2)
}

/* ============================================================
   「タップしたら次へすすむ」チェックらん
   ============================================================ */
.qck{
  display:flex;align-items:center;gap:10px;margin-top:12px;
  padding:11px 14px;border-radius:16px;background:#F4F7F9;
  border:2px solid transparent;cursor:pointer;-webkit-tap-highlight-color:transparent
}
.qck.is-on{background:#E6F7F1;border-color:#8FDCC8}
.qck input{position:absolute;opacity:0;width:0;height:0}
.qck__box{
  flex:0 0 22px;width:22px;height:22px;border-radius:7px;background:#fff;
  border:2px solid #C9D6DE;position:relative;transition:background .15s,border-color .15s
}
.qck__box::after{
  content:"";position:absolute;left:6px;top:2px;width:6px;height:11px;
  border-right:2.6px solid #fff;border-bottom:2.6px solid #fff;
  transform:rotate(42deg) scale(.4);opacity:0;transition:transform .16s,opacity .16s
}
.qck.is-on .qck__box{background:#2FBBA0;border-color:#2FBBA0}
.qck.is-on .qck__box::after{transform:rotate(42deg) scale(1);opacity:1}
.qck__t{font-size:12.5px;font-weight:800;color:var(--ink-2);line-height:1.5}
.qck.is-on .qck__t{color:#0E6E5E}

/* 設定のトグル行 */
.setrow{
  width:100%;display:flex;align-items:center;gap:12px;text-align:left;
  padding:13px 14px;border-radius:16px;background:#F7F3EC;margin-bottom:10px
}
.setrow__t{flex:1;font-size:13px;font-weight:800;color:var(--ink);line-height:1.5}
.setrow__t i{display:block;font-size:11px;font-weight:700;color:var(--ink-3);font-style:normal;margin-top:3px}
.setrow__sw{
  flex:0 0 46px;width:46px;height:27px;border-radius:99px;background:#D5DEE4;
  position:relative;transition:background .18s
}
.setrow__sw::after{
  content:"";position:absolute;left:3px;top:3px;width:21px;height:21px;border-radius:50%;
  background:#fff;box-shadow:0 1px 3px rgba(30,60,80,.25);transition:transform .18s
}
.setrow__sw.is-on{background:#2FBBA0}
.setrow__sw.is-on::after{transform:translateX(19px)}

/* ポイントカードの行間 */
.ptcard__top{margin-bottom:12px}
.ptcard__sub{margin-top:0}
.ptcard__l{font-size:13px;font-weight:900;opacity:.95;line-height:1.2}

/* ============================================================
   カレンダー：上部のイラスト（cal-hero.png があるときだけ）
   ============================================================ */
.calhero{
  position:relative;margin:-14px -16px 14px;
  aspect-ratio:1536 / 720;
  background-repeat:no-repeat;background-position:center;background-size:100% 100%
}
/* 雲の中の白い部分（実測: 横31%〜88%、たて17%〜45%）に文字を置く。
   文字の大きさは --cw（イラストの実際の幅）から決めるので、画面幅が変わってもズレない */
.calhero__ttl{
  position:absolute;left:30%;right:30%;top:18%;height:32%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:calc(var(--cw, 375px) * .006);
  text-align:center;line-height:1
}
.calhero__l{
  font-size:calc(var(--cw, 375px) * .038);
  font-weight:900;color:#3B4B55;letter-spacing:.02em;white-space:nowrap
}
.calhero__row{display:flex;align-items:baseline;gap:calc(var(--cw, 375px) * .012)}
.calhero__n{
  font-size:calc(var(--cw, 375px) * .112);
  font-weight:900;color:var(--brand);line-height:1;
  font-variant-numeric:tabular-nums;letter-spacing:-.03em
}
.calhero__u{
  font-size:calc(var(--cw, 375px) * .042);
  font-weight:900;color:#3B4B55;white-space:nowrap
}
.calhero__road{position:absolute;left:0;right:0;bottom:4%}
.calhero__road .road{margin:0;padding:0 18px;background:none;box-shadow:none}
.calhero__road .road__s{
  font-size:12.5px;font-weight:900;color:#3B4B55;margin-bottom:8px;
  text-shadow:0 1px 3px rgba(255,255,255,.9)
}

/* バッジの空マス（ページの高さをそろえるため） */
.badge--empty{visibility:hidden}

/* ============================================================
   クイズ：正解の○・不正解の×を画面中央に大きく出す
   ============================================================ */
.qmark{
  position:fixed;left:50%;top:46%;transform:translate(-50%,-50%);
  z-index:60;pointer-events:none;
  width:190px;height:190px;display:grid;place-items:center;
  animation:qMarkIn .7s cubic-bezier(.2,1.5,.4,1) forwards
}
.qmark img{width:100%;height:100%;object-fit:contain;display:block}
.qmark__s{font-size:150px;font-weight:900;line-height:1}
.qmark--ok .qmark__s{color:#2FBBA0;-webkit-text-stroke:8px #fff;paint-order:stroke fill}
.qmark--ng .qmark__s{color:#F4788A;-webkit-text-stroke:8px #fff;paint-order:stroke fill}
@keyframes qMarkIn{
  0%  {transform:translate(-50%,-50%) scale(.3) rotate(-14deg);opacity:0}
  35% {transform:translate(-50%,-50%) scale(1.08) rotate(3deg);opacity:1}
  55% {transform:translate(-50%,-50%) scale(1) rotate(0);opacity:1}
  80% {opacity:1}
  100%{transform:translate(-50%,-52%) scale(1.02);opacity:0}
}

/* せの低い画面（iPhone 16 など）で、クイズのトップが1画面に収まるように */
.screen--quiz{padding-bottom:calc(var(--tabh) + var(--sab) + 14px)}
@media (max-height:800px){
  .cbar--page + .pagenote{margin:10px 0 10px}
  .qbest{padding:8px;margin-bottom:8px}
  .gen{gap:7px}
  .gen__b{height:42px;padding:7px}
  .gen__b--wide{height:50px}
  .cbar--img .cbar__chip{bottom:12px}
  .screen--quiz .card{padding:12px 14px}
  .screen--quiz .btn--gold{min-height:50px}
}
@media (max-height:700px){
  .qbest{margin-bottom:6px}
  .gen__b{height:38px}
  .gen__b--wide{height:46px}
}

/* カレンダー上部イラストのとき：はげましの言葉は絵の外に出す */
.calhero__road .road__s,
.calhero__road .road__goal{display:none}
.calhero__road .road__track{margin:0}
.calcheer{
  text-align:center;font-size:13.5px;font-weight:900;color:var(--ink-2);
  line-height:1.6;margin:0 0 12px
}

/* 進みぐあいのバーを歩くキャラにも、同じ白フチ */
.road__char{filter:drop-shadow(0 1.5px 0 #fff) drop-shadow(0 -1.5px 0 #fff)
  drop-shadow(1.5px 0 0 #fff) drop-shadow(-1.5px 0 0 #fff)}

/* ============================================================
   はじめてのチュートリアル
   ============================================================ */
.tut{position:fixed;inset:0;z-index:300;pointer-events:none}
/* タップをふさぐだけの板。暗くするのは枠のかげでやる（角丸にするため） */
.tut__b{
  position:absolute;display:block;background:transparent;pointer-events:auto
}
.tut__ring{
  position:absolute;display:block;box-sizing:border-box;border-radius:20px;
  pointer-events:none;border:3px solid #F0483C;
  animation:tutRing 1.4s ease-in-out infinite;transition:all .22s ease
}
/* いちばん外の大きなかげで画面を暗くする。枠が角丸なので、明るい部分も角丸になる */
@keyframes tutRing{
  0%,100%{box-shadow:0 0 0 3px rgba(255,255,255,.85),
                     0 0 0 0 rgba(240,72,60,.5),
                     0 0 0 9999px rgba(18,40,58,.58)}
  60%    {box-shadow:0 0 0 3px rgba(255,255,255,.85),
                     0 0 0 12px rgba(240,72,60,0),
                     0 0 0 9999px rgba(18,40,58,.58)}
}
.tut__msg{
  position:absolute;left:50%;transform:translateX(-50%);
  width:min(320px, calc(100% - 36px));
  background:#fff;border-radius:20px;padding:16px 18px 14px;text-align:center;
  box-shadow:0 12px 30px rgba(20,50,70,.28);pointer-events:auto;
  animation:tutIn .34s cubic-bezier(.2,1.25,.4,1)
}
/* 左右中央ぞろえ（translateX(-50%)）を消さないアニメにする */
@keyframes tutIn{
  0%  {opacity:0;transform:translate(-50%,-14px)}
  100%{opacity:1;transform:translate(-50%,0)}
}
.tut__t{font-size:14px;font-weight:800;line-height:1.7;color:var(--ink);margin:0}
.tut__next{
  width:100%;margin-top:12px;min-height:46px;border-radius:14px;
  background:var(--brand);color:#fff;font-size:15px;font-weight:900
}
.tut__skip{
  display:block;margin:10px auto 0;font-size:11.5px;font-weight:800;
  color:var(--ink-3);text-decoration:underline
}

/* しゃべっているあいだ：左右の跳ねを止めて、その場でやさしく上下する */
.stage__char.is-talking{animation:charTalk 1.15s ease-in-out infinite!important}
@keyframes charTalk{
  0%,100%{transform:translateX(-50%) translateY(0) scale(1,1)}
  50%    {transform:translateX(-50%) translateY(-6px) scale(.99,1.01)}
}
.stage__shadow.is-talking{animation:shTalk 1.15s ease-in-out infinite!important}
@keyframes shTalk{
  0%,100%{transform:translateX(-50%) scale(1);opacity:1}
  50%    {transform:translateX(-50%) scale(.9,.86);opacity:.82}
}

/* よろこんでいるビフィくん（まわりにきらきら） */
.cheer{position:relative;display:inline-block;line-height:0}
.cheer__img{width:auto;display:block}
.cheer__s{
  position:absolute;display:block;width:16%;aspect-ratio:1/1;
  background:#FFD75E;
  clip-path:polygon(50% 0%, 61% 39%, 100% 50%, 61% 61%, 50% 100%, 39% 61%, 0% 50%, 39% 39%);
  animation:cheerTw 1.5s ease-in-out infinite
}
.cheer__s--1{left:-10%;top:22%}
.cheer__s--2{right:-10%;top:8%;width:12%;animation-delay:.35s}
.cheer__s--3{right:-4%;bottom:12%;width:10%;animation-delay:.75s}
@keyframes cheerTw{
  0%,100%{transform:scale(.6);opacity:.35}
  50%    {transform:scale(1);opacity:1}
}

/* つづけた記録は3つになったので、3列に */
.stgrid--3{grid-template-columns:repeat(3,1fr)}

/* 「記録は1日の終わりに」のおしらせ */
.lateask{text-align:center;padding:4px 2px 6px}
.lateask__e{margin-bottom:10px;line-height:0}
.lateask__t{font-size:19px;font-weight:900;margin:0 0 10px;color:var(--ink)}
.lateask__d{font-size:13px;font-weight:700;color:var(--ink-2);line-height:1.9;margin:0 0 18px}
.lateask__d b{color:var(--brand)}

/* cheer() は <span class="cheer"> を返すので、中の画像にサイズ指定を効かせる */
.reward__emo .cheer__img{width:auto;max-width:150px;max-height:150px}
.lbx__char .cheer__img{height:96px;width:auto}

/* ============================================================
   クイズ：左上のもどるボタン／カウントダウンの背景ロゴ
   ============================================================ */
.qback{
  position:fixed;left:12px;top:calc(12px + var(--sat));z-index:70;
  width:42px;height:42px;border-radius:50%;
  background:rgba(255,255,255,.92);box-shadow:0 3px 10px rgba(30,70,95,.18);
  display:grid;place-items:center;transition:transform .15s
}
.qback:active{transform:scale(.9)}
.qback__a{
  display:block;width:11px;height:11px;margin-left:4px;
  border-left:3px solid var(--brand);border-bottom:3px solid var(--brand);
  transform:rotate(45deg);border-radius:1px
}
.qcount__tile{
  position:absolute;left:-55%;top:-55%;width:210%;height:210%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:30px;transform:rotate(-22deg);opacity:.14;pointer-events:none;
  animation:loadDrift 16s linear infinite
}
.qcount__row{display:flex;gap:34px;flex:0 0 auto;white-space:nowrap}
.qcount__tile img{height:54px;width:auto;display:block;flex:0 0 auto}
.qcount__n{position:relative;z-index:1}

/* ゲーム中のヘッダー：白い帯を横いっぱいに。
   もどる・のこり・ライフ・スコアを1行にならべる */
.qhud{
  margin:-14px -16px 14px;border-radius:0 0 20px 20px;
  padding:calc(10px + var(--sat)) 14px 11px;gap:10px
}
.qback--in{
  position:static;flex:0 0 auto;width:32px;height:32px;
  background:#F2F6F9;box-shadow:none
}
.qback--in .qback__a{width:9px;height:9px;border-width:2.5px}
.qhud__life{
  position:static;flex:0 0 auto;background:none;box-shadow:none;padding:0;gap:4px
}
.qhud__life .qlife__h{width:9px;height:9px;box-shadow:none}
.qhud__score{margin-right:0}
.qring{margin-left:2px}

/* 初期設定の最後：長いボタン文言を折り返さない。もどるは下に横いっぱい */
.obnav .cta{white-space:nowrap}
.obnav__back{width:100%;margin-top:10px}

/* せの低い画面でも、初期設定が1画面に収まるように詰める */
@media (max-height:820px){
  .ob-hero{margin:2px 0 6px}
  .ob-hero .ico{width:74px!important;height:74px!important}
  .ob__t{font-size:19px}
  .ob__d{margin-bottom:12px;line-height:1.6}
  .oblist{gap:9px}
  .oblob{min-height:64px;padding:12px 16px}
  .oblob__emo{font-size:31px}
  .oblob__emo .ico{width:34px!important;height:34px!important}
  .obnav{margin-top:14px}
  .obnav .cta{min-height:60px;font-size:16px}
  .obnav__back{margin-top:8px;min-height:44px}
}

/* ============================================================
   まだ下に続きがあるときの案内（記録の質問画面だけ）
   ============================================================ */
.scrhint{
  position:fixed;right:14px;bottom:calc(var(--tabh) + var(--sab) + 16px);z-index:45;
  display:flex;flex-direction:column;align-items:center;gap:1px;
  background:rgba(65,169,230,.95);color:#fff;
  border-radius:999px;padding:9px 12px 7px;
  box-shadow:0 6px 16px rgba(30,90,140,.3);
  animation:scrBlink 1.3s ease-in-out infinite;cursor:pointer
}
.scrhint__t{font-size:10px;font-weight:900;letter-spacing:.04em;line-height:1.2}
.scrhint__a{
  display:block;width:9px;height:9px;margin-top:2px;
  border-right:2.6px solid #fff;border-bottom:2.6px solid #fff;transform:rotate(45deg)
}
@keyframes scrBlink{
  0%,100%{opacity:.4;transform:translateY(0)}
  50%    {opacity:1;transform:translateY(3px)}
}

/* スクロール案内の見張り用（見えない目印） */
.scrend{display:block;width:100%;height:1px}

/* ---------- プロフィール（年齢・性別・身長・体重） ---------- */
.bodyq{text-align:left}
.bodyq__l{
  font-size:12.5px;font-weight:900;color:var(--ink-2);
  margin:16px 0 8px;letter-spacing:.02em
}
.bodyq__l:first-child{margin-top:4px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{
  border:2px solid #E4EDF3;background:#fff;border-radius:999px;
  padding:9px 16px;font-size:14px;font-weight:800;color:var(--ink-2);
  transition:transform .12s, border-color .12s, background .12s, color .12s
}
.chip:active{transform:scale(.94)}
.chip.is-on{background:var(--brand);border-color:var(--brand);color:#fff}
.bodyq__nums{display:flex;gap:10px}
.numin{position:relative;flex:1 1 0;min-width:0;display:block}
.numin .input{width:100%;padding-right:38px;text-align:center;
  font-size:18px;font-weight:900;letter-spacing:.02em}
.numin span{
  position:absolute;right:12px;top:50%;transform:translateY(-50%);
  font-size:12px;font-weight:800;color:var(--ink-3);pointer-events:none
}
.numin .input::-webkit-outer-spin-button,
.numin .input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.numin .input[type=number]{-moz-appearance:textfield}
.hist__d--miss{color:var(--pink);font-weight:900}
.prof-note{
  margin:0 0 10px;line-height:1.7;color:var(--pink);font-weight:700
}

/* ---------- 白い部分（たまごのカラ・白衣）が明るい背景で消えないように ----------
   薄いグレーのフチを1本つけて、輪郭が分かるようにする */
.charimg,
.cheer__img,
.loading__chimg,
.stcard__img,
.ststage__img{
  filter:
    drop-shadow(0 1.2px 0 #C9D7DF) drop-shadow(0 -1.2px 0 #C9D7DF)
    drop-shadow(1.2px 0 0 #C9D7DF) drop-shadow(-1.2px 0 0 #C9D7DF);
}
