/* ─── UPLOAD PAGE HI-FI ─────────────────────────────── */
.upload-mode-tabs { display:flex; gap:0; background:var(--card); border:1px solid var(--border); border-radius:12px; overflow:hidden; margin-bottom:20px; box-shadow:0 1px 3px rgba(0,0,0,.04); }
.upload-mode-tab { flex:1; padding:13px 18px; background:none; border:none; cursor:pointer; font-family:'Inter',sans-serif; font-size:13.5px; font-weight:500; color:var(--muted); display:flex; align-items:center; justify-content:center; gap:8px; transition:all .2s; border-right:1px solid var(--border); }
.upload-mode-tab:last-child { border-right:none; }
.upload-mode-tab:hover:not(.active) { background:#F7FAFC; color:var(--text); }
.upload-mode-tab.active { background:var(--dark); color:#fff; }
.tab-badge { font-size:10px; font-weight:600; padding:2px 6px; border-radius:4px; background:rgba(255,255,255,.18); color:rgba(255,255,255,.8); }
.upload-mode-tab:not(.active) .tab-badge { background:#EDF2F7; color:var(--muted); }

.upload-summary-strip { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:20px; }
.upload-summary-card { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:14px 16px; box-shadow:0 1px 3px rgba(0,0,0,.04); }
.upload-summary-val { font-size:22px; font-weight:700; color:var(--text); line-height:1; }
.upload-summary-lbl { font-size:11px; color:var(--muted); margin-top:3px; text-transform:uppercase; letter-spacing:.4px; font-weight:500; }
.upload-workspace-grid { display:grid; grid-template-columns:1fr 340px; gap:16px; align-items:start; }
.upload-main-column,
.upload-side-column { display:flex; flex-direction:column; gap:16px; }
.upload-card-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; }
.upload-card-head .card-title { margin-bottom:0; }
.upload-card-meta { font-size:12px; color:var(--muted); font-weight:500; white-space:nowrap; }
.upload-sidebar-intro { font-size:12.5px; color:var(--muted); margin-bottom:12px; margin-top:-8px; line-height:1.45; }
.upload-site-title-row {
  display:flex;
  align-items:center;
  gap:7px;
  margin-bottom:12px;
}
.upload-site-title-row .card-title {
  margin-bottom:0;
}
.upload-site-help {
  width:18px;
  height:18px;
  border:1px solid #BEE3F8;
  border-radius:50%;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:var(--blue);
  background:#EBF8FF;
  font-size:12px;
  font-weight:800;
  line-height:1;
  cursor:help;
  padding:0;
}
.upload-site-help:focus {
  outline:2px solid rgba(49,130,206,.24);
  outline-offset:2px;
}
.upload-site-help-wrap {
  position:relative;
  display:inline-flex;
  align-items:center;
}
.upload-site-popover {
  position:absolute;
  left:50%;
  top:calc(100% + 8px);
  z-index:40;
  display:none;
  width:236px;
  padding:9px 10px;
  transform:translateX(-50%);
  border:1px solid #BEE3F8;
  border-radius:8px;
  background:#fff;
  box-shadow:0 10px 25px rgba(26,32,44,.16);
  color:var(--text);
  font-size:12px;
  font-weight:500;
  line-height:1.45;
}
.upload-site-popover::before {
  content:"";
  position:absolute;
  left:50%;
  top:-5px;
  width:9px;
  height:9px;
  transform:translateX(-50%) rotate(45deg);
  background:#fff;
  border-left:1px solid #BEE3F8;
  border-top:1px solid #BEE3F8;
}
.upload-site-help-wrap:hover .upload-site-popover,
.upload-site-help-wrap.open .upload-site-popover {
  display:block;
}
.upload-session-info-list,
.upload-summary-list { display:flex; flex-direction:column; gap:9px; font-size:13px; }
.upload-session-info-row,
.upload-summary-row { display:flex; justify-content:space-between; gap:12px; }
.upload-session-info-row span { color:var(--muted); }
.upload-summary-row span { color:var(--muted); }
.upload-session-info-row strong,
.upload-summary-row strong { font-weight:500; color:var(--text); text-align:right; }
.upload-summary-row strong {
  max-width:180px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.upload-session-info-row-accent { border-top:1px solid var(--border); padding-top:9px; }
.upload-session-info-row-accent strong { color:#38A169; }
.upload-runtime-warning {
  margin-top:12px;
  padding:10px 11px;
  border:1px solid #F6E05E;
  border-radius:8px;
  background:#FFFBEB;
  color:#744210;
  font-size:12px;
  line-height:1.45;
}
.upload-runtime-warning[hidden] { display:none !important; }
.upload-note-card { background:#FFFBEB; border:1.5px solid #F6E05E; border-radius:12px; padding:13px 15px; }
.upload-note-title { display:flex; align-items:center; gap:7px; font-size:13px; font-weight:600; color:#744210; margin-bottom:4px; }
.upload-note-text { font-size:12px; color:#7B341E; line-height:1.5; }
.visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

/* Override old global \.card { height:400px; } so upload/drive cards grow with their content. */
#upload-manual .card,
#upload-drive .card {
  height:auto;
  min-height:0;
}

#upload-drive .drive-selection-card {
  margin-top:16px;
  margin-bottom:0;
}

.upload-dropzone { border:2px dashed #CBD5E0; border-radius:14px; padding:44px 24px; text-align:center; background:#FAFBFC; cursor:pointer; transition:border-color .2s,background .2s; }
.upload-dropzone:hover,.upload-dropzone.drag-over { border-color:var(--blue); background:#EBF8FF; }
.dropzone-icon { width:52px; height:52px; border-radius:14px; background:#EDF2F7; display:flex; align-items:center; justify-content:center; margin:0 auto 14px; transition:background .2s; }
.upload-dropzone:hover .dropzone-icon { background:#BEE3F8; }
.dropzone-title { font-size:15px; font-weight:600; color:var(--dark); margin-bottom:4px; }
.dropzone-sub { font-size:13px; color:var(--muted); margin-bottom:10px; }
.dropzone-meta { font-size:11.5px; color:#A0AEC0; }
.dropzone-browse-btn { display:inline-flex; align-items:center; gap:6px; background:var(--blue); color:#fff; padding:8px 18px; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; border:none; font-family:'Inter',sans-serif; transition:background .18s; }
.dropzone-browse-btn:hover { background:#0055a0; }

.location-select-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-top:10px; }
.location-select-grid.upload-location-grid-two { grid-template-columns:1fr 1fr; }
.loc-select-card { border:2px solid var(--border); border-radius:12px; padding:13px 14px; cursor:pointer; background:var(--card); transition:border-color .18s,background .18s,box-shadow .18s; position:relative; min-height:72px; display:flex; align-items:center; }
.loc-select-card:hover { border-color:#90CDF4; background:#EBF8FF; }
.loc-select-card.selected { border-color:var(--blue); background:#EBF8FF; box-shadow:0 0 0 3px rgba(0,100,164,.1); }
.loc-select-name { font-size:13px; font-weight:600; color:var(--dark); margin-bottom:0; padding-right:20px; }
.loc-select-count { display:none; }
.loc-select-check { position:absolute; top:10px; right:10px; width:18px; height:18px; border-radius:50%; background:var(--blue); display:none; align-items:center; justify-content:center; }
.loc-select-card.selected .loc-select-check { display:flex; }

.upload-queue-list { border:1px solid var(--border); border-radius:12px; overflow:hidden; }
/* align-items:end so thin progress bar sits near the text baseline, not floating mid-air */
.upload-queue-item { display:grid; grid-template-columns:36px minmax(120px,1fr) minmax(150px,210px) auto 100px auto; align-items:end; gap:12px; padding:14px 16px; border-bottom:1px solid var(--border); transition:background .15s,border-color .15s; }
.upload-queue-item:last-child { border-bottom:none; }
.upload-queue-item:hover { background:#FAFBFC; }
.upload-queue-item.selected { background:#F7FBFF; box-shadow:inset 3px 0 0 var(--blue); }
.queue-file-icon { width:36px; height:36px; border-radius:8px; background:#EBF8FF; display:flex; align-items:center; justify-content:center; flex-shrink:0; align-self:center; }
.queue-batch-main { min-width:0; align-self:center; }
.queue-file-name { font-size:13px; font-weight:500; color:var(--text); }
.queue-file-meta { font-size:11.5px; color:var(--muted); margin-top:3px; }
.queue-site-edit { display:flex; flex-direction:column; gap:4px; align-self:center; min-width:0; }
.queue-site-edit span { font-size:10.5px; color:var(--muted); font-weight:600; text-transform:uppercase; letter-spacing:.3px; }
.queue-site-input { width:100%; min-width:0; height:30px; border:1px solid var(--border); border-radius:8px; padding:0 9px; font:500 12.5px 'Inter',sans-serif; color:var(--text); background:#fff; outline:none; }
.queue-site-input:focus { border-color:var(--blue); box-shadow:0 0 0 3px rgba(0,100,164,.1); }
.queue-location-tag { font-size:11px; font-weight:600; padding:3px 8px; border-radius:6px; background:#EBF8FF; color:var(--blue); white-space:nowrap; align-self:center; cursor:pointer; transition:background .15s,border-color .15s; }
#upload-manual .queue-location-tag:hover { background:#BEE3F8; }
#upload-manual .queue-location-tag::after { content:" ✎"; opacity:0.5; font-size:10px; }
.queue-size-text { font-size:12px; color:var(--muted); white-space:nowrap; align-self:center; }
/* progress wrap: pushed down with padding-bottom to optically balance with status pill */
.queue-prog-wrap { display:flex; flex-direction:column; gap:5px; padding-bottom:2px; }
.queue-prog-bar  { height:5px; background:#E2E8F0; border-radius:3px; overflow:hidden; }
.queue-prog-fill { height:100%; border-radius:3px; transition:width .5s cubic-bezier(.4,0,.2,1); }
.queue-prog-fill.done   { background:#48BB78; }
.queue-prog-fill.active { background:var(--blue); position:relative; overflow:hidden; }
.queue-prog-fill.active::after { content:''; position:absolute; inset:0; background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent); animation:shimmer 1.6s ease-in-out infinite; }
.queue-prog-pct { font-size:11px; color:var(--muted); text-align:right; }
.queue-batch-actions { display:flex; flex-direction:column; align-items:flex-end; gap:6px; align-self:center; }
.queue-remove-btn { border:none; background:transparent; color:var(--muted); font:600 11.5px 'Inter',sans-serif; padding:2px 0; cursor:pointer; }
.queue-remove-btn:hover { color:var(--red); text-decoration:underline; }
.queue-remove-btn:disabled { opacity:.5; cursor:not-allowed; text-decoration:none; color:var(--muted); }


/* ─── MANUAL UPLOAD: dropzone subtitle and queue summary ── */
.upload-subtitle {
  font-size:12.5px;
  color:var(--muted);
  margin:-6px 0 12px;
  line-height:1.5;
}

.dropzone-actions {
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin-top:14px;
}

.upload-queue-summary {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:10px 14px;
  margin-bottom:8px;
  border:1px solid var(--border);
  border-radius:10px;
  background:#F7FAFC;
}
.upload-queue-summary[hidden] { display:none !important; }
.upload-queue-summary-text { font-size:13px; font-weight:600; color:var(--text); }
.upload-import-summary-card { margin-bottom:14px; }
.upload-import-summary-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px 14px; margin-top:10px; }
.upload-queue-collapsed {
  padding:14px 16px;
  font-size:12.5px;
  color:var(--muted);
  text-align:center;
  background:#FAFBFC;
}

.btn.btn-link {
  background:none;
  border:none;
  color:var(--blue);
  padding:4px 6px;
  font-weight:600;
  cursor:pointer;
}
.btn.btn-link:hover { text-decoration:underline; }
.btn.btn-link[hidden] { display:none !important; }

/* ─── MANUAL UPLOAD: CAMERA SITE PANEL ────────────────── */
.upload-site-panel {
  display:flex;
  flex-direction:column;
  gap:8px;
}
.upload-site-card {
  width:100%;
  min-height:64px;
  padding:11px 12px;
  text-align:left;
  font-family:'Inter',sans-serif;
}
.upload-site-card > span:first-child {
  min-width:0;
}
.upload-site-card-value {
  display:block;
  margin-top:4px;
  padding-right:22px;
  color:var(--blue);
  font-size:12.5px;
  font-weight:700;
  line-height:1.25;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.upload-site-card-value.muted {
  color:var(--muted);
  font-weight:600;
}
.upload-site-detected-row {
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:10px 12px;
  border:1px solid var(--border);
  border-radius:10px;
  background:#F7FAFC;
  gap:12px;
}
.upload-site-detected-label {
  font-size:11.5px;
  font-weight:600;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.32px;
}
.upload-site-detected-value {
  font-size:13.5px;
  font-weight:700;
  color:var(--text);
  text-align:right;
  word-break:break-word;
}
.upload-site-detected-value.muted {
  color:var(--muted);
  font-weight:500;
  font-style:italic;
}
.upload-site-input-label {
  font-size:12px;
  font-weight:600;
  color:var(--text);
}
.upload-site-input-row {
  display:flex;
  gap:8px;
  align-items:stretch;
}
.upload-site-input {
  flex:1;
  min-width:0;
  border:1.5px solid var(--border);
  border-radius:10px;
  padding:8px 11px;
  font-size:13px;
  font-family:'Inter',sans-serif;
  color:var(--text);
  background:var(--card);
  outline:none;
}
.upload-site-input:focus {
  border-color:#90CDF4;
  box-shadow:0 0 0 3px rgba(49,130,206,.12);
}
.upload-site-helper {
  font-size:11.5px;
  color:var(--muted);
  line-height:1.4;
}
.upload-site-helper code {
  background:#EDF2F7;
  padding:1px 5px;
  border-radius:4px;
  font-size:11px;
  color:#2D3748;
}
.upload-site-modal-overlay {
  position:fixed;
  inset:0;
  z-index:1200;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:18px;
  background:rgba(26,32,44,.34);
}
.upload-site-modal-overlay[hidden] {
  display:none;
}
.upload-site-modal {
  width:min(360px,100%);
  background:var(--card);
  border:1px solid var(--border);
  border-radius:12px;
  box-shadow:0 18px 45px rgba(26,32,44,.2);
  padding:18px;
}
.upload-site-modal-title {
  font-size:15px;
  font-weight:700;
  color:var(--dark);
  margin-bottom:12px;
}
.upload-site-modal .upload-site-input {
  width:100%;
}
.upload-site-modal-actions {
  display:flex;
  justify-content:flex-end;
  gap:8px;
  margin-top:14px;
}

/* ─── MANUAL UPLOAD: BACKEND BANNER, QUEUE STATES, RESULT CARD ── */
.upload-backend-banner {
  display:flex;
  align-items:flex-start;
  gap:10px;
  padding:10px 14px;
  margin-bottom:14px;
  border:1px solid #FEB2B2;
  background:#FFF5F5;
  border-radius:10px;
  color:#742A2A;
}
.upload-backend-banner[hidden] { display:none !important; }
.upload-backend-banner svg { flex-shrink:0; margin-top:2px; }
.upload-backend-banner-title { font-size:13px; font-weight:600; }
.upload-backend-banner-sub { font-size:12px; color:#9B2C2C; line-height:1.4; }
.upload-backend-banner-sub code {
  background:#FED7D7;
  padding:1px 4px;
  border-radius:4px;
  font-size:11.5px;
}

.upload-queue-empty {
  padding:18px 16px;
  text-align:center;
  font-size:12.5px;
  color:var(--muted);
  background:#FAFBFC;
}

.upload-action-bar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-top:14px;
}
.upload-action-bar-info { font-size:12.5px; color:var(--muted); line-height:1.45; flex:1; min-width:0; }
.upload-action-btns { display:flex; gap:8px; flex-shrink:0; }

.upload-result-card {
  margin-top:14px;
  padding:12px 14px;
  border-radius:10px;
  border:1px solid var(--border);
  background:#F7FAFC;
}
.upload-result-card[hidden] { display:none !important; }
.upload-result-card.upload-result-success {
  border-color:#9AE6B4;
  background:#F0FFF4;
}
.upload-result-card.upload-result-error {
  border-color:#FEB2B2;
  background:#FFF5F5;
}
.upload-result-message { font-size:13px; font-weight:600; color:var(--text); margin-bottom:4px; }
.upload-result-card.upload-result-success .upload-result-message { color:#22543D; }
.upload-result-card.upload-result-error   .upload-result-message { color:#742A2A; }
.upload-result-details { font-size:12px; color:var(--muted); line-height:1.5; }

/* ─── DRIVE SYNC TAB POLISH ─────────────────────────── */
.drive-summary-strip .upload-summary-val {
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.drive-sync-banner-copy {
  flex:1;
  min-width:0;
}

.drive-control-grid {
  display:grid;
  grid-template-columns:minmax(0,1.15fr) minmax(260px,.85fr);
  gap:16px;
  margin-bottom:16px;
}

.drive-top-controls {
  display:grid;
  grid-template-columns:minmax(280px,1fr) minmax(170px,220px) minmax(220px,max-content);
  gap:16px;
  align-items:start;
}

.drive-field-group {
  min-width:0;
}

.drive-folder-group {
  padding-right:2px;
}

.drive-control-utilities {
  display:flex;
  align-items:center;
  gap:8px;
  margin-top:8px;
  flex-wrap:wrap;
}

.drive-input {
  width:100%;
  min-height:40px;
  border:1.5px solid var(--border);
  border-radius:10px;
  padding:10px 12px;
  font-size:13.5px;
  font-family:'Inter',sans-serif;
  color:var(--text);
  background:var(--card);
  outline:none;
}

.drive-input:focus {
  border-color:#90CDF4;
  box-shadow:0 0 0 3px rgba(49,130,206,.12);
}

.drive-input:disabled {
  background:#F7FAFC;
  color:#A0AEC0;
  cursor:not-allowed;
}

.drive-helper-text {
  margin-top:7px;
  font-size:12px;
  color:var(--muted);
  line-height:1.45;
}

.drive-warning-text {
  margin-top:6px;
  font-size:11.5px;
  color:#744210;
  line-height:1.45;
}

.drive-manual-folder-box {
  margin-top:12px;
  padding-top:12px;
  border-top:1px solid var(--border);
  display:flex;
  flex-direction:column;
  gap:8px;
}

.drive-field-heading {
  font-size:12px;
  font-weight:600;
  color:var(--text);
}

.drive-manual-input-row {
  display:flex;
  gap:8px;
  align-items:center;
}

.drive-manual-popover {
  margin-top:8px;
}

.drive-manual-popover summary {
  list-style:none;
}

.drive-manual-popover summary::-webkit-details-marker {
  display:none;
}

.drive-help-summary {
  display:inline-flex;
  align-items:center;
  cursor:pointer;
}

.drive-help-summary .help-icon {
  margin-left:0;
  cursor:pointer;
}

.drive-manual-link {
  display:inline-flex;
  align-items:center;
  color:var(--blue);
  font-size:12px;
  font-weight:500;
  cursor:pointer;
  transition:color .15s,text-decoration-color .15s;
}

.drive-manual-link:hover,
.drive-manual-popover[open] .drive-manual-link {
  text-decoration:underline;
}

.drive-manual-popover-card {
  position:static;
  width:100%;
  margin-top:8px;
  padding:0;
  border:none;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}

.drive-field-label-row {
  display:flex;
  align-items:center;
  gap:8px;
  margin-bottom:4px;
}

.drive-field-label-row .field-label {
  margin-bottom:0;
}

.drive-folder-refresh-btn[hidden] {
  display:none !important;
}

.drive-folder-refresh-btn {
  flex-shrink:0;
}

.drive-sync-button-wrap {
  display:flex;
  align-self:start;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  justify-content:flex-end;
  min-width:220px;
  padding-top:24px;
}

.drive-sync-quick-btn {
  flex:0 0 auto;
  min-width:118px;
  width:auto;
  justify-content:center;
  align-items:center;
  min-height:40px;
  padding:0 14px;
  white-space:nowrap;
}

.drive-sync-quick-btn[hidden],
.upload-action-bar .upload-action-btns .btn[hidden],
.upload-action-bar .upload-action-btns .btn-sm[hidden] {
  display:none !important;
}

.drive-sync-quick-btn.btn-outline,
.drive-sync-quick-btn#drive-sync-quick-stop-btn {
  flex:0 0 auto;
  min-width:84px;
  padding:0 14px;
}

/* Bottom action bar matches the new top row — same gap, no wrap before
   needed, equal min-heights. Existing .upload-action-btns already exists. */
.upload-action-bar .upload-action-btns {
  gap:8px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.upload-action-bar .upload-action-btns .btn,
.upload-action-bar .upload-action-btns .btn-sm {
  white-space:nowrap;
  min-height:36px;
}
#drive-sync-stop-btn,
#drive-sync-clear-btn,
#upload-stop-btn {
  /* Keep Stop visually like a secondary action even when its sibling is the
     primary blue Sync/Queue button. */
  min-width:72px;
}

.drive-site-create-row {
  display:flex;
  gap:8px;
  align-items:center;
  margin-top:12px;
}

.drive-site-create-row[hidden] {
  display:none;
}

.drive-site-create-row .drive-input {
  flex:1;
}

.drive-limit-field {
  margin-top:14px;
}

.drive-sync-actions {
  margin-top:14px;
}

.btn-sync-icon {
  display:inline-flex;
  align-items:center;
  margin-right:6px;
}

.drive-card-header {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:14px;
}

.drive-card-header .card-title {
  margin-bottom:0;
}

.drive-card-meta {
  font-size:12px;
  color:var(--muted);
  font-weight:500;
  white-space:nowrap;
}

.drive-queue-list {
  background:var(--card);
}

.drive-queue-file-icon {
  background:#EBF8FF;
}

.drive-queue-prog-wrap {
  min-width:100px;
}

.drive-queue-prog-fill {
  background:#CBD5E0;
}

.drive-queue-prog-fill.failed {
  background:#E53E3E;
}

.drive-queue-last-sync {
  display:flex;
  flex-direction:column;
  gap:3px;
  padding:12px 2px 0;
}

.drive-last-sync-title {
  font-size:11px;
  font-weight:600;
  color:var(--muted);
  letter-spacing:.32px;
  text-transform:uppercase;
}

.drive-last-sync-meta {
  font-size:12px;
  color:var(--muted);
  line-height:1.45;
}

.drive-queue-action-bar {
  margin-top:12px;
}

.drive-queue-action-bar .upload-action-bar-info {
  line-height:1.45;
}

.drive-sync-status-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}

.drive-source-grid {
  margin-top:14px;
}

.drive-source-row-wrap {
  align-items:flex-start;
}

.drive-source-row-wrap .drive-source-value {
  max-width:220px;
  word-break:break-word;
}

.drive-sync-result-card {
  margin-top:16px;
  padding:14px 16px;
  border:1px solid var(--border);
  border-radius:12px;
  background:#F7FAFC;
}

.drive-info-list {
  display:flex;
  flex-direction:column;
  gap:9px;
  font-size:13px;
}

.drive-info-row {
  display:flex;
  justify-content:space-between;
  gap:12px;
}

.drive-info-row span {
  color:var(--muted);
}

.drive-info-row strong {
  font-size:12.5px;
  font-weight:600;
  color:var(--text);
  text-align:right;
}

.drive-note-card {
  background:#FFFBEB;
  border:1.5px solid #F6E05E;
  border-radius:12px;
  padding:13px 15px;
}

.drive-note-title {
  display:flex;
  align-items:center;
  gap:7px;
  font-size:13px;
  font-weight:600;
  color:#744210;
  margin-bottom:4px;
}

.drive-note-text {
  font-size:12px;
  color:#7B341E;
  line-height:1.5;
}

.drive-hidden-select-wrap {
  display:none;
}

.drive-loc-select-card.disabled {
  cursor:not-allowed;
  opacity:.72;
}

#upload-drive .drive-loc-select-card.disabled:not(.selected):hover {
  border-color:var(--border);
  background:var(--card);
  box-shadow:none;
}

#upload-drive .drive-main-column > .card:first-child .card-title {
  margin-bottom:14px;
}

#upload-drive .drive-main-column > .card:first-child .drive-sync-banner {
  margin-top:12px;
  margin-bottom:0;
  padding:10px 12px;
}

#upload-drive .drive-main-column > .card:first-child .drive-sync-banner.connected {
  display:none;
}

#upload-drive .drive-main-column > .card:first-child .drive-sync-banner-icon {
  width:28px;
  height:28px;
}

#upload-drive .drive-main-column > .card:first-child .drive-sync-banner-title {
  font-size:12.5px;
}

#upload-drive .drive-main-column > .card:first-child .drive-sync-banner-sub {
  margin-top:1px;
  font-size:11px;
  line-height:1.35;
}

#upload-drive .drive-main-column > .card:first-child .drive-control-grid {
  grid-template-columns:minmax(0,.96fr) minmax(300px,1.04fr);
  gap:14px;
  margin-bottom:0;
}

#upload-drive .drive-main-column > .card:first-child .drive-top-controls {
  grid-template-columns:minmax(280px,1fr) minmax(170px,220px) minmax(220px,max-content);
  gap:14px;
}

#upload-drive .drive-main-column > .card:first-child .drive-folder-group {
  padding-right:0;
}

#upload-drive .drive-main-column > .card:first-child .drive-input {
  min-height:40px;
  padding:0 11px;
}

#upload-drive .drive-main-column > .card:first-child .drive-sync-quick-btn {
  min-height:40px;
}

#upload-drive .drive-main-column > .card:first-child .field-label {
  margin-bottom:4px;
}

#upload-drive .drive-main-column > .card:first-child .drive-helper-text {
  margin-top:5px;
  font-size:11px;
  line-height:1.35;
}

#upload-drive .drive-main-column > .card:first-child .drive-warning-text {
  margin-top:4px;
  font-size:11px;
  line-height:1.35;
}

#upload-drive .drive-main-column > .card:first-child .drive-manual-input-row {
  gap:6px;
  align-items:stretch;
}

#upload-drive .drive-main-column > .card:first-child .drive-manual-popover-card {
  margin-top:8px;
}

#upload-drive .drive-main-column > .card:first-child .drive-site-create-row {
  align-items:stretch;
}

#upload-drive .drive-main-column > .card:first-child .drive-limit-field {
  margin-top:10px;
}

#upload-drive .drive-selection-card-compact {
  margin-top:16px;
  padding:14px 16px;
}

