/* Event Selection component styles. Consumed by the React primitives in components/*.
   Every value is a token; nothing here hardcodes a colour or a radius. */

/* ---------- Button ---------- */
.es-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3);border:1px solid transparent;border-radius:var(--radius-button);font:var(--type-label);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-label);white-space:nowrap;text-decoration:none;transition:var(--transition-control)}
.es-btn:hover{text-decoration:none}
.es-btn:active{transform:scale(var(--press-scale))}
.es-btn:focus-visible{box-shadow:var(--ring-focus)}
.es-btn[disabled],.es-btn[aria-disabled="true"]{opacity:.45;pointer-events:none}
.es-btn--sm{height:32px;padding:0 14px;font-size:13px}
.es-btn--md{height:40px;padding:0 20px;font-size:14px}
.es-btn--lg{height:48px;padding:0 26px;font-size:15px}
.es-btn--block{width:100%}
.es-btn--primary{background:var(--surface-brand);color:var(--text-on-brand);box-shadow:var(--shadow-brand)}
.es-btn--primary:hover{background:var(--teal-600)}
.es-btn--primary:active{background:var(--teal-700)}
.es-btn--secondary{background:var(--glass-bg-strong);backdrop-filter:var(--glass-blur-soft);-webkit-backdrop-filter:var(--glass-blur-soft);border-color:var(--border-glass);color:var(--text-strong);box-shadow:var(--shadow-sm),var(--glass-inner)}
.es-btn--secondary:hover{background:var(--n-0);box-shadow:var(--shadow-md),var(--glass-inner)}
.es-btn--ghost{background:transparent;color:var(--text-body)}
.es-btn--ghost:hover{background:var(--surface-inset);color:var(--text-strong)}
.es-btn--soft{background:var(--surface-brand-soft);color:var(--text-brand)}
.es-btn--soft:hover{background:var(--teal-100)}
.es-btn--danger{background:var(--status-danger-solid);color:var(--text-inverse)}
.es-btn--danger:hover{background:var(--clay-700)}
.es-btn--link{background:transparent;color:var(--text-link);height:auto;padding:0}
.es-btn--link:hover{color:var(--text-link-hover);text-decoration:underline;text-underline-offset:2px}

/* ---------- IconButton ---------- */
.es-iconbtn{display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--radius-pill);color:var(--text-muted);background:transparent;transition:var(--transition-control)}
.es-iconbtn:hover{background:var(--surface-inset);color:var(--text-strong)}
.es-iconbtn:active{transform:scale(var(--press-scale))}
.es-iconbtn:focus-visible{box-shadow:var(--ring-focus)}
.es-iconbtn--sm{width:30px;height:30px}
.es-iconbtn--md{width:38px;height:38px}
.es-iconbtn--lg{width:46px;height:46px}
.es-iconbtn--glass{background:var(--glass-bg-strong);backdrop-filter:var(--glass-blur-soft);-webkit-backdrop-filter:var(--glass-blur-soft);border-color:var(--border-glass);box-shadow:var(--shadow-sm)}
.es-iconbtn--glass:hover{background:var(--n-0)}
.es-iconbtn--solid{background:var(--surface-brand);color:var(--text-on-brand);box-shadow:var(--shadow-brand)}
.es-iconbtn--solid:hover{background:var(--teal-600);color:var(--text-on-brand)}
.es-iconbtn[aria-pressed="true"]{color:var(--text-brand);background:var(--surface-brand-soft)}
.es-iconbtn[disabled]{opacity:.4;pointer-events:none}

/* ---------- Icon ---------- */
.es-icon{display:inline-block;flex:none;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}

