/* Buttons */
.ds-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);border:none;cursor:pointer;font:var(--text-button-weight) var(--text-button-size)/var(--text-button-lh) var(--font-sans);letter-spacing:var(--text-button-ls);padding:12px 20px;border-radius:var(--radius-full);transition:transform .12s ease,background-color .12s ease}
.ds-btn:active{transform:scale(0.96)}
.ds-btn--primary{background:var(--color-primary);color:var(--color-on-primary)}
.ds-btn--primary:hover{background:var(--color-primary-active)}
.ds-btn--primary:disabled{background:var(--color-hairline);color:var(--color-ink-faint);cursor:not-allowed}
.ds-btn--secondary{background:var(--color-surface);color:var(--color-ink);box-shadow:var(--shadow-1)}
.ds-btn--utility{background:var(--color-surface);color:var(--color-ink);border:1px solid var(--color-hairline);border-radius:var(--radius-md);padding:4px 14px}
.ds-icon-btn{width:36px;height:36px;border-radius:var(--radius-full);border:none;background:var(--color-canvas-soft);color:var(--color-ink);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .12s ease}
.ds-icon-btn:active{transform:scale(0.9)}

/* Badge */
.ds-badge{display:inline-flex;align-items:center;background:var(--color-surface);color:var(--color-primary);font:var(--text-eyebrow-weight) var(--text-eyebrow-size)/var(--text-eyebrow-lh) var(--font-sans);letter-spacing:var(--text-eyebrow-ls);border-radius:var(--radius-full);padding:4px 10px;box-shadow:var(--shadow-1)}

/* Card / Surfaces */
.ds-card{background:var(--color-surface);color:var(--color-ink);border:1px solid var(--color-hairline);border-radius:var(--radius-lg);padding:var(--space-lg)}
.ds-card--elevated{border:none;box-shadow:var(--shadow-1)}
.ds-summary-card{background:var(--color-canvas-soft);border-radius:var(--radius-xl);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-xs)}
.ds-summary-card--featured{background:var(--color-ink);color:var(--color-canvas)}
.ds-empty-state{background:var(--color-canvas-soft);border-radius:var(--radius-xl);padding:var(--space-xxl);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--space-sm)}

/* Inputs */
.ds-field{display:flex;flex-direction:column;gap:var(--space-xxs)}
.ds-field label{font:var(--text-caption-weight) var(--text-caption-size)/var(--text-caption-lh) var(--font-sans);color:var(--color-ink-muted)}
.ds-input{background:var(--color-surface);color:var(--color-ink);font:var(--text-body-sm-weight) var(--text-body-sm-size)/var(--text-body-sm-lh) var(--font-sans);border:1px solid #ddd;border-radius:var(--radius-xs);padding:8px 10px}
.ds-input:focus{outline:none;box-shadow:var(--shadow-1);border-color:var(--color-primary)}
.ds-form-card{background:var(--color-surface);border-radius:var(--radius-xl);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md);max-width:360px}

/* Navigation */
.ds-navbar{display:flex;align-items:center;justify-content:space-between;background:var(--color-canvas);padding:var(--space-md);font:var(--text-body-sm-weight) var(--text-body-sm-size)/var(--text-body-sm-lh) var(--font-sans);border-bottom:1px solid var(--color-hairline)}
.ds-navbar__brand{display:flex;align-items:center;gap:var(--space-xs);font-weight:600;color:var(--color-ink)}
.ds-navbar__brand img{height:24px}
.ds-navbar__links{display:flex;gap:var(--space-lg);color:var(--color-ink)}
.ds-navbar__actions{display:flex;align-items:center;gap:var(--space-sm)}
.ds-sidebar-row{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);color:var(--color-ink-secondary);cursor:pointer}
.ds-sidebar-row:hover{background:var(--color-canvas-soft)}
.ds-sidebar-row--active{background:var(--color-canvas-soft);color:var(--color-primary);font-weight:600;box-shadow:inset 3px 0 0 0 var(--color-primary)}

/* Feedback */
.ds-toast{display:flex;align-items:center;gap:var(--space-sm);background:var(--color-surface);border-radius:var(--radius-xl);padding:var(--space-sm) var(--space-md);box-shadow:var(--shadow-1);font:var(--text-body-sm-weight) var(--text-body-sm-size)/var(--text-body-sm-lh) var(--font-sans)}
.ds-toast__dot{width:8px;height:8px;border-radius:50%;flex:none}

/* Overlay */
.ds-modal-overlay{position:absolute;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center}
.ds-modal{background:var(--color-surface);border-radius:var(--radius-xl);padding:var(--space-lg);box-shadow:var(--shadow-2);max-width:420px;width:100%}

/* Data table */
.ds-table{width:100%;border-collapse:collapse}
.ds-table th{background:var(--color-canvas-soft);text-align:left;font:var(--text-eyebrow-weight) var(--text-eyebrow-size)/var(--text-eyebrow-lh) var(--font-sans);letter-spacing:var(--text-eyebrow-ls);text-transform:uppercase;color:var(--color-ink-muted);padding:var(--space-sm) var(--space-md)}
.ds-table td{font:var(--text-body-sm-weight) var(--text-body-sm-size)/var(--text-body-sm-lh) var(--font-sans);padding:var(--space-sm) var(--space-md);border-top:1px solid var(--color-hairline)}

/* Layout */
.ds-footer{background:var(--color-canvas-soft);color:var(--color-ink-secondary);font:var(--text-caption-weight) var(--text-caption-size)/var(--text-caption-lh) var(--font-sans);padding:var(--space-xxl);display:flex;gap:var(--space-xxl)}
.ds-hero{background:var(--color-secondary);color:var(--color-canvas);padding:var(--space-xxl);border-radius:var(--radius-xl)}
