/* style.css —— CSS 变量 + 骨架样式（T1 基础，后续统一视觉不逐元素调） */
:root{
  --primary:#3b82f6;
  --bg:#f8fafc;
  --card:#ffffff;
  --text:#1e293b;
  --text-muted:#64748b;
  --focus:#fde68a;
  --border:#e2e8f0;
  --gap:12px;
  --safe-bottom:env(safe-area-inset-bottom,0px);
  --safe-top:env(safe-area-inset-top,0px);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;font-family:-apple-system,system-ui,"Segoe UI",sans-serif;font-size:var(--font-size,16px);color:var(--text);background:var(--bg);-webkit-tap-highlight-color:transparent;touch-action:manipulation;overscroll-behavior:none}
.app{display:flex;flex-direction:column;height:100vh}

/* 顶栏 */
.topbar{position:relative;display:flex;align-items:center;justify-content:flex-end;padding:calc(var(--safe-top) + 8px) var(--gap) 8px;background:var(--card);border-bottom:1px solid var(--border);touch-action:none}
.topbar .nav-btns{display:flex;align-items:center}
.topbar .nav-btns button,.topbar .nav-btns select{margin-left:8px;padding:6px 12px;font-size:13px;border:1px solid var(--border);background:var(--card);border-radius:6px;color:var(--text)}
.topbar .nav-btns select{max-width:120px;cursor:pointer}

