/* Reusable element library. All selectors scoped to new el-* components. */
.el-block { --el-gap: 1.5rem; margin-block: 2rem; padding: clamp(1.25rem, 3vw, 2rem); border-radius: var(--card-radius); background: var(--primary); color: var(--text); border: 0; }
.el-block h2 { margin: 0 0 1rem; }
.el-block h3 { margin: 0 0 .6rem; font-size: 1.35rem; }
.el-block .el-copy { margin-bottom: 1.25rem; }
.el-block .el-copy > :first-child { margin-top: 0; }
.el-block .el-copy > :last-child { margin-bottom: 0; }
.el-block .el-media { display: block; width: 100%; aspect-ratio: 4 / 3; height: auto; object-fit: cover; border-radius: var(--control-radius); }
.el-block .el-placeholder { display: grid; place-items: center; background: var(--secondary); color: var(--text); min-height: 9rem; }
.el-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 2rem; align-items: center; }
.el-split--reverse > :first-child { order: 2; }
.el-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 190px), 1fr)); gap: var(--el-gap); }
.el-two { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--el-gap); }
.el-card { padding: 1.25rem; border-radius: var(--control-radius); background: var(--page-background); min-width: 0; margin: 0; }
.el-card .el-media { margin-bottom: 1.25rem; }
.el-block .el-action-link { margin-top: .5rem; }
.el-block a:focus-visible, .el-block summary:focus-visible, .el-table-wrap:focus-visible { outline: 3px solid var(--link); outline-offset: 4px; }
.el-image-banner { position: relative; overflow: hidden; padding: 0; }
.el-image-banner > .el-image-banner { border: 0; }
.el-image-banner .el-media { position: absolute; inset: 0; width: 100%; height: 100%; border-radius: 0; }
.el-banner-copy { position: relative; min-height: 22rem; padding: 3rem 2rem; display: flex; flex-direction: column; justify-content: flex-end; align-items: flex-start; background: #0009; }
.el-center { text-align: center; }
.el-narrow { max-width: 36rem; margin-inline: auto; }
.el-eyebrow { margin: 0 0 .5rem; font-size: .9rem; letter-spacing: .06em; color: var(--muted); }
.el-badge { display: inline-grid; place-items: center; width: 2.5rem; height: 2.5rem; margin-bottom: 1rem; border-radius: 50%; background: var(--secondary); }
.el-profile .el-media { aspect-ratio: 1; }
.el-quote { margin: 0; }
.el-quote blockquote { margin: 0 0 1rem; font-size: 1.25rem; }
.el-muted { color: var(--muted); font-size: .9rem; }
.el-stats { margin: 0; text-align: center; }
.el-stats > div { display: flex; flex-direction: column-reverse; padding: 1rem; }
.el-stats dd { font-size: 2.7rem; margin: 0; color: var(--link); }
.el-steps { list-style: none; padding: 0; counter-reset: el-step; }
.el-steps > li { margin: 0; counter-increment: el-step; }
.el-steps > li::before { content: counter(el-step, decimal-leading-zero); display: block; font-size: 2rem; color: var(--link); margin-bottom: .6rem; }
.el-timeline { list-style: none; padding-left: 1.5rem; border-left: 0; }
.el-timeline > li { margin: 0 0 2rem; }
.el-faq details { border-bottom: 0; padding: 1rem 0; }
.el-faq summary { cursor: pointer; font-size: 1.2rem; }
.el-faq details > div { padding: .5rem 0; }
.el-faq summary:hover { color: var(--link); }
.el-cta { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 1rem; }
.el-cta > div { flex: 1 1 20rem; }
.el-gallery-item { margin: 0; }
.el-gallery-item figcaption { padding-block: .6rem; }
.el-logos { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 1rem; text-align: center; }
.el-logos figure { margin: 0; }
.el-logos .el-media { aspect-ratio: 2; object-fit: contain; min-height: 4rem; }
.el-price { font-size: 2rem; color: var(--link); }
.el-table-wrap { overflow-x: auto; }
.el-table-wrap table { display: table; width: 100%; }
.el-checklist { list-style: none; padding: 0; }
.el-checklist li { padding: .4rem 0; }
.el-checklist li::before { content: "✓"; color: var(--link); margin-right: .75rem; }
.el-contact dl { display: grid; grid-template-columns: auto 1fr; gap: .75rem 1.5rem; }
.el-contact dd { margin: 0; }
.el-hours { margin: 0; }
.el-hours > div { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem 1.5rem; border-bottom: 0; padding-block: .8rem; }
.el-hours dd { margin: 0; }
.el-area-list { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; padding: 0; }
.el-area-list li { margin: 0; padding: .4rem .7rem; border-radius: var(--control-radius); background: var(--secondary); }
.el-resource .el-media { aspect-ratio: 3 / 4; }
.el-demo { margin-block: 4rem; scroll-margin-top: 9rem; }
.el-demo-label { color: var(--link); font-size: 1rem; letter-spacing: .04em; }
.el-demo-help { font-size: .9rem; color: var(--muted); margin-bottom: .25rem; }
.el-demo > .el-block { margin-block: 1rem; }
@media (max-width: 640px) { .el-split, .el-two { grid-template-columns: 1fr; } .el-split--reverse > :first-child { order: 0; } .el-banner-copy { padding: 2rem 1.25rem; } .el-contact dl { grid-template-columns: 1fr; } }

/* Text links are navigation, not button-shaped controls. */
.el-block .el-action-link { display: inline; padding: 0; background: none; border: 0; border-radius: 0; box-shadow: none; color: var(--link); text-decoration: underline; text-underline-offset: .2em; }
.el-block .el-action-link:hover { color: var(--text); transform: none; }
/* Additional 75 layouts; decorative outlines intentionally omitted. */
.el100 { border: 0; }
.el100 figure { margin: 0; }
.el100 figcaption { padding-top: .75rem; }
.el100 h3 { margin-top: 1rem; }
.el100 p { overflow-wrap: anywhere; }
.el100 .el-media { margin-bottom: 1rem; }
.el100-heading { margin-bottom: 1.5rem; }
.el100-two, .el100-three, .el100-columns, .el100-sidebar, .el100-portrait { display: grid; gap: 1.5rem; align-items: start; }
.el100-two, .el100-columns { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.el100-three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.el100-sidebar { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); }
.el100-portrait { grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); align-items: center; }
.el100-portrait > .el-media, .el100-portraits .el-media { aspect-ratio: 3 / 4; }
.el100-surface { background: var(--page-background); padding: 1.5rem; border-radius: var(--card-radius); }
.el100-band { padding: 2rem; background: var(--page-background); border-radius: var(--card-radius); }
.el100-statement { max-width: 36rem; margin-inline: auto; text-align: center; }
.el100-statement h2 { font-size: clamp(2rem, 5vw, 3.5rem); }
.el100-note, .el100-meta { color: var(--muted); font-size: .95rem; }
.el100-tag { color: var(--link); font-size: .9rem; text-transform: uppercase; letter-spacing: .05em; }
.el100-chapter { display: flex; align-items: baseline; gap: 1.5rem; }
.el100-number { color: var(--link); font-size: 2.5rem; margin: 0; }
.el100-big-number { font-size: clamp(3rem, 8vw, 6rem); color: var(--link); margin: 0; }
.el100-panorama .el-media { aspect-ratio: 21 / 9; }
.el100-mosaic { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
.el100-mosaic figure:first-child { grid-column: 1 / -1; }
.el100-mosaic figure:first-child .el-media { aspect-ratio: 2 / 1; }
.el100-definitions { margin: 0; }
.el100-definitions > div { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 1.25rem; padding: .85rem; }
.el100-definitions > div:nth-child(odd) { background: var(--page-background); border-radius: var(--control-radius); }
.el100-definitions dt { font-weight: bold; }
.el100-definitions dd { margin: 0; }
.el100-alternating { display: grid; gap: 2.5rem; }
.el100-alternating article { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; align-items: center; }
.el100-alternating article:nth-child(even) .el-media { order: 2; }
.el100-list { display: grid; gap: 1.5rem; }
.el100-thumbnail { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 3fr); gap: 1.5rem; }
.el100-inline { display: flex; flex-wrap: wrap; gap: 1rem 2rem; padding: 0; list-style: none; }
.el100-inline li { margin: 0; }
.el100-metrics { margin: 0; }
.el100-metrics > div { padding: 1rem 0; }
.el100-metrics dd { font-size: 2.5rem; color: var(--link); margin: 0; }
.el100-metrics .el100-metric-note { font-size: 1rem; color: var(--text); }
.el100-roadmap { counter-reset: el100-step; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; list-style: none; }
.el100-roadmap li { counter-increment: el100-step; margin: 0; }
.el100-roadmap li::before { content: counter(el100-step, decimal-leading-zero); font-size: 2rem; color: var(--link); }
.el100-roadmap--vertical { grid-template-columns: 1fr; }
.el100-handover { padding-left: 1.5rem; list-style: square; }
.el100-reading { padding-left: 1.5rem; }
.el100-reading li { padding: .5rem; }
.el100-row { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 1.5rem; }
.el100-row > div { flex: 1 1 15rem; }
.el100-columns-list { columns: 2; padding-left: 1.25rem; }
.el100-columns-list li { break-inside: avoid; padding: .5rem; }
.el100 address { font-style: normal; margin-bottom: 1rem; }
.el100 details { padding: 1rem; margin-bottom: .75rem; background: var(--page-background); border-radius: var(--control-radius); }
.el100 summary { cursor: pointer; font-size: 1.2rem; }
.el100 summary:hover { color: var(--link); }
.el100 summary:focus-visible { outline: 3px solid var(--link); outline-offset: 4px; }
.el100-large-question > .el100-two { margin-top: 1rem; }
.el100-welcome-panel { text-align: center; }
@media (max-width: 700px) {
 .el100-three, .el100-roadmap { grid-template-columns: 1fr; }
 .el100-two, .el100-columns, .el100-sidebar, .el100-portrait, .el100-alternating article { grid-template-columns: 1fr; }
 .el100-alternating article:nth-child(even) .el-media { order: 0; }
 .el100-columns-list { columns: 1; }
}
@media (max-width: 420px) { .el100-thumbnail, .el100-definitions > div, .el100-mosaic { grid-template-columns: 1fr; } }

/* Border-free tables within the reusable library. */
.el-block th, .el-block td { border: 0; }
.el-block tbody tr:nth-child(odd) { background: var(--page-background); }
