/* Scoped to the article workspace so other administration views retain their layout. */
.admin-section[data-panel="policies"] #policyModuleGrid.detail-open { display: block; }
.admin-section[data-panel="policies"] #policyModuleGrid.detail-open > .list-panel { display: none; }
.admin-section[data-panel="policies"] #policyDetailPanel { position: static !important; padding: 0 !important; border: 1px solid #dfe5e7 !important; border-radius: 6px !important; background: #f3f5f6 !important; box-shadow: none !important; overflow: visible; }
#policyDetailPanel * { box-sizing: border-box; letter-spacing: 0; }
#policyDetailPanel [hidden] { display: none !important; }
#policyDetailPanel .composer-heading { display: flex; align-items: center; gap: 12px; padding: 12px 18px; background: white; border-bottom: 1px solid #e4e8eb; }
#policyDetailPanel .composer-heading h3 { font-size: 17px; margin: 0; }
#policyEditState { margin-left: auto; font-size: 12px; color: #74808a; }
#policyDetailPanel .composer-layout { display: grid; grid-template-columns: 240px minmax(0, 1fr); align-items: start; }
#policyDetailPanel .composer-settings { padding: 20px 16px; display: grid; gap: 18px; background: #fafbfc; border-right: 1px solid #e1e6e9; }
#policyDetailPanel label { display: grid; gap: 8px; font-size: 13px; color: #43515b; min-width: 0; }
#policyDetailPanel label > span { font-size: 13px; font-weight: 500; }
#policyDetailPanel input:not([type="checkbox"]), #policyDetailPanel textarea, #policyDetailPanel select { min-width: 0; width: 100%; font: inherit; padding: 9px 10px; border: 1px solid #dce2e5; border-radius: 4px; background: white; color: #253139; box-shadow: none; }
#policyDetailPanel textarea { resize: vertical; }
#policyDetailPanel input:focus, #policyDetailPanel textarea:focus, #policyDetailPanel select:focus { outline: 2px solid #87c8b6; outline-offset: 1px; }
#policyDetailPanel input[type="file"] { font-size: 11px; padding: 8px 4px; }
#policyDetailPanel .composer-publish { display: flex; flex-direction: row; align-items: center; gap: 8px; }
#policyDetailPanel .composer-publish input { accent-color: #00885e; width: 16px; height: 16px; flex: 0 0 auto; }
#policyDetailPanel .composer-visibility { display: grid; gap: 8px; grid-column: 1 / -1; }
#policyVisibilityState { font-size: 12px; line-height: 1.5; color: #6c7d76; overflow-wrap: anywhere; }
.policy-row-actions { display: flex; flex-direction: column; align-items: stretch; gap: 8px; min-width: 130px; }
.policy-row-actions .table-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; white-space: nowrap; margin: 0; }
.policy-row-actions svg { width: 16px; height: 16px; flex-shrink: 0; }
#policyDetailPanel .composer-cover { aspect-ratio: 1.8; position: relative; width: 100%; background: #e9eef1; border: 1px solid #e0e6e9; border-radius: 4px; overflow: hidden; }
#policyDetailPanel #policyCoverPreview { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; border: 0; border-radius: 0; margin: 0; z-index: 1; }
#policyCoverEmpty { height: 100%; display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 10px; color: #7c8b94; font-size: 13px; }
#policyCoverEmpty svg { width: 28px; height: 28px; }
#policyDetailPanel .composer-cover-controls { display: grid; gap: 10px; min-width: 0; }
#policyCoverFromContentBtn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 9px 12px; font-size: 13px; border-radius: 4px; }
#policyDetailPanel .composer-cover-dialog { width: 640px; }
#policyCoverChoicesStatus { font-size: 13px; color: #6c7d76; margin: 0 0 16px; }
#policyDetailPanel .composer-cover-choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
#policyDetailPanel .composer-cover-choice { display: flex; flex-direction: column; gap: 8px; min-width: 0; padding: 8px; border: 1px solid #dce4df; border-radius: 6px; background: #fff; color: #284c3e; text-align: left; box-shadow: none; transform: none; }
#policyDetailPanel .composer-cover-choice[aria-pressed="true"] { border-color: #00885e; background: #edf8f2; }
#policyDetailPanel .composer-cover-choice img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: contain; background: #edf1f3; border-radius: 3px; }
#policyDetailPanel .composer-cover-choice span { font-size: 13px; line-height: 1.5; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
#policyDetailPanel .composer-cover-choice small { font-size: 12px; color: #6c7d76; }
@media (max-width: 420px) {
  #policyDetailPanel .composer-cover-choices { grid-template-columns: minmax(0, 1fr); }
}
#policyDetailPanel .composer-main { min-width: 0; padding: 0 24px 12px; }
#policyDetailPanel .composer-toolbar { position: sticky; top: 0; z-index: 5; display: flex; align-items: center; gap: 4px; flex-wrap: wrap; padding: 10px 0; background: #f3f5f6; border-bottom: 1px solid #e1e6e9; }
#policyDetailPanel .composer-toolbar button, #policyDetailPanel .composer-icon { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; flex: 0 0 34px; padding: 7px; border: 1px solid transparent; border-radius: 4px; background: transparent; color: #58646b; box-shadow: none; cursor: pointer; }
#policyDetailPanel svg { width: 18px; height: 18px; flex-shrink: 0; }
#policyDetailPanel .composer-toolbar button:hover, #policyDetailPanel .composer-icon:hover { background: #e5ebee; color: #203a31; transform: none; }
#policyDetailPanel button[aria-pressed="true"] { background: #dcefe8; color: #007f59; }
#policyDetailPanel button:disabled { opacity: .4; cursor: not-allowed; }
#policyDetailPanel button:focus-visible { outline: 2px solid #00885e; outline-offset: 2px; }
#policyDetailPanel .composer-toolbar select { width: 112px; height: 34px; min-height: 34px; padding: 5px 8px; font-size: 13px; background: white; }
.composer-separator { height: 20px; width: 1px; background: #d9e0e4; margin: 0 5px; }
.composer-red-swatch { width: 15px; height: 15px; border: 2px solid white; box-shadow: 0 0 0 1px #d9dfe2; border-radius: 2px; background: #d92f2f; }
#policyDetailPanel .composer-paper { margin: 20px auto 0; padding: 42px 44px 30px; width: 100%; max-width: 760px; min-height: 660px; background: white; border: 1px solid #e8ecee; box-shadow: 0 2px 6px #243a3110; }
#policyDetailPanel #policyTitle { padding: 0; height: auto; min-height: 42px; font-size: 24px; font-weight: 600; line-height: 1.5; border: none; border-radius: 0; resize: none; overflow: hidden; }
#policyDetailPanel #policyTitle::placeholder { color: #a6adb3; }
.composer-byline { padding: 14px 0 22px; font-size: 13px; color: #8a969e; }
#policyVisualEditor { border: 0; font-family: inherit; font-size: 16px; height: auto; }
#policyVisualEditor .ql-editor { padding: 0; min-height: 450px; line-height: 2; color: #233a31; overflow: visible; overflow-wrap: anywhere; }
#policyVisualEditor .ql-editor.ql-blank::before { left: 0; right: 0; font-style: normal; color: #9aa3aa; }
#policyVisualEditor .ql-editor p { margin: 0 0 18px; }
#policyVisualEditor [data-policy-block="heading"], .composer-preview-body [data-policy-block="heading"] { padding-left: 10px; border-left: 3px solid #0da37f; font-size: 18px; font-weight: 700; line-height: 1.6; }
#policyVisualEditor [data-policy-block="alert"], .composer-preview-body [data-policy-block="alert"] { padding: 14px; border: 1px solid #f0d9d7; background: #fff6f5; }
#policyVisualEditor [data-policy-block="note"], .composer-preview-body [data-policy-block="note"] { padding: 14px; border: 1px solid #d8ebe1; background: #f5fbf8; }
#policyVisualEditor [data-policy-block="quote"], .composer-preview-body [data-policy-block="quote"] { padding: 14px; border: 1px solid #e7e1d3; background: #fffaf0; }
#policyVisualEditor [data-policy-block="alert"]::before, #policyVisualEditor [data-policy-block="note"]::before, #policyVisualEditor [data-policy-block="quote"]::before { display: block; font-size: 12px; font-weight: 700; margin-bottom: 5px; }
#policyVisualEditor [data-policy-block="alert"]::before { content: '重点提示'; color: #d92f2f; }
#policyVisualEditor [data-policy-block="note"]::before { content: '阅读提示'; color: #0a6d56; }
#policyVisualEditor [data-policy-block="quote"]::before { content: '引用依据'; color: #9a7118; }
#policyVisualEditor [style*="color: rgb(217, 47, 47)"], .composer-red-text { color: #d92f2f; font-weight: 900; }
.policy-editor-image { display: block; margin: 18px 0; max-width: 100%; }
.policy-editor-image img { display: block; width: 100%; height: auto; border-radius: 6px; }
.policy-editor-image figcaption { font-size: 12px; color: #7a8b84; text-align: center; margin-top: 8px; overflow-wrap: anywhere; }
#policyDetailPanel .composer-footer { position: sticky; bottom: 0; z-index: 6; display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 14px 0; background: #f3f5f6; border-top: 1px solid #e1e6e9; font-size: 12px; color: #7a878d; }
#policyDetailPanel .composer-footer > div { display: flex; gap: 10px; }
#policyDetailPanel .composer-footer .composer-save-info { flex-direction: column; gap: 3px; min-width: 0; overflow-wrap: anywhere; }
#policyDetailPanel .composer-save-actions { flex-wrap: wrap; flex-shrink: 0; }
#policyDraftState.draft-error { color: #bb3025; }
#policyDetailPanel .composer-recovery { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 18px; background: #fff8e6; border-bottom: 1px solid #eadfbf; font-size: 13px; }
#policyDetailPanel .composer-recovery > div { display: flex; gap: 8px; flex-shrink: 0; }
#policyDetailPanel .composer-recovery button { padding: 8px 12px; min-height: 34px; font-size: 13px; }
#policyDraftList { margin: 18px 0; padding: 16px 0; border-block: 1px solid #e0e7e3; }
#policyDraftList[hidden] { display: none; }
#policyDraftList h4 { margin: 0 0 10px; font-size: 14px; }
#policyDraftList button { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; width: 100%; background: #f5f9f7; border: 1px solid #e1ebe5; border-radius: 4px; padding: 12px; margin-top: 8px; text-align: left; color: #23463b; cursor: pointer; }
#policyDraftList button span { overflow-wrap: anywhere; min-width: 0; }
#policyDraftList button small { color: #73867b; }
#policyDetailPanel .composer-footer button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 9px 16px; border-radius: 4px; min-height: 38px; font-size: 13px; white-space: nowrap; box-shadow: none; }
#policyDetailPanel #policyStatusBox { margin: 0; padding: 8px 0; border: none; background: transparent; min-height: 30px; font-size: 12px; box-shadow: none; }
.admin-section[data-panel="policies"] #policyDetailPanel.composer-focus { position: fixed !important; inset: 10px !important; width: auto !important; height: auto !important; z-index: 100; overflow: auto !important; }
#policyDetailPanel.composer-focus .composer-layout { max-width: 1320px; margin: auto; }
#policyDetailPanel .composer-dialog { width: 460px; max-width: calc(100vw - 32px); max-height: calc(100dvh - 32px); padding: 22px; border: 1px solid #dfe6e7; border-radius: 8px; background: white; color: #263b32; overflow: auto; }
.composer-dialog::backdrop { background: #14231f77; }
.composer-dialog-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 18px; }
#policyDetailPanel .composer-dialog-head h3 { margin: 0; font-size: 17px; }
#policyDetailPanel .composer-dialog label { margin: 16px 0; }
#policyImageStatus { color: #b24439; font-size: 13px; }
#policyDetailPanel .composer-preview-dialog { width: 430px; padding: 18px; }
.composer-preview-body { font-size: 15px; line-height: 2; overflow-wrap: anywhere; }
.composer-preview-body h2 { font-size: 23px; line-height: 1.5; margin: 14px 0; color: #16251f; }
.composer-preview-body p { margin: 20px 0; }
.composer-preview-body small { display: block; font-size: 12px; font-weight: 700; }
.composer-preview-cover { width: 100%; aspect-ratio: 1.8; object-fit: cover; }
.composer-preview-category { font-size: 12px; color: #0a6d56; margin-top: 12px; }
.composer-preview-meta { font-size: 12px; color: #89998f; }
.composer-preview-summary { margin-top: 20px; background: #f3f8f5; padding: 14px; font-size: 14px; color: #51645c; }
.composer-preview-source { margin-top: 24px; padding-top: 16px; border-top: 1px solid #e4eae6; font-size: 12px; color: #7c8c84; }
@media (max-width: 1200px) {
  #policyDetailPanel .composer-layout { grid-template-columns: 200px minmax(0, 1fr); }
  #policyDetailPanel .composer-main { padding-inline: 16px; }
  #policyDetailPanel .composer-paper { padding: 30px 24px; }
}
@media (max-width: 800px) {
  #policyDetailPanel .composer-layout { display: flex; flex-direction: column; }
  #policyDetailPanel .composer-main { order: 0; width: 100%; padding-inline: 12px; }
  #policyDetailPanel .composer-settings { order: 1; width: 100%; border-right: 0; border-top: 1px solid #e1e6e9; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  #policyDetailPanel .composer-settings > label:has(textarea), #policyDetailPanel .composer-publish { grid-column: 1 / -1; }
  #policyDetailPanel .composer-paper { min-height: 500px; padding: 24px 18px; }
  #policyDetailPanel #policyTitle { font-size: 20px; }
  #policyVisualEditor .ql-editor { min-height: 320px; }
  #policyDetailPanel .composer-heading { padding: 10px; gap: 6px; }
  #policyEditState { font-size: 11px; }
  #policyDetailPanel .composer-footer button { padding: 9px 10px; }
  #policyDetailPanel .composer-footer { flex-wrap: wrap; }
  #policyDetailPanel .composer-save-info { flex-basis: 100%; }
  #policyDetailPanel .composer-save-actions { flex-wrap: wrap; width: 100%; justify-content: flex-end; }
  #policyDetailPanel .composer-recovery { flex-wrap: wrap; }
}
@media (max-width: 420px) {
  #policyDetailPanel .composer-settings { grid-template-columns: minmax(0, 1fr); }
  #policyDetailPanel .composer-main { padding-inline: 8px; }
  #policyDetailPanel .composer-paper { padding: 20px 12px; }
  #policyDetailPanel .composer-toolbar { gap: 1px; }
  .composer-separator { margin-inline: 2px; }
}
