
/* --- Footer credit ------------------------------------------------------ */
/* The rewrite swaps the unarchived agency logo for the Red Lotus mark and   */
/* puts the caption first, so lay the pair out on one line, flush right.     */
.elementor-image-box-wrapper:has(> .rl-credit) {
  display: flex; align-items: center; justify-content: flex-end;
  gap: .7em; text-align: right;
}
.elementor-image-box-wrapper:has(> .rl-credit) .elementor-image-box-content,
.elementor-image-box-wrapper:has(> .rl-credit) .elementor-image-box-description {
  margin: 0;
}
.elementor-image-box-img.rl-credit { margin: 0 !important; width: auto !important; }
.elementor-image-box-img.rl-credit img { display: block; width: 130px; height: auto; }

/* --- Dead custom-cursor dot --------------------------------------------- */
/* The theme paints a small dot that is supposed to trail the pointer. Its   */
/* driver never runs in the static restoration, so it sits parked at 20,20   */
/* on every page, reading as a stray bullet in the corner. Hide it.          */
.trx_addons_mouse_helper { display: none !important; }

/* --- Instagram stand-in photographs ------------------------------------- */
/* The originals were square-ish gallery crops; the stand-ins are mostly    */
/* 9:16 phone frames. Keep them inside whatever box the theme gave them;    */
/* the gallery rules below do the cropping.                                 */
img[src^="/assets-restored/ig/"] { max-width: 100%; height: auto; }
/* The portfolio hero was a landscape crop; the stand-ins are phone frames,  */
/* so pin the hero to a landscape box and crop into it.                      */
.portfolio_page_featured img[src^="/assets-restored/ig/"] {
  display: block; width: 100%; height: auto;
  aspect-ratio: 16 / 9; object-fit: cover; object-position: center;
}

/* --- Portfolio detail pages --------------------------------------------- */
/* Qwery lays a project's meta out as a sticky column beside the content.    */
/* The UCSS bundle was built from a page with no portfolio on it, so every   */
/* .portfolio_page_details rule was tree-shaken away: the meta block ran the */
/* full width and, still being sticky, scrolled down over the photographs.   */
.portfolio_page .portfolio_page_details_wrap { position: static; }
.portfolio_page .portfolio_page_details_item {
  display: flex; gap: 1em; margin-bottom: .6em;
}
.portfolio_page .portfolio_page_details_item_title { flex: 0 0 35%; }
.portfolio_page .portfolio_page_details_item_value { flex: 1 1 auto; min-width: 0; }
@media (min-width: 1024px) {
  .portfolio_page.portfolio_page_details_left,
  .portfolio_page.portfolio_page_details_right {
    display: flex; align-items: flex-start; gap: 40px;
  }
  .portfolio_page.portfolio_page_details_left .portfolio_page_details_wrap,
  .portfolio_page.portfolio_page_details_right .portfolio_page_details_wrap {
    flex: 0 0 30%; max-width: 30%;
    position: sticky; top: 110px;
  }
  .portfolio_page.portfolio_page_details_left .portfolio_page_content_wrap,
  .portfolio_page.portfolio_page_details_right .portfolio_page_content_wrap {
    flex: 1 1 auto; min-width: 0;
  }
  .portfolio_page.portfolio_page_details_right .portfolio_page_details_wrap {
    order: 2;
  }
}

/* --- WordPress gallery block -------------------------------------------- */
/* The three portfolio pages lay their photographs out with core's          */
/* wp-block-gallery (has-nested-images / is-cropped / columns-default).      */
/* LiteSpeed built the UCSS bundle from a page that had no gallery on it, so */
/* every one of those rules was tree-shaken away and the figures fell back   */
/* to full-width stacked images. This is core's own layout, restored.        */
.wp-block-gallery.has-nested-images {
  display: flex; flex-wrap: wrap; align-items: normal;
  --wp--style--unstable-gallery-gap: 16px;
  gap: var(--wp--style--unstable-gallery-gap, 16px);
  margin: 0 0 1.5em;
  padding: 0;
}
.wp-block-gallery.has-nested-images figure.wp-block-image {
  display: flex; flex-direction: column; flex-grow: 1;
  justify-content: center; position: relative;
  max-width: 100%; margin: 0; box-sizing: border-box;
}
.wp-block-gallery.has-nested-images figure.wp-block-image img {
  display: block; height: auto; max-width: 100%; width: auto;
}
.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image {
  align-self: inherit;
}
.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image > a,
.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image > div {
  display: flex; flex: 1 1 auto;
}
.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image img {
  flex: 1 0 0%; width: 100%; height: 100%;
  /* without this the flex item's automatic minimum size is the photograph's */
  /* full height and the tile grows past its aspect-ratio box                */
  min-height: 0;
  object-fit: cover; object-position: center;
}
.wp-block-gallery.has-nested-images.columns-default
  figure.wp-block-image:not(#individual-image) {
  width: calc(33.33% - var(--wp--style--unstable-gallery-gap, 16px) * 0.66667);
}
.wp-block-gallery.has-nested-images.columns-default
  figure.wp-block-image:first-child:nth-last-child(2),
