/* v177-124 Member App motion pack — scoped to Member App only */
.member-login-sanctuary-page{--cmnz-motion-fast:180ms;--cmnz-motion-med:360ms;--cmnz-motion-slow:720ms}
.member-login-sanctuary-page #memberApp:not(.hidden){animation:cmnzAppEnter .28s ease both}
.member-login-sanctuary-page #memberApp .member-app-header{position:relative;overflow:visible!important;z-index:30000!important}
.member-login-sanctuary-page #memberApp .member-app-header::after{display:none!important;content:none!important;animation:none!important}
.member-login-sanctuary-page #memberApp .member-app-header-brand img,.member-login-sanctuary-page .member-session-launch-logo{animation:cmnzLogoEnter .55s cubic-bezier(.2,.8,.2,1) both}
.member-login-sanctuary-page #memberApp .member-top-menu{animation:cmnzFloatIn .45s .12s ease both}

/* 1, 11, 19, 22 — reveal and stagger */
.member-login-sanctuary-page #memberApp .cmnz-reveal{opacity:0;transform:translateY(14px) scale(.99);transition:opacity .42s ease,transform .42s cubic-bezier(.2,.8,.2,1)}
.member-login-sanctuary-page #memberApp .cmnz-reveal.cmnz-in{opacity:1;transform:none}
.member-login-sanctuary-page #memberApp .member-accommodation-card.cmnz-reveal,.member-login-sanctuary-page #memberApp .member-guest-stay-card.cmnz-reveal{transition-delay:var(--cmnz-stagger,0ms)}

/* 2, 9 — bottom nav + press */
.member-login-sanctuary-page #memberApp .member-bottom-nav-item{transition:transform .18s ease,background .25s ease,color .25s ease,box-shadow .25s ease}
.member-login-sanctuary-page #memberApp .member-bottom-nav-item:active,.member-login-sanctuary-page #memberApp .card:active{transform:scale(.975)}
.member-login-sanctuary-page #memberApp .member-convention-hub-toggle:active{transform:none!important}
.member-login-sanctuary-page #memberApp .member-bottom-nav-item.active{animation:cmnzNavPop .28s ease}
.member-login-sanctuary-page #memberApp .member-bottom-nav-item.active .member-bottom-nav-icon{animation:cmnzIconLift .34s ease}

/* 3,10,18 — opening / section transitions */
.member-login-sanctuary-page #memberApp .member-convention-hub-panel:not(.hidden),.member-login-sanctuary-page #memberApp .member-general-info-content:not(.hidden),.member-login-sanctuary-page #memberApp .member-duty-card-body:not(.hidden){animation:cmnzPanelOpen .34s cubic-bezier(.2,.8,.2,1) both;transform-origin:top}
.member-login-sanctuary-page #memberApp .cmnz-section-switch{animation:cmnzSectionSwitch .34s ease both}

