/* ===================================================================
   cloud-upload.css — 专业上传页样式（深色钢铁风）
   =================================================================== */

/* ---------- 顶栏 ---------- */
.cu-header{
  display:flex;align-items:center;gap:24px;
  padding:0 32px;height:60px;
  background:linear-gradient(180deg,#111820 0%,#0a0f14 100%);
  border-bottom:2px solid #2a3540;
  position:sticky;top:0;z-index:100;
  box-shadow:0 2px 20px rgba(0,0,0,.6);
}
.cu-brand{display:flex;align-items:center;gap:12px}
.cu-logo{
  width:36px;height:36px;border-radius:8px;
  background:linear-gradient(135deg,#d4a843,#8b6914);
  display:flex;align-items:center;justify-content:center;
  font-size:20px;color:#0a0f14;font-weight:bold;
  box-shadow:0 0 12px rgba(212,168,67,.4);
}
.cu-title{font-size:16px;font-weight:bold;color:#e8e8e8;letter-spacing:2px}
.cu-sub{font-size:11px;color:#6a7a8a;letter-spacing:1px}
.cu-nav{display:flex;gap:6px;margin-left:auto}
.cu-nav-link{
  padding:8px 18px;border-radius:4px;
  color:#8a9aa8;font-size:13px;font-weight:500;
  border:1px solid transparent;transition:.15s;
}
.cu-nav-link:hover{color:#f0c060;border-color:#3a4a5a}
.cu-nav-active{color:#f0c060;background:rgba(240,192,96,.08);border-color:#3a4a5a!important}
.cu-acct{
  padding:6px 14px;border-radius:4px;
  background:#0d151c;border:1px solid #2a3540;
  font-size:12px;color:#6a7a8a;
}
.cu-acct-logged{color:#f0c060;border-color:#f0c060}

/* ---------- 主体布局 ---------- */
.cu-main{
  display:grid;
  grid-template-columns:minmax(360px,420px) 1fr;
  gap:24px;padding:24px 32px;
  max-width:1440px;margin:0 auto;min-height:calc(100vh - 116px);
}

/* ---------- 拖拽区 ---------- */
.cu-dropzone{
  position:relative;
  border:2px dashed #3a4a5a;border-radius:12px;
  background:linear-gradient(135deg,#0d151c,#0a0f14);
  padding:40px 24px;min-height:320px;
  display:flex;align-items:center;justify-content:center;
  transition:.2s;
}
.cu-dropzone:hover{border-color:#4a5a6a}
.cu-dropzone.dragover{
  border-color:#f0c060;background:rgba(240,192,96,.05);
  transform:scale(1.01);
}
.cu-drop-inner{text-align:center;position:relative;z-index:1}
.cu-drop-icon{font-size:64px;margin-bottom:16px;filter:drop-shadow(0 4px 8px rgba(0,0,0,.4))}
.cu-drop-title{font-size:20px;font-weight:bold;color:#e8e8e8;margin-bottom:8px;letter-spacing:2px}
.cu-drop-sub{font-size:13px;color:#8a9aa8;margin-bottom:14px}
.cu-drop-hint{font-size:12px;color:#5a6a7a;line-height:1.8;margin-bottom:20px}
.cu-drop-hint b{color:#8a9aa8;font-weight:500}
.cu-pick-btn{font-size:14px;padding:10px 28px}
.cu-drop-overlay{
  position:absolute;inset:0;border-radius:10px;
  background:rgba(240,192,96,.12);
  border:2px solid #f0c060;
  display:none;align-items:center;justify-content:center;
  z-index:2;
}
.cu-dropzone.dragover .cu-drop-overlay{display:flex;animation:cu-pulse 1s ease-in-out infinite}
.cu-drop-over-text{text-align:center;color:#f0c060;font-weight:bold}
.cu-drop-over-icon{font-size:40px;margin-bottom:8px;animation:cu-bounce .8s ease-in-out infinite}
@keyframes cu-pulse{0%,100%{opacity:.6}50%{opacity:1}}
@keyframes cu-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(8px)}}

/* ---------- 按钮 ---------- */
.cu-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:8px 16px;border-radius:6px;border:1px solid transparent;
  font-size:13px;font-weight:500;cursor:pointer;
  transition:.15s;user-select:none;background:transparent;
}
.cu-btn:active{transform:scale(.97)}
.cu-btn-primary{
  background:linear-gradient(135deg,#d4a843,#8b6914);
  color:#0a0f14;border:none;
  box-shadow:0 2px 8px rgba(212,168,67,.3);
}
.cu-btn-primary:hover{filter:brightness(1.1);box-shadow:0 2px 14px rgba(212,168,67,.5)}
.cu-btn-ghost{background:transparent;border-color:#3a4a5a;color:#8a9aa8}
.cu-btn-ghost:hover{border-color:#f0c060;color:#f0c060}
.cu-btn-danger{background:#5a2828;border-color:#8a3838;color:#e8a8a8}
.cu-btn-danger:hover{background:#8a3838;color:#fff}
.cu-btn-lg{padding:12px 24px;font-size:14px;font-weight:600}
.cu-btn-sm{padding:4px 10px;font-size:12px}
.cu-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}

/* ---------- 文件队列 ---------- */
.cu-queue-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 16px;margin-top:20px;
  background:#0d151c;border:1px solid #2a3540;border-radius:8px;
}
.cu-queue-title{font-size:13px;color:#c8d0d8;font-weight:500}
.cu-queue-title em{
  font-style:normal;color:#f0c060;font-weight:bold;
  margin-left:6px;font-size:12px;
  background:rgba(240,192,96,.12);
  padding:2px 8px;border-radius:10px;
}
.cu-queue-actions{display:flex;gap:6px}

.cu-queue{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.cu-queue-item{
  padding:14px 16px;border-radius:8px;
  background:#0d151c;border:1px solid #2a3540;
  cursor:pointer;transition:.15s;position:relative;
}
.cu-queue-item:hover{border-color:#3a4a5a}
.cu-queue-item.selected{border-color:#f0c060;background:rgba(240,192,96,.04);box-shadow:0 0 0 1px rgba(240,192,96,.2)}
.cu-queue-item.error{border-color:#8a3838}
.cu-queue-item.done{border-color:#3a6a4a}

.cu-qi-top{display:flex;align-items:center;gap:12px}
.cu-qi-icon{
  width:40px;height:40px;border-radius:6px;
  background:#111820;border:1px solid #2a3540;
  display:flex;align-items:center;justify-content:center;
  font-size:18px;color:#8a9aa8;flex-shrink:0;
}
.cu-queue-item.done .cu-qi-icon{background:#1a3a2a;border-color:#3a6a4a;color:#6ad88a}
.cu-queue-item.error .cu-qi-icon{background:#3a1a1a;border-color:#8a3838;color:#e87878}
.cu-queue-item.uploading .cu-qi-icon{color:#f0c060;animation:cu-spin 1.5s linear infinite}
@keyframes cu-spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}

.cu-qi-info{flex:1;min-width:0}
.cu-qi-name{
  font-size:14px;color:#e8e8e8;font-weight:500;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.cu-qi-meta{font-size:11px;color:#6a7a8a;margin-top:2px}
.cu-qi-status{font-size:11px;color:#6a7a8a;margin-left:6px}
.cu-queue-item.done .cu-qi-status{color:#6ad88a}
.cu-queue-item.error .cu-qi-status{color:#e87878}

.cu-qi-actions{display:flex;gap:4px;flex-shrink:0}

.cu-qi-progress{
  height:3px;background:#111820;border-radius:2px;margin-top:8px;
  overflow:hidden;display:none;
}
.cu-queue-item.uploading .cu-qi-progress{display:block}
.cu-qi-progress-fill{
  height:100%;background:linear-gradient(90deg,#d4a843,#f0c060);
  width:0%;transition:width .2s;border-radius:2px;
}
.cu-queue-item.error .cu-qi-progress-fill{background:#8a3838}
.cu-queue-item.done .cu-qi-progress-fill{background:#3a6a4a}

/* ---------- 右侧预览 ---------- */
.cu-right{
  background:#0d151c;border:1px solid #2a3540;border-radius:12px;
  padding:28px;min-height:480px;
}
.cu-preview-empty{
  text-align:center;padding:80px 20px;color:#4a5a6a;
}
.cu-empty-icon{font-size:56px;margin-bottom:16px;opacity:.4}
.cu-empty-title{font-size:15px;color:#6a7a8a;margin-bottom:6px}
.cu-empty-sub{font-size:12px;color:#4a5a6a}

.cu-preview-wrap{display:flex;flex-direction:column;gap:24px}

/* 地图 canvas 预览 */
.cu-preview-map{position:relative;flex-shrink:0}
.cu-preview-map canvas{
  width:100%;max-width:400px;aspect-ratio:1/1;
  border:1px solid #2a3540;border-radius:8px;
  background:#0a0f14;display:block;margin:0 auto;
  image-rendering:pixelated;
}
.cu-map-info{
  text-align:center;margin-top:10px;font-size:12px;color:#6a7a8a;
}
.cu-map-info b{color:#8a9aa8}

/* 元数据 */
.cu-meta{display:flex;flex-direction:column;gap:16px}
.cu-meta-row{display:flex;flex-direction:column;gap:6px}
.cu-meta-row label{font-size:12px;color:#8a9aa8;letter-spacing:1px}
.cu-meta-row input[type="text"],
.cu-meta-row select,
.cu-meta-row textarea{
  background:#0a0f14;border:1px solid #2a3540;border-radius:6px;
  padding:10px 14px;color:#e8e8e8;font-size:13px;
  font-family:inherit;transition:.15s;width:100%;
}
.cu-meta-row input[type="text"]:focus,
.cu-meta-row select:focus,
.cu-meta-row textarea:focus{
  outline:none;border-color:#f0c060;box-shadow:0 0 0 2px rgba(240,192,96,.15);
}
.cu-meta-row input[type="text"]:disabled{
  opacity:.5;cursor:not-allowed;background:#0a0f14;
}
.cu-meta-row textarea{resize:vertical;min-height:80px}
.cu-meta-cols{flex-direction:row;gap:12px}
.cu-meta-cols>div{flex:1;display:flex;flex-direction:column;gap:6px}
.cu-meta-counter{font-size:11px;color:#4a5a6a;text-align:right;margin-top:4px}
.cu-tag-picker{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.cu-tag{position:relative}
.cu-tag input{display:none}
.cu-tag span{
  display:inline-block;padding:5px 12px;border-radius:14px;
  background:#0a0f14;border:1px solid #2a3540;
  font-size:11px;color:#6a7a8a;cursor:pointer;transition:.15s;
}
.cu-tag span:hover{border-color:#3a4a5a;color:#8a9aa8}
.cu-tag input:checked+span{
  background:rgba(240,192,96,.1);border-color:#f0c060;color:#f0c060;
}

/* 上传进度条 */
.cu-upload-bar{margin-top:auto}
.cu-upload-progress{margin-bottom:14px}
.cu-progress-bar{
  height:6px;background:#111820;border-radius:3px;overflow:hidden;
}
.cu-progress-fill{
  height:100%;background:linear-gradient(90deg,#d4a843,#f0c060);
  width:0%;transition:width .15s;border-radius:3px;
}
.cu-progress-text{font-size:12px;color:#8a9aa8;margin-top:6px}
.cu-upload-actions{display:flex;gap:10px;justify-content:flex-end}

/* ---------- 页脚 ---------- */
.cu-footer{
  display:flex;justify-content:space-between;align-items:center;
  padding:12px 32px;font-size:11px;color:#4a5a6a;
  border-top:1px solid #2a3540;background:#0a0f14;
}
.cu-footer-right{color:#f0c060}
.cu-footer-right.err{color:#e87878}
.cu-footer-right.ok{color:#6ad88a}

/* ---------- 响应式 ---------- */
@media (max-width:900px){
  .cu-main{grid-template-columns:1fr;padding:16px}
  .cu-header{padding:0 16px;gap:12px}
  .cu-nav{display:none}
  .cu-preview-wrap{flex-direction:column}
  .cu-meta-cols{flex-direction:column}
}
@media (max-width:480px){
  .cu-header{height:52px}
  .cu-title{font-size:13px}
  .cu-sub{display:none}
  .cu-dropzone{padding:24px 16px;min-height:260px}
  .cu-drop-icon{font-size:48px}
  .cu-drop-title{font-size:16px}
  .cu-right{padding:16px}
  .cu-upload-actions{flex-direction:column}
  .cu-upload-actions .cu-btn{width:100%}
}

/* ---------- Toast ---------- */
.cu-toast{
  position:fixed;top:72px;right:24px;z-index:9999;
  padding:12px 20px;border-radius:8px;
  background:#111820;border:1px solid #2a3540;
  color:#e8e8e8;font-size:13px;
  box-shadow:0 8px 24px rgba(0,0,0,.5);
  animation:cu-toast-in .25s ease-out;
  max-width:320px;
}
.cu-toast.err{border-color:#8a3838;background:#2a1515}
.cu-toast.ok{border-color:#3a6a4a;background:#152a1e}
.cu-toast.warn{border-color:#8a6818;background:#2a2515}
@keyframes cu-toast-in{
  from{transform:translateX(120%);opacity:0}
  to{transform:translateX(0);opacity:1}
}
@keyframes cu-toast-out{
  from{transform:translateX(0);opacity:1}
  to{transform:translateX(120%);opacity:0}
}
