.ds-button, .btn { min-height: var(--nexo-touch-target); padding: var(--nexo-space-2) var(--nexo-space-3); border: 1px solid transparent; border-radius: var(--nexo-radius-md); font: inherit; font-weight: 800; cursor: pointer; transition: transform var(--nexo-motion-fast), background var(--nexo-motion-fast), box-shadow var(--nexo-motion-fast); }
.ds-button:active, .btn:active { transform: scale(.98); }
.ds-button--primary, .btn { background: var(--nexo-color-primary-900); color: #fff; }
.ds-button--secondary, .btn.alt { background: var(--nexo-color-secondary-100); color: var(--nexo-color-text); }
.ds-button--success, .btn.ok { background: var(--nexo-color-success-100); color: var(--nexo-color-success-700); }
.ds-button--danger, .btn.bad { background: var(--nexo-color-danger-100); color: var(--nexo-color-danger-700); }
.ds-button--warning { background: var(--nexo-color-warning-100); color: var(--nexo-color-warning-700); }
.ds-button--ghost { background: transparent; color: var(--nexo-color-text); border-color: var(--nexo-color-border); }
.ds-button--icon { width: var(--nexo-touch-target); padding: 0; display: inline-grid; place-items: center; }
.ds-icon { width: 20px; height: 20px; flex: 0 0 20px; vertical-align: middle; }
.ds-nav { display: flex; gap: var(--nexo-space-2); margin-top: var(--nexo-space-2); overflow: auto; }
.ds-nav-item { min-height: var(--nexo-touch-target); padding: var(--nexo-space-2) var(--nexo-space-3); border: 0; border-radius: var(--nexo-radius-pill); background: var(--nexo-color-primary-700); color: #fff; font-weight: 800; white-space: nowrap; }
.ds-nav-item.active { background: var(--nexo-color-surface); color: var(--nexo-color-text); }

.ds-card, .card { padding: var(--nexo-space-4); border: 1px solid var(--nexo-color-border); border-radius: var(--nexo-radius-lg); background: var(--nexo-color-surface); box-shadow: var(--nexo-shadow-sm); }
.ds-card--compact { padding: var(--nexo-space-3); }
.ds-card--expandable > summary { cursor: pointer; font-weight: 800; }
.ds-card--kpi .ds-value, .kpi strong { font-size: var(--nexo-font-kpi); font-variant-numeric: tabular-nums; }
.ds-card--financial { border-left: 4px solid var(--nexo-color-info-700); }
.ds-card--student { border-left: 4px solid var(--nexo-color-success-700); }
.ds-card--appointment { border-left: 4px solid var(--nexo-color-primary-700); }
.kpis { display: grid; grid-template-columns: 1fr 1fr; gap: var(--nexo-space-2); }
.kpi { padding: var(--nexo-space-3); border: 1px solid var(--nexo-color-border); border-radius: var(--nexo-radius-md); background: var(--nexo-color-background); }
.kpi strong { display: block; }

.ds-field, input, textarea, select { width: 100%; min-height: var(--nexo-touch-target); padding: var(--nexo-space-2) var(--nexo-space-3); border: 1px solid var(--nexo-color-border); border-radius: var(--nexo-radius-md); background: var(--nexo-color-surface); color: var(--nexo-color-text); font: inherit; font-size: max(16px, 1em); }
.ds-field:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, button:focus-visible { outline: 3px solid var(--nexo-color-info-700); outline-offset: 2px; }
.ds-label, label { display: block; margin: var(--nexo-space-2) 0 var(--nexo-space-1); font-size: var(--nexo-font-sm); font-weight: 750; }
textarea { min-height: 72px; resize: vertical; }
.ds-field-error { color: var(--nexo-color-danger-700); font-size: var(--nexo-font-sm); font-weight: 700; }
.ds-switch { appearance: none; width: 48px; height: 28px; border: 0; border-radius: var(--nexo-radius-pill); background: var(--nexo-color-secondary-100); transition: background var(--nexo-motion-fast); }
.ds-switch:checked { background: var(--nexo-color-success-700); }

.ds-badge, .badge { display: inline-flex; align-items: center; gap: var(--nexo-space-1); min-height: 24px; padding: var(--nexo-space-1) var(--nexo-space-2); border-radius: var(--nexo-radius-pill); background: var(--nexo-color-secondary-100); font-size: var(--nexo-font-xs); font-weight: 800; }
.ds-badge--success { background: var(--nexo-color-success-100); color: var(--nexo-color-success-700); }
.ds-badge--danger { background: var(--nexo-color-danger-100); color: var(--nexo-color-danger-700); }
.ds-badge--warning { background: var(--nexo-color-warning-100); color: var(--nexo-color-warning-700); }
.ds-badge--info { background: var(--nexo-color-info-100); color: var(--nexo-color-info-700); }

.ds-toast { display: block; position: fixed; left: 50%; bottom: calc(var(--nexo-space-5) + env(safe-area-inset-bottom)); z-index: 120; width: min(420px, calc(100vw - 24px)); padding: var(--nexo-space-3) var(--nexo-space-4); transform: translate(-50%, 16px); opacity: 0; border-radius: var(--nexo-radius-md); box-shadow: var(--nexo-shadow-md); color: #fff; pointer-events: none; transition: opacity var(--nexo-motion-normal), transform var(--nexo-motion-normal); }
.ds-toast.is-visible { opacity: 1; transform: translate(-50%, 0); }
.ds-toast--success { background: var(--nexo-color-success-700); }.ds-toast--error { background: var(--nexo-color-danger-700); }.ds-toast--warning { background: var(--nexo-color-warning-700); }.ds-toast--info { background: var(--nexo-color-info-700); }

.modal-open { overflow: hidden; }
.ds-modal-backdrop { position: fixed; inset: 0; z-index: 100; display: flex; align-items: center; justify-content: center; padding: max(var(--nexo-space-4), env(safe-area-inset-top)) max(var(--nexo-space-4), env(safe-area-inset-right)) max(var(--nexo-space-4), env(safe-area-inset-bottom)) max(var(--nexo-space-4), env(safe-area-inset-left)); background: rgb(17 24 39 / 62%); animation: ds-fade var(--nexo-motion-normal) ease-out; }
.ds-modal { width: min(520px, 100%); max-height: calc(100dvh - var(--nexo-space-8)); overflow: auto; padding: var(--nexo-space-5); border-radius: var(--nexo-radius-lg); background: var(--nexo-color-surface); box-shadow: var(--nexo-shadow-lg); animation: ds-rise var(--nexo-motion-normal) ease-out; }
.ds-modal-actions { position: sticky; bottom: calc(-1 * var(--nexo-space-5)); display: flex; justify-content: flex-end; gap: var(--nexo-space-2); margin: var(--nexo-space-4) calc(-1 * var(--nexo-space-5)) calc(-1 * var(--nexo-space-5)); padding: var(--nexo-space-3) var(--nexo-space-5) calc(var(--nexo-space-3) + env(safe-area-inset-bottom)); background: var(--nexo-color-surface); border-top: 1px solid var(--nexo-color-border); }
@keyframes ds-fade { from { opacity: 0; } }
@keyframes ds-rise { from { opacity: 0; transform: translateY(12px); } }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { font-size: var(--nexo-font-md); line-height: 1.45; }
.ds-title-primary { font-size: var(--nexo-font-xl); }.ds-title-secondary { font-size: var(--nexo-font-lg); }.ds-caption { font-size: var(--nexo-font-xs); color: var(--nexo-color-muted); }

@media (min-width: 1120px) { main { max-width: 1240px; } .grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .wide { grid-column: 1 / -1; } }
@media (max-width: 620px) { button, input, select, textarea { min-height: var(--nexo-touch-target); } .ds-nav { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); overflow: visible; } .ds-nav-item { min-width: 0; padding: var(--nexo-space-2) var(--nexo-space-1); font-size: var(--nexo-font-xs); white-space: normal; } .ds-modal-backdrop { align-items: flex-end; padding: 0; } .ds-modal { width: 100%; max-height: calc(100dvh - env(safe-area-inset-top)); border-radius: var(--nexo-radius-lg) var(--nexo-radius-lg) 0 0; } }
