/* Revision 64: implementation of the "最新333" review. */

/* Header search expands in place and the supplied language mark stays visible. */
.header-search-form {
  position: relative;
  width: 70px;
  height: 38px;
  flex: 0 0 auto;
  transition: width .2s ease;
}
.header-search-form.is-open { width: 190px; }
.header-search-form label { position: absolute; inset: 0; margin: 0; }
.header-search-form .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.header-search-form input {
  width: 100%;
  height: 38px;
  padding: 0 74px 0 15px;
  color: #fff;
  background: rgba(255,255,255,.14);
  border: 1px solid rgba(255,255,255,.55);
  border-radius: 999px;
  outline: none;
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s ease, box-shadow .2s ease;
}
.header-search-form input::placeholder { color: rgba(255,255,255,.72); }
.header-search-form.is-open input {
  opacity: 1;
  pointer-events: auto;
  box-shadow: 0 0 0 3px rgba(255,255,255,.12);
  padding-right: 48px;
}
.header-search-form .header-search-link {
  position: absolute;
  z-index: 2;
  top: 0;
  right: 0;
  height: 38px;
  border: 0;
  background: transparent;
  cursor: pointer;
}
.header-search-form:not(.is-open) .header-search-link {
  border: 1px solid rgba(255,255,255,.55);
}
.header-search-form.is-open .header-search-link { width: 42px; padding: 0; }
.header-search-form.is-open .header-search-link span { display: none; }
.header-language-link { gap: 4px; width: 58px; flex-basis: 58px; letter-spacing: 0; }
.header-language-link img { width: 17px; height: 17px; display: block; object-fit: contain; }
.header-language-link span { line-height: 1; }

/* All home banners use coloured imagery and white copy. Both calls to action
   are transparent until the pointer or keyboard focus is on that one button. */
