/* =====================================================================
   Salama Hosting — site.css
   Organized by topic (see the banner comments below) rather than by the
   original file-concatenation history. Within each section, rules are
   kept in their original relative order wherever more than one rule
   touches the same selector, so the cascade result is unchanged from
   before this reorganization — only the layout changed, not the CSS.
   ===================================================================== */

/* Brand font <link> tags live in frontend/header.php's <head> (a CSS
   @import here would block parallel downloading of the rest of this file). */
@import url(./fonts.css);
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+HK:wght@100..900&display=swap');

/* ---------- Design tokens ---------- */
:root {
  --sh-primary: #0c2f55;
  --sh-primary-mid: #0f5e9d;
  --sh-primary-light: #418fce;
  --sh-primary-dark: #081f39;
  --sh-accent: #FF6C2C;
  --sh-accent-dark: #e85a1f;

  --sh-red: #d64545;
  --sh-red-dark: #b93a3a;
  --sh-green: #1f9d55;
  --sh-green-dark: #187d43;
  --sh-bluenavy: #1c1370;
  --sh-bluenavy-dark: #3222c5;

  --sh-ink: #1e1d1c;
  --sh-muted: #6c757d;
  --sh-bg-soft: #f7f9fc;
  --sh-border: #e9ecf1;

  --sh-radius-sm: 8px;
  --sh-radius: 12px;
  --sh-radius-lg: 18px;

  --sh-shadow-sm: 0 2px 8px rgba(12, 47, 85, 0.06);
  --sh-shadow-md: 0 8px 24px rgba(12, 47, 85, 0.10);
  --sh-shadow-lg: 0 16px 40px rgba(12, 47, 85, 0.14);

  --sh-font-heading: "Noto Sans HK", "Segoe UI", sans-serif;
  --sh-font-body: "Noto Sans HK", "Segoe UI", sans-serif;

  /* Spacing scale */
  --sh-space-1: 8px;
  --sh-space-2: 12px;
  --sh-space-3: 16px;
  --sh-space-4: 24px;
  --sh-space-5: 32px;
  --sh-space-6: 48px;
  --sh-space-7: 64px;

  /* Type scale (desktop) */
  --sh-h1-size: 48px;
  --sh-h2-size: 36px;
  --sh-h3-size: 28px;
  --sh-h4-size: 22px;
  --sh-body-size: 16px;
  --sh-small-size: 14px;
}

/* =====================================================================
   Base / reset
   ===================================================================== */

body,
html {
  height: 100%;
}

body {
  background: #f5f5f5;
  font-family: var(--sh-font-body) !important;
  font-size: var(--sh-body-size) !important;
  line-height: 1.5;
}

form {
  padding: 0;
  margin: 0;
  display: inline;
}

img {
  vertical-align: inherit;
}

blockquote {
  border-left: 5px solid #eee;
  padding: 10px 20px;
}

iframe {
  border: 0 !important;
}

/*-------- Preloader --------*/
#preloader {
  position: fixed;
  z-index: 999999999 !important;
  background-color: #fff;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
}

#preloader [data-loader="dual-ring"] {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 50px;
  height: 50px;
  margin-left: -25px;
  margin-top: -25px;
  display: inline-block;
  content: " ";
  display: block;
  margin: 1px;
  border-radius: 50%;
  border: 5px solid var(--sh-primary-mid);
  border-color: var(--sh-primary-mid) transparent var(--sh-primary-mid) transparent;
  animation: dual-ring 1.2s linear infinite;
}

@keyframes dual-ring {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

#main-wrapper {
  background: #f1f5f6;
}

.section {
  position: relative;
  padding: 104px 0;
  padding: 6.5rem 0;
}

@media only screen and (max-width: 768px) {
  .section {
    padding: 3.5rem 0;
  }
}

@media only screen and (min-width: 1200px) {
  .container {
    max-width: 1170px !important;
  }
}

/* Back to Top */
#back-to-top {
  display: none;
  position: fixed;
  z-index: 1030;
  bottom: 8px;
  right: 10px;
  background-color: rgba(0, 0, 0, 0.2);
  text-align: center;
  color: #fff;
  font-size: 16px;
  width: 36px;
  height: 36px;
  line-height: 36px;
  border-radius: 0.25rem;
  -webkit-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
  -webkit-box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
  box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
}

#back-to-top:hover {
  background-color: var(--sh-primary-mid);
  -webkit-box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.25);
  box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.25);
  -webkit-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
}

@media (max-width: 575px) {
  #back-to-top {
    z-index: 1029;
  }
}

/* =====================================================================
   Typography
   ===================================================================== */

h1,
h3,
h4,
h5,
h6 {
  text-transform: capitalize;
}

/* Section-title style (used across ~40 remaining view templates as
   `<h2 class="headingTitle">`, being phased out page by page in favor of
   plain semantic headings). Defined on its own, with no other class
   riding along in the same rule, so it can't be silently re-widened by a
   future grouped selector the way an earlier version of this rule was. */
.headingTitle {
  font-size: 28px;
  font-weight: 700;
  line-height: 40px;
}

h1 {
  font-size: var(--sh-h1-size);
}

h2 {
  font-size: var(--sh-h2-size);
}

h3 {
  font-size: var(--sh-h3-size);
  font-weight: 600;
}

h4 {
  font-size: var(--sh-h4-size);
  font-weight: 600;
}

@media (max-width: 767px) {
  h1 {
    font-size: 32px;
  }

  h2 {
    font-size: 26px;
  }

  h3 {
    font-size: 22px;
  }

  h4 {
    font-size: 18px;
  }
}

small,
.small {
  font-size: var(--sh-small-size);
}

.lead {
  font-size: 1.3em;
  line-height: 1.8;
}

p,
li,
label,
td,
th,
.lead {
  font-family: var(--sh-font-body);
}

/* Text Size (only the sizes actually referenced in templates) */
.text-4 {
  font-size: 18px !important;
  font-size: 1.125rem !important;
}

.text-9 {
  font-size: 36px !important;
  font-size: 2.25rem !important;
}

.text-12 {
  font-size: 48px !important;
  font-size: 3rem !important;
}

a {
  color: var(--sh-primary-mid);
}

a:hover,
a:focus,
a:active {
  color: var(--sh-accent);
  text-decoration: none;
  transition: all 0.2s ease;
}

/* =====================================================================
   Buttons
   ===================================================================== */

.btn {
  padding: .8rem 2rem;
  font-weight: 500;
  -webkit-transition: all 0.5s ease;
  transition: all 0.5s ease;
}

.btn-sm {
  padding: 0.5rem 1rem;
}

.btn:not(.btn-link) {
  -webkit-box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
  box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
}

.btn:not(.btn-link):hover {
  -webkit-box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.3);
  box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.3);
  -webkit-transition: all 0.5s ease;
  transition: all 0.5s ease;
}

@media (max-width: 575px) {
  .btn:not(.btn-sm) {
    padding: .810rem 1rem;
  }
}

.btn {
  font-family: var(--sh-font-body);
  font-weight: 400;
  border-radius: var(--sh-radius-sm);
  letter-spacing: 0.01em;
  transition: transform 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
}

.btn:hover {
  transform: translateY(-1px);
}

.btn-primary {
  background-color: var(--sh-primary-mid);
  border-color: var(--sh-primary-mid);
}

.btn-primary:hover {
  background-color: var(--sh-primary);
  border-color: var(--sh-primary);
}

