{"product_id":"ovia-milan-600-single-towel-rail-gun-metal","title":"Ovia Milan 600 Single Towel Rail Gun Metal","description":"\u003cdiv class=\"ovia-pd\" style=\"--ac:#9C958C;--ac-deep:#403D39;--hero:url('https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_GunMetal_Hero_A.png?v=1779883740');\"\u003e\n\u003cstyle\u003e\n  .accordion-body:has(\u003e .ovia-pd) \u003e h2{display:none;}\n\n  .ovia-pd{font-family:inherit;color:#26241f;line-height:1.6;\n    \/* soft container tint, derived from the finish's DEEP accent — the colour\n       family tuned for the LIGHT body (ink, rules, drop-cap), NOT the --ac glow\n       that's tuned to sit on the dark banner. Was hard-coded cream (#fcfaf6 \/\n       #fffdf8), which is golden and so only ever suited Brushed Gold. ~4% of\n       --ac-deep into white reproduces that cream on gold and shifts per finish;\n       on the light body the dark finishes resolve to a clean, soft cool-grey\n       (matte black's near-black deep -\u003e pale charcoal, not a dingy mid-grey).\n       Fixed per product finish like the ink — not hover-reactive. *\/\n    --cream:color-mix(in srgb,var(--ac-deep) 4%,#fff);\n    --cream-soft:color-mix(in srgb,var(--ac-deep) 2.5%,#fff);\n    \/* finish-tracking NEUTRALS — a fixed-lightness grey nudged toward the finish's\n       deep accent, so the old warm\/cream greys read warm on gold but cool on\n       chrome\/gun metal and neutral on matte, WITHOUT shifting text hierarchy\n       (the base grey holds the lightness; --ac-deep only swings the hue). *\/\n    --label:color-mix(in srgb,var(--ac-deep) 20%,#898780); \/* uppercase labels \/ section heads *\/\n    --body:color-mix(in srgb,var(--ac-deep) 16%,#505050);  \/* body copy *\/\n    --faint:color-mix(in srgb,var(--ac-deep) 16%,#a7a299); \/* fine print \/ hints *\/\n    --line:color-mix(in srgb,var(--ac-deep) 9%,#efece6);   \/* hairlines \/ borders *\/\n    --line-2:color-mix(in srgb,var(--ac-deep) 7%,#f4f1eb); \/* lighter grid lines \/ dividers *\/\n    \/* the finish grid shows ALL six finishes at once, so its tiles stay NEUTRAL *\/\n    --tile:#f2f1ef;\n    --tile-line:#e9e7e3;\n    -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}\n  .ovia-pd *{box-sizing:border-box;}\n  .ovia-pd img{max-width:100%;}\n\n  \/* ============ 1. BANNER ============ *\/\n  .ovia-pd .opd-banner{position:relative;overflow:hidden;border-radius:16px;isolation:isolate;\n    background:radial-gradient(120% 140% at 88% 18%, #2a241a 0%, #1a160f 42%, #0e0b08 100%);\n    padding:32px 42px;display:flex;align-items:stretch;gap:24px;min-height:308px;\n    transition:background .5s ease;}\n  .ovia-pd .opd-banner::before{content:\"\";position:absolute;inset:0;z-index:0;\n    background:radial-gradient(62% 84% at 80% 44%, color-mix(in srgb,var(--ac) 50%,transparent) 0%, transparent 66%);\n    animation:opdBloom 1.4s ease-out both;transition:background .5s ease;}\n  .ovia-pd .opd-bL{position:relative;z-index:3;flex:1 1 46%;max-width:46%;\n    display:flex;flex-direction:column;justify-content:center;}\n  .ovia-pd .opd-logo{display:block;width:90px;height:30px;\n    background:url('https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/ovia-logo-black.png?v=1779186226') left center\/contain no-repeat;\n    filter:brightness(0) invert(1);opacity:.92;margin-bottom:20px;animation:opdRise .7s .05s ease-out both;}\n  .ovia-pd .opd-kicker{font-size:.66rem;letter-spacing:.34em;text-transform:uppercase;\n    color:color-mix(in srgb,var(--ac) 76%,#fff);margin-bottom:13px;font-weight:500;animation:opdRise .7s .14s ease-out both;}\n  .ovia-pd .opd-name{font-size:2.05rem;line-height:1.07;font-weight:300;color:#f6f1e9;\n    margin:0 0 5px;letter-spacing:-.012em;animation:opdRise .7s .22s ease-out both;}\n  .ovia-pd .opd-finish{font-size:.92rem;color:#b9af9c;font-weight:300;letter-spacing:.03em;animation:opdRise .7s .3s ease-out both;}\n  \/* finish name driven by :has() so it tracks the hovered swatch *\/\n  .ovia-pd .opd-finish__nm::before{content:\"Gun Metal\";}\n  .ovia-pd .opd-manifesto{margin-top:18px;padding-top:16px;border-top:1px solid rgba(255,255,255,.10);\n    font-size:1.05rem;font-weight:300;color:#e7ddcc;font-style:italic;line-height:1.45;animation:opdRise .7s .4s ease-out both;}\n  .ovia-pd .opd-manifesto em{color:var(--ac);font-style:italic;font-weight:400;}\n\n  .ovia-pd .opd-bR{position:static;flex:0 0 0;}\n  .ovia-pd .opd-figure{position:absolute;z-index:1;top:0;right:0;bottom:0;width:58%;margin:0;overflow:hidden;\n    \/* soft left-edge fade — some renders (e.g. the twin shower) crop on the left;\n       fading the leftmost sliver blends that hard cut into the banner ground *\/\n    -webkit-mask-image:linear-gradient(to right,transparent 0,#000 12%);mask-image:linear-gradient(to right,transparent 0,#000 12%);\n    animation:opdFloatIn 1.1s .3s cubic-bezier(.2,.7,.2,1) both;}\n  \/* stacked finish renders — crossfade on swatch hover (FEATURE 1) *\/\n  .ovia-pd .opd-prod{position:absolute;left:0;bottom:0;width:170%;max-width:none !important;height:auto;\n    opacity:0;transition:opacity .5s ease;-webkit-user-drag:none;user-select:none;pointer-events:none;}\n  .ovia-pd .ph--gm{opacity:1;}\n  \/* accent + banner finish label follow the hovered finish *\/\n  \/* finish PROCESS word (PVD vs Electroplated) — honest per finish, tracks hover too.\n     Default (non-hover) label is set per-finish by the rollout. *\/\n  .ovia-pd .opd-finish__pr::before{content:\"Electroplated\";}\n\n  .ovia-pd .opd-glint{position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen;\n    background:linear-gradient(108deg,transparent 40%,rgba(255,252,242,.84) 50%,transparent 60%);\n    background-size:260% 100%;background-repeat:no-repeat;\n    \/* mask to the fixture silhouette, stacked x3 with intersect so the alpha\n       MULTIPLIES — the opaque metal stays lit but the semi-transparent baked\n       shadow (low alpha) drops out, so the shine never bleeds onto the shadow *\/\n    -webkit-mask:var(--hero) left bottom\/170% auto no-repeat,var(--hero) left bottom\/170% auto no-repeat,var(--hero) left bottom\/170% auto no-repeat;\n    mask:var(--hero) left bottom\/170% auto no-repeat,var(--hero) left bottom\/170% auto no-repeat,var(--hero) left bottom\/170% auto no-repeat;\n    -webkit-mask-composite:source-in,source-in;mask-composite:intersect,intersect;\n    animation:opdGlint 9s 2.5s ease-in-out infinite;}\n  .ovia-pd .opd-badge{position:absolute;z-index:4;right:34px;top:24px;display:flex;gap:8px;align-items:center;\n    font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;color:color-mix(in srgb,var(--ac) 60%,#fff);border:1px solid color-mix(in srgb,var(--ac) 45%,transparent);\n    border-radius:30px;padding:6px 14px;background:rgba(0,0,0,.28);backdrop-filter:blur(3px);animation:opdRise .7s .55s ease-out both;}\n  .ovia-pd .opd-badge i{width:5px;height:5px;border-radius:50%;background:var(--ac);font-style:normal;\n    box-shadow:0 0 0 0 color-mix(in srgb,var(--ac) 70%,transparent);animation:opdPulse 2.6s ease-out infinite;}\n\n  \/* ============ 2. OPENING ============ *\/\n  .ovia-pd .opd-lead{margin:38px 4px 6px;font-size:1.2rem;line-height:1.62;font-weight:300;color:#34302a;letter-spacing:.002em;}\n  .ovia-pd .opd-lead .drop{color:var(--ac-deep);font-weight:500;}\n\n  \/* ============ 3. SPEC STRIP ============ *\/\n  .ovia-pd .opd-specs{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);\n    border:1px solid var(--line);border-radius:12px;overflow:hidden;margin:30px 0;}\n  .ovia-pd .opd-spec{background:#fff;padding:16px 12px;text-align:center;position:relative;transition:background .3s ease;}\n  .ovia-pd .opd-spec::after{content:\"\";position:absolute;left:50%;bottom:0;height:2px;width:0;background:var(--ac-deep);transform:translateX(-50%);transition:width .35s ease;}\n  .ovia-pd .opd-spec:hover{background:var(--cream-soft);}\n  .ovia-pd .opd-spec:hover::after{width:42%;}\n  .ovia-pd .opd-spec .l{font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);margin-bottom:7px;}\n  .ovia-pd .opd-spec .v{font-size:.86rem;font-weight:500;color:#2a2722;line-height:1.3;}\n  .ovia-pd .opd-spec .v small{display:block;font-weight:400;font-size:.74rem;color:var(--label);margin-top:2px;}\n\n  \/* ============ section heading ============ *\/\n  .ovia-pd .opd-h{font-size:.74rem;letter-spacing:.22em;text-transform:uppercase;color:var(--label);font-weight:600;\n    margin:46px 4px 22px;display:flex;align-items:center;gap:16px;}\n  .ovia-pd .opd-h::after{content:\"\";flex:1;height:1px;background:linear-gradient(90deg,var(--ac-deep),var(--line) 70%);transform-origin:left;}\n  .ovia-pd .opd-h .opd-hint{flex:0 0 auto;font-size:.58rem;letter-spacing:.14em;color:var(--faint);font-weight:500;text-transform:none;font-style:italic;}\n\n  \/* ============ 4. CRAFT ============ *\/\n  .ovia-pd .opd-craft{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin:0 0 8px;}\n  .ovia-pd .opd-c .n{font-size:.96rem;font-weight:600;color:var(--ac-deep);margin-bottom:12px;font-variant-numeric:tabular-nums;position:relative;padding-bottom:10px;}\n  .ovia-pd .opd-c .n::after{content:\"\";position:absolute;left:0;bottom:0;width:22px;height:2px;background:var(--ac-deep);}\n  .ovia-pd .opd-c .t{font-size:1.05rem;font-weight:500;color:#2a2722;margin:0 0 8px;line-height:1.25;}\n  .ovia-pd .opd-c p{margin:0;font-size:.9rem;color:var(--body);line-height:1.58;}\n\n  \/* ============ NEW: MACRO-DETAIL STRIP (FEATURE 2) ============ *\/\n  .ovia-pd .opd-macro{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}\n  .ovia-pd .opd-macro figure{margin:0;}\n  \/* square tiles — the gallery scenes are 2000x2000, so 1:1 shows them uncropped *\/\n  .ovia-pd .opd-macro .frame{display:block;aspect-ratio:1\/1;overflow:hidden;border-radius:12px;background:var(--cream);position:relative;}\n  .ovia-pd .opd-macro .frame img{width:100% !important;height:100% !important;object-fit:cover;display:block;transition:transform .6s cubic-bezier(.2,.7,.2,1);}\n  .ovia-pd .opd-macro figure:hover .frame img{transform:scale(1.08);}\n  .ovia-pd .opd-macro figcaption{margin-top:10px;font-size:.82rem;color:var(--body);}\n  .ovia-pd .opd-macro figcaption b{display:block;color:#2a2722;font-weight:500;font-size:.9rem;margin-bottom:1px;}\n\n  \/* ============ 5. FINISH FAMILY — interactive (FEATURE 1) ============ *\/\n  .ovia-pd .opd-finishes{display:flex;flex-wrap:wrap;justify-content:center;gap:16px 18px;\n    max-width:506px;margin:12px auto 8px;}\n  .ovia-pd .opd-fin{appearance:none;border:0;background:transparent;padding:0;margin:0;cursor:pointer;\n    width:150px;font:inherit;color:var(--body);display:flex;flex-direction:column;gap:9px;text-align:center;}\n  .ovia-pd .opd-fin__img{display:block;aspect-ratio:4\/3;overflow:hidden;border-radius:11px;\n    background:var(--tile);border:1px solid var(--tile-line);\n    transition:transform .28s cubic-bezier(.2,.7,.2,1),border-color .25s ease,box-shadow .25s ease;}\n  .ovia-pd .opd-fin__img img{width:100% !important;height:100% !important;object-fit:cover;object-position:6% bottom;display:block;pointer-events:none;-webkit-user-drag:none;-webkit-touch-callout:none;}\n  .ovia-pd .opd-fin__name{font-size:.78rem;letter-spacing:.01em;line-height:1.2;transition:color .2s ease;}\n  .ovia-pd .opd-fin:hover .opd-fin__img{transform:translateY(-4px);\n    border-color:color-mix(in srgb,var(--c) 55%,#d8d2c5);box-shadow:0 12px 26px rgba(80,66,40,.14);}\n  .ovia-pd .opd-fin:hover .opd-fin__name{color:#2a2722;}\n  .ovia-pd .opd-fin.is-current .opd-fin__img{border-color:var(--c);box-shadow:0 0 0 1px var(--c);}\n  .ovia-pd .opd-fin.is-current .opd-fin__name{color:#2a2722;font-weight:600;}\n  .ovia-pd .opd-fin.is-current .opd-fin__name::before{content:\"\";display:inline-block;width:6px;height:6px;\n    border-radius:50%;background:var(--c);margin-right:7px;vertical-align:middle;\n    box-shadow:0 0 0 1px color-mix(in srgb,var(--c) 40%,#fff);}\n\n  \/* ---- finish PREVIEW OVERLAY: each card owns a pane directly ABOVE IT.\n       hover (desktop) \/ press-hold (:active, mobile) pops that finish's\n       Gallery-A render in a metallic pane, pointer centred under it pointing\n       at that card. Per-finish --ac is set inline on each card (matte black =\n       true #1a1a1a — bright render bg). Pure CSS, no :has(). ---- *\/\n  .ovia-pd .opd-fin{position:relative;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;}\n  .ovia-pd .opv{position:absolute;left:calc(50% - var(--co,0px));bottom:calc(100% + 12px);z-index:30;width:min(400px,88vw);transform:translate(-50%,8px);opacity:0;pointer-events:none;transition:opacity .24s cubic-bezier(.16,1,.3,1),transform .3s cubic-bezier(.16,1,.3,1);}\n  .ovia-pd .opd-fin:active .opv{opacity:1;transform:translate(-50%,0);}\n  @media (hover:hover){.ovia-pd .opd-fin:hover .opv{opacity:1;transform:translate(-50%,0);}}\n  .ovia-pd .opv__frame{display:block;position:relative;border-radius:14px;padding:1.5px;width:100%;background:linear-gradient(135deg,color-mix(in srgb,var(--ac) 90%,#fff) 0%,var(--ac) 26%,color-mix(in srgb,var(--ac) 48%,#241a10) 50%,color-mix(in srgb,var(--ac) 95%,#fff) 72%,var(--ac) 100%);box-shadow:0 6px 16px -4px rgba(34,24,10,.42),0 2px 5px -1px rgba(34,24,10,.34);}\n  .ovia-pd .opv__inner{display:block;position:relative;border-radius:12.5px;overflow:hidden;aspect-ratio:1\/1;background:#f3ede2;z-index:2;}\n  .ovia-pd .opv__img{display:block;width:100% !important;height:100% !important;object-fit:cover;object-position:center;pointer-events:none;}\n  .ovia-pd .opv__cap{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:.55rem .75rem .5rem;background:linear-gradient(to top,rgba(8,6,5,.82),transparent);display:flex;align-items:center;gap:.45em;}\n  .ovia-pd .opv__dot{width:9px;height:9px;border-radius:50%;background:var(--ac);box-shadow:0 0 8px color-mix(in srgb,var(--ac) 60%,transparent);flex-shrink:0;}\n  .ovia-pd .opv__nm{font-size:.78rem;font-weight:400;letter-spacing:.03em;color:#f3ece0;}\n  .ovia-pd .opv__tip{position:absolute;left:calc(50% + var(--co,0px));bottom:-5px;width:14px;height:14px;z-index:1;transform:translateX(-50%) rotate(45deg);border-radius:0 0 4px 0;background:linear-gradient(135deg,color-mix(in srgb,var(--ac) 80%,#fff),var(--ac) 55%,color-mix(in srgb,var(--ac) 58%,#241a10));box-shadow:2px 2px 5px -2px rgba(34,24,10,.34);}\n  \/* pane re-centres on the grid; pointer slides to sit under the HELD card.\n     --co = held card's centre offset from the grid centre. 3 columns on desktop,\n     2 on phones (card 150px + 18px gap =\u003e 168px step). *\/\n  .ovia-pd .opd-fin--bg{--co:-168px;} .ovia-pd .opd-fin--bn{--co:0px;} .ovia-pd .opd-fin--cm{--co:168px;}\n  .ovia-pd .opd-fin--cr{--co:-168px;} .ovia-pd .opd-fin--gm{--co:0px;} .ovia-pd .opd-fin--mb{--co:168px;}\n  @media (max-width:600px){\n    .ovia-pd .opd-fin--bg{--co:-84px;} .ovia-pd .opd-fin--bn{--co:84px;} .ovia-pd .opd-fin--cm{--co:-84px;}\n    .ovia-pd .opd-fin--cr{--co:84px;} .ovia-pd .opd-fin--gm{--co:-84px;} .ovia-pd .opd-fin--mb{--co:84px;}\n  }\n  .ovia-pd .opd-hint .hint-hold{display:none;}\n  @media (hover:none){.ovia-pd .opd-hint .hint-hover{display:none;}.ovia-pd .opd-hint .hint-hold{display:inline;}}\n\n\n  \/* ============ NEW: DIMENSIONS — render + spec table (FEATURE 5) ============ *\/\n  .ovia-pd .opd-dims{display:flex;align-items:stretch;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--cream);}\n  .ovia-pd .opd-dims__draw{flex:1 1 58%;position:relative;min-height:300px;overflow:hidden;\n    background-image:linear-gradient(var(--line-2) 1px,transparent 1px),linear-gradient(90deg,var(--line-2) 1px,transparent 1px);\n    background-size:26px 26px;}\n  .ovia-pd .opd-dims__img{position:absolute;left:4%;bottom:0;height:90% !important;width:auto;max-width:none !important;\n    \/* tight top-edge fade — tall renders (twin shower, rail shower) crop at the top\n       of this Hero_B; fading the very top blends that hard cut into the grid *\/\n    -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 5%);mask-image:linear-gradient(to bottom,transparent 0,#000 5%);}\n  .ovia-pd .opd-dims__table{flex:0 0 248px;padding:22px 26px;border-left:1px solid var(--line-2);background:#fff;\n    display:flex;flex-direction:column;justify-content:center;}\n  .ovia-pd .opd-dims__row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;\n    padding:11px 0;border-bottom:1px solid var(--line-2);font-size:.84rem;}\n  .ovia-pd .opd-dims__row:last-child{border-bottom:none;}\n  .ovia-pd .opd-dims__row .k{color:var(--label);}\n  .ovia-pd .opd-dims__row .v{color:#2a2722;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;}\n  .ovia-pd .opd-dims__row .v.tbc{color:var(--faint);}\n  .ovia-pd .opd-dims__note{margin:10px 4px 0;font-size:.74rem;color:var(--faint);}\n  .ovia-pd .opd-dims__note b{color:var(--ac-deep);}\n\n  \/* ============ 6. ASSURANCE — original lifetime-warranty badge ============ *\/\n  .ovia-pd .opd-warranty{display:flex;align-items:stretch;border:1px solid var(--ac-deep);border-radius:12px;\n    overflow:hidden;margin:30px 0 10px;background:var(--cream-soft);position:relative;}\n  .ovia-pd .opd-warranty .badge{flex:0 0 152px;position:relative;overflow:hidden;\n    background:linear-gradient(160deg,#2a241a,#14110b);color:#f3ead8;\n    display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:22px 14px;gap:6px;}\n  .ovia-pd .opd-warranty .badge::before{content:\"\";position:absolute;inset:0;\n    background:linear-gradient(115deg,transparent 40%,rgba(255,250,235,.14) 50%,transparent 60%);\n    background-size:250% 100%;animation:opdGlint 6s 1s ease-in-out infinite;}\n  .ovia-pd .opd-warranty .badge .big{font-size:2rem;font-weight:300;color:var(--ac);line-height:1;position:relative;}\n  .ovia-pd .opd-warranty .badge .sm{font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;color:#b6ab97;position:relative;}\n  .ovia-pd .opd-warranty .body{padding:18px 22px;font-size:.92rem;color:#3a352d;line-height:1.58;}\n  .ovia-pd .opd-warranty .body b{color:#2a2722;}\n  .ovia-pd .opd-reg{font-size:.74rem;letter-spacing:.08em;color:var(--faint);margin:12px 4px 0;}\n\n  \/* ============ 7. COLLECTION — dark \"bookend\" panel (echoes the hero banner) ============ *\/\n  .ovia-pd .opd-coll{position:relative;overflow:hidden;isolation:isolate;margin:46px 0 6px;padding:44px 36px 40px;\n    border-radius:16px;text-align:center;\n    background:radial-gradient(120% 130% at 50% 0%, #2a241a 0%, #1a160f 46%, #0e0b08 100%);}\n  .ovia-pd .opd-coll::before{content:\"\";position:absolute;inset:0;z-index:0;\n    background:radial-gradient(52% 64% at 50% 2%, color-mix(in srgb,var(--ac) 22%,transparent), transparent 72%);}\n  .ovia-pd .opd-coll__logo{display:block;width:78px;height:26px;margin:0 auto 18px;position:relative;z-index:1;\n    background:url('https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/ovia-logo-black.png?v=1779186226') center\/contain no-repeat;\n    filter:brightness(0) invert(1);opacity:.9;}\n  .ovia-pd .opd-coll .t{position:relative;z-index:1;font-size:1.5rem;font-weight:300;color:#f4ecdd;margin:0 0 12px;letter-spacing:-.01em;}\n  .ovia-pd .opd-coll .t b{font-weight:600;color:var(--ac);}\n  .ovia-pd .opd-coll p{position:relative;z-index:1;margin:0 auto;max-width:52ch;font-size:.92rem;color:#bcb29e;line-height:1.65;}\n  .ovia-pd .opd-coll__rule{position:relative;z-index:1;width:56px;height:1px;margin:20px auto 0;\n    background:linear-gradient(90deg,transparent,var(--ac),transparent);}\n\n  \/* ============ FEATURE 3: SCROLL-REVEAL (CSS scroll-driven, JS-free) ============ *\/\n  @keyframes opdReveal{from{opacity:0;transform:translateY(26px);}to{opacity:1;transform:none;}}\n  @keyframes opdDrawLine{from{transform:scaleX(0);}to{transform:scaleX(1);}}\n  @supports (animation-timeline: view()){\n    .ovia-pd .reveal{animation:opdReveal both linear;animation-timeline:view();animation-range:entry 2% entry 46%;}\n    .ovia-pd .opd-h::after{animation:opdDrawLine both linear;animation-timeline:view();animation-range:entry 0% entry 40%;}\n  }\n\n  \/* ============ keyframes ============ *\/\n  @keyframes opdRise{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:none;}}\n  @keyframes opdBloom{from{opacity:0;transform:scale(.85);}to{opacity:1;transform:none;}}\n  @keyframes opdFloatIn{from{opacity:0;transform:translateY(26px) scale(.97);}to{opacity:1;transform:none;}}\n  @keyframes opdGlint{0%{background-position:160% 0;}26%{background-position:-60% 0;}100%{background-position:-60% 0;}}\n  @keyframes opdPulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--ac) 60%,transparent);}70%{box-shadow:0 0 0 7px transparent;}100%{box-shadow:0 0 0 0 transparent;}}\n  @keyframes opdSpin{to{transform:rotate(360deg);}}\n\n  @media (prefers-reduced-motion:reduce){.ovia-pd *{animation:none !important;}}\n\n  \/* ============ responsive ============ *\/\n  @media (max-width:680px){\n    .ovia-pd .opd-banner{flex-direction:column;text-align:center;padding:26px 22px 0;min-height:0;}\n    .ovia-pd .opd-bL{max-width:100%;flex-basis:auto;align-items:center;}\n    .ovia-pd .opd-bR{position:relative;flex:0 0 auto;width:100%;height:230px;}\n    \/* MUST stay a containing block on mobile — if this goes position:static the\n       absolutely-positioned render escapes to .opd-banner (auto height), its\n       height:100% collapses and the render vanishes while the inset-pinned glint\n       still shows. Keep position:relative so height:100% resolves to the 230px slot. *\/\n    .ovia-pd .opd-figure{position:absolute;inset:0;width:100%;height:100%;}\n    \/* match the render to the glint mask exactly (left bottom \/ 170% width) so the\n       physical product sits under its own shine — don't size by height (overblows). *\/\n    .ovia-pd .opd-prod{width:170%;height:auto;left:0;bottom:0;transform:none;}\n    .ovia-pd .opd-manifesto{border-top:none;padding-top:6px;}\n    .ovia-pd .opd-badge{position:static;order:-1;margin:0 auto 16px;align-self:center;}\n    \/* 5 specs on a 6-col grid: top row 3 cells span 2 each, bottom row 2 cells\n       span 3 each — both rows fill the full width, no trailing empty gap. *\/\n    .ovia-pd .opd-specs{grid-template-columns:repeat(6,1fr);}\n    .ovia-pd .opd-spec:nth-child(-n+3){grid-column:span 2;}\n    .ovia-pd .opd-spec:nth-child(n+4){grid-column:span 3;}\n    .ovia-pd .opd-craft{grid-template-columns:1fr;gap:20px;}\n    \/* 3 scene shots: 2 per row, the lone last one centres (not left-anchored)\n       and sits a touch wider so the row isn't cramped. Flex-wrap + justify-center;\n       :last-child:nth-child(odd) only fires when an item is genuinely orphaned. *\/\n    .ovia-pd .opd-macro{display:flex;flex-wrap:wrap;justify-content:center;}\n    .ovia-pd .opd-macro figure{flex:0 1 calc(50% - 7px);}\n    .ovia-pd .opd-macro figure:last-child:nth-child(odd){flex-basis:62%;}\n    .ovia-pd .opd-warranty{flex-direction:column;text-align:center;}\n    \/* stack the dimensions block on mobile — the fixed 248px table otherwise\n       eats ~70% of the row and squeezes the render\/grid to a sliver. Drawing on\n       top at full width with a real height, spec table full-width beneath it. *\/\n    .ovia-pd .opd-dims{flex-direction:column;}\n    .ovia-pd .opd-dims__draw{flex:none;width:100%;min-height:280px;}\n    .ovia-pd .opd-dims__table{flex:none;width:100%;border-left:none;border-top:1px solid var(--line-2);}\n  }\n\n  \/* ============ MATTE BLACK modifier (gated to the mb description only) ============ *\/\n  .ovia-pd.opd--matte .opd-banner{background:radial-gradient(120% 140% at 80% 30%, #1a1918 0%, #0b0a0a 52%, #030303 100%);}\n  .ovia-pd.opd--matte .opd-banner::before{background:radial-gradient(56% 78% at 80% 44%, rgba(150,147,142,.16) 0%, transparent 60%);}\n  .ovia-pd.opd--matte .opd-coll{background:radial-gradient(120% 130% at 50% 0%, #1a1918 0%, #0b0a0a 50%, #030303 100%);}\n  .ovia-pd.opd--matte .opd-warranty .badge{background:linear-gradient(160deg,#1d1c1b,#070706);}\n  .ovia-pd.opd--matte .opd-glint{display:none;}\n  .ovia-pd.opd--matte .opd-badge{background:rgba(0,0,0,.42);}\n  .ovia-pd.opd--matte .opd-name{color:#eeedeb;}\n  .ovia-pd.opd--matte .opd-finish{color:#9c9a96;}\n  .ovia-pd.opd--matte .opd-manifesto{color:#d6d4d0;}\n\n  \/* ====================================================================== *\/\n  \/* ============  PREMIUM ADDITIONS (creative pass)  ====================== *\/\n  \/* ====================================================================== *\/\n\n  \/* --- BENEATH THE SURFACE: finished-surface feature (visual beside the text) --- *\/\n  .ovia-pd .opd-bond{display:grid;grid-template-columns:minmax(0,44%) 1fr;gap:30px;align-items:center;\n    border:1px solid var(--line);border-radius:14px;background:var(--cream);padding:26px 28px;}\n  .ovia-pd .opd-eng__s{font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ac-deep);font-weight:600;margin-bottom:7px;}\n  .ovia-pd .opd-bond__t{font-size:1.2rem;font-weight:500;color:#2a2722;margin:0 0 11px;letter-spacing:-.01em;}\n  .ovia-pd .opd-bond p{font-size:.9rem;color:var(--body);line-height:1.6;margin:0;}\n\n  \/* finish swatch — believable brushed metal, themed by --ac (fully repeatable) *\/\n  .ovia-pd .opd-swatch{display:block;position:relative;height:172px;border-radius:9px;overflow:hidden;isolation:isolate;\n    box-shadow:0 6px 16px rgba(70,48,12,.28),inset 0 0 0 1px rgba(255,255,255,.12);\n    background:linear-gradient(90deg,\n      color-mix(in srgb,var(--ac) 38%,var(--shadow,#241803)) 0%,\n      color-mix(in srgb,var(--ac) 62%,var(--shadow,#241803)) 16%,\n      var(--ac) 32%,\n      color-mix(in srgb,var(--ac) 52%,#fff) 50%,\n      var(--ac) 68%,\n      color-mix(in srgb,var(--ac) 62%,var(--shadow,#241803)) 84%,\n      color-mix(in srgb,var(--ac) 38%,var(--shadow,#241803)) 100%);}\n  .ovia-pd .opd-swatch::before{content:\"\";position:absolute;inset:0;z-index:1;mix-blend-mode:soft-light;opacity:.9;\n    background:url(\"data:image\/svg+xml,\u003csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='280' height='280'\u003e\u003cfilter id='b'\u003e\u003cfeTurbulence type='fractalNoise' baseFrequency='0.82 0.012' numOctaves='3' stitchTiles='stitch'\/\u003e\u003cfeColorMatrix type='saturate' values='0'\/\u003e\u003c\/filter\u003e\u003crect width='280' height='280' filter='url(%23b)'\/\u003e\u003c\/svg\u003e\") 0 0\/280px 280px;}\n  .ovia-pd .opd-swatch::after{content:\"\";position:absolute;inset:0;z-index:2;pointer-events:none;mix-blend-mode:soft-light;opacity:.42;\n    background:url(\"data:image\/svg+xml,\u003csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='360' height='360'\u003e\u003cfilter id='p'\u003e\u003cfeTurbulence type='fractalNoise' baseFrequency='0.13 0.012' numOctaves='2' stitchTiles='stitch'\/\u003e\u003cfeColorMatrix type='saturate' values='0'\/\u003e\u003c\/filter\u003e\u003crect width='360' height='360' filter='url(%23p)'\/\u003e\u003c\/svg\u003e\") 0 0\/360px 360px;}\n  \/* POLISHED (chrome) — mirror reflection, no brush grain *\/\n  .ovia-pd .opd-swatch.is-polished{background:linear-gradient(90deg,\n    color-mix(in srgb,var(--ac) 34%,#0b0f13) 0%,\n    color-mix(in srgb,var(--ac) 64%,#0b0f13) 20%,\n    color-mix(in srgb,var(--ac) 88%,#fff) 41%,\n    #fbfdff 50%,\n    color-mix(in srgb,var(--ac) 88%,#fff) 59%,\n    color-mix(in srgb,var(--ac) 64%,#0b0f13) 80%,\n    color-mix(in srgb,var(--ac) 34%,#0b0f13) 100%);}\n  .ovia-pd .opd-swatch.is-polished::before{display:none;}\n  .ovia-pd .opd-swatch.is-polished::after{opacity:.1;}\n  \/* MATTE (matte black) — flat, soft diffuse shading, no grain, no specular *\/\n  .ovia-pd .opd-swatch.is-matte{background:radial-gradient(135% 115% at 50% 24%,\n    color-mix(in srgb,var(--ac) 78%,#fff) 0%,\n    var(--ac) 44%,\n    color-mix(in srgb,var(--ac) 72%,#000) 100%);}\n  .ovia-pd .opd-swatch.is-matte::before{display:none;}\n  .ovia-pd .opd-swatch.is-matte::after{opacity:.14;}\n  .ovia-pd .opd-macroshot__cap{font-size:.68rem;letter-spacing:.04em;color:var(--label);margin-top:11px;}\n  .ovia-pd .opd-macroshot__cap b{color:#2a2722;font-weight:600;}\n\n  \/* --- COMPLIANCE marks + care --- *\/\n  .ovia-pd .opd-cert{display:flex;flex-wrap:wrap;justify-content:center;gap:14px 30px;margin:34px 0 0;padding:20px 0;\n    border-top:1px solid var(--line);border-bottom:1px solid var(--line);}\n  .ovia-pd .opd-cert__i{display:flex;align-items:center;gap:10px;font-size:.78rem;color:var(--body);letter-spacing:.01em;}\n  .ovia-pd .opd-cert__i b{color:#2a2722;font-weight:600;}\n  .ovia-pd .opd-cert__i i{flex:0 0 auto;width:22px;height:22px;position:relative;}\n  .ovia-pd .opd-cert__i .ic-wm{border:1.5px solid var(--ac-deep);border-radius:6px;}\n  .ovia-pd .opd-cert__i .ic-wm::after{content:\"\";position:absolute;left:7px;top:4px;width:5px;height:9px;border:solid var(--ac-deep);border-width:0 1.5px 1.5px 0;transform:rotate(45deg);}\n  .ovia-pd .opd-cert__i .ic-wels::after{content:\"★\";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:19px;color:var(--ac-deep);}\n  .ovia-pd .opd-cert__i .ic-as{border:1.5px solid var(--ac-deep);border-radius:4px;}\n  .ovia-pd .opd-cert__i .ic-as::after{content:\"\";position:absolute;left:5px;right:5px;top:6px;height:1.5px;background:var(--ac-deep);box-shadow:0 4px 0 var(--ac-deep),0 8px 0 var(--ac-deep);}\n  \/* --- CARE card --- *\/\n  .ovia-pd .opd-care2{display:flex;gap:20px;align-items:center;border:1px solid var(--line);border-radius:14px;background:var(--cream);padding:22px 26px;}\n  .ovia-pd .opd-care2__icon{flex:0 0 46px;height:46px;border-radius:50%;position:relative;\n    background:color-mix(in srgb,var(--ac) 16%,#fff);border:1px solid color-mix(in srgb,var(--ac) 40%,var(--line));}\n  .ovia-pd .opd-care2__icon::before{content:\"\\2726\";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;\n    font-size:19px;color:var(--ac-deep);line-height:1;}\n  .ovia-pd .opd-care2__lead{font-size:.98rem;font-weight:500;color:#2a2722;margin:0 0 11px;}\n  .ovia-pd .opd-care2__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px;}\n  .ovia-pd .opd-care2__list li{position:relative;padding-left:23px;font-size:.86rem;color:var(--body);line-height:1.4;}\n  .ovia-pd .opd-care2__list li::before{position:absolute;left:0;top:0;font-weight:700;font-size:.84rem;}\n  .ovia-pd .opd-care2__list .ok::before{content:\"\\2713\";color:var(--ac-deep);}\n  .ovia-pd .opd-care2__list .no::before{content:\"\\2715\";color:#c4b9a3;}\n\n  \/* responsive — premium additions *\/\n  @media (max-width:680px){\n    .ovia-pd .opd-bond{grid-template-columns:1fr;}\n    .ovia-pd .opd-cert{gap:12px 20px;}\n  }\n\u003c\/style\u003e\n\n\u003c!-- 1. BANNER --\u003e\n\u003cdiv class=\"opd-banner\"\u003e\n  \u003cdiv class=\"opd-bL\"\u003e\n    \u003cspan class=\"opd-logo\" role=\"img\" aria-label=\"Ovia\"\u003e\u003c\/span\u003e\n    \u003cdiv class=\"opd-kicker\"\u003eMilan Collection\u003c\/div\u003e\n    \u003ch2 class=\"opd-name\"\u003e600 Single Towel Rail\u003c\/h2\u003e\n    \u003cdiv class=\"opd-finish\"\u003e\n\u003cspan class=\"opd-finish__nm\"\u003e\u003c\/span\u003e · \u003cspan class=\"opd-finish__pr\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"opd-manifesto\"\u003e“The \u003cem\u003elast\u003c\/em\u003e towel rail you’ll buy.”\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"opd-bR\"\u003e\n    \u003cdiv class=\"opd-figure\"\u003e\n      \u003cimg class=\"opd-prod ph--bg\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_BrushedGold_Hero_A.png?v=1779883665\" alt=\"Ovia Milan 600 Single Towel Rail in Gun Metal\"\u003e\n      \u003cimg class=\"opd-prod ph--bn\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_BrushedNickelWarm_Hero_A.png?v=1779883684\" alt=\"\" aria-hidden=\"true\"\u003e\n      \u003cimg class=\"opd-prod ph--cm\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_Champagne_Hero_A.png?v=1779883702\" alt=\"\" aria-hidden=\"true\"\u003e\n      \u003cimg class=\"opd-prod ph--cr\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_Chrome_Hero_A.png?v=1779883722\" alt=\"\" aria-hidden=\"true\"\u003e\n      \u003cimg class=\"opd-prod ph--gm\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_GunMetal_Hero_A.png?v=1779883740\" alt=\"\" aria-hidden=\"true\"\u003e\n      \u003cimg class=\"opd-prod ph--mb\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_MatteBlack_Hero_A.png?v=1779883759\" alt=\"\" aria-hidden=\"true\"\u003e\n      \u003cspan class=\"opd-glint\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"opd-badge\"\u003e\n\u003ci\u003e\u003c\/i\u003eDZR Brass · 15-Year Finish\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- 2. OPENING --\u003e\n\u003cp class=\"opd-lead reveal\"\u003eA towel rail is the most-handled fitting in the bathroom — wet towels, steam and a daily tug — so it has to be built for it. The \u003cspan class=\"drop\"\u003eMilan\u003c\/span\u003e rail is machined from DZR brass and finished in gun metal, multi-layer electroplated to stay hard-wearing and true for the life of the room, fixed dead-level on concealed mounts. The detail that pulls the room together — and the last one you’ll ever fit.\u003c\/p\u003e\n\n\u003c!-- 3. SPEC STRIP --\u003e\n\u003cdiv class=\"opd-specs reveal\"\u003e\n  \u003cdiv class=\"opd-spec\"\u003e\n\u003cdiv class=\"l\"\u003eMaterial\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003eDZR Brass\u003csmall\u003edezinc-resistant\u003c\/small\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"opd-spec\"\u003e\n\u003cdiv class=\"l\"\u003eFinish\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003eGun Metal\u003csmall\u003eElectroplated\u003c\/small\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"opd-spec\"\u003e\n\u003cdiv class=\"l\"\u003eLength\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e645 mm\u003c\/div\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"opd-spec\"\u003e\n\u003cdiv class=\"l\"\u003eProjection\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e80 mm\u003c\/div\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"opd-spec\"\u003e\n\u003cdiv class=\"l\"\u003eWarranty\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e15 Year\u003csmall\u003efinish incl.\u003c\/small\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- 4. CRAFT --\u003e\n\u003cdiv class=\"opd-h reveal\"\u003eWhy it lasts\u003c\/div\u003e\n\u003cdiv class=\"opd-craft reveal\"\u003e\n  \u003cdiv class=\"opd-c\"\u003e\n\u003cdiv class=\"n\"\u003e01\u003c\/div\u003e\n\u003cdiv class=\"t\"\u003eDZR brass, made to resist\u003c\/div\u003e\n\u003cp\u003eMachined from DZR (dezincification-resistant) brass — it won’t corrode, pit or weep at the wall the way ordinary rail metal does in a wet, steamy bathroom.\u003c\/p\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"opd-c\"\u003e\n\u003cdiv class=\"n\"\u003e02\u003c\/div\u003e\n\u003cdiv class=\"t\"\u003eA finish guaranteed for 15 years\u003c\/div\u003e\n\u003cp\u003eBuilt up over the brass in multiple plated layers, the gun metal resists tarnish, scratching and fade — and it’s backed, in full, by a 15-year finish warranty.\u003c\/p\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"opd-c\"\u003e\n\u003cdiv class=\"n\"\u003e03\u003c\/div\u003e\n\u003cdiv class=\"t\"\u003eFixed firm to the wall\u003c\/div\u003e\n\u003cp\u003eMounted on concealed fixings that take the weight of wet towels without working loose — solid, dead-level and quiet against the wall for years.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- NEW: BENEATH THE SURFACE — the finish (two variants; rollout keeps the one matching the finish's process) --\u003e\n\u003cdiv class=\"opd-h reveal\"\u003eBeneath the surface\u003c\/div\u003e\n\n\n\u003cdiv class=\"opd-bond reveal\"\u003e\n  \u003cdiv class=\"opd-bond__vis\"\u003e\n    \u003cdiv class=\"opd-swatch\" style=\"--ac:#94908A;--shadow:#0d0e0e\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"opd-macroshot__cap\"\u003e\n\u003cb\u003eGun Metal Electroplated\u003c\/b\u003e · layered and sealed over solid brass\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"opd-bond__txt\"\u003e\n    \u003cdiv class=\"opd-eng__s\"\u003eThe finish\u003c\/div\u003e\n    \u003ch4 class=\"opd-bond__t\"\u003ePlated to last\u003c\/h4\u003e\n    \u003cp\u003eThe gun metal is built up over the solid-brass body in successive electroplated layers, then sealed against tarnish and everyday wear — the same proven process trusted on quality tapware for generations. Hard-wearing and true to tone, and backed, like every Milan finish, for a full 15 years.\u003c\/p\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c!-- NEW: STYLED CONTEXT STRIP (FEATURE 2 — repurposed: gallery renders are styled scenes) --\u003e\n\u003cdiv class=\"opd-h reveal\"\u003eIn the setting\u003c\/div\u003e\n\u003cdiv class=\"opd-macro reveal\"\u003e\n  \u003cfigure\u003e\u003cspan class=\"frame\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_GunMetal_A_b3aa9d36-011d-4bf6-9564-006dc9ba0ccc.png?v=1779892530\" alt=\"Milan towel rail in DZR brass\"\u003e\u003c\/span\u003e\u003cfigcaption\u003e\u003cb\u003eWet-room ready\u003c\/b\u003eDZR brass that won’t weep at the wall.\u003c\/figcaption\u003e\u003c\/figure\u003e\n  \u003cfigure\u003e\u003cspan class=\"frame\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_GunMetal_B_3a8b403d-43d9-49c2-ada4-1f03c60fa9f4.png?v=1779892530\" alt=\"Milan towel rail mounting\"\u003e\u003c\/span\u003e\u003cfigcaption\u003e\u003cb\u003eFixed firm\u003c\/b\u003eConcealed mounts, dead level.\u003c\/figcaption\u003e\u003c\/figure\u003e\n  \u003cfigure\u003e\u003cspan class=\"frame\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_GunMetal_C_89ba7653-751c-4331-803f-e0f8003db81a.png?v=1779892530\" alt=\"Milan towel rail gun metal\"\u003e\u003c\/span\u003e\u003cfigcaption\u003e\u003cb\u003eIn the setting\u003c\/b\u003eGun metal grounds a light palette.\u003c\/figcaption\u003e\u003c\/figure\u003e\n\u003c\/div\u003e\n\n\u003c!-- 5. FINISH FAMILY — interactive (FEATURE 1) --\u003e\n\u003cdiv class=\"opd-h reveal\"\u003eOne silhouette, six finishes \u003cspan class=\"opd-hint\"\u003e\u003cspan class=\"hint-hover\"\u003ehover to preview\u003c\/span\u003e\u003cspan class=\"hint-hold\"\u003ehold to preview\u003c\/span\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"opd-finishes\"\u003e\n  \u003cbutton type=\"button\" class=\"opd-fin opd-fin--bg\" style=\"--c:#C5A253;--ac:#C5A253\"\u003e\u003cspan class=\"opv\" aria-hidden=\"true\"\u003e\u003cspan class=\"opv__frame\"\u003e\u003cspan class=\"opv__inner\"\u003e\u003cimg class=\"opv__img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_BrushedGold_A_cbb82b1f-5cbd-418f-9bb9-3a9d5b167056.png?v=1779892529\u0026amp;width=800\" alt=\"\"\u003e\u003cspan class=\"opv__cap\"\u003e\u003cspan class=\"opv__dot\"\u003e\u003c\/span\u003e\u003cspan class=\"opv__nm\"\u003eBrushed Gold\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"opv__tip\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"opd-fin__img\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_BrushedGold_Hero_A.png?v=1779883665\u0026amp;width=600\" alt=\"\"\u003e\u003c\/span\u003e\u003cspan class=\"opd-fin__name\"\u003eBrushed Gold\u003c\/span\u003e\u003c\/button\u003e\n  \u003cbutton type=\"button\" class=\"opd-fin opd-fin--bn\" style=\"--c:#CFC4B0;--ac:#CFC4B0\"\u003e\u003cspan class=\"opv\" aria-hidden=\"true\"\u003e\u003cspan class=\"opv__frame\"\u003e\u003cspan class=\"opv__inner\"\u003e\u003cimg class=\"opv__img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_BrushedNickelWarm_A_d3c24611-34b8-4492-8b6f-4d2a08cf44ea.png?v=1779892527\u0026amp;width=800\" alt=\"\"\u003e\u003cspan class=\"opv__cap\"\u003e\u003cspan class=\"opv__dot\"\u003e\u003c\/span\u003e\u003cspan class=\"opv__nm\"\u003eBrushed Nickel\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"opv__tip\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"opd-fin__img\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_BrushedNickelWarm_Hero_A.png?v=1779883684\u0026amp;width=600\" alt=\"\"\u003e\u003c\/span\u003e\u003cspan class=\"opd-fin__name\"\u003eBrushed Nickel\u003c\/span\u003e\u003c\/button\u003e\n  \u003cbutton type=\"button\" class=\"opd-fin opd-fin--cm\" style=\"--c:#DDB3AE;--ac:#DDB3AE\"\u003e\u003cspan class=\"opv\" aria-hidden=\"true\"\u003e\u003cspan class=\"opv__frame\"\u003e\u003cspan class=\"opv__inner\"\u003e\u003cimg class=\"opv__img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_Champagne_A_8d5e05d2-fdad-49a1-bab8-1366620a1a9d.png?v=1779892528\u0026amp;width=800\" alt=\"\"\u003e\u003cspan class=\"opv__cap\"\u003e\u003cspan class=\"opv__dot\"\u003e\u003c\/span\u003e\u003cspan class=\"opv__nm\"\u003eChampagne\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"opv__tip\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"opd-fin__img\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_Champagne_Hero_A.png?v=1779883702\u0026amp;width=600\" alt=\"\"\u003e\u003c\/span\u003e\u003cspan class=\"opd-fin__name\"\u003eChampagne\u003c\/span\u003e\u003c\/button\u003e\n  \u003cbutton type=\"button\" class=\"opd-fin opd-fin--cr\" style=\"--c:#C8D2DA;--ac:#C8D2DA\"\u003e\u003cspan class=\"opv\" aria-hidden=\"true\"\u003e\u003cspan class=\"opv__frame\"\u003e\u003cspan class=\"opv__inner\"\u003e\u003cimg class=\"opv__img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_Chrome_A_413aea1e-77fd-4e1a-a31e-4f987e51bbd8.png?v=1779892529\u0026amp;width=800\" alt=\"\"\u003e\u003cspan class=\"opv__cap\"\u003e\u003cspan class=\"opv__dot\"\u003e\u003c\/span\u003e\u003cspan class=\"opv__nm\"\u003eChrome\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"opv__tip\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"opd-fin__img\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_Chrome_Hero_A.png?v=1779883722\u0026amp;width=600\" alt=\"\"\u003e\u003c\/span\u003e\u003cspan class=\"opd-fin__name\"\u003eChrome\u003c\/span\u003e\u003c\/button\u003e\n  \u003cbutton type=\"button\" class=\"opd-fin opd-fin--gm is-current\" style=\"--c:#9C958C;--ac:#9C958C\"\u003e\u003cspan class=\"opv\" aria-hidden=\"true\"\u003e\u003cspan class=\"opv__frame\"\u003e\u003cspan class=\"opv__inner\"\u003e\u003cimg class=\"opv__img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_GunMetal_A_b3aa9d36-011d-4bf6-9564-006dc9ba0ccc.png?v=1779892530\u0026amp;width=800\" alt=\"\"\u003e\u003cspan class=\"opv__cap\"\u003e\u003cspan class=\"opv__dot\"\u003e\u003c\/span\u003e\u003cspan class=\"opv__nm\"\u003eGun Metal\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"opv__tip\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"opd-fin__img\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_GunMetal_Hero_A.png?v=1779883740\u0026amp;width=600\" alt=\"\"\u003e\u003c\/span\u003e\u003cspan class=\"opd-fin__name\"\u003eGun Metal\u003c\/span\u003e\u003c\/button\u003e\n  \u003cbutton type=\"button\" class=\"opd-fin opd-fin--mb\" style=\"--c:#1a1a1a;--ac:#1a1a1a\"\u003e\u003cspan class=\"opv\" aria-hidden=\"true\"\u003e\u003cspan class=\"opv__frame\"\u003e\u003cspan class=\"opv__inner\"\u003e\u003cimg class=\"opv__img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_MatteBlack_A_d0559658-9de9-47bb-a275-1170489885fb.png?v=1779892531\u0026amp;width=800\" alt=\"\"\u003e\u003cspan class=\"opv__cap\"\u003e\u003cspan class=\"opv__dot\"\u003e\u003c\/span\u003e\u003cspan class=\"opv__nm\"\u003eMatte Black\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"opv__tip\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cspan class=\"opd-fin__img\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_MatteBlack_Hero_A.png?v=1779883759\u0026amp;width=600\" alt=\"\"\u003e\u003c\/span\u003e\u003cspan class=\"opd-fin__name\"\u003eMatte Black\u003c\/span\u003e\u003c\/button\u003e\n\u003c\/div\u003e\n\n\u003c!-- NEW: DIMENSIONS — render + spec table (FEATURE 5) --\u003e\n\u003cdiv class=\"opd-h reveal\"\u003eDimensions \u0026amp; specification\u003c\/div\u003e\n\u003cdiv class=\"opd-dims reveal\"\u003e\n  \u003cdiv class=\"opd-dims__draw\"\u003e\n    \u003cimg class=\"opd-dims__img\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_GunMetal_Hero_B.png?v=1779883747\u0026amp;width=1400\" alt=\"\" aria-hidden=\"true\"\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"opd-dims__table\"\u003e\n    \u003cdiv class=\"opd-dims__row\"\u003e\n\u003cspan class=\"k\"\u003eLength\u003c\/span\u003e\u003cspan class=\"v\"\u003e645 mm\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"opd-dims__row\"\u003e\n\u003cspan class=\"k\"\u003eProjection\u003c\/span\u003e\u003cspan class=\"v\"\u003e80 mm\u003c\/span\u003e\n\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- 6. ASSURANCE — original lifetime-warranty badge --\u003e\n\u003cdiv class=\"opd-warranty reveal\"\u003e\n  \u003cdiv class=\"badge\"\u003e\n\u003cspan class=\"big\"\u003e15\u003c\/span\u003e\u003cspan class=\"sm\"\u003eYear\u003cbr\u003eWarranty\u003c\/span\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"body\"\u003e\n\u003cb\u003eBuilt to be the last one you buy.\u003c\/b\u003e Every Milan rail carries a 1-year parts \u0026amp; labour warranty, backed by a \u003cb\u003e15-year replacement warranty that includes the finish itself\u003c\/b\u003e — the gun metal is guaranteed not to wear away through a decade and a half of daily use.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- CARE — sits directly under the warranty --\u003e\n\u003cdiv class=\"opd-h reveal\"\u003eCaring for it\u003c\/div\u003e\n\u003cdiv class=\"opd-care2 reveal\"\u003e\n  \u003cspan class=\"opd-care2__icon\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\n  \u003cdiv class=\"opd-care2__body\"\u003e\n    \u003cp class=\"opd-care2__lead\"\u003eBuilt to last, it asks almost nothing of you.\u003c\/p\u003e\n    \u003cul class=\"opd-care2__list\"\u003e\n      \u003cli class=\"ok\"\u003eA soft, damp cloth is all it needs\u003c\/li\u003e\n      \u003cli class=\"no\"\u003eNo abrasive pads, acidic or solvent cleaners\u003c\/li\u003e\n      \u003cli class=\"ok\"\u003eNo polishes or coatings — the finish does the work\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"opd-reg reveal\"\u003eDZR brass · 15-year finish warranty  |  SKU MIL2060GM\u003c\/div\u003e\n\n\u003c!-- 7. COLLECTION — dark bookend --\u003e\n\u003cdiv class=\"opd-coll reveal\"\u003e\n  \u003cspan class=\"opd-coll__logo\" role=\"img\" aria-label=\"Ovia\"\u003e\u003c\/span\u003e\n  \u003cdiv class=\"t\"\u003ePart of the \u003cb\u003eMilan\u003c\/b\u003e collection\u003c\/div\u003e\n  \u003cp\u003eThe Milan range runs the full bathroom — basin and wall mixers, a 2-in-1 shower, kitchen mixers, towel rails and accessories — every piece in the same gun metal finish, so nothing in the room is left to chance.\u003c\/p\u003e\n  \u003cdiv class=\"opd-coll__rule\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n","brand":"Ovia","offers":[{"title":"Default Title","offer_id":47338118742165,"sku":"MIL2060GM","price":125.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_GunMetal_A_b3aa9d36-011d-4bf6-9564-006dc9ba0ccc.png?v=1779892530","url":"https:\/\/www.bathroomsalesdirect.com.au\/products\/ovia-milan-600-single-towel-rail-gun-metal","provider":"Bathroom Sales Direct","version":"1.0","type":"link"}