/* 4 — skeleton shimmer */
.member-login-sanctuary-page .cmnz-skeleton{display:grid;gap:10px;width:min(430px,100%);margin:18px auto 0}
.member-login-sanctuary-page .cmnz-skeleton span{display:block;height:12px;border-radius:999px;background:linear-gradient(90deg,#e8eef4 25%,#f7f9fb 42%,#e8eef4 60%);background-size:260% 100%;animation:cmnzShimmer 1.15s linear infinite}
.member-login-sanctuary-page .cmnz-skeleton span:nth-child(2){width:78%}.member-login-sanctuary-page .cmnz-skeleton span:nth-child(3){width:58%}
.member-login-sanctuary-page #memberApp .instant-loading{position:relative;overflow:hidden;min-height:56px;color:transparent!important}
.member-login-sanctuary-page #memberApp .instant-loading::before,.member-login-sanctuary-page #memberApp .instant-loading::after{content:"";position:absolute;left:14px;right:14px;height:12px;border-radius:8px;background:linear-gradient(90deg,#e6edf4 25%,#f8fafc 45%,#e6edf4 65%);background-size:250% 100%;animation:cmnzShimmer 1.1s linear infinite}
.member-login-sanctuary-page #memberApp .instant-loading::before{top:14px}.member-login-sanctuary-page #memberApp .instant-loading::after{top:34px;right:32%}

/* 5,12,17 — journey animation */
.member-login-sanctuary-page #memberApp .status-card{position:relative;overflow:hidden;animation:cmnzUpcomingGlow 4.8s ease-in-out infinite}
.member-login-sanctuary-page #memberApp .status-card .progress{position:relative}
.member-login-sanctuary-page #memberApp .status-card .step{animation:cmnzStepIn .42s ease both;animation-delay:calc(var(--cmnz-step,0) * 70ms)}
.member-login-sanctuary-page #memberApp .status-card .step.current .dot{animation:cmnzCurrentPulse 2.4s ease-in-out infinite}
.member-login-sanctuary-page #memberApp .cmnz-journey-runner{position:absolute;top:16px;left:8%;z-index:5;font-size:20px;filter:drop-shadow(0 3px 4px rgba(0,0,0,.2));transform:translateX(-50%);transition:left .7s cubic-bezier(.2,.8,.2,1);animation:cmnzRunnerBob 1.5s ease-in-out infinite;pointer-events:none}

/* 6,13 — map/date/time icons */
.member-login-sanctuary-page #memberApp .member-map-location-icon.cmnz-in{animation:cmnzPinDrop .46s cubic-bezier(.2,.9,.2,1.2) both}
.member-login-sanctuary-page #memberApp .member-convention-meta-svg{transform-origin:center}
.member-login-sanctuary-page #memberApp .member-convention-meta-item.cmnz-in .member-convention-meta-svg{animation:cmnzMetaIcon .4s ease both}

/* 7,8,16,25 — statuses and fresh-data feedback */
.member-login-sanctuary-page #memberApp .member-convention-hub-summary .ready{position:relative;animation:cmnzReadyPulse 3.2s ease-in-out infinite}
.member-login-sanctuary-page #memberApp .member-convention-hub-summary .ready.cmnz-in{animation:cmnzReadyCheck .5s ease both,cmnzReadyPulse 3.2s .5s ease-in-out infinite}
.member-login-sanctuary-page #memberApp .cmnz-fresh-update{animation:cmnzFreshUpdate 1.15s ease both}
.cmnz-motion-toast{position:fixed;left:50%;bottom:88px;transform:translate(-50%,18px);z-index:19000;background:#08396f;color:#fff;padding:10px 14px;border-radius:14px;box-shadow:0 12px 32px rgba(4,38,84,.24);font-size:13px;font-weight:800;opacity:0;transition:.28s ease;pointer-events:none}
.cmnz-motion-toast.show{opacity:1;transform:translate(-50%,0)}
.cmnz-motion-toast.success::before{content:"✓";display:inline-grid;place-items:center;width:20px;height:20px;margin-right:7px;border-radius:50%;background:#22b66f;color:#fff;animation:cmnzSuccess .4s ease}

/* 14 — notification bell */
.member-login-sanctuary-page #memberApp .member-notification-menu-item.cmnz-has-news>span{animation:cmnzBell 1.1s ease 2;transform-origin:50% 10%}

/* 15 — pull to refresh */
.cmnz-pull-refresh{position:fixed;top:max(10px,env(safe-area-inset-top));left:50%;z-index:19500;transform:translate(-50%,-70px);display:flex;align-items:center;gap:8px;padding:9px 13px;border-radius:999px;background:#fff;color:#0b477f;box-shadow:0 10px 28px rgba(7,44,84,.2);font-size:12px;font-weight:850;transition:transform .22s ease,opacity .22s ease;opacity:0;pointer-events:none}
.cmnz-pull-refresh.show{opacity:1}.cmnz-pull-refresh.ready{transform:translate(-50%,6px)}.cmnz-pull-refresh.refreshing{transform:translate(-50%,6px)}
.cmnz-pull-refresh .spin{width:16px;height:16px;border:2px solid #c7d8e8;border-top-color:#0b66b2;border-radius:50%}.cmnz-pull-refresh.refreshing .spin{animation:memberSessionSpin .7s linear infinite}

/* 20 — soft motion */
.member-login-sanctuary-page #memberApp{position:relative}
.member-login-sanctuary-page #memberApp::before{content:"";position:absolute;z-index:-1;inset:40px -60px auto;height:260px;border-radius:50%;background:radial-gradient(circle,rgba(33,126,209,.08),transparent 68%);filter:blur(6px);animation:cmnzAmbient 10s ease-in-out infinite;pointer-events:none}

/* 23 — floating action entrance */
.member-login-sanctuary-page #memberApp .member-top-menu,.member-login-sanctuary-page #memberApp #myJourneyBtn{transition:transform .2s ease,box-shadow .2s ease}
.member-login-sanctuary-page #memberApp .member-top-menu:hover,.member-login-sanctuary-page #memberApp #myJourneyBtn:hover{transform:translateY(-1px)}

/* 24 — offline/online banner */
.cmnz-network-banner{position:fixed;top:max(8px,env(safe-area-inset-top));left:50%;z-index:19600;transform:translate(-50%,-80px);padding:9px 14px;border-radius:999px;background:#7a2b2b;color:#fff;font-weight:850;font-size:12px;box-shadow:0 10px 28px rgba(0,0,0,.18);transition:transform .3s ease,background .3s ease}
.cmnz-network-banner.show{transform:translate(-50%,0)}.cmnz-network-banner.online{background:#16764d}

@keyframes cmnzAppEnter{from{opacity:0}to{opacity:1}}
@keyframes cmnzHeaderGlow{0%,68%,100%{transform:translateX(-65%)}80%{transform:translateX(65%)}}
@keyframes cmnzLogoEnter{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:none}}
@keyframes cmnzFloatIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@keyframes cmnzNavPop{50%{transform:translateY(-2px) scale(1.03)}}
@keyframes cmnzIconLift{50%{transform:translateY(-3px) scale(1.08)}}
@keyframes cmnzPanelOpen{from{opacity:0;transform:translateY(-7px) scaleY(.98)}to{opacity:1;transform:none}}
@keyframes cmnzSectionSwitch{0%{opacity:.55;transform:translateY(8px)}100%{opacity:1;transform:none}}
@keyframes cmnzShimmer{to{background-position:-250% 0}}
@keyframes cmnzStepIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes cmnzCurrentPulse{50%{box-shadow:0 0 0 7px rgba(72,183,255,.16),0 0 22px #48b7ff}}
@keyframes cmnzUpcomingGlow{50%{box-shadow:0 18px 42px rgba(5,45,109,.34)}}
@keyframes cmnzRunnerBob{50%{transform:translate(-50%,-4px) rotate(-2deg)}}
@keyframes cmnzPinDrop{0%{opacity:0;transform:translateY(-9px) scale(.75)}70%{transform:translateY(2px) scale(1.08)}100%{opacity:1;transform:none}}
@keyframes cmnzMetaIcon{0%{opacity:0;transform:scale(.7) rotate(-8deg)}100%{opacity:1;transform:none}}
@keyframes cmnzReadyCheck{0%{transform:scale(.82);opacity:.5}70%{transform:scale(1.06)}100%{transform:none;opacity:1}}
@keyframes cmnzReadyPulse{50%{filter:brightness(1.08)}}
@keyframes cmnzFreshUpdate{0%{box-shadow:0 0 0 0 rgba(36,159,103,.3)}35%{box-shadow:0 0 0 5px rgba(36,159,103,.16)}100%{box-shadow:0 0 0 0 transparent}}
@keyframes cmnzSuccess{0%{transform:scale(.55)}70%{transform:scale(1.15)}100%{transform:none}}
@keyframes cmnzBell{0%,100%{transform:rotate(0)}20%{transform:rotate(16deg)}40%{transform:rotate(-14deg)}60%{transform:rotate(10deg)}80%{transform:rotate(-6deg)}}
@keyframes cmnzAmbient{50%{transform:translate3d(26px,8px,0) scale(1.08)}}

@media (prefers-reduced-motion:reduce){
  .member-login-sanctuary-page *, .member-login-sanctuary-page *::before,.member-login-sanctuary-page *::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .member-login-sanctuary-page #memberApp .cmnz-reveal{opacity:1!important;transform:none!important}
}


/* v177-125 — Member-only animated gradient personalities
   Travel = directional flow, Accommodation = calm breathing light,
   Food = warm shimmer. Active only while cards are visible. */
.member-login-sanctuary-page #memberApp .member-convention-detail-section.cmnz-gradient-active,
.member-login-sanctuary-page #memberApp .cmnz-gradient-card.cmnz-gradient-active{
  will-change:background-position,box-shadow;
}

/* Travel: FROM → TO directional movement */
.member-login-sanctuary-page #memberApp .member-convention-detail-travel.cmnz-gradient-active{
  background-size:155% 155%,155% 155%,230% 230%!important;
  animation:cmnzTravelGradient 12s ease-in-out infinite,cmnzTravelBorder 7s ease-in-out infinite;
}
.member-login-sanctuary-page #memberApp .member-convention-detail-travel.cmnz-gradient-active::before{
  animation:cmnzTravelOrb 8s ease-in-out infinite;
}
.member-login-sanctuary-page #memberApp .member-colour-flight.cmnz-gradient-active{
  background-size:160% 160%,230% 230%!important;
  animation:cmnzTravelCardFlow 10s ease-in-out infinite,cmnzTravelCardBorder 7s ease-in-out infinite;
}

/* Accommodation: slow morning-light / breathing motion */
.member-login-sanctuary-page #memberApp .member-convention-detail-accommodation.cmnz-gradient-active{
  background-size:145% 145%,145% 145%,190% 190%!important;
  animation:cmnzStayGradient 15s ease-in-out infinite,cmnzStayBorder 9s ease-in-out infinite;
}
.member-login-sanctuary-page #memberApp .member-convention-detail-accommodation.cmnz-gradient-active::before{
  animation:cmnzStayOrb 10s ease-in-out infinite;
}
.member-login-sanctuary-page #memberApp .member-colour-accommodation.cmnz-gradient-active{
  background-size:155% 155%,200% 200%!important;
  animation:cmnzStayCardBreathe 14s ease-in-out infinite,cmnzStayCardBorder 9s ease-in-out infinite;
}

/* Food: warm slow shimmer / glow */
.member-login-sanctuary-page #memberApp .member-convention-detail-food.cmnz-gradient-active{
  background-size:150% 150%,150% 150%,210% 210%!important;
  animation:cmnzFoodGradient 11s ease-in-out infinite,cmnzFoodBorder 8s ease-in-out infinite;
}
.member-login-sanctuary-page #memberApp .member-convention-detail-food.cmnz-gradient-active::before{
  animation:cmnzFoodWarmth 8.5s ease-in-out infinite;
}
.member-login-sanctuary-page #memberApp .member-colour-food.cmnz-gradient-active{
  background-size:160% 160%,220% 220%!important;
  animation:cmnzFoodCardShimmer 10s ease-in-out infinite,cmnzFoodCardBorder 8s ease-in-out infinite;
}

