.ds-stack{display:flex;flex-direction:column;gap:var(--space-3)}.ds-cluster{flex-wrap:wrap;gap:var(--space-2)}.ds-between,.ds-cluster{display:flex;align-items:center}.ds-between{justify-content:space-between;gap:var(--space-3)}.ds-divider{height:1px;border:0;background:var(--border);margin:var(--space-4) 0}.ds-divider.vertical{width:1px;height:auto;align-self:stretch;margin:0 var(--space-2)}.ds-section{display:flex;flex-direction:column;gap:var(--space-4)}.ds-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.ds-section-title{font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:700;color:var(--text-strong)}.ds-section-desc{font-size:var(--fs-small);color:var(--text-muted);margin-top:2px}.ds-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-1)}.ds-card.flat{box-shadow:none}.ds-card.elevated{box-shadow:var(--shadow-2)}.ds-card.pad-sm{padding:var(--space-4)}.ds-card.pad-lg{padding:var(--space-6)}.ds-card.interactive{cursor:pointer;transition:border-color var(--dur) var(--ease)}.ds-card.interactive:hover{border-color:var(--navy-300)}.ds-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:inherit;font-weight:700;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-radius:var(--radius-md);border:1px solid transparent;min-height:44px;padding:0 var(--space-5);font-size:var(--fs-body);transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease);text-align:center;line-height:1;white-space:nowrap}.ds-btn:active{transform:translateY(1px)}.ds-btn:disabled,.ds-btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;pointer-events:none}.ds-btn.block{width:100%}.ds-btn.sm{min-height:36px;padding:0 var(--space-3);font-size:var(--fs-small)}.ds-btn.lg{min-height:52px;padding:0 var(--space-6);font-size:var(--fs-h3)}.ds-btn.icon-only{padding:0;width:44px}.ds-btn.icon-only.sm{width:36px}.ds-btn.icon-only.lg{width:52px}.ds-btn.primary{background:var(--brand);color:var(--brand-contrast)}.ds-btn.primary:hover{background:var(--navy-700)}.ds-btn.secondary{background:var(--accent);color:var(--accent-contrast)}.ds-btn.secondary:hover{background:var(--orange-600)}.ds-btn.ghost{background:transparent;color:var(--text-strong);border-color:var(--border)}.ds-btn.ghost:hover{background:var(--surface-2)}.ds-btn.danger{background:var(--danger);color:#fff}.ds-btn.danger:hover{filter:brightness(.94)}.ds-btn .ds-spinner{width:1em;height:1em}.ds-spinner{display:inline-block;width:20px;height:20px;border-radius:50%;border:2px solid;border-inline-start-color:transparent;animation:ds-spin .7s linear infinite;vertical-align:middle}@keyframes ds-spin{to{transform:rotate(1turn)}}.ds-badge{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--fs-caption);line-height:1;font-weight:700;padding:4px 10px;border-radius:var(--radius-full)}.ds-badge.brand{background:var(--brand-soft);color:var(--text-strong)}.ds-badge.success{background:var(--success-soft);color:var(--text-success)}.ds-badge.warning{background:var(--warning-soft);color:var(--text-warning)}.ds-badge.danger{background:var(--danger-soft);color:var(--text-danger)}.ds-badge.neutral{background:var(--surface-2);color:var(--text-muted)}.ds-badge.dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.ds-chip{display:inline-flex;align-items:center;gap:var(--space-2);padding:6px 12px;border-radius:var(--radius-full);background:var(--brand-soft);color:var(--text-strong);font-size:var(--fs-small);font-weight:600;border:1px solid transparent}.ds-chip.outline{background:transparent;border-color:var(--border);color:var(--text)}.ds-chip-x{border:0;background:transparent;color:var(--navy-300);cursor:pointer;line-height:1;padding:0;width:18px;height:18px;display:grid;place-items:center}.ds-chip-x:hover{color:var(--danger)}.ds-field{display:block}.ds-field-label{display:block;font-size:var(--fs-small);font-weight:600;color:var(--text);margin-bottom:6px}.ds-field-req{color:var(--danger);-webkit-margin-start:2px;margin-inline-start:2px}.ds-field-hint{color:var(--text-muted)}.ds-field-error,.ds-field-hint{font-size:var(--fs-caption);margin-top:6px}.ds-field-error{color:var(--text-danger)}.ds-input,.ds-select,.ds-textarea{width:100%;font-family:inherit;font-size:var(--fs-body);color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:0 var(--space-3);min-height:44px;transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.ds-textarea{padding:var(--space-3);min-height:96px;line-height:1.7;resize:vertical}.ds-input::placeholder,.ds-textarea::placeholder{color:var(--text-muted)}.ds-input:focus,.ds-select:focus,.ds-textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}.ds-input:disabled,.ds-select:disabled,.ds-textarea:disabled{opacity:.6;cursor:not-allowed}.ds-input[aria-invalid=true],.ds-select[aria-invalid=true],.ds-textarea[aria-invalid=true]{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-soft)}.ds-input-wrap{position:relative;display:flex;align-items:center}.ds-input-wrap .ds-input{-webkit-padding-start:40px;padding-inline-start:40px}.ds-input-affix{position:absolute;inset-inline-start:12px;display:grid;place-items:center;color:var(--text-muted);pointer-events:none}.ds-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-padding-end:36px;padding-inline-end:36px;cursor:pointer}.ds-switch{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--fs-small)}.ds-switch input{position:absolute;opacity:0;width:1px;height:1px}.ds-switch-track{width:42px;height:24px;border-radius:var(--radius-full);background:var(--border);position:relative;flex-shrink:0;transition:background var(--dur) var(--ease)}.ds-switch-thumb{position:absolute;top:3px;inset-inline-start:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:var(--shadow-1);transition:inset-inline-start var(--dur) var(--ease)}.ds-switch input:checked+.ds-switch-track{background:var(--accent)}.ds-switch input:checked+.ds-switch-track .ds-switch-thumb{inset-inline-start:21px}.ds-switch input:focus-visible+.ds-switch-track{outline:2px solid var(--accent);outline-offset:2px}.ds-switch input:disabled+.ds-switch-track{opacity:.5}.ds-check{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--fs-small)}.ds-check input{width:18px;height:18px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.ds-check input:disabled{cursor:not-allowed}.ds-skel{background:linear-gradient(90deg,var(--skeleton-from) 25%,var(--skeleton-to) 37%,var(--skeleton-from) 63%);background-size:400% 100%;animation:ds-sk 1.3s ease infinite;border-radius:var(--radius-sm)}@keyframes ds-sk{0%{background-position:100% 0}to{background-position:0 0}}.ds-skel.text{height:.9em;border-radius:6px}.ds-skel.circle{border-radius:50%}.ds-alert{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid transparent;font-size:var(--fs-small);line-height:1.7}.ds-alert-icon{flex-shrink:0;margin-top:2px}.ds-alert-body{flex:1 1;min-width:0}.ds-alert-title{font-weight:700}.ds-alert.info{background:var(--brand-soft);color:var(--text-strong)}.ds-alert.success{background:var(--success-soft);color:var(--text-success)}.ds-alert.warning{background:var(--warning-soft);color:var(--text-warning)}.ds-alert.danger{background:var(--danger-soft);color:var(--text-danger)}.ds-avatar{display:inline-grid;place-items:center;flex-shrink:0;overflow:hidden;border-radius:var(--radius-md);background:linear-gradient(135deg,var(--brand),var(--navy-300));color:#fff;font-weight:800;width:40px;height:40px;font-size:16px}.ds-avatar.round{border-radius:50%}.ds-avatar.sm{width:32px;height:32px;font-size:13px}.ds-avatar.lg{width:56px;height:56px;font-size:22px}.ds-avatar img{width:100%;height:100%;object-fit:cover}.ds-progress{width:100%;height:8px;background:var(--surface-2);overflow:hidden}.ds-progress,.ds-progress-fill{border-radius:var(--radius-full)}.ds-progress-fill{height:100%;background:var(--accent);transition:width var(--dur-slow) var(--ease)}.ds-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}