.upload-dropzone{
  display:flex;
  min-height:158px;
  width:100%;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:5px;
  padding:22px;
  border:1.5px dashed #AFC0FF;
  border-radius:20px;
  background:#F0F3FF;
  color:var(--ink);
  text-align:center;
  cursor:pointer;
  transition:border-color 180ms cubic-bezier(.23,1,.32,1),background-color 180ms cubic-bezier(.23,1,.32,1),transform 180ms cubic-bezier(.23,1,.32,1);
}
.upload-dropzone:hover,.upload-dropzone.over{border-color:var(--accent);background:#E9EEFF}
.upload-dropzone:active{transform:scale(.99)}
.upload-dropzone[aria-disabled="true"]{pointer-events:none;opacity:.58}
.upload-drop-icon{
  display:grid;
  width:46px;
  height:46px;
  margin-bottom:5px;
  place-items:center;
  border-radius:14px;
  background:var(--surface);
  color:var(--accent);
  box-shadow:0 10px 25px -16px rgba(46,91,255,.72);
}
.upload-drop-heading{font:700 .9rem/1.2 var(--font-d)}
.upload-drop-help{font-size:.72rem;color:var(--muted)}
.upload-browse{color:var(--accent-deep);font-weight:750}
.upload-drop-meta{margin-top:2px;font-size:.66rem;color:var(--muted)}
.upload-file-card{
  position:relative;
  grid-template-columns:42px minmax(0,1fr) auto;
  align-items:center;
  gap:10px;
  min-height:64px;
  margin-top:10px;
  padding:10px 10px 10px 11px;
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:15px;
  background:var(--surface);
  text-align:left;
  box-shadow:0 7px 22px -20px rgba(23,26,31,.48);
}
.upload-file-card.show{display:grid}
.upload-file-card[hidden]{display:none}
.upload-file-icon{
  position:relative;
  display:grid;
  width:42px;
  height:42px;
  place-items:center;
  border-radius:12px;
  background:var(--accent-soft);
  color:var(--accent-deep);
}
.upload-file-icon svg{width:19px;height:19px}
.upload-file-type{
  position:absolute;
  right:-3px;
  bottom:-3px;
  min-width:25px;
  padding:2px 4px;
  border:2px solid var(--surface);
  border-radius:6px;
  background:var(--ink);
  color:#fff;
  font:800 .49rem/1 var(--font-b);
  letter-spacing:.03em;
  text-align:center;
}
.upload-file-copy{min-width:0}
.upload-file-name{display:block;overflow:hidden;color:var(--ink);font-size:.75rem;font-weight:700;text-overflow:ellipsis;white-space:nowrap}
.upload-file-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin-top:4px;color:var(--muted);font-size:.64rem}
.upload-file-status{display:inline-flex;align-items:center;gap:4px;color:var(--accent-deep);font-weight:700}
.upload-file-status::before{content:"";width:5px;height:5px;border-radius:999px;background:currentColor}
.upload-file-remove{
  display:grid;
  width:34px;
  height:34px;
  place-items:center;
  border:0;
  border-radius:11px;
  background:var(--paper);
  color:var(--muted);
  cursor:pointer;
  transition:color 160ms cubic-bezier(.23,1,.32,1),background-color 160ms cubic-bezier(.23,1,.32,1),transform 160ms cubic-bezier(.23,1,.32,1);
}
.upload-file-remove:hover{background:var(--red-soft);color:var(--red)}
.upload-file-remove:active{transform:scale(.96)}
.upload-file-remove svg{width:16px;height:16px}
.upload-file-progress{position:absolute;right:0;bottom:0;left:0;height:3px;overflow:hidden;background:var(--line);opacity:0}
.upload-file-progress span{display:block;width:42%;height:100%;border-radius:999px;background:var(--accent);transform:translateX(-110%)}
.upload-file-card[data-state="uploading"] .upload-file-progress{opacity:1}
.upload-file-card[data-state="uploading"] .upload-file-progress span{animation:scUploadProgress 1.25s ease-in-out infinite}
.upload-file-card[data-state="uploading"] .upload-file-status{color:var(--accent-deep)}
.upload-file-card[data-state="success"] .upload-file-status{color:var(--green)}
.upload-file-card[data-state="error"] .upload-file-status{color:var(--red)}
@keyframes scUploadProgress{to{transform:translateX(350%)}}

@media(max-width:460px){
  .upload-dropzone{min-height:150px;padding:20px 16px}
}
@media(prefers-reduced-motion:reduce){
  .upload-dropzone,.upload-file-remove{transition:none}
  .upload-file-card[data-state="uploading"] .upload-file-progress span{animation:none;transform:translateX(70%)}
}