.btn-primary:not(:disabled):not(.disabled).active,
.btn-primary:not(:disabled):not(.disabled):active {
  background-color: var(--sh-primary, #0c2f55);
  border-color: var(--sh-primary, #0c2f55);
}

.btn-primary:not(:disabled):not(.disabled).active:hover,
.btn-primary:not(:disabled):not(.disabled):active:hover {
  background-color: var(--sh-primary, #0c2f55);
  border-color: var(--sh-primary, #0c2f55);
}

.btn-secondary {
  background-color: var(--sh-muted);
  border-color: var(--sh-muted);
}

.btn-outline-primary,
.btn-outline-primary:not(:disabled):not(.disabled).active,
.btn-outline-primary:not(:disabled):not(.disabled):active {
  color: var(--sh-primary-mid);
  border-color: var(--sh-primary-mid);
}

.btn-outline-primary:hover,
.btn-outline-primary:not(:disabled):not(.disabled).active:hover,
.btn-outline-primary:not(:disabled):not(.disabled):active:hover {
  background-color: var(--sh-primary-mid);
  border-color: var(--sh-primary-mid);
  color: #fff;
}

.btn-dark {
  background-color: var(--sh-primary);
  border-color: var(--sh-primary);
}

.btn-dark:hover {
  background-color: var(--sh-primary-dark);
  border-color: var(--sh-primary-dark);
}

.btn-danger {
  background-color: var(--sh-accent);
  border-color: var(--sh-accent);
}

.btn-danger:hover {
  background-color: var(--sh-accent-dark);
  border-color: var(--sh-accent-dark);
}

.btn.active.focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn:active:focus,
.btn:focus,
button:focus,
button:active {
  outline: none;
}

.btn:focus,
.btn.focus {
  box-shadow: 0 0 0 0.2rem rgba(15, 94, 157, 0.35);
}

.btn:disabled,
.btn.disabled {
  transform: none;
  box-shadow: none;
  opacity: 0.65;
}

/* ---------- Bootstrap utility color overrides ---------- */

.bg-primary,
.badge-primary {
  background-color: var(--sh-primary-mid) !important;
}

.text-primary,
.btn-light,
.btn-outline-light:hover,
.btn-link {
  color: var(--sh-primary-mid) !important;
}

.btn-link:hover {
  color: var(--sh-primary-mid) !important;
}

.text-secondary {
  color: var(--sh-muted) !important;
}

.text-muted {
  color: #8e9a9d !important;
}

.text-light {
  color: #dee3e4 !important;
}

a.bg-primary:focus,
a.bg-primary:hover,
button.bg-primary:focus,
button.bg-primary:hover {
  background-color: var(--sh-primary-mid) !important;
}

.border-primary {
  border-color: var(--sh-primary-mid) !important;
}

.border-secondary {
  border-color: var(--sh-muted) !important;
}

/* =====================================================================
   Forms
   ===================================================================== */

/* Single merged rule — this selector used to be declared three times
   across the file (an old "Bootstrap Specific" block, a header-inline
   block, and this Forms block). Merged into the one set of values that
   was actually winning the cascade, verified property by property
   (specificity/!important/source-order) so the rendered result is
   unchanged. */
.form-control {
  display: block;
  box-sizing: border-box;
  width: 100% !important;
  height: 2.8375rem !important;
  margin: 0 0 1rem !important;
  padding: 0.5rem !important;
  border: 1px solid var(--sh-border) !important;
  border-radius: var(--sh-radius-sm) !important;
  background-color: rgba(255, 255, 255, 1) !important;
  box-shadow: var(--sh-shadow-sm) !important;
  font-family: inherit;
  font-size: 1rem;
  font-weight: 400;
  color: #656565;
  float: none !important;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
}

.form-control:not(.form-control-sm) {
  padding: .810rem .96rem;
  height: inherit;
}

select.form-control:not([size]):not([multiple]):not(.form-control-sm) {
  height: auto;
  padding-top: .700rem;
  padding-bottom: .700rem;
}

.custom-select {
  font-size: 16px;
  color: #656565;
  border-style: solid !important;
  border-width: 0px !important;
  background-color: rgba(255, 255, 255, 1) !important;
  border-bottom-width: 2px !important;
  border-bottom-style: solid !important;
  border-bottom-color: rgba(225, 225, 225, 1) !important;
}

.custom-select:not(.custom-select-sm) {
  height: calc(3.05rem + 2px);
  padding-top: .700rem;
  padding-bottom: .700rem;
}

.custom-select:not(.custom-select-sm).border-0 {
  height: 3.00rem;
}

.custom-select:focus {
  border-color: var(--sh-primary-mid);
  box-shadow: 0 0 0 0.2rem rgba(15, 94, 157, 0.2);
}

.form-control:focus[readonly] {
  box-shadow: none;
}

.form-control::-webkit-input-placeholder {
  color: #b1b4b6;
}

.form-control:-moz-placeholder {
  /* FF 4-18 */
  color: #b1b4b6;
}

.form-control::-moz-placeholder {
  /* FF 19+ */
  color: #b1b4b6;
}

.form-control:-ms-input-placeholder,
.form-control::-ms-input-placeholder {
  /* IE 10+ */
  color: #b1b4b6;
}

.input:focus,
.form-control:focus {
  padding: 0.9rem 1rem;
  height: auto;
  font-size: 1rem;
  border-radius: 0.5rem !important;
  outline: none !important;
  transition: all 0.25s ease;
}

.form-control:focus {
  border-color: var(--sh-primary-mid);
  box-shadow: 0 0 0 0.2rem rgba(15, 94, 157, 0.2);
}

.dropdown-item.active,
.dropdown-item:active {
  background-color: var(--sh-primary-mid);
}

.custom-radio .custom-control-input:checked~.custom-control-label:before,
.custom-control-input:checked~.custom-control-label::before,
.custom-control-input:checked~.custom-control-label:before {
  background-color: var(--sh-primary-mid);
  border-color: var(--sh-primary-mid);
}

.list-group-item.active {
  background-color: var(--sh-primary-mid);
  border-color: var(--sh-primary-mid);
}

/* =====================================================================
   Icon font (Semantic's icon class names, mapped onto the Font Awesome 5
   Free glyphs already loaded locally). Deliberately does NOT set
   font-family/content on the bare `.icon` class, so it doesn't interfere
   with Devicon glyphs (`icon devicon-python-plain`), which style
   themselves via their own stylesheet.
   ===================================================================== */

.icon {
  display: inline-block;
  font-style: normal;
  line-height: 1;
  vertical-align: middle;
  text-align: center;
  width: 1.18em;
}

.icon.large {
  font-size: 1.5em;
}

/* Named glyphs actually used in application/views/**\/*.php, matched by
   compound class (order-independent) against Font Awesome 5 Free codepoints
   read directly from static/frontend/vendor/font-awesome/css/all.min.css.
   Trimmed to the exhaustive real list — every `class="icon ..."` combination
   in the codebase (checked application/-wide, including PHP-generated
   markup) is one of: icon cart, icon check circle, icon times circle,
   icon copy, icon money bill, icon paypal. "icon copy" and "icon paypal"
   have no glyph mapping here (pre-existing gap, not introduced by this
   cleanup) — left alone since fixing that is a different task. */
.icon.money.bill::before {
  font: 900 1em "Font Awesome 5 Free";
  content: "\f0d6";
}

.icon.check.circle::before {
  font: 900 1em "Font Awesome 5 Free";
  content: "\f058";
}

.icon.times::before {
  font: 900 1em "Font Awesome 5 Free";
  content: "\f00d";
}

.icon.shopping.cart::before,
.icon.cart::before {
  font: 900 1em "Font Awesome 5 Free";
  content: "\f07a";
}

/* =====================================================================
   Cards
   ===================================================================== */

.card {
  box-shadow: var(--sh-shadow-sm) !important;
  border: 1px solid var(--sh-border) !important;
  border-radius: var(--sh-radius) !important;
  transition: box-shadow 0.25s ease, transform 0.25s ease;
}

.card:hover {
  box-shadow: var(--sh-shadow-lg) !important;
  transform: translateY(-2px);
  z-index: 999;
}

.card-header {
  font-family: var(--sh-font-heading);
  background: #fff;
  border-bottom: 1px solid var(--sh-border);
}

.card-footer {
  border-top: 1px solid var(--sh-border);
}

/* Shared lift-on-hover treatment, moved out of page-level <style> blocks
   on template_ssl_certificates.php / template_web_development.php /
   template_downloads_page.php so it's defined once and reusable. */
.card-hover {
  transition: transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1), box-shadow 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.card-hover:hover {
  transform: translateY(-8px);
  box-shadow: var(--sh-shadow-lg) !important;
}

/* =====================================================================
   Badges
   ===================================================================== */

.badge {
  font-family: var(--sh-font-heading);
  font-weight: 600;
  border-radius: var(--sh-radius-sm);
}

@media (max-width: 400px) {

  h1 .badge,
  h2 .badge,
  h3 .badge,
  h4 .badge {
    white-space: normal;
  }
}

/* =====================================================================
   Header / navigation
   ===================================================================== */

header#header .nav-link {
  font-family: var(--sh-font-body);
  font-weight: 400;
  font-size: 0.9rem;
}

.dropdown-menu {
  -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.176);
  box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.176);
  border: 0px none;
  font-size: 14px;
  font-size: 0.875rem;
}

.dropdown-menu a {
  color: #3f3f46;
  text-transform: capitalize !important;
  padding-top: 10px !important;
  padding-bottom: 10px !important;
  font-size: 15px;
  line-height: 20px;
  font-weight: 400 !important;
}

ul.navbar-nav>li>a {
  color: #000000 !important;
  text-transform: capitalize !important;
  font-size: 15px;
  line-height: 20px;
  font-weight: 600 !important;
}

ul.navbar-nav>li>a:hover {
  color: #082A8F !important;
}

.navbar-toggler {
  padding: 10px !important;
  border-radius: 0;
  cursor: pointer
}

/* Square corners at every breakpoint, not just the desktop flyout below —
   .dropdown-menu is only ever used in this header in this app (nav
   dropdowns + the account dropdown authModel::restrict_access() renders),
   so this is safe unscoped. A site-wide `.dropdown-menu` border-radius
   !important rule used to win over the desktop-only rule below via
   !important; removed rather than fought. */
#header .dropdown-menu {
  border-radius: 0;
}