.wp-block-gallery.has-nested-images.columns-default
  figure.wp-block-image:first-child:nth-last-child(2) ~ figure.wp-block-image {
  width: calc(50% - var(--wp--style--unstable-gallery-gap, 16px) * 0.5);
}
.wp-block-gallery.has-nested-images.columns-default
  figure.wp-block-image:first-child:last-child {
  width: 100%;
}
/* Core gives the cropped tiles a working aspect ratio; without it a flex    */
/* row of 9:16 phone photographs grows to the height of the tallest one.     */
.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image {
  aspect-ratio: 3 / 2; overflow: hidden;
}
@media (max-width: 599px) {
  .wp-block-gallery.has-nested-images.columns-default
    figure.wp-block-image:not(#individual-image) {
    width: calc(50% - var(--wp--style--unstable-gallery-gap, 16px) * 0.5);
  }
}

/* Repairs for the Wayback restoration of espacopirulito.com.br.
 * Generated by archive/scripts/stage3c_repairs.py -- see that file for why.
 */

/* --- Magnific Popup: layout rules pruned by LiteSpeed's UCSS ---------------- */
/* Its script survives and runs, so its runtime markup needs somewhere to live.  */
.mfp-bg, .mfp-wrap {
  position: fixed; left: 0; top: 0; width: 100%; height: 100%;
  z-index: 100000; overflow: hidden;
}
.mfp-bg      { background: #0b0b0b; opacity: .9; z-index: 99999; }
.mfp-wrap    { outline: none !important; -webkit-backface-visibility: hidden; }
.mfp-container{ position: absolute; left: 0; top: 0; width: 100%; height: 100%;
  box-sizing: border-box; padding: 0 8px; text-align: center; }
.mfp-container:before { content: ""; display: inline-block; height: 100%;
  vertical-align: middle; }
.mfp-content { position: relative; display: inline-block; vertical-align: middle;
  margin: 0 auto; text-align: left; z-index: 1045; max-width: 100%; }
.mfp-figure, .mfp-iframe-holder { line-height: 0; }
.mfp-figure img.mfp-img { display: block; max-width: 100%; height: auto;
  box-sizing: border-box; padding: 40px 0; margin: 0 auto; }
.mfp-iframe-scaler { width: 100%; height: 0; overflow: hidden; padding-top: 56.25%; }
.mfp-iframe-scaler iframe { position: absolute; left: 0; top: 0;
  width: 100%; height: 100%; background: #000; }
.mfp-close, .mfp-arrow { position: absolute; background: transparent; border: 0;
  cursor: pointer; color: #fff; opacity: .75; z-index: 1046; }
.mfp-close { top: 0; right: 0; width: 44px; height: 44px; font-size: 28px;
  line-height: 44px; text-align: center; }
.mfp-arrow { top: 50%; margin-top: -27px; width: 54px; height: 54px; font-size: 32px; }
.mfp-arrow-left { left: 0; }
.mfp-arrow-right { right: 0; }
.mfp-title, .mfp-counter { color: #f3f3f3; font-size: 12px; line-height: 18px; }
.mfp-preloader { position: absolute; top: 50%; left: 8px; right: 8px;
  margin-top: -.8em; text-align: center; color: #ccc; }
.mfp-preloader a { color: #ccc; }
.mfp-s-ready .mfp-preloader, .mfp-s-error .mfp-content { display: none; }
.mfp-hide { display: none !important; }


/* --- Interactive state rules, all pruned by LiteSpeed's UCSS --------------- */
/* UCSS keeps only the selectors it can find in the static HTML, so every rule */
/* describing an element's *opened* state was dropped: the word "opened"       */
/* survives exactly once in the whole 119 KB bundle, and no selector in it     */
/* mentions "inited" at all. Only the closed half of each pair is left, so the */
/* header menu, the mobile menu, the side panel and the search render their    */
/* hidden state permanently. These are the missing halves, in the shape their  */
/* partners imply.                                                            */

/* Header navigation. The theme hides the menu until its script has measured  */
/* the submenus (.sc_layouts_menu{visibility:hidden;overflow:hidden;          */
/* max-height:3em}); the .inited counterpart that reveals it was pruned, so   */
/* "Quem Somos / Pacotes / Galeria / Contato" never appeared on any page.     */
/* The :not() half matters as much as the .inited one: LiteSpeed defers that  */
/* script to the visitor's first mouse move, so even with the rule restored   */
/* the menu would stay hidden until something happened to wake it.            */
.sc_layouts_menu.inited,
.sc_layouts_menu:not(.inited) {
  overflow: visible; visibility: visible; max-height: none;
}

/* Fullscreen mobile menu. .menu_mobile is a fixed, height:0 shell; the       */
/* burger adds .opened, which upstream grows it to full height and plays the  */
/* items in one by one. Those keyframes went with the rest of the bundle      */
/* (only "firefly" survived), so the items are simply revealed.               */
.menu_mobile.opened { height: 100%; }
.menu_mobile.opened .menu_mobile_nav_area > ul > li,
.menu_mobile.opened .menu_mobile_close .menu_button_close_icon,
.menu_mobile.opened .menu_mobile_close .menu_button_close_text,
.menu_mobile.opened .sc_layouts_logo,
.menu_mobile.opened .menu_mobile_inner .socials_mobile,
.menu_mobile.opened .menu_mobile_inner .socials_mobile .social_item,
.menu_mobile.opened .menu_mobile_inner .socials_mobile:before,
.menu_mobile.opened .menu_mobile_inner .menu_mobile_widgets_area,
.menu_mobile.opened .menu_mobile_inner .menu_mobile_widgets_area .widget,
.menu_mobile.opened .menu_mobile_inner .menu_mobile_widgets_area
  .widget.widget_custom_html .extra_item {
  visibility: visible;
}

/* Side panel behind the header's nine-dot button (#popup-2: the socials,     */
/* both phone numbers, the e-mail address). It is parked off-screen right at  */
/* opacity 0, and .sc_layouts_panel_opened brings it in -- pruned, so the     */
/* click set the class and nothing moved.                                    */
.sc_layouts_panel.sc_layouts_panel_opened { opacity: 1; }
.sc_layouts_panel_left.sc_layouts_effect_slide.sc_layouts_panel_opened,
.sc_layouts_panel_right.sc_layouts_effect_slide.sc_layouts_panel_opened {
  -webkit-transform: translateX(0); -ms-transform: translateX(0);
  transform: translateX(0);
}
/* The header's search. Its panel is parked at top:-500px and .search_opened  */
/* drops it over the page; the field, the rule under it, the panel's logo and */
/* the close cross are each staged `visibility: hidden` for an entrance       */
/* animation whose keyframes went with the bundle. Without the opened half    */
/* the magnifier in the header did nothing at all. (The form itself has no    */
/* backend here -- see the contact form in RESTORE-NOTES.)                    */
.search_modern .search_wrap.search_opened { top: 0; }
.search_modern .search_wrap.search_opened .search_form_wrap .search_field {
  width: 100%; visibility: visible;
}
.search_modern .search_wrap.search_opened .search_form,
.search_modern .search_wrap.search_opened .search_form:after,
.search_modern .search_wrap.search_opened .logo_image,
.search_modern .search_wrap.search_opened .search_close:before {
  visibility: visible;
}
.search_modern .search_wrap.search_opened .search_form:after {
  -webkit-transform: scale3d(1, 1, 1); -ms-transform: scale3d(1, 1, 1);
  transform: scale3d(1, 1, 1);
}

/* The surviving transition reads `opacity 6s ease` -- an upstream typo for   */
/* .6s, faithfully archived. Left alone the panel slides in over 0.8s and     */
/* then sits invisible for another five seconds.                             */
.sc_layouts_panel, .sc_layouts_panel_inner {
  -webkit-transition: -webkit-transform .8s ease, opacity .6s ease;
  transition: transform .8s ease, opacity .6s ease;
}


/* --- Overlaid bands with no background left ----------------------------- */
/* These sections set only an overlay -- what it was dimming was a         */
/* background video the crawl never took -- so the band rendered as a pale  */
/* grey slab with its white heading invisible on it. A stand-in photograph  */
/* under the overlay below puts the heading back.                           */
.elementor-element-84d7820 {
  background-image: url("/assets-restored/ig/estrutura-02.jpg") !important;
  background-size: cover !important;
  background-position: center !important;
}

/* --- Parallax blocks ----------------------------------------------------- */
/* trx_addons hides a parallax block until its script has measured and       */
/* positioned the layers. LiteSpeed defers that script to the first mouse    */
/* move or scroll, so on a static copy the block's photograph is simply      */
/* missing until the visitor happens to move the mouse. The effect these     */
/* blocks apply is a few pixels of drift; showing them straight away costs   */
/* nothing and the script still takes over once it boots.                    */
.sc_parallax:not(.trx_addons_parallax_blocks_inited),
.sc_parallax:not(.trx_addons_parallax_layers_inited) { opacity: 1; }

/* --- Centred layout columns --------------------------------------------- */
/* The theme aligns a column's contents with .sc_layouts_column_align_*.    */
/* The UCSS bundle kept the _left and _right pair but not _center: the      */
/* class occurs on exactly one page (/quem-somos/), and the bundle was      */
/* generated from a page without it. The band it belongs to therefore ran   */
/* its logo, tagline and counter hard against the left edge. These are the  */
/* theme's own rules, in the same shape as the two that survived.           */
.sc_layouts_column_align_center { text-align: center; }
.sc_layouts_column_align_center .elementor-widget-wrap {
  -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center;
}

/* --- Overlay strength --------------------------------------------------- */
/* The originals were commissioned crops chosen to sit quietly behind the   */
/* headings. The stand-ins are ordinary party photographs and fight with    */
/* the white type at the theme's 20%, so dim them further.                  */
.elementor-element-84d7820 > .elementor-background-overlay,
.elementor-element-d78e7da > .elementor-background-overlay {
  background-color: #181d4e !important;
  opacity: .58 !important;
}
