/* ==========================================================================
   D Planet — 12-column flex grid
   Breakpoints and column semantics match Bootstrap 4, which the original
   theme's layouts are built against.
   ========================================================================== */

.container-fluid {
  position: relative;
  width: 100%;
  max-width: var(--container);
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--gutter);
  padding-right: var(--gutter);
}
.container-wide { max-width: none; }

.row {
  display: flex;
  flex-wrap: wrap;
  margin-left: calc(var(--gutter) * -1);
  margin-right: calc(var(--gutter) * -1);
}
.row.no-gutters { margin-left: 0; margin-right: 0; }
.row.no-gutters > [class*="col-"] { padding-left: 0; padding-right: 0; }

[class*="col-"] {
  position: relative;
  width: 100%;
  min-height: 1px;
  padding-left: var(--gutter);
  padding-right: var(--gutter);
}

.col      { flex: 1 0 0%; max-width: 100%; }
.col-auto { flex: 0 0 auto; width: auto; max-width: none; }


.col-12, .col-auto { }
.col-1 { flex: 0 0 8.333333%; max-width: 8.333333%; }
.col-2 { flex: 0 0 16.666667%; max-width: 16.666667%; }
.col-3 { flex: 0 0 25.0%; max-width: 25.0%; }
.col-4 { flex: 0 0 33.333333%; max-width: 33.333333%; }
.col-5 { flex: 0 0 41.666667%; max-width: 41.666667%; }
.col-6 { flex: 0 0 50.0%; max-width: 50.0%; }
.col-7 { flex: 0 0 58.333333%; max-width: 58.333333%; }
.col-8 { flex: 0 0 66.666667%; max-width: 66.666667%; }
.col-9 { flex: 0 0 75.0%; max-width: 75.0%; }
.col-10 { flex: 0 0 83.333333%; max-width: 83.333333%; }
.col-11 { flex: 0 0 91.666667%; max-width: 91.666667%; }
.col-12 { flex: 0 0 100.0%; max-width: 100.0%; }
.offset-0 { margin-left: 0.0%; }
.offset-1 { margin-left: 8.333333%; }
.offset-2 { margin-left: 16.666667%; }
.offset-3 { margin-left: 25.0%; }
.offset-4 { margin-left: 33.333333%; }
.offset-5 { margin-left: 41.666667%; }
.offset-6 { margin-left: 50.0%; }
.offset-7 { margin-left: 58.333333%; }
.offset-8 { margin-left: 66.666667%; }
.offset-9 { margin-left: 75.0%; }
.offset-10 { margin-left: 83.333333%; }
.offset-11 { margin-left: 91.666667%; }

@media (min-width: 576px) {
  .col-sm-1 { flex: 0 0 8.333333%; max-width: 8.333333%; }
  .col-sm-2 { flex: 0 0 16.666667%; max-width: 16.666667%; }
  .col-sm-3 { flex: 0 0 25.0%; max-width: 25.0%; }
  .col-sm-4 { flex: 0 0 33.333333%; max-width: 33.333333%; }
  .col-sm-5 { flex: 0 0 41.666667%; max-width: 41.666667%; }
  .col-sm-6 { flex: 0 0 50.0%; max-width: 50.0%; }
  .col-sm-7 { flex: 0 0 58.333333%; max-width: 58.333333%; }
  .col-sm-8 { flex: 0 0 66.666667%; max-width: 66.666667%; }
  .col-sm-9 { flex: 0 0 75.0%; max-width: 75.0%; }
  .col-sm-10 { flex: 0 0 83.333333%; max-width: 83.333333%; }
  .col-sm-11 { flex: 0 0 91.666667%; max-width: 91.666667%; }
  .col-sm-12 { flex: 0 0 100.0%; max-width: 100.0%; }
  .offset-sm-0 { margin-left: 0.0%; }
  .offset-sm-1 { margin-left: 8.333333%; }
  .offset-sm-2 { margin-left: 16.666667%; }
  .offset-sm-3 { margin-left: 25.0%; }
  .offset-sm-4 { margin-left: 33.333333%; }
  .offset-sm-5 { margin-left: 41.666667%; }
  .offset-sm-6 { margin-left: 50.0%; }
  .offset-sm-7 { margin-left: 58.333333%; }
  .offset-sm-8 { margin-left: 66.666667%; }
  .offset-sm-9 { margin-left: 75.0%; }
  .offset-sm-10 { margin-left: 83.333333%; }
  .offset-sm-11 { margin-left: 91.666667%; }
}

