
:root{
  --bg:#0f1115;
  --card:#171b22;
  --text:#e8edf6;
  --muted:#aeb7c7;
  --border:rgba(255,255,255,0.08);
  --shadow:0 10px 28px rgba(0,0,0,0.45);
  --primary:#4f7cff;
  --primary2:#6ea0ff;
  --accent:#00e5ff;
  --warn:#ffd740;
  --good:#4ade80;
  --radius:14px;
}

*{ box-sizing:border-box; }
body{
  margin:0;
  font-family:system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  background:radial-gradient(1200px 700px at 20% 0%, #141a28 0%, var(--bg) 55%);
  color:var(--text);
}
.app{ max-width:1280px; margin:0 auto; padding:16px; }

.topbar{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  padding:14px;
  background:linear-gradient(180deg, rgba(255,255,255,0.06), rgba(255,255,255,0.03));
  border:1px solid var(--border);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
}

.brand{ display:flex; gap:12px; align-items:center; }
.logo{
  width:44px; height:44px; border-radius:12px;
  display:grid; place-items:center;
  background:linear-gradient(135deg, rgba(79,124,255,0.9), rgba(0,229,255,0.55));
  font-weight:800;
}
.btxt .title{ font-weight:800; font-size:18px; line-height:1.1; }
.btxt .subtitle{ color:var(--muted); font-size:12px; margin-top:2px; }

.actions{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; justify-content:flex-end; }

.btn{
  border:1px solid var(--border);
  background:rgba(255,255,255,0.05);
  color:var(--text);
  padding:9px 12px;
  border-radius:12px;
  cursor:pointer;
  transition:transform .12s ease, background .12s ease, box-shadow .12s ease;
}
.btn:hover{ transform:translateY(-1px); background:rgba(255,255,255,0.08); box-shadow:0 8px 18px rgba(0,0,0,0.35); }
.btn:disabled{ opacity:0.45; cursor:not-allowed; transform:none; box-shadow:none; }
.btn.primary{
  background:linear-gradient(135deg, var(--primary), var(--primary2));
  border:1px solid rgba(255,255,255,0.14);
}

.fileBtn{
  position:relative;
  overflow:hidden;
  border-radius:12px;
  border:1px solid var(--border);
  background:rgba(255,255,255,0.05);
}
.fileBtn > span{ display:inline-block; padding:9px 12px; cursor:pointer; }
.fileBtn input{ position:absolute; inset:0; opacity:0; cursor:pointer; }

.toggle{
  display:flex; gap:8px; align-items:center;
  border:1px solid var(--border);
  background:rgba(255,255,255,0.05);
  padding:7px 10px;
  border-radius:12px;
  color:var(--muted);
  font-size:13px;
}

.workspace{
  display:grid;
  grid-template-columns: 1.9fr 1fr;
  gap:16px;
  margin-top:16px;
}

.canvasCard, .panel{
  background:linear-gradient(180deg, rgba(255,255,255,0.05), rgba(255,255,255,0.03));
  border:1px solid var(--border);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
}

.canvasCard{ padding:12px; min-height:560px; }
.canvasToolbar{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:10px; }
.pill{
  padding:6px 10px;
  border-radius:999px;
  border:1px solid var(--border);
  background:rgba(0,0,0,0.18);
  font-size:12px;
}
.pill.subtle{ color:var(--muted); }

.canvasWrap{
  position:relative;
  width:100%;
  aspect-ratio: 16 / 10;
  background:rgba(0,0,0,0.2);
  border:1px solid rgba(255,255,255,0.06);
  border-radius:12px;
  overflow:hidden;
}

canvas{ position:absolute; inset:0; width:100%; height:100%; }
.hint{ margin-top:10px; font-size:12px; color:var(--muted); }

.panel{ padding:14px; }
.panelHeader{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; }
.panelTitle{ font-weight:800; }
.panelMeta{ color:var(--muted); font-size:12px; }

.progress{
  margin-top:10px;
  height:10px;
  border-radius:999px;
  background:rgba(0,0,0,0.28);
  border:1px solid rgba(255,255,255,0.06);
  overflow:hidden;
}
.progress .bar{
  height:100%;
  background:linear-gradient(90deg, var(--accent), var(--primary));
  width:0%;
}

.instruction{
  margin-top:12px;
  padding:12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,0.08);
  background:rgba(0,0,0,0.18);
  min-height:96px;
  line-height:1.35;
}

.stepList{ margin-top:12px; display:flex; flex-direction:column; gap:8px; max-height:340px; overflow:auto; padding-right:4px; }
.stepItem{
  padding:10px 10px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,0.08);
  background:rgba(0,0,0,0.14);
  cursor:pointer;
  transition:background .12s ease, transform .12s ease;
}
.stepItem:hover{ background:rgba(0,0,0,0.22); transform:translateY(-1px); }
.stepItem.active{ border-color: rgba(0,229,255,0.45); background:rgba(0,229,255,0.08); }
.stepItem .k{ color:var(--muted); font-size:12px; }
.stepItem .t{ margin-top:3px; font-size:13px; }

.smallNote{ margin-top:12px; color:var(--muted); }
.smallText{ margin-top:8px; font-size:12px; line-height:1.35; color:var(--muted); }

@media (max-width: 980px){
  .workspace{ grid-template-columns:1fr; }
  .canvasCard{ min-height:460px; }
}
