:root{
  /* 暗色霓虹基底 */
  --bg:#0B0D1A;
  --bg-2:#11142A;
  --surface:rgba(255,255,255,.055);
  --surface-2:rgba(255,255,255,.09);
  --surface-solid:#171A33;
  --ink:#EAECEF;            /* 深底主文字：柔和 off-white，不刺眼 */
  --ink-soft:#9AA3BE;       /* 次要文字 */
  --ink-dim:#6B7392;
  /* 霓虹三色 + 小橘橙 */
  --cyan:#34E7E0;
  --purple:#A06BFF;
  --pink:#FF5C8A;
  --orange:#FF8A3D;         /* 小橘老师 */
  --gold:#FFC857;
  --green:#3DDC97;
  --red:#FF6B6B;
  --blue:#5AA9FF;
  --line:rgba(255,255,255,.10);
  --line-soft:rgba(255,255,255,.06);
  --glass:blur(16px) saturate(140%);
  --shadow:0 18px 50px rgba(0,0,0,.55);
  --shadow-sm:0 8px 22px rgba(0,0,0,.40);
  --radius:18px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;}
html,body{height:100%;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  background:radial-gradient(1200px 700px at 50% -10%,#1A1F3D 0%,#0B0D1A 60%);
  color:var(--ink);display:flex;justify-content:center;align-items:stretch;min-height:100vh;
  -webkit-font-smoothing:antialiased;
}
.device{
  width:100%;max-width:460px;min-height:100vh;
  display:flex;flex-direction:column;position:relative;overflow:hidden;
  background:
    radial-gradient(820px 460px at 12% -8%, rgba(52,231,224,.16), transparent 60%),
    radial-gradient(760px 460px at 108% 8%, rgba(160,107,255,.20), transparent 55%),
    radial-gradient(680px 540px at 52% 116%, rgba(255,92,138,.12), transparent 60%),
    linear-gradient(180deg,#0E1124 0%,#0A0C18 100%);
  box-shadow:0 0 80px rgba(0,0,0,.6);
}
/* 细网格层（赛博感，极淡） */
.device::before{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:0;opacity:.5;
  background-image:
    linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);
  background-size:34px 34px;
  -webkit-mask-image:radial-gradient(120% 90% at 50% 0%,#000 35%,transparent 80%);
          mask-image:radial-gradient(120% 90% at 50% 0%,#000 35%,transparent 80%);
}
/* 流动光晕 */
.device::after{
  content:"";position:absolute;inset:-30% -30% auto -30%;height:60%;pointer-events:none;z-index:0;
  background:radial-gradient(closest-side,rgba(52,231,224,.18),transparent);
  filter:blur(20px);animation:drift 14s ease-in-out infinite;
}
@keyframes drift{0%,100%{transform:translateX(-8%) translateY(0);}50%{transform:translateX(10%) translateY(10px);}}

/* 顶部栏 */
.topbar{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 8px;z-index:5;position:relative;}
.brand{display:flex;align-items:center;gap:9px;}
.brand-logo{width:36px;height:36px;display:inline-block;border-radius:50%;overflow:hidden;
  box-shadow:0 0 0 2px rgba(255,138,61,.5),0 0 18px rgba(255,138,61,.55);animation:floaty 3.6s ease-in-out infinite;}
@keyframes floaty{0%,100%{transform:translateY(0);}50%{transform:translateY(-4px);}}
.brand-name{font-weight:900;font-size:19px;letter-spacing:1px;
  background:linear-gradient(90deg,#FFB36B,#FF8A3D 40%,#FF5C8A);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.streak{background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:5px 13px;
  font-weight:800;font-size:13px;color:var(--orange);display:flex;align-items:center;gap:5px;
  box-shadow:0 0 16px rgba(255,138,61,.22);backdrop-filter:var(--glass);-webkit-backdrop-filter:var(--glass);}
.streak .flame{filter:drop-shadow(0 0 5px rgba(255,138,61,.8));}

/* 专注计时条：连续使用才计时，切走即暂停 */
.focusbar{display:flex;align-items:center;gap:8px;padding:7px 18px;font-size:12px;font-weight:700;
  color:var(--ink-soft);background:linear-gradient(90deg,rgba(52,231,224,.06),rgba(160,107,255,.06));
  border-bottom:1px solid var(--line);z-index:4;position:relative;}
.focusbar .fdot{width:8px;height:8px;border-radius:50%;background:#5a6070;transition:.3s;}
.focusbar .fdot.on{background:#3DDC97;animation:pulse 2s infinite;}
@keyframes pulse{0%,100%{box-shadow:0 0 8px 1px rgba(61,220,151,.5);}50%{box-shadow:0 0 14px 4px rgba(61,220,151,.85);}}
.focusbar .f-state{color:var(--ink);}
.focusbar .f-time{margin-left:auto;color:#34E7E0;font-weight:800;font-variant-numeric:tabular-nums;}
.focusbar .f-sep{opacity:.35;}
.focusbar .f-away{color:var(--orange);}
/* 成长页·今日专注卡 */
.focus-growth{margin:4px 0 14px;}
.fg-card{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);
  border-radius:16px;padding:14px 16px;box-shadow:0 6px 22px -12px rgba(0,0,0,.6);}
.fg-ic{font-size:22px;}
.fg-body{flex:1;}
.fg-t{font-size:12px;color:var(--ink-soft);font-weight:700;}
.fg-v{font-size:20px;font-weight:900;color:#34E7E0;font-variant-numeric:tabular-nums;}
.fg-away{font-size:12px;color:var(--orange);font-weight:700;}

/* 屏幕：各视图自管滚动 */
.screen{flex:1;overflow:hidden;position:relative;display:flex;flex-direction:column;z-index:2;}
.view{display:none;flex:1;overflow-y:auto;padding:6px 18px 92px;position:relative;}
.view.active{display:block;}
.view-chat{flex-direction:column;padding:0;overflow:hidden;}
.view-chat.active{display:flex;}
@keyframes fade{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
.view-map,.view-growth,.view-parent{animation:fade .3s ease;}

/* ---------------- 超景对话 ---------------- */
.chat-log{flex:1;overflow-y:auto;padding:14px 14px 6px;display:flex;flex-direction:column;gap:14px;}
.msg{display:flex;gap:8px;align-items:flex-end;animation:pop .32s cubic-bezier(.2,.9,.3,1.2);}
@keyframes pop{from{opacity:0;transform:translateY(12px) scale(.96);}to{opacity:1;transform:none;}}
.msg-ai{justify-content:flex-start;}
.msg-kid{justify-content:flex-end;}
.ava{width:38px;height:38px;flex:none;border-radius:50%;overflow:hidden;background:var(--surface-solid);
  box-shadow:0 0 0 2px rgba(255,138,61,.45),0 0 14px rgba(255,138,61,.4);}
.bubble{max-width:78%;background:var(--surface);border:1px solid var(--line);border-radius:18px 18px 18px 4px;
  padding:11px 14px;font-size:15px;line-height:1.6;backdrop-filter:var(--glass);-webkit-backdrop-filter:var(--glass);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06);}
.bubble-kid{background:linear-gradient(135deg,#FF8A3D,#FF5C8A);color:#fff;border:none;border-radius:18px 18px 4px 18px;font-weight:600;
  box-shadow:0 8px 22px rgba(255,92,138,.35);}
.card-wrap{width:84%;max-width:320px;animation:rise .4s cubic-bezier(.2,.9,.3,1.15);}
@keyframes rise{from{opacity:0;transform:translateY(18px) scale(.97);}to{opacity:1;transform:none;}}
/* 题目/引导卡（玻璃 + 霓虹光条） */
.q-card{background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.03));
  border:1px solid var(--line);border-radius:18px;padding:16px 16px 18px;
  backdrop-filter:var(--glass);-webkit-backdrop-filter:var(--glass);
  box-shadow:var(--shadow),inset 0 1px 0 rgba(255,255,255,.07);
  position:relative;overflow:hidden;}
.q-card::before{content:"";position:absolute;top:0;left:14px;right:14px;height:2px;border-radius:2px;
  background:linear-gradient(90deg,var(--cyan),var(--purple),var(--pink));opacity:.85;box-shadow:0 0 12px rgba(160,107,255,.6);}
.q-meta{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;}
.q-chip{font-size:11px;font-weight:800;padding:4px 10px;border-radius:99px;background:rgba(255,138,61,.14);color:var(--orange);border:1px solid rgba(255,138,61,.3);}
.q-chip.type{background:rgba(52,231,224,.12);color:var(--cyan);border-color:rgba(52,231,224,.3);}
.q-stem{font-size:16.5px;line-height:1.65;font-weight:700;margin-bottom:6px;color:var(--ink);white-space:pre-line;}
.q-hintline{font-size:13px;color:var(--ink-soft);margin-bottom:14px;line-height:1.6;}
.q-input-row{display:flex;gap:8px;align-items:center;margin:10px 0 12px;}
.q-input{flex:1;border:2px solid var(--line);border-radius:14px;padding:12px;font-size:19px;font-weight:800;text-align:center;
  outline:none;transition:border .2s,box-shadow .2s;min-width:0;background:rgba(0,0,0,.25);color:var(--ink);}
.q-input:focus{border-color:var(--cyan);box-shadow:0 0 0 4px rgba(52,231,224,.18);}
.q-unit{font-size:15px;color:var(--ink-soft);font-weight:700;flex:none;}
.btn-submit{width:100%;border:none;border-radius:14px;padding:13px;
  background:linear-gradient(135deg,#FF8A3D,#FF5C8A);color:#fff;font-weight:900;font-size:15.5px;cursor:pointer;
  box-shadow:0 10px 24px rgba(255,92,138,.4);transition:transform .12s,box-shadow .2s;letter-spacing:.5px;}
.btn-submit:active{transform:scale(.98);}
.btn-submit:hover{box-shadow:0 12px 30px rgba(255,92,138,.55);}
.btn-skip{background:var(--surface);color:var(--ink-soft);border:2px solid var(--line);border-radius:14px;padding:13px;
  font-weight:700;font-size:14px;cursor:pointer;flex:none;width:110px;backdrop-filter:var(--glass);-webkit-backdrop-filter:var(--glass);}
.fb-choices{display:flex;flex-direction:column;gap:8px;margin:8px 0;}
.fb-choice{border:2px solid var(--line);border-radius:14px;padding:11px 13px;font-size:14.5px;font-weight:600;
  background:var(--surface);cursor:pointer;text-align:left;transition:all .15s;color:var(--ink);backdrop-filter:var(--glass);-webkit-backdrop-filter:var(--glass);}
.fb-choice:hover{border-color:rgba(52,231,224,.45);}
.fb-choice:active{transform:scale(.98);}
.fb-choice.sel{border-color:var(--cyan);background:rgba(52,231,224,.12);box-shadow:0 0 16px rgba(52,231,224,.25);}
.fb-textinput{width:100%;border:2px solid var(--line);border-radius:14px;padding:11px;font-size:14.5px;outline:none;resize:none;
  font-family:inherit;background:rgba(0,0,0,.25);color:var(--ink);}
.fb-textinput:focus{border-color:var(--cyan);box-shadow:0 0 0 4px rgba(52,231,224,.18);}
.fb-actions{display:flex;gap:10px;margin-top:10px;}
.solution{background:rgba(255,255,255,.05);border:1px solid var(--line);border-left:3px solid var(--green);border-radius:14px;
  padding:12px;margin:8px 0;font-size:13.5px;line-height:1.65;color:var(--ink);}
.solution b{color:var(--green);}
.map-grow{background:linear-gradient(135deg,rgba(52,231,224,.16),rgba(160,107,255,.16));border:1px solid rgba(52,231,224,.35);
  border-radius:16px;padding:14px;display:flex;align-items:center;gap:12px;box-shadow:0 0 22px rgba(52,231,224,.18);}
.map-grow .mg-ic{font-size:30px;filter:drop-shadow(0 0 8px rgba(52,231,224,.6));}
.map-grow .mg-txt b{color:var(--cyan);}
.badge-grow{background:linear-gradient(160deg,rgba(255,200,87,.18),rgba(255,138,61,.16));border:2px solid rgba(255,200,87,.5);
  border-radius:16px;padding:14px;display:flex;align-items:center;gap:12px;box-shadow:0 0 22px rgba(255,200,87,.22);}
.badge-grow .bg-ic{font-size:32px;filter:drop-shadow(0 0 8px rgba(255,200,87,.6));}
.badge-grow .bg-name{font-weight:800;color:var(--gold);}
.done-grow{background:linear-gradient(135deg,#FF8A3D,#FF5C8A);color:#fff;border-radius:16px;padding:14px;font-size:14px;line-height:1.6;
  box-shadow:0 10px 28px rgba(255,92,138,.4);position:relative;overflow:hidden;}
.done-grow::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.25) 50%,transparent 70%);
  transform:translateX(-120%);animation:sheen 2.4s ease-in-out .3s infinite;}
@keyframes sheen{to{transform:translateX(120%);}}
.done-stats{display:flex;gap:10px;margin-top:10px;}
.done-stat{background:rgba(255,255,255,.16);border-radius:12px;padding:8px 12px;text-align:center;flex:1;}
.done-stat .n{font-size:20px;font-weight:900;}
.done-stat .l{font-size:11px;opacity:.9;}

/* 输入区 */
.chat-input{flex:none;background:rgba(10,12,24,.6);border-top:1px solid var(--line);padding:10px 12px 84px;
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);position:relative;z-index:3;}
.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:8px;scrollbar-width:none;}
.chips::-webkit-scrollbar{display:none;}
.chip{flex:none;background:var(--surface);border:1px solid var(--line);border-radius:99px;padding:7px 13px;font-size:13px;
  font-weight:700;color:var(--ink-soft);cursor:pointer;white-space:nowrap;backdrop-filter:var(--glass);-webkit-backdrop-filter:var(--glass);
  transition:all .15s;}
.chip:hover{color:var(--cyan);border-color:rgba(52,231,224,.4);box-shadow:0 0 14px rgba(52,231,224,.18);}
.chip:active{transform:scale(.96);}
.input-row{display:flex;gap:8px;}
.input-row input{flex:1;border:2px solid var(--line);border-radius:14px;padding:12px 14px;font-size:15px;outline:none;
  font-family:inherit;background:rgba(0,0,0,.28);color:var(--ink);transition:border .2s,box-shadow .2s;}
.input-row input:focus{border-color:var(--purple);box-shadow:0 0 0 4px rgba(160,107,255,.18);}
.input-row input::placeholder{color:var(--ink-dim);}
.input-row button{border:none;background:linear-gradient(135deg,#A06BFF,#5AA9FF);color:#fff;font-weight:900;border-radius:14px;
  padding:0 18px;font-size:15px;cursor:pointer;flex:none;box-shadow:0 8px 20px rgba(160,107,255,.4);transition:transform .12s;}
.input-row button:active{transform:scale(.97);}

/* ---------------- 视图标题 / 地图 / 成长 / 家长（数据视图） ---------------- */
.view-title{font-size:22px;font-weight:900;margin:8px 0 4px;letter-spacing:.5px;
  background:linear-gradient(90deg,#EAECEF,#9AA3BE);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.view-sub{color:var(--ink-soft);font-size:13px;margin-bottom:16px;}
.map-wrap{display:flex;flex-direction:column;gap:18px;}
.chapter{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:14px 14px 16px;
  backdrop-filter:var(--glass);-webkit-backdrop-filter:var(--glass);box-shadow:var(--shadow-sm);}
.chapter h4{font-size:15px;margin-bottom:4px;display:flex;align-items:center;gap:8px;font-weight:800;color:var(--ink);}
.chapter .sem{font-size:11px;color:var(--ink-soft);font-weight:600;}
.nodes{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px;}
.node{position:relative;width:84px;height:84px;border-radius:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:6px;cursor:pointer;transition:transform .15s,box-shadow .15s;
  border:2px solid var(--line);background:rgba(255,255,255,.04);--nc:#FF8A3D;backdrop-filter:var(--glass);-webkit-backdrop-filter:var(--glass);}
.node:active{transform:scale(.95);}
.node .nicon{font-size:22px;filter:drop-shadow(0 0 6px rgba(255,255,255,.25));}
.node .nname{font-size:11.5px;font-weight:700;margin-top:4px;line-height:1.15;color:var(--ink);}
.node.locked{opacity:.45;filter:grayscale(.5);}
.node.locked .nicon{filter:grayscale(1);}
.node.available{border-color:var(--nc);box-shadow:0 0 0 4px color-mix(in srgb,var(--nc) 22%,transparent),0 0 22px color-mix(in srgb,var(--nc) 45%,transparent);}
.node.mastered{background:linear-gradient(135deg,color-mix(in srgb,var(--nc) 42%,#1A1E33),color-mix(in srgb,var(--nc) 20%,#1A1E33));
  border-color:var(--nc);color:#fff;box-shadow:0 0 22px color-mix(in srgb,var(--nc) 55%,transparent);}
.node.mastered .nicon::after{content:" ✦";filter:drop-shadow(0 0 6px var(--nc));}
.node.mastered .nname{color:#fff;}
.node .nprog{position:absolute;bottom:5px;font-size:9px;color:var(--ink-soft);}
.badges-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:22px;}
.badge{width:96px;background:var(--surface);border-radius:16px;padding:12px 6px;text-align:center;box-shadow:var(--shadow-sm);
  border:2px solid var(--line);backdrop-filter:var(--glass);-webkit-backdrop-filter:var(--glass);transition:transform .15s;}
.badge:active{transform:scale(.96);}
.badge.earned{border-color:var(--gold);background:linear-gradient(160deg,rgba(255,200,87,.18),rgba(255,138,61,.12));
  box-shadow:0 0 22px rgba(255,200,87,.25);}
.badge .bicon{font-size:28px;filter:grayscale(1);opacity:.4;}
.badge.earned .bicon{filter:none;opacity:1;drop-shadow:0 0 8px rgba(255,200,87,.6);}
.badge .bname{font-size:12px;font-weight:800;margin-top:4px;color:var(--ink);}
.badge.earned .bname{color:var(--gold);}
.badge .bdesc{font-size:10px;color:var(--ink-soft);margin-top:2px;line-height:1.2;}
.growth-h{font-size:16px;font-weight:800;margin-bottom:10px;color:var(--ink);}
.timeline{position:relative;padding-left:22px;}
.timeline::before{content:"";position:absolute;left:7px;top:4px;bottom:4px;width:2px;
  background:linear-gradient(180deg,var(--cyan),var(--purple));}
.tl-item{position:relative;margin-bottom:16px;}
.tl-item::before{content:"";position:absolute;left:-19px;top:4px;width:12px;height:12px;border-radius:50%;
  background:var(--coral,#FF8A3D);box-shadow:0 0 0 3px rgba(11,13,26,.9),0 0 12px var(--coral,#FF8A3D);}
.tl-item.win::before{background:var(--green);box-shadow:0 0 0 3px rgba(11,13,26,.9),0 0 12px var(--green);}
.tl-item .tl-date{font-size:11px;color:var(--ink-soft);}
.tl-item .tl-text{font-size:14px;font-weight:600;margin-top:2px;color:var(--ink);}
.parent-banner{display:flex;align-items:center;justify-content:space-between;background:var(--surface);border:1px solid var(--line);
  border-radius:14px;padding:10px 14px;margin-bottom:14px;backdrop-filter:var(--glass);-webkit-backdrop-filter:var(--glass);}
.parent-banner span{font-weight:800;color:var(--ink);}
.btn-ghost{background:var(--surface);color:var(--cyan);border:1px solid rgba(52,231,224,.4);border-radius:10px;padding:6px 12px;
  font-weight:700;font-size:12.5px;cursor:pointer;transition:all .15s;}
.btn-ghost:hover{box-shadow:0 0 14px rgba(52,231,224,.25);}
.parent-card{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:16px;box-shadow:var(--shadow-sm);
  margin-bottom:14px;backdrop-filter:var(--glass);-webkit-backdrop-filter:var(--glass);}
.parent-card h3{font-size:15px;margin-bottom:8px;color:var(--ink);}
.parent-summary{font-size:14px;line-height:1.6;color:var(--ink);}
.talk-list{list-style:none;}
.talk-list li{font-size:13.5px;padding:9px 0;border-bottom:1px solid var(--line-soft);line-height:1.5;color:var(--ink);}
.talk-list li:last-child{border-bottom:none;}
.talk-list b{color:var(--cyan);}
.weekly-report{font-size:14px;line-height:1.7;color:var(--ink);}
.weekly-report .wk-block{margin-bottom:10px;}
.weekly-report .wk-label{font-weight:800;color:var(--cyan);}
.parent-note{font-size:12px;color:var(--ink-soft);line-height:1.6;margin-top:4px;background:rgba(160,107,255,.1);
  border:1px solid rgba(160,107,255,.25);border-radius:12px;padding:12px;}

/* 底部导航 */
.tabbar{position:absolute;bottom:0;left:0;right:0;max-width:460px;margin:0 auto;display:flex;
  background:rgba(10,12,24,.72);border-top:1px solid var(--line);
  box-shadow:0 -8px 26px rgba(0,0,0,.5);padding:8px 6px calc(8px + env(safe-area-inset-bottom));z-index:20;
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);}
.tab{flex:1;background:none;border:none;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;
  cursor:pointer;color:var(--ink-soft);font-size:11px;font-weight:700;transition:color .2s;}
.tab .ic{font-size:20px;filter:grayscale(.6);transition:transform .2s,filter .2s;}
.tab.active{color:var(--cyan);}
.tab.active .ic{filter:none;transform:translateY(-2px);
  text-shadow:0 0 14px rgba(52,231,224,.8);}

/* 特效：霓虹粒子（答对庆祝） */
.fx-layer{position:fixed;inset:0;pointer-events:none;z-index:80;overflow:hidden;}
.confetti{position:absolute;width:9px;height:14px;border-radius:2px;top:-20px;animation:fall linear forwards;
  box-shadow:0 0 8px currentColor;}
@keyframes fall{to{transform:translateY(105vh) rotate(540deg);opacity:.9;}}
.float{animation:float 3s ease-in-out infinite;}
@keyframes float{0%,100%{transform:translateY(0);}50%{transform:translateY(-6px);}}

/* 地图：科目切换 tab */
.subj-tabs{display:flex;gap:8px;margin-bottom:14px;background:var(--surface);border:1px solid var(--line);
  border-radius:14px;padding:6px;backdrop-filter:var(--glass);-webkit-backdrop-filter:var(--glass);box-shadow:var(--shadow-sm);}
.subj-tab{flex:1;border:none;background:transparent;border-radius:10px;padding:9px 4px;font-size:13.5px;font-weight:800;
  color:var(--ink-soft);cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;}
.subj-tab.active{background:var(--sc,#FF8A3D);color:#fff;box-shadow:0 6px 16px -4px var(--sc,#FF8A3D),0 0 18px color-mix(in srgb,var(--sc,#FF8A3D) 40%,transparent);}
.chapter .sem.lit{color:var(--green);font-weight:700;margin-left:auto;}

/* 地图节点按科目配色（--nc 由 JS 注入） */
.node{--nc:#FF8A3D;}
.node.available{border-color:var(--nc);box-shadow:0 4px 16px -5px var(--nc);}
.node.available .nname{color:var(--ink);}
.node.mastered .nprog{color:#fff;}

/* ---------------- 常驻陪伴小橘（页宠） ---------------- */
.pet{position:absolute;right:12px;bottom:198px;z-index:18;display:flex;flex-direction:column;
  align-items:flex-end;gap:6px;pointer-events:none;}
.pet-cat{width:60px;height:60px;cursor:pointer;pointer-events:auto;
  filter:drop-shadow(0 0 14px rgba(255,138,61,.6));animation:floaty 3.4s ease-in-out infinite;transition:transform .12s;}
.pet-cat:active{transform:scale(.9);}
.pet-cat.pet-pop{animation:petPop .45s ease;}
@keyframes petPop{0%{transform:scale(1);}30%{transform:scale(1.28) translateY(-9px);}60%{transform:scale(.9);}100%{transform:scale(1);}}
/* 真实橘猫 PNG（复制自芥子·须弥） */
.cat-img{display:block;object-fit:contain;user-select:none;-webkit-user-drag:none;
  filter:drop-shadow(0 2px 6px rgba(0,0,0,.35));}
.pet-cat .cat-img{filter:drop-shadow(0 0 10px rgba(255,138,61,.55));}
.pet-bubble{position:relative;max-width:200px;background:rgba(20,22,40,.92);border:1px solid rgba(52,231,224,.4);
  color:#EAECEF;font-size:12.5px;font-weight:700;line-height:1.45;padding:9px 13px;border-radius:14px 14px 4px 14px;
  box-shadow:0 8px 22px rgba(0,0,0,.5),0 0 16px rgba(52,231,224,.18);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  opacity:0;transform:translateY(6px) scale(.96);transition:opacity .25s,transform .25s;pointer-events:none;}
.pet-bubble.show{opacity:1;transform:none;}
.pet-bubble::after{content:"";position:absolute;right:20px;bottom:-5px;width:10px;height:10px;
  background:rgba(20,22,40,.92);border-right:1px solid rgba(52,231,224,.4);border-bottom:1px solid rgba(52,231,224,.4);
  transform:rotate(45deg);}

/* ============ 联网登录：顶栏账号按钮 + 登录浮层 ============ */
.user-chip{background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:5px 12px;
  font-weight:800;font-size:12px;color:var(--ink-soft);cursor:pointer;
  backdrop-filter:var(--glass);-webkit-backdrop-filter:var(--glass);transition:all .2s;
  max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.user-chip:hover{color:var(--cyan);border-color:rgba(52,231,224,.4);box-shadow:0 0 14px rgba(52,231,224,.2);}
.user-chip.on{color:var(--green);border-color:rgba(61,220,151,.45);box-shadow:0 0 14px rgba(61,220,151,.18);}

.auth-mask{position:fixed;inset:0;z-index:99;display:flex;align-items:center;justify-content:center;
  background:rgba(6,8,18,.72);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:20px;}
.auth-mask[hidden]{display:none;}
.auth-card{width:100%;max-width:340px;background:linear-gradient(165deg,#151833 0%,#0F1124 100%);
  border:1px solid var(--line);border-radius:22px;padding:26px 24px 20px;box-shadow:var(--shadow);
  animation:authIn .32s cubic-bezier(.2,.9,.3,1.2);}
@keyframes authIn{from{opacity:0;transform:translateY(18px) scale(.96);}to{opacity:1;transform:none;}}
.auth-head{display:flex;align-items:center;gap:12px;margin-bottom:16px;}
.auth-head h3{font-size:19px;font-weight:900;letter-spacing:.5px;}
.auth-cat{width:52px;height:52px;display:inline-block;flex:0 0 auto;border-radius:50%;overflow:hidden;
  box-shadow:0 0 0 2px rgba(255,138,61,.5),0 0 18px rgba(255,138,61,.5);}
.auth-tabs{display:flex;gap:8px;margin-bottom:14px;}
.auth-tab{flex:1;background:var(--surface);border:1px solid var(--line);color:var(--ink-soft);
  border-radius:12px;padding:9px 0;font-weight:800;font-size:14px;cursor:pointer;transition:all .2s;}
.auth-tab.active{color:var(--orange);border-color:rgba(255,138,61,.55);
  background:rgba(255,138,61,.1);box-shadow:0 0 16px rgba(255,138,61,.18);}
.auth-input{width:100%;background:var(--surface);border:1px solid var(--line);border-radius:12px;
  padding:12px 14px;color:var(--ink);font-size:15px;font-weight:700;margin-bottom:10px;outline:none;transition:border .2s;}
.auth-input:focus{border-color:rgba(52,231,224,.55);box-shadow:0 0 14px rgba(52,231,224,.15);}
.auth-input::placeholder{color:var(--ink-dim);font-weight:600;}
.auth-role{display:flex;gap:8px;margin-bottom:12px;}
.role-btn{flex:1;background:var(--surface);border:1px solid var(--line);color:var(--ink-soft);
  border-radius:12px;padding:10px 0;font-weight:800;font-size:13px;cursor:pointer;transition:all .2s;}
.role-btn.active{color:var(--cyan);border-color:rgba(52,231,224,.55);background:rgba(52,231,224,.08);}
.auth-go{width:100%;background:linear-gradient(90deg,#FFB36B,#FF8A3D 55%,#FF5C8A);color:#fff;border:none;
  border-radius:14px;padding:13px 0;font-size:16px;font-weight:900;letter-spacing:2px;cursor:pointer;
  box-shadow:0 8px 24px rgba(255,138,61,.35);transition:transform .15s,box-shadow .2s;}
.auth-go:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(255,138,61,.45);}
.auth-go:active{transform:scale(.97);}
.auth-go:disabled{opacity:.55;cursor:wait;transform:none;}
.auth-err{min-height:18px;color:var(--red);font-size:12.5px;font-weight:700;text-align:center;margin-top:8px;}
.auth-skip{display:block;width:100%;background:none;border:none;color:var(--ink-dim);font-size:13px;
  font-weight:700;margin-top:10px;cursor:pointer;padding:6px;}
.auth-skip:hover{color:var(--ink-soft);}
.auth-tip{margin-top:10px;font-size:11.5px;color:var(--ink-dim);line-height:1.5;text-align:center;
  border-top:1px solid var(--line-soft);padding-top:12px;}

/* AI 思考中提示气泡 */
.msg-ai .typing{display:inline-flex;gap:5px;align-items:center;}
.typing i{width:7px;height:7px;border-radius:50%;background:var(--orange);opacity:.4;
  animation:tp 1.1s infinite;border:none;}
.typing i:nth-child(2){animation-delay:.18s;}
.typing i:nth-child(3){animation-delay:.36s;}
@keyframes tp{0%,100%{opacity:.35;transform:translateY(0);}50%{opacity:1;transform:translateY(-4px);}}
/* 家长云端：关联孩子表单 */
.plink{display:flex;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line-soft);}
.plink input{flex:1;background:var(--surface);border:1px solid var(--line);border-radius:10px;
  padding:9px 12px;color:var(--ink);font-size:13px;font-weight:700;outline:none;min-width:0;}
.plink input:focus{border-color:rgba(52,231,224,.55);}
.plink .btn-submit{width:auto;padding:9px 14px;font-size:13px;}

/* ============ 家庭码（家长端卡片 + 注册成功展示）============ */
.family-code-box{margin-top:14px;padding:14px;border:1px dashed rgba(255,138,61,.45);border-radius:14px;
  background:rgba(255,138,61,.07);display:flex;flex-direction:column;gap:8px;}
.family-code-box .fc{font-size:24px;letter-spacing:4px;color:var(--orange);font-weight:900;}
.family-code-box .fc-tip{font-size:12px;color:var(--ink-soft);line-height:1.5;}

.auth-code-result{text-align:center;padding:6px 0 2px;}
.acr-title{font-size:14px;color:var(--ink-soft);font-weight:800;margin-bottom:10px;}
.acr-code{font-size:32px;letter-spacing:6px;font-weight:900;color:var(--orange);
  text-shadow:0 0 18px rgba(255,138,61,.5);margin-bottom:10px;}
.acr-tip{font-size:12px;color:var(--ink-soft);line-height:1.6;margin-bottom:14px;}
.auth-code-result .auth-go{margin-top:4px;}

select.auth-input{appearance:none;-webkit-appearance:none;background-image:none;color:var(--ink);}
