/* Approved mobile UX layer. Existing desktop typography/palette/layout stay in style.css. */
:root { --site-header-height: 78px; --anchor-offset: calc(var(--site-header-height) + 16px); }
.mobile-controls, .logo-mobile-name { display: none; }
.ux-sr-only { position: absolute; inline-size: 1px; block-size: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
main [id] { scroll-margin-block-start: var(--anchor-offset); }
@media (max-width: 1050px), (hover: none) and (pointer: coarse) {
  .site-header .header-inner { flex-wrap: nowrap; min-block-size: 64px; block-size: auto; gap: 10px; padding: 8px 12px; padding-top: max(8px, env(safe-area-inset-top, 0px)); padding-left: max(12px, env(safe-area-inset-left, 0px)); padding-right: max(12px, env(safe-area-inset-right, 0px)); }
  .site-header .main-nav { display: none; }
  .site-header .logo { gap: 6px; min-inline-size: 0; font-size: 1rem; }
  .site-header .logo img { inline-size: 36px; block-size: 36px; object-fit: contain; }
  .site-header .logo > span:not(.logo-mobile-name) { display: none; }
  .site-header .logo .logo-mobile-name { display: inline; font-size: 1rem; }
  .mobile-controls { display: flex; align-items: center; gap: 6px; margin-inline-start: auto; flex-shrink: 0; }
  .mobile-quote { display: inline-flex; align-items: center; justify-content: center; min-block-size: 44px; padding: 10px 12px; border-radius: 8px; color: #fff; background: #b8440b; font-size: .9rem; font-weight: 600; line-height: 1.2; white-space: nowrap; }
  .mobile-quote:hover, .mobile-quote:active { color: #fff; background: #973707; }
  .mobile-icon { display: flex; align-items: center; justify-content: center; min-inline-size: 44px; min-block-size: 44px; padding: 8px; border: 1px solid var(--border); border-radius: 8px; background: #fff; color: var(--primary); cursor: pointer; list-style: none; font-size: .88rem; font-weight: 600; }
  .mobile-icon::-webkit-details-marker { display: none; }
  .mobile-disclosure[open] > summary { background: var(--bg-alt); border-color: var(--primary); }
  .mobile-icon:focus-visible, .mobile-panel summary:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
  .mobile-panel { position: absolute; inset-inline: 0; top: 100%; max-block-size: calc(100vh - var(--site-header-height) - 8px); max-block-size: calc(var(--ux-viewport-height, 100dvh) - var(--site-header-height) - 8px); overflow-y: auto; overscroll-behavior: contain; padding: 12px 16px calc(16px + env(safe-area-inset-bottom, 0px)); background: #fff; border-block: 1px solid var(--border); box-shadow: var(--shadow-md); z-index: 130; }
  .mobile-panel a, .mobile-panel summary { display: flex; align-items: center; justify-content: space-between; min-block-size: 48px; padding: 10px 12px; border-radius: 6px; color: var(--text); font-size: 1rem; line-height: 1.4; font-weight: 500; overflow-wrap: anywhere; white-space: normal; }
  .mobile-panel a:hover, .mobile-panel a:focus-visible, .mobile-panel a[aria-current] { background: var(--bg-alt); color: var(--primary); }
  .mobile-panel a[aria-current] { font-weight: 700; border-inline-start: 3px solid var(--accent); }
  .mobile-panel summary { cursor: pointer; list-style: none; font-weight: 600; }
  .mobile-panel summary::-webkit-details-marker { display: none; }
  .mobile-panel details[open] > summary > span { transform: rotate(45deg); }
  .mobile-submenu { padding-inline-start: 12px; margin-block: 2px 10px; border-inline-start: 1px solid var(--border); }
  .mobile-language-panel { inset-inline-start: auto; inset-inline-end: 12px; inline-size: min(360px, calc(100vw - 24px)); display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; }
  .mobile-disclosure:not([open]) > .mobile-panel { display: none; }
  .mobile-language-panel a { justify-content: flex-start; }
}
@media (max-width: 359px) { .site-header .logo .logo-mobile-name { font-size: .94rem; } .site-header .logo img { display: none; } }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* RFQ: preserve the desktop columns, move actual form nodes before preliminaries on phones. */
.rfq-primary { min-inline-size: 0; }
.rfq-form .rfq-progress > li { padding-inline-start: 0; min-inline-size: 0; margin-block-end: 0; counter-increment: none; }
.rfq-form .rfq-progress > li::before { content: none; }
.rfq-form .rfq-txt { min-inline-size: 0; overflow-wrap: anywhere; }
.rfq-form .rfq-field-error { color: #b3261e; font-size: 1rem; line-height: 1.5; margin: 6px 0 0; }
.rfq-field-error[hidden] { display: none !important; }
.rfq-form input[aria-invalid="true"], .rfq-form textarea[aria-invalid="true"], .rfq-tiles[aria-invalid="true"] .rfq-tile span { border-color: #b3261e; }
.rfq-form .rfq-source { font-size: .95rem; line-height: 1.5; margin-block: 0 18px; padding: 12px 14px; background: var(--bg-alt); border-inline-start: 3px solid var(--primary); overflow-wrap: anywhere; }
.rfq-source a { text-decoration: underline; text-underline-offset: 3px; }
.rfq-status:focus-visible { outline: 2px solid #b3261e; outline-offset: 5px; }
.rfq-back:disabled { cursor: progress; opacity: .6; }
@media (max-width: 1050px), (hover: none) and (pointer: coarse) {
  .contact-grid { grid-template-columns: minmax(0, 1fr); }
  .rfq-primary { max-inline-size: 860px; margin-inline: auto; margin-block-end: 36px; }
  .rfq-primary > h2 { font-size: 1.55rem; line-height: 1.3; }
  .rfq-primary .rfq-btn, .rfq-primary .rfq-back { min-block-size: 48px; }
}


/* Compact and touch-tablet reading; mouse desktop remains unchanged. */
.mobile-toc-wrap, .mobile-table-hint { display: none; }
.mobile-table-hint[hidden] { display: none !important; }
.od-catalogue section[id] { scroll-margin-block-start: var(--anchor-offset); }
@media (max-width: 1050px), (hover: none) and (pointer: coarse) {
  .container, .prose, .od-container { padding-left: max(24px, env(safe-area-inset-left, 0px)); padding-right: max(24px, env(safe-area-inset-right, 0px)); }
  .prose table { display: block; max-inline-size: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .page-hero { padding-block: 32px 36px; }
  .page-hero h1 { font-size: clamp(26px, 6.5vw, 34px); line-height: 1.22; }
  .page-hero p { line-height: 1.55; margin-block-start: 12px; }
  .mobile-toc-wrap { display: block; position: sticky; top: var(--site-header-height); z-index: 90; background: #fff; border-block-end: 1px solid var(--border); }
  .mobile-page-toc { position: relative; max-inline-size: 1180px; margin-inline: auto; }
  .mobile-page-toc > summary { display: flex; align-items: center; justify-content: space-between; min-block-size: 48px; padding: 10px 24px; color: var(--primary); font-size: 1rem; font-weight: 600; list-style: none; cursor: pointer; }
  .mobile-page-toc > summary::-webkit-details-marker { display: none; }
  .mobile-page-toc > summary:focus-visible { outline: 3px solid var(--accent); outline-offset: -3px; }
  .mobile-page-toc[open] > summary > span { transform: rotate(180deg); }
  .mobile-toc-panel { position: absolute; inset-inline: 0; top: 100%; max-block-size: min(60vh, calc(100vh - var(--site-header-height) - 60px)); max-block-size: min(60dvh, calc(var(--ux-viewport-height, 100dvh) - var(--site-header-height) - 60px)); overflow-y: auto; overscroll-behavior: contain; padding: 8px 20px 16px; background: #fff; border-block-end: 1px solid var(--border); box-shadow: var(--shadow-md); }
  .mobile-toc-panel ul { list-style: none; padding: 0; margin: 0; }
  .mobile-toc-panel ul ul { padding-inline-start: 14px; border-inline-start: 1px solid var(--border); }
  .mobile-toc-panel a { display: block; padding: 11px 4px; min-block-size: 44px; color: var(--primary); font-size: 1rem; line-height: 1.5; overflow-wrap: anywhere; }
  .mobile-toc-panel a:hover { background: var(--bg-alt); }
  .mobile-toc-wrap + .prose { --anchor-offset: calc(var(--site-header-height) + 64px); }
  .mobile-toc-wrap + .prose .spec-strip { margin-block-start: 0; }
  .mobile-table-hint { display: block; color: var(--muted); font-size: .95rem; line-height: 1.5; margin-block: 16px -12px; }
  .prose table[tabindex="0"], .od-table-wrap[tabindex="0"] { overscroll-behavior-x: contain; }
  .prose table[tabindex="0"]:focus-visible, .od-table-wrap[tabindex="0"]:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; }
  .prose .ux-sticky-first tr > :first-child { position: sticky; inset-inline-start: 0; z-index: 1; background: #fff; box-shadow: 2px 0 0 var(--border); }
  .prose .ux-sticky-first tr:nth-child(even) > td:first-child { background: var(--bg-alt); }
  .prose .ux-sticky-first tr > th:first-child { background: var(--primary); }
}


/* Shared image viewer. Native dialog traps modal focus without a framework. */
.gallery-open { display: block; position: relative; cursor: zoom-in; }
.gallery-zoom { display: none; }
.gallery-viewer { position: fixed; inset: 0; margin: auto; padding: 16px; inline-size: min(1080px, calc(100vw - 24px)); block-size: fit-content; max-block-size: calc(100vh - 24px); max-block-size: calc(var(--ux-viewport-height, 100dvh) - 24px); border: 0; border-radius: var(--radius-sm); background: #fff; color: var(--text); overflow: auto; overscroll-behavior: contain; box-shadow: var(--shadow-lg); }
.gallery-viewer:not([open]) { display: none; }
.gallery-viewer[open] { display: flex; flex-direction: column; gap: 14px; }
.gallery-viewer::backdrop { background: rgba(7, 35, 58, .86); }
.viewer-top { display: grid; grid-template-columns: minmax(0, 1fr) 44px; align-items: start; gap: 12px; }
.viewer-top p { margin: 0; align-self: center; font-size: 1rem; line-height: 1.5; overflow-wrap: anywhere; }
.viewer-stage { display: flex; align-items: center; justify-content: center; min-block-size: 96px; background: var(--bg-alt); border-radius: 6px; touch-action: pan-y pinch-zoom; }
#gallery-viewer-image { display: block; inline-size: auto; block-size: auto; max-inline-size: 100%; max-block-size: min(68vh, calc(100vh - 190px)); max-block-size: min(68dvh, calc(var(--ux-viewport-height, 100dvh) - 190px)); object-fit: contain; }
.viewer-controls { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.gallery-viewer button { display: inline-flex; align-items: center; justify-content: center; min-inline-size: 44px; min-block-size: 44px; padding: 8px 12px; font: inherit; font-size: 1.1rem; line-height: 1; cursor: pointer; color: var(--primary); background: #fff; border: 1px solid var(--border); border-radius: 7px; }
.gallery-viewer button:hover { background: var(--bg-alt); border-color: var(--primary); }
.gallery-viewer button:disabled { opacity: .35; cursor: default; }
.gallery-viewer .viewer-close { font-size: 1.8rem; padding: 0; }
#gallery-viewer-count { font-size: 1rem; line-height: 1.5; font-variant-numeric: tabular-nums; margin: 0; min-inline-size: 44px; text-align: center; }
#gallery-viewer-original { display: inline-flex; align-items: center; min-block-size: 44px; margin-inline-start: auto; padding: 8px 2px; color: var(--primary); text-decoration: underline; text-underline-offset: 3px; font-size: 1rem; }
.viewer-error { margin: 0; color: #b3261e; font-size: 1rem; line-height: 1.5; }
.viewer-error[hidden] { display: none; }
[dir="rtl"] .viewer-prev span, [dir="rtl"] .viewer-next span { transform: scaleX(-1); }
@media (max-width: 1050px), (hover: none) and (pointer: coarse) {
  .gallery-zoom { display: flex; align-items: center; justify-content: center; position: absolute; inset-inline-end: 10px; bottom: 10px; inline-size: 32px; block-size: 32px; border-radius: 50%; color: var(--primary); background: #fff; border: 1px solid var(--border); pointer-events: none; }
}

/* Use available CSS width, not a device name, for photos and catalogue cards. */
@media (max-width: 640px) {
  .gallery, .od-image-grid, .od-module-cards, .dl-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (min-width: 641px) and (max-width: 1050px),
       (min-width: 641px) and (max-width: 1100px) and (hover: none) and (pointer: coarse) {
  .gallery, .od-image-grid, .od-module-cards, .dl-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-products .card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media print { .mobile-controls, .gallery-viewer { display: none !important; } }
