/* Phase 7A design tokens and small, reusable primitives. The legacy public
   shell remains compatible while new surfaces can adopt these classes. */
:root {
    --font-sans: 'Inter', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
        'Segoe UI Symbol', 'Noto Color Emoji';
    --ui-navy: #082f49;
    --ui-petrol: #063b4d;
    --ui-teal: #0b9bad;
    --ui-teal-dark: #087887;
    --ui-mist: #eff8fa;
    --ui-slate: #526b7c;
    --ui-border: #d8e7ec;
    --ui-radius: 0.75rem;
    --ui-shadow: 0 0.75rem 2rem rgb(8 47 73 / 0.08);
}

/* Admin backoffice shell. Kept in the same static stylesheet so the admin
   shares the asset strategy with the public site without a build step. */
.admin-body { min-width: 0; margin: 0; overflow-x: hidden; background: #f5f8fc; color: #101c36; font-family: var(--font-sans); }
.admin-app { display: flex; width: 100%; min-width: 0; min-height: 100vh; }
.admin-sidebar { display: flex; width: 15.25rem; flex: 0 0 15.25rem; flex-direction: column; background: linear-gradient(180deg, #062f59 0%, #061f3d 100%); color: #fff; }
.admin-brand { display: flex; align-items: center; gap: .7rem; min-height: 5.8rem; padding: 1rem 1.25rem; color: #fff; }
.admin-brand-mark { display: grid; width: 2.3rem; height: 2.3rem; place-items: center; flex: 0 0 2.3rem; border-radius: .55rem; background: #1289e8; line-height: 1; box-shadow: 0 0 0 .25rem rgb(18 137 232 / .16); }
.admin-brand-mark img { display: block; width: 1.75rem; height: 1.75rem; object-fit: contain; }
.admin-brand strong, .admin-brand small { display: block; }
.admin-brand strong { font-size: 1.15rem; letter-spacing: -.03em; }
.admin-brand small { margin-top: .12rem; color: #cfe4f8; font-size: .8rem; }
.admin-nav { display: flex; flex-direction: column; gap: .2rem; padding: 1.45rem .65rem; }
.admin-nav-label { margin: 1rem .8rem .35rem; color: #8fb5d8; font-size: .68rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.admin-nav-link { display: flex; align-items: center; gap: .7rem; min-height: 2.55rem; padding: .5rem .75rem; border-radius: .45rem; color: #e8f3fc; font-size: .88rem; font-weight: 650; text-decoration: none; }
.admin-nav-link span { display: inline-grid; width: 1.2rem; place-items: center; color: #b4d3ee; font-size: 1.2rem; }
.admin-nav-link:hover, .admin-nav-link.is-active { background: #0d66b5; color: #fff; }
.admin-nav-link.is-active { box-shadow: inset 0 0 0 1px rgb(136 212 255 / .18); }
.admin-public-link { margin: auto .85rem 1.1rem; padding: .75rem .8rem; border-top: 1px solid rgb(255 255 255 / .14); color: #cfe4f8; font-size: .78rem; }
.admin-main { width: 100%; min-width: 0; flex: 1; }
.admin-topbar { display: flex; min-height: 3.9rem; align-items: center; justify-content: space-between; gap: 1rem; padding: .65rem 2rem; border-bottom: 1px solid #dce5ef; background: #fff; }
.admin-crumb, .admin-user { display: flex; align-items: center; gap: .65rem; color: #51647d; font-size: .86rem; }
.admin-crumb span:first-child { color: #17345e; font-size: 1.3rem; }
.admin-crumb strong { color: #1a2b49; font-weight: 700; }
.admin-user { color: #172541; font-weight: 700; }
.admin-avatar { display: grid; width: 2rem; height: 2rem; place-items: center; border-radius: 50%; background: #e9eff7; color: #2d527d; font-size: .8rem; }
.admin-content { width: 100%; max-width: 78rem; min-width: 0; margin: 0 auto; padding: 2rem 2rem 3rem; box-sizing: border-box; }
.admin-page-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.45rem; }
.admin-page-heading h1 { margin: .25rem 0 .35rem; color: #101c36; font-size: clamp(1.8rem, 3vw, 2.35rem); letter-spacing: -.045em; line-height: 1.05; }
.admin-page-heading p:not(.admin-eyebrow) { margin: 0; color: #50627c; font-size: .96rem; }
.admin-eyebrow { margin: 0; color: #176dbe; font-size: .72rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.admin-kpi-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .7rem; }
.admin-kpi { display: flex; min-height: 5.45rem; align-items: center; gap: .7rem; padding: .75rem .85rem; border: 1px solid #dce5ef; border-left: .25rem solid; border-radius: .65rem; background: #fff; box-shadow: 0 .25rem .8rem rgb(23 57 94 / .035); }
.admin-kpi-icon { display: grid; width: 2.7rem; height: 2.7rem; flex: 0 0 2.7rem; place-items: center; border-radius: .75rem; font-size: 1.75rem; font-weight: 700; }
.admin-kpi strong, .admin-kpi span, .admin-kpi small { display: block; }
.admin-kpi strong { color: #101c36; font-size: 1.5rem; letter-spacing: -.04em; line-height: 1; }
.admin-kpi span { margin-top: .35rem; color: #223654; font-size: .8rem; font-weight: 700; line-height: 1.15; }
.admin-kpi small { margin-top: .18rem; color: #6b7d94; font-size: .66rem; }
.admin-tone-blue { border-left-color: #2786d8; }
.admin-tone-blue .admin-kpi-icon, .admin-tone-blue.admin-quick-card > span { color: #0873d1; background: #d9edff; }
.admin-tone-violet { border-left-color: #8054c7; }
.admin-tone-violet .admin-kpi-icon, .admin-tone-violet.admin-quick-card > span { color: #7541cf; background: #eadfff; }
.admin-tone-amber { border-left-color: #d99111; }
.admin-tone-amber .admin-kpi-icon, .admin-tone-amber.admin-quick-card > span { color: #c47700; background: #fff0c6; }
.admin-tone-red { border-left-color: #d83c4b; }
.admin-tone-red .admin-kpi-icon { color: #c9303b; background: #ffdfe2; }
.admin-tone-green { border-left-color: #1a9b54; }
.admin-tone-green .admin-kpi-icon, .admin-tone-green.admin-quick-card > span { color: #119447; background: #d8f2e0; }
.admin-tone-slate { border-left-color: #8291a5; }
.admin-tone-slate .admin-kpi-icon { color: #61728a; background: #e1e9f3; }
.admin-panel-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(20rem, .85fr); gap: 1rem; margin-top: 1.25rem; }
.admin-panel { padding: 1.2rem; border: 1px solid #d7e1ed; border-radius: .85rem; background: #fff; box-shadow: 0 .45rem 1.25rem rgb(23 57 94 / .045); }
.admin-panel-heading { display: flex; align-items: flex-start; gap: .75rem; padding-bottom: .9rem; border-bottom: 1px solid #e1e8f0; }
.admin-panel-heading h2 { margin: .05rem 0 .25rem; color: #111e37; font-size: 1.05rem; letter-spacing: -.025em; }
.admin-panel-heading p { margin: 0; color: #61738b; font-size: .78rem; }
.admin-panel-icon { display: grid; width: 2.25rem; height: 2.25rem; flex: 0 0 2.25rem; place-items: center; border-radius: .65rem; background: #e8f2ff; color: #1474cc; font-size: 1.45rem; }
.admin-quick-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; padding-top: .8rem; }
.admin-quick-card { position: relative; display: grid; min-height: 0; grid-template-columns: 2rem 1fr auto; grid-template-rows: auto auto; align-items: center; column-gap: .65rem; padding: .7rem .75rem; border: 1px solid #e0e7ef; border-radius: .55rem; background: #fff; color: #213752; text-decoration: none; }
.admin-quick-card > span { display: grid; width: 2rem; height: 2rem; place-items: center; border-radius: .55rem; font-size: 1.35rem; font-weight: 800; }
.admin-quick-card strong { color: #14213b; font-size: .86rem; line-height: 1.1; }
.admin-quick-card small { grid-column: 2 / 3; margin-top: .18rem; color: #53657c; font-size: .7rem; line-height: 1.25; }
.admin-quick-card b { grid-column: 3; grid-row: 1 / 3; color: #59708b; font-size: 1.4rem; }
.admin-action-list { padding-top: .65rem; }
.admin-action-list a { display: grid; grid-template-columns: .65rem 1fr auto 1rem; align-items: center; gap: .65rem; min-height: 3rem; border-bottom: 1px solid #e7edf3; color: #233650; font-size: .8rem; }
.admin-action-list a:last-child { border-bottom: 0; }
.admin-action-list strong { color: #15233d; font-size: .9rem; }
.admin-action-list b { color: #59708b; font-size: 1rem; }
.admin-action-dot { width: .6rem; height: .6rem; border-radius: 50%; }
.admin-dot-red { background: #d83c4b; }.admin-dot-amber { background: #d99111; }.admin-dot-violet { background: #7b4bd2; }
.admin-enrichment-monitor { margin-top: 1.25rem; }
.admin-enrichment-summary { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: .65rem; padding: 1rem 0 .85rem; }
.admin-enrichment-stat { display: flex; min-height: 3.5rem; flex-direction: column; justify-content: center; gap: .2rem; padding: .6rem .7rem; border: 1px solid #e1e8f0; border-radius: .55rem; background: #fbfdff; }
.admin-enrichment-stat strong { color: #15233d; font-size: 1.05rem; }
.admin-enrichment-stat small { color: #63758c; font-size: .7rem; }
.admin-enrichment-stat .admin-badge { align-self: flex-start; color: inherit; }
.admin-enrichment-meta { display: flex; flex-wrap: wrap; gap: .55rem 1.25rem; padding-top: .85rem; border-top: 1px solid #e1e8f0; color: #60748d; font-size: .76rem; }
.admin-enrichment-meta strong { color: #1c2f4b; }
.admin-data-note { margin: 1.2rem 0 0; color: #718197; font-size: .75rem; }
@media (min-width: 90rem) { .admin-kpi-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 75rem) { .admin-content { padding-inline: 1.25rem; }.admin-kpi-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 58rem) { .admin-sidebar { width: 4.4rem; flex-basis: 4.4rem; }.admin-brand { justify-content: center; padding-inline: .8rem; }.admin-brand > span:last-child, .admin-nav-label, .admin-nav-link:not(.is-active)::after, .admin-public-link { display: none; }.admin-nav-link { justify-content: center; padding-inline: .5rem; }.admin-nav-link span { font-size: 1.35rem; }.admin-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }.admin-panel-grid { grid-template-columns: 1fr; } }
@media (max-width: 72rem) { .admin-enrichment-summary { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 38rem) { .admin-topbar { padding-inline: 1rem; }.admin-crumb span:nth-child(2), .admin-crumb strong { display: none; }.admin-user span:last-child { max-width: 7rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.admin-content { padding: 1.25rem .75rem 2rem; }.admin-page-heading { margin-bottom: 1rem; }.admin-page-heading h1 { font-size: 1.75rem; }.admin-kpi-grid { grid-template-columns: 1fr; gap: .55rem; }.admin-kpi { min-height: 4.9rem; }.admin-quick-grid { grid-template-columns: 1fr; gap: .45rem; }.admin-panel { padding: .9rem; } }

/* Shared Lucide icon presentation. SVG paths are allowlisted by the Blade component. */
.ui-icon { display: inline-block; flex: 0 0 auto; vertical-align: middle; color: currentColor; }
.admin-nav-link .ui-icon { width: 1.35rem; height: 1.35rem; }
.admin-brand-mark .ui-icon { width: 1.5rem; height: 1.5rem; }
.admin-kpi-icon .ui-icon { width: 1.6rem; height: 1.6rem; }
.admin-panel-icon .ui-icon { width: 1.35rem; height: 1.35rem; }
.admin-quick-card > span .ui-icon { width: 1.5rem; height: 1.5rem; }
.admin-quick-card > b .ui-icon, .admin-action-list > a > b .ui-icon { width: 1.15rem; height: 1.15rem; }
.catalog-category .ui-icon, .catalog-manufacturer .ui-icon, .catalog-reference .ui-icon { width: 1rem; height: 1rem; }
.catalog-cta, .section-heading > a, .editorial-copy strong, .public-pagination__label, .catalog-clear { display: inline-flex; align-items: center; gap: .3rem; }
.catalog-bookmark .ui-icon { display: block; }
.line-icon { display: grid; place-items: center; }
.card-arrow { display: inline-flex; align-items: center; }
.public-pagination__label .ui-icon { vertical-align: -0.15em; }
.search-mark { display: inline-flex; align-items: center; font-size: inherit; }

html { font-family: var(--font-sans); }
body.site-body { background: #f8fbfc; color: var(--ui-navy); font-family: var(--font-sans); }
.ui-container { width: min(100% - 2rem, 76rem); margin-inline: auto; }
.ui-surface { background: #fff; border: 1px solid var(--ui-border); border-radius: var(--ui-radius); box-shadow: var(--ui-shadow); }
.ui-button { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; min-height: 2.75rem; border: 1px solid transparent; border-radius: .625rem; padding: .625rem 1rem; font-weight: 700; transition: background-color .18s ease, border-color .18s ease, transform .18s ease; }
.ui-button:hover { transform: translateY(-1px); }
.ui-button-primary { background: var(--ui-teal); color: #fff; }
.ui-button-primary:hover { background: var(--ui-teal-dark); }
.ui-button-quiet { background: #fff; border-color: var(--ui-teal); color: var(--ui-petrol); }
.ui-kicker { color: var(--ui-teal-dark); font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
*:focus-visible { outline: 3px solid #70d8df; outline-offset: 3px; }
::selection { background: #bcecf0; color: var(--ui-navy); }

/* Public catalog surface (Phase 7B). Kept separate from taxonomy cards so the
   catalog can evolve without changing other public listing templates. */
.catalog-page { width: min(100% - 2rem, 76rem); margin-inline: auto; padding: 2rem 0 3rem; }
.catalog-breadcrumb { display: flex; gap: .5rem; margin-bottom: 1.25rem; color: var(--ui-slate); font-size: .8125rem; }
.catalog-breadcrumb a, .catalog-clear, .catalog-category, .catalog-cta { color: var(--ui-teal-dark); }
.catalog-heading { display: flex; align-items: end; justify-content: space-between; gap: 1.5rem; margin-bottom: 1.5rem; }
.catalog-heading h1 { margin: .25rem 0 .375rem; color: var(--ui-navy); font-size: clamp(2rem, 3vw, 2.65rem); line-height: 1.1; }
.catalog-heading p:not(.ui-kicker) { max-width: 42rem; margin: 0; color: var(--ui-slate); }
.catalog-count { color: var(--ui-navy); font-size: .875rem; white-space: nowrap; }
.catalog-filters { padding: 1.125rem; margin-bottom: 1.5rem; }
.catalog-search-row { display: flex; gap: .625rem; margin-bottom: .875rem; }
.catalog-search-row input, .catalog-filter-row select { min-width: 0; border: 1px solid #bfd4dc; border-radius: .625rem; background: #fff; color: var(--ui-navy); }
.catalog-search-row input { flex: 1; padding: .75rem .875rem; font-size: .9375rem; }
.catalog-filter-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) auto; gap: .625rem; align-items: end; }
.catalog-filter-row label { display: flex; min-width: 0; flex-direction: column; gap: .3125rem; color: #315d73; font-size: .75rem; font-weight: 700; }
.catalog-filter-row select { width: 100%; padding: .625rem; }
.catalog-clear { padding: .625rem .25rem; font-size: .8125rem; white-space: nowrap; }
.catalog-summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .875rem; color: var(--ui-slate); font-size: .875rem; }
.catalog-summary strong { color: var(--ui-navy); font-weight: 700; }
.catalog-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.125rem; }
.wrap .grid:has(.catalog-card) { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.35rem 1.5rem; }
.catalog-card { display: flex; min-width: 0; flex-direction: column; overflow: hidden; border: 1px solid #e1e9ef; border-radius: 1rem; background: #fff; box-shadow: 0 .55rem 1.4rem rgb(8 47 73 / .08); transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease; }
.catalog-card:hover { transform: translateY(-2px); border-color: #56c5cf; box-shadow: 0 10px 24px rgb(25 62 76 / .12); }
.catalog-image { display: flex; height: 14.75rem; min-width: 0; min-height: 0; aspect-ratio: 4 / 3; align-items: center; justify-content: center; overflow: hidden; padding: 1rem; background: linear-gradient(145deg, #fff 0%, #fbfdfe 100%); }
.catalog-image img { display: block; width: auto; max-width: 100%; height: auto; max-height: 100%; object-fit: contain; object-position: center; }
.catalog-image .placeholder { display: grid; width: 100%; height: 100%; margin: 0; place-items: center; background: #e7f3f6; color: var(--ui-slate); }
.catalog-card-body { display: flex; flex: 1; flex-direction: column; padding: 1rem 1.1rem 1.1rem; }
.catalog-manufacturer { display: flex; align-items: center; gap: .5rem; margin: 0; color: #344e63; font-size: .92rem; }
.catalog-manufacturer svg, .catalog-reference svg { flex: 0 0 auto; width: 1.15rem; height: 1.15rem; fill: none; stroke: #496479; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.7; }
.catalog-status { align-self: flex-start; border-radius: 999px; background: #fff3e8; color: #a4510d; font-size: .6875rem; font-weight: 700; padding: .2rem .45rem; white-space: nowrap; }
.catalog-card-title { display: -webkit-box; overflow: hidden; margin: .7rem 0 .75rem; color: var(--ui-navy); font-size: 1.3rem; line-height: 1.18; letter-spacing: -.025em; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.catalog-card-title a { color: inherit; }
.catalog-category { display: inline-flex; align-items: center; gap: .45rem; width: max-content; max-width: 100%; border-radius: 999px; background: #e7f4ff; padding: .35rem .65rem; color: #0757b7; font-size: .78rem; font-weight: 700; }
.catalog-category svg { width: 1rem; height: 1rem; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; }
.catalog-card-meta { display: grid; gap: .35rem; }
.catalog-reference { display: flex; align-items: center; gap: .5rem; margin: 0; color: #344e63; font-size: .92rem; }
.catalog-description { display: -webkit-box; overflow: hidden; min-height: 4.1rem; margin: .8rem 0 1rem; color: #344e63; font-size: .92rem; line-height: 1.45; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.catalog-card-divider { height: 1px; margin-top: .85rem; background: #dce7ed; }
.catalog-card-actions { display: flex; align-items: stretch; gap: .8rem; margin-top: auto; }
.catalog-cta { display: inline-flex; flex: 1; align-items: center; justify-content: center; gap: .55rem; min-height: 3.15rem; border-radius: .65rem; background: #0969c7; color: #fff !important; font-size: 1rem; font-weight: 800; transition: background-color .18s ease, transform .18s ease; }
.catalog-cta:hover { background: #0757a9; transform: translateY(-1px); }
.catalog-bookmark { display: grid; width: 3.15rem; min-width: 3.15rem; place-items: center; border: 1px solid #cbd9e3; border-radius: .65rem; background: #fff; color: var(--ui-navy); cursor: pointer; }
.catalog-bookmark:hover { border-color: #0969c7; color: #0969c7; }
.catalog-bookmark svg { width: 1.35rem; height: 1.35rem; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; }
.catalog-empty { grid-column: 1 / -1; border: 1px dashed #bfd4dc; border-radius: var(--ui-radius); background: var(--ui-mist); padding: 2.625rem 1.25rem; color: var(--ui-slate); text-align: center; }
.catalog-empty a { display: inline-block; margin-top: .75rem; font-weight: 700; }
.catalog-pagination { display: flex; justify-content: center; margin-top: 1.875rem; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
@media (max-width: 68.75rem) { .catalog-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 68.75rem) { .wrap .grid:has(.catalog-card) { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 47.5rem) {
    .catalog-page { padding: 1.5rem 0 2.25rem; }
    .catalog-heading { display: block; }
    .catalog-count { display: block; margin-top: .75rem; }
    .catalog-search-row { display: grid; }
    .catalog-search-row .ui-button { width: 100%; }
    .catalog-filter-row { grid-template-columns: 1fr; }
    .catalog-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
    .wrap .grid:has(.catalog-card) { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
    .catalog-image { height: 10rem; }
    .catalog-card-body { padding: .8125rem; }
    .catalog-card-title { font-size: .9375rem; }
}
@media (max-width: 30rem) {
    .catalog-grid { grid-template-columns: 1fr; }
    .wrap .grid:has(.catalog-card) { grid-template-columns: 1fr; }
    .catalog-image { height: 11.875rem; }
    .catalog-summary { display: block; }
    .catalog-summary strong { display: block; margin-top: .3125rem; }
}

/* Catalog refinement aligned with the approved Home surface. */
.site-body .catalog-page { width: min(100% - 2.5rem, 80rem); padding-block: 2.75rem 4rem; }
.site-body .catalog-heading { margin-bottom: 2rem; }
.site-body .category-card, .site-body .specialty-card { align-items: center; justify-content: flex-start; text-align: center; }
.site-body .category-card .line-icon, .site-body .specialty-card .line-icon { margin-inline: auto; }
.site-body .category-card strong, .site-body .specialty-card strong { margin-top: .75rem; }
.site-body .category-card small, .site-body .specialty-card small { margin-top: .5rem; }
.site-body .catalog-heading h1 { font-size: clamp(2.15rem, 3.4vw, 3rem); font-weight: 800; letter-spacing: -.025em; }
.site-body .catalog-heading p:not(.ui-kicker) { color: #3f6378; font-size: 1rem; }
.site-body .catalog-filters { padding: 1.35rem; margin-bottom: 2rem; }
.site-body .catalog-search-row { gap: .75rem; margin-bottom: 1.1rem; }
.site-body .catalog-search-row input { min-height: 3.1rem; border-color: #b7d2db; box-shadow: inset 0 1px 2px rgb(8 47 73 / .03); font-size: 1rem; }
.site-body .catalog-search-row .ui-button { min-height: 3.1rem; padding-inline: 1.35rem; }
.site-body .catalog-filter-row { gap: .85rem; }
.site-body .catalog-filter-row label { gap: .4rem; font-size: .78rem; }
.site-body .catalog-filter-row select { min-height: 2.75rem; padding-inline: .75rem; }
.site-body .catalog-summary { margin-bottom: 1.15rem; font-size: .9rem; }
.site-body .catalog-grid { gap: 1.35rem; }
.site-body .catalog-grid { column-gap: 1.5rem; row-gap: 1.65rem; }
.site-body .catalog-card { height: 100%; border-radius: 1rem; box-shadow: 0 .65rem 1.5rem rgb(8 47 73 / .07); }
.site-body .catalog-image { height: 14.75rem; }
.site-body .catalog-image img { object-fit: contain; }
.site-body .catalog-card-body { padding: 1rem 1.1rem 1.1rem; }
.site-body .catalog-card-title { margin-block: .7rem .75rem; font-size: 1.3rem; }
.site-body .catalog-manufacturer, .site-body .catalog-reference { font-size: .92rem; }
.site-body .catalog-category { font-size: .78rem; font-weight: 700; }
.site-body .catalog-description { min-height: 4.1rem; margin-top: .8rem; line-height: 1.45; -webkit-line-clamp: 3; }
.site-body .catalog-cta { padding-top: 0; font-size: 1rem; }
.site-body .catalog-empty { min-height: 12rem; display: grid; place-content: center; justify-items: center; }
.site-body .catalog-pagination { margin-top: 2.5rem; }
.site-body .catalog-pagination .public-pagination { margin-top: 0; }
.site-body .catalog-pagination .public-pagination__nav { gap: .45rem; }
.site-body .catalog-pagination .public-pagination__link, .site-body .catalog-pagination .public-pagination__item { border-radius: .625rem; }
@media (max-width: 47.5rem) {
    .site-body .catalog-page { width: min(100% - 2rem, 48rem); padding-block: 2rem 3rem; }
    .site-body .catalog-filters { padding: 1rem; }
    .site-body .catalog-image { height: 12rem; }
    .site-body .catalog-card-body { padding: .9rem; }
    .site-body .catalog-card-title { font-size: 1rem; }
}
@media (max-width: 30rem) {
    .site-body .catalog-grid { grid-template-columns: 1fr; }
    .site-body .catalog-image { height: 13rem; }
    .site-body .catalog-summary { display: block; }
    .site-body .catalog-summary strong { display: block; margin-top: .3125rem; }
}

/* Home reference composition. Higher specificity keeps these local overrides
   scoped to the public shell while the legacy shared layout remains intact. */
.site-body .home-hero { background: linear-gradient(112deg, #fff 0%, #f4fbfd 52%, #d9eef4 100%); }
.site-body .hero-copy { max-width: 38rem; }
.site-body .hero-copy h1 { font-weight: 800; }
.site-body .home-hero { min-height: 34rem; }
.site-body .hero-grid { position: relative; z-index: 1; min-height: 34rem; grid-template-columns: minmax(0, 48%) minmax(0, 52%); }
.site-body .hero-copy { position: relative; z-index: 3; padding-right: 2rem; }
.site-body .hero-copy h1 { color: var(--ui-navy); }
.site-body .hero-lead { color: #3f6378; }
.site-body .hero-banner { position: relative; z-index: 1; min-height: 34rem; height: 100%; overflow: visible; }
.site-body .hero-banner-image { position: absolute; z-index: 0; inset: 0; width: 100%; max-width: none; height: 100%; object-fit: cover; object-position: center right; }
.site-body .hero-banner::after { position: absolute; z-index: 1; inset: 0 auto 0 0; width: 11rem; background: linear-gradient(90deg, #f4fbfd 0%, rgb(244 251 253 / .82) 42%, transparent 100%); content: ''; pointer-events: none; }
.site-body .hero-banner .hero-note { z-index: 2; }
.site-body .hero-search { border: 1px solid rgb(216 231 236 / .8); }
.site-body .hero-search button { background: var(--ui-teal); color: #fff; opacity: 1; }
.site-body .hero-device { border: 1px solid rgb(216 231 236 / .75); box-shadow: 0 1rem 2.5rem rgb(8 47 73 / .13); }
.site-body .hero-device-1 { box-shadow: 0 1.25rem 3rem rgb(8 47 73 / .18); }
.site-body .home-shell { max-width: 80rem; }
.site-body .header-inner { max-width: 80rem; min-height: 4.25rem; }
.site-body .brand-logo { width: 11.5rem; height: 3rem; }
.site-body .header-search { min-width: 21rem; }
.site-body .home-section { scroll-margin-top: 1rem; }
.site-body .home-section { padding-block: 2.75rem .85rem; }
.site-body .section-heading h2 { font-weight: 800; letter-spacing: -.02em; }
.site-body .line-icon { font-size: 2.15rem; }
.site-body .category-card, .site-body .specialty-card { min-height: 9.5rem; padding: 1.35rem 1rem; }
.site-body .line-icon { height: 2.75rem; }
.site-body .recent-card { min-height: 22.5rem; padding: .85rem; }
.site-body .recent-image { height: 10.5rem; margin-bottom: .75rem; }
.site-body .recent-card h3 { font-size: .9rem; }
.site-body .category-card, .site-body .editorial-card, .site-body .recent-card, .site-body .specialty-card, .site-body .manufacturer-card { border-color: var(--ui-border); box-shadow: 0 .5rem 1.25rem rgb(8 47 73 / .06); }
.site-body .category-card:hover, .site-body .editorial-card:hover, .site-body .recent-card:hover, .site-body .specialty-card:hover, .site-body .manufacturer-card:hover { border-color: #8bd9df; }
.site-body .home-info { min-height: 9rem; border-color: #bce6ec; box-shadow: 0 .75rem 2rem rgb(8 47 73 / .04); }
.site-body .footer-inner { max-width: 80rem; padding-block: 3.25rem 1.5rem; }
.site-body .footer-bottom { max-width: 80rem; padding-block: 1.25rem 1.75rem; }
@media (max-width: 47.5rem) {
    .site-body .home-hero { min-height: 0; }
    .site-body .hero-grid { min-height: 0; grid-template-columns: 1fr; }
    .site-body .hero-copy { padding-right: 0; }
    .site-body .hero-banner { min-height: 19rem; height: 19rem; margin-inline: -1rem; }
    .site-body .hero-banner-image { inset: 0; width: 100%; object-position: 68% center; }
    .site-body .hero-banner::after { inset: 0 0 0 -1rem; width: 13rem; }
    .site-body .hero-copy h1 { font-size: clamp(1.8rem, 8vw, 2.15rem); }
    .site-body .hero-search { max-width: none; }
    .site-body .home-info { margin-inline: 0; }
}

/* Shared admin primitives. */
.admin-body .admin-breadcrumb { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; color: #687b93; font-size: .8rem; }
.admin-body .admin-breadcrumb a { color: #166cba; }
.admin-body .admin-panel h1, .admin-body .admin-panel h2, .admin-body .admin-panel h3 { color: #12213c; }
.admin-body .card { margin: 0 0 1rem; padding: 1.1rem; border: 1px solid #d7e1ed; border-radius: .85rem; background: #fff; box-shadow: 0 .45rem 1.25rem rgb(23 57 94 / .045); }
.admin-body .card h1 { margin-top: 0; letter-spacing: -.035em; }
.admin-body .card h2 { margin: 0 0 .75rem; font-size: 1.05rem; }
.admin-body .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: 1rem; }
.admin-body .crumbs { color: #687b93; font-size: .8rem; }
.admin-body .actions, .admin-body .admin-inline-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem; }
.admin-body .actions form, .admin-body .admin-inline-actions form { display: inline-flex; flex-wrap: wrap; align-items: center; gap: .45rem; }
.admin-body .actions a, .admin-body .actions button { width: auto; }
.admin-body .admin-filter-bar { display: flex; flex-wrap: wrap; align-items: end; gap: .75rem; margin: 0 0 1rem; padding: 1rem; border: 1px solid #d7e1ed; border-radius: .85rem; background: #fff; box-shadow: 0 .45rem 1.25rem rgb(23 57 94 / .035); }
.admin-body .admin-filter-bar label { display: flex; min-width: 10rem; flex: 1 1 10rem; flex-direction: column; gap: .35rem; color: #445a75; font-size: .75rem; font-weight: 750; }
.admin-body input, .admin-body select, .admin-body textarea { min-width: 0; border: 1px solid #cbd8e6; border-radius: .45rem; background: #fff; color: #172844; font: inherit; }
.admin-body input, .admin-body select { min-height: 2.55rem; padding: .5rem .65rem; }
.admin-body textarea { width: 100%; min-height: 9rem; padding: .65rem; resize: vertical; }
.admin-body input:focus, .admin-body select:focus, .admin-body textarea:focus { border-color: #2384d6; outline: 3px solid rgb(35 132 214 / .16); }
.admin-button { display: inline-flex; min-height: 2.45rem; align-items: center; justify-content: center; gap: .35rem; padding: .5rem .8rem; border: 1px solid transparent; border-radius: .45rem; font-size: .78rem; font-weight: 750; text-decoration: none; cursor: pointer; }
.admin-button-primary { background: #0d70c8; color: #fff !important; }.admin-button-primary:hover { background: #095ca7; }
.admin-button-secondary { border-color: #c4d3e2; background: #fff; color: #20537f !important; }.admin-button-secondary:hover { border-color: #75acd9; background: #f4f9fe; }
.admin-button-danger { background: #c93646; color: #fff !important; }.admin-button-danger:hover { background: #a92736; }
.admin-button:disabled { cursor: not-allowed; opacity: .55; }
.admin-body .admin-table-panel { padding: 0; overflow: hidden; }
.admin-body .admin-table-wrap { width: 100%; overflow-x: auto; }
.admin-body .admin-table { width: 100%; min-width: 46rem; border-collapse: collapse; }
.admin-body .admin-table-wide { min-width: 78rem; }
.admin-body .admin-table th, .admin-body .admin-table td { padding: .8rem .85rem; border-bottom: 1px solid #e4ebf2; text-align: left; vertical-align: top; }
.admin-body .admin-table th { background: #f7fafd; color: #526780; font-size: .7rem; font-weight: 800; letter-spacing: .045em; text-transform: uppercase; white-space: nowrap; }
.admin-body .admin-table td { color: #334963; font-size: .8rem; }
.admin-body .admin-table tbody tr:hover { background: #fbfdff; }
.admin-body .admin-table tbody tr:last-child td { border-bottom: 0; }
.admin-actions-cell { white-space: nowrap; }
.admin-badge { display: inline-flex; align-items: center; border-radius: 999px; background: #e8eef6; color: #425b78; padding: .25rem .5rem; font-size: .7rem; font-weight: 750; }
.admin-badge-success { background: #d9f2e1; color: #14723b; }.admin-badge-warning { background: #fff0c6; color: #986000; }.admin-badge-danger { background: #ffe0e3; color: #a92e3a; }.admin-badge-muted { background: #edf1f5; color: #65758a; }
.admin-muted, .admin-body .muted, .admin-body .help { color: #6a7c93; font-size: .78rem; }
.admin-body .error { color: #ad2e3a; margin: .25rem 0; }
.admin-body .admin-pagination { padding: 1rem; }
.admin-body .admin-pagination nav { display: flex; justify-content: center; }
.admin-body .admin-pagination svg { width: 1rem; height: 1rem; }
.admin-body .admin-pagination a, .admin-body .admin-pagination span { display: inline-flex; min-width: 2rem; min-height: 2rem; align-items: center; justify-content: center; border: 1px solid #d5e0eb; color: #235b88; font-size: .78rem; }
.admin-body .admin-pagination a:hover { background: #eef6ff; }
.admin-body .admin-empty { padding: 2rem !important; color: #74859a !important; text-align: center !important; }
.admin-body .admin-result-count { margin: 0 0 .75rem; color: #60748d; font-size: .8rem; }
.admin-body .admin-alert { margin-bottom: 1rem; padding: .8rem 1rem; border: 1px solid; border-radius: .6rem; font-size: .82rem; }
.admin-body .admin-alert-success { border-color: #b4e2ca; background: #edf9f1; color: #14723b; }
.admin-body .admin-preview-row { display: flex; flex-wrap: wrap; gap: .75rem 1.5rem; padding: .9rem 0; border-bottom: 1px solid #e5ebf2; color: #536981; font-size: .82rem; }
.admin-body .admin-preview-row strong { color: #1c2f4b; }
.admin-body .equipment-search { max-width: 42rem; }
.admin-body .equipment-results, .admin-body .equipment-selected { margin: .5rem 0; padding: 0; list-style: none; }
.admin-body .equipment-results li, .admin-body .equipment-selected li { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin: .35rem 0; padding: .6rem; border: 1px solid #d7e1ed; border-radius: .45rem; background: #fbfdff; }
.admin-body .equipment-results button { flex: 1; border: 0; background: transparent; color: #205b8b; text-align: left; cursor: pointer; }
.admin-body .equipment-status { min-height: 1.5rem; color: #697b91; font-size: .8rem; }
.admin-body .admin-body .protected { border-left: 4px solid #7f93ab; }
.admin-body dl { display: grid; grid-template-columns: minmax(9rem, auto) 1fr; gap: .45rem .8rem; margin: 0; }
.admin-body dt { color: #526780; font-weight: 750; }.admin-body dd { margin: 0; color: #243a57; overflow-wrap: anywhere; }
.admin-body .table-wrap { overflow-x: auto; }.admin-body .gallery { display: flex; flex-wrap: wrap; gap: 1rem; }.admin-body .gallery figure { width: 11rem; margin: 0; }.admin-body .gallery img { display: block; width: 11rem; height: 8.5rem; border: 1px solid #d7e1ed; border-radius: .5rem; object-fit: contain; }.admin-body .history-item { padding: .8rem 0; border-top: 1px solid #e4ebf2; }.admin-body .history-item:first-child { border-top: 0; }.admin-body .history-item pre { overflow: auto; padding: .6rem; background: #f7fafd; white-space: pre-wrap; }
@media (max-width: 38rem) { .admin-body .admin-filter-bar { align-items: stretch; flex-direction: column; }.admin-body .admin-filter-bar label { width: 100%; }.admin-body .admin-filter-bar .admin-button { width: 100%; }.admin-body .admin-table { min-width: 42rem; }.admin-body .admin-inline-actions form { width: 100%; }.admin-body .admin-inline-actions .admin-button { flex: 1; }.admin-body .admin-panel .actions { align-items: stretch; flex-direction: column; }.admin-body .admin-panel .actions > * { width: 100%; }.admin-body dl { grid-template-columns: 1fr; gap: .15rem; }.admin-body dt { margin-top: .5rem; } }
