/* ============================================================
   VINO · COMPONENTS — hand-extracted from doc/design-system
   component JSX (Button, Alert, Card, Input, Checkbox). Only the
   classes actually used by this app's server-rendered views.
   ============================================================ */

/* Button — doc/design-system/components/buttons/Button.jsx */
.vino-btn{
  font-family:var(--font-sans);font-weight:var(--fw-semibold);
  display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);
  border:1px solid transparent;border-radius:var(--radius-control);
  cursor:pointer;text-decoration:none;white-space:nowrap;
  transition:var(--transition-control);
  letter-spacing:-0.005em;line-height:1;
}
.vino-btn:focus-visible{outline:none;box-shadow:var(--ring);}
.vino-btn:disabled,.vino-btn[aria-disabled="true"]{opacity:.45;cursor:not-allowed;}
.vino-btn:active{transform:translateY(1px);}

.vino-btn--sm{font-size:var(--text-sm);padding:8px 14px;height:34px;}
.vino-btn--md{font-size:var(--text-base);padding:11px 20px;height:44px;}
.vino-btn--lg{font-size:var(--text-md);padding:14px 26px;height:52px;}

.vino-btn--primary{background:var(--brand-primary);color:var(--text-on-brand);}
.vino-btn--primary:hover:not(:disabled){background:var(--brand-primary-hover);}
.vino-btn--primary:active{background:var(--brand-primary-press);}

.vino-btn--accent{background:var(--brand-accent);color:#F7F2E9;}
.vino-btn--accent:hover:not(:disabled){background:var(--brand-accent-hover);}

.vino-btn--secondary{background:var(--surface-card);color:var(--text-strong);border-color:var(--border-strong);}
.vino-btn--secondary:hover:not(:disabled){border-color:var(--brand-primary);background:var(--vine-50);}

.vino-btn--ghost{background:transparent;color:var(--brand-primary);}
.vino-btn--ghost:hover:not(:disabled){background:var(--vine-50);}

.vino-btn--block{width:100%;}
.vino-btn svg{width:1.1em;height:1.1em;flex:none;}

/* Alert — doc/design-system/components/feedback/Alert.jsx */
.vino-alert{display:flex;gap:12px;font-family:var(--font-sans);
  border-radius:var(--radius-md);padding:14px 16px;border:1px solid transparent;
  font-size:var(--text-sm);line-height:1.5;color:var(--text-body);}
.vino-alert__icon{flex:none;width:20px;height:20px;margin-top:1px;}
.vino-alert__icon svg{width:20px;height:20px;}
.vino-alert__body{flex:1;}
.vino-alert__title{font-weight:var(--fw-semibold);color:var(--text-strong);margin-bottom:2px;}
.vino-alert--info{background:var(--info-surface);border-color:var(--sky-300);}
.vino-alert--info .vino-alert__icon{color:var(--sky-700);}
.vino-alert--success{background:var(--success-surface);border-color:var(--vine-300);}
.vino-alert--success .vino-alert__icon{color:var(--vine-600);}
.vino-alert--warning{background:var(--warning-surface);border-color:var(--gold-300);}
.vino-alert--warning .vino-alert__icon{color:var(--clay-700);}
.vino-alert--danger{background:var(--danger-surface);border-color:var(--wine-300);}
.vino-alert--danger .vino-alert__icon{color:var(--wine-700);}

/* Card — doc/design-system/components/data-display/Card.jsx */
.vino-card{background:var(--surface-card);border:1px solid var(--border-hairline);
  border-radius:var(--radius-card);box-shadow:var(--shadow-md);overflow:hidden;
  font-family:var(--font-sans);color:var(--text-body);}
.vino-card--flat{box-shadow:none;}
.vino-card--outline{box-shadow:none;border-color:var(--border-soft);}
.vino-card--pad-sm{padding:var(--space-4);}
.vino-card--pad-md{padding:var(--space-6);}
.vino-card--pad-lg{padding:var(--space-8);}

/* Input — doc/design-system/components/forms/Input.jsx */
.vino-field{display:flex;flex-direction:column;gap:6px;font-family:var(--font-sans);}
.vino-field__label{font-size:var(--text-sm);font-weight:var(--fw-medium);color:var(--text-strong);}
.vino-field__req{color:var(--brand-accent);margin-left:2px;}
.vino-field__wrap{display:flex;align-items:center;gap:8px;
  background:var(--white);border:1px solid var(--border-strong);
  border-radius:var(--radius-control);padding:0 12px;transition:var(--transition-control);}
.vino-field__wrap:focus-within{border-color:var(--focus-ring);box-shadow:var(--ring);}
.vino-field__wrap--error{border-color:var(--danger);}
.vino-field__wrap--error:focus-within{box-shadow:0 0 0 3px rgba(142,39,64,.25);}
.vino-input{flex:1;border:0;outline:none;background:transparent;
  font-family:inherit;font-size:var(--text-base);color:var(--text-strong);
  padding:11px 0;min-width:0;}
.vino-input::placeholder{color:var(--text-faint);}
.vino-input:disabled{cursor:not-allowed;}
.vino-field__hint{font-size:var(--text-xs);color:var(--text-muted);}
.vino-field__hint--error{color:var(--danger);}

/* Checkbox — doc/design-system/components/forms/Checkbox.jsx */
.vino-check{display:inline-flex;align-items:flex-start;gap:10px;cursor:pointer;
  font-family:var(--font-sans);font-size:var(--text-base);color:var(--text-body);user-select:none;}
.vino-check input{position:absolute;opacity:0;width:0;height:0;}
.vino-check__box{flex:none;width:20px;height:20px;border-radius:var(--radius-xs);
  border:1.5px solid var(--border-strong);background:var(--white);
  display:grid;place-items:center;transition:var(--transition-control);margin-top:1px;}
.vino-check__box svg{width:13px;height:13px;color:#F7F2E9;opacity:0;transform:scale(.6);transition:var(--transition-control);}
.vino-check input:checked + .vino-check__box{background:var(--brand-primary);border-color:var(--brand-primary);}
.vino-check input:checked + .vino-check__box svg{opacity:1;transform:scale(1);}
.vino-check input:focus-visible + .vino-check__box{box-shadow:var(--ring);}
.vino-check__text{line-height:1.35;}

/* Badge — doc/design-system/components/data-display/Badge.jsx */
.vino-badge{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-sans);
  font-weight:var(--fw-semibold);font-size:var(--text-xs);line-height:1;
  padding:4px 9px;border-radius:var(--radius-sm);white-space:nowrap;letter-spacing:.01em;}
.vino-badge--neutral{background:var(--ink-100);color:var(--ink-700);}
.vino-badge--success{background:var(--success-surface);color:var(--vine-800);}
.vino-badge--danger{background:var(--danger-surface);color:var(--wine-800);}