/* ---------- Header nav interactivity (desktop, >=992px) ----------
   Styles Bootstrap's own state (:hover, :focus-within, [aria-expanded],
   .show) rather than a parallel component system — the markup is still
   plain navbar/dropdown/nav-item/dropdown-menu/dropdown-item. Scoped to
   >=992px (Bootstrap's own .navbar-expand-lg breakpoint) so mobile keeps
   the untouched, click-only, native Bootstrap accordion dropdown — hover
   animation is a desktop nicety, not something to fight touch input for. */
@media (min-width: 992px) {

  /* .navbar-collapse centers by default (inherited from the container's
     align-items:center, sized for the taller logo); stretching it to the
     row's full height is what makes .dropdown-menu's top:100% land flush
     against the true bottom edge of the nav bar instead of partway up it. */
  #header .navbar-collapse {
    align-self: stretch;
  }

  #header .navbar-nav .nav-item {
    display: flex;
  }

  /* Top-level links dropped their leading icons (kept only in dropdown
     items, where there's room to spare) specifically to free up this
     padding — 8 top-level items is a lot to fit on one line, and cramming
     an icon into every one of them was the biggest single contributor to
     the "squeezed together" feel. */
  #header .navbar-nav .nav-link {
    display: flex;
    align-items: center;
    position: relative;
    padding: 0.65rem 1.1rem;
  }

  #header .navbar-nav .nav-item+.nav-item {
    margin-left: 0.15rem;
  }

  /* Bootstrap's default caret margin (.255em) on .dropdown-toggle — tightened
     now that the caret sits right after plain text instead of an icon. */
  #header .navbar-nav .dropdown-toggle::after {
    margin-left: 0.4em;
    vertical-align: 0.02em;
  }

  /* Animated underline, centered, grows on hover or while a dropdown is open. */
  #header .navbar-nav .nav-item>.nav-link::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: 6px;
    height: 2px;
    width: 0;
    background: var(--sh-accent);
    border-radius: 2px;
    transform: translateX(-50%);
    transition: width 0.22s ease;
  }

  #header .navbar-nav .nav-item:hover>.nav-link::after,
  #header .navbar-nav .nav-item.show>.nav-link::after {
    width: 22px;
  }

  /* Dropdowns: open on hover (with :focus-within for keyboard tabbing) —
     the .show class Bootstrap's JS still toggles on click keeps working
     alongside it, useful for touch-capable laptops. Square corners, flush
     against the nav bar, no gap to cross on the way down to it. */
  #header .navbar-nav .dropdown-menu {
    display: block;
    top: 100%;
    margin-top: 0;
    border-radius: 0;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity 0.18s ease, transform 0.18s ease, visibility 0s linear 0.18s;
  }

  #header .navbar-nav .dropdown:hover>.dropdown-menu,
  #header .navbar-nav .dropdown:focus-within>.dropdown-menu,
  #header .navbar-nav .dropdown-menu.show {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    transition: opacity 0.18s ease, transform 0.18s ease, visibility 0s;
  }

  #header .dropdown-item {
    border-radius: 0;
    position: relative;
    transition: background-color 0.16s ease, color 0.16s ease, padding-left 0.16s ease;
  }

  #header .dropdown-item i {
    transition: color 0.16s ease, transform 0.16s ease;
  }

  #header .dropdown-item::before {
    content: "";
    position: absolute;
    left: 0;
    top: 6px;
    bottom: 6px;
    width: 3px;
    background: var(--sh-accent);
    transform: scaleY(0);
    transition: transform 0.16s ease;
  }

  #header .dropdown-item:hover {
    padding-left: 1.75rem;
  }

  #header .dropdown-item:hover::before {
    transform: scaleY(1);
  }

  #header .dropdown-item:hover i {
    color: var(--sh-accent) !important;
    transform: scale(1.1);
  }
}

/* "New" badge — a gentle attention pulse, not a distraction. Respects
   prefers-reduced-motion via the global rule already in this file. */
#header .navbar-nav .badge {
  animation: sh-badge-pulse 2.6s ease-in-out infinite;
}

@keyframes sh-badge-pulse {

  0%,
  100% {
    box-shadow: 0 0 0 0 rgba(255, 108, 44, 0.45);
  }

  50% {
    box-shadow: 0 0 0 5px rgba(255, 108, 44, 0);
  }
}

/* Animated hamburger -> X. Bootstrap's collapse plugin already toggles
   aria-expanded on this button as it opens/closes #header-nav, so the
   morph needs no JS of its own — just the extra markup (three spans) the
   stock single-icon .navbar-toggler-icon has no equivalent for. */
#header .navbar-toggler {
  border: none;
  padding: 0;
  width: 34px;
  height: 34px;
}

#header .toggler-box {
  position: relative;
  display: block;
  width: 22px;
  height: 16px;
  margin: 0 auto;
}

#header .toggler-bar {
  position: absolute;
  left: 0;
  width: 100%;
  height: 2px;
  border-radius: 2px;
  background: var(--sh-ink);
  transition: transform 0.25s ease, opacity 0.2s ease, top 0.25s ease;
}

#header .toggler-bar:nth-child(1) {
  top: 0;
}

#header .toggler-bar:nth-child(2) {
  top: 7px;
}

#header .toggler-bar:nth-child(3) {
  top: 14px;
}

#header .navbar-toggler[aria-expanded="true"] .toggler-bar:nth-child(1) {
  top: 7px;
  transform: rotate(45deg);
}

#header .navbar-toggler[aria-expanded="true"] .toggler-bar:nth-child(2) {
  opacity: 0;
}

#header .navbar-toggler[aria-expanded="true"] .toggler-bar:nth-child(3) {
  top: 7px;
  transform: rotate(-45deg);
}

/* Sticky header on scroll (listener lives in footer.php) */
.sticky-header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 1000;
  box-shadow: 0 8px 24px rgba(12, 47, 85, 0.14);
}

/* Compact the logo/nav row while stuck. */
#header .navbar {
  transition: padding 0.25s ease;
}

#header .navbar-brand img {
  transition: height 0.25s ease;
}

#header.sticky-header .navbar {
  padding-top: 0.6rem !important;
  padding-bottom: 0.6rem !important;
}

#header.sticky-header .navbar-brand img {
  height: 34px;
}

/* Topbar: icon nudge on hover, CTA pills lift and settle on press. */
#title_message .nav-link i {
  transition: transform 0.2s ease;
}

#title_message .nav-link:hover i {
  transform: translateY(-1px) scale(1.12);
}

#title_message .btn {
  transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}

#title_message .btn:hover {
  transform: translateY(-2px);
}

#title_message a.btn:first-child:hover {
  box-shadow: 0 8px 18px rgba(255, 108, 44, 0.35);
}

#title_message .btn:active {
  transform: translateY(0) scale(0.97);
}

@media screen and (max-width: 600px) {
  #title_message {
    visibility: hidden;
    clear: both;
    float: left;
    margin: 10px auto 5px 20px;
    width: 28%;
    color: #60656F;
    display: none;
  }
}

/* =====================================================================
   Footer
   ===================================================================== */

.footer li a {
  font-weight: 400 !important;
  line-height: 2.3 !important;
}

.footer a,
.footer p {
  color: #ffffff !important;
}

/* One continuous surface across the sub-footer ("We're Here To Help") and
   the main link-grid footer, which used to be two different flat navy
   tones (#191935 / #081125) stacked directly on top of each other with no
   transition. Anchored at --sh-primary-dark so it also ties back to the
   homepage hero, which starts from the same token. */
