/* ==========================================================
   Educational Excellence 2027 – Pre-registration landing page
   ========================================================== */

:root {
  --edex27-navy: #081a44;
  --edex27-cream: #f2ebe2;
  --edex27-gold: #fcdc9a;
  --edex27-sand: #dac29a;
  --edex27-blue: #255ea0;
  --edex27-link: #2f6fd6;
  --edex27-error: #d0312d;
  /* Shared by every "Pre-register" button (header, banner, footer) */
  --edex27-btn-width: 160px;
  --edex27-btn-height: 46px;
  --edex27-btn-font: 700 19px/1 "Helvetica Neue", Helvetica, Arial, sans-serif;
}

body {
  background: var(--edex27-cream);
  padding-top: 62px;
}

/* ---------- Header (overrides custom.css for this page only) ---------- */
.fixed-header {
  padding: 8px 6.5%;
}

.fixed-header .logo {
  height: 38px;
}

.fixed-header .register-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--edex27-btn-width);
  height: var(--edex27-btn-height);
  padding: 0;
  font: var(--edex27-btn-font);
  letter-spacing: 0;
}

.edex27 {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  color: var(--edex27-navy);
  overflow-x: hidden;
}

.edex27 p { margin: 0; }

.edex27-container {
  max-width: 1120px;
  margin: 0 auto;
  padding: 0 20px;
}

.edex27-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

/* ---------- Hero ---------- */
.edex27-hero-banner {
  position: relative;
}

/* Banner art already contains the event title. Showing it at full width
   anchored to the bottom crops the rounded top corners so it sits flush
   under the header while keeping the rounded bottom corners. */
.edex27-hero-art {
  aspect-ratio: 1920 / 806;
  /* 78% keeps the sun clear below the logo and the horizon at ~61% of the height,
     as in the design. That crops the image's own rounded bottom corners, so the
     corners are rounded here instead. */
  background: url('../images/edex27/banner.webp') no-repeat center 78% / 100% auto;
  border-radius: 0 0 4.5vw 4.5vw;
}

/* Event logo, centred over the banner art (the banner image itself has no title) */
.edex27-hero-title {
  position: absolute;
  top: 12.8%;
  left: 50%;
  width: 45.7%;
  margin: 0;
  transform: translateX(-50%);
  line-height: 0;
}

.edex27-hero-title img {
  display: block;
  width: 100%;
  height: auto;
}

.edex27-hero-meta {
  position: absolute;
  top: 38%;
  left: 0;
  right: 0;
}

.edex27-hero-meta-item {
  position: absolute;
  display: flex;
  align-items: flex-start;
  gap: 2.2vw;
}

.edex27-hero-date { left: 17.6%; }
.edex27-hero-location { left: 59.6%; gap: .1vw; }

.edex27-hero-icon {
  width: 3vw;
  height: 3vw;
  max-width: 52px;
  max-height: 52px;
  flex-shrink: 0;
  color: var(--edex27-navy);
}

.edex27-hero-label {
  font-size: clamp(14px, 1.58vw, 28px);
  font-weight: 800;
  letter-spacing: .5px;
  text-transform: uppercase;
  line-height: 1.05;
}

.edex27-hero-value {
  font-size: clamp(12px, 1.5vw, 26px);
  font-weight: 700;
  line-height: 1.25;
  margin-top: .15em !important;
}

.edex27-hero-location .edex27-hero-value { font-size: clamp(11px, 1.3vw, 23px); }

/* Opening hours: secondary to the date, so smaller and lighter */
.edex27-hero-value.edex27-hero-time {
  font-size: clamp(11px, 1.2vw, 21px);
  font-weight: 600;
  margin-top: .3em !important;
}

.edex27-partners {
  position: absolute;
  /* a little below the horizon line of the banner art, as in the design */
  top: 66.9%;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2vw;
  padding: .85vw 1.87vw;
  /* translucent cream: the mosaic shows faintly through, as in the design */
  background: rgba(242, 235, 226, .8);
  border-radius: 999px;
  white-space: nowrap;
}

.edex27-partners img { width: auto; display: block; }
.edex27-partners .edex27-partner-gpts { height: 4.08vw; max-height: 60px; }
.edex27-partners .edex27-partner-isf { height: 3.2vw; max-height: 46px; }
.edex27-partners .edex27-partner-cometa { height: 1.79vw; max-height: 25.5px; }
.edex27-partners .edex27-partner-giunti { height: 2.4vw; max-height: 36px; }
.edex27-partners .edex27-partner-ws { height: 3.6vw; max-height: 52px; }


