/* Shared optimized presentation. Loaded only when the central mode is active. */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }
.lenis.lenis-smooth iframe { pointer-events: none; }
html.opt26-overlay-open { overflow: hidden; }
body.plusurbia-opt26, body.plusurbia-opt26 * { cursor: auto !important; }
body.plusurbia-opt26 a, body.plusurbia-opt26 [role="button"] { cursor: pointer !important; }
body.plusurbia-opt26.opt26-custom-cursor, body.plusurbia-opt26.opt26-custom-cursor * { cursor: none !important; }
body.plusurbia-opt26 .jqswaitem,
body.plusurbia-opt26 .jqtitle span,
body.plusurbia-opt26 .ctextmini span span,
body.plusurbia-opt26 .chomeslider,
body.plusurbia-opt26 .sgline,
body.plusurbia-opt26 .slinemini { transition: none; transition-delay: 0s; }
/* Fail open: content remains visible if an animation dependency cannot load. */
body.plusurbia-opt26 .jqswa .jqswaitem,
body.plusurbia-opt26 .jqtitle > span,
body.plusurbia-opt26 .ctextmini span span,
body.plusurbia-opt26 .chomeslider { opacity: 1; transform: none; }
body.plusurbia-opt26 .jqtitle span span { transform: none; }
body.plusurbia-opt26 .chomeall .jqtitle > span { transform: translateY(-7%); }
body.plusurbia-opt26 .sgline { width: 100%; transform-origin: left center; }
body.plusurbia-opt26 .slinemini { width: 100%; transform-origin: left center; }
body.plusurbia-opt26 .slineleft + .sgline { transform-origin: right center; }
body.plusurbia-opt26 .cursor {
  top: 0; left: 0; width: 25px !important; height: 25px !important;
  transition: none; visibility: hidden; contain: layout style;
}
body.plusurbia-opt26 .cursor.opt26-pointer-active { visibility: visible; }
body.plusurbia-opt26 .cursorinner::before,
body.plusurbia-opt26 .cursorinner::after { animation: none; }
body.plusurbia-opt26 .cfooterlets::before {
  width: 1000px; transform: scaleX(0); transform-origin: left;
  transition: transform 1.3s ease;
}
body.plusurbia-opt26 .scrollingwayfinish .cfooterlets::before { transform: scaleX(1); }
body.plusurbia-opt26 .opt26-sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0;
  margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}
body.plusurbia-opt26 .cpopupwrap { overscroll-behavior: contain; }

@media (pointer: coarse) {
  body.plusurbia-opt26 .cursor { display: none !important; }
}


/* Hide only the viewport scrollbar; scrolling and overlay controls remain usable. */
html { scrollbar-width: none; -ms-overflow-style: none; }
html::-webkit-scrollbar { display: none; width: 0; height: 0; }


html.opt26-overlay-open .cpopupwrap { overflow-y: auto; }
body.plusurbia-opt26 .jqswa-notranslate { transform: none !important; }
html.showdetails:not(.opt26-overlay-open) { overflow-y: auto; }
html.showdetails body.plusurbia-opt26 .cdetailbigwrap,
html.showdetails body.plusurbia-opt26 .courwork,
html.showdetails body.plusurbia-opt26 .cwrapfooter,
html.showdetails body.plusurbia-opt26 .cfooterlegal { display: none; }
html.showdetails body.plusurbia-opt26 .cprojectpersistent { min-height: calc(100vh - 180px); padding-bottom: 100px; }

/* The head gate prevents a final-state frame before deferred animation setup. */
html.opt26-motion-pending body.plusurbia-opt26 .jqswa .jqswaitem:not(.jqswaover),
html.opt26-motion-pending body.plusurbia-opt26 .jqtitle > span,
html.opt26-motion-pending body.plusurbia-opt26 .ctextmini span span,
html.opt26-motion-pending body.plusurbia-opt26 .chomeslider:not(.cimagesuperposada),
html.opt26-motion-pending body.plusurbia-opt26 .sgline,
html.opt26-motion-pending body.plusurbia-opt26 .slinemini { visibility: hidden; }

/* Draw the home menu at first paint, independently of deferred motion setup. */
body.home.plusurbia-opt26 .cmenubar {
  width: 100%;
  transform-origin: left center;
  animation: opt26-burger-draw 0.35s ease-out both;
  transition: background-color 0.2s ease-in-out;
  transition-delay: 0s;
}
body.home.plusurbia-opt26 .cmenubar2 { animation-delay: 0.08s; }
@keyframes opt26-burger-draw {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}

/* Native scrolling inside the existing cookie settings panel. */
body.plusurbia-opt26 .cbannercookiescode.cookieshowpanel {
  max-height: 90vh;
  overflow-y: auto;
  overscroll-behavior: contain;
}

/* The two hero layers appear together, fully opaque, after both images decode. */
html.opt26-hero-pending body.plusurbia-opt26 .chomeall .chomeslider { visibility: hidden; }
body.plusurbia-opt26 .chomeall .cimagesuperposadawrap {
  transform: translateY(-15px) scale(1.1);
  transition: transform 2.2s ease-in-out;
}
body.plusurbia-opt26 .chomeall.opt26-hero-rise .cimagesuperposadawrap {
  transform: translateY(-40px) scale(1.1);
}
