html {
    scroll-behavior: smooth;
}

.maerev-wordmark {
    font-family: "Josefin Sans", sans-serif;
    font-size: 30px;
    line-height: 1;
    font-weight: 700;
    letter-spacing: -1px;
    color: #fff;
}

.maerev-wordmark span {
    color: #7E2FFF;
}

.maerev-section-label {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 9px 18px;
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 999px;
    color: rgba(255, 255, 255, .82);
    background: rgba(255, 255, 255, .06);
    font-size: 14px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    margin-bottom: 26px;
}

.maerev-hero-subtitle {
    max-width: 920px;
    margin: 58px auto 52px;
}

.maerev-hero-actions {
    gap: 16px;
    flex-wrap: wrap;
}

.maerev-hero-secondary {
    font-family: "Josefin Sans", sans-serif;
    font-size: 18px;
    font-weight: 600;
    color: #fff;
    border-bottom: 1px solid rgba(255, 255, 255, .45);
    padding-bottom: 4px;
}

.maerev-proof-strip {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
    max-width: 860px;
    margin: 65px auto 0;
}

.maerev-proof-card {
    text-align: left;
    padding: 22px 24px;
    border-radius: 24px;
    background: rgba(255, 255, 255, .08);
    border: 1px solid rgba(255, 255, 255, .12);
}

.maerev-proof-card strong {
    display: block;
    color: #fff;
    font-size: 30px;
    line-height: 1;
    font-weight: 700;
    margin-bottom: 8px;
}

.maerev-proof-card span {
    display: block;
    color: rgba(255, 255, 255, .68);
    font-size: 16px;
    line-height: 1.45;
}

.maerev-marketplace-card {
    max-width: 520px;
    margin: 40px auto 0;
    padding: 24px 28px;
    border-radius: 28px;
    background: rgba(126, 47, 255, .16);
    border: 1px solid rgba(126, 47, 255, .34);
    backdrop-filter: blur(12px);
    position: relative;
    z-index: 2;
}

.maerev-marketplace-card strong {
    color: #fff;
    font-size: 22px;
    line-height: 1.3;
}

.maerev-marketplace-card p {
    color: rgba(255, 255, 255, .72);
    margin: 8px 0 16px;
}

@media (max-width: 991px) {
    .maerev-proof-strip {
        grid-template-columns: 1fr;
        margin-top: 45px;
    }

    .maerev-wordmark {
        font-size: 26px;
    }

    .maerev-marketplace-card {
        position: static;
        margin: 40px auto 0;
    }

    .maerev-hero-subtitle {
        margin: 35px auto 35px;
    }
}

.maerev-logo-placeholder {
    height: 58px;
    border-radius: 18px;
    background: rgba(255, 255, 255, .07);
    border: 1px solid rgba(255, 255, 255, .12);
    color: rgba(255, 255, 255, .58);
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 22px;
    font-size: 13px;
}

.maerev-trusted-section {
    background: rgba(255, 255, 255, .01);
}

.maerev-work-card {
    border-radius: 30px;
    background: rgba(255, 255, 255, .07);
    border: 1px solid rgba(255, 255, 255, .12);
    padding: 34px;
    height: 100%;
    transition: all .3s ease-in-out;
}

.maerev-work-card:hover {
    transform: translateY(-6px);
    border-color: rgba(126, 47, 255, .5);
    background: rgba(126, 47, 255, .12);
}

.maerev-work-card .tag {
    display: inline-flex;
    padding: 7px 14px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .08);
    color: rgba(255, 255, 255, .75);
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 22px;
}

.maerev-work-card h4 {
    color: #fff;
    font-family: "Josefin Sans", sans-serif;
    font-weight: 600;
    margin-bottom: 14px;
}

.maerev-work-card p {
    font-size: 20px;
    line-height: 1.55;
    margin-bottom: 0;
}

.maerev-price-card {
    border-radius: 30px;
    background: rgba(255, 255, 255, .07);
    border: 1px solid rgba(255, 255, 255, .12);
    padding: 34px;
    height: 100%;
    transition: all .3s ease-in-out;
}

.maerev-price-card:hover {
    transform: translateY(-6px);
    border-color: rgba(126, 47, 255, .5);
    background: rgba(126, 47, 255, .12);
}

