.df-overlay{position:fixed;top:0;left:0;right:0;bottom:0;inset:0;z-index:1200;display:none;background:rgba(15,23,42,.42);padding:20px}.df-overlay.open{display:flex;align-items:center;justify-content:center}.df-panel{width:min(1120px,100%);height:min(760px,100%);display:flex;flex-direction:column;background:#fff;border:1px solid #dbe2ea;border-radius:16px;overflow:hidden;box-shadow:0 20px 60px rgba(15,23,42,.22)}.df-head{display:flex;align-items:center;gap:14px;padding:16px 20px;border-bottom:1px solid #e9ecef;background:#fbfcfe;flex:none}.df-head-title{min-width:0;flex:1}.df-head-title h2{margin:0;color:#1f2937;font-size:18px;line-height:1.4}.df-head-title p{margin:4px 0 0;color:#64748b;font-size:12px}.df-badge{display:inline-flex;align-items:center;gap:5px;margin-left:8px;padding:3px 8px;border-radius:999px;background:#e8f0fe;color:#1d4ed8;font-size:11px;font-weight:700;vertical-align:middle}.df-close{border:1px solid #dbe2ea;background:#fff;color:#475569;border-radius:8px;padding:7px 12px;cursor:pointer;font:inherit}.df-body{display:grid;grid-template-columns:minmax(300px, .86fr) minmax(380px,1.14fr);min-height:0;flex:1}.df-form-pane,.df-preview-pane{min-width:0;overflow:auto}.df-form-pane{padding:18px 20px;border-right:1px solid #e9ecef;background:#fff}.df-preview-pane{padding:18px;background:#f6f8fb}.df-intro{margin:0 0 14px;padding:11px 12px;border-left:3px solid #2563eb;background:#eff6ff;color:#334155;border-radius:6px;font-size:12.5px;line-height:1.65}.df-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.df-field{min-width:0}.df-field.wide{grid-column:1/-1}.df-field label{display:block;margin:0 0 5px;color:#334155;font-size:12px;font-weight:700}.df-required{color:#dc2626;margin-left:3px}.df-field input,.df-field textarea,.df-field select{width:100%;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#1f2937;padding:9px 10px;font:inherit;font-size:13px;line-height:1.45;outline:none}.df-field textarea{min-height:68px;resize:vertical}.df-field input:focus,.df-field textarea:focus,.df-field select:focus{border-color:#2563eb;outline:3px solid rgba(37,99,235,.13)}.df-field.invalid input,.df-field.invalid textarea{border-color:#dc2626}.df-error{display:none;margin-top:4px;color:#b91c1c;font-size:11px}.df-field.invalid .df-error{display:block}.df-preview-label{display:flex;align-items:center;justify-content:space-between;margin:0 0 10px;color:#475569;font-size:12px;font-weight:700}.df-preview-paper{min-height:100%;padding:28px 30px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;color:#1f2937;line-height:1.75;font-size:14px}.df-preview-paper .doc-title{font-size:20px}.df-preview-paper table{width:100%;border-collapse:collapse}.df-preview-paper th,.df-preview-paper td{border:1px solid #adb5bd;padding:8px;text-align:left;vertical-align:top}.df-preview-paper .ph{color:#1d4ed8;font-weight:700;background:#eff6ff;border-radius:3px;padding:0 2px}.df-foot{display:flex;align-items:center;gap:8px;padding:12px 20px;border-top:1px solid #e9ecef;background:#fbfcfe;flex:none}.df-foot-note{flex:1;color:#64748b;font-size:11px;line-height:1.5}.df-btn{border:1px solid #cbd5e1;background:#fff;color:#334155;border-radius:8px;padding:8px 11px;cursor:pointer;font:inherit;font-size:12px;white-space:nowrap}.df-btn:hover{background:#f8fafc}.df-btn.primary{border-color:#2563eb;background:#2563eb;color:#fff}.df-btn.primary:hover{background:#1d4ed8}.df-btn.green{border-color:#15803d;background:#15803d;color:#fff}.df-btn.green:hover{background:#166534}.df-btn:active{transform:scale(.98)}@media(max-width:820px){.df-overlay{padding:0}.df-panel{height:100%;border-radius:0}.df-body{grid-template-columns:1fr}.df-form-pane{border-right:0;border-bottom:1px solid #e9ecef;max-height:48%}.df-preview-pane{min-height:320px}.df-preview-paper{padding:20px}.df-foot{flex-wrap:wrap}.df-foot-note{flex-basis:100%;order:-1}}@media(max-width:520px){.df-head{padding:13px 14px}.df-head-title h2{font-size:16px}.df-form-pane{padding:14px}.df-form-grid{grid-template-columns:1fr}.df-field.wide{grid-column:auto}.df-foot{padding:10px 14px}.df-btn{flex:1;padding:8px 6px;font-size:11px}}.df-ai-box{margin:0 0 16px;padding:14px;border:1px solid #bfdbfe;border-radius:10px;background:#f8fbff}.df-ai-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 8px;color:#1e3a8a;font-size:13px;font-weight:700}.df-ai-title span{font-size:11px;font-weight:400;color:#64748b}.df-ai-input{width:100%;min-height:76px;resize:vertical;border:1px solid #bfdbfe;border-radius:8px;background:#fff;color:#1f2937;padding:9px 10px;font:inherit;font-size:13px;line-height:1.55;outline:none}.df-ai-input:focus{border-color:#2563eb;outline:3px solid rgba(37,99,235,.13)}.df-ai-actions{display:flex;gap:8px;align-items:center;margin-top:8px}.df-ai-btn{border:1px solid #2563eb;background:#2563eb;color:#fff;border-radius:7px;padding:7px 10px;cursor:pointer;font:inherit;font-size:12px}.df-ai-btn:hover{background:#1d4ed8}.df-ai-btn:disabled{opacity:.55;cursor:wait}.df-ai-status{flex:1;color:#64748b;font-size:11px;line-height:1.4}.df-ai-result{display:none;margin-top:10px;padding-top:10px;border-top:1px dashed #bfdbfe}.df-ai-result.open{display:block}.df-ai-list{margin:0;padding:0;list-style:none;display:grid;gap:5px}.df-ai-item{display:flex;gap:8px;align-items:flex-start;color:#334155;font-size:12px}.df-ai-item b{min-width:94px;color:#1e40af}.df-ai-note{margin:8px 0 0;color:#64748b;font-size:11px}.df-ai-confirm{margin-top:9px;border:1px solid #15803d;background:#15803d;color:#fff;border-radius:7px;padding:7px 10px;cursor:pointer;font:inherit;font-size:12px}.df-ai-confirm:hover{background:#166534}
.df-btn.ai{border-color:#2563eb;color:#1d4ed8}.df-btn.ai:hover{background:#eff6ff}.df-btn.ai:disabled{opacity:.55;cursor:wait}
.df-check-result{display:none;margin-top:16px;padding:14px;border:1px solid #e2e8f0;border-radius:10px;background:#fff}
.df-check-result.open{display:block}.df-check-status{margin:0;color:#64748b;font-size:12px}.df-check-status.err{color:#b91c1c}
.df-check-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.df-check-badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700}
.df-check-badge.ok{background:#dcfce7;color:#15803d}.df-check-badge.warn{background:#fef3c7;color:#b45309}
.df-check-score{font-size:12.5px;color:#334155}.df-check-score b{font-size:16px;color:#1d4ed8}
.df-check-summary{margin:0 0 10px;color:#334155;font-size:12.5px;line-height:1.6}
.df-check-sec{margin:0 0 10px}.df-check-sec h4{margin:0 0 5px;font-size:12px;font-weight:700}
.df-check-sec ul{margin:0;padding-left:18px}.df-check-sec li{margin:2px 0;font-size:12px;line-height:1.55}
.df-check-sec.miss h4{color:#b91c1c}.df-check-sec.fmt h4{color:#b45309}.df-check-sec.con h4{color:#9d174d}.df-check-sec.warn h4{color:#b45309}.df-check-sec.evi h4{color:#1d4ed8}
.df-check-empty{margin:0;color:#15803d;font-size:12.5px}.df-check-note{margin:10px 0 0;color:#94a3b8;font-size:11px}

.df-draft-actions{display:flex;align-items:center;gap:8px;margin-top:6px}.df-draft-btn{border:1px solid #93c5fd;background:#eff6ff;color:#1d4ed8;border-radius:6px;padding:5px 8px;cursor:pointer;font:inherit;font-size:11px}.df-draft-btn:hover{background:#dbeafe}.df-draft-btn:disabled{opacity:.55;cursor:wait}.df-draft-hint{color:#94a3b8;font-size:10px}.df-draft-result{display:none;margin-top:8px}.df-draft-result.open{display:block}.df-draft-preview{padding:10px;border:1px solid #bfdbfe;border-radius:8px;background:#f8fbff}.df-draft-label{margin-bottom:6px;color:#1e3a8a;font-size:11px;font-weight:700}.df-draft-label span{margin-left:6px;color:#64748b;font-weight:400}.df-draft-text{white-space:pre-wrap;color:#334155;font-size:12px;line-height:1.65}.df-draft-missing{margin-top:8px;color:#92400e;font-size:11px}.df-draft-missing ul{margin:3px 0 0;padding-left:17px}.df-draft-controls{display:flex;gap:6px;margin-top:9px}.df-draft-confirm,.df-draft-cancel{border-radius:6px;padding:5px 9px;cursor:pointer;font:inherit;font-size:11px}.df-draft-confirm{border:1px solid #15803d;background:#15803d;color:#fff}.df-draft-cancel{border:1px solid #cbd5e1;background:#fff;color:#475569}.df-draft-status{margin:0;color:#64748b;font-size:11px}.df-draft-status.err{color:#b91c1c}.df-draft-status.ok{color:#15803d}
/* ===== 窄屏/触控设备适配：固定视口 + 三行布局 + 上下独立滚动 ===== */
@media (max-width: 820px), (pointer: coarse) {
  .df-overlay,
  .df-overlay.open {
    position: fixed !important;
    top: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    left: 0 !important;
    display: block !important;
    width: 100vw !important;
    height: 100vh !important;
    height: 100dvh !important;
    padding: 0 !important;
    overflow: hidden !important;
  }
  .df-panel {
    position: fixed !important;
    top: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    left: 0 !important;
    display: grid !important;
    grid-template-rows: auto minmax(0, 1fr) auto !important;
    width: 100vw !important;
    height: 100vh !important;
    height: 100dvh !important;
    min-height: 0 !important;
    max-width: none !important;
    max-height: none !important;
    margin: 0 !important;
    border-radius: 0 !important;
    overflow: hidden !important;
  }
  .df-head { padding: 12px 14px; }
  .df-head-title h2 { font-size: 16px; line-height: 1.35; }
  .df-head-title p { font-size: 11px; }
  .df-close { padding: 6px 10px; font-size: 13px; }
  .df-body {
    display: grid !important;
    grid-template-columns: 1fr !important;
    grid-template-rows: minmax(0, 1fr) minmax(0, 1fr) !important;
    width: 100% !important;
    height: auto !important;
    min-height: 0 !important;
    flex: none !important;
    overflow: hidden !important;
  }
  .df-form-pane,
  .df-preview-pane {
    box-sizing: border-box;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 0 !important;
    height: auto !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
  }
  .df-form-pane { border-right: none; border-bottom: 1px solid #e9ecef; padding: 14px 16px; max-height: none !important; }
  .df-preview-pane { padding: 14px 16px; }
  .df-form-grid { grid-template-columns: 1fr; gap: 10px; }
  .df-field input,.df-field textarea,.df-field select { padding: 10px 12px; font-size: 15px; }
  .df-field textarea { min-height: 80px; }
  .df-foot { flex-wrap: wrap; gap: 8px; padding: 10px 14px; }
  .df-foot-note { width: 100%; font-size: 11px; margin-bottom: 6px; }
  .df-foot .df-btn { flex: 1 1 30%; min-width: 100px; padding: 9px 8px; font-size: 12px; }
  .df-ai-box { padding: 12px; }
  .df-ai-title { font-size: 13px; }
  .df-ai-input { min-height: 80px; font-size: 15px; padding: 10px 12px; }
  .df-ai-actions { flex-wrap: wrap; gap: 8px; }
  .df-ai-btn { width: 100%; padding: 9px 12px; font-size: 13px; }
  .df-ai-status { width: 100%; font-size: 11px; }
  .df-check-result,.df-draft-preview { padding: 12px; }
}
