/* Shared CTA finish. Structure, events, navigation and form logic stay unchanged. */
/* Heading capitalization lives in the template/CMS source, never a CSS transform. */
:root { --ims-cta-top: #bd4936; --ims-cta-bottom: #a83829; --ims-cta-hover: #af3e2d; }
/* Use for a standalone heading, never for a split with meaningful adjacent content. */
.ims-heading-centered { width: 100%; max-width: none; margin-inline: auto; text-align: center; }
.ims-heading-centered h2 { max-width: none; margin-inline: auto; text-wrap: balance; }
.ims-contact-link { display: inline-flex; align-items: center; gap: 10px; max-width: 100%; vertical-align: middle; font-weight: 700; text-decoration: none; }
.ims-contact-link > span { min-width: 0; overflow-wrap: anywhere; }
.ims-contact-icon { display: inline-block; width: 20px; height: 20px; flex: 0 0 20px; color: var(--aqua, #6befd8); vertical-align: middle; }
.ims-contact-link:hover > span { text-decoration: underline; text-underline-offset: 4px; }
.ims-contact-link:hover .ims-contact-icon { color: #c7fff6; }
.drawer-contact { margin-top: 22px; font-size: 13px; color: var(--soft); }
.drawer-contact .ims-contact-link { margin-top: 8px; }
.ims-inquiry__contact-note { flex-wrap: wrap; gap: 8px; }
.ims-construction-notice__message .ims-contact-link { white-space: nowrap; }
.ims-service__contact .ims-contact-link { border: 0; background: none; border-radius: 0; }
.button, .ims-footer__cta, .ims-inquiry .ims-inquiry__submit {
  border-radius: 6px;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .035em;
  text-shadow: none;
}
.button-coral, .ims-footer__cta, .ims-inquiry .ims-inquiry__submit {
  color: #fff;
  background: linear-gradient(180deg, var(--ims-cta-top), var(--ims-cta-bottom));
  border: 1px solid #ef917b;
  box-shadow: inset 0 1px 0 #ffd7c85c, 0 3px 0 #692b23, 0 8px 24px #0003;
}
.button-coral:hover, .ims-footer__cta:hover, .ims-inquiry .ims-inquiry__submit:hover {
  color: #fff;
  background: var(--ims-cta-hover);
  box-shadow: inset 0 1px 0 #ffd7c880, 0 3px 0 #692b23, 0 10px 28px #0004;
}
.js .proposal-tab { color: #fff; background: linear-gradient(180deg, var(--ims-cta-top), var(--ims-cta-bottom)); border-color: #ef917b; box-shadow: inset 0 1px 0 #ffd7c85c, 0 3px 0 #692b23, 0 7px 22px #0005; }
.js .proposal-tab:hover { color: #fff; background: var(--ims-cta-hover); }
.button-outline { border-color: #8fdfdf; box-shadow: inset 0 1px 0 #acf5eb29, 0 3px 0 #021019; }
.button:focus-visible, .ims-footer__cta:focus-visible, .ims-inquiry .ims-inquiry__submit:focus-visible {
  outline: 3px solid var(--aqua);
  outline-offset: 5px;
}
.cap-system .cap-card > a {
  border: 0;
  border-bottom: 1px solid #71b9c277;
  border-radius: 0;
  background: transparent;
  padding-inline: 0;
  font-size: 11px;
}
.cap-system .cap-card > a:hover, .cap-system .cap-card > a:focus-visible { background: transparent; color: var(--aqua); border-color: var(--aqua); }
.fw-actions a { min-height: 44px; font-size: 12px; }
.fw-actions a:first-child { border: 1px solid #6befd880; border-radius: 5px; padding: 12px 17px; background: #062632; box-shadow: inset 0 1px 0 #affff126, 0 3px 0 #010e15; }
.fw-actions a:first-child:hover { border-color: var(--aqua); background: #0b4355; }
.fw-info h3 a:hover, .more-project h3 a:hover, .ims-service__project h3 a:hover { color: var(--aqua); }
.fw-devices:focus-visible, .more-project__visual:focus-visible { outline: 2px solid var(--aqua); outline-offset: 6px; }
.ims-interior__screens > a { display: block; min-width: 0; }
/* Shared viewport controls occupy the outer rail gutter on desktop. */
.ims-back-to-top { position: fixed; right: max(12px, env(safe-area-inset-right)); bottom: max(20px, env(safe-area-inset-bottom)); z-index: 29; display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 1px solid #66dce880; border-radius: 6px; color: var(--aqua); background: linear-gradient(145deg, #0b3544ee, #03141ef5); backdrop-filter: blur(8px); box-shadow: inset 0 1px 0 #b3fff322, 0 5px 20px #00121b66; transition: color .2s, border-color .2s, box-shadow .2s; }
.ims-back-to-top svg { width: 22px; height: 22px; transition: transform .2s; }
.ims-back-to-top:hover { color: #c7fff6; border-color: var(--aqua); box-shadow: inset 0 1px 0 #b3fff340, 0 0 20px #66dce82b; }
.ims-back-to-top:hover svg { transform: translateY(-2px); }
.ims-back-to-top:focus-visible { outline: 3px solid var(--aqua); outline-offset: 3px; }
.modal-open .ims-back-to-top, body:has(.ims-header[data-mobile-open]) .ims-back-to-top { visibility: hidden; }
@media (max-width: 800px) {
  .ims-back-to-top { bottom: calc(84px + env(safe-area-inset-bottom)); right: max(18px, env(safe-area-inset-right)); }
  .js .proposal-tab { border-radius: 6px; }
}
@media (max-width: 550px) {
  .ims-back-to-top { right: max(12px, env(safe-area-inset-right)); }
  .cinema .button { font-size: 13px; font-weight: 800; min-height: 54px; padding: 13px 8px; gap: 6px; letter-spacing: 0; }
  .cinema .button > span { font-size: 16px; }
  .cinema .button-outline > span { display: none; }
  .cinema .button-row { align-items: stretch; }
  .button, .ims-footer__cta, .ims-inquiry .ims-inquiry__submit,
  .proposal-drawer form > .button { font-size: 13px; line-height: 1.45; min-height: 54px; }
  .js .proposal-tab { display: none; }
  .fw-actions { flex-wrap: wrap; }
  .fw-actions a { font-size: 11px; }
}
@media (prefers-reduced-motion: reduce) {
  .ims-back-to-top, .ims-back-to-top svg { transition: none; }
  .button, .ims-footer__cta, .ims-inquiry .ims-inquiry__submit, .cap-system .cap-card > a { transition: none; }
}