.maerev-price-card.featured {
    background: rgba(126, 47, 255, .16);
    border-color: rgba(126, 47, 255, .45);
}

.maerev-price-card .tag {
    display: inline-flex;
    padding: 7px 14px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .08);
    color: rgba(255, 255, 255, .75);
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 22px;
}

.maerev-price-card .price {
    display: block;
    color: #fff;
    font-size: 34px;
    line-height: 1;
    font-weight: 700;
    margin-bottom: 18px;
}

.maerev-price-card h4 {
    color: #fff;
    font-family: "Josefin Sans", sans-serif;
    font-weight: 600;
    margin-bottom: 14px;
}

.maerev-price-card p {
    font-size: 20px;
    line-height: 1.55;
    margin-bottom: 0;
}

.maerev-price-card ul {
    margin-top: 26px;
    margin-bottom: 30px;
}

.maerev-price-card li {
    color: rgba(255, 255, 255, .72);
    font-size: 17px;
    margin-bottom: 11px;
    position: relative;
    padding-left: 24px;
}

.maerev-price-card li::before {
    content: "✓";
    position: absolute;
    left: 0;
    top: 0;
    color: #7E2FFF;
    font-weight: 700;
}

.maerev-card-link {
    color: #fff;
    font-weight: 700;
    border-bottom: 1px solid rgba(255, 255, 255, .45);
    padding-bottom: 4px;
}

.maerev-card-link:hover {
    color: #fff;
    border-color: #7E2FFF;
}

.maerev-contact-card {
    border-radius: 30px;
    background: rgba(255, 255, 255, .12);
    border: 1px solid rgba(255, 255, 255, .18);
    padding: 30px;
    height: 100%;
    transition: all .3s ease-in-out;
}

.maerev-contact-card:hover {
    transform: translateY(-6px);
    border-color: rgba(255, 255, 255, .45);
    background: rgba(255, 255, 255, .16);
}

.maerev-contact-card h4 {
    color: #fff;
    font-family: "Josefin Sans", sans-serif;
    font-weight: 600;
    margin-bottom: 12px;
}

.maerev-contact-card p {
    font-size: 20px;
    line-height: 1.55;
    margin-bottom: 0;
    color: rgba(255, 255, 255, .78);
}

.maerev-contact-card a {
    color: #fff;
}

.maerev-footer-brand {
    font-family: "Josefin Sans", sans-serif;
    font-size: 34px;
    font-weight: 700;
    color: #fff;
    letter-spacing: -1px;
    line-height: 1;
}

.maerev-footer-brand span {
    color: #7E2FFF;
}

.maerev-logo-img {
    height: 80px;
    width: auto;
}

.maerev-footer-logo {
    height: 80px;
    width: auto;
    margin-left: -20px;
    margin-bottom: 24px;
}

/* Mobile */
@media (max-width: 767px) {
    .maerev-footer-logo {
        display: block;
        margin-left: auto;
        margin-right: auto;
    }

    .footer-intro {
        text-align: center;
    }
}

.feedback-slide-one {
    margin-left: -14px;
    margin-right: -14px;
}

.feedback-slide-one .item {
    padding-left: 14px;
    padding-right: 14px;
}

.feedback-card-one {
    height: 100%;
}

