/* 意见反馈闭环：前台入口、表单与后台处理。 */
.feedback-entry{z-index:88;right:22px;bottom:104px;position:fixed;display:inline-flex;align-items:center;gap:7px;border:1px solid #b7ccbd;background:#fff;color:var(--green);border-radius:999px;padding:11px 15px;box-shadow:0 14px 36px #173c2e24;font-size:13px;transition:transform .18s,box-shadow .18s,border-color .18s}
.feedback-entry:hover{border-color:#7ba98a;box-shadow:0 18px 42px #173c2e30;transform:translateY(-2px)}
.feedback-entry span{width:25px;height:25px;border-radius:50%;background:#eaf4ec;display:grid;place-items:center;font-size:15px}
.feedback-entry b{font-weight:900}
.feedback-backdrop{z-index:130;inset:0;position:fixed;display:grid;place-items:center;background:#10251b8f;padding:22px;backdrop-filter:blur(3px)}
.feedback-modal{position:relative;width:min(720px,100%);max-height:min(820px,calc(100vh - 44px));overflow:auto;border:1px solid #c8d8cc;background:#fff;border-radius:22px;padding:32px;box-shadow:0 32px 90px #0a261b52}
.feedback-close{position:absolute;top:17px;right:17px;width:36px;height:36px;border:1px solid var(--line);background:#fff;border-radius:50%;font-size:22px;line-height:1}
.feedback-modal-head>span{color:var(--green);font-size:12px;font-weight:900;letter-spacing:.08em}
.feedback-modal-head h2{margin:7px 0 8px;font-size:29px;letter-spacing:-.02em}
.feedback-modal-head p{max-width:570px;margin:0;color:var(--muted);font-size:13px;line-height:1.7}
.feedback-types{border:0;margin:24px 0;padding:0}
.feedback-types legend{margin-bottom:11px;font-size:13px;font-weight:900}
.feedback-types{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.feedback-types legend{grid-column:1/-1}
.feedback-types label{cursor:pointer;display:grid;grid-template-columns:18px 1fr;align-items:start;gap:9px;border:1px solid var(--line);background:#fbfcfb;border-radius:12px;padding:12px;transition:border-color .18s,background .18s}
.feedback-types label:hover,.feedback-types label.active{border-color:#7dad8c;background:#f0f7f2}
.feedback-types input{margin-top:3px;accent-color:var(--green)}
.feedback-types b,.feedback-types small{display:block}
.feedback-types b{font-size:13px}
.feedback-types small{margin-top:3px;color:var(--muted);font-size:11px;line-height:1.45}
.feedback-field{position:relative;display:grid;gap:8px;margin-top:17px;font-size:13px;font-weight:850}
.feedback-field>span{display:flex;align-items:center;gap:7px}
.feedback-field em,.feedback-field i{border-radius:999px;padding:2px 7px;font-size:10px;font-style:normal}
.feedback-field em{color:#9a3b31;background:#fff0ed}
.feedback-field i{color:var(--muted);background:#eef2ef}
.feedback-field input,.feedback-field select,.feedback-field textarea{width:100%;border:1px solid var(--line);background:#fff;border-radius:11px;padding:12px 13px;color:var(--ink);font:inherit;line-height:1.6;resize:vertical}
.feedback-field input:focus,.feedback-field select:focus,.feedback-field textarea:focus{outline:2px solid #b9d6c1;outline-offset:1px;border-color:#6f9d7d}
.feedback-field>small{justify-self:end;color:var(--muted);font-size:10px;font-weight:600}
.feedback-error{margin-top:15px;border:1px solid #efbeb7;background:#fff5f3;color:#9b3d32;border-radius:10px;padding:10px 12px;font-size:12px}
.feedback-submit{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.feedback-submit>small{max-width:380px;color:var(--muted);font-size:10px;line-height:1.5}
.feedback-submit .primary,.feedback-success .primary{border:0;background:var(--green);color:#fff;border-radius:10px;padding:12px 20px;font-weight:900}
.feedback-submit .primary:disabled{opacity:.6}
.feedback-success{min-height:390px;display:grid;place-items:center;align-content:center;text-align:center}
.feedback-success>span{width:64px;height:64px;display:grid;place-items:center;border-radius:50%;background:#e5f5e9;color:var(--green);font-size:30px;font-weight:900}
.feedback-success h2{margin:18px 0 8px;font-size:28px}
.feedback-success p{margin:0;color:var(--muted);font-size:13px}
.feedback-success small{margin:16px 0 24px;color:var(--green);font-weight:850}

.feedback-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}
.feedback-metrics button{min-height:112px;border:1px solid var(--line);background:#fff;border-radius:16px;padding:18px;text-align:left;transition:border-color .18s,box-shadow .18s}
.feedback-metrics button:hover,.feedback-metrics button.active{border-color:#8eb79a;box-shadow:0 10px 26px #133d2c12}
.feedback-metrics button.active{background:#f2f8f4}
.feedback-metrics span,.feedback-metrics strong{display:block}
.feedback-metrics span{color:var(--muted);font-size:12px;font-weight:750}
.feedback-metrics strong{margin-top:8px;color:var(--green);font-size:30px;line-height:1}
.feedback-admin-card{padding:24px}
.feedback-admin-head{display:flex;justify-content:space-between;align-items:flex-start;gap:22px}
.feedback-admin-head h2{margin:0 0 5px}
.feedback-admin-head p{margin:0;color:var(--muted);font-size:12px;line-height:1.6}
.feedback-admin-head>button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 13px;font-weight:800}
.feedback-filter-grid{grid-template-columns:repeat(5,minmax(120px,1fr));align-items:end}
.feedback-filter-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;grid-column:1/-1}
.feedback-filter-actions button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 14px;font-weight:800}
.feedback-filter-actions button.primary{border-color:var(--green);background:var(--green);color:#fff}
.feedback-table{min-width:920px}
.feedback-table td{vertical-align:top}
.feedback-table td:nth-child(2){max-width:380px}
.feedback-table td:nth-child(2)>p{display:-webkit-box;overflow:hidden;margin:7px 0 0;line-height:1.55;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.feedback-table td:nth-child(3)>small{display:block;margin-top:5px;color:var(--muted)}
.feedback-category,.feedback-status{display:inline-flex;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:850;white-space:nowrap}
.feedback-category{color:#1c5b42;background:#eaf4ed}
.feedback-category-data{color:#245b94;background:#eaf2fb}
.feedback-category-experience{color:#8b5518;background:#fff3df}
.feedback-status-pending{color:#a05515;background:#fff0da}
.feedback-status-processing{color:#215b91;background:#e7f1fb}
.feedback-status-resolved{color:#176442;background:#e4f5e9}
.feedback-pagination{justify-content:flex-end;align-items:center;gap:10px;margin-top:18px;display:flex}
.feedback-pagination>span{color:var(--muted);font-size:12px}
.feedback-editor{width:min(720px,calc(100vw - 32px));overflow:auto}
.feedback-detail-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:20px 0}
.feedback-detail-meta span{border:1px solid var(--line);background:#f7faf8;border-radius:10px;padding:11px;color:var(--muted);font-size:10px}
.feedback-detail-meta b{display:block;margin-top:5px;color:var(--ink);font-size:12px}
.feedback-detail-content{border:1px solid #c9dccf;background:#f3f8f4;border-radius:13px;padding:16px}
.feedback-detail-content>span{color:var(--green);font-size:11px;font-weight:850}
.feedback-detail-content p{margin:8px 0 0;white-space:pre-wrap;font-size:14px;line-height:1.8}
.feedback-page-link{display:inline-flex;margin:14px 0 2px;color:var(--green);font-size:12px;font-weight:800}

@media (width<=1020px){
  .feedback-filter-grid{grid-template-columns:repeat(2,minmax(150px,1fr))}
  .feedback-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (width<=760px){
  .feedback-entry{right:14px;bottom:82px;padding:10px 12px}
  .feedback-entry b{display:none}
  .feedback-backdrop{padding:0;place-items:end center}
  .feedback-modal{width:100%;max-height:92vh;border-radius:22px 22px 0 0;padding:25px 18px 22px}
  .feedback-types{grid-template-columns:1fr}
  .feedback-submit{align-items:stretch;display:grid}
  .feedback-submit .primary{width:100%}
  .feedback-metrics{gap:9px}
  .feedback-metrics button{min-height:88px;padding:14px}
  .feedback-metrics strong{font-size:25px}
  .feedback-admin-card{padding:16px}
  .feedback-admin-head{display:grid}
  .feedback-filter-grid{grid-template-columns:1fr}
  .feedback-detail-meta{grid-template-columns:1fr}
}
