:root { --hc-radius-shell: 2rem; --hc-shadow-float: 0 24px 70px rgb(0 0 0 / .12); }
html { scroll-behavior: smooth; }
body { margin: 0; }
.hc-shell { width: min(calc(100% - 2rem), 1440px); margin-inline: auto; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *,*::before,*::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; } }

/* Phase 4 — reusable component primitives. Final art direction remains intentionally unfrozen. */
.hc-section { padding-block: var(--wp--preset--spacing--xl); }
.hc-kicker { letter-spacing: .14em; text-transform: uppercase; font-size: var(--wp--preset--font-size--small); }
.hc-hero { position: relative; overflow: clip; }
.hc-hero__content { width: 100%; }
.hc-media img, .hc-project-proof img { display: block; width: 100%; height: auto; }
.hc-floating-cards__track { gap: var(--wp--preset--spacing--m); }
.hc-card { overflow: clip; border-radius: var(--hc-radius-shell); background: var(--wp--preset--color--paper); box-shadow: var(--hc-shadow-float); }
.hc-card > :not(figure) { margin-inline: var(--wp--preset--spacing--m); }
.hc-card > :last-child { margin-bottom: var(--wp--preset--spacing--m); }
.hc-card figure { margin: 0; }
.hc-card img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.hc-process__stages { gap: var(--wp--preset--spacing--m); }
.hc-final-cta { text-align: center; }
.hc-final-cta .wp-block-buttons { justify-content: center; }
@media (max-width: 781px) {
  .hc-section { padding-block: var(--wp--preset--spacing--l); }
  .hc-hero--home { min-height: 72vh !important; }
  .hc-hero--internal { min-height: 48vh !important; }
}

/* Phase 5 — T06 Minimal / Utility. No hero, cards, or homepage motion. */
.hc-main--minimal {
  min-height: 62vh;
  display: grid;
  align-items: center;
  padding-block: var(--wp--preset--spacing--xl);
}
.hc-main--minimal > .wp-block-post-content {
  width: 100%;
}
.hc-utility-confirmation {
  padding-inline: var(--wp--preset--spacing--m);
}
.hc-utility-confirmation > * {
  margin-block-start: 0;
  margin-block-end: var(--wp--preset--spacing--m);
}
.hc-utility-confirmation > :last-child {
  margin-block-end: 0;
}
@media (max-width: 781px) {
  .hc-main--minimal {
    min-height: 54vh;
    padding-block: var(--wp--preset--spacing--l);
  }
}

/* Phase 6 — T05 Conversion / Start Your Project. Provider-neutral form presentation. */
.hc-main--start-project {
  min-height: 70vh;
  padding-block: var(--wp--preset--spacing--l) var(--wp--preset--spacing--xl);
}
.hc-start-project { padding-inline: var(--wp--preset--spacing--m); }
.hc-project-steps {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--wp--preset--spacing--s) var(--wp--preset--spacing--m);
  margin-block: var(--wp--preset--spacing--l);
  padding-left: 1.5rem;
}
.hc-project-form-slot {
  margin-block-start: var(--wp--preset--spacing--l);
  padding: var(--wp--preset--spacing--l);
  border: 1px solid color-mix(in srgb, currentColor 18%, transparent);
  border-radius: var(--hc-radius-shell);
}
.hc-project-form-slot__label { letter-spacing: .14em; font-size: var(--wp--preset--font-size--small); }
.hc-project-form-slot :where(input:not([type="checkbox"]):not([type="radio"]), select, textarea) {
  box-sizing: border-box;
  width: 100%;
  min-height: 3rem;
  padding: .75rem 1rem;
  border: 1px solid color-mix(in srgb, currentColor 24%, transparent);
  border-radius: .5rem;
  background: transparent;
  color: inherit;
  font: inherit;
}
.hc-project-form-slot textarea { min-height: 9rem; resize: vertical; }
.hc-project-form-slot :where(input, select, textarea, button):focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 3px;
}
@media (max-width: 781px) {
  .hc-main--start-project { padding-block: var(--wp--preset--spacing--m) var(--wp--preset--spacing--l); }
  .hc-project-steps { grid-template-columns: 1fr; }
  .hc-project-form-slot { padding: var(--wp--preset--spacing--m); }
}

/* Phase 7 — T02 Editorial / Service family. Shared composition, page-owned content. */
.hc-main--editorial-service { overflow: clip; }
.hc-main--editorial-service > .wp-block-post-content { margin-block-start: 0; }
.hc-section--editorial > :first-child { margin-block-start: 0; }
.hc-service-flex { align-items: center; gap: var(--wp--preset--spacing--l); }
.hc-service-flex figure { margin: 0; }
.hc-service-flex img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; }
@media (max-width: 781px) {
  .hc-service-flex { gap: var(--wp--preset--spacing--m); }
  .hc-service-flex img { aspect-ratio: 4 / 5; }
}

