/* ===== 爆款罗盘 · 设计系统(曜石操盘台 / 宣纸罗盘) ===== */
:root, :root[data-theme="obsidian"]{
  --bg:#0E1116;
  --bg-2:#1F242D;
  --bg-grad: radial-gradient(1100px 560px at 82% -8%, rgba(216,167,91,.10) 0%, transparent 55%),
             radial-gradient(900px 480px at -8% 6%, rgba(224,79,79,.08) 0%, transparent 52%),
             #0E1116;
  --card:#171B22;
  --card-2:#1F242D;
  --card-solid:#171B22;
  --line:#2A313C;
  --line-2:#3a4351;
  --text:#EDF0F4;
  --dim:#A6AFBD;
  --faint:#6B7480;
  --gold:#D8A75B;
  --gold-soft:#E5C088;
  --gold-glow:rgba(216,167,91,.16);
  --accent:#E04F4F;      /* 丹砂红 */
  --accent-2:#D8A75B;    /* 罗盘金 */
  --violet:#9B8BC4;
  --cyan:#6FB4A0;
  --grad: linear-gradient(135deg,#E5C088 0%,#E0574F 60%,#C73E5A 110%);
  --grad-soft: linear-gradient(135deg,rgba(216,167,91,.16),rgba(224,79,79,.12));
  --good:#4CB782; --warn:#E0A33A; --bad:#E04F4F;
  /* 赛道语义色 */
  --c-career:#C9913E; --c-tech:#6B9BE0; --c-life:#6FB4A0; --c-culture:#C46A6A; --c-money:#7FB069; --c-mind:#9B8BC4; --c-daily:#E0936B; --c-sport:#46C36B;
  --r:18px; --r-sm:12px; --r-xs:9px;
  --sh:0 16px 48px rgba(0,0,0,.5);
  --sh-sm:0 1px 0 rgba(255,255,255,.04) inset, 0 8px 24px rgba(0,0,0,.32);
  --font:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",Helvetica,Arial,sans-serif;
  --nav-h:62px;
}
:root[data-theme="paper"]{
  --bg:#F4EFE6; --bg-2:#F0E9DC;
  --bg-grad: radial-gradient(1000px 520px at 85% -6%, rgba(184,137,59,.12), transparent 55%), #F4EFE6;
  --card:#FBF8F2; --card-2:#F0E9DC; --card-solid:#FBF8F2;
  --line:#E2D8C7; --line-2:#d4c6ad;
  --text:#2B2620; --dim:#6B6256; --faint:#A89C88;
  --gold:#B8893B; --gold-soft:#caa055; --gold-glow:rgba(184,137,59,.14);
  --accent:#C73E3E; --accent-2:#B8893B; --violet:#7d6cae; --cyan:#4f9a86;
  --grad: linear-gradient(135deg,#caa055 0%,#C73E3E 100%);
  --grad-soft: linear-gradient(135deg,rgba(184,137,59,.14),rgba(199,62,62,.08));
  --sh-sm:0 1px 2px rgba(60,46,30,.05), 0 6px 16px rgba(60,46,30,.08);
  --sh:0 16px 40px rgba(60,46,30,.18);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  font-family:var(--font);
  background:var(--bg-grad);background-attachment:fixed;
  color:var(--text);line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:hidden;
  padding-bottom:calc(var(--nav-h) + env(safe-area-inset-bottom));touch-action:manipulation;
  transition:background .3s,color .3s;
}
img{max-width:100%}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,textarea,select{font-family:inherit}
a{color:inherit}
::-webkit-scrollbar{width:0;height:0}
.num{font-variant-numeric:tabular-nums}

/* ===== shell ===== */
.app{max-width:560px;margin:0 auto;min-height:100vh;position:relative}
.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:10px;
  padding:calc(env(safe-area-inset-top) + 12px) 16px 12px;
  background:color-mix(in srgb, var(--bg) 72%, transparent);backdrop-filter:blur(18px);border-bottom:1px solid var(--line);}
.brand{display:flex;align-items:center;gap:9px;font-weight:800;font-size:18px;letter-spacing:.3px}
.brand .logo{width:30px;height:30px;flex:0 0 auto;filter:drop-shadow(0 2px 8px rgba(224,79,79,.45))}
.brand .sub{font-size:11px;font-weight:600;color:var(--faint);margin-left:2px;letter-spacing:0}
.topbar .spacer{flex:1}
.icon-btn{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--card-2);border:1px solid var(--line);font-size:17px}
.icon-btn:active{transform:scale(.92)}