.footer-shell {
  background: linear-gradient(180deg, var(--sh-primary-dark) 0%, #0a1830 38%, #081125 100%);
}

.footer-shell .footer {
  background: transparent !important;
}

.subfooter-band {
  padding: 64px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.footer {
  background-color: #081125 !important;
  padding: 56px 0 0;
}

.footer-payments {
  margin-top: 46px;
}

.footer-quicklinks {
  margin: 30px 0;
}

.trust-bar {
  padding: 18px 0;
}

.footer-bottom {
  padding: 22px 0;
}

.footer h2,
.footer h3,
.footer h4 {
  font-family: var(--sh-font-heading);
  color: #fff !important;
}

.footer a:hover {
  color: var(--sh-accent) !important;
  text-decoration: none;
}

/* Sub-footer contact blocks: an icon-badge card, matching the language
   .trust-card/.trio-card already use elsewhere, instead of a bare fa-2x
   icon over a plain bordered box. */
.contact-card {
  background: rgba(255, 255, 255, 0.045);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: var(--sh-radius);
  padding: 22px;
  height: 100%;
  transition: transform 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
}

.contact-card:hover {
  transform: translateY(-3px);
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.22);
}

.contact-card .badge-ic {
  width: 42px;
  height: 42px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  color: #fff;
  margin-bottom: var(--sh-space-2);
}

/* Sitemap-style footer heading: compact, uppercase, slightly separated from
   the small links beneath it so a dense column still reads as organized. */
.footer-col-title {
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #fff !important;
  margin-bottom: var(--sh-space-2);
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}

/* Small-font link list used to fit the site's full sitemap (hosting plans,
   domain tools, company/service pages, legal pages) into the footer without
   it becoming excessively tall. */
.footer-links {
  margin-bottom: 0;
}

.footer-links li {
  margin-bottom: 2px;
}

.footer-links a {
  font-size: 12.5px;
  line-height: 2 !important;
  color: rgba(255, 255, 255, 0.75) !important;
  transition: color 0.15s ease, padding-left 0.15s ease;
}

.footer-links a:hover {
  padding-left: 3px;
}

.footer-payments-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(255, 255, 255, 0.45);
}

/* Quick-access row (Client Area / Create Account / Contact / Report Abuse),
   rendered as plain links instead of solid buttons to stay visually quiet. */
.footer-quicklinks {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 10px;
}

.footer-quicklinks a {
  color: rgba(255, 255, 255, 0.85) !important;
  font-size: 13.5px;
  font-weight: 600;
  transition: color 0.15s ease;
}

.footer-quicklinks a:hover {
  color: var(--sh-accent) !important;
  text-decoration: none;
}

.footer-quicklinks-divider {
  color: rgba(255, 255, 255, 0.25);
  font-size: 10px;
}

/* Payment methods: a text pill (matching the approved footer concept)
   instead of the old SALAMAPAY.png badge image. */
.footer-payments-pill {
  display: inline-flex;
  gap: 14px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 50px;
  padding: 10px 22px;
  font-size: 13px;
  color: rgba(255, 255, 255, 0.75);
}

.footer-payments-dot {
  color: rgba(255, 255, 255, 0.35);
}

/* =====================================================================
   FAQ / accordion
   ===================================================================== */

/* Accordion & Toggle (generic Bootstrap accordion used outside the FAQ
   page too, e.g. plan-page "Explore Other Platforms" style sections) */
.accordion .card {
  border: none;
  margin-bottom: 8px;
  margin-bottom: 0.5rem;
  background-color: transparent;
}

.accordion .card-header {
  padding: 0;
  border: none;
  background: none;
}

.accordion .card-header a {
  font-size: 16px;
  font-weight: normal;
  padding: 1rem 1.25rem 1rem 2.25rem;
  display: block;
  border-radius: 4px;
  position: relative;
}

.accordion:not(.accordion-alternate) .card-header a {
  background-color: var(--sh-primary-mid);
  color: #fff;
}

.accordion:not(.accordion-alternate) .card-header a.collapsed {
  background-color: #f1f2f4;
  color: #4c4d4d;
}

.accordion .card-header a:before {
  position: absolute;
  content: " ";
  left: 20px;
  top: calc(50% + 2px);
  width: 9px;
  height: 9px;
  border-color: #CCC;
  border-top: 2px solid;
  border-right: 2px solid;
  -webkit-transform: translate(-50%, -50%) rotate(-45deg);
  transform: translate(-50%, -50%) rotate(-45deg);
  -webkit-transition: all 0.2s ease;
  transition: all 0.2s ease;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

.accordion .card-header a.collapsed:before {
  top: calc(50% - 2px);
  -webkit-transform: translate(-50%, -50%) rotate(135deg);
  transform: translate(-50%, -50%) rotate(135deg);
}

.accordion .card-body {
  line-height: 26px;
  padding: 1rem 0 1rem 2.25rem;
}

/* Optional: Smooth collapse animation */
.collapsing {
  transition: height 0.35s ease;
}

/* FAQ Section (homepage-style #faqAccordion, reused on a few tool pages) */
#faqAccordion .card {
  border: none;
  border-radius: 12px;
  margin-bottom: 12px;
  overflow: hidden;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
  transition: all 0.3s ease;
}

#faqAccordion .card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);
}

#faqAccordion .card-header {
  background: #ffffff;
  border: none;
  padding: 0;
}

#faqAccordion .btn-link {
  width: 100%;
  text-align: left;
  padding: 18px 20px;
  font-weight: 600;
  font-size: 16px;
  color: var(--sh-primary, #0c2f55);
  text-decoration: none;
  position: relative;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

#faqAccordion .btn-link::after {
  content: "+";
  font-size: 20px;
  font-weight: bold;
  transition: transform 0.3s ease;
}

#faqAccordion .btn-link[aria-expanded="true"]::after {
  content: "-";
  transform: rotate(180deg);
}

#faqAccordion .card-body {
  padding: 18px 20px;
  font-size: 15px;
  color: var(--sh-muted);
  line-height: 1.6;
  border-top: 1px solid #f1f1f1;
  background: #fafafa;
}

#faqAccordion .btn-link[aria-expanded="true"],
#faqAccordion .btn-link:hover {
  color: var(--sh-primary-mid);
}

/* Redesigned FAQ page: card-based accordion with a search bar and a
   left-accent + rotating chevron to mark the open question. */
.faq-count {
  font-size: var(--sh-small-size);
}

.faq-card {
  border-radius: var(--sh-radius-lg) !important;
  overflow: hidden;
  transition: box-shadow 0.2s ease;
}

.faq-card:hover {
  box-shadow: var(--sh-shadow-md) !important;
}

.faq-btn {
  background: #fff;
  border: none;
  border-left: 3px solid transparent;
  padding: 1.1rem 1.5rem;
  font-family: var(--sh-font-body);
  font-weight: 600;
  font-size: 1.02rem;
  color: var(--sh-primary-dark);
  cursor: pointer;
  transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.faq-btn:hover,
.faq-btn:focus {
  background: var(--sh-bg-soft);
  color: var(--sh-primary-mid);
  text-decoration: none;
  outline: none;
}

.faq-btn[aria-expanded="true"] {
  color: var(--sh-primary-mid);
  background: rgba(12, 47, 85, 0.05);
  border-left-color: var(--sh-primary-mid);
}

.faq-question-text {
  padding-right: 1rem;
}

.faq-chevron {
  color: var(--sh-muted);
  font-size: 0.85rem;
  flex-shrink: 0;
  transition: transform 0.2s ease, color 0.2s ease;
}

.faq-btn[aria-expanded="true"] .faq-chevron {
  transform: rotate(180deg);
  color: var(--sh-primary-mid);
}

.faq-answer {
  padding: 0 1.5rem 1.25rem 1.5rem;
  line-height: 1.7;
}

.faq-empty-state {
  color: var(--sh-muted);
}

.faq-cta {
  background: #fff;
  border-radius: var(--sh-radius-lg);
  box-shadow: var(--sh-shadow-sm);
}

.faq-cta .faq-cta-icon {
  width: 64px;
  height: 64px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(12, 47, 85, 0.06);
  color: var(--sh-primary-mid);
  font-size: 1.5rem;
  margin: 0 auto var(--sh-space-3);
}

/* Category quick-jump chips above the grouped FAQ sections. */
.faq-category-nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
}

.faq-category-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--sh-bg-soft);
  border: 1px solid var(--sh-border);
  border-radius: 50px;
  padding: 6px 14px;
  font-size: var(--sh-small-size);
  font-weight: 600;
  color: var(--sh-primary-dark);
  transition: background-color 0.15s ease, border-color 0.15s ease;
}