@media (min-width: 768px) {
  .col-md-1 { flex: 0 0 8.333333%; max-width: 8.333333%; }
  .col-md-2 { flex: 0 0 16.666667%; max-width: 16.666667%; }
  .col-md-3 { flex: 0 0 25.0%; max-width: 25.0%; }
  .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.0%; max-width: 50.0%; }
  .col-md-7 { flex: 0 0 58.333333%; max-width: 58.333333%; }
  .col-md-8 { flex: 0 0 66.666667%; max-width: 66.666667%; }
  .col-md-9 { flex: 0 0 75.0%; max-width: 75.0%; }
  .col-md-10 { flex: 0 0 83.333333%; max-width: 83.333333%; }
  .col-md-11 { flex: 0 0 91.666667%; max-width: 91.666667%; }
  .col-md-12 { flex: 0 0 100.0%; max-width: 100.0%; }
  .offset-md-0 { margin-left: 0.0%; }
  .offset-md-1 { margin-left: 8.333333%; }
  .offset-md-2 { margin-left: 16.666667%; }
  .offset-md-3 { margin-left: 25.0%; }
  .offset-md-4 { margin-left: 33.333333%; }
  .offset-md-5 { margin-left: 41.666667%; }
  .offset-md-6 { margin-left: 50.0%; }
  .offset-md-7 { margin-left: 58.333333%; }
  .offset-md-8 { margin-left: 66.666667%; }
  .offset-md-9 { margin-left: 75.0%; }
  .offset-md-10 { margin-left: 83.333333%; }
  .offset-md-11 { margin-left: 91.666667%; }
}

@media (min-width: 992px) {
  .col-lg-1 { flex: 0 0 8.333333%; max-width: 8.333333%; }
  .col-lg-2 { flex: 0 0 16.666667%; max-width: 16.666667%; }
  .col-lg-3 { flex: 0 0 25.0%; max-width: 25.0%; }
  .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.0%; max-width: 50.0%; }
  .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.0%; max-width: 75.0%; }
  .col-lg-10 { flex: 0 0 83.333333%; max-width: 83.333333%; }
  .col-lg-11 { flex: 0 0 91.666667%; max-width: 91.666667%; }
  .col-lg-12 { flex: 0 0 100.0%; max-width: 100.0%; }
  .offset-lg-0 { margin-left: 0.0%; }
  .offset-lg-1 { margin-left: 8.333333%; }
  .offset-lg-2 { margin-left: 16.666667%; }
  .offset-lg-3 { margin-left: 25.0%; }
  .offset-lg-4 { margin-left: 33.333333%; }
  .offset-lg-5 { margin-left: 41.666667%; }
  .offset-lg-6 { margin-left: 50.0%; }
  .offset-lg-7 { margin-left: 58.333333%; }
  .offset-lg-8 { margin-left: 66.666667%; }
  .offset-lg-9 { margin-left: 75.0%; }
  .offset-lg-10 { margin-left: 83.333333%; }
  .offset-lg-11 { margin-left: 91.666667%; }
}

