.grb-form { max-width: 520px; display: grid; gap: 14px; }
.grb-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.grb-field { display: grid; gap: 6px; margin: 0; }
.grb-field span { font-weight: 600; font-size: .95em; }
.grb-form input, .grb-form select, .grb-form textarea { width: 100%; box-sizing: border-box; padding: 10px 12px; font: inherit; border: 1px solid #c8c8c8; border-radius: 6px; background: #fff; color: inherit; }
.grb-form input:focus, .grb-form select:focus, .grb-form textarea:focus { outline: 2px solid currentColor; outline-offset: 1px; }
.grb-button { padding: 12px 18px; font: inherit; font-weight: 600; border: 0; border-radius: 6px; cursor: pointer; }
.grb-button:disabled { opacity: .6; cursor: progress; }
.grb-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; opacity: 0; }
.grb-msg { margin: 0; min-height: 1.4em; }
.grb-msg.grb-error { color: #b3261e; }
.grb-msg.grb-ok { color: #1b6e3a; }
@media (max-width: 480px) { .grb-row { grid-template-columns: 1fr; } }
.grb-total { margin: 0; font-weight: 600; }
.grb-total[hidden], .grb-people[hidden] { display: none !important; }
.grb-member-msg { min-height: 1.2em; font-size: .9em; }
.grb-member-msg.grb-error { color: #b3261e; }
.grb-member-msg.grb-ok { color: #1b6e3a; }
/* ---- calendar ---- */
.grb-cal { --grb-accent: var(--e-global-color-primary, #2f5d8a); border: 1px solid #d9d9d9; border-radius: 10px; padding: 14px; display: grid; gap: 10px; }
.grb-cal[hidden], .grb-slots-wrap[hidden], .grb-manual[hidden] { display: none !important; }
.grb-cal-title { font-weight: 600; font-size: .95em; }
.grb-cal-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.grb-cal-month { font-weight: 600; font-size: 1.05em; text-align: center; flex: 1; }
.grb-cal-prev, .grb-cal-next { width: 40px; height: 40px; border: 1px solid #d9d9d9; border-radius: 50%; background: #fff; color: inherit; font-size: 22px; line-height: 1; cursor: pointer; padding: 0; }
.grb-cal-prev:disabled, .grb-cal-next:disabled { opacity: .35; cursor: default; }
.grb-cal-grid { display: grid; gap: 4px; }
.grb-cal-row { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.grb-cal-dow span { text-align: center; font-size: .78em; text-transform: uppercase; letter-spacing: .03em; opacity: .65; padding: 2px 0; }
.grb-cal-day { aspect-ratio: 1 / 1; min-height: 38px; border: 0; border-radius: 8px; background: transparent; color: inherit; font: inherit; cursor: pointer; padding: 0; }
.grb-cal-day:disabled { opacity: .3; cursor: default; }
.grb-cal-day.grb-has { background: color-mix(in srgb, var(--grb-accent) 12%, #fff); font-weight: 600; }
.grb-cal-day.grb-has:hover { background: color-mix(in srgb, var(--grb-accent) 22%, #fff); }
.grb-cal-day.grb-today { box-shadow: inset 0 0 0 1px currentColor; }
.grb-cal-day.grb-sel, .grb-cal-day.grb-sel:hover { background: var(--grb-accent); color: #fff; }
.grb-cal-day:focus-visible, .grb-slot:focus-visible, .grb-cal-prev:focus-visible, .grb-cal-next:focus-visible { outline: 2px solid var(--grb-accent); outline-offset: 2px; }
.grb-cal-status { margin: 0; font-size: .9em; min-height: 1.3em; }
.grb-cal-status.grb-ok { color: inherit; font-weight: 600; }
.grb-loading .grb-cal-grid { opacity: .5; }
.grb-slots-wrap { display: grid; gap: 8px; border-top: 1px solid #eee; padding-top: 10px; }
.grb-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: 8px; }
.grb-slot { display: grid; gap: 2px; justify-items: center; padding: 9px 6px; border: 1px solid #cfcfcf; border-radius: 8px; background: #fff; color: inherit; font: inherit; cursor: pointer; }
.grb-slot:hover { border-color: var(--grb-accent); }
.grb-slot[aria-pressed="true"] { background: var(--grb-accent); border-color: var(--grb-accent); color: #fff; }
.grb-slot-time { font-weight: 600; }
.grb-slot-left { font-size: .78em; opacity: .8; }
