/* 劳安宝 · 组件规范 ds.css (阶段0) — 依赖 tokens.css */
*{box-sizing:border-box}
body{font-family:var(--font-body);color:var(--text-2);background:var(--bg-page);margin:0}
h1,h2,h3,h4{color:var(--text-1);font-family:var(--font-display);margin:0}
a{color:var(--brand-500);text-decoration:none}
.ds-container{max-width:var(--container);margin:0 auto;padding:0 var(--s-4)}

/* 按钮 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--tap);
  padding:0 var(--s-5);border:1px solid transparent;border-radius:var(--r-md);font-size:var(--f-base);
  font-weight:600;cursor:pointer;transition:all var(--dur-1) var(--ease);font-family:inherit;line-height:1}
.btn-primary{background:var(--brand-700);color:#fff}
.btn-primary:hover{background:var(--brand-500)}
.btn-gold{background:linear-gradient(135deg,var(--gold-500),var(--gold-600));color:#fff;box-shadow:var(--sh-sm)}
.btn-gold:hover{filter:brightness(1.05)}
.btn-outline{background:var(--bg-card);color:var(--brand-700);border-color:var(--brand-700)}
.btn-outline:hover{background:var(--gold-100)}
.btn-ghost{background:transparent;color:var(--text-2)}
.btn-ghost:hover{background:var(--bg-soft)}
.btn-danger{background:var(--danger);color:#fff}
.btn-sm{min-height:34px;padding:0 var(--s-3);font-size:var(--f-md)}
.btn-lg{min-height:52px;padding:0 var(--s-6);font-size:var(--f-lg)}
.btn-block{display:flex;width:100%}
.btn[disabled]{opacity:.55;cursor:not-allowed}

/* 表单 */
.field{margin-bottom:var(--s-4)}
.field>label{display:block;font-size:var(--f-sm);color:var(--text-2);margin-bottom:var(--s-1);font-weight:600}
.field .req{color:var(--danger);margin-left:3px}
.input,.select,.textarea{width:100%;min-height:var(--tap);padding:var(--s-2) var(--s-3);border:1px solid var(--line-2);
  border-radius:var(--r-md);font-size:var(--f-base);color:var(--text-1);background:#fff;font-family:inherit;transition:border-color var(--dur-1)}
.input:focus,.select:focus,.textarea:focus{outline:none;border-color:#836e48;box-shadow:0 0 0 3px rgba(201,169,110,.15)}
.field.has-error .input,.field.has-error .textarea{border-color:var(--danger)}
.field .err{display:none;color:var(--danger);font-size:var(--f-xs);margin-top:var(--s-1)}
.field.has-error .err{display:block}
.textarea{min-height:80px;resize:vertical}

/* 卡片 */
.card{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-sm);padding:var(--s-5)}
.card-hover{transition:transform var(--dur-2) var(--ease),box-shadow var(--dur-2)}
.card-hover:hover{transform:translateY(-4px);box-shadow:var(--sh-lg)}

/* 徽章/标签 */
.badge{display:inline-flex;align-items:center;gap:4px;padding:2px var(--s-2);border-radius:var(--r-pill);font-size:var(--f-xs);font-weight:700;line-height:1.4}
.badge-success{background:var(--success-bg);color:var(--success)}
.badge-warning{background:var(--warning-bg);color:var(--warning)}
.badge-danger{background:var(--danger-bg);color:var(--danger)}
.badge-info{background:var(--info-bg);color:var(--info)}
.badge-gold{background:var(--gold-100);color:#8d6709}
.badge-neutral{background:var(--bg-soft);color:var(--text-3)}

/* 表格 */
.table{width:100%;border-collapse:collapse;background:#fff;font-size:var(--f-md)}
.table th{background:var(--brand-700);color:#fff;text-align:left;padding:var(--s-3);font-weight:600}
.table td{padding:var(--s-3);border-bottom:1px solid var(--line);color:var(--text-2)}
.table tr:hover td{background:var(--gold-100)}
@media (max-width:768px){ .table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch} }

/* 进度 */
.progress{height:8px;border-radius:var(--r-pill);background:var(--bg-soft);overflow:hidden}
.progress>i{display:block;height:100%;background:linear-gradient(90deg,var(--gold-500),var(--gold-600))}

/* 空状态 / 加载 */
.empty{text-align:center;padding:var(--s-7) var(--s-4);color:#5c6775}
.empty .ic{font-size:40px;opacity:.5}

/* Toast */
.toast{position:fixed;left:50%;top:var(--s-5);transform:translateX(-50%);z-index:100000;max-width:80vw;
  padding:var(--s-3) var(--s-5);border-radius:var(--r-md);color:#fff;font-size:var(--f-md);box-shadow:var(--sh-lg);background:var(--brand-700)}
.toast-error{background:var(--danger)} .toast-warn{background:var(--warning)} .toast-success{background:var(--success)}

/* 间距工具 */
.mt-1{margin-top:var(--s-1)}.mt-2{margin-top:var(--s-2)}.mt-4{margin-top:var(--s-4)}.mt-5{margin-top:var(--s-5)}.mt-6{margin-top:var(--s-6)}
.mb-4{margin-bottom:var(--s-4)}.gap-2{gap:var(--s-2)}.gap-4{gap:var(--s-4)}.flex{display:flex}