.edex27-bar-btn {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--edex27-btn-width);
  height: var(--edex27-btn-height);
  margin: calc(var(--edex27-btn-height) / -2) auto 0;
  background: var(--edex27-navy);
  color: #fff;
  font: var(--edex27-btn-font);
  border-radius: 999px;
  text-decoration: none;
  transition: box-shadow .3s ease, color .3s ease;
}

.edex27-bar-btn:hover,
.edex27-bar-btn:focus {
  color: var(--edex27-gold);
  text-decoration: none;
  box-shadow: 0 8px 20px rgba(8, 26, 68, .25);
}

/* ---------- Previous editions ---------- */
.edex27-previous {
  padding: 36px 20px 0;
  text-align: center;
}

.edex27-outline-btn {
  display: inline-flex;
  align-items: center;
  gap: 18px;
  padding: 11px 24px 11px 34px;
  border: 2.5px solid var(--edex27-navy);
  border-radius: 999px;
  color: var(--edex27-navy);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: .3px;
  text-transform: uppercase;
  text-decoration: none;
  transition: background-color .3s ease, color .3s ease;
}

.edex27-outline-btn svg {
  width: 26px;
  height: 20px;
  transition: transform .3s ease;
}

.edex27-outline-btn:hover,
.edex27-outline-btn:focus {
  background: var(--edex27-navy);
  color: #fff;
  text-decoration: none;
}

.edex27-outline-btn:hover svg { transform: translateX(4px); }

/* ---------- Highlights ---------- */
.edex27-highlights {
  padding: 56px 0 70px;
}

.edex27-section-title {
  font-size: 22px;
  font-weight: 600;
  text-transform: uppercase;
  text-align: center;
  margin: 0 0 34px;
  color: var(--edex27-navy);
}

.edex27-highlights-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  max-width: 900px;
  margin: 0 auto;
}

.edex27-highlight {
  text-align: center;
  padding: 4px 16px;
}

.edex27-highlight + .edex27-highlight {
  border-left: 1px solid var(--edex27-navy);
}

.edex27-highlight img {
  height: 82px;
  width: auto;
  max-width: 120px;
  object-fit: contain;
  margin-bottom: 26px;
}

.edex27-highlight h3 {
  font-size: 14px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .3px;
  margin: 0 0 20px;
  color: var(--edex27-navy);
}

.edex27-highlight p {
  font-size: 14px;
  font-weight: 600;
  line-height: 1.2;
}

/* ---------- Date & Location card ---------- */
.edex27-info {
  padding: 0 0 60px;
}

.edex27-info-card {
  display: grid;
  grid-template-columns: 1fr 1.3fr;
  max-width: 1090px;
  margin: 0 auto;
  border: 3px solid var(--edex27-blue);
  border-radius: 36px;
  padding: 22px 30px 30px;
}

.edex27-info-item {
  text-align: center;
}

.edex27-info-item img {
  height: 60px;
  width: auto;
  margin-bottom: 14px;
}

.edex27-info-item h3 {
  font-size: 22px;
  font-weight: 600;
  text-transform: uppercase;
  margin: 0 0 4px;
  color: var(--edex27-navy);
}

.edex27-info-item p {
  font-size: 14px;
  font-weight: 700;
  line-height: 1.25;
}

.edex27-info-item p.edex27-info-time {
  font-size: 13px;
  font-weight: 500;
  margin-top: 3px;
}

/* ---------- Footer CTA ---------- */
.edex27-footer {
  background: url('../images/edex27/footer_bg.webp') no-repeat center top / 100% 100%;
  padding: 7vw 0 50px;
  text-align: center;
}

.edex27-footer-logo {
  width: 100%;
  max-width: 380px;
  height: auto;
  margin-bottom: 36px;
}

.edex27-footer-title {
  font-size: 42px;
  font-weight: 700;
  margin: 0 0 30px;
  color: var(--edex27-navy);
}

/* Footer button: same look as the banner "Pre-register" button, without the overlap */
.edex27-cta-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--edex27-btn-width);
  height: var(--edex27-btn-height);
  margin: 0 auto;
  background: var(--edex27-navy);
  color: #fff;
  font: var(--edex27-btn-font);
  border-radius: 999px;
  text-decoration: none;
  transition: box-shadow .3s ease, color .3s ease;
}