/* ---------- Card ---------- */
.es-card{position:relative;border-radius:var(--radius-card);padding:var(--pad-card);transition:box-shadow var(--dur-base) var(--ease-standard),transform var(--dur-base) var(--ease-standard),background-color var(--dur-base) var(--ease-standard)}
.es-card--glass{background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:var(--glass-border);box-shadow:var(--shadow-md),var(--glass-inner)}
.es-card--solid{background:var(--surface-card-solid);border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm)}
.es-card--tinted{background:var(--glass-bg-tinted);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:var(--glass-border);box-shadow:var(--shadow-sm),var(--glass-inner)}
.es-card--outline{background:transparent;border:1px solid var(--border-subtle)}
.es-card--flush{padding:0;overflow:hidden}
.es-card--interactive{cursor:pointer}
.es-card--interactive:hover{box-shadow:var(--shadow-lg),var(--glass-inner);transform:translateY(-2px)}
.es-card--interactive:active{transform:translateY(0) scale(var(--press-scale))}

/* ---------- Badge / Tag ---------- */
.es-badge{display:inline-flex;align-items:center;gap:var(--space-2);height:22px;padding:0 9px;border-radius:var(--radius-chip);font:var(--type-label-sm);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-label);white-space:nowrap}
.es-badge--neutral{background:var(--n-100);color:var(--text-muted)}
.es-badge--brand{background:var(--surface-brand-soft);color:var(--teal-700)}
.es-badge--success{background:var(--status-success-bg);color:var(--status-success-fg)}
.es-badge--warning{background:var(--status-warning-bg);color:var(--status-warning-fg)}
.es-badge--danger{background:var(--status-danger-bg);color:var(--status-danger-fg)}
.es-badge--info{background:var(--status-info-bg);color:var(--status-info-fg)}
.es-badge--solid{background:var(--surface-brand-deep);color:var(--text-inverse)}
.es-badge--glass{background:var(--glass-bg-strong);backdrop-filter:var(--glass-blur-soft);-webkit-backdrop-filter:var(--glass-blur-soft);border:var(--glass-border);color:var(--text-strong)}
.es-badge__dot{width:6px;height:6px;border-radius:var(--radius-pill);background:currentColor;opacity:.75}

.es-tag{display:inline-flex;align-items:center;gap:var(--space-3);height:32px;padding:0 14px;border-radius:var(--radius-chip);border:1px solid var(--border-subtle);background:var(--glass-bg-strong);color:var(--text-body);font:var(--type-label);transition:var(--transition-control)}
.es-tag--clickable{cursor:pointer}
.es-tag--clickable:hover{border-color:var(--border-default);background:var(--n-0);color:var(--text-strong)}
.es-tag[aria-pressed="true"],.es-tag--selected{background:var(--surface-brand);border-color:var(--surface-brand);color:var(--text-on-brand)}
.es-tag__remove{display:inline-flex;opacity:.6;transition:opacity var(--dur-fast) var(--ease-standard)}
.es-tag__remove:hover{opacity:1}

/* ---------- Field shell (Input / Select) ---------- */
.es-field{display:flex;flex-direction:column;gap:var(--space-3)}
.es-field__label{font:var(--type-label);color:var(--text-body)}
.es-field__hint{font:var(--type-body-sm);color:var(--text-subtle)}
.es-field__error{font:var(--type-body-sm);color:var(--status-danger-fg)}
.es-field__wrap{position:relative;display:flex;align-items:center;gap:var(--space-3);background:var(--glass-bg-strong);border:1px solid var(--border-subtle);border-radius:var(--radius-control);padding:0 var(--space-4);transition:var(--transition-control)}
.es-field__wrap:hover{border-color:var(--border-default)}
.es-field__wrap:focus-within{border-color:var(--border-brand);box-shadow:var(--ring-focus);background:var(--n-0)}
.es-field__wrap--sm{height:36px}
.es-field__wrap--md{height:44px}
.es-field__wrap--lg{height:52px}
.es-field__wrap--invalid{border-color:var(--status-danger-solid)}
.es-field__wrap--disabled{background:var(--surface-sunken);border-color:var(--border-subtle);opacity:.7;pointer-events:none}
.es-field__input{flex:1;min-width:0;border:0;background:transparent;outline:none;font:var(--type-body);color:var(--text-strong)}
.es-field__input::placeholder{color:var(--text-disabled)}
.es-field__affix{color:var(--text-subtle);font:var(--type-body-sm);flex:none}
.es-field__select{flex:1;min-width:0;border:0;background:transparent;outline:none;appearance:none;font:var(--type-body);color:var(--text-strong);cursor:pointer}
.es-textarea{min-height:96px;padding:var(--space-4);resize:vertical;line-height:1.55}