.faq-category-chip:hover {
  background: rgba(12, 47, 85, 0.08);
  border-color: var(--sh-primary-mid);
  color: var(--sh-primary-mid);
  text-decoration: none;
}

.faq-category-count {
  background: var(--sh-primary-mid);
  color: #fff;
  border-radius: 50px;
  font-size: 11px;
  font-weight: 700;
  padding: 1px 7px;
}

/* Each category's heading + its col-lg-6 grid of question cards. */
.faq-category-section {
  scroll-margin-top: 90px;
}

.faq-category-title {
  font-family: var(--sh-font-heading);
  font-weight: 700;
  color: var(--sh-primary-dark);
  padding-bottom: var(--sh-space-2);
  border-bottom: 2px solid var(--sh-border);
}

/* =====================================================================
   Page-specific section backgrounds
   Named for what they are rather than the legacy .mask/.homeBanner/
   .footerTwo/.anotherMask names they replace.
   ===================================================================== */

.board {
  background-color: #ffffff !important;
}

/* Shared "dark navy hero" background used across tool pages and a few
   content pages (WHOIS/SSL-checker/etc., About Us, Business Emails,
   Installation Services). The homepage has its own dedicated .home-hero
   instead — see the Homepage section below. */
.bd {
  background: linear-gradient(45deg, #082A8F, #000000),
    url('../../../static/frontend/images/deno.jpg');
  background-size: cover !important;
  background-repeat: no-repeat;
  background-blend-mode: darken;
  background-position: center;
  background-attachment: fixed;
  display: flex;
  align-items: center;
  /* Vertical center */
  justify-content: center;
  /* Uncomment to center horizontally too */
  min-height: 20vh;
  /* Full viewport height */
}

.section-navy-panel {
  background: #061a40 !important;
  border-bottom: 3px solid;
  border-image: linear-gradient(to right, #4285F4 25%, #000 75%) 5;
}

.section-hero-pattern {
  background: url('../../../static/frontend/images/head.png') !important;
  background-blend-mode: multiply;
  background-repeat: no-repeat;
  background-size: cover !important;
}

.section-support-banner {
  background: url('https://salamahosting.com/static/frontend/images/tera.png') !important;
  background-blend-mode: multiply;
  background-repeat: no-repeat;
  background-size: cover;
}

.section-stats-gradient {
  background: linear-gradient(135deg, #003c6b 0%, #5ba7d7 100%);
  opacity: 0.9;
}

/* Domain pricing table (application/models/domainModel.php::getDomainPricings())
   builds this markup server-side, so the class name stays as-is rather than
   being renamed — this restores styling that was mistakenly deleted after an
   incomplete usage check missed the model-generated HTML. */
.domain-table {
  background-color: #fff;
}

.domain-table tr th {
  color: #003164 !important;
  font-weight: 700;
  text-align: left;
  padding: 1em 1em 0.5em !important;
  border: 0;
}

.domain-table tr td {
  padding: 1.6rem 1rem;
  font-weight: 400;
  background-color: #fff !important;
  border-bottom: 10px solid #fff;
}

.domain-table tr td:first-child {
  border-top-left-radius: 0.3rem;
  border-bottom-left-radius: 0.3rem;
}

.domain-table tr td:last-child {
  border-top-right-radius: 0.3rem;
  border-bottom-right-radius: 0.3rem;
}

/* Replace the ad-hoc navy/gold hero background with the consolidated brand
   gradient. The original rule uses !important, so this must match. Reused
   by the homepage's Trust panel and closing CTA (see the dot-texture
   addition in the Homepage section below). */
.hass {
  background-color: var(--sh-primary) !important;
  background-image: linear-gradient(135deg, var(--sh-primary) 0%, var(--sh-primary-mid) 100%) !important;
}

/* =====================================================================
   Hosting plan cards
   Shared by the 12 template_*_plans.php pages (cPanel, Plesk, DirectAdmin,
   WordPress, Joomla, Drupal, Concrete CMS, Magento, OpenCart, PrestaShop,
   phpBB, Moodle) plus the SSL certificates, installation, and business
   email plan grids — was previously a copy-pasted <style> block
   duplicated in every one of those files.
   ===================================================================== */

.hosting-plan-icon {
  width: 80px;
}

.color2 {
  background: linear-gradient(135deg, var(--sh-primary-mid) 0%, var(--sh-primary) 100%);
}

.hosting-card {
  border-radius: var(--sh-radius-lg);
  overflow: hidden;
  transition: transform 0.3s ease;
}

.hosting-card:hover {
  transform: translateY(-10px);
}

.hosting-features li {
  padding: 12px 0;
  border-bottom: 1px solid var(--sh-border);
  font-size: 15px;
}

.hosting-features li:last-child {
  border-bottom: none;
}

.popular-badge {
  position: absolute;
  top: 15px;
  right: -35px;
  background: var(--sh-accent);
  color: #fff;
  padding: 8px 40px;
  font-size: 12px;
  transform: rotate(45deg);
  font-weight: bold;
  z-index: 9;
}

/* =====================================================================
   Checkout & cart
   ===================================================================== */

/* Checkout progress steps — replaces the old Semantic UI ".ui.ordered.steps"
   component (used on the shopping cart and review-order pages) — pure
   Bootstrap/flexbox, no JS widget involved, only visual state via the
   existing .completed/.active classes already present in the markup. */
.progress-steps {
  display: flex;
  border: 1px solid var(--sh-border);
  border-radius: var(--sh-radius);
  overflow: hidden;
}

.progress-steps .step {
  flex: 1;
  padding: var(--sh-space-3) var(--sh-space-4);
  background: #fff;
  border-right: 1px solid var(--sh-border);
  text-align: center;
}

.progress-steps .step:last-child {
  border-right: none;
}

.progress-steps .step .title {
  font-family: var(--sh-font-heading);
  font-weight: 700;
  color: var(--sh-muted);
}

.progress-steps .step .description {
  font-size: var(--sh-small-size);
  color: var(--sh-muted);
}

.progress-steps .step.completed {
  background: var(--sh-bg-soft);
}

.progress-steps .step.completed .title {
  color: var(--sh-green);
}

.progress-steps .step.active {
  background: var(--sh-primary);
}

.progress-steps .step.active .title,
.progress-steps .step.active .description {
  color: #fff;
}

/* Cart / order-summary tables — row styling for the server-rendered cart
   HTML (cartModel::getCartContentForHosting), shared by the shopping cart
   and review-order pages. */
.cart-item-row td {
  vertical-align: middle;
  padding-top: var(--sh-space-3);
  padding-bottom: var(--sh-space-3);
}

.cart-item-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--sh-font-heading);
  font-weight: 700;
  color: var(--sh-primary-dark);
}

.cart-item-title i {
  width: 18px;
  text-align: center;
}

.cart-item-meta {
  font-size: var(--sh-small-size);
  color: var(--sh-muted);
  margin-top: 2px;
  margin-left: 26px;
}

.cart-cycle-badge {
  display: inline-block;
  background: var(--sh-bg-soft);
  color: var(--sh-primary-mid);
  font-weight: 600;
  font-size: var(--sh-small-size);
  border-radius: 50px;
  padding: 3px 12px;
}

.badge-plan {
  display: inline-block;
  background: rgba(12, 47, 85, 0.08);
  color: var(--sh-primary-mid);
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.03em;
  border-radius: 50px;
  padding: 2px 10px;
  margin-left: 8px;
  text-transform: uppercase;
}

.cart-total-row td {
  background: var(--sh-bg-soft);
  border-top: 2px solid var(--sh-primary);
  font-size: 1.05rem;
  padding-top: var(--sh-space-3);
  padding-bottom: var(--sh-space-3);
}

/* Review-order page: numbered circle badge inside .progress-steps .title
   (the step text itself, e.g. "2. Review Order", stays in the markup --
   this just gives the leading number its own visual weight). */
.step-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--sh-border);
  color: var(--sh-muted);
  font-size: 0.72rem;
  font-weight: 800;
  margin-right: 8px;
  flex-shrink: 0;
}

.progress-steps .step.completed .step-num {
  background: var(--sh-green);
  color: #fff;
}

.progress-steps .step.active .step-num {
  background: var(--sh-accent);
  color: #fff;
}

/* Gradient intro banner at the top of the review-order form column. */
.checkout-intro {
  background: linear-gradient(135deg, var(--sh-primary) 0%, var(--sh-primary-mid) 100%);
  position: relative;
  overflow: hidden;
}

.checkout-intro::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image: radial-gradient(circle at 85% 20%, rgba(255, 108, 44, 0.18), transparent 55%);
}

