/* MAYCARES — Explore (Phase 5A.3 Responsive Travel Experience) */
:root{
  --white:#FFFFFF;
  --navy:#1D476B;
  --pink:#E8768F;
  --blue-gray:#55657F;
  --hairline:rgba(85,101,127,.28);
  --hairline-strong:rgba(85,101,127,.45);
  --text:rgba(0,0,0,.88);
  --placeholder:#F2F4F7;

  --header-h:64px;
  --bottomnav-h:64px;
  --lh-title:1.2;
  --lh-body:1.55;
  --lh-micro:1.4;
  --fw-title:600;
  --fw-body:400;
  --fw-micro:500;
  --shadow-card:0 1px 2px rgba(16,24,40,.04);
  --shadow-hover:0 12px 28px -12px rgba(16,24,40,.22);
  --gutter:20px;
  --control-h:52px;
  --radius:16px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{
  background:var(--white);color:var(--text);
  font-family:'Montserrat',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
  /* iOS Safari inflates text inside flex rows; pin it so header/rows keep their measured width. */
  -webkit-text-size-adjust:100%;text-size-adjust:100%;
  width:100%;max-width:100%;
  /* `clip` contains stray width without creating a scroll container (which iOS
     can still pan, producing the page right-shift). */
  overflow-x:clip;
}
a{color:var(--navy);text-decoration:none}
a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--navy);outline-offset:2px;border-radius:6px}

/* ===== App shell ===== */
.shell{width:100%;max-width:1360px;margin:0 auto}
.container{padding-left:var(--gutter);padding-right:var(--gutter);max-width:100%}
.measure{max-width:720px}
main.container{padding-bottom:calc(var(--bottomnav-h) + env(safe-area-inset-bottom) + 24px)}

/* ===== Header ===== */
header.app-header{
  height:var(--header-h);position:sticky;top:0;z-index:20;
  background:var(--white);border-bottom:1px solid var(--hairline);
}
.header-inner{
  width:100%;max-width:1280px;margin:0 auto;height:100%;
  display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;min-width:0;
}
.header-inner>a:first-child{display:block;min-width:0;width:max-content;max-width:100%}
.logo{display:block;height:26px;width:auto;max-width:100%;object-fit:contain;object-position:left center}
.desktop-nav{display:none}
.lang{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:var(--fw-micro);line-height:var(--lh-micro);color:var(--navy);flex:0 1 auto;min-width:0}
.lang button{background:none;border:0;padding:4px 2px;font:inherit;cursor:pointer;color:var(--blue-gray)}
.lang button.on{color:var(--navy);font-weight:var(--fw-micro);border-bottom:1px solid var(--navy)}
.lang .sep{color:var(--hairline-strong)}
.lang .off{color:var(--blue-gray);font-weight:var(--fw-body)}

/* ===== Bottom navigation (mobile) ===== */
.bottom-nav{
  position:fixed;left:0;right:0;bottom:0;z-index:30;
  background:var(--white);border-top:1px solid var(--hairline);
  padding-bottom:env(safe-area-inset-bottom);
  /* Single-row lock: five equal columns that can never wrap or scroll. */
  display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:auto;
  grid-auto-flow:column;flex-wrap:nowrap;overflow:hidden;
}
.bottom-nav a{
  min-width:0;min-height:var(--bottomnav-h);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  padding:8px 1px;color:var(--blue-gray);
  font-size:10px;font-weight:var(--fw-micro);line-height:1.2;text-align:center;
}
@media (max-width:359px){.bottom-nav a{font-size:9px;letter-spacing:-.01em}}
header.app-header a:focus-visible{border-radius:8px}
.bottom-nav a svg{width:22px;height:22px;flex:0 0 22px}
.bottom-nav a .nav-may-icon{width:22px;height:22px;flex:0 0 22px;object-fit:contain;display:block}
.header-tail{display:flex;align-items:center;gap:14px;min-width:0;justify-content:flex-end;white-space:nowrap}
.header-tail .lang{flex:0 0 auto}
.header-account{font-size:13px;font-weight:var(--fw-micro);color:var(--navy);white-space:nowrap;border-bottom:1px solid var(--hairline-strong);padding-bottom:1px;display:inline-flex;align-items:center;gap:6px;min-width:0}
/* In-app attention indicator — MAYCARES pink, never a popup. */
.header-dot{
  min-width:17px;height:17px;padding:0 5px;border-radius:999px;background:#E8768F;color:#fff;
  font-size:10px;font-weight:var(--fw-micro);line-height:1;
  display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;
}

