{"product_id":"ovia-milan-600-single-towel-rail-brushed-nickel","title":"Ovia Milan 600 Single Towel Rail Brushed Nickel","description":"\u003cdiv class=\"ovia-pd\" style=\"--ac:#CFC4B0;--ac-deep:#897E6B;--hero:url('https:\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_BrushedNickelWarm_Hero_A.png?v=1779883684');\"\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:\"Brushed Nickel\";}\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--bn{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:\"PVD\";}\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 Brushed Nickel\"\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 brushed nickel sealed to hold its colour 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\"\u003eBrushed Nickel\u003csmall\u003ePVD\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\u003eBonded to the brass by physical vapour deposition, the brushed nickel 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\u003cdiv class=\"opd-bond reveal\"\u003e\n  \u003cdiv class=\"opd-bond__vis\"\u003e\n    \u003cdiv class=\"opd-swatch\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"opd-macroshot__cap\"\u003e\n\u003cb\u003eBrushed Nickel PVD\u003c\/b\u003e · molecularly bonded to 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\"\u003ePart of the metal\u003c\/h4\u003e\n    \u003cp\u003eThe brushed nickel is fused to the brass by Physical Vapour Deposition — a molecular bond, not a coating laid on top. It won’t flake, peel or tarnish at the edges the way ordinary plated finishes eventually do. The colour you see is, quite literally, part of the metal — and it’s covered for a full 15 years.\u003c\/p\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\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_BrushedNickelWarm_A_d3c24611-34b8-4492-8b6f-4d2a08cf44ea.png?v=1779892527\" 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_BrushedNickelWarm_B_b5c42e25-5ce3-4bf0-8c2e-fd61bff48a8c.png?v=1779892527\" 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_BrushedNickelWarm_C_fe363b40-45bd-42cd-8f3a-9f0a30e34b37.png?v=1779892527\" alt=\"Milan towel rail brushed nickel\"\u003e\u003c\/span\u003e\u003cfigcaption\u003e\u003cb\u003eIn the setting\u003c\/b\u003eWarm nickel keeps the palette calm.\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 is-current\" 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\" 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_BrushedNickelWarm_Hero_B.png?v=1779883690\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 brushed nickel 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 MIL2060BN\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 brushed nickel 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":47338118643861,"sku":"MIL2060BN","price":125.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0701\/6261\/2373\/files\/Ovia_SingleTowelRail600_BrushedNickelWarm_A_d3c24611-34b8-4492-8b6f-4d2a08cf44ea.png?v=1779892527","url":"https:\/\/www.bathroomsalesdirect.com.au\/products\/ovia-milan-600-single-towel-rail-brushed-nickel","provider":"Bathroom Sales Direct","version":"1.0","type":"link"}