/* 躲猫猫捉迷藏 — 5-6岁 iPad 友好样式 */
:root{
  --bg1:#fff3e0; --bg2:#ffe0b2; --ink:#5a3e2b;
  --accent:#ff8a5b; --accent2:#5bc0eb; --good:#7ac74f;
  --card:#fffaf2; --shadow:0 8px 24px rgba(120,72,40,.18);
  --radius:28px;
}
*{box-sizing:border-box; -webkit-tap-highlight-color:transparent; -webkit-user-select:none; user-select:none;}
html,body{margin:0;height:100%;overflow:hidden;}
body{
  font-family:-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  color:var(--ink);
  background:radial-gradient(circle at 30% 20%,var(--bg1),var(--bg2));
  touch-action:manipulation;
}
#app{position:fixed;inset:0;}

/* 视图切换 */
.view{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;padding:env(safe-area-inset-top) 16px 16px;}
.view.active{display:flex;animation:fadeIn .35s ease;}
@keyframes fadeIn{from{opacity:0;transform:scale(.98)}to{opacity:1;transform:none}}

/* 加载 */
.loader-cat{font-size:88px;animation:peek 1.4s ease-in-out infinite;}
@keyframes peek{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-14px) rotate(4deg)}}
.loader-text{font-size:22px;font-weight:700;opacity:.7;margin-top:8px;}

