/* Upload composer. Only this dialog is affected; progress values come from the transport. */
.fz-dialog.fz-upload-composer {
    --fz-ink:#161a1d;
    --fz-muted:#626b73;
    --fz-yellow:#ffbe2e;
    --fz-line:#e3e7ea;
    box-sizing:border-box;
    width:min(960px,calc(100vw - 48px));
    max-width:none;
    max-height:calc(100dvh - 48px);
    margin:auto;
    padding:0!important;
    overflow:hidden;
    border:1px solid #dfe4e8;
    border-radius:16px;
    background:#fff;
    color:var(--fz-ink);
    box-shadow:0 24px 80px #0d172329;
    font:400 14px/1.6 Poppins,Arial,sans-serif;
}
.fz-dialog.fz-upload-composer::backdrop { background:#101821a3; backdrop-filter:blur(3px); }
.fz-dialog.fz-upload-composer .fz-dialog-body {
    display:flex;
    flex-direction:column;
    min-width:0;
    min-height:0;
    max-height:calc(100dvh - 50px);
    padding:0!important;
    overflow:hidden;
}
.fz-dialog.fz-upload-composer .fz-dialog-head {
    display:flex;
    align-items:center;
    justify-content:space-between;
    flex:0 0 auto;
    gap:20px;
    margin:0;
    padding:20px 28px;
    border-bottom:1px solid var(--fz-line);
    background:#fff;
}
.fz-dialog.fz-upload-composer .fz-dialog-head h2 {
    margin:0!important;
    color:var(--fz-ink);
    font:700 26px/1.3 Poppins,Arial,sans-serif!important;
    letter-spacing:-.025em;
}
.fz-dialog.fz-upload-composer .fz-close {
    width:42px;
    min-width:42px;
    height:42px;
    min-height:42px;
    border:1px solid var(--fz-line)!important;
    border-radius:10px!important;
    background:#fff!important;
    transition:background-color .18s ease;
}
.fz-dialog.fz-upload-composer .fz-close:hover { background:#f3f5f6!important; }
.fz-dialog.fz-upload-composer .fz-upload-form { display:flex; flex-direction:column; flex:1 1 auto; min-width:0; min-height:0; margin:0; padding:0; overflow:hidden; }
.fz-dialog.fz-upload-composer .fz-upload-scroll {
    display:flex;
    flex-direction:column;
    gap:20px;
    min-width:0;
    min-height:0;
    padding:22px 28px 24px;
    overflow:auto;
    overscroll-behavior:contain;
    scrollbar-width:thin;
    scrollbar-color:#cbd2d7 transparent;
    scroll-padding:18px;
}
.fz-dialog.fz-upload-composer .fz-upload-scroll>p { margin:0!important; }
.fz-dialog.fz-upload-composer .fz-upload-intro { color:var(--fz-ink); font-size:14px; font-weight:500; line-height:1.6; overflow-wrap:anywhere; }

/* A visible button remains the keyboard alternative to dragging files. */
.fz-dialog.fz-upload-composer .fz-upload-dropzone {
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:12px;
    min-width:0;
    min-height:238px;
    padding:26px 24px;
    border:1.5px dashed #c8d0d6;
    border-radius:12px;
    background:#fafbfc;
    text-align:center;
    transition:background-color .18s ease,border-color .18s ease;
}
.fz-dialog.fz-upload-composer .fz-upload-dropzone.is-dragover { border-color:#b48109; background:#fff8e7; }
.fz-dialog.fz-upload-composer .fz-upload-dropzone:focus-within { border-color:#547a9b; }
.fz-dialog.fz-upload-composer .fz-upload-icon { display:block; flex:0 0 auto; width:48px; height:48px; margin:0 0 3px; color:var(--fz-ink); }
.fz-dialog.fz-upload-composer .fz-upload-icon svg { display:block; width:100%; height:100%; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }
.fz-dialog.fz-upload-composer .fz-upload-title { margin:0!important; color:var(--fz-ink); font:600 20px/1.4 Poppins,Arial,sans-serif!important; letter-spacing:-.015em; }
.fz-dialog.fz-upload-composer .fz-upload-hint { margin:0!important; max-width:620px; color:var(--fz-muted); font:400 12px/1.7 Poppins,Arial,sans-serif!important; }
.fz-dialog.fz-upload-composer .fz-upload-dropzone .fz-upload-hint { max-width:500px; font-size:13px!important; }
.fz-dialog.fz-upload-composer .fz-upload-picker {
    display:inline-flex!important;
    align-items:center;
    justify-content:center;
    gap:8px;
    width:auto;
    min-height:44px;
    margin:0;
    padding:10px 19px!important;
    border:1px solid #cbd2d7!important;
    border-radius:8px!important;
    background:#fff!important;
    color:var(--fz-ink)!important;
    box-shadow:0 1px 2px #0d17230a!important;
    font:600 14px/1.5 Poppins,Arial,sans-serif!important;
    text-decoration:none!important;
    white-space:normal;
    cursor:pointer;
    transition:background-color .18s ease,border-color .18s ease;
}
.fz-dialog.fz-upload-composer .fz-upload-picker:hover:not(:disabled) { background:#fff8e7!important; border-color:#d3b667!important; }
.fz-dialog.fz-upload-composer .fz-upload-input:not([hidden]) { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }

/* File cards: real local previews, individual descriptions and real transfer status. */
.fz-dialog.fz-upload-composer .fz-upload-queue { display:grid; gap:12px; min-width:0; margin:0; padding:0; list-style:none; }
.fz-dialog.fz-upload-composer .fz-upload-queue:empty { display:none; }
.fz-dialog.fz-upload-composer .fz-upload-item {
    display:grid;
    grid-template-columns:100px minmax(0,1fr) auto;
    align-items:start;
    gap:8px 16px;
    min-width:0;
    margin:0;
    padding:16px;
    border:1px solid var(--fz-line);
    border-radius:12px;
    background:#fff;
}
.fz-dialog.fz-upload-composer .fz-upload-preview { display:grid; place-items:center; grid-column:1; grid-row:1 / span 3; width:100px; height:112px; min-width:0; overflow:hidden; border:1px solid #e6e9ec; border-radius:8px; background:#f2f4f6; color:#64707a; }
.fz-dialog.fz-upload-composer .fz-upload-preview img,
.fz-dialog.fz-upload-composer .fz-upload-preview video { display:block; width:100%!important; height:100%!important; max-width:none; margin:0; padding:0; object-fit:cover; }
.fz-dialog.fz-upload-composer .fz-upload-preview>span { padding:9px; font-size:11px; line-height:1.5; text-align:center; }
.fz-dialog.fz-upload-composer .fz-upload-details { display:flex; flex-direction:column; grid-column:2; gap:4px; min-width:0; }
.fz-dialog.fz-upload-composer .fz-upload-file-name { display:block; margin:0!important; color:var(--fz-ink); font:600 14px/1.45 Poppins,Arial,sans-serif!important; overflow-wrap:anywhere; }
.fz-dialog.fz-upload-composer .fz-upload-file-meta { display:block; margin:0!important; color:var(--fz-muted); font:400 12px/1.5 Poppins,Arial,sans-serif!important; }
.fz-dialog.fz-upload-composer .fz-upload-caption { display:flex; flex-direction:column; gap:5px; min-width:0; margin:7px 0 0; color:#48515a; font-size:12px; font-weight:500; line-height:1.5; }
.fz-dialog.fz-upload-composer .fz-upload-caption textarea {
    display:block;
    width:100%;
    min-width:0;
    min-height:68px;
    max-height:240px;
    margin:0!important;
    padding:9px 11px!important;
    border:1px solid #ccd4db!important;
    border-radius:8px!important;
    background:#fff!important;
    color:var(--fz-ink)!important;
    box-shadow:none!important;
    font:400 14px/1.55 Poppins,Arial,sans-serif!important;
    resize:vertical;
    transition:border-color .18s ease;
}
.fz-dialog.fz-upload-composer .fz-upload-caption textarea::placeholder { color:#879098; opacity:1; }
.fz-dialog.fz-upload-composer .fz-upload-caption textarea:disabled { background:#f6f8f9!important; color:#626b73!important; cursor:not-allowed; }
.fz-dialog.fz-upload-composer .fz-upload-item-actions { display:flex; flex-direction:column; align-items:flex-end; grid-column:3; gap:6px; min-width:0; }
.fz-dialog.fz-upload-composer .fz-upload-item-actions button {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:6px;
    width:auto;
    min-width:38px;
    min-height:38px;
    margin:0!important;
    padding:8px 10px!important;
    border:1px solid #e1e6e9!important;
    border-radius:8px!important;
    background:#fff!important;
    color:#53616b!important;
    box-shadow:none!important;
    font:500 12px/1.5 Poppins,Arial,sans-serif!important;
    white-space:normal;
    transition:background-color .18s ease,border-color .18s ease;
}
.fz-dialog.fz-upload-composer .fz-upload-item-actions button:hover:not(:disabled) { background:#f4f6f7!important; border-color:#bdc7ce!important; }
.fz-dialog.fz-upload-composer .fz-upload-item-status { grid-column:2 / -1; min-width:0; margin:0!important; padding:0; color:#626b73; font:400 12px/1.6 Poppins,Arial,sans-serif!important; overflow-wrap:anywhere; }
.fz-dialog.fz-upload-composer .fz-upload-item-status:empty { display:none; }
.fz-dialog.fz-upload-composer .fz-upload-item[data-state=success] { border-color:#c6ddcf; }
.fz-dialog.fz-upload-composer .fz-upload-item[data-state=success] .fz-upload-item-status { color:#28623e; }
.fz-dialog.fz-upload-composer .fz-upload-item:is([data-state=error],[data-state=serverfailed]) { border-color:#e7c3bd; }
.fz-dialog.fz-upload-composer .fz-upload-item:is([data-state=error],[data-state=serverfailed]) .fz-upload-item-status { color:#953e31; }
.fz-dialog.fz-upload-composer .fz-upload-item:is([data-state=uncertain],[data-state=cancelled]) .fz-upload-item-status { color:#865b1d; }
.fz-dialog.fz-upload-composer .fz-upload-item:is([data-state=uploading],[data-state=confirming]) { border-color:#dec68d; }
.fz-dialog.fz-upload-composer :is(.fz-upload-item-progress,.fz-upload-total-progress) { display:block; appearance:none; width:100%; height:6px; min-width:0; margin:0; padding:0; overflow:hidden; border:0; border-radius:6px; background:#edf0f2; }
.fz-dialog.fz-upload-composer .fz-upload-item-progress { grid-column:2 / -1; margin-top:1px; }
.fz-dialog.fz-upload-composer :is(.fz-upload-item-progress,.fz-upload-total-progress)::-webkit-progress-bar { border-radius:6px; background:#edf0f2; }
.fz-dialog.fz-upload-composer :is(.fz-upload-item-progress,.fz-upload-total-progress)::-webkit-progress-value { border-radius:6px; background:#dc9a08; }
.fz-dialog.fz-upload-composer :is(.fz-upload-item-progress,.fz-upload-total-progress)::-moz-progress-bar { border-radius:6px; background:#dc9a08; }
.fz-dialog.fz-upload-composer .fz-upload-item[data-state=success] .fz-upload-item-progress::-webkit-progress-value { background:#43835b; }
.fz-dialog.fz-upload-composer .fz-upload-item[data-state=success] .fz-upload-item-progress::-moz-progress-bar { background:#43835b; }

/* Consent is separate from the queue; controls keep their native semantics. */
.fz-dialog.fz-upload-composer .fz-upload-consents { min-width:0; margin:0; padding:18px 20px; border:1px solid var(--fz-line); border-radius:12px; background:#f7f9fa; }
.fz-dialog.fz-upload-composer .fz-upload-consents :is(h3,legend) { margin:0 0 10px; padding:0; color:var(--fz-ink); font:600 15px/1.5 Poppins,Arial,sans-serif; }
.fz-dialog.fz-upload-composer .fz-upload-consents>p { margin:0 0 12px!important; color:var(--fz-muted); font-size:12px; line-height:1.7; }
.fz-dialog.fz-upload-composer .fz-upload-consents .fz-checkbox { display:flex; align-items:flex-start; gap:11px; min-height:32px; margin:12px 0; color:#49545e; font:400 13px/1.65 Poppins,Arial,sans-serif; }
.fz-dialog.fz-upload-composer .fz-upload-consents .fz-checkbox:last-child { margin-bottom:0; }
.fz-dialog.fz-upload-composer .fz-upload-consents .fz-checkbox input { flex:0 0 20px; width:20px; height:20px; margin:1px 0 0; accent-color:#202832; }
.fz-dialog.fz-upload-composer .fz-upload-consents .fz-checkbox input:disabled+span { color:#78828a; }
.fz-dialog.fz-upload-composer .fz-upload-consents .fz-link { min-height:36px; font-size:12px; }
.fz-dialog.fz-upload-composer .fz-form-status { margin:0!important; padding:0; color:var(--fz-muted); font-size:13px!important; line-height:1.6; }
.fz-dialog.fz-upload-composer .fz-form-status:empty { display:none; }

/* Footer is outside the scrolling region, so count and actions stay available. */
.fz-dialog.fz-upload-composer .fz-upload-actions {
    position:sticky;
    bottom:0;
    z-index:2;
    display:flex;
    align-items:center;
    justify-content:space-between;
    flex:0 0 auto;
    gap:24px;
    min-width:0;
    margin:0;
    padding:18px 28px max(18px,env(safe-area-inset-bottom));
    border-top:1px solid var(--fz-line);
    background:#fff;
    box-shadow:0 -4px 18px #10182105;
}
.fz-dialog.fz-upload-composer .fz-upload-summary { display:flex; flex-direction:column; flex:1 1 220px; gap:7px; min-width:0; color:var(--fz-muted); font-size:12px; line-height:1.5; }
.fz-dialog.fz-upload-composer .fz-upload-summary>p { margin:0!important; color:var(--fz-muted); font-size:12px; line-height:1.5; }
.fz-dialog.fz-upload-composer .fz-upload-count { margin:0!important; color:var(--fz-ink); font:600 14px/1.45 Poppins,Arial,sans-serif!important; overflow-wrap:anywhere; }
.fz-dialog.fz-upload-composer .fz-upload-buttons { display:flex; align-items:center; justify-content:flex-end; flex:0 1 auto; flex-wrap:wrap; gap:9px; min-width:0; }
.fz-dialog.fz-upload-composer .fz-upload-buttons .fz-btn { min-height:46px; margin:0; padding:11px 18px!important; border-radius:9px!important; font-size:14px!important; line-height:1.5!important; box-shadow:none!important; }
.fz-dialog.fz-upload-composer .fz-upload-buttons .fz-text-button { min-height:44px; margin:0; padding:8px 11px!important; color:#54616a!important; font-size:13px!important; }
.fz-dialog.fz-upload-composer .fz-upload-buttons .fz-btn-primary { background:#ffbe2e!important; border-color:#ffbe2e!important; color:#161a1d!important; }
.fz-dialog.fz-upload-composer .fz-upload-buttons .fz-btn-primary:hover:not(:disabled) { background:#ffcd5d!important; border-color:#ffcd5d!important; }
.fz-dialog.fz-upload-composer button:disabled { opacity:.48; cursor:not-allowed; }
.fz-dialog.fz-upload-composer :focus-visible { outline:2px solid #216db3!important; outline-offset:2px!important; }

@media(max-width:640px) {
    .fz-dialog.fz-upload-composer { width:calc(100vw - 20px); max-height:calc(100dvh - 20px); border-radius:12px; }
    .fz-dialog.fz-upload-composer .fz-dialog-body { max-height:calc(100dvh - 22px); }
    .fz-dialog.fz-upload-composer .fz-dialog-head { gap:12px; padding:15px 18px; }
    .fz-dialog.fz-upload-composer .fz-dialog-head h2 { font-size:22px!important; }
    .fz-dialog.fz-upload-composer .fz-upload-scroll { gap:18px; padding:18px; }
    .fz-dialog.fz-upload-composer .fz-upload-dropzone { min-height:215px; padding:22px 14px; gap:11px; }
    .fz-dialog.fz-upload-composer .fz-upload-icon { width:42px; height:42px; }
    .fz-dialog.fz-upload-composer .fz-upload-title { font-size:18px!important; }
    .fz-dialog.fz-upload-composer .fz-upload-hint { font-size:11px!important; }
    .fz-dialog.fz-upload-composer .fz-upload-item { grid-template-columns:72px minmax(0,1fr); gap:9px 11px; padding:12px; }
    .fz-dialog.fz-upload-composer .fz-upload-preview { grid-row:1; width:72px; height:86px; }
    .fz-dialog.fz-upload-composer .fz-upload-file-name { font-size:13px!important; }
    .fz-dialog.fz-upload-composer .fz-upload-file-meta { font-size:11px!important; }
    .fz-dialog.fz-upload-composer .fz-upload-caption textarea { min-height:74px; padding:8px 10px!important; font-size:16px!important; }
    .fz-dialog.fz-upload-composer .fz-upload-item-actions { grid-column:1 / -1; flex-direction:row; justify-content:flex-end; flex-wrap:wrap; }
    .fz-dialog.fz-upload-composer .fz-upload-item-actions button { min-height:40px; }
    .fz-dialog.fz-upload-composer .fz-upload-item-status,
    .fz-dialog.fz-upload-composer .fz-upload-item-progress { grid-column:1 / -1; }
    .fz-dialog.fz-upload-composer .fz-upload-consents { padding:16px; }
    .fz-dialog.fz-upload-composer .fz-upload-consents .fz-checkbox { font-size:12px; line-height:1.7; }
    .fz-dialog.fz-upload-composer .fz-upload-actions { flex-direction:column; align-items:stretch; gap:12px; padding:14px 18px max(14px,env(safe-area-inset-bottom)); }
    .fz-dialog.fz-upload-composer .fz-upload-summary { flex:0 0 auto; }
    .fz-dialog.fz-upload-composer .fz-upload-buttons { justify-content:stretch; width:100%; gap:8px; }
    .fz-dialog.fz-upload-composer .fz-upload-buttons .fz-btn { flex:1 1 130px; min-width:0; padding:10px 12px!important; }
    .fz-dialog.fz-upload-composer .fz-upload-buttons .fz-text-button { flex:1 1 90px; padding:8px!important; }
}

@media(prefers-reduced-motion:reduce) {
    .fz-dialog.fz-upload-composer,
    .fz-dialog.fz-upload-composer * { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
}

/* Last in the file: hidden must win even against theme and component button rules. */
.fz-dialog.fz-upload-composer [hidden] { display:none!important; }
