Critical
Embedded frames lack descriptive titles
WCAG 4.1.2 (A)3 instances3 inspected pages
An <iframe> has no title, so its purpose is not announced to assistive technology.
Why it mattersAn <iframe> has no title, so its purpose is not announced to assistive technology.
Recommended correctionAdd a concise title attribute that describes the frame's actual purpose — for example "Store locator" for a location search or "Promotional campaign" for a marketing embed. The affected frame loads https://player.vimeo.com/video/430139625?&autoplay=1&loop=1&muted=1, which can help identify its purpose. Avoid generic values such as "Embedded content", "iframe", or "frame".
View 3 affected elements
Component · Ref SQ09Z1
Affected pagehttps://hamra.com/products/diamond
Element.lazyframe > p > iframe[allow="autoplay; fullscreen"][allowfullscreen=""][frameborder="0"]
Markup<iframe allow="autoplay; fullscreen" allowfullscreen="" frameborder="0" height="360" width="640" loading="lazy" data-src="https://player.vimeo.com/video/942082187?&autoplay=1&loop=1&background=1"></iframe>
Affected pages/products/diamond /products/oval-diamond
Component · Ref RPJ544
Affected pagehttps://hamra.com/pages/contact
Elementiframe[width="100%"]
Markup<iframe width="100%" height="350" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-dow..." data-src="https://www.google.c...">
Critical
Buttons have no accessible name
WCAG 4.1.2 (A)2 instances1 inspected page
Interactive buttons expose no accessible name, so their purpose cannot be determined by assistive technology.
Why it mattersInteractive buttons expose no accessible name, so their purpose cannot be determined by assistive technology.
Recommended correctionGive it an accessible name that describes the action it performs: provide visible text when a visible label is appropriate, an aria-label for an icon-only control (for example aria-label="Dismiss notification"), or aria-labelledby when an existing visible label already describes it. Avoid vague names such as "Button", "Action", or the component's internal name.
View 2 affected elements
Component · Ref FFPGMH
Affected pagehttps://hamra.com/pages/rolex-contact
Element.rolex-page-carousel-arrow-previous
Accessible name.rolex-page-carousel-arrow{fill:#452C1E !important;}
Markup<button style="cursor:pointer;" class="rolex-page-carousel-arrow-previous global-rolex-carousel-arrow-prev">
Component · Ref E40TF
Affected pagehttps://hamra.com/pages/rolex-contact
Element.rolex-page-carousel-arrow-next
Accessible name.rolex-page-carousel-arrow{fill:#452C1E !important;}
Markup<button style="cursor:pointer;" class="rolex-page-carousel-arrow-next global-rolex-carousel-arrow-next">
Critical
Links lack accessible text
WCAG 2.4.4 (A)3 instances1 inspected page
Links expose no accessible name, so screen-reader users cannot determine their destination.
Why it mattersLinks expose no accessible name, so screen-reader users cannot determine their destination.
Recommended correctionThis link exposes no accessible text. Add visible text that identifies its destination, or remove the link if it serves no purpose. For an icon-only link, provide an aria-label describing where it goes. The link points to tel:480.946.5110.
View 3 affected elements
Component · Ref B480X0
Affected pagehttps://hamra.com/pages/rolex-contact
Element.rolex-svg-link[href="tel:480.946.5110"]
Markup<a onclick="_satellite.track('contactCall');" class="rolex-svg-link" href="tel:480.946.5110"> Component · Ref M28HUF
Affected pagehttps://hamra.com/pages/rolex-contact
Element.store-details-svg-wrapper-inner:nth-child(2) > .rolex-svg-link
Markup<a class="rolex-svg-link" href="/pages/rolex-send-a-message#send-a-message">
Component · Ref AXTI6S
Affected pagehttps://hamra.com/pages/rolex-contact
Element#getDirections
Markup<a onclick="_satellite.track('getDirections');" id="getDirections" class="rolex-svg-link" href="https://maps.app.goo.gl/SDKD4bJVH2jVibLi7">
High
ARIA hidden element must not be focusable or contain focusable elements
WCAG 4.1.2 (A)9 instances5 inspected pages
ARIA hidden element must not be focusable or contain focusable elements
Why it mattersARIA hidden element must not be focusable or contain focusable elements
Recommended correctionReview the affected element and correct the reported accessibility issue.
View 9 affected elements
Component · Ref Y3F9MF
Affected pagehttps://hamra.com/pages/contact
Element#hamra-cart-drawer
Accessible nameShopping Cart
Markup<div class="hamra-cart-drawer" id="hamra-cart-drawer" aria-hidden="true">
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref LWHTR2
Affected pagehttps://hamra.com/
Element.g79NY-whro > .gp-cursor-pointer[data-hero-banner-link="true"][aria-label="Hero banner link"]
Accessible nameHero banner link
Markup<div data-hero-banner-link="true" aria-label="Hero banner link" aria-hidden="true" class="gp-cursor-pointer gp-h-full">
Component · Ref 1DHSUI
Affected pagehttps://hamra.com/
Element.gksNjvlwha > .gp-cursor-pointer[data-hero-banner-link="true"][aria-label="Hero banner link"]
Accessible nameHero banner link
Markup<div data-hero-banner-link="true" aria-label="Hero banner link" aria-hidden="true" class="gp-cursor-pointer gp-h-full">
Component · Ref VEO7X5
Affected pagehttps://hamra.com/
Element.gaIrjtfRqF > .gp-cursor-pointer[data-hero-banner-link="true"][aria-label="Hero banner link"]
Accessible nameHero banner link
Markup<div data-hero-banner-link="true" aria-label="Hero banner link" aria-hidden="true" class="gp-cursor-pointer gp-h-full">
Component · Ref 1KVCLF
Affected pagehttps://hamra.com/
Element.gmQK60nMeC > .gp-cursor-pointer[data-hero-banner-link="true"][aria-label="Hero banner link"]
Accessible nameHero banner link
Markup<div data-hero-banner-link="true" aria-label="Hero banner link" aria-hidden="true" class="gp-cursor-pointer gp-h-full">
High
ARIA container is missing required child roles
WCAG 1.3.1 (A)6 instances5 inspected pages
An ARIA role that requires specific child roles does not contain them, breaking the widget semantics.
Why it mattersAn ARIA role that requires specific child roles does not contain them, breaking the widget semantics.
Recommended correctionProvide the child roles the container role requires (e.g. option inside listbox).
View 6 affected elements
Component · Ref OXQIU2
Affected pagehttps://hamra.com/
Element.site-header__nav-list
Accessible nameROLEX
PATEK PHILIPPE
ENGAGEMENT
COLLECTIONS
JEWELRY
TIMEPIECES
CONTACT US
Rolemenubar
Markup<ul class="site-header__nav-list" role="menubar">
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref NBZOS9
Affected pagehttps://hamra.com/pages/rolex-contact
Element.rolex-store-details-badges
Accessible nameFilter by store type
Roletablist
Markup<div class="rolex-store-details-badges" role="tablist" aria-label="Filter by store type">
High
Text has insufficient colour contrast
WCAG 1.4.3 (AA)138 instances5 inspected pages
Text and background colours do not meet the minimum contrast ratio, reducing legibility.
Why it mattersText and background colours do not meet the minimum contrast ratio, reducing legibility.
Recommended correctionIncrease the contrast ratio to at least 4.5:1 for normal text and 3:1 for large text.
View 138 affected elements
Component · Ref 2PQSFE
Affected pagehttps://hamra.com/pages/contact
Element#inputName
Markup<input type="text" name="contact[name]" value="" class="form-control" id="inputName" placeholder="Your Name">
Affected pages/ /pages/contact /pages/rolex-contact
Component · Ref SGAPE3
Affected pagehttps://hamra.com/
Elementli:nth-child(4) > a[href$="tudor"]
Accessible nameTUDOR
Markup<a href="/collections/tudor">TUDOR</a>
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref PREBND
Affected pagehttps://hamra.com/products/oval-diamond
Element.col-md-6.col-lg-4.col-xl-4:nth-child(2) > .tt-mobile-collapse > .tt-collapse-content > .tt-list.cc > li:nth-child(3) > a
Accessible nameEngagement
Markup<a href="https://hamra.com/pages/engagement-rings">Engagement</a>
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref R0GJHU
Affected pagehttps://hamra.com/pages/rolex-contact
Element.tt-list.cc > li:nth-child(2) > a[href$="patek-philippe"]
Accessible namePatek Philippe
Markup<a href="/pages/patek-philippe">Patek Philippe</a>
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref 4VT2U4
Affected pagehttps://hamra.com/pages/rolex-contact
Element.tt-box-copyright
Accessible nameHamra Jewelers . All Rights Reserved
Markup<div class="tt-box-copyright">Hamra Jewelers <span class="auto-year"></span>. All Rights Reserved</div>
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref SQYT99
Affected pagehttps://hamra.com/pages/rolex-contact
Elementa[href$="about-us"]
Accessible nameThe Hamra Story
Markup<a href="/pages/about-us">The Hamra Story</a>
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref URWDP1
Affected pagehttps://hamra.com/
Element.tt-newsletter > .tt-mobile-collapse > h3
Accessible nameExclusive Offers & News
Markup<h3 class="tt-collapse-title">
Exclusive Offers & News
</h3> Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref LWV6HN
Affected pagehttps://hamra.com/products/oval-diamond
Element.tt-collapse-content > p:nth-child(4)
Accessible name15620 N Scottsdale Rd, Scottsdale, AZ 85254
Markup<p>15620 N Scottsdale Rd, Scottsdale, AZ 85254</p>
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref 1XZUDV
Affected pagehttps://hamra.com/pages/contact
Element.footer_subscribe_btn
Accessible nameSIGN UP
Markup<button type="submit" class="btn footer_subscribe_btn" name="commit">SIGN UP</button>
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref SQYTB4
Affected pagehttps://hamra.com/pages/contact
Elementp:nth-child(3) > a[href$="mailto:[email removed]"]
Accessible name[email removed]
Markup<a href="mailto:[email removed]" style="color: black;">[email removed]</a>
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref 5XOB4G
Affected pagehttps://hamra.com/pages/rolex-contact
Element.col-md-6.col-lg-4.col-xl-4:nth-child(3) > .tt-mobile-collapse > .tt-collapse-title
Accessible nameGET IN TOUCH
Markup<h3 class="tt-collapse-title">GET IN TOUCH</h3>
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref 554UOE
Affected pagehttps://hamra.com/products/oval-diamond
Elementinput[placeholder="Enter your e-mail"]
Accessible nameEmail field
Markup<input type="email" name="contact[email]" class="form-control" value="" placeholder="Enter your e-mail" autocomplete="off" autocapitalize="off" spellcheck="false" aria-label="Email field">
Affected pages/pages/contact /products/diamond /products/oval-diamond
Component · Ref DPN0U5
Affected pagehttps://hamra.com/pages/contact
Element#textareaMessage
Markup<textarea name="contact[body]" class="form-control" rows="8" placeholder="Your Message" id="textareaMessage"></textarea>
Component · Ref 0GEXW2
Affected pagehttps://hamra.com/products/diamond
Element.tt-mobile-collapse > .tt-collapse-content > p:nth-child(1)
Accessible nameCALL: 480.946.5110
Markup<p>CALL: <a href="tel:4809465110" style="color: black;">480.946.5110</a></p>
Affected pages/products/diamond /products/oval-diamond
Component · Ref QN1T0B
Affected pagehttps://hamra.com/pages/rolex-contact
Element#rolex-breadcrumb > span:nth-child(3)
Accessible nameContact us
Markup<span style="color: #61BD93;">
Component · Ref 7KNEXL
Affected pagehttps://hamra.com/pages/rolex-contact
Element.hamburger-label
Accessible nameMenu
Markup<p class="hamburger-label text-decoration-none rolex-fixed16 rolex-fw-regular rolex-text-white">Menu</p>
High
Hidden elements can still receive keyboard focus
WCAG 2.4.3 (A)50 instances5 inspected pages
An element is not visible but remains in the tab order, so a sighted keyboard user loses track of focus when it lands there.
Why it mattersAn element is not visible but remains in the tab order, so a sighted keyboard user loses track of focus when it lands there.
Recommended correctionKeep this element out of the tab order while its containing region is hidden — remove it from focus (for example tabindex="-1"), or apply the inert attribute to the hidden container where supported. Restore normal focusability when the region becomes visible.
View 50 affected elements
Component · Ref G7I4PB
Affected pagehttps://hamra.com/products/diamond
Elementdiv#site-header > header:nth-of-type(2) > div:nth-of-type(2) > div:nth-of-type(2) > a
Accessible nameContact us
Markup<a href="/pages/contact" class="site-header__mobile-icon-btn" aria-label="Contact us">
<img src="//hamra.com/cdn/shop/files/bell-icon_1024x1024_85efd27c-0e20-48ce-9cad-7335545c5981_1024x1024.webp?v=1761343178" alt="Contact us Icon" loading="lazy" style="height:20px;width:auto;">
</a> Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref PE4DEZ
Affected pagehttps://hamra.com/
Elementdiv#site-search-overlay > div:nth-of-type(2) > button
Accessible nameClose search
Markup<button class="search-overlay__close" data-search-close="" aria-label="Close search"><svg viewBox="0 0 24 24" fill="none" aria-hidden="true" width="22" height="22">
<path d="M18 6L6 18" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path>
<path d="M6 6L18 18" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path>
</svg></button> Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref LOZ8XY
Affected pagehttps://hamra.com/products/oval-diamond
Elementinput#hamra-search-input
Accessible nameSearch
Markup<input type="text" name="q-search" id="hamra-search-input" class="search-overlay__input" placeholder="Search products..." autocomplete="off" spellcheck="false" aria-label="Search">
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref PCQ32N
Affected pagehttps://hamra.com/
Elementdiv#mega-hamra_rolex_PhYTxb > div > div > div:nth-of-type(1) > a:nth-of-type(1)
Accessible nameDiscover Rolex
Markup<a href="/pages/rolex-discover" class="mmp__link">Discover Rolex</a>
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref 67U7K2
Affected pagehttps://hamra.com/pages/rolex-contact
Elementdiv#site-search-overlay > div:nth-of-type(2) > form > button
Accessible nameSubmit search
Markup<button type="submit" class="search-overlay__submit" aria-label="Submit search"><svg viewBox="0 0 20 20" fill="none" aria-hidden="true" width="20" height="20">
<circle cx="8.5" cy="8.5" r="5.75" stroke="currentColor" stroke-width="1.4"></circle>
<path d="M13 13L17 17" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path>
</svg></button> Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
High
Page has no main landmark
WCAG 1.3.1 (A)5 instances5 inspected pages
No <main> or role=main region is present, so screen reader users cannot jump to primary content.
Why it mattersNo <main> or role=main region is present, so screen reader users cannot jump to primary content.
Recommended correctionWrap the primary content in a single <main> element or role=main region.
View 5 affected elements
Component · Ref I6UOC6
Affected pagehttps://hamra.com/products/oval-diamond
Elementhtml > body
Accessible name/* ── Logo sizing ── */
.site-header__logo-img { height: 78px; width: auto; }
.site-header__mobile-logo-img { height: 40px; width: auto; }
.mega-menu-panel__inner { padding: 32px 40px; }
/* ── DESKTOP LOGO ROW: 3-column layout ── */
.site-header__top-bar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 24px;
position: relative;
}
.site-header__side-logo {
width: 170px;
display: flex;
align-items: center;
flex-shrink: 0;
}
.site-header__side-logo--left { justify-content: flex-start; }
.site-header__side-logo--right { justify-content: flex-end; }
/* .site-header__logo-link {
display: flex;
align-items: center;
justify-content: center;
flex: 1;
} */
.site-header__partner-link {
display: block;
text-decoration: none;
}
.site-header__partner-img {
display: block;
max-height: 80px;
width: auto;
object-fit: contain;
}
.site-header__partner-img--patek {
width: 136px;
max-height: 80px;
}
/* Rolex clock — overlay div captures the click so the iframe link works */
.site-header__rolex-clock-link {
display: block;
text-decoration: none;
position: relative;
}
.site-header__rolex-clock-wrap {
position: relative;
width: 150px;
height: 70px;
}
.site-header__rolex-clock-overlay {
position: absolute;
inset: 0;
z-index: 2;
cursor: pointer;
}
@media (max-width: 989px) {
.site-header__side-logo { display: none; }
.site-header__top-bar { display: none; }
}
/* ── TOP BAR ── */
.site-header__topbar {
background: #00345b;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 24px;
height: 44px;
position: relative;
z-index: 10;
}
.site-header__topbar-left {
display: flex;
align-items: center;
gap: 4px;
}
.site-header__topbar-right {
display: flex;
align-items: center;
gap: 16px;
}
/* Icon buttons inside top bar */
.site-topbar-btn {
background: none;
border: none;
cursor: pointer;
color: #fff;
padding: 6px;
display: flex;
align-items: center;
justify-content: center;
line-height: 1;
border-radius: 4px;
transition: opacity 0.15s;
text-decoration: none;
}
.site-topbar-btn:hover { opacity: 0.7; }
.site-topbar-btn svg { display: block; }
/* Cart trigger button — scoped badge */
.hamra-cart-trigger {
position: relative !important;
}
.hamra-topbar-badge {
position: absolute;
top: 0;
right: 0;
background: #9a7d4e;
color: #fff;
font-size: 9px;
line-height: 1;
min-width: 14px;
height: 14px;
border-radius: 7px;
display: flex;
align-items: center;
justify-content: center;
padding: 0 3px;
pointer-events: none;
transform: translate(30%, -30%);
}
.hamra-topbar-badge.is-hidden { display: none; }
/* Legacy — keep for any old references */
.site-topbar-cart-wrap { position: relative; display: flex; align-items: center; }
.site-topbar__cart-badge { display: none; }
/* Request Appointment button */
.site-topbar__appt-btn {
background: none;
border: 1px solid rgba(255,255,255,0.45);
color: #fff;
font-size: 11px;
letter-spacing: 0.08em;
text-transform: uppercase;
padding: 5px 14px;
border-radius: 2px;
text-decoration: none;
white-space: nowrap;
transition: background 0.15s, border-color 0.15s;
cursor: pointer;
}
.site-topbar__appt-btn:hover {
background: rgba(255,255,255,0.1);
border-color: rgba(255,255,255,0.7);
}
/* ── Mobile icon button base style ── */
.site-header__mobile-icon-btn {
background: none; border: none; cursor: pointer;
color: #000; padding: 6px; display: flex;
align-items: center; justify-content: center;
position: relative; text-decoration: none;
line-height: 1;
}
.site-header__mobile-icon-btn svg { display: block; }
.site-header__mobile-icon-btn:hover { opacity: 0.6; }
.hamra-mobile-badge {
position: absolute; top: 0; right: 0;
background: #9a7d4e; color: #fff; font-size: 9px;
min-width: 14px; height: 14px; border-radius: 7px;
display: flex; align-items: center; justify-content: center;
padding: 0 3px; pointer-events: none;
}
/* ── Contact icon sizing ── */
a.topbar-contacticon img { height: 17px; filter: invert(1); }
/* ── Hide old floating icon row on desktop ── */
.site-header__layout--mobile {
display: none;
}
/* ── Force old-theme cart drawer + account dropdown above everything ── */
.tt-dropdown-menu,
.tt-cart,
.tt-cart-holder,
.tt-dropdown-obj .tt-dropdown-menu,
.tt-obj-cart .tt-dropdown-menu {
z-index: 9999 !important;
}
/* ── Colour old-theme icons white inside the dark top bar ── */
.site-header__topbar-right .tt-parent-box,
.site-header__topbar-right .tt-obj-cart,
.site-header__topbar-right .tt-account {
display: flex;
align-items: center;
}
.site-header__topbar-right .tt-parent-box a,
.site-header__topbar-right .tt-parent-box svg,
.site-header__topbar-right .tt-parent-box i,
.site-header__topbar-right .tt-parent-box span:not(.tt-badge) {
color: #fff !important;
stroke: #fff !important;
}
/* Keep dropdown menus their own colors */
.site-header__topbar-right .tt-dropdown-menu a,
.site-header__topbar-right .tt-dropdown-menu span {
color: inherit !important;
stroke: inherit !important;
}
/* ── MOBILE overrides ── */
@media (max-width: 1072px) {
/* Hide desktop top bar on mobile */
.site-header__topbar { display: none; }
/* Show mobile header row */
.site-header__layout--mobile {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 16px;
height: 60px;
}
/* Hide desktop nav on mobile */
.site-header__top-bar,
.site-header__nav-bar { display: none; }
}
@media (min-width: 1072px) {
/* Show desktop nav, hide mobile row */
.site-header__layout--mobile { display: none; }
.site-header__top-bar { display: flex; }
.site-header__nav-bar { display: flex; }
}
/* ══ CUSTOM CART DRAWER ══ */
.hamra-cart-overlay {
display: none; position: fixed; inset: 0;
background: rgba(0,0,0,0.45); z-index: 8000;
}
.hamra-cart-overlay.is-open { display: block; }
.hamra-cart-drawer {
position: fixed; top: var(--hamra-header-bottom, 0px); right: -420px;
width: 420px; max-width: 100vw;
height: calc(100vh - var(--hamra-header-bottom, 0px));
background: #fff; z-index: 8001;
display: flex; flex-direction: column;
transition: right 0.3s ease; box-shadow: -4px 0 24px rgba(0,0,0,0.12);
}
@media(max-width:1071px){
.hamra-cart-drawer{
top: 0 !important;
height: 100vh !important
}
}
.hamra-cart-drawer.is-open { right: 0; }
.hamra-cart-header {
display: flex; align-items: center; justify-content: space-between;
padding: 20px 24px; border-bottom: 1px solid #e8e8e8;
flex-shrink: 0;
}
.hamra-cart-title {
font-size: 13px; font-weight: 600; letter-spacing: 0.1em;
text-transform: uppercase; color: #1a1a1a;
}
.hamra-cart-close {
background: none; border: none; cursor: pointer; padding: 4px;
color: #666; display: flex; align-items: center;
}
.hamra-cart-close:hover { color: #000; }
.hamra-cart-body { flex: 1; overflow-y: auto; }
.hamra-cart-loading, .hamra-cart-empty {
display: flex; flex-direction: column; align-items: center;
justify-content: center; height: 100%; gap: 16px;
color: #999; font-size: 14px; padding: 40px;
}
.hamra-cart-empty p { margin: 0; }
.hamra-cart-shop-btn {
display: inline-block; padding: 10px 24px;
bac…[truncated by Evolize: exceeded D1 value limit]
Markup<body class="pageproduct ">
<!-- Rolex CSS & JS Carousel Files Moved Into Body (Page Builder Conflict) -->
<link rel="stylesheet" href="//hamra.com/cdn/shop/t/126/assets/rolex-carousel-library.css?v=151994810049885874401723476847" type="text/css">
<script data-src="https://hamra.com/cdn/shop/t/126/assets/rolex-carousel-jquery.js?v=4203050695841123071723476846" type="text/lazyload"></script>
<script data-src="https://hamra.com/cdn/shop/t/126/assets/rolex-carousel-js.js?v=130305058301515425961723476847" type="text/lazyload"></script>
<link rel="stylesheet" href="https://cdnjs.cloudfl…
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
High
List items are not inside a list
WCAG 1.3.1 (A)15 instances5 inspected pages
A <li> appears outside a <ul> or <ol>, so the list relationship is not conveyed to assistive technology.
Why it mattersA <li> appears outside a <ul> or <ol>, so the list relationship is not conveyed to assistive technology.
Recommended correctionWrap related <li> elements in a <ul> or <ol>, or use a different element for non-list content.
View 15 affected elements
Component · Ref USXYY6
Affected pagehttps://hamra.com/pages/rolex-contact
Element.tt-col-right-footer-policy > li:nth-child(1)
Accessible namePOLICIES
Markup<li><a href="/pages/policies-1">POLICIES</a></li>
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
High
Form fields use placeholder text as the only label
WCAG 1.3.1 (A)12 instances3 inspected pages
Fields rely on placeholder text instead of a real label. The placeholder disappears once the user types, and it is not exposed as a programmatic label.
Why it mattersFields rely on placeholder text instead of a real label. The placeholder disappears once the user types, and it is not exposed as a programmatic label.
Recommended correctionAdd a persistent <label> associated with each field. Keep the placeholder for example text only, not as the label.
View 12 affected elements
Component · Ref S5BYN3
Affected pagehttps://hamra.com/pages/contact
Elementinput#inputEmail
Markup<input type="email" name="contact[email]" autocorrect="off" autocapitalize="off" value="" class="form-control" id="inputEmail" placeholder="Your Email">
Affected pages/pages/contact /products/diamond /products/oval-diamond
Component · Ref MRBACH
Affected pagehttps://hamra.com/pages/contact
Elementtextarea#textareaMessage
Markup<textarea name="contact[body]" class="form-control" rows="8" placeholder="Your Message" id="textareaMessage"></textarea>
Affected pages/pages/contact /products/diamond /products/oval-diamond
High
Scrollable region must have keyboard access
WCAG 2.1.1 (A)1 instance1 inspected page
Scrollable region must have keyboard access
Why it mattersScrollable region must have keyboard access
Recommended correctionReview the affected element and correct the reported accessibility issue.
View 1 affected element
Component · Ref M41BAC
Affected pagehttps://hamra.com/
Element#shopify-section-template--18270933975263__gp_section_605025567250580285 > .gps-lazy
Accessible nameHamra Jewelers, official Rolex dealer, Scottsdale, Arizona
Markup<section class="gp-mx-auto gp-max-w-full [&_*]:gp-max-w-full gps-lazy " style="--w:100%;--w-tablet:100%;--w-mobile:100%;--pl:none;--pl-tablet:none;--pl-mobile:none;--pr:none;--pr-tablet:none;--pr-mobile:none">
Medium
ARIA attributes have invalid values
WCAG 4.1.2 (A)35 instances5 inspected pages
ARIA attributes reference ids that do not exist or hold invalid values, breaking the accessibility tree.
Why it mattersARIA attributes reference ids that do not exist or hold invalid values, breaking the accessibility tree.
Recommended correctionCorrect ARIA attribute values and ensure referenced ids exist in the DOM.
View 35 affected elements
Component · Ref 4TH19Y
Affected pagehttps://hamra.com/
Elementbutton[aria-controls="mega-hamra_engagement_rPtTMi"]
Accessible nameOpen ENGAGEMENT menu
Markup<button class="site-header__nav-chevron" aria-haspopup="true" aria-expanded="false" aria-controls="mega-hamra_engagement_rPtTMi" aria-label="Open ENGAGEMENT menu" tabindex="-1">
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Medium
Content sits outside any landmark region
WCAG 1.3.1 (A)5 instances5 inspected pages
Meaningful content is not contained in a landmark (header/nav/main/footer/aside), so assistive-technology users cannot reach it via landmark navigation.
Why it mattersMeaningful content is not contained in a landmark (header/nav/main/footer/aside), so assistive-technology users cannot reach it via landmark navigation.
Recommended correctionWrap primary content in <main> and other regions in appropriate landmark elements.
View 5 affected elements
Component · Ref OO7EHI
Affected pagehttps://hamra.com/pages/contact
Elementsection#shopify-section-header-hamra > style
Accessible name/* ── Logo sizing ── */
.site-header__logo-img { height: 78px; width: auto; }
.site-header__mobile-logo-img { height: 40px; width: auto; }
.mega-menu-panel__inner { padding: 32px 40px; }
/* ── DESKTOP LOGO ROW: 3-column layout ── */
.site-header__top-bar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 24px;
position: relative;
}
.site-header__side-logo {
width: 170px;
display: flex;
align-items: center;
flex-shrink: 0;
}
.site-header__side-logo--left { justify-content: flex-start; }
.site-header__side-logo--right { justify-content: flex-end; }
/* .site-header__logo-link {
display: flex;
align-items: center;
justify-content: center;
flex: 1;
} */
.site-header__partner-link {
display: block;
text-decoration: none;
}
.site-header__partner-img {
display: block;
max-height: 80px;
width: auto;
object-fit: contain;
}
.site-header__partner-img--patek {
width: 136px;
max-height: 80px;
}
/* Rolex clock — overlay div captures the click so the iframe link works */
.site-header__rolex-clock-link {
display: block;
text-decoration: none;
position: relative;
}
.site-header__rolex-clock-wrap {
position: relative;
width: 150px;
height: 70px;
}
.site-header__rolex-clock-overlay {
position: absolute;
inset: 0;
z-index: 2;
cursor: pointer;
}
@media (max-width: 989px) {
.site-header__side-logo { display: none; }
.site-header__top-bar { display: none; }
}
/* ── TOP BAR ── */
.site-header__topbar {
background: #00345b;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 24px;
height: 44px;
position: relative;
z-index: 10;
}
.site-header__topbar-left {
display: flex;
align-items: center;
gap: 4px;
}
.site-header__topbar-right {
display: flex;
align-items: center;
gap: 16px;
}
/* Icon buttons inside top bar */
.site-topbar-btn {
background: none;
border: none;
cursor: pointer;
color: #fff;
padding: 6px;
display: flex;
align-items: center;
justify-content: center;
line-height: 1;
border-radius: 4px;
transition: opacity 0.15s;
text-decoration: none;
}
.site-topbar-btn:hover { opacity: 0.7; }
.site-topbar-btn svg { display: block; }
/* Cart trigger button — scoped badge */
.hamra-cart-trigger {
position: relative !important;
}
.hamra-topbar-badge {
position: absolute;
top: 0;
right: 0;
background: #9a7d4e;
color: #fff;
font-size: 9px;
line-height: 1;
min-width: 14px;
height: 14px;
border-radius: 7px;
display: flex;
align-items: center;
justify-content: center;
padding: 0 3px;
pointer-events: none;
transform: translate(30%, -30%);
}
.hamra-topbar-badge.is-hidden { display: none; }
/* Legacy — keep for any old references */
.site-topbar-cart-wrap { position: relative; display: flex; align-items: center; }
.site-topbar__cart-badge { display: none; }
/* Request Appointment button */
.site-topbar__appt-btn {
background: none;
border: 1px solid rgba(255,255,255,0.45);
color: #fff;
font-size: 11px;
letter-spacing: 0.08em;
text-transform: uppercase;
padding: 5px 14px;
border-radius: 2px;
text-decoration: none;
white-space: nowrap;
transition: background 0.15s, border-color 0.15s;
cursor: pointer;
}
.site-topbar__appt-btn:hover {
background: rgba(255,255,255,0.1);
border-color: rgba(255,255,255,0.7);
}
/* ── Mobile icon button base style ── */
.site-header__mobile-icon-btn {
background: none; border: none; cursor: pointer;
color: #000; padding: 6px; display: flex;
align-items: center; justify-content: center;
position: relative; text-decoration: none;
line-height: 1;
}
.site-header__mobile-icon-btn svg { display: block; }
.site-header__mobile-icon-btn:hover { opacity: 0.6; }
.hamra-mobile-badge {
position: absolute; top: 0; right: 0;
background: #9a7d4e; color: #fff; font-size: 9px;
min-width: 14px; height: 14px; border-radius: 7px;
display: flex; align-items: center; justify-content: center;
padding: 0 3px; pointer-events: none;
}
/* ── Contact icon sizing ── */
a.topbar-contacticon img { height: 17px; filter: invert(1); }
/* ── Hide old floating icon row on desktop ── */
.site-header__layout--mobile {
display: none;
}
/* ── Force old-theme cart drawer + account dropdown above everything ── */
.tt-dropdown-menu,
.tt-cart,
.tt-cart-holder,
.tt-dropdown-obj .tt-dropdown-menu,
.tt-obj-cart .tt-dropdown-menu {
z-index: 9999 !important;
}
/* ── Colour old-theme icons white inside the dark top bar ── */
.site-header__topbar-right .tt-parent-box,
.site-header__topbar-right .tt-obj-cart,
.site-header__topbar-right .tt-account {
display: flex;
align-items: center;
}
.site-header__topbar-right .tt-parent-box a,
.site-header__topbar-right .tt-parent-box svg,
.site-header__topbar-right .tt-parent-box i,
.site-header__topbar-right .tt-parent-box span:not(.tt-badge) {
color: #fff !important;
stroke: #fff !important;
}
/* Keep dropdown menus their own colors */
.site-header__topbar-right .tt-dropdown-menu a,
.site-header__topbar-right .tt-dropdown-menu span {
color: inherit !important;
stroke: inherit !important;
}
/* ── MOBILE overrides ── */
@media (max-width: 1072px) {
/* Hide desktop top bar on mobile */
.site-header__topbar { display: none; }
/* Show mobile header row */
.site-header__layout--mobile {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 16px;
height: 60px;
}
/* Hide desktop nav on mobile */
.site-header__top-bar,
.site-header__nav-bar { display: none; }
}
@media (min-width: 1072px) {
/* Show desktop nav, hide mobile row */
.site-header__layout--mobile { display: none; }
.site-header__top-bar { display: flex; }
.site-header__nav-bar { display: flex; }
}
/* ══ CUSTOM CART DRAWER ══ */
.hamra-cart-overlay {
display: none; position: fixed; inset: 0;
background: rgba(0,0,0,0.45); z-index: 8000;
}
.hamra-cart-overlay.is-open { display: block; }
.hamra-cart-drawer {
position: fixed; top: var(--hamra-header-bottom, 0px); right: -420px;
width: 420px; max-width: 100vw;
height: calc(100vh - var(--hamra-header-bottom, 0px));
background: #fff; z-index: 8001;
display: flex; flex-direction: column;
transition: right 0.3s ease; box-shadow: -4px 0 24px rgba(0,0,0,0.12);
}
@media(max-width:1071px){
.hamra-cart-drawer{
top: 0 !important;
height: 100vh !important
}
}
.hamra-cart-drawer.is-open { right: 0; }
.hamra-cart-header {
display: flex; align-items: center; justify-content: space-between;
padding: 20px 24px; border-bottom: 1px solid #e8e8e8;
flex-shrink: 0;
}
.hamra-cart-title {
font-size: 13px; font-weight: 600; letter-spacing: 0.1em;
text-transform: uppercase; color: #1a1a1a;
}
.hamra-cart-close {
background: none; border: none; cursor: pointer; padding: 4px;
color: #666; display: flex; align-items: center;
}
.hamra-cart-close:hover { color: #000; }
.hamra-cart-body { flex: 1; overflow-y: auto; }
.hamra-cart-loading, .hamra-cart-empty {
display: flex; flex-direction: column; align-items: center;
justify-content: center; height: 100%; gap: 16px;
color: #999; font-size: 14px; padding: 40px;
}
.hamra-cart-empty p { margin: 0; }
.hamra-cart-shop-btn {
display: inline-block; padding: 10px 24px;
bac…[truncated by Evolize: exceeded D1 value limit]
Markup<style data-shopify="">/* ── Logo sizing ── */
.site-header__logo-img { height: 78px; width: auto; }
.site-header__mobile-logo-img { height: 40px; width: auto; }
.mega-menu-panel__inner { padding: 32px 40px; }
/* ── DESKTOP LOGO ROW: 3-column layout ── */
.site-header__top-bar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 24px;
position: relative;
}
.site-header__side-logo {
width: 170px;
display: flex;
align-items: center;
flex-shrink: 0;
}
.site-header__side-logo--left { justify-content… Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Medium
List markup is malformed
WCAG 1.3.1 (A)10 instances5 inspected pages
A list contains elements other than the list items it should, breaking its structure.
Why it mattersA list contains elements other than the list items it should, breaking its structure.
Recommended correctionEnsure <ul>/<ol> contain only <li> (plus <script>/<template>) as direct children.
View 10 affected elements
Component · Ref F6IQOR
Affected pagehttps://hamra.com/products/oval-diamond
Element.col-md-6.col-lg-4.col-xl-4:nth-child(2) > .tt-mobile-collapse > .tt-collapse-content > .tt-list.cc
Accessible nameRolexPatek PhilippeEngagementTUDORWatch ServiceCareers
Markup<ul class="tt-list cc">
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Medium
Elements must only use permitted ARIA attributes
WCAG 4.1.2 (A)1 instance1 inspected page
Elements must only use permitted ARIA attributes
Why it mattersElements must only use permitted ARIA attributes
Recommended correctionReview the affected element and correct the reported accessibility issue.
View 1 affected element
Component · Ref K6NA68
Affected pagehttps://hamra.com/pages/rolex-contact
Element.rolex-store-details
Accessible nameStore details for Hamra Jewelers In Scottsdale
Markup<div class="rolex-store-details rolex-grid" aria-label="Store details for Hamra Jewelers In Scottsdale">
Low
Low-quality alternative text
WCAG 1.1.1 (A)20 instances5 inspected pages
Alt text looks like a filename, a generic word ("image", "photo"), or is duplicated across unrelated images — it likely does not describe the content.
Why it mattersAlt text looks like a filename, a generic word ("image", "photo"), or is duplicated across unrelated images — it likely does not describe the content.
Recommended correctionReplace placeholder or filename alt text with a concise description of what the image conveys.
View 20 affected elements
Component · Ref ZAR1TP
Affected pagehttps://hamra.com/pages/rolex-contact
Elementdiv#site-header > header:nth-of-type(2) > div:nth-of-type(2) > a > img
Markup<img src="//hamra.com/cdn/shop/files/Hamra_Logo_420x_1_420x_8594cae9-7317-4380-83ef-b2708154cdb0.avif?v=1781541733&width=200" alt="Hamra Jewelers" srcset="//hamra.com/cdn/shop/files/Hamra_Logo_420x_1_420x_8594cae9-7317-4380-83ef-b2708154cdb0.avif?v=1781541733&width=200 200w" width="200" height="83" loading="eager" class="site-header__mobile-logo-img">
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref MB0NCT
Affected pagehttps://hamra.com/products/diamond
Elementdiv#mega-hamra_contact_WKnzhQ > div > div > div:nth-of-type(4) > img
Markup<img src="//hamra.com/cdn/shop/files/Rectangle_67.png?v=1781813075&width=800" alt="Hamra Jewelers" srcset="//hamra.com/cdn/shop/files/Rectangle_67.png?v=1781813075&width=352 352w, //hamra.com/cdn/shop/files/Rectangle_67.png?v=1781813075&width=800 800w" width="800" height="461" loading="lazy" class="mmp-contact__store-img">
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Component · Ref NHVPLC
Affected pagehttps://hamra.com/products/diamond
Elementdiv:nth-of-type(2) > div > div:nth-of-type(1) > div:nth-of-type(1) > a > img
Markup<img src="//hamra.com/cdn/shop/files/Hamra_Logo_420x_1_420x_8594cae9-7317-4380-83ef-b2708154cdb0.avif?v=1781541733&width=200" alt="Hamra Jewelers" srcset="//hamra.com/cdn/shop/files/Hamra_Logo_420x_1_420x_8594cae9-7317-4380-83ef-b2708154cdb0.avif?v=1781541733&width=200 200w" width="200" height="83" loading="lazy" class="menu-drawer__logo-img">
Affected pages/ /pages/contact /pages/rolex-contact /products/diamond /products/oval-diamond
Low
Navigation regions are not distinguishable
WCAG 1.3.1 (A)2 instances1 inspected page
The page has multiple navigation landmarks but they lack accessible names, so screen reader users cannot tell them apart.
Why it mattersThe page has multiple navigation landmarks but they lack accessible names, so screen reader users cannot tell them apart.
Recommended correctionGive each navigation region a distinct aria-label (e.g. "Primary", "Footer") when more than one is present.
View 2 affected elements
Component · Ref E2ZRUG
Affected pagehttps://hamra.com/pages/rolex-contact
Elementdiv#non-cpo-nav > div > nav
Accessible name.st01{fill:#FFFFFF !important;}
Menu
Discover Rolex
Rolex watches
New Watches 2026
Rolex accessories
Watchmaking
Servicing
Oyster Story
Rolex at Hamra Jewelers
Contact us
Markup<nav class="nav-links">
<input type="checkbox" id="checkbox_toggle">
<label for="checkbox_toggle" class="hamburger">
<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 15 15" style="enable-background:new 0 0 15 15;" xml:space="preserve">
<style type="text/css">
.st01{fill:#FFFFFF !important;}
</style>
<path style="fill:#FFFFFF;" id="icons_x2F_play" class="st01" d="M7.5,11.6L0,3.4h15L7.5,11.6z"></path>
</svg>
</label>
… Component · Ref 5LHW7O
Affected pagehttps://hamra.com/pages/rolex-contact
Elementdiv#tt-pageContent > footer > nav
Accessible name.st0{fill:url(#SVGID_1_);stroke:url(#SVGID_00000019678463953470163940000014515243132316895158_);stroke-miterlimit:10;}
.st1{fill:url(#SVGID_00000063606133411579821670000017909272256378398881_);stroke:url(#SVGID_00000047060061096646967860000009091829973210069422_);stroke-miterlimit:10;}
.st2{fill:url(#SVGID_00000088829834965526485040000014352405103732822972_);stroke:url(#SVGID_00000072274475552831054730000003121955510388235945_);stroke-miterlimit:10;}
.st3{fill:url(#SVGID_00000026875514259642630330000003711209592884826757_);stroke:url(#SVGID_00000106849232411800699020000000685991592054965904_);stroke-miterlimit:10;}
.st4{fill:url(#SVGID_00000015355270138959550660000002731092226053496747_);}
.st5{fill:url(#SVGID_00000011026473038263735870000010455323275713252797_);}
.st6{fill:url(#SVGID_00000183971048184985532140000008494942543581525641_);}
.st7{fill:url(#SVGID_00000158031059448459336750000007533989951761296015_);}
.st8{fill:url(#SVGID_00000016760809254116245240000015731985956462375601_);}
.st9{fill:#140A06;}
.st10{fill:#7B4F36;}
.st11{fill:#684C34;}
.st12{fill:#79593A;}
.st1{fill:#FFFFFF !important;}
Back to top
Markup<nav class="rolex-grid-columns">
<!--?xml version="1.0" encoding="utf-8"?-->
<!-- Generator: Adobe Illustrator 26.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg class="rolex-footer-plaque" version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 456.6 494.7" style="enable-background:new 0 0 456.6 494.7;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#SVGID_1_);stroke:url(#SVGID_00000019678463953470163940000014515243132316895158_);stroke-miterlimit:10;}
.st1{fill:url(#SVGID_000000…
Low
Touch targets are too small
WCAG 2.5.8 (AA)2 instances1 inspected page
Interactive controls are smaller than the 24×24px minimum target size, making them hard to activate reliably by touch.
Why it mattersInteractive controls are smaller than the 24×24px minimum target size, making them hard to activate reliably by touch.
Recommended correctionIncrease this <a>'s rendered area to at least 24 × 24 CSS pixels, or provide sufficient spacing from adjacent targets. Prefer increasing padding on the existing control (for example the button or link) rather than adding a separate non-interactive wrapper.
View 2 affected elements
Component · Ref RD1FWJ
Affected pagehttps://hamra.com/pages/contact
Elementaddress > a[href="tel:4809465110"]
Accessible name480.946.5110
Markup<a href="tel:4809465110">480.946.5110</a>