/* ==========================================================================
   BASE / FOUNDATION — Coded Contracting
   Design tokens, reset, typography, buttons, layout, shared shapes.
   Load FIRST, before any section stylesheet.
   ========================================================================== */

/* Self-hosted Inter — no external font request, no CLS. */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/inter-latin-400-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/inter-latin-ext-400-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/inter-latin-500-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/inter-latin-ext-500-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../fonts/inter-latin-600-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../fonts/inter-latin-ext-600-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/inter-latin-700-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/inter-latin-ext-700-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* --------------------------------------------------------------------------
   1. TOKENS
   -------------------------------------------------------------------------- */

:root {
  /* ---- Color ---- */
  --c-primary: rgba(231, 79, 27, 1);
  --c-secondary: rgba(42, 47, 131, 1);
  --c-title: rgba(13, 13, 13, 1);
  --c-text: rgba(102, 102, 102, 1);
  --c-white: rgba(255, 255, 255, 1);

  --c-bg-light: rgba(250, 250, 250, 1);
  --c-btn-two-bg: rgba(240, 240, 250, 1);

  --c-topbar-bg: rgba(42, 47, 131, 1);
  --c-footer-bg: rgba(15, 17, 46, 1);
  --c-banner-overlay: rgba(25, 28, 79, 0.5);

  --c-overlay-bg: rgba(255, 255, 255, 0.2);
  --overlay-blur: blur(20px);

  /* On-dark text tints */
  --c-on-dark: rgba(255, 255, 255, 1);
  --c-on-dark-70: rgba(255, 255, 255, 0.7);
  --c-on-dark-60: rgba(255, 255, 255, 0.6);
  --c-on-dark-line: rgba(255, 255, 255, 0.12);
  --c-on-dark-soft: rgba(255, 255, 255, 0.06);

  /* ---- Typography ---- */
  --ff-base: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

  --fs-h1: 64px;
  --fs-h2: 48px;
  --fs-h3: 40px;
  --fs-h4: 32px;
  --fs-h5: 28px;
  --fs-h6: 24px;
  --fs-p-lg: 18px;
  --fs-p-sm: 16px;

  --lh-display: 1.15;   /* 115% — h1–h3 */
  --lh-heading: 1.2;    /* 120% — h4–h6 */
  --lh-body: 1.5;       /* 150% — paragraphs */

  --ls-heading: 0.02em; /* 2% */
  --ls-body: 0;

  /* ---- Spacing ---- */
  --gap-row: 24px;
  --gap-col: 24px;

  /* ---- Layout (Figma frame 1440) ---- */
  --container-max: 1360px;
  --container-pad: 40px;

  /* ---- Header ---- */
  --topbar-h: 38px;
  --header-h: 102px;

  /* ---- Buttons ---- */
  --btn-h: 40px;
  --btn-pad-x: 18px;
  --btn-fs: 15px;
  --btn-radius: 999px;

  /* ---- Radii ---- */
  --r-sm: 8px;
  --r-md: 12px;
  --r-lg: 16px;

  /* ---- Motion ---- */
  --t-fast: 0.2s ease;
  --t-base: 0.3s ease;

  /* ---- z-index scale ---- */
  --z-megamenu: 60;
  --z-header: 70;
  --z-mobile-menu: 80;
  --z-enquire: 90;
}

/* --------------------------------------------------------------------------
   2. RESET
   -------------------------------------------------------------------------- */

*, *::before, *::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}

body {
  margin: 0;
  font-family: var(--ff-base);
  font-size: var(--fs-p-sm);
  font-weight: 400;
  line-height: var(--lh-body);
  letter-spacing: var(--ls-body);
  color: var(--c-text);
  background-color: var(--c-white);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}

body.is-locked { overflow: hidden; }

img, svg, video { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button { background: none; border: 0; padding: 0; cursor: pointer; }
button, input, select, textarea { font: inherit; color: inherit; }
ul, ol { margin: 0; padding: 0; list-style: none; }

:focus-visible {
  outline: 2px solid var(--c-primary);
  outline-offset: 2px;
}

/* --------------------------------------------------------------------------
   3. TYPOGRAPHY
   -------------------------------------------------------------------------- */

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
  margin: 0;
  font-family: var(--ff-base);
  font-weight: 400;
  color: var(--c-title);
  letter-spacing: var(--ls-heading);
}

h1, .h1 { font-size: var(--fs-h1); line-height: var(--lh-display); }
h2, .h2 { font-size: var(--fs-h2); line-height: var(--lh-display); }
h3, .h3 { font-size: var(--fs-h3); line-height: var(--lh-display); }
h4, .h4 { font-size: var(--fs-h4); line-height: var(--lh-heading); }
h5, .h5 { font-size: var(--fs-h5); line-height: var(--lh-heading); }
h6, .h6 { font-size: var(--fs-h6); line-height: var(--lh-heading); }

p {
  margin: 0;
  font-size: var(--fs-p-sm);
  line-height: var(--lh-body);
  color: var(--c-text);
}
p + p { margin-top: var(--gap-row); }

.text-lg { font-size: var(--fs-p-lg); line-height: var(--lh-body); }
.text-sm { font-size: var(--fs-p-sm); line-height: var(--lh-body); }

.fw-500 { font-weight: 500; }
.fw-600 { font-weight: 600; }
.fw-700 { font-weight: 700; }

/* Eyebrow / section label — orange chevron + uppercase tracked text */
.eyebrow {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--c-title);
}
.eyebrow--on-dark { color: var(--c-white); }
.eyebrow__icon { flex: none; color: var(--c-primary); }

