/* HarborBeat — premium events styling. Apple-aesthetic, mobile-first. */

/* ---- Event listing card: image thumbnail + overlaid date badge ---- */
.hb-card-event{height:100%}
.hb-card-event .hb-card-event-link{align-items:stretch;height:100%}
/* Uniform card heights regardless of title/venue length: title fixed to 2 lines,
   meta to 1 line, tags pinned to the bottom. */
.hb-card-event .hb-card-body{display:flex;flex-direction:column;gap:.35rem;min-width:0}
.hb-card-event .hb-card-title{
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  min-height:2.6em;margin:.1rem 0 0;font-size:1rem;line-height:1.3}
.hb-card-event .hb-card-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.hb-card-event .hb-event-tags{margin-top:auto;display:flex;flex-wrap:wrap;gap:.3rem}
.hb-event-thumb{position:relative;flex:0 0 120px;min-height:104px;background:#e9edf3;overflow:hidden}
/* Blurred backdrop fills the box; the real image sits on top fully contained,
   so portrait AND landscape posters show whole (never cropped). */
.hb-event-thumb::before{content:"";position:absolute;inset:0;background-image:var(--thumb-bg);
  background-size:cover;background-position:center;filter:blur(14px) brightness(.92);transform:scale(1.25)}
.hb-event-thumb img{position:relative;z-index:1;width:100%;height:100%;object-fit:contain;display:block}
.hb-event-date-badge{position:absolute;top:8px;left:8px;display:flex;flex-direction:column;align-items:center;
  line-height:1;background:rgba(255,255,255,.95);border-radius:10px;padding:.28rem .5rem;box-shadow:0 1px 5px rgba(0,0,0,.18)}
.hb-event-date-badge .hb-event-mon{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--blue)}
.hb-event-date-badge .hb-event-day{font-size:1.1rem;font-weight:800;color:var(--ink)}
/* No image: center the date badge on the gradient panel. */
.hb-event-thumb-empty .hb-event-date-badge{position:static;background:none;box-shadow:none;justify-content:center;height:100%;padding:0}
.hb-event-thumb-empty{display:flex;align-items:center;justify-content:center}
.hb-event-thumb-empty .hb-event-day{font-size:1.5rem}

/* ---- Email capture on events index / organizer head (brings users back) ---- */
.hb-events-news{margin-top:1.1rem;max-width:460px}
.hb-events-news-lead{display:block;font-size:.92rem;font-weight:600;color:var(--ink-2);margin-bottom:.5rem}
.hb-events-news-lead i{color:var(--blue)}
/* Left-align (override the homepage .hb-news-form { margin:auto } centering). */
.hb-events-news .hb-news-form{margin:0;max-width:430px}
.hb-org-news{margin:.6rem 0 0;max-width:460px}
.hb-events-news .input-group,.hb-org-news .input-group{max-width:430px}

