/**
 * Shared interface polish approved in the September 2026 UI review.
 * Loaded after page styles so these rules can normalize otherwise separate
 * page implementations without changing WordPress editor content.
 */

:root {
  --cprint-ui-blue: #125eb5;
  --cprint-ui-ink: #123354;
  --cprint-ui-ease: cubic-bezier(.22, .61, .36, 1);
}

html {
  scroll-behavior: smooth;
}

main :is(h2, h3, [id]) {
  scroll-margin-top: 128px;
}

:where(a, button, input, select, textarea, summary):focus-visible {
  outline: 3px solid #4a91e2 !important;
  outline-offset: 4px !important;
}

/* Calm type scale and clearer content rhythm. */
.cprint-page-hero h1 {
  max-width: 1040px;
  font-size: clamp(36px, 4.3vw, 64px);
  line-height: 1.2;
  letter-spacing: -.025em;
  text-wrap: balance;
}

.cprint-page-hero .cprint-page-hero__content > p:not(.cprint-page-hero__eyebrow) {
  max-width: 740px;
  margin-top: 24px;
  font-size: clamp(16px, 1.35vw, 19px);
  line-height: 1.85;
}

.cprint-page-hero__overlay {
  background: linear-gradient(90deg, rgba(5, 20, 37, .87) 0%, rgba(7, 27, 49, .66) 49%, rgba(8, 29, 52, .12) 100%);
}

.cprint-page-hero__inner {
  gap: 28px;
}

.cprint-page-hero__content {
  padding-bottom: 24px;
}

:is(
  .cprint-printers-heading,
  .cprint-printers-faq__intro,
  .cprint-printers-contact__content,
  .cprint-3h420-heading,
  .cprint-3h420-contact__copy,
  .cprint-3h420-faq,
  .cprint-section-heading,
  .cprint-why__intro,
  .cprint-final-contact__content,
  .cprint-applications-heading,
  .cprint-applications-resources__header,
  .cprint-applications-faq__intro,
  .cprint-applications-contact__copy,
  .cprint-contact-heading,
  .cprint-contact-form-section__copy
) > h2 {
  font-size: clamp(28px, 2.8vw, 40px) !important;
  line-height: 1.35;
  letter-spacing: -.018em;
  text-wrap: pretty;
}

.cprint-printers-system h3 {
  font-size: clamp(28px, 2.8vw, 40px);
  line-height: 1.3;
}

.cprint-printers-heading--center {
  max-width: 900px;
  margin-inline: auto;
}

:is(.cprint-printers-section, .cprint-3h420-section, .cprint-applications-section) {
  padding-block: clamp(64px, 6vw, 88px);
}

:is(.cprint-printers-heading, .cprint-3h420-heading, .cprint-applications-heading) {
  margin-bottom: clamp(32px, 3.5vw, 48px);
}

.cprint-single-hero h1 {
  font-size: clamp(30px, 3.05vw, 46px);
  line-height: 1.32;
  letter-spacing: -.025em;
}

.cprint-entry-content h2 {
  margin-top: 2em;
  font-size: clamp(26px, 2.25vw, 34px);
  line-height: 1.45;
  letter-spacing: -.012em;
}

.cprint-entry-content h3 {
  font-size: clamp(21px, 1.8vw, 27px);
  line-height: 1.5;
}

.cprint-entry-content p {
  line-height: 1.85;
}

/* Buttons use colour plus a short press response instead of floating. */
.ui-action {
  min-height: 46px;
  border-radius: 7px !important;
  touch-action: manipulation;
  transition: background-color 150ms var(--cprint-ui-ease), color 150ms var(--cprint-ui-ease), border-color 150ms var(--cprint-ui-ease), box-shadow 150ms var(--cprint-ui-ease), transform 100ms ease-out !important;
  -webkit-tap-highlight-color: transparent;
  user-select: none;
}

.ui-action:is(:hover, :focus-visible) {
  box-shadow: none !important;
  transform: none !important;
}

.ui-action:active {
  transform: scale(.98) !important;
}

.ui-text-link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  gap: 0 !important;
  text-decoration-thickness: 1px;
  text-underline-offset: 5px;
  transition: color 150ms ease !important;
}

.ui-text-link:is(:hover, :focus-visible) {
  transform: none !important;
}

.cprint-printers-resource-item__body {
  grid-template-columns: minmax(0, 1fr);
  gap: 8px;
}

.cprint-printers-resource-item__body strong {
  color: var(--cprint-ui-ink);
  font-size: 20px;
  line-height: 1.55;
  letter-spacing: -.01em;
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
}

