/*
Theme Name: ЦИРКОГРАД Reference Candidate
Theme URI: https://xn--80afenkymd2c.xn--p1ai/
Author: ЦИРКОГРАД
Description: Кандидатная серверная тема ЦИРКОГРАДА на основе утверждённого cirkograd-new-design-review.html от 29.09.2026. Продажи отключены.
Version: 0.3.0-info-20261030-r3
Requires at least: 6.4
Requires PHP: 8.0
Text Domain: cirkograd
*/
/* Integration rules only. Visual foundation is assets/css/reference.css extracted from the approved reference. */
html{scroll-behavior:smooth}body{min-width:0}.site-header-shell{background:#ed1c24;color:#fff}.site-header-shell header{position:relative;z-index:2}.site-header-shell nav{align-items:center;flex-wrap:wrap}.site-header-shell .city{font-weight:700}.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.screen-reader-text:focus{position:fixed!important;top:8px;left:8px;width:auto;height:auto;margin:0;padding:12px 16px;clip:auto;background:#fff;color:#231f20;z-index:10000}.site-main{min-height:58vh}.test-badge{display:inline-flex;background:#fff;color:#ed1c24;border:2px solid #ed1c24;border-radius:999px;padding:5px 10px;font-weight:800;font-size:12px;margin-bottom:8px}.poster.has-featured{background:none!important}.poster.has-featured img{width:100%;height:100%;object-fit:cover;display:block}.is-disabled{opacity:.72;cursor:not-allowed}.empty{grid-column:1/-1}.booking .session{width:100%;text-align:left}.booking .session[disabled]{cursor:default}.session-status{display:inline-flex;margin-left:8px;font-size:12px;font-weight:700}.notice.test-notice{border-color:#ed1c24}.service-body .wp-block-image img,.service-body img{max-width:100%;height:auto}.service-body>*:first-child{margin-top:0}.service-body>*:last-child{margin-bottom:0}.service-body .btn{margin-top:8px}.service-cards>a,.service-cards>article{color:inherit}.service-nav a[aria-current="page"]{font-weight:800}.site-map-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.site-map-list a{display:block;border:1px solid #f99d3e;border-radius:14px;padding:16px;background:#fff;color:#231f20}.city-empty{margin-top:24px}.event-media .media-photo-grid .has-image{padding:0;overflow:hidden}.event-media .media-photo-grid img{width:100%;height:100%;object-fit:cover}.wp-caption,.alignwide,.alignfull{max-width:100%}.cg-admin-note{font-size:13px}.footer-grid a{display:block}.footbottom{gap:16px;flex-wrap:wrap}.page-tag{display:none}.profile .profile-badge .brand-mark{font-size:68px;line-height:1}.profile .profile-badge strong{display:block}.booking dl{margin:20px 0}.booking dt{font-size:12px;text-transform:uppercase;letter-spacing:.08em}.booking dd{margin:0 0 13px}.breadcrumbs-fallback{padding-top:24px}.poster .symbol{pointer-events:none}.poster strong{position:relative;z-index:1}.poster small{position:relative;z-index:1}.poster .age{z-index:2}.reference-note{font-size:12px;opacity:.85}.top .logo:focus-visible{outline-color:#fff}.site-header-shell nav a[aria-current="page"]{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px}
@media(max-width:960px){.site-header-shell header{height:auto;min-height:86px}.site-header-shell nav{gap:14px}.site-map-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.site-header-shell header{display:block;padding:12px 0}.site-header-shell .logo{margin-bottom:8px}.site-header-shell nav{margin-left:0;display:flex;gap:8px}.site-header-shell nav a{font-size:12px}.site-header-shell .city{padding:8px 12px}.site-map-list{grid-template-columns:1fr}.detail-grid{grid-template-columns:1fr!important}.booking{position:static!important}.footer-grid{grid-template-columns:1fr 1fr!important}}
@media(max-width:480px){.footer-grid{grid-template-columns:1fr!important}}

/* 0.3.0-rc5 — mobile rays, touch hover and arrow polish, 04.10.2026.
   1) denser brand rays continue beneath the header;
   2) compact sticky navigation after scroll;
   3) lighter interactive hover for service cards. */
body{
  background:
    linear-gradient(180deg,rgba(237,28,36,.02) 0,rgba(237,28,36,.18) 720px,rgba(237,28,36,.72) 1380px),
    repeating-conic-gradient(from -18deg at 50% 1040px,#ed1c24 0deg 10deg,#f04e29 10deg 20deg);
  background-attachment:scroll;
}
main{background:transparent!important}
.site-header-shell{
  position:sticky;
  top:0;
  overflow-anchor:none;
  z-index:1000;
  background:transparent;
  color:#fff;
  transition:background-color .2s ease,box-shadow .2s ease,backdrop-filter .2s ease;
}
.site-header-shell header{
  transition:padding .18s ease,border-color .18s ease;
}
.site-header-shell .logo{
  transition:width .2s ease,min-height .2s ease,margin .2s ease;
}
.site-header-shell nav a,.site-header-shell .city{
  transition:padding .2s ease,font-size .2s ease,border-color .2s ease,background-color .2s ease;
}
.site-header-shell.is-scrolled{
  background:rgba(237,28,36,.94);
  -webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px);
  box-shadow:0 8px 24px rgba(35,31,32,.14);
}
.site-header-shell.is-scrolled header{height:76px;min-height:76px;border-bottom-color:#ffffff33}
.site-header-shell.is-scrolled .logo{width:210px;min-height:36px}
.site-header-shell.is-scrolled nav{gap:20px}
.site-header-shell.is-scrolled .city{padding:9px 16px}
body.admin-bar .site-header-shell{top:32px}

@media(hover:hover){
  .service-cards>a{
    transition:background-color .18s ease,border-color .18s ease,transform .18s ease,box-shadow .18s ease;
  }
  .service-cards>a:hover{
    background:#fff7f2;
    color:#231f20;
    border-color:#f99d3e;
    transform:translateY(-2px);
    box-shadow:0 8px 20px rgba(35,31,32,.08);
  }
}

@media(max-width:782px){body.admin-bar .site-header-shell{top:46px}}
@media(max-width:700px){
  .site-header-shell{background:rgba(237,28,36,.72);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
  .site-header-shell header{padding:10px 0;min-height:74px}
  .site-header-shell .logo{width:190px;min-height:36px;margin-bottom:6px}
  .site-header-shell nav{gap:6px 10px}
  .site-header-shell nav a{font-size:12px}
  .site-header-shell.is-scrolled header{height:auto;min-height:64px;padding:7px 0}
  .site-header-shell.is-scrolled .logo{width:170px;min-height:32px;margin-bottom:4px}
  .site-header-shell.is-scrolled nav a:not(.city){font-size:11px}
  .site-header-shell.is-scrolled .city{padding:7px 11px}
}
@media(prefers-reduced-motion:reduce){
  .site-header-shell,.site-header-shell header,.site-header-shell .logo,.site-header-shell nav a,.site-header-shell .city,.service-cards>a{transition:none!important}
}
.site-header-shell header{background:transparent}

/* rc5 UI polish: mobile brand rays, non-sticky touch hover, refined diagonal arrows. */
.btn-arrow{
  display:inline-block;
  width:11px;
  height:11px;
  position:relative;
  flex:0 0 auto;
  margin-left:2px;
  border-top:2px solid currentColor;
  border-right:2px solid currentColor;
  border-radius:1px;
  transform:translateY(1px);
}
.btn-arrow::after{
  content:"";
  position:absolute;
  width:12px;
  height:2px;
  right:-2px;
  top:4px;
  background:currentColor;
  border-radius:2px;
  transform:rotate(-45deg);
  transform-origin:right center;
}

/* Baseline states must remain calm on touch browsers that emulate :hover after tap. */
.search .btn,
.search .btn:hover{
  background:#ed1c24;
  color:#fff;
  border-color:#ed1c24;
  transform:none;
  box-shadow:none;
}
.service-cards>a:hover{
  background:#fff;
  color:#231f20;
  border-color:#f99d3e;
  transform:none;
  box-shadow:none;
}

@media(hover:hover) and (pointer:fine){
  .search .btn{
    transition:background-color .18s ease,border-color .18s ease,transform .18s ease,box-shadow .18s ease;
  }
  .search .btn:hover{
    background:#c9181f;
    color:#fff;
    border-color:#c9181f;
    transform:translateY(-1px);
    box-shadow:0 6px 16px rgba(35,31,32,.12);
  }
  .service-cards>a:hover{
    background:#fff7f2;
    color:#231f20;
    border-color:#f99d3e;
    transform:translateY(-2px);
    box-shadow:0 8px 20px rgba(35,31,32,.08);
  }
}

@media(max-width:700px){
  /* Let the common brand-ray field continue through the full mobile header. */
  .site-header-shell{
    background:transparent;
    -webkit-backdrop-filter:none;
    backdrop-filter:none;
  }
  .site-header-shell.is-scrolled{
    background:rgba(237,28,36,.96);
    -webkit-backdrop-filter:blur(8px);
    backdrop-filter:blur(8px);
  }
}


/* 0.3.0-rc6 — approved CTA/mobile hero/sticky implementation, 04.10.2026.
   Historical decision labels were corrected later; CG-DEC-006 now identifies the SEO city-category decision.
   Interactive red, decorative orange. Mobile first action path:
   header -> hero -> filters -> events. */
:root{--cg-admin-offset:0px;--cg-header-compact:60px}
.site-header-shell{top:var(--cg-admin-offset);}
body:not(.has-wp-admin-bar) .site-header-shell{top:0}
.site-header{display:flex;align-items:center;gap:24px}
.desktop-header-tools{display:flex;align-items:center;gap:18px;margin-left:auto;min-width:0}
.desktop-nav{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.mobile-header-tools{display:none;margin-left:auto;align-items:center;gap:8px;min-width:0}
.city-selector-trigger,.menu-toggle{
  appearance:none;border:0;background:transparent;color:inherit;font:inherit;cursor:pointer;
}
.city-selector-trigger{display:inline-flex;align-items:center;gap:6px;max-width:220px;padding:8px 4px;font-weight:700;line-height:1.2;text-align:left}
.city-selector-trigger .city-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.selector-chevron{width:14px;height:14px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.menu-toggle{width:44px;height:44px;display:inline-grid;place-items:center;border-radius:10px}
.menu-icon,.menu-icon::before,.menu-icon::after{display:block;width:22px;height:2px;border-radius:999px;background:currentColor;content:"";position:relative}
.menu-icon::before{position:absolute;top:-7px;left:0}.menu-icon::after{position:absolute;top:7px;left:0}
.city-selector-trigger:focus-visible,.menu-toggle:focus-visible{outline:3px solid #fff;outline-offset:2px}

.cg-sheet{border:0;padding:0;margin:auto;background:#fff;color:#231f20;box-shadow:0 24px 70px rgba(35,31,32,.25);max-width:min(720px,calc(100% - 32px));width:100%;border-radius:24px}
.cg-sheet::backdrop{background:rgba(35,31,32,.48);backdrop-filter:blur(4px)}
.cg-sheet-inner{padding:24px;max-height:min(760px,calc(100vh - 48px));overflow:auto}
.cg-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}
.cg-sheet-head h2{margin:0;font-size:clamp(24px,4vw,36px)}
.cg-sheet-close{appearance:none;border:1px solid #ed1c24;background:#fff;color:#ed1c24;border-radius:999px;width:42px;height:42px;font-size:26px;line-height:1;cursor:pointer}
.city-search-label{display:grid;gap:7px;font-size:13px;font-weight:700;margin:0 0 16px}
.city-search-label input{width:100%;font:inherit;border:1px solid #f99d3e;border-radius:12px;padding:13px 14px;background:#fff;color:#231f20}
.city-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.city-option{display:flex;align-items:center;justify-content:space-between;min-height:48px;padding:11px 13px;border:1px solid #f99d3e;border-radius:12px;background:#fff;color:#231f20;text-decoration:none}
.city-option[aria-current="true"]{border-color:#ed1c24;box-shadow:inset 0 0 0 1px #ed1c24;font-weight:800}
.city-option.is-hidden{display:none}
.mobile-menu-nav{display:grid;gap:6px}
.mobile-menu-nav a{display:flex;align-items:center;min-height:48px;padding:10px 4px;border-bottom:1px solid #f99d3e;color:#231f20;text-decoration:none;font-weight:700}

/* Unified CTA states from CG-DEC-005. */
.btn,.booking .btn,dialog .btn,.search .btn{
  background:#ed1c24!important;color:#fff!important;border-color:#ed1c24!important;
  text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:9px;
}
.btn.secondary,.btn.light{background:#fff!important;color:#ed1c24!important;border:1px solid #ed1c24!important}
.btn-arrow{display:inline-block;width:19px;height:19px;flex:0 0 19px;margin-left:0;border:0!important;background:none!important;transform:none}
.btn-arrow::after{content:none!important}
.btn-arrow path{fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.btn:active,.booking .btn:active,dialog .btn:active{transform:translateY(1px)}
.btn:focus-visible,.booking .btn:focus-visible,dialog .btn:focus-visible{outline:3px solid #231f20;outline-offset:3px}
@media(hover:hover) and (pointer:fine){
  .btn:hover,.booking .btn:hover,dialog .btn:hover,.search .btn:hover{background:#c9181f!important;color:#fff!important;border-color:#c9181f!important;box-shadow:0 6px 16px rgba(35,31,32,.12)}
  .btn.secondary:hover,.btn.light:hover{background:#fff7f2!important;color:#c9181f!important;border-color:#c9181f!important}
  .btn:hover .btn-arrow,.booking .btn:hover .btn-arrow,dialog .btn:hover .btn-arrow{transform:translateX(2px)}
}

/* Compact result-state: never a top-page banner. */
.listing-state{display:block;max-width:720px;padding:16px 18px;border:1px solid #f99d3e;border-left:5px solid #ed1c24;border-radius:14px;background:#fff;color:#231f20;box-shadow:none}
.listing-state strong{display:block;font-size:18px;margin-bottom:4px}.listing-state p{margin:0;font-size:14px}

/* Approved 404 structure. */
.error-404{position:relative;overflow:hidden}.error-404 .wrap{position:relative;z-index:1}.error-404 .error-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}

@media(max-width:700px){
  .site-header-shell{top:var(--cg-admin-offset);background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}
  .site-header{height:70px;min-height:70px;padding:7px 0!important;display:flex!important;flex-wrap:nowrap!important;gap:8px}
  .site-header .logo{width:132px;min-height:32px;height:auto;margin:0!important;flex:0 0 132px}
  .desktop-header-tools{display:none}
  .mobile-header-tools{display:flex}
  .mobile-header-tools .city-selector-trigger{max-width:min(38vw,170px);padding:7px 2px;font-size:13px}
  .site-header-shell.is-scrolled{background:rgba(237,28,36,.97);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
  .site-header-shell.is-scrolled .site-header{height:var(--cg-header-compact);min-height:var(--cg-header-compact);padding:5px 0!important}
  .site-header-shell.is-scrolled .site-header .logo{width:126px;min-height:30px;flex-basis:126px}
  .site-header-shell.is-scrolled .menu-toggle{width:40px;height:40px}
  .home .hero{padding:24px 0 30px}
  .home .hero-grid{display:block}
  .home .hero-grid:after{display:none!important;content:none!important}
  .home .hero h1{margin:10px 0 12px;font-size:clamp(32px,9vw,42px)}
  .home .hero p{margin-bottom:0}
  .home .search{margin-top:20px}
  .cg-sheet{margin:auto 0 0 0;max-width:100%;width:100%;border-radius:22px 22px 0 0}
  .cg-sheet-inner{max-height:min(82vh,760px);padding:20px 16px 24px}
  .city-options{grid-template-columns:1fr}
  .error-404 .error-actions{display:grid;grid-template-columns:1fr}.error-404 .btn{width:100%}
}
@media(max-width:390px){
  .site-header .logo{width:118px;flex-basis:118px}
  .site-header-shell.is-scrolled .site-header .logo{width:112px;flex-basis:112px}
  .mobile-header-tools .city-selector-trigger{font-size:12px;max-width:36vw}
}
/* rc6 admin-bar correction must override rc5 fixed offsets. */
body.has-wp-admin-bar .site-header-shell{top:var(--cg-admin-offset)!important}
body:not(.has-wp-admin-bar) .site-header-shell{top:0!important}
/* Touch browsers may emulate :hover after tap: keep hover visually identical unless a real hover pointer exists. */
.btn:hover,.booking .btn:hover,dialog .btn:hover,.search .btn:hover{background:#ed1c24!important;color:#fff!important;border-color:#ed1c24!important;transform:none;box-shadow:none}
.btn.secondary:hover,.btn.light:hover{background:#fff!important;color:#ed1c24!important;border-color:#ed1c24!important}
@media(hover:hover) and (pointer:fine){
  .btn:hover,.booking .btn:hover,dialog .btn:hover,.search .btn:hover{background:#c9181f!important;color:#fff!important;border-color:#c9181f!important;transform:translateY(-1px);box-shadow:0 6px 16px rgba(35,31,32,.12)}
  .btn.secondary:hover,.btn.light:hover{background:#fff7f2!important;color:#c9181f!important;border-color:#c9181f!important}
}

/* 0.3.0-rc8 — CG-DEC-005 mobile navigation, 04.10.2026.
   Decision-ID correction: rc7 used erroneous duplicate CG-DEC-007 in metadata; UX behavior is retained.
   Compact sticky keeps logo + current city only; bottom navigation carries primary mobile routes. */
:root{
  --cg-mobile-header-height:60px;
  --cg-bottom-nav-height:64px;
}
/* The sticky row follows the actually visible admin bar. Safe-area is the fallback top edge. */
.site-header-shell{
  top:max(var(--cg-admin-offset,0px),env(safe-area-inset-top,0px))!important;
}
.mobile-bottom-nav{display:none}
.mobile-nav-icon{width:22px;height:22px;display:block;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}

@media(max-width:700px){
  html{scroll-padding-top:calc(var(--cg-mobile-header-height) + env(safe-area-inset-top,0px))}
  body{padding-bottom:calc(var(--cg-bottom-nav-height) + env(safe-area-inset-bottom,0px))}
  .site-header-shell{
    left:0;right:0;width:100%;margin:0;border-radius:0;box-shadow:none;
    background:rgba(237,28,36,.96);-webkit-backdrop-filter:none;backdrop-filter:none;
  }
  .site-header,.site-header-shell.is-scrolled .site-header{
    height:var(--cg-mobile-header-height);min-height:var(--cg-mobile-header-height);
    padding:5px 0!important;display:flex!important;flex-wrap:nowrap!important;gap:8px;
  }
  .site-header-shell.is-scrolled{
    background:#ed1c24;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;
  }
  .site-header-shell.is-scrolled .site-header .logo{
    width:126px;min-height:30px;flex-basis:126px;margin:0!important;
  }
  .mobile-header-tools{flex:1 1 auto;justify-content:flex-end;min-width:0}
  .site-header-shell.is-scrolled .mobile-header-tools .menu-toggle{display:none!important}
  .site-header-shell.is-scrolled .mobile-header-tools .city-selector-trigger{
    max-width:calc(100vw - 160px);margin-left:auto;padding:8px 2px;
  }
  .site-header-shell.is-scrolled .mobile-header-tools{gap:0}
  .mobile-bottom-nav{
    position:fixed;left:0;right:0;bottom:0;z-index:1100;
    display:grid;grid-template-columns:repeat(5,minmax(0,1fr));
    gap:0;overflow:hidden;
    min-height:calc(var(--cg-bottom-nav-height) + env(safe-area-inset-bottom,0px));
    padding:5px max(4px,env(safe-area-inset-right,0px)) env(safe-area-inset-bottom,0px) max(4px,env(safe-area-inset-left,0px));
    border-top:1px solid rgba(237,28,36,.18);background:#fff;color:#5a4e50;
    box-shadow:0 -4px 18px rgba(35,31,32,.08);
  }
  .mobile-bottom-nav a,.mobile-bottom-nav button{
    appearance:none;border:0;background:transparent;color:inherit;text-decoration:none;font:inherit;
    min-width:0;min-height:54px;padding:5px 2px;margin:0;border-radius:10px;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
    cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;
  }
  .mobile-bottom-nav .mobile-nav-label{
    display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    font-size:11px;line-height:1.15;font-weight:700;
  }
  .mobile-bottom-nav [aria-current="page"],
  .mobile-bottom-nav [aria-expanded="true"]{
    color:#ed1c24;background:#fff2ef;
  }
  .mobile-bottom-nav a:focus-visible,.mobile-bottom-nav button:focus-visible{
    outline:3px solid #ed1c24;outline-offset:-3px;
  }
  body.cg-dialog-open{overflow:hidden}
  body.cg-dialog-open .mobile-bottom-nav{opacity:0;visibility:hidden;pointer-events:none}
  .cg-sheet{z-index:1500}
  .cg-sheet-inner{padding-bottom:calc(24px + env(safe-area-inset-bottom,0px))}
}
@media(max-width:390px){
  .mobile-bottom-nav .mobile-nav-label{font-size:10px}
  .mobile-nav-icon{width:21px;height:21px}
  .site-header-shell.is-scrolled .mobile-header-tools .city-selector-trigger{max-width:calc(100vw - 145px)}
}

/* rc7 final override: safe-area must win over rc6 guest/admin top rules. */
body.has-wp-admin-bar .site-header-shell,
body:not(.has-wp-admin-bar) .site-header-shell{
  top:max(var(--cg-admin-offset,0px),env(safe-area-inset-top,0px))!important;
}
/* Treat coarse-pointer phone landscape as mobile without extending this pattern to desktop pointers. */
@media (min-width:701px) and (max-width:960px) and (pointer:coarse){
  body{padding-bottom:calc(var(--cg-bottom-nav-height) + env(safe-area-inset-bottom,0px))}
  .desktop-header-tools{display:none}
  .mobile-header-tools{display:flex;flex:1 1 auto;justify-content:flex-end;min-width:0}
  .site-header,.site-header-shell.is-scrolled .site-header{height:var(--cg-mobile-header-height);min-height:var(--cg-mobile-header-height);padding:5px 0!important;display:flex!important;flex-wrap:nowrap!important;gap:8px}
  .site-header-shell.is-scrolled{background:#ed1c24;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}
  .site-header-shell.is-scrolled .mobile-header-tools .menu-toggle{display:none!important}
  .mobile-bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:1100;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;overflow:hidden;min-height:calc(var(--cg-bottom-nav-height) + env(safe-area-inset-bottom,0px));padding:5px max(4px,env(safe-area-inset-right,0px)) env(safe-area-inset-bottom,0px) max(4px,env(safe-area-inset-left,0px));border-top:1px solid rgba(237,28,36,.18);background:#fff;color:#5a4e50;box-shadow:0 -4px 18px rgba(35,31,32,.08)}
  .mobile-bottom-nav a,.mobile-bottom-nav button{appearance:none;border:0;background:transparent;color:inherit;text-decoration:none;font:inherit;min-width:0;min-height:54px;padding:5px 2px;margin:0;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
  .mobile-bottom-nav .mobile-nav-label{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:1.15;font-weight:700}
  .mobile-bottom-nav [aria-current="page"],.mobile-bottom-nav [aria-expanded="true"]{color:#ed1c24;background:#fff2ef}
  .mobile-bottom-nav a:focus-visible,.mobile-bottom-nav button:focus-visible{outline:3px solid #ed1c24;outline-offset:-3px}
  body.cg-dialog-open{overflow:hidden}
  body.cg-dialog-open .mobile-bottom-nav{opacity:0;visibility:hidden;pointer-events:none}
}

/* 0.3.0-rc9 — QA-BRAND-HEADER-001, 04.10.2026.
   Staging retest of rc8 proved that preserving the page ray field was not enough:
   the final mobile header override painted an opaque red surface over it.
   Render an explicit, mobile-header-local slice of the approved red-orange ray motif.
   This decoration is independent from the page background and survives compact sticky. */
:root{
  --cg-mobile-header-rays:repeating-conic-gradient(
    from -18deg at 50% 420px,
    #ed1c24 0deg 15deg,
    #f04e29 15deg 30deg
  );
}
@media (max-width:700px), (min-width:701px) and (max-width:960px) and (pointer:coarse){
  .site-header-shell,
  .site-header-shell.is-scrolled{
    background:#ed1c24!important;
    isolation:isolate;
  }
  .site-header-shell::before{
    content:"";
    position:absolute;
    inset:0;
    z-index:0;
    pointer-events:none;
    background-color:#ed1c24;
    background-image:var(--cg-mobile-header-rays);
    background-repeat:no-repeat;
    background-size:100% 100%;
  }
  .site-header-shell .site-header{
    position:relative;
    z-index:1;
  }
}



/* 0.3.0-rc13 — QA-SEO-CITYCAT-301-001 core redirect fix; theme runtime unchanged; source/release synchronized. */
.city-category-intro{max-width:820px;font-size:clamp(16px,2vw,19px);line-height:1.65}
.city-category-intro>*:first-child{margin-top:0}.city-category-intro>*:last-child{margin-bottom:0}
.city-category-results .toolbar{margin-bottom:16px}.event-related-landings ul{padding-left:20px}.event-related-landings li{margin:8px 0}

/* 0.3.0-rc14 — QA-CITY-SYNC-001: canonical city/category URL owns city state over stale cookie/GET. */

/* 0.3.0-rc15 — QA-MOB-RAYS-ALIGN-001, 04.10.2026.
   Normal mobile header shares the same page/body ray field as the hero, so the motif is continuous.
   Compact sticky intentionally drops the rays and uses the solid brand red, matching desktop sticky logic. */
@media (max-width:700px), (min-width:701px) and (max-width:960px) and (pointer:coarse){
  .site-header-shell:not(.is-scrolled){
    background:transparent!important;
    background-image:none!important;
    -webkit-backdrop-filter:none!important;
    backdrop-filter:none!important;
    box-shadow:none!important;
    isolation:auto;
  }
  .site-header-shell::before{
    content:none!important;
    display:none!important;
    background:none!important;
  }
  .site-header-shell.is-scrolled{
    background:#ed1c24!important;
    background-image:none!important;
    -webkit-backdrop-filter:none!important;
    backdrop-filter:none!important;
    box-shadow:none!important;
    isolation:auto;
  }
}


/* 0.3.0-rc17 — QA-MOB-STICKY-OVERLAP-001 + QA-MOB-BOTTOMNAV-FLASH-001, 05.10.2026.
   iPhone Safari hardening only. The reported visual symptoms are confirmed on staging,
   but the exact WebKit compositing cause is not claimed as proven by local checks.
   Keep rc15 rays behavior: normal state shares the page ray field; compact is solid red. */
@media (max-width:700px), (min-width:701px) and (max-width:960px) and (pointer:coarse){
  /* Give compact sticky an explicit top compositor/stacking layer so document content
     always paints underneath it in the guest scenario. */
  .site-header-shell.is-scrolled{
    z-index:1300!important;
    isolation:isolate;
    overflow:hidden;
    -webkit-transform:translate3d(0,0,0);
    transform:translate3d(0,0,0);
    -webkit-backface-visibility:hidden;
    backface-visibility:hidden;
  }
  /* Solid cover layer: no rays, no translucency, no blur. */
  .site-header-shell.is-scrolled::before{
    content:""!important;
    display:block!important;
    position:absolute;
    inset:0;
    z-index:0;
    pointer-events:none;
    background:#ed1c24!important;
    background-image:none!important;
    -webkit-transform:translate3d(0,0,0);
    transform:translate3d(0,0,0);
  }
  .site-header-shell.is-scrolled .site-header{
    position:relative;
    z-index:1;
  }

  /* Keep the fixed bottom navigation in one stable composited layer while Safari
     expands/collapses browser chrome. This is defensive against the confirmed flash;
     it does not assert the compositor as the proven root cause. */
  .mobile-bottom-nav{
    z-index:1200;
    height:calc(var(--cg-bottom-nav-height) + env(safe-area-inset-bottom,0px));
    min-height:calc(var(--cg-bottom-nav-height) + env(safe-area-inset-bottom,0px));
    background:#fff!important;
    opacity:1;
    isolation:isolate;
    -webkit-transform:translate3d(0,0,0);
    transform:translate3d(0,0,0);
    -webkit-backface-visibility:hidden;
    backface-visibility:hidden;
    will-change:transform;
  }
}


/* 0.3.0-rc17-diag1 — staging diagnostic only, NOT a Candidate.
   QA-MOB-STICKY-OVERLAP-001: the compact red cover must include the sticky top-offset gap.
   QA-MOB-BOTTOMNAV-FLASH-001: reserve bottom-nav space inside the red footer, not as body padding.
   Removes rc17 forced compositor hints that did not pass real iPhone retest. */
@media (max-width:700px), (min-width:701px) and (max-width:960px) and (pointer:coarse){
  .site-header-shell.is-scrolled{
    --cg-sticky-cover-top:max(var(--cg-admin-offset,0px),env(safe-area-inset-top,0px));
    overflow:visible!important;
    -webkit-transform:none!important;
    transform:none!important;
    -webkit-backface-visibility:visible!important;
    backface-visibility:visible!important;
  }
  .site-header-shell.is-scrolled::before{
    content:""!important;
    display:block!important;
    position:absolute;
    top:calc(0px - var(--cg-sticky-cover-top));
    right:0;
    bottom:0;
    left:0;
    z-index:0;
    pointer-events:none;
    background:#ed1c24!important;
    background-image:none!important;
    -webkit-transform:none!important;
    transform:none!important;
  }

  body{
    padding-bottom:0!important;
  }
  footer{
    background:#ed1c24!important;
    padding-bottom:calc(24px + var(--cg-bottom-nav-height) + env(safe-area-inset-bottom,0px))!important;
  }
  .mobile-bottom-nav{
    -webkit-transform:none!important;
    transform:none!important;
    -webkit-backface-visibility:visible!important;
    backface-visibility:visible!important;
    will-change:auto!important;
    isolation:auto!important;
  }
}


/* 0.3.0-rc17-diag2 — staging diagnostic only, NOT a Candidate.
   Preserve the diag1 bottom-nav/footer fix (already PASS in guest).
   QA-MOB-STICKY-OVERLAP-001 diagnostic: while compact sticky is active,
   remove the scrolling main content's isolated/clipped paint context and its
   negative-z decorative pseudo-layer. This tests whether iOS Safari is
   mis-ordering the scroll-content paint layer against the sticky header,
   rather than merely failing to cover the sticky box itself. */
@media (max-width:700px), (min-width:701px) and (max-width:960px) and (pointer:coarse){
  .site-header-shell.is-scrolled ~ .site-main{
    isolation:auto!important;
    overflow:visible!important;
    z-index:auto!important;
  }
  .site-header-shell.is-scrolled ~ .site-main::before{
    content:none!important;
    display:none!important;
  }
}


/* 0.3.0-rc17-diag3 — staging diagnostic only, NOT a Candidate.
   QA-MOB-STICKY-OVERLAP-001 timing probe. CSS is intentionally unchanged from diag2.
   The only runtime experiment is in assets/js/theme.js: mobile/coarse compact ENTER 32px, EXIT 0px;
   desktop keeps the original 72px / 20px thresholds. The confirmed diag1 footer/bottom-nav fix is preserved. */


/* 0.3.0-rc17-diag5 — staging diagnostic only, NOT a Candidate.
   Built from the last available verified branch (diag3); diag4 source is not available here.
   QA-MOB-STICKY-OVERLAP-001: decouple the opaque viewport cover from the sticky/compact UX box.
   Mobile header geometry stays fixed; normal/rays exists only at the true top position; scrolled state
   uses a separate fixed red cover plane that is not a child/pseudo-element of the sticky header.
   Preserve the working diag1 footer/bottom-nav reserve fix unchanged. */
.cg-mobile-header-cover{display:none}
@media (max-width:700px), (min-width:701px) and (max-width:960px) and (pointer:coarse){
  /* Undo the diag2 scrolling-main experiment: diag5 tests only the independent top cover architecture. */
  .site-header-shell.is-scrolled ~ .site-main{
    isolation:isolate!important;
    overflow:hidden!important;
    z-index:auto!important;
  }

  /* Header box itself never paints the solid cover in diag5. */
  .site-header-shell,
  .site-header-shell.is-scrolled{
    z-index:1300!important;
    background:transparent!important;
    background-image:none!important;
    box-shadow:none!important;
    -webkit-backdrop-filter:none!important;
    backdrop-filter:none!important;
    isolation:auto!important;
    overflow:visible!important;
    -webkit-transform:none!important;
    transform:none!important;
  }
  .site-header-shell::before,
  .site-header-shell.is-scrolled::before{
    content:none!important;
    display:none!important;
  }

  /* Stable geometry: scroll state must not resize or reflow the top row. */
  .site-header,
  .site-header-shell.is-scrolled .site-header{
    height:var(--cg-mobile-header-height)!important;
    min-height:var(--cg-mobile-header-height)!important;
    padding:5px 0!important;
    gap:8px!important;
  }
  .site-header .logo,
  .site-header-shell.is-scrolled .site-header .logo{
    width:132px!important;
    flex:0 0 132px!important;
    min-height:32px!important;
    margin:0!important;
  }
  .mobile-header-tools,
  .site-header-shell.is-scrolled .mobile-header-tools{
    gap:8px!important;
  }
  .mobile-header-tools .city-selector-trigger,
  .site-header-shell.is-scrolled .mobile-header-tools .city-selector-trigger{
    max-width:min(38vw,170px)!important;
    padding:7px 2px!important;
    font-size:13px!important;
    margin-left:0!important;
  }

  /* Compact keeps the no-hamburger UX without changing row geometry. */
  .site-header-shell.is-scrolled .mobile-header-tools .menu-toggle{
    display:inline-grid!important;
    visibility:hidden!important;
    opacity:0!important;
    pointer-events:none!important;
    width:44px!important;
    height:44px!important;
  }

  /* Independent viewport cover. It spans the top offset + fixed header height,
     so scrolling content is always below an opaque plane when not at page top. */
  .cg-mobile-header-cover{
    display:block;
    position:fixed;
    top:0;
    left:0;
    right:0;
    height:calc(var(--cg-mobile-header-height) + max(var(--cg-admin-offset,0px),env(safe-area-inset-top,0px)));
    z-index:1250;
    pointer-events:none;
    background:#ed1c24;
    background-image:none;
    opacity:0;
    visibility:hidden;
    transition:none!important;
  }
  html.cg-mobile-header-cover-active .cg-mobile-header-cover{
    opacity:1;
    visibility:visible;
  }
}
@media (max-width:390px){
  .site-header .logo,
  .site-header-shell.is-scrolled .site-header .logo{
    width:118px!important;
    flex-basis:118px!important;
  }
  .mobile-header-tools .city-selector-trigger,
  .site-header-shell.is-scrolled .mobile-header-tools .city-selector-trigger{
    max-width:36vw!important;
    font-size:12px!important;
  }
}

/* Legal/service pages: compact document layout */
body:has(.service-hero) main::before {
    content: none !important;
}

.service-hero {
    border-bottom: 0;
    padding-top: 32px;
    padding-bottom: 24px;
}

.service-layout {
    padding-top: 28px;
}
@media (min-width: 761px) {
    .service-hero {
        padding-top: 28px;
        padding-bottom: 10px;
    }

    .service-hero h1 {
        margin-bottom: 0;
    }

    .service-layout {
        padding-top: 18px;
    }
}
@media (max-width: 760px) {
    .service-hero {
        padding-bottom: 8px;
    }

    .service-hero h1 {
        margin-bottom: 0;
    }

    .service-layout {
        padding-top: 12px;
    }
}
/* Approved legal contacts: constrain inline icons on mobile. */
.service-body svg{width:24px;height:24px;max-width:100%;vertical-align:middle}
.service-body{overflow-wrap:anywhere}

/* Informational release uses the existing visual system and brand assets. */
.info-nav{display:flex;flex-wrap:wrap;gap:12px 22px;justify-content:flex-end}.info-nav a{color:inherit;font-weight:600;text-decoration:none}.info-nav a:hover,.info-footer-links a:hover{text-decoration:underline}.info-footer-links{display:flex;flex-wrap:wrap;gap:12px 24px;margin:24px 0}.info-footer-links a{color:inherit}.info-hero-actions{display:flex;flex-wrap:wrap;gap:12px}.info-intro{padding-top:64px;padding-bottom:64px}.info-intro>p{max-width:760px}.info-intro .service-cards{margin-top:32px}.info-page{padding-top:48px;padding-bottom:72px;min-height:50vh}.info-page .service-body{max-width:900px;margin-top:32px}.info-page .service-body svg{width:24px;height:24px}.cg-information-release .service-body{overflow-wrap:anywhere}.cg-information-release{padding-bottom:0!important}.cg-information-release .site-header{flex-wrap:wrap;gap:18px}.cg-information-release .hero-grid>div{min-width:0}.cg-information-release .hero-grid{padding-bottom:30px}.info-intro .service-cards h3{color:inherit}.info-page .service-body ul{padding-left:24px}
@media(max-width:700px){.info-nav{justify-content:flex-start;gap:12px 18px;width:100%;font-size:14px}.cg-information-release .site-header{padding-top:20px;padding-bottom:20px}.info-intro{padding-top:40px;padding-bottom:40px}.info-intro .service-cards{grid-template-columns:1fr}.info-page{padding-top:30px}.info-footer-links{display:grid;grid-template-columns:1fr;gap:14px}.info-hero-actions .btn{max-width:100%}}
/* Readable informational cards. */
.cg-information-release .info-intro .service-cards>a{color:#231f20}.cg-information-release .info-intro .service-cards h3,.cg-information-release .info-intro .service-cards p{color:inherit}

/* Informational release: opaque header after scrolling on all widths. */
.cg-information-release .site-header-shell.is-scrolled{background:#ed1c24!important;background-image:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}

/* Compact information navigation; existing accessible dialog behavior. */
.cg-information-release .info-menu-toggle{display:none}
@media(max-width:960px){.cg-information-release .site-header{flex-wrap:nowrap!important;justify-content:space-between}.cg-information-release .info-nav{display:none}.cg-information-release .info-menu-toggle{display:inline-grid!important;flex:0 0 44px;visibility:visible!important;opacity:1!important;pointer-events:auto!important}}

/* Restored information browsing controls and top red mobile menu. */
.cg-information-release .info-city-trigger{margin-left:auto;flex:0 1 auto;min-width:0;max-width:180px}
.cg-information-release .info-listing{padding-top:36px;padding-bottom:12px;scroll-margin-top:120px}
.cg-information-release .info-listing .service-cards{color:#231f20}
.cg-information-release .search{margin-top:20px;margin-bottom:28px}
.cg-information-release .cg-mobile-menu-dialog{position:fixed;inset:0 0 auto;margin:0;width:100%;max-width:100%;max-height:calc(100dvh - 24px);border-radius:0 0 22px 22px;background:#ed1c24;color:#fff}
.cg-information-release .cg-mobile-menu-dialog .cg-sheet-inner{padding-top:max(20px,env(safe-area-inset-top,0px))}
.cg-information-release .cg-mobile-menu-dialog .mobile-menu-nav a{color:#fff;border-color:rgba(255,255,255,.3)}
.cg-information-release .cg-mobile-menu-dialog .cg-sheet-close{background:transparent;border-color:#fff;color:#fff}
.cg-information-release .cg-mobile-menu-dialog a:focus-visible,.cg-information-release .cg-mobile-menu-dialog button:focus-visible{outline:3px solid #fff;outline-offset:2px}
@media(max-width:960px){.cg-information-release .info-city-trigger{max-width:calc(100vw - 222px);font-size:13px;padding:8px 0}.cg-information-release .site-header{gap:8px!important}}
@media (max-width:700px), (min-width:701px) and (max-width:960px) and (pointer:coarse){.cg-information-release{padding-bottom:calc(var(--cg-bottom-nav-height) + env(safe-area-inset-bottom,0px))!important}}
@media(prefers-reduced-motion:no-preference){.cg-information-release .cg-mobile-menu-dialog[open]{animation:cg-info-menu-enter .18s ease-out}@keyframes cg-info-menu-enter{from{opacity:0;transform:translateY(-24px)}to{opacity:1;transform:translateY(0)}}}