.edex27-cta-btn:hover,
.edex27-cta-btn:focus {
  color: var(--edex27-gold);
  text-decoration: none;
  box-shadow: 0 8px 20px rgba(8, 26, 68, .25);
}

/* ---------- Pre-registration modal ---------- */
/* custom.css sets `.modal { max-width: 1000px !important }` for the jquery-modal
   popups on the 2026 home page, which would shrink and off-centre this Bootstrap
   modal (and put its scrollbar in the middle of the screen) - so it is reset here.
   The modal is otherwise standard: fixed, page scroll locked behind it, and when
   it is taller than the window the modal itself scrolls, with its scrollbar at
   the window edge exactly where the page scrollbar was. */
.edex27-modal.modal {
  max-width: none !important;
  /* Bootstrap adds inline padding to compensate for the page scrollbar, but does
     not update it when the form grows and the modal gets its own scrollbar. */
  padding: 0 !important;
  font-family: "Poppins", sans-serif;
  overscroll-behavior: contain;
}

.edex27-modal .modal-dialog {
  display: flex;
  align-items: center;
  width: calc(100% - 32px);
  max-width: 1000px;
  min-height: calc(100vh - 3.5rem);
  margin: 1.75rem auto;
}

/* Transparent so the header image's own rounded corners are not backed by a
   white square; the white area is the body below. */
.edex27-modal .modal-content {
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--edex27-navy);
}

.edex27-modal-header {
  position: relative;
  aspect-ratio: 1245 / 160;
  min-height: 64px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: url('../images/edex27/modal_header.webp') no-repeat center / 100% 100%;
}

.edex27-modal-logo {
  width: 30%;
  min-width: 180px;
  margin-top: 1%;
}

/* The logo file includes the tagline; the design shows only the wordmark */
.edex27-wordmark {
  height: auto;
  aspect-ratio: 1506 / 200;
  object-fit: cover;
  object-position: top;
}

.edex27-modal-close {
  position: absolute;
  top: 50%;
  right: 3.5%;
  transform: translateY(-50%);
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, .75);
  color: var(--edex27-navy);
  font-size: 26px;
  line-height: 1;
  cursor: pointer;
}

.edex27-modal-close:hover { background: #fff; }

.edex27-modal-body {
  --edex27-pad-x: 50px;
  padding: 30px var(--edex27-pad-x) 26px;
  background: #fff;
  border-radius: 0 0 44px 44px;
}

.edex27-form-title {
  font-size: 17px;
  font-weight: 600;
  line-height: 1.3;
  margin: 0 0 4px;
  color: var(--edex27-navy);
}

.edex27-form-note {
  font-size: 15px;
  color: #444;
  margin: 0 0 22px;
}

.edex27-participant + .edex27-participant {
  margin-top: 8px;
  padding-top: 22px;
  border-top: 1px solid #e3ddd3;
}

.edex27-participant-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 18px;
}

.edex27-participant-title {
  font-size: 16px;
  font-weight: 600;
  margin: 0;
  color: #444;
}

.edex27-remove-participant {
  padding: 0;
  border: 0;
  background: none;
  color: #d7403a;
  font-size: 14px;
  cursor: pointer;
}

/* Inputs and labels: same look as the /register page (Bootstrap form-control) */
.edex27-modal label.col-form-label {
  font-size: 15px;
  color: #444;
}

.edex27-modal .form-group { margin-bottom: 17px; }

.edex27-modal .form-control {
  height: 35px;
  padding: 6px 12px;
  font-size: 14px;
  line-height: 21px;
  color: #495057;
  border: 1px solid #ced4da;
  border-radius: 4px;
}

.edex27-modal .form-control.is-invalid { border-color: var(--edex27-error); }

.edex27-field-error {
  display: block;
  color: var(--edex27-error);
  font-size: 12px;
  line-height: 1.3;
  margin-top: 3px;
}

.edex27-field-error:empty { display: none; }

.edex27-add-participant {
  padding: 0;
  border: 0;
  background: none;
  color: #2487ce;
  font-size: 15px;
  cursor: pointer;
}

.edex27-add-participant:hover { text-decoration: underline; }