/* Interactive glass-light layer: follows pointer on desktop and flashes at tap on mobile. */
.member-login-sanctuary-page #memberApp .cmnz-gradient-card{
  --cmnz-light-x:50%;
  --cmnz-light-y:36%;
}
.member-login-sanctuary-page #memberApp .cmnz-gradient-card::before{
  content:"";
  position:absolute;
  inset:-2px;
  z-index:0;
  border-radius:inherit;
  pointer-events:none;
  opacity:0;
  background:radial-gradient(circle at var(--cmnz-light-x) var(--cmnz-light-y),rgba(255,255,255,.68) 0,rgba(255,255,255,.24) 13%,transparent 36%);
  transition:opacity .3s ease;
}
.member-login-sanctuary-page #memberApp .cmnz-gradient-card>*{position:relative;z-index:1}
@media (hover:hover) and (pointer:fine){
  .member-login-sanctuary-page #memberApp .cmnz-gradient-card:hover::before{opacity:.52}
}
.member-login-sanctuary-page #memberApp .cmnz-gradient-card.cmnz-touch-glow::before{opacity:.64}

/* Newly published/changed data gets one brighter gradient acknowledgement, then settles. */
.member-login-sanctuary-page #memberApp .member-colour-flight.cmnz-fresh-update,
.member-login-sanctuary-page #memberApp .member-colour-accommodation.cmnz-fresh-update,
.member-login-sanctuary-page #memberApp .member-colour-food.cmnz-fresh-update{
  animation:cmnzGradientFresh 1.05s ease both!important;
}

