/* きもちのもり — フラット・やわらか配色(グラデ/アイコンなし・テキストラベル) */
:root{
  --bg:#FAF5EC;
  --ink:#4A3B2E;
  --sub:#6F6152;
  --card:#FFFFFF;
  --line:#E7DCC9;
  --accent:#F5C33B;
  --ureshii:#F5C33B; --ureshii-bg:#FDF3D7;
  --kanashii:#6E97CE; --kanashii-bg:#E4EDF8;
  --okotta:#E4604F;  --okotta-bg:#FBE3DF;
  --bikkuri:#E8913F; --bikkuri-bg:#FBEBDA;
  --kowai:#9678B8;   --kowai-bg:#EFE8F6;
  --odayaka:#7FB069; --odayaka-bg:#E9F3E3;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:"Hiragino Maru Gothic ProN","BIZ UDGothic","Yu Gothic UI","Noto Sans JP",sans-serif;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  user-select:none;
  -webkit-user-select:none;
}
#app{
  max-width:560px;
  margin:0 auto;
  min-height:100%;
  padding:16px 16px calc(28px + env(safe-area-inset-bottom));
  display:flex;
  flex-direction:column;
}
.screen{animation:fadein .25s ease}
.artimg{display:inline-block;vertical-align:middle;object-fit:contain}
.artwrap{position:relative;display:inline-block}
.artwrap .scarf{position:absolute;left:0;top:0}
.heroimg{width:100%;max-width:430px;height:168px;object-fit:cover;border-radius:22px;border:3px solid var(--line);display:block;margin:0 auto}
@keyframes fadein{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---------- 共通部品 ---------- */
.topbar{display:flex;align-items:center;gap:8px;margin-bottom:12px;min-height:44px}
.topbar .spacer{flex:1}
.top-title{font-size:1.05rem;font-weight:700;color:var(--sub)}
.btn{
  display:block;width:100%;
  background:var(--card);
  border:3px solid var(--ink);
  border-radius:18px;
  color:var(--ink);
  font:inherit;font-size:1.25rem;font-weight:700;
  padding:14px 18px;
  cursor:pointer;
  text-align:center;
  transition:transform .08s ease;
}
.btn:active{transform:scale(.97)}
.btn+.btn{margin-top:12px}
.btn-primary{background:var(--accent)}
.btn-quiet{border-color:var(--line);color:var(--sub);font-size:1.02rem;font-weight:700}
.btn-mini{
  width:auto;display:inline-block;
  font-size:.95rem;padding:8px 14px;border-radius:12px;
  border:2px solid var(--ink);background:var(--card);
}
.btn-mini.quiet{border-color:var(--line);color:var(--sub)}
button:disabled{opacity:.45;pointer-events:none}

.prompt{font-size:1.45rem;font-weight:800;text-align:center;margin:10px 0 16px}
.narr{
  background:var(--card);border:3px solid var(--line);border-radius:18px;
  padding:14px 16px;font-size:1.2rem;font-weight:700;text-align:center;margin-bottom:14px;
}
.note{color:var(--sub);text-align:center;font-size:.95rem;margin-top:10px}
.praise{font-size:1.5rem;font-weight:800;text-align:center;color:var(--ink);margin:12px 0}

/* ---------- ホーム ---------- */
.hero{text-align:center;margin:2px 0 10px}
.hero .logo{margin:0 auto}
.hero h1{font-size:1.75rem;letter-spacing:.12em;margin-top:6px}
.hero p{color:var(--sub);font-size:.9rem;line-height:1.45}
.starbar{
  background:var(--card);border:3px solid var(--line);border-radius:16px;
  padding:10px 14px;text-align:center;font-weight:800;font-size:1.05rem;margin-bottom:14px;
}
.starbar small{display:block;color:var(--sub);font-weight:700;font-size:.85rem}
.place{
  display:block;width:100%;
  background:var(--card);
  border:3px solid var(--ink);
  border-radius:20px;
  padding:0;overflow:hidden;
  cursor:pointer;font:inherit;color:var(--ink);
  text-align:left;
  transition:transform .08s ease;
}
.place:active{transform:scale(.98)}
.place+.place{margin-top:12px}
.place .band{height:10px}
.place .body{padding:12px 16px 14px;display:flex;align-items:center;gap:14px}
.place .txt{flex:1}
.place .name{font-size:1.35rem;font-weight:800}
.place .desc{font-size:.9rem;color:var(--sub);font-weight:700}
.homefoot{margin-top:18px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}

/* ---------- チェックイン ---------- */
.quadgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.quad{
  min-width:0;
  border:3px solid var(--ink);border-radius:20px;
  padding:14px 10px 12px;cursor:pointer;font:inherit;color:var(--ink);
  display:flex;flex-direction:column;align-items:center;gap:6px;
  transition:transform .08s ease;
}
.quad:active{transform:scale(.96)}
.quad .qlabel{font-size:1.08rem;font-weight:800;text-align:center;line-height:1.35}

/* ---------- 選択カード ---------- */
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.grid2 .wide{grid-column:1 / -1}
.face-card{
  min-width:0;
  background:var(--card);
  border:3px solid var(--ink);
  border-radius:20px;
  padding:10px 8px 8px;
  cursor:pointer;font:inherit;color:var(--ink);
  display:flex;flex-direction:column;align-items:center;gap:4px;
  transition:transform .08s ease;
}
.face-card:active{transform:scale(.96)}
.face-card .flabel{font-size:1.05rem;font-weight:800}
.face-card.correct{animation:pop .5s ease}
.face-card.wrong{animation:shake .4s ease}
.face-card.hintpulse{animation:pulse 1.1s ease infinite}
@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.12)}100%{transform:scale(1)}}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-7px)}75%{transform:translateX(7px)}}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}
.face-card:disabled{opacity:.55}
.tableau{
  background:var(--card);border:3px solid var(--line);border-radius:20px;
  display:flex;align-items:center;justify-content:center;gap:10px;
  padding:12px;margin-bottom:14px;min-height:150px;
}
.tableau.lookat{animation:pulse 1.1s ease 2}
.progress-dots{text-align:center;color:var(--sub);font-weight:800;margin-bottom:8px;font-size:.95rem}