.edex27-form-error {
  color: var(--edex27-error);
  font-size: 14px;
  margin: 10px 0 0;
  text-align: center;
}

.edex27-form-error:empty { display: none; }

.edex27-submit-wrap {
  text-align: center;
  margin-top: 22px;
}

.edex27-submit-btn {
  min-width: 170px;
  height: 42px;
  padding: 0 30px;
  border: 0;
  border-radius: 999px;
  background: var(--edex27-navy);
  color: #fff;
  font-size: 16px;
  font-weight: 600;
  cursor: pointer;
  transition: box-shadow .3s ease, color .3s ease;
}

.edex27-submit-btn:hover { color: var(--edex27-gold); box-shadow: 0 6px 16px rgba(8, 26, 68, .25); }
.edex27-submit-btn:disabled { opacity: .7; cursor: wait; }

/* ---- Steps: form -> "Book in your calendar" ---- */
.edex27-steps {
  position: relative;
  overflow: hidden;
  /* the clip box spans the full white area, so steps slide in from the modal's
     real edge instead of being cut off at the content margin */
  margin: 0 calc(-1 * var(--edex27-pad-x));
  padding: 0 var(--edex27-pad-x);
  transition: height .5s ease;
}

.edex27-steps-track {
  display: flex;
  align-items: flex-start;
  transition: transform .65s cubic-bezier(.65, 0, .25, 1);
}

.edex27-steps.is-calendar .edex27-steps-track { transform: translateX(-100%); }

/* used to jump (open / reset) without animating */
.edex27-steps.no-anim,
.edex27-steps.no-anim .edex27-steps-track { transition: none; }

.edex27-step {
  position: relative;
  flex: 0 0 100%;
  min-width: 0;
  padding-bottom: 14px;   /* room for the Submit button's hover shadow */
  visibility: visible;
}

/* The step that is off-screen is hidden once the slide has finished, so it can
   never peek in at the edge or be tabbed to. */
.edex27-step.is-inactive {
  visibility: hidden;
  transition: visibility 0s linear .65s;
}

.edex27-steps.no-anim .edex27-step.is-inactive { transition: none; }

/* ---- Loader shown while the form is saved ---- */
.edex27-loading {
  position: absolute;
  top: -4px;
  right: -4px;
  bottom: -4px;
  left: -4px;
  z-index: 5;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  background: rgba(255, 255, 255, .88);
  border-radius: 12px;
  opacity: 0;
  visibility: hidden;
  transition: opacity .25s ease, visibility 0s linear .25s;
}

.edex27-step.is-loading .edex27-loading {
  opacity: 1;
  visibility: visible;
  transition-delay: 0s;
}

.edex27-loading p {
  margin: 0;
  font-size: 15px;
  font-weight: 500;
  color: var(--edex27-navy);
}

.edex27-spinner {
  width: 46px;
  height: 46px;
  border: 4px solid rgba(8, 26, 68, .15);
  border-top-color: var(--edex27-navy);
  border-radius: 50%;
  animation: edex27-spin .8s linear infinite;
}

@keyframes edex27-spin { to { transform: rotate(360deg); } }

/* ---- Step 2: Book in your calendar ---- */
.edex27-calendar-step {
  text-align: center;
  padding: 6px 0 4px;
}

.edex27-check {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 58px;
  height: 58px;
  margin-bottom: 14px;
  border-radius: 50%;
  background: var(--edex27-navy);
  color: var(--edex27-gold);
}

.edex27-check svg { width: 30px; height: 30px; }

.edex27-calendar-step .edex27-form-title {
  font-size: 22px;
  outline: none;
}

.edex27-cal-sub {
  max-width: 520px;
  margin: 8px auto 0;
  font-size: 15px;
  color: #444;
}

.edex27-cal-heading {
  margin: 30px 0 4px;
  font-size: 18px;
  font-weight: 600;
  color: var(--edex27-navy);
}

.edex27-cal-event {
  margin: 0 0 20px;
  font-size: 14px;
  color: #444;
}

.edex27-cal-buttons {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 14px;
}

.edex27-cal-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-width: 200px;
  padding: 11px 24px;
  border: 2px solid var(--edex27-navy);
  border-radius: 999px;
  background: #fff;
  color: var(--edex27-navy);
  font-size: 15px;
  font-weight: 600;
  text-decoration: none;
  transition: background-color .25s ease, color .25s ease, transform .25s ease;
}