/* When a section first scrolls into view, bring its colour from muted to full. */
.member-login-sanctuary-page #memberApp .member-convention-detail-section.cmnz-gradient-ready{
  transition:filter .55s ease,box-shadow .55s ease;
}
.member-login-sanctuary-page #memberApp .member-convention-detail-section.cmnz-gradient-ready:not(.cmnz-gradient-active){
  filter:saturate(.94) brightness(.995);
}

/* Pause expensive gradient movement while the app is not visible. */
.member-login-sanctuary-page.cmnz-motion-paused #memberApp .cmnz-gradient-active,
.member-login-sanctuary-page.cmnz-motion-paused #memberApp .cmnz-gradient-active::before{
  animation-play-state:paused!important;
}

@keyframes cmnzTravelGradient{
  0%,100%{background-position:0% 12%,100% 88%,0% 50%}
  50%{background-position:28% 18%,76% 80%,100% 50%}
}
@keyframes cmnzTravelOrb{0%,100%{transform:translate3d(-8px,0,0) scale(.98)}50%{transform:translate3d(20px,5px,0) scale(1.07)}}
@keyframes cmnzTravelBorder{0%,100%{box-shadow:0 18px 38px rgba(35,61,89,.08),0 0 0 0 rgba(56,189,248,0)}50%{box-shadow:0 20px 42px rgba(35,61,89,.10),0 0 0 2px rgba(56,189,248,.12)}}
@keyframes cmnzTravelCardFlow{0%,100%{background-position:100% 8%,0% 50%}50%{background-position:62% 22%,100% 50%}}
@keyframes cmnzTravelCardBorder{50%{box-shadow:0 16px 34px rgba(37,99,235,.14),0 0 0 1px rgba(59,130,246,.13)}}

@keyframes cmnzStayGradient{0%,100%{background-position:7% 14%,94% 85%,45% 50%}50%{background-position:14% 23%,84% 72%,58% 43%}}
@keyframes cmnzStayOrb{0%,100%{transform:translate3d(0,0,0) scale(.94);opacity:.72}50%{transform:translate3d(-9px,8px,0) scale(1.08);opacity:.94}}
@keyframes cmnzStayBorder{0%,100%{box-shadow:0 18px 38px rgba(35,61,89,.08),0 0 0 0 rgba(52,211,153,0)}50%{box-shadow:0 20px 42px rgba(22,101,72,.09),0 0 0 2px rgba(52,211,153,.11)}}
@keyframes cmnzStayCardBreathe{0%,100%{background-position:92% 8%,38% 50%}50%{background-position:76% 18%,58% 44%}}
@keyframes cmnzStayCardBorder{50%{box-shadow:0 16px 33px rgba(22,163,74,.12),0 0 0 1px rgba(52,211,153,.12)}}

@keyframes cmnzFoodGradient{0%,100%{background-position:7% 13%,94% 88%,0% 50%}50%{background-position:18% 22%,80% 72%,100% 50%}}
@keyframes cmnzFoodWarmth{0%,100%{transform:translate3d(0,5px,0) scale(.96);opacity:.72}50%{transform:translate3d(-14px,-4px,0) scale(1.09);opacity:.96}}
@keyframes cmnzFoodBorder{0%,100%{box-shadow:0 18px 38px rgba(35,61,89,.08),0 0 0 0 rgba(245,158,11,0)}50%{box-shadow:0 20px 42px rgba(146,85,18,.09),0 0 0 2px rgba(245,158,11,.11)}}
@keyframes cmnzFoodCardShimmer{0%,100%{background-position:92% 8%,0% 50%}50%{background-position:70% 20%,100% 50%}}
@keyframes cmnzFoodCardBorder{50%{box-shadow:0 16px 33px rgba(180,110,20,.13),0 0 0 1px rgba(251,146,60,.12)}}

@keyframes cmnzGradientFresh{0%{filter:brightness(1) saturate(1)}35%{filter:brightness(1.07) saturate(1.12);box-shadow:0 0 0 5px rgba(255,255,255,.64),0 18px 42px rgba(31,93,132,.16)}100%{filter:brightness(1) saturate(1)}}

@media (prefers-reduced-motion:reduce){
  .member-login-sanctuary-page #memberApp .cmnz-gradient-card::before{display:none!important}
  .member-login-sanctuary-page #memberApp .member-convention-detail-section.cmnz-gradient-ready:not(.cmnz-gradient-active){filter:none!important}
}


/* ==========================================================
   v177-126 — Member App premium navigation + convention motion
   Member App only. Planning/Admin/Transport are untouched.
   ========================================================== */