.maerev-preloader {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.maerev-preloader-logo {
    margin-bottom: 28px;
}

.maerev-preloader-logo img {
    height: 52px;
    width: auto;
}

.btn-one .cta-text {
    display: flex;
    align-items: center;
    justify-content: center;
}

.btn-one .cta-text i {
    color: #111;
    font-size: 15px;
    line-height: 1;
}

.maerev-blog-action {
    position: relative;
    z-index: 2;
}

.maerev-blog-action .btn-two {
    margin: 0 auto;
}

/* ── Solusi Mega Dropdown ── */
.dropdown-menu {
    padding: 14px 8px;
    background: #0c0e1f;
    border: 1px solid rgba(69, 196, 232, .2);
    border-radius: 16px;
    box-shadow: 0 16px 48px rgba(0, 0, 0, .55), 0 0 0 1px rgba(68, 51, 224, .15);
    display: flex;
    gap: 4px;
    left: -40px !important;
}

@media (max-width: 991px) {
    .navbar-collapse .dropdown-menu {
        width: fit-content !important;
        min-width: unset !important;
    }
}

.dropdown-menu .menu-column {
    flex: 1;
    padding: 6px 10px;
}

.dropdown-menu .menu-column+.menu-column {
    border-left: 1px solid rgba(69, 196, 232, .1);
}

.dropdown-menu .mega-menu-title {
    display: block;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    background: linear-gradient(90deg, #45C4E8, #4433E0);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    margin-bottom: 6px;
    padding: 0 10px;
    padding-bottom: 6px;
    border-bottom: 1px solid rgba(69, 196, 232, .15);
}

.dropdown-menu .style-none {
    list-style: none;
    padding: 0;
    margin: 0;
}

.dropdown-menu .dropdown-item {
    display: flex;
    align-items: center;
    gap: 8px;
    color: rgba(255, 255, 255, .68) !important;
    font-size: 14px;
    font-weight: 500;
    padding: 7px 10px;
    border-radius: 8px;
    line-height: 1.3;
    transition: all .18s ease-in-out;
}

.dropdown-menu .dropdown-item:hover {
    color: #fff !important;
    background: linear-gradient(90deg, rgba(69, 196, 232, .12), rgba(68, 51, 224, .18)) !important;
}

.dropdown-menu .dropdown-item span:first-child {
    flex: 1;
}

.dropdown-menu .dropdown-item span::before {
    display: none !important;
}

.maerev-badge-soon {
    display: inline-flex;
    align-items: center;
    padding: 2px 7px;
    border-radius: 999px;
    background: linear-gradient(90deg, rgba(69, 196, 232, .2), rgba(68, 51, 224, .3));
    border: 1px solid rgba(69, 196, 232, .3);
    color: #7dd8f0 !important;
    font-size: 9px !important;
    font-weight: 700;
    letter-spacing: .07em;
    text-transform: uppercase;
    flex-shrink: 0;
}

/* Mobile: stack columns */
@media (max-width: 991px) {
    .dropdown-menu {
        min-width: unset;
        width: auto;
        flex-direction: column;
        gap: 0;
        left: 0 !important;
        border-radius: 10px;
        background: #0c0e1f;
        box-shadow: none;
        padding: 4px 0;
    }

    .dropdown-menu .menu-column {
        padding: 4px 8px;
    }

    .dropdown-menu .menu-column+.menu-column {
        border-left: none;
        border-top: 1px solid rgba(69, 196, 232, .1);
        padding-top: 4px;
        margin-top: 2px;
    }

    .dropdown-menu .mega-menu-title {
        font-size: 9px;
        padding: 2px 8px 4px;
        margin-bottom: 2px;
    }

    .dropdown-menu .dropdown-item {
        font-size: 13px;
        padding: 5px 8px;
    }

    .maerev-badge-soon {
        font-size: 8px !important;
        padding: 2px 5px;
    }
}

/* ── Nav active & hover color override ── */
.theme-main-menu .nav-item .nav-link.active,
.theme-main-menu .nav-item .nav-link:hover,
.theme-main-menu.menu-style-one.fixed .nav-item:hover .nav-link {
    color: #236fdf !important;
}

/* Light theme navbar text */
html[data-bs-theme="light"] .theme-main-menu .nav-item .nav-link,
html[data-bs-theme="light"] .theme-main-menu .nav-item .nav-link.active,
html[data-bs-theme="light"] .theme-main-menu .nav-item .nav-link:hover,
html[data-bs-theme="light"] .theme-main-menu.menu-style-one.fixed .nav-item:hover .nav-link {
    color: #111 !important;
}

/* Inner pages with a light background and no dark hero behind the navbar.
   The shared overlay navbar (menu-style-one) is white by default, so pages
   add the `menu-on-light` modifier (via @section('navbarClass')) to render it
   in dark text + visible button — i.e. the normal hitam-putih look. */
html[data-bs-theme="light"] header.theme-main-menu.menu-style-one.menu-on-light .nav-item .nav-link {
    color: #111 !important;
}

html[data-bs-theme="light"] header.theme-main-menu.menu-style-one.menu-on-light .nav-item:hover .nav-link,
html[data-bs-theme="light"] header.theme-main-menu.menu-style-one.menu-on-light .nav-item .nav-link:hover {
    color: #236fdf !important;
}

html[data-bs-theme="light"] header.theme-main-menu.menu-style-one.menu-on-light .signup-btn-one {
    color: #111 !important;
    border-color: #111 !important;
}

/* Mobile hamburger lines (white by default) -> dark so they show on light pages */
html[data-bs-theme="light"] header.theme-main-menu.menu-style-one.menu-on-light .navbar-toggler::before,
html[data-bs-theme="light"] header.theme-main-menu.menu-style-one.menu-on-light .navbar-toggler::after,
html[data-bs-theme="light"] header.theme-main-menu.menu-style-one.menu-on-light .navbar-toggler span {
    background: #111 !important;
}

html[data-bs-theme="light"] .dropdown-menu .dropdown-item,
html[data-bs-theme="light"] .dropdown-menu .dropdown-item:hover {
    color: #111 !important;
}

/* ── Hero heading size ── */
.hero-banner-one .hero-heading {
    font-size: 124px;
    /* 190px × 65% */
    line-height: 1;
}

@media (max-width: 1399px) {
    .hero-banner-one .hero-heading {
        font-size: 88px;
        /* 135px × 65% */
        line-height: 1;
    }
}

@media (max-width: 991px) {
    .hero-banner-one .hero-heading {
        font-size: 72px;
        /* 110px × 65% */
        line-height: 1;
    }
}

@media (max-width: 767px) {
    /* The hero content is centred inside .main-page-wrapper, which clips horizontal
       overflow (overflow-x:hidden). So anything wider than the viewport doesn't scroll —
       it gets cut off at the screen edge. On mobile we make every hero element wrap/shrink
       to fit so nothing overflows. */

    /* Give the edge-to-edge slide real side padding so text never touches the screen edge. */
    .maerev-hero-slide {
        padding: 120px 18px 70px;
    }

    .hero-banner-one .hero-heading {
        font-size: 40px;
        line-height: 1.05;
        letter-spacing: -0.5px;
        /* Force long words (e.g. "Profesional,") to break instead of overflowing. */
        white-space: normal;
        overflow-wrap: break-word;
        word-break: break-word;
    }

    /* The eyebrow pill is an inline-flex row of words with no wrap — a long label like
       "Maestro of websites. Revolution for your brand" runs off-screen. Let it wrap. */
    .maerev-section-label {
        flex-wrap: wrap;
        justify-content: center;
        max-width: 100%;
        font-size: 12px;
        letter-spacing: .04em;
        padding: 8px 14px;
        margin-bottom: 20px;
    }

    /* fs-36 (36px) is far too large for a phone. */
    .maerev-hero-subtitle {
        margin: 24px auto 28px;
    }

    .maerev-hero-subtitle p.fs-36 {
        font-size: 18px !important;
        line-height: 1.4;
    }

    /* Stack the CTAs so they don't run past the right edge. */
    .maerev-hero-actions {
        flex-direction: column;
        gap: 14px;
        width: 100%;
    }

    .maerev-hero-actions .btn-one {
        width: 100%;
        justify-content: center;
    }

    .maerev-hero-secondary {
        display: inline-block;
    }
}

/* Mengganti warna background lingkaran ikon pada layanan */
.card-style-one .icon {
    /* Ganti kode hex warna di bawah sesuai seleramu */
    background: linear-gradient(135deg, #45C4E8 0%, #4433E0 100%) !important;
    color: #ffffff;
    font-size: 30px;
}

.text-maerev {
    background: linear-gradient(90deg, #45C4E8, #4433E0);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

a .text-maerev {
    text-decoration: underline;
}

/* =========================================================
   Dynamic hero banner rotator
   - Slides are stacked in a single CSS grid cell so the hero
     auto-sizes to the tallest banner (no fixed height / no JS
     measuring), and cross-fade between banners just works.
   ========================================================= */
.maerev-hero-rotator {
    display: grid;
    isolation: isolate;
    overflow: hidden;
}

.maerev-hero-slide {
    grid-area: 1 / 1;
    /* Fill the viewport and vertically centre the content so the empty space is
       balanced top & bottom instead of piling up under the buttons. The generous
       top padding keeps the centred content clear of the transparent overlay
       navbar; box-sizing:border-box keeps the padding inside the 100vh. */
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 140px 0 90px;
    /* Each banner carries its own background image. */
    background-repeat: no-repeat;
    background-position: center bottom;
    background-size: cover;
    opacity: 0;
    visibility: hidden;
    /* Fade the opacity, then flip visibility only after the fade completes. */
    transition: opacity 0.9s ease, visibility 0s linear 0.9s;
}

.maerev-hero-slide.is-active {
    opacity: 1;
    visibility: visible;
    z-index: 1;
    transition: opacity 0.9s ease, visibility 0s linear 0s;
}

/* Staggered "one-by-one" reveal of each title/subtitle word. */
.maerev-hero-slide .reveal-word {
    /* Whitespace between the spans (from the Blade loop) provides word spacing. */
    display: inline-block;
    opacity: 0;
    transform: translateY(0.5em);
    transition: opacity 0.6s ease, transform 0.6s ease;
}

/* The theme styles ".hero-banner-one .hero-heading span" as a decorative
   divider bar (a fixed 315x8 white block). Our per-word title spans must opt
   out of that so the heading lays out as normal text instead of overlapping. */
.maerev-hero-slide .hero-heading .reveal-word {
    width: auto;
    height: auto;
    margin: 0;
    padding: 0;
    background: none;
    border-radius: 0;
    vertical-align: baseline;
}

/* The action buttons reveal as a single unit after the text. */
.maerev-hero-slide .maerev-hero-actions {
    opacity: 0;
    transform: translateY(14px);
    transition: opacity 0.6s ease, transform 0.6s ease;
}

.maerev-hero-slide.is-active .reveal-word,
.maerev-hero-slide.is-active .maerev-hero-actions {
    opacity: 1;
    transform: none;
    /* --reveal-i is set inline per element to cascade the entrance. */
    transition-delay: calc(var(--reveal-i, 0) * 0.08s);
}

/* Navigation dots */
.maerev-hero-dots {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 34px;
    z-index: 3;
    display: flex;
    gap: 10px;
    justify-content: center;
}

.maerev-hero-dot {
    width: 10px;
    height: 10px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    cursor: pointer;
    background: rgba(255, 255, 255, 0.4);
    transition: background 0.3s ease, transform 0.3s ease;
}

.maerev-hero-dot:hover {
    background: rgba(255, 255, 255, 0.7);
}

.maerev-hero-dot.is-active {
    background: #fff;
    transform: scale(1.25);
}

/* Respect users who prefer reduced motion: no slide/word transitions. */
@media (prefers-reduced-motion: reduce) {

    .maerev-hero-slide,
    .maerev-hero-slide .reveal-word,
    .maerev-hero-slide .maerev-hero-actions {
        transition: none;
    }
}

/* =========================================================
   Running-text announcement bar (sits on top of the header)
   Full-bleed: cancels the .gap-one horizontal padding of the
   header (40px default / 25px xl / 12px small) with negative
   margins so the gradient strip spans edge to edge.
   ========================================================= */
.maerev-marquee-bar {
    display: block;
    margin: 0 -40px;
    padding: 0px 0 7px 0;
    overflow: hidden;
    background: #236fdf;
    color: #fff;
    text-decoration: none;
    -webkit-user-select: none;
    user-select: none;
    /* Hidden until the preloader finishes (body.site-loaded) */
    visibility: hidden;
    opacity: 0;
    transition: opacity 0.4s ease;
}

body.site-loaded .maerev-marquee-bar {
    visibility: visible;
    opacity: 1;
}

.maerev-marquee-bar:hover,
.maerev-marquee-bar:focus {
    color: #fff;
}

.maerev-marquee-track {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    white-space: nowrap;
    will-change: opacity;
    animation: maerev-blink 1.4s ease-in-out infinite;
}

.maerev-marquee-bar:hover .maerev-marquee-track {
    animation-play-state: paused;
    opacity: 1;
}

.maerev-marquee-item {
    padding: 0 2.25rem;
    font-size: 14px;
    font-weight: 500;
    letter-spacing: 0.2px;
    line-height: 1.4;
}

.maerev-marquee-item b {
    font-weight: 700;
    color: #FFD84D;
}

@keyframes maerev-blink {
    0%,
    100% {
        opacity: 1;
    }

    50% {
        opacity: 0;
    }
}

@media (min-width: 1200px) and (max-width: 1399px) {
    .maerev-marquee-bar {
        margin: 0 -25px;
    }
}

@media (max-width: 1199px) {
    .maerev-marquee-bar {
        margin: 0 -12px;
    }

    .maerev-marquee-item {
        padding: 0 1.5rem;
        font-size: 13px;
    }
}

/* ---------------------------------------------------------------------------
   Share links (component: x-share-links) — dipakai di blog & portfolio detail.
   Warna dasar ikut currentColor supaya aman di tema light maupun dark; brand
   color cuma muncul pas hover.
--------------------------------------------------------------------------- */
.share-links {
    gap: 10px;
    margin: 0;
    padding: 0;
}

.share-links-label {
    font-weight: 600;
    letter-spacing: .5px;
    margin-right: 4px;
}

.share-link {
    position: relative;
    width: 40px;
    height: 40px;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid currentColor;
    border-radius: 50%;
    background: transparent;
    color: inherit;
    font-size: 16px;
    line-height: 1;
    opacity: .75;
    transition: all .3s ease-in-out;
}

.share-link:hover,
.share-link:focus-visible {
    color: #fff;
    opacity: 1;
    transform: translateY(-2px);
}

.share-link--facebook:hover,
.share-link--facebook:focus-visible {
    background: #1877F2;
    border-color: #1877F2;
}

.share-link--x:hover,
.share-link--x:focus-visible {
    background: #000;
    border-color: #000;
}

.share-link--linkedin:hover,
.share-link--linkedin:focus-visible {
    background: #0A66C2;
    border-color: #0A66C2;
}

.share-link--threads:hover,
.share-link--threads:focus-visible {
    background: #000;
    border-color: #000;
}

.share-link--whatsapp:hover,
.share-link--whatsapp:focus-visible {
    background: #25D366;
    border-color: #25D366;
}

.share-link--telegram:hover,
.share-link--telegram:focus-visible {
    background: #229ED9;
    border-color: #229ED9;
}

.share-link--instagram:hover,
.share-link--instagram:focus-visible {
    background: linear-gradient(45deg, #F58529, #DD2A7B 50%, #8134AF 75%, #515BD4);
    border-color: #DD2A7B;
}

/* Toast "Link tersalin" untuk tombol Instagram (copy link). */
.share-link-toast {
    position: absolute;
    bottom: calc(100% + 8px);
    left: 50%;
    transform: translate(-50%, 4px);
    padding: 5px 10px;
    border-radius: 6px;
    background: #111;
    color: #fff;
    font-size: 12px;
    font-weight: 500;
    white-space: nowrap;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: all .2s ease-in-out;
}

.share-link.is-copied .share-link-toast {
    opacity: 1;
    visibility: visible;
    transform: translate(-50%, 0);
}

html[data-bs-theme="dark"] .share-link-toast {
    background: #fff;
    color: #111;
}

@media (max-width: 575px) {
    .share-links {
        gap: 8px;
    }

    .share-link {
        width: 36px;
        height: 36px;
        font-size: 14px;
    }
}


/* =====================================================================
   Thumbnail grid — CLS guard
   ---------------------------------------------------------------------
   Kartu portfolio & template pakai gambar dari DB dengan rasio yang bisa
   beda-beda. Tanpa tinggi yang dipesan di muka, grid "melompat" waktu tiap
   gambar selesai load (Cumulative Layout Shift).

   aspect-ratio mengunci slot-nya, object-fit:cover meng-crop gambar off-ratio
   tanpa gepeng, dan height:auto memastikan atribut height="" di markup (yang
   ada supaya browser bisa pesan tempat SEBELUM CSS terparse) tidak dipakai
   mentah-mentah. Rasio 1200/995 = rasio native thumbnail portfolio (3000x2488)
   dan template (588x488).
   ===================================================================== */
.project-block-two .img-holder .media-img {
    width: 100%;
    height: auto;
    aspect-ratio: 1200 / 995;
    object-fit: cover;
}

/* Kartu artikel sudah 16/9 lewat inline style; ini jaring pengamannya. */
.blog-meta-one .post-img img {
    width: 100%;
    height: auto;
}

/* =====================================================================
   Judul halaman: H1
   ---------------------------------------------------------------------
   Tema aslinya cuma menata `.title-three h2`, jadi halaman listing dulu
   memakai <h2> sebagai judul utama — halamannya jadi tanpa H1 sama sekali,
   sinyal on-page paling kuat untuk Google hilang.

   Sekarang judulnya <h1>. Aturan di bawah menyalin persis ukuran H2 dari
   style.css + tiga breakpoint di responsive.css supaya TAMPILANNYA tidak
   berubah sedikit pun — yang berubah hanya semantiknya.
   ===================================================================== */
.title-three h1 {
    font-family: "Montserrat", sans-serif;
    font-size: 72px;
    line-height: 1em;
    font-weight: 700;
    letter-spacing: -1.44px;
    margin: 0;
}

@media (min-width: 1200px) and (max-width: 1399px) {
    .title-three h1 { font-size: 55px; }
}

@media (min-width: 992px) and (max-width: 1199px) {
    .title-three h1 { font-size: 46px; line-height: 1.1em; }
}

@media (max-width: 991px) {
    .title-three h1 { font-size: 36px; line-height: 1.12em; letter-spacing: -1px; }
}

/* =====================================================================
   Hero rotator — normalisasi judul H1 vs DIV
   ---------------------------------------------------------------------
   Slide pertama pakai <h1>, slide berikutnya <div> (lihat homes/partials/
   hero.blade.php — supaya tidak ada H1 ganda). Bootstrap memberi heading
   `margin-bottom:.5rem` + `font-weight:500` yang TIDAK didapat <div>, jadi
   tanpa aturan ini slide ke-2 dst bakal geser sedikit dan lebih tipis.
   Dipin eksplisit di sini biar dua-duanya identik.
   ===================================================================== */
.maerev-hero-slide .hero-heading {
    margin-top: 0;
    margin-bottom: 0.5rem;
    font-weight: 500;
}

/* =====================================================================
   Breadcrumb (komponen x-breadcrumbs)
   ---------------------------------------------------------------------
   Dipasang di halaman sub-level supaya pengunjung (dan Google) tahu posisi
   halaman dalam struktur situs. Ditaruh di bawah navbar yang posisinya
   fixed, jadi ikut offset mt-110/pt-85 dari container halamannya.

   Tampilannya: satu baris di tengah halaman, tiap remah dipisah "/",
   tanpa penomoran — walaupun markup-nya <ol> (dipertahankan karena
   urutannya memang bermakna dan cocok dengan schema BreadcrumbList).
   ===================================================================== */
.maerev-breadcrumb {
    margin-bottom: 24px;
    text-align: center;
}

.maerev-breadcrumb ol {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    /* Sejajar horizontal, rata tengah — jadi posisinya pas di tengah atas
       tepat di bawah header, apa pun lebar layarnya. */
    justify-content: center;
    gap: 8px;
    padding: 0;
    margin: 0;
    font-size: 15px;
    line-height: 1.4;
}

.maerev-breadcrumb ol.left {
    align-items: start;
    /* Sejajar horizontal, rata tengah — jadi posisinya pas di tengah atas
       tepat di bawah header, apa pun lebar layarnya. */
    justify-content: left;
}

/* Angka penanda <ol> dimatikan berlapis: list-style di <li> (bukan cuma di
   <ol>) plus ::marker dikosongkan, supaya tidak muncul lagi kalau ada CSS
   lain yang menyetel ulang list-style pada elemen list di dalam konten. */
.maerev-breadcrumb li {
    display: flex;
    align-items: center;
    gap: 8px;
    list-style: none;
}

.maerev-breadcrumb li::marker {
    content: "";
}

/* Pemisah "/" dibuat lewat CSS, bukan markup — supaya tidak ikut terbaca
   screen reader dan tidak ikut ter-copy waktu teksnya di-blok. */
.maerev-breadcrumb li + li::before {
    content: "/";
    opacity: 0.4;
}

.maerev-breadcrumb a {
    color: inherit;
    opacity: 0.65;
    text-decoration: none;
    transition: opacity 0.2s ease;
}

.maerev-breadcrumb a:hover {
    opacity: 1;
    text-decoration: underline;
}

.maerev-breadcrumb [aria-current="page"] {
    font-weight: 600;
}

/* Halaman dengan hero berpadding besar (mis. detail solusi: pt-300) tidak bisa
   menaruh breadcrumb di alur normal — posisinya jadi 300px dari atas, jauh dari
   header. Bar ini menempel ke section hero (position-relative) dan diangkat ke
   195px, yaitu garis yang sama dengan halaman lain (mt-110 + pt-85). */
.maerev-breadcrumb-bar {
    position: absolute;
    top: 120px;
    left: 0;
    right: 0;
    z-index: 2;
}

.maerev-breadcrumb-bar .maerev-breadcrumb {
    margin-bottom: 0;
    /* Di halaman detail solusi remahnya rata kiri, sejajar dengan judul hero
       di bawahnya — bukan rata tengah seperti halaman lain. */
    text-align: left;
}

.maerev-breadcrumb-bar .maerev-breadcrumb ol {
    justify-content: flex-start;
}

@media (max-width: 1199px) {
    .maerev-breadcrumb-bar {
        top: 175px;
    }
}

@media (max-width: 575px) {
    .maerev-breadcrumb ol {
        font-size: 13px;
        gap: 6px;
    }

    .maerev-breadcrumb li {
        gap: 6px;
    }

    /* Di layar kecil padding hero tinggal sm-pt-150, jadi alur normal sudah
       pas di bawah header — tidak perlu diangkat, dan aman dari tabrakan
       dengan judul hero. */
    .maerev-breadcrumb-bar {
        position: static;
        margin-bottom: 20px;
    }
}

/* =====================================================================
   Filter kategori yang bisa di-crawl
   ---------------------------------------------------------------------
   Item filter isotope dulu <li> kosong — tidak ada URL, jadi tidak ada satu
   pun halaman kategori yang bisa diindeks Google. Sekarang tiap item berisi
   <a href> ke halaman kategori sungguhan. Aturan di bawah membuat anchor itu
   mengisi penuh pill-nya dan mewarisi warna <li>, jadi tampilannya persis
   sama seperti sebelumnya.
   ===================================================================== */
.filter-nav-one .isotop-menu-wrapper li > a[data-filter-link] {
    display: block;
    color: inherit;
    text-decoration: none;
}

/* Baris tautan taksonomi sekunder (mis. "Jelajahi per industri"). */
.maerev-taxonomy-links {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 8px 14px;
    font-size: 15px;
}

.maerev-taxonomy-links__label {
    opacity: 0.55;
}

.maerev-taxonomy-links a {
    color: inherit;
    opacity: 0.75;
    text-decoration: none;
    border-bottom: 1px solid currentColor;
    transition: opacity 0.2s ease;
}

.maerev-taxonomy-links a:hover,
.maerev-taxonomy-links a.is-active {
    opacity: 1;
}

.maerev-taxonomy-links a.is-active {
    font-weight: 600;
}

@media (max-width: 575px) {
    .maerev-taxonomy-links {
        font-size: 13px;
        gap: 6px 10px;
    }
}

/* =====================================================================
   Bagian "Masalah" di halaman detail solusi
   ---------------------------------------------------------------------
   Nada bagian ini sengaja dibuat mendesak — pembaca harus merasa poin
   ini menggambarkan situasinya sekarang, sebelum bagian Solusi dan
   Manfaat menawarkan jalan keluar. Karena itu silang merah, bukan ikon
   info netral, dan tiap poin dibingkai kartu merah tipis.
   ===================================================================== */
.maerev-problem-list {
    display: grid;
    gap: 12px;
    margin: 0;
    padding: 0;
}

.maerev-problem-list li {
    padding: 16px 20px;
    border: 1px solid rgba(214, 40, 57, 0.16);
    /* Garis kiri lebih tebal: bikin daftar terbaca sebagai peringatan,
       bukan sekadar bullet biasa. */
    border-left: 3px solid #d62839;
    border-radius: 12px;
    background: rgba(214, 40, 57, 0.05);
    line-height: 1.5;
}

.maerev-problem-list__icon {
    color: #d62839;
    /* Ikon 1em mengikuti fs-22 di <li>, diturunkan sedikit supaya
       optically sejajar dengan baris teks pertama. */
    font-size: 0.95em;
    line-height: 1.55;
}

/* Kalimat penutup adalah pukulan terakhir sebelum bagian Solusi —
   dinaikkan bobotnya, tapi tetap teks biasa supaya tidak berebut
   perhatian dengan heading. */
.maerev-problem-closing {
    color: #d62839;
}

@media (max-width: 575px) {
    .maerev-problem-list li {
        padding: 14px 16px;
    }
}