@media (max-width:430px){
  .header-inner{gap:10px}
  .header-tail{gap:9px}
  .header-account{gap:4px}
}
@media (max-width:359px){
  .header-inner{gap:7px}
  .logo{height:22px}
  .header-tail{gap:6px}
  .lang{gap:3px;font-size:12px}
  .lang button{padding-left:1px;padding-right:1px}
  .header-account{font-size:12px;gap:3px}
  .header-dot{min-width:16px;height:16px;padding:0 4px;font-size:9px}
}

/* Tablet/desktop: the narrow-screen two-column grid must not leak up here.
   Three zones in one flex row — logo left, primary nav centered, controls right. */
@media (min-width:768px){
  .header-inner{
    display:flex;align-items:center;justify-content:space-between;gap:24px;
  }
  .header-inner>a:first-child{flex:0 0 auto}
  .header-tail{flex:0 0 auto}
}
@media (min-width:1024px){
  .desktop-nav{flex:1 1 auto;justify-content:center}
}

.bottom-nav a[aria-current="page"]{color:var(--navy)}
.bottom-nav a span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ===== Page head ===== */
.page-title{font-size:28px;font-weight:var(--fw-title);line-height:var(--lh-title);padding-top:28px;letter-spacing:-.01em}
.page-sub{margin-top:8px;font-size:15px;font-weight:var(--fw-body);line-height:var(--lh-body);color:var(--blue-gray)}

/* ===== SearchBar ===== */
.searchbar{
  margin-top:20px;display:flex;align-items:center;gap:10px;min-height:var(--control-h);
  border:1px solid var(--hairline-strong);border-radius:999px;padding:0 18px;background:var(--white);
  box-shadow:var(--shadow-card);transition:box-shadow .2s ease,border-color .2s ease;
}
.searchbar:focus-within{border-color:var(--navy);box-shadow:0 6px 20px -10px rgba(29,71,107,.4)}
.searchbar svg{width:20px;height:20px;flex:0 0 20px;color:var(--blue-gray)}
.searchbar input{flex:1;min-width:0;border:0;outline:0;font-family:inherit;font-size:16px;font-weight:var(--fw-body);
  line-height:var(--lh-body);color:var(--text);background:transparent}
.searchbar input::placeholder{color:var(--blue-gray)}

