:root{font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif;color:#172033;background:#f7f8fc;font-size:14px}*{box-sizing:border-box}body{margin:0}.app-shell{display:flex;min-height:100vh}.sidebar{width:244px;background:#111a2e;color:#aeb8cb;display:flex;flex-direction:column;padding:25px 14px}.brand{display:flex;align-items:center;gap:11px;color:#fff;font-size:21px;font-weight:700;padding:0 14px}.brand-mark{background:#5b65e8;color:#fff;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-family:Georgia;font-size:20px}.workspace-label{font-size:11px;letter-spacing:1.5px;color:#65718a;margin:44px 14px 12px}.nav-list{display:grid;gap:6px}.nav-item{border:0;background:transparent;color:#9ba8bf;text-align:left;font-size:14px;padding:12px 14px;border-radius:9px;display:flex;gap:13px;align-items:center;cursor:pointer}.nav-item span{width:18px;text-align:center;color:#7988a5}.nav-item.active,.nav-item:hover{background:#202b49;color:#fff}.nav-item.active span{color:#8b95ff}.nav-badge{margin-left:auto;background:#e97572;color:#fff;font-size:10px;border-radius:10px;padding:2px 7px}.sidebar-bottom{margin-top:auto}.user-chip{border-top:1px solid #26334f;padding:18px 8px 0;display:flex;align-items:center;gap:9px;color:#fff}.user-chip small{display:block;color:#74809a;margin-top:3px;font-size:11px}.avatar{width:31px;height:31px;border-radius:50%;display:grid;place-items:center;background:#f0c793;color:#714b2a;font-weight:700}.user-chip button{margin-left:auto;background:transparent;border:0;color:#8290ab;font-size:17px}.main-content{flex:1;min-width:0}.topbar{height:70px;background:#fff;border-bottom:1px solid #e9ebf2;padding:0 44px;display:flex;align-items:center;justify-content:space-between}.breadcrumb{color:#9ba4b5}.breadcrumb span{padding:0 10px;color:#d1d5df}.breadcrumb strong{color:#313b50}.top-actions{display:flex;gap:16px;align-items:center}.icon-button,.help-button{border:0;background:transparent;color:#748097;font-size:20px;position:relative}.icon-button i{position:absolute;width:6px;height:6px;background:#f16e6e;border-radius:50%;right:0;top:1px}.help-button{border:1px solid #dce1ec;border-radius:50%;width:25px;height:25px;font-size:13px}.page-view{padding:40px 44px;max-width:1440px}.hidden{display:none}.page-heading{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:32px}.eyebrow{font-size:11px;letter-spacing:1.7px;color:#7d88a0;margin:0 0 9px;font-weight:700}.page-heading h1{margin:0;font-size:28px;letter-spacing:-.5px}.muted{color:#8d97a9;margin:9px 0 0}.primary-button{background:#5865e9;border:0;color:#fff;border-radius:7px;padding:11px 18px;font-weight:600;cursor:pointer;box-shadow:0 4px 10px #5865e933}.primary-button:hover{background:#4652d3}.primary-button span{margin-left:8px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.metric-card,.panel{background:#fff;border:1px solid #e9ebf2;border-radius:10px;box-shadow:0 2px 6px #1e2d4b05}.metric-card{padding:21px 23px}.metric-label{display:block;color:#7f899e;font-size:13px;margin-bottom:16px}.metric-card strong{font-size:29px;display:block;color:#1c273d}.metric-change{font-size:11px;display:block;margin-top:12px}.metric-change em{font-style:normal;color:#a2aaba;margin-left:5px}.positive{color:#36a47a}.warning{color:#e29936}.neutral{color:#7f899e}.dashboard-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:20px}.panel-header{display:flex;justify-content:space-between;align-items:flex-start;padding:22px 23px 16px}.panel h2{font-size:16px;margin:0}.panel-header p{color:#a0a8b7;margin:7px 0 0;font-size:12px}.text-button{border:0;background:transparent;color:#5966e6;font-size:12px;cursor:pointer}.activity-row{padding:17px 23px;border-top:1px solid #f0f1f5;display:flex;align-items:center;gap:12px}.activity-icon,.quick-icon{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;font-weight:700;font-size:12px}.blue{background:#e8edff;color:#5466e8}.purple{background:#f0e9ff;color:#9165d8}.orange{background:#fff0df;color:#d98a36}.green{background:#e2f7ee;color:#39a676}.yellow{background:#fff5d8;color:#c99730}.activity-row div{flex:1}.activity-row strong{font-size:13px;font-weight:600}.activity-row a{color:#5865e9}.activity-row small{display:block;color:#9ba4b5;font-size:11px;margin-top:6px}.status-pill{font-size:11px;padding:5px 8px;border-radius:5px;white-space:nowrap}.published{background:#e9f7f0;color:#299365}.review{background:#fff4df;color:#c78428}.draft{background:#eef0f4;color:#798397}.quick-links{padding:0 13px 15px}.quick-links button{width:100%;display:flex;align-items:center;gap:12px;padding:14px 10px;background:transparent;border:0;border-radius:8px;text-align:left;cursor:pointer}.quick-links button:hover{background:#f7f8fc}.quick-links span:nth-child(2){flex:1}.quick-links strong{display:block;font-size:13px}.quick-links small{display:block;color:#9ba4b5;margin-top:5px;font-size:11px}.quick-links b{font-size:18px;color:#9ea7b8;font-weight:400}.toolbar{display:flex;gap:10px;margin-bottom:16px}.search-box{height:40px;background:#fff;border:1px solid #dfe3ed;border-radius:7px;display:flex;align-items:center;padding:0 12px;flex:1;max-width:500px;color:#a2aabd}.search-box input{border:0;outline:0;flex:1;margin-left:8px;font:inherit;color:#24304a}.toolbar select,.filter-button{height:40px;border:1px solid #dfe3ed;background:#fff;border-radius:7px;padding:0 13px;color:#66738a}.filter-button{cursor:pointer}.table-panel{overflow:hidden}.table-panel table{width:100%;border-collapse:collapse}.table-panel th{color:#8b95a7;font-weight:500;font-size:11px;text-align:left;background:#fafbfc;padding:13px 20px}.table-panel td{padding:17px 20px;border-top:1px solid #eff1f5;color:#4d586d}.table-panel td small{display:block;color:#9aa3b2;font-size:11px;margin-top:5px}.word{font-size:15px;color:#27334b}.progress{height:5px;width:110px;background:#edf0f5;border-radius:8px;display:inline-block;margin-right:7px}.progress i{display:block;height:100%;background:#6975e8;border-radius:8px}.row-action{border:0;background:transparent;color:#5865e9;cursor:pointer}.table-footer{padding:16px 20px;display:flex;justify-content:space-between;color:#8e98aa;font-size:12px;border-top:1px solid #eff1f5}.table-footer div{display:flex;gap:5px;align-items:center}.page-button{border:1px solid #e1e5ed;background:#fff;border-radius:5px;color:#7e899b;width:27px;height:27px;cursor:pointer}.page-button.active{background:#5865e9;color:#fff;border-color:#5865e9}.empty-state{text-align:center;padding:90px 20px}.empty-icon{margin:auto auto 16px;width:48px;height:48px;border-radius:14px;background:#eef0ff;color:#5865e9;display:grid;place-items:center;font-size:22px}.empty-state h2{font-size:17px;margin:0}.empty-state p{color:#8f99a9}
@media(max-width:900px){.sidebar{width:190px}.page-view{padding:28px 24px}.metric-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.topbar{padding:0 24px}}
.modal-backdrop{position:fixed;inset:0;background:#18233b66;display:grid;place-items:center;z-index:5}.modal-backdrop.hidden{display:none}.modal{width:min(520px,100%);background:#fff;border-radius:12px;padding:24px;box-shadow:0 22px 70px #101a3038}.modal-header{display:flex;justify-content:space-between;margin-bottom:20px}.modal-header h2{margin:0}.modal-header button{border:0;background:none;font-size:24px}.modal label{display:block;margin:14px 0;color:#56627a}.modal input,.modal textarea{display:block;width:100%;margin-top:7px;border:1px solid #dfe3ed;border-radius:7px;padding:10px;font:inherit}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:20px}.modal-actions button{padding:10px 16px;border:1px solid #dfe3ed;border-radius:7px;background:#fff}.modal-actions .primary-button{border:0;color:#fff;background:#5865e9}
.detail-modal{max-width:680px}.detail-section{padding:14px 0;border-top:1px solid #edf0f5}.detail-section h3{font-size:13px;margin:0 0 8px;color:#69758a}.detail-section p{margin:0;color:#34415a;line-height:1.7}
.login-screen{position:fixed;inset:0;background:#f4f6fb;z-index:20;display:grid;place-items:center}.login-screen.hidden{display:none}.login-card{width:min(410px,calc(100% - 40px));background:#fff;border:1px solid #e7eaf2;border-radius:14px;padding:38px;box-shadow:0 16px 50px #1f2d4b12}.login-brand{padding:0;margin-bottom:36px;color:#172033}.login-card h1{margin:0;font-size:25px}.login-card>p{color:#8d97a9;margin:10px 0 28px}.login-card label{display:block;color:#56627a;font-size:12px;font-weight:600;margin-bottom:15px}.login-card input{display:block;width:100%;margin-top:7px;border:1px solid #dfe3ed;border-radius:7px;padding:11px;font:inherit}.code-field{display:grid;grid-template-columns:1fr 110px;gap:9px;align-items:end}.code-field button{height:41px;border:1px solid #dfe3ed;background:#fff;border-radius:7px;color:#5865e9;cursor:pointer}.login-submit{width:100%;margin-top:8px}.login-error{color:#d65d5d;font-size:12px;min-height:18px;margin-bottom:6px}
.login-switch{display:block;margin:18px auto 0;border:0;background:none;color:#5865e9;cursor:pointer}.setup-form{display:none}.login-card.setup-mode .login-form{display:none}.login-card.setup-mode .setup-form{display:block}.setup-form .code-row{display:grid;grid-template-columns:1fr 110px;gap:8px}.setup-form .code-row button{height:40px;border:1px solid #dfe3ed;border-radius:7px;background:#fff;color:#5865e9}
.setup-form .code-row{align-items:end}.setup-form .code-row label{margin-bottom:0}.setup-form .code-row button{margin-bottom:0;align-self:end}
.empty-table{text-align:center!important;color:#9aa3b2!important;padding:48px!important}
.login-card.setup-mode #login-form{display:none}

/* ===== 组件样式：管理端功能页面 ===== */
.hidden{display:none!important}
.api-chip{font-size:11px;color:#7d88a0;background:#f2f4f9;border-radius:20px;padding:5px 12px;white-space:nowrap}
.login-footnote{text-align:center;color:#a2aaba;font-size:11px;margin:18px 0 0;word-break:break-all}
.page-button:disabled{opacity:.45;cursor:not-allowed}
.pager{display:flex;align-items:center;gap:6px}
.pager-size{color:#8e98aa;font-size:12px;margin-right:6px}
.pager-size select{height:28px;border:1px solid #e1e5ed;border-radius:6px;background:#fff;color:#5b6880;font:inherit;padding:0 6px;margin:0 2px}
.pager-jump{color:#8e98aa;font-size:12px;display:flex;align-items:center;gap:4px}
.pager-input{width:56px;height:27px;border:1px solid #e1e5ed;border-radius:5px;text-align:center;color:#3c485e;font:inherit;padding:0 4px}
.pager-input:focus{outline:2px solid #5865e933;border-color:#5865e9}
.status-pill.archived{background:#f0f1f5;color:#79839a}
.part-of-speech{color:#27334b;font-size:13px}
.error-text{color:#c9503c!important}
.truncate{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.table-actions{white-space:nowrap}
.table-actions .row-action+.row-action{margin-left:12px}

.section-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}
.section-head .muted{margin:0}
.segmented{display:inline-flex;gap:4px;background:#eef0f6;border-radius:9px;padding:4px;margin-bottom:22px}
.segmented button{border:0;background:transparent;padding:9px 18px;border-radius:7px;color:#5b6880;cursor:pointer;font:inherit;font-weight:600}
.segmented button.active{background:#fff;color:#3a46c4;box-shadow:0 2px 6px #1e2d4b14}
.panel-toolbar{padding:0 22px 14px}
.sub-title{font-size:14px;margin:22px 0 10px;color:#3c485e}
.sub-title .count{color:#9aa3b2;font-weight:400;font-size:12px}

.badge{display:inline-block;font-size:11px;padding:3px 8px;border-radius:5px;background:#eef1f7;color:#5d6a80}
.badge.soft{background:#eef1f8;color:#5b6880}
.badge.core{background:#e8edff;color:#4a58d8}
.badge.warn{background:#fff4df;color:#c78428}
.count{color:#9aa3b2;font-weight:400;font-size:12px}

.picker{border:1px solid #e6e9f1;border-radius:9px;padding:10px;background:#fbfbfe}
.picker-search{display:flex;gap:8px}
.picker-search input{flex:1;border:1px solid #dfe3ed;border-radius:7px;padding:9px 10px;font:inherit;color:#24304a}
.picker-results{display:grid;gap:6px;max-height:220px;overflow:auto;margin-top:10px}
.picker-results:empty{display:none;margin:0}
.picker-option{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:1px solid #eef0f5;background:#fff;border-radius:8px;padding:9px 11px;cursor:pointer;font:inherit;color:#27334b}
.picker-option:hover{background:#f6f7fc}
.picker-option.active{border-color:#5865e9;box-shadow:0 0 0 2px #5865e91a}
.picker-option .mini-note{flex:1}
.picker-selected{margin-top:10px;font-size:12px;color:#8b95a7}
.picker-selected.picked{color:#3a46c4;font-weight:600}
.readonly-chip{display:inline-block;background:#f2f4f9;border-radius:7px;padding:9px 12px;color:#3c485e}
.root-family{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.root-member{display:grid;gap:4px;text-align:left;border:1px solid #eef0f5;background:#fff;border-radius:9px;padding:10px 12px;cursor:pointer;font:inherit;color:#27334b}
.root-member:hover{background:#f7f8fc;border-color:#dfe3ed}
.root-member-head{display:flex;align-items:center;gap:8px}
.root-member-head i{font-style:normal}
.root-member-note{color:#8b95a7;font-size:12px;line-height:1.5}
.root-member-root{color:#5865e9;font-size:11px}

.kv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px;margin:0}
.kv div{display:flex;flex-direction:column;gap:4px}
.kv dt{color:#8b95a7;font-size:12px}
.kv dd{margin:0;color:#27334b;line-height:1.6;word-break:break-word}

.tree-panel{padding:0;overflow:hidden}
.tree{list-style:none;margin:0;padding:0}
.tree ul{list-style:none;margin:0;padding:0}
.tree-row{display:flex;align-items:center;gap:10px;padding:12px 18px 12px 0;border-top:1px solid #f0f1f5}
.tree>.tree-row:first-child{border-top:0}
.tree-row:hover{background:#fafbfe}
.tree-row-active{background:#f2f4ff}
.record-active{border-color:#5865e9;box-shadow:0 0 0 2px #5865e91a}
.panel-soft{background:#fff;border:1px solid #e9ebf2;border-radius:10px;padding:16px 18px;margin-bottom:14px}
.panel-soft .panel-header{padding:0 0 12px}
.panel-soft h3{font-size:14px;margin:0;color:#243049}
.panel-soft.danger-zone{border-color:#f3d9d3;background:#fffdfc}
.panel-soft.danger-zone h3{color:#b3402c}
.tag-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.tree-name{font-weight:600;color:#27334b}
.tree-sort{color:#9aa3b2;font-size:11px}
.tree-actions{margin-left:auto;display:flex;gap:14px;padding-right:18px}

.detail-card{background:#fff;border:1px solid #e9ebf2;border-radius:10px;padding:20px 22px;margin-bottom:16px}
.detail-card-head{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px;flex-wrap:wrap}
.detail-card-head h3{margin:0;font-size:15px}
.definition{margin:0;color:#243049;font-weight:600;line-height:1.7}
.definition-en{margin:6px 0 0;color:#7b8698;font-size:13px;line-height:1.6}
.sub-card{border:1px solid #eceff5;border-radius:9px;padding:16px;margin-top:12px;background:#fcfcfe}
.sub-card-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:10px}
.sub-card-head>div{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.sub-section{margin-top:14px;border-top:1px dashed #e7eaf2;padding-top:12px}
.sub-section-head{display:flex;justify-content:space-between;align-items:center;gap:12px}
.sub-section-head h4{margin:0;font-size:13px;color:#4b5768}

.mini-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px}
.mini-list li{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;background:#fff;border:1px solid #eef0f5;border-radius:8px;padding:10px 12px}
.mini-main{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-width:0}
.mini-note{color:#8b95a7;font-size:12px}
.mini-note.warn{color:#c78428}
.pattern{color:#27334b}
.sentence{color:#1f2b42;font-weight:600}

.record-list{display:grid;gap:10px}
.record{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid #eef0f5;border-radius:9px;padding:12px 14px}
.record-title{display:flex;align-items:center;gap:10px}
.record-detail{color:#8b95a7;font-size:12px;margin-top:6px}
/* 音标：指定带 IPA 字形的字体（界面字体是中文优先，IPA 符号会发虚），
   并略微加大字号、加一点字距，长音符号和重音符号更清楚 */
.ipa{font-family:"Segoe UI","Lucida Sans Unicode","Charis SIL","Doulos SIL","Gentium Plus","DejaVu Sans","Calibri",system-ui,sans-serif;font-size:16px;font-weight:500;letter-spacing:.3px;font-variant-ligatures:none;color:#27334b}
.form-field input[name="ipa"]{font-family:"Segoe UI","Lucida Sans Unicode","Charis SIL","Doulos SIL","Gentium Plus","DejaVu Sans","Calibri",system-ui,sans-serif;font-size:15px;letter-spacing:.3px}
.record-actions{display:flex;gap:12px;align-items:center;white-space:nowrap}
.row-action.danger{color:#c9503c}

.message-block{padding:26px;text-align:center;color:#98a1b2;font-size:13px}
.block-error{color:#c9503c}
.block-empty{color:#a2aaba}
.review-summary{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.meta-text{color:#8b95a7;font-size:12px}

.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}
.form-field{display:flex;flex-direction:column;gap:6px;min-width:0}
/* 旧弹窗样式给 label 加了 margin、给 input 加了 margin-top（但没给 select），
   会让同一行的下拉框与输入框错开 7px；这里统一清零，保证上下对齐 */
.form-field>label{font-size:12px;color:#56627a;font-weight:600;margin:0}
.form-field input,.form-field select,.form-field textarea{border:1px solid #dfe3ed;border-radius:7px;padding:9px 10px;font:inherit;color:#24304a;width:100%;background:#fff;margin:0}
.form-field .checkbox-label{margin:0}
.form-field textarea{resize:vertical}
.span-2{grid-column:span 2}
.required{color:#d2604f;font-style:normal}
.hint{color:#9aa3b2;font-size:11px;line-height:1.6}
.hint.warn-text{color:#c78428}
.checkbox-label{display:flex;align-items:center;gap:8px;font-weight:600;color:#56627a;font-size:12px;cursor:pointer}
.checkbox-label input{width:auto}
.form-actions{display:flex;justify-content:flex-end}
.form-error{color:#d2604f;font-size:12px;min-height:16px;grid-column:span 2}
.form-grid .modal-actions{grid-column:span 2;margin-top:6px}
.advanced{grid-column:span 2;border:1px solid #eef0f5;border-radius:9px;background:#fafbfe}
.advanced>summary{cursor:pointer;padding:11px 14px;color:#66738a;font-size:12px;font-weight:600;list-style:none}
.advanced>summary::-webkit-details-marker{display:none}
.advanced>summary::before{content:"▸";display:inline-block;margin-right:8px;color:#9aa3b2;transition:transform .15s}
.advanced[open]>summary::before{transform:rotate(90deg)}
.advanced-body{padding:4px 14px 14px}
.advanced-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}
.advanced .kv{margin-top:8px}

.btn{border:1px solid #dfe3ed;background:#fff;border-radius:7px;padding:9px 14px;color:#46536b;cursor:pointer;font:inherit}
.btn:hover{background:#f7f8fc}
.btn-danger{border-color:#f0d3cd;background:#fff;color:#c9503c}
.btn-danger:hover{background:#fdf3f1}
.modal-medium{width:min(560px,100%)}
.modal-large{width:min(780px,100%)}
.modal-wide{width:min(980px,100%)}
.modal-small{width:min(420px,100%)}
.confirm-text{margin:0;color:#27334b;line-height:1.7}
.modal{max-height:88vh;display:flex;flex-direction:column}
.modal-body{overflow:auto}

/* 弹窗层级要高于抽屉，抽屉内弹出的表单/确认框才能点击 */
.modal-backdrop{z-index:14}
.drawer-backdrop{position:fixed;inset:0;background:#18233b66;z-index:6}
.drawer{position:absolute;top:0;right:0;bottom:0;width:min(920px,100%);background:#fbfbfe;display:flex;flex-direction:column;box-shadow:-20px 0 60px #101a3026}
.drawer-header{display:flex;justify-content:space-between;gap:16px;padding:20px 26px;background:#fff;border-bottom:1px solid #e9ebf2;align-items:flex-start}
.drawer-title{margin:0;font-size:22px}
.drawer-meta{display:flex;align-items:center;gap:10px;margin-top:8px;flex-wrap:wrap}
.drawer-header-actions{display:flex;align-items:center;gap:14px}
.drawer-actions{display:flex;gap:9px}
.drawer .modal-close{border:0;background:none;font-size:24px;color:#8b95a7;cursor:pointer;line-height:1}
.drawer-body{padding:22px 26px 40px;overflow:auto;flex:1}

.link-search{margin-bottom:12px}
.link-search .search-box{max-width:none}
.candidate-list{margin-bottom:18px}
.candidate-list:empty{display:none}
.inline-select{height:30px;border:1px solid #dfe3ed;border-radius:6px;padding:0 6px;background:#fff;color:#5b6880;font:inherit}

.toast-root{position:fixed;right:24px;bottom:24px;display:grid;gap:10px;z-index:40;justify-items:end}
.toast{background:#1d2740;color:#fff;padding:12px 16px;border-radius:9px;box-shadow:0 12px 30px #101a3033;font-size:13px;max-width:400px;transition:opacity .24s,transform .24s}
.toast.success{background:#1f7a58}
.toast.error{background:#b8452f}
.toast.leaving{opacity:0;transform:translateY(6px)}

.role-grid{display:grid;grid-template-columns:320px minmax(0,1fr);gap:20px;align-items:start}
.role-list{display:grid;gap:10px;padding:0 22px 22px}
.role-card{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid #eef0f5;border-radius:9px;padding:12px 14px}
.role-card small{display:block;color:#9aa3b2;margin-top:4px;font-size:11px}
.role-card .role-note{color:#8b95a7;font-size:11px;line-height:1.5;margin-top:6px}
.role-card-pick{width:100%;font:inherit;text-align:left;background:#fff;cursor:pointer;margin-bottom:8px}
.role-card-pick:hover{border-color:#d9dded;background:#fbfcff}
.role-card-pick.active{border-color:#5865e9;box-shadow:0 0 0 2px #5865e91a;background:#f7f8ff}
.role-pick-hint{margin-left:auto;font-size:11px;color:#8b95a7;white-space:nowrap}
.role-card-pick.active .role-pick-hint{color:#4a58d8;font-weight:600}
.toggle-inline{display:flex;align-items:center;gap:6px;font-size:12px;color:#5d6a80;white-space:nowrap;cursor:pointer}
.status-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.status-tab{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 14px;border:1px solid #e1e5ed;border-radius:8px;background:#fff;color:#5d6a80;font:inherit;font-size:13px;cursor:pointer}
.status-tab b{font-weight:600;color:#39435a;font-variant-numeric:tabular-nums}
.status-tab:hover{border-color:#c9d0e2;background:#fafbff}
.status-tab.active{border-color:#5865e9;background:#f4f5ff;color:#3f4bd0;box-shadow:0 0 0 2px #5865e91a}
.status-tab.active b{color:#3f4bd0}
/* 质检中心：规则卡片 + 总数 */
/* 活页（多标签）导航：顶部标签条 + 每个活页独立的滚动容器（各自保留滚动位置） */
.tab-bar{display:flex;align-items:center;gap:6px;height:44px;padding:0 44px;background:#fff;border-bottom:1px solid #e9ebf2;overflow-x:auto;overflow-y:hidden}
.tab-item{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 6px 0 12px;border:1px solid #e1e5ed;border-radius:8px;background:#f7f8fc;color:#5d6a80;font:inherit;font-size:13px;cursor:pointer;white-space:nowrap;flex:0 0 auto}
.tab-item:hover{background:#fff;color:#3c485e}
.tab-item.active{background:#f4f5ff;border-color:#5865e9;color:#3f4bd0;font-weight:600}
.tab-item.active .tab-title{color:#3f4bd0}
.tab-close{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;font-size:12px;line-height:1;color:#98a1b2}
.tab-close:hover{background:#e6e9f1;color:#c9503c}
.tab-close-all{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;position:sticky;right:0;flex:0 0 auto;width:26px;height:26px;padding:0;border:1px solid #e1e5ed;border-radius:7px;background:#fff;color:#7d879a;cursor:pointer;line-height:1}
.tab-close-all svg{display:block;width:14px;height:14px}
.tab-close-all:hover{border-color:#f0d3cd;background:#fdf3f1;color:#c9503c}
.tab-host{height:calc(100vh - 70px - 44px);overflow:hidden}
.view-pane{height:100%;overflow:auto}
.view-pane[hidden]{display:none}
@media(max-width:900px){
  .tab-bar{padding:0 24px}
}
.quality-total{margin:0 0 14px;font-size:13px;color:#5d6a80}
.quality-total b{font-size:17px;color:#1c273d;margin:0 2px}
.quality-rules{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-bottom:18px}
.quality-rule{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;text-align:left;background:#fff;border:1px solid #e9ebf2;border-radius:9px;padding:11px 13px;font:inherit;cursor:pointer}
.quality-rule:hover{border-color:#c9d0e2;background:#fafbff}
.quality-rule.active{border-color:#5865e9;background:#f7f8ff;box-shadow:0 0 0 2px #5865e91a}
.quality-rule-name{font-size:13px;color:#27334b;font-weight:600}
.quality-rule-count{margin-left:auto;font-size:15px;color:#39435a;font-variant-numeric:tabular-nums}
.quality-rule-tags{display:flex;gap:6px;flex-basis:100%}
/* AI 助手（词条抽屉）与 AI 设置（模型配置） */
.ai-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.ai-toolbar input{flex:1 1 260px;min-width:200px;height:34px;padding:0 10px;border:1px solid #dfe3ec;border-radius:7px;font:inherit;font-size:13px}
.ai-batch{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px;padding:8px 11px;border:1px solid #e3e8f7;border-radius:9px;background:#f7f8ff}
.ai-batch .hint{margin:0}
.ai-batch-spacer{flex:1 1 auto}
.quality-batch{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px;padding:10px 14px;border:1px solid #ccd4ff;border-radius:10px;background:#f5f7ff}
.quality-batch .hint{margin:0}
.quality-batch-count{font-size:13px;color:#4753c9}
.quality-batch-spacer{flex:1 1 auto}
.quality-batch input{flex:1 1 260px;min-width:200px;height:32px;padding:0 10px;border:1px solid #ccd4ff;border-radius:7px;font:inherit;font-size:13px;background:#fff}
.quality-pick{width:15px;height:15px;margin:0;accent-color:#5865e9;cursor:pointer}
.section-title{font-size:14px;margin:18px 0 10px;color:#313b50}
.tb-col-head .text-button{margin-left:auto;white-space:nowrap}
.word-link{border:0;background:transparent;padding:0;font:inherit;font-size:15px;font-weight:600;color:#27334b;cursor:pointer;text-align:left;border-bottom:1px dashed transparent}
/* 单词颜色 = 发布状态（颜色含义见词表右上角图例） */
.word-link.status-draft{color:#9aa3b2}
.word-link.status-review{color:#c78428}
.word-link.status-published{color:#2f8f68}
.word-link.status-archived{color:#c9503c}
.word-link:hover{border-bottom-color:currentColor}
.word-link:focus-visible{outline:2px solid #5865e9;outline-offset:2px;border-radius:3px}
.status-legend{display:inline-flex;align-items:center;gap:3px;margin-left:6px;white-space:nowrap}
.status-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-left:6px}
.status-legend i.draft{background:#9aa3b2}
.status-legend i.review{background:#c78428}
.status-legend i.published{background:#2f8f68}
.status-legend i.archived{background:#c9503c}
.tb-word-table .seq-move{margin-left:6px}
.tb-node-order-label{flex:0 0 auto;margin-left:6px;color:#a2aaba;font-size:11px}
.import-form{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:6px}
.import-field{display:flex;flex-direction:column;gap:5px;font-size:12px;color:#7d879a}
.import-field select,.import-field input[type=file]{height:36px;border:1px solid #dfe3ec;border-radius:7px;padding:0 10px;font:inherit;font-size:13px;color:#24304a;background:#fff}
.import-field input[type=file]{padding:6px 10px;line-height:22px}
.import-paste{margin-bottom:8px}
.import-paste textarea{width:100%;border:1px solid #dfe3ec;border-radius:7px;padding:8px 10px;font:inherit;font-size:13px;color:#24304a;resize:vertical}
.import-summary{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin:10px 0;padding:9px 12px;border:1px solid #e3e8f7;border-radius:9px;background:#f7f8ff;font-size:12.5px;color:#46536b}
.import-summary .import-mode{display:flex;gap:12px;align-items:center;margin-left:auto}
.import-summary label{display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.import-chapter-table{margin-bottom:12px;max-height:260px;overflow:auto}
.import-problem-table{max-height:320px;overflow:auto}
.import-chapter-table th,.import-problem-table th{position:sticky;top:0;z-index:1}
.ai-pick{width:15px;height:15px;margin:0;flex:0 0 auto;accent-color:#5865e9;cursor:pointer}
.ai-suggestion{border:1px solid #eef0f5;border-radius:9px;padding:10px 12px;margin-bottom:10px}
.ai-suggestion.done{opacity:.7}
.ai-suggestion-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.ai-diff{display:grid;grid-template-columns:minmax(0,1fr) 20px minmax(0,1.4fr);gap:8px;align-items:start}
.ai-old{background:#fbfbfe;border:1px dashed #e4e8f0;border-radius:7px;padding:7px 9px;font-size:12.5px;color:#7d879a;white-space:pre-wrap;word-break:break-word}
.ai-arrow{text-align:center;color:#a7b0c0;font-size:14px;padding-top:6px}
.ai-new{width:100%;border:1px solid #dfe3ec;border-radius:7px;padding:7px 9px;font:inherit;font-size:13px;color:#24304a;resize:vertical}
.ai-new:disabled{background:#f7f8fa;color:#5d6a80}
.ai-editor{min-width:0}
.ai-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ai-field{display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:#7d879a;min-width:0}
.ai-field.span-2{grid-column:1 / -1}
.ai-field input,.ai-field select,.ai-field textarea{width:100%;border:1px solid #dfe3ec;border-radius:7px;padding:6px 9px;font:inherit;font-size:13px;color:#24304a;background:#fff}
.ai-field textarea{resize:vertical;line-height:1.5}
.ai-field small{font-size:11px;color:#98a1b2}
.ai-scope{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 5px 0 10px;border:1px solid #ccd4ff;border-radius:7px;background:#f2f4ff;color:#4753c9;font-size:12px;white-space:nowrap}
.ai-scope-clear{border:0;background:transparent;color:#7b85d8;font-size:14px;line-height:1;padding:0 3px;cursor:pointer}
.ai-scope-clear:hover{color:#c9503c}
.ai-warn{color:#c9503c}
.ai-note{margin:0 0 10px}
.ai-model{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;border:1px solid #eef0f5;border-radius:9px;padding:11px 13px;margin-bottom:10px}
.ai-model.default{border-color:#5865e9;box-shadow:0 0 0 2px #5865e91a}
.ai-model-main{min-width:0}
.ai-model-main strong{margin-right:8px}
.toggle-inline input{margin:0}
.role-checkboxes{display:grid;gap:10px}
.role-checkbox{display:flex;gap:10px;align-items:center;border:1px solid #eef0f5;border-radius:9px;padding:12px 14px;cursor:pointer}
.role-checkbox small{display:block;color:#9aa3b2;font-size:11px;margin-top:3px}
.compact-table{width:100%;border-collapse:collapse}
.compact-table th{text-align:left;font-size:11px;color:#8b95a7;padding:10px 22px;background:#fafbfc;font-weight:500}
.compact-table td{padding:14px 22px;border-top:1px solid #eff1f5;color:#4d586d}
.compact-table td small{display:block;color:#9aa3b2;font-size:11px;margin-top:4px}

@media(max-width:1100px){
  .role-grid{grid-template-columns:1fr}
  .kv{grid-template-columns:1fr}
}

/* 构词面板：分析条目较高，改为顶部对齐；成分用小胶囊展示 */
.record-morph{align-items:flex-start}
.morph-parts{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.morph-part{display:inline-flex;align-items:baseline;gap:6px;background:#f6f7fb;border:1px solid #e9ecf4;border-radius:7px;padding:5px 9px;font-size:12px;color:#4a5568}
.morph-part b{color:#2d3446;font-weight:600}
.morph-part i{font-style:normal;color:#6b7591;background:#eef1f8;border-radius:5px;padding:1px 5px;font-size:11px}
.morph-part em{font-style:normal;color:#7d879c}
.morph-part u{text-decoration:none;color:#8b95a7;font-size:11px}

/* 成分编辑器：一行一个成分，可增删、可上下调序 */
.morph-editor>.morph-row{display:grid;grid-template-columns:26px 1.1fr .8fr 1.1fr 1.4fr .9fr 52px auto;gap:8px;align-items:center;margin-bottom:8px}
.morph-editor .morph-order{font-size:12px;color:#8b95a7;text-align:right}
.morph-editor .morph-row input,.morph-editor .morph-row select{width:100%;padding:6px 8px;border:1px solid #dfe3ec;border-radius:6px;font-size:13px;background:#fff}
.morph-editor [data-part="baseWordId"]{display:none}
.morph-editor .morph-ref{font-size:11px;color:#8b95a7;white-space:nowrap}
.morph-editor .morph-ref.ok{color:#2f9e6b}
.morph-editor .morph-ref.warn{color:#c78428}
.morph-editor .morph-row-actions{display:flex;gap:4px;white-space:nowrap}
@media(max-width:1100px){
  .morph-editor>.morph-row{grid-template-columns:26px 1fr 1fr;grid-auto-rows:auto}
}
@media(max-width:900px){
  .form-grid{grid-template-columns:1fr}
  .span-2{grid-column:span 1}
  .form-error,.form-grid .modal-actions{grid-column:span 1}
  .drawer{width:100%}
  .toast-root{left:16px;right:16px}
}

/* 品牌标识：词脉 LexiLink（2026-10-03 接入「根脉」标记） */
.brand{gap:9px;font-size:19px}
.brand-mark{display:block;flex:0 0 auto;width:30px;height:30px;background:none;border-radius:0;font-size:0}
.login-brand .brand-mark{width:34px;height:34px}
.brand-zh{letter-spacing:1px}
.brand-en{font-size:13px;font-weight:600;letter-spacing:.2px}
.sidebar .brand-en{color:#7C86FF}
.login-brand .brand-en{color:#5560E4}

/* 课本工作台：左「课本」／中「版本与目录」／右「章节词汇」三栏同屏 */
/* 宽屏（1920 等）放宽内容上限，否则三栏被 1440 上限挤窄 */
.page-view{max-width:1720px}
.tb-workbench{display:grid;grid-template-columns:minmax(220px,1fr) minmax(280px,1.2fr) minmax(340px,1.6fr);gap:14px;align-items:start}
.tb-col{background:#fff;border:1px solid #e9ebf2;border-radius:10px;display:flex;flex-direction:column;min-width:0}
.tb-col-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:14px 16px 10px;border-bottom:1px solid #f1f2f6}
.tb-col-head h2{margin:0;font-size:13px;color:#243049;letter-spacing:.3px}
.tb-col-head .hint{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60%}
.tb-col-tools{display:flex;flex-direction:column;gap:8px;padding:12px 16px 0}
.tb-col-tools .search-box{width:100%}
.tb-col-tools select{width:100%;padding:8px 10px;border:1px solid #dfe3ec;border-radius:8px;font-size:13px;background:#fff;color:#3c4759}
.tb-col-body{padding:12px 16px 16px;max-height:calc(100vh - 320px);overflow:auto}
.tb-book{display:flex;flex-direction:column;gap:6px;width:100%;text-align:left;background:#fff;border:1px solid #eef0f5;border-radius:9px;padding:11px 12px;margin-bottom:8px;cursor:pointer;font:inherit}
.tb-book:hover{border-color:#d9dded;background:#fbfcff}
.tb-book.active{border-color:#5865e9;box-shadow:0 0 0 2px #5865e91a;background:#f7f8ff}
.tb-book-title{font-weight:600;color:#27334b;font-size:13px;line-height:1.4}
.tb-book-meta{font-size:11px;color:#8b95a7}
.tb-book-tags{display:flex;gap:6px;flex-wrap:wrap}
.tb-book-bar{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;padding:12px;border:1px solid #eef0f5;border-radius:9px;background:#fbfbfe;margin-bottom:12px}
.tb-book-bar strong{display:block;font-size:13px;color:#27334b}
.tb-book-bar small{display:block;margin-top:4px}
.tb-book-bar-actions{display:flex;gap:12px;white-space:nowrap}
.tb-section-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:4px 0 8px}
.tb-head-actions{display:flex;gap:12px;align-items:center;white-space:nowrap}
.seq-cell{display:flex;align-items:center;gap:6px;overflow:hidden;white-space:nowrap}
.seq-cell .seq-no{flex:0 0 auto}
.seq-cell .seq-move{flex:0 0 auto;display:flex;gap:0}
.seq-no{min-width:14px;color:#5d6a80;font-variant-numeric:tabular-nums;font-size:12px;text-align:right}
.seq-move{display:flex;gap:0}
.view-switch{display:inline-flex;border:1px solid #dfe3ed;border-radius:7px;overflow:hidden;background:#fff}
.view-chip{border:0;background:#fff;height:29px;padding:0 12px;font:inherit;font-size:12px;color:#5d6a80;cursor:pointer}
.view-chip+.view-chip{border-left:1px solid #dfe3ed}
.view-chip:hover{background:#f7f8fc}
.view-chip.active{background:#eef1ff;color:#4a58d8;font-weight:600}
.icon-action:disabled{opacity:.28;cursor:default}
.icon-action:disabled:hover{background:none;color:#7d879a}
.tb-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.tb-chip{display:flex;flex-direction:column;gap:3px;align-items:flex-start;background:#fff;border:1px solid #eef0f5;border-radius:9px;padding:8px 11px;cursor:pointer;font:inherit;text-align:left}
.tb-chip:hover{border-color:#d9dded;background:#fbfcff}
.tb-chip.active{border-color:#5865e9;box-shadow:0 0 0 2px #5865e91a;background:#f7f8ff}
.tb-chip strong{font-size:12px;color:#27334b}
.tb-chip small{font-size:11px;color:#8b95a7}
.tb-tree{list-style:none;margin:0;padding:0}
.tb-tree ul{list-style:none;margin:0;padding:0}
.tb-node{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 0;border-radius:7px;cursor:pointer}
.tb-node:hover{background:#fafbfe}
.tb-node.active{background:#f2f4ff}
.tb-node-title{font-size:13px;color:#27334b;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tb-node-meta{font-size:11px;color:#9aa3b2;white-space:nowrap}
.tb-node-actions{margin-left:auto;display:flex;gap:2px;opacity:0;transition:opacity .15s}
.tb-node:hover .tb-node-actions,.tb-node.active .tb-node-actions{opacity:1}
.icon-action{background:none;border:0;cursor:pointer;font-size:12px;color:#7d879a;padding:2px 5px;border-radius:5px;line-height:1.2}
.icon-action:hover{background:#eef1f8;color:#39435a}
.icon-action.danger:hover{background:#fdf1ef;color:#c9503c}
.tb-words-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap;margin-bottom:12px}
.tb-words-head strong{display:block;font-size:14px;color:#27334b}
.tb-words-head small{display:block;margin-top:4px}
.tb-words-tools{display:flex;gap:12px;align-items:center}
.primary-button.small{padding:6px 12px;font-size:12px}
.tb-word-table th,.tb-word-table td{padding:9px 12px}
.tb-word-table td small{display:inline;color:#9aa3b2;font-size:11px;margin:0 0 0 6px}
.flag-chip{background:#f4f5f9;border:1px solid transparent;border-radius:999px;font-size:11px;color:#6d7789;padding:4px 10px;cursor:pointer;font-family:inherit}
.flag-chip:hover{border-color:#d9dded}
.flag-chip.on{background:#e8edff;color:#4a58d8;font-weight:600}
.picker-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.picker-tools .search-box{flex:1;min-width:220px}
.picker-tools select{padding:8px 10px;border:1px solid #dfe3ec;border-radius:8px;font-size:13px;background:#fff;color:#3c4759}
/* 固定高度：结果多少、有没有命中，弹窗尺寸都不变，输入过滤时不会整屏跳动 */
.picker-list{height:46vh;min-height:300px;max-height:520px;overflow:auto;border:1px solid #eef0f5;border-radius:9px;padding:6px;display:flex;flex-direction:column}
.picker-list>.message-block{margin:auto;padding:0 20px}
.picker-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:7px;cursor:pointer}
.picker-row:hover{background:#fafbfe}
.picker-row.done{cursor:default;opacity:.55}
.picker-row input{flex:0 0 auto}
.picker-main{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.picker-main small{flex-basis:100%;color:#8b95a7;font-size:11px}
.picker-done{margin-left:auto;font-size:11px;color:#2f9e6b;white-space:nowrap}
.picker-more{padding:8px;text-align:center}
.picker-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;padding-top:12px;border-top:1px solid #f1f2f6}
.picker-actions{display:flex;gap:12px;align-items:center}
@media(max-width:1400px){
  .tb-workbench{grid-template-columns:minmax(200px,1fr) minmax(260px,1fr)}
  .tb-col-words{grid-column:1 / -1}
  .tb-col-body{max-height:none}
}
@media(max-width:900px){
  .tb-workbench{grid-template-columns:1fr}
  .tb-col-words{grid-column:auto}
}

/* ===== 表单控件对齐统一（2026-10-04） =====
   1) 原生 select 的内容盒比 input 高 2px，同一行的输入框/下拉框底边对不齐；
   2) .search-box 自带 flex:1，放进竖向工具栏后 flex-basis 变成 0，40px 高度被压成 23px；
   3) 下拉框改为自绘箭头，视觉与输入框一致。 */
.modal .form-field input:not([type=checkbox]):not([type=radio]):not([type=file]),
.modal .form-field select{height:40px;padding:0 12px;line-height:40px;background-color:#fff}
.modal .form-field textarea{padding:10px 12px;line-height:1.6;background-color:#fff}
.modal .form-field input:not([type=checkbox]):not([type=radio]):not([type=file]),
.modal .form-field select,
.modal .form-field textarea{border:1px solid #dfe3ed;border-radius:7px;font:inherit;color:#24304a;width:100%;margin:0}
/* 弹窗里的原生下拉框也统一高度（输入框沿用上面的 .form-field 规则，
   不要再写 .modal input，:not() 会抬高选择器权重并把 margin 顶成 7px） */
.modal select{height:40px;padding:0 12px;line-height:40px;border:1px solid #dfe3ed;border-radius:7px;font:inherit;width:100%;margin-top:7px;background-color:#fff}
.modal textarea{padding:10px 12px;border:1px solid #dfe3ed;border-radius:7px;font:inherit;width:100%;margin-top:7px;background-color:#fff}
.form-field select,
.toolbar select,
.tb-col-tools select,
.picker-tools select,
.panel-toolbar select,
.modal select,
.inline-select{
  -webkit-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' fill='none' stroke='%23808aa0' stroke-width='1.6' stroke-linecap='round'/></svg>");
  background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;
}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus,
.tb-col-tools select:focus,.picker-tools select:focus,
.search-box:focus-within{outline:2px solid #5865e933;border-color:#5865e9}
/* 左栏工具栏：搜索框与类型下拉同高（修掉 flex:1 把高度压成 0 基线的问题） */
.modal label.search-box,.modal label.role-checkbox,.modal label.toggle-inline{margin:0}
.modal label.search-box,.modal .search-box{display:flex}
/* 弹窗里的 .modal input 会给搜索框「内部」的输入框也套上边框和 10px 内边距，
   形成"框里套框"且内框 41px 比外框 38px 还高。这里把内框还原成无边框的纯输入区。 */
.modal .search-box input,.modal .search-box input:focus,.modal .link-search input{
  display:block;flex:1 1 auto;min-width:0;width:auto;height:auto;
  margin:0 0 0 8px;padding:0;border:0;border-radius:0;
  background:transparent;outline:0;box-shadow:none;line-height:1.4;
}
.search-box{cursor:text}
.search-box input::placeholder{color:#a8b0c0}
/* 输入框内的一键清除按钮（目前用于"添加单词"的搜索框）
   放在左侧：连续查找时鼠标回到输入起点就能清空；用 visibility 占位，避免文字左右跳 */
.search-clear{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:20px;height:20px;padding:0;border:0;border-radius:50%;background:#e6e9f1;color:#5d6a80;font-size:11px;line-height:1;cursor:pointer;visibility:hidden}
.search-clear:hover{background:#d7dbe6;color:#3c485e}
.search-clear.on{visibility:visible}
.picker-search-box{padding-left:9px}
.picker-search-box .search-clear{margin:0 2px 0 0}
.picker-search-box input{margin-left:0}
.modal .search-box{margin:0}
.picker-tools select,.tb-col-tools select,.panel-toolbar select,
.picker-tools .search-box,.tb-col-tools .search-box,.panel-toolbar .search-box{margin:0}
.tb-col-tools .search-box{flex:0 0 auto;height:40px;min-height:40px;max-width:none;width:100%}
.tb-col-tools select{height:40px;padding:0 32px 0 12px}
/* 批量选词工具栏 */
.picker-tools{align-items:center}
.picker-tools .search-box{flex:1 1 200px;height:40px;min-height:40px;max-width:none}
.modal-xlarge{width:min(1000px,100%)}
.picker-body{display:grid;grid-template-columns:minmax(0,1fr) 252px;gap:14px;align-items:start}
.picker-selected{height:46vh;min-height:300px;max-height:520px;border:1px solid #eef0f5;border-radius:9px;display:flex;flex-direction:column;overflow:hidden;background:#fff}
.picker-selected-head{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid #f1f2f6;background:#fbfbfe}
.picker-selected-head strong{font-size:12px;color:#3c485e;font-weight:600}
.picker-selected-body{flex:1;overflow:auto;padding:6px}
.picker-sel-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:7px;font-size:13px;color:#2f3a4f}
.picker-sel-item:hover{background:#fafbfe}
.picker-sel-lemma{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.picker-sel-item .icon-action{margin-left:auto;flex:0 0 auto}
.picker-sel-empty{text-align:center;padding:28px 10px;line-height:1.9}
@media(max-width:900px){
  .picker-body{grid-template-columns:1fr}
  .picker-selected{height:auto;min-height:120px;max-height:240px}
}
/* 弹窗里 .modal select 会拿到 width:100%，工具栏里的下拉框要收回自适应宽度 */
.picker-tools select{flex:0 0 auto;width:auto;min-width:130px;height:40px;padding:0 32px 0 12px}
.picker-list.is-loading{opacity:.55;transition:opacity .15s}
/* 通用面板工具栏：搜索框与筛选项排在同一行 */
.panel-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.panel-toolbar>.search-box{flex:1 1 240px;max-width:none}
.panel-toolbar>select,.panel-toolbar>.filter-button{height:40px}
/* 章节词汇表：紧凑排布（分类标签、图标按钮、单行释义） */
.tb-word-table{table-layout:fixed}
.tb-word-table .tag-row{flex-wrap:wrap;overflow:hidden;gap:6px}
/* white-space:nowrap 很关键：否则列一窄，标签就会一个字一行竖排 */
.flag-chip{height:26px;display:inline-flex;align-items:center;padding:0 9px;font-size:11.5px;line-height:1;white-space:nowrap;flex:0 0 auto}
.tb-word-table td{vertical-align:middle}
.tb-word-table .icon-action{font-size:14px;padding:2px 6px}
.tb-word-table .icon-action.has-note{color:#5865e9}
.tb-word-table .table-actions .icon-action+.icon-action{margin-left:6px}
.def-cell{overflow:hidden}
/* 词性 + 释义自然折行，最多两行，超出省略 */
.def-cell .def-line{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.5;font-size:12.5px;color:#5d6a80;word-break:break-word}
.def-cell .pos{color:#27334b;margin-right:6px;white-space:nowrap}
.def-cell .def{color:#5d6a80}
/* 单词同样允许折行，最多两行 */
.tb-word-table .word-cell{overflow:hidden}
.tb-word-table .word-line{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.45;word-break:break-word}
.tb-word-table .word{font-size:13px}
.tb-word-table .word-cell .status-pill,.tb-word-table .word-cell .flag-chip{font-size:10px;height:18px;padding:0 6px;vertical-align:middle}
.tb-words-footer{padding:12px 0 0;border-top:1px solid #eff1f5;margin-top:10px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.tb-words-tools{align-items:center}
.tb-words-tools .row-action{height:29px;padding:0 12px;border:1px solid #dfe3ed;border-radius:7px;background:#fff;color:#46536b;font-size:12px}
.tb-words-tools .row-action:hover{background:#f7f8fc}
