/* Shared light/dark theme layer for the unified MNCBG PWA. */
html { color-scheme: dark; }
html[data-theme="light"] { color-scheme: light; }

.theme-toggle{
  appearance:none;
  -webkit-appearance:none;
  width:38px;
  height:38px;
  min-width:38px;
  border-radius:999px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
  cursor:pointer;
  transition:background .16s ease,border-color .16s ease,transform .08s ease,box-shadow .16s ease;
}
.theme-toggle:active{ transform:scale(.96); }
.theme-toggle svg{
  width:19px;
  height:19px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.9;
  stroke-linecap:round;
  stroke-linejoin:round;
  pointer-events:none;
}

/* Guild home + APN/ABR share the same design system. */
.guild-page .theme-toggle,
.festival-page .theme-toggle{
  border:1px solid rgba(255,255,255,.2);
  background:rgba(255,255,255,.06);
  color:var(--text);
}
.guild-page .theme-toggle:hover,
.festival-page .theme-toggle:hover{
  background:rgba(255,255,255,.12);
  border-color:rgba(255,255,255,.3);
}

html[data-theme="light"] body.guild-page,
html[data-theme="light"] body.festival-page{
  --bg:#f4f7fa;
  --panel:#ffffff;
  --panel-2:#f2f5f8;
  --text:#17212b;
  --muted:#5f6c78;
  --chip-bg:#ffffff;
  --chip-border:#c5ced8;
  --shadow:0 10px 30px rgba(20,35,50,.12);
  background:radial-gradient(1200px 900px at 10% -10%,#dfe8ef 0%,#f4f7fa 60%) no-repeat fixed;
}
html[data-theme="light"] .guild-page .appbar,
html[data-theme="light"] .festival-page .appbar{
  background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(248,251,253,.9));
  border-bottom-color:rgba(35,95,105,.18);
}
html[data-theme="light"] .guild-page .theme-toggle,
html[data-theme="light"] .festival-page .theme-toggle,
html[data-theme="light"] .festival-page .nav-toggle,
html[data-theme="light"] .guild-page .nav-toggle{
  background:rgba(20,35,50,.04);
  border-color:rgba(20,35,50,.18);
  color:var(--text);
}
html[data-theme="light"] .guild-page .topnav a:hover,
html[data-theme="light"] .festival-page .topnav a:hover{
  background:rgba(20,35,50,.06);
  border-color:rgba(20,35,50,.12);
}
html[data-theme="light"] .guild-page .topnav,
html[data-theme="light"] .festival-page .topnav{
  border-color:rgba(20,35,50,.12);
}
html[data-theme="light"] .guild-page .card,
html[data-theme="light"] .festival-page .card,
html[data-theme="light"] .festival-page .card.glass,
html[data-theme="light"] .festival-page .viewer,
html[data-theme="light"] .festival-page .table-wrapper{
  border-color:rgba(20,35,50,.12);
}
html[data-theme="light"] .festival-page .hero-card.glass{
  background:linear-gradient(180deg,rgba(255,255,255,.88),rgba(248,251,253,.84));
  border-color:rgba(20,35,50,.16);
}
html[data-theme="light"] .festival-page .hero-card.glass .muted{
  color:#344454;
}
html[data-theme="light"] .festival-page .badge{
  background:rgba(20,35,50,.06);
  border-color:rgba(20,35,50,.14);
  color:var(--text);
}
html[data-theme="light"] .festival-page .hero-bleed,
html[data-theme="light"] .festival-page .hero{
  border-color:rgba(20,35,50,.14);
}
html[data-theme="light"] .festival-page .viewer{
  background:linear-gradient(180deg,var(--panel),var(--panel-2));
}
html[data-theme="light"] .festival-page .carousel-arrow{
  background:rgba(255,255,255,.82);
  border-color:rgba(20,35,50,.18);
  color:#17212b;
}
html[data-theme="light"] .festival-page .carousel-arrow:hover{
  background:#fff;
  border-color:rgba(20,35,50,.28);
}
html[data-theme="light"] .festival-page .controls{
  background:linear-gradient(180deg,#ffffff,#f1f5f9);
  border-color:rgba(20,35,50,.12);
}
html[data-theme="light"] .festival-page .table-wrapper{
  background:linear-gradient(180deg,#fff,#f7f9fb);
}
html[data-theme="light"] .festival-page .table-wrapper::after{
  color:rgba(20,35,50,.55);
  background:rgba(255,255,255,.84);
}
html[data-theme="light"] .festival-page thead th{
  background:linear-gradient(180deg,#edf3f7,#e4ebf1);
  color:#17212b;
  border-bottom-color:rgba(20,35,50,.14);
}
html[data-theme="light"] .festival-page tbody td{
  color:#17212b;
  border-bottom-color:rgba(20,35,50,.11);
}
html[data-theme="light"] .festival-page tbody tr:hover{
  background:rgba(54,160,178,.10);
}
html[data-theme="light"] .festival-page .sort-ind,
html[data-theme="light"] .festival-page .footer-header .triangle{
  background:rgba(20,35,50,.08);
}
html[data-theme="light"] .festival-page .footer{
  background:linear-gradient(180deg,rgba(255,255,255,.97),rgba(244,247,250,.99));
  border-top-color:rgba(20,35,50,.14);
  box-shadow:0 -10px 30px rgba(20,35,50,.14);
}
html[data-theme="light"] .festival-page .update-banner,
html[data-theme="light"] .guild-page .update-banner{
  border-color:rgba(20,35,50,.14);
}

/* Landing page light mode. */
html[data-theme="light"] .guild-page .events-hero{
  border-bottom-color:rgba(20,35,50,.12) !important;
  background:
    radial-gradient(700px 360px at 12% 0%, rgba(54,160,178,.18), transparent 70%),
    radial-gradient(650px 360px at 92% 15%, rgba(246,173,85,.15), transparent 70%),
    linear-gradient(180deg,#edf4f8 0%,#f7f9fb 100%) !important;
}
html[data-theme="light"] .guild-page .events-hero::after{
  background-image:linear-gradient(rgba(20,35,50,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(20,35,50,.025) 1px,transparent 1px) !important;
}
html[data-theme="light"] .guild-page .guild-mark{
  background:linear-gradient(145deg,rgba(255,255,255,.9),rgba(235,241,246,.88)) !important;
  border-color:rgba(20,35,50,.12) !important;
  box-shadow:0 20px 45px rgba(20,35,50,.12) !important;
}
html[data-theme="light"] .guild-page .event-card{
  background:
    radial-gradient(360px 180px at 20% 0%,rgba(var(--event-accent),.13),transparent 72%),
    linear-gradient(180deg,#ffffff,#f3f6f9) !important;
  box-shadow:0 10px 30px rgba(20,35,50,.12) !important;
}
html[data-theme="light"] .guild-page a.event-card:hover{
  box-shadow:0 16px 36px rgba(20,35,50,.16) !important;
}

/* Minnesota Brewers Conference: existing stylesheet is light, so dark is an override. */
.mbc-page .theme-toggle{
  border:1px solid rgba(0,59,74,.16);
  background:#fff;
  color:var(--primary);
}
.mbc-page .theme-toggle:hover{ background:#eef4f6; }

html[data-theme="dark"] body.mbc-page{
  --bg:#081418;
  --surface:#111d22;
  --ink:#eef5f6;
  --muted:#a8b6ba;
  --line:#31454c;
  --primary:#69c7d6;
  --secondary:#d6ae84;
  --accent:#f2c969;
  --link:#71ccda;
  --success:#7eb47e;
  --shadow:0 12px 32px rgba(0,0,0,.34);
  background:linear-gradient(180deg,#071216 0%,#0b171b 100%);
  color:var(--ink);
}
html[data-theme="dark"] .mbc-page .theme-toggle{
  border-color:rgba(255,255,255,.16);
  background:#14242a;
  color:var(--ink);
}
html[data-theme="dark"] .mbc-page .theme-toggle:hover{ background:#1a3037; }
html[data-theme="dark"] .mbc-page .card,
html[data-theme="dark"] .mbc-page .session-card,
html[data-theme="dark"] .mbc-page .presenter-card,
html[data-theme="dark"] .mbc-page .exhibitor-card,
html[data-theme="dark"] .mbc-page .raffle-card,
html[data-theme="dark"] .mbc-page .map-card{
  background:var(--surface);
  border-color:var(--line);
}
html[data-theme="dark"] .mbc-page .hero{
  background:linear-gradient(135deg,rgba(54,160,178,.12),rgba(242,201,105,.10));
}
html[data-theme="dark"] .mbc-page .hero-stats div,
html[data-theme="dark"] .mbc-page .secondary-btn,
html[data-theme="dark"] .mbc-page .mini-copy-btn,
html[data-theme="dark"] .mbc-page .day-chip,
html[data-theme="dark"] .mbc-page .search-wrap input,
html[data-theme="dark"] .mbc-page .filter-wrap select,
html[data-theme="dark"] .mbc-page .sponsor-pill,
html[data-theme="dark"] .mbc-page .dialog-card{
  background:#14242a;
  color:var(--ink);
  border-color:var(--line);
}
html[data-theme="dark"] .mbc-page .chip,
html[data-theme="dark"] .mbc-page .type-badge{
  background:#1a2c32;
  border-color:var(--line);
  color:var(--ink);
}
html[data-theme="dark"] .mbc-page .tabs{
  background:rgba(17,29,34,.96);
  border-color:var(--line);
  box-shadow:0 14px 34px rgba(0,0,0,.28);
}
html[data-theme="dark"] .mbc-page .tab:hover,
html[data-theme="dark"] .mbc-page .tab:focus-visible,
html[data-theme="dark"] .mbc-page .timeline-mini-btn:hover,
html[data-theme="dark"] .mbc-page .timeline-mini-btn:focus-visible,
html[data-theme="dark"] .mbc-page .mini-copy-btn:hover,
html[data-theme="dark"] .mbc-page .mini-copy-btn:focus-visible{
  background:#1a3037;
  color:var(--primary);
}
html[data-theme="dark"] .mbc-page .day-chip.active,
html[data-theme="dark"] .mbc-page .tab.active,
html[data-theme="dark"] .mbc-page .primary-btn{
  background:#176477;
  color:#fff;
}
html[data-theme="dark"] .mbc-page .ghost-btn{
  color:var(--primary);
  border-color:var(--line);
}
html[data-theme="dark"] .mbc-page .level{
  background:#3a321c;
  color:#ffe9a5;
}
html[data-theme="dark"] .mbc-page .detail-dialog,
html[data-theme="dark"] .mbc-page .detail-dialog::backdrop{
  background:rgba(0,0,0,.62);
}
html[data-theme="dark"] .mbc-page .sponsor-board-thumb{
  border-color:var(--line);
}
html[data-theme="dark"] .mbc-page .close-btn{ color:var(--primary); }
html[data-theme="dark"] .mbc-page .presented-by{
  background:rgba(255,255,255,.94);
  border-radius:12px;
  padding:5px 10px;
  width:max-content;
  max-width:100%;
  margin-left:auto !important;
  margin-right:auto !important;
}
html[data-theme="dark"] .mbc-page .presented-label{ color:#415057 !important; }

/* Privacy page follows the same saved preference and exposes the shared theme toggle. */

.privacy-page .privacy-theme-toggle{
  position:absolute;
  top:0;
  right:0;
  background:rgba(255,255,255,.13);
  border-color:rgba(255,255,255,.24);
  color:#fff;
}
.privacy-page .privacy-theme-toggle:hover,
.privacy-page .privacy-theme-toggle:focus-visible{
  background:rgba(255,255,255,.20);
}
html[data-theme="light"] .guild-page .landing-footer a{ border-bottom-color:rgba(20,35,50,.24); }

html[data-theme="dark"] body.privacy-page{
  --bg:#0b0c10;
  --surface:#171d28;
  --text:#eef2f7;
  --muted:#b6bdc8;
  --accent:#d27a3d;
  --accent-dark:#efad79;
  --border:#323a49;
  --warning-bg:#342d17;
  --warning-border:#d7a900;
  --shadow:0 14px 34px rgba(0,0,0,.28);
}
html[data-theme="dark"] .privacy-page header{
  background:linear-gradient(135deg,#3f210f,#7a3f16);
}
html[data-theme="dark"] .privacy-page nav,
html[data-theme="dark"] .privacy-page address{
  background:#111720;
}

@media (max-width:900px){
  .guild-page .theme-toggle,
  .festival-page .theme-toggle{
    margin-left:auto;
  }
  .guild-page .theme-toggle + .nav-toggle,
  .festival-page .theme-toggle + .nav-toggle{
    margin-left:0;
  }
}

@media (max-width:900px){
  .guild-page .app-title-wrap,
  .festival-page .app-title-wrap{
    min-width:0;
    flex:1 1 0;
  }
  .guild-page .title,
  .festival-page .title{
    font-size:clamp(16px,4.8vw,20px);
  }
}

html[data-theme="light"] .festival-page .social-icons a{
  background:#263342;
  border-color:#39495a;
}


/* v2.0.4 header refinements */
.guild-page .guild-hero-theme-toggle{
  position:absolute;
  top:14px;
  right:clamp(14px,3vw,24px);
  z-index:3;
  box-shadow:0 8px 22px rgba(0,0,0,.18);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}
html[data-theme="light"] .guild-page .guild-hero-theme-toggle{
  box-shadow:0 8px 22px rgba(20,35,50,.12);
}

/*
  APN/ABR header controls are deliberately wrapped as one unit by theme.js.
  This avoids browser-dependent grid/flex auto-placement and guarantees that
  the theme control and hamburger stay beside one another on narrow screens.
*/
.festival-page .festival-header-controls{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  flex:0 0 auto;
  white-space:nowrap;
}
.festival-page .festival-header-controls .theme-toggle,
.festival-page .festival-header-controls .nav-toggle{
  margin:0;
  flex:0 0 38px;
}

@media (max-width:900px){
  .festival-page .appbar-inner{
    display:grid;
    grid-template-columns:30px minmax(0,1fr) auto;
    align-items:center;
    gap:8px;
    min-height:var(--appbar-h);
    padding-left:clamp(10px,3vw,24px);
    padding-right:clamp(10px,3vw,24px);
  }
  .festival-page .logo-dot{
    grid-column:1;
    width:30px;
    height:30px;
  }
  .festival-page .app-title-wrap{
    grid-column:2;
    min-width:0;
    width:auto;
  }
  .festival-page .festival-header-controls{
    grid-column:3;
    grid-row:1;
    justify-self:end;
    align-self:center;
  }
  .festival-page .title,
  .festival-page .subtitle{
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .festival-page .theme-toggle,
  .festival-page .nav-toggle{
    width:38px;
    height:36px;
    min-width:38px;
  }
  /* Keep the dropdown below the compact single-row header. */
  .festival-page .topnav{
    position:absolute;
    right:12px;
    top:var(--appbar-h);
  }
}

@media (max-width:430px){
  .guild-page .guild-hero-theme-toggle{
    top:10px;
    right:10px;
    width:36px;
    height:36px;
    min-width:36px;
  }
  .festival-page .appbar-inner{
    grid-template-columns:26px minmax(0,1fr) auto;
    gap:6px;
    padding-left:10px;
    padding-right:10px;
  }
  .festival-page .logo-dot{
    width:26px;
    height:26px;
  }
  .festival-page .festival-header-controls{
    gap:5px;
  }
  .festival-page .theme-toggle,
  .festival-page .nav-toggle{
    width:34px;
    height:34px;
    min-width:34px;
    flex-basis:34px;
  }
}

@media (max-width:350px){
  .festival-page .appbar-inner{
    grid-template-columns:24px minmax(0,1fr) auto;
    gap:5px;
    padding-left:8px;
    padding-right:8px;
  }
  .festival-page .logo-dot{
    width:24px;
    height:24px;
  }
  .festival-page .festival-header-controls{
    gap:4px;
  }
  .festival-page .theme-toggle,
  .festival-page .nav-toggle{
    width:32px;
    height:32px;
    min-width:32px;
    flex-basis:32px;
  }
  .festival-page .title{
    font-size:15px;
  }
  .festival-page .subtitle{
    font-size:11px;
  }
}


/* v2.0.6 unified return-to-events control */
.events-home-link{
  display:inline-flex !important;
  align-items:center;
  justify-content:center;
  min-height:36px;
  padding:7px 12px !important;
  border-radius:999px !important;
  border:1px solid rgba(255,255,255,.20) !important;
  background:rgba(255,255,255,.07) !important;
  color:inherit !important;
  font-weight:700 !important;
  line-height:1 !important;
  text-decoration:none !important;
  white-space:nowrap;
  box-shadow:none !important;
  transition:background .15s ease,border-color .15s ease,transform .08s ease;
}
.events-home-link:hover,
.events-home-link:focus-visible{
  background:rgba(255,255,255,.13) !important;
  border-color:rgba(255,255,255,.32) !important;
  text-decoration:none !important;
}
.events-home-link:active{ transform:scale(.98); }

html[data-theme="light"] .festival-page .events-home-link,
html[data-theme="light"] .mbc-page .events-home-link{
  background:rgba(20,35,50,.05) !important;
  border-color:rgba(20,35,50,.18) !important;
  color:#17212b !important;
}
html[data-theme="light"] .festival-page .events-home-link:hover,
html[data-theme="light"] .festival-page .events-home-link:focus-visible,
html[data-theme="light"] .mbc-page .events-home-link:hover,
html[data-theme="light"] .mbc-page .events-home-link:focus-visible{
  background:rgba(20,35,50,.10) !important;
  border-color:rgba(20,35,50,.28) !important;
}

/* Privacy header uses the same control over its colored hero background. */
.privacy-page .privacy-events-link{
  margin:0 0 18px 0;
  color:#fff !important;
}

@media (max-width:900px){
  .festival-page .topnav .events-home-link{
    width:100%;
    justify-content:flex-start;
  }
}

/* Clickable Guild marks return to the Events landing page. */
.festival-page a.logo-dot{
  display:block;
  text-decoration:none;
  transition:transform .15s ease, filter .15s ease;
}
.festival-page a.logo-dot:hover{ transform:scale(1.05); filter:brightness(1.08); }
.festival-page a.logo-dot:focus-visible,
.mbc-page .brand-home-link:focus-visible{
  outline:2px solid currentColor;
  outline-offset:3px;
}
.mbc-page .brand-home-link{
  display:flex;
  align-items:center;
  flex:0 0 auto;
  border-radius:8px;
  text-decoration:none;
  transition:transform .15s ease, filter .15s ease;
}
.mbc-page .brand-home-link:hover{ transform:scale(1.03); filter:brightness(1.08); }