/* 卡片 / 设置 */
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:30px 26px;max-width:520px;width:100%;text-align:center;}
.setup-title{font-size:30px;margin:0 0 6px;font-weight:800;}
.setup-sub{font-size:19px;opacity:.7;margin:18px 0 8px;font-weight:600;}
.setup-input{width:100%;font-size:26px;text-align:center;padding:14px;border:3px solid var(--bg2);border-radius:18px;background:#fff;outline:none;font-family:inherit;color:var(--ink);}
.setup-input:focus{border-color:var(--accent);}

.avatar-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:6px 0;}
.avatar-grid .av{aspect-ratio:1;border-radius:20px;background:#fff;border:3px solid transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .12s;}
.avatar-grid .av svg,.avatar-grid .av .sprite-img{width:84%;height:84%;}
.avatar-grid .av.sel{border-color:var(--accent);background:#fff4ec;transform:scale(1.06);}
.avatar-grid .av:active{transform:scale(.94);}

/* 按钮 */
.big-btn{margin-top:22px;font-family:inherit;font-size:26px;font-weight:800;color:#fff;background:linear-gradient(180deg,#ffa06b,var(--accent));border:none;border-radius:24px;padding:18px 30px;width:100%;box-shadow:0 6px 0 #e06a3f,var(--shadow);cursor:pointer;transition:transform .1s,box-shadow .1s;}
.big-btn:active{transform:translateY(4px);box-shadow:0 2px 0 #e06a3f;}
.big-btn:disabled{filter:grayscale(.6);opacity:.55;box-shadow:0 6px 0 #b9b0a6;}
.ghost-btn{margin-top:12px;font-family:inherit;font-size:20px;font-weight:700;color:var(--ink);background:transparent;border:3px solid var(--bg2);border-radius:20px;padding:12px 24px;cursor:pointer;}
.play-btn{max-width:420px;font-size:30px;}

.icon-btn{font-size:30px;background:var(--card);border:none;border-radius:18px;width:62px;height:62px;box-shadow:var(--shadow);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .1s;}
.icon-btn.small{width:54px;height:54px;font-size:26px;}
.icon-btn:active{transform:scale(.9);}

/* 首页 */
.home-top{position:absolute;top:max(14px,env(safe-area-inset-top));left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:0 18px;gap:10px;}
.stars-badge{font-size:24px;font-weight:800;background:var(--card);border-radius:18px;padding:10px 18px;box-shadow:var(--shadow);}
.home-hero{display:flex;flex-direction:column;align-items:center;gap:6px;}
.home-avatar{width:220px;height:220px;animation:bob 2.4s ease-in-out infinite;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle,rgba(255,255,255,.7) 38%,rgba(255,255,255,0) 68%);}
.home-avatar svg{width:100%;height:100%;}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
.home-hello{font-size:34px;font-weight:800;margin:4px 0 26px;}

/* HUD */
.hud{position:absolute;top:max(12px,env(safe-area-inset-top));left:0;right:0;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:0 16px;pointer-events:none;}
.hud .icon-btn{pointer-events:auto;}
.progress-faces{display:flex;gap:8px;background:rgba(255,250,242,.85);padding:8px 14px;border-radius:20px;box-shadow:var(--shadow);backdrop-filter:blur(4px);}
.pface{width:40px;height:40px;border-radius:50%;background:#e9dccb;display:flex;align-items:center;justify-content:center;font-size:24px;transition:transform .3s;filter:grayscale(1) opacity(.55);}
.pface.found{filter:none;background:#fff0d6;animation:pop 0.5s cubic-bezier(.2,1.4,.4,1);}

/* 舞台 */
.stage-wrap{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#f4e3c6;}
.stage{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;}
.stage svg.scene{width:100%;height:100%;display:block;}
.friend{cursor:pointer;}
.fimg{transform-box:fill-box;transform-origin:center bottom;filter:drop-shadow(-6px 10px 6px rgba(40,24,10,.4)) saturate(1.05) brightness(1.015);}
.friend .fimg{animation:breath 3.4s ease-in-out infinite;}
@keyframes breath{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-5px) scale(1.015)}}
.seeker{filter:drop-shadow(-8px 12px 8px rgba(40,24,10,.4));transform-box:fill-box;transform-origin:center bottom;animation:seekerbob 3s ease-in-out infinite;}
@keyframes seekerbob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-7px) rotate(-2.5deg)}}
.sprite-img{display:block;pointer-events:none;width:100%;height:100%;object-fit:contain;}
@keyframes foundPop{0%{transform:scale(.7)}55%{transform:scale(1.25)}100%{transform:scale(1.08)}}
@keyframes pop{0%{transform:scale(.4)}60%{transform:scale(1.2)}100%{transform:scale(1)}}
.decoy-hot{cursor:pointer;fill:transparent;}

/* 闪光提示 */
.spark{position:absolute;font-size:30px;pointer-events:none;animation:sparkFloat .9s ease-out forwards;}
@keyframes sparkFloat{0%{opacity:0;transform:scale(.3) translateY(0)}30%{opacity:1}100%{opacity:0;transform:scale(1.3) translateY(-40px)}}

/* 通关 / 弹窗 */
.overlay{position:fixed;inset:0;z-index:50;display:none;align-items:center;justify-content:center;background:rgba(40,28,55,.55);backdrop-filter:blur(3px);}
.overlay.show{display:flex;animation:fadeIn .3s;}
.win-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:34px 30px;text-align:center;max-width:440px;width:88%;animation:popIn .5s cubic-bezier(.2,1.4,.4,1);}
@keyframes popIn{0%{transform:scale(.6);opacity:0}100%{transform:scale(1);opacity:1}}
.win-sticker{width:160px;height:160px;margin:0 auto 8px;}
.win-sticker svg{width:100%;height:100%;}
.win-title{font-size:30px;font-weight:800;margin:6px 0;}
.win-star{font-size:54px;animation:bob 1.6s ease-in-out infinite;}
.win-btns{margin-top:14px;}

/* 贴纸册 */
.album-title{font-size:26px;font-weight:800;margin:0;}
.album-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;width:100%;max-width:680px;margin-top:90px;padding:0 6px;overflow-y:auto;max-height:78vh;}
.album-cell{aspect-ratio:1;border-radius:22px;background:var(--card);box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center;}
.album-cell svg,.album-cell .sprite-img{width:80%;height:80%;}
.album-cell.locked{background:#efe6d8;}
.album-cell.locked::after{content:"❓";font-size:40px;opacity:.45;}
.album-cell.locked svg,.album-cell.locked .sprite-img{display:none;}

/* 设置开关 */
.switch-row{display:flex;justify-content:space-between;align-items:center;font-size:22px;font-weight:700;padding:14px 6px;border-bottom:2px dashed var(--bg2);}
.switch-row input{width:30px;height:30px;}

/* 世界地图 */
.mode-toggle{display:flex;gap:10px;margin-top:84px;background:rgba(255,250,242,.7);padding:6px;border-radius:24px;box-shadow:var(--shadow);}
.mode-pill{font-family:inherit;font-size:20px;font-weight:800;border:none;background:transparent;color:var(--ink);padding:10px 22px;border-radius:18px;cursor:pointer;opacity:.6;}
.mode-pill.active{background:linear-gradient(180deg,#ffa06b,var(--accent));color:#fff;opacity:1;box-shadow:0 4px 0 #e06a3f;}
.map-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;width:100%;max-width:820px;margin-top:18px;padding:0 8px;overflow-y:auto;max-height:64vh;}

/* 我来躲 */
.hide-banner{position:absolute;top:max(86px,calc(env(safe-area-inset-top) + 70px));left:50%;transform:translateX(-50%);z-index:30;background:rgba(255,250,242,.95);border-radius:22px;box-shadow:var(--shadow);padding:14px 30px;font-size:26px;font-weight:800;color:var(--ink);white-space:nowrap;animation:popIn .4s cubic-bezier(.2,1.4,.4,1);}
.hide-banner.result{font-size:30px;background:#fffaf2;top:auto;bottom:14%;}
.hide-number{position:absolute;top:38%;left:50%;transform:translate(-50%,-50%);z-index:35;font-size:160px;font-weight:900;color:#fff;text-shadow:0 6px 0 var(--accent),0 10px 22px rgba(0,0,0,.25);pointer-events:none;}
.hide-number.pop{animation:numPop .7s ease;}
@keyframes numPop{0%{transform:translate(-50%,-50%) scale(.4);opacity:0}30%{transform:translate(-50%,-50%) scale(1.15);opacity:1}100%{transform:translate(-50%,-50%) scale(.9);opacity:.85}}
.hidespot{animation:spotPulse 1.1s ease-in-out infinite;transform-box:fill-box;transform-origin:center;cursor:pointer;}
@keyframes spotPulse{0%,100%{opacity:.7}50%{opacity:1}}
.map-card{position:relative;border:none;background:var(--card);border-radius:24px;box-shadow:var(--shadow);padding:10px;cursor:pointer;font-family:inherit;transition:transform .12s;overflow:hidden;}
.map-card:active{transform:scale(.96);}
.map-thumb{width:100%;aspect-ratio:4/3;border-radius:16px;background-size:cover;background-position:center;}
.map-label{font-size:22px;font-weight:800;color:var(--ink);padding:10px 0 4px;}
.map-card.locked{filter:grayscale(.85) brightness(.97);}
.map-card.locked .map-thumb{opacity:.5;}
.map-done{position:absolute;top:16px;right:16px;background:var(--good);color:#fff;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:800;box-shadow:var(--shadow);}
.map-lock{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:60px;}

/* 收藏奖励墙 */
.album-scroll{width:100%;max-width:760px;margin-top:90px;overflow-y:auto;max-height:80vh;padding:0 10px 30px;}
.sec-title{font-size:21px;font-weight:800;margin:18px 4px 10px;}
.badge-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.badge-cell{background:var(--card);border-radius:18px;box-shadow:var(--shadow);padding:12px 4px;text-align:center;}
.badge-cell.locked{background:#efe6d8;}
.badge-ico{font-size:38px;line-height:1;}
.badge-name{font-size:13px;font-weight:700;margin-top:6px;opacity:.85;}
.stamp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;}
.stamp-cell{position:relative;background:var(--card);border-radius:18px;box-shadow:var(--shadow);padding:14px 4px;text-align:center;}
.stamp-cell.locked{background:#efe6d8;opacity:.7;}
.stamp-ico{font-size:40px;}
.stamp-name{font-size:14px;font-weight:700;margin-top:4px;}
.stamp-count{position:absolute;top:8px;right:10px;font-size:14px;font-weight:800;color:var(--accent);}

/* 识字名卡 */
.name-card{position:absolute;top:max(86px,calc(env(safe-area-inset-top) + 70px));left:50%;transform:translate(-50%,-20px) scale(.9);z-index:30;display:flex;align-items:center;gap:14px;background:rgba(255,250,242,.96);border-radius:24px;box-shadow:var(--shadow);padding:12px 26px 12px 14px;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;}
.name-card.show{opacity:1;transform:translate(-50%,0) scale(1);}
.name-card img{width:74px;height:74px;object-fit:contain;}
.name-card .nc-zh{font-size:30px;font-weight:800;color:var(--ink);line-height:1.1;}
.name-card .nc-py{font-size:17px;color:var(--accent);font-weight:600;}
.name-card .nc-en{font-size:19px;color:#6a8caf;font-weight:700;}

.confetti-layer{position:absolute;inset:0;pointer-events:none;z-index:40;overflow:hidden;}
.confetti{position:absolute;width:14px;height:14px;border-radius:3px;will-change:transform;}
@keyframes fall{to{transform:translateY(115vh) rotate(720deg);opacity:.9}}

/* 每日新朋友 + 成语乐园 */
.idiom-btn{max-width:420px;font-size:26px;margin-top:12px;background:linear-gradient(180deg,#7fc8e8,#5b8fcf);box-shadow:0 6px 0 #3f6ea8,var(--shadow);}
.idiom-btn:active{box-shadow:0 2px 0 #3f6ea8;}
.daily-friend{display:flex;align-items:center;gap:12px;background:var(--card);border-radius:22px;box-shadow:var(--shadow);padding:8px 20px 8px 8px;margin-bottom:14px;cursor:pointer;}
.df-thumb{width:56px;height:56px;flex:0 0 56px;}
.df-label{font-size:14px;opacity:.7;font-weight:700;}
.df-name{font-size:22px;font-weight:800;color:var(--accent);}
.idiom-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;width:100%;max-width:760px;margin-top:96px;padding:0 8px;overflow-y:auto;max-height:78vh;}
.idiom-card{position:relative;border:none;background:var(--card);border-radius:22px;box-shadow:var(--shadow);padding:10px;cursor:pointer;font-family:inherit;transition:transform .12s;}
.idiom-card:active{transform:scale(.96);}
.ic-thumb{width:100%;aspect-ratio:4/3;border-radius:14px;background-size:cover;background-position:center;}
.ic-chars{font-size:24px;font-weight:800;color:var(--ink);padding:8px 0 2px;letter-spacing:2px;}
.ic-done{position:absolute;top:14px;right:14px;background:var(--good);color:#fff;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:22px;}
.idiom-story{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;padding:max(12px,env(safe-area-inset-top)) 18px 24px;overflow-y:auto;}
.idiom-story .home-top{position:static;margin-bottom:4px;width:100%;}
.is-illus{width:100%;max-width:540px;aspect-ratio:4/3;border-radius:24px;background-size:cover;background-position:center;box-shadow:var(--shadow);}
.is-chars{display:flex;gap:12px;margin-top:16px;}
.is-char{font-size:54px;font-weight:900;color:var(--ink);background:var(--card);border-radius:16px;width:80px;height:80px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);}
.is-py{font-size:22px;color:var(--accent);font-weight:700;margin-top:10px;}
.is-mean{font-size:22px;font-weight:800;margin-top:12px;text-align:center;max-width:560px;}
.is-text{font-size:20px;line-height:1.7;margin-top:10px;text-align:center;max-width:560px;opacity:.92;}
.is-btns{display:flex;gap:12px;align-items:center;margin-top:18px;}
.is-btns .big-btn{width:auto;}