#upload-drive .drive-sync-actions-compact {
  margin-top:16px;
  padding-top:14px;
  border-top:1px solid var(--border);
  justify-content:flex-end;
}

@media (max-width: 1100px) {
  .upload-workspace-grid,
  .drive-upload-grid {
    grid-template-columns:1fr;
  }

  .upload-side-column,
  .drive-side-column {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .upload-note-card,
  .drive-note-card {
    grid-column:1 / -1;
  }
}

@media (max-width: 760px) {
  .upload-summary-strip {
    grid-template-columns:repeat(2,1fr);
  }

  .drive-control-grid,
  .drive-top-controls,
  .drive-side-column {
    grid-template-columns:1fr;
  }

  .upload-card-head,
  #upload-drive .drive-main-column > .card:first-child .drive-control-grid,
  #upload-drive .drive-main-column > .card:first-child .drive-top-controls {
    grid-template-columns:1fr;
  }

  .drive-sync-button-wrap {
    justify-content:flex-start;
    padding-top:0;
  }

  .upload-queue-item {
    grid-template-columns:36px 1fr;
    align-items:start;
  }

  .queue-site-edit,
  .queue-size-text,
  .queue-prog-wrap,
  .queue-batch-actions {
    grid-column:2;
    align-items:stretch;
  }

  .queue-batch-actions {
    align-items:flex-start;
  }

  .upload-side-column,
  .drive-side-column {
    grid-template-columns:1fr;
  }

  .upload-card-head,
  .drive-manual-input-row,
  .drive-selection-card,
  .drive-sync-actions,
  .drive-field-label-row,
  .drive-site-create-row,
  .drive-card-header,
  .drive-sync-status-head {
    align-items:stretch;
    flex-direction:column;
  }

  .drive-manual-popover-card {
    margin-top:8px;
  }

  .upload-card-meta,
  .drive-card-meta {
    white-space:normal;
  }

  .upload-session-info-row,
  .upload-summary-row,
  .drive-source-row {
    align-items:flex-start;
    flex-direction:column;
    gap:4px;
  }

  .upload-session-info-row strong,
  .upload-summary-row strong,
  .drive-source-value,
  .drive-source-row-wrap .drive-source-value {
    max-width:100%;
    text-align:left;
  }
}

