.openfablab-reservations {
  --openfablab-blue: #2d718e;
  --openfablab-ink: #203038;
  --openfablab-border: #d7e2e6;
  color: var(--openfablab-ink);
  font: inherit;
  max-width: 1100px;
  margin: 1.5rem auto;
}
.openfablab-reservations * { box-sizing: border-box; }
.openfablab-reservations [hidden] { display: none !important; }
.openfablab-test-label {
  display: inline-block;
  border: 1px solid #7b628e;
  background: #f5f0fa;
  color: #503561;
  padding: .3rem .65rem;
  border-radius: 999px;
  font-size: .85rem;
  font-weight: 700;
}
.openfablab-animation-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 290px), 1fr)); gap: 1rem; }
.openfablab-card, .openfablab-booking-form {
  background: #fff;
  border: 1px solid var(--openfablab-border);
  border-radius: 16px;
  padding: 1.35rem;
  box-shadow: 0 8px 25px rgba(28, 68, 82, .05);
}
.openfablab-card h3, .openfablab-booking-form h3 { margin: 0 0 .55rem; color: var(--openfablab-ink); }
.openfablab-card p { margin: .45rem 0; }
.openfablab-card { overflow-wrap:anywhere; min-width:0; }
.openfablab-card.is-ended { background:#f1f3f4;border-color:#cdd4d8; }
.openfablab-animation-list>.openfablab-card { display:flex;flex-direction:column; }
.openfablab-card-footer { margin-top:auto;padding-top:1rem; }
.openfablab-card-availability { margin:.35rem 0 .6rem; }
.openfablab-availability-badge { display:inline-block;padding:.28rem .6rem;border-radius:999px;font-size:.9rem;font-weight:650;line-height:1.35;background:#edf5fa;color:#26556b; }
.openfablab-availability-badge.is-waiting { background:#fff3df;color:#795018; }
.openfablab-availability-badge.is-closed { background:#f0f2f3;color:#46535b; }
.openfablab-waiting-detail { color:#46535b;font-size:.9rem; }
.openfablab-card-footer .openfablab-reserve-button { margin-top:0; }
.openfablab-card.is-selected { border-color:#278257; box-shadow:0 0 0 1px #278257,0 8px 25px rgba(39,130,87,.08); background:#f8fcf9; }
.openfablab-selected-summary { margin:0 0 1rem; padding:.7rem .85rem; border-left:3px solid #278257; border-radius:8px; background:#eef7f1; color:#244536; font-size:.93rem; overflow-wrap:anywhere; }
.openfablab-reserve-button { margin-top:.9rem; transition:transform .16s ease,box-shadow .16s ease; }
@media(hover:hover) and (pointer:fine) { .openfablab-reserve-button:not(:disabled):hover { transform:scale(1.025); box-shadow:0 5px 14px rgba(28,68,82,.2); } }
@media(prefers-reduced-motion:reduce) { .openfablab-reserve-button { transition:none; } .openfablab-reserve-button:not(:disabled):hover { transform:none; } }
.openfablab-date { font-weight: 700; }
.openfablab-facts { color: #51646c; }
.openfablab-availability { color: #215e72; font-weight: 700; }
.openfablab-button, .openfablab-secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  border-radius: 10px;
  padding: .65rem 1rem;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
  touch-action: manipulation;
}
.openfablab-button { border: 1px solid var(--openfablab-blue); background: var(--openfablab-blue); color: #fff; }
.openfablab-secondary { border: 1px solid var(--openfablab-border); background: #f6fafb; color: #20556a; }
.openfablab-button:disabled { opacity: .55; cursor: not-allowed; }
.openfablab-reservations button:focus-visible, .openfablab-reservations input:focus-visible, .openfablab-reservations a:focus-visible {
  outline: 3px solid #d19c31;
  outline-offset: 2px;
}
.openfablab-form-host { margin-top: 1.4rem; }
.openfablab-form-host:empty { display: none; }
.openfablab-verification:empty { display:none; }
.openfablab-booking-form h3:focus { outline:none; }
.openfablab-booking-form { max-width: 780px; }
.openfablab-choice, .openfablab-companion { border: 1px solid var(--openfablab-border); border-radius: 12px; margin: 1rem 0; padding: 1rem; }
.openfablab-choice label { display: block; margin: .55rem 0; }
.openfablab-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .85rem; }
.openfablab-field { display: flex; flex-direction: column; gap: .3rem; margin: 0; font-weight: 600; }
.openfablab-field input { width: 100%; min-height: 44px; border: 1px solid #aebdc3; border-radius: 9px; padding: .55rem .7rem; font: inherit; background: #fff; color: #1e2a2e; }
.openfablab-id-block, .openfablab-companion, .openfablab-privacy, .openfablab-verification, .openfablab-hint { grid-column: 1 / -1; }
.openfablab-hint { margin: -.4rem 0 .1rem; color: #51646c; font-size: .88rem; }
.openfablab-id-block .openfablab-secondary { margin-top: .55rem; }
.openfablab-companion[hidden], .openfablab-id-block[hidden], .openfablab-scanner[hidden] { display: none; }
.openfablab-companion { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .85rem; }
.openfablab-companion legend { font-weight: 700; }
.openfablab-privacy { display: block; }
.openfablab-actions { display: flex; flex-wrap: wrap; gap: .7rem; margin-top: 1.2rem; }
.openfablab-feedback, .openfablab-verification { min-height: 1.2em; font-weight: 600; }
.openfablab-scanner video { display: block; width: min(100%, 420px); border-radius: 10px; margin: .6rem 0; }
.openfablab-honeypot { position: absolute !important; width: 1px; height: 1px; opacity: 0; overflow: hidden; pointer-events: none; }
@media (max-width: 620px) {
  .openfablab-reservations { padding: 0 .35rem; }
  .openfablab-fields, .openfablab-companion { grid-template-columns: 1fr; }
  .openfablab-card, .openfablab-booking-form { padding: 1rem; }
}

.openfablab-action-body {
  box-sizing: border-box;
  min-height: 100vh;
  min-height: 100svh;
  margin: 0;
  padding: clamp(1rem, 4vw, 3rem);
  display: grid;
  place-items: center;
  background: #f2f7f8;
  color: #203038;
  font: 1rem/1.5 system-ui, sans-serif;
}
.openfablab-action-body * { box-sizing: border-box; }
.openfablab-action-card {
  width: min(100%, 36rem);
  padding: clamp(1.4rem, 4vw, 2.5rem);
  border: 1px solid #d7e2e6;
  border-radius: 20px;
  background: #fff;
  box-shadow: 0 16px 42px rgba(28, 68, 82, .09);
}
.openfablab-action-logo { display: block; width: min(100%, 240px); height: auto; margin-bottom: 2rem; }
.openfablab-action-card h1 { margin: 0 0 1.2rem; font-size: clamp(1.65rem, 4vw, 2.1rem); line-height: 1.2; }
.openfablab-action-summary {
  padding: .75rem 1.1rem;
  border-radius: 12px;
  background: #edf5f7;
  overflow-wrap: anywhere;
}
.openfablab-action-summary p { margin: .55rem 0; }
.openfablab-action-intro { margin: 1.3rem 0 .8rem; }
.openfablab-action-form { display: flex; flex-wrap: wrap; gap: .75rem; }
.openfablab-state-badge { display:inline-block;background:#e8f5ed;color:#17503b;border-radius:999px;padding:.3rem .65rem;font-size:.88rem;margin:.75rem 0; }
.openfablab-link-details h2 { font-size:1.25rem;line-height:1.4;overflow-wrap:anywhere; }
.openfablab-link-buttons { display:flex;flex-wrap:wrap;gap:.8rem;margin:1rem 0; }
.openfablab-link-buttons form { display:flex;flex-wrap:wrap;gap:.8rem; }
.openfablab-link-buttons label { flex-basis:100%; }
.openfablab-information { display:block;margin:.65rem 0;color:#20556a;text-decoration:underline; }
.openfablab-action-button {
  min-height: 46px;
  padding: .7rem 1rem;
  border: 1px solid #2d718e;
  border-radius: 10px;
  background: #2d718e;
  color: #fff;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}
.openfablab-action-button.is-secondary { background: #fff; color: #20556a; }
.openfablab-action-button:focus-visible { outline: 3px solid #d19c31; outline-offset: 2px; }
.openfablab-action-message { margin: 1.4rem 0 0; padding: 1rem; border-radius: 10px; font-weight: 600; }
.openfablab-action-message.is-success { background: #e8f5ed; color: #17503b; }
.openfablab-action-message.is-error { background: #fceeee; color: #792f34; }
.openfablab-slot-choice { margin-block: 1rem; }
.openfablab-slot-choice select { width: 100%; max-width: 34rem; min-width: 0; min-height: 44px; box-sizing: border-box; }
.openfablab-family-person { display:flex;align-items:center;gap:12px;min-height:48px;padding:12px;border:1px solid #d8e1e5;border-radius:12px;margin-block:10px;overflow-wrap:anywhere; }
.openfablab-family-person input { flex:none;width:20px;height:20px; }
.openfablab-booking-form select { width:100%;min-height:44px;max-width:100%; }
.openfablab-booking-form button { margin:8px 8px 0 0; }
.openfablab-family-person:has(input:checked) { background:#e9f3f6; }
/* Personal email action page: independent of the site's theme and analytics. */
body:has([data-openfablab-link]) { margin:0; padding:24px; background:#f5f7f6; font:16px/1.5 system-ui,sans-serif; color:#253036; }
[data-openfablab-link] { max-width:640px; margin:4vh auto; padding:24px; background:white; border:1px solid #dbe3e5; border-radius:18px; overflow-wrap:anywhere; }
[data-openfablab-link] h1 { font-size:clamp(1.5rem,5vw,2rem); font-weight:600; }
.openfablab-link-buttons { display:grid; gap:16px; }
.openfablab-link-buttons form { display:grid; gap:10px; }
@media(max-width:400px) { body:has([data-openfablab-link]) { padding:12px; } [data-openfablab-link] { padding:16px; } }
.openfablab-entry-choices { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.openfablab-entry-card { padding:16px; border:1px solid #d8e2e5; border-radius:12px; min-width:0; }
.openfablab-entry-card button { width:100%; white-space:normal; }
.openfablab-entry-card p { margin:12px 0 0; }
.openfablab-identification-methods { display:flex; flex-wrap:wrap; gap:12px; margin:12px 0; }
.openfablab-scanner video { display:block; max-width:100%; width:480px; aspect-ratio:4 / 3; object-fit:contain; background:#172b35; border-radius:12px; margin:12px 0; }
.openfablab-scanner button { margin:4px; }
.openfablab-guest-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.openfablab-guest-fields input { min-width:0; box-sizing:border-box; width:100%; }
.openfablab-reservations .openfablab-slot-status{display:block;margin:.25rem 0 .75rem;white-space:normal;overflow-wrap:anywhere;font-size:.9rem}.openfablab-request-summary{border-left:3px solid #b6d7d1;background:#f4faf8;padding:.65rem .85rem;border-radius:8px;margin:.5rem 0 1rem}.openfablab-request-summary p{margin:.3rem 0;overflow-wrap:anywhere}.openfablab-booking-form select{max-width:100%;min-width:0;width:100%;box-sizing:border-box}
@media(max-width:600px) { .openfablab-entry-choices, .openfablab-guest-fields { grid-template-columns:minmax(0,1fr); } }
