/* Muse向导 全站样式 主色：青灰 #49707f / #6f97a8，强调色：暖橙 #e8762c */
:root{
  --main:#49707f; --main2:#6f97a8; --main-dark:#33525f; --main-light:#e8f0f3;
  --accent:#e8762c; --accent-dark:#c85f1d;
  --ink:#22303a; --muted:#6b7d88; --line:#dde7ec; --bg:#f4f8f9; --card:#fff;
  --ok:#1a9e6b; --warn:#d98a04; --bad:#d84545; --radius:14px;
  --shadow:0 2px 10px rgba(51,82,95,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg);line-height:1.6;font-size:15px}
a{color:var(--main-dark);text-decoration:none}
a:hover{text-decoration:underline}
img{max-width:100%}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:14.5px;padding:8px 11px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid var(--main2);border-color:transparent}
label{display:block;font-size:13.5px;color:var(--muted);margin:10px 0 4px}
.wrap{max-width:1180px;margin:0 auto;padding:0 20px}
/* 导航 */
.nav{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.nav-in{display:flex;align-items:center;gap:14px;height:56px}
.brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:17px;color:var(--ink)}
.brand:hover{text-decoration:none}
.brand img{width:32px;height:32px;border-radius:50%;object-fit:cover;border:1px solid var(--line)}
.nav-links{margin-left:auto;display:flex;gap:18px;align-items:center}
.nav-links a{color:var(--ink);font-size:14.5px}
.nav-links a.cta{background:var(--main);color:#fff;padding:7px 15px;border-radius:999px}
.nav-links a.cta:hover{background:var(--main-dark);text-decoration:none}
/* 公告 */
.announce{background:var(--main);color:#fff;text-align:center;padding:6px 12px;font-size:13.5px}
.announce:empty{display:none}
/* Hero 横向条带 */
.hero{padding:20px 20px 4px}
.hero-in{display:flex;align-items:center;gap:18px}
.hero img.logo{width:72px;height:72px;border-radius:16px;object-fit:cover;box-shadow:var(--shadow);border:1px solid var(--line);flex:0 0 72px}
.hero h1{font-size:28px;margin:0 0 4px;line-height:1.3}
.hero p{color:var(--muted);max-width:600px;margin:0}
.hero-actions{margin-left:auto;display:flex;gap:10px;flex:0 0 auto}
/* 按钮与卡片 */
.btn{display:inline-block;background:var(--accent);color:#fff;border:0;padding:9px 18px;border-radius:10px;font-size:15px}
.btn:hover{background:var(--accent-dark);text-decoration:none}
.btn.ghost{background:#fff;color:var(--main-dark);border:1px solid var(--main2)}
.btn.ghost:hover{background:var(--main-light)}
.btn.block{display:block;width:100%;text-align:center}
.btn:disabled{opacity:.55;cursor:not-allowed}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
section{padding:20px 0}
h2.sec{font-size:22px;line-height:1.3;margin:0 0 14px;padding-left:10px;border-left:4px solid var(--accent)}
.price{font-size:32px;color:var(--accent);font-weight:800;line-height:1.2}
.price small{font-size:14px;color:var(--muted);font-weight:400}
.tag{display:inline-block;background:var(--main-light);color:var(--main-dark);border-radius:999px;padding:2px 10px;font-size:12px;margin-bottom:8px}
.feat{list-style:none;margin:10px 0 12px;padding:0;font-size:14px}
.feat li{margin:3px 0}
.feat li::before{content:"✓";color:var(--main);font-weight:700;margin-right:7px}
.muted{color:var(--muted)} .small{font-size:13px}
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;counter-reset:step}
.step{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;font-size:14px}
.step b{display:block;margin-bottom:3px}
.step b::before{counter-increment:step;content:counter(step);display:inline-flex;width:22px;height:22px;border-radius:50%;background:var(--main);color:#fff;align-items:center;justify-content:center;margin-right:8px;font-size:12.5px}
/* 表单/下单 */
.msg{border-radius:8px;padding:9px 12px;margin:10px 0;font-size:14px;display:none}
.msg.err{display:block;background:#fdecec;color:#8f1d1d;border:1px solid #f3c2c2}
.msg.ok{display:block;background:#e7f7ef;color:#0d5c3a;border:1px solid #bfe8d2}
.order-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start}
.summary-card{position:sticky;top:72px}
.summary-card h3{margin:0 0 8px;font-size:16px}
.summary-row{display:flex;justify-content:space-between;gap:12px;font-size:14px;padding:5px 0;border-bottom:1px dashed var(--line)}
.summary-row span:first-child{color:var(--muted)}
.summary-row b{font-weight:600;text-align:right}
.pay-list{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
.pay-opt{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:9px 10px;cursor:pointer;width:auto;margin:0;color:var(--ink);font-size:14.5px}
.pay-opt input{width:auto}
.pay-opt img{width:24px;height:24px;object-fit:contain}
.pay-opt.sel{border-color:var(--accent);background:#fff6ee;box-shadow:inset 0 0 0 1px var(--accent);font-weight:600}
.total{display:flex;justify-content:space-between;align-items:baseline;font-size:15px;margin-top:12px}
.total b,.summary-total{color:var(--accent);font-size:22px;font-weight:800}
.usdt-box{background:#fff8e6;border:1px solid #f0dc9a;border-radius:10px;padding:12px;margin-top:10px;word-break:break-all;font-size:14px}
/* FAQ 手风琴 */
.faq-item{background:#fff;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;overflow:hidden}
.faq-q{width:100%;text-align:left;background:none;border:0;padding:11px 14px;font-size:15px;font-weight:600}
.faq-a{display:none;padding:0 14px 12px;color:var(--muted)}
.faq-item.open .faq-a{display:block}
/* 教程预览 */
.cat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
.cat-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px}
.cat-card h3{margin:0 0 6px;font-size:16px}
.cat-card ul{margin:0;padding-left:18px}
.cat-card li{margin:2px 0}
/* 状态标签 */
.status{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12.5px;background:var(--main-light);color:var(--main-dark)}
.status.paid,.status.processing{background:#e7f7ef;color:#0d5c3a}
.status.pending{background:#fff4d6;color:#7a5200}
.status.delivered,.status.completed{background:#e3f0ff;color:#174f8a}
.status.refunded,.status.cancelled{background:#fdecec;color:#8f1d1d}
/* 页脚 */
footer{margin-top:32px;background:#2e424e;color:#cfe0e8;padding:26px 0 20px;font-size:14px}
footer a{color:#fff}
.foot-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:24px}
.foot-grid h4{margin:0 0 8px;font-size:14.5px;color:#fff}
.foot-grid a{display:block;line-height:1.9}
.foot-brand p{margin:0 0 6px}
.foot-bottom{border-top:1px solid rgba(255,255,255,.15);margin-top:18px;padding-top:12px}
/* 悬浮客服 */
.chat-fab{position:fixed;right:16px;bottom:16px;z-index:60;width:50px;height:50px;border-radius:50%;background:var(--main);color:#fff;border:0;font-size:21px;box-shadow:0 8px 24px rgba(0,0,0,.25)}
.chat-fab:hover{background:var(--main-dark)}
.chat-pop{position:fixed;right:16px;bottom:76px;z-index:60;width:min(380px,calc(100vw - 32px));height:min(560px,calc(100vh - 130px));background:#fff;border-radius:14px;box-shadow:0 12px 40px rgba(0,0,0,.28);display:none;flex-direction:column;overflow:hidden}
.chat-pop.open{display:flex}
.chat-pop header{display:flex;align-items:center;justify-content:space-between;background:var(--main);color:#fff;padding:10px 14px;font-size:15px}
.chat-pop header button{background:none;border:0;color:#fff;font-size:18px;width:auto}
.chat-pop iframe{flex:1;border:0;width:100%}
/* 教程页布局 */
.t-layout{display:flex;min-height:calc(100vh - 56px)}
.t-side{width:260px;flex:0 0 260px;background:#fff;border-right:1px solid var(--line);padding:12px;overflow-y:auto;height:calc(100vh - 56px);position:sticky;top:56px}
.t-side h4{margin:14px 0 4px;color:var(--main-dark);font-size:13px;letter-spacing:.05em}
.t-side a{display:block;padding:5px 10px;border-left:3px solid transparent;border-radius:0 8px 8px 0;color:var(--ink);font-size:14px;line-height:1.45}
.t-side a:hover{background:var(--main-light);text-decoration:none}
.t-side a.active{background:var(--main-light);color:var(--main-dark);border-left-color:var(--accent);font-weight:600}
.t-side-foot{margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}
.t-main{flex:1;min-width:0}
.t-inner{max-width:780px;margin:0;padding:6px 24px 40px}
.t-content{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:24px 28px;box-shadow:var(--shadow)}
.t-content>h2{margin-top:0;font-size:26px;line-height:1.35}
.chapter-body{font-size:16px;line-height:1.85}
.chapter-body h2{font-size:19px;border-left:4px solid var(--accent);padding-left:10px;margin:22px 0 10px;line-height:1.4}
.chapter-body h3{font-size:17px;margin:18px 0 8px}
.chapter-body p{margin:10px 0}
.t-content pre{background:#22303a;color:#e8f2f6;padding:14px;border-radius:10px;overflow-x:auto}
.t-content code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13.5px}
.t-content img{border-radius:10px}
.progress-bar{position:sticky;top:56px;height:4px;background:var(--line);z-index:30}
.progress-bar i{display:block;height:100%;background:var(--main2);width:0;transition:width .1s}
.pager{display:flex;justify-content:space-between;gap:12px;margin-top:16px}
.burger{display:none;background:var(--main);color:#fff;border:0;border-radius:8px;padding:7px 13px;margin:10px 0}
.theme-toggle{background:#fff;border:1px solid var(--line);border-radius:999px;padding:6px 12px;width:auto;font-size:13px;color:var(--ink)}
/* 教程深色模式 */
[data-theme="dark"]{background:#14202a}
[data-theme="dark"] body{background:#14202a}
[data-theme="dark"] .t-main{color:#dbe7ec}
[data-theme="dark"] .t-side{background:#1d2a33;border-color:#334854;color:#dbe7ec}
[data-theme="dark"] .t-side a{color:#dbe7ec}
[data-theme="dark"] .t-side a.active{background:#2a3f4d;color:#fff}
[data-theme="dark"] .t-side h4{color:#9fc3d4}
[data-theme="dark"] .t-side-foot{border-top-color:#334854}
[data-theme="dark"] .theme-toggle{background:#1d2a33;border-color:#334854;color:#dbe7ec}
[data-theme="dark"] .t-content{background:#1d2a33;border-color:#334854;color:#dbe7ec}
[data-theme="dark"] .t-content a{color:#9fd0e8}
/* 后台（高密度） */
.admin-shell{display:flex;min-height:100vh}
.admin-side{width:184px;flex:0 0 184px;background:#2e424e;color:#d7e6ec;padding:14px 10px}
.admin-side h2{font-size:16px;color:#fff;margin:4px 8px 12px}
.admin-side button{display:block;width:100%;text-align:left;background:none;border:0;color:inherit;padding:8px 10px;border-radius:8px;font-size:14px}
.admin-side button.active,.admin-side button:hover{background:rgba(255,255,255,.14)}
.admin-main{flex:1;min-width:0;padding:16px;background:var(--bg)}
.admin-main section{padding:8px 0}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.stat{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px}
.stat b{font-size:20px;color:var(--main-dark);display:block}
table{width:100%;border-collapse:collapse;background:#fff;font-size:13.5px}
th,td{border-bottom:1px solid var(--line);padding:7px 9px;text-align:left;vertical-align:top}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px}
.tabs-panel{display:none}.tabs-panel.show{display:block}
.row{display:flex;gap:10px;flex-wrap:wrap}.row>*{flex:1;min-width:160px}
.checkline{display:flex;align-items:center;gap:8px;margin:7px 0;color:var(--ink);font-size:14.5px}
.checkline input{width:auto}
fieldset{border:1px solid var(--line);border-radius:10px;margin:0 0 14px;background:#fff;padding:6px 14px 14px}
legend{font-weight:700;padding:0 6px}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.toolbar button{width:auto}
.mini{padding:5px 11px;font-size:13px;border-radius:8px;border:1px solid var(--main2);background:#fff;color:var(--main-dark)}
.mini.danger{border-color:#e5a3a3;color:#a11}
.auth-box{max-width:400px;margin:48px auto}
.auth-box h2{text-align:center;margin:6px 0 10px}
.auth-brand{text-align:center;margin-bottom:14px}
.auth-brand img{width:56px;height:56px;border-radius:14px;object-fit:cover;border:1px solid var(--line)}
.auth-name{font-size:18px;font-weight:700;margin-top:8px;color:var(--ink)}
.auth-sub{font-size:13px;color:var(--muted);margin-top:2px}
textarea{min-height:100px}
textarea.code{min-height:260px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px}
/* 移动端 */
@media (max-width:900px){
  .nav-links{gap:12px}.nav-links a:not(.cta):not(.keep){display:none}
  .hero{padding:16px 20px 2px}
  .hero-in{flex-direction:column;align-items:flex-start;gap:12px}
  .hero img.logo{width:60px;height:60px;flex-basis:60px}
  .hero h1{font-size:24px}
  .hero-actions{margin-left:0}
  .steps{grid-template-columns:1fr 1fr}
  .order-layout{grid-template-columns:1fr}
  .summary-card{position:static}
  .foot-grid{grid-template-columns:1fr;gap:16px}
  .t-side{position:fixed;left:0;top:0;height:100vh;z-index:70;transform:translateX(-105%);transition:transform .2s;width:260px;flex-basis:260px}
  .t-side.open{transform:none;box-shadow:0 0 40px rgba(0,0,0,.3)}
  .t-inner{padding:4px 14px 32px}
  .t-content{padding:18px 16px}
  .burger{display:inline-block}
  .admin-shell{flex-direction:column}
  .admin-side{width:100%;flex:none;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
  .admin-side button{width:auto}
  .chat-pop{right:10px;bottom:74px}
}

/* ===== 下单弹窗（浮窗）与行动条 ===== */
.cta-band{display:flex;align-items:center;justify-content:space-between;gap:16px;background:linear-gradient(90deg,var(--main-light),#fff);border:1px solid var(--line);border-radius:14px;padding:14px 18px}
.cta-band-text b{font-size:16px;margin-right:10px}
.cta-band-text span{color:var(--muted);font-size:13.5px}
.cta-band .btn{flex:0 0 auto}
.modal-overlay{position:fixed;inset:0;z-index:90;background:rgba(35,50,60,.55);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:16px;opacity:0;transition:opacity .18s}
.modal-overlay[hidden]{display:none}
.modal-overlay.show{opacity:1}
.modal-panel{background:#fff;border-radius:16px;box-shadow:0 24px 64px rgba(20,35,45,.35);width:min(660px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow-y:auto;padding:18px 20px 16px;font-size:13.5px;transform:scale(.97);transition:transform .18s}
.modal-overlay.show .modal-panel{transform:scale(1)}
.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.modal-head h3{margin:0;font-size:17px}
.modal-head-sub{color:var(--main-dark);font-size:14px;font-weight:600}
.modal-close{background:none;border:0;font-size:24px;line-height:1;color:var(--muted);width:32px;height:32px;border-radius:8px}
.modal-close:hover{background:var(--main-light);color:var(--ink)}
.modal-panel label{font-size:12.5px;margin:9px 0 3px}
.modal-panel input,.modal-panel select{font-size:13.5px;height:36px;padding:6px 10px}
.modal-panel input.field-error{border-color:var(--bad);outline:2px solid rgba(216,69,69,.25)}
.seg{display:flex;background:var(--main-light);border-radius:10px;padding:3px;gap:3px;margin-bottom:6px}
.seg button{flex:1;background:transparent;border:0;border-radius:8px;padding:7px 6px;font-size:13.5px;color:var(--main-dark)}
.seg button.active{background:#fff;color:var(--ink);font-weight:700;box-shadow:0 1px 4px rgba(51,82,95,.18)}
.modal-grid{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:16px;margin-top:6px}
.modal-summary{background:#fbfdfe;border:1px solid var(--line);border-radius:12px;padding:12px}
.modal-summary h4{margin:0 0 6px;font-size:14px}
.modal-summary .summary-row{font-size:13px;padding:4px 0}
.modal-summary .pay-list{grid-template-columns:1fr 1fr;gap:6px}
.modal-summary .pay-opt{justify-content:center;padding:10px 6px;font-size:13px;border-radius:8px}
.modal-summary .pay-opt img{width:30px;height:30px}
.modal-summary .usdt-box{font-size:12.5px;padding:10px}
.stepper{display:flex;align-items:center;gap:6px}
.stepper button{width:32px;height:36px;border:1px solid var(--line);background:#fff;border-radius:8px;font-size:16px;color:var(--main-dark)}
.stepper input{width:56px;text-align:center}
.qty-quick{display:inline-flex;gap:8px;margin-left:6px;font-size:12.5px}
.qty-quick a{color:var(--main-dark)}
.modal-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;border-top:1px solid var(--line);margin-top:14px;padding-top:12px}
.modal-foot .total{font-size:13.5px;color:var(--muted)}
.modal-foot .total b{font-size:20px;margin-left:6px}
.modal-foot .btn{flex:0 0 auto;padding:10px 22px;font-size:14px}
.msg.modal-msg{display:none;margin:0 0 2px;padding:0;background:none;border:0;font-size:12.5px}
.msg.modal-msg.err{display:block;color:#b32626}
.msg.modal-msg.ok{display:block;color:#0d5c3a}
.modal-note{font-size:12px;color:var(--muted);margin:8px 0 0}
.created-view{text-align:center;padding:10px 4px 4px}
.created-icon{width:44px;height:44px;border-radius:50%;background:#e7f7ef;color:#0d5c3a;font-size:22px;display:flex;align-items:center;justify-content:center;margin:0 auto 8px}
.created-view h4{margin:0 0 6px;font-size:16px}
.created-no{font-size:14px}
.created-no b{font-size:17px;letter-spacing:.02em}
.created-actions{display:flex;gap:10px;justify-content:center;margin-top:12px}
.query-card{padding:14px 16px}
.query-card label{font-size:12.5px;margin:8px 0 3px}
.query-card input{font-size:13.5px;height:36px;padding:6px 10px}
@media (max-width:640px){
  .modal-overlay{align-items:flex-end;padding:0}
  .modal-panel{width:100%;max-height:92vh;border-radius:16px 16px 0 0;padding:16px 16px 12px}
  .modal-grid{grid-template-columns:1fr}
  .modal-summary{order:2}
  .modal-foot{position:sticky;bottom:-12px;background:#fff;padding-bottom:4px}
  .cta-band{flex-direction:column;align-items:stretch;text-align:center}
  .qty-quick{display:none}
}

/* ===== 移动端优化（P0-P2）+ 弹窗打开时隐藏客服 ===== */
/* P0-1 粗指针设备（手机/平板）输入字号 16px，杜绝 iOS 聚焦自动放大 */
@media (pointer:coarse){
  input,select,textarea,.modal-panel input,.modal-panel select,.query-card input{font-size:16px}
}
/* P0-2 / P2-11 高度改用 dvh（不支持的浏览器自动回退到前面的 vh 规则） */
.modal-panel{max-height:calc(100dvh - 48px)}
.t-side{height:calc(100dvh - 56px)}
/* P0-3 下单弹窗打开时隐藏客服悬浮按钮与窗口 */
body.modal-open .chat-fab,body.modal-open .chat-pop{display:none !important}
/* 教程抽屉头（仅移动端显示） */
.t-side-head{display:none;align-items:center;justify-content:space-between;margin-bottom:8px}
.t-side-head b{font-size:15px}
.t-side-head button{background:none;border:0;font-size:22px;line-height:1;color:var(--muted);width:36px;height:36px}
@media (max-width:900px){
  .nav-links{gap:10px}
  .nav-links a{font-size:14px}
  .t-side-head{display:flex}
  .admin-main{overflow-x:auto}
  .admin-main .card{word-break:break-word}
}
@media (max-width:640px){
  /* P0-2 抽屉高度与安全区 */
  .modal-panel{max-height:92dvh}
  .modal-foot{padding-bottom:calc(4px + env(safe-area-inset-bottom))}
  /* P1-5 触控目标 ≥40px */
  .seg button{min-height:40px}
  .stepper button{width:40px;height:40px}
  .stepper input{height:40px}
  .foot-grid a{padding:5px 0}
  /* P1-6 摘要置顶成条：只留商品名，支付图标一行四个 */
  .modal-summary{order:-1}
  .modal-summary h4{display:none}
  .modal-summary .summary-row:nth-of-type(2),.modal-summary .summary-row:nth-of-type(3){display:none}
  .modal-summary .pay-list{grid-template-columns:repeat(4,1fr)}
  /* P2-9 公告窄屏最多两行 */
  .announce{font-size:12.5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  /* P2-10 Hero 按钮通栏 */
  .hero-actions{display:flex;flex-direction:column;align-items:stretch;width:100%;gap:10px;margin-left:0}
  .hero-actions .btn{text-align:center}
}
@media (max-width:380px){
  .brand span{font-size:15px}
  .nav-links{gap:8px}
}

/* ===== 移动端汉堡菜单 ===== */
.nav-burger{display:none;background:none;border:0;width:40px;height:40px;margin-left:6px;padding:0;flex-direction:column;align-items:center;justify-content:center;gap:5px;cursor:pointer}
.nav-burger span{display:block;width:20px;height:2px;background:var(--ink);border-radius:2px;transition:transform .18s,opacity .18s}
.nav-burger.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-burger.open span:nth-child(2){opacity:0}
.nav-burger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.nav-panel{display:none}
@media (max-width:900px){
  .nav-burger{display:flex}
  .nav-links a:not(.cta){display:none}
  header.nav{position:sticky}
  .nav-panel{display:block;position:absolute;top:100%;left:0;right:0;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 18px 30px rgba(51,82,95,.14);padding:6px 20px 10px;opacity:0;transform:translateY(-8px);pointer-events:none;transition:opacity .18s,transform .18s;z-index:45}
  .nav-panel.open{opacity:1;transform:none;pointer-events:auto}
  .nav-panel a{display:flex;align-items:center;min-height:44px;font-size:15px;color:var(--ink);border-bottom:1px solid var(--main-light)}
  .nav-panel a:last-child{border-bottom:0}
}

/* ===== 富文本编辑器（照搬云智论坛 rich.js 配套样式，按本站色板适配） ===== */
.rt-editor{border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}
.rt-bar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:6px;border-bottom:1px solid var(--line);background:var(--main-light);position:relative;transition:opacity .15s}
.rt-bar.rt-uploading{opacity:.55;pointer-events:none}
.rt-bar.rt-uploading::after{content:'处理中…';position:absolute;right:10px;top:9px;font-size:12px;color:var(--main-dark)}
.rt-btn{min-width:30px;height:28px;border:none;background:none;color:var(--muted);border-radius:6px;cursor:pointer;font-size:13px;padding:0 6px;font-family:Georgia,serif;width:auto}
.rt-btn:hover{background:#fff;color:var(--ink)}
.rt-btn.on{background:rgba(232,118,44,.18);color:var(--accent-dark)}
.rt-sep{width:1px;align-self:stretch;background:var(--line);margin:2px 5px}
.rt-area{min-height:360px;padding:12px 14px;outline:none;font-size:15px;line-height:1.75;overflow-wrap:break-word;background:#fff;color:var(--ink)}
.rt-area.rt-empty::before{content:attr(data-placeholder);color:var(--muted);pointer-events:none}
.rt-area img{max-width:100%;border-radius:8px}
.rt-area iframe{width:100%;aspect-ratio:16/9;border:0;border-radius:8px;background:#000}
.rt-area video{max-width:100%;border-radius:8px}
.rt-area audio{width:100%}
.rt-area blockquote{border-left:3px solid var(--accent);margin:8px 0;padding:4px 14px;color:var(--muted);background:#fff8f2;border-radius:0 8px 8px 0}
.rt-area pre{background:#22303a;color:#e8f2f6;border-radius:8px;padding:12px 14px;overflow-x:auto;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px}
.rt-area code{background:var(--main-light);border:1px solid var(--line);border-radius:5px;padding:1px 6px;font-size:13px;font-family:ui-monospace,Menlo,Consolas,monospace}
.rt-area pre code{background:none;border:none;padding:0}
.rt-area table{max-width:100%;margin:6px 0}
.rt-area td,.rt-area th{word-break:break-word;min-width:40px}
.rt-status{border-top:1px solid var(--line);background:#fbfdfe;color:var(--muted);font-size:12px;padding:5px 10px;text-align:right}
.rt-color-menu{position:fixed;z-index:130;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px;box-shadow:0 14px 40px rgba(0,0,0,.22);width:250px}
.rt-color-title{font-size:12.5px;color:var(--muted);margin-bottom:8px}
.rt-color-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
.rt-color-swatch{width:100%;aspect-ratio:1;border-radius:6px;border:1px solid var(--line);cursor:pointer;padding:0}
.rt-color-swatch:hover{outline:2px solid var(--accent)}
.rt-color-row{display:flex;align-items:center;gap:8px;margin-top:10px}
.rt-color-row input[type=color]{width:36px;height:28px;padding:0;border:1px solid var(--line);border-radius:6px;background:transparent;cursor:pointer}
.rt-color-clear{font-size:12.5px;padding:4px 10px;border-radius:6px;border:1px solid var(--line);background:transparent;color:var(--ink);cursor:pointer;width:auto}
.rt-modal-mask{position:fixed;inset:0;z-index:120;background:rgba(35,50,60,.55);display:flex;align-items:flex-start;justify-content:center;padding:8vh 16px 16px}
.rt-modal{background:#fff;border-radius:14px;box-shadow:0 24px 64px rgba(20,35,45,.35);width:min(480px,calc(100vw - 32px));max-height:82vh;overflow-y:auto;padding:18px 20px}
.rt-modal h3{margin:0 0 6px;font-size:16px}
.rt-modal .btn{margin-top:8px}
.rt-modal-err{color:var(--bad);font-size:13px;min-height:18px;margin-top:8px}
.rt-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}
.rt-modal-actions .btn{margin-top:0}
.ch-viewbar .mini.active{background:var(--main);color:#fff;border-color:var(--main)}
.ch-preview{background:#fff;border:1px solid var(--line);border-radius:10px;padding:18px 22px}
/* ===== 章节正文富文本渲染补全（前台教程页，与编辑器产出对齐） ===== */
.chapter-body h1{font-size:21px;margin:20px 0 10px;line-height:1.4}
.chapter-body h4{font-size:16px;margin:16px 0 8px}
.chapter-body blockquote{border-left:3px solid var(--accent);margin:10px 0;padding:4px 14px;color:var(--muted);background:#fff8f2;border-radius:0 8px 8px 0}
.chapter-body hr{border:none;border-top:1px solid var(--line);margin:16px 0}
.chapter-body img{max-width:100%;border-radius:8px;margin:6px 0}
.chapter-body iframe{width:100%;max-width:720px;aspect-ratio:16/9;border:0;border-radius:8px;background:#000;display:block;margin:8px 0}
.chapter-body video{max-width:100%;border-radius:8px;margin:6px 0}
.chapter-body audio{width:100%;margin:6px 0}
.chapter-body ul,.chapter-body ol{padding-left:24px;margin:8px 0}
.chapter-body li{margin:3px 0}
.chapter-body table{border-collapse:collapse;max-width:100%;margin:10px 0;font-size:14.5px}
.chapter-body td,.chapter-body th{word-break:break-word}
.chapter-body code{background:var(--main-light);border:1px solid var(--line);border-radius:5px;padding:1px 6px;font-size:13.5px;font-family:ui-monospace,Menlo,Consolas,monospace}
.chapter-body pre code{background:none;border:none;padding:0}
.chapter-body mark{background:#fff3a3;padding:0 2px;border-radius:3px}
.chapter-body figure{margin:10px 0}
.chapter-body figcaption{color:var(--muted);font-size:13px;text-align:center;margin-top:4px}
.chapter-body a{word-break:break-all}
[data-theme="dark"] .chapter-body code{background:#2a3f4d;border-color:#334854}
[data-theme="dark"] .chapter-body blockquote{background:#2a3f4d}
