:root{
  --molle-ink:#14212b;--molle-cream:#f4efe6;--molle-paper:#fffdf8;--molle-orange:#f05b2f;
  --molle-yellow:#f3c94b;--molle-blue:#9ed6e5;--molle-mint:#b8d5c1;--molle-pink:#eeb6b0;
  --molle-radius:28px;--molle-shadow:0 16px 40px rgba(27,36,43,.10);--molle-page-background:#f4efe6;
}
*{box-sizing:border-box}.molle-frontend-active{background:var(--molle-page-background);color:var(--molle-ink)}
.molle-app-shell{width:100%;max-width:var(--wp--style--global--wide-size,1340px);margin:0 auto;padding:var(--molle-page-top-gap-mobile,26px) 0 125px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Arial,sans-serif;color:var(--molle-ink)}
.molle-home-hero,.molle-page-head{padding:28px 10px 18px}.molle-home-hero h1,.molle-page-head h1,.molle-single h1{font-size:clamp(38px,8vw,68px);line-height:.98;letter-spacing:-.045em;margin:7px 0 14px;font-weight:900}.molle-home-hero p,.molle-page-head p{font-size:17px;max-width:580px;margin:0;opacity:.72}.molle-kicker{font-size:12px;font-weight:900;letter-spacing:.13em;text-transform:uppercase}
.molle-section{margin:34px 0 48px}.molle-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:0 7px 13px}.molle-section-head h2{font-size:28px;letter-spacing:-.035em;line-height:1;margin:0;font-weight:900}.molle-section-head a{color:inherit;text-decoration:none;font-size:14px;font-weight:800;white-space:nowrap}.molle-section-head a span{font-size:19px}
.molle-card-flow,.molle-flow-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.molle-flow-feature .molle-card:first-child{grid-column:1/-1}.molle-card{min-width:0}.molle-card-link{display:block;color:inherit!important;text-decoration:none!important;background:var(--molle-paper);border-radius:var(--molle-radius);overflow:hidden;box-shadow:var(--molle-shadow);height:100%;transform:translateZ(0);transition:transform .16s ease}.molle-card-link:active{transform:scale(.985)}
.molle-card-media{aspect-ratio:4/3;overflow:hidden;background:var(--molle-blue)}.molle-card-media img{width:100%;height:100%;display:block;object-fit:cover}.molle-card-copy{padding:13px 14px 16px}.molle-card h3{font-size:18px;line-height:1.04;letter-spacing:-.025em;margin:0;font-weight:900}.molle-card p{font-size:13px;margin:7px 0 0;font-weight:750;opacity:.66}.molle-card.v2 .molle-card-media{aspect-ratio:1/1}.molle-card.v3 .molle-card-media{aspect-ratio:5/6}.molle-card.v4 .molle-card-media{aspect-ratio:3/2}.molle-card-benefit .molle-card-copy{background:var(--molle-yellow)}.molle-card-event.v3 .molle-card-copy{background:var(--molle-blue)}.molle-card-place.v5 .molle-card-copy{background:var(--molle-mint)}
.molle-flow-feature .molle-card:first-child .molle-card-media{aspect-ratio:16/10}.molle-flow-feature .molle-card:first-child h3{font-size:27px}.molle-flow-feature .molle-card:first-child .molle-card-copy{padding:17px 18px 20px}
.molle-filterbar{position:sticky;top:0;z-index:30;background:linear-gradient(var(--molle-cream) 80%,transparent);padding:8px 0 13px;margin-bottom:14px}.molle-pills{display:flex;gap:7px;overflow-x:auto;padding:0 8px 9px;scrollbar-width:none}.molle-pills::-webkit-scrollbar{display:none}.molle-pill{border:1px solid rgba(20,33,43,.16);background:rgba(255,255,255,.62);color:var(--molle-ink);font:inherit;font-weight:800;font-size:13px;padding:9px 13px;border-radius:999px;white-space:nowrap;cursor:pointer}.molle-pill.is-active{background:var(--molle-ink);color:white;border-color:var(--molle-ink)}.molle-radius{margin:0 8px;display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:850}.molle-radius select{border:0;background:rgba(255,255,255,.75);border-radius:999px;padding:8px 28px 8px 11px;font:inherit;font-weight:800}.molle-no-results,.molle-empty{padding:30px;border-radius:24px;background:rgba(255,255,255,.65);text-align:center;margin:14px 0}
.molle-soft-cta{display:flex;justify-content:space-between;align-items:center;margin:11px 0 0;padding:15px 18px;border-radius:22px;background:var(--molle-ink);color:white!important;text-decoration:none!important;font-weight:900}.molle-soft-cta span{font-size:22px}.molle-sticky-plus-cta{position:fixed;z-index:70;left:50%;bottom:96px;transform:translateX(-50%);background:var(--molle-ink);color:white!important;text-decoration:none!important;border-radius:999px;padding:14px 22px;font-weight:900;box-shadow:0 15px 40px rgba(0,0,0,.23)}
.molle-single{padding-top:14px}.molle-single-hero{border-radius:34px;overflow:hidden;aspect-ratio:4/3;background:var(--molle-blue)}.molle-single-hero img{width:100%;height:100%;object-fit:cover;display:block}.molle-single-sheet{margin:-34px 8px 0;position:relative;background:var(--molle-paper);border-radius:31px;padding:25px 21px 35px;box-shadow:var(--molle-shadow)}.molle-single-topline{display:flex;justify-content:space-between;align-items:center;gap:15px}.molle-single h1{font-size:clamp(40px,9vw,64px);margin-top:13px}.molle-big-meta{font-size:19px;font-weight:850;margin:0 0 15px}.molle-lead{font-size:20px;line-height:1.35;font-weight:650}.molle-place-link{display:flex;justify-content:space-between;gap:12px;align-items:center;background:#eef1ef;color:inherit!important;text-decoration:none!important;padding:13px 15px;border-radius:18px;font-weight:850;margin:15px 0}.molle-richtext{font-size:17px;line-height:1.62;margin:28px 0}.molle-richtext p{margin:0 0 1em}.molle-actions{display:flex;gap:9px;flex-wrap:wrap;margin:21px 0}.molle-btn{display:inline-flex;align-items:center;justify-content:center;min-height:47px;padding:11px 17px;border-radius:999px;background:var(--molle-orange);color:var(--molle-ink)!important;text-decoration:none!important;font-weight:900;border:0}.molle-btn-dark{background:var(--molle-ink);color:white!important}.molle-btn-light{background:#ecebe7}.molle-follow{border:0;background:#ecebe7;border-radius:999px;padding:9px 13px;font:inherit;font-weight:900;cursor:pointer}.molle-follow.is-following{background:var(--molle-mint)}.molle-detail-section{padding-top:16px;margin-top:28px;border-top:1px solid rgba(20,33,43,.10)}.molle-detail-section h2{font-size:25px;letter-spacing:-.03em}.molle-hours>div{display:flex;justify-content:space-between;gap:20px;padding:9px 0;border-bottom:1px solid rgba(20,33,43,.08)}.molle-benefit-unlock,.molle-benefit-locked{margin:24px 0;padding:20px;border-radius:24px;background:var(--molle-mint)}.molle-benefit-locked{background:var(--molle-yellow)}.molle-benefit-unlock strong,.molle-benefit-locked strong{font-size:22px}.molle-contact-list a{color:inherit}
.molle-bottom-nav{position:fixed;z-index:9000;left:0;right:0;bottom:max(10px,env(safe-area-inset-bottom));pointer-events:none}.molle-bottom-nav-inner{pointer-events:auto;width:min(570px,calc(100% - 20px));margin:auto;display:grid;grid-template-columns:repeat(5,1fr);gap:2px;padding:7px;border:1px solid rgba(255,255,255,.76);border-radius:28px;background:rgba(246,245,239,.96);box-shadow:0 15px 44px rgba(20,33,43,.18);backdrop-filter:blur(24px) saturate(135%);-webkit-backdrop-filter:blur(24px) saturate(135%)}.molle-bottom-nav a{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0;padding:6px 2px;border-radius:20px;color:var(--molle-ink)!important;text-decoration:none!important;font-size:10px;font-weight:850}.molle-bottom-nav svg,.molle-big-menu svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.molle-bottom-nav b{font-weight:850}.molle-bottom-nav a:active{background:rgba(255,255,255,.7)}
.molle-big-menu{position:fixed;z-index:9100;inset:0;display:none;align-items:flex-end;justify-content:center;padding:18px 10px calc(96px + env(safe-area-inset-bottom));background:rgba(20,33,43,.18);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.molle-big-menu.is-open{display:flex}.molle-big-menu-panel{position:relative;width:min(570px,100%);padding:27px 17px 19px;border-radius:31px;background:rgba(246,245,239,.92);box-shadow:0 20px 60px rgba(20,33,43,.24);backdrop-filter:blur(26px);-webkit-backdrop-filter:blur(26px)}.molle-menu-close{position:absolute;right:12px;top:10px;border:0;width:34px;height:34px;border-radius:999px;background:rgba(20,33,43,.08);font-size:24px}.molle-big-menu-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.molle-big-menu-grid a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;aspect-ratio:1.2/1;border-radius:23px;background:rgba(255,255,255,.62);color:var(--molle-ink)!important;text-decoration:none!important}.molle-big-menu-grid b{font-size:12px}.molle-big-menu-grid svg{width:29px;height:29px}.molle-desktop-nav{display:none}.molle-sponsor-strip{margin:45px 8px 0;padding:20px;border-top:1px solid rgba(20,33,43,.15)}.molle-sponsor-strip>span{display:block;text-align:center;font-size:11px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;opacity:.55}.molle-sponsor-strip>div{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:22px;margin-top:15px}.molle-sponsor-strip img{max-width:92px;max-height:38px;object-fit:contain}
@media(min-width:851px){.molle-app-shell{padding-top:var(--molle-page-top-gap-desktop,92px)!important;padding-bottom:70px}.molle-bottom-nav{display:none}.molle-desktop-nav{display:block;position:fixed;z-index:8990;left:0;right:0;top:14px}.molle-desktop-nav-inner{width:min(1000px,calc(100% - 30px));margin:auto;display:flex;align-items:center;justify-content:space-between;padding:10px 13px 10px 18px;border-radius:999px;background:rgba(246,245,239,.95);border:1px solid rgba(255,255,255,.8);box-shadow:0 12px 35px rgba(20,33,43,.11);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px)}.molle-wordmark{font-size:24px!important;font-weight:950!important;letter-spacing:-.05em}.molle-desktop-nav a{color:var(--molle-ink)!important;text-decoration:none!important;font-weight:800;font-size:14px;margin:0 7px}.molle-big-menu{align-items:flex-start;padding-top:92px}.molle-card-flow,.molle-flow-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.molle-flow-feature .molle-card:first-child{grid-column:span 2}.molle-guide-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:420px){.molle-card-flow,.molle-flow-grid{gap:8px}.molle-card-copy{padding:11px 11px 13px}.molle-card h3{font-size:16px}.molle-card p{font-size:12px}.molle-section-head h2{font-size:25px}.molle-bottom-nav-inner{border-radius:25px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* 0.1.1 UX pass */
.molle-view-toggle{display:inline-flex;gap:4px;margin:0 6px 12px;padding:4px;border-radius:999px;background:rgba(255,255,255,.64);box-shadow:inset 0 0 0 1px rgba(20,33,43,.08)}
.molle-view-toggle button{border:0;background:transparent;border-radius:999px;padding:9px 15px;font:inherit;font-size:13px;font-weight:900;color:var(--molle-ink);cursor:pointer}.molle-view-toggle button.is-active{background:var(--molle-ink);color:#fff}
.molle-map{height:min(62vh,520px);margin:0 6px 14px;border-radius:28px;overflow:hidden;background:#e8e7df;box-shadow:var(--molle-shadow)}
.molle-map .leaflet-popup-content-wrapper{border-radius:18px}.molle-map-popup{width:160px}.molle-map-popup img{width:100%;height:90px;object-fit:cover;border-radius:12px}.molle-map-popup b{display:block;font-size:14px;line-height:1.1;margin:7px 0}.molle-map-popup a{font-weight:800;color:var(--molle-ink)}
.molle-subfilters[hidden]{display:none}.molle-subfilters{margin-top:-2px}.molle-subpills .molle-pill{font-size:12px;padding:7px 11px;background:rgba(255,255,255,.45)}
.molle-month-calendar{margin:0 6px 20px;padding:14px 10px 12px;border-radius:26px;background:rgba(255,255,255,.58);box-shadow:0 10px 30px rgba(20,33,43,.06)}.molle-calendar-head{display:flex;align-items:center;justify-content:space-between}.molle-calendar-head h2{font-size:24px;line-height:1;margin:0 0 13px;letter-spacing:-.04em}.molle-weekdays,.molle-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr)}.molle-weekdays span{text-align:center;font-size:9px;font-weight:900;opacity:.45;padding:5px 0}.molle-calendar-grid button,.molle-calendar-grid .is-empty{aspect-ratio:1/1;border:0;border-radius:13px;background:transparent;color:var(--molle-ink);display:flex;flex-direction:column;align-items:center;justify-content:center;font:inherit;cursor:pointer}.molle-calendar-grid button b{font-size:15px}.molle-calendar-grid button small{font-size:9px;color:#56759a;font-weight:900}.molle-calendar-grid button.is-today{box-shadow:inset 0 0 0 2px var(--molle-blue);background:rgba(255,255,255,.75)}.molle-calendar-grid button.is-active{background:var(--molle-ink);color:#fff}.molle-calendar-grid button.is-active small{color:#fff}
.molle-membercard-open{border:0;border-radius:999px;background:var(--molle-ink);color:#fff;padding:12px 17px;font:inherit;font-weight:900;cursor:pointer;margin:0 6px 14px}.molle-benefit-unlock .molle-membercard-open{margin:8px 0 0}.molle-membercard-modal{position:fixed;z-index:9300;inset:0;display:none;align-items:flex-end;justify-content:center;background:rgba(20,33,43,.30);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);padding:12px}.molle-membercard-modal.is-open{display:flex}.molle-membercard-sheet{position:relative;width:min(560px,100%);max-height:88vh;overflow:auto;border-radius:30px;background:var(--molle-paper);padding:28px 16px 20px;box-shadow:0 25px 70px rgba(0,0,0,.28)}.molle-membercard-close{position:absolute;right:12px;top:10px;width:36px;height:36px;border:0;border-radius:50%;font-size:24px;background:#ecebe7;z-index:2}.molle-plus-inline-cta{margin:16px 6px 0}.molle-sponsor-empty{border:0;padding:0}.molle-sponsor-empty a{display:flex;justify-content:space-between;align-items:center;padding:15px 18px;border-radius:22px;background:rgba(255,255,255,.62);color:var(--molle-ink)!important;text-decoration:none!important;font-weight:900}
@media(max-width:820px){
  .molle-app-shell{padding-top:24px!important;padding-bottom:125px!important}
  .molle-home-hero,.molle-page-head{padding:20px 6px 14px}
  .molle-home-hero{padding-top:22px}.molle-page-head{padding-top:22px}
  .molle-card-flow,.molle-flow-grid,.molle-guide-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%}
  .molle-overview>.molle-flow-grid>.molle-card-flow{display:contents}
  .molle-overview .molle-card-media{aspect-ratio:1/1.08}.molle-overview .molle-card.v3 .molle-card-media{aspect-ratio:1/1.15}.molle-overview .molle-card.v4 .molle-card-media{aspect-ratio:1/1}
  .molle-overview .molle-card h3{font-size:20px}.molle-overview .molle-card-copy{padding:13px 13px 16px}
  .molle-filterbar{padding-top:4px}.molle-pills{padding-left:6px;padding-right:6px}.molle-radius{margin-left:6px}.molle-section-head{padding-left:6px;padding-right:6px}
  .molle-single-sheet{margin:-28px 0 0}
}
@media(min-width:851px){.molle-single{max-width:1000px}.molle-single-hero{height:480px;aspect-ratio:auto}.molle-single-hero img{height:100%;object-fit:cover}.molle-single-sheet{max-width:900px;margin:-34px auto 0}.molle-month-calendar{max-width:760px}}

/* 0.1.2 layout + card-follow + Guide single */
body.molle-app-page .wp-site-blocks > main,
body.molle-app-page #primary,
body.molle-app-page #main,
body.molle-app-page .site-main,
body.molle-app-page .wp-block-post-content,
body.molle-app-page .entry-content{
  min-height:0!important;
}
.molle-card{position:relative}
.molle-card-follow{position:absolute;z-index:8;top:10px;right:10px;width:42px;height:42px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.72);border-radius:50%;background:rgba(255,253,248,.84);color:var(--molle-ink);font:inherit;font-size:28px;line-height:1;cursor:pointer;box-shadow:0 7px 20px rgba(20,33,43,.15);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.molle-card-follow.is-following{background:var(--molle-mint);color:#194d31}.molle-card-follow:active{transform:scale(.94)}
.molle-today-hours{display:inline-flex;margin:4px 0 0;padding:8px 12px;border-radius:999px;background:rgba(184,213,193,.55);font-size:14px;font-weight:900}
.molle-place-actions{margin-top:16px;margin-bottom:22px}.molle-practical h3{margin:22px 0 7px;font-size:17px}.molle-contact-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 24px;margin-top:22px}.molle-contact-list p{margin:0;padding:12px 0;border-top:1px solid rgba(20,33,43,.08)}
.molle-facilities>div{display:flex;gap:7px;flex-wrap:wrap}.molle-facilities span{display:inline-flex;padding:7px 10px;border-radius:999px;background:#eef1ef;font-size:13px;font-weight:800}

@media(max-width:820px){
  body.molle-frontend-active{padding-bottom:calc(105px + env(safe-area-inset-bottom))!important}
  .molle-app-shell{padding-top:var(--molle-page-top-gap-mobile,26px)!important;padding-bottom:28px!important}
  .molle-home-hero,.molle-page-head{padding:18px 0 12px!important}
  .molle-section-head{padding-left:0!important;padding-right:0!important}
  .molle-pills{padding-left:0!important;padding-right:0!important}
  .molle-radius,.molle-view-toggle,.molle-map,.molle-month-calendar,.molle-membercard-open,.molle-plus-inline-cta{margin-left:0!important;margin-right:0!important}
  .molle-filterbar{margin-left:0!important;margin-right:0!important}
  .molle-sponsor-strip{margin-left:0!important;margin-right:0!important}
  .molle-single-sheet{margin-left:0!important;margin-right:0!important}
  .molle-card-follow{top:7px;right:7px;width:38px;height:38px;font-size:25px}
  .molle-contact-list{grid-template-columns:1fr}
}
@media(min-width:851px){
  body.molle-app-page .molle-app-shell{padding-top:82px}
}

/* 0.1.3 cleanup + Core theme integration */
:root{
  --molle-ink:var(--molle-text,#2c2c2c);
  --molle-cream:var(--molle-page-bg,#f4f1ea);
  --molle-paper:var(--molle-surface,#ffffff);
  --molle-orange:var(--molle-primary,#3a6b5e);
  --molle-yellow:var(--molle-secondary,#8aa899);
  --molle-blue:var(--molle-surface-alt,#f0ece2);
  --molle-mint:var(--molle-success,#3a7d4f);
}
.molle-card-benefit .molle-card-copy{background:var(--molle-secondary);min-height:150px;display:flex;flex-direction:column;justify-content:flex-start}
.molle-card-place .molle-card-copy{background:var(--molle-category-color,var(--molle-surface))}
.molle-guide-pills .molle-pill[data-category]:not([data-category=""]){background:var(--molle-category-color,var(--molle-surface-alt));color:var(--molle-text);border-color:color-mix(in srgb,var(--molle-text) 14%,transparent)}
.molle-guide-pills .molle-pill[data-category]:not([data-category=""]).is-active{background:var(--molle-category-color,var(--molle-surface-alt));color:var(--molle-text);box-shadow:inset 0 0 0 2px var(--molle-text);border-color:transparent}
.molle-subpills .molle-pill{color:var(--molle-text)!important;background:var(--molle-surface)!important}
.molle-subpills .molle-pill.is-active{background:var(--molle-text)!important;color:var(--molle-primary-text,#fff)!important}
.molle-scroll-pills{position:relative;mask-image:linear-gradient(to right,transparent 0,#000 0,#000 100%,transparent 100%);-webkit-mask-image:linear-gradient(to right,transparent 0,#000 0,#000 100%,transparent 100%);transition:mask-image .15s ease,-webkit-mask-image .15s ease}
.molle-scroll-pills.can-right{mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 32px),transparent 100%);-webkit-mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 32px),transparent 100%)}
.molle-scroll-pills.can-left{mask-image:linear-gradient(to right,transparent 0,#000 32px,#000 100%);-webkit-mask-image:linear-gradient(to right,transparent 0,#000 32px,#000 100%)}
.molle-scroll-pills.can-left.can-right{mask-image:linear-gradient(to right,transparent 0,#000 32px,#000 calc(100% - 32px),transparent 100%);-webkit-mask-image:linear-gradient(to right,transparent 0,#000 32px,#000 calc(100% - 32px),transparent 100%)}
.molle-nav-back{display:none}
@media(max-width:850px){
  .molle-nav-back{display:grid;place-items:center;position:fixed;z-index:8999;left:14px;bottom:calc(92px + env(safe-area-inset-bottom));width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.78);background:rgba(246,245,239,.84);color:var(--molle-text);box-shadow:0 10px 28px rgba(20,33,43,.18);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);font:inherit;font-size:25px;font-weight:700;cursor:pointer}
  .molle-nav-back[hidden]{display:none!important}
  .molle-card-benefit .molle-card-copy{min-height:138px}
}


/* 0.1.4 global footer/sponsor reliability */
/* The sponsor shortcode lives in the normal WordPress footer and must style itself
   even when the page content is an older Core/Business shortcode rather than a
   Molle Frontend shortcode. */
.molle-sponsor-strip{
  box-sizing:border-box;
  width:min(100%,1000px);
  margin:38px auto 0!important;
  padding:16px 12px;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Arial,sans-serif;
  color:var(--molle-text,var(--molle-ink,#14212b));
}
.molle-sponsor-strip a{color:inherit!important;text-decoration:none!important}
.molle-sponsor-empty{border:0!important;padding:0!important}
.molle-sponsor-empty a{
  display:flex!important;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  width:100%;
  padding:15px 18px;
  border-radius:22px;
  background:var(--molle-surface,rgba(255,255,255,.72));
  color:var(--molle-text,var(--molle-ink,#14212b))!important;
  font-weight:900;
  line-height:1.2;
  box-shadow:0 10px 28px rgba(20,33,43,.06);
}
.molle-sponsor-empty a span{font-size:22px;line-height:1}

@media(max-width:820px){
  /* Reserve space after the *entire* WordPress document, including its footer,
     for the fixed Molle nav + floating back button. */
  body.molle-frontend-active{
    padding-bottom:calc(175px + env(safe-area-inset-bottom))!important;
  }
  .molle-sponsor-strip{
    width:calc(100% - 12px);
    margin:28px 6px 0!important;
    padding:0!important;
  }
}

/* 0.1.6 Safari/mobile + responsive canvas pass */
/* Benefits are one full-width component: variable media, fixed copy panel. */
.molle-card-benefit .molle-card-link{
  width:100%!important;
  max-width:none!important;
  display:block!important;
}
.molle-card-benefit .molle-card-media{
  width:100%!important;
  max-width:none!important;
}
.molle-card-benefit .molle-card-copy{
  width:100%!important;
  height:150px;
  min-height:150px;
  max-height:150px;
  overflow:hidden;
}

/* Keep the back button aligned with the nav, but give it clearer separation. */
@media(max-width:850px){
  .molle-nav-back{
    left:10px;
    width:44px;
    height:44px;
    background:rgba(225,225,225,.88);
    border:1px solid rgba(20,33,43,.18);
    box-shadow:0 10px 30px rgba(20,33,43,.24),0 1px 0 rgba(255,255,255,.9) inset;
  }
  .molle-card-benefit .molle-card-copy{
    height:138px;
    min-height:138px;
    max-height:138px;
  }
}

/* Desktop should feel like a desktop app, not a centred phone viewport. */
@media(min-width:851px){
  .molle-app-shell{
    width:100%;
    max-width:var(--wp--style--global--wide-size,1340px);
    padding-top:70px;
  }
  body.molle-app-page .molle-app-shell{padding-top:70px}
  .molle-desktop-nav-inner{width:min(var(--wp--style--global--wide-size,1340px),calc(100% - 24px))}
  .molle-single{max-width:var(--wp--style--global--wide-size,1340px)}
}

/* 0.1.8 visual masonry pass --------------------------------------------------
   Home, Events, Guide and Plus use equal-width columns with varied card height.
   No data/query/filter behaviour changes here. */
.molle-card-flow.molle-masonry{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:8px!important;
  align-items:start;
  width:100%;
}
.molle-masonry-col{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:8px;
}
.molle-masonry-col .molle-card{
  width:100%;
  min-width:0;
  margin:0;
}
.molle-masonry-col .molle-card-link{
  height:auto;
  box-shadow:0 10px 28px rgba(27,36,43,.075);
}

/* The Home lead item is no longer a giant featured tile. */
.molle-flow-feature .molle-card:first-child{
  grid-column:auto!important;
}
.molle-flow-feature .molle-card:first-child .molle-card-media{
  aspect-ratio:unset;
}
.molle-flow-feature .molle-card:first-child h3{
  font-size:inherit;
}
.molle-flow-feature .molle-card:first-child .molle-card-copy{
  padding:13px 14px 16px;
}

/* Stable visual rhythm: same width, three image-height families. */
.molle-masonry .molle-card.v1 .molle-card-media{aspect-ratio:1/1.08}
.molle-masonry .molle-card.v2 .molle-card-media{aspect-ratio:1/1.28}
.molle-masonry .molle-card.v3 .molle-card-media{aspect-ratio:1/0.92}
.molle-masonry .molle-card.v4 .molle-card-media{aspect-ratio:1/1.18}
.molle-masonry .molle-card.v5 .molle-card-media{aspect-ratio:1/1.00}

/* Benefits keep the common copy panel but participate in the same vertical flow. */
.molle-masonry .molle-card-benefit .molle-card-copy{
  height:138px;
  min-height:138px;
  max-height:138px;
}

@media(max-width:850px){
  .molle-card-flow.molle-masonry{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:7px!important;
  }
  .molle-masonry-col{gap:7px}
  .molle-masonry .molle-card h3{font-size:20px;line-height:1.02}
  .molle-masonry .molle-card-copy{padding:12px 12px 14px}
  .molle-masonry .molle-card-benefit .molle-card-copy{
    height:136px;
    min-height:136px;
    max-height:136px;
  }
}

@media(min-width:851px){
  .molle-card-flow.molle-masonry{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:12px!important;
  }
  .molle-masonry-col{gap:12px}
  .molle-masonry .molle-card h3{font-size:23px}
  .molle-masonry .molle-card-copy{padding:15px 16px 18px}
  .molle-masonry .molle-card-benefit .molle-card-copy{
    height:154px;
    min-height:154px;
    max-height:154px;
  }
}


/* 0.1.13 — Home editorial stacks: large/small + small/large ------------- */
.molle-home-flow{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:8px!important;
  align-items:start;
  width:100%;
}
.molle-home-col{
  display:flex;
  flex-direction:column;
  gap:8px;
  min-width:0;
}
.molle-home-flow .molle-card{width:100%;margin:0;min-width:0}

/* Compact cards are #3 in the left stack and #2 in the right stack. */
.molle-home-col-left .molle-card:nth-child(2) .molle-card-link,
.molle-home-col-right .molle-card:nth-child(1) .molle-card-link{
  display:grid!important;
  grid-template-columns:38% minmax(0,1fr);
  min-height:94px;
  height:94px!important;
  border-radius:20px;
  overflow:hidden;
}
.molle-home-col-left .molle-card:nth-child(2) .molle-card-media,
.molle-home-col-right .molle-card:nth-child(1) .molle-card-media{
  width:100%;
  height:100%!important;
  min-height:0;
  aspect-ratio:auto!important;
}
.molle-home-col-left .molle-card:nth-child(2) .molle-card-media img,
.molle-home-col-right .molle-card:nth-child(1) .molle-card-media img{
  width:100%;height:100%;object-fit:cover;
}
.molle-home-col-left .molle-card:nth-child(2) .molle-card-copy,
.molle-home-col-right .molle-card:nth-child(1) .molle-card-copy{
  min-width:0;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  padding:10px 9px 9px!important;
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.molle-home-col-left .molle-card:nth-child(2) h3,
.molle-home-col-right .molle-card:nth-child(1) h3{
  margin:0;
  font-size:14px!important;
  line-height:1.05!important;
  letter-spacing:-.025em;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.molle-home-col-left .molle-card:nth-child(2) p,
.molle-home-col-right .molle-card:nth-child(1) p{
  margin:6px 0 0;
  font-size:10px!important;
  line-height:1.1;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.molle-home-col-left .molle-card-event:nth-child(2) .molle-card-follow,
.molle-home-col-right .molle-card-event:nth-child(1) .molle-card-follow{
  top:6px;right:6px;width:30px;height:30px;font-size:20px;box-shadow:0 4px 12px rgba(20,33,43,.14)
}

@media(min-width:851px){
  .molle-home-flow{gap:12px!important}
  .molle-home-col{gap:12px}
  .molle-home-col-left .molle-card:nth-child(2) .molle-card-link,
  .molle-home-col-right .molle-card:nth-child(1) .molle-card-link{
    grid-template-columns:34% minmax(0,1fr);
    min-height:118px;
    height:118px!important;
    border-radius:24px;
  }
  .molle-home-col-left .molle-card:nth-child(2) .molle-card-copy,
  .molle-home-col-right .molle-card:nth-child(1) .molle-card-copy{padding:14px 15px!important}
  .molle-home-col-left .molle-card:nth-child(2) h3,
  .molle-home-col-right .molle-card:nth-child(1) h3{font-size:17px!important}
  .molle-home-col-left .molle-card:nth-child(2) p,
  .molle-home-col-right .molle-card:nth-child(1) p{font-size:12px!important}
}

/* Site-wide outer gutters belong to WordPress/global CSS. Frontend does not
   add any Home-specific desktop side padding. */

/* 0.1.15 — Home account pill + benefit value-tag treatment ------------- */
.molle-home-account-pill{
  display:inline-flex;
  align-items:center;
  gap:7px;
  width:max-content;
  max-width:100%;
  margin-top:2px;
  padding:7px 10px 7px 9px;
  border:1px solid rgba(20,33,43,.08);
  border-radius:999px;
  background:rgba(255,255,255,.48);
  color:var(--molle-ink)!important;
  text-decoration:none!important;
  font-size:12px;
  line-height:1;
  font-weight:800;
  box-shadow:0 5px 16px rgba(20,33,43,.045);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}
.molle-home-account-pill:active{transform:scale(.985)}
.molle-home-account-dot{
  width:7px;
  height:7px;
  flex:0 0 7px;
  border-radius:50%;
  background:rgba(20,33,43,.32);
}
.molle-home-account-pill.is-logged-in .molle-home-account-dot{background:var(--molle-success,#3a7d4f)}
.molle-home-account-arrow{font-size:16px;line-height:.8;opacity:.46;margin-left:1px}

/* Plus overview: benefits read as small value tags / vouchers rather than
   white cards containing a second card. Home compact benefit cards keep their
   editorial treatment. */
.molle-plus-page .molle-card-benefit{
  padding:0!important;
  background:transparent!important;
}
.molle-plus-page .molle-card-benefit .molle-card-link{
  position:relative;
  display:block!important;
  width:100%!important;
  padding:0!important;
  background:transparent!important;
  border-radius:28px!important;
  overflow:visible!important;
  box-shadow:none!important;
  filter:drop-shadow(0 11px 22px rgba(20,33,43,.09));
}
.molle-plus-page .molle-card-benefit .molle-card-media,
.molle-plus-page .molle-card-benefit .molle-card-copy{
  width:calc(100% - 8px)!important;
  margin-left:auto!important;
  margin-right:auto!important;
}
.molle-plus-page .molle-card-benefit .molle-card-media{
  border-radius:26px 26px 0 0!important;
  overflow:hidden;
}
.molle-plus-page .molle-card-benefit .molle-card-copy{
  position:relative;
  border-radius:0 0 26px 26px!important;
  border-top:1px dashed rgba(20,33,43,.24);
  overflow:visible!important;
  padding-top:17px;
}
.molle-plus-page .molle-card-benefit .molle-card-copy::before,
.molle-plus-page .molle-card-benefit .molle-card-copy::after{
  content:"";
  position:absolute;
  top:-9px;
  width:18px;
  height:18px;
  border-radius:50%;
  background:var(--molle-page-background,var(--molle-cream,#f4efe6));
  z-index:2;
}
.molle-plus-page .molle-card-benefit .molle-card-copy::before{left:-9px}
.molle-plus-page .molle-card-benefit .molle-card-copy::after{right:-9px}

@media(max-width:850px){
  .molle-home-account-pill{font-size:11px;padding:7px 9px 7px 8px}
  .molle-plus-page .molle-card-benefit .molle-card-media,
  .molle-plus-page .molle-card-benefit .molle-card-copy{width:calc(100% - 6px)!important}
  .molle-plus-page .molle-card-benefit .molle-card-link{filter:drop-shadow(0 8px 18px rgba(20,33,43,.075))}
}


/* 0.1.21 — Home section colour zones ---------------------------------------
   Subtle section backgrounds make Events, Benefits and Guide easier to scan.
   No horizontal padding is introduced: WordPress remains the sole owner of
   the site gutter. */
.molle-home .molle-home-zone{
  position:relative;
  padding-top:26px;
  padding-bottom:32px;
  border-radius:0;
}
.molle-home .molle-home-zone-events{
  background:#f7eee9;
}
.molle-home .molle-home-zone-benefits{
  background:#f1e7d4;
}
.molle-home .molle-home-zone-guide{
  background:#eaf2ee;
}
@media(max-width:850px){
  .molle-home .molle-home-zone{
    padding-left:0!important;
    padding-right:0!important;
    padding-top:22px;
    padding-bottom:28px;
  }
}


/* 0.1.24 — canonical layout cleanup -----------------------------------------
   Horizontal page spacing belongs to WordPress / Global Styles.
   Frontend owns only its internal vertical rhythm and card gaps.
   Do not add horizontal page gutters here and do not rewrite WP parent blocks. */
.molle-app-shell{
  width:100%;
  max-width:var(--wp--style--global--wide-size,1340px);
  margin-inline:auto;
  padding-left:0;
  padding-right:0;
}

@media(max-width:850px){
  .molle-app-shell{
    width:100%;
    max-width:none;
    margin-inline:0;
    padding-left:0!important;
    padding-right:0!important;
  }

  /* These are internal layout components, not page gutters. */
  .molle-home-hero,
  .molle-page-head,
  .molle-section,
  .molle-section-head,
  .molle-card-flow,
  .molle-flow-grid,
  .molle-guide-grid,
  .molle-home-flow,
  .molle-filterbar,
  .molle-pills{
    padding-left:0!important;
    padding-right:0!important;
  }

  .molle-section,
  .molle-card-flow,
  .molle-flow-grid,
  .molle-guide-grid,
  .molle-home-flow,
  .molle-filterbar{
    margin-left:0!important;
    margin-right:0!important;
  }
}

@media(min-width:851px){
  .molle-app-shell{
    width:100%;
    max-width:var(--wp--style--global--wide-size,1340px);
    margin-inline:auto;
  }
  .molle-desktop-nav-inner{
    width:min(var(--wp--style--global--wide-size,1340px),calc(100% - 24px));
  }
}

/* 0.1.24 — virtual singles: restore the site-owned global horizontal gutter.
   Real WP overview pages inherit their gutter from the theme wrapper; virtual
   singles do not, so only these routes bridge to the same site variables. */
.molle-app-shell.molle-single.has-global-padding{
  padding-left:calc(var(--wp--style--root--padding-left, 6px) + var(--molle-page-padding, 0px))!important;
  padding-right:calc(var(--wp--style--root--padding-right, 6px) + var(--molle-page-padding, 0px))!important;
}

/* 0.1.29 — full-bleed home colour zones; content stays in WP gutter */
.molle-home .molle-home-zone{
  box-shadow:0 0 0 100vmax var(--molle-zone-bg,transparent);
  clip-path:inset(0 -100vmax);
  background:var(--molle-zone-bg,transparent)!important;
}
.molle-home .molle-home-zone-events{--molle-zone-bg:#f7eee9}
.molle-home .molle-home-zone-benefits{--molle-zone-bg:#f1e7d4}
.molle-home .molle-home-zone-guide{--molle-zone-bg:#eaf2ee}

/* Membership name may be longer than the former 'Plus'. */
.molle-bottom-nav b{white-space:normal;text-align:center;line-height:1.05;overflow-wrap:anywhere;max-width:100%}

/* Global search modal */
html.molle-search-lock{overflow:hidden!important}
.molle-search-modal{display:none;position:fixed;z-index:9200;inset:0;background:rgba(20,33,43,.32);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);padding:18px;align-items:center;justify-content:center}
.molle-search-modal.is-open{display:flex}
.molle-search-sheet{position:relative;width:min(680px,100%);max-height:min(780px,88vh);overflow:auto;background:rgba(249,248,243,.97);border:1px solid rgba(255,255,255,.75);border-radius:28px;padding:25px;box-shadow:0 24px 80px rgba(20,33,43,.28);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Arial,sans-serif;color:var(--molle-text,#2c2c2c)}
.molle-search-sheet h2{margin:5px 42px 18px 0;font-size:clamp(30px,6vw,46px);line-height:1;letter-spacing:-.04em}
.molle-search-close{position:absolute;right:14px;top:14px;width:38px;height:38px;border:0;border-radius:50%;font-size:26px;background:rgba(20,33,43,.08);cursor:pointer}
.molle-search-box input{width:100%;box-sizing:border-box;border:1px solid rgba(20,33,43,.12);background:#fff;border-radius:18px;padding:15px 17px;font:inherit;font-size:16px;outline:none;box-shadow:0 7px 20px rgba(20,33,43,.05)}
.molle-search-box input:focus{border-color:rgba(58,107,94,.5);box-shadow:0 0 0 3px rgba(58,107,94,.10)}
.molle-search-suggestions{display:flex;gap:7px;flex-wrap:wrap;margin:11px 0 4px}
.molle-search-suggestions button{border:0;border-radius:999px;padding:8px 11px;background:var(--molle-surface-alt,#ece9e0);font:inherit;font-size:12px;font-weight:800;cursor:pointer}
.molle-search-status{font-size:12px;font-weight:700;opacity:.55;margin:14px 2px 8px}
.molle-search-results{display:grid;gap:7px}
.molle-search-result{display:grid;grid-template-columns:58px 1fr 20px;gap:11px;align-items:center;padding:8px;border-radius:16px;background:#fff;color:inherit!important;text-decoration:none!important;box-shadow:0 5px 16px rgba(20,33,43,.045)}
.molle-search-result img,.molle-search-result-placeholder{width:58px;height:58px;border-radius:12px;object-fit:cover;background:var(--molle-surface-alt,#ece9e0);display:block}
.molle-search-result span:nth-child(2){min-width:0;display:flex;flex-direction:column;gap:2px}.molle-search-result small{font-size:9px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;opacity:.5}.molle-search-result b{font-size:15px;line-height:1.15}.molle-search-result em{font-style:normal;font-size:11px;opacity:.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.molle-search-result>strong{font-size:24px;opacity:.35}
@media(max-width:600px){.molle-search-modal{padding:10px;align-items:flex-end}.molle-search-sheet{width:100%;max-height:86vh;border-radius:26px;padding:20px 14px calc(18px + env(safe-area-inset-bottom))}.molle-search-sheet h2{font-size:34px}}

/* Optional: hide the theme's own footer on Frontend app pages. */
body.molle-hide-theme-footer footer.wp-block-template-part,
body.molle-hide-theme-footer .site-footer,
body.molle-hide-theme-footer #colophon{
  display:none!important;
}

/* 0.1.31 — desktop alignment + WordPress gutter ownership -------------------
   Mobile remains untouched. Desktop overview pages may break out of a narrow
   theme content column, but they must never cross WordPress' own root padding.
   The Events archive gets the same root-padding bridge because it is rendered
   virtually rather than inside a normal WP page block. */
@media(min-width:851px){
  body.molle-app-page:not(.molle-virtual-single) .molle-app-shell.molle-home,
  body.molle-app-page:not(.molle-virtual-single) .molle-app-shell.molle-overview{
    width:min(
      var(--wp--style--global--wide-size,1340px),
      calc(
        100vw
        - var(--wp--style--root--padding-left,0px)
        - var(--wp--style--root--padding-right,0px)
      )
    );
    max-width:none;
    position:relative;
    left:50%;
    transform:translateX(-50%);
  }

  .molle-archive-gutter > .molle-app-shell{
    width:100%;
    max-width:var(--wp--style--global--wide-size,1340px);
    margin-inline:auto;
  }

  /* Desktop category rails are intentionally horizontal. A grab cursor makes
     the interaction discoverable; JS adds mouse-drag scrolling. */
  .molle-scroll-pills{
    cursor:grab;
    user-select:none;
    -webkit-user-select:none;
  }
  .molle-scroll-pills.is-dragging{cursor:grabbing}
}

/* 0.1.33 — Guide categories, archive gutter and filtered masonry -----------
   Guide uses two category rows on both mobile and desktop. The stronger right
   fade makes horizontal overflow more obvious without changing the card layout. */
.molle-guide-page .molle-guide-pills{
  display:grid;
  grid-template-rows:repeat(2,max-content);
  grid-auto-flow:column;
  grid-auto-columns:max-content;
  align-items:center;
  justify-content:start;
  overflow-x:auto;
  overflow-y:hidden;
  gap:7px;
  padding-right:84px!important;
  -webkit-overflow-scrolling:touch;
  -webkit-mask-image:linear-gradient(to right,#000 0%,#000 calc(100% - 92px),rgba(0,0,0,.55) calc(100% - 42px),transparent 100%);
  mask-image:linear-gradient(to right,#000 0%,#000 calc(100% - 92px),rgba(0,0,0,.55) calc(100% - 42px),transparent 100%);
}
.molle-guide-page .molle-guide-pills .molle-pill{margin:0}

/* The Events archive is virtual, so explicitly opt it into the same WordPress
   has-global-padding gutter as normal pages and prevent the overview breakout
   rule from widening it back to the viewport. */
body.molle-app-page .molle-archive-gutter.has-global-padding{
  box-sizing:border-box;
  width:100%;
}
@media(min-width:851px){
  body.molle-app-page .molle-archive-gutter > .molle-app-shell.molle-events-page{
    width:100%;
    max-width:var(--wp--style--global--wide-size,1340px);
    left:auto;
    transform:none;
    margin-inline:auto;
  }
}


/* 0.1.34 — two-row category rails + Event category colours ---------------
   Guide, Events and membership benefits share the same compact two-row
   category navigation on every viewport. The rail still scrolls horizontally
   when needed and keeps the stronger edge fade from Guide. */
.molle-two-row-pills{
  display:grid!important;
  grid-template-rows:repeat(2,max-content)!important;
  grid-auto-flow:column!important;
  grid-auto-columns:max-content!important;
  align-items:center!important;
  justify-content:start!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  gap:7px!important;
  padding-right:84px!important;
  -webkit-overflow-scrolling:touch;
  -webkit-mask-image:linear-gradient(to right,#000 0%,#000 calc(100% - 92px),rgba(0,0,0,.55) calc(100% - 42px),transparent 100%)!important;
  mask-image:linear-gradient(to right,#000 0%,#000 calc(100% - 92px),rgba(0,0,0,.55) calc(100% - 42px),transparent 100%)!important;
}
.molle-two-row-pills .molle-pill{margin:0}

/* Event category controls use the authoritative category colour supplied by
   Business Platform. "Alle" remains neutral to preserve a clear reset state. */
.molle-event-pills .molle-pill[data-category]:not([data-category=""]){
  background:var(--molle-category-color,var(--molle-surface-alt));
  color:var(--molle-text);
  border-color:color-mix(in srgb,var(--molle-text) 14%,transparent);
}
.molle-event-pills .molle-pill[data-category]:not([data-category=""]).is-active{
  background:var(--molle-category-color,var(--molle-surface-alt));
  color:var(--molle-text);
  border-color:transparent;
  box-shadow:inset 0 0 0 2px var(--molle-text);
}

/* Match Guide cards: the text panel carries the category colour while the
   event image remains untouched. */
.molle-card-event .molle-card-copy{
  background:var(--molle-category-color,var(--molle-surface));
}

/* 0.1.35 — automatic readable text on coloured Frontend surfaces.
   JS resolves the actual rendered background and chooses black/white by
   WCAG relative luminance. Layout and responsive rules are untouched. */
.molle-card-copy.molle-auto-contrast,
.molle-card-copy.molle-auto-contrast h3,
.molle-card-copy.molle-auto-contrast p,
.molle-pill.molle-auto-contrast{
  color:var(--molle-auto-text)!important;
}

/* 0.2.0 — admin-tunable spacing + app navigation states */
.molle-home .molle-home-hero{padding-top:var(--molle-home-top-gap,22px)!important}
.molle-home .molle-section{margin-bottom:var(--molle-home-section-gap,48px)}
.molle-section-head{padding-bottom:var(--molle-section-head-gap,13px)}
.molle-card-flow,.molle-flow-grid,.molle-guide-grid{gap:var(--molle-grid-gap,12px)}
.molle-section-title-link{color:inherit!important;text-decoration:none!important;font:inherit}
.molle-bottom-nav{bottom:max(var(--molle-nav-bottom-offset,10px),calc(env(safe-area-inset-bottom) + var(--molle-nav-bottom-offset,10px)))}
.molle-bottom-nav a.is-current:after{content:"";display:block;width:22px;height:3px;border-radius:99px;background:var(--molle-nav-accent);position:absolute;bottom:1px}
.molle-bottom-nav a{position:relative}
.molle-bottom-nav a.is-pending:not(.molle-menu-trigger){background:var(--molle-nav-accent)!important;color:var(--molle-auto-text,#111)!important}
.molle-bottom-nav .molle-menu-trigger.is-menu-open{background:var(--molle-nav-accent)!important;color:var(--molle-auto-text,#111)!important}
.molle-desktop-nav a.is-current{box-shadow:inset 0 -3px 0 var(--molle-nav-accent)}
.molle-big-menu-grid a.is-current{box-shadow:inset 0 -4px 0 var(--molle-nav-accent)}
.molle-language-modal{position:fixed;z-index:9300;inset:0;display:none;align-items:flex-end;justify-content:center;padding:18px 10px calc(96px + env(safe-area-inset-bottom));background:rgba(20,33,43,.22);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.molle-language-modal.is-open{display:flex}.molle-language-sheet{position:relative;width:min(570px,100%);padding:30px 22px 25px;border-radius:31px;background:rgba(246,245,239,.96);box-shadow:0 20px 60px rgba(20,33,43,.24)}.molle-language-content{margin-top:18px}.molle-big-menu-grid a[data-molle-nav-target="language"]{gap:0}.molle-big-menu-grid a[data-molle-nav-target="language"] svg{width:36px;height:36px}
@media(min-width:851px){.molle-language-modal{align-items:flex-start;padding-top:92px}}

/* 0.2.2 — UI polish, true admin spacing, typography and modal positioning */
/* Admin spacing owns these values: zero means zero extra Frontend spacing. */
.molle-home .molle-home-hero{
  padding-top:var(--molle-home-top-gap,22px)!important;
  padding-bottom:0!important;
  margin-top:0!important;
  margin-bottom:var(--molle-home-hero-bottom-gap,34px)!important;
}
.molle-home .molle-home-hero h1{font-size:var(--molle-home-title-desktop,68px)!important}
.molle-home .molle-section{margin-top:0!important;margin-bottom:var(--molle-home-section-gap,48px)!important}
.molle-section-head h2{font-size:var(--molle-section-title-desktop,28px)!important}
.molle-page-head h1{font-size:var(--molle-page-title-desktop,68px)!important}
@media(max-width:850px){
  .molle-home .molle-home-hero h1{font-size:var(--molle-home-title-mobile,42px)!important}
  .molle-section-head h2{font-size:var(--molle-section-title-mobile,25px)!important}
  .molle-page-head h1{font-size:var(--molle-page-title-mobile,42px)!important}
}

/* Native-looking interaction: no browser click rectangle; keyboard users keep a soft focus-visible cue. */
.molle-app-shell a,.molle-app-shell button,.molle-bottom-nav a,.molle-bottom-nav button,.molle-big-menu a,.molle-big-menu button,.molle-search-modal a,.molle-search-modal button,.molle-language-modal a,.molle-language-modal button{
  -webkit-tap-highlight-color:transparent;
  outline:none;
}
.molle-app-shell a:focus-visible,.molle-app-shell button:focus-visible,.molle-bottom-nav a:focus-visible,.molle-bottom-nav button:focus-visible,.molle-big-menu a:focus-visible,.molle-big-menu button:focus-visible,.molle-search-modal a:focus-visible,.molle-search-modal button:focus-visible,.molle-language-modal a:focus-visible,.molle-language-modal button:focus-visible{
  outline:2px solid color-mix(in srgb,var(--molle-nav-accent) 70%,#fff);
  outline-offset:3px;
  border-radius:14px;
}

/* Active NAV is a soft app-like capsule, never an underline. */
.molle-bottom-nav a.is-current:after{content:none!important;display:none!important}
.molle-bottom-nav a.is-current,.molle-bottom-nav a.is-pending:not(.molle-menu-trigger){
  background:color-mix(in srgb,var(--molle-nav-accent) 22%,transparent)!important;
  color:var(--molle-text)!important;
  border-radius:18px;
}
.molle-bottom-nav .molle-menu-trigger.is-menu-open{
  background:var(--molle-nav-accent)!important;
  color:var(--molle-nav-active-text,#111)!important;
  border-radius:18px;
}
.molle-desktop-nav a.is-current,.molle-big-menu-grid a.is-current{box-shadow:none!important;background:color-mix(in srgb,var(--molle-nav-accent) 22%,transparent)!important;border-radius:18px}

/* Both modals are viewport-centred. Search JS also follows visualViewport when the soft keyboard opens. */
.molle-search-modal,.molle-language-modal{align-items:center!important;justify-content:center!important;padding:14px!important}
.molle-search-sheet,.molle-language-sheet{margin:0!important;max-height:min(86vh,760px);overflow:auto}
.molle-search-modal{top:var(--molle-search-vv-top,0px)!important;height:var(--molle-search-vv-height,100vh)!important;bottom:auto!important}
@media(max-width:600px){.molle-search-modal{align-items:center!important}.molle-search-sheet{max-height:calc(var(--molle-search-vv-height,100vh) - 24px)!important;padding-bottom:18px!important}}

/* Temporary category palette until Business Platform owns editable Guide categories/colors. */
:root{
 --molle-category-restaurant:#e6b86d;--molle-category-cafe:#d9a7a0;--molle-category-hotel:#8db6c8;--molle-category-bed-breakfast:#b7a0c9;
 --molle-category-camping:#8fb89a;--molle-category-museum:#8ca6c8;--molle-category-shop:#e2a27c;--molle-category-gallery:#c6a0c7;
 --molle-category-theatre:#a58bb7;--molle-category-cinema:#7f9bb3;--molle-category-bar:#b18484;--molle-category-beach:#8fc9d4;
 --molle-category-hiking-route:#91b07c;--molle-category-park:#8db58d;--molle-category-association:#d2a96f;--molle-category-service:#a6aeb5;
}

/* 0.2.3 — IRL polish: section-title inheritance, editable home zones, aligned back button */
.molle-section-head h2 .molle-section-title-link{
  font-size:inherit!important;
  line-height:inherit!important;
  font-weight:inherit!important;
  letter-spacing:inherit!important;
  white-space:normal!important;
}
.molle-home .molle-home-zone-events{--molle-zone-bg:var(--molle-home-events-bg,#f7eee9)}
.molle-home .molle-home-zone-benefits{--molle-zone-bg:var(--molle-home-benefits-bg,#f1e7d4)}
.molle-home .molle-home-zone-guide{--molle-zone-bg:var(--molle-home-guide-bg,#eaf2ee)}
@media(max-width:850px){
  .molle-nav-back{bottom:calc(92px + env(safe-area-inset-bottom) + var(--molle-nav-bottom-offset,10px))!important}
}


/* 0.2.4 — cleaner app hierarchy and single-state NAV feedback. */
.molle-home-hero > .molle-kicker,
.molle-page-head > .molle-kicker{display:none!important}
.molle-desktop-nav a.is-pending{box-shadow:none!important;background:color-mix(in srgb,var(--molle-nav-accent) 22%,transparent)!important;border-radius:18px}

/* 0.2.5 — month navigation */
.molle-calendar-head{gap:12px}
.molle-calendar-head h2{margin-right:auto}
.molle-month-nav{display:flex;align-items:center;gap:4px;margin:0 0 10px auto;flex:0 0 auto}
.molle-month-nav a{width:38px;height:38px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--molle-ink);text-decoration:none!important;background:rgba(255,255,255,.66);-webkit-tap-highlight-color:transparent;transition:transform .12s ease,background .12s ease}
.molle-month-nav a:active{transform:scale(.94);background:rgba(0,0,0,.08)}
.molle-month-nav a svg{width:22px;height:22px;display:block;fill:none;stroke:currentColor;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round}
.molle-month-nav a:focus{outline:none}
.molle-month-nav a:focus-visible{box-shadow:0 0 0 3px rgba(47,47,47,.18)}


/* 0.2.7 — one global top offset for every Molle view.
   WordPress spacing outside the shortcode remains additive, so editor spacers/padding can still add extra room. */
.molle-app-shell{padding-top:var(--molle-page-top-gap-mobile,26px)!important}
.molle-page-head{padding-top:0!important}
.molle-single{padding-top:0!important}
@media(min-width:851px){
  .molle-app-shell{padding-top:var(--molle-page-top-gap-desktop,92px)!important}
}


/* 0.2.8 — neutral reset pill must always regain dark text when inactive.
   Auto-contrast may have cached white while "Alle" was the active dark pill. */
.molle-event-pills .molle-pill[data-category=""]:not(.is-active),
.molle-guide-pills .molle-pill[data-category=""]:not(.is-active){
  color:var(--molle-ink,#202124)!important;
  --molle-auto-text:var(--molle-ink,#202124)!important;
}


/* 0.2.9 — seamless NAV handoff across full page loads.
   Current state is rendered server-side; initial paint never animates into active state. */
.molle-nav-initial a{transition:none!important;animation:none!important}


/* 0.2.10 — true global Molle page top spacing.
   The gap belongs to the page content container, not only Frontend shortcodes.
   This also covers Core pages such as login/profile and all virtual singles.
   Frontend shells no longer add their own top gap, preventing double spacing. */
.molle-app-shell{
  padding-top:0!important;
}
body.molle-frontend-active .wp-site-blocks > main,
body.molle-frontend-active.molle-virtual-single .wp-site-blocks > .molle-app-shell{
  padding-top:var(--molle-page-top-gap-mobile,26px)!important;
}
@media(min-width:851px){
  body.molle-frontend-active .wp-site-blocks > main,
  body.molle-frontend-active.molle-virtual-single .wp-site-blocks > .molle-app-shell{
    padding-top:var(--molle-page-top-gap-desktop,92px)!important;
  }
}

/* Classic-theme fallback. The block-theme selectors above are the canonical path. */
body.molle-frontend-active:not(.molle-virtual-single) main.site-main{
  padding-top:var(--molle-page-top-gap-mobile,26px)!important;
}
body.molle-frontend-active.molle-virtual-single > main.molle-app-shell,
body.molle-frontend-active.molle-virtual-single #main > main.molle-app-shell{
  padding-top:var(--molle-page-top-gap-mobile,26px)!important;
}
@media(min-width:851px){
  body.molle-frontend-active:not(.molle-virtual-single) main.site-main{
    padding-top:var(--molle-page-top-gap-desktop,92px)!important;
  }
  body.molle-frontend-active.molle-virtual-single > main.molle-app-shell,
  body.molle-frontend-active.molle-virtual-single #main > main.molle-app-shell{
    padding-top:var(--molle-page-top-gap-desktop,92px)!important;
  }
}


/* 0.2.11 — NAV is painted at wp_body_open, not late in wp_footer.
   Keep its surface almost opaque so changing page content underneath does not
   visually flash through the glass during a full WordPress navigation. */
.molle-bottom-nav,.molle-bottom-nav-inner,.molle-desktop-nav,.molle-desktop-nav-inner{
  animation:none!important;
}
.molle-bottom-nav-inner{background:rgba(246,245,239,.96)!important}
@media(min-width:851px){.molle-desktop-nav-inner{background:rgba(246,245,239,.95)!important}}

/* /events is a virtual archive. Its outer archive gutter is the page content
   container, so it needs the same global top gap that normal WP <main> pages get. */
body.molle-frontend-active.post-type-archive-mbp_event .molle-archive-gutter.has-global-padding{
  padding-top:var(--molle-page-top-gap-mobile,26px)!important;
}
@media(min-width:851px){
  body.molle-frontend-active.post-type-archive-mbp_event .molle-archive-gutter.has-global-padding{
    padding-top:var(--molle-page-top-gap-desktop,92px)!important;
  }
}
