/**
 * 富文本编辑器样式 — 本地部署，无外部依赖
 */
.rt-editor{border:1.5px solid #e0e0e0;border-radius:10px;overflow:hidden;background:#fff;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif}
.rt-toolbar{display:flex;flex-wrap:wrap;gap:2px;padding:8px;background:#f8fafc;border-bottom:1px solid #e8e8e8;position:sticky;top:0;z-index:2}
.rt-toolbar-group{display:flex;gap:1px;padding:0 6px;border-right:1px solid #e0e0e0}
.rt-toolbar-group:last-child{border-right:none}
.rt-btn{width:32px;height:32px;border:none;background:transparent;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#555;font-size:14px;transition:.12s;position:relative}
.rt-btn:hover{background:#e5e7eb;color:#1a1a2e}
.rt-btn.active{background:#4a7c59;color:#fff}
.rt-btn svg{width:16px;height:16px}
.rt-select{height:32px;border:1px solid #ddd;border-radius:6px;padding:0 8px;font-size:12px;background:#fff;color:#333;cursor:pointer;min-width:70px}
.rt-select:focus{outline:none;border-color:#4a7c59}
.rt-content{min-height:300px;max-height:70vh;padding:16px;overflow-y:auto;line-height:1.8;font-size:15px;color:#333;outline:none}
.rt-content:focus{outline:none}
.rt-content h1{font-size:28px;margin:16px 0 10px}
.rt-content h2{font-size:22px;margin:14px 0 8px}
.rt-content h3{font-size:18px;margin:12px 0 6px}
.rt-content p{margin:0 0 12px}
.rt-content ul,.rt-content ol{padding-left:24px;margin:0 0 12px}
.rt-content img{max-width:100%;height:auto;border-radius:8px;margin:8px 0}
.rt-content a{color:#4a7c59;text-decoration:underline}
.rt-content blockquote{border-left:3px solid #4a7c59;padding-left:16px;color:#666;margin:12px 0}
.rt-content table{border-collapse:collapse;width:100%;margin:12px 0}
.rt-content table td,.rt-content table th{border:1px solid #ddd;padding:8px 12px;text-align:left}
.rt-content table th{background:#f8fafc;font-weight:600}
.rt-content hr{border:none;border-top:2px solid #eee;margin:16px 0}

/* 媒体库浏览弹窗 */
.rt-media-modal{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:999;display:none;align-items:center;justify-content:center;backdrop-filter:blur(3px)}
.rt-media-modal.open{display:flex}
.rt-media-box{background:#fff;border-radius:14px;width:90%;max-width:820px;max-height:85vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.3);animation:rtSlideUp .25s ease-out}
.rt-media-hd{padding:16px 20px;border-bottom:1px solid #eee;display:flex;justify-content:space-between;align-items:center}
.rt-media-hd h3{font-size:16px;font-weight:700;margin:0}
.rt-media-close{width:32px;height:32px;border:none;background:transparent;border-radius:6px;cursor:pointer;font-size:18px;color:#666;display:flex;align-items:center;justify-content:center}
.rt-media-close:hover{background:#f0f0f0}
.rt-media-filter{display:flex;gap:8px;padding:12px 20px;border-bottom:1px solid #f0f0f0;flex-wrap:wrap;align-items:center}
.rt-media-filter input{flex:1;min-width:160px;padding:8px 12px;border:1.5px solid #e0e0e0;border-radius:8px;font-size:13px}
.rt-media-filter input:focus{outline:none;border-color:#4a7c59}
.rt-media-filter select{padding:8px 12px;border:1.5px solid #e0e0e0;border-radius:8px;font-size:13px;background:#fff}
.rt-media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;padding:16px 20px;overflow-y:auto;flex:1}
.rt-media-item{border:2px solid #eee;border-radius:10px;overflow:hidden;cursor:pointer;transition:.15s;background:#fafafa;text-align:center}
.rt-media-item:hover{border-color:#4a7c59;box-shadow:0 4px 12px rgba(74,124,89,.15)}
.rt-media-item.selected{border-color:#4a7c59;background:rgba(74,124,89,.06)}
.rt-media-item img{width:100%;height:90px;object-fit:cover;display:block}
.rt-media-item .rt-media-icon{width:100%;height:90px;display:flex;align-items:center;justify-content:center;font-size:32px;color:#999}
.rt-media-item .rt-media-name{font-size:11px;padding:4px 6px;color:#666;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rt-media-ft{padding:12px 20px;border-top:1px solid #eee;display:flex;justify-content:space-between;align-items:center;gap:8px}
.rt-media-info{font-size:12px;color:#999}
.rt-media-pagination{display:flex;gap:4px}
.rt-media-pagination button{padding:4px 10px;border:1px solid #ddd;border-radius:6px;background:#fff;cursor:pointer;font-size:12px}
.rt-media-pagination button:hover{border-color:#4a7c59;color:#4a7c59}
.rt-media-pagination button:disabled{opacity:.4;cursor:default}
.rt-media-empty{padding:60px;text-align:center;color:#bbb;font-size:14px;grid-column:1/-1}

/* ---- 代码块 & 语法高亮 ---- */
.rt-content pre{background:#1e1e2e;color:#cdd6f4;border-radius:10px;padding:20px;overflow-x:auto;margin:12px 0;font-size:13px;line-height:1.7;tab-size:4;-moz-tab-size:4;position:relative}
.rt-content pre code{font-family:'JetBrains Mono','Fira Code','Cascadia Code','SF Mono',Consolas,monospace;background:transparent;padding:0;color:inherit}
.rt-content pre:before{content:attr(data-lang);position:absolute;top:8px;right:12px;font-size:11px;color:rgba(255,255,255,.25);text-transform:uppercase;letter-spacing:1px}
.rt-content :not(pre)>code{background:#f0f0f3;color:#d63384;padding:2px 7px;border-radius:4px;font-size:.9em;font-family:'JetBrains Mono','Fira Code',monospace}

/* 前台/后台通用的语法高亮 */
pre code{display:block}
.language-html .tag,.language-html .attr{color:#89b4fa}
.language-html .attr-value,.language-html .string{color:#a6e3a1}
.language-css .selector{color:#89b4fa}
.language-css .property{color:#f9e2af}
.language-css .value,.language-css .number{color:#a6e3a1}
.language-js .keyword,.language-javascript .keyword{color:#cba6f7}
.language-js .string,.language-javascript .string,.language-json .string{color:#a6e3a1}
.language-js .number,.language-javascript .number,.language-json .number{color:#fab387}
.language-js .comment,.language-javascript .comment,.language-css .comment,.language-html .comment{color:#6c7086;font-style:italic}
.language-php .keyword{color:#cba6f7}
.language-php .string{color:#a6e3a1}
.language-php .variable{color:#f9e2af}
.language-php .comment{color:#6c7086;font-style:italic}
.language-sql .keyword{color:#cba6f7}
.language-sql .string{color:#a6e3a1}
.language-sql .number{color:#fab387}
.language-bash .command,.language-sh .command{color:#89b4fa}
.language-bash .string,.language-sh .string{color:#a6e3a1}

/* 代码块浅色主题（前台页面） */
.page-content pre{background:#f5f5f8;color:#1e1e2e;border:1px solid #e0e0e8}
.page-content pre:before{color:rgba(0,0,0,.25)}
.page-content :not(pre)>code{background:#f0f0f3;color:#d63384}

@keyframes rtSlideUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}
@media(max-width:768px){.rt-toolbar{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}.rt-media-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}}