/* Prevent the entire PWA page from drifting sideways into blank space. */
html:has(body.member-login-sanctuary-page),
body.member-login-sanctuary-page{
  max-width:100%;
  overflow-x:hidden!important;
  overflow-x:clip!important;
}
.member-login-sanctuary-page #memberApp{
  width:100%!important;
  max-width:min(1180px,100%)!important;
  min-width:0!important;
  overflow-x:hidden!important;
  overflow-x:clip!important;
}
.member-login-sanctuary-page #memberApp #itineraryArea,
.member-login-sanctuary-page #memberApp .member-convention-hub,
.member-login-sanctuary-page #memberApp .member-convention-hub-list,
.member-login-sanctuary-page #memberApp .member-convention-hub-card,
.member-login-sanctuary-page #memberApp .member-convention-hub-toggle,
.member-login-sanctuary-page #memberApp .member-convention-hub-panel,
.member-login-sanctuary-page #memberApp .member-convention-detail-section{
  min-width:0!important;
  max-width:100%!important;
}

/* True viewport dock: moved to body by member-motion.js so app transforms cannot unfix it. */
body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock{
  position:fixed!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  width:100vw!important;
  max-width:100vw!important;
  margin:0!important;
  transform:none!important;
  z-index:25000!important;
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:5px!important;
  padding:7px 7px calc(7px + env(safe-area-inset-bottom,0px))!important;
  border:0!important;
  border-top:1px solid rgba(255,255,255,.20)!important;
  border-radius:22px 22px 0 0!important;
  isolation:isolate;
  overflow:hidden!important;
  background:
    radial-gradient(circle at 16% -55%,rgba(70,166,255,.36),transparent 34%),
    radial-gradient(circle at 82% 130%,rgba(21,105,213,.30),transparent 34%),
    linear-gradient(112deg,#04255b 0%,#073879 48%,#0750a2 100%)!important;
  box-shadow:0 -12px 28px rgba(4,40,91,.12),0 15px 34px rgba(2,30,75,.26),inset 0 1px 0 rgba(255,255,255,.10)!important;
  backdrop-filter:blur(18px) saturate(1.12)!important;
  -webkit-backdrop-filter:blur(18px) saturate(1.12)!important;
}
body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock.cmnz-nav-hidden{display:none!important}
body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock:before{
  content:"";position:absolute;z-index:-1;left:7%;right:7%;top:0;height:2px;border-radius:999px;
  background:linear-gradient(90deg,transparent,rgba(104,190,255,.85) 24%,rgba(242,198,93,.95) 50%,rgba(104,190,255,.85) 76%,transparent);
  box-shadow:0 0 15px rgba(96,181,255,.36);pointer-events:none;
}
body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock:after{
  content:"";position:absolute;z-index:-1;width:170px;height:78px;top:-48px;right:8%;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.13),transparent 70%);pointer-events:none;
}
body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock .member-bottom-nav-item{
  min-width:0;min-height:58px;border:1px solid transparent!important;background:transparent;color:#fff;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border-radius:14px;
  padding:6px 3px;font:inherit;font-size:.68rem;font-weight:850;position:relative;z-index:1;
  transition:transform .18s ease,background .25s ease,color .25s ease,box-shadow .25s ease;
}
body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock .member-bottom-nav-icon{
  width:31px;height:31px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.095)!important;
  border:1px solid rgba(255,255,255,.18)!important;color:#fff!important;font-size:16px;font-weight:900;line-height:1;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07)!important;
}
body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock .member-bottom-nav-item.active{
  background:linear-gradient(145deg,rgba(21,117,226,.98),rgba(6,82,177,.96))!important;color:#fff!important;
  border-color:rgba(255,255,255,.15)!important;box-shadow:0 8px 18px rgba(0,23,67,.28),inset 0 1px 0 rgba(255,255,255,.18)!important;
}
body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock .member-bottom-nav-item.active .member-bottom-nav-icon{
  background:linear-gradient(145deg,#fff,#eaf5ff)!important;border-color:#fff!important;color:#06417f!important;
  box-shadow:0 5px 12px rgba(0,31,79,.22),0 0 0 4px rgba(255,255,255,.06)!important;
}
@media(max-width:520px){
  body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock{
    gap:2px!important;padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px))!important;border-radius:19px 19px 0 0!important;
  }
  body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock .member-bottom-nav-item{min-height:56px;font-size:.61rem;padding:5px 1px}
  body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock .member-bottom-nav-icon{width:28px;height:28px;font-size:15px}
}

/* Animated Convention 2026 card — immediate, very slow left-to-right drift. */
.member-login-sanctuary-page #memberApp .member-programme-simple{
  position:relative;overflow:hidden;isolation:isolate;color:#fff!important;
  border:1px solid rgba(255,255,255,.22)!important;
  background:
    radial-gradient(circle at 15% 20%,rgba(91,183,255,.34),transparent 30%),
    radial-gradient(circle at 86% 80%,rgba(239,191,83,.25),transparent 30%),
    linear-gradient(115deg,#05275e 0%,#0a4b95 47%,#0b68bd 72%,#073c7d 100%)!important;
  background-size:175% 175%,175% 175%,250% 250%!important;
  box-shadow:0 18px 38px rgba(5,46,103,.20),inset 0 1px 0 rgba(255,255,255,.13)!important;
  animation:none!important;
}
.member-login-sanctuary-page #memberApp .member-programme-simple h3{color:#fff!important;text-shadow:0 2px 12px rgba(0,28,74,.24)}
.member-login-sanctuary-page #memberApp .member-programme-simple .muted{color:rgba(244,249,255,.88)!important}
.member-login-sanctuary-page #memberApp .member-programme-simple:before{display:none!important;content:none!important;animation:none!important}