.page-home .hero-content h1,
.page-home .hero-content h2,
.page-home .hero-content > p { color: #fff; -webkit-text-fill-color: currentColor; }
.page-home .hero-actions .hero-action-button {
  min-width: 176px;
  min-height: 50px;
  padding: 0 25px;
  color: #fff;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 999px;
  transition: color .2s ease, background-color .2s ease, border-color .2s ease;
}
.page-home .hero-actions .hero-action-button:hover,
.page-home .hero-actions .hero-action-button:focus-visible {
  color: #fff;
  background: var(--red);
  border-color: var(--red);
  transform: none;
}
.page-home .stat-item strong::after { display: none; }

@media (min-width: 901px) {
  .page-home .home-cases-section {
    height: auto;
    min-height: 815px;
    padding-bottom: 132px;
  }
}
.home-v2-center-heading .text-link::after,
.home-v2-center-heading .text-link::before { display: none !important; }
.page-home .home-color-studio::before {
  top: -58px;
  height: 60px;
  transform: translateY(2px);
  filter: drop-shadow(0 -2px 0 var(--red));
}

/* Product catalogue: fixed media row and aligned copy baselines. */
.product-catalog-v3-card { height: 318px; display: grid; grid-template-rows: 220px 98px; }
.product-catalog-v3-card figure { height: 220px; display: flex; align-items: flex-end; justify-content: center; }
.product-catalog-v3-card figure img { object-position: center bottom; }
.product-catalog-v3-card > div {
  min-height: 98px;
  padding-top: 14px;
  display: grid;
  grid-template-rows: 42px 24px;
  align-content: start;
}
.product-catalog-v3-card h3 { margin: 0; align-self: baseline; }
.product-catalog-v3-card > div > strong { align-self: baseline; }

/* About page proportions from the annotated reference. */
.about-v2-profile-copy p:not(.about-v2-company-parent):not(.about-v2-company-tag) { font-size: 14px; }
.about-v2-profile-image { margin-right: 24px; margin-bottom: 24px; }
.about-v2-profile-image::after {
  right: -24px;
  bottom: -24px;
  width: 78px;
  height: 78px;
  clip-path: polygon(100% 0,100% 100%,0 100%);
}
.about-v2-stats .container { min-height: 164px; padding-top: 18px; padding-bottom: 18px; }
.about-v2-stats strong { font-size: 42px; }
.about-v2-team-copy .button:hover,
.about-v2-team-copy .button:focus-visible {
  color: #fff;
  background: var(--red);
  border-color: var(--red);
}

/* Contact and service area use one quiet grey surface. */
.contact-v2-main,
.contact-v2-regions { background: #f4f4f4; }
.contact-v2-main::after { display: none; }
.contact-v2-privacy {
  min-height: 26px;
  display: flex !important;
  align-items: center !important;
  justify-content: center;
  gap: 9px;
}
.contact-v2-privacy input {
  width: 16px !important;
  height: 16px;
  min-height: 16px !important;
  margin: 0;
  flex: 0 0 16px;
}
.contact-v2-card form > label.contact-v2-privacy > span { margin: 0; display: inline-flex; align-items: center; line-height: 1.5; }
/* The form's label text carries a 9px bottom margin; flex centring uses the
   margin box, so the copy sat 4.5px above the box until it was cleared. */

/* Case reset lives under the controls and only appears after filtering. */
.case-demo-reset-row {
  min-height: 36px;
  margin-top: 12px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
}
.case-demo-reset-row .case-demo-reset {
  width: auto;
  min-width: 0;
  height: 32px;
  padding: 0 4px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #8a8d91;
  background: transparent;
  border: 0;
  border-radius: 0;
  font-size: 12px;
}
.case-demo-reset-row .case-demo-reset[hidden] { display: none !important; }
.case-demo-reset-row .case-demo-reset:hover,
.case-demo-reset-row .case-demo-reset:focus-visible { color: var(--red); background: transparent; outline: none; }
.case-demo-reset-row .case-demo-reset-icon { font-size: 16px; font-style: normal; }

/* Footer receives the supplied official-account and video-account codes. */
@media (min-width: 901px) {
  .site-footer { height: auto; min-height: 570px; overflow: visible; }
  .site-footer .footer-grid {
    width: min(1120px,calc(100% - 64px));
    height: auto;
    min-height: 405px;
    grid-template-columns: 330px 220px minmax(420px,1fr);
    gap: 56px;
  }
}
.footer-wechat { margin: 18px 0 10px; }
.footer-wechat-phone {
  margin-bottom: 12px;
  display: inline-flex;
  color: #fff !important;
  font-size: 19px;
  font-weight: 700;
}
.footer-wechat-codes { display: flex; flex-wrap: wrap; gap: 14px; }
.footer-wechat-codes figure { width: 82px; margin: 0; text-align: center; }
.footer-wechat-codes img { width: 82px; height: 82px; display: block; object-fit: cover; background: #fff; }
.footer-wechat-codes figcaption { margin-top: 6px; color: rgba(255,255,255,.64); font-size: 10px; }

/* Embedded news detail module supplied in 最新333. */
.hd-news {
  --red: #ee3124;
  --ink: #222326;
  --muted: #676a6e;
  --line: #d7d9dc;
  --soft: #f5f6f7;
  color: var(--ink);
  background: #fff;
  font-family: -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",Arial,sans-serif;
  -webkit-font-smoothing: antialiased;
}
.hd-news a { color: inherit; text-decoration: none; }
.hd-news button { font: inherit; cursor: pointer; }
.hd-news__head { max-width: 1280px; margin: auto; padding: 226px 30px 0; }
.hd-news__meta { display: flex; align-items: center; gap: 16px; color: var(--red); font-size: 15px; font-weight: 650; }
.hd-news__tag { padding: 7px 11px; border: 1px solid var(--red); border-radius: 3px; font-size: 13px; font-weight: 550; }
.hd-news__title-row { padding: 28px 0 32px; display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 42px; border-bottom: 1px solid #bfc2c5; }
.hd-news h1 { max-width: 1020px; margin: 0; font-size: 46px; line-height: 1.3; letter-spacing: -1px; font-weight: 780; }
.hd-news__share { width: 48px; height: 48px; padding: 0; display: grid; place-items: center; color: #505256; background: #fff; border: 1px solid #d1d3d6; border-radius: 50%; transition: .2s; }
.hd-news__share:hover,
.hd-news__share:focus-visible { color: #fff; background: var(--red); border-color: var(--red); outline: none; }
.hd-news__share svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.hd-news__lead { max-width: 920px; margin: 34px 0 0; color: #5d6064; font-size: 18px; line-height: 1.8; }
.hd-news__article { width: min(920px,calc(100% - 40px)); margin: 78px auto 0; color: #3f4246; font-size: 17px; line-height: 2; }
.hd-news__article p { margin: 0 0 24px; }
.hd-news__article strong,
.hd-news__article b { font-weight: 750; }
.hd-news__article h2 { margin: 44px 0 16px; color: var(--ink); font-size: 25px; line-height: 1.5; font-weight: 700; }
.hd-news__article ul,
.hd-news__article ol { margin: 0 0 28px; padding-left: 1.35em; }
.hd-news__article li { margin: 7px 0; padding-left: .2em; }
.hd-news__article a { color: var(--red); text-decoration: underline; text-underline-offset: 3px; }
.hd-news__cover,
.hd-news__article figure { width: 100%; margin: 38px 0 48px; }
.hd-news__cover { margin-top: 0; }
.hd-news__cover img,
.hd-news__article figure img,
.hd-news__article > img { width: 100%; height: auto; display: block; }
.hd-news__cover figcaption,
.hd-news__article figcaption { display: block; margin-top: 12px; color: #97999c; font-size: 12px; line-height: 1.6; text-align: center; }
.hd-news__related { margin-top: 100px; padding: 88px 30px 104px; background: var(--soft); }
.hd-news__related-inner { max-width: 1440px; margin: auto; }
.hd-news__section-top { margin-bottom: 48px; text-align: center; }
.hd-news__title-lockup { display: flex; align-items: center; justify-content: center; gap: 13px; }
.hd-news__slashes { display: flex; gap: 7px; }
.hd-news__slashes i { width: 10px; height: 27px; display: block; background: var(--red); transform: skew(-19deg); }
.hd-news__slashes i:last-child { background: #f39aa4; }
.hd-news__section-top h2 { margin: 0; font-size: 30px; line-height: 1; font-weight: 740; }
.hd-news__grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 24px; }
.hd-news__card { position: relative; min-width: 0; background: #fff; box-shadow: 0 9px 23px rgba(24,29,34,.13); clip-path: polygon(0 0,100% 0,100% calc(100% - 25px),calc(100% - 25px) 100%,0 100%); transition: .25s; }
.hd-news__card:hover,
.hd-news__card:focus-visible { outline: none; transform: translateY(-6px); box-shadow: 0 15px 31px rgba(24,29,34,.18); }
.hd-news__photo { position: relative; height: 205px; overflow: hidden; background: #ddd; }
.hd-news__photo img { width: 100%; height: 100%; display: block; object-fit: cover; transition: transform .45s; }
.hd-news__card:hover img { transform: scale(1.045); }
.hd-news__label { position: absolute; z-index: 2; top: 0; left: 0; padding: 10px 17px; color: #fff; background: var(--red); font-size: 13px; font-weight: 650; }
.hd-news__copy { min-height: 128px; padding: 21px 20px 22px; display: grid; grid-template-columns: 60px minmax(0,1fr) 30px; align-items: start; gap: 15px; background: #f0f1f2; }
.hd-news__date { position: relative; padding-left: 12px; color: var(--red); font-size: 20px; line-height: 1.05; font-weight: 750; }
.hd-news__date::before { position: absolute; top: 0; left: 0; width: 1px; height: 49px; content: ""; background: #f1847c; }
.hd-news__date::after { position: absolute; top: -1px; left: -3px; width: 7px; height: 7px; content: ""; background: var(--red); border-radius: 50%; }
.hd-news__date small { margin-top: 8px; display: block; color: #999ca0; font-size: 11px; font-weight: 500; }
.hd-news__copy h3 { margin: -2px 0 0; font-size: 17px; line-height: 1.55; font-weight: 700; }
.hd-news__arrow { width: 26px; height: 26px; margin-top: 3px; display: grid; place-items: center; color: var(--red); border: 1px solid #d4d6d9; border-radius: 50%; font-size: 16px; transition: .2s; }
.hd-news__card:hover .hd-news__arrow { color: #fff; background: var(--red); border-color: var(--red); }
.hd-news__toast { position: fixed; z-index: 120; bottom: 34px; left: 50%; padding: 11px 18px; color: #fff; background: #242528; border-radius: 4px; font-size: 13px; opacity: 0; pointer-events: none; transform: translate(-50%,18px); transition: .22s; }
.hd-news__toast.is-show { opacity: 1; transform: translate(-50%,0); }

@media (max-width: 1100px) {
  .hd-news__grid { grid-template-columns: repeat(2,1fr); }
  .hd-news__photo { height: 250px; }
}
@media (max-width: 900px) {
  .header-utilities { display: none; }
  .product-catalog-v3-card { height: auto; }
  .site-footer { min-height: 0; }
  .footer-wechat-codes figure { width: 74px; }
  .footer-wechat-codes img { width: 74px; height: 74px; }
}
@media (max-width: 700px) {
  .hd-news__head { padding: 134px 20px 0; }
  .hd-news__meta { font-size: 13px; }
  .hd-news__title-row { gap: 16px; padding: 21px 0 25px; }
  .hd-news h1 { font-size: 31px; line-height: 1.38; }
  .hd-news__share { width: 42px; height: 42px; }
  .hd-news__lead { margin-top: 25px; font-size: 16px; }
  .hd-news__article { margin-top: 50px; font-size: 16px; line-height: 1.95; }
  .hd-news__article h2 { margin-top: 36px; font-size: 21px; }
  .hd-news__cover,
  .hd-news__article figure { margin: 32px 0 40px; }
  .hd-news__cover { margin-top: 0; }
  .hd-news__related { margin-top: 72px; padding: 60px 20px 70px; }
  .hd-news__section-top h2 { font-size: 26px; }
  .hd-news__slashes i { width: 9px; height: 24px; }
  .hd-news__grid { grid-template-columns: 1fr; gap: 20px; }
  .hd-news__photo { height: 220px; }
  .hd-news__copy { min-height: 120px; }
  .case-demo-reset-row { min-height: 32px; margin-top: 8px; }
}

/* Revision 67: header search width, language mark frame, news heading parity
   and removal of the leftover decorative rule under the news section link. */

/* Search pill was 70px wide while its content needs ~73px, so "搜索" wrapped
   onto two lines. Widen the collapsed state only where the label is shown;
   at 1200px and below rev44 hides the label and shrinks the button to 38px. */
@media (min-width: 1201px) {
  .header-search-form { width: 96px; }
}
.header-search-form .header-search-link span { white-space: nowrap; }

/* Language switch drops its outer frame; the search pill keeps its own. */
.header-language-link { border: 0; }

/* News link loses the inherited .text-link underline, matching the cases link
   which already clears its border in rev44. */
.home-v2-center-heading .text-link { border-bottom: 0; padding-bottom: 0; }

/* Desktop news heading matches the cases heading size set in rev44. */
@media (min-width: 901px) {
  .home-v2-center-heading h2 { font-size: 52px; }
}

/* Certificate thumbnails were sized by width alone inside a fixed-height
   button, so a 3:4 upload (the size the admin recommends) computed a height
   of ~280px in a 259px box and lost its bottom edge to the carousel's
   overflow:hidden. The percentage max-height never applied because the grid
   row is content-sized. Give the image the container's usable height instead,
   matching how the sibling carousel sizes its marks; object-fit: contain then
   letterboxes any aspect ratio without cropping. Heights track the button
   heights set in rev28/rev39 minus its 8px padding. */
.about-v2-carousel-track figure button img { height: 294px; }
@media (min-width: 901px) {
  .about-v2-carousel-track figure button img { height: 259px; }
}
@media (max-width: 600px) {
  .about-v2-carousel-track figure button img { height: 349px; }
}

/* Revision 68 — client review round 4. */

/* The about header floats over the hero photo, but rev44 forces every
   non-home page onto the all-white logo variant, which inverts the red
   triangle away. Drop the inversion there so the mark matches the homepage;
   once the header goes compact it is red, so the white variant still wins. */
.page-about .site-header:not(.is-compact) .site-logo-on-red { filter: none !important; }

/* Case wall shows three per row instead of four. */
.case-showcase-grid,
.case-demo-main .case-showcase-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }

/* Team block takes several photos: the first one keeps the full column width
   and any extras tile below it in two columns. The section height is fixed at
   720px for the single-photo layout, so let it grow once there is more. */
.about-v2-team-gallery { display: grid; gap: 14px; }
.about-v2-team-gallery.is-multi { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.about-v2-team-gallery.is-multi > figure:first-child { grid-column: 1 / -1; }
.about-v2-team-gallery > figure { margin: 0; }
.about-v2-team-gallery > figure img { width: 100%; display: block; object-fit: cover; }
.about-v2-team-gallery.is-multi > figure:not(:first-child) img { aspect-ratio: 1.45; }
@media (min-width: 901px) {
  .page-about .about-v2-team:has(.about-v2-team-gallery.is-multi) { height: auto; padding-bottom: 120px; }
}
@media (max-width: 600px) {
  .about-v2-team-gallery.is-multi { grid-template-columns: 1fr; }
}

/* Revision 69 — the "服务支持" entry (service.php redirects to contact.php)
   leads with the colour studio promo on a light surface instead of the old
   dark hero. The header is already red on this page, so white reads fine. */
.contact-v2-studio { position: relative; padding: 150px 0 74px; color: #222; background: #fff; overflow: hidden; }
.contact-v2-studio-grid { display: grid; grid-template-columns: .78fr 1.22fr; align-items: center; gap: 34px; }
.contact-v2-studio-copy h1 { max-width: 460px; margin: 0 0 18px; color: #222; font-size: clamp(40px, 3.2vw, 52px); font-weight: 650; line-height: 1.23; letter-spacing: 0; }
.contact-v2-studio-copy p { max-width: 430px; margin: 0 0 30px; color: #63666b; font-size: 14px; line-height: 1.75; }
.contact-v2-studio-visual { margin: 0; }
.contact-v2-studio-visual img { width: 110%; max-width: none; display: block; filter: drop-shadow(0 26px 30px rgba(20,23,28,.18)); transform: translateX(-2%); }

/* One button only: white with a black outline, turning red on hover. */
.contact-v2-studio .contact-v2-studio-button {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 13px 26px;
  color: #222;
  background: #fff;
  border: 1px solid #222;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 700;
  transition: color .25s ease, background .25s ease, border-color .25s ease;
}
.contact-v2-studio .contact-v2-studio-button svg { transition: transform .25s ease; }
.contact-v2-studio .contact-v2-studio-button:hover,
.contact-v2-studio .contact-v2-studio-button:focus-visible { color: #fff; background: var(--red); border-color: var(--red); outline: none; }
.contact-v2-studio .contact-v2-studio-button:hover svg { transform: translateX(3px); }

@media (max-width: 900px) {
  .contact-v2-studio { padding: 112px 0 48px; }
  .contact-v2-studio-grid { grid-template-columns: 1fr; gap: 26px; }
  .contact-v2-studio-visual img { width: 100%; transform: none; }
}

/* Revision 71 — mobile fit. Two elements pushed the page wider than the phone
   viewport, which showed up as a sideways scroll on every screen below 900px. */

/* The colour-studio artwork bleeds past the grid on purpose at desktop widths,
   but the phone block widened it further (112%) while cancelling the global
   img { max-width: 100% } guard, so the homepage scrolled sideways. */
@media (max-width: 900px) {
  .home-color-studio-visual img { width: 100%; max-width: 100%; transform: none; }
}

/* The four space cards are flex children: without min-width: 0 they refuse to
   shrink below their content and push the row past the container. */
@media (max-width: 900px) {
  .about-v2-gallery { max-width: 100%; gap: 8px; }
  .about-v2-gallery > .about-v2-space-card { min-width: 0; }
}

/* Revision 74 — the footer contact column now follows the client's reference:
   a single large landline with its icon, the two WeChat codes, then the
   mailbox, address and postcode. The hotline, business line, Hong Kong block
   and the round social buttons are gone, so the column reads top to bottom. */
.site-footer .footer-contact-phone {
  margin-bottom: 26px;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: #fff;
  font-size: 26px;
  font-weight: 650;
  letter-spacing: .01em;
  white-space: nowrap;
}
.site-footer .footer-contact-phone:hover { color: #fff; }
.site-footer .footer-contact-phone svg {
  width: 26px;
  height: 26px;
  flex: 0 0 26px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.site-footer .footer-contact-block .footer-wechat-codes { margin-bottom: 24px; }
.site-footer .footer-contact-block > p { margin: 0 0 8px; }

@media (max-width: 900px) {
  .site-footer .footer-contact-phone { margin-bottom: 20px; font-size: 22px; }
  .site-footer .footer-contact-phone svg { width: 22px; height: 22px; flex-basis: 22px; }
}

/* Revision 76 — the certificate lightbox sized its image by width alone: the
   panel is a grid whose row is content-sized, so `max-height: 100%` never
   resolved and a 3:4 upload (900×1200, the size the admin recommends) rendered
   672×896 inside a 446–694px opening and lost its bottom half. Express the cap
   in the same viewport units the panel uses so it is a definite length; the
   caption sits 10px from the bottom, so leave room for it too. */
.lightbox > div img {
  max-height: calc(min(86vh, 900px) - 60px - 34px);
}
@media (max-width: 900px) {
  .lightbox > div img { max-height: calc(min(86vh, 900px) - 40px - 30px); }
}

/* Revision 76 — the red footer slope clipped its own top-right triangle away,
   so that corner showed the white page behind it. Wherever the last section
   above is grey (news detail, contact, search, 404) the result read as
   grey → white wedge → red. The slope now paints the wedge itself in the
   colour of the section above and draws the red with ::before, keeping the
   per-breakpoint angles from rev28/rev39. */
.footer-red-slope { clip-path: none; background: var(--slope-top, #fff); }
.footer-red-slope::before {
  position: absolute;
  inset: 0;
  content: "";
  background: var(--red);
  clip-path: polygon(0 0, 100% 72%, 100% 100%, 0 100%);
}
@media (min-width: 901px) {
  .footer-red-slope::before { clip-path: polygon(0 0, 100% 66.5%, 100% 100%, 0 100%); }
}
.page-cases .footer-red-slope { --slope-top: #f4f5f7; }
.page-service .footer-red-slope { --slope-top: #f4f4f4; }
.page-search .footer-red-slope { --slope-top: #f3f4f6; }
body:has(.hd-news) .footer-red-slope { --slope-top: #f5f6f7; }
body:has(.not-found-page) .footer-red-slope { --slope-top: #f3f4f6; }

/* Revision 77 — rev39 pinned the history section to the PDF's five-row layout
   (height: 1691px). The client now has seven milestones, so the list outgrew
   the box and its last expanded entry ran under the red footer slope. Keep the
   PDF height as the floor and let the section grow with the list. */
@media (min-width: 901px) {
  #about-panel-history .about-v2-section-shell { height: auto; min-height: 1691px; }
}

/* Revision 79 — footer notes from the client's 28th annotation.
   1. The partner marks and their line sit straight under the logo instead of
      90px below it, so the brand column reads as one block. */
@media (min-width: 901px) {
  .footer-partner-marks { margin-top: 32px; }
}
/* Hold the marks' height while the image is still on its way (the client's
   upload and the default share a 3.27:1 ratio); otherwise the line below
   jumps up into the gap and back down on slow connections. */
.site-footer .footer-partner-marks img { aspect-ratio: auto 760 / 232; }
/* 2. The home page kept its own footer rules from site.css: a hairline above
      the footer and above 快速导航, an uppercase tracked heading and a
      different top padding. Every page shares one footer now, so home falls
      back to the values rev28/rev39 give the rest of the site. */
.page-home .site-footer { padding-top: 76px; border-top: 0; }
@media (max-width: 600px) {
  .page-home .site-footer { padding-top: 55px; }
}
@media (min-width: 901px) {
  .page-home .site-footer { padding-top: 67px; }
}
.page-home .site-footer .footer-grid h3 { padding-top: 0; border-top: 0; text-transform: none; letter-spacing: normal; }
/* 3. The landline digits match the height of the phone icon beside them.
      rev28's `.site-footer .footer-contact-block a` (0,2,1) had been beating
      the rev74 size, leaving 12px digits next to a 26px icon. The icon's ink
      is 19/24 of its box and Inter's digits are ~0.727em tall, so the font
      size is the icon box × 1.09. */
.site-footer .footer-contact-block .footer-contact-phone { font-size: 28px; font-weight: 500; line-height: 1; letter-spacing: 0; }
@media (max-width: 900px) {
  .site-footer .footer-contact-block .footer-contact-phone { font-size: 24px; }
}