/* Phase 8 — T03 Projects Archive + T04 Single Project presentation. Data ownership remains outside the theme. */
.hc-projects-archive__intro { margin-block-end: var(--wp--preset--spacing--l); }
.hc-project-query .wp-block-post-template { gap: var(--wp--preset--spacing--l) var(--wp--preset--spacing--m); }
.hc-project-card { min-width: 0; }
.hc-project-card .wp-block-post-featured-image { margin: 0 0 var(--wp--preset--spacing--s); overflow: clip; border-radius: calc(var(--hc-radius-shell) * .6); }
.hc-project-card .wp-block-post-featured-image img { display: block; width: 100%; object-fit: cover; }
.hc-project-card .wp-block-post-title { margin-block: 0 var(--wp--preset--spacing--xs); }
.hc-project-card .wp-block-post-excerpt { margin-block: 0; }
.hc-project-story__header { padding-inline: var(--wp--preset--spacing--m); }
.hc-project-story > .wp-block-post-featured-image { margin: 0; }
.hc-project-story > .wp-block-post-featured-image img { display: block; width: 100%; object-fit: cover; }
.hc-project-story__content { padding-inline: var(--wp--preset--spacing--m); }
@media (max-width: 781px) {
  .hc-project-query .wp-block-post-template { grid-template-columns: 1fr; }
  .hc-project-story__header, .hc-project-story__content { padding-inline: var(--wp--preset--spacing--s); }
}

/* Phase 9 — T01 Homepage assembly. Final art direction remains controlled by approved design work. */
.hc-main--home { overflow: clip; }
.hc-header--home .custom-logo { transform-origin: left center; transition: transform .45s ease, opacity .45s ease; }
.hc-header--home.is-scrolled .custom-logo { transform: translateY(-.2rem) scale(.92); }
.hc-expertise__sequence { gap: var(--wp--preset--spacing--s); margin-block-start: var(--wp--preset--spacing--l); }
.hc-expertise__sequence > * { margin: 0; padding-block: var(--wp--preset--spacing--s); border-top: 1px solid color-mix(in srgb, currentColor 18%, transparent); }
.hc-perspective { gap: var(--wp--preset--spacing--l); align-items: end; }
.hc-perspective > .wp-block-heading { max-width: 18ch; }
.hc-perspective__side { letter-spacing: .08em; line-height: 1.05; }
.hc-selected-work__list { display: grid; gap: var(--wp--preset--spacing--xl); }
.hc-work-item figure { margin: 0 0 var(--wp--preset--spacing--m); }
.hc-work-item > :not(figure) { max-width: 760px; }
.hc-shaped { text-align: center; }
@media (max-width: 781px) {
  .hc-perspective { align-items: start; }
  .hc-selected-work__list { gap: var(--wp--preset--spacing--l); }
}
@media (prefers-reduced-motion: reduce) {
  .hc-header--home .custom-logo, .hc-header--home.is-scrolled .custom-logo { transform: none; }
}

/* Phase 10 — responsive + interaction hardening. Shared fixes only; no page-specific patch stack. */
*, *::before, *::after { box-sizing: border-box; }
html { overflow-x: clip; }
body { overflow-wrap: break-word; }
:where(img, video, iframe, svg) { max-width: 100%; }
:where(button, input, select, textarea) { font: inherit; }
:where(a, button, input, select, textarea, [tabindex]):focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.hc-shell, .hc-section, .hc-main { min-width: 0; }
.hc-header--home, .hc-header--standard { position: relative; z-index: 20; }
.hc-floating-cards__track > *, .hc-process__stages > *, .hc-perspective > *, .hc-service-flex > * { min-width: 0; }
.hc-card a, .hc-final-cta a, .hc-mobile-cta a { min-height: 44px; }
.hc-media img, .hc-project-proof img, .hc-work-item img, .hc-hero img { max-inline-size: 100%; }

/* Fluid type/spacing protects intermediate widths without inventing per-device controls. */
.hc-hero :where(h1,h2), .hc-perspective > .wp-block-heading, .hc-shaped .wp-block-heading {
  text-wrap: balance;
}
.hc-hero--home { min-height: clamp(34rem, 82svh, 64rem); }
.hc-hero--internal { min-height: clamp(24rem, 56svh, 44rem); }

/* Tablet proof band. */
@media (min-width: 782px) and (max-width: 1024px) {
  .hc-shell { width: min(calc(100% - 3rem), 1320px); }
  .hc-floating-cards__track, .hc-process__stages { gap: var(--wp--preset--spacing--s); }
  .hc-perspective, .hc-service-flex { gap: var(--wp--preset--spacing--m); }
}

/* Mobile/touch proof band. */
@media (max-width: 781px) {
  .hc-shell { width: min(calc(100% - 1.25rem), 1440px); }
  .hc-floating-cards__track, .hc-process__stages { gap: var(--wp--preset--spacing--s); }
  .hc-floating-cards__track > *, .hc-process__stages > * { flex-basis: 100% !important; }
  .hc-perspective, .hc-service-flex { flex-direction: column; }
  .hc-card a, .hc-final-cta a, .hc-mobile-cta a { min-height: 48px; }
}

/* Short landscape phones: protect content from viewport-height traps. */
@media (max-height: 520px) and (orientation: landscape) {
  .hc-hero--home, .hc-hero--internal { min-height: 30rem !important; }
  .hc-main--minimal { min-height: auto; }
}

/* Motion is enhancement only. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; }
}
