/* Shared drop surface; owning modules retain their galleries and metadata controls. */
.ratio-upload-zone,
.attachment-picker {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    min-height: 100px;
    height: auto;
    padding: 20px;
    border: 1.5px dashed #a9c8dd;
    border-radius: 12px;
    background: #f5faff;
    color: #17324a;
    cursor: pointer;
    text-align: left;
    transition: border-color .15s, background .15s;
}
.ratio-upload-zone:hover,
.ratio-upload-zone:focus-within,
.ratio-upload-zone.is-dragging,
.attachment-picker.is-dragging { border-color: #238dcc; background: #eaf5ff; }
.ratio-upload-zone small,
.attachment-picker small { display: block; margin-top: 5px; color: #647e94; font-size: 12px; font-weight: 400; line-height: 1.5; }
.ratio-upload-zone input[type=file] { position: absolute; width: 1px; height: 1px; opacity: 0; }
.ratio-upload-zone[aria-disabled=true] { opacity: .65; cursor: wait; }
/* Shared line icons keep all dropzones independent of operating-system fonts. */
.ratio-upload-icon {
    display: grid;
    flex: 0 0 40px;
    place-items: center;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: #fff;
    color: #23628c;
}
.ratio-upload-icon svg { width: 24px; height: 24px; }
/* Quarantine hides existing controls without removing their handlers or draft state. */
.attachment-file-row [hidden] { display: none !important; }
/* Preparation keeps upload feedback separate from editable work-order data. */
.preparation-upload-panel { padding: 20px; border-bottom: 1px solid #e3eaf0; }
.preparation-upload-panel [role=status] { margin: 8px 0 0; font-size: 13px; color: #647e94; }
.preparation-upload-panel .is-error { color: #b42318; }
.preparation-photo-browser > p { grid-column: 1 / -1; color: #647e94; font-size: 14px; }
