:root body #planet-menu button.footer-open-button { display:none!important; }
@media(max-width:820px) {
  :root body:not(.footer-open) #planet-menu.is-open:not(.has-preview) button.footer-open-button {
    display:inline-flex!important;
  }
  :root body #planet-menu button.footer-open-button {
    position:fixed; right:max(18px, env(safe-area-inset-right)); bottom:max(18px, env(safe-area-inset-bottom));
    z-index:50; width:28.8px!important; height:28.8px!important;
    min-width:28.8px!important; min-height:28.8px!important; padding:6px!important;
    color:var(--circle-blue); cursor:pointer;
  }
  :root body #planet-menu button.footer-open-button .portal-arrow-icon { width:15.6px!important; height:15.6px!important; }
}
@media(max-width:700px) {
  :root body #planet-menu button.footer-open-button {
    width:26.4px!important; height:26.4px!important; min-width:26.4px!important; min-height:26.4px!important; padding:5.4px!important;
  }
}
.optimism-footer {
  position:fixed; z-index:200; inset:auto 0 0; height:62dvh; min-height:290px;
  color:#269bc7; background:transparent;
  overflow:visible; visibility:hidden; opacity:0; transform:translateY(105%);
  transition:transform 1600ms cubic-bezier(.22,.8,.22,1),opacity 1000ms,visibility 1600ms;
  font-family:Arial,sans-serif;
}
body.footer-open .optimism-footer { visibility:visible; opacity:1; transform:none; transition-duration:3200ms,2000ms,3200ms; transition-delay:180ms; }
.footer-contact {
  --contact-size:min(23.5vw,47dvh);
  position:fixed; z-index:201; top:calc(35dvh - var(--contact-size)); left:77.3%;
  width:var(--contact-size); aspect-ratio:1; border-radius:50%;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  background:#4cb9e9; color:#fff; text-align:center;
  visibility:hidden; opacity:0; transform:translate(-50%,-120%);
  transition:transform 1600ms cubic-bezier(.22,.8,.22,1),opacity 1000ms,visibility 1600ms;
}
body.footer-open .footer-contact { visibility:visible; opacity:1; transform:translate(-50%,0); transition-duration:3200ms,2000ms,3200ms; transition-delay:180ms; }
#footer-contact h2 { margin:0 0 clamp(8px,1dvh,14px); color:#ffb812!important; font:400 clamp(28.6px,4.94dvh,52px)/1.1 Modak,Arial,sans-serif; }
.footer-contact-details { display:grid; gap:clamp(4px,.7dvh,8px); font:700 clamp(13px,2.145dvh,20.8px)/1.35 Arial,sans-serif; }
.footer-contact-details a,.footer-contact-details strong { color:#fff; text-decoration:none; transition:color 180ms ease; }
.footer-contact-details a:hover,.footer-contact-details a:focus-visible,.footer-contact-details strong:hover { color:#ffb812; }
.footer-contact-details .letter-wipe { --letter-color:#fff!important; --letter-hover-color:#ffb812!important; }
.footer-contact-details a:focus-visible { outline:2px solid #ffb812; outline-offset:3px; border-radius:2px; }
.footer-layout { position:relative; z-index:2; height:calc(100% - 70px); width:83%; margin:auto; display:grid; grid-template-columns:1.55fr repeat(3,1fr) .65fr; gap:2.5%; align-items:center; }
.footer-brand { position:relative; display:grid; place-items:center; width:max(23vw,270px); aspect-ratio:1; border-radius:50%; background:#ffb812; transform:translateX(-8vw); }
.footer-brand-logo { display:block; width:68%; height:auto; }
.footer-column { position:relative; align-self:center; }
.footer-column::before { content:''; position:absolute; left:-20%; top:55px; height:155px; width:1px; background:#8fadb522; }
.footer-badge { width:clamp(82px,7.5vw,130px); aspect-ratio:1; border-radius:50%; background:#ffb812; display:grid; place-items:center; color:white; margin-bottom:13px; }
.footer-column:nth-child(3) .footer-badge { background:#4cb9e9; }
.footer-badge svg { width:62px; height:62px; fill:currentColor; }
.footer-items { display:grid; gap:7px; padding-left:24px; font-size:clamp(22px,1.66vw,28px); }
.footer-items a { width:fit-content; color:#269bc7; text-decoration:none; transition:color 180ms; }
.footer-items a:hover,.footer-items a:focus-visible { color:#ffb812; }
.footer-items .letter-wipe,.footer-bottom .letter-wipe { --letter-color:#269bc7!important; --letter-hover-color:#ffb812!important; }
.footer-bottom { position:absolute; z-index:2; left:26vw; right:7vw; bottom:18px; display:grid; grid-template-columns:minmax(0,1fr) minmax(280px,26vw); align-items:end; gap:18px; color:#269bc7; font:600 13px/1.5 Arial,sans-serif; text-align:left; }
.footer-meta { display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:6px 12px; text-align:center; }
.footer-legal { display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:8px; }
.footer-bottom button,.footer-bottom a { border:0; padding:0; min-height:0; background:transparent; color:#269bc7; font:inherit; text-decoration:none; cursor:pointer; }
.footer-bottom button:hover,.footer-bottom a:hover,
.footer-bottom button:focus-visible,.footer-bottom a:focus-visible { color:#fff; }
.footer-bottom .letter-wipe { --letter-hover-color:#fff!important; }
.footer-credit { width:100%; min-height:72px; border-top:1px solid #269bc7; padding-top:25px; display:flex; align-items:center; justify-content:space-between; gap:32px; font:700 clamp(19.2px,1.2vw,24px)/1.4 Arial,sans-serif; text-transform:uppercase; }
.footer-credit > span:last-child { flex-shrink:0; }
.footer-credit,
.footer-credit span,
.footer-credit a { font-family:"Modak",Arial,sans-serif!important; font-weight:400!important; letter-spacing:0; }

/* One full-width credit link, with a rising colour field and travelling shine. */
.footer-bottom a.footer-credit {
  position:relative; isolation:isolate; overflow:hidden; box-sizing:border-box;
  min-height:72px; padding:18px 14px; border-top:1px solid var(--circle-orange,#ffb812);
  border-radius:0 0 16px 16px; color:var(--circle-orange,#ffb812);
  font-size:clamp(19.2px,1.2vw,24px); line-height:1.4;
  transition:color .35s ease,box-shadow .45s ease;
}
.footer-credit::before,.footer-credit::after {
  content:''; position:absolute; inset:0; z-index:-1; pointer-events:none;
}
.footer-credit::before {
  background:var(--circle-orange,#ffb812); border-radius:50% 50% 0 0;
  transform:translateY(105%) scaleX(.6);
  transition:transform .65s cubic-bezier(.22,1,.36,1),border-radius .65s ease;
}
.footer-credit::after {
  background:linear-gradient(110deg,transparent 30%,#fff6 48%,transparent 66%);
  transform:translateX(-130%); transition:transform .9s cubic-bezier(.22,1,.36,1);
}
.footer-credit > span { position:relative; min-width:0; transition:transform .65s cubic-bezier(.22,1,.36,1); }
.footer-credit > span:first-child { flex:1; }
.footer-credit > span:last-child { flex:1; text-align:right; }
.footer-bottom a.footer-credit { gap:12px; }
.footer-bottom a.footer-credit:is(:hover,:focus-visible) {
  color:#167aa5; box-shadow:0 8px 24px #ffb81226;
}
.footer-credit:is(:hover,:focus-visible)::before { transform:translateY(0) scaleX(1); border-radius:0; }
.footer-credit:is(:hover,:focus-visible)::after { transform:translateX(130%); }
.footer-credit > span:first-child > span,
.footer-credit > span:last-child > span { display:inline-block; transition:transform 1.3s cubic-bezier(.22,1,.36,1); }
.footer-credit:is(:hover,:focus-visible) > span:first-child > span { transform:translateX(calc(100cqw - 100%)); }
.footer-credit:is(:hover,:focus-visible) > span:last-child > span { transform:translateX(calc(-100cqw + 100%)); }
.footer-credit > span { container-type:inline-size; }
.footer-bottom .footer-credit .letter-wipe {
  --letter-color:var(--circle-orange,#ffb812)!important;
  --letter-hover-color:#167aa5!important;
}
.footer-credit:focus-visible { outline:2px solid var(--circle-orange,#ffb812); outline-offset:4px; }
@media(max-width:600px) { .footer-bottom a.footer-credit { background:#fff; } }
@media(prefers-reduced-motion:reduce) {
  .footer-bottom a.footer-credit,.footer-credit::before,.footer-credit::after,.footer-credit > span { transition:none; }
  .footer-credit::after { display:none; }
  .footer-credit > span > span { transition:none; }
}

.footer-return { position:absolute; z-index:3; top:-10px; left:50%; transform:translateX(-50%); width:48px; height:48px; border:0; border-radius:50%; background:#fff; color:#269bc7; box-shadow:0 3px 8px #0001; cursor:pointer; display:grid; place-items:center; transition:color 180ms; }
.footer-return:hover { color:#ffb812; }
.footer-return svg { width:23px; height:23px; }
.footer-dot { position:absolute; border-radius:50%; background:#ffb812; }
.footer-dot.one { width:15vw; height:15vw; left:-7.5vw; top:-1vw; border:1px solid #fff; }
.footer-dot.two { width:3vw; height:3vw; left:7.7%; top:5%; }
.footer-dot.three { width:7vw; height:7vw; left:1%; bottom:-2vw; background:#4cb9e9; border:1px solid #fff; }
.footer-dot.four { width:16vw; height:16vw; right:-8vw; top:-1vw; background:#4cb9e9; }
.footer-dot.five { width:4.5vw; height:4.5vw; right:7%; top:6%; }
.footer-dot.seven { width:8vw; height:8vw; right:-2vw; bottom:-6vw; background:#4cb9e9; }
body.footer-open #planet-menu .menu-preview,body.footer-open .portal-header { opacity:0!important; pointer-events:none!important; }
body.footer-open .view-stage { visibility:hidden; }
@media(max-width:900px) {
 .footer-bottom { position:relative; inset:auto; width:88%; margin:0 auto; padding-bottom:20px; grid-template-columns:1fr; text-align:center; }
 .footer-credit { max-width:480px; justify-self:center; text-align:left; }
 .footer-contact { --contact-size:min(34dvh,380px,90vw); top:1dvh; left:50%; }
 .optimism-footer { height:auto; max-height:60dvh; min-height:0; overflow-y:auto; }
 .footer-layout { width:88%; height:auto; padding:48px 0 24px; grid-template-columns:repeat(3,1fr); gap:22px 12px; }
 .footer-brand { grid-column:1 / 4; }
 .footer-brand { width:max(55vw,270px); transform:translateX(-15vw); }
 .footer-column::before { display:none; }
 .footer-badge { width:min(16vw,110px); }.footer-items { padding-left:6px; font-size:24px; }
 .footer-dot { opacity:.5; }
}
@media(min-width:901px) and (max-width:1300px) {
 .footer-bottom { left:26vw; grid-template-columns:1fr; }
 .footer-credit { grid-column:1 / -1; width:min(480px,100%); justify-self:end; }
}
@media(max-width:480px) { .footer-layout { grid-template-columns:repeat(2,1fr); }.footer-brand { grid-column:1 / 3; }.footer-badge { width:88px; }.footer-items { font-size:26px; }.footer-dot.four { width:38vw;height:38vw;right:-20vw; } }
/* Mobile footer: two full-width colour fields meet at the viewport midpoint. */
@media(max-width:600px) {
 .footer-contact {
  top:0; left:50%; width:100%; height:50dvh; aspect-ratio:auto;
  border-radius:0; background:#56b8e8;
 }
 .optimism-footer {
  z-index:202; height:50dvh; max-height:50dvh; background:#ffb812;
  overflow:visible;
 }
 .footer-dot { display:none; }
 .footer-layout { padding:24px 0 0; display:block; }
 .footer-column { display:none; }
 .footer-return { top:-24px; z-index:202; }
 .footer-return:active { color:#ffb812; }
 .footer-brand {
  width:100%; min-height:0; height:22dvh; aspect-ratio:auto; border-radius:0;
  background:transparent; transform:none;
 }
 .footer-brand-logo { width:min(80%,280px); }
 .footer-bottom { width:88%; margin:8px auto 0; padding-bottom:12px; gap:16px; }
 .footer-credit { min-height:0; padding-top:14px; }
}
@media(prefers-reduced-motion:reduce) { .optimism-footer,.footer-contact { transition:none; } }