/* ===== FilterBar — horizontally scrollable on mobile ===== */
.filterbar{
  margin-top:16px;display:flex;gap:8px;flex-wrap:nowrap;
  overflow-x:auto;overflow-y:hidden;scrollbar-width:none;
  -webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;
  margin-left:calc(var(--gutter) * -1);margin-right:calc(var(--gutter) * -1);
  padding:2px var(--gutter);
}
.filterbar::-webkit-scrollbar{display:none}
.chip{
  flex:0 0 auto;min-height:40px;display:inline-flex;align-items:center;padding:0 16px;
  border:1px solid var(--hairline-strong);border-radius:999px;background:var(--white);cursor:pointer;
  font-family:inherit;font-size:14px;font-weight:var(--fw-micro);line-height:var(--lh-micro);color:var(--blue-gray);
  transition:border-color .15s ease,color .15s ease,background .15s ease;
}
.chip:hover{border-color:var(--navy);color:var(--navy)}
.chip[aria-pressed="true"]{border-color:var(--navy);background:var(--navy);color:#fff}

.results-label{margin-top:20px;font-size:13px;font-weight:var(--fw-micro);line-height:var(--lh-micro);color:var(--blue-gray)}

/* Explore mobile hierarchy: visual categories first, then one compact row of
   secondary controls. Filtering state and predicates remain unchanged. */
.explore-primary-categories{margin-top:24px}
.explore-mobile-controls{
  margin-top:18px;display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;
  margin-left:calc(var(--gutter) * -1);margin-right:calc(var(--gutter) * -1);
  padding:2px var(--gutter);
}
.explore-mobile-controls::-webkit-scrollbar{display:none}
.explore-mobile-controls .chip{min-height:42px}
.explore-filter-trigger{
  flex:0 0 auto;min-height:42px;height:42px;border-radius:999px;padding:0 15px;
  border-color:var(--hairline-strong);color:var(--navy);background:var(--white);box-shadow:none;
}
.explore-filter-trigger svg{width:17px;height:17px}
.explore-filter-count{
  min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--navy);color:var(--white);
  display:inline-flex;align-items:center;justify-content:center;font-size:11px;
}
.explore-desktop-filters{display:none}
.explore-filter-sheet{
  width:100%;max-height:min(76vh,620px);overflow-y:auto;border-radius:16px 16px 0 0;
  padding:24px 20px calc(20px + env(safe-area-inset-bottom));background:var(--white);color:var(--text);
}
.explore-filter-sheet h2{font-family:'Montserrat',sans-serif;font-size:20px;color:var(--navy)}
.explore-budget-options{margin-top:22px;border:0;padding:0;display:grid;gap:10px}
.explore-budget-options legend{
  margin-bottom:10px;font-size:12px;font-weight:600;text-transform:uppercase;color:var(--blue-gray);
}
.explore-budget-option{
  width:100%;min-height:50px;height:auto;display:grid;grid-template-columns:56px minmax(0,1fr) 24px;
  justify-items:start;border-color:var(--hairline-strong);border-radius:10px;padding:10px 14px;
  color:var(--text);background:var(--white);box-shadow:none;font-family:'Montserrat',sans-serif;
}
.explore-budget-option[aria-pressed="true"]{border-color:var(--navy);background:rgba(29,71,107,.06)}
.explore-budget-option > span:first-child{font-weight:600;color:var(--navy)}
.explore-budget-check{justify-self:end;color:var(--navy);font-weight:600}
.explore-filter-done{
  width:100%;min-height:48px;height:48px;margin-top:20px;border-radius:999px;background:var(--navy);color:var(--white);
}
.explore-results-context{margin-top:18px}
.explore-results-context .results-label{margin-top:10px}
.explore-active-summary{display:flex;align-items:center;gap:8px;overflow-x:auto;scrollbar-width:none;padding:2px 0}
.explore-active-summary::-webkit-scrollbar{display:none}
.explore-active-chip{
  flex:0 0 auto;height:34px;border-radius:999px;border-color:var(--hairline-strong);box-shadow:none;
  color:var(--navy);background:var(--white);font-family:'Montserrat',sans-serif;
}
.explore-active-chip svg{width:14px;height:14px}
.explore-clear-filters{flex:0 0 auto;height:34px;padding:0 8px;color:var(--navy);font-family:'Montserrat',sans-serif}

/* ===== Collection grid ===== */
.collection{margin-top:16px;display:grid;gap:20px 16px;grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:359px){.collection{grid-template-columns:minmax(0,1fr)}}

.card{
  display:flex;flex-direction:column;min-width:0;
  border:0;background:transparent;border-radius:var(--radius);
  transition:transform .2s ease;
}
.card:hover{transform:translateY(-2px)}
.card:hover .thumb{box-shadow:var(--shadow-hover)}

