.lfv-inline-field { display:flex; align-items:center; flex-wrap:wrap; gap:.65rem; min-width:0; }
.lfv-inline-field > [data-lfv-field-value] { overflow-wrap:anywhere; }
.lfv-inline-field [hidden] { display:none!important; }
.lfv-inline-field input, .lfv-inline-field select { width:100%; min-width:0; box-sizing:border-box; padding:.65rem; border:1px solid #789185; border-radius:.4rem; background:#fff; font:inherit; }
.lfv-field-pencil { flex:none; width:2.6rem; height:2.6rem; padding:0; border:1px solid #c3d3ca; border-radius:50%; background:#f3f7f3; color:#315c45; cursor:pointer; font-size:1.45rem; }
.lfv-field-pencil:focus-visible { outline:3px solid #625ca4; outline-offset:2px; }
.lfv-document-choices { display:flex; flex-wrap:wrap; gap:.75rem; margin:1rem 0; }
.lfv-document-dialog { width:min(92vw,42rem); padding:clamp(1.25rem,4vw,2rem); border:1px solid #c3d3ca; border-radius:1.1rem; color:#263934; box-shadow:0 24px 70px rgba(24,55,39,.28); }
.lfv-document-dialog::backdrop { background:rgba(25,45,36,.62); }
.lfv-document-dialog h3 { margin-top:0; padding-right:2rem; color:#315c45; }
.lfv-document-dialog-close { position:absolute; top:.75rem; right:.75rem; width:2.5rem; height:2.5rem; border:1px solid #c3d3ca; border-radius:50%; background:#fff; color:#315c45; font-size:1.6rem; line-height:1; cursor:pointer; }
.lfv-document-print-actions { display:grid; gap:.65rem; margin:1rem 0; }
.lfv-document-dialog form { display:grid; gap:.65rem; margin-top:1.15rem; padding-top:1.15rem; border-top:1px solid #d9e4dd; }
.lfv-document-dialog input[type="file"] { display:block; width:100%; margin-top:.45rem; padding:.7rem; border:1px solid #789185; border-radius:.45rem; background:#fff; }
.lfv-document-dialog small { display:block; color:#596b62; }
.lfv-document-note { padding:.8rem 1rem; border-left:4px solid #b98b28; background:#fff8e5; }
@media(max-width:600px) { .lfv-own-values { grid-template-columns:1fr!important; } .lfv-own-values dd { margin:0 0 1rem; } }
.lfv-events-intro,
.lfv-panel,
.lfv-portal-section,
.lfv-calendar-section,
.lfv-upcoming-section {
  margin: 0 0 2rem;
}

.lfv-native-calendar{background:#fff;border:1px solid rgba(50,104,79,.2);border-radius:22px;padding:clamp(14px,3vw,28px);box-shadow:0 16px 35px rgba(50,77,61,.08)}
.lfv-calendar-nav{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px;color:#2f654e}
.lfv-calendar-nav a{display:grid;place-items:center;width:40px;height:40px;border:1px solid #c6d8ce;border-radius:50%;text-decoration:none;font-size:1.35rem}
.lfv-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.lfv-calendar-weekday{text-align:center;font-weight:700;color:#547060;padding:6px 2px}
.lfv-calendar-day{min-height:92px;padding:7px;border:1px solid #e1e9e4;border-radius:12px;background:#fbfcfb;overflow:hidden}
.lfv-calendar-day>b{display:block;color:#315f4a;margin-bottom:5px}
.lfv-calendar-day>a{display:block;margin-top:4px;padding:3px 5px;border-radius:6px;background:#edf5f0;color:#315f4a;font-size:.78rem;line-height:1.25;text-decoration:none}
.lfv-calendar-day>a.is-history{background:#f7efe5;color:#71451f;border-left:3px solid #d5a25f}
.lfv-calendar-day.is-today{border-color:#b84e6c;box-shadow:inset 0 0 0 1px #b84e6c}
.lfv-calendar-day.is-empty{background:transparent;border-color:transparent}
.lfv-event-image-placeholder{display:grid;place-items:center;min-height:170px;background:linear-gradient(135deg,#edf6f0,#f8eee5);font-size:3rem}
.lfv-event-detail-image{width:100%;height:auto;border-radius:22px;display:block}
.lfv-event-price{margin:1rem 0;color:#315f4a}
.lfv-booking-form fieldset{margin:0 0 16px}
.lfv-history-archive{margin:clamp(28px,5vw,64px) 0}.lfv-history-head{display:grid;gap:20px;margin-bottom:24px}.lfv-history-head h2{margin:.2rem 0}.lfv-history-years{display:flex;flex-wrap:wrap;gap:8px}.lfv-history-years a{display:inline-flex;align-items:center;justify-content:center;min-width:56px;padding:7px 11px;border:1px solid #c6d8ce;border-radius:999px;text-decoration:none;color:#315f4a;background:#fff}.lfv-history-years a.is-current{background:#315f4a;color:#fff;border-color:#315f4a}.lfv-history-list{display:grid;gap:12px}.lfv-history-item{display:grid;grid-template-columns:minmax(100px,140px) 1fr;gap:18px;padding:18px 20px;border:1px solid #dce8e1;border-left:5px solid #d5a25f;border-radius:14px;background:#fff;box-shadow:0 7px 18px rgba(50,77,61,.05)}.lfv-history-item time{font-weight:800;color:#315f4a}.lfv-history-item h3{margin:0 0 5px}.lfv-history-item p{margin:0;color:#587063}.lfv-history-item ul{display:flex;flex-wrap:wrap;gap:7px 16px;margin:9px 0 0;padding:0;list-style:none;font-size:.9rem}.lfv-history-item li{color:#71451f}.lfv-history-personal{margin-top:28px;padding-top:22px;border-top:1px solid #dce8e1}.lfv-status.is-history{background:#f7efe5;color:#71451f}

@media (max-width:720px){
  .lfv-native-calendar{padding:10px;border-radius:16px;overflow-x:auto}
  .lfv-calendar-grid{min-width:620px}
  .lfv-calendar-day{min-height:78px}
  .lfv-history-item{grid-template-columns:1fr;gap:7px;padding:15px}
}

.lfv-events-intro,
.lfv-panel,
.lfv-portal-section {
  padding: clamp(1.25rem, 4vw, 2.25rem);
  border: 1px solid var(--lfv-line, #d9e4df);
  border-radius: var(--lfv-radius, 26px);
  background: var(--lfv-paper, #fffefb);
  box-shadow: 0 14px 38px rgba(1, 116, 113, .08);
}

.lfv-calendar-section,
.lfv-upcoming-section {
  padding-top: 1rem;
}

.lfv-calendar-section > h2,
.lfv-upcoming-section > h2,
.lfv-portal-section > h2,
.lfv-panel > h2 {
  margin-top: 0;
  font-size: clamp(2rem, 5vw, 3rem);
}

.lfv-notice,
.eme-message-error,
.eme-message-success {
  padding: 1rem 1.15rem;
  margin: 1rem 0;
  border-left: 5px solid var(--lfv-sage, #13af99);
  border-radius: 14px;
  background: var(--lfv-sage-light, #e2f5ef);
}

.lfv-notice-error,
.eme-message-error {
  border-left-color: #b54545;
  background: #fff0ed;
}

.lfv-empty {
  padding: 1.4rem;
  border: 1px dashed var(--lfv-line, #d9e4df);
  border-radius: 18px;
  color: var(--lfv-ink-soft, #536366);
  background: rgba(255, 255, 255, .58);
}

.lfv-event-list,
.lfv-my-events {
  display: grid;
  gap: 1rem;
}

.lfv-event-card,
.lfv-my-event {
  display: flex;
  align-items: center;
  gap: 1.2rem;
  padding: 1.2rem;
  border: 1px solid var(--lfv-line, #d9e4df);
  border-radius: 20px;
  background: var(--lfv-paper, #fffefb);
}

.lfv-event-card:hover {
  border-color: var(--lfv-sage, #13af99);
  box-shadow: 0 12px 30px rgba(1, 116, 113, .09);
}

.lfv-event-image {
  display: block;
  flex: 0 0 clamp(180px, 24vw, 250px);
  overflow: hidden;
  border-radius: 15px;
  background: var(--lfv-sage-light, #e2f5ef);
}

.lfv-event-image img,
.lfv-event-hero img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
}

.lfv-event-image img {
  aspect-ratio: 16 / 10;
  transition: transform .25s ease;
}

.lfv-event-card:hover .lfv-event-image img {
  transform: scale(1.025);
}

.lfv-event-date {
  min-width: 112px;
  padding: .8rem;
  border-radius: 16px;
  color: var(--lfv-berry-dark, #47417f);
  background: #e8e5f7;
  font-weight: 850;
  text-align: center;
}

.lfv-event-date span,
.lfv-event-meta {
  color: var(--lfv-sage-dark, #017471);
  font-size: .82rem;
  font-weight: 850;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.lfv-event-date .lfv-event-start-date,
.lfv-event-date .lfv-event-end-date {
  color: inherit;
  font-size: inherit;
  letter-spacing: normal;
  text-transform: none;
}

.lfv-all-day-0 .lfv-event-all-day,
.lfv-all-day-1 .lfv-event-time,
.lfv-multiday-0 .lfv-event-end-date {
  display: none;
}

.lfv-event-copy h3,
.lfv-my-event h3 {
  margin: 0 0 .35rem;
  font-size: 1.45rem;
}

.lfv-event-copy h3 a,
.lfv-my-event h3 a {
  color: var(--lfv-ink, #243538);
  text-decoration: none;
}

.lfv-event-copy p {
  margin: 0;
  color: var(--lfv-ink-soft, #536366);
}

.lfv-text-link {
  color: var(--lfv-berry, #625ca4);
  font-weight: 800;
}

.lfv-event-detail .lfv-event-meta {
  margin-bottom: .4rem;
}

.lfv-event-hero {
  overflow: hidden;
  margin-bottom: 1.5rem;
  border-radius: clamp(18px, 3vw, 30px);
  background: var(--lfv-sage-light, #e2f5ef);
}

.lfv-event-hero img {
  max-height: 620px;
}

.lfv-event-detail h1 {
  margin-bottom: 1.2rem;
  font-size: clamp(2.7rem, 7vw, 5rem);
}

.lfv-event-place,
.lfv-event-notes {
  margin-bottom: 2rem;
}

.lfv-booking-panel {
  padding: clamp(1.2rem, 4vw, 2rem);
  border-radius: 22px;
  background: var(--lfv-sage-light, #e2f5ef);
}

.lfv-booking-panel:empty {
  display: none;
}

.lfv-booking-panel h2 {
  margin-top: 0;
}

.lfv-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.lfv-field,
.lfv-form p {
  margin: 0;
}

.lfv-field {
  min-width: 0;
}

.lfv-field-wide {
  grid-column: 1 / -1;
}

.lfv-field label,
.lfv-fieldset legend {
  display: block;
  margin-bottom: .35rem;
  font-weight: 800;
}

.lfv-field input:not([type="checkbox"]),
.lfv-field select,
.lfv-field textarea,
.lfv-copy-row input,
.lfv-panel #loginform input[type="text"],
.lfv-panel #loginform input[type="password"] {
  width: 100%;
  min-height: 50px;
  padding: .7rem .85rem;
  border: 1px solid #b9cac5;
  border-radius: 12px;
  background: #fff;
  color: var(--lfv-ink, #243538);
}

.lfv-field textarea {
  min-height: 150px;
  resize: vertical;
}

.lfv-field input:focus,
.lfv-field select:focus,
.lfv-field textarea:focus,
.lfv-copy-row input:focus {
  outline: 3px solid rgba(19, 175, 153, .23);
  border-color: var(--lfv-sage-dark, #017471);
}

.lfv-fieldset {
  padding: 1rem;
  border: 1px solid var(--lfv-line, #d9e4df);
  border-radius: 18px;
}

.lfv-payment-fieldset {
  padding: 1.15rem;
}

.lfv-payment-fieldset legend {
  padding: 0 .35rem;
  color: var(--lfv-forest, #274f42);
  font-weight: 850;
}

.lfv-payment-options {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .75rem;
}

.lfv-payment-option {
  position: relative;
  display: grid;
  grid-template-columns: 1.35rem 2.7rem minmax(0, 1fr);
  align-items: center;
  gap: .7rem;
  min-height: 78px;
  padding: .8rem .9rem;
  border: 2px solid var(--lfv-line, #d9e4df);
  border-radius: 16px;
  background: #fff;
  color: var(--lfv-ink, #243538);
  cursor: pointer;
  transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}

.lfv-payment-option:hover {
  border-color: #7ea695;
}

.lfv-payment-option:has(input:checked) {
  border-color: var(--lfv-sage-dark, #017471);
  background: #f0faf5;
  box-shadow: 0 0 0 3px rgba(1, 116, 113, .12);
}

.lfv-payment-option:focus-within {
  outline: 3px solid rgba(19, 175, 153, .23);
  outline-offset: 2px;
}

.lfv-payment-option > input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.lfv-payment-radio {
  width: 1.15rem;
  height: 1.15rem;
  border: 2px solid #7a9188;
  border-radius: 50%;
  background: #fff;
  box-shadow: inset 0 0 0 3px #fff;
}

.lfv-payment-option input:checked + .lfv-payment-radio {
  border-color: var(--lfv-sage-dark, #017471);
  background: var(--lfv-sage-dark, #017471);
}

.lfv-payment-brand {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.7rem;
  height: 2.7rem;
  border-radius: 10px;
  background: #e9f3ee;
  color: var(--lfv-forest, #274f42);
  font-size: .72rem;
  font-weight: 900;
}

.lfv-payment-brand.is-paypal {
  background: #fff;
}

.lfv-payment-brand.is-paypal img {
  display: block;
  width: 2.25rem;
  height: 2.25rem;
  object-fit: contain;
}

.lfv-payment-brand.is-sepa {
  background: #e7f0ff;
  color: #174ea6;
  letter-spacing: -.03em;
}

.lfv-payment-option-copy {
  display: block;
  min-width: 0;
}

.lfv-payment-option-copy strong,
.lfv-payment-option-copy small {
  display: block;
}

.lfv-payment-option-copy strong {
  color: var(--lfv-forest, #274f42);
  font-size: 1rem;
}

.lfv-payment-option-copy small {
  margin-top: .12rem;
  color: var(--lfv-ink-soft, #536366);
  font-size: .82rem;
  line-height: 1.35;
}

.lfv-payment-option.is-test::after {
  position: absolute;
  top: .45rem;
  right: .55rem;
  padding: .16rem .42rem;
  border-radius: 999px;
  background: #fff3d7;
  color: #825d00;
  content: "Test";
  font-size: .65rem;
  font-weight: 850;
  text-transform: uppercase;
}

.lfv-help {
  display: block;
  margin-top: .35rem;
  color: var(--lfv-ink-soft, #536366);
  font-size: .86rem;
}

.lfv-checkbox label {
  display: flex;
  align-items: flex-start;
  gap: .65rem;
  font-weight: 500;
}

.lfv-checkbox input {
  width: 1.2rem;
  height: 1.2rem;
  margin-top: .25rem;
}

.lfv-checkbox span {
  min-width: 0;
}

.lfv-honeypot {
  position: absolute !important;
  left: -10000px !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
}

.lfv-dashboard-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1.5rem;
  margin-bottom: 2rem;
}

.lfv-dashboard-head h2 {
  margin: 0;
  font-size: clamp(2.4rem, 6vw, 4rem);
}

.lfv-dashboard-head p {
  margin-bottom: 0;
}

.lfv-my-event {
  justify-content: space-between;
}

.lfv-event-booking-actions {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: flex-end;
  gap: .65rem;
}

.lfv-event-booking-actions .lfv-transfer-download {
  display: inline-flex;
  align-items: center;
  min-height: 38px;
  padding: .55rem .8rem;
  border: 1px solid var(--lfv-sage-dark, #017471);
  border-radius: 999px;
  color: var(--lfv-sage-dark, #017471);
  background: #fff;
  font-size: .82rem;
  font-weight: 800;
  line-height: 1.15;
  text-decoration: none;
}

.lfv-event-booking-actions .lfv-transfer-download:hover,
.lfv-event-booking-actions .lfv-transfer-download:focus {
  color: #fff;
  background: var(--lfv-sage-dark, #017471);
}

.lfv-status {
  flex: 0 0 auto;
  padding: .35rem .7rem;
  border-radius: 999px;
  font-size: .78rem;
  font-weight: 850;
  text-transform: uppercase;
}

.lfv-status.is-ok {
  color: #07594f;
  background: #d5f4eb;
}

.lfv-status.is-open {
  color: #6e4c00;
  background: #fff0b8;
}

.lfv-copy-row {
  display: flex;
  gap: .65rem;
  margin: 1rem 0;
}

.lfv-copy-row input {
  min-width: 0;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: .82rem;
}

.lfv-calendar-subscription details {
  margin-top: 1.2rem;
}

.lfv-calendar-subscription summary {
  cursor: pointer;
  font-weight: 800;
}

.lfv-panel #loginform label {
  display: block;
  font-weight: 800;
}

.lfv-panel #loginform .login-submit input,
.eme_submit_button {
  display: inline-flex;
  padding: .82rem 1.25rem;
  border: 2px solid var(--lfv-berry, #625ca4);
  border-radius: 999px;
  background: var(--lfv-berry, #625ca4);
  color: #fff;
  font-weight: 800;
  cursor: pointer;
}

.lfv-own-section > summary,
.lfv-portal-section details > summary {
  cursor: pointer;
  font-weight: 700;
  color: var(--lfv-green, #315f4a);
  padding: .6rem 0;
}
.lfv-own-values { display: grid; grid-template-columns: minmax(8rem, 1fr) minmax(0, 2fr); gap: .6rem 1rem; }
.lfv-own-values dt { font-weight: 600; }
.lfv-own-values dd { margin: 0; overflow-wrap: anywhere; }
.lfv-own-request { padding: 1rem 0; border-bottom: 1px solid var(--lfv-line, #d9e4df); }
@media (max-width: 540px) { .lfv-own-values { grid-template-columns: minmax(0, 1fr); } .lfv-own-values dd { margin-bottom: .6rem; } }

table.eme-calendar-table {
  overflow: hidden;
  border: 1px solid var(--lfv-line, #d9e4df);
  border-collapse: separate;
  border-spacing: 0;
  border-radius: 18px;
  background: var(--lfv-paper, #fffefb);
}

table.eme-calendar-table th,
table.eme-calendar-table td {
  padding: .55rem;
  border-color: var(--lfv-line, #d9e4df);
}

table.eme-calendar-table ul {
  padding-left: 1rem;
  margin: .35rem 0 0;
}

@media (max-width: 720px) {
  .lfv-form-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .lfv-field-wide {
    grid-column: auto;
  }

  .lfv-event-card,
  .lfv-my-event,
  .lfv-dashboard-head,
  .lfv-copy-row {
    align-items: stretch;
    flex-direction: column;
  }

  .lfv-event-date {
    min-width: 0;
    text-align: left;
  }

  .lfv-event-image {
    flex-basis: auto;
    width: 100%;
  }

  .lfv-status {
    align-self: flex-start;
  }

  .lfv-event-booking-actions {
    align-items: flex-start;
    flex-direction: column;
  }

  .lfv-payment-options {
    grid-template-columns: minmax(0, 1fr);
  }

  table.eme-calendar-table {
    font-size: .78rem;
  }

  table.eme-calendar-table th,
  table.eme-calendar-table td {
    padding: .25rem;
  }
}
