.feedback-launch{position:fixed;right:20px;bottom:calc(20px + var(--feedback-obstruction,0px));z-index:60;border:1px solid var(--action-primary-bg,#f50a3c);border-radius:999px;padding:10px 15px;background:var(--action-primary-bg,#f50a3c);color:var(--action-primary-fg,#fff);font-weight:750;box-shadow:0 8px 24px rgb(0 0 0 / 28%);transition:transform 120ms cubic-bezier(.2,.7,.3,1),box-shadow 180ms cubic-bezier(.2,.7,.3,1)}
.feedback-launch:hover{box-shadow:0 10px 28px rgb(0 0 0 / 36%)}.feedback-launch:active{transform:scale(.97)}
.feedback-backdrop{position:fixed;inset:0;z-index:80;display:none;align-items:flex-end;justify-content:flex-end;padding:18px;background:rgb(0 0 0 / 48%)}
.feedback-backdrop.open,.feedback-backdrop.closing{display:flex}.feedback-backdrop.open{animation:feedbackBackdropIn 180ms cubic-bezier(.2,.7,.3,1) both}.feedback-backdrop.closing{animation:feedbackBackdropOut 120ms cubic-bezier(.5,0,.8,.4) both}
.feedback-dialog{width:min(430px,100%);max-height:calc(100vh - 36px);overflow:auto;border:1px solid #3b3e44;border-radius:14px;padding:18px;background:#1e2024;color:#eef0f2;box-shadow:0 18px 60px rgb(0 0 0 / 45%)}.feedback-backdrop.open .feedback-dialog{animation:feedbackDialogIn 180ms cubic-bezier(.2,.7,.3,1) both}.feedback-backdrop.closing .feedback-dialog{animation:feedbackDialogOut 120ms cubic-bezier(.5,0,.8,.4) both}
@keyframes feedbackBackdropIn{from{opacity:0}to{opacity:1}}@keyframes feedbackBackdropOut{from{opacity:1}to{opacity:0}}@keyframes feedbackDialogIn{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}@keyframes feedbackDialogOut{from{opacity:1;transform:none}to{opacity:0;transform:translateY(8px) scale(.99)}}
.feedback-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:15px}.feedback-head h2{margin:0;font-size:18px}.feedback-head p{margin:3px 0 0;color:#9a9fa8;font-size:12px}.feedback-close{border:0;background:transparent;color:#9a9fa8;font-size:24px;line-height:1;padding:0}
.feedback-field{display:grid;gap:6px;margin-top:12px;color:#cdd0d5;font-size:12px;font-weight:650}.feedback-field select,.feedback-field input,.feedback-field textarea{width:100%;border:1px solid #44474e;border-radius:8px;padding:9px 10px;background:#25272c;color:#eef0f2}.feedback-field textarea{min-height:112px;resize:vertical;font-family:inherit}
.feedback-drop{margin-top:12px;border:1px dashed #666b74;border-radius:10px;padding:18px;text-align:center;background:#22252a;color:#9a9fa8;cursor:pointer;transition:transform 120ms cubic-bezier(.2,.7,.3,1),border-color 120ms,background 120ms}.feedback-drop.drag{border-color:#f50a3c;background:rgb(245 10 60 / 8%);transform:scale(1.01)}.feedback-drop strong{display:block;color:#eef0f2}.feedback-files{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.feedback-files:empty{display:none}.feedback-files-status{display:block;margin-top:6px;font-size:11px;color:#b9bdc3;overflow-wrap:anywhere}.feedback-thumb{position:relative;width:72px;height:72px;border-radius:8px;overflow:hidden;border:1px solid #3a3e45;background:#22252a}.feedback-thumb img{width:100%;height:100%;object-fit:cover;display:block}.feedback-thumb-remove{position:absolute;top:2px;right:2px;box-sizing:border-box;padding:0;width:24px;height:24px;line-height:1;border:0;border-radius:50%;background:rgb(0 0 0 / 62%);color:#fff;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}.feedback-thumb-remove:hover{background:#f50a3c}.feedback-thumb-remove:focus-visible{outline:2px solid #fff;outline-offset:1px}.feedback-thumb-size{position:absolute;left:0;right:0;bottom:0;padding:1px 4px;font-size:10px;color:#eef0f2;background:rgb(0 0 0 / 55%);text-align:center}
.feedback-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:16px}.feedback-submit{border:0;border-radius:8px;padding:10px 16px;background:#f50a3c;color:#fff;font-weight:750;display:inline-flex;align-items:center;gap:7px;transition:transform 120ms cubic-bezier(.2,.7,.3,1),opacity 120ms}.feedback-submit:active:not(:disabled){transform:scale(.97)}.feedback-submit:disabled{opacity:.65}.feedback-submit.is-loading::before{content:'';width:13px;height:13px;border:2px solid #fff7;border-top-color:#fff;border-radius:50%;animation:feedbackSpin .7s linear infinite}.feedback-result{min-height:18px;margin-right:auto;color:#9a9fa8;font-size:12px}.feedback-result.ok{color:#4ade80;animation:feedbackResultIn 180ms cubic-bezier(.2,.7,.3,1)}.feedback-result.error{color:#ff8098;animation:feedbackResultIn 180ms cubic-bezier(.2,.7,.3,1)}@keyframes feedbackSpin{to{transform:rotate(360deg)}}@keyframes feedbackResultIn{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
@media(max-width:600px){.feedback-thumb{width:88px;height:88px}.feedback-thumb-remove{width:44px;height:44px;font-size:20px;border-radius:0 0 0 10px;top:0;right:0}.feedback-launch{right:12px;bottom:calc(12px + var(--feedback-obstruction,0px))}.feedback-backdrop{padding:0}.feedback-dialog{width:100%;max-height:92vh;border-radius:14px 14px 0 0}}
@media(prefers-reduced-motion:reduce){.feedback-launch,.feedback-drop,.feedback-submit,.feedback-backdrop,.feedback-dialog,.feedback-result{animation:none!important;transition:none!important}.feedback-submit.is-loading::before{animation-duration:1.4s}}
/* theme-locked dark utility layer: focus ring always uses the dark focus value */
.feedback-dialog :focus-visible{outline:2px solid #5b8bff;outline-offset:2px}
/* the launcher sits on the host page, so it follows the host focus token */
.feedback-launch:focus-visible{outline:2px solid var(--focus-ring,#5b8bff);outline-offset:2px}