@media (min-width: 1200px) {
  .col-xl-1 { flex: 0 0 8.333333%; max-width: 8.333333%; }
  .col-xl-2 { flex: 0 0 16.666667%; max-width: 16.666667%; }
  .col-xl-3 { flex: 0 0 25.0%; max-width: 25.0%; }
  .col-xl-4 { flex: 0 0 33.333333%; max-width: 33.333333%; }
  .col-xl-5 { flex: 0 0 41.666667%; max-width: 41.666667%; }
  .col-xl-6 { flex: 0 0 50.0%; max-width: 50.0%; }
  .col-xl-7 { flex: 0 0 58.333333%; max-width: 58.333333%; }
  .col-xl-8 { flex: 0 0 66.666667%; max-width: 66.666667%; }
  .col-xl-9 { flex: 0 0 75.0%; max-width: 75.0%; }
  .col-xl-10 { flex: 0 0 83.333333%; max-width: 83.333333%; }
  .col-xl-11 { flex: 0 0 91.666667%; max-width: 91.666667%; }
  .col-xl-12 { flex: 0 0 100.0%; max-width: 100.0%; }
  .offset-xl-0 { margin-left: 0.0%; }
  .offset-xl-1 { margin-left: 8.333333%; }
  .offset-xl-2 { margin-left: 16.666667%; }
  .offset-xl-3 { margin-left: 25.0%; }
  .offset-xl-4 { margin-left: 33.333333%; }
  .offset-xl-5 { margin-left: 41.666667%; }
  .offset-xl-6 { margin-left: 50.0%; }
  .offset-xl-7 { margin-left: 58.333333%; }
  .offset-xl-8 { margin-left: 66.666667%; }
  .offset-xl-9 { margin-left: 75.0%; }
  .offset-xl-10 { margin-left: 83.333333%; }
  .offset-xl-11 { margin-left: 91.666667%; }
}


/* --- Row behaviour modifiers (equivalents of the builder's row flags) ----- */
.row--flex          { display: flex; flex-wrap: wrap; }
.row--equal-height  > [class*="col-"] { display: flex; flex-direction: column; }
.row--equal-height  > [class*="col-"] > .col-inner { flex: 1 1 auto; display: flex; flex-direction: column; }
.row--middle        { align-items: center; }
.row--bottom        { align-items: flex-end; }
.row--center        { justify-content: center; }

.col-inner { position: relative; width: 100%; }

/* --- Full-bleed section ---------------------------------------------------
   Breaks out of the centred container to span the viewport. `100vw` counts
   the scrollbar, which would push the section a few pixels off-centre and
   force a horizontal scroll, so the measured scrollbar width (set on <html>
   by main.js) is subtracted out. It falls back to plain 100vw without JS. */
.section-full {
  position: relative;
  width: calc(100vw - var(--scrollbar-width, 0px));
  left: 50%;
  margin-left: calc((100vw - var(--scrollbar-width, 0px)) / -2);
  margin-right: calc((100vw - var(--scrollbar-width, 0px)) / -2);
}

/* --- Background helpers -------------------------------------------------- */
.bg-cover        { background-size: cover; }
.bg-no-repeat    { background-repeat: no-repeat; }
.bg-repeat-x     { background-repeat: repeat-x; }
.bg-pos-center-bottom { background-position: center bottom; }
.bg-pos-center-top    { background-position: center top; }
.bg-pos-center        { background-position: center center; }

/* Sections that carry a photographic background stack their content over it on
   narrow screens, where there is no free column for the text to sit in. A
   dark veil keeps the copy readable without disturbing the wide layout. */
@media (max-width: 767.98px) {
  .bg-veil-sm { position: relative; }
  .bg-veil-sm::before {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(5, 6, 11, .8);
    pointer-events: none;
    z-index: 0;
  }
  .bg-veil-sm > * { position: relative; z-index: 1; }
}
.bg-band         { background-color: var(--bg-deep); }

/* --- Column hairlines (the price/terms grids' 1px separators) ------------- */
.col-rule,
.col-rule-warm   { border-left: 1px solid var(--line); }

@media (max-width: 767.98px) {
  .col-rule,
  .col-rule-warm { border-left: 0; }
}

/* --- Visibility ---------------------------------------------------------- */
.hidden-xs-down { display: none; }
@media (min-width: 576px) { .hidden-xs-down { display: block; } }
@media (max-width: 991.98px) { .hidden-md-down { display: none !important; } }
