/* Add your global styles here */

/* === Reviews archive + review card — migrated from PHP to native Etch (2026-06-24) === */
.reviews-archive__pagination{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding-block-start:var(--space-m,1.25rem);}
.reviews-archive__pagination-list{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;padding:0;margin:0;}
.reviews-archive__pagination-item .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:2.5rem;padding:.5rem .75rem;border:1px solid var(--base-light,#ccc);border-radius:.375rem;text-decoration:none;color:var(--base-ultra-dark,#0a0e2c);font-weight:500;}
.reviews-archive__pagination-item .page-numbers.current{background:var(--primary,#0a0e2c);color:var(--white,#fff);border-color:var(--primary,#0a0e2c);}
.reviews-archive__pagination-item .page-numbers:hover:not(.current){background:var(--base-ultra-light,#f5f5f5);}
.reviews-archive__pagination-meta{color:var(--base-medium,#666);font-size:var(--text-s);margin:0;}
.review-card .review-card__avatar{position:relative;width:48px;height:48px;flex-shrink:0;}
.review-card .review-card__photo{width:48px;height:48px;border-radius:50%;object-fit:cover;display:block;position:relative;background-color:#e8eaf0;font-size:0;color:transparent;text-indent:-9999px;overflow:hidden;}
.review-card .review-card__photo::after{content:"";position:absolute;inset:0;border-radius:50%;background-color:#e8eaf0;background-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Ccircle%20cx='12'%20cy='9'%20r='4'%20fill='%239aa3b2'/%3E%3Cpath%20d='M12%2014.5c-5%200-8%203.2-8%207.5h16c0-4.3-3-7.5-8-7.5z'%20fill='%239aa3b2'/%3E%3C/svg%3E");background-position:center;background-size:60%;background-repeat:no-repeat;}
.review-card .review-card__source-badge{position:absolute;bottom:-2px;right:-2px;width:20px;height:20px;background:var(--white);border-radius:50%;padding:2px;box-shadow:0 0 0 1px #dadce0;}
@media (max-width:480px){.reviews-archive__grid{grid-template-columns:1fr;}}

.review-card__reply {
  margin-top: 0.9rem;
  padding: 0.7rem 0.85rem;
  border-left: 3px solid var(--primary);
  background: #f5f6fa;
  border-radius: 6px;
}
.review-card__reply-label {
  display: block;
  font-size: var(--text-xs);
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--primary);
  margin-bottom: 0.2rem;
  text-transform: none;
}
.review-card__reply-text {
  color: #333333;
  margin: 0;
}
.review-card__reply { display: none !important; }
.review-card__reply[data-show-reply="true"] { display: block !important; }
.review-card__name a { color: inherit; text-decoration: none; }
.review-card__name a:hover { text-decoration: underline; }


/* SAP intro: two-paragraph responsive grid (two-field, Jul 10) */
.sp-intro__header{max-width:none;}
.sap-intro__desc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));gap:var(--space-m) var(--space-l);align-items:start;}
.sap-intro__desc-grid .sap-intro__sp-intro-description{white-space:pre-line;margin:0;}
.sap-intro__desc-grid .sap-intro__sp-intro-description:empty{display:none;}


/* ADA compliance space-count table (2026-07-18) */
.ada-table-wrap{overflow-x:auto;margin-block:var(--space-m);}
.ada-table{width:100%;border-collapse:collapse;}
.ada-table th{background:var(--primary);color:var(--white);text-align:left;font-weight:700;padding:0.7rem 0.9rem;vertical-align:top;}
.ada-table td{padding:0.85rem 0.9rem;vertical-align:top;border-block-start:1px solid var(--base-light);}
.ada-table tbody tr:nth-child(odd) td{background:var(--neutral-ultra-light);}

/* ADA page content rhythm (2026-07-18) */
.ada-page .content-width > * + * { margin-block-start: var(--space-m); }
.ada-page .content-width > h2 { margin-block-start: 0; }
.ada-page .content-width > h3 { margin-block-start: var(--space-l); }
.ada-page .content-width > h3 + p { margin-block-start: var(--space-xs); }

.ada-page .content-width > .flex--row { margin-block-start: var(--space-l); }

/* ada-cta-gap */
.ada-page .flex--row{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:var(--space-s);}

/* ada-table-readability */
.ada-table{table-layout:fixed;}
.ada-table th,.ada-table td{vertical-align:top;text-align:left;overflow-wrap:break-word;}
.ada-table th:nth-child(2),.ada-table td:nth-child(2),.ada-table th:nth-child(3),.ada-table td:nth-child(3){text-align:center;}
.ada-table th:nth-child(1),.ada-table td:nth-child(1){width:40%;}
.ada-table th:nth-child(2),.ada-table td:nth-child(2){width:30%;}
.ada-table th:nth-child(3),.ada-table td:nth-child(3){width:30%;}
@media (max-width:600px){.ada-table th,.ada-table td{padding:0.55rem 0.5rem;}}

/* ada-hero-buttons-mobile */
@media (max-width:600px){
  .ada-page .flex--row{flex-direction:column;align-items:center;}
  .ada-page .flex--row .btn{width:100%;max-width:22rem;}
}

/* ada-hero-desc-mobile */
@media (max-width:600px){
  
}


/* ada-cta-brand-orange (override light-section context flipping tertiary btn to navy) */
.ada-page .btn--tertiary:not(.btn--outline){--btn-background:var(--tertiary);--btn-background-hover:var(--tertiary-hover);--btn-text-color:var(--black);--btn-text-color-hover:var(--tertiary-ultra-light);}


/* ada-cta-brand-orange-force (ACSS light-section context sets navy via cascade layers; force brand orange) */
.ada-page a.btn--tertiary:not(.btn--outline){background-color:var(--tertiary)!important;color:var(--black)!important;}
.ada-page a.btn--tertiary:not(.btn--outline):hover{background-color:var(--tertiary-hover)!important;}

.video-showcase__grid{display:grid;gap:var(--space-l,2rem);align-items:center;}
@media(min-width:48rem){.video-showcase__grid{grid-template-columns:var(--grid-1-2);gap:var(--space-xl,3rem);}}
.video-showcase__media{margin:0;max-inline-size:24rem;margin-inline:auto;}
.video-showcase__video{inline-size:100%;block-size:auto;display:block;aspect-ratio:9/16;border-radius:12px;background:#000;}
.video-showcase__content{display:flex;flex-direction:column;gap:var(--space-s,.75rem);}
.video-showcase__heading{margin:0;}
.video-showcase__transcript{font-size:var(--text-s);opacity:.72;border-inline-start:3px solid var(--primary,#000066);padding-inline-start:var(--space-m,1.25rem);margin-block-start:var(--space-s,.75rem);}
.video-showcase__cta-group{display:flex;flex-direction:row;gap:var(--space-s,1rem);flex-wrap:wrap;align-items:center;}

/* === Accessibility (2026-07-22) === */
/* link-in-text-block fix: underline plain in-text links (were navy #000066 in #000000 body = 1.19:1, no cue). Nav/buttons/.review-card__name a untouched. */
p a:not([class]){text-decoration:underline;}
/* NOTE: eyebrow left at ACSS var(--tertiary) brand orange #F68B1F per Tommy (Jul 22): prefers bright orange over a WCAG-passing dark amber. Keeps the color-contrast flag on .eyebrow (~97 not 100). Bright orange on white cannot reach 4.5:1. */


.mosi-spotlight{background:var(--primary);color:var(--white);padding-block:var(--space-l);padding-inline:var(--gutter);}
.mosi-spotlight__inner{max-inline-size:var(--content-width,75rem);margin-inline:auto;display:grid;gap:var(--space-l);}
@media(min-width:62rem){.mosi-spotlight__inner{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;}}
.mosi-spotlight__content{display:flex;flex-direction:column;gap:var(--space-s);}
.mosi-spotlight__eyebrow{color:var(--tertiary);text-transform:uppercase;letter-spacing:.08em;font-weight:700;font-size:var(--text-s);}
.mosi-spotlight__quote{margin:0;border:0;padding:0;}
.mosi-spotlight__quote-text{font-size:var(--text-xl);font-weight:700;line-height:var(--heading-line-height);margin:0;}
.mosi-spotlight__cite{display:block;margin-block-start:var(--space-s);font-style:normal;font-weight:600;color:color-mix(in srgb,var(--white) 72%,transparent);font-size:var(--text-s);}
.mosi-spotlight__context{color:color-mix(in srgb,var(--white) 82%,transparent);margin:0;}
.mosi-spotlight__media{display:grid;grid-template-columns:1fr;gap:var(--space-s);} @media(min-width:48rem){.mosi-spotlight__media{grid-template-columns:1fr 1fr;}}
.mosi-spotlight__figure{margin:0;display:flex;flex-direction:column;gap:var(--space-xs);}
.mosi-spotlight__image{inline-size:100%;block-size:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius);display:block;}
.mosi-spotlight__figure-label{align-self:center;background:color-mix(in srgb,var(--white) 18%,transparent);color:var(--white);padding:.25em .9em;border-radius:var(--radius);font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.1em;}


.mosi-spotlight__quote{background:transparent;padding:0;border:0;border-radius:0;}


.mosi-spotlight__cite{display:block;margin-block-start:var(--space-s);font-style:normal;color:color-mix(in srgb,var(--white) 82%,transparent);font-weight:400;font-size:var(--text-s);}
.mosi-spotlight__cite-name{font-weight:700;color:var(--white);}


.entity-home{margin-block-start:var(--space-m);text-align:center;}
.entity-home__summary{display:inline-flex;align-items:center;cursor:default;list-style:none;color:var(--tertiary);font-size:var(--text-s);font-weight:600;letter-spacing:.02em;}
.entity-home__summary::-webkit-details-marker{display:none;}
.entity-home__list{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-xs) var(--space-l);margin-block-start:var(--space-s);}
.entity-home__link{color:var(--tertiary);font-size:var(--text-s);text-decoration:underline;text-underline-offset:2px;}
.entity-home__link:hover{color:var(--tertiary-hover);}


/* === Radio commercial transcript label (2026-08-02) === */
.video-showcase__transcript-label{font-size:var(--text-s);font-weight:600;margin-block:var(--space-s,.75rem) 0;}
.video-showcase__transcript{margin-block-start:0;}


/* === Focus ring visibility on dark surfaces (2026-08-04) === */
/* All 5 keyboard focus rings on dark surfaces now white. Measured after letting the
   transition settle: header phone CTA 17.62:1, Services toggle 17.62:1, nav links 17.62:1,
   footer quote CTA 20.67:1, the 7 footer social links 20.67:1. Was 1.00 to 1.17:1.
   MEASUREMENT TRAP, do not fall into it again: these elements carry `transition: all 0.3s`,
   so reading getComputedStyle().outlineColor immediately after .focus() returns the colour
   being faded FROM, not the final colour. It made a correct rule look completely broken and
   sent us chasing specificity, priority flags and inline styles for no reason.
   Always wait ~450ms after focusing before measuring. */
.header a.header__call:focus-visible,
.header button.etch-nav__button--dropdown-toggle:focus-visible,
.footer-alpha a.footer-alpha__cta:focus-visible,
.footer-alpha a.footer-alpha__socials-link:focus-visible {
  outline: 0.1875rem solid var(--white);
  outline-offset: 0.125rem;
}

/* Case study gallery (Nov 3 2026) */
.case-study__gallery{display:grid;grid-template-columns:1fr;gap:var(--space-m);align-items:start;}
@media(min-width:48rem){.case-study__gallery{grid-template-columns:1fr 1fr;}}
.case-study__stack{display:flex;flex-direction:column;gap:var(--space-m);}
.case-study__figure{margin:0;display:flex;flex-direction:column;gap:var(--space-xs);}
.case-study__figure--wide{grid-column:1/-1;}
.case-study__image,.case-study__video{display:block;inline-size:100%;block-size:auto;border-radius:var(--radius);}
.case-study__video{background:var(--bg-ultra-light);}
.case-study__caption{font-size:var(--text-s);color:var(--text-dark-muted);}
.case-study__body .mosi-spotlight__figure-label{background:var(--bg-ultra-light);color:var(--text-dark);}

/* Project card case study link (Nov 3 2026) */
.project-card__case{margin:var(--space-xs) 0 0;}
.project-card__case-link{font-size:var(--text-s);}


/* Paragraph standard, Nov 4 2026. Every paragraph, list item and FAQ question in the page content uses the size of the homepage opening paragraph (ACSS --text-l). Set once here, never per section. :where() keeps specificity at zero, so purposeful labels (badges, dates, eyebrows, captions) keep their own size. */
:where(main) :where(p, li, dd, summary):where(:not(.hero-badge *, .guide__meta *)) { font-size: var(--text-l); line-height: var(--text-line-height); }


/* Sticky quote button: hidden on the first screen, fades in after scrolling. */
@keyframes floating-quote-in {
  from { opacity: 0; visibility: hidden; }
  60% { opacity: 0; visibility: hidden; }
  to { opacity: 1; visibility: visible; }
}


/* rs-entity-home-css (the [rs_entity_home] shortcode styles, copied from the live homepage) */
.entity-home__tables{margin-block-start:1rem;}.entity-home__scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-block-end:1.5rem;max-width:100%;}.entity-home__table{border-collapse:collapse;width:100%;min-width:34rem;font-size:var(--text-s,0.875rem);line-height:1.4;}.entity-home__caption{caption-side:top;text-align:left;font-weight:600;padding:0 0 0.4rem;color:var(--tertiary,#F68B1F);}.entity-home__table th,.entity-home__table td{border:1px solid var(--neutral-medium,#d7d7d7);padding:0.35rem 0.6rem;text-align:left;vertical-align:top;}.entity-home__table th{font-weight:600;background:var(--neutral-ultra-light,#f4f4f4);}.entity-home__table code{font-size:0.9em;word-break:break-all;}

/* WordPress core parity: WP 6.7+ prints this inline on every live page (wp-img-auto-sizes-contain-inline-css). Without it a not-yet-loaded lazy image with sizes="auto" is laid out 300px wide. */
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