/* ===== Premium placeholder media ===== */
.thumb{
  position:relative;display:block;width:100%;overflow:hidden;
  border-radius:var(--radius);background:var(--placeholder);
  aspect-ratio:4/3;
  transition:box-shadow .25s ease;
}
.thumb::before{
  content:"";position:absolute;inset:0;
  background:
    radial-gradient(120% 90% at 20% 0%, rgba(29,71,107,.10) 0%, rgba(29,71,107,0) 60%),
    radial-gradient(100% 80% at 100% 100%, rgba(232,118,143,.10) 0%, rgba(232,118,143,0) 62%),
    linear-gradient(160deg,#F7F8FA 0%,#EDF0F4 100%);
}
.thumb::after{
  content:"";position:absolute;left:50%;top:50%;width:34%;padding-bottom:34%;
  transform:translate(-50%,-50%) rotate(45deg);
  border:1px solid rgba(29,71,107,.20);border-radius:22%;
}
.thumb-monogram{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  font-size:12px;font-weight:var(--fw-title);letter-spacing:.22em;color:rgba(29,71,107,.55);
}
.thumb-credit{
  position:absolute;left:0;right:0;bottom:10px;text-align:center;
  font-size:10px;font-weight:var(--fw-micro);letter-spacing:.1em;text-transform:uppercase;
  line-height:var(--lh-micro);color:rgba(85,101,127,.75);
}
.thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

.card-body{padding:12px 2px 0;min-width:0}
.card-kicker{
  font-size:11px;font-weight:var(--fw-micro);line-height:var(--lh-micro);color:var(--blue-gray);
  letter-spacing:.08em;text-transform:uppercase;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.card-title{
  margin-top:5px;font-size:16px;font-weight:var(--fw-title);line-height:1.3;color:var(--text);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.card-meta{
  margin-top:4px;font-size:13px;font-weight:var(--fw-body);line-height:1.45;color:var(--blue-gray);
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;
}
/* Explore card creator credit — subtle, below the photograph, no container. */
.card-credit{
  margin-top:6px;font-size:11px;font-weight:var(--fw-body);line-height:1.4;
  color:rgba(85,101,127,.85);overflow-wrap:anywhere;
}


/* ===== PageState ===== */
.pagestate{margin-top:32px}
.pagestate h3{font-size:20px;font-weight:var(--fw-title);line-height:var(--lh-title)}
.pagestate p{margin-top:8px;font-size:14px;font-weight:var(--fw-body);line-height:var(--lh-body);color:var(--blue-gray)}
.btn-secondary{display:inline-flex;align-items:center;justify-content:center;min-height:var(--control-h);
  padding:0 20px;border:1px solid var(--navy);border-radius:999px;background:var(--white);
  font-family:inherit;font-size:14px;font-weight:var(--fw-micro);line-height:var(--lh-micro);color:var(--navy)}

/* ===== Footer ===== */
footer.app-footer{
  margin-top:48px;border-top:1px solid var(--hairline);padding-top:28px;
  padding-bottom:calc(var(--bottomnav-h) + env(safe-area-inset-bottom) + 32px);
}
.footer-links{display:flex;flex-wrap:wrap;gap:12px 24px;font-size:14px;font-weight:var(--fw-body);line-height:var(--lh-body)}
.footer-note{margin-top:20px;font-size:12px;font-weight:var(--fw-body);line-height:1.5;color:var(--blue-gray)}

/* ===== Tablet ===== */
@media (min-width:640px){
  :root{--gutter:32px}
  .page-title{font-size:34px;padding-top:40px}
  .page-sub{font-size:16px}
  .collection{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px 24px}
  .card-title{font-size:17px}
}

/* Tablet typography keeps the existing scale but gives primary hierarchy a
   deliberate intermediate step before the 40px desktop title. */
@media (min-width:768px) and (max-width:1023px){
  .page-title{font-size:36px;padding-top:44px}
  .page-sub{font-size:16px}
  .results-label{font-size:14px}
  .pagestate{min-height:96px;padding:20px 0}
  .pagestate h3{font-size:21px}
  .pagestate p{font-size:15px}
}

/* ===== Desktop ===== */
@media (min-width:1024px){
  :root{--gutter:48px;--header-h:76px;--bottomnav-h:0px}
  .bottom-nav{display:none}
  .desktop-nav{display:flex;align-items:center;gap:24px;min-width:0}
  .desktop-nav a{
    font-size:14px;font-weight:var(--fw-micro);line-height:var(--lh-micro);color:var(--blue-gray);
    white-space:nowrap;padding:6px 2px;transition:color .15s ease;
  }
  .desktop-nav a:hover{color:var(--navy)}
  .desktop-nav a[aria-current="page"]{color:var(--navy);box-shadow:inset 0 -2px 0 0 var(--navy)}
  .logo{height:30px}
  header.app-header{padding-left:var(--gutter);padding-right:var(--gutter)}
  main.container,footer.app-footer{max-width:1280px;margin-left:auto;margin-right:auto;padding-bottom:0}
  main.container{padding-bottom:16px}
  footer.app-footer{padding-bottom:56px}
  .page-title{font-size:40px;padding-top:56px}
  .searchbar{margin-top:28px;max-width:640px}
  .filterbar{margin-left:0;margin-right:0;padding-left:0;padding-right:0;flex-wrap:wrap;overflow:visible}
  .collection{grid-template-columns:repeat(4,minmax(0,1fr));gap:40px 28px}
  .card-title{font-size:18px}
  .card-meta{font-size:14px}
  .thumb{aspect-ratio:1/1}
}

@media (min-width:1440px){
  .collection{gap:44px 32px}
}

/* Governance v1.2 — suppress placeholder ornament when a real image is present */
.thumb:has(img)::before,.thumb:has(img)::after{display:none}

/* ===== Desktop/tablet — centered discovery group (Explore only) =====
   Hero, subtitle, search field and category chips read as one centered
   editorial group, matching the Miss Universe desktop reference. The
   results grid below is untouched, and mobile keeps its approved layout. */
@media (min-width:768px){
  .measure.explore-discovery{margin-left:auto;margin-right:auto;text-align:center}
  .measure.explore-discovery .searchbar{margin-left:auto;margin-right:auto;max-width:560px;text-align:left}
  .filterbar.explore-filterbar{
    justify-content:center;flex-wrap:wrap;overflow:visible;
    margin-left:auto;margin-right:auto;max-width:880px;
    padding-left:0;padding-right:0;row-gap:8px;
  }
  .explore-mobile-controls{display:none}
  .explore-desktop-filters{display:flex}
  .explore-primary-categories{margin-top:32px}
  .explore-active-summary{justify-content:center;overflow:visible}
  .explore-results-context{text-align:center}
  .measure.explore-discovery + .filterbar.explore-filterbar + .results-label,
  .filterbar.explore-filterbar + .results-label{text-align:center}
}

/* ===== Place ☆ — Wishlist save on discovery cards ===== */
.card-wrap{position:relative;display:flex;flex-direction:column;min-width:0}
.card-wrap > .card{flex:1 1 auto}
.place-star{
  position:absolute;top:10px;right:10px;width:36px;height:36px;border-radius:999px;
  display:inline-flex;align-items:center;justify-content:center;z-index:2;
  border:1px solid var(--hairline-strong);background:rgba(255,255,255,.92);
  color:var(--navy);cursor:pointer;padding:0;
  transition:color .2s ease,border-color .2s ease;
}
.place-star svg{width:19px;height:19px}
.place-star:hover{border-color:var(--navy)}
.place-star:disabled{opacity:.6;cursor:progress}
.place-star.place-star-on{color:var(--pink,#E8768F);border-color:var(--pink,#E8768F)}
.place-star.place-star-inline{position:static;width:40px;height:40px}
/* Roomy surfaces (Place Detail) name the action; compact cards stay icon-only. */
.place-star.place-star-labeled{
  position:static;width:auto;height:40px;gap:8px;padding:0 14px;border-radius:999px;
  font:inherit;font-size:14px;font-weight:var(--fw-title,600);white-space:nowrap;
}
.place-star-text{line-height:1}

.discovery-hint{
  margin-top:10px;font-size:13px;line-height:var(--lh-body);color:var(--blue-gray);text-align:center;
}

/* ------------------------------------------------------------------
   Explora v2.1 — visual, Admin-managed discovery sections.
   Category cards, section headers and horizontal place rails. The
   filtered grid below is untouched: these styles only add the browse
   layer on top of it.
   ------------------------------------------------------------------ */
.exp-section{margin-top:26px}
.exp-section-head{
  display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 12px;
}
.exp-section-head h2{
  margin:0;font-size:17px;line-height:1.25;font-weight:var(--fw-title,600);color:var(--navy);
}
.exp-seeall{
  border:0;background:none;padding:0;cursor:pointer;
  font:inherit;font-size:13px;font-weight:var(--fw-title,600);color:var(--navy);
}
.exp-seeall:hover{text-decoration:underline}

.exp-cat-rail{gap:12px}
.exp-cat-card{
  flex:0 0 132px;width:132px;border:0;background:none;padding:0;cursor:pointer;
  display:flex;flex-direction:column;gap:8px;text-align:left;font:inherit;text-decoration:none;
}
.exp-cat-media{
  position:relative;display:block;width:132px;height:132px;border-radius:16px;overflow:hidden;
  background:var(--wash,#F4F6F8);border:1px solid var(--hairline);
  display:flex;align-items:center;justify-content:center;
  transition:border-color .2s ease,box-shadow .2s ease;
}
.exp-cat-media img{width:100%;height:100%;object-fit:cover;display:block}
.exp-cat-card:hover .exp-cat-media{border-color:var(--navy);box-shadow:0 6px 18px rgba(29,71,107,.12)}
.exp-cat-card[aria-pressed="true"] .exp-cat-media{
  border-color:var(--navy);box-shadow:0 0 0 2px var(--navy) inset;
}
.exp-cat-label{
  font-size:13px;line-height:1.3;font-weight:var(--fw-title,600);color:var(--navy);
}

/* Place cards inside a rail keep the grid card design at a fixed width. */
.exp-place-rail{gap:14px}
.exp-place-rail .card-wrap{flex:0 0 216px;width:216px}

.card-flags{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 0}
.card-flag{
  display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;line-height:1.6;
  border:1px solid var(--hairline-strong);color:var(--blue-gray);
}
.card-flag-may{border-color:var(--pink,#E8768F);color:var(--pink,#E8768F)}

@media (min-width:768px){
  .exp-cat-card,.exp-cat-media{width:152px}
  .exp-cat-media{height:152px}
  .exp-place-rail .card-wrap{flex:0 0 248px;width:248px}
  .exp-section-head h2{font-size:19px}
}

/* Local category rail inside one editorial collection (MAY recomienda,
   Aliados MAYCARES, Todos los lugares). Same chips as the global bar, but
   scoped to its own collection and always a single swipeable row. */
.filterbar.collection-filterbar{
  margin:0 0 12px;
  padding:0;
  flex-wrap:nowrap;
  overflow-x:auto;
}
@media (min-width:900px){
  .filterbar.collection-filterbar{flex-wrap:wrap;overflow:visible}
}

/* Compact LOCAL search inside one editorial collection. Same visual language
   as the global Explore search bar, slightly tighter. */
.searchbar.collection-searchbar{
  margin:0 0 10px;
  padding:8px 12px;
  max-width:100%;
}
.searchbar.collection-searchbar input{font-size:14px}
@media (min-width:900px){
  .searchbar.collection-searchbar{max-width:420px}
}
.collection-empty{
  margin:2px 0 14px;font-size:14px;color:var(--blue-gray);
}

/* ------------------------------------------------------------------
   Servicios para Reinas — curated Explore experience.
   Additive presentation only: the dataset is the Admin-managed
   additional-category marker, and every other Explore surface is
   untouched by these rules.
   ------------------------------------------------------------------ */
.queens-hero{margin-top:8px;text-align:center}
.queens-hero-title{
  margin:14px 0 0;font-size:26px;line-height:1.2;font-weight:var(--fw-title);
  letter-spacing:-.01em;color:var(--navy);
}
.queens-hero-sub{
  margin:8px auto 0;max-width:520px;font-size:15px;line-height:var(--lh-body);color:var(--blue-gray);
}
@media (min-width:768px){
  .queens-hero-title{font-size:34px}
  .queens-hero-sub{font-size:16px}
}

.queens-services{
  margin-top:18px;display:grid;gap:16px 14px;grid-template-columns:repeat(2,minmax(0,1fr));
}
@media (min-width:600px){.queens-services{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1024px){.queens-services{grid-template-columns:repeat(6,minmax(0,1fr));gap:20px 18px}}
.queens-service{
  border:0;background:none;padding:0;cursor:pointer;font:inherit;min-width:0;
  display:flex;flex-direction:column;gap:8px;text-align:center;
}
.queens-service-media{
  position:relative;display:flex;align-items:center;justify-content:center;
  width:100%;aspect-ratio:4/3;border-radius:16px;overflow:hidden;
  background:var(--placeholder);border:1px solid var(--hairline);
  transition:border-color .2s ease,box-shadow .2s ease;
}
.queens-service-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.queens-service:hover .queens-service-media{border-color:var(--navy)}
.queens-service[aria-pressed="true"] .queens-service-media{
  border-color:var(--navy);box-shadow:0 0 0 2px var(--navy) inset;
}
.queens-service-label{
  font-size:13px;line-height:1.3;font-weight:var(--fw-title);color:var(--navy);
  overflow-wrap:anywhere;
}

.card-flag-queens{border-color:var(--navy);color:var(--navy)}

.queen-admin-list{margin-top:22px}
.queen-admin-category{display:block}
.queen-admin-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.queen-admin-members{margin-top:16px}
.queen-admin-members .adm-checks{display:grid;grid-template-columns:1fr;gap:8px}
.queen-admin-members label{display:flex;align-items:center;gap:8px}
@media (min-width:680px){
  .queen-admin-members .adm-checks{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ===== Global pageant context navigation =====
   Slim utility row under the main header: current edition on the left,
   pageant switcher on the right. Never a second navigation header. */
.pageant-context{padding-top:0;padding-bottom:0}
.pageant-context-row{
  display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;
  min-height:40px;border-top:1px solid var(--hairline);
}
.pageant-context-back,.pageant-context-current{
  min-width:0;
  font-size:13px;font-weight:600;color:var(--navy);text-decoration:none;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.pageant-context-current{color:var(--blue-gray)}
.pageant-context-back:hover{text-decoration:underline}
.pageant-context-switch{
  flex:0 0 auto;
  border:0;background:none;padding:6px 0;cursor:pointer;
  font:inherit;font-size:13px;font-weight:600;color:var(--blue-gray);white-space:nowrap;
}
.pageant-context-switch:hover{color:var(--navy)}
.pageant-context-back:focus-visible,.pageant-context-switch:focus-visible{
  outline:2px solid var(--navy);outline-offset:3px;border-radius:8px;
}
.pageant-context-full{display:none}
.pageant-context-short{display:inline}
@media (min-width:600px){
  .pageant-context-full{display:inline}
  .pageant-context-short{display:none}
}

/* Switcher sheet */
.pageant-sheet-layer{
  position:fixed;inset:0;z-index:60;background:rgba(20,24,31,.42);
  display:flex;align-items:flex-end;justify-content:center;
}
.pageant-sheet{
  width:100%;max-width:520px;background:#fff;border-radius:18px 18px 0 0;
  padding:18px 18px 24px;max-height:82vh;overflow:auto;box-shadow:var(--shadow);
}
@media (min-width:700px){
  .pageant-sheet-layer{align-items:center}
  .pageant-sheet{border-radius:18px}
}
.pageant-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.pageant-sheet-head h2{font-size:16px;font-weight:700;color:var(--navy);margin:0}
.pageant-sheet-head button{border:0;background:none;font-size:16px;cursor:pointer;color:var(--blue-gray);padding:6px}
.pageant-sheet-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:8px}
.pageant-sheet-item{
  display:block;padding:12px 14px;border:1px solid var(--hairline);border-radius:12px;
  text-decoration:none;color:var(--text);
}
.pageant-sheet-item.is-active{border-color:var(--navy);background:rgba(29,71,107,.05)}
.pageant-sheet-name{display:block;font-weight:600;font-size:15px;color:var(--navy)}
.pageant-sheet-meta{display:block;margin-top:2px;font-size:13px;color:var(--blue-gray)}
.pageant-sheet-foot{margin:14px 0 0;font-size:13px}
.pageant-sheet-foot a{color:var(--navy)}

/* End-of-page pageant discovery */
.pageant-discovery{margin:28px 0 8px;padding-top:16px;border-top:1px solid var(--hairline)}
.pageant-discovery-title{margin:0 0 10px;font-size:13px;font-weight:600;color:var(--blue-gray)}
.pageant-discovery-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.pageant-discovery-link,.pageant-discovery-all{
  font-size:13px;font-weight:600;color:var(--navy);text-decoration:none;
}
.pageant-discovery-link:hover,.pageant-discovery-all:hover{text-decoration:underline}
.pageant-discovery-all{color:var(--blue-gray)}
.pageant-discovery-spacer{flex:0 0 1px}

/* Navigation progress: subtle proof that the tap worked. */
.nav-progress{
  position:fixed;top:0;left:0;right:0;height:2px;z-index:90;
  background:linear-gradient(90deg,var(--navy),var(--pink));
  transform-origin:0 50%;animation:nav-progress-run 1.2s ease-out infinite;
}
@keyframes nav-progress-run{
  0%{transform:scaleX(.05)}
  70%{transform:scaleX(.85)}
  100%{transform:scaleX(.98)}
}
@media (prefers-reduced-motion:reduce){.nav-progress{animation:none;transform:scaleX(1);opacity:.6}}

/* The context row lives inside the sticky header, so the header grows with it
   instead of clipping. Pages without a pageant context are untouched. */
header.app-header:has(.pageant-context){height:auto}
header.app-header:has(.pageant-context) .header-inner{height:var(--header-h);min-height:var(--header-h)}