/* ---------- 呼吸 ---------- */
.breath-wrap{display:flex;flex-direction:column;align-items:center;gap:14px;flex:1;justify-content:center}
.breath-circle{
  width:250px;height:250px;border-radius:50%;
  background:var(--odayaka-bg);
  border:4px solid var(--odayaka);
  display:flex;align-items:center;justify-content:center;
  touch-action:none;
  will-change:transform;
}
.breath-guide{font-size:1.35rem;font-weight:800;text-align:center;min-height:3.2em}
.breath-count{color:var(--sub);font-weight:800}

/* ---------- まてまてどん ---------- */
.stage{
  background:var(--card);border:3px solid var(--line);border-radius:20px;
  height:210px;display:flex;align-items:flex-end;justify-content:center;
  overflow:hidden;margin-bottom:14px;position:relative;
}
.popchar{transform:translateY(105%);transition:transform .18s ease-out}
.popchar.show{transform:translateY(6%)}
.drumbtn{
  display:block;width:min(300px,80%);margin:0 auto;
  background:var(--okotta-bg);
  border:4px solid var(--ink);
  border-radius:150px 150px 22px 22px;
  padding:26px 10px 18px;
  font:inherit;font-size:1.5rem;font-weight:800;color:var(--ink);
  cursor:pointer;
  transition:transform .06s ease;
}
.drumbtn:active{transform:scale(.965)}
.drumbtn.resting{opacity:.85;animation:pulse 1.4s ease infinite}
.scoreline{text-align:center;font-weight:800;color:var(--sub);margin-bottom:10px}
.flash-msg{
  text-align:center;font-size:1.3rem;font-weight:800;min-height:2em;margin-bottom:6px;
}

/* ---------- ずかん ---------- */
.zukan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.zukan-cell{
  background:var(--card);border:3px solid var(--line);border-radius:16px;
  padding:8px 4px;display:flex;flex-direction:column;align-items:center;gap:2px;
}
.zukan-cell.locked{background:transparent}
.zukan-cell .zname{font-size:.92rem;font-weight:800}
.zukan-cell.locked .zname{color:var(--sub)}
.zukan-lockface{
  width:74px;height:74px;border-radius:50%;
  border:3px dashed var(--line);
  display:flex;align-items:center;justify-content:center;
  color:var(--sub);font-weight:800;font-size:.85rem;
}

/* ---------- ほし ---------- */
.starrow{display:flex;justify-content:center;gap:10px;margin:10px 0}
.starrow svg{animation:pop .6s ease}

/* ---------- オーバーレイ ---------- */
#overlay{
  position:fixed;inset:0;z-index:50;
  background:rgba(74,59,46,.45);
  display:flex;align-items:center;justify-content:center;
  padding:20px;
}
#overlay[hidden]{display:none}
.ovl-card{
  background:var(--bg);
  border:4px solid var(--ink);
  border-radius:24px;
  padding:22px 20px;
  width:min(420px,100%);
  text-align:center;
  position:relative;
  overflow:hidden;
  animation:pop .45s ease;
}
.ovl-card h2{font-size:1.5rem;margin-bottom:8px}
.ovl-card p{font-size:1.1rem;font-weight:700;margin-bottom:14px}
.confetti{position:absolute;top:-14px;width:11px;height:11px;border-radius:3px;animation:fall 2s linear forwards;pointer-events:none}
@keyframes fall{
  from{transform:translateY(0) rotate(0)}
  to{transform:translateY(560px) rotate(540deg);opacity:.6}
}

/* ---------- 保護者ページ ---------- */
.parent{font-size:.98rem;user-select:text;-webkit-user-select:text}
.parent .pcard{
  background:var(--card);border:3px solid var(--line);border-radius:16px;
  padding:14px 16px;margin-bottom:12px;
}
.parent h3{font-size:1.05rem;margin-bottom:6px}
.parent li{margin-left:1.2em;margin-bottom:4px}
.parent .big{font-size:1.15rem;font-weight:800}
.mood-chip{
  display:inline-block;border-radius:10px;padding:2px 10px;font-weight:800;font-size:.9rem;
  border:2px solid var(--ink);margin:2px 4px 2px 0;
}
.gate-hold{position:relative}
.gate-progress{color:var(--sub);font-weight:800;text-align:center;min-height:1.6em;margin-top:8px}

@media (max-width:380px){
  .prompt{font-size:1.25rem}
  .breath-circle{width:210px;height:210px}
}