.checkout-intro .card-body {
  position: relative;
}

.checkout-intro-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: #ffd9c2;
}

.checkout-intro-eyebrow .dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--sh-accent);
}

/* Small icon badge used in card headers on the review-order page. */
.card-icon-badge {
  width: 38px;
  height: 38px;
  border-radius: 10px;
  background: var(--sh-bg-soft);
  color: var(--sh-primary-mid);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.05rem;
  flex-shrink: 0;
}

/* Honest replacement for the old "we'll auto-detect your account" promise
   (which had no actual detection logic behind it) -- explains what
   really happens: new email creates an account, existing email signs in. */
.account-note {
  display: flex;
  gap: 12px;
  background: var(--sh-bg-soft);
  border: 1px solid var(--sh-border);
  border-radius: var(--sh-radius);
  padding: 14px 16px;
  font-size: 0.85rem;
  color: var(--sh-muted);
  margin-top: 4px;
}

.account-note i {
  color: var(--sh-primary-mid);
  font-size: 1rem;
  flex-shrink: 0;
  margin-top: 1px;
}

.account-note strong {
  color: var(--sh-ink);
}

/* Payment method cards: the actual selection is still a real Bootstrap
   custom-radio (accessibility/semantics unchanged) -- this wrapper just
   gets a stronger visual highlight than the bare radio dot gives on its
   own, toggled by a few lines of JS on the input's change event. */
.pay-option-card {
  border: 2px solid var(--sh-border) !important;
  border-radius: var(--sh-radius);
  transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
}

.pay-option-card:hover {
  border-color: var(--sh-primary-light) !important;
}

.pay-option-card.pay-option-selected {
  border-color: var(--sh-primary-mid) !important;
  background: rgba(15, 94, 157, 0.04);
  box-shadow: var(--sh-shadow-sm);
}

.pay-option-icon {
  width: 44px;
  height: 44px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.2rem;
}



.tool-search-hero {
  background: linear-gradient(135deg, var(--sh-primary-dark) 0%, var(--sh-bluenavy-dark) 100%);
  position: relative;
  overflow: hidden;
}

.tool-search-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.03) 0, rgba(255, 255, 255, 0.03) 1px, transparent 1px, transparent 60px);
  pointer-events: none;
}

.tool-search-hero .container {
  position: relative;
}

.tool-search-bar {
  display: flex;
  align-items: center;
  background: #fff;
  border-radius: 50px;
  box-shadow: var(--sh-shadow-lg);
  padding: 8px 8px 8px 28px;
  max-width: 720px;
  margin: 0 auto;
}

.tool-search-bar .tool-search-icon {
  color: var(--sh-bluenavy);
  margin-right: 12px;
  font-size: 1.1rem;
}

.tool-search-bar input.form-control,
.tool-search-bar select.form-control {
  border: none !important;
  box-shadow: none !important;
  background: transparent;
  padding: 0.75rem 0.2em !important;
  height: auto !important;
  color: #000 !important;
  margin: 0 !important;
  font-size: 1rem;
}

.tool-search-bar input.form-control:focus,
.tool-search-bar select.form-control:focus {
  border: none !important;
  box-shadow: none !important;
}

.tool-search-bar .btn-tool-search {
  background: var(--sh-bluenavy-dark);
  border: none;
  color: #fff;
  font-weight: 700;
  border-radius: 50px;
  padding: 0.85rem 2rem;
  flex-shrink: 0;
  transition: background-color 0.2s ease;
}

.tool-search-bar .btn-tool-search:hover {
  background: var(--sh-bluenavy);
  color: #fff;
}

@media (max-width: 575px) {
  .tool-search-bar {
    flex-wrap: wrap;
    border-radius: var(--sh-radius-lg);
    padding: 16px;
  }

  .tool-search-bar input.form-control,
  .tool-search-bar select.form-control {
    flex: 0 0 100%;
    margin-bottom: 12px !important;
  }

  .tool-search-bar .btn-tool-search {
    flex: 0 0 100%;
  }
}

.tool-quicklinks {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
}

.tool-quicklink {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.25);
  color: #fff;
  border-radius: 50px;
  padding: 0.5rem 1.25rem;
  font-size: 0.9rem;
  font-weight: 600;
  transition: background-color 0.2s ease, border-color 0.2s ease;
}

.tool-quicklink:hover {
  background: rgba(255, 255, 255, 0.18);
  border-color: rgba(255, 255, 255, 0.4);
  color: #fff;
}

/* =====================================================================
   Homepage
   Everything below is scoped to template_home_page.php's own markup
   (either by #checkDomainSection / .home-* classes, or by extending
   shared components that only this page currently uses). Where a class
   is shared with other templates (.hass, .step-num-circle), the base
   rule stays in its own section above and only additive/scoped rules
   live here, so other pages already using them are unaffected.
   ===================================================================== */

/* Tools trio (Domain Registration / Web Hosting / Email) — a bordered
   card + icon badge, matching the card language used everywhere else on
   the site (.trust-card, .hosting-card). */
.trio-card {
  height: 100%;
  padding: var(--sh-space-4);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.trio-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--sh-shadow-md);
}

.trio-icon {
  width: 52px;
  height: 52px;
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  color: #fff;
  margin-bottom: var(--sh-space-3);
}

/* Hero "live snapshot" panel — the domain-search hero's side panel showing
   an example lookup, a real starting price, and support/setup facts, in
   place of decorative art. */
.hero-snapshot {
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: var(--sh-radius-lg);
  padding: var(--sh-space-4);
}

.hero-snapshot .row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--sh-space-2) 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

.hero-snapshot .row:last-child {
  border-bottom: none;
}

.hero-snapshot .label {
  font-size: var(--sh-small-size);
  color: rgba(255, 255, 255, 0.7);
}

.hero-snapshot .val {
  font-family: var(--sh-font-heading);
  font-size: 15px;
  color: #fff;
}

.hero-snapshot .val.good {
  color: #7fe0a8;
}

.hero-typed-underline {
  letter-spacing: 2px;
}

/* Homepage hero: radial glow + dot texture over the brand gradient. */
.home-hero {
  position: relative;
  overflow: hidden;
  min-height: 520px;
  background:
    linear-gradient(155deg,
      rgba(0, 153, 255, 0.92) 0%,
      rgba(0, 62, 120, 0.88) 78%),
    url('../../frontend/images/final.jpg') center center / cover no-repeat;
}



.home-hero .container {
  position: relative;
  z-index: 1;
}

.home-hero-kicker {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 18px;
}

.home-hero-kicker .dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--sh-accent);
  box-shadow: 0 0 0 4px rgba(255, 108, 44, 0.25);
  flex-shrink: 0;
}

.home-hero-kicker span {
  font-size: 0.8rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-weight: 700;
  color: #ffd9c2;
}

.home-hero-accent {
  color: #ffb388;
}

/* Homepage-only glass treatment for the shared .tool-search-bar pill
   (other tool pages keep the solid-white version defined above). */
#checkDomainSection .tool-search-bar {
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.16);
  box-shadow: none;
}

#checkDomainSection .tool-search-bar .tool-search-icon {
  color: rgba(255, 255, 255, 0.6);
}

#checkDomainSection .tool-search-bar input.form-control {
  color: #fff;
}

#checkDomainSection .tool-search-bar input.form-control::placeholder {
  color: rgba(255, 255, 255, 0.5);
}

#checkDomainSection .tool-search-bar .btn-tool-search {
  background: var(--sh-accent);
}

#checkDomainSection .tool-search-bar .btn-tool-search:hover {
  background: var(--sh-accent-dark);
}

.home-trust-row {
  display: flex;
  gap: 34px;
  flex-wrap: wrap;
}

.home-trust-row .item {
  display: flex;
  align-items: center;
  gap: 10px;
  color: rgba(255, 255, 255, 0.85);
  font-size: 0.88rem;
  font-weight: 600;
}

.home-trust-row .item .ic {
  width: 34px;
  height: 34px;
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.1);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  color: #ffb388;
  flex-shrink: 0;
}

/* Reusable section eyebrow (small accent label above section headings) */
.section-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--sh-accent-dark);
}

.section-eyebrow::before {
  content: "";
  width: 22px;
  height: 2px;
  background: var(--sh-accent);
  display: inline-block;
}

.section-eyebrow.light {
  color: #ffb388;
}

/* Homepage plan cards: condensed feature preview ("+N more") instead of
   the full 18-item list, linking out to the plan page for the rest. */
