/* Shared editorial vocabulary and portfolio sections. Mobile first. */
.screen-reader-text { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.orly-skip-link { position: fixed; inset: 0 auto auto 1rem; transform: translateY(-150%); padding: 1rem; background: var(--color-white); color: var(--color-background); z-index: 100000; }
.orly-skip-link:focus { transform: none; }
.orly-site-header { background: var(--color-background); z-index: 50; }
.orly-site-header--sticky { position: sticky; top: 0; }
.admin-bar .orly-site-header--sticky { top: 32px; }
.orly-site-header__inner { display: flex; align-items: center; flex-wrap: wrap; gap: 1rem; padding-block: 0.75rem; border-bottom: 1px solid var(--color-border); }
.orly-brand { font-size: 1.5rem; font-weight: 700; text-decoration: none; }
.orly-site-header .custom-logo { width: auto; max-width: 9rem; max-height: 2.5rem; }
.orly-site-header .orly-brand { font-size: 1.25rem; }
.orly-site-header .orly-button { min-height: 44px; padding: 0.5rem 0.875rem; font-size: 0.8125rem; }
.orly-site-header .orly-site-nav a { font-size: 0.875rem; }
.orly-site-nav { width: 100%; order: 3; }
.orly-site-nav[hidden], .orly-menu-toggle[hidden] { display: none; }
.orly-site-nav ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.5rem; }
.orly-site-nav a { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; color: var(--color-text-secondary); position: relative; }
.orly-site-nav a:hover, .orly-site-nav a:focus-visible, .orly-site-nav .current-menu-item > a { color: var(--color-text-primary); }
.orly-site-nav .current-menu-item > a::after { content: ''; width: 1.25rem; height: 2px; background: var(--color-accent); position: absolute; bottom: 0; left: 0; }
.orly-site-nav .sub-menu { padding-inline-start: 1rem; }
.orly-menu-toggle { margin-inline-start: auto; min-height: 44px; background: var(--color-surface); color: inherit; border: 1px solid var(--color-border); padding: 0.5rem 1rem; }
.orly-site-footer { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-25); padding-block: var(--space-40); margin-block-start: var(--section-space-60); border-top: 1px solid var(--color-border); }
.orly-site-footer .custom-logo { max-width: 10rem; max-height: 3rem; width: auto; }
.orly-site-footer p { font-size: 0.75rem; color: var(--color-text-secondary); }
.orly-accent, .orly-number { color: var(--color-accent); }
.orly-eyebrow, .orly-number, .orly-hero__eyebrow, .orly-text-image__eyebrow { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; }
.orly-arrow-link { display: inline-flex; align-items: center; gap: 1rem; min-height: 44px; font-size: 0.875rem; font-weight: 600; text-decoration: none; border-bottom: 1px solid var(--color-border); }
.orly-arrow-link span { color: var(--color-accent); }
.orly-arrow-link:hover { border-color: var(--color-accent); }
.orly-section { padding-block: var(--section-space-40); }
.orly-section--mb-20 { margin-block-end: var(--section-space-20); }
.orly-section-header { display: grid; gap: var(--space-20); margin-block-end: var(--space-40); }
.orly-section-header:last-child { margin-block-end: 0; }
.orly-section-header h2 { font-size: var(--font-size-h2); max-width: 24ch; }
.orly-section-header__description { max-width: 50ch; color: var(--color-text-secondary); }
.orly-tags { display: flex; flex-wrap: wrap; gap: 0.5rem; list-style: none; margin: 0; padding: 0; }
.orly-tags li, .orly-badge { border: 1px solid var(--color-border); padding: 0.25rem 0.5rem; font-size: 0.75rem; color: var(--color-text-secondary); width: fit-content; }
.orly-prose { white-space: pre-line; }
.orly-section, .orly-cards, .orly-site-header, .orly-site-footer { overflow-wrap: anywhere; }
.orly-section .orly-container--full { padding-inline: var(--container-gutter); }
.orly-tools__grid, .orly-steps__grid { gap: var(--space-20); }
.orly-tool { min-width: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; padding: var(--space-25); border: 1px solid var(--color-border); background: var(--color-surface); }
.orly-tool img { width: 2.5rem; height: 2.5rem; object-fit: contain; }
.orly-tool h3 { font-size: 0.875rem; letter-spacing: 0; }
.orly-tool p { width: 100%; color: var(--color-text-secondary); font-size: 0.875rem; }
.orly-steps__grid { list-style: none; padding: 0; margin: 0; }
.orly-step { display: flex; flex-direction: column; gap: 1rem; }
.orly-step h3 { border-top: 1px solid var(--color-border); padding-top: 1rem; font-size: 1rem; }
.orly-step p:not(.orly-number) { color: var(--color-text-secondary); font-size: 0.875rem; }
.orly-experience, .orly-education, .orly-contact__info, .orly-contact__form { background: var(--color-surface); border: 1px solid var(--color-border); padding: var(--section-space-40); }
.orly-experience__header { display: grid; gap: var(--space-20); }
.orly-experience__header h2 { font-size: var(--font-size-h3); }
.orly-experience__header h3 { font-size: 1.25rem; }
.orly-experience__grid { gap: var(--space-40); }
.orly-experience__header + .orly-experience__grid { margin-top: var(--space-40); padding-top: var(--space-30); border-top: 1px solid var(--color-border); }
.orly-experience__grid section { display: flex; flex-direction: column; gap: 1rem; }
.orly-experience__grid h3 { font-size: 1rem; }
.orly-experience p:not(.orly-accent), .orly-experience li { color: var(--color-text-secondary); }
.orly-experience ul:not(.orly-tags) { padding-inline-start: 1.25rem; margin: 0; }
.orly-experience li + li { margin-top: 0.5rem; }
.orly-education { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-20); }
.orly-education h2 { font-size: 1rem; letter-spacing: -0.02em; }
.orly-education p:not(.orly-eyebrow) { font-size: 0.875rem; color: var(--color-text-secondary); }
.orly-cta-banner { display: flex; flex-direction: column; align-items: flex-start; justify-content: space-between; gap: var(--space-30); padding: var(--section-space-40); background: linear-gradient(100deg,var(--color-surface-raised) 50%, color-mix(in srgb,var(--color-accent-dark) 16%,var(--color-surface-raised))); border: 1px solid var(--color-border); }
.orly-cta-banner .orly-section-header { margin: 0; grid-template-columns: minmax(0,1fr); }
.orly-cta-banner .orly-section-header__description { grid-column: 1; justify-self: start; }
.orly-cta-banner h2 { font-size: clamp(1.75rem, 1.3rem + 2vw, 2.75rem); }
.orly-cta-banner > .orly-button { flex-shrink: 0; }
.orly-contact { display: grid; gap: var(--space-30); }
.orly-contact h2 { font-size: var(--font-size-h3); }
.orly-contact__info { align-self: start; display: grid; gap: var(--space-25); }
.orly-contact__cv { display: grid; gap: var(--space-20); border-top: 1px solid var(--color-border); padding-top: var(--space-30); }
.orly-contact__cv h3 { font-size: 1.125rem; }
.orly-contact__notice { margin-block: var(--space-25); padding: 1rem; border-left: 2px solid var(--color-accent); background: color-mix(in srgb,var(--color-accent) 5%,transparent); color: var(--color-text-secondary); font-size: 0.875rem; }
.orly-contact fieldset { border: 0; margin: 0; padding: 0; }
.orly-contact__fields { display: grid; gap: var(--space-25); margin-bottom: var(--space-25); }
.orly-contact__field { display: grid; gap: 0.5rem; min-width: 0; }
.orly-contact input, .orly-contact textarea { width: 100%; min-width: 0; padding: 1rem; border: 1px solid var(--color-border); background: var(--color-surface-raised); color: var(--color-text-primary); border-radius: var(--radius-small); }
.orly-contact textarea { resize: vertical; }
/* Existing blocks retain explicit custom color overrides. */
.orly-hero .orly-hero__text { color: var(--orly-hero-text-color, var(--color-text-secondary)); max-width: 55ch; }
.orly-hero__microtext { color: var(--color-text-secondary); font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.1em; }
.orly-hero--split .orly-hero__media { display: block; position: relative; aspect-ratio: 4 / 3; }
.orly-hero--split .orly-hero__media img { position: absolute; width: 100%; height: 100%; object-fit: cover; object-position: var(--orly-hero-focal-point,50% 50%); }
.orly-hero--split > .orly-hero__background, .orly-hero--split > .orly-hero__overlay { display: none; }
.orly-text-image .orly-text-image__text { color: var(--orly-text-image-text-color, var(--color-text-secondary)); }
.orly-cards .orly-section-header h2 { color: var(--orly-cards-title,var(--color-text-primary)); font-size: var(--orly-title-size,var(--font-size-h2)); line-height: var(--orly-title-line-height,1.2); }
.orly-cards .orly-section-header__description { color: var(--orly-cards-text,var(--color-text-secondary)); font-size: var(--orly-text-size,var(--font-size-body)); }
.orly-cards .orly-section-header .orly-eyebrow { color: var(--orly-cards-eyebrow,var(--color-text-secondary)); font-size: var(--orly-eyebrow-size,0.75rem); }
.orly-card__icon { width: 1.75rem; height: 1.75rem; object-fit: contain; }
.orly-card__secondary { border-top: 1px solid var(--color-border); padding-top: var(--space-20); font-size: 0.875rem; }
.orly-cards--project .orly-card__eyebrow { border: 1px solid var(--color-border); padding: 0.25rem 0.5rem; font-size: 0.75rem; }
.orly-cards--project .orly-card__title { font-size: 1.25rem; }
.orly-cards--project .orly-card__text { color: var(--orly-card-text,var(--color-text-secondary)); }
.orly-cards--expertise .orly-card__title { font-size: 1.125rem; }
.orly-cards--expertise .orly-card__text { font-size: 0.875rem; }
@media (min-width: 48rem) {
  .orly-tools__grid, .orly-steps__grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .orly-hero--split .orly-hero__media { aspect-ratio: auto; }
  .orly-experience__tools, .orly-experience__projects { grid-column: 1 / -1; padding-top: var(--space-25); border-top: 1px solid var(--color-border); }
  .orly-contact__fields { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .orly-contact__field--subject, .orly-contact__field--message { grid-column: 1 / -1; }
}
@media (min-width: 64rem) {
  .orly-site-header__inner { flex-wrap: nowrap; }
  .orly-site-nav { order: 0; width: auto; margin-inline-start: auto; }
  .orly-site-nav > ul { flex-direction: row; gap: 1rem; }
  .orly-site-nav li { position: relative; }
  .orly-site-nav .sub-menu { display: none; position: absolute; min-width: 13rem; padding: 1rem; background: var(--color-surface); border: 1px solid var(--color-border); }
  .orly-site-nav li:hover > .sub-menu, .orly-site-nav li:focus-within > .sub-menu { display: flex; }
  .orly-tools__grid { grid-template-columns: repeat(5,minmax(0,1fr)); }
  .orly-steps__grid { grid-template-columns: repeat(auto-fit,minmax(min(100%,12rem),1fr)); }
  .orly-tools--families { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .orly-cta-banner { flex-direction: row; align-items: center; }
  .orly-contact { grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr); }
  .orly-contact--form-only { grid-template-columns: minmax(0,1fr); }
  .orly-section-header { grid-template-columns: minmax(0,1fr) minmax(0,0.65fr); align-items: end; }
  .orly-section-header .orly-eyebrow { grid-column: 1 / -1; }
  .orly-section-header h2 { grid-column: 1; }
  .orly-section-header__description, .orly-section-header .orly-arrow-link { grid-column: 2; justify-self: end; }
  .orly-section--section-header .orly-section-header:has(> h2:only-child) { grid-template-columns: 1fr; }
  .orly-cards--expertise .orly-cards__grid { grid-template-columns: repeat(5,minmax(0,1fr)); gap: 1rem; }
  .orly-cards--expertise-featured .orly-cards__grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0; }
  .orly-cards--expertise .orly-card, .orly-cards--expertise-featured .orly-card { grid-column: auto; grid-row: auto; }
  .orly-cards--expertise-featured .orly-card:first-child { grid-column: 1 / -1; }
  .orly-hero--intro-split .orly-hero__content { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); align-items: end; }
  .orly-hero--intro-split .orly-hero__eyebrow { grid-column: 1 / -1; }
  .orly-hero--intro-split .orly-hero__title { grid-column: 1; }
  .orly-hero--intro-split .orly-hero__text { grid-column: 2; }
}
@media (min-width: 80rem) { .orly-site-header__inner { gap: var(--space-20); } }
@media (max-width: 48.875rem) { .admin-bar .orly-site-header--sticky { top: 46px; } }
@media (max-width: 37.5rem) { .admin-bar .orly-site-header--sticky { top: 0; } }

