/* ==========================================================================
   EGW Components — Phase B canonical, token-driven building blocks (§5).
   Token-only colours (egw-tokens.css) + Layout System tokens (§2): spacing,
   radius, icon sizes, logical properties, and WCAG 2.5.x touch targets.
   Additive: .egw-* classes the site adopts progressively.
   ========================================================================== */

/* Buttons (§5.2 + Layout §9 touch target: primary actions >= 44x44) */
.egw-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);
  font:inherit;font-weight:600;line-height:1;border:1px solid transparent;border-radius:var(--radius-pill);
  min-height:2.75rem;padding-block:var(--space-3);padding-inline:var(--space-6);cursor:pointer;
  transition: background var(--motion-fast, 150ms) var(--ease-standard, ease), border-color var(--motion-fast, 150ms) var(--ease-standard, ease), opacity var(--motion-fast, 150ms) var(--ease-standard, ease), transform var(--motion-instant, 80ms) var(--ease-standard, ease);}
.egw-btn--primary{background:var(--btn-primary-bg);color:var(--btn-primary-text);}
.egw-btn--primary:hover{background:var(--btn-primary-hover);}
.egw-btn--secondary{background:var(--color-surface-2);color:var(--color-text);border-color:var(--color-border-strong);}
.egw-btn--secondary:hover{background:var(--color-surface-3);}
.egw-btn--ghost{background:transparent;color:var(--color-text);border-color:var(--color-border-strong);}
.egw-btn--ghost:hover{background:var(--color-surface-3);}
.egw-btn:active{transform:scale(.98);}
.egw-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;}
.egw-btn:disabled,.egw-btn[aria-disabled="true"]{opacity:.55;cursor:not-allowed;}

/* Inputs (§5.4) — touch-friendly height, consistent radius, logical padding */
.egw-input,.egw-select,.egw-textarea{width:100%;font:inherit;color:var(--color-text);
  background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--radius-md);
  min-height:2.75rem;padding-block:var(--space-3);padding-inline:var(--space-3);}
.egw-textarea{min-height:auto;}
.egw-input::placeholder,.egw-textarea::placeholder{color:var(--color-text-muted);opacity:1;}
.egw-input:focus-visible,.egw-select:focus-visible,.egw-textarea:focus-visible{
  outline:2px solid var(--color-focus);outline-offset:1px;border-color:var(--color-accent);}

/* Cards / sections (§5.6) — consistent large-surface radius */
.egw-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-xl);box-shadow:var(--card-shadow);}
.egw-section{background:var(--color-surface-1);border:1px solid var(--color-border);border-radius:var(--radius-xl);}

/* Links (§5.3) */
.egw-link{color:var(--color-link);text-decoration:none;text-underline-offset:2px;}
.egw-link:hover,.egw-link:focus-visible{text-decoration:underline;}

/* Status alerts (§5.7) */
.egw-alert{display:flex;gap:var(--space-2);align-items:flex-start;border-radius:var(--radius-lg);
  padding-block:var(--space-3);padding-inline:var(--space-3);border:1px solid;font-size:.92rem;}
.egw-alert__icon{flex:0 0 auto;line-height:1.4;}
.egw-alert--success{background:var(--color-success-bg);color:var(--color-success);border-color:var(--color-success);}
.egw-alert--warning{background:var(--color-warning-bg);color:var(--color-warning);border-color:var(--color-warning);}
.egw-alert--error{background:var(--color-error-bg);color:var(--color-error);border-color:var(--color-error);}
.egw-alert--info{background:var(--color-info-bg);color:var(--color-info);border-color:var(--color-info);}

/* Modal scaffold (§5.7) */
.egw-modal-backdrop{position:fixed;inset:0;background:var(--color-overlay);display:flex;align-items:center;justify-content:center;z-index:9999;padding:var(--space-4);}
.egw-modal{background:var(--color-surface-2);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-3);max-width:min(92vw,460px);width:100%;}

/* ==========================================================================
   Motion M-D (§6) — no "stuck" hover states on touch. Decorative hover lifts
   only make sense with a real hover pointer; on touch (hover:none) neutralise
   them so a tap doesn't leave the element stuck in its lifted/scaled state.
   (Functional transforms — toggles, carets, content reveals — are not :hover.)
   ========================================================================== */
@media (hover: none) {
  .egw-btn:hover, .btn-cta:hover, .eah-landing-btn:hover, .auth-visitor-btn:hover,
  .eah-theme-toggle:hover, #egw-m-menu:hover, .back-to-top:hover { transform: none !important; }
}