.view{display:none;padding:16px 14px 28px;animation:rise .32s ease}
.view.active{display:block}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

.section-title{font-size:15px;font-weight:800;margin:22px 4px 11px;display:flex;align-items:center;gap:8px}
.section-title:first-child{margin-top:4px}
.section-title .badge{font-size:11px;font-weight:700;color:var(--gold);background:var(--gold-glow);border:1px solid color-mix(in srgb,var(--gold) 40%,transparent);padding:2px 8px;border-radius:20px}
.section-sub{font-size:12.5px;color:var(--dim);margin:-6px 4px 12px}

.segs{display:flex;gap:7px;overflow-x:auto;padding:2px 2px 4px;margin:0 -2px 14px;scrollbar-width:none}
.seg{flex:0 0 auto;padding:8px 14px;border-radius:20px;font-size:13px;font-weight:700;background:var(--card-2);border:1px solid var(--line);color:var(--dim);white-space:nowrap;transition:.15s}
.seg.active{background:var(--grad);color:#fff;border-color:transparent;box-shadow:0 4px 14px rgba(224,79,79,.32)}
.seg:active{transform:scale(.95)}

.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:15px;box-shadow:var(--sh-sm)}
.card + .card{margin-top:11px}
.hero{position:relative;overflow:hidden;border-radius:var(--r);padding:18px;background:var(--card);border:1px solid var(--line-2);box-shadow:var(--sh-sm)}
.hero::before{content:"";position:absolute;inset:0;background:radial-gradient(380px 220px at 88% 0,var(--gold-glow),transparent 62%);pointer-events:none}
.hero::after{content:"";position:absolute;right:-22px;top:-22px;width:120px;height:120px;border-radius:50%;border:1px solid var(--gold);opacity:.10;pointer-events:none}
.hero h2{margin:0 0 6px;font-size:18px;position:relative}
.hero p{margin:0;font-size:13px;color:var(--dim);position:relative}

/* ===== topic card ===== */
.topic{background:var(--card-solid);border:1px solid var(--line);border-radius:var(--r);padding:15px 15px 15px 17px;position:relative;overflow:hidden;box-shadow:var(--sh-sm)}
.topic::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--nc,var(--accent))}
.topic.fav{border-color:color-mix(in srgb,var(--gold) 55%,transparent)}
.topic + .topic{margin-top:11px}
.topic .ttl{font-size:15.5px;font-weight:800;line-height:1.4;margin:0 0 8px;padding-right:30px;letter-spacing:-.01em}
.topic .hook{font-size:13px;color:var(--gold-soft);background:var(--gold-glow);border-left:3px solid var(--gold);padding:7px 10px;border-radius:0 8px 8px 0;margin:0 0 10px}
.topic ul.outline{margin:0 0 11px;padding-left:0;list-style:none}
.topic ul.outline li{font-size:12.8px;color:var(--dim);padding:2px 0 2px 18px;position:relative}
.topic ul.outline li::before{content:"›";position:absolute;left:4px;top:1px;color:var(--accent);font-weight:800}
.topic .meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.chip{font-size:11px;font-weight:700;padding:3px 9px;border-radius:20px;background:var(--card-2);border:1px solid var(--line);color:var(--dim)}
.chip.niche{color:var(--nc,var(--accent));border-color:color-mix(in srgb,var(--nc,var(--accent)) 40%,transparent);background:color-mix(in srgb,var(--nc,var(--accent)) 12%,transparent)}
.chip.angle{color:var(--violet);border-color:color-mix(in srgb,var(--violet) 40%,transparent);background:color-mix(in srgb,var(--violet) 12%,transparent)}
.chip.plat{color:var(--cyan);border-color:color-mix(in srgb,var(--cyan) 38%,transparent);background:color-mix(in srgb,var(--cyan) 12%,transparent)}
.chip.fmt{color:var(--gold)}
.score{margin-left:auto;display:flex;align-items:center;gap:5px;font-weight:800;font-size:13px}
.score .bar{width:46px;height:6px;border-radius:6px;background:var(--card-2);overflow:hidden}
.score .bar i{display:block;height:100%;background:var(--grad)}
.topic .fav-btn{position:absolute;top:12px;right:12px;font-size:19px;line-height:1;opacity:.5;transition:.15s}
.topic .fav-btn.on{opacity:1}
.topic .fav-btn.pop{animation:pop .4s}
@keyframes pop{0%{transform:scale(1)}45%{transform:scale(1.4)}70%{transform:scale(.9)}100%{transform:scale(1)}}
.topic.flash{animation:flash .7s}
@keyframes flash{0%{box-shadow:0 0 0 2px var(--gold), var(--sh-sm)}100%{box-shadow:0 0 0 0 transparent, var(--sh-sm)}}
.topic-actions{display:flex;gap:6px;margin-top:12px;border-top:1px solid var(--line);padding-top:11px}
.topic-actions button{flex:1;font-size:11.5px;font-weight:700;color:var(--dim);padding:7px 3px;border-radius:9px;background:var(--card-2);border:1px solid var(--line)}
.topic-actions button:active{transform:scale(.95);color:var(--text)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;font-weight:800;font-size:14px;padding:13px 18px;border-radius:13px;background:var(--grad);color:#fff;box-shadow:0 6px 18px rgba(224,79,79,.30);width:100%}
.btn:active{transform:scale(.97)}
.btn.ghost{background:var(--card-2);border:1px solid var(--line-2);color:var(--text);box-shadow:none}
.btn.sm{padding:9px 14px;font-size:13px;width:auto}
.row{display:flex;gap:10px}
.row .btn{width:auto;flex:1}

.field{margin-bottom:12px}
.field label{display:block;font-size:12.5px;font-weight:700;color:var(--dim);margin:0 2px 6px}
.input,textarea.input,select.input{width:100%;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;color:var(--text);font-size:14.5px;padding:12px 13px;outline:none;transition:.15s}
.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft,rgba(224,79,79,.14))}
textarea.input{resize:vertical;min-height:70px;line-height:1.5}

.qgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.qtile{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:13px 6px;text-align:center;transition:.15s;box-shadow:var(--sh-sm)}
.qtile:active{transform:scale(.94);background:var(--card-2)}
.qtile .ico{font-size:23px;display:block;margin-bottom:5px}
.qtile .lbl{font-size:11px;font-weight:700;color:var(--dim)}

/* platform */
.plat-card{background:var(--card-solid);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh-sm)}
.plat-card + .plat-card{margin-top:12px}
.plat-head{display:flex;align-items:center;gap:10px;padding:14px 15px;background:var(--card-2)}
.plat-head .pico{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-size:16px;font-weight:900;color:#fff}
.pico.douyin{background:linear-gradient(135deg,#25f4ee,#fe2c55)}
.pico.xhs{background:#ff2442}
.pico.bili{background:#fb7299}
.plat-head .pname{font-weight:800;font-size:15px}
.plat-head .pvibe{font-size:11px;color:var(--faint);line-height:1.4;margin-top:2px}
.plat-body{padding:6px 15px 15px}
.pblock{padding:11px 0;border-top:1px solid var(--line)}
.pblock h4{margin:0 0 7px;font-size:12.5px;color:var(--gold);font-weight:800;display:flex;align-items:center;gap:6px}
.pblock li,.pblock p{font-size:12.8px;color:var(--dim);margin:3px 0;line-height:1.5}
.pblock ul{margin:0;padding-left:16px}
.tag-mini{display:inline-block;font-size:11px;background:var(--card-2);border:1px solid var(--line);border-radius:6px;padding:2px 7px;margin:3px 4px 0 0;color:var(--dim)}
.dos li{color:#9be7c4}.donts li{color:#ffb4b4}
:root[data-theme="paper"] .dos li{color:#2e7d54}:root[data-theme="paper"] .donts li{color:#b0413b}

.acc{background:var(--card-solid);border:1px solid var(--line);border-radius:var(--r);margin-bottom:10px;overflow:hidden;box-shadow:var(--sh-sm)}
.acc-h{display:flex;align-items:center;gap:10px;padding:14px 15px;font-weight:800;font-size:14px}
.acc-h .arr{margin-left:auto;color:var(--faint);transition:.2s;font-size:13px}
.acc.open .acc-h .arr{transform:rotate(180deg)}
.acc-b{display:none;padding:0 15px 15px;animation:rise .2s}
.acc.open .acc-b{display:block}

.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:14px}
.cal .dow{text-align:center;font-size:11px;color:var(--faint);font-weight:700;padding:2px 0}
.cal .day{aspect-ratio:1;border-radius:10px;background:var(--card-2);border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:5px;font-size:12px;position:relative;transition:.15s}
.cal .day.today{border-color:var(--gold);color:var(--gold)}
.cal .day.has{background:var(--grad-soft)}
.cal .day.sel{box-shadow:0 0 0 2px var(--accent)}
.cal .day .cnt{position:absolute;bottom:3px;font-size:9px;font-weight:800;color:var(--accent)}

.kb-cols{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px;scrollbar-width:none}
.kb-col{flex:0 0 76%;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:11px}
.kb-col h4{margin:0 0 10px;font-size:13px;display:flex;align-items:center;gap:7px}
.kb-col h4 .n{margin-left:auto;font-size:11px;color:var(--faint);background:var(--card-2);padding:1px 8px;border-radius:20px}
.kb-item{background:var(--card-solid);border:1px solid var(--line);border-radius:11px;padding:11px;margin-bottom:9px;font-size:13px}
.kb-item .kt{font-weight:700;margin-bottom:7px;line-height:1.4}
.kb-item .kb-move{display:flex;gap:6px}
.kb-item .kb-move button{font-size:11px;padding:4px 9px;border-radius:7px;background:var(--card-2);border:1px solid var(--line);color:var(--dim);font-weight:700}

.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:8px}
.stat{background:var(--card-solid);border:1px solid var(--line);border-radius:var(--r-sm);padding:13px;box-shadow:var(--sh-sm)}
.stat .v{font-size:22px;font-weight:900;background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;font-variant-numeric:tabular-nums}
.stat .k{font-size:11.5px;color:var(--faint);font-weight:700;margin-top:2px}
.stat .hint{font-size:10.5px;color:var(--dim);margin-top:4px}

.plan-phase{margin-bottom:14px}
.plan-phase .ph-h{font-size:13px;font-weight:800;color:var(--gold);margin:0 2px 8px;display:flex;gap:8px;align-items:baseline}
.plan-phase .ph-h .d{font-size:11px;color:var(--faint)}
.task{display:flex;gap:11px;align-items:flex-start;background:var(--card-solid);border:1px solid var(--line);border-radius:11px;padding:11px 12px;margin-bottom:7px}
.task .ck{flex:0 0 auto;width:21px;height:21px;border-radius:7px;border:2px solid var(--line-2);display:grid;place-items:center;font-size:12px;margin-top:1px;transition:.15s}
.task.done .ck{background:var(--good);border-color:var(--good);color:#04130d;transform:scale(1)}
.task.done .tt{color:var(--faint);text-decoration:line-through}
.task .tt{font-size:13px;line-height:1.45}

.radar-item{display:flex;gap:12px;background:var(--card-solid);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px;margin-bottom:9px;box-shadow:var(--sh-sm)}
.radar-item .rdate{flex:0 0 52px;text-align:center}
.radar-item .rdate .dd{font-size:18px;font-weight:900;background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;font-variant-numeric:tabular-nums}
.radar-item .rdate .tp{font-size:10px;color:var(--faint)}
.radar-item .rbody{flex:1;min-width:0}
.radar-item .rname{font-weight:800;font-size:14px;margin-bottom:5px}
.radar-item .rangle{font-size:12.3px;color:var(--dim);padding:2px 0 2px 16px;position:relative}
.radar-item .rangle::before{content:"▸";position:absolute;left:2px;color:var(--accent)}
.soon{border-color:color-mix(in srgb,var(--gold) 50%,transparent);background:var(--grad-soft)}

.fcard{background:var(--card-solid);border:1px solid var(--line);border-radius:var(--r);padding:14px;margin-bottom:10px;box-shadow:var(--sh-sm);transition:.15s}
.fcard.flash{box-shadow:0 0 0 2px var(--gold), var(--sh-sm)}
.fcard .fn{font-weight:800;font-size:14px;margin-bottom:5px;color:var(--text);line-height:1.4}
.fcard .fwhy{font-size:12px;color:var(--faint);margin-bottom:9px}
.fcard .ftpl{font-size:13px;background:var(--bg-2);border:1px dashed var(--line-2);border-radius:9px;padding:9px 11px;color:var(--gold-soft);margin-bottom:9px;font-weight:600;line-height:1.5}
.fcard .fex{font-size:12.5px;color:var(--dim);padding:3px 0 3px 16px;position:relative}
.fcard .fex::before{content:"·";position:absolute;left:5px;color:var(--accent)}
.struct{display:flex;gap:10px;padding:9px 0;border-top:1px solid var(--line)}
.struct .st-stage{flex:0 0 88px;font-weight:800;font-size:12.5px;color:var(--gold)}
.struct .st-stage .st-time{display:block;font-size:10px;color:var(--faint);font-weight:600}
.struct .st-what{font-size:12.5px;color:var(--dim);flex:1;line-height:1.5}

.empty{text-align:center;padding:42px 20px;color:var(--faint)}
.empty .e-ico{font-size:42px;margin-bottom:12px;opacity:.75}
.empty .e-t{font-size:14px;font-weight:700;color:var(--dim);margin-bottom:6px}
.empty .e-s{font-size:12.5px;line-height:1.6;max-width:280px;margin:0 auto}

.bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:50;max-width:560px;margin:0 auto;
  height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);
  display:flex;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(20px);border-top:1px solid var(--line);}
.navi{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--faint);font-size:10.5px;font-weight:700;transition:.15s}
.navi .ni{font-size:20px;line-height:1}
.navi.active{color:var(--text)}
.navi.active .ni{transform:translateY(-1px);filter:drop-shadow(0 3px 8px rgba(224,79,79,.5))}
.navi:active{transform:scale(.9)}

.toast{position:fixed;left:50%;bottom:calc(var(--nav-h) + 22px);transform:translateX(-50%) translateY(20px);
  background:var(--bg-2);border:1px solid var(--line-2);color:var(--text);font-size:13px;font-weight:700;
  padding:11px 18px;border-radius:30px;box-shadow:var(--sh);z-index:100;opacity:0;pointer-events:none;transition:.28s;max-width:80%;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

.sheet-mask{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:94;opacity:0;pointer-events:none;transition:.25s}
.sheet-mask.show{opacity:1;pointer-events:auto}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:95;max-width:560px;margin:0 auto;background:var(--bg-2);
  border-radius:24px 24px 0 0;border-top:1px solid var(--line-2);padding:8px 16px calc(20px + env(safe-area-inset-bottom));
  transform:translateY(100%);transition:.3s cubic-bezier(.3,.9,.4,1);max-height:84vh;overflow-y:auto;box-shadow:var(--sh)}
.sheet.show{transform:translateY(0)}
.sheet .grab{width:38px;height:4px;border-radius:4px;background:var(--line-2);margin:6px auto 14px}
.sheet h3{margin:0 0 4px;font-size:16px}
.sheet .sub{font-size:12.5px;color:var(--dim);margin-bottom:14px}

.foot{text-align:center;font-size:11px;color:var(--faint);padding:18px 16px 8px;line-height:1.8}
.foot a{color:var(--faint);text-decoration:none}

.pill-toggle{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}
.pt{padding:7px 13px;border-radius:20px;font-size:12.5px;font-weight:700;background:var(--card-2);border:1px solid var(--line);color:var(--dim)}
.pt.on{background:var(--grad-soft);border-color:var(--gold);color:var(--text)}

.divider{height:1px;background:var(--line);margin:16px 0}
.tiny{font-size:11px;color:var(--faint);line-height:1.6}
.center{text-align:center}
.mt8{margin-top:8px}.mt12{margin-top:12px}.mb12{margin-bottom:12px}
.gradtext{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;font-weight:900}

/* compass spin (generator) */
.spin{display:inline-block;animation:spin360 .65s cubic-bezier(.4,.1,.3,1)}
@keyframes spin360{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.stagger>*{animation:rise .4s both}
.stagger>*:nth-child(1){animation-delay:.04s}
.stagger>*:nth-child(2){animation-delay:.10s}
.stagger>*:nth-child(3){animation-delay:.16s}
.stagger>*:nth-child(4){animation-delay:.22s}
.stagger>*:nth-child(5){animation-delay:.28s}

/* solar term mini bar */
.term{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:11px 14px;margin-top:12px;box-shadow:var(--sh-sm)}
.term .tg{font-size:24px}
.term .tn{font-weight:800;font-size:14px}
.term .tx{font-size:11.5px;color:var(--dim)}
.term .tnext{margin-left:auto;text-align:right;font-size:11px;color:var(--gold)}

/* ===== AI 助手浮窗 ===== */
.fab{position:fixed;right:16px;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 16px);z-index:60;width:54px;height:54px;border-radius:50%;background:var(--grad);box-shadow:0 8px 24px rgba(224,79,79,.45);display:grid;place-items:center;font-size:24px;color:#fff}
.fab:active{transform:scale(.9)}
@media(min-width:592px){.fab{right:calc(50vw - 280px + 16px)}}
.chat-panel{position:fixed;inset:0;z-index:90;max-width:560px;margin:0 auto;background:var(--bg-grad);background-attachment:fixed;display:flex;flex-direction:column;transform:translateY(100%);transition:transform .32s cubic-bezier(.3,.9,.4,1);visibility:hidden}
.chat-panel.open{transform:translateY(0);visibility:visible}
.chat-head{display:flex;align-items:center;gap:8px;padding:calc(env(safe-area-inset-top) + 12px) 12px 12px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 80%,transparent);backdrop-filter:blur(12px)}
.chat-title{font-weight:800;font-size:16px}
.chat-model{font-size:11px;font-weight:700;color:var(--gold);background:var(--gold-glow);border:1px solid color-mix(in srgb,var(--gold) 35%,transparent);padding:4px 10px;border-radius:20px}
.chat-model:active{transform:scale(.94)}
.chat-x{width:34px;height:34px;border-radius:9px;background:var(--card-2);border:1px solid var(--line);font-size:14px}
.chat-x:active{transform:scale(.9)}
.chat-x#chatClear{margin-left:auto}
.chat-msgs{flex:1;overflow-y:auto;padding:16px 14px;display:flex;flex-direction:column;gap:12px}
.msg{display:flex;gap:8px;align-items:flex-end}
.msg.user{flex-direction:row-reverse}
.msg .msg-ava{width:28px;height:28px;border-radius:50%;background:var(--grad-soft);border:1px solid var(--line);display:grid;place-items:center;font-size:14px;flex:0 0 auto}
.bubble{padding:10px 13px;border-radius:15px;font-size:14px;line-height:1.62;max-width:82%;word-break:break-word;box-shadow:var(--sh-sm)}
.msg.assistant .bubble{background:var(--card-solid);border:1px solid var(--line);border-bottom-left-radius:5px}
.msg.user .bubble{background:var(--grad);color:#fff;border-bottom-right-radius:5px}
.msg.user .bubble b{color:#fff}
.bubble.typing{display:flex;gap:4px}
.bubble.typing i{width:7px;height:7px;border-radius:50%;background:var(--faint);animation:blink 1.2s infinite}
.bubble.typing i:nth-child(2){animation-delay:.2s}.bubble.typing i:nth-child(3){animation-delay:.4s}
@keyframes blink{0%,60%,100%{opacity:.3}30%{opacity:1}}
.chat-input{display:flex;gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:color-mix(in srgb,var(--bg) 85%,transparent);align-items:flex-end}
.chat-input textarea{flex:1;background:var(--card-solid);border:1px solid var(--line);border-radius:16px;color:var(--text);font-size:14.5px;padding:10px 14px;resize:none;outline:none;max-height:116px;line-height:1.4}
.chat-input textarea:focus{border-color:var(--accent)}
.chat-input #chatSend{flex:0 0 auto;width:40px;height:40px;border-radius:50%;background:var(--grad);color:#fff;font-size:20px;font-weight:800;display:grid;place-items:center}
.chat-input #chatSend:active{transform:scale(.9)}
.chat-welcome{text-align:center;padding:28px 10px;color:var(--dim)}
.cw-emoji{font-size:44px;margin-bottom:10px}
.cw-t{font-size:16px;font-weight:800;color:var(--text);margin-bottom:6px}
.cw-s{font-size:13px;margin-bottom:18px;line-height:1.6}
.chat-chips{display:flex;flex-direction:column;gap:8px;max-width:320px;margin:0 auto}
.chat-chip{padding:11px 14px;border-radius:12px;background:var(--card);border:1px solid var(--line);color:var(--text);font-size:13px;font-weight:600;text-align:left}
.chat-chip:active{background:var(--card-2)}

/* ===== 今日热点 ===== */
.hot-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}
.hot-row:last-child{border-bottom:none}
.hot-rank{flex:0 0 22px;text-align:center;font-weight:800;font-size:13px;color:var(--faint);font-variant-numeric:tabular-nums}
.hot-rank.top{color:var(--accent)}
.hot-t{flex:1;font-size:13.5px;line-height:1.45;min-width:0}
.hot-ai{flex:0 0 auto;width:30px;height:30px;border-radius:8px;background:var(--card-2);border:1px solid var(--line);font-size:14px}
.hot-ai:active{transform:scale(.9)}
.push-note{background:var(--grad-soft);border-color:color-mix(in srgb,var(--gold) 35%,transparent)}

/* ===== 模型选择 ===== */
.model-opt{display:flex;align-items:center;gap:10px;padding:13px 14px;border:1px solid var(--line);border-radius:12px;margin-bottom:9px;background:var(--card-solid)}
.model-opt.on{border-color:var(--gold);background:var(--grad-soft)}
.model-opt:active{transform:scale(.98)}
.model-opt .mo-label{font-weight:800;font-size:14px}
.model-opt .mo-id{font-size:11px;color:var(--faint);margin-top:2px}
.model-opt .mo-check{margin-left:auto;color:var(--gold);font-weight:900;font-size:16px}

/* ===== AI 工坊 ===== */
.studio-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.studio-tile{display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;padding:14px;border-radius:var(--r-sm);background:var(--card);border:1px solid var(--line);box-shadow:var(--sh-sm);transition:.15s}
.studio-tile.on{border-color:var(--gold);background:var(--grad-soft)}
.studio-tile:active{transform:scale(.97)}
.studio-tile .si{font-size:24px}
.studio-tile b{font-size:14px;font-weight:800}
.studio-tile span{font-size:11px;color:var(--faint)}
.uploader{display:flex;align-items:center;justify-content:center;min-height:120px;border:2px dashed var(--line-2);border-radius:14px;background:var(--bg-2);color:var(--dim);font-weight:700;font-size:13px;cursor:pointer;overflow:hidden}
.uploader img{max-width:100%;max-height:300px;border-radius:10px;display:none}
.ai-result{background:var(--card-solid);border:1px solid var(--line);border-radius:12px;padding:14px;font-size:13.5px;line-height:1.7;color:var(--text);white-space:normal}
.gen-img{width:100%;border-radius:12px;border:1px solid var(--line);display:block}

/* ===== 脚本包 ===== */
.pk-sec{margin:14px 0;padding-top:12px;border-top:1px solid var(--line)}
.pk-sec:first-child{border-top:none;padding-top:0}
.pk-h{font-size:12.5px;font-weight:800;color:var(--gold);margin-bottom:8px}
.pk-li{font-size:13.5px;line-height:1.55;padding:4px 0;color:var(--text)}
.pk-stage{margin-bottom:9px}
.pk-stage b{display:block;font-size:12px;color:var(--accent-2);margin-bottom:2px}
.pk-stage div{font-size:13.5px;line-height:1.6;color:var(--dim)}

/* 5 个操作按钮:更紧凑,必要时换行 */
.topic-actions{flex-wrap:wrap}
.topic-actions button{flex:1 1 auto;min-width:56px;font-size:11px;padding:7px 2px}

/* ===== 作品卡片标记 ===== */
.kb-marks{font-size:11px;opacity:.85;margin-left:4px}
.kb-item .kt{cursor:pointer}
.kb-item .kb-move button{cursor:pointer}
audio{filter:saturate(.9)}

/* ===== 发布检查清单 ===== */
.checklist{display:flex;flex-direction:column;gap:7px}
.chk{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--dim);padding:8px 10px;background:var(--card-solid);border:1px solid var(--line);border-radius:10px;cursor:pointer}
.chk.on{color:var(--text);border-color:color-mix(in srgb,var(--good) 45%,transparent)}
.chk-box{flex:0 0 auto;width:20px;height:20px;border-radius:6px;border:2px solid var(--line-2);display:grid;place-items:center;font-size:12px;font-weight:900;color:#04130d}
.chk.on .chk-box{background:var(--good);border-color:var(--good)}

/* ===== 分镜图 ===== */
.sb-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.sb-shot{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card-solid)}
.sb-shot img{width:100%;display:block;aspect-ratio:9/16;object-fit:cover}
.sb-cap{font-size:11px;color:var(--dim);padding:6px 8px;line-height:1.4}

/* ===== 继续创作卡 ===== */
.cont-card{background:var(--card-solid);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:var(--r-sm);padding:12px 14px;margin-bottom:9px;box-shadow:var(--sh-sm);cursor:pointer}
.cont-card:active{transform:scale(.98)}
.cont-t{font-weight:800;font-size:14px;line-height:1.4;margin-bottom:5px}
.cont-m{font-size:11.5px;color:var(--faint);display:flex;align-items:center}
.cont-go{margin-left:auto;color:var(--gold);font-weight:700}

/* ===== 智能下一步卡 ===== */
.smart-card{display:flex;align-items:center;gap:12px;margin-top:14px;padding:13px 15px;border-radius:var(--r);background:var(--grad-soft);border:1px solid color-mix(in srgb,var(--gold) 38%,transparent);box-shadow:var(--sh-sm)}
.smart-card .sc-l{flex:1;min-width:0}
.smart-card .sc-tag{font-size:10px;font-weight:800;color:var(--gold);letter-spacing:.6px;margin-bottom:3px}
.smart-card .sc-t{font-size:13.5px;font-weight:700;line-height:1.4}
.smart-card .sc-btn{flex:0 0 auto;background:var(--grad);color:#fff;font-weight:800;font-size:12.5px;padding:10px 14px;border-radius:11px;box-shadow:0 4px 12px rgba(224,79,79,.3);white-space:nowrap}
.smart-card .sc-btn:active{transform:scale(.95)}

/* ===== 首次引导 ===== */
.ob-step{font-size:13.5px;font-weight:800;margin:14px 2px 9px}
.ob-tips{background:var(--card-solid);border:1px solid var(--line);border-radius:12px;padding:13px 14px;margin-top:14px;display:flex;flex-direction:column;gap:9px}
.ob-tips div{font-size:12.5px;color:var(--dim);line-height:1.5}
.ob-tips b{color:var(--text)}

/* ===== 账号矩阵 ===== */
.acct-bar{display:flex;align-items:center;gap:8px;width:100%;padding:9px 13px;border-radius:12px;background:var(--card);border:1px solid var(--line);margin-bottom:12px;box-shadow:var(--sh-sm)}
.acct-bar:active{transform:scale(.99)}
.acct-bar .ab-ico{font-size:16px}
.acct-bar .ab-name{font-weight:800;font-size:13.5px}
.acct-bar .ab-cnt{font-size:10px;font-weight:700;color:var(--gold);background:var(--gold-glow);border:1px solid color-mix(in srgb,var(--gold) 35%,transparent);padding:1px 7px;border-radius:20px}
.acct-bar .ab-go{margin-left:auto;font-size:11.5px;color:var(--faint);font-weight:700}
.acct-item{display:flex;align-items:center;gap:10px;padding:13px 14px;border:1px solid var(--line);border-radius:12px;margin-bottom:9px;background:var(--card-solid)}
.acct-item.on{border-color:var(--gold);background:var(--grad-soft)}
.acct-item:active{transform:scale(.99)}
.acct-item .ai-main{flex:1;min-width:0}
.acct-item .ai-name{font-weight:800;font-size:14px}
.acct-item .ai-cur{font-size:10px;color:var(--gold);font-weight:700;background:var(--gold-glow);padding:1px 6px;border-radius:10px;margin-left:4px}
.acct-item .ai-meta{font-size:11.5px;color:var(--faint);margin-top:2px}
.acct-item .ai-edit{flex:0 0 auto;width:34px;height:34px;border-radius:9px;background:var(--card-2);border:1px solid var(--line);font-size:14px}

/* ===== 违禁词检测 ===== */
.ban-preview{font-size:14px;line-height:1.7;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:11px 13px}
.ban-preview mark{background:rgba(224,79,79,.28);color:var(--text);border-radius:3px;padding:0 2px;font-weight:700}

/* ===== 提词器 ===== */
.prompter{position:fixed;inset:0;z-index:120;background:#000;display:flex;flex-direction:column}
.prompter .tp-scroll{flex:1;overflow:hidden;padding:30vh 26px}
.prompter .tp-inner{color:#fff;font-weight:800;line-height:1.7;letter-spacing:.5px;text-align:center}
.prompter .tp-ctrl{display:flex;align-items:center;gap:10px;padding:12px 16px calc(14px + env(safe-area-inset-bottom));background:#111;border-top:1px solid #222}
.prompter .tp-ctrl input[type=range]{flex:1;accent-color:var(--accent)}
.prompter .tp-lab{color:#888;font-size:12px;font-weight:700}
.prompter .tp-btn{width:42px;height:42px;border-radius:50%;background:#222;color:#fff;font-size:16px;flex:0 0 auto}
.prompter .tp-btn:active{transform:scale(.9)}