.orly-media-placeholder { display: flex; align-items: center; justify-content: center; min-height: 12rem; height: 100%; background: var(--color-surface-raised); border: 1px solid var(--color-border); color: var(--color-text-secondary); font-size: 0.875rem; }
.orly-hero__media .orly-media-placeholder { position: absolute; inset: 0; }
.orly-card > .orly-media-placeholder { height: auto; flex: 0 0 auto; }

.orly-cards--project .orly-card { position: relative; }
.orly-cards--project .orly-card__body > .orly-number { position: absolute; top: 0; left: 0; background: var(--color-background); color: var(--color-text-primary); padding: 0.75rem; }
.orly-cards--project .orly-card:not(:has(.orly-card__media)) .orly-card__body > .orly-number { position: static; padding: 0; background: transparent; }
.orly-experience-summary { display: grid; gap: var(--space-40); }
@media (min-width: 64rem) { .orly-experience-summary { grid-template-columns: repeat(2,minmax(0,1fr)); align-items: center; } .orly-experience-summary .orly-section-header { display: flex; flex-direction: column; align-items: flex-start; margin: 0; } }

/* Section Header only: conditional columns, aligned starts, CTA at the foot. */
.orly-section-header--editorial { grid-template-columns: minmax(0,1fr); align-items: start; }
.orly-section-header--editorial h2 { max-width: var(--orly-section-title-width,20ch); font-size: var(--orly-section-title-size,var(--font-size-h2)); }
.orly-section-header--editorial .orly-section-header__description { font-size: var(--orly-section-intro-size,1.125rem); margin: 0; }
.orly-section-header__aside { min-width: 0; display: flex; flex-direction: column; gap: var(--space-25); align-self: stretch; }
.orly-section-header__cta { margin-block-start: auto; }
.orly-formations__grid { gap: var(--space-25); }
.orly-formation { min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; padding: var(--section-space-30); border: 1px solid var(--color-border); background: var(--color-surface); }
.orly-formation h3 { font-size: var(--font-size-h3); }
.orly-formation p:not(.orly-eyebrow) { color: var(--color-text-secondary); }
@media (min-width: 64rem) {
  .orly-section-header--editorial.orly-section-header--columns { grid-template-columns: minmax(0,1fr) minmax(0,0.8fr); }
  .orly-section-header--columns > .orly-section-header__aside { grid-column: 2; }
  .orly-section-header--editorial > .orly-eyebrow { grid-column: 1 / -1; }
}
.orly-section-header--titleWidth-16 { --orly-section-title-width: 16ch; }
.orly-section-header--titleWidth-20 { --orly-section-title-width: 20ch; }
.orly-section-header--titleWidth-24 { --orly-section-title-width: 24ch; }
.orly-section-header--headingSize-28 { --orly-section-title-size: clamp(1.75rem, 1.7500vw + 1rem, 1.75rem); }
.orly-section-header--headingSize-32 { --orly-section-title-size: clamp(1.875rem, 2.0000vw + 1rem, 2rem); }
.orly-section-header--headingSize-37 { --orly-section-title-size: clamp(1.875rem, 2.3125vw + 1rem, 2.3125rem); }
.orly-section-header--headingSize-42 { --orly-section-title-size: clamp(1.875rem, 2.6250vw + 1rem, 2.625rem); }
.orly-section-header--headingSize-50 { --orly-section-title-size: clamp(1.875rem, 3.1250vw + 1rem, 3.125rem); }
.orly-section-header--headingSize-59 { --orly-section-title-size: clamp(1.875rem, 3.6875vw + 1rem, 3.6875rem); }
.orly-section-header--introSize-14 { --orly-section-intro-size: 0.875rem; }
.orly-section-header--introSize-16 { --orly-section-intro-size: 1rem; }
.orly-section-header--introSize-18 { --orly-section-intro-size: 1.125rem; }
.orly-section-header--introSize-20 { --orly-section-intro-size: 1.25rem; }

/* Optional presets only: no default spacing changes or new wrappers. */
[style*="--orly-element-bottom:"]:not(:last-child) { margin-block-end: var(--orly-element-bottom) !important; }
@media (min-width: 64rem) {
  .orly-section-header--columns.orly-section-header--title-top > h2 { align-self: start; }
  .orly-section-header--columns.orly-section-header--title-center > h2 { align-self: center; }
  .orly-section-header--columns.orly-section-header--title-bottom > h2 { align-self: end; }
}
