/*
 * NSYD design-system classes for pieces the daisyUI component layer doesn't
 * cover directly (avatar, traffic-light picker, portal tabs, dialog-as-native-
 * <dialog>, mobile nav panel, page layout grids). Button/Input/Textarea/
 * Select/Checkbox/Radio/Switch/Card/Badge render daisyUI classes straight
 * from their ViewComponent templates instead of custom classes here.
 */

.nsyd-avatar { display: flex; align-items: center; justify-content: center; flex-shrink: 0; width: 44px; height: 44px; border-radius: 50%; background: var(--brand-soft); color: var(--brand-strong); font-family: var(--font-sans); font-weight: var(--weight-bold); font-size: var(--text-small); }
.nsyd-avatar--lg { width: 64px; height: 64px; font-size: var(--text-h4); }

.nsyd-traffic-light { display: flex; flex-direction: column; gap: 8px; }
.nsyd-traffic-light__label { font-size: var(--text-small); font-weight: var(--weight-semibold); color: var(--text-heading); }
.nsyd-traffic-light__options { display: flex; gap: 10px; }
.nsyd-traffic-light__option { display: inline-flex; cursor: pointer; }
.nsyd-traffic-light__input { appearance: none; width: 28px; height: 28px; border-radius: 50%; border: 2px solid var(--border-default); cursor: pointer; transition: transform var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard); }
.nsyd-traffic-light__input:checked { border-color: var(--text-heading); transform: scale(1.12); }
.nsyd-traffic-light__option--green .nsyd-traffic-light__input { background: var(--brand); }
.nsyd-traffic-light__option--yellow .nsyd-traffic-light__input { background: var(--warning); }
.nsyd-traffic-light__option--red .nsyd-traffic-light__input { background: var(--danger); }

.nsyd-tabs { font-family: var(--font-sans); }
.nsyd-tabs__list { display: flex; gap: var(--space-2); border-bottom: 1px solid var(--border-default); }
.nsyd-tabs__tab { appearance: none; background: none; border: none; cursor: pointer; font-family: var(--font-sans); font-size: var(--text-small); font-weight: var(--weight-semibold); color: var(--text-muted); padding: 12px 16px; border-bottom: 2px solid transparent; margin-bottom: -1px; transition: color var(--duration-fast) var(--ease-standard); }
.nsyd-tabs__tab:hover { color: var(--text-body); }
.nsyd-tabs__tab--active { color: var(--brand-strong); border-bottom-color: var(--brand); }
.nsyd-tabs__tab:focus-visible { outline: none; box-shadow: var(--shadow-focus); border-radius: var(--radius-sm); }

/* Mobile nav panel: plain class toggle (not Tailwind's hidden/flex) so JS open state
   never fights the forced-closed rule at the desktop breakpoint. */
.nsyd-mobile-nav { display: none; flex-direction: column; padding: 8px 24px 20px; gap: 4px; border-top: 1px solid var(--border-default); }
.nsyd-mobile-nav.is-open { display: flex; }
@media (min-width: 860px) {
  .nsyd-mobile-nav { display: none !important; }
}

/* Responsive grid/size splits, mirroring the design's own isMobile < 860px cutoff. */
.nsyd-hero-section { padding: 48px 24px; }
.nsyd-hero-grid { display: grid; grid-template-columns: 1fr; gap: 48px; align-items: center; }
.nsyd-hero-img { height: 240px; }
.nsyd-services-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.nsyd-steps-grid { display: grid; grid-template-columns: 1fr; gap: 40px; }
.nsyd-footer-grid { display: grid; grid-template-columns: 1fr; gap: 40px; }
.nsyd-contact-grid { display: grid; grid-template-columns: 1fr; gap: 48px; align-items: start; }
.nsyd-servicio-detalle-grid { display: grid; grid-template-columns: 1fr; gap: 24px; align-items: start; }

@media (min-width: 860px) {
  .nsyd-hero-section { padding: 72px 24px; }
  .nsyd-hero-grid { grid-template-columns: 1.05fr .95fr; }
  .nsyd-hero-img { height: 380px; }
  .nsyd-services-grid { grid-template-columns: repeat(4, 1fr); }
  .nsyd-steps-grid { grid-template-columns: repeat(3, 1fr); }
  .nsyd-footer-grid { grid-template-columns: 2fr 1fr 1fr; }
  .nsyd-contact-grid { grid-template-columns: 1fr 1fr; }
  .nsyd-servicio-detalle-grid { grid-template-columns: 140px 1fr; }
}
