/* ============================================================================
   Grid utilities
   ============================================================================
   Minimal responsive grid system (container, row, columns, offsets).
   Scope: grid only — no reset, typography, components or color utilities.
   ============================================================================ */


/* ── Container ────────────────────────────────────────────────────────────── */.container{
  width: 100%;
  max-width: 1320px;
  margin-inline: auto;
  padding-inline: 1rem;
  box-sizing: border-box;
}

@media (max-width: 575.98px) {.container{ max-width: 100%; } }
@media (min-width: 576px)    {.container{ max-width: 540px; } }
@media (min-width: 768px)    {.container{ max-width: 720px; } }
@media (min-width: 992px)    {.container{ max-width: 960px; } }
@media (min-width: 1200px)   {.container{ max-width: 1140px; } }
@media (min-width: 1400px)   {.container{ max-width: 1320px; } }

/* Visual breathing room: increase container side-padding at large viewports
   so prose and sidebar cards don't feel pressed against the viewport edge. */
@media (min-width: 1280px) {.container{
    padding-inline: 1.5rem;
  }
}
@media (min-width: 1600px) {.container{
    padding-inline: 2rem;
  }
}

/* ── Row & gutters ────────────────────────────────────────────────────────── */.row{
  display: flex;
  flex-wrap: wrap;
  margin-inline: -0.75rem;
}.row > *{
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-inline: 0.75rem;
  box-sizing: border-box;
}

/* Gutters — control gap between columns */.row.g-0{ margin: 0; }.row.g-0 > *{ padding: 0; }.row.g-1{ margin: -0.125rem; }.row.g-1 > *{ padding: 0.125rem; }.row.g-2{ margin: -0.25rem; }.row.g-2 > *{ padding: 0.25rem; }.row.g-3{ margin: -0.5rem; }.row.g-3 > *{ padding: 0.5rem; }.row.g-4{ margin: -0.75rem; }.row.g-4 > *{ padding: 0.75rem; }.row.g-5{ margin: -1.5rem; }.row.g-5 > *{ padding: 1.5rem; }

/* Gx (horizontal) and gy (vertical) variants */.row.gx-3 > *{ padding-inline: 0.5rem; }.row.gx-4 > *{ padding-inline: 0.75rem; }.row.gx-5 > *{ padding-inline: 1.5rem; }.row.gy-3 > *{ padding-block: 0.5rem; }.row.gy-4 > *{ padding-block: 0.75rem; }.row.gy-5 > *{ padding-block: 1.5rem; }

/* ── Columns: 12-column grid (only widths actually used in migrated HTML) ─── */
/* Base (xs / mobile-first) */.col-4{ flex: 0 0 33.333333%; max-width: 33.333333%; }.col-6{ flex: 0 0 50%;        max-width: 50%; }.col-12{ flex: 0 0 100%;       max-width: 100%; }

/* sm — ≥576px */
@media (min-width: 576px) {.col-sm-6{ flex: 0 0 50%;        max-width: 50%; }
}

/* md — ≥768px */
@media (min-width: 768px) {.col-md-3{ flex: 0 0 25%;        max-width: 25%; }.col-md-4{ flex: 0 0 33.333333%; max-width: 33.333333%; }.col-md-5{ flex: 0 0 41.666667%; max-width: 41.666667%; }.col-md-6{ flex: 0 0 50%;        max-width: 50%; }.col-md-12{ flex: 0 0 100%;      max-width: 100%; }
}

/* lg — ≥992px */
@media (min-width: 992px) {.col-lg-3{ flex: 0 0 25%;        max-width: 25%; }.col-lg-4{ flex: 0 0 33.333333%; max-width: 33.333333%; }.col-lg-5{ flex: 0 0 41.666667%; max-width: 41.666667%; }.col-lg-6{ flex: 0 0 50%;        max-width: 50%; }.col-lg-7{ flex: 0 0 58.333333%; max-width: 58.333333%; }.col-lg-8{ flex: 0 0 66.666667%; max-width: 66.666667%; }.col-lg-9{ flex: 0 0 75%;        max-width: 75%; }.col-lg-10{ flex: 0 0 83.333333%; max-width: 83.333333%; }
}

/* xl — ≥1200px */
@media (min-width: 1200px) {.col-xl-3{ flex: 0 0 25%;        max-width: 25%; }.col-xl-4{ flex: 0 0 33.333333%; max-width: 33.333333%; }
}