/* --------------------------------------------------------------------------
   4. LAYOUT
   -------------------------------------------------------------------------- */

.container {
  width: 100%;
  max-width: calc(var(--container-max) + (var(--container-pad) * 2));
  margin-inline: auto;
  padding-inline: var(--container-pad);
}

.section { padding-block: 100px; }
.section--light { background-color: var(--c-bg-light); }

/* --------------------------------------------------------------------------
   5. SHAPES
   The angled step used on the banner bottom and the footer top.
   Right-hand side is always the taller side.
   -------------------------------------------------------------------------- */

/* Cuts a step out of the BOTTOM-LEFT. Content below shows through. */
.shape-step-bottom {
  --step-h: 40px;    /* depth of the cut */
  --step-x: 64.6%;   /* where the diagonal starts (upper point) */
  --step-w: 36px;    /* horizontal run of the diagonal */
  clip-path: polygon(
    0 0,
    100% 0,
    100% 100%,
    calc(var(--step-x) + var(--step-w)) 100%,
    var(--step-x) calc(100% - var(--step-h)),
    0 calc(100% - var(--step-h))
  );
}

/* Stepped card — a contained block whose left half sits higher at the top
   and whose right half extends lower at the bottom. Measured on Galleries:
   32px offset, top transition near 48%, bottom near 52%. */
.shape-card-step {
  --step-h: 32px;
  --step-w: 32px;
  --step-top-x: 48%;
  --step-bot-x: 52%;
  clip-path: polygon(
    0 0,
    var(--step-top-x) 0,
    calc(var(--step-top-x) + var(--step-w)) var(--step-h),
    100% var(--step-h),
    100% 100%,
    var(--step-bot-x) 100%,
    calc(var(--step-bot-x) - var(--step-w)) calc(100% - var(--step-h)),
    0 calc(100% - var(--step-h))
  );
}

/* Chamfer — a 45 degree cut across one corner. Recurring image motif.
   Default 64px, measured from the homepage about images. */
.chamfer {
  --chamfer: 64px;
}
.chamfer--tl { clip-path: polygon(var(--chamfer) 0, 100% 0, 100% 100%, 0 100%, 0 var(--chamfer)); }
.chamfer--tr { clip-path: polygon(0 0, calc(100% - var(--chamfer)) 0, 100% var(--chamfer), 100% 100%, 0 100%); }
.chamfer--br { clip-path: polygon(0 0, 100% 0, 100% calc(100% - var(--chamfer)), calc(100% - var(--chamfer)) 100%, 0 100%); }
.chamfer--bl { clip-path: polygon(0 0, 100% 0, 100% 100%, var(--chamfer) 100%, 0 calc(100% - var(--chamfer))); }

/* Cuts a step out of the TOP-LEFT. */
.shape-step-top {
  --step-h: 32px;
  --step-x: 33.7%;
  --step-w: 34px;
  clip-path: polygon(
    0 var(--step-h),
    var(--step-x) var(--step-h),
    calc(var(--step-x) + var(--step-w)) 0,
    100% 0,
    100% 100%,
    0 100%
  );
}

/* --------------------------------------------------------------------------
   6. BUTTONS
   -------------------------------------------------------------------------- */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: var(--btn-h);
  padding-inline: var(--btn-pad-x);
  border: 1px solid transparent;
  border-radius: var(--btn-radius);
  font-size: var(--btn-fs);
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color var(--t-fast), color var(--t-fast), border-color var(--t-fast);
}

/* Button One — primary fill; inverts on hover */
.btn--one {
  background-color: var(--c-primary);
  border-color: var(--c-primary);
  color: var(--c-white);
}
.btn--one:hover,
.btn--one:focus-visible {
  background-color: var(--c-white);
  color: var(--c-primary);
}

/* Button Two — soft fill; inverts on hover */
.btn--two {
  background-color: var(--c-btn-two-bg);
  border-color: var(--c-btn-two-bg);
  color: var(--c-secondary);
}
.btn--two:hover,
.btn--two:focus-visible {
  background-color: var(--c-secondary);
  color: var(--c-btn-two-bg);
}

/* Overlay — glass button over dark imagery */
.btn--overlay {
  background-color: var(--c-overlay-bg);
  -webkit-backdrop-filter: var(--overlay-blur);
  backdrop-filter: var(--overlay-blur);
  color: var(--c-white);
}
.btn--overlay:hover,
.btn--overlay:focus-visible {
  background-color: var(--c-white);
  color: var(--c-title);
}

/* Trailing circular arrow (Enquire Now) */
.btn__arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background-color: rgba(255, 255, 255, 0.2);
  transition: background-color var(--t-fast);
}

/* --------------------------------------------------------------------------
   7. MOBILE — 991.98px and below
   -------------------------------------------------------------------------- */

@media (max-width: 991.98px) {
  :root {
    --fs-h1: 48px;
    --fs-h2: 36px;
    --fs-h3: 30px;
    --fs-h4: 28px;
    --fs-h5: 22px;
    --fs-h6: 18px;

    --gap-row: 16px;
    --gap-col: 24px;

    --container-pad: 24px;
    --header-h: 82px;
  }

  .section { padding-block: 64px; }

  .shape-step-bottom {
    --step-h: 20px;
    --step-x: 0%;
    --step-w: 38px;
  }

  .shape-step-top {
    --step-h: 14px;
    --step-x: 20%;
    --step-w: 26px;
  }

  .chamfer { --chamfer: 36px; }

  .shape-card-step { --step-h: 18px; --step-w: 20px; }
}

/* --------------------------------------------------------------------------
   8. QUALITY FLOOR
   -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

.visually-hidden {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}
