:root{
  --bg: #f4f5f8;
  --sidebar-bg: #ffffff;
  --panel-bg: #ffffff;
  --border: #e6e7ec;
  --border-soft: #eef0f4;
  --text: #1b1d24;
  --text-dim: #6b7080;
  --text-faint: #9aa0ae;
  --accent: #6d5bf6;
  --accent-dark: #5643e8;
  --accent-light: #9b8bff;
  --accent-soft: #efecff;
  --accent-soft-2: #f6f4ff;
  --accent-soft-3: #e3ddff;
  --accent-border: #cfc9f5;
  --danger: #e9536b;
  --danger-soft: #fdeef1;
  --danger-border: #f6c9d1;
  --success: #22b573;
  --scrollbar-thumb: #dcdce4;
  --toast-bg: #1b1d24;
  --toast-text: #ffffff;
  --radius: 14px;
  --radius-sm: 10px;
  --shadow-sm: 0 1px 2px rgba(20,20,43,.04);
  --shadow-md: 0 8px 24px rgba(20,20,43,.08);
  --shadow-lg: 0 20px 48px rgba(20,20,43,.14);
}

:root[data-theme="dark"]{
  --bg: #131319;
  --sidebar-bg: #17181f;
  --panel-bg: #1c1e27;
  --border: #2b2d38;
  --border-soft: #23252f;
  --text: #edeef2;
  --text-dim: #a5aabb;
  --text-faint: #6f7486;
  --accent: #8a79ff;
  --accent-dark: #ab9dff;
  --accent-light: #6d5bf6;
  --accent-soft: #29244a;
  --accent-soft-2: #201d38;
  --accent-soft-3: #3a3468;
  --accent-border: #453e78;
  --danger: #f0798c;
  --danger-soft: #3a1f27;
  --danger-border: #5b2b36;
  --success: #34d399;
  --scrollbar-thumb: #363948;
  --shadow-sm: 0 1px 2px rgba(0,0,0,.25);
  --shadow-md: 0 8px 24px rgba(0,0,0,.35);
  --shadow-lg: 0 20px 48px rgba(0,0,0,.5);
}

*{box-sizing:border-box;}
html,body{height:100%;}
html{ color-scheme:light; }
html[data-theme="dark"]{ color-scheme:dark; }
body{
  margin:0;
  font-family:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  background:var(--bg);
  color:var(--text);
  -webkit-font-smoothing:antialiased;
  transition:background .15s, color .15s;
}

.app{
  display:flex;
  height:100vh;
  overflow:hidden;
}

/* ===== Sidebar ===== */
.sidebar{
  width:300px;
  min-width:300px;
  background:var(--sidebar-bg);
  border-right:1px solid var(--border);
  display:flex;
  flex-direction:column;
  padding:20px 16px;
}

.sidebar-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:18px;
  gap:10px;
}

.header-actions{
  display:flex;
  align-items:center;
  gap:8px;
}

.btn-icon-only{
  padding:8px;
  width:34px;
  height:34px;
  justify-content:center;
}

.theme-icon{
  width:17px;
  height:17px;
  flex-shrink:0;
}
.theme-icon.is-hidden{ display:none; }

.brand{
  display:flex;
  align-items:center;
  gap:10px;
  font-weight:700;
  font-size:15.5px;
  letter-spacing:-.2px;
}

.brand-mark{
  width:32px;height:32px;
  border-radius:9px;
  background:linear-gradient(135deg,var(--accent),var(--accent-light));
  color:#fff;
  display:flex;align-items:center;justify-content:center;
  font-weight:800;
  font-size:15px;
  box-shadow:0 4px 10px rgba(109,91,246,.35);
}

.search-wrap{
  position:relative;
  margin-bottom:14px;
}
.search-wrap svg{
  position:absolute;
  left:11px;top:50%;
  transform:translateY(-50%);
  color:var(--text-faint);
}
.search-wrap input{
  width:100%;
  padding:9px 12px 9px 34px;
  border-radius:var(--radius-sm);
  border:1px solid var(--border);
  background:var(--bg);
  font-size:13.5px;
  color:var(--text);
  outline:none;
  transition:border-color .15s, background .15s;
}
.search-wrap input:focus{
  border-color:var(--accent);
  background:var(--panel-bg);
}

.sop-list{
  flex:1;
  overflow-y:auto;
  display:flex;
  flex-direction:column;
  gap:4px;
  margin:0 -6px;
  padding:0 6px;
}