/* Smooth convention opening. JS animates measured height; this is the visual fallback. */
.member-login-sanctuary-page #memberApp .member-convention-hub-toggle[aria-expanded="true"]{
  box-shadow:inset 0 -1px 0 rgba(26,91,149,.09),0 5px 16px rgba(18,68,115,.06);
}
.member-login-sanctuary-page #memberApp .member-convention-hub-panel:not(.hidden){
  transform-origin:top center;
  animation:none!important;
}
.member-login-sanctuary-page #memberApp .member-convention-hub-panel.cmnz-panel-opening{animation:none!important}
.member-login-sanctuary-page #memberApp .member-convention-hub-panel:not(.hidden)>*{animation:none!important}

/* Next-convention spotlight. */
.member-login-sanctuary-page #memberApp .member-convention-hub-card.cmnz-next-convention{
  position:relative;
  box-shadow:0 16px 36px rgba(6,73,138,.13),0 0 0 1px rgba(58,155,230,.16)!important;
  animation:cmnzNextConventionGlow 4.6s ease-in-out infinite;
}
/* Travel progress line gets a living, directional fill. */
.member-login-sanctuary-page #memberApp .status-card.cmnz-progress-live .step.done:not(:last-child):after{
  background:linear-gradient(90deg,#18a960,#69e7a9,#18a960)!important;background-size:220% 100%!important;
  animation:cmnzProgressFlow 2.8s linear infinite;
}

/* System alert is completely static — no entrance, pulse, shake, scale or transition. */
.member-login-sanctuary-page #memberApp .member-notification-area:has(.member-system-alert-card),
.member-login-sanctuary-page #memberApp .member-system-alert-card,
.member-login-sanctuary-page #memberApp .member-system-alert-card *,
.member-login-sanctuary-page #memberApp .member-system-alert-card::before,
.member-login-sanctuary-page #memberApp .member-system-alert-card::after{
  animation:none!important;
  transition:none!important;
  transform:none!important;
}
.member-login-sanctuary-page #memberApp .member-system-alert-card{will-change:auto!important}

@keyframes cmnzProgrammeGradient{from{background-position:0% 20%,0% 80%,0% 50%}to{background-position:100% 20%,100% 80%,100% 50%}}
@keyframes cmnzNextConventionGlow{50%{box-shadow:0 18px 40px rgba(6,89,166,.17),0 0 0 2px rgba(74,174,241,.13)}}
@keyframes cmnzProgressFlow{to{background-position:-220% 0}}

@media(prefers-reduced-motion:reduce){
  .member-login-sanctuary-page #memberApp .member-programme-simple,
  .member-login-sanctuary-page #memberApp .member-programme-simple:before,
  .member-login-sanctuary-page #memberApp .member-convention-hub-card.cmnz-next-convention,
  .member-login-sanctuary-page #memberApp .status-card.cmnz-progress-live .step.done:not(:last-child):after{animation:none!important}
}

/* v177-133 recovery: keep member menu above motion layers and remove conflicting effects. */
.member-login-sanctuary-page #memberApp .member-menu-wrap{position:relative!important;z-index:31000!important}
.member-login-sanctuary-page #memberApp .member-account-menu{z-index:32000!important}
.member-login-sanctuary-page #memberApp .cmnz-gradient-card::before{display:none!important;content:none!important;animation:none!important;opacity:0!important}
.member-login-sanctuary-page #memberApp .cmnz-gradient-card{--cmnz-light-x:50%;--cmnz-light-y:50%}
.member-login-sanctuary-page #memberApp .member-convention-hub-panel:not(.hidden),
.member-login-sanctuary-page #memberApp .member-convention-hub-panel:not(.hidden) *{animation:none!important;transition:none!important;transform:none!important}
.member-login-sanctuary-page #memberApp .member-system-alert-card,
.member-login-sanctuary-page #memberApp .member-system-alert-card *,
.member-login-sanctuary-page #memberApp .member-system-alert-card::before,
.member-login-sanctuary-page #memberApp .member-system-alert-card::after{animation:none!important;transition:none!important;transform:none!important}


/* ==========================================================
   v177-134 — Targeted member fixes
   ========================================================== */

/* Convention 2026: immediate, slow moving gradient layer. */
.member-login-sanctuary-page #memberApp .member-programme-simple{
  position:relative!important;
  overflow:hidden!important;
  isolation:isolate!important;
  background:linear-gradient(112deg,#05275e 0%,#0a4b95 48%,#0b68bd 72%,#073c7d 100%)!important;
  animation:none!important;
}
.member-login-sanctuary-page #memberApp .member-programme-simple::before{
  content:""!important;
  display:block!important;
  position:absolute!important;
  z-index:0!important;
  inset:-40% -55%!important;
  pointer-events:none!important;
  background:
    radial-gradient(circle at 28% 48%,rgba(87,180,255,.38) 0%,rgba(87,180,255,.16) 22%,transparent 42%),
    radial-gradient(circle at 70% 52%,rgba(240,193,85,.30) 0%,rgba(240,193,85,.12) 20%,transparent 40%)!important;
  transform:translate3d(-18%,0,0)!important;
  animation:cmnzProgrammeSlowDrift 55s ease-in-out 0s infinite alternate!important;
}
.member-login-sanctuary-page #memberApp .member-programme-simple h3,
.member-login-sanctuary-page #memberApp .member-programme-simple #programmeMeta{position:relative!important;z-index:2!important}
@keyframes cmnzProgrammeSlowDrift{
  from{transform:translate3d(-18%,0,0)}
  to{transform:translate3d(18%,0,0)}
}

