.vibebooking-list { display: grid; gap: 18px; }
.vibebooking-session { border: 1px solid #ddd; border-radius: 12px; padding: 18px; background: #fff; }
.vibebooking-session__head h3 { margin: 0 0 10px; }
.vibebooking-meta { display: flex; flex-wrap: wrap; gap: 10px 16px; font-size: 14px; margin-bottom: 10px; }
.vibebooking-notes { margin: 8px 0 0; }
.vibebooking-form { display: grid; gap: 10px; margin-top: 14px; }
.vibebooking-form input { width: 100%; padding: 10px 12px; }
.vibebooking-form button { padding: 10px 14px; cursor: pointer; }
.vibebooking-notice { padding: 12px 14px; border-radius: 8px; margin-bottom: 16px; }
.vibebooking-notice--success { background: #edf7ed; }
.vibebooking-notice--error { background: #fdecec; }
.vibebooking-full { font-weight: 600; margin-top: 10px; }

.vibebooking-calendar-wrap { display: grid; gap: 12px; }
.vibebooking-calendar-header h3 { margin: 0; }
.vibebooking-calendar-header p { margin: 4px 0 0; }
.vibebooking-calendar-grid { display: grid; grid-template-columns: repeat(var(--vibebooking-calendar-columns, 7), minmax(0, 1fr)); gap: 10px; }
.vibebooking-calendar-weekday { font-weight: 600; font-size: 13px; padding: 6px 8px; }
.vibebooking-calendar-day { min-height: 140px; border: 1px solid #ddd; border-radius: 12px; padding: 10px; background: #fff; }
.vibebooking-calendar-day.is-outside-month { opacity: 0.45; }
.vibebooking-calendar-day.is-today { outline: 2px solid currentColor; outline-offset: -2px; }
.vibebooking-calendar-daynum { font-weight: 700; margin-bottom: 10px; }
.vibebooking-calendar-events { display: grid; gap: 8px; }
.vibebooking-calendar-event { border-radius: 10px; padding: 8px; background: rgba(0,0,0,0.04); display: grid; gap: 3px; font-size: 13px; }
.vibebooking-calendar-event small { opacity: 0.8; }
.vibebooking-calendar-legend { font-size: 13px; opacity: 0.85; }

@media (max-width: 900px) {
  .vibebooking-calendar-grid { gap: 6px; }
  .vibebooking-calendar-day { min-height: 110px; padding: 8px; }
}

@media (max-width: 680px) {
  .vibebooking-calendar-grid--weekdays { display: none; }
  .vibebooking-calendar-grid--days { grid-template-columns: 1fr; }
  .vibebooking-calendar-day { min-height: auto; }
}


.vibebooking-calendar-wrap { --vibebooking-min-day-width: 180px; }
.vibebooking-calendar-daylabel { display: none; font-size: 12px; opacity: 0.7; margin: -6px 0 10px; }
.vibebooking-calendar-wrap.is-auto-fit .vibebooking-calendar-grid--weekdays { display: none; }
.vibebooking-calendar-wrap.is-auto-fit .vibebooking-calendar-grid--days {
  grid-template-columns: repeat(auto-fit, minmax(var(--vibebooking-min-day-width), 1fr));
}
.vibebooking-calendar-wrap.is-auto-fit .vibebooking-calendar-daylabel { display: block; }

@media (max-width: 767px) {
  .vibebooking-calendar-wrap.is-stack-mobile .vibebooking-calendar-grid--weekdays { display: none; }
  .vibebooking-calendar-wrap.is-stack-mobile .vibebooking-calendar-grid--days { grid-template-columns: 1fr; }
  .vibebooking-calendar-wrap.is-stack-mobile .vibebooking-calendar-day { min-height: auto; }
  .vibebooking-calendar-wrap.is-stack-mobile .vibebooking-calendar-daylabel { display: block; }
  .vibebooking-calendar-wrap.is-stack-mobile .vibebooking-calendar-events { gap: 6px; }
}


.vibebooking-calendar-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.vibebooking-calendar-nav { display:inline-flex; align-items:center; gap:6px; text-decoration:none; border:1px solid #ddd; border-radius:10px; padding:8px 12px; background:#fff; }
.vibebooking-calendar-nav:hover { text-decoration:none; }
.vibebooking-calendar-header { text-align:center; flex:1 1 220px; }
.vibebooking-calendar-nav--next { margin-left:auto; }

@media (max-width: 680px) {
  .vibebooking-calendar-toolbar { align-items:stretch; }
  .vibebooking-calendar-nav { justify-content:center; width:100%; }
  .vibebooking-calendar-header { order:-1; width:100%; text-align:left; }
  .vibebooking-calendar-nav--next { margin-left:0; }
}


.vibebooking-calendar-event { text-decoration: none; color: inherit; }
.vibebooking-calendar-event.is-selected { outline: 2px solid currentColor; outline-offset: -2px; }
.vibebooking-detail-wrap { margin-top: 16px; }
.vibebooking-checkbox { display:block; font-size:14px; }
.vibebooking-helper { font-size: 13px; opacity: .8; margin: 0; }
.vibebooking-my-page { display:grid; gap:18px; }
.vibebooking-member-card { border:1px solid #ddd; border-radius:12px; padding:18px; background:#fff; }
.vibebooking-member-actions, .vibebooking-cancel-form { margin-top:12px; }
.vibebooking-member-actions form, .vibebooking-cancel-form { display:inline-block; }
.vibebooking-member-bookings { display:grid; gap:12px; }
.vibebooking-member-booking { border:1px solid #e5e5e5; border-radius:10px; padding:14px; }

.vibebooking-button { display:inline-flex; align-items:center; justify-content:center; gap:8px; border:1px solid #1f2937; border-radius:10px; background:#1f2937; color:#fff; padding:10px 14px; text-decoration:none; cursor:pointer; }
.vibebooking-button--ghost { background:#fff; color:#1f2937; }
.vibebooking-form button { border:1px solid #1f2937; border-radius:10px; background:#1f2937; color:#fff; }
.vibebooking-my-grid { display:grid; grid-template-columns: 1fr 1.4fr; gap:18px; }
.vibebooking-member-card--hero { display:grid; gap:14px; }
.vibebooking-member-hero { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.vibebooking-member-hero h3 { margin:0 0 8px; }
.vibebooking-member-hero p { margin:0; }
.vibebooking-member-hero span { opacity:.75; }
.vibebooking-member-badge { display:inline-flex; align-items:center; padding:8px 12px; border-radius:999px; font-size:13px; font-weight:600; }
.vibebooking-member-badge.is-active { background:#edf7ed; }
.vibebooking-member-badge.is-paused { background:#fff4e5; }
.vibebooking-auth-wrap { max-width:560px; }
.vibebooking-auth-switch { display:flex; gap:8px; margin-bottom:16px; }
.vibebooking-auth-switch a { text-decoration:none; padding:10px 14px; border-radius:10px; border:1px solid #ddd; color:inherit; }
.vibebooking-auth-switch a.is-active { background:#1f2937; color:#fff; border-color:#1f2937; }
.vibebooking-modal-backdrop { position:fixed; inset:0; background:rgba(15,23,42,.55); display:none; align-items:center; justify-content:center; padding:20px; z-index:9999; }
.vibebooking-modal-backdrop:target { display:flex; }
.vibebooking-modal { width:min(720px, 100%); max-height:90vh; overflow:auto; background:#fff; border-radius:18px; padding:18px; box-shadow:0 24px 64px rgba(0,0,0,.22); }
.vibebooking-modal__top { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:10px; }
.vibebooking-modal__top h4 { margin:0; }
.vibebooking-modal__close { text-decoration:none; font-size:28px; line-height:1; color:inherit; }
.vibebooking-session.is-compact { border:none; padding:0; }

@media (max-width: 860px) {
  .vibebooking-my-grid { grid-template-columns: 1fr; }
}

@media (max-width: 680px) {
  .vibebooking-modal { padding:14px; border-radius:14px; }
  .vibebooking-member-actions { display:grid; gap:10px; }
  .vibebooking-member-actions form, .vibebooking-member-actions .vibebooking-button { width:100%; }
  .vibebooking-button { width:100%; }
}


.vibebooking-notice{margin:0 0 16px;padding:12px 14px;border-radius:12px;background:#f5f5f5}
.vibebooking-notice.is-error{background:#fff1f1}
.vibebooking-notice.is-success{background:#eefaf0}
.vibebooking-steps{margin:0;padding-left:18px}
.vibebooking-steps li{margin:0 0 8px}
.vibebooking-inline-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.vibebooking-instructor-form label{display:block;font-weight:600;margin-bottom:4px}
.vibebooking-guide ul{padding-left:18px}
@media (max-width: 767px){.vibebooking-inline-grid{grid-template-columns:1fr}}

.vibebooking-calendar-wrap.is-custom-columns .vibebooking-calendar-grid--weekdays{display:none}
.vibebooking-calendar-dayactions{margin:0 0 10px}
.vibebooking-calendar-add{display:inline-flex;align-items:center;gap:6px;font-size:12px;text-decoration:none;border:1px dashed #cbd5e1;border-radius:999px;padding:4px 8px;background:#fff}
.vibebooking-calendar-add:hover{text-decoration:none}

.vibebooking-calendar-day{position:relative}
.vibebooking-calendar-day.is-instructor-clickable{cursor:pointer}
.vibebooking-calendar-daylink{position:absolute;inset:0;z-index:1;border-radius:12px}
.vibebooking-calendar-day.is-instructor-clickable:hover{box-shadow:0 0 0 2px rgba(0,0,0,.06) inset}
.vibebooking-calendar-daynum,.vibebooking-calendar-daylabel,.vibebooking-calendar-dayactions,.vibebooking-calendar-events{position:relative;z-index:2}
.vibebooking-calendar-event{position:relative;z-index:3}
.vibebooking-calendar-add--disabled{display:inline-block;opacity:.65;pointer-events:none}

.vibebooking-calendar-setup-notice{margin-bottom:4px}

.vibebooking-help-inline{opacity:.8;margin-top:12px}

/* Instructor portal refresh */
.vibebooking-portal{display:grid;gap:20px}
.vibebooking-portal-hero{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,.8fr);gap:24px;align-items:stretch;padding:46px 38px;border-radius:0;background:linear-gradient(135deg,#0f172a 0%,#1f2937 100%);color:#fff;box-shadow:0 18px 40px rgba(15,23,42,.12)}
.vibebooking-portal-hero h2{margin:6px 0 10px;font-size:clamp(28px,4vw,42px);line-height:1.08;color:#fff}
.vibebooking-portal-hero p{margin:8px 0 0;max-width:62ch;color:rgba(255,255,255,.84)}
.vibebooking-portal-hero__actions{display:grid;gap:16px;align-content:space-between;justify-items:start}
.vibebooking-portal-stat{display:inline-grid;gap:2px;padding:18px 20px;border-radius:0;background:rgba(255,255,255,.1);backdrop-filter:blur(6px)}
.vibebooking-portal-stat strong{font-size:30px;line-height:1}
.vibebooking-portal-stat span{font-size:13px;color:rgba(255,255,255,.82)}
.vibebooking-portal-eyebrow{display:inline-flex;align-items:center;padding:6px 10px;border-radius:0;background:rgba(255,255,255,.12);font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.vibebooking-portal-shell{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:20px;align-items:start}
.vibebooking-portal-sidebar,.vibebooking-portal-main{display:grid;gap:20px}
.vibebooking-portal-card{border:1px solid #e5e7eb;border-radius:0;padding:24px;background:#fff;box-shadow:0 12px 30px rgba(15,23,42,.05)}
.vibebooking-portal-card h3,.vibebooking-portal-card h4{margin:0 0 10px}
.vibebooking-portal-cardhead{display:grid;gap:6px;margin-bottom:18px}
.vibebooking-portal-cardhead p{margin:0;color:#475569;max-width:64ch}
.vibebooking-portal-checklist{display:grid;gap:12px;margin:18px 0}
.vibebooking-portal-checklist>div{display:grid;grid-template-columns:34px 1fr;gap:12px;align-items:start}
.vibebooking-portal-checklist span{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:999px;background:#eef2ff;color:#1e3a8a;font-weight:700}
.vibebooking-portal-checklist p{margin:4px 0 0;color:#334155}
.vibebooking-portal-tips{margin:0;padding-left:18px;display:grid;gap:10px;color:#334155}
.vibebooking-portal-form{gap:18px}
.vibebooking-portal-section{display:grid;gap:12px;padding:18px;border:1px solid #e5e7eb;border-radius:0;background:#fafafa}
.vibebooking-portal-section h4{margin:0;font-size:17px}
.vibebooking-inline-grid--equal{grid-template-columns:repeat(2,minmax(0,1fr))}
.vibebooking-portal-form label{display:grid;gap:6px;font-weight:600;color:#111827}
.vibebooking-portal-form input,.vibebooking-portal-form select,.vibebooking-portal-form textarea{width:100%;min-height:48px;padding:12px 14px;border:1px solid #cbd5e1;border-radius:0;background:#fff;font:inherit;box-shadow:none}
.vibebooking-portal-form textarea{min-height:120px;resize:vertical}
.vibebooking-portal-form input:focus,.vibebooking-portal-form select:focus,.vibebooking-portal-form textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 4px rgba(37,99,235,.12)}
.vibebooking-portal-helper{margin:0;color:#64748b}
.vibebooking-portal-formactions{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-top:4px}
.vibebooking-portal-notice{margin:0}
.vibebooking-portal-sessionlist{display:grid;gap:12px}
.vibebooking-portal-sessionrow{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;border:1px solid #e5e7eb;border-radius:0;background:#fff}
.vibebooking-portal-sessionrow strong{display:block;margin-bottom:6px}
.vibebooking-portal-sessionrow .vibebooking-meta{margin:0;color:#475569}
.vibebooking-portal .vibebooking-button{min-height:48px;padding:12px 18px;border-radius:0;font-weight:600}
.vibebooking-portal .vibebooking-button--ghost{background:#fff}

@media (max-width: 1024px){
  .vibebooking-portal-shell{grid-template-columns:1fr}
  .vibebooking-portal-sidebar{order:2}
}
@media (max-width: 820px){
  .vibebooking-portal-hero{grid-template-columns:1fr}
  .vibebooking-portal-hero__actions{justify-items:stretch}
}
@media (max-width: 767px){
  .vibebooking-inline-grid--equal{grid-template-columns:1fr}
  .vibebooking-portal-card,.vibebooking-portal-hero{padding:28px 22px;border-radius:0}
  .vibebooking-portal-formactions{align-items:stretch}
  .vibebooking-portal-formactions .vibebooking-button{width:100%}
  .vibebooking-portal-sessionrow{flex-direction:column;align-items:flex-start}
}


/* Mature instructor portal refinements */
.vibebooking-portal-hero__buttons{display:flex;gap:10px;flex-wrap:wrap}
.vibebooking-quickchips{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.vibebooking-quickchip{appearance:none;border:1px solid #cbd5e1;background:#fff;border-radius:999px;padding:8px 12px;font:inherit;font-size:13px;cursor:pointer;transition:all .18s ease}
.vibebooking-quickchip:hover{border-color:#94a3b8;transform:translateY(-1px)}
.vibebooking-quickchip.is-active{background:#0f172a;color:#fff;border-color:#0f172a;box-shadow:0 8px 20px rgba(15,23,42,.16)}
.vibebooking-live-summary{padding:12px 14px;border-radius:16px;background:#f8fafc;border:1px solid #e2e8f0;max-width:620px;color:#0f172a}
.vibebooking-button--small{min-height:40px;padding:10px 12px;font-size:13px}
.vibebooking-portal-sessionrow__actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.vibebooking-portal-card.vibebooking-portal-formcard{position:relative;overflow:hidden}
.vibebooking-portal-card.vibebooking-portal-formcard::after{content:"";position:absolute;inset:auto -60px -80px auto;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,#dbeafe 0%,rgba(219,234,254,0) 70%);pointer-events:none}
@media (max-width: 767px){.vibebooking-portal-hero__buttons{display:grid}.vibebooking-live-summary{max-width:none}.vibebooking-portal-sessionrow__actions{width:100%}.vibebooking-button--small{width:auto}}
.vibebooking-inline-action{display:inline-flex;margin:0}
.vibebooking-portal-sessionrow__actions form{margin:0}
.vibebooking-repeat-count-wrap.is-hidden{display:none}
.vibebooking-portal-empty{padding:24px;border:1px dashed #cbd5e1;border-radius:0;background:#f8fafc;color:#475569}
.vibebooking-portal-cardhead__meta{display:flex;gap:8px;flex-wrap:wrap}
.vibebooking-portal-formcard .vibebooking-notice{margin-bottom:0}

.vibebooking-portal-stat-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.vibebooking-portal-stat { min-width:0; text-align:left; }
.vibebooking-portal-stat strong { display:block; font-size:1.1rem; line-height:1.2; }
.vibebooking-portal-stat span { display:block; opacity:.72; font-size:.9rem; margin-top:4px; }
.vibebooking-portal-shortcuts { display:grid; gap:10px; }
.vibebooking-portal-toolbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:14px; margin-bottom:16px; }
.vibebooking-portal-filters { display:flex; flex-wrap:wrap; gap:8px; }
.vibebooking-filterchip { border:1px solid #d1d5db; background:#fff; color:#111827; padding:10px 14px; border-radius:999px; cursor:pointer; font:inherit; }
.vibebooking-filterchip.is-active { background:#111827; color:#fff; border-color:#111827; }
.vibebooking-portal-search { min-width:min(100%, 320px); flex:1 1 240px; }
.vibebooking-portal-search input { width:100%; border:1px solid #d1d5db; border-radius:14px; padding:12px 14px; }
.vibebooking-portal-empty { margin:8px 0 0; opacity:.78; }
.vibebooking-portal-sessionrow { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:16px; align-items:start; padding:18px; border:1px solid #e5e7eb; border-radius:18px; background:#fff; box-shadow:0 1px 2px rgba(15,23,42,.04); }
.vibebooking-portal-sessionrow + .vibebooking-portal-sessionrow { margin-top:12px; }
.vibebooking-portal-sessionrow__headline { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-bottom:8px; }
.vibebooking-portal-sessionrow__headline strong { font-size:1.02rem; }
.vibebooking-portal-sessionrow__notes { margin:10px 0 0; color:#4b5563; }
.vibebooking-portal-sessionrow__actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }
.vibebooking-portal-card .vibebooking-button--small { padding:9px 12px; border-radius:12px; }
.vibebooking-portal-shell { align-items:start; }
.vibebooking-live-summary { background:#f8fafc; border:1px solid #e5e7eb; border-radius:14px; padding:12px 14px; }
.vibebooking-modal-backdrop { backdrop-filter: blur(4px); }
.vibebooking-modal { border-radius:22px; box-shadow:0 24px 80px rgba(15,23,42,.24); }

@media (max-width: 980px) {
  .vibebooking-portal-stat-grid { grid-template-columns:1fr 1fr; }
  .vibebooking-portal-sessionrow { grid-template-columns:1fr; }
  .vibebooking-portal-sessionrow__actions { justify-content:flex-start; }
}

@media (max-width: 640px) {
  .vibebooking-portal-stat-grid { grid-template-columns:1fr; }
  .vibebooking-portal-toolbar { align-items:stretch; }
  .vibebooking-portal-search { min-width:100%; }
  .vibebooking-filterchip { flex:1 1 calc(50% - 8px); text-align:center; }
}

/* VibeBooking 2.1 premium calendar + occupancy */
.vibebooking-calendar-view-switch{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-bottom:10px}
.vibebooking-view-chip{display:inline-flex;align-items:center;justify-content:center;padding:8px 12px;border-radius:999px;border:1px solid #d1d5db;background:#fff;color:#111827;text-decoration:none;font-weight:600;font-size:13px}
.vibebooking-view-chip.is-active{background:#111827;color:#fff;border-color:#111827}
.vibebooking-agenda-wrap{display:grid;gap:16px}
.vibebooking-agenda-day{border:1px solid #e5e7eb;border-radius:22px;background:#fff;padding:18px;box-shadow:0 1px 2px rgba(15,23,42,.04)}
.vibebooking-agenda-day__header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px}
.vibebooking-agenda-day__header h4{margin:0;font-size:1.05rem}
.vibebooking-agenda-day__header p{margin:4px 0 0;color:#64748b}
.vibebooking-agenda-list{display:grid;gap:12px}
.vibebooking-agenda-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px;border:1px solid #e5e7eb;border-radius:18px;background:#f8fafc}
.vibebooking-agenda-item__time{display:flex;flex-direction:column;font-weight:700;color:#0f172a;min-width:56px}
.vibebooking-agenda-item__time span{font-weight:500;color:#64748b;font-size:.88rem}
.vibebooking-agenda-item__top{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.vibebooking-agenda-item__top strong{font-size:1rem}
.vibebooking-agenda-item__top span{display:inline-flex;padding:4px 8px;border-radius:999px;background:#e2e8f0;color:#334155;font-size:12px;font-weight:600}
.vibebooking-agenda-item__meta{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px;color:#475569;font-size:.93rem}
.vibebooking-agenda-empty{padding:18px;border-radius:18px;border:1px dashed #cbd5e1;background:#f8fafc;color:#64748b}
.vibebooking-occupancy{margin-top:10px;height:8px;border-radius:999px;background:#e2e8f0;overflow:hidden}
.vibebooking-occupancy span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#0f172a,#334155)}
.vibebooking-calendar-detail{margin-top:18px}
.vibebooking-calendar-detail__head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:12px}
.vibebooking-portal-pill{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;background:#eef2ff;color:#3730a3;font-size:12px;font-weight:700}
.vibebooking-portal-pill.is-waitlist{background:#fff7ed;color:#9a3412}
.vibebooking-portal-sessionrow__main .vibebooking-occupancy{max-width:320px}
.vibebooking-calendar-wrap.is-view-day .vibebooking-agenda-day,
.vibebooking-calendar-wrap.is-view-week .vibebooking-agenda-day{position:relative;overflow:hidden}
.vibebooking-calendar-wrap.is-view-day .vibebooking-agenda-day:before,
.vibebooking-calendar-wrap.is-view-week .vibebooking-agenda-day:before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:linear-gradient(90deg,#0f172a,#475569)}
@media (max-width: 767px){
  .vibebooking-calendar-toolbar{grid-template-columns:1fr;justify-items:stretch}
  .vibebooking-calendar-nav{text-align:center}
  .vibebooking-agenda-day__header,.vibebooking-calendar-detail__head{flex-direction:column}
  .vibebooking-agenda-item{grid-template-columns:1fr;align-items:flex-start}
}


.vibebooking-occurrence-builder{display:none;gap:12px;margin-top:6px}
.vibebooking-occurrence-builder.is-active{display:grid}
.vibebooking-occurrence-builder__head{display:grid;gap:4px}
.vibebooking-occurrence-builder__head strong{font-size:15px;color:#0f172a}
.vibebooking-occurrence-builder__head span{font-size:13px;color:#64748b}
.vibebooking-occurrence-list{display:grid;gap:10px;max-height:320px;overflow:auto;padding-right:4px}
.vibebooking-occurrence-item{display:grid;grid-template-columns:auto 1fr;align-items:start;gap:12px;padding:12px 14px;border:1px solid #e5e7eb;border-radius:16px;background:#fff;cursor:pointer}
.vibebooking-occurrence-item input{margin-top:4px;width:18px;height:18px}
.vibebooking-occurrence-item__body{display:grid;gap:4px}
.vibebooking-occurrence-item__body strong{font-size:15px;color:#111827}
.vibebooking-occurrence-item__meta{font-size:13px;color:#64748b}
.vibebooking-occurrence-badge{display:inline-flex;align-items:center;width:max-content;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:700}
.vibebooking-occurrence-badge--holiday{background:#fef3c7;color:#92400e}
.vibebooking-occurrence-badge--blocked{background:#fee2e2;color:#991b1b}
.vibebooking-occurrence-item.is-blocked{background:#fff5f5;border-color:#fecaca;cursor:not-allowed}
.vibebooking-occurrence-item.is-holiday{border-color:#fde68a}
.vibebooking-occurrence-empty{margin:0}


/* VibeBooking 2.4 series + dashboard polish */
.vibebooking-series-scope select,.vibebooking-series-inline-select{min-height:40px;padding:9px 12px;border:1px solid #cbd5e1;border-radius:12px;background:#fff;font:inherit}
.vibebooking-series-inline-select{max-width:132px}
.vibebooking-booking-panel{margin-top:14px;border-top:1px dashed #dbe2ea;padding-top:12px}
.vibebooking-booking-panel summary{cursor:pointer;font-weight:700;color:#0f172a;list-style:none}
.vibebooking-booking-panel summary::-webkit-details-marker{display:none}
.vibebooking-booking-panel__group{margin-top:10px}
.vibebooking-booking-panel__group ul{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:8px}
.vibebooking-booking-panel__group li{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:10px 12px;border:1px solid #e5e7eb;border-radius:12px;background:#f8fafc}
.vibebooking-booking-panel__group li em{font-style:normal;color:#64748b;font-size:13px;text-align:right}
.vibebooking-calendar-detail{scroll-margin-top:24px;position:relative;overflow:hidden}
.vibebooking-calendar-detail::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:linear-gradient(90deg,#111827,#2563eb)}
.vibebooking-calendar-detail__stats{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 4px}
.vibebooking-calendar-event,.vibebooking-agenda-item .vibebooking-button{transition:transform .16s ease,box-shadow .16s ease,opacity .16s ease}
.vibebooking-calendar-event:hover,.vibebooking-agenda-item .vibebooking-button:hover{transform:translateY(-1px);box-shadow:0 10px 24px rgba(15,23,42,.08)}
html.vibebooking-is-loading-selection .vibebooking-calendar-wrap{opacity:.92}
@media (max-width: 767px){.vibebooking-booking-panel__group li{flex-direction:column}.vibebooking-series-inline-select{max-width:none;width:100%}}


.vibebooking-calendar-event__type{display:inline-flex;align-items:center;align-self:flex-start;padding:3px 8px;border-radius:999px;background:#e2e8f0;color:#334155;font-size:11px;font-weight:700;line-height:1.2}
.vibebooking-calendar-event__title{font-weight:600;color:#0f172a}
.vibebooking-calendar-detail__type,.vibebooking-session__type{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;background:#e2e8f0;color:#334155;font-size:12px;font-weight:700;line-height:1.2;margin-top:8px}
.vibebooking-calendar-detail .vibebooking-session.is-compact .vibebooking-session__head{padding-top:2px}


.vibebooking-booking-form__fields {
  display: grid;
  gap: 12px;
}

.vibebooking-booking-form.is-member {
  display: grid;
  gap: 12px;
}

.vibebooking-booking-form__member-summary {
  display: grid;
  gap: 4px;
  padding: 14px 16px;
  border: 1px solid rgba(15, 23, 42, 0.1);
  border-radius: 14px;
  background: rgba(15, 23, 42, 0.03);
}

.vibebooking-booking-form__member-summary strong {
  font-size: 16px;
}

.vibebooking-booking-form__member-summary span {
  color: #475569;
  font-size: 14px;
}


/* Upcoming sessions widget */
.vibebooking-upcoming{padding:24px;border-radius:24px;background:#f7f7fb;display:grid;gap:20px;overflow:hidden}
.vibebooking-upcoming-head{display:flex;align-items:end;justify-content:space-between;gap:16px}
.vibebooking-upcoming-head h2{margin:0;font-size:clamp(1.5rem,2vw,2.2rem);line-height:1.1}
.vibebooking-upcoming-head p{margin:8px 0 0;opacity:.8;max-width:56ch}
.vibebooking-upcoming-nav{display:flex;gap:10px;flex-shrink:0}
.vibebooking-upcoming-arrow{width:44px;height:44px;border-radius:999px;border:1px solid rgba(0,0,0,.12);background:#fff;cursor:pointer;font-size:28px;line-height:1;display:grid;place-items:center}
.vibebooking-upcoming-track{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(260px,1fr);gap:20px;overflow:auto;padding-bottom:6px;scroll-snap-type:x mandatory;scrollbar-width:thin}
.vibebooking-upcoming-card{scroll-snap-align:start;display:grid;gap:14px;padding:20px;border-radius:22px;background:#fff;border:1px solid rgba(0,0,0,.06);min-height:220px}
.vibebooking-upcoming-card-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.vibebooking-upcoming-time{font-size:1.5rem;font-weight:700;letter-spacing:-.02em}
.vibebooking-upcoming-type{font-size:.8rem;font-weight:600;padding:8px 12px;border-radius:999px;background:rgba(0,0,0,.06)}
.vibebooking-upcoming-card h3{margin:0;font-size:1.25rem;line-height:1.2}
.vibebooking-upcoming-meta{display:flex;flex-wrap:wrap;gap:10px;color:rgba(0,0,0,.68);font-size:.95rem}
.vibebooking-upcoming-status{margin-top:auto;font-weight:600}
.vibebooking-upcoming-link,.vibebooking-upcoming-cta{display:inline-flex;align-items:center;justify-content:center;padding:12px 18px;border-radius:999px;text-decoration:none;font-weight:600}
.vibebooking-upcoming-link{background:#111;color:#fff;width:max-content}
.vibebooking-upcoming-cta-wrap{display:flex;justify-content:flex-start}
.vibebooking-upcoming-cta{background:rgba(0,0,0,.06);color:inherit}
.vibebooking-upcoming-empty{padding:18px 20px;border-radius:18px;background:#fff;border:1px dashed rgba(0,0,0,.14)}
@media (max-width: 1024px){.vibebooking-upcoming-track{grid-auto-columns:minmax(240px,80%)}}
@media (max-width: 767px){.vibebooking-upcoming{padding:18px;border-radius:20px}.vibebooking-upcoming-head{align-items:start;flex-direction:column}.vibebooking-upcoming-track{grid-auto-columns:minmax(220px,88%)}}

/* VibeBooking 2.5.5 phase A */
.vibebooking-calendar-filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px;align-items:center}
.vibebooking-calendar-filters select{min-height:40px;padding:9px 12px;border:1px solid #cbd5e1;border-radius:12px;background:#fff;font:inherit;min-width:180px}
.vibebooking-member-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:16px 0}
.vibebooking-member-stats div{padding:14px 16px;border:1px solid rgba(15,23,42,.08);border-radius:16px;background:rgba(255,255,255,.72);display:grid;gap:4px}
.vibebooking-member-stats strong{font-size:1rem;line-height:1.25;color:#0f172a}
.vibebooking-member-stats span{font-size:13px;color:#64748b}


/* VibeBooking 2.5.6 calendar UX polish */
.vibebooking-calendar-actions{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;margin:0 0 16px}
.vibebooking-calendar-filters--enhanced{margin-bottom:0;flex:1 1 720px}
.vibebooking-calendar-filters--enhanced label{display:grid;gap:6px;font-size:13px;color:#475569}
.vibebooking-calendar-filters__buttons{display:flex;gap:10px;align-items:end}
.vibebooking-calendar-quicklinks{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start}
.vibebooking-calendar-activefilters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 16px}
.vibebooking-calendar-activefilters__label{font-size:13px;color:#64748b;font-weight:600}
.vibebooking-calendar-detail__actions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.vibebooking-member-card__head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px}
.vibebooking-member-card__head h4{margin:0}
.vibebooking-member-card__head a{font-size:13px;font-weight:600}
.vibebooking-member-recommended{display:grid;gap:12px}
.vibebooking-member-recommended .vibebooking-session{margin:0}
.vibebooking-member-booking__links{margin:8px 0 0}
.vibebooking-member-booking__links a{font-size:13px;font-weight:600}
.vibebooking-calendar-wrap .vibebooking-session.is-compact .vibebooking-form{margin-top:12px}
@media (max-width: 767px){
  .vibebooking-calendar-actions{display:grid}
  .vibebooking-calendar-filters--enhanced{grid-template-columns:1fr}
  .vibebooking-calendar-filters--enhanced select{min-width:0;width:100%}
  .vibebooking-calendar-filters__buttons{width:100%;display:grid;grid-template-columns:1fr 1fr}
  .vibebooking-calendar-quicklinks{justify-content:flex-start}
  .vibebooking-member-card__head{align-items:flex-start;flex-direction:column}
}


.vibebooking-booking-panel__summary{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 14px}
.vibebooking-booking-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.vibebooking-booking-row{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:12px 0;border-top:1px solid rgba(0,0,0,.08)}
.vibebooking-booking-row:first-child{border-top:0;padding-top:0}
.vibebooking-booking-row__main{display:flex;flex-direction:column;gap:4px;min-width:0}
.vibebooking-booking-row__name{font-weight:600}
.vibebooking-booking-row__attendance{display:inline-flex;align-self:flex-start;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:600;background:rgba(0,0,0,.06)}
.vibebooking-booking-row__attendance.is-attended{background:rgba(34,197,94,.14)}
.vibebooking-booking-row__attendance.is-no_show{background:rgba(239,68,68,.12)}
.vibebooking-attendance-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.vibebooking-attendance-actions .vibebooking-button.is-active{font-weight:700}
@media (max-width: 782px){.vibebooking-booking-row{flex-direction:column}.vibebooking-attendance-actions{justify-content:flex-start}}

.vibebooking-portal-formactions .vibebooking-button,.vibebooking-portal .vibebooking-button{appearance:none;-webkit-appearance:none;background-image:none;box-shadow:none;filter:none;text-shadow:none}
.vibebooking-portal-formactions .vibebooking-button:hover,.vibebooking-portal .vibebooking-button:hover{transform:none;box-shadow:none}

/* Check-in mode */
.vibebooking-checkin{display:grid;gap:16px}
.vibebooking-checkin__hero{display:flex;align-items:center;justify-content:space-between;gap:16px}
.vibebooking-checkin__session{display:grid;gap:14px}
.vibebooking-checkin__sessionhead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.vibebooking-checkin__sessionhead strong{display:block;font-size:1.05rem}
.vibebooking-checkin__sessionhead span{color:#4b5563}
.vibebooking-checkin__stats{display:flex;gap:10px;flex-wrap:wrap}
.vibebooking-checkin__stats span{display:inline-flex;align-items:center;padding:8px 10px;border:1px solid #dbeafe;background:#eff6ff;color:#1d4ed8;font-weight:600}
.vibebooking-checkin__list{display:grid;gap:10px}
.vibebooking-checkin__row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:14px;border:1px solid #e5e7eb;background:#fff}
.vibebooking-checkin__person{display:grid;gap:4px}
.vibebooking-checkin__person span{color:#6b7280}
.vibebooking-checkin__actions .vibebooking-attendance-actions{justify-content:flex-start}
.vibebooking-checkin__actions .vibebooking-button{min-height:52px;padding:14px 16px;border-radius:0}
@media (max-width: 782px){.vibebooking-checkin__hero,.vibebooking-checkin__row{grid-template-columns:1fr;display:grid}.vibebooking-checkin__actions .vibebooking-attendance-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}}

.vibebooking-meta--single{margin-bottom:6px;color:#475569;font-size:15px}
.vibebooking-meta--single span{display:block}
.vibebooking-session__status,.vibebooking-calendar-detail__availability{font-size:16px;font-weight:700;color:#0f172a}
.vibebooking-session__status{margin:2px 0 10px}
.vibebooking-calendar-detail__stats--clean{margin:10px 0 2px}
.vibebooking-calendar-detail__stats--clean .vibebooking-calendar-detail__availability{display:block}
.vibebooking-calendar-detail .vibebooking-session.is-compact .vibebooking-meta{margin-bottom:4px}

.vibebooking-attendance-feedback{font-size:12px;color:#475569;align-self:center}
.vibebooking-activity-custom-wrap{display:block;margin-top:8px}