.sop-item{
  display:flex;
  flex-direction:column;
  gap:3px;
  padding:11px 12px;
  border-radius:var(--radius-sm);
  cursor:pointer;
  border:1px solid transparent;
  transition:background .12s, border-color .12s;
  position:relative;
}
.sop-item:hover{ background:var(--bg); }
.sop-item.active{
  background:var(--accent-soft-2);
  border-color:var(--accent-soft);
}
.sop-item-title{
  font-weight:600;
  font-size:13.8px;
  color:var(--text);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.sop-item.active .sop-item-title{ color:var(--accent-dark); }
.sop-item-meta{
  font-size:11.5px;
  color:var(--text-faint);
  display:flex;
  gap:6px;
  align-items:center;
}
.sop-item-meta .dot{ opacity:.5; }

.sop-empty-hint{
  color:var(--text-faint);
  font-size:13px;
  text-align:center;
  padding:30px 10px;
  line-height:1.5;
}

.sidebar-footer{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding-top:12px;
  margin-top:8px;
  border-top:1px solid var(--border-soft);
  font-size:12px;
  color:var(--text-faint);
}

.link-btn{
  background:none;
  border:none;
  color:var(--accent-dark);
  font-size:12px;
  font-weight:600;
  cursor:pointer;
  padding:2px 0;
}
.link-btn:hover{ text-decoration:underline; }

/* ===== Buttons ===== */
.btn{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:8px 14px;
  border-radius:var(--radius-sm);
  border:1px solid var(--border);
  background:var(--panel-bg);
  color:var(--text);
  font-family:inherit;
  font-size:13px;
  font-weight:600;
  cursor:pointer;
  transition:transform .05s ease, background .15s, border-color .15s, box-shadow .15s;
  white-space:nowrap;
}
.btn:hover{ background:var(--bg); }
.btn:active{ transform:scale(.97); }

.btn-primary{
  background:linear-gradient(135deg,var(--accent),var(--accent-dark));
  border-color:transparent;
  color:#fff;
  box-shadow:0 4px 12px rgba(109,91,246,.3);
}
.btn-primary:hover{ filter:brightness(1.05); }

.btn-icon{ padding:8px 14px; }

.btn-ghost{
  background:transparent;
  border-color:var(--border);
  color:var(--text-dim);
}
.btn-ghost:hover{ background:var(--bg); color:var(--text); }

.btn-danger-ghost{
  background:transparent;
  border-color:var(--border);
  color:var(--danger);
}
.btn-danger-ghost:hover{ background:var(--danger-soft); border-color:var(--danger-border); }

/* ===== Main ===== */
.main{
  flex:1;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  position:relative;
}

.empty-state{
  flex:1;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:40px;
  color:var(--text-dim);
}
.empty-illustration{ font-size:52px; margin-bottom:6px; }
.empty-state h1{
  font-size:21px;
  margin:6px 0 4px;
  color:var(--text);
}
.empty-state p{
  max-width:360px;
  font-size:14px;
  line-height:1.55;
  margin:0 0 20px;
}

.editor{
  flex:1;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.editor[hidden], .empty-state[hidden]{ display:none; }

.editor-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 28px;
  border-bottom:1px solid var(--border);
  background:var(--panel-bg);
  gap:12px;
  flex-wrap:wrap;
}
.toolbar-right{ display:flex; gap:8px; flex-wrap:wrap; }

.save-status{
  font-size:12.5px;
  color:var(--text-faint);
  display:inline-flex;
  align-items:center;
  gap:6px;
}
.save-status::before{
  content:"";
  width:7px;height:7px;
  border-radius:50%;
  background:var(--success);
  box-shadow:0 0 0 3px rgba(34,181,115,.15);
}
.save-status.saving::before{ background:#f5a524; box-shadow:0 0 0 3px rgba(245,165,36,.15); }
.save-status.saving{ color:#a97a13; }

.editor-scroll{
  flex:1;
  overflow-y:auto;
  padding:32px 0 80px;
  display:flex;
  justify-content:center;
}

.sop-document{
  width:100%;
  max-width:760px;
  background:var(--panel-bg);
  border:1px solid var(--border);
  border-radius:var(--radius);
  box-shadow:var(--shadow-sm);
  padding:40px 48px;
  margin:0 24px;
}

.doc-meta-row{ margin-bottom:18px; }

.sop-title-input{
  width:100%;
  border:none;
  outline:none;
  font-size:30px;
  font-weight:800;
  letter-spacing:-.5px;
  color:var(--text);
  font-family:inherit;
  padding:2px 0;
  background:transparent;
}
.sop-title-input::placeholder{ color:var(--text-faint); }

.sop-desc-input{
  width:100%;
  border:none;
  outline:none;
  resize:none;
  font-size:14.5px;
  color:var(--text-dim);
  font-family:inherit;
  line-height:1.6;
  padding:4px 0 0;
  background:transparent;
  overflow:hidden;
}
.sop-desc-input::placeholder{ color:var(--text-faint); }

.steps-header{
  margin-top:26px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:14px;
}
.steps-header h2{
  font-size:13px;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.6px;
  color:var(--text-faint);
  margin:0;
}

.steps-list{
  display:flex;
  flex-direction:column;
  gap:14px;
}

.step-card{
  display:flex;
  gap:16px;
  border:1px solid var(--border);
  border-radius:var(--radius-sm);
  padding:16px 16px 16px 0;
  background:var(--panel-bg);
  transition:border-color .15s, box-shadow .15s, background .15s;
}
.step-card:hover{ border-color:var(--accent-border); box-shadow:var(--shadow-sm); }

.step-number{
  flex-shrink:0;
  width:34px;
  height:34px;
  margin-left:16px;
  border-radius:9px;
  background:linear-gradient(135deg,var(--accent-soft),var(--accent-soft-3));
  color:var(--accent-dark);
  font-weight:800;
  font-size:14px;
  display:flex;
  align-items:center;
  justify-content:center;
}

.step-body{
  flex:1;
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:6px;
}

.step-title-input{
  width:100%;
  border:none;
  outline:none;
  background:transparent;
  font-family:inherit;
  font-size:15px;
  font-weight:700;
  color:var(--text);
  padding:2px 0;
}
.step-title-input::placeholder{ color:var(--text-faint); font-weight:600; }

.step-detail-input{
  width:100%;
  border:none;
  outline:none;
  resize:none;
  background:transparent;
  font-family:inherit;
  font-size:13.5px;
  line-height:1.55;
  color:var(--text-dim);
  padding:0;
  overflow:hidden;
}
.step-detail-input::placeholder{ color:var(--text-faint); }

.step-actions{
  display:flex;
  flex-direction:column;
  gap:4px;
  flex-shrink:0;
  padding-right:4px;
}

.icon-btn{
  width:28px;height:28px;
  border:none;
  background:transparent;
  color:var(--text-faint);
  border-radius:7px;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
  transition:background .15s,color .15s;
}
.icon-btn:hover{ background:var(--bg); color:var(--text); }
.icon-btn.danger:hover{ background:var(--danger-soft); color:var(--danger); }
.icon-btn:disabled{ opacity:.3; cursor:not-allowed; }
.icon-btn:disabled:hover{ background:transparent; color:var(--text-faint); }

.add-step-btn{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  width:100%;
  padding:13px;
  margin-top:18px;
  border:1.5px dashed var(--accent-border);
  border-radius:var(--radius-sm);
  background:var(--accent-soft-2);
  color:var(--accent-dark);
  font-family:inherit;
  font-size:13.5px;
  font-weight:700;
  cursor:pointer;
  transition:background .15s, border-color .15s;
}
.add-step-btn:hover{ background:var(--accent-soft); border-color:var(--accent); }

.steps-empty{
  text-align:center;
  padding:30px 10px;
  color:var(--text-faint);
  font-size:13.5px;
  border:1px dashed var(--border);
  border-radius:var(--radius-sm);
}

/* drag handle */
.drag-handle{
  cursor:grab;
  color:var(--text-faint);
}
.step-card.dragging{ opacity:.4; }
.step-card.drag-over{ border-color:var(--accent); }

/* ===== Toast ===== */
.toast{
  position:fixed;
  bottom:24px;
  left:50%;
  transform:translateX(-50%) translateY(20px);
  background:var(--toast-bg);
  color:var(--toast-text);
  padding:11px 20px;
  border-radius:10px;
  font-size:13.5px;
  font-weight:600;
  box-shadow:var(--shadow-lg);
  opacity:0;
  pointer-events:none;
  transition:opacity .2s, transform .2s;
  z-index:999;
}
.toast.show{
  opacity:1;
  transform:translateX(-50%) translateY(0);
}
.toast.danger{ background:var(--danger); }

/* ===== Scrollbars ===== */
.sop-list::-webkit-scrollbar, .editor-scroll::-webkit-scrollbar{ width:8px; }
.sop-list::-webkit-scrollbar-thumb, .editor-scroll::-webkit-scrollbar-thumb{
  background:var(--scrollbar-thumb); border-radius:8px;
}
.sop-list::-webkit-scrollbar-track, .editor-scroll::-webkit-scrollbar-track{ background:transparent; }

/* ===== Responsive ===== */
@media (max-width: 860px){
  .sidebar{ width:230px; min-width:230px; padding:16px 10px; }
  .sop-document{ padding:28px 22px; margin:0 12px; }
  .doc-info-grid{ grid-template-columns:repeat(2,1fr); }
  .editor-toolbar{ padding:12px 16px; }
}

/* ===== Print / PDF ===== */
@media print{
  body *{ visibility:hidden; }
  #sopDocument, #sopDocument *{ visibility:visible; }
  #sopDocument{ position:absolute; top:0; left:0; width:100%; margin:0; border:none; box-shadow:none; }
}