/* Convention open: no nested reveal/bounce/height/transform animation. member.js performs opacity-only fade. */
.member-login-sanctuary-page #memberApp .member-convention-hub-panel,
.member-login-sanctuary-page #memberApp .member-convention-hub-panel *,
.member-login-sanctuary-page #memberApp .member-convention-hub-panel .cmnz-reveal,
.member-login-sanctuary-page #memberApp .member-convention-hub-panel .cmnz-in{
  transform:none!important;
  animation:none!important;
  transition:none!important;
}
.member-login-sanctuary-page #memberApp .member-convention-hub-toggle:active{transform:none!important}

/* Remove the interactive glass / touch-light effect added in v177-125. */
.member-login-sanctuary-page #memberApp .cmnz-gradient-card::before{
  display:none!important;
  content:none!important;
  opacity:0!important;
}
.member-login-sanctuary-page #memberApp .cmnz-gradient-card.cmnz-touch-glow::before{display:none!important;opacity:0!important}

/* Alerts/announcements: completely static and no IMPORTANT badge. */
.member-login-sanctuary-page #memberApp .member-announcement-card,
.member-login-sanctuary-page #memberApp .member-announcement-card *,
.member-login-sanctuary-page #memberApp .member-announcement-card::before,
.member-login-sanctuary-page #memberApp .member-announcement-card::after,
.member-login-sanctuary-page #memberApp .member-announcement-card.announcement-flash-phase,
.member-login-sanctuary-page #memberApp .member-system-alert-card,
.member-login-sanctuary-page #memberApp .member-system-alert-card *{
  animation:none!important;
  transition:none!important;
  transform:none!important;
}
.member-login-sanctuary-page #memberApp .member-announcement-card::after{
  content:none!important;
  display:none!important;
}
.member-login-sanctuary-page #memberApp .member-announcement-card strong{padding-right:0!important}

@media(prefers-reduced-motion:reduce){
  .member-login-sanctuary-page #memberApp .member-programme-simple::before{animation:none!important;transform:none!important}
}


/* ==========================================================
   v177-135 — Visible Convention 2026 gradient movement only
   ========================================================== */
.member-login-sanctuary-page #memberApp .member-programme-simple{
  background:linear-gradient(105deg,#05275e 0%,#0a4b95 22%,#0b68bd 45%,#2b82c8 58%,#d6a63f 72%,#0a4b95 88%,#05275e 100%)!important;
  background-size:260% 100%!important;
  background-position:0% 50%!important;
  animation:cmnzProgrammeVisibleDrift 36s linear 0s infinite alternate!important;
}
.member-login-sanctuary-page #memberApp .member-programme-simple::before{
  display:none!important;content:none!important;animation:none!important;
}
@keyframes cmnzProgrammeVisibleDrift{
  from{background-position:0% 50%}
  to{background-position:100% 50%}
}
@media(prefers-reduced-motion:reduce){
  .member-login-sanctuary-page #memberApp .member-programme-simple{animation:none!important;background-position:50% 50%!important}
}


/* ==========================================================
   v177-136 — Stable professional Member App polish
   No changes to Planning/Admin/Transport.
   ========================================================== */

/* Active bottom tab: subtle native-style lift, no bouncing. */
body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock .member-bottom-nav-item.active{
  transform:translateY(-2px)!important;
}
body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock .member-bottom-nav-item.active .member-bottom-nav-icon{
  transform:translateY(-1px)!important;
  transition:transform .22s ease,background .22s ease,box-shadow .22s ease!important;
}
body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock .member-bottom-nav-item:not(.active),
body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock .member-bottom-nav-item:not(.active) .member-bottom-nav-icon{
  transform:none!important;
}

/* Travel timeline: draw connector lines once after itinerary appears. */
.member-login-sanctuary-page #memberApp .status-card .progress.cmnz-timeline-draw .step:not(:last-child)::after{
  transform:scaleX(0);
  transform-origin:left center;
  animation:cmnzTimelineDraw .58s cubic-bezier(.2,.75,.2,1) forwards;
  animation-delay:calc(120ms + (var(--cmnz-step,0) * 90ms));
}
@keyframes cmnzTimelineDraw{to{transform:scaleX(1)}}

/* Header gently compacts after the member starts scrolling; menu remains untouched. */
.member-login-sanctuary-page #memberApp .member-app-header{
  transition:min-height .24s ease,margin .24s ease!important;
}
.member-login-sanctuary-page #memberApp .member-app-header-brand img{
  transition:width .24s ease,max-height .24s ease!important;
}
.member-login-sanctuary-page #memberApp .member-app-header.cmnz-header-compact{
  min-height:44px!important;
  margin-top:8px!important;
  margin-bottom:6px!important;
}
.member-login-sanctuary-page #memberApp .member-app-header.cmnz-header-compact .member-app-header-brand img{
  width:92px!important;
  max-height:48px!important;
}