@media (max-width: 520px) {
  .upload-summary-strip {
    grid-template-columns:1fr;
  }

  .location-select-grid {
    grid-template-columns:1fr;
  }
}

/* ─── SHARED UPLOAD PROGRESS CARD ────────────────────────
   Used by BOTH the Manual Upload side panel and the Drive sync side panel
   so the two upload modes feel like one component with different sources. */
.upload-progress-card { display:flex; flex-direction:column; gap:14px; }
.upload-progress-head {
  display:flex; align-items:center; justify-content:space-between; gap:10px;
}
.upload-progress-title {
  font-size:13px; font-weight:700; color:var(--dark); letter-spacing:.2px;
}
.upload-progress-status-pill {
  font-size:11px; font-weight:700; padding:3px 9px; border-radius:999px;
  background:#EDF2F7; color:var(--muted); text-transform:uppercase; letter-spacing:.4px;
}
.upload-progress-status-pill.idle    { background:#EDF2F7; color:#4A5568; }
.upload-progress-status-pill.active  { background:#FEFCBF; color:#744210; }
.upload-progress-status-pill.done    { background:#C6F6D5; color:#22543D; }
.upload-progress-status-pill.failed  { background:#FED7D7; color:#822727; }

/* Camera-site pill, shared by Manual + Drive so both modes show the same chip. */
.camera-site-pill {
  display:inline-flex; align-items:center; gap:6px;
  padding:4px 10px; border-radius:999px;
  background:#EBF8FF; color:#1A4E8A;
  border:1px solid #BEE3F8;
  font-size:12px; font-weight:600; line-height:1; white-space:nowrap;
}
.camera-site-pill::before {
  content:""; width:6px; height:6px; border-radius:50%;
  background:#3182CE; box-shadow:0 0 0 3px rgba(49,130,206,.18);
  flex-shrink:0;
}
.camera-site-pill.muted {
  background:#F7FAFC; color:var(--muted); border-color:var(--border);
}
.camera-site-pill.muted::before { background:#A0AEC0; box-shadow:none; }

.upload-progress-source {
  display:flex; align-items:center; justify-content:space-between;
  gap:10px; padding:10px 12px;
  border:1px solid var(--border); border-radius:10px; background:#FAFBFC;
}
.upload-progress-source-name {
  font-size:13px; font-weight:600; color:var(--text);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.upload-progress-source-sub {
  font-size:11.5px; color:var(--muted); margin-top:2px;
}

.upload-progress-bar-wrap { display:flex; flex-direction:column; gap:6px; }
.upload-progress-bar-track {
  position:relative; height:8px; background:#E2E8F0;
  border-radius:999px; overflow:hidden;
}
.upload-progress-bar-fill {
  position:absolute; inset:0 auto 0 0; width:0%;
  background:var(--blue); border-radius:999px;
  transition:width .5s cubic-bezier(.4,0,.2,1);
}
.upload-progress-bar-fill.active {
  background:linear-gradient(90deg,#0064A4 0%,#3182CE 100%);
  position:relative;
}
.upload-progress-bar-fill.active::after {
  content:""; position:absolute; inset:0;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);
  animation:shimmer 1.6s ease-in-out infinite;
}
.upload-progress-bar-fill.done   { background:#48BB78; }
.upload-progress-bar-fill.failed { background:#E53E3E; }

.upload-progress-bar-meta {
  display:flex; align-items:center; justify-content:space-between;
  font-size:11.5px; color:var(--muted);
}
.upload-progress-bar-meta strong { color:var(--text); font-weight:700; }

.upload-progress-stats {
  display:grid; grid-template-columns:repeat(2,1fr); gap:8px 14px;
  padding:10px 0 0; border-top:1px solid var(--border);
}
#upload-progress-card .upload-progress-stats {
  grid-template-columns:repeat(3,1fr);
}
.upload-progress-stat-lbl {
  font-size:10.5px; font-weight:600; color:var(--muted);
  text-transform:uppercase; letter-spacing:.35px;
}
.upload-progress-stat-val {
  font-size:13px; font-weight:600; color:var(--text); margin-top:2px;
  word-break:break-word;
}
.upload-progress-current {
  font-size:11.5px; color:var(--muted); margin-top:4px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.upload-progress-current strong { color:var(--text); font-weight:600; }