/* ---------- Checkbox / Radio / Switch ---------- */
.es-choice{display:inline-flex;align-items:flex-start;gap:var(--space-4);cursor:pointer;font:var(--type-body);color:var(--text-body)}
.es-choice--disabled{opacity:.45;pointer-events:none}
.es-choice__box{flex:none;width:20px;height:20px;margin-top:1px;display:grid;place-items:center;border:1.5px solid var(--border-default);background:var(--n-0);color:transparent;transition:var(--transition-control)}
.es-choice__box--check{border-radius:var(--radius-xs)}
.es-choice__box--radio{border-radius:var(--radius-pill)}
.es-choice:hover .es-choice__box{border-color:var(--teal-400)}
.es-choice__box[data-on="true"]{background:var(--surface-brand);border-color:var(--surface-brand);color:var(--text-on-brand)}
.es-choice__desc{display:block;font:var(--type-body-sm);color:var(--text-subtle);margin-top:2px}
.es-choice__dot{width:8px;height:8px;border-radius:var(--radius-pill);background:currentColor}
.es-switch{position:relative;flex:none;width:44px;height:26px;border-radius:var(--radius-pill);background:var(--n-300);border:1px solid transparent;transition:var(--transition-control)}
.es-switch[data-on="true"]{background:var(--surface-brand)}
.es-switch__knob{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:var(--radius-pill);background:var(--n-0);box-shadow:var(--shadow-xs);transition:transform var(--dur-base) var(--ease-out)}
.es-switch[data-on="true"] .es-switch__knob{transform:translateX(18px)}

/* ---------- Tabs ---------- */
.es-tabs{display:flex;align-items:center;gap:var(--space-2)}
.es-tabs--underline{gap:var(--space-7);border-bottom:1px solid var(--border-hairline)}
.es-tab{position:relative;display:inline-flex;align-items:center;gap:var(--space-3);border:0;background:transparent;color:var(--text-muted);font:var(--type-label);font-weight:var(--weight-medium);transition:var(--transition-control)}
.es-tabs--underline .es-tab{height:42px;padding:0 2px}
.es-tabs--underline .es-tab::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;border-radius:var(--radius-pill);background:transparent;transition:background-color var(--dur-base) var(--ease-standard)}
.es-tabs--underline .es-tab[aria-selected="true"]{color:var(--text-strong)}
.es-tabs--underline .es-tab[aria-selected="true"]::after{background:var(--surface-brand)}
.es-tabs--pill{padding:4px;background:var(--surface-inset);border-radius:var(--radius-pill)}
.es-tabs--pill .es-tab{height:34px;padding:0 16px;border-radius:var(--radius-pill)}
.es-tabs--pill .es-tab[aria-selected="true"]{background:var(--n-0);color:var(--text-strong);box-shadow:var(--shadow-xs)}
.es-tab:hover{color:var(--text-strong)}
.es-tab__count{font:var(--type-label-sm);color:var(--text-subtle)}

/* ---------- Dialog ---------- */
.es-dialog__scrim{position:fixed;inset:0;background:var(--surface-overlay);backdrop-filter:blur(3px);display:grid;place-items:center;padding:var(--space-7);z-index:60;animation:es-fade var(--dur-base) var(--ease-standard)}
.es-dialog{width:100%;background:var(--glass-bg-strong);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:var(--glass-border);border-radius:var(--radius-sheet);box-shadow:var(--shadow-lg),var(--glass-inner);padding:var(--pad-card-lg);animation:es-rise var(--dur-slow) var(--ease-out)}
.es-dialog__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-6);margin-bottom:var(--space-5)}
.es-dialog__title{font:var(--type-h2);letter-spacing:var(--tracking-heading);color:var(--text-strong)}
.es-dialog__desc{font:var(--type-body);color:var(--text-muted);margin-top:var(--space-3);max-width:var(--measure-narrow)}
.es-dialog__foot{display:flex;justify-content:flex-end;gap:var(--space-4);margin-top:var(--space-8)}