/* 课文选择自定义弹层（每行带改名/删除小按钮） */
.material-picker{position:relative;display:flex;flex:1;min-width:0;margin-left:8px}
.topbar .nav-btns .material-select-btn{margin-left:0;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.material-popup{position:absolute;top:calc(100% + 6px);left:0;right:0;width:auto;max-height:60vh;overflow-y:auto;background:var(--card);border-left:none;border-right:none;border-radius:0;box-shadow:0 4px 16px rgba(0,0,0,.14);z-index:100}
.mp-item{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border);font-size:14px}
.mp-item:last-child{border-bottom:none}
.mp-empty{color:var(--text-muted);justify-content:center}
.mp-title{justify-content:space-between}
.mp-title-text{color:var(--text-muted);cursor:pointer}
.mp-sort-btn.active{border-color:var(--primary);color:var(--primary)}
.mp-sort-menu{border-bottom:1px solid var(--border);background:var(--bg)}
.mp-sort-item{display:flex;align-items:center;padding:9px 16px 9px 20px;font-size:13px;color:var(--text);cursor:pointer}
.mp-sort-item.current{color:var(--primary);font-weight:500}
.mp-sort-item:active{background:var(--card)}
.mp-share-title{color:var(--text-muted);font-size:13px}
.mp-share-ok{justify-content:center;padding:10px 12px}
.mp-share-btn{flex:1;padding:9px 0;border:none;border-radius:8px;background:var(--primary);color:#fff;font-size:14px;cursor:pointer}
.mp-share-btn:disabled{opacity:.4}
.bundle-list{margin-top:8px}
.bundle-item{padding:10px 12px;border-bottom:1px solid var(--border)}
.bundle-title{font-size:14px;font-weight:500}
.bundle-meta{font-size:12px;color:var(--text-muted);margin-top:2px}
.bundle-total{padding:10px 12px;font-size:13px;color:var(--primary)}
.mp-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.mp-name.current{color:var(--primary);font-weight:500}
.mp-icon{flex-shrink:0;width:32px;height:32px;padding:0;border:1px solid var(--border);border-radius:6px;background:var(--card);font-size:15px;color:var(--text);cursor:pointer;line-height:1}
.mp-icon.ok{color:#16a34a;border-color:#bbf7d0}
.mp-icon.danger{color:#dc2626;border-color:#fecaca}
.mp-confirm-text{flex:1;color:#dc2626;font-size:14px}
.mp-input{flex:1;min-width:0;padding:6px 8px;border:1px solid var(--primary);border-radius:6px;font-size:14px;font-family:inherit}

/* 顶栏导入下拉菜单 */
.nav-menu{position:relative;display:flex;margin-left:8px}
.topbar .nav-btns .nav-menu > button{margin-left:0;white-space:nowrap}
.nav-popup{position:absolute;top:calc(100% + 6px);right:0;min-width:132px;background:var(--card);border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.14);z-index:110;overflow:hidden}
.np-item{padding:12px 16px;font-size:14px;white-space:nowrap;cursor:pointer}
.np-item:active{background:var(--bg)}

/* 文件导入步骤 */
.file-name{margin-top:10px;font-size:13px;color:var(--text-muted);word-break:break-all}
.file-hint{margin-top:8px;font-size:12px;color:var(--text-muted);line-height:1.5}

/* 页面 */
.page{flex:1;overflow-y:auto;padding:var(--gap);display:none}
.page-back{flex-shrink:0;width:calc((100% - 12px)/3);margin-bottom:var(--gap);padding:10px;font-size:14px;border:1px solid var(--border);background:var(--card);border-radius:8px;color:var(--text)}
.config-card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:12px}
.config-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1px solid var(--border)}
.config-row:last-child{border-bottom:none}
.config-row label{font-size:15px;color:var(--text)}
.config-row select{padding:8px 12px;font-size:14px;border:1px solid var(--border);background:var(--card);border-radius:6px;color:var(--text);max-width:60%}
.cfg-delay-val{font-size:15px;color:var(--text-muted);font-variant-numeric:tabular-nums}
.config-backup-row{flex-wrap:wrap}
.config-backup-btns{display:flex;gap:8px}
.config-backup-btns .btn-secondary{font-size:13px;padding:7px 12px;white-space:nowrap}
.page.active{display:block}

/* 学习页：flex 固定布局，仅课文区滚动 */
#page-learn.active{display:flex;flex-direction:column;height:100%;padding:var(--gap);overflow:hidden}
#page-learn .mode-bar{flex-shrink:0}

/* 导入页/配置页：与学习页同构——返回按钮占 mode-bar 几何位，内容区占 material-area 几何位 */
#page-import.active,#page-config.active{display:flex;flex-direction:column;height:100%;padding:var(--gap);overflow:hidden}
/* 导入页：粘贴框 y/高度对齐 .material-area（操作行替代底部 control-bar 位） */
#import-input{flex:1;min-height:0;display:flex;flex-direction:column;padding:0}
#import-input .import-actions{flex-shrink:0;margin-top:0}
/* 预览步骤可滚动，避免 flex 定高后内容被裁剪 */
#import-preview{flex:1;min-height:0;overflow-y:auto}
/* 配置页：TTS 设置卡片占据 .material-area 同区域（同 y、同高度） */
#page-config .config-card{flex:1;min-height:0}
.mode-bar{display:flex;gap:6px;margin-bottom:var(--gap)}
.mode-bar button{flex:1;padding:10px;font-size:14px;border:1px solid var(--border);background:var(--card);border-radius:8px;color:var(--text)}
.mode-bar button.active{background:var(--primary);color:#fff;border-color:var(--primary)}

.material-area{flex:1;min-height:0;background:var(--card);border:1px solid var(--border);border-radius:8px;padding:12px;margin-bottom:10px;font-size:var(--font-size,16px);line-height:1.8;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.material-area .sent{padding:6px 8px;border-radius:6px;cursor:pointer;margin-bottom:2px}
.material-area .sent:active{background:#f1f5f9}
.material-area .sent.active{background:var(--focus)}
.material-area .word{display:inline-block;padding:1px 3px;border-radius:4px;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.material-area .word.known{color:var(--text-muted)}
.material-area .word:active{background:#e0e7ff}
.material-area .word.active{background:var(--primary);color:#fff}
.material-area .sent.active .word.active{background:#1d4ed8}

.aux-area{flex:0.6;min-height:0;background:var(--card);border:1px solid var(--border);border-radius:8px;padding:10px 12px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;gap:4px}
.aux-word,.aux-sentence{padding:2px 0;line-height:1.5}
.aux-sentence{font-size:0.875rem;color:var(--text-muted)}
.aux-label{font-size:0.6875rem;color:var(--text-muted);margin-right:6px}

.control-bar{flex-shrink:0;background:var(--card);padding:0 0 calc(var(--safe-bottom) + 2px)}
.control-bar .btn-row{display:flex;gap:6px;margin-bottom:10px}
.control-bar .btn-row button{flex:1;padding:12px;font-size:14px;border:1px solid var(--border);background:var(--card);border-radius:8px;color:var(--text)}
.control-bar .btn-row button.primary{background:var(--primary);color:#fff;border-color:var(--primary)}

/* 导入页 */
.hidden{display:none!important}
.import-top-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:var(--gap)}
.import-top-bar .page-back{flex-shrink:0;width:auto;margin-bottom:0}
.import-top-bar .import-actions{display:flex;align-items:center;gap:10px}
.import-step{padding:0 var(--gap) var(--gap)}
#import-textarea{width:100%;flex:1;min-height:0;margin-bottom:calc(var(--safe-bottom) + 2px);border:1px solid var(--border);border-radius:8px;padding:10px;font-size:15px;font-family:inherit;resize:none;overflow-y:auto}
.import-actions{display:flex;align-items:center;gap:10px}
.fmt-label{font-size:13px;color:var(--text-muted)}
#import-fmt,.btn-primary,.btn-secondary{padding:8px 14px;font-size:14px;border:1px solid var(--border);background:var(--card);border-radius:6px}
.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}
.btn-primary:disabled{opacity:.4}
.btn-secondary{background:var(--card);color:var(--text)}
.preview-title-bar{margin-bottom:10px}
.title-input{width:70%;padding:6px 8px;border:1px solid var(--border);border-radius:6px;font-size:14px}
#preview-errors{color:#dc2626;font-size:13px;margin-bottom:8px}
#preview-errors .err-line{padding:4px 0;border-bottom:1px solid #fecaca}
.pv-sentence{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:10px;margin-bottom:8px}
.pv-sentence.has-error{border-color:#dc2626;background:#fef2f2}
.pv-words{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.pv-word{display:inline-flex;align-items:baseline;gap:4px;padding:3px 6px;border:1px solid var(--border);border-radius:4px;font-size:14px}
.pv-word .w{font-weight:500}
.pv-word .pos{font-size:11px;color:var(--text-muted)}
.pv-word .zh{font-size:13px;color:var(--primary);cursor:pointer;text-decoration:underline}
.pv-word.known{opacity:.6}
.pv-word.word-junk{border-color:#dc2626;background:#fef2f2;color:#dc2626}
.pv-word.word-junk .zh{color:#dc2626;cursor:default;text-decoration:none}
.pv-word.word-error{border-color:#dc2626;background:#fef2f2;color:#dc2626}
.pv-word.word-error .zh{color:#dc2626;cursor:default;text-decoration:none}
.err-summary{font-weight:500;padding:6px 0;border-bottom:2px solid #fecaca;margin-bottom:6px}
.sentence-error-hint{font-size:12px;color:#dc2626;margin-bottom:4px;padding:4px 8px;background:#fef2f2;border-radius:4px}
.pv-zh{font-size:14px;color:var(--text);padding:4px 0;border-top:1px dashed var(--border);margin-top:4px;cursor:pointer}
.preview-actions{display:flex;gap:10px;margin-top:12px;justify-content:flex-end}

/* toast */
#toast{position:fixed;left:50%;bottom:80px;transform:translateX(-50%);background:rgba(0,0,0,.8);color:#fff;padding:8px 16px;border-radius:6px;font-size:13px;display:none;z-index:999;max-width:80vw}

/* 占位提示 */
.placeholder{text-align:center;color:var(--text-muted);padding:40px 12px;font-size:14px}

/* ==================== 背景图片 + 玻璃化透明 ==================== */
body.has-app-bg{background-size:cover;background-position:center;background-repeat:no-repeat;background-attachment:fixed}
body.has-app-bg .topbar{background:transparent;border-color:rgba(0,0,0,.08)}
body.has-app-bg .topbar .nav-btns button,
body.has-app-bg .topbar .nav-btns select,
body.has-app-bg .topbar .nav-btns .material-select-btn{background:rgba(255,255,255,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
body.has-app-bg .material-popup{background:rgba(255,255,255,.85);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
body.has-app-bg .nav-popup{background:rgba(255,255,255,.85);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
body.has-app-bg .mp-icon{background:rgba(255,255,255,.6)}
body.has-app-bg .page-back{background:rgba(255,255,255,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
body.has-app-bg .config-card{background:rgba(255,255,255,.7);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
body.has-app-bg .config-row select{background:rgba(255,255,255,.55)}
body.has-app-bg .mode-bar button{background:rgba(255,255,255,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
body.has-app-bg .mode-bar button.active{background:var(--primary);color:#fff}
body.has-app-bg .material-area{background:rgba(255,255,255,.7);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
body.has-app-bg .aux-area{background:rgba(255,255,255,.7);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
body.has-app-bg .control-bar{background:transparent}
body.has-app-bg .control-bar .btn-row button{background:rgba(255,255,255,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
body.has-app-bg .control-bar .btn-row button.primary{background:var(--primary);color:#fff}
body.has-app-bg .pv-sentence{background:rgba(255,255,255,.7);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
body.has-app-bg #import-textarea{background:rgba(255,255,255,.6)}
body.has-app-bg .btn-secondary{background:rgba(255,255,255,.55)}

/* ==================== T14 生词本与生词句库 ==================== */
/* 生词标记：默认圆点；body.vocab-style-* 切换风格，颜色取 --vocab（配置页可选） */
.material-area .word.vocab::after{content:'';position:absolute;left:50%;bottom:-1px;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:var(--vocab,#f59e0b)}
.material-area .word.vocab.active::after{background:#fff}
body.vocab-style-underline .material-area .word.vocab::after,
body.vocab-style-block .material-area .word.vocab::after{display:none}
body.vocab-style-underline .material-area .word.vocab{border-bottom:2px solid var(--vocab,#f59e0b)}
body.vocab-style-underline .material-area .word.vocab.active{border-bottom-color:#fff}
body.vocab-style-block .material-area .word.vocab{background:var(--vocab-soft,rgba(245,158,11,.25))}
body.vocab-style-block .material-area .word.vocab.active{background:var(--primary);color:#fff}
/* T18 已掌握：仅极淡文字（颜色取 --mastered，默认淡绿），无圆点/下划线/底色，不抢生词视觉；焦点词保持白字；开关关时回默认色 */
.material-area .word.mastered{color:var(--mastered,rgba(22,101,52,.45))}
.material-area .word.mastered.active{color:#fff}
body.hide-mastered .material-area .word.mastered{color:inherit}
/* 长按生词菜单 */
.word-menu{position:fixed;z-index:130;background:#1f2937;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.28);padding:4px;display:flex;flex-direction:column;gap:2px;min-width:132px}
.word-menu button{background:transparent;color:#fff;border:none;padding:8px 14px;font-size:14px;white-space:nowrap;border-radius:6px;text-align:center}
.word-menu button:active{background:#374151}
.word-menu button.remove{color:#fca5a5}
.word-menu #word-menu-hard{color:#fbbf24}
.word-menu #word-menu-hard.remove{color:#fca5a5}
.word-menu #word-menu-master{color:#86efac}
.word-menu #word-menu-jump{border-top:1px solid #374151;border-radius:0;font-size:13px;color:#93c5fd}
/* 虚拟句库：来源材料小灰字 */
.material-area .sent-src{font-size:0.6875rem;color:var(--text-muted);line-height:1.4;margin-bottom:2px}
/* 弹层句库入口 */
.mp-divider{height:1px;background:var(--border);margin:2px 0}
.mp-item.mp-vocab.current{background:var(--focus)}
.mp-vocab-name{font-weight:600;color:#b45309}
.mp-item.mp-hard.current{background:var(--focus)}
.mp-hard-name{font-weight:600;color:#dc2626}
/* T16 难句句级视觉标记：左侧 3px 红色色条 */
.material-area .sent.hard{border-left:3px solid #ef4444;padding-left:5px}
/* 显示行号：默认隐藏，body.show-line-num 时在句首显示序号 */
.material-area .line-num{display:none}
body.show-line-num .material-area .line-num{display:inline-block;min-width:20px;margin-right:6px;color:var(--text-muted);font-size:0.6875rem;text-align:right;user-select:none;-webkit-user-select:none;vertical-align:baseline}
/* 统计页生词管理 */
.stats-vocab-head{display:flex;align-items:center;gap:10px;padding:12px 4px;font-size:15px}
.stats-vocab-title{font-weight:600}
.stats-vocab-count{color:var(--text-muted);font-size:13px;flex:1}
.stats-vocab-head button{padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:var(--card);font-size:13px}
.vocab-list{margin-top:4px}
.vocab-row{display:flex;align-items:center;gap:8px;padding:10px 8px;border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.vocab-main{flex:1;min-width:0;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.vocab-w{font-weight:600}
.vocab-ph{font-size:12px;color:var(--text-muted)}
.vocab-zh{font-size:13px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vocab-meta{font-size:11px;color:var(--text-muted);white-space:nowrap}
.vocab-del{border:none;background:transparent;color:#dc2626;font-size:14px;padding:6px}
.vocab-empty{padding:20px;text-align:center;color:var(--text-muted);font-size:13px}
#cfg-vocab-color{width:48px;height:32px;padding:2px;border:1px solid var(--border);border-radius:6px;background:var(--card);cursor:pointer}
body.has-app-bg #import-fmt{background:rgba(255,255,255,.55)}

/* 背景选择器弹窗 */
.bg-picker-mask{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:200;display:flex;align-items:center;justify-content:center}
.bg-picker{background:var(--card);border-radius:12px;padding:16px;width:calc(100vw - 48px);max-width:400px;max-height:70vh;overflow-y:auto}
.bg-picker-title{font-size:15px;font-weight:500;margin-bottom:12px}
.bg-row{display:flex;gap:10px;overflow-x:auto;padding-bottom:8px}
.bg-thumb{width:72px;height:100px;border-radius:8px;object-fit:cover;cursor:pointer;border:2px solid transparent;flex-shrink:0}
.bg-thumb.sel{border-color:var(--primary)}
.bg-thumb-none{width:72px;height:100px;border-radius:8px;cursor:pointer;border:2px solid transparent;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--bg);font-size:12px;color:var(--text-muted)}
.bg-thumb-none.sel{border-color:var(--primary)}
.bg-thumb-custom{width:72px;height:100px;border-radius:8px;cursor:pointer;border:2px solid transparent;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--bg);font-size:12px;color:var(--text-muted);text-align:center;overflow:hidden;position:relative}
.bg-thumb-custom.sel{border-color:var(--primary)}
.bg-thumb-custom img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.bg-thumb-custom span{position:relative;z-index:1;text-shadow:0 1px 3px rgba(0,0,0,.5);color:#fff}

/* ==================== T15 学习进度「赞」 ==================== */
.topbar .nav-btns button#btn-praise{background:var(--primary);color:#fff;border-color:var(--primary);flex-shrink:0}
body.has-app-bg .topbar .nav-btns button#btn-praise{background:var(--primary);color:#fff}
.praise-mask{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:200;display:flex;align-items:center;justify-content:center}
.praise-panel{background:var(--card);border-radius:12px;padding:18px 16px;width:calc(100vw - 48px);max-width:380px}
.praise-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.praise-title{font-size:16px;font-weight:600}
.praise-close{color:var(--text-muted);font-size:16px;padding:4px 8px;cursor:pointer}
.praise-pos{text-align:center;font-size:15px;color:var(--text-muted);margin-bottom:14px}
.praise-pos b{font-size:22px;color:var(--primary)}
.praise-tabs{display:flex;gap:6px;margin-bottom:14px}
.praise-tabs button{flex:1;padding:8px;font-size:13px;border:1px solid var(--border);background:var(--bg);border-radius:8px;color:var(--text)}
.praise-tabs button.on{background:var(--primary);color:#fff;border-color:var(--primary)}
.praise-stats{display:flex;gap:8px;margin-bottom:12px}
.praise-stats .pstat{flex:1;text-align:center;background:var(--bg);border-radius:8px;padding:10px 4px}
.praise-stats .pstat b{display:block;font-size:22px;color:var(--primary)}
.praise-stats .pstat span{font-size:12px;color:var(--text-muted)}
.praise-streak{text-align:center;font-size:13px;color:#d97706;margin-bottom:8px;min-height:18px}
.praise-msg{text-align:center;font-size:14px;line-height:1.6;color:var(--text);background:var(--bg);border-radius:8px;padding:10px}
.praise-trend-btn{display:block;width:100%;margin-top:10px;padding:9px;font-size:13px;border:1px solid var(--primary);background:transparent;color:var(--primary);border-radius:8px;cursor:pointer}
/* 按日期复习 */
.day-review{margin-top:12px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--bg)}
.day-review-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.day-review-label{font-size:14px;font-weight:500;color:var(--text)}
#day-review-date{padding:5px 8px;font-size:13px;border:1px solid var(--border);border-radius:6px;background:var(--card);color:var(--text);font-family:inherit}
.day-review-stats{display:flex;gap:12px;margin-bottom:10px}
.dr-stat{font-size:13px;color:var(--text-muted)}
.dr-stat b{color:var(--primary);font-size:16px;margin-right:2px}
.day-review-btns{display:flex;gap:8px}
.dr-btn{flex:1;padding:8px;font-size:13px;border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:6px;cursor:pointer}
.dr-btn:active{background:var(--focus)}
.dr-btn:disabled{opacity:.4;cursor:not-allowed}

/* T17 每日学习趋势图 */
.trend-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.trend-back{padding:4px 10px;font-size:13px;border:1px solid var(--border);background:var(--card);border-radius:6px;color:var(--text);cursor:pointer}
.trend-title{font-size:15px;font-weight:600}
.trend-tabs{display:flex;gap:6px;margin-bottom:8px}
.trend-tabs button{flex:1;padding:7px;font-size:13px;border:1px solid var(--border);background:var(--bg);border-radius:8px;color:var(--text)}
.trend-tabs button.on{background:var(--primary);color:#fff;border-color:var(--primary)}
.trend-legend{display:flex;gap:12px;justify-content:center;margin-bottom:6px;font-size:12px;color:var(--text-muted)}
.trend-legend .lg{display:inline-flex;align-items:center;gap:4px;cursor:pointer;opacity:.4}
.trend-legend .lg.on{opacity:1;color:var(--text)}
.trend-legend .lg i{width:12px;height:3px;border-radius:2px;display:inline-block}
.trend-chart{width:100%;min-height:190px}
.trend-svg{width:100%;height:auto;display:block}
.tg-grid{stroke:var(--border);stroke-width:.6;stroke-dasharray:3,3}
.tg-ylabel{font-size:9px;fill:var(--text-muted);text-anchor:end}
.tg-xlabel{font-size:8.5px;fill:var(--text-muted);text-anchor:end}
.tg-sel{stroke:var(--primary);stroke-width:.8;stroke-dasharray:3,3;opacity:.6}
.trend-tip{text-align:center;font-size:12px;color:var(--text);min-height:18px;margin-top:2px}
.trend-err{font-size:12px;color:#dc2626;text-align:center;padding:6px}
.trend-empty{display:flex;align-items:center;justify-content:center;height:180px;font-size:13px;color:var(--text-muted)}