.edex27-cal-btn .fa { font-size: 20px; line-height: 1; }

.edex27-cal-btn:hover,
.edex27-cal-btn:focus {
  background: var(--edex27-navy);
  color: #fff;
  text-decoration: none;
  transform: translateY(-2px);
}

.edex27-cal-done {
  margin-top: 26px;
  padding: 0;
  border: 0;
  background: none;
  color: #081a44;
  font-size: 15px;
  cursor: pointer;
}

.edex27-cal-done:hover { text-decoration: underline; }

@media (prefers-reduced-motion: reduce) {
  .edex27-steps,
  .edex27-steps-track,
  .edex27-step.is-inactive { transition: none; }
  .edex27-cal-btn:hover,
  .edex27-cal-btn:focus { transform: none; }
}

/* ---------- Responsive ---------- */
@media (max-width: 991px) {
  /* Overlay text gets too small on narrow screens: stack it under the art.
     The art is shown in full (taller), so the sun stays visible under the logo. */
  .edex27-hero-art {
    aspect-ratio: 1899 / 1009;
    background-position: center bottom;
    border-radius: 0;   /* the image's own rounded bottom corners are visible again */
  }

  .edex27-hero-title {
    top: 9%;
    width: 62%;
  }

  .edex27-hero-meta,
  .edex27-partners {
    position: static;
    transform: none;
  }

  .edex27-hero-meta {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 18px 44px;
    padding: 24px 20px 0;
  }

  .edex27-hero-meta-item,
  .edex27-hero-location {
    position: static;
    gap: 14px;
  }

  .edex27-hero-label { font-size: 17px; }
  .edex27-hero-value,
  .edex27-hero-location .edex27-hero-value { font-size: 14px; }

  .edex27-hero-icon {
    width: 30px;
    height: 30px;
  }

  .edex27-partners {
    width: max-content;
    max-width: calc(100% - 32px);
    margin: 22px auto 0;
    flex-wrap: wrap;
    gap: 12px 16px;
    padding: 7px 20px;
    border-radius: 34px;
    background: #e4dbcf;   /* sits on the cream page here, so it needs a solid, slightly darker tone */
    white-space: normal;
  }

  .edex27-partners .edex27-partner-gpts { height: 50px; max-height: none; }
  .edex27-partners .edex27-partner-isf { height: 36px; max-height: none; }
  .edex27-partners .edex27-partner-cometa { height: 20px; max-height: none; }
  .edex27-partners .edex27-partner-giunti { height: 29px; max-height: none; }
  .edex27-partners .edex27-partner-ws { height: 46px; max-height: none; }

  .edex27-bar-btn { margin-top: 22px; }

  .edex27-footer { padding-top: 90px; }
  .edex27-footer-title { font-size: 32px; }

  .edex27-modal-body { --edex27-pad-x: 30px; padding: 26px var(--edex27-pad-x) 22px; }
}

@media (min-width: 576px) and (max-width: 991px) {
  .edex27-modal .form-group.row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto auto;
    grid-auto-flow: column;
  }

  .edex27-modal .form-group.row > * {
    flex: none;
    max-width: none;
  }

  .edex27-modal label.col-form-label { padding-bottom: 4px; }
}

@media (max-width: 768px) {
  .fixed-header { padding: 8px 16px; }
  body { padding-top: 54px; }
  .fixed-header .logo { height: 26px; }

  /* custom.css hides the header button on small screens; on this page it stays,
     in a compact size, so "Pre-register" is always one tap away */
  .fixed-header .register-btn {
    display: inline-flex !important;
    width: auto;
    height: 36px;
    padding: 0 16px;
    font-size: 14px;
    white-space: nowrap;
  }

  /* 16px inputs stop iOS Safari zooming the page when a field is focused */
  .edex27-modal .form-control {
    height: 40px;
    font-size: 16px;
  }
}