/* ---------- Toast ---------- */
.es-toast{display:flex;align-items:flex-start;gap:var(--space-4);min-width:300px;max-width:420px;padding:var(--space-5);border-radius:var(--radius-lg);background:var(--glass-bg-strong);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:var(--glass-border);box-shadow:var(--shadow-lg),var(--glass-inner);animation:es-rise var(--dur-base) var(--ease-out)}
.es-toast__icon{flex:none;margin-top:1px}
.es-toast__title{font:var(--type-label);font-weight:var(--weight-semibold);color:var(--text-strong)}
.es-toast__body{font:var(--type-body-sm);color:var(--text-muted);margin-top:2px}
.es-toast--success .es-toast__icon{color:var(--status-success-solid)}
.es-toast--warning .es-toast__icon{color:var(--status-warning-solid)}
.es-toast--danger .es-toast__icon{color:var(--status-danger-solid)}
.es-toast--info .es-toast__icon{color:var(--status-info-solid)}

/* ---------- Tooltip ---------- */
.es-tooltip{position:relative;display:inline-flex}
.es-tooltip__bubble{position:absolute;z-index:40;padding:6px 10px;border-radius:var(--radius-sm);background:var(--n-900);color:var(--text-inverse);font:var(--type-body-sm);white-space:nowrap;box-shadow:var(--shadow-md);opacity:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease-standard),transform var(--dur-fast) var(--ease-standard)}
.es-tooltip__bubble--top{bottom:calc(100% + 8px);left:50%;transform:translate(-50%,4px)}
.es-tooltip__bubble--bottom{top:calc(100% + 8px);left:50%;transform:translate(-50%,-4px)}
.es-tooltip__bubble--right{left:calc(100% + 8px);top:50%;transform:translate(-4px,-50%)}
.es-tooltip[data-open="true"] .es-tooltip__bubble{opacity:1}
.es-tooltip[data-open="true"] .es-tooltip__bubble--top,.es-tooltip[data-open="true"] .es-tooltip__bubble--bottom{transform:translate(-50%,0)}
.es-tooltip[data-open="true"] .es-tooltip__bubble--right{transform:translate(0,-50%)}

/* ---------- EventCard ---------- */
.es-event{display:flex;flex-direction:column;overflow:hidden}
.es-event__media{position:relative;aspect-ratio:16/10;background:var(--surface-brand-soft);display:grid;place-items:center;color:var(--teal-300)}
.es-event__media img{width:100%;height:100%;object-fit:cover}
.es-event__float{position:absolute;top:var(--space-4);left:var(--space-4);right:var(--space-4);display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}
.es-event__body{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--pad-card)}
.es-event__date{font:var(--type-label-sm);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-brand)}
.es-event__title{font:var(--type-h3);letter-spacing:var(--tracking-heading);color:var(--text-strong)}
.es-event__meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4);font:var(--type-body-sm);color:var(--text-muted)}
.es-event__metaitem{display:inline-flex;align-items:center;gap:var(--space-2)}
.es-event__foot{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) var(--pad-card) var(--pad-card);border-top:1px solid var(--border-hairline);margin-top:auto}
.es-event__price{font:var(--type-label);font-weight:var(--weight-semibold);color:var(--text-strong)}
.es-event--row{flex-direction:row;align-items:stretch}
.es-event--row .es-event__media{width:180px;aspect-ratio:auto;flex:none}

@keyframes es-fade{from{opacity:0}to{opacity:1}}
@keyframes es-rise{from{opacity:0;transform:translateY(10px) scale(.99)}to{opacity:1;transform:none}}
@keyframes es-spin{to{transform:rotate(360deg)}}