.cprint-printers-resource-item a {
  border-radius: 5px;
  transition: background-color 150ms ease, color 150ms ease;
}

.cprint-printers-resource-item__media {
  overflow: hidden;
  border-radius: 6px;
}

.cprint-printers-resource-item__media img {
  transition: opacity 160ms ease;
}

.cprint-printers-resource-item a:hover img {
  transform: none !important;
}

@media (hover: hover) and (pointer: fine) {
  .ui-action:hover { filter: brightness(1.08); }
  .ui-text-link:hover { text-decoration: underline !important; }
  .cprint-printers-resource-item a:hover { background: #f4f8fc; }
  .cprint-printers-resource-item a:hover strong {
    color: var(--cprint-ui-blue);
    text-decoration: underline;
  }
}

.cprint-printers-resource-item a:focus-visible strong {
  color: var(--cprint-ui-blue);
  text-decoration: underline;
}

.cprint-applications-resource--rail > a {
  grid-template-columns: clamp(96px, 8vw, 118px) minmax(0, 1fr);
  padding-inline-end: 16px;
}

/* Replace separate page animation systems with one restrained section entrance. */
html body :is(
  [data-cprint-reveal],
  [data-cprint-3h420-reveal],
  [data-cprint-applications-reveal],
  [data-cprint-about-reveal],
  [data-cprint-sj1200-reveal],
  [data-cprint-wax-reveal],
  [data-cprint-jewelry-reveal],
  [data-cprint-investment-reveal],
  [data-cprint-sand-reveal]
) {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}

html.cprint-ui-motion body .ui-reveal-ready {
  transition: opacity 440ms var(--cprint-ui-ease), transform 440ms var(--cprint-ui-ease) !important;
}

html.cprint-ui-motion body .ui-reveal-ready:not(.ui-in-view) {
  opacity: 0 !important;
  transform: translate3d(0, 16px, 0) !important;
  will-change: opacity, transform;
}

html.cprint-ui-motion body .ui-reveal-ready.ui-in-view {
  opacity: 1 !important;
  transform: none !important;
  will-change: auto;
}

/* Long-form article navigation. */
.ui-toc {
  overflow: hidden;
  margin: 0 0 36px;
  padding: 0;
  border: 1px solid #dae4ee;
  border-radius: 10px;
  background: #f7f9fc;
}

.ui-toc summary {
  position: relative;
  display: flex;
  align-items: center;
  padding: 19px 22px;
  gap: 12px;
  color: var(--cprint-ui-ink);
  font-size: 17px;
  font-weight: 700;
  line-height: 1.5;
  list-style: none;
  cursor: pointer;
  user-select: none;
}

.ui-toc summary::-webkit-details-marker { display: none; }

.ui-toc summary::after {
  margin-inline-start: auto;
  color: #64768a;
  content: '+';
  font-size: 23px;
  font-weight: 400;
}

.ui-toc[open] summary::after { content: '−'; }

.ui-toc summary small {
  color: #63768a;
  font-size: 12px;
  font-weight: 400;
}

.cprint-entry-content .ui-toc ol {
  display: grid;
  grid-template-columns: 1fr 1fr;
  margin: 0;
  padding: 0 22px 18px;
  gap: 1px 24px;
  list-style: none;
  counter-reset: toc;
}

.cprint-entry-content .ui-toc li {
  display: flex;
  align-items: baseline;
  margin: 0;
  padding: 0;
  gap: 10px;
  font-size: 14px;
  line-height: 1.6;
  counter-increment: toc;
}

.ui-toc li::before {
  flex: none;
  color: #71869a;
  content: counter(toc, decimal-leading-zero);
  font: 11px/1.6 system-ui, sans-serif;
}

.cprint-entry-content .ui-toc a {
  display: block;
  padding: 9px 0;
  border: 0;
  color: #304e6d;
  font-size: 14px;
  line-height: 1.65;
  text-decoration: none;
}

.ui-toc a:is(:hover, [aria-current="location"]) {
  color: var(--cprint-ui-blue) !important;
  text-decoration: underline !important;
  text-underline-offset: 4px;
}

.ui-toc a[aria-current="location"] { font-weight: 650; }

.ui-table-scroll {
  overflow-x: auto;
  margin-block: 24px;
  -webkit-overflow-scrolling: touch;
}

.ui-table-scroll table {
  min-width: 560px;
  margin: 0;
}

.ui-reading-progress {
  position: fixed;
  z-index: 120;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: #2876cb;
  pointer-events: none;
  transform: scaleX(0);
  transform-origin: left;
}

/* Larger touch targets and stable focus feedback for project forms. */
.cprint-project-form-embed :is(input[type="text"], input[type="email"], input[type="tel"], input[type="url"], select, textarea) {
  min-height: 48px !important;
  padding: 12px 14px !important;
  border-radius: 7px !important;
  background: #fff;
  font-size: 16px !important;
  line-height: 1.5 !important;
  transition: border-color 150ms ease, box-shadow 150ms ease;
}

.cprint-project-form-embed :is(input, select, textarea):focus {
  border-color: #337ac4 !important;
  box-shadow: 0 0 0 3px rgba(51, 122, 196, .1) !important;
}

.cprint-project-form-embed label {
  font-size: 14px !important;
  line-height: 1.55 !important;
}

.cprint-project-form-embed textarea { min-height: 144px !important; }

.cprint-project-form-embed :is(input[type="submit"], button[type="submit"]) {
  min-height: 48px !important;
  border-radius: 7px !important;
  font-size: 15px !important;
}

.cprint-mobile-accordion-trigger,
.cprint-menu-toggle,
.cprint-menu-close {
  min-width: 44px;
  min-height: 44px;
  touch-action: manipulation;
}

/* Short, retargetable home carousel crossfade. */
.cprint-hero__scene,
.cprint-hero__scene.is-active,
.cprint-hero__scene.is-entering,
.cprint-hero__scene.is-exiting {
  visibility: visible;
  opacity: 0;
  pointer-events: none;
  transition: opacity 320ms var(--cprint-ui-ease) !important;
}

.cprint-hero__scene.is-active {
  z-index: 2;
  opacity: 1;
  pointer-events: auto;
}

.cprint-hero__scene :is(.cprint-hero__copy > *, .cprint-hero__stage, .cprint-tct__motion) {
  animation: none !important;
}

.cprint-hero__background {
  transition: opacity 320ms var(--cprint-ui-ease) !important;
}

.cprint-hero__controls { z-index: 6 !important; }

.cprint-hero__control {
  min-width: 44px;
  min-height: 44px;
  touch-action: manipulation;
}

.cprint-hero__dots { gap: 0 !important; }

.cprint-hero__dot {
  position: relative;
  width: 32px !important;
  height: 44px !important;
  margin: 0 !important;
  padding: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  opacity: 1 !important;
}

.cprint-hero__dot::after {
  position: absolute;
  top: 18px;
  left: 12px;
  width: 8px;
  height: 8px;
  border-radius: 10px;
  background: currentColor;
  content: '';
  opacity: .35;
  transition: opacity 150ms ease, transform 150ms ease;
}

.cprint-hero__dot.is-active::after {
  opacity: 1;
  transform: scale(1.3);
}

.cprint-hero--plus .cprint-hero__scene--plus .cprint-hero__specs small { font-size: 12px; }
.cprint-hero__scene[data-ui-instant],
.cprint-hero__background[data-ui-instant] { transition: none !important; }

@media (max-width: 767px) {
  main :is(h2, h3, [id]) { scroll-margin-top: 90px; }

  .cprint-page-hero h1 {
    font-size: clamp(32px, 7.8vw, 42px);
    line-height: 1.28;
    letter-spacing: -.02em;
  }

  .cprint-page-hero .cprint-page-hero__content > p:not(.cprint-page-hero__eyebrow) {
    margin-top: 20px;
    font-size: 16px;
    line-height: 1.8;
  }

  .cprint-page-hero { min-height: 510px; }
  .cprint-page-hero__overlay { background: linear-gradient(90deg, rgba(5, 20, 37, .85), rgba(7, 27, 49, .52)); }
  .cprint-page-hero__content { padding-bottom: 0; }

  .cprint-single-hero h1 {
    font-size: 30px;
    line-height: 1.4;
  }

  .cprint-entry-content .ui-toc ol {
    grid-template-columns: 1fr;
    padding: 0 18px 15px;
  }

  .ui-toc summary { padding: 17px 18px; }
  .ui-toc summary small { font-size: 11px; }
  .cprint-printers-resource-item__body strong { font-size: 17px; }
  .cprint-hero--plus .cprint-hero__scene--plus .cprint-hero__specs small { font-size: 10px; letter-spacing: 0; }
  .ui-table-scroll table { font-size: 14px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }

  .ui-action:active { transform: none !important; }

  html.cprint-ui-motion body .ui-reveal-ready {
    opacity: 1 !important;
    transform: none !important;
    transition-duration: .01ms !important;
  }
}