.plan-more-note {
  font-size: var(--sh-small-size);
  color: var(--sh-muted);
  padding: 0 var(--sh-space-4) var(--sh-space-2);
}

/* How It Works: connected flow, dashed connector line + numbered badges */
.step-num-circle {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--sh-primary);
  color: #fff;
  font-weight: 700;
}

.home-flow-track {
  position: relative;
}

.home-flow-track::before {
  content: "";
  position: absolute;
  top: 27px;
  left: 12.5%;
  right: 12.5%;
  height: 2px;
  background: repeating-linear-gradient(90deg, var(--sh-border) 0 10px, transparent 10px 18px);
}

@media (max-width: 900px) {
  .home-flow-track::before {
    display: none;
  }
}

.home-flow-step {
  position: relative;
  z-index: 1;
  background: #fff;
  border: 1px solid var(--sh-border);
  border-radius: var(--sh-radius);
  box-shadow: var(--sh-shadow-sm);
}

.home-flow-step .step-num-circle {
  box-shadow: 0 6px 16px rgba(12, 47, 85, 0.28);
}

/* "Why Businesses Trust Us" cards: each gets its own accent color (top
   border + tinted icon badge) instead of six identical white boxes. */
.trust-card {
  border: none;
  border-top: 4px solid transparent;
  border-radius: var(--sh-radius-lg);
  box-shadow: var(--sh-shadow-sm);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.trust-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--sh-shadow-md);
}

.trust-card-icon {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  margin-bottom: var(--sh-space-3);
}

.trust-card-title {
  font-family: var(--sh-font-heading);
  font-weight: 700;
  font-size: x-large;
  color: var(--sh-ink);
}

.trust-card-navy {
  border-top-color: var(--sh-primary);
}

.trust-card-navy .trust-card-icon {
  background: rgba(12, 47, 85, 0.1);
  color: var(--sh-primary);
}

.trust-card-blue {
  border-top-color: var(--sh-primary-mid);
}

.trust-card-blue .trust-card-icon {
  background: rgba(15, 94, 157, 0.1);
  color: var(--sh-primary-mid);
}

.trust-card-orange {
  border-top-color: var(--sh-accent);
}

.trust-card-orange .trust-card-icon {
  background: rgba(255, 108, 44, 0.12);
  color: var(--sh-accent-dark);
}

.trust-card-green {
  border-top-color: var(--sh-green);
}

.trust-card-green .trust-card-icon {
  background: rgba(31, 157, 85, 0.12);
  color: var(--sh-green-dark);
}

.trust-card-violet {
  border-top-color: var(--sh-bluenavy);
}

.trust-card-violet .trust-card-icon {
  background: rgba(91, 79, 196, 0.12);
  color: var(--sh-bluenavy-dark);
}

.trust-card-red {
  border-top-color: var(--sh-red);
}

.trust-card-red .trust-card-icon {
  background: rgba(214, 69, 69, 0.12);
  color: var(--sh-red-dark);
}

/* Trust / CTA panels: subtle dot texture over .hass (shared background
   defined in the Page-specific section backgrounds section above). */
.hass {
  position: relative;
  overflow: hidden;
}

.hass::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.4;
  background-image: radial-gradient(circle, rgba(255, 255, 255, 0.08) 1.5px, transparent 1.5px);
  background-size: 26px 26px;
}

.hass .container {
  position: relative;
  z-index: 1;
}

/* Tech stack: pill strip */
.stack-strip {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 14px;
}

.stack-pill {
  display: flex;
  align-items: center;
  gap: 10px;
  background: #fff;
  border: 1px solid var(--sh-border);
  border-radius: 999px;
  padding: 11px 20px 11px 14px;
  box-shadow: var(--sh-shadow-sm);
  transition: transform 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}

.stack-pill:hover {
  transform: translateY(-3px);
  border-color: var(--sh-primary-light);
  box-shadow: var(--sh-shadow-md);
}

.stack-pill .sw {
  width: 30px;
  height: 30px;
  border-radius: 8px;
  background: var(--sh-bg-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  color: var(--sh-primary-mid);
  flex-shrink: 0;
}

.stack-pill span {
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--sh-ink);
}

/* Partners: seamless logo strip */
.partner-strip {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 1px;
  background: var(--sh-border);
  border: 1px solid var(--sh-border);
  border-radius: var(--sh-radius);
  overflow: hidden;
}

@media (max-width: 760px) {
  .partner-strip {
    grid-template-columns: repeat(3, 1fr);
  }
}

.partner-cell {
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  filter: grayscale(1) opacity(0.55);
  transition: filter 0.18s ease;
}

.partner-cell:hover {
  filter: grayscale(0) opacity(1);
}

/* Homepage FAQ: custom +/- indicator on Bootstrap's own collapse toggle
   (interaction stays native Bootstrap — data-toggle/data-target/aria-*
   — only the visual indicator is custom, no extra JS). */
.home-faq .card {
  border-radius: var(--sh-radius);
  overflow: hidden;
  margin-bottom: 12px;
  box-shadow: var(--sh-shadow-sm);
}

.home-faq .card-header {
  background: #fff;
  border-bottom: none;
  padding: 0;
}

.home-faq .btn-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 19px 22px;
  font-weight: 700;
  font-size: 0.98rem;
  color: var(--sh-ink);
  text-decoration: none;
}

.home-faq .btn-link::after {
  content: "\2212";
  /* minus */
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--sh-primary-mid);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  flex-shrink: 0;
  margin-left: 16px;
}

.home-faq .btn-link.collapsed::after {
  content: "+";
  background: var(--sh-bg-soft);
  color: var(--sh-primary-mid);
}

/* =====================================================================
   How to Pay page
   ===================================================================== */

.payment-hero-badge {
  background: var(--sh-accent);
  color: #fff;
  font-size: var(--sh-small-size);
  font-weight: 700;
  letter-spacing: 0.04em;
}

.payment-card {
  border-radius: var(--sh-radius-lg) !important;
  overflow: hidden;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.payment-card:hover {
  transform: translateY(-4px);
}

.payment-card-featured {
  box-shadow: var(--sh-shadow-lg) !important;
}

.payment-card-header-primary {
  background: linear-gradient(135deg, var(--sh-primary-dark) 0%, var(--sh-primary-mid) 100%);
}

.payment-card-header-soft {
  background: var(--sh-bg-soft);
  color: var(--sh-primary-dark);
}

.payment-card-icon {
  width: 56px;
  height: 56px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.15);
  color: #fff;
  font-size: 1.4rem;
}

.payment-card-icon-soft {
  background: rgba(12, 47, 85, 0.08);
  color: var(--sh-primary-mid);
}

.payment-badge-recommended {
  background: var(--sh-accent);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.05em;
  padding: 5px 12px;
  border-radius: 50px;
}

.payment-method-list li {
  padding: 4px 0;
  color: var(--sh-muted);
}

.payment-method-list li i {
  color: var(--sh-green);
  margin-right: 6px;
  width: 16px;
}

.payment-contact-row {
  background: var(--sh-bg-soft);
  border-radius: var(--sh-radius);
  padding: var(--sh-space-3);
}

.payment-note {
  background: rgba(255, 108, 44, 0.08);
  color: var(--sh-accent-dark);
  border-radius: var(--sh-radius);
  padding: var(--sh-space-2) var(--sh-space-3);
  font-size: var(--sh-small-size);
}

.payment-confirm-card {
  background: #fff;
  border-left: 4px solid var(--sh-green);
  border-radius: var(--sh-radius-lg);
  box-shadow: var(--sh-shadow-sm);
}

.payment-confirm-card .payment-method-list li i {
  color: var(--sh-primary-mid);
}

/* =====================================================================
   Content / long-form pages
   Shared card treatment for long-form content pages (About, legal/policy
   pages, service description pages) that used to rely on the dead
   Semantic UI ".ui.padded.segment" class (no CSS behind it anymore), plus
   the icon-feature block pattern and the revamping/service-page kit
   (hero, process cards, pricing table, feature boxes).
   ===================================================================== */

.content-section-card {
  border: none;
  border-radius: var(--sh-radius);
  box-shadow: var(--sh-shadow-sm);
}

.section-bg-soft {
  background: var(--sh-bg-soft);
}

/* Icon-feature blocks — replaces the old Semantic UI ".ui.header"
   (icon + content + sub header) pattern used across the About/Services-
   style content pages. */
.icon-feature {
  display: flex;
  align-items: flex-start;
  gap: var(--sh-space-3);
}