@media (max-width: 640px) {
  .edex27-highlights-grid {
    grid-template-columns: 1fr;
    row-gap: 30px;
  }

  .edex27-highlight + .edex27-highlight {
    border-left: 0;
    border-top: 1px solid var(--edex27-navy);
    padding-top: 30px;
  }

  .edex27-info-card {
    grid-template-columns: 1fr;
    row-gap: 26px;
    border-radius: 28px;
    padding: 24px 18px;
  }

  .edex27-outline-btn { font-size: 13px; padding: 10px 18px 10px 24px; }

  /* Phones: a tall banner (cropped at the sides, centred on the sun) so the date,
     location and sponsors sit on the art as on desktop. The date/location sit in
     the sky between the logo and the sun; the sponsors sit on the water below it. */
  .edex27-hero-art {
    aspect-ratio: auto;
    height: clamp(600px, 192vw, 760px);
    background-size: cover;
    background-position: center bottom;
    border-radius: 0 0 28px 28px;
  }

  .edex27-hero-title { width: min(72%, 300px); }

  .edex27-hero-meta {
    position: absolute;
    top: 20%;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: center;
    gap: 14px;
    width: max-content;
    max-width: calc(100% - 32px);
    margin: 0;
    padding: 0;
    text-align: center;
  }

  /* icon above its text, so each item is centred on its own */
  .edex27-hero-meta-item, .edex27-hero-location {
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
  }

  .edex27-hero-icon { width: 26px; height: 26px; }
  .edex27-hero-value,
  .edex27-hero-location .edex27-hero-value { font-size: 13px; }
  .edex27-hero-value.edex27-hero-time { font-size: 12px; margin-top: 2px !important; }

  .edex27-partners {
    position: absolute;
    top: 69%;
    left: 50%;
    transform: translateX(-50%);
    margin: 0;
    background: rgba(242, 235, 226, .88);
  }

  .edex27-bar-btn { margin-top: calc(var(--edex27-btn-height) / -2); }

  .edex27-highlights { padding: 44px 0 50px; }
  .edex27-info { padding-bottom: 44px; }

  .edex27-footer-logo { max-width: 260px; }
  .edex27-footer-title { font-size: 26px; }

  .edex27-modal-body { --edex27-pad-x: 20px; padding: 22px var(--edex27-pad-x) 20px; border-radius: 0 0 28px 28px; }
  .edex27-form-title { font-size: 16px; }
  .edex27-modal .form-group { margin-bottom: 0; }
  .edex27-modal .form-group > .col-sm-4 { margin-bottom: 14px; }
  .edex27-modal label.col-form-label { padding-bottom: 2px; }
  .edex27-calendar-step .edex27-form-title { font-size: 19px; }
  .edex27-cal-buttons { flex-direction: column; align-items: stretch; }
  .edex27-cal-btn { min-width: 0; }
}

/* Small phones */
@media (max-width: 380px) {
  .fixed-header { padding: 8px 12px; }
  .fixed-header .logo { height: 21px; }
  .fixed-header .register-btn { height: 32px; padding: 0 12px; font-size: 13px; }

  .edex27-partners { gap: 10px 14px; padding: 7px 14px; max-width: calc(100% - 20px); }
  .edex27-partners .edex27-partner-gpts { height: 42px; }
  .edex27-partners .edex27-partner-isf { height: 30px; }
  .edex27-partners .edex27-partner-cometa { height: 17px; }
  .edex27-partners .edex27-partner-giunti { height: 24px; }
  .edex27-partners .edex27-partner-ws { height: 38px; }

  .edex27-outline-btn { gap: 10px; padding: 10px 14px 10px 16px; font-size: 12px; letter-spacing: 0; }
  .edex27-outline-btn svg { width: 22px; }

  .edex27-footer-title { font-size: 23px; }
  .edex27-modal .modal-dialog { width: calc(100% - 16px); margin: .75rem auto; min-height: calc(100vh - 1.5rem); }
  .edex27-modal-logo { min-width: 150px; }
}

/* Very wide screens: let the banner overlays grow a little further */
@media (min-width: 2000px) {
  .edex27-hero-icon { max-width: 64px; max-height: 64px; }
  .edex27-hero-label { font-size: 34px; }
  .edex27-hero-value { font-size: 32px; }
  .edex27-hero-location .edex27-hero-value { font-size: 28px; }
  .edex27-hero-value.edex27-hero-time { font-size: 26px; }

  .edex27-partners .edex27-partner-gpts { max-height: 78px; }
  .edex27-partners .edex27-partner-isf { max-height: 60px; }
  .edex27-partners .edex27-partner-cometa { max-height: 34px; }
  .edex27-partners .edex27-partner-giunti { max-height: 46px; }
  .edex27-partners .edex27-partner-ws { max-height: 68px; }
}