/* Lightweight skeleton shown only during an explicit background refresh. */
.member-login-sanctuary-page #memberApp .cmnz-live-refresh-strip{
  display:none;
  width:min(520px,calc(100% - 20px));
  margin:2px auto 10px;
  gap:7px;
  pointer-events:none;
}
.member-login-sanctuary-page #memberApp .cmnz-live-refresh-strip.show{display:grid}
.member-login-sanctuary-page #memberApp .cmnz-live-refresh-strip i{
  display:block;height:7px;border-radius:999px;
  background:linear-gradient(90deg,#e3ebf3 22%,#f8fafc 42%,#e3ebf3 63%);
  background-size:240% 100%;animation:cmnzShimmer 1.15s linear infinite;
}
.member-login-sanctuary-page #memberApp .cmnz-live-refresh-strip i:nth-child(2){width:82%}
.member-login-sanctuary-page #memberApp .cmnz-live-refresh-strip i:nth-child(3){width:58%}

/* Fresh server data: one soft acknowledgement, then return to normal. */
.member-login-sanctuary-page #memberApp .cmnz-fresh-update{
  animation:cmnzFreshProfessional 1.05s ease-out both!important;
}
@keyframes cmnzFreshProfessional{
  0%{box-shadow:0 0 0 0 rgba(25,142,96,0)}
  38%{box-shadow:0 0 0 4px rgba(25,142,96,.15)}
  100%{box-shadow:0 0 0 0 rgba(25,142,96,0)}
}

@media(max-width:640px){
  .member-login-sanctuary-page #memberApp .member-app-header.cmnz-header-compact .member-app-header-brand img{width:86px!important;max-height:44px!important}
}
@media(prefers-reduced-motion:reduce){
  body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock .member-bottom-nav-item.active,
  body.member-login-sanctuary-page > .member-convention-bottom-nav.cmnz-viewport-dock .member-bottom-nav-item.active .member-bottom-nav-icon{transform:none!important}
  .member-login-sanctuary-page #memberApp .status-card .progress.cmnz-timeline-draw .step:not(:last-child)::after{animation:none!important;transform:none!important}
  .member-login-sanctuary-page #memberApp .member-app-header,.member-login-sanctuary-page #memberApp .member-app-header-brand img{transition:none!important}
  .member-login-sanctuary-page #memberApp .cmnz-live-refresh-strip{display:none!important}
}

/* ==========================================================
   v177-137 — Convention 2026 seamless left-to-right gradient loop only
   ========================================================== */
.member-login-sanctuary-page #memberApp .member-programme-simple{
  background:
    repeating-linear-gradient(
      90deg,
      #05275e 0px,
      #0a4b95 105px,
      #0b68bd 205px,
      #2b82c8 270px,
      #d6a63f 330px,
      #0a4b95 390px,
      #05275e 480px
    )!important;
  background-size:480px 100%!important;
  background-position:-480px 50%!important;
  animation:cmnzProgrammeLoopLTR 90s linear 0s infinite!important;
}
.member-login-sanctuary-page #memberApp .member-programme-simple::before{
  display:none!important;
  content:none!important;
  animation:none!important;
}
@keyframes cmnzProgrammeLoopLTR{
  from{background-position:-480px 50%}
  to{background-position:0px 50%}
}
/* Keep this one very-slow decorative colour drift running even when Reduce Motion is on. */
@media(prefers-reduced-motion:reduce){
  .member-login-sanctuary-page #memberApp .member-programme-simple{
    animation:cmnzProgrammeLoopLTR 150s linear 0s infinite!important;
  }
}

/* ==========================================================
   v177-138 — Convention 2026 very-light seamless LTR drift
   ========================================================== */
.member-login-sanctuary-page #memberApp .member-programme-simple{
  position:relative!important;
  overflow:hidden!important;
  isolation:isolate!important;
  background:linear-gradient(112deg,#05275e 0%,#084487 42%,#0a5ba8 68%,#073c7d 100%)!important;
  background-size:100% 100%!important;
  background-position:center!important;
  animation:none!important;
}
.member-login-sanctuary-page #memberApp .member-programme-simple::before{
  content:""!important;
  display:block!important;
  position:absolute!important;
  z-index:0!important;
  top:0!important;
  bottom:0!important;
  left:-100%!important;
  width:200%!important;
  pointer-events:none!important;
  opacity:1!important;
  background:linear-gradient(90deg,
    rgba(0,0,0,0) 0%,
    rgba(78,169,236,.07) 9%,
    rgba(112,195,250,.18) 19%,
    rgba(255,226,166,.022) 28%,
    rgba(75,166,235,.09) 38%,
    rgba(0,0,0,0) 50%,
    rgba(78,169,236,.07) 59%,
    rgba(112,195,250,.18) 69%,
    rgba(255,226,166,.022) 78%,
    rgba(75,166,235,.09) 88%,
    rgba(0,0,0,0) 100%
  )!important;
  transform:translate3d(0,0,0)!important;
  will-change:transform!important;
  animation:cmnzProgrammeLightSweepLTR 70s linear 0s infinite!important;
}
.member-login-sanctuary-page #memberApp .member-programme-simple>*{
  position:relative!important;
  z-index:2!important;
}
@keyframes cmnzProgrammeLightSweepLTR{
  from{transform:translate3d(0,0,0)}
  to{transform:translate3d(50%,0,0)}
}
@media(prefers-reduced-motion:reduce){
  .member-login-sanctuary-page #memberApp .member-programme-simple::before{
    animation:cmnzProgrammeLightSweepLTR 120s linear 0s infinite!important;
  }
}