/* ---- Detail hero ---- */
.hb-event-hero-wrap{position:relative;border-radius:var(--r-lg);overflow:hidden;background:#e9edf3;height:clamp(280px,42vw,460px)}
.hb-event-hero-wrap::before{content:"";position:absolute;inset:0;background-image:var(--hero-bg);
  background-size:cover;background-position:center;filter:blur(26px) brightness(.88);transform:scale(1.25)}
.hb-event-hero{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:contain;display:block}
.hb-event-hero-status{position:absolute;top:1rem;left:1rem;font-size:.85rem;z-index:2}
.hb-event-subhead{color:var(--muted);font-size:1.02rem;margin:.4rem 0 0}
.hb-event-subhead i{color:var(--blue)}

/* ---- Pills (extra tones) ---- */
.hb-pill-purple{background:rgba(106,27,154,.1);color:#6a1b9a}
.hb-pill-red{background:rgba(200,30,30,.12);color:#c81e1e}
.hb-pill-amber{background:rgba(224,165,43,.16);color:#9a6b00}

/* ---- Weather badge ---- */
.hb-event-weather{margin-top:1rem;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;
  background:linear-gradient(135deg,#eef5ff,#f5f5f7);border:1px solid #e4ecf7;border-radius:var(--r);
  padding:.7rem 1rem;font-size:.98rem;color:var(--ink)}
.hb-event-weather i{font-size:1.3rem;color:var(--blue)}
.hb-event-weather .hb-wx-note{color:var(--muted);font-size:.8rem}

/* ---- Sticky action card ---- */
.hb-event-action{padding:1.15rem 1.15rem 1.25rem}
.hb-event-action .hb-event-when{display:flex;align-items:center;gap:.85rem;padding-bottom:1rem;margin-bottom:1rem;border-bottom:1px solid #ececf0}
.hb-event-action .hb-event-date-lg{flex:0 0 58px;width:58px;border-radius:14px;background:linear-gradient(135deg,#eef2f8,#e1e8f3);padding:.5rem 0}
.hb-event-action .btn{border-radius:12px}
.hb-rec-note{font-size:.8rem;color:#6a1b9a;font-weight:500}
/* Price as a clear highlighted row */
.hb-price{display:flex;align-items:center;justify-content:center;font-size:1.3rem;font-weight:800;color:var(--ink);
  background:var(--bg-2);border-radius:12px;padding:.55rem .9rem;margin:0 0 .9rem;letter-spacing:-.01em}

/* RSVP toggles — self-contained (no Bootstrap .btn/.active so text never goes
   white-on-white). Two equal options; the chosen one fills in. */
.hb-rsvp-group{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:.8rem}
.hb-rsvp-btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
  font-size:.92rem;font-weight:600;line-height:1;padding:.7rem .6rem;cursor:pointer;
  border:1.5px solid #d2d2d7;border-radius:12px;background:#fff;color:var(--ink);transition:background .15s,border-color .15s,color .15s}
.hb-rsvp-btn:hover{border-color:#9a9aa0}
.hb-rsvp-btn:disabled{opacity:.6;cursor:default}
.hb-rsvp-going.is-on{background:#34c759;border-color:#34c759;color:#fff}
.hb-rsvp-interested.is-on{background:var(--gold);border-color:var(--gold-2);color:#3a2a00}

/* Attendee avatars */
.hb-rsvp-meta{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.8rem;flex-wrap:wrap}
.hb-avatars{display:flex}
.hb-av{width:30px;height:30px;border-radius:50%;border:2px solid #fff;margin-left:-8px;object-fit:cover;
  background:var(--bg-2);display:inline-flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:700;color:var(--ink-2)}
.hb-avatars .hb-av:first-child{margin-left:0}
.hb-av-initial{background:linear-gradient(135deg,#dfe7f5,#eef1f6)}

/* Capacity bar */
.hb-capacity{height:7px;border-radius:var(--r-pill);background:var(--bg-2);overflow:hidden;margin-bottom:.3rem}
.hb-capacity-bar{height:100%;background:linear-gradient(90deg,var(--blue),#34c759);border-radius:var(--r-pill)}

/* Add-to-calendar dropdown */
.hb-cal-add{position:relative;margin-top:.4rem}
.hb-cal-menu{display:flex;flex-direction:column;gap:.2rem;margin-top:.4rem;padding:.4rem;
  background:#fff;border:1px solid #e6e6ea;border-radius:var(--r);box-shadow:0 8px 24px rgba(0,0,0,.08)}
.hb-cal-menu a{display:flex;align-items:center;gap:.5rem;padding:.5rem .6rem;border-radius:var(--r-sm);
  font-size:.9rem;color:var(--ink)}
.hb-cal-menu a:hover{background:var(--bg-2)}

/* Venue map */
.hb-event-map{height:180px;border-radius:var(--r);overflow:hidden;margin-bottom:.6rem;z-index:0}

/* ---- Upcoming dates list ---- */
.hb-date-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}
.hb-date-row{display:flex;align-items:center;gap:.8rem;padding:.6rem .8rem;background:var(--bg-2);border-radius:var(--r)}
.hb-date-info{flex:1;font-size:.95rem}
.hb-date-add{margin-left:auto;font-size:.85rem;font-weight:600;color:var(--blue);white-space:nowrap}
.hb-date-add:hover{color:var(--blue-hover)}

/* ---- Related news / nearby businesses ---- */
.hb-mini-link{display:block;padding:.5rem .7rem;border-radius:var(--r-sm);background:var(--bg-2);color:var(--ink);font-size:.95rem}
.hb-mini-link:hover{background:#ececf0;color:var(--blue)}
.hb-mini-link i{color:var(--blue);margin-right:.35rem}
.hb-near-biz{display:flex;flex-wrap:wrap;gap:.5rem}
.hb-near-chip{display:inline-flex;align-items:center;gap:.45rem;padding:.45rem .8rem;border:1px solid #e6e6ea;
  border-radius:var(--r-pill);font-size:.9rem;color:var(--ink);background:#fff}
.hb-near-chip:hover{border-color:var(--blue);color:var(--blue)}
.hb-near-chip img{width:22px;height:22px;border-radius:50%;object-fit:cover}

/* ---- Content sections (organizer / related news / nearby) ---- */
.hb-event-section{margin-top:2.2rem;padding-top:1.75rem;border-top:1px solid #ececf0}
.hb-event-engage{margin-top:1.9rem;padding-top:1.5rem;border-top:1px solid #ececf0}
.hb-event-faq,.hb-event-dates{margin-top:2.2rem !important;padding-top:1.75rem;border-top:1px solid #ececf0}
/* Refined sub-section heading — small, calm, with a leading accent icon and
   generous space beneath it (airy but compact). */
.hb-event-h{font-size:1.08rem;font-weight:600;letter-spacing:-.015em;color:var(--ink);
  margin:0 0 1rem;display:flex;align-items:center;gap:.5rem;line-height:1.2}
.hb-event-h i{color:var(--blue);font-size:1.02rem}

/* Organizer card */
.hb-organizer-card{display:flex;align-items:center;gap:.8rem;background:var(--bg-2);border-radius:var(--r);padding:.85rem 1rem}
.hb-organizer-ava{flex:0 0 42px;width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#0071e3,#34a0ff);color:#fff;font-size:1.15rem}
.hb-organizer-info{display:flex;flex-direction:column;line-height:1.35;min-width:0}
.hb-organizer-info strong,.hb-organizer-name{color:var(--ink);font-size:1rem;font-weight:700}
.hb-organizer-name:hover{color:var(--blue)}
.hb-organizer-links{font-size:.86rem;color:var(--muted)}
.hb-organizer-links a{color:var(--blue);font-weight:600}
.hb-organizer-links a:hover{color:var(--blue-hover)}
.hb-organizer-links i{font-size:.72rem}

/* Organizer profile page */
.hb-org-head{display:flex;align-items:center;gap:1rem;margin-top:.4rem}
.hb-org-avatar{flex:0 0 60px;width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#0071e3,#34a0ff);color:#fff;font-size:1.7rem;font-weight:700}
.hb-org-head h1{margin:0 0 .15rem}
.hb-org-past{opacity:.72}
.hb-org-past .hb-card-event:hover{opacity:1}
.hb-org-about{margin-bottom:2rem}
.hb-org-intro{color:var(--ink-2);font-size:1.05rem;line-height:1.65;margin:0 0 1.1rem}
.hb-org-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.1rem}
.hb-org-tags .hb-pill{text-decoration:none}
.hb-org-tags .hb-pill:hover{filter:brightness(.96)}
.hb-org-sub{display:inline-flex;align-items:center;gap:.4rem;font-size:.88rem;font-weight:600;color:var(--blue)}
.hb-org-sub:hover{color:var(--blue-hover)}

/* Related news — image + title rows */
.hb-relnews{display:flex;flex-direction:column;gap:.5rem}
.hb-relnews-item{display:flex;align-items:center;gap:.75rem;padding:.5rem;border:1px solid #ececf0;border-radius:var(--r);
  background:#fff;color:var(--ink);transition:border-color .15s,background .15s}
.hb-relnews-item:hover{border-color:var(--blue);background:#fafbfe;color:var(--ink)}
.hb-relnews-thumb{flex:0 0 64px;width:64px;height:48px;border-radius:8px;background:var(--bg-2) center/cover no-repeat}
.hb-relnews-thumb-ph{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:1.1rem}
.hb-relnews-title{flex:1;font-weight:600;font-size:.95rem;line-height:1.3;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hb-relnews-chev{color:var(--muted);font-size:.85rem;flex:0 0 auto}

/* Nearby business chip placeholder icon */
.hb-near-chip-ph{width:22px;height:22px;border-radius:50%;background:var(--bg-2);display:inline-flex;align-items:center;justify-content:center;color:var(--muted);font-size:.7rem}

/* ---- FAQ accordion ---- */
.hb-accordion{display:flex;flex-direction:column;gap:.5rem}
.hb-acc-item{border:1px solid #e6e6ea;border-radius:var(--r);overflow:hidden;background:#fff}
.hb-acc-head{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.5rem;
  background:none;border:none;padding:.85rem 1rem;font-weight:600;font-size:.98rem;text-align:left;cursor:pointer;color:var(--ink)}
.hb-acc-head i{transition:transform .2s}
.hb-acc-item.open .hb-acc-head i{transform:rotate(180deg)}
.hb-acc-body{max-height:0;overflow:hidden;transition:max-height .25s ease;padding:0 1rem}
.hb-acc-item.open .hb-acc-body{max-height:600px;padding:0 1rem 1rem}
.hb-acc-body p{margin:0;color:var(--ink-2)}

/* ---- Index: featured strip ---- */
.hb-featured-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.hb-featured-card{position:relative;display:flex;flex-direction:column;justify-content:flex-end;min-height:170px;
  border-radius:var(--r-lg);padding:1rem;color:#fff;background:linear-gradient(135deg,#0b2545,#13315c);
  background-size:cover !important;background-position:center !important;overflow:hidden}
.hb-featured-card:hover{color:#fff;transform:translateY(-2px);transition:transform .15s}
.hb-featured-badge{position:absolute;top:.7rem;left:.7rem;font-size:.72rem;font-weight:700;background:var(--gold);
  color:#3a2a00;border-radius:var(--r-pill);padding:.2rem .6rem}
.hb-featured-badge i{font-size:.7rem}
.hb-featured-meta{font-size:.8rem;opacity:.9}
.hb-featured-title{font-weight:700;font-size:1.05rem;line-height:1.25;letter-spacing:-.01em}

/* ---- Index: toolbar + view toggle ---- */
.hb-events-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}
.hb-result-count{color:var(--muted);font-size:.95rem}
.hb-result-count strong{color:var(--ink)}
.hb-view-toggle{display:inline-flex;background:var(--bg-2);border-radius:var(--r-pill);padding:.2rem}
.hb-view-btn{border:none;background:none;border-radius:var(--r-pill);padding:.4rem .9rem;font-size:.88rem;font-weight:600;
  color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;gap:.35rem}
.hb-view-btn.active{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.1)}

/* ---- Index: date group headers ---- */
.hb-date-head{font-size:1.05rem;font-weight:700;color:var(--ink);letter-spacing:-.01em;
  margin:.6rem 0 -.2rem;padding-bottom:.4rem;border-bottom:1px solid #ececf0}

/* ---- Filter rail ---- */
.hb-filter-title{display:flex;align-items:center;gap:.4rem;font-weight:700}
/* Date inputs don't shrink below their intrinsic width — stack them so the
   narrow sidebar never overflows. */
.hb-date-range{display:flex;flex-direction:column;gap:.45rem}
.hb-filter input[type=date]{min-width:0;width:100%;max-width:100%}

/* ---- Calendar grid ---- */
.hb-cal-head{display:flex;align-items:center;justify-content:center;gap:1.2rem;margin-bottom:.8rem}
.hb-cal-head strong{font-size:1.1rem}
.hb-cal-nav{border:1px solid #e6e6ea;background:#fff;border-radius:50%;width:34px;height:34px;font-size:1.2rem;
  line-height:1;cursor:pointer;color:var(--ink)}
.hb-cal-nav:hover{border-color:var(--blue);color:var(--blue)}
.hb-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.hb-cal-dow{text-align:center;font-size:.72rem;font-weight:700;color:var(--muted);text-transform:uppercase;padding:.3rem 0}
.hb-cal-cell{min-height:92px;border:1px solid #eee;border-radius:var(--r-sm);padding:.3rem;background:#fff;overflow:hidden}
.hb-cal-empty{background:transparent;border:none}
.hb-cal-today{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue) inset}
.hb-cal-num{font-size:.78rem;font-weight:700;color:var(--ink-2)}
.hb-cal-today .hb-cal-num{color:var(--blue)}
.hb-cal-ev{display:block;font-size:.68rem;line-height:1.25;margin-top:2px;padding:1px 4px;border-radius:4px;
  background:rgba(0,113,227,.1);color:#0a4ea3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hb-cal-ev.free{background:rgba(52,199,89,.14);color:#1a7a3a}
.hb-cal-ev:hover{filter:brightness(.95)}
.hb-cal-more{display:block;font-size:.66rem;color:var(--muted);margin-top:2px}

@media (max-width:991px){
  .hb-event-action{position:static}
  .hb-featured-strip{grid-template-columns:1fr}
}
@media (max-width:575px){
  .hb-cal-cell{min-height:64px}
  .hb-cal-ev{font-size:.6rem}
  .hb-cal-num{font-size:.7rem}
}

/* Sports/section page: upcoming-events block */
.hb-section-events-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}
.hb-section-events-head h2{font-size:1.3rem;margin:0;display:flex;align-items:center;gap:.5rem}
.hb-section-events-head h2 .bi{color:var(--harbor,#1b6ca8)}
.hb-section-events-all{font-weight:600;font-size:.9rem;white-space:nowrap;text-decoration:none}
.hb-section-events-all:hover{text-decoration:underline}
.hb-section-subhead{font-size:1.3rem;margin:0 0 1rem}
