*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;max-width:100%;overflow-x:clip}
body{font-family:var(--sans);color:var(--ink2);min-height:100vh;max-width:100%;overflow-x:clip}
button{font-family:inherit;cursor:pointer;color:inherit}
input,select{font-family:inherit}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#d8d0bd;border-radius:99px;border:2px solid var(--bg)}
#app{position:relative;z-index:1;max-width:1160px;margin:0 auto;padding:0 24px 90px}

/* ---------- header ---------- */
header{
  position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  padding:14px 0;background:rgba(246,243,236,.85);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit}
.seal{
  width:46px;height:46px;background:linear-gradient(145deg,#e8562f,var(--verm-deep));
  color:#fdf6ea;font-family:var(--brush);font-size:27px;line-height:46px;text-align:center;
  border-radius:9px;transform:rotate(-4deg);
  box-shadow:0 6px 16px -4px rgba(216,64,31,.45), inset 0 1px 0 rgba(255,255,255,.25);
}
.brand h1{font-family:var(--serif);font-weight:900;font-size:22px;letter-spacing:2px;color:var(--ink)}
.brand small{display:block;font-size:10px;letter-spacing:4px;color:var(--faint)}
nav{display:flex;gap:4px;margin-left:auto;overflow-x:auto;max-width:100%}
nav button{
  border:none;background:none;padding:8px 14px;font-size:13.5px;font-weight:500;
  color:var(--faint);border-radius:99px;white-space:nowrap;transition:.2s;
}
nav button:hover{color:var(--ink);background:rgba(26,22,17,.05)}
nav button.on{background:var(--ink);color:#fdf9ef;box-shadow:var(--sh-sm)}
.userchip{
  display:flex;align-items:center;gap:10px;padding:6px 14px 6px 8px;
  border:1px solid var(--line);border-radius:99px;background:#fff;cursor:pointer;transition:.2s;box-shadow:var(--sh-sm);
}
.userchip:hover{border-color:#d8cfba;box-shadow:var(--sh-md)}
.beltdot{width:22px;height:22px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line)}
.userchip .nm{font-weight:700;font-size:13px;color:var(--ink)}
.userchip .st{font-size:12px;color:var(--verm);font-weight:700}

/* ---------- generic ---------- */
main{padding-top:40px}
.view>*{animation:rise .55s cubic-bezier(.2,.8,.2,1) both}
.view>*:nth-child(2){animation-delay:.07s}
.view>*:nth-child(3){animation-delay:.14s}
.view>*:nth-child(4){animation-delay:.21s}
.view>*:nth-child(5){animation-delay:.28s}
.view>*:nth-child(6){animation-delay:.35s}
.view>*:nth-child(7){animation-delay:.42s}
.view>*:nth-child(8){animation-delay:.49s}
.view>*:nth-child(n+9){animation-delay:.56s}
@keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
/* 微交互：悬停/按压反馈 */
.card{transition:transform .25s cubic-bezier(.2,.8,.2,1),box-shadow .25s}
.card:hover{transform:translateY(-3px);box-shadow:var(--sh-md)}
.btn{transition:transform .15s,box-shadow .2s,background .2s,border-color .2s}
.btn:active{transform:scale(.96)}
.todo-row{transition:background .2s}
.todo-row:hover{background:rgba(51,112,255,.04)}
.eye-panel{transition:transform .2s,box-shadow .2s}
.eye-panel:hover{transform:translateY(-3px)}
.ring .fg{transition:stroke-dashoffset .9s cubic-bezier(.2,.8,.2,1)}
/* ---------- 课程图解 ---------- */
.demo{margin:20px 0 4px;padding:16px 16px 14px;border:1px solid var(--line);border-radius:14px;background:#fbfcfd}
.demo-cap{font-size:11px;letter-spacing:2px;color:var(--faint);font-weight:700;margin-bottom:12px}
.demo-duo{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:640px){.demo-duo{grid-template-columns:1fr}}
.demo-cell{border-radius:10px;padding:16px 12px 12px;position:relative;border:1px solid var(--line);animation:rise .5s .1s both}
.demo-cell.bad{background:#fff7f5;border-color:#ffd9cf}
.demo-cell.good{background:#f4fbf6;border-color:#c2e8cb}
.demo-cell .dg{position:absolute;top:6px;right:8px;font-size:10px;font-weight:800;letter-spacing:1px}
.demo-cell.bad .dg{color:#d43c2a}.demo-cell.good .dg{color:#1a9e3f}
.demo .mut{font-size:11px;color:#8f959e;margin-top:6px}
.eyebrow{font-size:11px;letter-spacing:5px;color:var(--verm);font-weight:700;margin-bottom:10px}
h2.sec{font-family:var(--serif);font-weight:900;font-size:32px;color:var(--ink);margin-bottom:8px;display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
h2.sec .cn{font-family:var(--brush);color:var(--verm);font-size:37px}
h2.sec .en{font-size:12px;letter-spacing:4px;color:var(--faint);font-weight:400}
.sec-sub{color:var(--faint);font-size:13px;margin-bottom:32px;line-height:1.8}
.card{
  background:var(--card);border:1px solid var(--line);border-radius:18px;padding:26px;
  box-shadow:var(--sh-sm);
}
.btn{
  display:inline-flex;align-items:center;gap:8px;border:none;border-radius:12px;
  padding:12px 24px;font-size:14px;font-weight:700;
  background:var(--ink);color:#fdf9ef;transition:.18s;box-shadow:var(--sh-sm);
}
.btn:hover{transform:translateY(-2px);box-shadow:var(--sh-md);background:#000}
.btn:disabled{opacity:.4;transform:none;box-shadow:none;cursor:not-allowed}
.btn.ghost{background:#fff;border:1px solid var(--line);color:var(--ink);box-shadow:var(--sh-sm)}
.btn.ghost:hover{border-color:var(--ink);box-shadow:var(--sh-md)}
.btn.jade{background:var(--jade);color:#fff}
.btn.jade:hover{background:#1c6550}
.btn.red{background:linear-gradient(145deg,#e8562f,var(--verm-deep));color:#fff;box-shadow:0 6px 18px -6px rgba(216,64,31,.5)}
.btn.red:hover{box-shadow:0 10px 26px -6px rgba(216,64,31,.6)}
.grid{display:grid;gap:18px}

/* ---------- dashboard ---------- */
.hero{padding:44px 0 8px;position:relative}
.hero .hi{font-family:var(--serif);font-weight:900;font-size:clamp(34px,5.6vw,56px);line-height:1.28;color:var(--ink)}
.hero .hi em{
  font-style:normal;white-space:nowrap;color:var(--verm);position:relative;
}
.hero .hi em::after{
  content:'';position:absolute;left:-2%;right:-2%;bottom:4px;height:12px;z-index:-1;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 14' preserveAspectRatio='none'%3E%3Cpath d='M3 9 Q 80 3 160 8 T 317 5' stroke='%23d8401f' stroke-width='5' fill='none' stroke-linecap='round' opacity='0.28'/%3E%3C/svg%3E") no-repeat center/100% 100%;
}
.hero p{margin-top:14px;color:var(--faint);font-size:13.5px;letter-spacing:1px}
.quote{
  margin-top:30px;padding:24px 30px;position:relative;overflow:hidden;
  background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--sh-sm);
}
.quote::before{content:'“';position:absolute;left:14px;top:-6px;font-family:var(--serif);font-size:90px;color:rgba(216,64,31,.12);font-weight:900}
.quote .q{font-family:var(--serif);font-size:18px;color:var(--ink);line-height:1.9;font-weight:700;position:relative}
.quote .who{margin-top:10px;font-size:12px;color:var(--gold);letter-spacing:2px;position:relative}
.quote::after{content:'今日一言';position:absolute;right:20px;top:18px;font-size:10px;letter-spacing:3px;color:var(--faint);border:1px solid var(--line);padding:3px 10px;border-radius:99px}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:16px;margin:34px 0 46px}
.stat{padding:22px 24px;position:relative;overflow:hidden;transition:.2s}
.stat:hover{box-shadow:var(--sh-md);transform:translateY(-2px)}
.stat::after{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--ac,var(--verm));border-radius:3px 3px 0 0}
.stat .k{font-size:11px;letter-spacing:3px;color:var(--faint);margin-bottom:12px}
.stat .v{font-family:var(--serif);font-weight:900;font-size:29px;color:var(--ink)}
.stat .v small{font-size:13px;color:var(--faint);font-family:var(--sans);font-weight:400}
.stat .foot{font-size:11px;color:var(--faint);margin-top:8px}
.ringwrap{display:flex;align-items:center;gap:16px}
.ring{transform:rotate(-90deg)}
.ring .bg{stroke:var(--line2)}
.ring .fg{stroke:var(--verm);stroke-linecap:round;transition:stroke-dashoffset 1s cubic-bezier(.2,.8,.2,1)}
.beltroad{display:flex;align-items:center;margin-top:16px}
.beltroad .node{flex:1;text-align:center;position:relative;padding-top:20px}
.beltroad .node::before{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);width:14px;height:14px;border-radius:50%;background:#fff;border:2px solid var(--line)}
.beltroad .node::after{content:'';position:absolute;top:6px;left:-50%;width:100%;height:2px;background:var(--line2);z-index:-1}
.beltroad .node:first-child::after{display:none}
.beltroad .node.cur::before{background:var(--verm);border-color:var(--verm);box-shadow:0 0 0 4px rgba(216,64,31,.15)}
.beltroad .node.done::before{background:var(--gold);border-color:var(--gold)}
.beltroad .node.done::after{background:var(--gold)}
.beltroad .node span{font-size:10.5px;color:var(--faint);letter-spacing:1px}
.beltroad .node.cur span{color:var(--verm);font-weight:700}
.dash2{display:grid;grid-template-columns:1.45fr 1fr;gap:18px}
@media(max-width:860px){.dash2{grid-template-columns:1fr}}
.todo-row{display:flex;align-items:center;gap:14px;padding:16px 0;border-bottom:1px dashed var(--line)}
.todo-row:last-child{border:none}
.todo-ic{width:44px;height:44px;flex:none;border-radius:12px;background:var(--bg);border:1px solid var(--line);display:grid;place-items:center;font-family:var(--brush);font-size:22px;color:var(--verm)}
.todo-row b{font-size:15px;color:var(--ink)}
.todo-row p{font-size:12px;color:var(--faint);margin-top:3px;line-height:1.6}
.todo-row .btn{margin-left:auto;padding:9px 18px;font-size:13px;flex:none}
.card h3.ph{font-family:var(--serif);font-weight:900;color:var(--ink);font-size:19px;margin-bottom:10px}
.card .pd{font-size:13px;color:var(--ink2);line-height:1.9;margin-bottom:18px}

/* ---------- path ---------- */
.mod{margin-bottom:20px;display:grid;grid-template-columns:96px 1fr;gap:24px;padding:28px;position:relative;overflow:hidden;transition:.2s}
.mod:hover{box-shadow:var(--sh-md)}
.mod::before{content:'';position:absolute;top:0;left:0;bottom:0;width:4px;background:var(--ac)}
.mod .num{font-family:var(--brush);font-size:58px;color:var(--ac);line-height:1}
.mod .num small{display:block;font-family:var(--sans);font-size:10px;letter-spacing:3px;color:var(--faint);margin-top:8px}
.mod h3{font-family:var(--serif);font-weight:900;font-size:21px;color:var(--ink)}
.mod .desc{font-size:13px;color:var(--faint);margin:5px 0 16px}
.prog{height:6px;background:var(--line2);border-radius:99px;overflow:hidden;margin-bottom:16px}
.prog i{display:block;height:100%;background:var(--ac);transition:width .7s cubic-bezier(.2,.8,.2,1)}
.lesson{display:flex;align-items:center;gap:12px;padding:13px 16px;border:1px solid var(--line2);border-radius:12px;margin-bottom:8px;background:#fdfcf9;transition:.18s;cursor:pointer}
.lesson:hover{transform:translateX(5px);border-color:var(--ac);box-shadow:var(--sh-sm)}
.lesson .t{font-weight:500;font-size:14px;color:var(--ink)}
.lesson .m{font-size:11px;color:var(--faint);margin-left:auto;white-space:nowrap}
.stamp-mini{width:27px;height:27px;flex:none;border-radius:7px;display:grid;place-items:center;font-family:var(--brush);font-size:14px}
.stamp-mini.done{background:linear-gradient(145deg,#e8562f,var(--verm-deep));color:#fdf6ea;transform:rotate(-6deg);box-shadow:0 3px 8px rgba(216,64,31,.35)}
.stamp-mini.todo{border:1.5px dashed #d8d0bd;color:var(--faint)}

/* ---------- lesson ---------- */
.backlink{background:none;border:none;color:var(--faint);font-size:13px;margin-bottom:18px;padding:0}
.backlink:hover{color:var(--verm)}
.lesson-head h2{font-family:var(--serif);font-weight:900;font-size:38px;color:var(--ink);margin:6px 0 10px}
.lesson-meta{font-size:12px;color:var(--faint);letter-spacing:2px;margin-bottom:28px}
.lesson-intro{font-size:15.5px;line-height:2.1;color:var(--ink2);margin-bottom:30px;padding:22px 26px;background:#fff;border:1px solid var(--line);border-radius:16px;border-left:4px solid var(--ink)}
.readcol{max-width:800px}
.subhead{font-family:var(--serif);font-weight:900;font-size:18px;color:var(--ink);margin:34px 0 14px;display:flex;align-items:center;gap:10px}
.subhead::before{content:'';width:9px;height:9px;background:var(--verm);transform:rotate(45deg);flex:none}
.subhead.jadeh::before{background:var(--jade)}
.subhead.goldh::before{background:var(--gold)}
.point{display:flex;gap:14px;padding:16px 0;border-bottom:1px dashed var(--line);font-size:14.5px;line-height:2.05;color:var(--ink2)}
.point:last-of-type{border:none}
.point::before{content:'◆';color:var(--verm);flex:none;font-size:11px;margin-top:9px}
.point b,.point strong{color:var(--ink)}
.core{
  margin:8px 0;padding:22px 26px;background:linear-gradient(90deg,rgba(34,117,92,.08),transparent 75%);
  border-left:4px solid var(--jade);border-radius:0 16px 16px 0;
  font-family:var(--serif);font-weight:700;font-size:18px;line-height:1.9;color:var(--ink);
}
.core::before{content:'要旨';display:block;font-size:11px;letter-spacing:4px;color:var(--jade);margin-bottom:8px;font-family:var(--sans);font-weight:700}
.miss{display:flex;gap:12px;padding:13px 0;font-size:13.5px;line-height:1.9;color:var(--ink2);border-bottom:1px dashed var(--line)}
.miss:last-of-type{border:none}
.miss::before{content:'✕';color:var(--verm);font-weight:900;flex:none}
.practice{
  padding:20px 24px;border:1px solid #eadfc4;border-radius:16px;
  background:linear-gradient(90deg,rgba(176,125,30,.08),transparent 80%);
  font-size:14px;line-height:2;color:var(--ink2);
}
.practice::before{content:'今日练习';display:block;font-size:11px;letter-spacing:4px;color:var(--gold);margin-bottom:8px;font-weight:700}
.quiz{margin-top:36px}
.quiz h4{font-family:var(--serif);font-weight:900;font-size:19px;color:var(--ink);margin-bottom:6px}
.quiz .qq{font-size:15px;margin:10px 0 18px;font-weight:500;color:var(--ink2)}
.qopt{
  display:block;width:100%;text-align:left;padding:15px 18px;margin-bottom:10px;
  border:1px solid var(--line);border-radius:12px;background:#fdfcf9;font-size:14px;color:var(--ink);transition:.15s;
}
.qopt:hover:not(:disabled){border-color:var(--ink);transform:translateX(4px);box-shadow:var(--sh-sm)}
.qopt.right{border-color:var(--jade);background:rgba(34,117,92,.08);font-weight:700}
.qopt.wrong{border-color:var(--verm);background:rgba(216,64,31,.06)}
.qexp{display:none;margin:6px 0 16px;padding:16px 20px;background:var(--bg);border-radius:12px;font-size:13px;line-height:1.9;color:var(--ink2);border:1px dashed var(--line)}
.qexp.show{display:block;animation:rise .3s both}
.qretry{margin-left:12px;font-size:13px;color:var(--verm);font-weight:700}
.qretry:hover{text-decoration:underline}
.lesson-foot{display:flex;gap:12px;margin-top:30px;flex-wrap:wrap}

/* ---------- eye（实图对比） ---------- */
.eye-top{display:flex;align-items:center;gap:14px;margin-bottom:20px;flex-wrap:wrap}
.eye-prog{font-family:var(--serif);font-weight:900;font-size:21px;color:var(--ink)}
.eye-tag{padding:5px 14px;border-radius:99px;background:var(--ink);color:#fdf9ef;font-size:12px;letter-spacing:2px}
.eye-q{font-size:15px;color:var(--ink2);margin-bottom:24px}
.eye-pair{display:grid;grid-template-columns:1fr 1fr;gap:22px}
@media(max-width:760px){.eye-pair{grid-template-columns:1fr}}
.eye-panel{
  position:relative;background:#f5f6f8;border:1px solid var(--line);border-radius:22px;
  overflow:hidden;cursor:pointer;transition:.2s;box-shadow:var(--sh-sm);
}
.eye-panel .half{display:block;width:200%;max-width:none;height:auto}
.eye-panel .half.r{margin-left:-100%}
.eye-panel:hover{transform:translateY(-4px);box-shadow:var(--sh-lg)}
.eye-panel .tag{
  position:absolute;top:12px;left:14px;width:28px;height:28px;border-radius:50%;
  background:#fff;border:1.5px solid var(--ink);color:var(--ink);font-size:13px;font-weight:700;
  display:grid;place-items:center;font-family:var(--serif);box-shadow:var(--sh-sm);
}
.eye-panel.pick-right{outline:3px solid var(--jade);outline-offset:2px}
.eye-panel.pick-wrong{outline:3px solid var(--verm);outline-offset:2px}
.eye-panel .mark{position:absolute;top:14px;right:16px;font-size:20px;font-weight:900}
.eye-panel.pick-right .mark{color:var(--jade)}
.eye-panel.pick-wrong .mark{color:var(--verm)}
.eye-exp{margin-top:24px}
.eye-end{text-align:center;padding:56px 24px}
.eye-end .score{font-family:var(--serif);font-weight:900;font-size:68px;color:var(--verm)}
.eye-end p{color:var(--faint);margin:12px 0 28px;line-height:1.9}
.eye-end .kanji{font-family:var(--brush);font-size:64px;color:var(--verm)}

/* ---------- 眼力实图半幅裁切 ---------- */

/* ---------- laws ---------- */
.laws{grid-template-columns:repeat(auto-fill,minmax(245px,1fr))}
.law{position:relative;min-height:200px;perspective:900px;cursor:pointer;background:none;border:none;padding:0;text-align:left}
.law .in{position:absolute;inset:0;transition:transform .6s cubic-bezier(.2,.8,.2,1);transform-style:preserve-3d}
.law.flip .in{transform:rotateY(180deg)}
.law .face{position:absolute;inset:0;backface-visibility:hidden;border-radius:17px;padding:22px;display:flex;flex-direction:column;border:1px solid var(--line)}
.law .front{background:#fff;box-shadow:var(--sh-sm)}
.law:hover .front{box-shadow:var(--sh-md)}
.law .front .no{font-family:var(--brush);font-size:34px;color:var(--verm)}
.law .front .ic{display:block;width:46px;height:38px;color:var(--verm);opacity:.85;margin-top:10px}
.law .front .ic svg{width:100%;height:100%}
.law .front h4{font-family:var(--serif);font-weight:900;font-size:19px;margin-top:auto;color:var(--ink)}
.law .front .en{font-size:11px;color:var(--faint);letter-spacing:1px;margin-top:5px}
.law .back{background:var(--ink);border-color:var(--ink);transform:rotateY(180deg)}
.law .back p{font-size:12.5px;line-height:1.85;color:#e6dcc6}
.law .back .eg{margin-top:auto;font-size:11px;color:#e8a458;border-top:1px solid rgba(253,249,239,.15);padding-top:10px;line-height:1.65}
.law .back .eg b{color:#fdf9ef}

/* ---------- terms ---------- */
.termfilter{
  width:100%;max-width:440px;padding:14px 19px;border:1px solid var(--line);border-radius:13px;
  background:#fff;color:var(--ink);font-size:14px;margin-bottom:26px;outline:none;transition:.2s;box-shadow:var(--sh-sm);
}
.termfilter:focus{border-color:var(--ink);box-shadow:var(--sh-md)}
.terms{grid-template-columns:repeat(auto-fill,minmax(265px,1fr))}
.term{padding:20px 22px;transition:.2s}
.term:hover{box-shadow:var(--sh-md);transform:translateY(-3px)}
.term .tt{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.term .tt b{font-family:var(--serif);font-weight:900;font-size:16.5px;color:var(--ink)}
.term .tt span{font-size:10.5px;color:var(--faint);letter-spacing:1px}
.term p{font-size:12.5px;line-height:1.85;color:var(--ink2);margin-top:9px}
.term .cat{display:inline-block;font-size:10px;color:var(--jade);border:1px solid rgba(34,117,92,.35);padding:2px 9px;border-radius:99px;margin-top:12px;letter-spacing:1px}
.term .say{
  margin-top:12px;padding:10px 13px;border-radius:11px;background:rgba(216,64,31,.06);
  border:1px dashed rgba(216,64,31,.3);font-size:12px;line-height:1.75;color:#8a4a35;cursor:pointer;transition:.15s;
}
.term .say:hover{background:rgba(216,64,31,.12)}
.term .say i{display:block;font-style:normal;font-size:9.5px;letter-spacing:2px;color:var(--verm);font-weight:700;margin-bottom:3px}
.term .say em{font-style:normal}

/* ---------- 复习流水线 / 抽认卡 ---------- */
.rev-hero{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.rev-hero .big{font-family:var(--serif);font-weight:900;font-size:40px;color:var(--ink);line-height:1}
.rev-hero .big small{font-size:16px;color:var(--faint);font-weight:400}
.rev-bar{height:6px;background:var(--paper-3);border-radius:99px;overflow:hidden;margin-top:14px}
.rev-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--verm),var(--verm-hi));border-radius:99px;transition:width .4s cubic-bezier(.2,.8,.2,1)}
.rev-kind{display:inline-block;font-size:10px;letter-spacing:2px;font-weight:700;padding:3px 10px;border-radius:99px;margin-bottom:14px}
.rev-kind.c{color:var(--verm);background:rgba(51,112,255,.1)}
.rev-kind.eye{color:var(--orange);background:rgba(255,125,0,.1)}
.rev-kind.term{color:#722ed1;background:rgba(114,46,209,.1)}
.rev-kind.law{color:var(--jade);background:rgba(0,180,42,.1)}
/* 翻面抽认卡 */
.flash{position:relative;min-height:280px;perspective:1200px;cursor:pointer}
.flash .fin{position:absolute;inset:0;transition:transform .55s cubic-bezier(.2,.8,.2,1);transform-style:preserve-3d}
.flash.flip .fin{transform:rotateY(180deg)}
.flash .fface{position:absolute;inset:0;backface-visibility:hidden;border-radius:16px;padding:30px;display:flex;flex-direction:column;border:1px solid var(--line);background:#fff;box-shadow:var(--sh-md)}
.flash .fface.front{background:linear-gradient(160deg,#ffffff 0%,#f7f8fa 100%);border-color:var(--line)}
.flash .fface.back{transform:rotateY(180deg);background:var(--ink);border-color:var(--ink)}
.flash .fface .q{font-family:var(--serif);font-weight:900;font-size:26px;color:var(--ink);margin:auto;text-align:center;line-height:1.5}
.flash .fface .q small{display:block;font-family:var(--sans);font-weight:400;font-size:13px;color:var(--faint);margin-top:10px;letter-spacing:1px}
.flash .fface.back .a{font-size:14px;line-height:1.9;color:#e6dcc6;overflow:auto}
.flash .fface.back .a b{color:#fdf9ef}
.flash .hint{text-align:center;font-size:11px;color:var(--faint);letter-spacing:2px;margin-top:auto;padding-top:12px}
/* 自评三钮 */
.selfrate{display:flex;gap:12px;margin-top:20px}
.selfrate button{flex:1;padding:15px 10px;border-radius:13px;border:1px solid var(--line);background:#fff;cursor:pointer;font-family:var(--sans);transition:.18s;box-shadow:var(--sh-sm)}
.selfrate button b{display:block;font-size:15px;color:var(--ink);font-weight:700}
.selfrate button span{display:block;font-size:11px;color:var(--faint);margin-top:3px}
.selfrate button:hover{transform:translateY(-2px);box-shadow:var(--sh-md)}
.selfrate .r1:hover{border-color:var(--verm);background:rgba(51,112,255,.05)}
.selfrate .r3:hover{border-color:var(--gold);background:rgba(255,136,0,.05)}
.selfrate .r4:hover{border-color:var(--jade);background:rgba(0,180,42,.05)}
/* 复习完结算 */
.rev-done{text-align:center;padding:40px 20px}
.rev-done .stamp-big{font-size:56px;margin-bottom:14px}
/* 掌握度环 */
.mastery-wrap{display:flex;align-items:center;gap:14px}
.mastery-wrap .mv{font-family:var(--serif);font-weight:900;font-size:26px;color:var(--ink)}

/* ---------- checklist ---------- */
.checkcat{margin-bottom:20px}
.checkcat h3{font-family:var(--serif);font-weight:900;font-size:18px;color:var(--ink);display:flex;align-items:center;gap:10px;margin-bottom:4px}
.checkcat h3 .pct{margin-left:auto;font-size:12px;color:var(--faint);font-family:var(--sans);font-weight:400}
.checkitem{display:flex;align-items:center;gap:12px;padding:12px 6px;border-bottom:1px dashed var(--line2);cursor:pointer;transition:.15s;font-size:14px;color:var(--ink2)}
.checkitem:hover{background:#fdfcf6}
.checkitem:last-child{border:none}
.cbox{width:20px;height:20px;flex:none;border:1.5px solid #d8d0bd;border-radius:6px;display:grid;place-items:center;font-size:12px;color:transparent;transition:.15s;background:#fff}
.checkitem.done .cbox{background:var(--verm);border-color:var(--verm);color:#fff}
.checkitem.done span.txt{color:var(--faint);text-decoration:line-through}

/* ---------- sync ---------- */
.sync-card{margin-bottom:20px}
.sync-card h3{font-family:var(--serif);font-weight:900;font-size:19px;color:var(--ink);margin-bottom:8px}
.sync-card .d{font-size:13px;color:var(--faint);margin-bottom:16px;line-height:1.8}
.sync-card select{
  padding:12px 16px;border:1px solid var(--line);border-radius:12px;background:#fff;
  color:var(--ink);font-size:14px;margin-bottom:16px;max-width:100%;outline:none;box-shadow:var(--sh-sm);
}
.sync-card pre{
  background:#171310;color:#e0d4b8;border-radius:14px;padding:20px 22px;
  font-size:12.5px;line-height:1.85;white-space:pre-wrap;word-break:break-word;
  max-height:260px;overflow:auto;font-family:ui-monospace,Menlo,monospace;margin-bottom:16px;
  box-shadow:var(--sh-md);
}

/* ---------- onboarding ---------- */
#ob{position:fixed;inset:0;z-index:100;display:none;place-items:center;background:rgba(26,22,17,.5);backdrop-filter:blur(6px)}
#ob.show{display:grid}
#ob .box{width:min(460px,92vw);animation:rise .4s both;box-shadow:var(--sh-lg)}
#ob h2{font-family:var(--serif);font-weight:900;font-size:30px;color:var(--ink);margin-bottom:8px}
#ob p{font-size:13px;color:var(--faint);margin-bottom:22px;line-height:1.9}
#ob label{display:block;font-size:12px;font-weight:700;letter-spacing:2px;margin:18px 0 9px;color:var(--ink2)}
#ob input{width:100%;padding:13px 15px;border:1px solid var(--line);border-radius:12px;background:#fdfcf9;color:var(--ink);font-size:15px;outline:none}
#ob input:focus{border-color:var(--ink)}
.goals{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.goal{border:1px solid var(--line);border-radius:12px;padding:13px 8px;text-align:center;font-size:13px;background:#fdfcf9;color:var(--ink2);transition:.15s;line-height:1.7}
.goal.sel{border-color:var(--verm);background:rgba(216,64,31,.06);color:var(--ink);font-weight:700}
#ob .btn{width:100%;justify-content:center;margin-top:28px}

/* ---------- stamp & toast ---------- */
#stamp{position:fixed;inset:0;z-index:90;display:none;place-items:center;pointer-events:none}
#stamp .s{
  width:160px;height:160px;border:7px solid var(--verm);border-radius:16px;color:var(--verm);
  font-family:var(--brush);font-size:68px;display:grid;place-items:center;transform:rotate(-10deg);
  background:rgba(246,243,236,.5);
}
#stamp.play{display:grid}
#stamp.play .s{animation:stampIn .55s cubic-bezier(.2,2.4,.4,1) both}
@keyframes stampIn{0%{transform:rotate(-30deg) scale(3);opacity:0}60%{opacity:1}100%{transform:rotate(-10deg) scale(1);opacity:1}}
#toast{
  position:fixed;bottom:30px;left:50%;transform:translate(-50%,90px);z-index:95;
  background:var(--ink);color:#fdf9ef;padding:13px 26px;border-radius:99px;
  font-size:14px;font-weight:700;transition:.35s cubic-bezier(.2,.8,.2,1);opacity:0;
  box-shadow:0 10px 34px rgba(26,22,17,.35);
}
#toast.show{transform:translate(-50%,0);opacity:1}
#toast b{color:#e8a458}

footer{margin-top:76px;padding-top:22px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:11px;color:var(--faint);letter-spacing:2px}
@media(max-width:640px){
  header{gap:10px}
  nav{order:3;width:100%}
  .mod{grid-template-columns:1fr;gap:12px}
  .mod .num{font-size:40px}
  #app{padding:0 16px 60px}
  .lesson-head h2{font-size:29px}
  .phone{width:246px}
}


/* ---------- 新增 mock 原子与缺陷变体 ---------- */
.m-plan{flex:1;border:1px solid #eee7d6;border-radius:12px;padding:12px 8px;position:relative;text-align:center}
.m-plan.hot{border:2px solid #d8401f}
.m-price{font-size:16px;font-weight:800;color:#141210}
.b-plansame .m-plan.hot{border:1px solid #eee7d6}
.b-plansame .m-badge{display:none}
.b-plansame .m-price{color:#141210 !important}
.b-nosk .m-line,.b-nosk .m-ava,.b-nosk .m-load{display:none}
.m-inp.err{border-color:#d8401f}
.m-errinline{color:#d8401f;font-size:9.5px;margin-top:4px}
.m-errtop{display:none;background:#fdeae4;color:#b23517;font-size:10px;padding:7px 9px;border-radius:8px;margin-bottom:10px}
.b-farerr .m-errinline{display:none}
.b-farerr .m-errtop{display:block}
.b-farerr .m-inp.err{border-color:#ddd5c3}
.b-nocontext .m-why{display:none}

/* ---------- 法则背面出处 ---------- */
.law .back .src{font-size:9.5px;letter-spacing:2px;color:#a89e8a;margin-bottom:9px}

/* ---------- 术语加深 ---------- */
.term .fuzzy{margin-top:11px;font-size:12px;color:#8a8272;background:#faf7ef;border:1px solid var(--line2);border-radius:10px;padding:9px 13px;line-height:1.75}
.term .fuzzy i{display:block;font-style:normal;font-size:9.5px;letter-spacing:2px;color:var(--faint);font-weight:700;margin-bottom:2px}
.term .tfoot{display:flex;align-items:center;gap:8px;margin-top:13px;flex-wrap:wrap}
.term .tfoot .cat{margin-top:0}
.term .aka{font-size:10px;color:var(--faint)}
.term .tlink{margin-left:auto;font-size:11px;color:var(--jade);text-decoration:none;font-weight:500}
.term .tlink:hover{text-decoration:underline}

/* ---------- 案例 ---------- */
.cases{grid-template-columns:repeat(auto-fill,minmax(330px,1fr))}
.case{padding:22px 24px;transition:.2s}
.case:hover{box-shadow:var(--sh-md);transform:translateY(-3px)}
.case.evil{border-color:rgba(216,64,31,.4)}
.case .chead{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.case .chead b{font-family:var(--serif);font-weight:900;font-size:17px;color:var(--ink)}
.case .scene{font-size:10.5px;color:var(--faint);border:1px solid var(--line);padding:2px 9px;border-radius:99px}
.case .evilbadge{font-size:10px;font-weight:700;color:#fff;background:var(--verm);padding:2px 9px;border-radius:99px}
.case .cwhat{font-size:13px;line-height:1.9;color:var(--ink2);margin:13px 0}
.case .lchips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.case .lchips span{font-size:10.5px;color:var(--jade);border:1px solid rgba(34,117,92,.35);padding:2px 9px;border-radius:99px}
.case .ctake{font-size:12.5px;line-height:1.8;color:var(--ink);border-top:1px dashed var(--line);padding-top:11px;font-weight:500}

/* ---------- 资源 ---------- */
.res{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.res-card{text-decoration:none;display:block;transition:.2s;padding:20px 22px}
.res-card:hover{box-shadow:var(--sh-md);transform:translateY(-3px)}
.res-card .rhead{display:flex;align-items:center;justify-content:space-between}
.res-card .rhead b{font-family:var(--serif);font-weight:900;font-size:16px;color:var(--ink)}
.res-card .rhead span{color:var(--faint);transition:.15s}
.res-card:hover .rhead span{color:var(--verm);transform:translate(2px,-2px)}
.res-card .rwhat{font-size:12.5px;color:var(--ink2);margin:9px 0;line-height:1.7}
.res-card .ruse{font-size:11px;color:var(--gold);line-height:1.7;border-top:1px dashed var(--line);padding-top:9px}


/* ---------- 实训场 ---------- */
.tasks{grid-template-columns:repeat(auto-fill,minmax(330px,1fr))}
.taskcard{padding:22px 24px;transition:.2s;display:flex;flex-direction:column}
.taskcard:hover{box-shadow:var(--sh-md);transform:translateY(-3px)}
.taskcard .thead{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.taskcard .tno{font-family:var(--brush);font-size:26px;color:var(--verm)}
.taskcard .thead b{font-family:var(--serif);font-weight:900;font-size:17px;color:var(--ink)}
.taskcard .tmeta{font-size:10.5px;color:var(--faint);margin-left:auto}
.taskcard .tbrief{font-size:13px;line-height:1.85;color:var(--ink2);margin:12px 0 10px}
.taskcard .treq{list-style:none;margin:0 0 16px}
.taskcard .treq li{font-size:12.5px;line-height:1.8;color:var(--ink2);padding:4px 0 4px 18px;position:relative}
.taskcard .treq li::before{content:'◆';position:absolute;left:0;top:8px;font-size:9px;color:var(--jade)}
.taskcard .tbtn{margin-top:auto;align-self:flex-start;padding:9px 18px;font-size:13px}


/* ---------- 入门导学 ---------- */
.stage{display:flex;align-items:center;gap:22px;padding:22px 26px;margin-bottom:14px;transition:.2s}
.stage .sno{font-family:var(--brush);font-size:46px;color:var(--line);flex:none;width:56px;text-align:center;line-height:1}
.stage.cur{border-color:var(--verm);box-shadow:var(--sh-md)}
.stage.cur .sno{color:var(--verm)}
.stage.done .sno{color:var(--jade)}
.stage .sbody{flex:1;min-width:0}
.stage .stitle{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.stage .stitle b{font-family:var(--serif);font-weight:900;font-size:18px;color:var(--ink)}
.stage .scur{font-size:11px;color:var(--verm);font-weight:700}
.stage .sdone{font-size:11px;color:var(--jade);font-weight:700}
.stage .sgoal{font-size:13px;line-height:1.85;color:var(--ink2);margin:8px 0 12px}
.stage .smeta{font-size:11px;color:var(--faint);margin-top:8px}
.stage .sextra{font-size:11.5px;color:var(--gold);margin-top:6px}
.stage .sact{flex:none}
.day{text-align:left;padding:22px}
.day .dno{font-family:var(--brush);font-size:30px;color:var(--verm)}
.day b{display:block;font-family:var(--serif);font-weight:900;font-size:16px;color:var(--ink);margin:6px 0}
.day p{font-size:12.5px;line-height:1.8;color:var(--ink2);margin-bottom:14px}
.uset{font-size:13.5px;line-height:2;color:var(--ink2)}
.uset b{color:var(--ink)}
@media(max-width:640px){.stage{flex-wrap:wrap}.stage .sact{width:100%}}


/* ---------- 风格图鉴 ---------- */
.styles{grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}
.style-card{padding:16px}
.style-card .st-head{display:flex;align-items:baseline;gap:9px;margin-top:16px}
.style-card .st-head b{font-family:var(--serif);font-weight:900;font-size:17px;color:var(--ink)}
.style-card .st-head span{font-size:10.5px;color:var(--faint);letter-spacing:1px}
.style-card .st-org{font-size:10px;color:var(--gold);letter-spacing:1px;margin-top:4px}
.style-card .st-feat{font-size:12.5px;line-height:1.8;color:var(--ink2);margin:10px 0 8px}
.style-card .st-use{font-size:11.5px;color:var(--jade);line-height:1.7}
.style-card .say{margin-top:12px}
/* 预览通用 */
.stw{height:158px;border-radius:13px;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}
.sw-card{width:158px;padding:14px 14px 13px;border-radius:10px;background:#fff;text-align:left}
.sw-t{font-size:12.5px;font-weight:700;color:#1a1611}
.sw-b{font-size:9.5px;color:#8a8272;margin:4px 0 9px}
.sw-btn{display:inline-block;font-size:9.5px;padding:6px 13px;border-radius:6px;background:#1a1611;color:#fff;font-weight:600}
/* 极简 */
.stw-min{background:#fafafa}
.stw-min .sw-card{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.04);padding:18px 16px}
.stw-min .sw-btn{background:none;color:#1a1611;padding:6px 0;border-bottom:1.5px solid #1a1611;border-radius:0}
/* 扁平 */
.stw-flat{background:#ecf0f1}
.stw-flat .sw-card{background:#e74c3c;border-radius:2px}
.stw-flat .sw-t,.stw-flat .sw-b{color:#fff}
.stw-flat .sw-btn{background:#fff;color:#e74c3c;border-radius:2px}
/* Material */
.stw-mat{background:#fafafa}
.stw-mat .sw-card{box-shadow:0 3px 6px rgba(0,0,0,.16),0 3px 6px rgba(0,0,0,.12);border-radius:4px}
.stw-mat .sw-btn{background:#3f51b5;box-shadow:0 2px 4px rgba(63,81,181,.4);border-radius:4px;letter-spacing:1px;text-transform:uppercase;font-size:8.5px}
/* 拟物 */
.stw-ske{background:repeating-linear-gradient(45deg,#d9c9a8,#d9c9a8 6px,#d3c29e 6px,#d3c29e 12px)}
.stw-ske .sw-card{background:linear-gradient(180deg,#f7f0e0,#e6d9bd);border:1px solid #b8a888;box-shadow:inset 0 1px 0 #fff,0 3px 6px rgba(90,70,40,.4);border-radius:8px}
.stw-ske .sw-t{color:#5a4632;font-family:var(--serif)}
.stw-ske .sw-b{color:#8a7355}
.stw-ske .sw-btn{background:linear-gradient(180deg,#8fce6e,#5a9e3f);border:1px solid #4a8a32;box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 2px 3px rgba(0,0,0,.3);color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.3);border-radius:6px}
/* 新拟态 */
.stw-neu{background:#e0e5ec}
.stw-neu .sw-card{background:#e0e5ec;border-radius:18px;box-shadow:8px 8px 16px #b8bec9,-8px -8px 16px #ffffff}
.stw-neu .sw-t{color:#5a6a85}
.stw-neu .sw-b{color:#9aa5b8}
.stw-neu .sw-btn{background:#e0e5ec;color:#5a6a85;box-shadow:4px 4px 8px #b8bec9,-4px -4px 8px #ffffff;border-radius:12px}
/* 玻璃拟态 */
.stw-gla{background:linear-gradient(135deg,#7c5cd4,#e8562f 60%,#e8a458)}
.stw-gla .sw-card{background:rgba(255,255,255,.22);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.45);border-radius:16px;box-shadow:0 8px 24px rgba(60,20,80,.25)}
.stw-gla .sw-t,.stw-gla .sw-b{color:#fff}
.stw-gla .sw-btn{background:rgba(255,255,255,.9);color:#7c3fd4;border-radius:99px}
/* 新粗野 */
.stw-bru{background:#fdf3d8}
.stw-bru .sw-card{background:#ffd803;border:3px solid #111;border-radius:0;box-shadow:7px 7px 0 #111}
.stw-bru .sw-t{color:#111;font-size:13px}
.stw-bru .sw-b{color:#111}
.stw-bru .sw-btn{background:#ff6b9d;color:#111;border:3px solid #111;border-radius:0;box-shadow:4px 4px 0 #111}
/* 瑞士 */
.stw-swi{background:#fff}
.stw-swi .sw-card{background:none;border-radius:0;border-left:10px solid #e30613;padding:10px 0 10px 12px}
.stw-swi .sw-t{font-size:17px;font-weight:900;letter-spacing:-.5px}
.stw-swi .sw-b{color:#333}
.stw-swi .sw-btn{background:#111;border-radius:0;letter-spacing:2px}
/* Bento */
.stw-ben{background:#f5f5f7}
.stw-ben::before{content:'';position:absolute;width:70px;height:70px;border-radius:14px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.06);left:14px;top:14px}
.stw-ben::after{content:'';position:absolute;width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,#5b8dd4,#8d9cd6);right:16px;bottom:16px}
.stw-ben .sw-card{box-shadow:0 2px 10px rgba(0,0,0,.06);border-radius:14px;z-index:1}
.stw-ben .sw-btn{background:#0071e3;border-radius:99px}
/* 暗色 */
.stw-drk{background:#0d1117}
.stw-drk .sw-card{background:#161b22;border:1px solid #30363d}
.stw-drk .sw-t{color:#e6edf3}
.stw-drk .sw-b{color:#7d8590}
.stw-drk .sw-btn{background:#238636;box-shadow:0 0 12px rgba(88,166,255,.35)}
/* 赛博 */
.stw-cyb{background:#0a0a1a}
.stw-cyb .sw-card{background:rgba(10,10,26,.8);border:1px solid #00f0ff;box-shadow:0 0 16px rgba(0,240,255,.4),inset 0 0 12px rgba(0,240,255,.1);border-radius:4px}
.stw-cyb .sw-t{color:#00f0ff;text-shadow:0 0 8px rgba(0,240,255,.8);font-family:ui-monospace,monospace}
.stw-cyb .sw-b{color:#7d85b0}
.stw-cyb .sw-btn{background:#ff2ea6;color:#0a0a1a;box-shadow:0 0 14px rgba(255,46,166,.7);border-radius:2px;font-family:ui-monospace,monospace;font-weight:800}
/* 黏土 */
.stw-cla{background:#dfe7fd}
.stw-cla .sw-card{background:#eef2ff;border-radius:26px;box-shadow:10px 10px 22px rgba(166,177,225,.7),inset -4px -4px 10px rgba(166,177,225,.4),inset 4px 4px 10px #fff}
.stw-cla .sw-t{color:#5a6a9e}
.stw-cla .sw-b{color:#93a0c8}
.stw-cla .sw-btn{background:#ffb7d5;color:#8a4a6a;border-radius:99px;box-shadow:4px 4px 10px rgba(230,160,190,.7),inset 2px 2px 5px #fff}


/* ---------- 风格分类筛选 + 新流派预览 ---------- */
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:24px}
.chip{padding:7px 16px;border:1px solid var(--line);border-radius:99px;background:#fff;font-size:12.5px;color:var(--ink2);transition:.15s}
.chip:hover{border-color:var(--ink)}
.chip.on{background:var(--ink);color:#fdf9ef;border-color:var(--ink)}
.st-cat{margin-left:auto;font-size:10px;color:var(--verm);border:1px solid rgba(216,64,31,.35);padding:1px 8px;border-radius:99px}
/* 极光渐变 */
.stw-aur{background:radial-gradient(at 20% 25%,#a8e6cf 0,transparent 55%),radial-gradient(at 80% 20%,#c7b8f5 0,transparent 55%),radial-gradient(at 60% 95%,#ffd3b6 0,transparent 60%),#fdfbf7}
.stw-aur .sw-card{background:rgba(255,255,255,.55);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.7);border-radius:16px;box-shadow:0 8px 24px rgba(120,100,180,.15)}
.stw-aur .sw-btn{background:#7c6bc4;border-radius:99px}
/* 像素风 */
.stw-pix{background:#2b2b3a}
.stw-pix .sw-card{background:#3b3b4f;border:4px solid #1a1a26;box-shadow:inset -4px -4px 0 #26263a;border-radius:0}
.stw-pix .sw-t{color:#7cff6b;font-family:ui-monospace,monospace}
.stw-pix .sw-b{color:#9a9ab8}
.stw-pix .sw-btn{background:#7cff6b;color:#1a1a26;box-shadow:3px 3px 0 #000;border-radius:0;font-family:ui-monospace,monospace;font-weight:800}
/* 孟菲斯 */
.stw-mem{background:#fffdf7;background-image:radial-gradient(#ffd23f 2.5px,transparent 2.5px),radial-gradient(#ee4266 2px,transparent 2px);background-size:30px 30px,22px 22px;background-position:0 0,11px 13px}
.stw-mem .sw-card{border:2.5px solid #111;border-radius:4px;box-shadow:5px 5px 0 #3bceac}
.stw-mem .sw-t{color:#111}
.stw-mem .sw-btn{background:#ee4266;color:#fff;border:2px solid #111;border-radius:99px}
/* 蒸汽波 */
.stw-vap{background:linear-gradient(180deg,#ff71ce 0%,#b967ff 55%,#01cdfe 100%)}
.stw-vap::after{content:'';position:absolute;left:0;right:0;bottom:0;height:44%;background:repeating-linear-gradient(0deg,rgba(255,255,255,.35) 0 1px,transparent 1px 14px),repeating-linear-gradient(90deg,rgba(255,255,255,.35) 0 1px,transparent 1px 14px)}
.stw-vap .sw-card{background:rgba(255,182,234,.88);border:2px solid #fff;z-index:1;border-radius:4px}
.stw-vap .sw-t{color:#7b2d8b;font-style:italic}
.stw-vap .sw-b{color:#9b4dab}
.stw-vap .sw-btn{background:linear-gradient(90deg,#ff71ce,#01cdfe);color:#fff;border-radius:2px}
/* 酸性设计 */
.stw-aci{background:#111}
.stw-aci .sw-card{background:#161616;border:1px solid #ccff00;border-radius:2px}
.stw-aci .sw-t{background:linear-gradient(180deg,#fff,#999 42%,#eee 58%,#666);-webkit-background-clip:text;background-clip:text;color:transparent;font-size:14px}
.stw-aci .sw-b{color:#777}
.stw-aci .sw-btn{background:#ccff00;color:#111;font-weight:800;transform:skew(-8deg);border-radius:0}
/* 新中式水墨 */
.stw-ink{background:#f5f0e6}
.stw-ink .sw-card{background:#fdfaf2;border:1px solid #d8cfba;border-radius:4px;box-shadow:0 4px 14px rgba(90,80,60,.12)}
.stw-ink .sw-t{font-family:var(--brush);font-size:17px;color:#2b2620;font-weight:400}
.stw-ink .sw-b{color:#8a8172}
.stw-ink .sw-btn{background:#b23a26;color:#f8f3e4;font-family:var(--brush);border-radius:4px;transform:rotate(-2deg);font-size:11px}
/* 国潮 */
.stw-guo{background:#b91c22;background-image:radial-gradient(rgba(212,169,78,.25) 2px,transparent 2px);background-size:24px 24px}
.stw-guo .sw-card{background:#f7ead1;border:3px double #d4a94e;border-radius:6px}
.stw-guo .sw-t{color:#b91c22;font-family:var(--serif);font-weight:900}
.stw-guo .sw-b{color:#8a6d3b}
.stw-guo .sw-btn{background:#b91c22;color:#f7ead1;border-radius:4px;letter-spacing:2px}
/* 包豪斯 */
.stw-bau{background:#f4efe6}
.stw-bau::before{content:'';position:absolute;width:52px;height:52px;border-radius:50%;background:#e30613;left:14px;top:14px}
.stw-bau::after{content:'';position:absolute;width:0;height:0;border-left:22px solid transparent;border-right:22px solid transparent;border-bottom:38px solid #0066b3;right:16px;bottom:14px}
.stw-bau .sw-card{border:2px solid #111;border-radius:0;z-index:1}
.stw-bau .sw-t{color:#111;font-weight:900}
.stw-bau .sw-btn{background:#ffcc00;color:#111;border:2px solid #111;border-radius:0;font-weight:700}
/* 装饰艺术 */
.stw-dec{background:#101c2e}
.stw-dec .sw-card{background:transparent;border:1px solid #d4af37;outline:1px solid #d4af37;outline-offset:4px;border-radius:0}
.stw-dec .sw-t{color:#d4af37;font-family:var(--serif);letter-spacing:3px}
.stw-dec .sw-b{color:#8a94a8}
.stw-dec .sw-btn{background:transparent;border:1px solid #d4af37;color:#d4af37;border-radius:0;letter-spacing:2px}
/* 杂志编辑 */
.stw-edi{background:#f7f3ea}
.stw-edi .sw-card{background:transparent;border-top:3px solid #111;border-bottom:1px solid #111;border-radius:0;padding:14px 4px}
.stw-edi .sw-t{font-family:var(--serif);font-size:16px;font-weight:900}
.stw-edi .sw-b{color:#555}
.stw-edi .sw-btn{background:none;color:#111;text-decoration:underline;text-underline-offset:3px;padding:6px 0;border-radius:0}
/* 手绘涂鸦 */
.stw-doo{background:#fffdf5}
.stw-doo .sw-card{border:2.5px solid #111;border-radius:255px 15px 225px 15px/15px 225px 15px 255px;background:#fff}
.stw-doo .sw-t{font-family:var(--brush);font-size:16px;color:#111;font-weight:400}
.stw-doo .sw-btn{background:#ffd23f;color:#111;border:2px solid #111;border-radius:15px 225px 15px 255px/255px 15px 225px 15px;font-weight:700}
/* 等距 2.5D */
.stw-iso{background:#e8f0f7}
.stw-iso .sw-card{border:1px solid #b8cfe0;border-radius:8px;box-shadow:-6px 6px 0 #c9dcee,-12px 12px 0 #dde9f4}
.stw-iso .sw-btn{background:#5b8dd4;box-shadow:-3px 3px 0 #3f6ba8;border-radius:6px}
/* 终端风 */
.stw-ter{background:#0c0c0c}
.stw-ter::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(51,255,51,.05) 0 1px,transparent 1px 3px);pointer-events:none}
.stw-ter .sw-card{background:#0c0c0c;border:1px solid #33ff33;border-radius:0}
.stw-ter .sw-t{color:#33ff33;font-family:ui-monospace,monospace}
.stw-ter .sw-t::before{content:'$ '}
.stw-ter .sw-b{color:#2aa02a}
.stw-ter .sw-btn{background:none;border:1px solid #33ff33;color:#33ff33;border-radius:0;font-family:ui-monospace,monospace}
/* 科幻 HUD */
.stw-hud{background:#04101f}
.stw-hud::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,210,255,.04) 0 1px,transparent 1px 4px);pointer-events:none}
.stw-hud .sw-card{background:rgba(0,200,255,.06);border:1px solid rgba(0,210,255,.6);border-radius:2px;box-shadow:0 0 18px rgba(0,210,255,.15),inset 0 0 18px rgba(0,210,255,.06)}
.stw-hud .sw-t{color:#5ee6ff;font-family:ui-monospace,monospace;letter-spacing:2px}
.stw-hud .sw-b{color:#3f7a9e}
.stw-hud .sw-btn{background:transparent;border:1px solid #5ee6ff;color:#5ee6ff;border-radius:0;font-family:ui-monospace,monospace}


/* ---------- 风格详情页 ---------- */
.stw.big{height:280px;width:100%;border-radius:18px;box-shadow:var(--sh-md)}
.stw.big .sw-card{width:190px;padding:18px}
.palrow{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.palchip{display:inline-flex;align-items:center;gap:9px;padding:9px 14px;border:1px solid var(--line);border-radius:12px;background:#fff;transition:.15s;box-shadow:var(--sh-sm)}
.palchip:hover{border-color:var(--ink);transform:translateY(-2px)}
.palchip i{width:22px;height:22px;border-radius:7px;border:1px solid rgba(0,0,0,.12)}
.palchip span{font-size:12px;color:var(--ink2)}
.palchip b{font-size:12px;color:var(--faint);font-family:ui-monospace,Menlo,monospace;font-weight:500}
.stypre{background:#171310;color:#e0d4b8;border-radius:13px;padding:18px 20px;font-size:12.5px;line-height:1.9;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,Menlo,monospace;margin-bottom:14px;max-height:300px;overflow:auto}
.st-more{margin-top:12px;font-size:11px;color:var(--verm);font-weight:500}


/* ---------- 二级子导航 ---------- */
#subnav{display:none;position:sticky;top:75px;z-index:40;padding:10px 0;background:rgba(246,243,236,.9);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);margin:0 -24px;padding-left:24px;padding-right:24px}
#subnav.show{display:flex;gap:6px;overflow-x:auto}
#subnav button{border:none;background:none;padding:6px 14px;font-size:12.5px;color:var(--faint);border-radius:99px;white-space:nowrap;transition:.15s}
#subnav button:hover{color:var(--ink);background:rgba(26,22,17,.05)}
#subnav button.on{background:rgba(216,64,31,.1);color:var(--verm);font-weight:700}
nav button.on{background:var(--ink);color:#fdf9ef}

/* ---------- 迷你整站预览 ---------- */
.sw-site{width:84%;background:#fff;border-radius:9px;overflow:hidden;box-shadow:0 4px 14px rgba(20,15,5,.12);text-align:left;position:relative;z-index:1}
.sw-nav{display:flex;align-items:center;gap:5px;padding:7px 10px;border-bottom:1px solid rgba(0,0,0,.06)}
.sw-logo{width:9px;height:9px;border-radius:3px;background:#1a1611;flex:none}
.sw-lnk{width:16px;height:3.5px;border-radius:2px;background:#c9c2b2;flex:none}
.sw-lnk.last{margin-left:auto}
.sw-hero{padding:11px 12px 12px}
.sw-h{font-size:13px;font-weight:800;color:#1a1611;line-height:1.4}
.sw-p{font-size:8.5px;color:#8a8272;margin:4px 0 9px;line-height:1.6}
/* 各风格的整站适配 */
.stw-min .sw-lnk{background:#ddd6c8}
.stw-flat .sw-nav{background:#e74c3c;border:none}
.stw-flat .sw-logo{background:#fff}
.stw-flat .sw-lnk{background:rgba(255,255,255,.55)}
.stw-flat .sw-h{color:#2c3e50}
.stw-mat .sw-nav{box-shadow:0 2px 4px rgba(0,0,0,.1);border:none;position:relative;z-index:1}
.stw-mat .sw-logo{background:#3f51b5}
.stw-mat .sw-h{color:#212121}
.stw-mat .sw-site{border-radius:4px;box-shadow:0 3px 6px rgba(0,0,0,.16)}
.stw-ske .sw-site{background:linear-gradient(180deg,#f7f0e0,#e6d9bd);border:1px solid #b8a888;box-shadow:inset 0 1px 0 #fff,0 4px 8px rgba(90,70,40,.4)}
.stw-ske .sw-logo{background:#8a6d3b;border-radius:50%}
.stw-ske .sw-lnk{background:#b8a888}
.stw-ske .sw-h{color:#5a4632;font-family:var(--serif)}
.stw-neu .sw-site{background:#e0e5ec;box-shadow:6px 6px 12px #b8bec9,-6px -6px 12px #fff;border-radius:14px}
.stw-neu .sw-nav{border-color:#ccd3de}
.stw-neu .sw-logo{background:#5a6a85}
.stw-neu .sw-lnk{background:#c3cbd9}
.stw-neu .sw-h{color:#5a6a85}
.stw-gla .sw-site{background:rgba(255,255,255,.25);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.45);border-radius:12px}
.stw-gla .sw-nav{border-color:rgba(255,255,255,.3)}
.stw-gla .sw-logo{background:#fff;border-radius:50%}
.stw-gla .sw-lnk{background:rgba(255,255,255,.6)}
.stw-gla .sw-h,.stw-gla .sw-p{color:#fff}
.stw-cla .sw-site{background:#eef2ff;border-radius:18px;box-shadow:8px 8px 18px rgba(166,177,225,.7),inset 3px 3px 8px #fff}
.stw-cla .sw-logo{background:#ffb7d5;border-radius:50%}
.stw-cla .sw-lnk{background:#c9d4f5}
.stw-cla .sw-h{color:#5a6a9e}
.stw-aur .sw-site{background:rgba(255,255,255,.6);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.75);border-radius:12px}
.stw-aur .sw-logo{background:#7c6bc4}
.stw-aur .sw-lnk{background:#c9c2e0}
.stw-aur .sw-h{color:#3d3654}
.stw-iso .sw-site{border:1px solid #b8cfe0;box-shadow:-5px 5px 0 #c9dcee,-10px 10px 0 #dde9f4}
.stw-iso .sw-logo{background:#5b8dd4}
.stw-iso .sw-lnk{background:#c3d6e8}
.stw-iso .sw-h{color:#2b4a6a}
.stw-swi .sw-site{border-radius:0}
.stw-swi .sw-logo{background:#e30613;border-radius:0}
.stw-swi .sw-lnk{background:#111}
.stw-swi .sw-h{font-size:15px;font-weight:900;border-left:6px solid #e30613;padding-left:8px}
.stw-swi .sw-btn{border-radius:0;letter-spacing:2px}
.stw-ben .sw-site{background:#f5f5f7;border-radius:12px}
.stw-ben .sw-logo{background:#1d1d1f;border-radius:50%}
.stw-ben .sw-h{color:#1d1d1f}
.stw-edit .sw-site{background:#f7f3ea;border-top:3px solid #111;border-bottom:1px solid #111;border-radius:0;box-shadow:none}
.stw-edit .sw-logo{background:#111;border-radius:0}
.stw-edit .sw-lnk{background:#b5ab94}
.stw-edit .sw-h{font-family:var(--serif);font-size:15px}
.stw-bau .sw-site{border:2px solid #111;border-radius:0;box-shadow:none}
.stw-bau .sw-logo{background:#e30613;border-radius:50%}
.stw-bau .sw-lnk{background:#111}
.stw-bau .sw-h{color:#111;font-weight:900}
.stw-dec .sw-site{background:#101c2e;border:1px solid #d4af37;border-radius:0}
.stw-dec .sw-nav{border-color:rgba(212,175,55,.35)}
.stw-dec .sw-logo{background:#d4af37;transform:rotate(45deg);border-radius:0}
.stw-dec .sw-lnk{background:#5a6a85}
.stw-dec .sw-h{color:#d4af37;font-family:var(--serif);letter-spacing:3px;font-size:12px}
.stw-dec .sw-p{color:#8a94a8}
.stw-bru .sw-site{background:#ffd803;border:3px solid #111;border-radius:0;box-shadow:6px 6px 0 #111}
.stw-bru .sw-nav{border-color:#111}
.stw-bru .sw-logo{background:#111;border-radius:0}
.stw-bru .sw-lnk{background:#111}
.stw-bru .sw-h{color:#111}
.stw-bru .sw-p{color:#111}
.stw-mem .sw-site{border:2.5px solid #111;border-radius:4px;box-shadow:5px 5px 0 #3bceac}
.stw-mem .sw-logo{background:#ee4266;border-radius:50%}
.stw-mem .sw-lnk{background:#111}
.stw-mem .sw-h{color:#111}
.stw-vap .sw-site{background:rgba(255,182,234,.92);border:2px solid #fff;border-radius:4px}
.stw-vap .sw-logo{background:#b967ff;border-radius:50%}
.stw-vap .sw-lnk{background:rgba(255,255,255,.8)}
.stw-vap .sw-h{color:#7b2d8b;font-style:italic;font-family:var(--serif)}
.stw-vap .sw-p{color:#9b4dab}
.stw-aci .sw-site{background:#161616;border:1px solid #ccff00;border-radius:2px}
.stw-aci .sw-nav{border-color:#333}
.stw-aci .sw-logo{background:#ccff00;border-radius:0;transform:skew(-8deg)}
.stw-aci .sw-lnk{background:#3a3a3a}
.stw-aci .sw-h{background:linear-gradient(180deg,#fff,#999 42%,#eee 58%,#666);-webkit-background-clip:text;background-clip:text;color:transparent;font-size:14px}
.stw-aci .sw-p{color:#777}
.stw-doo .sw-site{border:2.5px solid #111;border-radius:255px 15px 225px 15px/15px 225px 15px 255px;box-shadow:none}
.stw-doo .sw-logo{background:#ffd23f;border:1.5px solid #111}
.stw-doo .sw-lnk{background:#111;height:3px}
.stw-doo .sw-h{font-family:var(--brush);font-size:16px;font-weight:400}
.stw-ink .sw-site{background:#fdfaf2;border:1px solid #d8cfba;border-radius:4px}
.stw-ink .sw-logo{background:#b23a26;border-radius:2px;transform:rotate(-4deg)}
.stw-ink .sw-lnk{background:#cfc4ab}
.stw-ink .sw-h{font-family:var(--brush);font-size:17px;font-weight:400;color:#2b2620}
.stw-guo .sw-site{background:#f7ead1;border:3px double #d4a94e;border-radius:6px}
.stw-guo .sw-logo{background:#b91c22}
.stw-guo .sw-lnk{background:#d4a94e}
.stw-guo .sw-h{color:#b91c22;font-family:var(--serif);font-weight:900}
.stw-guo .sw-p{color:#8a6d3b}
.stw-cyb .sw-site{background:rgba(10,10,26,.85);border:1px solid #00f0ff;box-shadow:0 0 14px rgba(0,240,255,.35);border-radius:4px}
.stw-cyb .sw-nav{border-color:rgba(0,240,255,.3)}
.stw-cyb .sw-logo{background:#ff2ea6;box-shadow:0 0 6px #ff2ea6}
.stw-cyb .sw-lnk{background:#1a4a5a}
.stw-cyb .sw-h{color:#00f0ff;text-shadow:0 0 8px rgba(0,240,255,.8);font-family:ui-monospace,monospace;font-size:12px}
.stw-cyb .sw-p{color:#7d85b0}
.stw-pix .sw-site{background:#3b3b4f;border:4px solid #1a1a26;border-radius:0;box-shadow:inset -4px -4px 0 #26263a}
.stw-pix .sw-nav{border-color:#26263a}
.stw-pix .sw-logo{background:#7cff6b;border-radius:0}
.stw-pix .sw-lnk{background:#26263a;border-radius:0;height:4px}
.stw-pix .sw-h{color:#7cff6b;font-family:ui-monospace,monospace;font-size:12px}
.stw-pix .sw-p{color:#9a9ab8}
.stw-ter .sw-site{background:#0c0c0c;border:1px solid #33ff33;border-radius:0;box-shadow:none}
.stw-ter .sw-nav{border-color:#1a3a1a}
.stw-ter .sw-logo{background:#33ff33;border-radius:0}
.stw-ter .sw-lnk{background:#1a3a1a;border-radius:0}
.stw-ter .sw-h{color:#33ff33;font-family:ui-monospace,monospace;font-size:12px}
.stw-ter .sw-h::before{content:'$ '}
.stw-ter .sw-p{color:#2aa02a}
.stw-hud .sw-site{background:rgba(0,200,255,.06);border:1px solid rgba(0,210,255,.6);border-radius:2px;box-shadow:0 0 16px rgba(0,210,255,.15)}
.stw-hud .sw-nav{border-color:rgba(0,210,255,.3)}
.stw-hud .sw-logo{background:#5ee6ff;border-radius:0}
.stw-hud .sw-lnk{background:#134a5e;border-radius:0}
.stw-hud .sw-h{color:#5ee6ff;font-family:ui-monospace,monospace;letter-spacing:2px;font-size:11px}
.stw-hud .sw-p{color:#3f7a9e}
.stw-drk .sw-site{background:#161b22;border:1px solid #30363d}
.stw-drk .sw-nav{border-color:#30363d}
.stw-drk .sw-logo{background:#58a6ff;border-radius:50%}
.stw-drk .sw-lnk{background:#30363d}
.stw-drk .sw-h{color:#e6edf3}
.stw-drk .sw-p{color:#7d8590}


/* 修复：point 段落含 <b> 时 flex 拆列问题 */
.point{display:block;position:relative;padding:16px 0 16px 24px}
.point::before{position:absolute;left:0;top:25px;margin:0}


/* ---------- Agent 接入 ---------- */
.agent-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:6px}
.agent-step{border:1px solid var(--line);border-radius:13px;padding:16px 18px;background:#fdfcf9}
.agent-step b{font-family:var(--serif);font-weight:900;color:var(--ink);font-size:15px}
.agent-step p{font-size:12px;color:var(--faint);margin:6px 0 14px;line-height:1.7}
.agent-step .btn{padding:9px 16px;font-size:13px}
.sync-card code{background:var(--bg);border:1px solid var(--line2);border-radius:6px;padding:1px 6px;font-size:11.5px;font-family:ui-monospace,Menlo,monospace}
.impta{width:100%;min-height:110px;border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#fdfcf9;font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--ink);outline:none;resize:vertical;margin-bottom:12px}
.impta:focus{border-color:var(--ink)}
.my-summary{display:grid;grid-template-columns:1.2fr .8fr;gap:16px;margin-bottom:20px}
.my-score{padding:24px;background:linear-gradient(145deg,#1f56ae,#2f6fd0);color:#fff;border-radius:16px;min-height:190px;display:flex;flex-direction:column;justify-content:space-between}
.my-score .cap{font-size:11px;font-weight:750;letter-spacing:.12em;opacity:.72}.my-score strong{display:block;font-family:var(--serif);font-size:44px;line-height:1;margin:8px 0}.my-score strong small{font:600 14px var(--sans);opacity:.7}.my-score p{font-size:12px;line-height:1.7;opacity:.82}
.my-dimensions{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--paper)}
.my-dim{padding:17px 16px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-width:0}.my-dim:nth-child(2n){border-right:0}.my-dim:nth-last-child(-n+2){border-bottom:0}
.my-dim b{display:block;font-family:var(--serif);font-size:20px;color:var(--ink)}.my-dim span{display:block;font-size:11px;color:var(--faint);margin-top:4px;line-height:1.5}
.my-plan{display:grid;gap:10px;margin-top:14px}.my-plan-item{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:12px;align-items:center;padding:13px 0;border-top:1px solid var(--line)}
.my-plan-item:first-child{border-top:0}.my-plan-n{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--indigo);color:#fff;font-size:12px;font-weight:800}.my-plan-item b{font-size:13px;color:var(--ink)}.my-plan-item p{font-size:11.5px;color:var(--faint);margin-top:3px;line-height:1.5}
.my-method{padding:14px 16px;border-left:3px solid var(--indigo);background:#f5f8fe;border-radius:0 10px 10px 0;font-size:12px;line-height:1.8;color:var(--ink2);margin-top:12px}.danger-zone{border-color:#efd3cc}.danger-zone h3{color:var(--verm)}
@media(max-width:760px){.my-summary{grid-template-columns:1fr}.my-plan-item{grid-template-columns:34px minmax(0,1fr)}.my-plan-item .btn{grid-column:2;width:100%;margin:2px 0 0}}


/* ================= 整体换肤：Apple / 飞书科技风 + 高密度 ================= */
:root{
  --bg:#f5f6f7;
  --card:#ffffff;
  --card2:#f7f8fa;
  --paper:#f5f6f7;
  --paper-2:#ffffff;
  --paper-3:#eff0f1;
  --line:#e5e6eb;
  --line2:#eff0f1;
  --line-soft:#e5e6eb;
  --ink:#1f2329;
  --ink2:#646a73;
  --ink-soft:#646a73;
  --ink-faint:#8f959e;
  --txt:#646a73;
  --faint:#8f959e;
  --bone:#1f2329;
  --verm:#3370ff;
  --verm-hi:#4e83ff;
  --verm-deep:#245bdb;
  --jade:#00b42a;
  --gold:#ff8800;
  --indigo:#3370ff;
  --orange:#ff7d00;
  --serif:'Noto Sans SC','PingFang SC',sans-serif;
  --sans:'Noto Sans SC','PingFang SC',sans-serif;
  --brush:'Noto Sans SC','PingFang SC',sans-serif;
  --sh-sm:0 1px 2px rgba(31,35,41,.04),0 2px 8px rgba(31,35,41,.04);
  --sh-md:0 4px 16px rgba(31,35,41,.08);
  --sh-lg:0 10px 32px rgba(31,35,41,.14);
}
body{background:#f5f6f7;background-image:none}

/* 头部 */
header{background:rgba(255,255,255,.85);border-bottom:1px solid var(--line)}
.seal{background:linear-gradient(135deg,#3370ff,#245bdb);border-radius:11px;transform:none;font-weight:700;font-size:22px;box-shadow:0 4px 12px rgba(51,112,255,.3)}
.brand h1{letter-spacing:0}
.brand small{letter-spacing:2px}
nav button.on{background:var(--verm);color:#fff;box-shadow:0 2px 8px rgba(51,112,255,.3)}
#subnav{background:rgba(255,255,255,.9);border-bottom:1px solid var(--line)}
#subnav button.on{background:rgba(51,112,255,.1);color:var(--verm)}
.userchip .st{color:var(--verm)}

/* 标题与结构密度 */
main{padding-top:24px}
h2.sec{font-size:24px;letter-spacing:0}
h2.sec .cn{font-family:var(--sans);font-size:12px;font-weight:700;color:var(--verm);background:rgba(51,112,255,.1);padding:4px 10px;border-radius:6px;letter-spacing:2px}
h2.sec .en{font-size:11px}
.sec-sub{margin-bottom:20px;font-size:12.5px}
.card{border-radius:12px;padding:18px;box-shadow:var(--sh-sm)}
.grid{gap:14px}

/* 首页 hero 收紧 */
.hero{padding:22px 0 4px}
.hero .hi{font-size:clamp(26px,3.6vw,40px);font-weight:800;letter-spacing:0}
.hero .hi em{background:none;color:var(--verm)}
.hero .hi em::after{display:none}
.hero p{margin-top:8px;font-size:12.5px}
.quote{padding:14px 20px;margin-top:18px;border-radius:12px}
.quote .q{font-size:14.5px;font-weight:600}
.quote::before{display:none}
.quote::after{top:14px;right:16px}
.stats{gap:12px;margin:22px 0 30px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.stat{padding:16px 18px}
.stat .v{font-size:24px}
.stat .k{margin-bottom:8px}
.beltroad .node.cur::before{background:var(--verm);border-color:var(--verm);box-shadow:0 0 0 4px rgba(51,112,255,.15)}
.beltroad .node.cur span{color:var(--verm)}
.todo-row{padding:12px 0}
.todo-ic{border-radius:9px;font-weight:700;font-size:15px;width:38px;height:38px}
.dash2{gap:14px}

/* 按钮 */
.btn{border-radius:8px;padding:9px 18px;font-size:13px;background:var(--verm);box-shadow:0 2px 8px rgba(51,112,255,.25)}
.btn:hover{background:var(--verm-deep);box-shadow:0 4px 14px rgba(51,112,255,.35)}
.btn.ghost{background:#fff;border:1px solid var(--line);color:var(--ink);box-shadow:none}
.btn.ghost:hover{border-color:var(--verm);color:var(--verm)}
.btn.jade{background:var(--verm)}
.btn.jade:hover{background:var(--verm-deep)}
.btn.red{background:var(--verm)}
.btn.ink{background:var(--card2);border:1px solid var(--line)}

/* 课程路径 */
.mod{grid-template-columns:56px 1fr;gap:16px;padding:18px 20px;margin-bottom:14px}
.mod::before{width:3px;background:var(--ac)}
.mod .num{font-size:26px;font-weight:800;color:var(--ac);text-shadow:none;font-family:var(--sans)}
.mod .num small{letter-spacing:1px}
.mod h3{font-size:17px}
.mod .desc{margin:3px 0 10px}
.lesson{padding:9px 14px;margin-bottom:6px;border-radius:9px;background:#fff;border-color:var(--line2)}
.lesson:hover{border-color:var(--verm);transform:none;background:rgba(51,112,255,.04)}
.stamp-mini{border-radius:6px;font-weight:700;font-family:var(--sans)}
.stamp-mini.done{background:var(--verm);box-shadow:none;transform:none;color:#fff}
.stamp-mini.todo{border-color:#d0d3d6}
.prog{height:5px;margin-bottom:12px}

/* 课程详情 */
.lesson-head h2{font-size:28px;font-weight:800}
.lesson-intro{padding:16px 20px;border-radius:12px;border-left:3px solid var(--verm)}
.subhead{font-size:16px;margin:24px 0 10px}
.subhead::before{border-radius:2px;transform:none;background:var(--verm);width:4px;height:16px}
.subhead.jadeh::before{background:var(--jade)}
.subhead.goldh::before{background:var(--gold)}
.point{padding:12px 0 12px 20px;font-size:13.5px}
.point::before{top:21px;font-size:10px}
.core{border-radius:0 10px 10px 0;padding:16px 20px;font-size:15px}
.practice{border-radius:12px;padding:14px 18px}
.qopt{border-radius:9px;padding:12px 15px}
.qopt.right{border-color:var(--jade);background:rgba(0,180,42,.07)}
.qopt.wrong{border-color:#f53f3f;background:rgba(245,63,63,.06)}
.qopt:hover:not(:disabled){border-color:var(--verm);transform:none}

/* 眼力 */
.eye-tag{background:var(--verm);border-radius:6px}
.eye-panel{border-radius:16px;background:#f7f8fa;min-height:320px}
.eye-panel .tag{border-color:var(--ink)}
.eye-end .kanji{font-weight:800;font-size:46px}
.eye-end .score{color:var(--verm)}

/* 法则 */
.laws{grid-template-columns:repeat(auto-fill,minmax(215px,1fr))}
.law{min-height:176px}
.law .face{border-radius:12px;padding:16px}
.law .front .no{font-size:13px;font-weight:800;color:var(--verm);font-family:var(--sans)}
.law .front h4{font-size:16px}
.law .back{background:#1f2329;border-color:#1f2329}
.law .back .eg{color:#4e83ff;border-top-color:rgba(255,255,255,.12)}
.law .back .eg b{color:#fff}
.law .back p{color:#c9cdd4}
.law .back .src{color:#646a73}

/* 术语 */
.terms{grid-template-columns:repeat(auto-fill,minmax(245px,1fr))}
.term{padding:16px 18px}
.term .fuzzy{background:#f7f8fa;border-color:var(--line2)}
.term .say{background:rgba(51,112,255,.05);border-color:rgba(51,112,255,.25);color:#245bdb}
.term .say i{color:var(--verm)}
.term .tlink{color:var(--verm)}
.termfilter{border-radius:9px;padding:11px 15px;margin-bottom:18px}
.termfilter:focus{border-color:var(--verm);box-shadow:0 0 0 3px rgba(51,112,255,.12)}

/* 风格 */
.styles{grid-template-columns:repeat(auto-fill,minmax(255px,1fr))}
.style-card{padding:12px}
.chip{border-radius:8px}
.chip.on{background:var(--ink)}
.st-cat{color:var(--verm);border-color:rgba(51,112,255,.3)}
.st-more{color:var(--verm)}
.palchip{border-radius:9px}
.stypre{background:#1f2329;color:#c9cdd4;border-radius:10px}

/* 案例 / 资源 / 实训 / 入门 */
.cases{grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}
.case{padding:16px 18px}
.case.evil{border-color:rgba(245,63,63,.4)}
.case .evilbadge{background:#f53f3f}
.case .lchips span{color:var(--verm);border-color:rgba(51,112,255,.3)}
.res{grid-template-columns:repeat(auto-fill,minmax(270px,1fr))}
.res-card{padding:16px 18px}
.res-card .ruse{color:var(--verm)}
.res-card:hover .rhead span{color:var(--verm)}
.tasks{grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}
.taskcard{padding:16px 18px}
.taskcard .tno{font-size:13px;font-weight:800;color:var(--verm);font-family:var(--sans)}
.taskcard .thead b{font-size:15.5px}
.taskcard .treq li::before{color:var(--verm)}
.stage{padding:16px 20px;margin-bottom:12px}
.stage .sno{font-size:24px;font-weight:800;font-family:var(--sans);width:44px}
.stage.cur{border-color:var(--verm)}
.stage .scur{color:var(--verm)}
.stage .sextra{color:var(--gold)}
.day{padding:16px 18px}
.day .dno{font-size:14px;font-weight:800;color:var(--verm);font-family:var(--sans)}
.todo-ic{color:var(--verm)}

/* 清单 */
.checkitem{padding:10px 6px;font-size:13.5px}
.checkitem.done .cbox{background:var(--verm);border-color:var(--verm)}

/* 同步 / Agent */
.sync-card pre{background:#1f2329;color:#c9cdd4;border-radius:10px;max-height:220px}
.sync-card select{border-radius:8px}
.agent-step{border-radius:10px;padding:14px 16px}

/* 印章/弹层/提示 */
#stamp .s{border-color:var(--verm);color:var(--verm);font-weight:800;font-size:44px;border-radius:18px;font-family:var(--sans)}
#toast{background:#1f2329}
#toast b{color:#4e83ff}
#ob input:focus{border-color:var(--verm)}
.goal.sel{border-color:var(--verm);background:rgba(51,112,255,.06)}

/* 页脚与杂项 */
footer{border-top-color:var(--line);margin-top:56px}
::-webkit-scrollbar-thumb{background:#d0d3d6;border-color:#f5f6f7}
::selection{background:var(--verm);color:#fff}


/* ================= 精修：一致性打磨（去杂色 / 统一节奏） ================= */
/* 1. 统计卡：去掉彩虹顶条，统一中性样式 */
.stat::after{display:none}
.stat{padding:16px 18px;display:flex;flex-direction:column;justify-content:flex-start}
.stat .k{font-size:10px;letter-spacing:2px;color:#8f959e;margin-bottom:10px}
.stat .v{font-size:24px;font-weight:800;color:#1f2329;letter-spacing:0}
.stat .foot{font-size:11px;color:#8f959e;margin-top:8px}
.ring .fg{stroke:#3370ff}
.ring .bg{stroke:#eff0f1}
/* 段位路：中性化，仅当前节点蓝色 */
.beltroad .node.done::before{background:#c9cdd4;border-color:#c9cdd4}
.beltroad .node.done::after{background:#e5e6eb}
.beltroad .node.cur::before{background:#3370ff;border-color:#3370ff;box-shadow:0 0 0 4px rgba(51,112,255,.12)}
.beltroad .node span{color:#8f959e}
.beltroad .node.cur span{color:#3370ff}

/* 2. 格言卡：克制 */
.quote{background:#fff;border:1px solid var(--line);border-left:3px solid #3370ff}
.quote .q{color:#1f2329;font-size:14px;font-weight:600}
.quote .who{color:#8f959e;font-size:11px;letter-spacing:1px}
.quote::after{color:#8f959e;border-color:var(--line)}

/* 3. 课程模块：去掉每模块彩色左边条，序号中性灰蓝，进度条统一蓝 */
.mod::before{display:none}
.mod .num{color:#c9cdd4 !important;font-weight:800}
.mod .prog i{background:#3370ff !important}
.mod{border:1px solid var(--line)}
.mod:hover{box-shadow:var(--sh-md)}
.lesson .t{font-weight:500}
.lesson:hover .t{color:#3370ff}

/* 4. 任务行图标：中性灰 */
.todo-ic{background:#f2f3f5;border:none;color:#646a73}
.todo-row b{font-weight:600}
.todo-row .btn{border-radius:8px}

/* 5. 按钮：扁平克制，去掉位移 */
.btn{transform:none}
.btn:hover{transform:none}

/* 6. 标题标签统一 */
.eyebrow{color:#3370ff;font-weight:700}
h2.sec .cn{background:rgba(51,112,255,.08)}
h2.sec{align-items:center}

/* 7. 法则卡正面编号统一蓝、卡片留白收紧 */
.law .front .no{color:#3370ff}

/* 8. 术语/风格/案例标签统一蓝系 */
.term .cat{color:#3370ff;border-color:rgba(51,112,255,.25)}
.term .fuzzy i{color:#8f959e}
.st-use{color:#3370ff}
.style-card .st-org{color:#8f959e}
.case .scene{color:#8f959e;border-color:var(--line)}
.case .ctake{color:#1f2329}

/* 9. 阶段卡（入门）：序号中性，当前蓝边 */
.stage .sno{color:#c9cdd4}
.stage.cur .sno{color:#3370ff}
.stage.done .sno{color:#00b42a}

/* 10. 眼力页统一 */
.eye-prog{color:#1f2329}
.eye-panel{background:#f7f8fa;border-color:var(--line)}
.eye-panel:hover{box-shadow:var(--sh-md)}
.eye-end .kanji{color:#3370ff}

/* 11. 课程详情：分割线更轻、要点菱形改小方块 */
.point::before{content:'';width:5px;height:5px;background:#3370ff;border-radius:1px;top:22px}
.miss::before{color:#f53f3f}
.core{background:rgba(51,112,255,.05);border-left-color:#3370ff}
.core::before{color:#3370ff}
.practice{background:#f7f8fa;border-color:var(--line)}
.practice::before{color:#8f959e}
.subhead{color:#1f2329}

/* 12. 输入/选择控件统一焦点 */
input:focus,select:focus,textarea:focus{border-color:#3370ff !important;box-shadow:0 0 0 3px rgba(51,112,255,.12)}

/* 13. 品牌区细节 */
.brand small{color:#8f959e}
#subnav button{border-radius:8px}

/* 14. 页脚 */
footer{color:#8f959e}

/* 15. 学习模块序号恢复识别度：浅蓝底数字徽章 */
.mod .num{background:#f2f3f5;border-radius:10px;width:44px;height:44px;display:grid;place-items:center;font-size:18px;color:#646a73}
.mod .num small{display:none}
.mod{grid-template-columns:56px 1fr}


/* ===== 精修轮 2：审计修复 ===== */
/* eyebrow 拉丁字距收敛 */
.eyebrow{letter-spacing:2px;font-weight:700}
h2.sec .en{letter-spacing:2px}
.lesson-meta{letter-spacing:1px}
/* 风格详情预览不被拉宽变形 */
.stw.big .sw-site{width:min(430px,86%)}
.stw.big{height:300px}
/* 眼力面板：与底色拉开对比、手机垂直居中 */
.eye-panel{background:#eceff3;border:1px solid #dee2e8;align-items:center}
.eye-panel .tag{background:#fff;box-shadow:var(--sh-sm)}
/* 要点小方块与行距微调 */
.point::before{top:23px}
/* 阶段卡序号美化 */
.stage .sno{font-size:15px;font-weight:800;color:#fff;background:#c9cdd4;border-radius:9px;width:40px;height:40px;display:grid;place-items:center;font-family:var(--sans)}
.stage.cur .sno{background:#3370ff}
.stage.done .sno{background:#00b42a}
/* 案例详情"它做了什么"编号配色 */
.readcol .point b{color:#3370ff}
/* 法则背面可读性 */
.law .back .src{letter-spacing:1px}
/* 术语脚注分隔更清晰 */
.term .tfoot{border-top:1px dashed var(--line2);padding-top:10px}
/* 要旨盒标签与盒体间距 */
.core::before{margin-bottom:6px}

.stage .sno{color:#fff !important}

/* ===== 精修轮 3 ===== */
/* 眼力开场徽章 */
.eye-end .kanji{width:64px;height:64px;border-radius:16px;background:#3370ff;color:#fff;font-size:30px;font-weight:800;display:grid;place-items:center;margin:0 auto 18px;font-family:var(--sans)}
/* 案例卡：底部链接固定对齐 */
.case{display:flex;flex-direction:column}
.case .st-more{margin-top:auto;padding-top:12px}
/* 法则卡收紧 */
.law{min-height:164px}
.law .face{padding:16px 18px}
/* 术语/风格/任务卡底对齐 */
.term{display:flex;flex-direction:column}
.term .tfoot{margin-top:auto}
/* 资源卡 hover 统一 */
.res-card{position:relative}
/* 答题反馈卡边距 */
.eye-exp .card{padding:16px 18px}
/* 同步页 select 宽度 */
.sync-card select{width:100%;max-width:420px}
/* 移动端：案例/详情翻页按钮不溢出 */
@media(max-width:640px){.lesson-foot .btn{font-size:12px;padding:9px 14px}}


/* ---------- 实验室 ---------- */
.lab{margin-bottom:16px}
.lab-rel{font-size:11px;color:#8f959e;font-weight:400;margin-left:10px;font-family:var(--sans)}
.lab-grid{display:grid;grid-template-columns:280px 1fr;gap:20px;margin-top:14px}
@media(max-width:720px){.lab-grid{grid-template-columns:1fr}}
.lab-ctl label{display:block;font-size:11px;font-weight:700;letter-spacing:1px;color:#8f959e;margin:14px 0 6px}
.lab-ctl label:first-child{margin-top:0}
.lab-colorrow{display:flex;align-items:center;gap:10px}
.lab-colorrow input[type=color]{width:44px;height:32px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:2px;cursor:pointer}
.lab-colorrow input[type=range]{flex:1;accent-color:#3370ff}
.lab-hex{font-family:ui-monospace,Menlo,monospace;font-size:12px;color:#646a73}
.lab-ctl select{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:13px;color:var(--ink);outline:none}
.lab-presets{margin-top:14px;font-size:11px;color:#8f959e;line-height:2}
.lab-presets button{border:1px solid var(--line);background:#fff;border-radius:6px;padding:3px 9px;font-size:11px;color:#646a73;margin:2px 2px 2px 0}
.lab-presets button:hover{border-color:#3370ff;color:#3370ff}
.lab-out{min-width:0}
.lc-prev{border:1px solid var(--line);border-radius:12px;padding:18px 20px}
.lc-prev b{font-size:15px}
.lc-prev p{font-size:12.5px;margin-top:6px;line-height:1.8}
.lc-verdict{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px}
.lc-ratio{font-family:ui-monospace,Menlo,monospace;font-weight:800;font-size:17px;color:var(--ink)}
.lab-badge{font-size:11px;font-weight:700;padding:4px 10px;border-radius:99px}
.lab-badge.ok{background:rgba(0,180,42,.1);color:#00b42a}
.lab-badge.no{background:rgba(245,63,63,.08);color:#f53f3f}
.lt-row{display:flex;align-items:baseline;gap:14px;padding:7px 0;border-bottom:1px dashed var(--line2)}
.lt-row:last-child{border:none}
.lt-meta{flex:none;width:130px;font-size:10.5px;color:#8f959e;font-family:ui-monospace,Menlo,monospace}
.lt-sample{color:#1f2329;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lp-row{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px dashed var(--line2);cursor:pointer}
.lp-row:hover .lp-hex{color:#3370ff}
.lp-row:last-of-type{border:none}
.lp-bar{height:26px;border-radius:6px;flex:none;min-width:30px;border:1px solid rgba(0,0,0,.08)}
.lp-name{font-size:12px;color:#646a73;flex:1}
.lp-hex{font-family:ui-monospace,Menlo,monospace;font-size:12px;color:#8f959e;font-weight:500}
.lp-prev{margin-top:14px}
.lp-demo{border-radius:12px;padding:16px;border:1px solid rgba(0,0,0,.06)}
.lp-card{border-radius:10px;padding:14px}
.lp-btn{display:inline-block;color:#fff;font-size:11px;font-weight:700;padding:6px 14px;border-radius:6px;margin-top:10px}


/* ---------- 动效实验室 ---------- */
.mo-card{padding:14px}
.mo-stage{height:132px;background:#f2f3f5;border:1px solid var(--line2);border-radius:10px;display:flex;align-items:center;justify-content:center;overflow:hidden;margin-bottom:12px}
.mo-param{margin-left:auto;font-size:10px;color:#3370ff;background:rgba(51,112,255,.08);padding:2px 9px;border-radius:6px;font-family:ui-monospace,Menlo,monospace}
.mo-row{display:flex;align-items:center;gap:10px;margin:6px 0}
.mo-lb{flex:none;width:52px;font-size:9.5px;color:#8f959e;font-family:ui-monospace,Menlo,monospace;text-align:right}
.mo-track{position:relative;width:180px;height:2px;background:#d8dce2;border-radius:2px}
.mo-dot{position:absolute;top:-5px;left:0;width:12px;height:12px;border-radius:50%;background:#3370ff;animation:mo-slide 2.4s infinite}
@keyframes mo-slide{0%{left:0}42%{left:calc(100% - 12px)}58%{left:calc(100% - 12px)}100%{left:0}}
.mo-t1{animation-timing-function:linear}
.mo-t2{animation-timing-function:cubic-bezier(.2,.8,.2,1)}
.mo-t3{animation-timing-function:cubic-bezier(.34,1.56,.64,1)}
.mo-d1{animation-duration:.9s}
.mo-d2{animation-duration:2.4s}
.mo-d3{animation-duration:5.5s}
.mo-flex{display:flex;gap:10px;align-items:center}
.mo-chip{width:38px;height:38px;border-radius:10px;background:#3370ff;opacity:0;animation:mo-rise 3.2s infinite}
.mo-chip:nth-child(2){animation-delay:.12s}
.mo-chip:nth-child(3){animation-delay:.24s}
.mo-chip:nth-child(4){animation-delay:.36s}
.mo-chip:nth-child(5){animation-delay:.48s}
@keyframes mo-rise{0%{opacity:0;transform:translateY(14px)}18%{opacity:1;transform:none}78%{opacity:1}94%{opacity:0}100%{opacity:0}}
.mo-hcard{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 26px;font-size:13px;font-weight:600;color:#646a73;cursor:pointer;transition:.2s cubic-bezier(.2,.8,.2,1);box-shadow:var(--sh-sm)}
.mo-hcard:hover{transform:translateY(-4px);box-shadow:var(--sh-lg);color:#3370ff;border-color:rgba(51,112,255,.4)}
.mo-press{border:none;background:#3370ff;color:#fff;font-size:13px;font-weight:700;padding:12px 30px;border-radius:9px;transition:transform .1s;box-shadow:0 3px 10px rgba(51,112,255,.3)}
.mo-press:active{transform:scale(.94)}
.mo-popel{font-size:38px;animation:mo-popin 2.2s cubic-bezier(.34,1.56,.64,1) infinite}
@keyframes mo-popin{0%{transform:scale(0);opacity:0}25%{opacity:1}45%{transform:scale(1)}80%{transform:scale(1);opacity:1}100%{transform:scale(1);opacity:0}}
.mo-ava{width:36px;height:36px;border-radius:50%;background:linear-gradient(90deg,#e8eaee 25%,#f5f6f8 50%,#e8eaee 75%);background-size:200% 100%;animation:mo-shim 1.2s infinite;flex:none}
.mo-sk{height:12px;border-radius:6px;background:linear-gradient(90deg,#e8eaee 25%,#f5f6f8 50%,#e8eaee 75%);background-size:200% 100%;animation:mo-shim 1.2s infinite}
@keyframes mo-shim{to{background-position:-200% 0}}
.mo-count{font-size:38px;font-weight:800;color:#3370ff;font-family:ui-monospace,Menlo,monospace}
.mo-unit{font-size:16px;color:#8f959e;margin-left:2px}
.mo-stage2{position:relative;width:180px;height:84px}
.mo-page{position:absolute;inset:0;border-radius:10px;display:grid;place-items:center;font-size:13px;font-weight:700}
.mo-pa{background:#3370ff;color:#fff;animation:mo-xfade 4s infinite}
.mo-pb{background:#1f2329;color:#fff;animation:mo-xfade 4s infinite reverse}
@keyframes mo-xfade{0%{opacity:1;transform:none}45%{opacity:1}50%{opacity:0;transform:translateY(8px)}95%{opacity:0}100%{opacity:1;transform:none}}
.mo-heart{position:relative;font-size:36px;color:#f53f3f;animation:mo-beat 1.8s infinite}
@keyframes mo-beat{0%,100%{transform:scale(1)}10%{transform:scale(1.35)}22%{transform:scale(1)}}
.mo-ring{position:absolute;inset:-6px;border:2px solid #f53f3f;border-radius:50%;opacity:0;animation:mo-ring 1.8s infinite}
@keyframes mo-ring{8%{opacity:.7;transform:scale(.6)}45%{opacity:0;transform:scale(1.6)}100%{opacity:0}}
@media (prefers-reduced-motion: reduce){.mo-stage *{animation-duration:.01s !important;animation-iteration-count:1 !important}}

/* ---------- AI 原生：导师浮窗 ---------- */
#aiFab{position:fixed;right:22px;bottom:22px;z-index:90;width:54px;height:54px;border-radius:50%;border:none;cursor:pointer;
  background:linear-gradient(135deg,var(--verm) 0%,#a3301c 100%);color:#fff;font-size:15px;font-weight:700;
  box-shadow:0 6px 22px rgba(216,64,31,.4);transition:.25s;display:flex;align-items:center;justify-content:center;gap:4px}
#aiFab:hover{transform:translateY(-3px) scale(1.04)}
#aiFab.open{transform:scale(0);pointer-events:none}
#aiPanel{position:fixed;right:22px;bottom:22px;z-index:91;width:400px;max-width:calc(100vw - 32px);height:560px;max-height:calc(100vh - 60px);
  display:none;flex-direction:column;background:var(--paper);border:1px solid var(--line);border-radius:18px;
  box-shadow:0 18px 60px rgba(20,18,16,.25);overflow:hidden;animation:ai-in .22s ease}
#aiPanel.open{display:flex}
@keyframes ai-in{from{opacity:0;transform:translateY(14px)}to{opacity:1}}
#aiPanel header{flex:none;display:flex;align-items:center;gap:10px;padding:13px 16px;background:linear-gradient(135deg,var(--verm),#a3301c);color:#fff;border:none}
#aiPanel header .ai-seal{flex:none;width:30px;height:30px;border-radius:8px;background:rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center;font-weight:800}
#aiPanel header .tt{flex:1;min-width:0}
#aiPanel header .tt b{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#aiPanel header .tt small{font-size:10.5px;opacity:.85}
#aiPanel header button{flex:none;background:none;border:none;color:#fff;font-size:19px;cursor:pointer;padding:2px 6px;line-height:1}
#aiMsgs{flex:1;overflow-y:auto;padding:16px 14px;display:flex;flex-direction:column;gap:12px;background:var(--bg,#f7f5f0)}
.ai-m{max-width:86%;font-size:13px;line-height:1.8;padding:10px 13px;border-radius:12px;white-space:pre-wrap;word-break:break-word}
.ai-m.u{align-self:flex-end;background:var(--verm);color:#fff;border-bottom-right-radius:4px}
.ai-m.a{align-self:flex-start;background:var(--paper);border:1px solid var(--line);border-bottom-left-radius:4px;color:var(--txt)}
.ai-m.a b{color:var(--ink)}
.ai-m.typing::after{content:'▍';animation:ai-blink 1s infinite;color:var(--verm)}
@keyframes ai-blink{50%{opacity:0}}
#aiComposer{flex:none;display:flex;gap:8px;padding:12px;border-top:1px solid var(--line);background:var(--paper)}
#aiInput{flex:1;resize:none;border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-size:13px;font-family:inherit;background:var(--bg,#f7f5f0);min-height:40px;max-height:110px}
#aiInput:focus{outline:none;border-color:var(--verm)}
#aiSend{flex:none;align-self:flex-end;border:none;border-radius:10px;background:var(--verm);color:#fff;font-weight:700;padding:9px 16px;cursor:pointer;font-size:13px}
#aiSend:disabled{opacity:.45;cursor:default}
#aiPanel .ai-hint{flex:none;padding:6px 14px 8px;font-size:10.5px;color:var(--faint);background:var(--paper);border-top:1px dashed var(--line)}

/* ============ AI 原生组件（文字与界面混排） ============ */
.bk-text{margin:2px 0}
.bk{margin:12px 0;border-radius:14px;overflow:hidden;border:1px solid var(--line);background:var(--card);box-shadow:var(--sh-sm);animation:bk-in .4s cubic-bezier(.2,.8,.3,1)}
@keyframes bk-in{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
.bk-cap{padding:9px 14px;font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--ink2);background:var(--card2);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:6px}
/* 对比卡 */
.bk-cmp-row{display:grid;grid-template-columns:1fr 1fr;gap:0}
.bk-cmp{padding:14px;position:relative}
.bk-cmp.bad{background:#fff5f4;border-right:1px dashed var(--line)}
.bk-cmp.good{background:#f2fbf4}
.bk-cmp-tag{display:inline-block;font-size:10px;font-weight:700;padding:2px 8px;border-radius:20px;margin-bottom:8px}
.bk-cmp.bad .bk-cmp-tag{background:#ffece8;color:#f53f3f}
.bk-cmp.good .bk-cmp-tag{background:#dcf5e3;color:#00b42a}
.bk-cmp-t{font-size:13px;font-weight:700;color:var(--ink);line-height:1.5}
.bk-cmp-d{font-size:12px;color:var(--txt);margin-top:5px;line-height:1.6}
/* 步骤条 */
.bk-step-list{padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.bk-step{display:flex;gap:12px;padding:6px 0;position:relative}
.bk-step:not(:last-child)::before{content:'';position:absolute;left:12px;top:32px;bottom:-6px;width:2px;background:linear-gradient(var(--verm),transparent)}
.bk-step-n{flex:none;width:25px;height:25px;border-radius:50%;background:var(--verm);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(51,112,255,.3)}
.bk-step-t{font-size:13px;font-weight:700;color:var(--ink);line-height:1.5}
.bk-step-d{font-size:12px;color:var(--txt);margin-top:2px;line-height:1.6}
/* 法则演示 */
.bk-law-stage{padding:16px 14px;background:linear-gradient(160deg,#fafbff,#f0f4ff)}
.bk-law-q{font-size:12.5px;color:var(--ink2);margin-bottom:12px;line-height:1.6}
.bk-law-ctl{display:flex;gap:10px;margin-bottom:12px}
.bk-law-go{flex:1;border:1.5px solid var(--verm);background:#fff;color:var(--verm);font-weight:700;font-size:12.5px;padding:9px;border-radius:10px;cursor:pointer;transition:.2s}
.bk-law-go:hover{background:var(--verm);color:#fff;transform:translateY(-1px)}
.bk-law-btns{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0;min-height:44px}
.bk-law-btn{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 13px;font-size:12px;cursor:pointer;transition:.15s}
.bk-law-btn:hover{border-color:var(--verm);transform:scale(1.05)}
.bk-law-btn.tgt{background:var(--gold);border-color:var(--gold);color:#fff;font-weight:700}
.bk-law-fitts{position:relative;height:150px;background:#fff;border:1px dashed var(--line);border-radius:10px;margin:10px 0;overflow:hidden}
.bk-ft{position:absolute;width:26px;height:26px;border-radius:50%;border:none;background:var(--verm);color:#fff;font-size:9px;cursor:pointer;box-shadow:0 2px 8px rgba(51,112,255,.4);transition:transform .15s}
.bk-ft.big{width:56px;height:56px;font-size:14px}
.bk-ft:hover{transform:scale(1.15)}
.bk-law-t{font-size:12px;color:var(--faint);min-height:18px;margin-top:6px;transition:.3s}
.bk-law-t.on{color:var(--verm);font-weight:700;font-size:13px}
/* 即时练习 */
.bk-quiz-q{padding:14px 14px 6px;font-size:13.5px;font-weight:700;color:var(--ink);line-height:1.6}
.bk-quiz-opts{padding:8px 14px 14px;display:flex;flex-direction:column;gap:8px}
.bk-quiz-op{text-align:left;border:1.5px solid var(--line);background:#fff;border-radius:10px;padding:11px 13px;font-size:13px;cursor:pointer;transition:.2s;color:var(--ink)}
.bk-quiz-op:hover{border-color:var(--verm);background:#f7faff;transform:translateX(3px)}
.bk-quiz-op.win{border-color:var(--jade);background:#f2fbf4;color:#00b42a;font-weight:700}
.bk-quiz-op.lose{border-color:#f53f3f;background:#fff5f4;color:#f53f3f}
.bk-quiz-exp{margin:0 14px 14px;padding:11px 13px;background:var(--card2);border-left:3px solid var(--verm);border-radius:0 10px 10px 0;font-size:12.5px;color:var(--txt);line-height:1.7;animation:bk-in .3s}
@media(max-width:520px){.bk-cmp-row{grid-template-columns:1fr}.bk-cmp.bad{border-right:none;border-bottom:1px dashed var(--line)}}

/* AI 学习指挥官 */
.cmdr{border:1px solid var(--line);border-left:3px solid var(--verm);background:linear-gradient(150deg,#fff,#f7faff);margin-bottom:20px}
.cmdr-h{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.cmdr-seal{width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,var(--verm),var(--verm-deep));color:#fff;display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:700;box-shadow:0 4px 12px rgba(51,112,255,.3)}
.cmdr-tt{flex:1;min-width:180px}
.cmdr-tt b{display:block;font-size:15px;color:var(--ink)}
.cmdr-tt small{font-size:11.5px;color:var(--faint)}
#cmdrOut{margin-top:4px}
.cmdr-loading{display:flex;align-items:center;gap:5px;padding:16px 4px 6px;font-size:13px;color:var(--ink2)}
.cmdr-loading i{width:6px;height:6px;border-radius:50%;background:var(--verm);animation:cmdr-dot 1.2s infinite}
.cmdr-loading i:nth-child(2){animation-delay:.15s}.cmdr-loading i:nth-child(3){animation-delay:.3s}
@keyframes cmdr-dot{0%,60%,100%{transform:translateY(0);opacity:.4}30%{transform:translateY(-5px);opacity:1}}
.cmdr-sum{padding:14px 4px 4px;font-size:14px;font-weight:700;color:var(--ink);line-height:1.6}
.cmdr-steps{padding:6px 0 4px;display:flex;flex-direction:column;gap:8px}
.cmdr-step{display:flex;align-items:center;gap:12px;padding:11px 13px;background:#fff;border:1px solid var(--line);border-radius:12px;transition:.2s;animation:bk-in .4s}
.cmdr-step:hover{border-color:var(--verm);box-shadow:var(--sh-sm);transform:translateX(3px)}
.cmdr-n{flex:none;width:26px;height:26px;border-radius:50%;color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center}
.cmdr-b{flex:1;min-width:0}
.cmdr-b b{display:block;font-size:13.5px;color:var(--ink)}
.cmdr-b p{font-size:11.5px;color:var(--faint);margin-top:2px}
.cmdr-tag{flex:none;font-size:11px;font-weight:700}
.cmdr-go{flex:none;padding:6px 16px;font-size:12px}
.cmdr-err{padding:14px 4px;font-size:13px;color:#f53f3f}

/* AI 补漏微课 */
.micro{margin-top:18px;border:1px solid var(--jade);border-left:3px solid var(--jade);border-radius:14px;background:linear-gradient(150deg,#fff,#f4fbf6);overflow:hidden;animation:bk-in .4s}
.micro-h{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#f0faf3;border-bottom:1px solid #dcf5e3;flex-wrap:wrap}
.micro-seal{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--jade),#009a24);color:#fff;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700}
.micro-h b{font-size:14px;color:var(--ink);flex:1;min-width:150px}
.micro-ok{font-size:11px;color:var(--jade);font-weight:700}
.micro-body{padding:4px 16px 16px}
.micro-loading{display:flex;align-items:center;gap:5px;padding:20px 16px;font-size:13px;color:var(--ink2)}
.micro-loading i{width:6px;height:6px;border-radius:50%;background:var(--jade);animation:cmdr-dot 1.2s infinite}
.micro-loading i:nth-child(2){animation-delay:.15s}.micro-loading i:nth-child(3){animation-delay:.3s}
.micro-err{padding:16px;font-size:13px;color:#f53f3f}

/* AI 情境题（眼力 AI 模式）与批改 */
.ai-opts{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:18px}
@media (max-width:640px){.ai-opts{grid-template-columns:1fr}}
.ai-opt{position:relative;text-align:left;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:18px 18px 16px;cursor:pointer;transition:.2s;font-family:inherit}
.ai-opt:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--sh-md)}
.ai-opt:disabled{cursor:default}
.ai-opt .ot{display:inline-block;font-weight:800;font-size:12px;color:var(--verm);border:1px solid rgba(216,64,31,.4);border-radius:99px;padding:2px 10px;margin-bottom:10px}
.ai-opt p{font-size:13px;line-height:1.9;color:var(--txt);margin:0}
.ai-opt.win{border-color:var(--jade);box-shadow:0 0 0 2px rgba(34,117,92,.25)}
.ai-opt.lose{border-color:var(--verm);opacity:.75}
.ai-loading{display:flex;align-items:center;gap:10px;color:var(--faint);font-size:13px;padding:30px 0;justify-content:center}
.ai-loading i{width:8px;height:8px;border-radius:50%;background:var(--verm);animation:ai-dot 1s infinite}
.ai-loading i:nth-child(2){animation-delay:.2s}.ai-loading i:nth-child(3){animation-delay:.4s}
@keyframes ai-dot{0%,100%{opacity:.25;transform:scale(.8)}50%{opacity:1;transform:scale(1.1)}}
/* 实训批改弹层 */
#gradeMask{position:fixed;inset:0;z-index:95;background:rgba(20,18,16,.5);display:none;align-items:flex-start;justify-content:center;padding:6vh 16px;overflow-y:auto}
#gradeMask.open{display:flex}
#gradeBox{width:720px;max-width:100%;background:var(--paper);border-radius:16px;box-shadow:0 24px 80px rgba(20,18,16,.35);padding:26px 28px;animation:ai-in .22s ease}
#gradeBox h3{margin:0 0 4px;font-size:18px;color:var(--ink)}
#gradeBox .gb-sub{font-size:12px;color:var(--faint);margin-bottom:14px}
#gradeTa{width:100%;min-height:150px;resize:vertical;border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-size:13px;line-height:1.8;font-family:inherit;background:var(--bg,#f7f5f0)}
#gradeTa:focus{outline:none;border-color:var(--verm)}
#gradeOut{margin-top:16px;font-size:13px;line-height:2;color:var(--txt);white-space:pre-wrap;word-break:break-word;border-top:1px dashed var(--line);padding-top:14px;display:none}
#gradeBox .gb-req{font-size:12px;color:var(--ink2);background:var(--bg,#f7f5f0);border-radius:10px;padding:10px 14px;margin-bottom:12px;line-height:1.9}

/* ---------- a11y：键盘焦点可见 + 全局减弱动效 ---------- */
:focus-visible{outline:2px solid var(--verm);outline-offset:2px;border-radius:4px}
.eye-panel:focus-visible{outline:3px solid var(--verm)}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
  html{scroll-behavior:auto}
}

/* ================= v7 · 编辑型学习台（Image2 方向落地） =================
   目标：一条清晰的学习主线；暖象牙纸面、墨色正文、克制 cobalt 行动色。
   这一层集中覆盖旧换肤，便于后续独立拆分，不改课程、状态、路由和 AI 协议。 */
:root{
  --bg:#f3efe6;
  --card:#fffdf8;
  --card2:#f7f3ea;
  --paper:#fbf8f1;
  --paper-2:#fffdf8;
  --paper-3:#eee9df;
  --line:#d9d3c7;
  --line2:#e8e2d7;
  --line-soft:#e5ded2;
  --ink:#181a17;
  --ink2:#3f443e;
  --ink-soft:#555b54;
  --ink-faint:#696e67;
  --txt:#454a44;
  --faint:#696e67;
  --bone:#181a17;
  --verm:#2458ad;
  --verm-hi:#356fcf;
  --verm-deep:#173f82;
  --jade:#2f715c;
  --gold:#b48427;
  --indigo:#2458ad;
  --orange:#a96925;
  --serif:'Songti SC','STSong','Noto Serif SC','Noto Serif CJK SC',serif;
  --sans:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei','Noto Sans SC',sans-serif;
  --brush:'Songti SC','STSong','Noto Serif SC',serif;
  --sh-sm:0 1px 1px rgba(36,32,25,.04),0 5px 18px rgba(36,32,25,.045);
  --sh-md:0 12px 34px rgba(36,32,25,.09);
  --sh-lg:0 22px 64px rgba(36,32,25,.15);
}
body{
  background-color:var(--bg);
  background-image:
    radial-gradient(circle at 12% 4%,rgba(255,255,255,.9),transparent 31rem),
    radial-gradient(circle at 88% 18%,rgba(36,88,173,.035),transparent 27rem),
    linear-gradient(115deg,rgba(255,255,255,.18),transparent 42%);
  color:var(--ink2);
}
#app{max-width:1240px;padding:0 30px 110px}
.skip-link{
  position:fixed;z-index:120;top:8px;left:8px;transform:translateY(-160%);padding:10px 14px;border-radius:8px;
  background:var(--ink);color:#fff;font-size:13px;font-weight:700;transition:transform .18s ease
}
.skip-link:focus{transform:translateY(0)}
.sr-only{
  position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;
  overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important
}
:focus-visible{outline:3px solid var(--verm);outline-offset:3px;border-radius:6px}

/* v7 header / navigation */
header{
  min-height:82px;padding:14px 0;gap:22px;flex-wrap:nowrap;
  background:rgba(248,245,238,.9);border-bottom-color:var(--line);
  backdrop-filter:blur(18px) saturate(1.1)
}
header::before{
  content:'';position:fixed;z-index:-1;top:0;left:0;right:0;width:auto;height:82px;transform:none;
  background:inherit;border-bottom:1px solid var(--line)
}
.brand{gap:13px;min-width:max-content}
.seal{
  width:44px;height:44px;line-height:44px;border-radius:12px;transform:none;
  background:linear-gradient(145deg,#2f6bcb,#174489);font-family:var(--serif);font-size:23px;font-weight:900;
  box-shadow:0 7px 18px rgba(28,75,151,.22),inset 0 1px 0 rgba(255,255,255,.35)
}
.brand h1{font-family:var(--serif);font-size:23px;font-weight:900;letter-spacing:.08em;color:var(--ink)}
.brand small{margin-top:2px;color:#5f645e;font-size:9.5px;letter-spacing:.22em}
nav{gap:16px;margin-left:auto;overflow:visible}
nav button{
  position:relative;min-height:44px;padding:0 7px;border-radius:0;color:#4f544e;font-size:14px;font-weight:600
}
nav button:hover{color:var(--ink);background:transparent}
nav button.on{color:var(--verm);background:transparent;box-shadow:none}
nav button.on::after{
  content:'';position:absolute;left:7px;right:7px;bottom:-15px;height:3px;border-radius:99px;background:var(--verm)
}
.userchip{
  min-height:44px;padding:6px 14px 6px 9px;background:rgba(255,253,248,.82);border-color:#cfc8bc;box-shadow:none
}
.userchip:hover{border-color:var(--verm);box-shadow:none}
.userchip .nm{font-weight:600}.userchip .st{color:var(--verm)}
#subnav{top:82px;background:rgba(248,245,238,.94);border-bottom-color:var(--line)}
#subnav button{min-height:44px}

main{padding-top:0}
.card{background:rgba(255,253,248,.9);border-color:var(--line);box-shadow:var(--sh-sm)}
.btn{min-height:44px;border-radius:8px;padding:10px 20px;background:var(--verm);box-shadow:0 7px 16px rgba(36,88,173,.2)}
.btn:hover{background:var(--verm-deep);box-shadow:0 9px 22px rgba(36,88,173,.25)}
.btn.ghost{background:transparent;border-color:#bfc5ca;color:var(--ink);box-shadow:none}
.btn.ghost:hover{background:rgba(36,88,173,.05);border-color:var(--verm);color:var(--verm);box-shadow:none}

/* v7 dashboard structure */
.v7-dashboard{padding:0 0 12px}
.v7-dashboard .card:hover{transform:none}
.v7-overview{
  display:grid;grid-template-columns:minmax(0,1.02fr) minmax(460px,.98fr);align-items:end;gap:58px;
  padding:58px 4px 36px;border-bottom:1px solid var(--line)
}
.v7-kicker{
  display:flex;align-items:center;gap:10px;margin-bottom:14px;color:var(--verm);font-size:11px;font-weight:800;letter-spacing:.22em
}
.v7-kicker::before{content:'';width:38px;height:3px;border-radius:99px;background:var(--verm)}
.v7-greeting h2{
  max-width:660px;color:var(--ink);font-family:var(--serif);font-size:clamp(38px,4.2vw,55px);font-weight:900;line-height:1.28;letter-spacing:.01em
}
.v7-greeting h2 em{font-style:normal;color:inherit}
.v7-date{margin-top:17px;color:#555b54;font-size:13px;letter-spacing:.04em}
.v7-quote-line{margin-top:16px;color:#5b615a;font-family:var(--serif);font-size:13px;line-height:1.8}
.v7-quote-line span{margin-left:8px;color:#777c75;font-family:var(--sans);font-size:11px}
.v7-progress{padding:7px 0 1px 48px;border-left:1px solid var(--line)}
.v7-progress-head{display:flex;align-items:end;justify-content:space-between;gap:20px}
.v7-progress-label{display:block;margin-bottom:4px;color:#555b54;font-size:13px;font-weight:600}
.v7-progress-value{color:var(--ink);font-family:var(--serif);font-size:49px;font-weight:900;line-height:1}
.v7-progress-value small{font-family:var(--sans);font-size:16px;font-weight:500}
.v7-progress-copy{padding-bottom:4px;text-align:right;color:#555b54;font-size:12px;line-height:1.7}
.v7-course-bar{height:5px;margin-top:20px;overflow:hidden;border-radius:99px;background:#dfdbd3}
.v7-course-bar i{display:block;height:100%;border-radius:inherit;background:var(--verm);transition:width .7s cubic-bezier(.2,.8,.2,1)}
.v7-ladder{display:flex;align-items:start;margin-top:20px;list-style:none}
.v7-ladder li{position:relative;flex:1;padding-top:20px;text-align:center;color:#777c75;font-size:10.5px;line-height:1.45}
.v7-ladder li::before{
  content:'';position:absolute;z-index:2;top:0;left:50%;width:11px;height:11px;transform:translateX(-50%);
  border:2px solid #cbc7c0;border-radius:50%;background:var(--paper)
}
.v7-ladder li::after{content:'';position:absolute;top:6px;right:50%;width:100%;height:1px;background:#d2cec7}
.v7-ladder li:first-child::after{display:none}
.v7-ladder li.done::before{border-color:var(--verm);background:var(--verm)}
.v7-ladder li.done::after,.v7-ladder li.cur::after{background:var(--verm)}
.v7-ladder li.cur{color:var(--verm);font-weight:800}
.v7-ladder li.cur::before{border-color:var(--verm);background:var(--paper);box-shadow:0 0 0 4px rgba(36,88,173,.13)}
.v7-ladder small{display:block;margin-top:2px;color:#8a8f88;font-size:9px;font-weight:500}

.v7-main-grid{display:grid;grid-template-columns:minmax(0,1.32fr) minmax(360px,.88fr);gap:22px;margin-top:28px}
.v7-focus-card{
  position:relative;display:grid;grid-template-columns:64px 126px minmax(0,1fr);min-height:352px;padding:0;overflow:hidden;
  border-color:#cbc5b9;background:linear-gradient(125deg,rgba(255,255,255,.82),rgba(255,253,248,.96));box-shadow:var(--sh-md)
}
.v7-focus-card::after{
  content:'';position:absolute;right:-70px;bottom:-90px;width:250px;height:250px;border:1px solid rgba(36,88,173,.08);border-radius:50%;pointer-events:none
}
.v7-ribbon{
  position:relative;z-index:1;display:flex;align-items:center;justify-content:center;padding:18px 0;
  background:linear-gradient(180deg,#2f6dca,#17478f);color:#fff;font-size:13px;font-weight:800;letter-spacing:.17em;
  writing-mode:vertical-rl
}
.v7-course-art{
  align-self:center;height:260px;margin-left:22px;border:1px solid #d3cdc2;border-radius:10px;
  background:linear-gradient(155deg,rgba(255,255,255,.8),rgba(236,232,224,.62));box-shadow:0 8px 22px rgba(45,40,31,.08);
  color:#aaa79f;overflow:hidden;position:relative
}
.v7-course-art .no{padding:24px 17px 0;font-family:var(--serif);font-size:42px;line-height:1}
.v7-course-art .cap{padding:11px 18px 0;font-size:11px;letter-spacing:.18em}
.v7-course-art .glyph{position:absolute;right:-10px;bottom:-28px;font-family:Georgia,serif;font-size:128px;line-height:1;color:rgba(95,98,93,.13)}
.v7-course-art::before,.v7-course-art::after{content:'';position:absolute;left:18px;width:66px;height:8px;background:rgba(91,94,90,.14)}
.v7-course-art::before{bottom:42px}.v7-course-art::after{bottom:24px;width:42px}
.v7-focus-body{position:relative;z-index:1;align-self:center;padding:36px 42px 36px 46px}
.v7-focus-eyebrow{display:flex;align-items:center;gap:10px;color:var(--ink);font-size:13px;font-weight:700}
.v7-focus-eyebrow::before{content:'';width:9px;height:9px;border-radius:50%;background:var(--verm)}
.v7-focus-body h3{margin:20px 0 9px;color:var(--ink);font-family:var(--serif);font-size:38px;font-weight:900;line-height:1.25}
.v7-focus-meta{display:flex;align-items:center;gap:9px;color:#565c55;font-size:13px}
.v7-focus-meta svg{width:18px;height:18px;color:#737871}
.v7-focus-desc{margin:21px 0 23px;padding-top:18px;border-top:1px solid var(--line);color:#3f453f;font-size:13px;line-height:1.8}
.v7-primary-cta{min-width:188px;justify-content:center;font-size:15px}
.v7-primary-cta::after{content:'→';font-size:18px;line-height:1}

.v7-metrics{display:grid;grid-template-columns:1fr 1fr;align-content:stretch;border:1px solid var(--line);border-radius:12px;background:rgba(255,253,248,.72);box-shadow:var(--sh-sm);overflow:hidden}
.v7-metric{min-height:176px;padding:25px 25px 20px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.v7-metric:nth-child(2n){border-right:none}.v7-metric:nth-last-child(-n+2){border-bottom:none}
.v7-metric-head{display:flex;align-items:center;gap:12px}
.v7-metric-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:rgba(24,26,23,.045);color:var(--ink)}
.v7-icon{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.v7-metric-title b{display:block;color:var(--ink);font-family:var(--serif);font-size:17px;font-weight:800}
.v7-metric-title span{display:block;margin-top:2px;color:#747971;font-size:11px}
.v7-metric p{margin-top:18px;color:#424741;font-size:12.5px;line-height:1.75}
.v7-metric small{display:block;margin-top:4px;color:#737871;font-size:11px;line-height:1.55}
.v7-text-action{
  min-height:44px;margin-top:5px;padding:4px 0;border:0;background:transparent;color:var(--verm);font-size:11px;font-weight:700;text-align:left
}
.v7-text-action:hover{text-decoration:underline;text-underline-offset:3px}

.v7-state-stack{display:grid;gap:10px;margin-top:14px}
.v7-state-note{display:flex;align-items:center;gap:14px;min-height:66px;padding:10px 14px 10px 17px;border:1px solid var(--line);border-radius:10px;background:rgba(255,253,248,.62)}
.v7-state-note .mark{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:50%;background:rgba(36,88,173,.09);color:var(--verm);font-family:var(--serif);font-weight:900}
.v7-state-note div:nth-child(2){flex:1;min-width:0}
.v7-state-note b{display:block;color:var(--ink);font-size:13px}.v7-state-note p{margin-top:2px;color:#666b64;font-size:11.5px;line-height:1.5}
.v7-state-note .btn{flex:none;min-height:40px;padding:7px 14px;font-size:12px}

.v7-commander{margin-top:22px;padding:0;border-left:1px solid var(--line);background:rgba(255,253,248,.88);overflow:hidden}
.v7-commander .cmdr-h{min-height:94px;padding:19px 24px;border-bottom:1px solid var(--line);flex-wrap:nowrap}
.v7-commander .cmdr-seal{width:46px;height:46px;border-radius:12px;background:linear-gradient(145deg,#2f6bcb,#174489);font-family:var(--serif);font-size:21px;box-shadow:0 7px 18px rgba(28,75,151,.22)}
.v7-commander .cmdr-tt b{font-family:var(--serif);font-size:20px;font-weight:900}
.v7-commander .cmdr-tt small{margin-top:3px;color:#666b64;font-size:11.5px}
.v7-commander #cmdrBtn{margin-left:auto;background:transparent;border:1px solid var(--verm);color:var(--verm);box-shadow:none}
.v7-commander #cmdrBtn:hover{background:rgba(36,88,173,.06)}
.v7-commander #cmdrOut:not(:empty){padding:0 24px 18px}
.v7-commander-quick{display:grid;grid-template-columns:repeat(3,1fr);padding:0 24px 20px}
.v7-quick{
  display:flex;align-items:center;gap:10px;min-height:60px;padding:10px 17px;border:0;border-right:1px solid var(--line);
  background:transparent;color:var(--ink);font-size:12px;text-align:left
}
.v7-quick:last-child{border-right:0}.v7-quick:hover{background:rgba(36,88,173,.045)}
.v7-quick svg{flex:none;width:21px;height:21px;color:var(--verm)}
.v7-quick span{display:block}.v7-quick small{display:block;margin-top:2px;color:#737871;font-size:10.5px}

/* onboarding: 可设置，也可先体验 */
#ob{background:rgba(25,26,23,.5)}
#ob .box{background:var(--paper);border-color:#cac4b8}
#ob h2{font-family:var(--serif)}
#ob input,#ob select,.goal{background:rgba(255,253,248,.8)}
#ob select{width:100%;min-height:44px;border:1px solid var(--line);border-radius:8px;padding:0 12px;color:var(--ink);font:inherit}
.goal{min-height:62px}.goal.sel{border-color:var(--verm);background:rgba(36,88,173,.07)}
#ob .btn{margin-top:24px}
.ob-skip{display:block;min-height:44px;margin:5px auto 0;padding:7px 16px;border:0;background:transparent;color:#5f655e;font-size:12px}
.ob-skip:hover{color:var(--verm);text-decoration:underline;text-underline-offset:3px}

/* AI 浮层延续 cobalt，预留底部安全空间 */
#aiFab{background:linear-gradient(145deg,#2f6bcb,#174489);box-shadow:0 10px 25px rgba(28,75,151,.28)}
#aiPanel{background:var(--paper);border-color:#cfc9bd}
#aiPanel header{background:linear-gradient(145deg,#2f6bcb,#174489)}
footer{color:#686d66;border-top-color:var(--line)}

@media(max-width:900px){
  .v7-overview{grid-template-columns:1fr;gap:28px;padding-top:42px}
  .v7-progress{padding-left:0;border-left:0}
  .v7-main-grid{grid-template-columns:1fr}
  .v7-focus-card{min-height:330px}
}

@media(max-width:760px){
  #app{padding:0 16px 118px}
  header{
    display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:0;min-height:0;
    margin:0 -16px;padding:10px 16px 0
  }
  header::before{display:none}
  .brand{gap:10px}.seal{width:40px;height:40px;line-height:40px;border-radius:10px;font-size:21px}
  .brand h1{font-size:21px}.brand small{font-size:8.5px;letter-spacing:.14em}
  .userchip{min-width:44px;justify-content:center;padding:5px 9px}.userchip .st{display:none}.beltdot{width:20px;height:20px}
  nav{
    grid-column:1/-1;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;width:calc(100% + 32px);max-width:none;
    margin:10px -16px 0;border-top:1px solid var(--line);overflow:visible
  }
  nav button{min-height:54px;padding:0 3px;font-size:12.5px}
  nav button.on::after{left:14%;right:14%;bottom:0;height:3px}
  #subnav{top:120px;margin:0 -16px;padding:0 12px;overflow-x:auto}
  #subnav button{min-width:max-content;min-height:46px}
  .v7-overview{display:block;padding:28px 3px 20px}
  .v7-kicker{margin-bottom:10px;font-size:10px}.v7-kicker::before{width:30px}
  .v7-greeting h2{font-size:34px;line-height:1.33}
  .v7-date{margin-top:11px;font-size:11.5px}.v7-quote-line{display:none}
  .v7-progress{display:grid;grid-template-columns:1fr auto;align-items:end;padding-top:19px}
  .v7-progress-head{display:contents}
  .v7-progress-copy{font-size:10.5px;padding-bottom:1px}
  .v7-progress-label{font-size:11px}.v7-progress-value{font-size:35px}.v7-progress-value small{font-size:13px}
  .v7-course-bar{grid-column:1/-1;margin-top:12px}.v7-ladder{display:none}
  .v7-main-grid{margin-top:16px}
  .v7-focus-card{grid-template-columns:42px 82px minmax(0,1fr);min-height:278px;border-radius:12px}
  .v7-ribbon{padding:10px 0;font-size:11px}
  .v7-course-art{height:214px;margin-left:12px}.v7-course-art .no{padding:20px 12px 0;font-size:33px}.v7-course-art .cap{padding-left:13px;font-size:9px}.v7-course-art .glyph{font-size:92px}
  .v7-course-art::before{left:13px;width:48px}.v7-course-art::after{left:13px;width:32px}
  .v7-focus-body{padding:25px 15px 24px 20px}
  .v7-focus-eyebrow{font-size:11px}.v7-focus-body h3{margin:13px 0 7px;font-size:27px;line-height:1.28}
  .v7-focus-meta{font-size:11px}.v7-focus-meta svg{width:16px;height:16px}
  .v7-focus-desc{margin:14px 0 16px;padding-top:12px;font-size:11.5px;line-height:1.65}
  .v7-primary-cta{width:100%;min-width:0;min-height:46px;padding:9px 12px;font-size:13.5px}
  .v7-metrics{grid-template-columns:1fr 1fr}.v7-metric{min-height:156px;padding:18px 16px}
  .v7-metric-icon{width:38px;height:38px}.v7-metric-title b{font-size:15px}.v7-metric p{margin-top:13px;font-size:11.5px}
  .v7-state-note{align-items:flex-start;flex-wrap:wrap}.v7-state-note .btn{flex:0 0 calc(100% - 46px);width:auto;margin-left:46px}
  .v7-commander .cmdr-h{min-height:86px;padding:16px;flex-wrap:wrap}
  .v7-commander .cmdr-seal{width:42px;height:42px}.v7-commander .cmdr-tt{min-width:150px}.v7-commander .cmdr-tt b{font-size:17px}
  .v7-commander #cmdrBtn{width:100%;justify-content:center;margin:2px 0 0 54px}
  .v7-commander-quick{grid-template-columns:1fr;padding:0 16px 16px}.v7-quick{border-right:0;border-bottom:1px solid var(--line);padding:9px 6px}.v7-quick:last-child{border-bottom:0}
  #aiFab{top:10px;right:68px;bottom:auto;width:44px;height:44px;box-shadow:0 5px 14px rgba(28,75,151,.22)}
  #aiPanel{right:12px;bottom:max(12px,env(safe-area-inset-bottom));width:calc(100vw - 24px);height:min(620px,calc(100dvh - 24px));max-height:calc(100dvh - 24px)}
  footer{margin-top:48px}
}

@media(max-width:430px){
  .userchip .nm{display:none}
  .v7-greeting h2{font-size:31px}
  .v7-focus-card{grid-template-columns:38px 72px minmax(0,1fr)}
  .v7-course-art{height:198px;margin-left:9px}.v7-focus-body{padding-left:15px;padding-right:12px}
  .v7-focus-body h3{font-size:25px}.v7-focus-desc{font-size:11px}
  .v7-metric{min-height:148px;padding:16px 13px}.v7-metric-head{gap:8px}.v7-metric-icon{width:34px;height:34px}.v7-icon{width:20px;height:20px}
}

@media(max-width:360px){
  .brand small{display:none}.v7-greeting h2{font-size:28px}
  .v7-focus-card{grid-template-columns:36px 1fr}.v7-course-art{display:none}.v7-focus-body{padding:22px 16px}
  .v7-metrics{grid-template-columns:1fr}.v7-metric{min-height:0;border-right:0!important;border-bottom:1px solid var(--line)!important}.v7-metric:last-child{border-bottom:0!important}
}

/* ---------- v8.2 longevity: progressive disclosure + global find ---------- */
.global-search-trigger{
  min-height:44px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:var(--paper);
  color:var(--ink2);font:700 12px/1 var(--sans);display:inline-flex;align-items:center;gap:7px;cursor:pointer
}
.global-search-trigger:hover{border-color:var(--blue);color:var(--blue)}
.global-search-trigger .magnify{font-size:18px;line-height:1}
.p1-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:18px 0 20px}
.p1-toolbar input,.p1-toolbar select{min-height:44px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:0 13px;color:var(--ink);font:inherit}
.p1-toolbar input{flex:1;min-width:220px}.p1-toolbar select{min-width:150px}
.p1-count{margin-left:auto;color:var(--faint);font-size:12px}
.curriculum-mod{margin-bottom:12px;padding:0;overflow:hidden}
.curriculum-mod>summary{list-style:none;display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:14px;align-items:center;padding:18px 20px;cursor:pointer}
.curriculum-mod>summary::-webkit-details-marker{display:none}
.curriculum-mod>summary::after{content:'＋';font-size:18px;color:var(--faint)}
.curriculum-mod[open]>summary::after{content:'－';color:var(--blue)}
.curriculum-mod .mod-num{width:42px;height:42px;border-radius:10px;background:var(--bg);display:grid;place-items:center;color:var(--blue);font-family:var(--serif);font-weight:900}
.curriculum-mod .mod-title{min-width:0}.curriculum-mod .mod-title h3{font-family:var(--serif);font-size:17px;color:var(--ink)}
.curriculum-mod .mod-title p{margin-top:3px;color:var(--faint);font-size:11.5px}
.curriculum-mod .mod-progress{font-size:11px;color:var(--faint);white-space:nowrap}
.curriculum-mod .mod-lessons{padding:0 20px 14px}
.curriculum-mod .lesson{width:100%;font:inherit;color:inherit;text-align:left}
.taskcard[hidden]{display:none!important}
.sync-card>details>summary,.sync-section>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px}
.sync-section>summary::-webkit-details-marker{display:none}.sync-section>summary::after{content:'展开';font:700 11px var(--sans);color:var(--blue)}
.sync-section[open]>summary::after{content:'收起'}.sync-section .sync-body{padding-top:14px}
.sync-section input[type="password"]{min-height:44px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:0 12px;font:inherit}
.sync-section input[type="file"]{max-width:100%;font-size:12px;color:var(--faint)}
.sync-section input[type="file"]::file-selector-button{min-height:40px;margin-right:10px;padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);font:700 12px var(--sans);cursor:pointer}
#globalSearchMask{position:fixed;inset:0;z-index:130;background:rgba(20,18,15,.52);display:none;align-items:flex-start;justify-content:center;padding:8vh 16px 24px}
#globalSearchMask.open{display:flex}
.global-search-box{width:min(760px,100%);max-height:84vh;overflow:hidden;background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:0 24px 70px rgba(20,18,15,.24);display:flex;flex-direction:column}
.global-search-head{display:flex;gap:12px;align-items:center;padding:16px;border-bottom:1px solid var(--line)}
.global-search-head input{flex:1;min-width:0;min-height:48px;border:1px solid var(--line);border-radius:10px;padding:0 14px;font:inherit;background:#fff}
.global-search-head button{width:44px;height:44px;border:0;background:transparent;font-size:24px;cursor:pointer;color:var(--ink2)}
.global-search-results{padding:10px;overflow:auto}
.global-result{width:100%;display:grid;grid-template-columns:74px minmax(0,1fr) auto;gap:12px;align-items:center;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;padding:13px 10px;cursor:pointer;color:var(--ink)}
.global-result:hover,.global-result:focus-visible{background:var(--bg)}
.global-result .kind{font-size:10px;color:var(--blue);font-weight:800}.global-result b{display:block;font-size:14px}.global-result p{margin-top:3px;color:var(--faint);font-size:11.5px;line-height:1.6}.global-result .go{color:var(--faint)}
.global-empty{padding:36px 18px;text-align:center;color:var(--faint);font-size:13px}
.content-provenance{margin-top:28px;border-top:1px solid var(--line);padding-top:16px}
.content-provenance summary{cursor:pointer;color:var(--blue);font-weight:750;font-size:12px}.content-provenance ul{margin:12px 0 0 20px}.content-provenance li{margin:7px 0;color:var(--ink2);font-size:12px;line-height:1.6}.content-provenance a{color:var(--blue)}
.case[type="button"],.checkitem[type="button"]{width:100%;font:inherit;color:inherit;text-align:left}
.case[type="button"]{border:1px solid var(--line);background:var(--paper)}
.checkitem[type="button"]{border:0;background:transparent}
.style-card{padding:0;overflow:hidden}
.style-card-open{display:block;width:100%;padding:20px;border:0;background:transparent;color:inherit;text-align:left;font:inherit;cursor:pointer}
.style-card>.say{margin:0 20px 20px;width:calc(100% - 40px);text-align:left}
.term .say[type="button"]{display:block;width:100%;border:0;text-align:left;font:inherit}
.term .tlink[type="button"]{border:0;background:transparent;font:inherit;padding:0}
.law{position:relative;cursor:default}
.law-toggle{position:absolute;inset:0;z-index:1;border:0;background:transparent;cursor:pointer;border-radius:inherit}
.law-toggle:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
.law-actions{position:absolute;z-index:2;left:18px;right:18px;bottom:14px;display:none;gap:12px;align-items:center}
.law.flip .law-actions{display:flex}
.law-actions button{border:0;background:transparent;padding:7px 0;font:700 11px var(--sans);cursor:pointer}
.law .back{padding-bottom:56px}
.placement-shell{max-width:760px;margin:0 auto}.placement-top{display:flex;align-items:center;gap:14px;margin-bottom:22px}.placement-top progress{flex:1;height:8px;accent-color:var(--blue)}
.placement-q{font-family:var(--serif);font-weight:900;font-size:26px;line-height:1.45;color:var(--ink);margin:18px 0 22px}
.placement-options{display:grid;gap:10px}.placement-options button{min-height:58px;padding:14px 18px;border:1px solid var(--line);border-radius:10px;background:#fff;text-align:left;font:700 14px/1.6 var(--sans)}
.placement-options button:hover,.placement-options button:focus-visible{border-color:var(--blue);background:#f4f7ff}
.placement-result{display:grid;gap:12px}.placement-module{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:14px 0;border-bottom:1px solid var(--line)}
.placement-module meter{width:160px;accent-color:var(--blue)}
.report-radar{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden;margin:18px 0}
.report-radar>div{background:var(--paper);padding:18px 14px}.report-radar b{display:block;font-family:var(--serif);font-size:24px;color:var(--ink)}.report-radar span{font-size:11px;color:var(--faint)}
.evidence-list{display:grid;gap:10px}.evidence-row{padding:12px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:14px}.evidence-row p{font-size:12px;color:var(--faint)}
.ai-response-meta{display:block;margin-top:12px;padding-top:8px;border-top:1px solid rgba(0,0,0,.08);color:var(--faint);font-size:9px;line-height:1.5}
@media(max-width:760px){
  .global-search-trigger{position:absolute;right:118px;top:10px;width:44px;padding:0;justify-content:center}.global-search-trigger .label{display:none}
  .p1-toolbar{align-items:stretch}.p1-toolbar input,.p1-toolbar select{width:100%}.p1-count{margin-left:0;width:100%}
  .curriculum-mod>summary{grid-template-columns:42px minmax(0,1fr) auto;padding:15px 13px;gap:9px}.curriculum-mod .mod-progress{display:none}.curriculum-mod .mod-lessons{padding:0 12px 10px}
  .global-search-box{max-height:90vh}.global-result{grid-template-columns:56px minmax(0,1fr)}.global-result .go{display:none}
  .report-radar{grid-template-columns:1fr 1fr}.placement-q{font-size:22px}.placement-module meter{width:110px}
}
