/* =========================================================
   宝宝乐园 v2 · 共享设计系统（所有独立页面引用）
   ========================================================= */
:root{ --side-bg:#EFE6FF; --side-txt:#6A1B9A; --main-bg:#F5F0FF; --card:#fff; --num:#6A1B9A; --text:#3d2f5a; --gray:#9A8EB4; --track:#E6DBF7; --prog1:#9D83FF; --prog2:#C9B6FF; --accent:#FF8FAB; --spk:#FF8C00; --spk-bg:#FFF1DE; }
/* ===== 板块登录门禁页 ===== */
.login-gate{text-align:center;padding:52px 20px;}
.lg-ico{font-size:54px;margin-bottom:12px;}
.lg-t{font-size:20px;font-weight:800;margin-bottom:8px;color:#6A1B9A;}
.lg-s{color:#888;font-size:14px;margin-bottom:22px;line-height:1.6;}
.lg-btn{background:linear-gradient(135deg,#7E57C2,#AB47BC);color:#fff;border:none;border-radius:14px;font-size:16px;padding:12px 30px;cursor:pointer;box-shadow:0 4px 12px rgba(126,87,194,.35);}
.lg-btn:active{transform:translateY(1px);}
.lg-back{display:inline-block;margin-top:18px;color:#6A1B9A;font-size:14px;text-decoration:none;}
*{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
html,body{height:auto;}
body{margin:0;font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;background:#ddd;color:var(--text);overflow-x:hidden;}
.phone{max-width:460px;margin:0 auto;min-height:100vh;background:var(--main-bg);position:relative;padding-bottom:24px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;}
/* 农场页：锁成一屏，禁止上下滚动；底图按视口高度自适应（容器比例=图片比例，不拉伸变形） */
.phone:has(.farm-wrap){height:100vh;min-height:0;overflow:hidden;display:flex;flex-direction:column;padding-bottom:0;}
.phone:has(.farm-wrap) .topbar{flex-shrink:0;border-radius:0;}
/* ===== 顶栏（渐变 + 悬浮阴影） ===== */
.topbar{display:flex;align-items:center;gap:8px;padding:6px 12px;min-height:30px;background:linear-gradient(135deg,color-mix(in srgb,var(--side-bg) 80%,transparent),color-mix(in srgb,#fff 72%,transparent));backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:var(--side-txt);position:sticky;top:0;z-index:40;box-shadow:0 2px 10px rgba(106,27,154,.12);border-bottom:1px solid rgba(106,27,154,.08);}
.topbar .back{font-size:18px;color:var(--side-txt);text-decoration:none;width:30px;flex-shrink:0;font-weight:800;line-height:1;}
.topbar .title{font-weight:800;font-size:14px;flex:1;}
.stars{background:linear-gradient(135deg,#ffd84a,#ff9a3d);color:#fff;font-weight:700;padding:4px 9px;border-radius:13px;font-size:12px;box-shadow:0 2px 6px rgba(0,0,0,.12);flex-shrink:0;}
/* ===== 登录按钮 / 已登录态（顶栏右侧） ===== */
.loginchip{background:rgba(255,255,255,.85);color:var(--num);border:1px solid rgba(106,27,154,.25);font-weight:700;font-size:12px;padding:4px 10px;border-radius:13px;cursor:pointer;flex-shrink:0;white-space:nowrap;box-shadow:0 2px 6px rgba(106,27,154,.10);}
/* 顶栏“给狗狗起名”小按钮（宠物小屋标题处） */
.nm-btn{background:linear-gradient(135deg,#ff9a3d,#ff6f91);color:#fff;border:0;font-weight:800;font-size:12px;padding:3px 10px;border-radius:12px;cursor:pointer;box-shadow:0 2px 6px rgba(255,111,145,.35);}
.loginchip.on{background:linear-gradient(135deg,#7E57C2,#9D83FF);color:#fff;border-color:transparent;}
/* ===== 登录弹层 ===== */
.login-mask{position:fixed;inset:0;z-index:9998;background:rgba(40,24,60,.45);display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(2px);}
.login-card{width:100%;max-width:340px;background:#fff;border-radius:20px;padding:20px 18px;box-shadow:0 12px 40px rgba(40,24,60,.35);font-family:inherit;}
.lc-title{font-size:18px;font-weight:800;color:var(--num);text-align:center;}
.lc-sub{font-size:12px;color:var(--gray);text-align:center;margin:6px 0 14px;line-height:1.5;}
.lc-lab{display:block;font-size:12px;font-weight:700;color:var(--text);margin:10px 0 4px;}
.lc-row{display:flex;gap:8px;}
.lc-input{flex:1;min-width:0;border:1.5px solid var(--track);border-radius:12px;padding:10px 12px;font-size:15px;font-family:inherit;outline:none;}
.lc-input:focus{border-color:var(--num);}
.lc-send{background:linear-gradient(135deg,#7E57C2,#9D83FF);color:#fff;border:none;border-radius:12px;padding:0 12px;font-size:13px;font-weight:700;white-space:nowrap;cursor:pointer;}
.lc-send:disabled{opacity:.6;cursor:default;}
.lc-msg{font-size:12px;color:#C2185B;min-height:16px;margin:8px 2px 0;line-height:1.4;}
.lc-btns{display:flex;gap:10px;margin-top:14px;}
.lc-cancel,.lc-ok{flex:1;border:none;border-radius:14px;padding:11px 0;font-size:15px;font-weight:800;cursor:pointer;font-family:inherit;}
.lc-cancel{background:#f0ebf7;color:var(--num);}
.lc-ok{background:linear-gradient(135deg,#FF8FAB,#FF6F91);color:#fff;}
.lc-hint{font-size:11px;color:var(--gray);text-align:center;margin-top:10px;}
/* ===== 首页 ===== */
.greet{padding:16px 16px 4px;}
.greet h1{margin:0;font-size:20px;color:var(--num);}
.greet p{margin:4px 0 0;color:var(--gray);font-size:13px;}
.daynav{display:flex;align-items:center;justify-content:space-between;margin:10px 16px 2px;}
.daynav button{background:var(--card);border:1px solid var(--track);color:var(--num);border-radius:12px;padding:7px 12px;font-size:13px;font-weight:700;cursor:pointer;}
.daynav span{font-weight:800;color:var(--num);font-size:15px;}
.prog{margin:8px 16px;}
.prog .track{height:10px;background:var(--track);border-radius:8px;overflow:hidden;}
.prog .fill{height:100%;background:linear-gradient(90deg,var(--prog1),var(--prog2));border-radius:8px;transition:width .3s;}
.prog .row{font-size:12px;color:var(--gray);margin-top:4px;text-align:right;}
/* ===== 首页图片广告条（横向滚动 · 按阶段定向 L1-L6） ===== */
.adbanner{margin:8px 16px;height:88px;border-radius:14px;overflow:hidden;position:relative;background:#efe6ff;box-shadow:0 4px 14px rgba(120,90,160,.14);}
.adbanner .adb-view{position:relative;width:100%;height:100%;overflow:hidden;}
.adbanner .adb-track{display:flex;height:100%;transition:transform .6s ease;}
/* carousel slide handled below */
.adbanner .adb-slide{flex:0 0 100%;height:100%;display:flex;align-items:center;justify-content:center;position:relative;text-decoration:none;cursor:pointer;overflow:hidden;}
.adbanner .adb-slide img{height:100%;width:100%;display:block;object-fit:cover;}
.adb-slide .adb-cap{position:absolute;left:0;right:0;bottom:0;padding:4px 10px;font-size:12px;font-weight:700;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.5));text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.adb-empty{display:flex;align-items:center;justify-content:center;height:100%;color:#9A8EB4;font-size:13px;}
@keyframes adb-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.adbanner .adb-dots{position:absolute;bottom:5px;right:10px;display:flex;gap:4px;z-index:3;}
.adbanner .adb-dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.65);cursor:pointer;transition:width .2s;}
.adbanner .adb-dot.on{background:#fff;width:14px;border-radius:3px;}
/* ===== 今日任务进度（与阶段天数进度分开展示） ===== */
.todaytasks{margin:6px 16px 10px;background:linear-gradient(135deg,#ffffff,#fff7fb);border:2px solid var(--accent);border-radius:18px;padding:12px 14px;box-shadow:0 4px 14px rgba(255,143,171,.18);}
.todaytasks.empty{opacity:.8;}
.tt-head{display:flex;justify-content:space-between;align-items:baseline;}
.tt-t{font-weight:800;font-size:15px;color:var(--num);}
.tt-n{font-size:12px;color:var(--gray);font-weight:700;}
.tt-track{height:12px;background:var(--track);border-radius:8px;overflow:hidden;margin:8px 0 7px;}
.tt-fill{height:100%;background:linear-gradient(90deg,#FFB3C8,var(--accent));border-radius:8px;transition:width .3s;}
.tt-chips{display:flex;flex-wrap:wrap;gap:6px;}
.tt-chip{font-size:12px;font-weight:700;color:var(--text);background:var(--side-bg);border-radius:10px;padding:3px 9px;}
.tt-chip.done{background:#d8f5de;color:#2e7d4f;}
.tt-chip.partial{background:#fff0d6;color:#a06400;}
.tt-note{font-size:12px;color:var(--gray);margin-top:2px;}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:16px;}
.card{background:var(--card);border-radius:20px;padding:18px 12px;display:flex;flex-direction:column;align-items:center;gap:6px;text-decoration:none;color:var(--text);box-shadow:0 4px 14px rgba(120,90,160,.12);position:relative;cursor:pointer;transition:transform .12s, box-shadow .12s;min-height:112px;justify-content:center;border:2px solid transparent;}
.card:active{transform:scale(.97);}
.card:hover{box-shadow:0 8px 20px rgba(120,90,160,.18);}
.card .ico{font-size:40px;line-height:1;filter:drop-shadow(0 3px 4px rgba(0,0,0,.12));}
.card .nm{font-weight:800;font-size:17px;color:var(--num);}
.card .sub{font-size:12px;color:var(--gray);text-align:center;line-height:1.35;}
.card.done{outline:2px solid #7bd88f;}
.card.locked{filter:grayscale(.3);opacity:.85;}
.card .tag{position:absolute;top:8px;right:8px;background:var(--accent);color:#fff;font-size:11px;padding:2px 7px;border-radius:9px;}
.card .tag.done{background:#7bd88f;}
.card .lock{position:absolute;top:8px;right:10px;font-size:18px;}
.c-chinese{background:linear-gradient(160deg,#fff,#ffeef4);} .c-chinese .ico,.c-chinese .nm{color:#C2185B;}
.c-math{background:linear-gradient(160deg,#fff,#e6f3ff);} .c-math .ico,.c-math .nm{color:#0277BD;}
.c-english{background:linear-gradient(160deg,#fff,#fff4e0);} .c-english .ico,.c-english .nm{color:#E08A00;}
.c-baike{background:linear-gradient(160deg,#fff,#e7f7ea);} .c-baike .ico,.c-baike .nm{color:#2E7D32;}
.c-pinyin{background:linear-gradient(160deg,#fff,#f1e9ff);} .c-pinyin .ico,.c-pinyin .nm{color:#6A1B9A;}
.c-set{background:linear-gradient(160deg,#fff,#f0f0f0);} .c-set .ico,.c-set .nm{color:#777;}
.c-pet{background:linear-gradient(160deg,#fff,#fff0e2);} .c-pet .ico,.c-pet .nm{color:#E07A00;}
.exam-entry{margin:6px 16px 10px;text-align:center;}
.exam-entry .st.big{font-size:16px;padding:14px;width:100%;display:block;text-align:center;text-decoration:none;}
.exam-entry .sub{font-size:12px;color:var(--gray);margin-top:6px;}
/* 考试嵌进「今日任务进度」区（#11） */
.exam-intask{display:block;margin:8px 2px 2px;text-decoration:none;color:var(--text);}
.ei-row{display:flex;align-items:center;gap:10px;padding:11px 14px;background:linear-gradient(135deg,#FFF3E0,#FFE0EC);border:2px solid var(--accent);border-radius:16px;box-shadow:0 4px 12px rgba(255,143,171,.18);transition:transform .12s;}
.exam-intask:active .ei-row{transform:scale(.98);}
.exam-intask.done .ei-row{background:linear-gradient(135deg,#E6F7EA,#DFF5E6);border-color:#7bd88f;}
.ei-ico{font-size:34px;line-height:1;}
.ei-info{flex:1;min-width:0;}
.ei-t{font-weight:800;font-size:16px;color:var(--num);}
.ei-meta{font-size:12px;color:var(--gray);font-weight:700;margin-top:3px;}
.ei-go{font-size:13px;font-weight:800;color:#fff;background:var(--accent);border-radius:12px;padding:8px 12px;white-space:nowrap;}
.exam-intask.done .ei-go{background:#7bd88f;}
.footnote{text-align:center;font-size:12px;color:var(--gray);padding:8px 16px 4px;}
/* ===== 板块横幅 hero ===== */
.board-hero{border-radius:0 0 26px 26px;padding:18px 18px 20px;margin-bottom:6px;color:#fff;box-shadow:0 4px 16px rgba(0,0,0,.12);}
.board-hero .bh-ico{font-size:46px;line-height:1;filter:drop-shadow(0 3px 5px rgba(0,0,0,.18));}
.board-hero .bh-t{font-size:22px;font-weight:900;margin-top:4px;text-shadow:0 1px 2px rgba(0,0,0,.15);}
.board-hero .bh-s{font-size:13px;opacity:.95;margin-top:2px;font-weight:600;}
.bh-chinese{background:linear-gradient(135deg,#ff7eb3,#C2185B);}
.bh-math{background:linear-gradient(135deg,#4facfe,#0277BD);}
.bh-english{background:linear-gradient(135deg,#ffb347,#E08A00);}
.bh-baike{background:linear-gradient(135deg,#56d664,#2E7D32);}
.bh-pinyin{background:linear-gradient(135deg,#a18cd1,#6A1B9A);}
.bh-exam{background:linear-gradient(135deg,#ff9a9e,#e0529c);}
.bh-set{background:linear-gradient(135deg,#b0b0b0,#6a6a6a);}
/* ===== 学习页通用 ===== */
.lrn{display:flex;flex-direction:column;min-height:100%;}
.lrn-steps{display:flex;align-items:center;gap:0;padding:12px 16px 0;flex-wrap:wrap;justify-content:center;}
.lrn-steps .step{flex:0 1 auto;min-width:56px;background:var(--card);border:1px solid var(--track);color:var(--gray);border-radius:12px;padding:8px 14px;font-size:14px;font-weight:700;text-align:center;white-space:nowrap;opacity:.5;}
.lrn-steps .step.active{background:var(--num);color:#fff;border-color:var(--num);opacity:1;box-shadow:0 3px 10px rgba(255,140,0,.3);}
.lrn-steps .step-arrow{color:var(--gray);font-weight:900;margin:0 6px;font-size:15px;opacity:.5;}
.lrn-body{flex:1;overflow:visible;padding:14px 16px 20px;max-width:520px;margin:0 auto;width:100%;}
.lrn-head{font-size:14px;color:var(--gray);margin-bottom:12px;line-height:1.6;padding:0 2px;}
.lrn-foot{padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--track);display:flex;gap:10px;position:sticky;bottom:0;z-index:25;}
.lrn-foot .st{flex:1;}
/* ===== 喇叭按钮（统一橙色） ===== */
.spk{background:var(--spk);color:#fff;border:none;border-radius:50%;width:42px;height:42px;font-size:19px;cursor:pointer;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 2px 5px rgba(255,140,0,.35);}
.spk:active{transform:scale(.93);}
.spk.sm{width:36px;height:36px;font-size:16px;}
/* ===== 主按钮 ===== */
.st{background:var(--num);color:#fff;border:none;border-radius:14px;padding:13px 18px;font-size:15px;font-weight:800;cursor:pointer;width:100%;}
.st:disabled{opacity:.45;cursor:default;}
.st.sm{width:auto;padding:9px 16px;font-size:13px;}
.st.ghost{background:var(--card);color:var(--num);border:1px solid var(--track);}
/* ===== 语文：认字 ===== */
.hz-stage{display:flex;flex-direction:column;align-items:center;gap:14px;padding:10px 0 16px;}
.hz-big{font-size:72px;font-weight:800;color:var(--num);background:#faf3ff;border-radius:20px;width:120px;height:120px;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 14px rgba(120,90,160,.15);}
.hz-zu{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;}
.hz-zu .z{background:var(--track);color:var(--num);border-radius:10px;padding:8px 14px;font-size:15px;font-weight:700;cursor:pointer;}
.hz-zu .z:active{transform:scale(.95);}
/* 句子找字 */
.sent{font-size:22px;line-height:2;font-weight:700;color:var(--text);display:flex;flex-wrap:wrap;gap:2px;}
.sent .sc{padding:2px 4px;border-radius:8px;cursor:pointer;}
.sent .sc.punc{cursor:default;color:var(--gray);}
.sent .sc.ok{background:#d8f5dd;color:#1b7a32;}
.sent .sc.no{background:#ffe0e0;color:#c0392b;}
.sent .sc:hover:not(.punc){background:#f3ecff;}
/* 古诗 */
.poem-stage{background:#faf3ff;border-radius:18px;padding:18px;margin:6px 0 14px;text-align:center;}
.poem-cur{font-size:26px;font-weight:800;color:var(--num);line-height:1.7;}
.poem-line-v{font-size:19px;font-weight:700;color:var(--num);padding:7px 0;border-bottom:1px dashed var(--track);}
.parent-box{background:#fff7e6;border:1px solid #ffe2a8;border-radius:16px;padding:16px;text-align:center;}
.parent-box .pb-t{font-size:15px;color:#8a5a00;line-height:1.7;margin-bottom:12px;}
.parent-box .pb-btns{display:flex;gap:10px;}
.parent-box .pb-btns .st{flex:1;}
/* ===== 通用题目卡 ===== */
.pcard{background:var(--card);border-radius:16px;padding:14px;margin-bottom:14px;box-shadow:0 2px 8px rgba(120,90,160,.08);}
.pq{display:flex;align-items:flex-start;gap:10px;font-size:16px;font-weight:700;margin-bottom:12px;line-height:1.5;}
.pq>span{flex:1;padding-top:8px;}
.popts{display:flex;gap:10px;flex-wrap:wrap;}
.o{background:var(--card);border:2px solid var(--track);color:var(--num);border-radius:14px;padding:14px 18px;font-size:17px;font-weight:700;cursor:pointer;flex:0 1 auto;min-width:96px;display:flex;align-items:center;gap:6px;transition:transform .1s,background .1s,border-color .1s;}
.o:active{transform:scale(.97);}
.o .onum{background:var(--track);color:var(--num);border-radius:8px;padding:1px 7px;font-size:13px;font-weight:800;}
.o.sel{background:#FFF3CD;border-color:var(--spk);outline:2px solid var(--spk);}
.o.ok{background:#d8f5dd;color:#1b7a32;border-color:#7bd88f;}
.o.no{background:#ffe0e0;color:#c0392b;border-color:#ffb3b3;}
.confirmbar{display:flex;gap:10px;margin-top:12px;}
.qok{flex:1;background:var(--spk);color:#fff;border:none;border-radius:14px;padding:14px;font-size:17px;font-weight:800;cursor:pointer;box-shadow:0 3px 8px rgba(255,140,0,.3);display:flex;align-items:center;justify-content:center;gap:6px;}
.qok:disabled{opacity:.4;box-shadow:none;cursor:default;}
/* 逐题进度 + 重听问题按钮 */
.qprog{font-size:14px;font-weight:800;color:var(--num);background:var(--side-bg);border-radius:12px;padding:7px 14px;display:inline-block;margin-bottom:10px;}
.replay{display:inline-flex;align-items:center;gap:7px;background:var(--spk);color:#fff;font-size:15px;font-weight:800;border:none;border-radius:22px;padding:11px 22px;cursor:pointer;user-select:none;align-self:flex-start;box-shadow:0 2px 6px rgba(255,140,0,.3);}
.replay:active{transform:scale(.96);}
.replay.slow{background:#31b57a;box-shadow:0 2px 6px rgba(49,181,122,.3);margin-left:8px;}
.auto-hint{text-align:center;color:var(--num);font-weight:800;font-size:15px;padding:10px;}
.notask{text-align:center;color:var(--gray);font-size:16px;line-height:2;padding:50px 20px;}
/* ===== 数学可视化 ===== */
.m-stage{background:#faf3ff;border-radius:16px;padding:16px;margin-bottom:14px;text-align:center;}
.m-q{font-size:20px;font-weight:800;color:var(--num);margin-bottom:10px;line-height:1.5;}
.m-vis{margin-top:8px;}
.vis-row{font-size:30px;line-height:1.6;word-break:break-all;}
.vis-pair{display:flex;flex-direction:column;gap:8px;align-items:center;}
.vis-pair .vrow{font-size:28px;line-height:1.5;}
.vis-pair .vlabel{font-size:13px;color:var(--gray);font-weight:700;margin-bottom:2px;}
.vis-pair2{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px;justify-content:center;padding:8px 0;}
.vp-col{display:flex;flex-direction:column;gap:6px;justify-content:center;}
.vp-cell{width:40px;height:40px;min-height:40px;display:flex;align-items:center;justify-content:center;font-size:28px;line-height:1;background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(120,90,160,.12);}
.vp-cell:empty{background:transparent;box-shadow:none;}
.vis-big{font-size:56px;line-height:1.2;}
.vis-num{font-size:64px;font-weight:800;color:var(--num);}
.cblock{width:54px;height:54px;border-radius:12px;display:inline-block;vertical-align:middle;box-shadow:0 2px 6px rgba(0,0,0,.12);}
.cblock.big{width:80px;height:80px;}
.cblock.sm{width:26px;height:26px;border-radius:8px;}
.vis-emoji{font-size:54px;}
.m-script{background:var(--card);border-radius:14px;padding:12px;box-shadow:0 2px 8px rgba(120,90,160,.08);}
.m-line{font-size:15px;color:var(--text);line-height:1.7;padding:5px 0;border-bottom:1px dashed var(--track);}
.m-line:last-child{border-bottom:none;}
.m-ans{font-size:22px;font-weight:800;color:#C2185B;margin:6px 0;}
/* ===== 英语 ===== */
.en-stage{background:#fff7ec;border-radius:18px;padding:20px;margin-bottom:14px;text-align:center;cursor:pointer;border:2px solid #ffe2b0;}
.en-word{font-size:34px;font-weight:800;color:#E08A00;}
.en-zh{font-size:18px;color:#8a6d00;font-weight:700;margin-top:4px;}
/* 句型日：把功能词（骨架）和填空旧词分别高亮，让孩子一眼看懂"句子结构" */
.en-sent .pat-fw{color:#E08A00;background:#ffe9bf;border-radius:6px;padding:1px 5px;font-weight:800;box-shadow:0 1px 0 #ffd27a;}
.en-sent .pat-noun{color:#2e7d32;background:#e3f5e4;border-radius:6px;padding:1px 5px;font-weight:700;}
.en-count{font-size:48px;font-weight:800;color:#E08A00;margin-top:8px;}
.en-opt{display:flex;align-items:center;gap:6px;}
/* ===== 百科 ===== */
.bk-story{background:var(--card);border-radius:14px;padding:14px;box-shadow:0 2px 8px rgba(120,90,160,.08);}
.bk-p{font-size:15px;color:var(--text);line-height:1.9;padding:6px 0;border-bottom:1px dashed var(--track);}
.bk-p:last-child{border-bottom:none;}
.bk-hook{background:linear-gradient(135deg,#fff7e6,#ffe9c7);border:1px solid #ffd591;border-radius:14px;padding:14px 16px;margin-bottom:12px;font-size:16px;font-weight:700;color:#a35b00;line-height:1.7;}
.bk-hook .bk-h{font-size:16px;color:#a35b00;}
.bk-point{background:var(--card);border-radius:14px;padding:14px 16px;margin-bottom:10px;font-size:15px;color:var(--text);line-height:1.8;box-shadow:0 2px 8px rgba(120,90,160,.08);border-left:4px solid var(--num);}
/* .bk-tip / .bk-star 等「做实验」样式随该环节移除一并删除 */
/* ===== 设置页 ===== */
.stage-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;padding:6px 2px;}
.stage-btn{background:var(--card);border:2px solid var(--track);border-radius:14px;padding:12px 6px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--num);}
.stage-btn .lv{font-size:18px;font-weight:800;}
.stage-btn .nm{font-size:12px;color:var(--gray);}
.stage-btn.cur{border-color:var(--num);background:var(--side-bg);}
.theme-row{display:flex;gap:12px;padding:6px 2px;align-items:center;}
.swatch{width:40px;height:40px;border-radius:50%;cursor:pointer;border:3px solid #fff;box-shadow:0 0 0 2px var(--track);}
.swatch.cur{box-shadow:0 0 0 3px var(--num);}
.theme-label{font-size:14px;color:var(--gray);font-weight:700;}
/* ===== 考试页 ===== */
.exam-page{padding:14px 16px 20px;max-width:520px;margin:0 auto;width:100%;}
.exam-page .h{font-size:19px;font-weight:800;color:var(--num);text-align:center;}
.exam-page .sub{text-align:center;color:var(--gray);font-size:13px;margin:6px 0 14px;}
/* ===== 毕业页面（L6 学期大考通过） ===== */
.grad-page{max-width:460px;margin:0 auto;padding:30px 20px 40px;text-align:center;background:linear-gradient(160deg,#fff7e6,#ffe9f3 55%,#efe6ff);min-height:100vh;}
.grad-cap{font-size:74px;line-height:1;filter:drop-shadow(0 6px 14px rgba(255,143,171,.4));animation:gradPop .6s ease both;}
.grad-t{font-size:28px;font-weight:900;color:var(--num);margin:8px 0 6px;}
.grad-s{font-size:15px;color:var(--text);margin-bottom:18px;line-height:1.5;}
.grad-s b{color:var(--accent);}
.grad-stats{display:inline-block;background:#fff;border:2px solid var(--track);border-radius:14px;padding:10px 16px;font-size:14px;font-weight:700;color:var(--text);box-shadow:0 3px 10px rgba(106,27,154,.12);}
.grad-pts{margin:14px 0 4px;font-size:17px;font-weight:800;color:#FF8C00;}
.grad-msg{margin:16px auto 22px;max-width:340px;font-size:14px;color:var(--gray);line-height:1.7;}
.grad-page .ok.big{background:linear-gradient(135deg,#FF8FAB,#9D83FF);color:#fff;border:none;border-radius:16px;padding:14px 36px;font-weight:800;font-size:17px;cursor:pointer;box-shadow:0 6px 18px rgba(157,131,255,.4);}
.grad-page .ok.big:active{transform:scale(.96);}
@keyframes gradPop{0%{transform:scale(.4) rotate(-12deg);opacity:0;}60%{transform:scale(1.12) rotate(4deg);}100%{transform:scale(1) rotate(0);opacity:1;}}

/* ===== 结果弹层 ===== */
.overlay{position:fixed;inset:0;background:rgba(40,20,60,.5);display:none;align-items:center;justify-content:center;z-index:50;padding:20px;}
.overlay.show{display:flex;}
.overlay .box{background:#fff;border-radius:22px;padding:24px;width:100%;max-width:330px;text-align:center;box-shadow:0 10px 40px rgba(0,0,0,.3);}
.overlay .big{font-size:56px;}
.overlay .ttl{font-size:21px;font-weight:800;color:var(--num);margin:6px 0;}
.overlay .sc{font-size:15px;color:var(--text);}
.overlay .pt{font-size:14px;color:#1b7a32;margin:10px 0 14px;line-height:1.6;}
.overlay .ok{background:var(--num);color:#fff;border:none;border-radius:14px;padding:11px 24px;font-weight:800;cursor:pointer;font-size:15px;}
/* 下一轮确认弹层（已学完板块再次进入） */
.prompt .box{max-width:340px;padding:22px 22px 26px;}
.prompt .pemoji{font-size:44px;line-height:1;margin-bottom:6px;}
.prompt .ptitle{font-size:20px;font-weight:800;color:var(--num);margin-bottom:6px;}
.prompt .ptext{font-size:16px;font-weight:600;color:var(--text);line-height:1.7;margin:0 0 18px;}
.prompt .pbtns{display:flex;gap:12px;}
.prompt .pok,.prompt .pno{flex:1;border:none;border-radius:16px;padding:14px 8px;font-size:16px;font-weight:800;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;line-height:1.2;transition:transform .1s;}
.prompt .pok{background:linear-gradient(135deg,#43d17a,#2ecc71);color:#fff;box-shadow:0 4px 10px rgba(46,204,113,.3);}
.prompt .pno{background:linear-gradient(135deg,#ff8585,#ff6b6b);color:#fff;box-shadow:0 4px 10px rgba(255,107,107,.3);}
.prompt .pok:active,.prompt .pno:active{transform:scale(.97);}
/* 答对庆祝弹窗：更童趣、更醒目（金色暖调 + 弹入 + 跳动 + 旋转彩带） */
.overlay.celebrate .box{background:linear-gradient(160deg,#fff7e6,#ffe9c2);border:3px solid #ffd24d;border-radius:28px;padding:30px 24px;box-shadow:0 14px 50px rgba(255,170,0,.35);animation:celPop .35s cubic-bezier(.2,1.5,.4,1);}
@keyframes celPop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.08)}100%{transform:scale(1);opacity:1}}
.overlay.celebrate .cel-burst{font-size:22px;letter-spacing:6px;margin-bottom:6px;animation:celSpin 3s linear infinite;}
@keyframes celSpin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.overlay.celebrate .pemoji{font-size:64px;line-height:1;margin-bottom:8px;animation:celBounce .55s ease-in-out infinite alternate;}
@keyframes celBounce{from{transform:translateY(0)}to{transform:translateY(-9px)}}
.overlay.celebrate .ptitle{font-size:22px;font-weight:900;color:#e8740c;margin-bottom:10px;}
.overlay.celebrate .ptext{font-size:17px;font-weight:700;color:#7a4a12;line-height:1.7;margin:0 0 20px;}
.overlay.celebrate .pok{font-size:18px;padding:16px;background:linear-gradient(135deg,#ff9a3c,#ff7a00);box-shadow:0 6px 16px rgba(255,122,0,.4);}
.overlay.celebrate .pok:active{transform:scale(.97);}
/* 家长门 */
.gate .box{max-width:320px;padding:22px 22px 24px;}
.gate .gico{font-size:38px;line-height:1;margin-bottom:4px;}
.gate .gtitle{font-size:18px;font-weight:800;color:var(--num);margin-bottom:10px;}
.gate .q{font-size:16px;font-weight:700;color:var(--text);line-height:1.7;margin:8px 0 12px;}
.gate .q.num{font-size:30px;font-weight:800;color:var(--num);background:var(--side-bg);border-radius:14px;padding:10px;margin:0 0 14px;}
.gate input{width:100%;font-size:24px;text-align:center;padding:12px;border:2px solid var(--track);border-radius:14px;margin-bottom:14px;font-weight:700;}
.gate-btns{display:flex;gap:10px;}
.gate-btns .st{margin-bottom:0;}
/* ===== 拼音 9 屏教案 ===== */
.py-stage{display:flex;flex-direction:column;align-items:center;gap:14px;padding:8px 4px 4px;text-align:center;width:100%;}
.py-big{font-size:88px;font-weight:900;line-height:1.1;color:#FF8C00;background:#fff7ec;border:3px dashed #ffc266;border-radius:24px;padding:10px 38px;min-width:150px;}
.py-txt{font-size:17px;line-height:1.9;color:var(--num,#3a2b52);}
.py-txt b{color:#e67300;}
/* —— 拼音板块：字母复习 / 拼读 / 组词 / 句子 间距（让拼音之间可分隔） —— */
.py-letter-row{display:grid;width:100%;align-self:stretch;grid-template-columns:repeat(auto-fit,minmax(54px,1fr));gap:8px 10px;margin:10px 0;justify-items:center;}
.py-big-sm{display:flex;align-items:center;justify-content:center;width:100%;min-width:0;box-sizing:border-box;overflow:hidden;font-size:clamp(18px,5.5vw,30px);font-weight:900;color:#FF8C00;background:#fff7ec;border:3px dashed #ffc266;border-radius:16px;padding:5px 2px;margin:0;transition:all .15s;cursor:default;}
.py-big-sm.on{background:#ffe2b0;color:#ff4d00;border-color:#ff8c00;border-style:solid;transform:scale(1.1);box-shadow:0 4px 12px rgba(255,140,0,.35);position:relative;z-index:2;}
.py-wordbig{font-size:38px;font-weight:900;color:#FF8C00;letter-spacing:8px;margin:4px 0;}
.py-decomp{font-size:19px;line-height:2.3;margin:8px 0;letter-spacing:2px;}
.py-decomp .py-init{color:#7a4de8;font-weight:800;margin:0 2px;}
.py-decomp .py-read{color:#2a7d4f;font-weight:700;}
.py-decomp .py-syl{color:#e67300;font-weight:800;margin:0 4px;}
.py-sent{font-size:30px;line-height:2.8;letter-spacing:10px;font-weight:700;text-align:center;color:var(--num,#3a2b52);}
.py-sent-plain{font-size:clamp(28px,8vw,46px);line-height:1.5;letter-spacing:8px;font-weight:900;text-align:center;color:#FF8C00;padding:16px 8px;margin:6px 0 4px;word-break:break-word;}
.py-exam-prog{text-align:center;font-size:13px;font-weight:700;color:var(--gray,#8a7ba8);margin:4px 0 2px;}
.py-exam-q{margin:6px 0 10px;}
.py-sent rt{letter-spacing:0;color:#e67300;font-size:15px;font-weight:700;}
.py-sent-opt{display:inline-block;font-size:22px;line-height:1.5;letter-spacing:4px;}
.py-sent-opt rt{letter-spacing:0;color:#e67300;font-size:13px;}
.py-chant{font-size:26px;font-weight:900;color:#7a4de8;background:#f3edff;border-radius:18px;padding:14px 22px;letter-spacing:2px;}
.py-mouth{font-size:17px;line-height:1.9;font-weight:700;color:#2a7d4f;background:#eafaf0;border-radius:16px;padding:12px 18px;max-width:420px;}
.py-listen{display:inline-flex;align-items:center;gap:6px;background:#FF8C00;color:#fff;font-size:15px;font-weight:800;border-radius:22px;padding:10px 22px;cursor:pointer;user-select:none;}
.py-listen:active{transform:scale(.96);}
.rd3{display:flex;gap:14px;justify-content:center;}
.rd3b{border:2px solid #ffc266;background:#fff;border-radius:16px;padding:12px 18px;font-size:16px;font-weight:800;color:#b06a00;cursor:pointer;line-height:1.6;}
.rd3b.on{background:#FF8C00;border-color:#FF8C00;color:#fff;}
.py-blend{font-size:44px;font-weight:900;color:var(--num,#3a2b52);text-align:center;padding:8px 0 2px;}
.py-blend .plus{color:#FF8C00;margin:0 10px;}
.py-cd{font-size:56px;font-weight:900;color:#FF8C00;width:96px;height:96px;border-radius:50%;background:#fff7ec;border:3px solid #ffc266;display:flex;align-items:center;justify-content:center;}
.py-sm{font-size:13px;color:var(--gray,#8a7ba3);font-weight:600;margin-left:4px;}
/* ===== 加载 / Toast ===== */
.loading{padding:60px 20px;text-align:center;color:var(--gray);line-height:1.9;font-size:15px;}
.toast{position:fixed;left:50%;bottom:84px;transform:translateX(-50%) translateY(16px) scale(.96);background:linear-gradient(135deg,rgba(58,30,86,.96),rgba(40,20,60,.92));color:#fff;padding:12px 20px;border-radius:22px;font-size:14px;font-weight:600;opacity:0;transition:transform .25s,opacity .25s;pointer-events:none;z-index:60;max-width:84%;text-align:center;line-height:1.5;box-shadow:0 6px 20px rgba(0,0,0,.28);}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0) scale(1);}
/* ===================== 宠物乐园 ===================== */
.pet-wrap{position:relative;height:calc(100vh - 54px);overflow:hidden;background:#9bd66f;}
.pet-scene{position:absolute;inset:0;z-index:0;background-size:cover;background-position:center bottom;background-repeat:no-repeat;background-color:#9bd66f;}
/* 底图锁定帧：装饰位置都以它为基准(比例 832/1216)，任意手机比例下都不会错位/溢出 */
/* 底图帧：比例锁定为 832/1216，按高度铺满宠物场景；窄手机时左右自然溢出被 .pet-wrap 裁切（不再两侧留绿边）。装饰%坐标相对此帧=相对底图，稳定不乱跳。 */
.pet-base{position:absolute;top:0;left:50%;transform:translateX(-50%);height:100%;width:auto;aspect-ratio:832/1216;overflow:visible;}
.pet-deco{position:absolute;pointer-events:none;background-repeat:no-repeat;background-size:contain;background-position:center bottom;display:none;z-index:11;}
.pet-deco.show{display:block;}
/* 层级（顶部→底部）：花丛 > 栅栏 > 宠物 > 大树 > 房子 > 天空 */
.pet-deco.house{background-size:contain;background-position:center bottom;z-index:20;}
.pet-deco.fence{background-size:100% auto;background-repeat:no-repeat;background-position:center bottom;opacity:.97;z-index:50;}
.pet-deco.daisies{background-size:100% auto;background-repeat:no-repeat;background-position:center bottom;z-index:60;}
.pet-deco.tree{background-size:contain;background-position:center bottom;z-index:30;}
/* 天空装饰（环境上半区）；left/top/width/height 均由 JS(DECO_POS_DEFAULTS / 定位工具)控制 */
.pet-deco.sky{background-size:contain;background-position:center;z-index:10;}
.pet-deco.rainbow{z-index:10;}
.pet-deco.moon{z-index:10;}
.pet-deco.sun{z-index:10;}
.pet-hud{position:absolute;top:8px;left:0;right:0;z-index:30;padding:0 10px;}
.pet-bars{display:flex;gap:6px;}
.bc{flex:1;background:rgba(255,255,255,.92);border-radius:12px;padding:5px 7px 6px;box-shadow:0 2px 6px rgba(0,0,0,.12);}
.bc .t{display:flex;justify-content:space-between;align-items:baseline;font-size:10px;font-weight:700;margin-bottom:3px;line-height:1;}
.bc .t .lab{color:#5a3a1a;} .bc .t .v{color:var(--num);} .bc .t .s{color:var(--gray);margin-left:2px;}
.bc .bdiv{height:6px;background:#eee;border-radius:3px;overflow:hidden;}
.bc .bdiv i{display:block;height:100%;border-radius:3px;transition:width .4s;}
.bc .f i{background:linear-gradient(90deg,#ff8a3d,#ffb75e);}
.bc .w i{background:linear-gradient(90deg,#3da6ff,#7cc6ff);}
.bc .m i{background:linear-gradient(90deg,#ff5fa2,#ffb0c8);}
.sick-banner{position:absolute;left:50%;transform:translateX(-50%);bottom:96px;z-index:35;background:rgba(255,255,255,.97);border-radius:16px;padding:9px 14px;display:none;align-items:center;gap:12px;box-shadow:0 6px 18px rgba(0,0,0,.22);}
.sick-banner.show{display:flex;}
.sick-banner .stxt{font-size:13px;font-weight:700;color:#c0392b;}
.sick-banner .inj{border:0;background:linear-gradient(135deg,#ff7a7a,#e74c3c);color:#fff;font-weight:700;font-size:13px;padding:8px 14px;border-radius:12px;cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.2);}
.pet{position:absolute;bottom:18%;left:0;width:139px;height:119px;z-index:40;pointer-events:none;will-change:transform;}
.flip{position:absolute;inset:0;transform-origin:50% 100%;will-change:transform;}
.pet .sp{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 6px 4px rgba(0,0,0,.2));will-change:transform;}
.pet.walking .sp{animation:pb .5s ease-in-out infinite;}
.pet.blissing .sp{animation:pbl .9s ease-in-out infinite;}
.pet.sick .sp{filter:grayscale(.8) brightness(.92) drop-shadow(0 6px 4px rgba(0,0,0,.2));}
@keyframes pb{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes pbl{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-3px) scale(1.04)}}
.bubble{position:absolute;top:-46px;left:50%;transform:translateX(-50%);background:#fff;border:2px solid #ffb75e;border-radius:18px;padding:5px 11px;font-size:12px;font-weight:600;box-shadow:0 2px 6px rgba(0,0,0,.12);white-space:nowrap;z-index:20;opacity:0;transition:opacity .2s;display:flex;align-items:center;gap:4px;}
.bubble.show{opacity:1;}
.bubble::after{content:"";position:absolute;bottom:-8px;left:50%;transform:translateX(-50%);border:7px solid transparent;border-top-color:#ffb75e;border-bottom:0;}
/* 宠物对话气泡：允许自动换行、限制最大宽度，长文案不再超出屏幕（多行显示） */
#petBubble{white-space:normal;width:max-content;max-width:220px;text-align:center;line-height:1.4;word-break:break-word;overflow-wrap:anywhere;padding:7px 12px;top:-54px;}
.actions{position:absolute;left:0;right:0;bottom:0;z-index:30;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:linear-gradient(to top,rgba(255,255,255,.97),rgba(255,255,255,.55));display:grid;grid-template-columns:repeat(5,1fr);gap:5px;}
.act{border:0;background:#fff;border-radius:14px;padding:6px 2px;box-shadow:0 2px 6px rgba(0,0,0,.1);display:flex;flex-direction:row;align-items:center;justify-content:center;gap:4px;cursor:pointer;color:#5a3a1a;font-weight:700;font-size:11px;position:relative;text-decoration:none;}
.act:active{transform:scale(.94);}
.act .ic{font-size:18px;line-height:1;}

/* 宠物商城悬浮按钮：移出底部 action bar，浮在右上五分之一处 */
.pet-shop-fab{
  position:absolute;right:14px;top:20%;z-index:40;
  width:60px;height:60px;border-radius:50%;border:3px solid #fff;
  background:linear-gradient(135deg,#FFD56B 0%,#FF8C42 60%,#FF6B6B 100%);
  color:#fff;cursor:pointer;font-family:inherit;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;
  box-shadow:0 5px 14px rgba(255,140,66,.45),0 2px 4px rgba(0,0,0,.18),inset 0 -2px 4px rgba(0,0,0,.08);
  animation:shopFabPulse 2.6s ease-in-out infinite;
  transition:transform .15s;
}
.pet-shop-fab:active{transform:scale(.92);}
.pet-shop-fab .ic{font-size:24px;line-height:1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.2));}
.pet-shop-fab em{font-style:normal;font-size:10px;font-weight:800;margin-top:1px;letter-spacing:.5px;text-shadow:0 1px 1px rgba(0,0,0,.25);}
@keyframes shopFabPulse{
  0%,100%{box-shadow:0 5px 14px rgba(255,140,66,.45),0 2px 4px rgba(0,0,0,.18),inset 0 -2px 4px rgba(0,0,0,.08);}
  50%   {box-shadow:0 5px 18px rgba(255,140,66,.70),0 2px 4px rgba(0,0,0,.18),inset 0 -2px 4px rgba(0,0,0,.08),0 0 0 6px rgba(255,213,107,.18);}
}
@media (max-height:560px){ .pet-shop-fab{top:96px;width:52px;height:52px;} .pet-shop-fab .ic{font-size:20px;} }
.act .badge{position:absolute;top:-4px;right:2px;background:#e74c3c;color:#fff;font-size:9px;font-weight:800;border-radius:9px;padding:1px 5px;line-height:1.4;}
.act .badge.hide{display:none;}
.heart{position:absolute;font-size:22px;pointer-events:none;z-index:25;animation:hf 1.2s ease-out forwards;}
@keyframes hf{0%{transform:translateY(0) scale(.5);opacity:0}30%{opacity:1;transform:translateY(-10px) scale(1)}100%{transform:translateY(-50px) scale(.8);opacity:0}}
.modal{position:absolute;inset:0;z-index:50;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.32);}
.modal.show{display:flex;}
.sheet{position:relative;width:74%;max-width:300px;max-height:64%;background:var(--card);border-radius:18px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 12px 30px rgba(0,0,0,.3);}
.sheet .chead{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--track);flex-shrink:0;}
.sheet .chead .ct{font-size:14px;font-weight:800;color:var(--text);}
.sheet .chead .x{border:0;background:#f1ebde;width:28px;height:28px;border-radius:50%;font-size:16px;font-weight:700;cursor:pointer;color:#5a3a1a;line-height:1;display:flex;align-items:center;justify-content:center;}
.sheet .tabs{display:flex;gap:6px;padding:8px 12px 4px;flex-shrink:0;}
.sheet .tabs button{flex:1;padding:8px;border:0;background:#eee;border-radius:11px;font-size:12px;font-weight:700;color:var(--gray);cursor:pointer;}
.sheet .tabs button.active{background:var(--num);color:#fff;}
.shop-body{flex:1;min-height:0;overflow-y:auto;padding:6px 12px 20px;}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;}
.it{background:var(--card);border-radius:12px;padding:7px 3px;text-align:center;border:2px solid transparent;cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.1);min-width:0;overflow:hidden;}
.it.bought{border-color:#5dd55d;} .it.equipped{border-color:var(--spk);background:#fff7e6;}
.it .ic{font-size:23px;line-height:1;margin-bottom:3px;height:34px;display:flex;align-items:center;justify-content:center;}
.it .ic.pic{height:50px;overflow:hidden;} .it .ic.pic img{width:100%;height:50px;object-fit:cover;}
.it .ic.pic .shopimg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.15));}
.cicon .ic.pic img{width:42px;height:42px;}              /* 二次确认弹窗里的图标略小 */
.it .ic.thumb{font-size:0;width:100%;max-width:62px;height:40px;border-radius:6px;background-size:cover;background-position:center;margin:0 auto;}
.grid3 img{max-width:100%;max-height:50px;object-fit:contain;}
.it .nm{font-size:10px;font-weight:700;color:var(--text);} .it .ct{font-size:9px;color:#a06400;margin-top:2px;}
/* 商店装饰分类标题（按 slot 分组展示） */
.shop-cat{margin:12px 2px 5px;padding:5px 2px 4px;font-size:13px;font-weight:800;color:var(--num);border-bottom:2px solid var(--num);letter-spacing:.5px;}
.confirm{position:absolute;inset:0;z-index:70;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.38);}
.confirm.show{display:flex;}
.confirm .cbox{background:#fff;border-radius:18px;padding:18px 22px 16px;text-align:center;max-width:230px;box-shadow:0 12px 30px rgba(0,0,0,.3);}
.confirm .ci{font-size:36px;line-height:1;}
.confirm .ci .cimg{width:56px;height:56px;object-fit:contain;vertical-align:middle;}
.confirm .cn{font-size:15px;font-weight:800;color:var(--text);margin-top:8px;}
.confirm .cc{font-size:13px;font-weight:700;color:#a06400;margin-top:4px;}
.confirm .btns{display:flex;gap:18px;justify-content:center;margin-top:14px;}
.confirm .btns button{width:48px;height:48px;border-radius:50%;border:0;font-size:22px;font-weight:800;color:#fff;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center;}
.confirm .yes{background:linear-gradient(135deg,#6fdc6f,#3cb043);}
.confirm .no{background:linear-gradient(135deg,#ff8a8a,#e74c3c);}
/* ===================== 开心农场 ===================== */
/* ====== 开心农场 V4：7 张状态背景图，地块直接画在背景上 ====== */
.farm-wrap{position:relative;margin:0 auto;flex:1;min-height:0;align-self:center;width:auto;max-width:100%;aspect-ratio:881/1920;overflow:hidden;background-color:#7fb84e;background-position:center center;background-size:100% 100%;background-repeat:no-repeat;transition:background-image .2s;}
.farm-hud{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;position:sticky;top:0;z-index:30;margin:8px 10px;padding:8px 10px;background:linear-gradient(180deg,rgba(255,255,255,.95),rgba(255,249,230,.92));border-radius:16px;box-shadow:0 4px 12px rgba(80,50,10,.18),inset 0 1px 0 rgba(255,255,255,.8);border:2px solid rgba(255,255,255,.6);}
.farm-hud .chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:800;color:#5a3a1a;background:linear-gradient(180deg,#fff8dc,#f3ecde);border-radius:12px;padding:5px 10px;box-shadow:0 2px 4px rgba(90,58,26,.1);border:1px solid rgba(180,150,100,.25);}
.farm-hud .chip b{color:var(--num);}
.farm-toolbar{display:flex;gap:10px;padding:6px 14px 12px;position:relative;z-index:20;}
.ftb{flex:1;border:0;border-radius:18px;padding:10px 2px 12px;font-size:12px;font-weight:800;color:#fff;background:linear-gradient(180deg,#8fd96f,#4caf50);box-shadow:0 5px 12px rgba(60,140,60,.32),inset 0 -2px 0 rgba(0,0,0,.1);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;line-height:1;transition:transform .1s,box-shadow .1s;position:relative;overflow:hidden;}
.ftb::after{content:'';position:absolute;top:0;left:0;right:0;height:45%;background:linear-gradient(180deg,rgba(255,255,255,.35),rgba(255,255,255,0));pointer-events:none;}
.ftb .fi{font-size:22px;line-height:1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.2));}
.ftb:active{transform:translateY(2px) scale(.98);box-shadow:0 2px 6px rgba(60,140,60,.28);}
.ftb.craft{background:linear-gradient(180deg,#ffb74d,#f57c00);box-shadow:0 5px 12px rgba(220,120,0,.32);}
.ftb.bag{background:linear-gradient(180deg,#b39ddb,#7e57c2);box-shadow:0 5px 12px rgba(120,80,180,.32);}
.ftb.help{background:linear-gradient(180deg,#b0bec5,#78909c);box-shadow:0 5px 12px rgba(80,100,110,.32);}
/* 圆形点击区：覆盖在裁剪后的背景图上，每个圆对准一个菱形地块中心（v10 isometric diamond） */
.farm-plots{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;padding:0;}
/* 每个地块 = 绝对定位的圆形按钮，以菱形中心为圆心 */
.fplot{position:absolute;width:11%;aspect-ratio:1/1;border-radius:50%;background:transparent;border:none;box-shadow:none;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;overflow:visible;transform:translate(-50%,-50%);transition:transform .12s,filter .12s;}
.fplot:active{transform:translate(-50%,-50%) scale(.955);}
/* 地块背景完全交给背景图，前端地块容器透明。空地块无需加号，绿色耕地已在背景上。 */
/* 木牌开垦按钮：只在第一个未开垦地块显示 */
.fp-sign{position:absolute;top:-62%;left:50%;width:64%;max-width:86px;z-index:12;pointer-events:none;filter:drop-shadow(0 3px 3px rgba(0,0,0,.25));animation:signBob 1.8s ease-in-out infinite;}
.fp-sign img{width:100%;height:auto;display:block;}
.fp-sign .s-cost{position:absolute;top:55%;left:0;right:0;text-align:center;font-size:9px;font-weight:800;color:#5a3a1a;text-shadow:0 1px 0 rgba(255,255,255,.6);}
.fp-sign .s-text{position:absolute;top:26%;left:0;right:0;text-align:center;font-size:11px;font-weight:800;color:#5a3a1a;text-shadow:0 1px 0 rgba(255,255,255,.6);}
@keyframes signBob{0%,100%{transform:translateX(-50%) translateY(0);}50%{transform:translateX(-50%) translateY(-4px);}}
.seed-mound{display:none;}
@keyframes growin{from{transform:translate(-50%,-58%) scale(.4);opacity:.4}to{transform:translate(-50%,-58%) scale(1);opacity:1}}
.cropimg{position:absolute;top:50%;left:50%;transform:translate(-50%,-58%);width:96%;height:96%;object-fit:contain;z-index:2;filter:drop-shadow(0 3px 3px rgba(0,0,0,.25));animation:growin .45s ease;pointer-events:none;}
.cropimg.seed{width:110%;height:110%;transform:translate(-50%,-66%);}
.cropimg.sprout{width:125%;height:125%;transform:translate(-50%,-52%);}
.cropimg.growth{width:145%;height:145%;transform:translate(-50%,-56%);}
.cropimg.mature{width:134%;height:134%;transform:translate(-50%,-60%);}
/* 成熟地块发光提示 */
.fplot.ready .cropimg{filter:drop-shadow(0 0 10px #ffe08a) drop-shadow(0 3px 3px rgba(0,0,0,.25));animation:growin .45s ease, ripeBob 1.4s ease-in-out infinite;}
@keyframes ripeBob{0%,100%{transform:translate(-50%,-60%) scale(1);}50%{transform:translate(-50%,-62%) scale(1.04);}}
.crop-emoji{position:absolute;top:50%;left:50%;transform:translate(-50%,-58%);line-height:1;z-index:2;filter:drop-shadow(0 3px 3px rgba(0,0,0,.25));animation:growin .45s ease;}
.crop-emoji.s-seed{font-size:32px;} .crop-emoji.s-sprout{font-size:42px;} .crop-emoji.s-growth{font-size:54px;} .crop-emoji.s-mature{font-size:66px;animation:bob 1.8s ease-in-out infinite;}
@keyframes bob{0%,100%{transform:translate(-50%,-58%);}50%{transform:translate(-50%,-62%);}}
.fp-name{position:absolute;bottom:6%;left:50%;transform:translateX(-50%);font-size:10px;font-weight:800;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.55),0 0 3px rgba(0,0,0,.35);z-index:3;white-space:nowrap;background:rgba(90,58,26,.5);border-radius:10px;padding:2px 6px;}
.fp-ripe{color:#ff7a18;text-shadow:0 1px 2px rgba(120,40,0,.6),0 0 4px rgba(255,150,0,.5);}
/* 已施肥徽章保留，水滴浇完即隐藏 */
.bf{position:absolute;bottom:2px;right:4px;font-size:12px;z-index:4;background:rgba(255,255,255,.9);border-radius:8px;padding:1px 3px;line-height:1.2;box-shadow:0 1px 3px rgba(0,0,0,.15);}
.bw{display:none;}
/* 捉虫 / 除草：地块上的两个独立动作按钮 */
.fp-acts{position:absolute;left:0;right:0;bottom:-10px;display:flex;justify-content:center;gap:4px;flex-wrap:wrap;z-index:8;padding:0 4px;}
.fp-act{font-family:inherit;font-size:10px;font-weight:800;line-height:1;border:none;cursor:pointer;border-radius:10px;padding:5px 7px;display:inline-flex;align-items:center;gap:2px;box-shadow:0 2px 5px rgba(0,0,0,.22);animation:wiggle 1.1s infinite;}
.fp-act em{font-style:normal;background:rgba(255,255,255,.75);border-radius:6px;padding:0 3px;margin-left:1px;}
.fp-act.act-bug{background:linear-gradient(180deg,#ffd3a1,#ffb066);color:#7a3b00;}
.fp-act.act-weed{background:linear-gradient(180deg,#c9f0b6,#8fdc72);color:#25611a;}
.fp-act:active{transform:scale(.92);}
@keyframes wiggle{0%,100%{transform:rotate(-10deg);}50%{transform:rotate(10deg);}}
.fp-hint{position:absolute;top:14%;left:50%;transform:translateX(-50%);font-size:10px;background:#fff3c4;color:#a06400;border-radius:9px;padding:2px 6px;font-weight:800;z-index:4;white-space:nowrap;box-shadow:0 2px 4px rgba(0,0,0,.12);}
.farm-tip{position:relative;z-index:20;text-align:center;font-size:12px;color:#fff;font-weight:800;padding:12px 16px 6px;text-shadow:0 1px 3px rgba(0,0,0,.35),0 0 4px rgba(0,0,0,.25);}
/* 种子选择 / 田块菜单 弹层专属 */
.farm-picker .sheet{max-width:320px;border-radius:22px;background:linear-gradient(180deg,#fffdf5,#fff8e1);}
.fp-t{font-size:15px;font-weight:800;color:var(--num);padding:12px 14px 8px;text-align:center;}
.fp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:4px 14px 8px;}
.fp-cancel{margin:4px 14px 14px;text-align:center;background:var(--track);color:var(--text);font-weight:800;font-size:14px;border-radius:14px;padding:11px;cursor:pointer;}
.fp-cancel:active{transform:scale(.98);}
.fp-item{background:var(--card);border:2px solid var(--track);border-radius:14px;padding:12px 6px;display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center;cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.1);transition:transform .1s,border-color .1s;}
.fp-item:active{transform:scale(.96);border-color:var(--accent);}
.fp-item span{font-size:12px;font-weight:800;color:var(--text);}
.fp-item small{font-size:11px;color:#a06400;font-weight:700;}
.fp-item.disabled{opacity:.5;cursor:default;}
.fp-item.cancel{color:var(--gray);background:var(--track);}
/* 商店/背包/玩法 复用 .modal/.sheet 专属样式 */
.shop-sec{margin-top:6px;}
.shop-sec .st{font-size:12px;font-weight:800;color:var(--num);margin:10px 2px 6px;}
.it.wide{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;text-align:left;padding:12px;}
.it.wide .ic{margin:0;}
.it.disabled{opacity:.5;cursor:default;}
.empty-tip{padding:26px 14px;text-align:center;color:var(--gray);font-size:13px;line-height:1.6;}
.help-body{padding:4px 14px 18px;}
.help-body p{font-size:13px;line-height:1.6;color:var(--text);margin:9px 0;}
.help-body b{color:var(--num);}
/* 加工产品小图 */
.foodimg{width:42px;height:42px;object-fit:contain;filter:drop-shadow(0 2px 2px rgba(0,0,0,.15));}

/* ===== 学完当天：完成页 / 解锁下一期任务页 =====
   （原来这两个页面完全没有样式，靠浏览器默认渲染，所以看起来是"没做过"的） */
.done-card,.unlock-card{
  background:var(--card);border-radius:20px;padding:26px 20px 20px;margin:14px 4px;
  text-align:center;box-shadow:0 6px 20px rgba(106,27,154,.10);border:1px solid var(--track);
}
.done-emoji,.unlock-emoji{font-size:56px;line-height:1;margin-bottom:10px;}
.done-emoji{animation:donePop .5s cubic-bezier(.34,1.56,.64,1);}
@keyframes donePop{0%{transform:scale(.4);opacity:0;}100%{transform:scale(1);opacity:1;}}
.done-title,.unlock-title{font-size:19px;font-weight:800;color:var(--num);margin-bottom:8px;}
.done-line{
  display:inline-block;font-size:14px;font-weight:700;color:#8a5a00;
  background:linear-gradient(135deg,#FFF6DA,#FFE9B8);border-radius:14px;padding:8px 16px;margin-bottom:12px;
}
.done-tip,.unlock-tip{font-size:13.5px;line-height:1.7;color:var(--text);margin-bottom:16px;}
.unlock-sub{font-size:12.5px;color:var(--gray);}
.unlock-tip b{color:var(--num);}
/* 进度小条：已完成 N 期 · 还剩 M 期 */
.unlock-prog{
  display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;
  background:var(--main-bg);border-radius:12px;padding:7px 14px;margin-bottom:14px;
}
.unlock-prog .up-done{color:var(--num);}
.unlock-prog .up-sep{color:var(--track);}
.unlock-prog .up-left{color:var(--gray);}
.done-card .st,.unlock-card .st{display:block;width:100%;margin-top:10px;}
.done-card .st.big,.unlock-card .st.big{font-size:16.5px;padding:15px;}
/* ===== 给狗狗起名 / 领养弹层 ===== */
.name-sheet{max-width:320px;}
.name-body{padding:16px 14px;display:flex;flex-direction:column;gap:12px;align-items:center;}
.nm-prompt{font-size:14px;color:var(--num);font-weight:700;text-align:center;line-height:1.5;}
.nm-input{width:100%;max-width:240px;padding:10px 12px;border:2px solid var(--track);border-radius:12px;font-size:16px;text-align:center;color:var(--text);outline:none;}
.nm-input:focus{border-color:var(--num);}
.name-sheet .btns{display:flex;gap:10px;justify-content:center;}
.name-sheet .btns .yes{flex:1;max-width:120px;background:linear-gradient(135deg,#9D83FF,#6A1B9A);color:#fff;border:0;font-weight:800;font-size:15px;padding:10px;border-radius:12px;cursor:pointer;box-shadow:0 3px 8px rgba(106,27,154,.25);}
.name-sheet .btns .no{flex:1;max-width:120px;background:#f0e9ff;color:var(--num);border:0;font-weight:800;font-size:15px;padding:10px;border-radius:12px;cursor:pointer;}