/* ── Display utilities (used in original HTML) ────────────────────────────── */.d-flex{ display: flex !important; }.d-inline-block{ display: inline-block !important; }.d-none{ display: none !important; }

/* ── Flex utilities ───────────────────────────────────────────────────────── */.align-items-center{ align-items: center; }.align-items-start{ align-items: flex-start; }.align-items-end{ align-items: flex-end; }.justify-content-between{ justify-content: space-between; }.justify-content-center{ justify-content: center; }.flex-wrap{ flex-wrap: wrap; }

/* — */.text-center{ text-align: center !important; }.text-end{ text-align: end; }.text-left{ text-align: left; }

/* — */
/* Intentionally NOT redefining mb-*/mt-*/etc — grid handles these */

/* — */.section-padding{ padding-block: 5rem; }

@media (max-width: 991.98px) {.section-padding{ padding-block: 3rem; }
}

/* ── Position helpers used in original ────────────────────────────────────── */

/* ── Visually hidden but accessible ──────────────────────────────────────── */

/* ============================================================================
   Breadcrumb (Hamster template — preserved markup compatibility)
   Used in: tools/, calculators/, glossary/, blog/, services hero, etc.
   ============================================================================ */.breadcrumb-wrapper{
  position: relative;
  overflow: hidden;
  z-index: 1;
  background: linear-gradient(135deg, #f9f8ff, #efeaff);
  padding: 1rem 0;
}.breadcrumb-wrapper .page-heading{
  position: relative;
  z-index: 2;
  text-align: center;
}

/* When breadcrumb-wrapper contains an h1 (services hero pattern), use larger padding */.breadcrumb-wrapper:has(h1){
  padding: 5rem 0 5rem;
}

@media (min-width: 992px) {.breadcrumb-wrapper:has(h1){
    padding: 9rem 0 9rem;  /* matches original 170px / 1rem ≈ 10.6rem at root */
  }
}

@media (min-width: 1200px) {.breadcrumb-wrapper:has(h1){
    margin: 0 60px;
    border-radius: 30px;
  }
}.breadcrumb-wrapper .breadcrumb-items{
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.625rem;
  padding: 0.625rem 1.25rem;
  margin: 0;
  list-style: none;
  border: 2px solid var(--color-brand-accent, #6A47ED);
  border-radius: 999px;
  line-height: 1;
  background: rgba(255,255,255,0.6);
  backdrop-filter: blur(4px);
}

/* When inside a hero (h1 sibling), give more breathing room */.breadcrumb-wrapper:has(h1) .breadcrumb-items{
  margin-top: 1.5rem;
}.breadcrumb-wrapper .breadcrumb-items li{
  display: inline-flex;
  align-items: center;
  margin: 0;
  padding: 0;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--color-brand-primary, #1a1035);
  text-transform: capitalize;
}.breadcrumb-wrapper .breadcrumb-items li a{
  color: var(--color-brand-accent, #6A47ED);
  text-decoration: none;
  transition: opacity 0.2s ease-in-out;
}.breadcrumb-wrapper .breadcrumb-items li a:hover{
  opacity: 0.7;
}

/* Note: Font Awesome 6 Free is loaded via BaseLayout — provides all fa-* icons natively.
   No SVG inline substitution needed. */

/* Page heading title (when present — services hero pattern) */.breadcrumb-wrapper .page-heading h1{
  margin: 0;
  font-size: 2.25rem;
  font-weight: 800;
  color: var(--color-brand-primary, #1a1035);
  line-height: 1.2;
}

@media (min-width: 768px) {.breadcrumb-wrapper .page-heading h1{
    font-size: 2.75rem;
  }
}

@media (min-width: 992px) {.breadcrumb-wrapper .page-heading h1{
    font-size: 3.5rem;
  }
}

/* ============================================================================
   Sidebar widgets (Hamster template — preserved markup compatibility)
   Used in: services pages, blog posts, case studies, glossary, etc.
   ============================================================================ */.main-sidebar{
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}.main-sidebar.sticky-style{
  position: sticky;
  top: 100px;
}.single-sidebar-widget{
  background: #fff;
  border: 1px solid var(--color-brand-border, #e8e4f8);
  border-radius: 12px;
  padding: 1.25rem 1.5rem;
}.single-sidebar-widget .wid-title{
  margin-bottom: 1rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--color-brand-border, #e8e4f8);
}.single-sidebar-widget .wid-title h4{
  margin: 0;
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--color-brand-primary, #1a1035);
}.news-widget-categories ul{
  list-style: none;
  margin: 0;
  padding: 0;
}.news-widget-categories ul li{
  margin: 0;
  padding: 0;
}.news-widget-categories ul li + li{
  margin-top: 0.25rem;
}.news-widget-categories ul li a{
  display: block;
  padding: 0.625rem 0.875rem;
  border-radius: 8px;
  color: var(--color-brand-text, #1a1035);
  text-decoration: none;
  font-size: 0.9375rem;
  transition: all 0.2s ease;
}.news-widget-categories ul li a:hover{
  background: var(--color-brand-bg-soft, #f9f8ff);
  color: var(--color-brand-accent, #6A47ED);
}.news-widget-categories ul li.active a, .news-widget-categories ul li a strong{
  background: var(--color-brand-accent, #6A47ED);
  color: #fff;
  font-weight: 600;
}.news-widget-categories ul li.active a:hover{
  background: var(--color-brand-accent, #6A47ED);
  color: #fff;
  opacity: 0.9;
}

/* When <strong> is inside <a> on .active, don't double up backgrounds */.news-widget-categories ul li.active a strong{
  background: transparent;
  color: inherit;
  font-weight: 600;
}

/* ============================================================================
   Responsive gap improvement: col-lg-8 + col-lg-4 (typical content + sidebar)
   At viewports below 1200px, the visual gap from .g-5 padding alone feels
   tight. Add extra horizontal breathing room so prose doesn't feel pressed
   against the sidebar card.
   ============================================================================ */

@media (min-width: 992px) and (max-width: 1199.98px) {.row.g-5 > .col-lg-8{
    padding-right: 2rem;
  }.row.g-5 > .col-lg-4{
    padding-left: 2rem;
  }.row.g-4 > .col-lg-8{
    padding-right: 1.75rem;
  }.row.g-4 > .col-lg-4{
    padding-left: 1.75rem;
  }
}

@media (min-width: 1200px) {.row.g-5 > .col-lg-8{
    padding-right: 2.5rem;
  }.row.g-5 > .col-lg-4{
    padding-left: 2.5rem;
  }
}

/* Mobile/tablet: add vertical gap when columns stack */
@media (max-width: 991.98px) {.row.g-5 > .col-lg-8 + .col-lg-4, .row.g-5 > .col-lg-4{
    margin-top: 2rem;
  }
}

/* ============================================================================
   Theme buttons (.main-button > a > .theme-btn)
   Used in: mailwizz-managed-hosting.html, powermta-managed-hosting.html and
   other service pages. Original Hamster template wraps a button in
   .main-button with inner .theme-btn span for gradient styling.
   ============================================================================ */.main-button{
  display: inline-block;
}.main-button a{
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}.theme-btn{
  display: inline-block;
  background: linear-gradient(135deg, var(--color-brand-accent, #6A47ED) 0%, #8b5cf6 100%);
  color: #fff;
  padding: 0.875rem 1.75rem;
  border-radius: 8px;
  font-size: 0.875rem;
  font-weight: 700;
  text-decoration: none;
  transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.2s ease;
  border: none;
  cursor: pointer;
  line-height: 1;
}.main-button a:hover .theme-btn, .theme-btn:hover{
  transform: translateY(-1px);
  box-shadow: 0 8px 24px rgba(106, 71, 237, 0.25);
  opacity: 0.95;
}.arrow-btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--color-brand-accent, #6A47ED) 0%, #8b5cf6 100%);
  color: #fff;
  border-radius: 50%;
  margin-left: 0.5rem;
  transition: transform 0.2s ease;
}.main-button a:hover .arrow-btn{
  transform: translate(2px, -2px);
}.arrow-btn i{
  font-size: 12px;
  color: #fff;
}

/* ============================================================================
   Sidebar CTA card (.sidebar-cta)
   Used in: service hub pages (mailwizz, powermta managed hosting)
   ============================================================================ */.sidebar-cta{
  background: linear-gradient(135deg, #1a1035 0%, #2d1b6e 100%);
  color: #fff;
  border-radius: 12px;
  padding: 1.75rem 1.5rem;
  margin-bottom: 1rem;
}.sidebar-cta h4{
  color: #fff;
  font-size: 1rem;
  font-weight: 800;
  margin: 0 0 0.625rem;
}.sidebar-cta p{
  color: rgba(255, 255, 255, 0.78);
  font-size: 0.8125rem;
  line-height: 1.65;
  margin: 0 0 1rem;
}.sidebar-cta .main-button .theme-btn{
  background: var(--color-brand-accent, #6A47ED);
  width: 100%;
  text-align: center;
  display: block;
}

/* — */.breadcrumb{
  list-style: none;
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.375rem;
  padding: 0;
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1;
}.breadcrumb .breadcrumb-item{
  display: inline-flex;
  align-items: center;
}.breadcrumb .breadcrumb-item + .breadcrumb-item::before{
  content: "/";
  margin-right: 0.5rem;
  opacity: 0.5;
  font-weight: 600;
}.breadcrumb .breadcrumb-item a{
  color: inherit;
  text-decoration: none;
  opacity: 0.7;
  transition: opacity 0.2s ease;
}.breadcrumb .breadcrumb-item a:hover{
  opacity: 1;
}.breadcrumb .breadcrumb-item.active{
  font-weight: 600;
  opacity: 1;
}

/* ============================================================================
   Section title eyebrow pills (Hamster template)
   Used in: compare/, services hubs, hero sections (e.g. "INFRASTRUCTURE COMPARISON · 2026")
   ============================================================================ */.sub-title{
  padding: 6px 20px;
  border-radius: 100px;
  display: inline-block;
  background: rgba(106, 71, 237, 0.08);
  margin-bottom: 1rem;
  line-height: 1;
}.sub-title.bg-color-2{
  background: rgba(56, 75, 255, 0.1);
}.sub-title.bg-color-3{
  background: rgba(246, 243, 254, 0.1);
}.sub-title span{
  background: linear-gradient(90deg, #240CF2 0%, #00A9B5 100%);
  display: inline-block;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  /* Fallback for browsers that don't support background-clip:text */
  color: #240CF2;
}.sub-title.bg-color-3 span{
  color: #fff;
  -webkit-text-fill-color: initial;
  background: none;
}

/* d-inline-block utility (used alongside .sub-title) */.d-inline-block{
  display: inline-block !important;
}

/* ============================================================================
   grid offset utilities (responsive horizontal centering of columns)
   Used in: partners.html (.col-lg-8 .offset-lg-2 to center the apply form),
   and similar patterns where a column is offset within its row.
   In grid, offset-{bp}-{n} = margin-left: (n/12 * 100%).
   ============================================================================ */

/* Default (xs) — applies before any breakpoint */

@media (min-width: 992px) {.offset-lg-1{ margin-left: 8.333333%; }.offset-lg-2{ margin-left: 16.666667%; }
}

/* ============================================================================
   Form spacing inside apply-form / contact-form
   Used in: partners.html, contact.html
   When forms appear after the comparison/tier cards, ensure adequate top
   margin so the form heading isn't glued to the cards above.
   ============================================================================ */.apply-form{
  background: #fff;
  border: 1px solid var(--color-brand-border, #e8e4f8);
  border-radius: 14px;
  padding: 2.5rem 2rem;
  margin-top: 2rem;
}

@media (min-width: 768px) {.apply-form{
    padding: 3rem 2.5rem;
    margin-top: 3rem;
  }
}

/* — */

@media (min-width: 992px) {.order-lg-1{ order: 1; }.order-lg-2{ order: 2; }
}

/* ============================================================================
   Page sidebars with sticky TOC (.about-sidebar, .hiw-sidebar)
   Used in: about.html, how-it-works.html — table of contents with sticky scroll
   ============================================================================ */.about-sidebar, .hiw-sidebar{
  position: sticky;
  top: 100px;
  align-self: start;
}.about-sidebar .snav, .hiw-sidebar .snav{
  background: #fff;
  border: 1px solid var(--color-brand-border, #e8e4f8);
  border-radius: 12px;
  padding: 1.25rem 1.5rem;
}.about-sidebar .snav h4, .hiw-sidebar .snav h4{
  font-size: 11px;
  font-weight: 800;
  color: var(--color-brand-text-muted, #888);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin: 0 0 0.875rem;
  padding-bottom: 0.625rem;
  border-bottom: 1px solid var(--color-brand-border, #e8e4f8);
}.about-sidebar .snav ul, .hiw-sidebar .snav ul{
  list-style: none;
  margin: 0;
  padding: 0;
}.about-sidebar .snav ul li, .hiw-sidebar .snav ul li{
  margin: 0;
  padding: 0;
}.about-sidebar .snav ul li a, .hiw-sidebar .snav ul li a{
  display: block;
  padding: 0.4375rem 0;
  font-size: 0.875rem;
  color: var(--color-brand-text, #1a1035);
  text-decoration: none;
  transition: color 0.2s ease;
}.about-sidebar .snav ul li a:hover, .hiw-sidebar .snav ul li a:hover{
  color: var(--color-brand-accent, #6A47ED);
}

/* — */.accordion{
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}.accordion-item{
  background: #fff;
  border: 1px solid var(--color-brand-border, #e8e4f8);
  border-radius: 12px;
  overflow: hidden;
  transition: border-color 0.2s ease;
}.accordion-item:has(.accordion-collapse.show){
  border-color: var(--color-brand-accent, #6A47ED);
}.accordion-header{
  margin: 0;
  padding: 0;
}.accordion-button{
  width: 100%;
  text-align: left;
  background: none;
  border: none;
  padding: 1.125rem 1.375rem;
  font-size: 0.9375rem;
  font-weight: 700;
  color: var(--color-brand-text, #1a1035);
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  line-height: 1.4;
  transition: color 0.2s ease;
}.accordion-button:hover{
  color: var(--color-brand-accent, #6A47ED);
}

/* — */.accordion-button::after{
  content: "";
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%236A47ED' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='M4 6l4 4 4-4'/></svg>");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  transition: transform 0.2s ease;
}.accordion-button:not(.collapsed)::after{
  transform: rotate(-180deg);
}.accordion-collapse{
  display: none;
}.accordion-collapse.show{
  display: block;
}

/* — */.accordion-collapse.collapse{
  visibility: visible;
}.accordion-collapse.collapse:not(.show){
  display: none;
}.accordion-body{
  padding: 0 1.375rem 1.25rem;
  font-size: 0.9375rem;
  line-height: 1.75;
  color: var(--color-brand-text-muted, #555);
}.accordion-body p{
  margin-bottom: 0.875rem;
}.accordion-body p:last-child{
  margin-bottom: 0;
}.accordion-body code{
  background: var(--color-brand-bg-soft, #f9f8ff);
  padding: 0.125rem 0.375rem;
  border-radius: 4px;
  font-size: 0.875em;
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  color: var(--color-brand-accent, #6A47ED);
}

/* — */

main {
  padding-bottom: 0;
}

/* If the last child of main is a section with explicit dark background OR
   has `bg-[var(--color-brand-bg-dark)]` class, the footer flows directly.
   Otherwise we add bottom spacing on main so the last paragraph isn't glued
   to the footer's top edge. */
main > section:last-child:not([style*="background:#1a1035"]):not([style*="background-color:#1a1035"]):not([class*="bg-[var(--color-brand-bg-dark)]"]) ~ * {
  /* This selector catches "last section is light" — but :last-child + sibling
     combinator doesn't work as intended. Use simpler approach below. */
}

/* Simpler: footer always has decent top padding. The visual gap was caused
   by mt-20 (margin between elements). Padding stays internal so dark sections
   can flow into dark footer without a white line. */
footer {
  padding-top: 0;
}

/* ============================================================================
   Edge-case: divs floating outside container (orphan banners)
   Some original pages (e.g. acelle-mail-hosted.html) place callout banners
   after </section> without wrapping them in .container. Without constraint
   they stretch edge-to-edge. We constrain top-level <main> direct-child <div>s
   that have inline margin styling to the same horizontal bounds as .container
   (max-width 1320px, padding-inline 1rem each side).
   Using width:calc(100% - 2rem) forces correct margin auto centering.
   ============================================================================ */

main > div[style*="margin:32px"],
main > div[style*="margin: 32px"],
main > div[style*="margin:24px"],
main > div[style*="margin: 24px"] {
  width: calc(100% - 2rem) !important;
  max-width: calc(1320px - 2rem) !important;
  margin-left: auto !important;
  margin-right: auto !important;
  margin-top: 2rem !important;
  margin-bottom: 2rem !important;
  box-sizing: border-box;
}