.icon-feature .icon-feature-icon {
  font-size: 1.75rem;
  color: var(--sh-primary-mid);
  flex-shrink: 0;
}

.icon-feature .icon-feature-title {
  font-family: var(--sh-font-heading);
  font-weight: 700;
  color: var(--sh-primary);
  margin-bottom: 4px;
}

.icon-feature .icon-feature-desc {
  color: var(--sh-muted);
  font-size: var(--sh-small-size);
  margin-bottom: 0;
}

/* Featured Box (legacy, still used on a couple of content pages) */
.featured-box {
  box-sizing: border-box;
  margin-left: auto;
  margin-right: auto;
  position: relative;
}

.featured-box h3,
.featured-box h4 {
  font-size: 1.25rem;
  font-size: 20px;
  margin-bottom: 10px;
  font-weight: 500;
}

.featured-box:not(.style-5) .featured-box-icon {
  display: inline-block;
  font-size: 40px;
  height: 45px;
  line-height: 45px;
  padding: 0;
  width: 45px;
  margin-top: 0;
  margin-bottom: 20px;
  color: #4c4d4d;
  border-radius: 0;
}

/* Redesign / long-form service pages — moved out of a page-level <style>
   block on template_website_revamping.php so it's defined once, reusable
   by any future service page, and themed with the site's own tokens
   instead of one-off hex colors. */
.redesign-hero {
  background:
    linear-gradient(rgba(0, 0, 0, .75), rgba(0, 0, 0, .75)),
    url('../images/final.jpg');
  background-size: cover;
  background-position: center;
  padding: 120px 0;
}

.redesign-hero h1 {
  font-size: 3rem;
  font-weight: 700;
}

.redesign-hero p {
  font-size: 1.1rem;
  max-width: 750px;
  margin: auto;
}

.section-title {
  font-weight: 700;
  margin-bottom: 15px;
  color: var(--sh-ink);
}

.section-subtitle {
  color: var(--sh-muted);
  max-width: 700px;
  margin: auto;
}

.process-card {
  border: none;
  border-radius: var(--sh-radius-lg);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  box-shadow: var(--sh-shadow-sm);
  height: 100%;
}

.process-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--sh-shadow-md);
}

.process-icon {
  width: 70px;
  height: 70px;
  background: var(--sh-primary-mid);
  color: #fff;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: auto auto 20px;
  font-size: 28px;
}

.cta-section {
  background: linear-gradient(135deg, var(--sh-primary-mid) 0%, var(--sh-primary-dark) 100%);
  border-radius: var(--sh-radius-lg);
  overflow: hidden;
}

.pricing-table {
  border-radius: var(--sh-radius-lg);
  overflow: hidden;
  box-shadow: var(--sh-shadow-sm);
}

.pricing-table thead {
  background: var(--sh-primary-mid);
  color: #fff;
}

.pricing-table th,
.pricing-table td {
  padding: 18px;
  vertical-align: top;
}

.pricing-table tbody tr:hover {
  background: var(--sh-bg-soft);
}

.feature-box {
  padding: 30px;
  border-radius: var(--sh-radius-lg);
  background: #fff;
  box-shadow: var(--sh-shadow-sm);
  transition: transform 0.3s ease;
  height: 100%;
}

.feature-box:hover {
  transform: translateY(-5px);
}

.feature-icon {
  width: 65px;
  height: 65px;
  border-radius: 50%;
  background: rgba(15, 94, 157, .1);
  color: var(--sh-primary-mid);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  margin-bottom: 20px;
}

/* =====================================================================
   Legal / policy pages
   Shared shell for the 8 legal documents (privacy, terms, cookie policy,
   refund policy, acceptable use, anti-spam, domain reseller agreement,
   domain transfer agreement). Deliberately plain / document-style
   (title bar + persistent cross-document sidebar + continuous section
   flow) rather than a marketing layout, so the pages read as legal
   documents first.
   ===================================================================== */

.legal-titlebar {
  border-bottom: 1px solid var(--sh-border);
  padding: 28px 0;
  color:#fff !important;
  background: linear-gradient(45deg,#003c6b, #081f39);
}

.legal-crumb {
  font-size: 13px;
  color: #ffffff;
  margin-bottom: 10px;
}

.legal-crumb a {
  color: #ffffff;
  text-decoration: none;
}

.legal-crumb a:hover {
  text-decoration: underline;
}

.legal-titlebar h1 {
  font-size: 28px;
  font-weight: 800;
  margin: 0;
  color: #ffffff !important;
}

.legal-titlebar .meta {
  font-size: 13px;
  color: var(--sh-muted);
  margin-top: 6px;
}

.legal-shell {
  padding: 40px 0 72px;
}

.legal-grid2 {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: 48px;
  align-items: start;
}

@media (max-width: 900px) {
  .legal-grid2 {
    grid-template-columns: 1fr;
  }
}

/* Persistent cross-document sidebar (lists all 8 legal pages, grouped) */
.legal-sidenav {
  position: sticky;
  top: 24px;
}

@media (max-width: 900px) {
  .legal-sidenav {
    position: static;
  }
}

.legal-sidenav .cat-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--sh-muted);
  margin: 0 0 8px;
  padding: 0 4px;
}

.legal-sidenav .cat-label:not(:first-child) {
  margin-top: 20px;
}

.legal-sidenav ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.legal-sidenav li {
  margin-bottom: 1px;
}

.legal-sidenav a {
  display: block;
  padding: 8px 12px;
  border-radius: 6px;
  font-size: 14px;
  color: var(--sh-ink);
  text-decoration: none;
  border-left: 2px solid transparent;
}

.legal-sidenav a:hover {
  background: var(--sh-bg-soft);
  color: var(--sh-ink);
}

.legal-sidenav a.current {
  background: var(--sh-bg-soft);
  border-left-color: var(--sh-primary-mid);
  color: var(--sh-primary-mid);
  font-weight: 700;
}

/* Document body — plain, dense, no cards or numbered badges */
.legal-doc {
  max-width: 760px;
}

.legal-doc h2 {
  font-size: 18px;
  font-weight: 800;
  color: var(--sh-primary);
  margin: 36px 0 12px;
  padding-top: 4px;
}

.legal-doc > div:first-of-type h2 {
  margin-top: 0;
}

.legal-doc p {
  font-size: 15px;
  color: var(--sh-ink);
  margin: 0 0 14px;
}

.legal-doc ul {
  margin: 0 0 14px;
  padding-left: 22px;
}

.legal-doc li {
  font-size: 15px;
  margin-bottom: 6px;
}

.legal-note {
  border-left: 2px solid var(--sh-border);
  padding-left: 16px;
  margin: 18px 0;
  color: var(--sh-muted);
  font-size: 14px;
}

.legal-note strong {
  color: var(--sh-ink);
}

.legal-doc hr {
  border: none;
  border-top: 1px solid var(--sh-border);
  margin: 36px 0;
}

.legal-contact-line {
  font-size: 14.5px;
  color: var(--sh-muted);
}

.legal-contact-line a {
  color: var(--sh-primary-mid);
  font-weight: 600;
  text-decoration: none;
}

.legal-contact-line a:hover {
  text-decoration: underline;
}

/* =====================================================================
   404 page
   ===================================================================== */

.error-box {
  padding: var(--sh-space-6) var(--sh-space-3);
}

.error-box .error-code {
  font-family: var(--sh-font-heading);
  font-size: 8rem;
  font-weight: 700;
  line-height: 1;
  color: var(--sh-primary-mid);
  margin-bottom: var(--sh-space-3);
}

@media (max-width: 575px) {
  .error-box .error-code {
    font-size: 5rem;
  }
}

/* =====================================================================
   Small shared utilities
   ===================================================================== */

.shadow-md {
  -webkit-box-shadow: 0px 0px 50px -35px rgba(0, 0, 0, 0.4);
  box-shadow: 0px 0px 50px -35px rgba(0, 0, 0, 0.4);
}

.bg-danger-subtle {
  background-color: rgba(220, 53, 69, 0.1);
}

.bg-success-subtle {
  background-color: rgba(31, 157, 85, 0.1);
}

.bg-primary-subtle {
  background-color: rgba(15, 94, 157, 0.1);
}

.bg-info-subtle {
  background-color: rgba(23, 162, 184, 0.1);
}

/* Bootstrap 5 sizing/rounding utility this site's markup occasionally
   uses; BS4 only ships bare .rounded (0.25rem). */
.rounded-4 {
  border-radius: var(--sh-radius-lg) !important;
}

.tracking-wider {
  letter-spacing: 0.08em;
}
