/* تولید از خروجی next/font (خودمیزبان)؛ فایل‌ها در fonts/. */
@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(/theme/optiview/fonts/2c55a0e60120577a-s.0-dom-5bn10r2.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(/theme/optiview/fonts/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}
@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(/theme/optiview/fonts/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}
@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(/theme/optiview/fonts/5476f68d60460930-s.2uwcyprjm3xu3.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}
@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(/theme/optiview/fonts/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}
@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(/theme/optiview/fonts/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(/theme/optiview/fonts/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/theme/optiview/fonts/2c55a0e60120577a-s.0-dom-5bn10r2.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/theme/optiview/fonts/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}
@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/theme/optiview/fonts/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}
@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/theme/optiview/fonts/5476f68d60460930-s.2uwcyprjm3xu3.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}
@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/theme/optiview/fonts/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}
@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/theme/optiview/fonts/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/theme/optiview/fonts/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/theme/optiview/fonts/2c55a0e60120577a-s.0-dom-5bn10r2.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/theme/optiview/fonts/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}
@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/theme/optiview/fonts/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}
@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/theme/optiview/fonts/5476f68d60460930-s.2uwcyprjm3xu3.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}
@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/theme/optiview/fonts/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}
@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/theme/optiview/fonts/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/theme/optiview/fonts/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/theme/optiview/fonts/2c55a0e60120577a-s.0-dom-5bn10r2.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/theme/optiview/fonts/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}
@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/theme/optiview/fonts/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}
@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/theme/optiview/fonts/5476f68d60460930-s.2uwcyprjm3xu3.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}
@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/theme/optiview/fonts/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}
@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/theme/optiview/fonts/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/theme/optiview/fonts/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/theme/optiview/fonts/2c55a0e60120577a-s.0-dom-5bn10r2.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/theme/optiview/fonts/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}
@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/theme/optiview/fonts/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}
@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/theme/optiview/fonts/5476f68d60460930-s.2uwcyprjm3xu3.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}
@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/theme/optiview/fonts/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}
@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/theme/optiview/fonts/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/theme/optiview/fonts/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Inter Fallback;src:local(Arial);ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.0%;size-adjust:107.12%}
@font-face{font-family:Newsreader;font-style:normal;font-weight:200;font-display:swap;src:url(/theme/optiview/fonts/150f724d70372c02-s.1ljbalzvxyif7.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}
@font-face{font-family:Newsreader;font-style:normal;font-weight:200;font-display:swap;src:url(/theme/optiview/fonts/750c737482d9de2f-s.3ex3j6ahhvjry.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Newsreader;font-style:normal;font-weight:200;font-display:swap;src:url(/theme/optiview/fonts/5f402bd2d8eef81a-s.p.40bho2kviej2o.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Newsreader;font-style:normal;font-weight:300;font-display:swap;src:url(/theme/optiview/fonts/150f724d70372c02-s.1ljbalzvxyif7.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}
@font-face{font-family:Newsreader;font-style:normal;font-weight:300;font-display:swap;src:url(/theme/optiview/fonts/750c737482d9de2f-s.3ex3j6ahhvjry.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Newsreader;font-style:normal;font-weight:300;font-display:swap;src:url(/theme/optiview/fonts/5f402bd2d8eef81a-s.p.40bho2kviej2o.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Newsreader;font-style:normal;font-weight:400;font-display:swap;src:url(/theme/optiview/fonts/150f724d70372c02-s.1ljbalzvxyif7.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}
@font-face{font-family:Newsreader;font-style:normal;font-weight:400;font-display:swap;src:url(/theme/optiview/fonts/750c737482d9de2f-s.3ex3j6ahhvjry.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Newsreader;font-style:normal;font-weight:400;font-display:swap;src:url(/theme/optiview/fonts/5f402bd2d8eef81a-s.p.40bho2kviej2o.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Newsreader;font-style:normal;font-weight:500;font-display:swap;src:url(/theme/optiview/fonts/150f724d70372c02-s.1ljbalzvxyif7.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}
@font-face{font-family:Newsreader;font-style:normal;font-weight:500;font-display:swap;src:url(/theme/optiview/fonts/750c737482d9de2f-s.3ex3j6ahhvjry.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Newsreader;font-style:normal;font-weight:500;font-display:swap;src:url(/theme/optiview/fonts/5f402bd2d8eef81a-s.p.40bho2kviej2o.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Newsreader Fallback;src:local(Times New Roman);ascent-override:69.68%;descent-override:25.12%;line-gap-override:0.0%;size-adjust:105.48%}
@font-face{font-family:Cairo;font-style:normal;font-weight:300;font-display:swap;src:url(/theme/optiview/fonts/9ff27b8a0a8f3dc0-s.p.40_3w74kn95bo.woff2)format("woff2");unicode-range:U+6??,U+750-77F,U+870-891,U+897-8E1,U+8E3-8FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC7,U+10EC9-10EEE,U+10EF?,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}
@font-face{font-family:Cairo;font-style:normal;font-weight:300;font-display:swap;src:url(/theme/optiview/fonts/a5b03b231ce290a0-s.0nlsxckj73qpt.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Cairo;font-style:normal;font-weight:300;font-display:swap;src:url(/theme/optiview/fonts/d41831e24743a3c1-s.p.08tn9snzkmifr.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Cairo;font-style:normal;font-weight:400;font-display:swap;src:url(/theme/optiview/fonts/9ff27b8a0a8f3dc0-s.p.40_3w74kn95bo.woff2)format("woff2");unicode-range:U+6??,U+750-77F,U+870-891,U+897-8E1,U+8E3-8FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC7,U+10EC9-10EEE,U+10EF?,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}
@font-face{font-family:Cairo;font-style:normal;font-weight:400;font-display:swap;src:url(/theme/optiview/fonts/a5b03b231ce290a0-s.0nlsxckj73qpt.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Cairo;font-style:normal;font-weight:400;font-display:swap;src:url(/theme/optiview/fonts/d41831e24743a3c1-s.p.08tn9snzkmifr.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Cairo;font-style:normal;font-weight:500;font-display:swap;src:url(/theme/optiview/fonts/9ff27b8a0a8f3dc0-s.p.40_3w74kn95bo.woff2)format("woff2");unicode-range:U+6??,U+750-77F,U+870-891,U+897-8E1,U+8E3-8FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC7,U+10EC9-10EEE,U+10EF?,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}
@font-face{font-family:Cairo;font-style:normal;font-weight:500;font-display:swap;src:url(/theme/optiview/fonts/a5b03b231ce290a0-s.0nlsxckj73qpt.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Cairo;font-style:normal;font-weight:500;font-display:swap;src:url(/theme/optiview/fonts/d41831e24743a3c1-s.p.08tn9snzkmifr.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Cairo;font-style:normal;font-weight:600;font-display:swap;src:url(/theme/optiview/fonts/9ff27b8a0a8f3dc0-s.p.40_3w74kn95bo.woff2)format("woff2");unicode-range:U+6??,U+750-77F,U+870-891,U+897-8E1,U+8E3-8FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC7,U+10EC9-10EEE,U+10EF?,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}
@font-face{font-family:Cairo;font-style:normal;font-weight:600;font-display:swap;src:url(/theme/optiview/fonts/a5b03b231ce290a0-s.0nlsxckj73qpt.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Cairo;font-style:normal;font-weight:600;font-display:swap;src:url(/theme/optiview/fonts/d41831e24743a3c1-s.p.08tn9snzkmifr.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Cairo;font-style:normal;font-weight:700;font-display:swap;src:url(/theme/optiview/fonts/9ff27b8a0a8f3dc0-s.p.40_3w74kn95bo.woff2)format("woff2");unicode-range:U+6??,U+750-77F,U+870-891,U+897-8E1,U+8E3-8FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC7,U+10EC9-10EEE,U+10EF?,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}
@font-face{font-family:Cairo;font-style:normal;font-weight:700;font-display:swap;src:url(/theme/optiview/fonts/a5b03b231ce290a0-s.0nlsxckj73qpt.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Cairo;font-style:normal;font-weight:700;font-display:swap;src:url(/theme/optiview/fonts/d41831e24743a3c1-s.p.08tn9snzkmifr.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Cairo Fallback;src:local(Arial);ascent-override:137.65%;descent-override:60.32%;line-gap-override:0.0%;size-adjust:94.66%}

:root{--ff-inter:Inter,'Inter Fallback';--ff-newsreader:Newsreader,'Newsreader Fallback';--ff-cairo:Cairo,'Cairo Fallback'}

/* ═══════════════════════════════════════════════════════════════════
   لایه ۱ — توکن پایه‌ی AIDA. خنثی، بی‌برند.
   ───────────────────────────────────────────────────────────────────
   هر توکن اینجا با **نام نقش** تعریف می‌شود، نه نام رنگ. مقدارها عمداً
   بی‌شخصیت‌اند تا هر قالبی بتواند رویشان بنشیند.

   ⚠️ قاعده‌ی سختگیرانه (ADR-005 §۷): هیچ قالبی حق ندارد توکن تازه بسازد.
   اگر OptiView به چیزی نیاز دارد که اینجا نیست، **اول اینجا با نام نقش
   تعریف می‌شود** و بعد آنجا مقدار می‌گیرد. لحظه‌ای که قالب توکن اختصاصی
   خودش را داشته باشد، دیگر تم نیست و قالب دومی از آن درنمی‌آید.
   ═══════════════════════════════════════════════════════════════════ */

:root {
  /* ── سطح و مرکب ── */
  --surface:          #ffffff;
  --surface-raised:   #fafafa;   /* لایه‌ی میانی میان سطح و فرورفته */
  --surface-sunken:   #f5f5f4;
  --surface-inverse:  #18181b;
  /* سطحِ فرورفته **روی** سطح معکوس. بدون این نقش، هر پنل تیره‌ی
     دوم مجبور است رنگ خودش را hardcode کند. */
  --surface-inverse-sunken: #101013;
  --ink:              #18181b;
  --ink-muted:        #71717a;
  --ink-inverse:      #fafafa;
  --line:             #e4e4e7;
  --line-strong:      #a1a1aa;

  /* ── لهجه ──
     رنگی که چشم را می‌برد. در لایه‌ی پایه عمداً همان مرکب است تا
     قالبی که لهجه تعریف نکرده، بی‌رنگ ولی سالم بماند. */
  --accent:           #18181b;
  --accent-ink:       #ffffff;
  --accent-quiet:     #f4f4f5;

  /* ── حالت ──
     ⚠️ این چهارتا حتی در طرح تک‌رنگ هم باید از هم تفکیک‌پذیر بمانند.
     «ناموجود» و «خطا» که فقط با وزن فرق کنند، در checkout می‌شکنند. */
  --ok:               #15803d;
  --warn:             #a16207;
  --danger:           #b91c1c;
  --info:             #1d4ed8;

  /* ── فاصله ── مقیاس ۴ پایه */
  --space-1: 4px;   --space-2: 8px;   --space-3: 12px;  --space-4: 16px;
  --space-5: 24px;  --space-6: 32px;  --space-7: 48px;  --space-8: 64px;
  --space-9: 96px;  --space-10: 128px;

  /* ── شعاع و خط ── */
  /* مقیاس شعاع — پنج پله، از «تقریباً تیز» تا «قرص» */
  --radius-xs: 4px;  --radius-sm: 8px;   --radius-md: 12px;
  --radius-lg: 18px; --radius-xl: 28px;  --radius-pill: 999px;
  --border: 1px;

  /* ── تایپ ── */
  --font-display: Georgia, "Times New Roman", serif;
  --font-ui:      system-ui, -apple-system, "Segoe UI", sans-serif;

  /* ── مقیاس تایپ ──
     نقش‌محور، نه اندازه‌محور. نام‌ها می‌گویند «کجا»، نه «چند پیکسل». */
  --text-2xs: 11px;  --text-xs: 12px;  --text-sm: 14px;  --text-md: 16px;
  --text-lg: 18px;   --text-xl: 20px;  --text-2xl: 24px; --text-3xl: 28px;
  --text-4xl: 32px;  --text-5xl: 44px; --text-6xl: 64px;

  --leading-tight: 1.2;  --leading-normal: 1.6;  --leading-loose: 1.9;
  --tracking-wide: .12em;  --tracking-wider: .22em;  --tracking-widest: .34em;

  /* ── سایه ── کم و کم‌رنگ؛ کاتالوگ عکس‌محور سایه نمی‌خواهد */
  --shadow-sm: 0 1px 2px rgb(0 0 0 / .06);
  --shadow-md: 0 4px 16px rgb(0 0 0 / .08);

  /* ── چیدمان ── */
  --container: 1320px;
  --header-h: 68px;

  /* ── نسبت قاب محصول ──
     ⚠️ عدد از داده‌ی واقعی آمده نه سلیقه: از ۳۴٬۴۰۸ عکس مبدأ، ۹۴٪ افقی‌اند
     ولی دو نسبت غالب دارند — ۴۸٫۵٪ دقیقاً ۲:۱ و ~۳۳٪ ‏۱۶:۹. قاب ۱۶:۹
     بلندتر از ۲:۱ است، پس با `contain` هیچ فریمی بریده نمی‌شود. */
  --ratio-product: 16 / 9;

  /* ── حرکت ── */
  --ease: cubic-bezier(.2,.6,.2,1);
  --dur: 180ms;
}

@media (prefers-reduced-motion: reduce) {
  :root { --dur: 0ms; }
}

/* ═══════════════════════════════════════════════════════════════════
   لایه ۲ — تم OptiView.
   ───────────────────────────────────────────────────────────────────
   ⚠️ این فایل **فقط مقدار بازنویسی می‌کند**. هیچ توکن تازه‌ای اینجا
   متولد نمی‌شود. اگر چیزی لازم شد، اول در `aida.css` با نام نقش.

   پالت «مشکی و برنج» — تصمیم ۱۴۰۵/۰۶/۱۱.
   لوگو تک‌رنگ است و هیچ رنگی برای استخراج نداشت؛ این یک انتخاب است.
   ═══════════════════════════════════════════════════════════════════ */

:root {
  /* ══ پالت ══ بازنگری ۳ — «مشکی و برنج»، عمیق‌تر و گرم‌تر
     ───────────────────────────────────────────────────────────────
     نسخه‌ی قبل امن بود ولی بی‌روح: خاکستریِ سرد و برنجِ کمی خردلی.
     سه تغییر:
       • مرکب از #0A0A0B به #101012 — سیاهِ مطلق روی صفحه سخت است؛
         این یک‌ذره آبیِ عمیق دارد و نرم‌تر می‌نشیند.
       • سطح فرورفته گرم‌تر (#F4F2EE) و یک پله‌ی تازه‌ی #FAF9F7 برای
         لایه‌ی میانی — قبلاً فقط دو پله داشتیم و صفحه تخت می‌خواند.
       • برنج از #B08D4F به #A67C3D — سیرتر و کمتر خردلی.
     ⚠️ هر مقدار با سنجش کنتراست انتخاب شد، نه با چشم. */
  --surface:          #FFFFFF;
  --surface-raised:   #FAF9F7;   /* لایه‌ی میانی — کارت روی سطح */
  --surface-sunken:   #F4F2EE;
  --surface-inverse:  #101012;
  --surface-inverse-sunken: #1A1A1E;
  --ink:              #101012;   /* سطح ۱۹٫۰:۱ · فرورفته ۱۷٫۰:۱ */
  --ink-muted:        #5A5A61;   /* سطح ۶٫۸:۱ · فرورفته ۶٫۱:۱ */
  --ink-inverse:      #FFFFFF;
  --line:             #E6E3DD;   /* جداکننده‌ی تزئینی */
  --line-strong:      #8A8A92;   /* مرز اجزای تعاملی — ۳٫۴:۱ */

  /* ── لهجه: برنجِ سیر ──
     ⚠️ مرکبِ تیره روی برنج، نه سفید. سفید روی #A67C3D فقط ۳٫۷۷:۱ می‌داد
     — زیر کف. مرکب تیره ۵٫۰:۱ می‌دهد و برای یک برند لوکس زیباتر هم هست.
     قاعده‌ی مصرف سر جایش: حداکثر دو عنصر برنجی در هر نما. مات، نه براق. */
  --accent:           #A67C3D;
  --accent-ink:       #101012;
  --accent-quiet:     #F6F0E4;

  --ok:               #1E7A46;
  --warn:             #8A6A24;
  --danger:           #B4372C;   /* قیمتِ تخفیف‌خورده — ۶٫۰:۱ روی سطح */
  --info:             #2B5C8A;

  /* ── شعاع ──
     ⚠️ نسخه‌ی قبل تقریباً تیز بود (۰/۲/۴px) و خشک می‌خواند. لبه‌ی گرد
     در این رده نشانه‌ی ارزانی نیست — Sunglass Hut هم دکمه و کارتش گرد
     است. مقدارها یک پله بیشتر از پایه، چون عکس محصول گرد است نه گوشه‌دار. */
  --radius-xs: 6px;  --radius-sm: 10px;  --radius-md: 14px;
  --radius-lg: 22px; --radius-xl: 34px;
  --leading-tight: 1.02;
  --container: 1600px;   /* پهن‌تر — کارت بزرگ‌تر جا می‌خواهد */
  --header-h: 70px;
  --ratio-product: 1 / 1;
  --shadow-md: 0 18px 48px rgb(16 16 18 / .14);

  /* ══ تایپ ══ بازنگری ۴ — روی CSS واقعی Sunglass Hut
     ───────────────────────────────────────────────────────────────
     استایل‌شیت زنده‌شان (از بایگانی، چون سایت پشت Akamai است) دو خانواده
     دارد و نه بیشتر:
       • Helvetica Neue  → ۲۳۲ ارجاع. **همه چیز**: بدنه، ناوبری، قیمت،
         دکمه، برچسب. وزن‌های ۳۵ Thin / ۵۵ Roman / ۶۵ Medium / ۷۵ Bold.
       • Acta Headline (سریف) → ۱۶ ارجاع، همیشه با !important. فقط سه جا:
         **تیتر صفحه، تیتر بخش، و نام برند.**

     ⚠️ همین «فقط سه جا» چیزی است که نسخه‌ی اولِ ما را خراب کرده بود:
     سریف را همه‌جا و در سایز کوچک گذاشته بودیم. سریف در جای درست مدرن
     است؛ در جای غلط، کاتالوگ چاپی دهه‌ی ۲۰۱۰.

     جایگزین آزاد:
       Helvetica Neue → **Inter** (نئوگروتسک، نزدیک‌ترین آزاد)
       Acta Headline  → **Newsreader** (سریف روزنامه‌ای، همان رده) */
  --font-ui:      Inter, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-display: Newsreader, Georgia, "Times New Roman", serif;

  /* مقیاس آن‌ها: `html{font-size:10px}` و پرتکرارترین اندازه‌ها
     1.2/1.4/1.6/1.8/2/2.4/2.8/3.2rem — یعنی بدنه **۱۴px** و سقف تیتر ۳۲px.
     کوچک و متراکم. مقیاس پایه همین است و اینجا دست نمی‌خورد. */

  /* ── شعاع ──
     ⚠️ نسخه‌ی قبل تقریباً تیز بود (۰/۲/۴px) و خشک می‌خواند. لبه‌ی گرد
     در این رده نشانه‌ی ارزانی نیست — Sunglass Hut هم دکمه و کارتش گرد
     است. مقدارها یک پله بیشتر از پایه، چون عکس محصول گرد است نه گوشه‌دار. */
  --radius-xs: 6px;  --radius-sm: 10px;  --radius-md: 14px;
  --radius-lg: 22px; --radius-xl: 34px;
  --leading-tight: 1.02;
  --container: 1600px;   /* پهن‌تر — کارت بزرگ‌تر جا می‌خواهد */
  --header-h: 70px;

  /* قاب کارت: محصول برش‌خورده و شفاف است، پس قاب می‌تواند کوتاه‌تر و
     متراکم‌تر باشد. ۴:۳ به‌جای ۱۶:۹ — شبکه پر می‌شود، نه خالی. */
  --ratio-product: 4 / 3;

  --shadow-md: 0 18px 48px rgb(10 10 11 / .13);
}

/* ── عربی ──
   ⚠️ نه Inter گلیف عربی دارد نه Newsreader، و هیچ معادل آزادی برای
   «Acta Headline عربی» وجود ندارد. Cairo هر دو نقش را می‌گیرد و تمایز
   نمایشی/رابط با **وزن و اندازه** ساخته می‌شود، نه با تعویض خانواده.
   سازش آگاهانه، نه غفلت. */
:root:lang(ar), [lang="ar"] {
  --font-ui:      Cairo, "Noto Sans Arabic", system-ui, sans-serif;
  --font-display: Cairo, "Noto Sans Arabic", system-ui, sans-serif;
  --tracking-wide: 0; --tracking-wider: 0; --tracking-widest: 0;
}

/* ═══════════════════════════════════════════════════════════════════
   اسکلت اتود OptiView — بازنگری ۴
   ───────────────────────────────────────────────────────────────────
   مبنا: CSS زنده‌ی Sunglass Hut (از بایگانی — سایت پشت Akamai است) و
   مشاهده‌ی مستقیم dubaioptical در Chrome headless.

   ⚠️ دو قاعده‌ی ثابت: فقط logical properties · هیچ رنگ طراحیِ hardcode.

   ══ دستگاه تایپ ══ نقش‌محور. هر متن **یک** نقش دارد و نقش، اندازه و
   وزن و فاصله را با هم می‌آورد. این همان چیزی است که «استانداردسازی»
   یعنی — نه اینکه هر جا یک font-size دلبخواه بنشیند.

     .t-display   تیتر هیرو            سریف · ۴۴–۶۴px · وزن ۳۰۰
     .t-section   تیتر بخش             سریف · ۲۸px · وزن ۴۰۰
     .t-brand     نام برند             سریف · ۱۴px  ← Acta هم دقیقاً همین‌جاست
     .t-title     عنوان محصول/کارت     سنس · ۱۴px · وزن ۴۰۰
     .t-price     قیمت                 سنس · ۱۴–۲۴px · وزن ۷۰۰ · tabular
     .t-label     برچسب ریزِ بزرگ‌حرف  سنس · ۱۱px · tracking ۰.۱em
     .t-body      متن                  سنس · ۱۴px
     .t-meta      متن ثانویه           سنس · ۱۲–۱۴px · ink-muted
   ═══════════════════════════════════════════════════════════════════ */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--surface);color:var(--ink);font-family:var(--font-ui);
  font-size:var(--text-sm);line-height:1.55;-webkit-font-smoothing:antialiased}
img{max-inline-size:100%;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}
strong,b{font-weight:600}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.wrap{max-inline-size:var(--container);margin-inline:auto;padding-inline:var(--space-5)}
.wrap--tight{max-inline-size:1160px}
.num{direction:ltr;unicode-bidi:isolate;font-variant-numeric:tabular-nums}
.muted{color:var(--ink-muted)}
.sr{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
[dir="rtl"] .flip{transform:scaleX(-1)}

/* ══ نقش‌های تایپ ══ */
.t-display{font-family:var(--font-display);font-weight:300;font-size:clamp(34px,4.4vw,var(--text-6xl));
  line-height:1.04;letter-spacing:-.02em;margin:0}
.t-section{font-family:var(--font-display);font-weight:400;font-size:var(--text-3xl);
  line-height:1.15;letter-spacing:-.01em;margin:0}
.t-brand{font-family:var(--font-display);font-weight:400;font-size:var(--text-sm);
  line-height:1.3;letter-spacing:.01em}
.t-title{font-size:var(--text-sm);font-weight:400;line-height:1.4;margin:0}
.t-price{font-weight:700;font-size:var(--text-sm);font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}
.t-label{font-size:var(--text-2xs);font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-muted)}
.t-body{font-size:var(--text-sm);line-height:1.7}
.t-meta{font-size:var(--text-xs);color:var(--ink-muted)}
[lang="ar"] .t-label{letter-spacing:0;text-transform:none;font-size:var(--text-xs)}
[lang="ar"] .t-display,[lang="ar"] .t-section{letter-spacing:0;font-weight:400;line-height:1.3}

/* ══ هدر ══ */
.topbar{background:var(--surface-inverse);color:var(--ink-inverse);font-size:var(--text-2xs);
  text-align:center;padding-block:8px;letter-spacing:.03em}
.topbar .hl{color:var(--accent)}
.header{position:sticky;inset-block-start:0;z-index:40;background:var(--surface);
  border-block-end:1px solid var(--line)}
.header__in{block-size:var(--header-h);display:flex;align-items:center;gap:var(--space-5)}
.brandmark{display:flex;align-items:center;flex:0 0 auto}
.brandmark img{block-size:34px;inline-size:auto;max-inline-size:none}
.brandmark--ar{font-family:var(--font-display);font-size:var(--text-2xl);line-height:1}
.burger{display:none;inline-size:38px;block-size:38px;align-items:center;justify-content:center}
.burger span,.burger span::before,.burger span::after{content:"";display:block;inline-size:19px;
  block-size:1.5px;background:var(--ink);position:relative}
.burger span::before{position:absolute;inset-block-start:-6px}
.burger span::after{position:absolute;inset-block-start:6px}

/* ── ناوبری + مگامنو ──
   ⚠️ دو باگ که تشخیص هندسی پیدا کرد و اینجا بسته شده‌اند:
   ۱. چوران به‌عنوان **برادرِ** لینک گذاشته شده بود، پس یک آیتم ناوبری
      مستقل می‌شد و منو را به دو خط می‌برد (ارتفاع ۱۱۰px به‌جای ۶۲).
      حالا داخل خودِ <a> است.
   ۲. مگامنو با `inset-inline-start:50%; translate:-50%` روی آیتمِ ۷۴
      پیکسلی می‌نشست و با عرض ۱۱۲۰ به `x=-316` می‌رفت — بیرون از صفحه.
      حالا **تمام‌عرض زیر هدر** است، همان کاری که مبدأ می‌کند. */
.nav{display:flex;gap:var(--space-5);font-size:var(--text-sm);list-style:none;margin:0;padding:0}
.nav__item{position:static}
.nav__link{display:inline-flex;align-items:center;gap:6px;
  padding-block:calc(var(--header-h)/2 - 9px);position:relative;white-space:nowrap}
.nav__link::after{content:"";position:absolute;inset-block-end:0;inset-inline:0;block-size:2px;
  background:var(--ink);transform:scaleX(0);transition:transform var(--dur) var(--ease)}
.nav__item:hover .nav__link::after,.nav__link[aria-current]::after{transform:scaleX(1)}
.car{inline-size:7px;block-size:7px;border-inline-end:1.5px solid currentColor;
  border-block-end:1.5px solid currentColor;transform:rotate(45deg) translate(-1px,-2px);
  opacity:.55;display:inline-block;flex:0 0 auto}

.mega{position:absolute;inset-block-start:100%;inset-inline:0;background:var(--surface);
  border-block-end:1px solid var(--line);box-shadow:0 16px 40px rgb(10 10 11/.1);
  opacity:0;visibility:hidden;transform:translateY(-8px);
  transition:opacity 160ms var(--ease),transform 160ms var(--ease),visibility 160ms;z-index:45}
.nav__item:hover>.mega,.nav__item:focus-within>.mega{opacity:1;visibility:visible;transform:none}
.mega__in{display:grid;grid-auto-flow:column;gap:var(--space-8);
  padding-block:var(--space-7);align-items:start}
.mega__col{min-inline-size:0}
.mega__col h3{margin:0 0 var(--space-3)}
.mega__col ul{list-style:none;margin:0;padding:0}
.mega__col li{margin-block-end:8px}
.mega__col a{font-size:var(--text-sm);color:var(--ink-muted);transition:color var(--dur) var(--ease)}
.mega__col a:hover{color:var(--ink)}
.mega__promo{inline-size:220px;justify-self:end}
.mega__promo img{aspect-ratio:4/5;object-fit:cover;border-radius:var(--radius-lg)}
.mega__promo span{display:block;margin-block-start:var(--space-3);font-weight:600;font-size:var(--text-sm)}

.tools{display:flex;align-items:center;gap:var(--space-3);font-size:var(--text-sm)}
.iconbtn{inline-size:36px;block-size:36px;display:grid;place-items:center;border-radius:var(--radius-md);
  transition:background var(--dur) var(--ease)}
.iconbtn:hover{background:var(--surface-sunken)}
.iconbtn svg{inline-size:19px;block-size:19px}
.chipbtn{border:1px solid var(--line-strong);padding:5px var(--space-3);font-size:var(--text-2xs);
  font-weight:600;border-radius:var(--radius-md);transition:all var(--dur) var(--ease)}
.chipbtn:hover{background:var(--ink);color:var(--ink-inverse);border-color:var(--ink)}
.cartbtn{position:relative}
.cartbtn .dot{position:absolute;inset-block-start:2px;inset-inline-end:2px;background:var(--accent);
  color:var(--accent-ink);min-inline-size:16px;block-size:16px;border-radius:99px;display:grid;
  place-items:center;font-size:10px;font-weight:700;padding-inline:3px}

/* ══ دکمه ══ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);
  padding:13px var(--space-6);font-size:var(--text-sm);font-weight:600;border-radius:var(--radius-md);
  transition:all var(--dur) var(--ease)}
.btn--accent{background:var(--accent);color:var(--accent-ink)}
.btn--accent:hover{background:var(--ink);color:var(--ink-inverse)}
.btn--solid{background:var(--ink);color:var(--ink-inverse)}
.btn--solid:hover{background:var(--accent);color:var(--accent-ink)}
.btn--light{background:var(--surface);color:var(--ink)}
.btn--light:hover{background:var(--accent);color:var(--accent-ink)}
.btn--ghost{border:1px solid var(--line-strong)}
.btn--ghost:hover{background:var(--ink);color:var(--ink-inverse);border-color:var(--ink)}
.btn--block{inline-size:100%}
.btn--lg{padding:16px var(--space-7);font-size:var(--text-md)}

/* ══ سربرگ بخش ══ */
.sechead{display:flex;align-items:end;gap:var(--space-4);margin-block-end:var(--space-5);
  padding-block-end:var(--space-3);border-block-end:1px solid var(--line)}
.sechead .more{margin-inline-start:auto;font-size:var(--text-sm);font-weight:600;white-space:nowrap}
.sechead .more:hover{color:var(--accent)}

/* ══ هیرو ══ بنر کمپین؛ نام برند در خودِ تصویر است، پس تیتر رویش نمی‌رود */
.hero{position:relative;background:var(--surface-sunken);overflow:hidden}
.hero__slide{position:relative;aspect-ratio:2.8/1;overflow:hidden}
.hero__slide img{inline-size:100%;block-size:100%;object-fit:cover;will-change:transform}
.hero__foot{position:absolute;inset-block-end:0;inset-inline:0;display:flex;align-items:center;
  gap:var(--space-4);padding:var(--space-6);
  background:linear-gradient(to top,rgb(10 10 11/.55),transparent)}
.hero__label{color:var(--ink-inverse);font-size:var(--text-sm);font-weight:600;
  text-shadow:0 1px 10px rgb(0 0 0/.6)}
.hero__dots{margin-inline-start:auto;display:flex;gap:6px}
.hero__dots i{inline-size:28px;block-size:3px;background:var(--ink-inverse);opacity:.4;display:block}
.hero__dots i[data-on]{opacity:1}
@media(max-width:760px){.hero__slide{aspect-ratio:3/2}}

/* ══ نوار پیام ══ */
.pitch{background:var(--surface-inverse);color:var(--ink-inverse)}
.pitch__in{display:flex;align-items:center;gap:var(--space-6);padding-block:var(--space-7);flex-wrap:wrap}
.pitch .t-display{font-size:clamp(26px,2.6vw,var(--text-4xl));max-inline-size:20ch}
.pitch p{margin:0;opacity:.6;max-inline-size:44ch}
.pitch .btn{margin-inline-start:auto}
@media(max-width:820px){.pitch .btn{margin-inline-start:0}}

/* ══ نوار اطمینان ══ با آیکون، مثل مبدأ */
.assure{background:var(--surface-sunken)}
.assure__in{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:var(--space-5);padding-block:var(--space-6);text-align:center}
.assure svg{inline-size:24px;block-size:24px;margin-inline:auto;margin-block-end:var(--space-2);
  color:var(--ink-muted)}
.assure b{display:block;font-size:var(--text-sm);font-weight:600;margin-block-end:2px}
.assure span{font-size:var(--text-xs);color:var(--ink-muted)}

/* ══ قاب لوگو ══
   ⚠️ دو بار اشتباه کردم و بار سوم درست شد:
   ۱. «ارتفاع یکسان» — لوگوی مربعی کنار لوگوی کشیده وزن بصری کاملاً
      متفاوتی می‌گرفت.
   ۲. «قاب یکسان با contain» — بهتر بود ولی کافی نبود: مساحتِ **مرکبِ**
      لوگوها ۵.۴ برابر تفاوت داشت.
   ۳. حل واقعی: هر لوگو روی یک **بوم ۶۴۰×۳۶۰ (هم‌نسبت با قاب)** پخته شد و
      با میانگین هندسی کادر مقیاس گرفت. حالا همه یک نسبت دارند، پس مرورگر
      همه را یکسان مقیاس می‌کند و CSS دیگر کاری برای انجام ندارد. */
.logobox{display:grid;place-items:center;padding:var(--space-3);background:var(--surface-sunken);
  border-radius:var(--radius-lg);aspect-ratio:16/9;overflow:hidden;
  transition:background var(--dur) var(--ease)}
.logobox img{inline-size:100%;block-size:100%;max-inline-size:none;object-fit:contain;
  opacity:.75;transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease)}
/* ⚠️ `a:hover > .logobox` و `.brandbar__track` حذف شدند: نوار برندِ قدیمی
   جایش را به مارکی و شبکه‌ی برند داد و این‌ها به هیچ عنصری نمی‌خوردند.
   قاعده‌ی مرده در CSS بی‌ضرر نیست — همین طبقه بود که باگ هاور را ساخت. */
.brandgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:var(--space-3)}

/* ══ کاشی دسته ══ */
.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3)}
.tile{position:relative;aspect-ratio:5/6;overflow:hidden;border-radius:var(--radius-lg);
  background:var(--surface-sunken)}
.tile img{inline-size:100%;block-size:100%;object-fit:cover;transition:transform 600ms var(--ease)}
.tile:hover img{transform:scale(1.06)}
.tile__cap{position:absolute;inset-block-end:0;inset-inline:0;padding:var(--space-6) var(--space-4) var(--space-4);
  color:var(--ink-inverse);font-weight:600;font-size:var(--text-md);
  background:linear-gradient(to top,rgb(0 0 0/.66),transparent)}
@media(max-width:900px){.tiles{grid-template-columns:1fr 1fr}}

/* ══ شبکه‌ی محصول ══
   ⚠️ کارت **بزرگ‌تر و کم‌تعدادتر**: کف ۲۹۰ → ۳۶۰px. روی ۱۶۰۰ کانتینر
   یعنی چهار ستون به‌جای پنج. الگوی کارتِ بدون‌زمینه از Sunglass Hut. */
.grid{display:grid;gap:var(--space-9) var(--space-6);
  grid-template-columns:repeat(auto-fill,minmax(360px,1fr))}
.card{position:relative}
.card__media{aspect-ratio:3/2;display:grid;place-items:center;overflow:hidden;position:relative;
  border-radius:var(--radius-md);transition:background 300ms var(--ease)}
.card:hover .card__media{background:var(--surface-sunken)}
.card__media img{grid-area:1/1;inline-size:100%;block-size:100%;object-fit:contain;
  transition:transform 560ms var(--ease),opacity 340ms var(--ease)}
.card:hover .card__media img{transform:scale(1.06)}
/* ⚠️ زاویه‌ی دوم: هر دو عکس در یک سلول grid می‌نشینند تا جابه‌جایی بدون
   پرش باشد. اگر محصول عکس دوم نداشت، هیچ اتفاقی نمی‌افتد. */
/* ⚠️ جابه‌جایی عکس روی هاور **با JS** علامت می‌خورد، نه با `:hover` در CSS.
   دلیلش سه دور دیباگِ ناموفق بود: با `:hover` و `:has()` نتیجه در مرورگر
   واقعی با آنچه می‌سنجیدم فرق داشت و کارت خالی می‌ماند. حالا JS فقط وقتی
   `data-hover` می‌گذارد که جایگزینی **واقعاً** هست — پس حالت «main محو شد
   ولی alt نیامد» از نظر ساختاری ناممکن است. */
.card__alt{opacity:0}
.card[data-hover] .card__alt{opacity:1}
/* ⚠️ باگ: این قاعده بی‌شرط بود و روی ۱۷ کارتی که عکس دوم ندارند، هاور
   محصول را **ناپدید** می‌کرد. حالا فقط وقتی محو می‌شود که جایگزینی هست. */
.card[data-hover] .card__main{opacity:0}
.card__badge{position:absolute;inset-block-start:14px;inset-inline-start:14px;background:var(--ink);
  color:var(--ink-inverse);font-size:var(--text-2xs);font-weight:700;padding:6px 12px;
  border-radius:var(--radius-pill);z-index:3}
.card__badge--out{background:var(--surface);color:var(--ink-muted);border:1px solid var(--line-strong)}
.card__body{padding-block-start:var(--space-5);text-align:center}
.card__row{display:flex;align-items:baseline;gap:var(--space-2);justify-content:center;margin-block-start:8px}
.card__was{font-size:var(--text-sm);color:var(--ink-muted);text-decoration:line-through}
.card__cta{display:inline-block;margin-block-start:var(--space-4);font-size:var(--text-2xs);
  font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  border-block-end:1px solid var(--ink);padding-block-end:3px}
[lang="ar"] .card__cta{letter-spacing:0;text-transform:none;font-size:var(--text-xs)}
.card--out .card__media img{opacity:.4}
@media(max-width:640px){.grid{grid-template-columns:1fr}}

/* ══ شبکه‌ی برند ══
   ⚠️ عمداً **کپی dubaioptical نیست** — آن‌ها کارت گردِ پراکنده دارند.
   الگوی Sunglass Hut سلول‌های چسبیده با فاصله‌ی مویی و یک سلول «همه» با
   تأکید است. اینجا همان منطق، با معکوس‌شدن لوگو روی hover که مالِ خودمان است. */
/* ۲۰ لوگو + سلول «همه» = ۲۱ ⇒ ۷ ستون × ۳ ردیف، بدون ردیف ناقص */
.brandgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.brandcell{display:grid;place-items:center;aspect-ratio:16/7;background:var(--surface-sunken);
  border-radius:var(--radius-sm);overflow:hidden;transition:background 240ms var(--ease)}
.brandcell img{inline-size:78%;block-size:78%;object-fit:contain;opacity:.8;
  transition:opacity 240ms var(--ease),transform 320ms var(--ease),filter 240ms var(--ease)}
.brandcell:hover{background:var(--ink)}
.brandcell:hover img{opacity:1;filter:invert(1);transform:scale(1.06)}
.brandcell--all{background:var(--accent);color:var(--accent-ink);font-weight:700;
  font-size:var(--text-sm);letter-spacing:.06em;text-transform:uppercase}
[lang="ar"] .brandcell--all{letter-spacing:0;text-transform:none}
.brandcell--all:hover{background:var(--ink);color:var(--ink-inverse)}
@media(max-width:1100px){.brandgrid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:640px){.brandgrid{grid-template-columns:repeat(2,1fr)}}

/* ══ کاروسل ══ اسکرول افقی با snap + فلش */
.carousel{position:relative}
/* ⚠️ کارت کاروسل هم‌اندازه‌ی شبکه شد (۳۴۰px) — «کاروسل‌ها کارت‌هاش
   بزرگ‌تر بشه». و شماره‌ی ترتیبی درشتِ کم‌رنگ پشت هر کارت، امضای بصری
   کاروسل است و در شبکه نیست. */
.carousel__track{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(340px,1fr);
  gap:var(--space-6);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;
  padding-block-end:var(--space-4);scroll-behavior:smooth}
.carousel__track::-webkit-scrollbar{display:none}
.carousel__track>*{scroll-snap-align:start}
.carousel__nav{display:flex;gap:var(--space-2);margin-inline-start:auto}
.carousel__nav button{inline-size:38px;block-size:38px;border:1px solid var(--line-strong);
  border-radius:99px;display:grid;place-items:center;transition:all var(--dur) var(--ease)}
.carousel__nav button:hover{background:var(--ink);color:var(--ink-inverse);border-color:var(--ink)}
/* چورانِ «قبلی» همیشه برعکسِ «بعدی» است؛ در RTL هر دو یک بار دیگر برمی‌گردند */
.carousel__nav [data-car="prev"] svg{transform:scaleX(-1)}
[dir="rtl"] .carousel__nav svg{transform:scaleX(-1)}
[dir="rtl"] .carousel__nav [data-car="prev"] svg{transform:none}
.carousel__bar{block-size:2px;background:var(--line);position:relative;margin-block-start:var(--space-4)}
.carousel__bar i{position:absolute;inset-block:0;inset-inline-start:0;inline-size:28%;
  background:var(--ink);display:block;transition:inline-size var(--dur) var(--ease)}
@media(min-width:1100px){.carousel__track{grid-auto-columns:minmax(378px,1fr)}}


/* ══ کشوها ══ جستجو، سبد، ناوبری موبایل، فیلتر — یک الگو برای هر چهار */
.scrim{position:fixed;inset:0;background:rgb(10 10 11/.5);z-index:50;opacity:0;
  pointer-events:none;transition:opacity var(--dur) var(--ease)}
.scrim[data-open]{opacity:1;pointer-events:auto}
.drawer{position:fixed;inset-block:0;background:var(--surface);z-index:60;overflow-y:auto;
  box-shadow:var(--shadow-md);display:flex;flex-direction:column;
  transition:transform 300ms var(--ease)}
/* ⚠️ باگی که حسابرسی گرفت: در RTL کشوی منو **روی صفحه باز می‌ماند**.
   علت: هم inset را برعکس کرده بودم هم transform را. `inset-inline-start`
   خودش در RTL به راست نگاشت می‌شود، پس نباید دست بخورد؛ فقط جهت
   translateX است که باید برگردد — چون محور X در transform همیشه
   چپ‌به‌راست است و با dir برنمی‌گردد. */
.drawer--start{inset-inline-start:0;inline-size:min(380px,88vw);transform:translateX(-102%)}
[dir="rtl"] .drawer--start{transform:translateX(102%)}
.drawer--end{inset-inline-end:0;inline-size:min(420px,92vw);transform:translateX(102%)}
[dir="rtl"] .drawer--end{transform:translateX(-102%)}
.drawer--top{inset-block-end:auto;inset-inline:0;inline-size:auto;transform:translateY(-102%);
  box-shadow:0 12px 40px rgb(10 10 11/.16)}
.drawer[data-open]{transform:none}
.drawer__head{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-5);
  border-block-end:1px solid var(--line);position:sticky;inset-block-start:0;background:var(--surface);z-index:2}
.drawer__head h2{margin:0;font-size:var(--text-md);font-weight:600}
.drawer__x{margin-inline-start:auto;font-size:24px;line-height:1;inline-size:34px;block-size:34px}
.drawer__body{padding:0 var(--space-5) var(--space-6);flex:1}
.drawer__foot{padding:var(--space-5);border-block-start:1px solid var(--line);
  position:sticky;inset-block-end:0;background:var(--surface)}

/* جستجو */
.searchbar{display:flex;align-items:center;gap:var(--space-3);border:1px solid var(--line-strong);
  border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}
.searchbar input{flex:1;min-inline-size:0;border:0;background:none;font:inherit;
  font-size:var(--text-md);outline:none}
.sugg{list-style:none;margin:var(--space-5) 0 0;padding:0}
.sugg li{margin-block-end:var(--space-2)}
.sugg a{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2);
  border-radius:var(--radius-md);transition:background var(--dur) var(--ease)}
.sugg a:hover{background:var(--surface-sunken)}
.sugg img{inline-size:52px;block-size:52px;object-fit:contain;background:var(--surface-sunken);
  border-radius:var(--radius-md)}

/* سبد کشویی */
.mini{display:grid;grid-template-columns:74px 1fr auto;gap:var(--space-3);
  padding-block:var(--space-4);border-block-end:1px solid var(--line);align-items:center}
.mini img{aspect-ratio:1;object-fit:contain;background:var(--surface-sunken);border-radius:var(--radius-md)}

/* ناوبری موبایل — همان مگامنو، ولی آکاردئونی */
.mnav{list-style:none;margin:0;padding:0}
.mnav>li{border-block-end:1px solid var(--line)}
.mnav summary{padding-block:var(--space-4);font-size:var(--text-md);font-weight:500;
  cursor:pointer;list-style:none;display:flex;align-items:center}
.mnav summary::-webkit-details-marker{display:none}
.mnav summary::after{content:"";inline-size:8px;block-size:8px;margin-inline-start:auto;
  border-inline-end:1.5px solid currentColor;border-block-end:1.5px solid currentColor;
  transform:rotate(45deg);opacity:.5}
.mnav details[open] summary::after{transform:rotate(-135deg)}
.mnav ul{list-style:none;margin:0;padding:0 0 var(--space-4)}
.mnav ul li{padding-block:6px}
.mnav ul a{color:var(--ink-muted);font-size:var(--text-sm)}
.mnav>li>a{display:block;padding-block:var(--space-4);font-size:var(--text-md);font-weight:500}

/* فیلتر */
/* ── فیلتر ──
   ⚠️ سه بازنگری روی هم:
   ۱. فهرست چک‌باکس ساده بود ⇒ شد تراشه‌ی انتخابی.
   ۲. ولی تراشه برای گروهِ ده‌تایی (برند) هم بد است — می‌پیچد و خوانده
      نمی‌شود. حالا **قاعده‌ی آستانه**: تا ۵ آیتم تراشه، بیشتر از ۵
      چک‌باکسِ ستونی با نوار جستجو.
   ۳. هر گروه **جمع‌شده** باز می‌شود و با انیمیشن ارتفاع باز و بسته می‌شود.
      ⚠️ انیمیشن روی `grid-template-rows: 0fr → 1fr` است، نه max-height:
      عدد جادویی ندارد و با هر تعداد آیتم درست کار می‌کند. */
.fgroup{border-block-end:1px solid var(--line)}
.fgroup:last-child{border-block-end:0}
.fgroup__h{inline-size:100%;display:flex;align-items:center;gap:var(--space-3);
  padding-block:var(--space-5);font-size:var(--text-sm);font-weight:600;text-align:start;
  cursor:pointer}
.fgroup__h .count{margin-inline-start:auto;font-size:var(--text-2xs);font-weight:600;
  color:var(--ink-muted);background:var(--surface-sunken);padding:3px 10px;
  border-radius:var(--radius-pill);transition:all 200ms var(--ease)}
.fgroup__h .count[data-n]{background:var(--ink);color:var(--ink-inverse)}
.fgroup__h .car{opacity:.5;transition:transform 260ms var(--ease)}
.fgroup[data-open] .fgroup__h .car{transform:rotate(-135deg) translate(-1px,-2px)}
.fgroup__b{display:grid;grid-template-rows:0fr;
  transition:grid-template-rows 300ms var(--ease),opacity 220ms var(--ease);opacity:0}
.fgroup[data-open] .fgroup__b{grid-template-rows:1fr;opacity:1}
.fgroup__in{overflow:hidden;min-block-size:0}
.fgroup__pad{padding-block-end:var(--space-5)}

/* تا ۵ آیتم: تراشه */
.fchips{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.fchip{position:relative;display:inline-flex;align-items:center;gap:7px;cursor:pointer;
  border:1px solid var(--line);border-radius:var(--radius-pill);padding:9px var(--space-4);
  font-size:var(--text-sm);
  transition:border-color 200ms var(--ease),background 200ms var(--ease),color 200ms var(--ease)}
.fchip input{position:absolute;opacity:0;inline-size:1px;block-size:1px}
.fchip .n{color:var(--ink-muted);font-size:var(--text-2xs);transition:color 200ms var(--ease)}
.fchip .tick{inline-size:0;block-size:12px;overflow:hidden;transition:inline-size 220ms var(--ease)}
.fchip .tick svg{inline-size:12px;block-size:12px;display:block}
.fchip:hover{border-color:var(--line-strong)}
.fchip:has(input:checked){background:var(--ink);border-color:var(--ink);color:var(--ink-inverse)}
.fchip:has(input:checked) .n{color:var(--ink-inverse);opacity:.6}
.fchip:has(input:checked) .tick{inline-size:16px}
.fchip:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}

/* بیشتر از ۵ آیتم: چک‌باکسِ ستونی + جستجوی درون‌گروهی */
.fsearch{display:flex;align-items:center;gap:var(--space-2);border:1px solid var(--line);
  border-radius:var(--radius-pill);padding:8px var(--space-4);margin-block-end:var(--space-3)}
.fsearch input{flex:1;min-inline-size:0;border:0;background:none;font:inherit;
  font-size:var(--text-sm);outline:none}
.fsearch svg{inline-size:14px;block-size:14px;color:var(--ink-muted);flex:0 0 auto}
.flist{display:grid;gap:2px;max-block-size:230px;overflow-y:auto;scrollbar-width:thin}
.fbox{display:flex;align-items:center;gap:var(--space-3);cursor:pointer;
  padding:9px var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm);
  transition:background 180ms var(--ease)}
.fbox:hover{background:var(--surface-sunken)}
.fbox input{position:absolute;opacity:0;inline-size:1px;block-size:1px}
.fbox .mark{inline-size:19px;block-size:19px;border:1.5px solid var(--line-strong);
  border-radius:var(--radius-xs);display:grid;place-items:center;flex:0 0 auto;
  transition:background 180ms var(--ease),border-color 180ms var(--ease)}
.fbox .mark svg{inline-size:12px;block-size:12px;color:var(--ink-inverse);
  opacity:0;transform:scale(.5);transition:opacity 180ms var(--ease),transform 180ms var(--ease)}
.fbox:has(input:checked) .mark{background:var(--ink);border-color:var(--ink)}
.fbox:has(input:checked) .mark svg{opacity:1;transform:none}
.fbox:has(input:focus-visible) .mark{outline:2px solid var(--accent);outline-offset:2px}
.fbox .n{margin-inline-start:auto;color:var(--ink-muted);font-size:var(--text-2xs)}

/* رنگ */
.swatchrow{display:flex;flex-wrap:wrap;gap:var(--space-3)}
.fswatch{position:relative;inline-size:38px;block-size:38px;cursor:pointer;border-radius:99px;
  display:grid;place-items:center;box-shadow:0 0 0 1px var(--line-strong) inset;
  transition:box-shadow 200ms var(--ease)}
.fswatch input{position:absolute;opacity:0;inline-size:1px;block-size:1px}
.fswatch svg{inline-size:16px;block-size:16px;color:#fff;opacity:0;transform:scale(.6);
  transition:opacity 200ms var(--ease),transform 200ms var(--ease);
  filter:drop-shadow(0 0 2px rgb(0 0 0/.5))}
.fswatch:has(input:checked){box-shadow:0 0 0 2px var(--surface) inset,0 0 0 4px var(--ink)}
.fswatch:has(input:checked) svg{opacity:1;transform:none}
.fswatch:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:3px}

/* بازه‌ی قیمت */
.range{padding-block-start:var(--space-2)}
.range__bar{block-size:3px;background:var(--line);border-radius:99px;position:relative;
  margin-block:var(--space-5) var(--space-3)}
.range__fill{position:absolute;inset-block:0;inset-inline-start:18%;inline-size:54%;
  background:var(--ink);border-radius:99px}
.range__k{position:absolute;inset-block-start:50%;inline-size:18px;block-size:18px;
  background:var(--surface);border:2px solid var(--ink);border-radius:99px;translate:-50% -50%;cursor:grab}
[dir="rtl"] .range__k{translate:50% -50%}
.range__v{display:flex;justify-content:space-between;font-size:var(--text-xs);color:var(--ink-muted)}

@media(prefers-reduced-motion:reduce){.fgroup__b{transition:none}}

/* ══ نوار ابزار و تراشه ══ */
.toolbar{display:flex;align-items:center;gap:var(--space-4);padding-block:var(--space-4);
  border-block:1px solid var(--line);margin-block-end:var(--space-6)}
.toolbar .sortby{margin-inline-start:auto;font-size:var(--text-sm)}
.chips{display:flex;gap:var(--space-2);overflow-x:auto;padding-block:var(--space-5);scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{border:1px solid var(--line);border-radius:var(--radius-pill);padding:9px var(--space-4);
  font-size:var(--text-sm);white-space:nowrap;transition:all var(--dur) var(--ease)}
.chip:hover,.chip[aria-pressed="true"]{border-color:var(--ink);background:var(--ink);color:var(--ink-inverse)}

/* ══ سربرگ دسته ══ */
.cathead{display:grid;grid-template-columns:400px 1fr;gap:var(--space-7);align-items:center;
  padding-block:var(--space-7)}
.cathead__art{aspect-ratio:4/3;overflow:hidden;border-radius:var(--radius-xl)}
.cathead__art img{inline-size:100%;block-size:100%;object-fit:cover}
.cathead p{margin:var(--space-4) 0 0;color:var(--ink-muted);max-inline-size:60ch}
@media(max-width:860px){.cathead{grid-template-columns:1fr}}

/* ══ فوتر ══ */
.footer{background:var(--surface-inverse);color:var(--ink-inverse);margin-block-start:var(--space-9);
  padding-block:var(--space-8) var(--space-5)}
.footer a{opacity:.6}.footer a:hover{opacity:1;color:var(--accent)}
.footer__cols{display:grid;gap:var(--space-6);grid-template-columns:1.6fr repeat(3,1fr)}
.footer h3{font-size:var(--text-2xs);letter-spacing:.14em;text-transform:uppercase;
  color:var(--accent);margin-block:0 var(--space-3);font-weight:700}
[lang="ar"] .footer h3{letter-spacing:0;text-transform:none;font-size:var(--text-sm)}
.footer ul{list-style:none;margin:0;padding:0;font-size:var(--text-sm);line-height:2.1}
.footer__social{display:flex;gap:var(--space-3);margin-block-start:var(--space-4)}
.footer__social a{inline-size:36px;block-size:36px;border:1px solid rgb(255 255 255/.2);
  border-radius:99px;display:grid;place-items:center;opacity:.7}
.footer__social a:hover{opacity:1;border-color:var(--accent)}
.footer__base{margin-block-start:var(--space-7);padding-block-start:var(--space-4);
  border-block-start:1px solid rgb(255 255 255/.1);font-size:var(--text-xs);opacity:.5;
  display:flex;flex-wrap:wrap;gap:var(--space-4)}
@media(max-width:860px){.footer__cols{grid-template-columns:1fr 1fr}}

@media(max-width:1050px){
  .nav{display:none}
  .burger{display:flex}
}
/* ⚠️ روی موبایل، نوار ابزار سرریز می‌کرد و آیکون‌های جستجو و سبد از کادر
   بیرون می‌افتادند. ارز و حساب کاربری حذف می‌شوند — جستجو و سبد نه. */
@media(max-width:600px){
  .header__in{gap:var(--space-3)}
  .brandmark img{block-size:26px}
  .tools .t-meta,.tools .iconbtn[aria-label="Account"]{display:none}
  .chipbtn{padding:4px var(--space-2)}
  .topbar{font-size:10px;padding-block:6px}
  .assure__in{grid-template-columns:1fr 1fr;text-align:start}
  .assure svg{margin-inline:0}
  .pitch__in{gap:var(--space-4)}
}

/* ══ صفحه‌ی محصول ══
   ⚠️ بازنگری: گالری **دو ستونه** شد (نه یک عکس بزرگ + نوار بندانگشتی)،
   و بلوک توضیحات از پنل خرید به **زیر گالری** منتقل شد — آنجا عرض دارد
   و جدول مشخصات واقعاً خوانده می‌شود.
   ⚠️ هر عکس زمینه‌ی **خودش** را می‌گیرد: عکس‌های یک محصول در مبدأ روی
   زمینه‌های متفاوت‌اند (روشن، تیره، خاکستری) و زمینه‌ی ثابت یعنی درزِ
   دیده‌شدنی. رنگ از خودِ گوشه‌ی عکس خوانده شده. */
.pdp{display:grid;grid-template-columns:1.55fr 1fr;gap:var(--space-9);align-items:start;
  padding-block:var(--space-6)}
.pdp__gal{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}
.pdp__shot{aspect-ratio:3/2;display:grid;place-items:center;overflow:hidden;
  border-radius:var(--radius-md);cursor:zoom-in;position:relative;
  background:var(--surface-sunken)}
.pdp__shot img{inline-size:100%;block-size:100%;object-fit:contain;
  transition:transform 600ms var(--ease)}
.pdp__shot:hover img{transform:scale(1.05)}
.pdp__shot--lead{grid-column:1/-1;aspect-ratio:2/1}
.pdp__shot[aria-current]{outline:2px solid var(--ink);outline-offset:-2px}

.buy{position:sticky;inset-block-start:calc(var(--header-h) + var(--space-4))}
.buy h1{font-size:var(--text-2xl);font-weight:400;margin:var(--space-2) 0 var(--space-1);line-height:1.3}
.buy__code{font-size:var(--text-xs);color:var(--ink-muted)}
.buy__pricerow{display:flex;align-items:baseline;gap:var(--space-3);flex-wrap:wrap;
  margin-block:var(--space-5)}
.buy__price{font-size:var(--text-3xl);font-weight:700;font-variant-numeric:tabular-nums;
  direction:ltr;unicode-bidi:isolate}
.buy__was{font-size:var(--text-md);color:var(--ink-muted);text-decoration:line-through}
.pill{font-size:var(--text-2xs);font-weight:700;padding:5px 11px;border-radius:var(--radius-pill)}
.pill--save{background:var(--ink);color:var(--ink-inverse)}
.pill--stock{background:var(--accent-quiet);color:var(--ink)}
.bnpl{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);
  color:var(--ink-muted);margin-block-end:var(--space-5);flex-wrap:wrap}
.bnpl b{color:var(--ink)}
.bnpl .logo{border:1px solid var(--line);border-radius:var(--radius-xs);padding:3px 8px;
  font-weight:700;font-size:10px;color:var(--ink)}

.axis{padding-block:var(--space-5);border-block-start:1px solid var(--line)}
.axis__head{display:flex;align-items:baseline;gap:var(--space-2);margin-block-end:var(--space-4);
  font-size:var(--text-sm)}
.axis__head h2{margin:0;font-size:var(--text-sm);font-weight:600}
.axis__head .pick{color:var(--ink-muted);font-size:var(--text-xs)}
.colors{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.colors button{inline-size:72px;block-size:52px;border:1px solid var(--line);
  border-radius:var(--radius-sm);display:grid;place-items:center;overflow:hidden;
  transition:all 200ms var(--ease)}
.colors button img{inline-size:100%;block-size:100%;object-fit:contain}
.colors button:hover{border-color:var(--line-strong)}
.colors button[aria-pressed="true"]{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.sizes{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.sizes button{min-inline-size:82px;padding:12px var(--space-4);font-size:var(--text-sm);
  font-weight:600;border:1px solid var(--line-strong);border-radius:var(--radius-pill);
  transition:all 200ms var(--ease)}
.sizes button[aria-pressed="true"]{background:var(--ink);color:var(--ink-inverse);border-color:var(--ink)}
.sizes button[disabled]{color:var(--ink-muted);opacity:.4;cursor:not-allowed;text-decoration:line-through}

/* افزودن عدسی طبی — الگوی Sunglass Hut، جای دکمه‌ی «پرو مجازی» */
.lensrow{display:flex;align-items:center;gap:var(--space-3);border:1px solid var(--line);
  border-radius:var(--radius-md);padding:var(--space-4);margin-block-start:var(--space-3);
  transition:border-color 200ms var(--ease)}
.lensrow:hover{border-color:var(--line-strong)}
.lensrow svg{inline-size:22px;block-size:22px;color:var(--accent);flex:0 0 auto}
.lensrow b{display:block;font-size:var(--text-sm)}
.lensrow span{font-size:var(--text-xs);color:var(--ink-muted)}
.lensrow .go{margin-inline-start:auto;font-size:var(--text-xs);font-weight:700;
  border-block-end:1px solid var(--ink);padding-block-end:2px;white-space:nowrap}

.trustrow{display:flex;gap:var(--space-4);background:var(--surface-sunken);
  border-radius:var(--radius-md);padding:var(--space-4);margin-block-start:var(--space-5);
  font-size:var(--text-xs);justify-content:space-between;flex-wrap:wrap}
.trustrow span{display:flex;align-items:center;gap:6px}
.tagchips{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-block-start:var(--space-4)}
.tagchips span{border:1px solid var(--line);border-radius:var(--radius-pill);
  padding:6px var(--space-4);font-size:var(--text-xs);color:var(--ink-muted)}

/* بلوک جزئیات — زیر گالری، تمام‌عرضِ ستون چپ */
.details{margin-block-start:var(--space-8)}
.details__tabs{display:flex;gap:var(--space-6);border-block-end:1px solid var(--line);
  overflow-x:auto;scrollbar-width:none}
.details__tabs::-webkit-scrollbar{display:none}
.details__tabs button{padding-block:var(--space-4);font-size:var(--text-sm);font-weight:600;
  color:var(--ink-muted);position:relative;white-space:nowrap;transition:color 200ms var(--ease)}
.details__tabs button::after{content:"";position:absolute;inset-block-end:-1px;inset-inline:0;
  block-size:2px;background:var(--ink);transform:scaleX(0);transition:transform 240ms var(--ease)}
.details__tabs button[aria-selected="true"]{color:var(--ink)}
.details__tabs button[aria-selected="true"]::after{transform:scaleX(1)}
.details__panel{padding-block-start:var(--space-6);font-size:var(--text-sm);line-height:1.8;
  color:var(--ink-muted)}
.details__panel[hidden]{display:none}
.details__panel p{margin:0 0 var(--space-4);max-inline-size:70ch}
.spectable{inline-size:100%;border-collapse:collapse;font-size:var(--text-sm)}
.spectable tr{border-block-end:1px solid var(--line)}
.spectable tr:last-child{border-block-end:0}
.spectable th{text-align:start;padding:var(--space-3) 0;font-weight:400;color:var(--ink-muted);
  inline-size:38%}
.spectable td{padding:var(--space-3) 0;color:var(--ink)}
.speccols{display:grid;grid-template-columns:1fr 1fr;gap:0 var(--space-8)}
@media(max-width:760px){.speccols{grid-template-columns:1fr}}
@media(max-width:980px){.pdp{grid-template-columns:1fr}.buy{position:static}}

/* ══ سبد ══ */
.cartgrid{display:grid;grid-template-columns:1fr 360px;gap:var(--space-8);align-items:start;
  padding-block:var(--space-6)}
.line{display:grid;grid-template-columns:130px 1fr auto;gap:var(--space-5);padding-block:var(--space-5);
  border-block-end:1px solid var(--line);align-items:center}
.line__media{aspect-ratio:3/2;display:grid;place-items:center;background:var(--surface-sunken);
  border-radius:var(--radius-lg)}
.line__media img{inline-size:90%;block-size:90%;object-fit:contain}
.line h2{font-size:var(--text-sm);font-weight:400;margin:4px 0}
.qty{display:inline-flex;align-items:center;border:1px solid var(--line-strong);
  border-radius:var(--radius-md);margin-block-start:var(--space-3)}
.qty button{inline-size:34px;block-size:34px}
.qty span{inline-size:34px;text-align:center;font-size:var(--text-sm)}
.line__price{text-align:end;font-weight:700;white-space:nowrap}
.remove{display:block;margin-block-start:var(--space-2);font-size:var(--text-xs);
  color:var(--ink-muted);text-decoration:underline;font-weight:400}
.summary{background:var(--surface-sunken);border-radius:var(--radius-lg);padding:var(--space-6);
  position:sticky;inset-block-start:calc(var(--header-h) + var(--space-4))}
.summary h2{font-size:var(--text-md);margin:0 0 var(--space-5);font-weight:600}
.srow{display:flex;justify-content:space-between;gap:var(--space-4);font-size:var(--text-sm);
  padding-block:var(--space-2)}
.srow--total{border-block-start:1px solid var(--line-strong);margin-block-start:var(--space-3);
  padding-block-start:var(--space-4);font-size:var(--text-md);font-weight:700}
.promoin{display:flex;gap:var(--space-2);margin-block:var(--space-5)}
.promoin input{flex:1;min-inline-size:0;padding:12px var(--space-3);border:1px solid var(--line-strong);
  border-radius:var(--radius-md);background:var(--surface);font:inherit;font-size:var(--text-sm)}
@media(max-width:900px){.cartgrid{grid-template-columns:1fr}.line{grid-template-columns:100px 1fr}
  .line__price{grid-column:2;text-align:start}}

/* ══ انیمیشن اسکرول ══
   ⚠️ اینجا قبلاً یک قاعده‌ی فاجعه‌بار بود:
       @media(prefers-reduced-motion){ [data-anim] * {opacity:1!important} }
   نیتش «هیچ محتوایی پنهان نماند» بود، ولی `*` یعنی **هر نواده** — از جمله
   عکس دومِ کارت که باید opacity صفر بماند. نتیجه: هر دو عکس هم‌زمان
   دیده می‌شدند و هاور یک شبح می‌ساخت.
   حالا لازم هم نیست: CSS دیگر هیچ چیزی را پنهان نمی‌کند و `animate()` در
   حالت کاهش‌حرکت اصلاً اجرا نمی‌شود. */
@media(prefers-reduced-motion:reduce){ html{scroll-behavior:auto} }

/* ══ انتخاب‌گر شکل فریم ══
   ⚠️ هیچ‌کدام از مرجع‌ها این را ندارند. خریدار عینک اول **شکل** را
   انتخاب می‌کند نه برند، و مبدأ این را فقط به لینک متنی در مگامنو سپرده.
   سیلوئت‌ها SVG درون‌خط‌اند — بدون عکس، بدون درخواست شبکه. */
/* هشت شکل در چهار ستون ⇒ دو ردیف کامل، بدون یتیم */
.shapes{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4)}
.shape{display:grid;place-items:center;gap:var(--space-3);padding:var(--space-7) var(--space-4);
  background:var(--surface-sunken);border-radius:var(--radius-lg);text-align:center;
  transition:background 260ms var(--ease),transform 260ms var(--ease)}
.shape svg{inline-size:118px;block-size:auto;color:var(--ink);
  transition:transform 420ms var(--ease),color 240ms var(--ease)}
.shape:hover{background:var(--accent-quiet);transform:translateY(-3px)}
.shape:hover svg{transform:scale(1.12);color:var(--accent)}
.shape__n{font-size:var(--text-sm);font-weight:600}
.shape__c{font-size:var(--text-xs);color:var(--ink-muted)}
@media(max-width:900px){.shapes{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.shapes{grid-template-columns:repeat(2,1fr)}}

/* ══ نوار برند بی‌پایان ══
   ⚠️ دو نسخه‌ی پشت‌سرهم از همان فهرست، و انیمیشن دقیقاً ۵۰٪ جابه‌جا
   می‌شود — این تنها راهی است که حلقه بدون پرش بسته می‌شود. */
.marquee{overflow:hidden;border-block:1px solid var(--line);padding-block:var(--space-4);
  -webkit-mask-image:linear-gradient(to right,transparent,#000 8%,#000 92%,transparent);
  mask-image:linear-gradient(to right,transparent,#000 8%,#000 92%,transparent)}
.marquee__track{display:flex;inline-size:max-content;animation:marq 48s linear infinite}
.marquee .logobox{inline-size:150px;flex:0 0 auto;background:none;padding:var(--space-2)}
.marquee .logobox img{opacity:.5}
.marquee:hover .marquee__track{animation-play-state:paused}
@keyframes marq{from{transform:translateX(0)}to{transform:translateX(-50%)}}
[dir="rtl"] .marquee__track{animation-direction:reverse}
@media(prefers-reduced-motion:reduce){.marquee__track{animation:none}}

/* ══ اسلایدر هیرو ══ چرخش با محوشدن، نه لغزش */
.hero__slide{position:relative;aspect-ratio:2.8/1;overflow:hidden;
  background:var(--surface-sunken)}
.hero__slide>[data-slide]{position:absolute;inset:0;opacity:0;
  transition:opacity 700ms var(--ease)}
.hero__slide>[data-slide][data-on]{opacity:1}
.hero__slide img{inline-size:100%;block-size:100%;object-fit:cover}
.hero__dots i{cursor:pointer}
.hero__dots i:hover{opacity:.8}
/* فلش‌های اسلایدر اصلی — روی خودِ تصویر، دو طرف */
.hero__arw{position:absolute;inset-block-start:50%;translate:0 -50%;z-index:3;
  inline-size:46px;block-size:46px;border-radius:99px;display:grid;place-items:center;
  background:rgb(255 255 255/.86);color:var(--ink);
  box-shadow:0 4px 18px rgb(16 16 18/.18);
  transition:background 200ms var(--ease),transform 200ms var(--ease)}
.hero__arw:hover{background:var(--surface);transform:translateY(0) scale(1.06)}
.hero__arw--prev{inset-inline-start:var(--space-5)}
.hero__arw--next{inset-inline-end:var(--space-5)}
.hero__arw svg{inline-size:20px;block-size:20px}
.hero__arw--prev svg{transform:scaleX(-1)}
[dir="rtl"] .hero__arw svg{transform:scaleX(-1)}
[dir="rtl"] .hero__arw--prev svg{transform:none}
@media(max-width:640px){.hero__arw{inline-size:38px;block-size:38px}}
@media(prefers-reduced-motion:reduce){.hero__slide>[data-slide]{transition:none}}

/* ⚠️ اینجا یک بلوک جامانده از نسخه‌ی قدیمی بود:
       .card:hover .card__media img:not([data-alt-img]){opacity:0}
   هیچ عکسی دیگر `data-alt-img` ندارد، پس `:not()` **هر دو** عکس را
   می‌گرفت و روی هاور صفرشان می‌کرد — و ویژگی‌اش (۰,۴,۱) از قاعده‌ی
   درست (۰,۳,۰) بالاتر بود، پس همیشه برنده می‌شد. نتیجه: کارتِ خالی با
   زمینه‌ی کرم. سه دور دیباگ خرجش شد چون در CSS بود نه در منطق.
   درس: هر بار که الگویی عوض می‌شود، قاعده‌ی قدیمی باید **همان لحظه**
   حذف شود؛ قاعده‌ی مرده در CSS بی‌صدا نمی‌ماند. */

/* ══ جفت ادیتوریال ══
   الگوی Sunglass Hut: دو تصویر بزرگ کنار هم، عنوان و لینک **زیر** تصویر
   نه رویش. متن روی عکس همیشه با سوژه می‌جنگد؛ زیرش نمی‌جنگد. */
.edit{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-5)}
.edit__fig{margin:0}
.edit__img{aspect-ratio:16/10;overflow:hidden;border-radius:var(--radius-lg);
  background:var(--surface-sunken)}
.edit__img img{inline-size:100%;block-size:100%;object-fit:cover;
  transition:transform 700ms var(--ease)}
.edit__fig:hover .edit__img img{transform:scale(1.04)}
.edit__cap{padding-block-start:var(--space-4)}
.edit__cap h3{font-family:var(--font-display);font-weight:400;font-size:var(--text-2xl);
  margin:0 0 var(--space-2)}
.edit__cap p{margin:0 0 var(--space-3);color:var(--ink-muted);max-inline-size:52ch}
@media(max-width:820px){.edit{grid-template-columns:1fr}}

/* ══ نوار بیانیه ══
   تیره، تایپ بسیار بزرگ، و یک ردیف تراشه‌ی موضوعی بالایش. */
.statement{background:var(--surface-inverse);color:var(--ink-inverse);
  padding-block:var(--space-9);position:relative;overflow:hidden}
.statement__tabs{display:flex;gap:var(--space-2);flex-wrap:wrap;
  margin-block-end:var(--space-7);opacity:.75}
.statement__tabs span{border:1px solid rgb(255 255 255/.24);border-radius:var(--radius-pill);
  padding:7px var(--space-4);font-size:var(--text-xs)}
.statement__tabs span:first-child{background:var(--ink-inverse);color:var(--ink);
  border-color:var(--ink-inverse);font-weight:600}
.statement h2{font-family:var(--font-display);font-weight:200;
  font-size:clamp(30px,4.6vw,68px);line-height:1.06;letter-spacing:-.02em;
  margin:0 0 var(--space-5);max-inline-size:18ch}
[lang="ar"] .statement h2{letter-spacing:0;font-weight:300;line-height:1.3}
.statement p{margin:0 0 var(--space-6);opacity:.6;max-inline-size:52ch;font-size:var(--text-md)}
/* سیلوئت بزرگِ کم‌رنگ در پس‌زمینه — امضای بصری، نه تزئین اضافه */
.statement__ghost{position:absolute;inset-block-end:-8%;inset-inline-end:-4%;
  inline-size:min(46%,620px);opacity:.055;color:var(--ink-inverse);pointer-events:none}

/* ══ نوار متن متحرک با محصول ══
   ⚠️ الهام از نوار «Women · Men» ی Sunglass Hut، ولی محتوایش مالِ ماست:
   واژه‌ی دوزبانه و cutoutهای خودمان که از نوار بیرون می‌زنند. */
.wordbar{position:relative;background:var(--surface-inverse-sunken);color:var(--ink-inverse);
  overflow:hidden;padding-block:var(--space-6);isolation:isolate}
.wordbar+.wordbar{border-block-start:1px solid rgb(255 255 255/.08)}
.wordbar__track{display:flex;align-items:center;gap:var(--space-7);inline-size:max-content;
  animation:wordmarq 40s linear infinite}
.wordbar--rev .wordbar__track{animation-direction:reverse}
.wordbar__w{font-family:var(--font-display);font-weight:200;font-size:clamp(30px,4vw,58px);
  line-height:1;white-space:nowrap;opacity:.92}
.wordbar__dot{opacity:.35}
.wordbar__p{inline-size:clamp(120px,11vw,180px);block-size:auto;flex:0 0 auto;
  filter:drop-shadow(0 12px 24px rgb(0 0 0/.5))}
@keyframes wordmarq{from{transform:translateX(0)}to{transform:translateX(-50%)}}
[dir="rtl"] .wordbar__track{animation-direction:reverse}
[dir="rtl"] .wordbar--rev .wordbar__track{animation-direction:normal}
.wordbar:hover .wordbar__track{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.wordbar__track{animation:none}}

/* ══ ردیف خدمات ══ */
.services{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--space-5)}
.service svg{inline-size:26px;block-size:26px;color:var(--accent);margin-block-end:var(--space-3)}
.service h3{font-size:var(--text-sm);font-weight:600;margin:0 0 6px}
.service p{margin:0 0 var(--space-3);font-size:var(--text-xs);color:var(--ink-muted);line-height:1.6}
.service a{font-size:var(--text-2xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  border-block-end:1px solid var(--ink);padding-block-end:2px}
[lang="ar"] .service a{letter-spacing:0;text-transform:none;font-size:var(--text-xs)}
@media(max-width:1000px){.services{grid-template-columns:repeat(2,1fr);gap:var(--space-6)}}

/* ══ نوار خبرنامه ══ */
.news{background:var(--accent-quiet);border-radius:var(--radius-xl);
  padding:var(--space-8) var(--space-7);text-align:center}
.news h2{font-family:var(--font-display);font-weight:300;font-size:clamp(24px,3vw,var(--text-4xl));
  margin:0 0 var(--space-3)}
.news p{margin:0 auto var(--space-6);color:var(--ink-muted);max-inline-size:56ch}
.news__form{display:flex;gap:var(--space-2);max-inline-size:460px;margin-inline:auto}
.news__form input{flex:1;min-inline-size:0;padding:15px var(--space-5);border:1px solid var(--line-strong);
  border-radius:var(--radius-pill);background:var(--surface);font:inherit;font-size:var(--text-sm)}
.news__form input:focus{outline:2px solid var(--accent);outline-offset:1px}
.news__form .btn{border-radius:var(--radius-pill)}

/* ══ ۱ · نقطه‌های رنگ روی کارت ══
   ⚠️ این تنها جایی است که **گروه‌بندی مدل** در ویترین دیده می‌شود — همان
   کاری که ۱۴٬۰۵۰ محصول مبدأ را به ۵٬۷۱۲ مدل فشرد. بدون این، آن کار
   کاملاً پنهان می‌ماند.
   رنگ هر نقطه از خودِ عکسِ همان رنگ استخراج شده، نه از جدول دستی: کد
   «۹۰۲/۵۷» به هیچ نامی نگاشت نمی‌شود، ولی خودِ فریم می‌داند چه رنگی است. */
.ways{display:flex;align-items:center;gap:7px;justify-content:center;
  margin-block-start:var(--space-3);min-block-size:20px}
.ways button{inline-size:14px;block-size:14px;border-radius:99px;flex:0 0 auto;
  box-shadow:0 0 0 1px var(--line-strong) inset;
  transition:transform 200ms var(--ease),box-shadow 200ms var(--ease)}
.ways button:hover{transform:scale(1.25)}
.ways button[aria-pressed="true"]{box-shadow:0 0 0 1.5px var(--surface) inset,0 0 0 2px var(--ink)}
.ways .more{font-size:var(--text-2xs);color:var(--ink-muted);margin-inline-start:2px}

/* ══ ۴ · یابنده‌ی سایز از عرض صورت ══
   ⚠️ به‌جای «پرو مجازی» که دوربین و مدل سه‌بعدی می‌خواهد و در اتود دروغ
   است. این با داده‌ی واقعی کار می‌کند: عرض عدسه روی هر فریم حک شده و
   توزیعش را از ۹٬۰۴۸ محصول مبدأ داریم. */
.fitter{background:var(--surface-inverse);color:var(--ink-inverse);border-radius:var(--radius-xl);
  padding:var(--space-8) var(--space-7);display:grid;grid-template-columns:1fr 1fr;
  gap:var(--space-8);align-items:center}
.fitter h2{font-family:var(--font-display);font-weight:300;
  font-size:clamp(24px,2.6vw,var(--text-4xl));margin:0 0 var(--space-3);line-height:1.15}
.fitter p{margin:0;opacity:.6;font-size:var(--text-sm);max-inline-size:46ch}
.fitter__ctl{display:grid;gap:var(--space-5)}
.fitter__val{display:flex;align-items:baseline;gap:var(--space-3)}
.fitter__val b{font-family:var(--font-display);font-weight:200;font-size:52px;line-height:1;
  color:var(--accent);font-variant-numeric:tabular-nums}
.fitter__val span{font-size:var(--text-sm);opacity:.6}
.fitter input[type=range]{inline-size:100%;accent-color:var(--accent);block-size:22px;cursor:grab}
.fitter__scale{display:flex;justify-content:space-between;font-size:var(--text-2xs);opacity:.45}
.fitter__out{border-block-start:1px solid rgb(255 255 255/.14);padding-block-start:var(--space-5);
  display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap}
.fitter__pick{background:var(--accent);color:var(--accent-ink);border-radius:var(--radius-pill);
  padding:9px var(--space-5);font-weight:700;font-size:var(--text-md);
  font-variant-numeric:tabular-nums}
.fitter__note{font-size:var(--text-xs);opacity:.6;flex:1;min-inline-size:180px}
/* هیستوگرام واقعی — از ۹٬۰۴۸ محصول */
.fitter__hist{display:flex;align-items:flex-end;gap:3px;block-size:56px;margin-block-start:var(--space-4)}
.fitter__hist i{flex:1;background:rgb(255 255 255/.18);border-radius:2px 2px 0 0;display:block;
  transition:background 200ms var(--ease)}
.fitter__hist i[data-on]{background:var(--accent)}
@media(max-width:860px){.fitter{grid-template-columns:1fr;gap:var(--space-6)}}

/* ══ ۸ · موزائیک ادیتوریال ══
   ⚠️ باگ نسخه‌ی قبل: ردیف دوم ۲+۲+۳ می‌شد — ۷ ستون در شبکه‌ی ۶ ستونه —
   پس آخرین کاشی می‌پرید و حفره‌ی دوستونه می‌ماند. کلاس‌ها حالا صریح
   عرض می‌گویند (w2/w3/w4) تا جمعِ هر ردیف با یک نگاه چک‌شدنی باشد:
       ۴+۲ · ۲+۲+۲ · ۳+۳
   بلوک متنی هم‌ارزِ عکس است — همان چیزی که این را از کاتالوگ به مجله
   تبدیل می‌کند. */
.mosaic{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--space-3)}
.mo{position:relative;overflow:hidden;border-radius:var(--radius-lg);
  background:var(--surface-sunken);display:flex}
.mo img{inline-size:100%;block-size:100%;object-fit:cover;transition:transform 700ms var(--ease)}
.mo--img:hover img{transform:scale(1.05)}
.mo--w2{grid-column:span 2}
.mo--w3{grid-column:span 3}
.mo--w4{grid-column:span 4}
.mo--img.mo--w4{aspect-ratio:2/1}
.mo--img.mo--w3{aspect-ratio:3/2}
.mo--img.mo--w2{aspect-ratio:1/1}
.mo--text{background:var(--surface);border:1px solid var(--line);
  flex-direction:column;justify-content:center;padding:var(--space-6);gap:var(--space-3)}
.mo--text.mo--ink{background:var(--surface-inverse);color:var(--ink-inverse);border-color:transparent}
.mo--text h3{font-family:var(--font-display);font-weight:400;font-size:var(--text-3xl);margin:0;
  line-height:1.1}
.mo--text p{margin:0;font-size:var(--text-sm);color:var(--ink-muted);line-height:1.7}
.mo--ink p{color:var(--ink-inverse);opacity:.6}
.mo--text a{font-size:var(--text-2xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  border-block-end:1px solid currentColor;padding-block-end:2px;align-self:flex-start}
[lang="ar"] .mo--text a{letter-spacing:0;text-transform:none;font-size:var(--text-xs)}
.mo__cap{position:absolute;inset-block-end:0;inset-inline:0;
  padding:var(--space-7) var(--space-4) var(--space-4);
  color:var(--ink-inverse);font-weight:600;font-size:var(--text-md);
  background:linear-gradient(to top,rgb(0 0 0/.66),transparent)}
@media(max-width:900px){
  .mosaic{grid-template-columns:repeat(2,1fr)}
  .mo--w2,.mo--w3,.mo--w4{grid-column:span 2}
  .mo--img.mo--w4,.mo--img.mo--w3,.mo--img.mo--w2{aspect-ratio:16/9}
  .mo--text{aspect-ratio:auto}
}

/* ══ ۱۱ · نوار جایگاه قیمت ══
   کاتالوگ از ۷۰ تا ۶۵٬۷۲۰ درهم است — ۹۴۳ برابر. بدون یک مرجع بصری،
   عددِ تنها معنی ندارد. */
.pband{margin-block-start:var(--space-5)}
.pband__t{display:flex;align-items:baseline;gap:var(--space-2);font-size:var(--text-xs);
  color:var(--ink-muted);margin-block-end:var(--space-3)}
.pband__bar{block-size:6px;border-radius:99px;position:relative;
  background:linear-gradient(to right,var(--surface-sunken),var(--line-strong))}
[dir="rtl"] .pband__bar{background:linear-gradient(to left,var(--surface-sunken),var(--line-strong))}
.pband__k{position:absolute;inset-block-start:50%;translate:-50% -50%;inline-size:16px;
  block-size:16px;border-radius:99px;background:var(--accent);
  box-shadow:0 0 0 3px var(--surface),0 2px 8px rgb(16 16 18/.25)}
[dir="rtl"] .pband__k{translate:50% -50%}
.pband__s{display:flex;justify-content:space-between;font-size:var(--text-2xs);
  color:var(--ink-muted);margin-block-start:var(--space-3)}

/* ══ آکاردئون (FAQ) ══
   ⚠️ این استایل موقع تبدیل آکاردئونِ PDP به تب حذف شده بود و FAQ صفحه‌ی
   اصلی بی‌استایل مانده بود. حالا برگشته — ولی با **همان الگوی کلپسیبلِ
   فیلترها**، نه یک الگوی دوم: باز و بسته شدن روی
   `grid-template-rows: 0fr → 1fr` است، پس عدد جادویی ندارد و با هر
   طول متنی درست کار می‌کند. یک آکاردئون در کل اتود، نه دو تا. */
.acc{border-block-start:1px solid var(--line)}
.accq{border-block-end:1px solid var(--line)}
.accq__h{inline-size:100%;display:flex;align-items:center;gap:var(--space-4);
  padding-block:var(--space-5);text-align:start;cursor:pointer;
  font-size:var(--text-lg);font-weight:500;font-family:var(--font-display);
  transition:color 200ms var(--ease)}
.accq__h:hover{color:var(--accent)}
.accq__h .car{margin-inline-start:auto;flex:0 0 auto;opacity:.5;
  transition:transform 280ms var(--ease)}
.accq[data-open] .accq__h .car{transform:rotate(-135deg) translate(-1px,-2px)}
.accq__b{display:grid;grid-template-rows:0fr;opacity:0;
  transition:grid-template-rows 300ms var(--ease),opacity 220ms var(--ease)}
.accq[data-open] .accq__b{grid-template-rows:1fr;opacity:1}
.accq__in{overflow:hidden;min-block-size:0}
.accq__p{padding-block-end:var(--space-5);font-size:var(--text-sm);line-height:1.85;
  color:var(--ink-muted);max-inline-size:82ch}
@media(prefers-reduced-motion:reduce){.accq__b{transition:none}}

/* لایه‌ی اپ — بعد از توکن‌ها و CSSِ اتود. فقط آنچه اتود (HTML ایستا) لازم نداشت. */

/* فونت‌ها: next/font خودمیزبان است (بدونِ CDN در زمانِ اجرا) و متغیرِ CSS می‌دهد؛ توکن‌های
   اتود فقط نامِ خانواده را می‌شناسند، پس همان‌ها را اینجا به فونتِ بارگذاری‌شده وصل می‌کنیم. */
:root {
  --font-ui: var(--ff-inter), Inter, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-display: var(--ff-newsreader), Newsreader, Georgia, "Times New Roman", serif;
}
:root:lang(ar), [lang="ar"] {
  --font-ui: var(--ff-cairo), Cairo, "Noto Sans Arabic", system-ui, sans-serif;
  --font-display: var(--ff-cairo), Cairo, "Noto Sans Arabic", system-ui, sans-serif;
}

/* پرشِ دسترس‌پذیر به محتوا — فقط با فوکسِ کیبورد دیده می‌شود. */
.skip {
  position: fixed; inset-block-start: 8px; inset-inline-start: 8px; z-index: 99;
  background: var(--surface-inverse); color: var(--ink-inverse);
  padding: 8px 14px; border-radius: var(--radius-md); font-size: var(--text-sm);
  transform: translateY(-300%);
}
.skip:focus { transform: none; }

/* `inert` پس‌زمینه‌ی کشو را از فوکس و کلیک می‌اندازد؛ اتود این حالت را نداشت. */
#page[inert] { user-select: none; }

/* دکمه‌ی زبان: `lang` روی خودِ لینک است و `[lang="ar"]` متغیرِ `--font-ui` را همان‌جا عوض می‌کند،
   ولی `font-family` از والد (Inter) ارث رسیده؛ بدونِ این، «العربية» مربع می‌شود و هدرِ موبایل
   را ۱۳px پهن‌تر از صفحه می‌کند. */
.chipbtn[lang] { font-family: var(--font-ui); }

/* هدرِ موبایل: اتود در ≤۳۹۰px از صفحه بیرون می‌زد (بایگانیِ برسی: «header 403 در قابِ ۳۹۰»). burger + لوگو + چیپِ
   زبان + جستجو + سبد در ۳۲۰px جا نمی‌شود، پس زیرِ ۴۰۰px فاصله‌ها و لوگو فشرده می‌شوند. */
/* لوگوی تازه عمودی است (چشمِ OV + «OPTI VIEW» زیرش)، پس بلندتر از لوگوی افقیِ قبلی (۳۴px) */
.brandmark img { block-size: 52px; }
@media (max-width: 478px) { .brandmark img { block-size: 42px; } }
@media (max-width: 400px) {
  .header__in { gap: var(--space-2); }
  .tools { gap: var(--space-1); }
  .brandmark img { block-size: 38px; }
  .brandmark--ar { font-size: var(--text-xl); }
  .chipbtn { padding-inline: var(--space-2); }
}
@media (max-width: 340px) {
  .header__in { padding-inline: var(--space-3); }
  .brandmark img { block-size: 34px; }
}

/* «Brands» در ناوبریِ موبایل لینکِ ساده است، نه آکاردئون؛ همان ریتمِ `summary` */
.mnav > li > a { display: block; padding-block: var(--space-4); font-size: var(--text-md); font-weight: 500; }

/* باگِ خودِ اتود: `.edit__img` یک <a>ِ inline است و `aspect-ratio:16/10` + `overflow:hidden`ِ همان قاعده
   روی عنصرِ inline اثر ندارد؛ عکسِ پرتره با ارتفاعِ طبیعی (۹۵۵px) می‌آمد و کپشن از بخش بیرون می‌زد.
   `block` همان مقصودِ CSSِ اتود را برآورده می‌کند: قابِ ۱۶:۱۰ و کپشنِ داخلِ بخش. */
.edit__img { display: block; }

/* ستونِ شکل‌ها به تعدادِ شکل‌ها (کمتر از ۴ ← کارت‌ها نیمه‌ی صفحه را خالی نگذارند). با `@media` تا قاعده‌ی
   ریسپانسیوِ اتود (۲ ستون زیرِ ۹۰۰px) نپوشانده شود — سبکِ inline آن را می‌پوشاند و سرریز می‌داد. */
@media (min-width: 901px) { .shapes { grid-template-columns: repeat(var(--cols, 4), 1fr); } }

/* باگِ خودِ اتود: کارتِ شکل (سیلوئتِ ۱۱۸px + پدینگ) دو ستون را در ≤۳۶۰px از صفحه بیرون می‌برد
   (در جاروی ۲۲عرضیِ اتود هم ثبت شده بود). */
@media (max-width: 380px) {
  .shapes { gap: var(--space-2); }
  .shape { min-inline-size: 0; padding-inline: var(--space-2); }
  .shape svg { inline-size: min(118px, 100%); }
}

/* سربرگِ کاروسل با «View all» + دو فلش در موبایل جا نمی‌شود؛ بشکند. */
@media (max-width: 480px) {
  .sechead { flex-wrap: wrap; }
}

/* ── فهرست: فیلتر، مرتب‌سازی، صفحه‌بندی ───────────────────────────────── */
.fprice { display: grid; grid-template-columns: 1fr 1fr auto; gap: var(--space-2); align-items: center; }
.fprice .fsearch { margin-block-end: 0; }
.fprice input::-webkit-outer-spin-button, .fprice input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.fprice input[type="number"] { -moz-appearance: textfield; appearance: textfield; min-inline-size: 0; }

/* مرتب‌سازیِ واقعی با ظاهرِ همان متنِ اتود («Sort by: …⌄») */
.sortby { display: inline-flex; align-items: center; gap: 6px; }
.sortby select {
  appearance: none; border: 0; background: none; font: inherit; font-weight: 600; color: inherit;
  padding-inline-end: 14px; cursor: pointer;
  background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
  background-size: 4px 4px, 4px 4px; background-repeat: no-repeat;
  background-position: calc(100% - 7px) 55%, calc(100% - 3px) 55%;
}
[dir="rtl"] .sortby select { background-position: 7px 55%, 3px 55%; }

/* ══ Skeleton ═══════════════════════════════════════════════════════════════
   یک زبانِ بارگذاری برای هر دو پیاده‌سازی (Next و Blade): همین کلاس‌ها و همین ابعاد.
   ۱) ناوبری به مسیرِ دیگر ← صفحه‌ی اسکلت (`.sk-page`: Next با loading.tsx، Blade با <template> + Turbo).
   ۲) تغییرِ فیلتر/ترتیب/صفحه روی همان مسیر ← `html[data-filtering]` کارت‌های موجود را به اسکلت تبدیل می‌کند
      (ابعادِ کارت ثابت می‌ماند، پس شبکه نمی‌پرد). */
.sk { background: linear-gradient(100deg, var(--surface-sunken) 30%, var(--line) 50%, var(--surface-sunken) 70%); background-size: 300% 100%; animation: sk-shimmer 1.3s linear infinite; border-radius: var(--radius-sm, 4px); }
[dir="rtl"] .sk { animation-direction: reverse; }
@keyframes sk-shimmer { from { background-position: 100% 0; } to { background-position: 0 0; } }
@media (prefers-reduced-motion: reduce) { .sk, html[data-filtering] .grid .card__media, html[data-filtering] .grid .card__body > * { animation: none !important; } }
.sk-line { block-size: 1em; margin-block: 0.55em; }
.sk-w30 { inline-size: 30%; } .sk-w50 { inline-size: 50%; } .sk-w70 { inline-size: 70%; } .sk-w90 { inline-size: 90%; }
.sk-title { block-size: clamp(30px, 3.4vw, 48px); inline-size: min(420px, 70%); margin-block: var(--space-7) var(--space-4); }
.sk-btn { block-size: 48px; border-radius: var(--radius-md, 8px); }
.sk-chip { display: inline-block; inline-size: 96px; block-size: 34px; border-radius: 999px; }
.sk-page { min-block-size: 70vh; }
.sk-pdp { padding-block: var(--space-6); }
.sk-pdp .pdp__shot { background: none; }
.sk-card .card__media { background: none; }
.sk-card .card__media .sk { inline-size: 100%; block-size: 100%; border-radius: var(--radius-md); }
.sk-hero { block-size: min(70vh, 640px); border-radius: 0; }
.sk-row { display: grid; grid-template-columns: 130px 1fr; gap: var(--space-5); padding-block: var(--space-5); border-block-end: 1px solid var(--line); }
.sk-row .sk:first-child { aspect-ratio: 3 / 2; }

/* فیلتر در حال به‌روزرسانی: محتوای کارت‌ها پنهان و جایش اسکلت (کلیک غیرفعال) */
.grid[aria-busy="true"], html[data-filtering] .grid { pointer-events: none; }
html[data-filtering] .grid .card__media,
html[data-filtering] .grid .card__body > * { background: linear-gradient(100deg, var(--surface-sunken) 30%, var(--line) 50%, var(--surface-sunken) 70%); background-size: 300% 100%; animation: sk-shimmer 1.3s linear infinite; border-radius: var(--radius-sm, 4px); }
html[data-filtering] .grid .card__media { border-radius: var(--radius-md); }
html[data-filtering] .grid .card__media > *, html[data-filtering] .grid .card__media img { opacity: 0 !important; } /* Blade: <picture> است و display:contents */
html[data-filtering] .grid .card__body { color: transparent; }
html[data-filtering] .grid .card__body * { color: transparent !important; border-color: transparent !important; }
html[data-filtering] .grid .card__body svg, html[data-filtering] .grid .card__body .ways, html[data-filtering] .grid .card__cta { visibility: hidden; }
html[data-filtering] .grid .card__body > .t-brand { inline-size: 30%; }
html[data-filtering] .grid .card__body > .t-title { inline-size: 75%; margin-block: 0.5em; }
html[data-filtering] .grid .card__body > .card__row { inline-size: 50%; }

/* اسکلتِ ناوبری روی صفحه است ← محتوای واقعیِ صفحه‌ی قبل پنهان (Next: NavSkeleton، Blade: theme.js) */
html[data-sk] #main:not(.sk-page) { display: none; }

/* بعد از کلیک در منوی بزرگ، تا حرکتِ بعدیِ ماوس بسته می‌ماند (صفحه ریلود نمی‌شود که خودش ببندد) */
html[data-nav-hold] .mega { opacity: 0 !important; visibility: hidden !important; pointer-events: none; }
.turbo-progress-bar { display: none; }

.pager { display: flex; justify-content: center; gap: var(--space-3); flex-wrap: wrap; padding-block: var(--space-8) var(--space-6); }
.empty { text-align: center; padding-block: var(--space-9); }
.empty p { margin: 0 0 var(--space-4); color: var(--ink-muted); }
.toolbar .chipbtn{white-space:nowrap;flex:none}
.toolbar .t-meta{white-space:nowrap}

/* PDP: ستون‌های grid با min-content (عکسِ ۱۲۰۰پیکسلی) از عرضِ صفحه بیرون نزنند */
.pdp{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr)}
.pdp>*,.pdp__gal,.pdp__shot{min-inline-size:0}
.pdp__gal button.pdp__shot{border:0;padding:0;cursor:pointer;font:inherit;color:inherit;background:var(--surface-sunken)}
@media(max-width:980px){.pdp{grid-template-columns:minmax(0,1fr)}}
.buy__code{direction:inherit}
/* موبایل: گالری ← خرید ← جزئیات (قیمت و «افزودن» زیرِ تب‌ها گم نشود) */
@media(max-width:980px){
  .pdp{gap:var(--space-6)}
  .pdp__main{display:contents}
  .pdp__gal{order:1}
  .buy{order:2}
  .details{order:3;margin-block-start:0}
}

/* ── ویزاردِ عدسی ── */
.lw-scrim{position:fixed;inset:0;background:rgb(10 10 11/.55);z-index:70}
.lw-modal{position:fixed;z-index:71;inset-block:0;inset-inline:0;margin:auto;display:flex;flex-direction:column;background:var(--surface);
  inline-size:min(760px,100%);block-size:min(860px,100dvh);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);overflow:hidden}
.lw-modal__x{position:absolute;inset-block-start:var(--space-3);inset-inline-end:var(--space-3);z-index:2;inline-size:40px;block-size:40px;border-radius:50%;
  border:1px solid var(--line);background:var(--surface);font-size:22px;line-height:1;cursor:pointer}
.lw-modal .lw-wrap{display:flex;flex-direction:column;min-block-size:0;flex:1}
.lw-wrap .lw{display:flex;flex-direction:column;min-block-size:0;flex:1}
@media(max-width:640px){.lw-modal{block-size:100dvh;border-radius:0;inline-size:100%}}
.lw-product{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-6);padding-inline-end:calc(var(--space-6) + 48px);border-block-end:1px solid var(--line);font-size:var(--text-sm)}
.lw-product img{inline-size:80px;block-size:56px;object-fit:contain;flex:none}
.lw__head{padding:var(--space-5) var(--space-6) var(--space-3)}
.lw__head h2{margin:var(--space-3) 0 0;font-size:var(--text-xl);font-weight:500;outline:none}
.lw__steps{display:flex;gap:var(--space-4);list-style:none;margin:0;padding:0;font-size:var(--text-xs);color:var(--ink-muted);overflow-x:auto;scrollbar-width:none}
.lw__steps li{white-space:nowrap;padding-block-end:6px;border-block-end:2px solid transparent}
.lw__steps li[data-done]{color:var(--ink)}
.lw__steps li[aria-current]{color:var(--ink);font-weight:700;border-color:var(--ink)}
.lw__body{flex:1;min-block-size:0;overflow-y:auto;padding:var(--space-3) var(--space-6) var(--space-6)}
.lw__opts{display:grid;gap:var(--space-3)}
.lw__opt{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);text-align:start;inline-size:100%;padding:var(--space-4) var(--space-5);
  border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);color:inherit;font:inherit;cursor:pointer}
.lw__opt:hover{border-color:var(--line-strong)}
.lw__opt[aria-pressed="true"],.lw__opt[aria-checked="true"]{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.lw__opt-main{display:grid;gap:4px;min-inline-size:0}
.lw__opt-main b{font-size:var(--text-sm)}
.lw__opt-main>span{font-size:var(--text-xs);color:var(--ink-muted)}
.lw__opt-price{text-align:end;white-space:nowrap;font-size:var(--text-sm);font-weight:600;flex:none}
.lw__opt-price small{color:var(--ink-muted);font-weight:400}
.lw__opt-price s{display:block;font-weight:400;color:var(--ink-muted);font-size:var(--text-xs)}
.lw__badges{display:flex;gap:6px;flex-wrap:wrap}
.lw__groups{display:grid;gap:var(--space-6)}
.lw__fs{border:0;padding:0;margin:0;min-inline-size:0}
.lw__fs legend{font-size:var(--text-sm);font-weight:600;padding:0;margin-block-end:var(--space-2)}
.lw__fs p{margin:0 0 var(--space-3);font-size:var(--text-xs);color:var(--ink-muted)}
.lw__chips{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-block-end:var(--space-2)}
.lw__chips button{padding:9px var(--space-4);border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface);color:inherit;font:inherit;font-size:var(--text-sm);cursor:pointer}
.lw__chips button[aria-pressed="true"]{background:var(--ink);color:var(--ink-inverse);border-color:var(--ink)}
.lw__row{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:var(--space-3)}
.lw__field{display:grid;gap:4px;align-content:start}
.lw__field label{font-size:var(--text-xs);color:var(--ink-muted)}
.lw__field input{inline-size:100%;padding:11px var(--space-3);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);font:inherit;font-size:var(--text-sm);text-align:start}
.lw__field input[aria-invalid="true"]{border-color:#B3261E}
.lw__field small{font-size:var(--text-2xs);color:var(--ink-muted)}
.lw__field input[aria-invalid="true"]+small{color:#B3261E}
.lw__field--pd{max-inline-size:240px;margin-block-start:var(--space-4)}
.lw__rx{display:grid;gap:var(--space-4)}
.lw__upload{display:grid;gap:var(--space-3);justify-items:start}
.lw__file{display:flex;gap:var(--space-3);align-items:center;margin:0;font-size:var(--text-sm)}
.lw__link{background:none;border:0;padding:0;color:inherit;text-decoration:underline;cursor:pointer;font:inherit}
.lw__msg{margin:0;color:#B3261E;font-size:var(--text-sm)}
.lw__foot{border-block-start:1px solid var(--line);padding:var(--space-4) var(--space-6);display:grid;gap:var(--space-3);background:var(--surface)}
.lw__total{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2) var(--space-3)}
.lw__total b{font-size:var(--text-xl);font-variant-numeric:tabular-nums}
.lw__total-label{font-size:var(--text-sm);color:var(--ink-muted)}
.lw__saved{font-size:var(--text-xs);font-weight:700;background:var(--accent-quiet);padding:4px 10px;border-radius:var(--radius-pill)}
.lw__total details{inline-size:100%;font-size:var(--text-xs)}
.lw__total summary{cursor:pointer;color:var(--ink-muted)}
.lw__total ul{list-style:none;margin:var(--space-2) 0 0;padding:0;display:grid;gap:4px}
.lw__total li{display:flex;justify-content:space-between;gap:var(--space-4)}
.lw__nav{display:flex;gap:var(--space-3);justify-content:flex-end}
.lw__nav .btn{min-inline-size:132px}
@media(max-width:640px){.lw__head,.lw__body,.lw__foot,.lw-product{padding-inline:var(--space-4)}.lw-product{padding-inline-end:calc(var(--space-4) + 48px)}.lw__nav .btn{flex:1}}

/* هدفِ لمسی ≥ ۴۰px در موبایل (چکِ جاروی ریسپانسیو؛ اتود ۳۶–۳۸ بود): اندازه‌ی دیدنی همان است، فقط جعبه بزرگ‌تر */
@media(max-width:820px){
  .burger,.iconbtn{inline-size:40px;block-size:40px}
  .chipbtn{min-block-size:40px;display:inline-flex;align-items:center}
  .brandmark{min-block-size:40px}
  .tools{gap:var(--space-1)}
}
/* نوارِ ابزارِ PLP در عرض‌های کم بشکند، نه سرریز (جاروی ۳۲۰/۳۶۰) */
.toolbar{flex-wrap:wrap;row-gap:var(--space-2)}

/* هدفِ لمسی ≥ ۴۰px برای بقیه‌ی کنترل‌های موبایل (نتیجه‌ی جاروی ریسپانسیو) */
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:0 var(--space-2);padding-block-start:var(--space-2)}
@media(max-width:820px){
  .hero__arw,.carousel__nav button{inline-size:40px;block-size:40px}
  .more,.mo a,a.card__cta,.crumbs a{display:inline-flex;align-items:center;min-block-size:40px}
  .drawer__x{inline-size:40px;block-size:40px}
  /* نقطه‌ی رنگِ کارت: همان ۱۴px دیدنی (با ::before)، جعبه‌ی لمس ۴۰px */
  .ways{gap:0}
  .ways button{inline-size:40px;block-size:40px;position:relative;background:none!important;box-shadow:none!important;border-radius:0}
  .ways button::before{content:"";position:absolute;inset:13px;border-radius:99px;background:var(--dot);box-shadow:0 0 0 1px var(--line-strong) inset}
  .ways button[aria-pressed="true"]::before{box-shadow:0 0 0 1.5px var(--surface) inset,0 0 0 2px var(--ink)}
}
/* تراشه‌ی برند لینک است، نه دکمه: `aria-current` (نه `aria-pressed`که برای لینک مجاز نیست) */
.chip[aria-current="true"]{border-color:var(--ink);background:var(--ink);color:var(--ink-inverse)}

/* نوار اعلان */
.announce{display:flex;align-items:center;justify-content:center;gap:var(--space-4);padding:var(--space-2) var(--space-6);background:var(--accent);color:var(--ink);font-size:var(--text-xs);font-weight:600;position:relative}
.announce a{text-decoration:underline}
.announce button{position:absolute;inset-inline-end:var(--space-3);inset-block:0;margin-block:auto;inline-size:32px;block-size:32px;font-size:20px;line-height:1;cursor:pointer;color:inherit}
@media(max-width:820px){.announce button{inline-size:40px;block-size:40px}.announce{padding-inline:var(--space-8);padding-block:0}.announce a{min-block-size:40px;display:inline-flex;align-items:center}}  /* هدفِ لمسی ≥۴۰px: جاروی ریسپانسیو بعد از CR1 این را گرفت */

/* سبدِ دارای ردیف: هدفِ لمسی ≥ ۴۰px (جاروی Blade با سبدِ پر گرفت؛ جاروی قبلیِ Next سبدِ خالی را می‌سنجید و این‌ها را ندید) */
@media(max-width:820px){
  .qty button{inline-size:40px;block-size:40px}
  .qty span{inline-size:40px}
  .remove{min-block-size:40px;display:inline-flex;align-items:center}
  .line h2 a{display:inline-flex;align-items:center;min-block-size:40px}
}

/* ═══ فقط ویترین Blade ═══ (بعد از CSS ی Next در بسته می‌آید؛ چیزی از آن را بازنویسی نمی‌کند، فقط مارک‌آپِ Blade را می‌پوشاند)
   ویزارد: گزینه‌ها `<label>` + ورودیِ `.sr` اند (در Next `<button aria-pressed>`)؛ همان ظاهر، با حلقه‌ی فوکسِ کیبورد. */
[hidden]{display:none!important}
.lw__chip{display:inline-flex;align-items:center;padding:9px var(--space-4);border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface);color:inherit;font:inherit;font-size:var(--text-sm);cursor:pointer}
.lw__chip[aria-pressed="true"]{background:var(--ink);color:var(--ink-inverse);border-color:var(--ink)}
.lw__opt:has(input:focus-visible),.lw__chip:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}
.lw__rx[data-rx-panel] .lw__field small:empty{display:none}
/* سبد: دکمه‌های تعداد فرم‌اند (بدونِ JS هم کار می‌کنند) */
.qty form{display:contents}
.cartnote{margin:var(--space-4) 0 0;font-size:var(--text-sm)}
.cartnote--error{color:#B3261E}
/* `<picture>` ی ریسپانسیو: لفافِ بی‌اثر؛ `<img>` همان‌جا که بود چیده می‌شود */
picture{display:contents}

/* ═══════════════════════════════════════════════════════════════════════
   نسخه‌ی ارائه به مشتری — خانه (فقط Blade؛ CSS ی مشترکِ Next را نمی‌پوشاند مگر با قاعده‌ی دقیق‌تر)
   ═══════════════════════════════════════════════════════════════════════ */

/* ── هیرو: موبایلِ پرتره (عکس‌های ۲٫۸:۱ روی ۳۹۰px فقط ۱۴۰px بلند می‌شدند و برچسب و دکمه رویِ هم می‌افتادند) ── */
.hero__slide img { object-position: var(--pos, 50%) 40%; }
/* نقطه‌های هیرو: هدفِ لمس ۴۰×۳۲ (padding نامرئی)، ظاهر همان خطِ ۲۸×۳ با فاصله‌ی دیدنیِ ۶px (gap ۲ + دو padding ی ۲px)؛
   رنگ فقط به محتوا می‌چسبد (background-clip) و لبه‌ی انتهایی با margin منفی هم‌تراز می‌ماند. */
.hero__dots { gap: 2px; margin-inline-end: -2px; }
.hero__dots i:focus-visible { opacity: 1; outline-color: var(--ink-inverse); }   /* غیرفعال opacity:.4 دارد و حلقه را هم کم‌رنگ می‌کرد؛ روی عکس سفید دیده می‌شود */
.hero__dots i { box-sizing: content-box; inline-size: 28px; block-size: 3px; padding-block: 18.5px; padding-inline: 2px; background-clip: content-box; }
@media (max-width: 700px) {
  .hero__slide { aspect-ratio: 4 / 5; }
  .hero__arw { display: none; }
  .hero__foot { flex-wrap: wrap; align-items: end; gap: var(--space-3) var(--space-4); padding: var(--space-8) var(--space-4) var(--space-5); background: linear-gradient(to top, rgb(10 10 11 / .72), transparent); }
  .hero__label { flex: 1 0 100%; font-size: var(--text-md); text-wrap: balance; }
  .hero__dots { margin-inline-start: auto; align-self: center; }
}

/* ── «Choose your favorite shape»: ریلِ افقی روی کاروسلِ مشترک ── */
.shaperail { padding-block: var(--space-9) var(--space-8); }
.shaperail .carousel__track { grid-auto-columns: calc((100% - 5 * var(--space-4)) / 6); gap: var(--space-4); padding-block: 2px var(--space-4); }
.shapecard { display: grid; justify-items: center; align-content: center; gap: var(--space-3); min-block-size: 168px; padding: var(--space-6) var(--space-3) var(--space-5); background: var(--surface-sunken); border-radius: var(--radius-lg); text-align: center; transition: background 240ms var(--ease), transform 240ms var(--ease), box-shadow 240ms var(--ease); }
.shapecard svg { inline-size: min(124px, 86%); block-size: auto; color: var(--ink); transition: transform 380ms var(--ease), color 200ms var(--ease); }
.shapecard__n { font-size: var(--text-sm); font-weight: 600; }
.shapecard__c { font-size: var(--text-xs); color: var(--ink-muted); }
.shapecard:hover, .shapecard:focus-visible { background: var(--accent-quiet); transform: translateY(-3px); }
.shapecard:hover svg, .shapecard:focus-visible svg { color: var(--accent); transform: scale(1.08); }
.shapecard[aria-current="true"] { background: var(--ink); color: var(--ink-inverse); }
.shapecard[aria-current="true"] svg, .shapecard[aria-current="true"] .shapecard__c { color: var(--ink-inverse); }
@media (max-width: 1100px) { .shaperail .carousel__track { grid-auto-columns: calc((100% - 3 * var(--space-4)) / 4); } }
@media (max-width: 700px) { .shaperail .carousel__track { grid-auto-columns: calc((100% - var(--space-3)) / 2.35); gap: var(--space-3); } .shapecard { min-block-size: 148px; } }

/* ── شبکه‌ی برندها: همه‌ی ۱۹ برند؛ لوگو اگر هست، وگرنه وردمارکِ متنی ── */
.brandgrid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: var(--space-2); }
.brandcell__word { padding: var(--space-2); font-family: var(--font-display); font-size: var(--text-sm); letter-spacing: .14em; text-transform: uppercase; text-align: center; line-height: 1.25; color: var(--ink); opacity: .8; transition: color 240ms var(--ease), opacity 240ms var(--ease); }
[lang="ar"] .brandcell__word { letter-spacing: 0; text-transform: none; font-size: var(--text-md); }
.brandcell:hover .brandcell__word, .brandcell:focus-visible .brandcell__word { color: var(--ink-inverse); opacity: 1; }
@media (max-width: 700px) { .brandgrid { grid-template-columns: repeat(2, 1fr); } }

/* ── «سه عدد»: راهنمای خواندنِ اندازه با شکل (پیوند به راهنمای اندازه‌ی صفحه‌ی محصول) ── */
.fitguide { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: var(--space-8); align-items: center; padding-block: var(--space-9); }
.fitguide__fig { background: var(--surface-sunken); border-radius: var(--radius-xl); padding: var(--space-7) var(--space-6); color: var(--ink); }
.fitguide__fig svg { inline-size: 100%; block-size: auto; display: block; }
.fitguide__txt h2 { margin: var(--space-2) 0 var(--space-4); }
.fitguide__txt p { margin: 0 0 var(--space-5); color: var(--ink-muted); max-inline-size: 52ch; }
.fitguide__nums { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-3); margin: 0 0 var(--space-6); padding: 0; list-style: none; }
.fitguide__nums li { border-block-start: 2px solid var(--ink); padding-block-start: var(--space-3); }
.fitguide__nums b { display: block; font-family: var(--font-display); font-weight: 300; font-size: var(--text-3xl); line-height: 1; font-variant-numeric: lining-nums; }
.fitguide__nums span { display: block; margin-block-start: var(--space-2); font-size: var(--text-xs); color: var(--ink-muted); line-height: 1.5; }
@media (max-width: 900px) { .fitguide { grid-template-columns: 1fr; gap: var(--space-6); padding-block: var(--space-8); } }
.hero { touch-action: pan-y; }

/* ═══ فهرست (PLP) — نسخه‌ی ارائه ═══ */

/* نوارِ شکل‌ها با آیکن (فیلترِ سریع؛ چندانتخابی؛ دوباره‌زدن برش می‌دارد) */
.shapestrip { display: flex; gap: var(--space-2); overflow-x: auto; scrollbar-width: none; scroll-snap-type: x proximity; padding-block: var(--space-2) var(--space-4); }
.shapestrip::-webkit-scrollbar { display: none; }
.shapechip { flex: 0 0 auto; display: grid; justify-items: center; gap: 6px; min-inline-size: 96px; padding: var(--space-3) var(--space-3) var(--space-2); border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--surface); scroll-snap-align: start; font-size: var(--text-xs); font-weight: 600; transition: border-color 200ms var(--ease), background 200ms var(--ease), color 200ms var(--ease); }
.shapechip svg { inline-size: 66px; block-size: auto; color: var(--ink); }
.shapechip:hover { border-color: var(--ink); }
.shapechip[aria-current="true"] { background: var(--ink); border-color: var(--ink); color: var(--ink-inverse); }
.shapechip[aria-current="true"] svg { color: var(--ink-inverse); }
@media (min-width: 1100px) { .shapestrip { flex-wrap: wrap; overflow: visible; } }

/* فیلترهای فعال */
.activechips { display: flex; flex-wrap: wrap; gap: var(--space-2); padding-block: var(--space-3) var(--space-1); }
.achip { display: inline-flex; align-items: center; gap: 8px; padding: 6px 10px 6px 14px; border: 1px solid var(--line-strong); border-radius: var(--radius-pill); font-size: var(--text-xs); font-weight: 600; line-height: 1.3; transition: background 160ms var(--ease), color 160ms var(--ease); }
[dir="rtl"] .achip { padding: 6px 14px 6px 10px; }
.achip svg { inline-size: 12px; block-size: 12px; opacity: .65; }
.achip:hover { background: var(--ink); color: var(--ink-inverse); border-color: var(--ink); }
.achip:hover svg { opacity: 1; }
.achip--clear { border-color: transparent; padding-inline: var(--space-2); text-decoration: underline; text-underline-offset: 3px; color: var(--ink-muted); }
.achip--clear:hover { background: none; color: var(--accent); border-color: transparent; }

/* دکمه‌ی ۱/۲ ستون (فقط گوشی) */
.viewtoggle { display: none; gap: 2px; margin-inline-start: auto; }
.viewtoggle button { inline-size: 40px; block-size: 40px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); color: var(--ink-muted); cursor: pointer; }
.viewtoggle button svg { inline-size: 18px; block-size: 18px; }
.viewtoggle button[aria-pressed="true"] { background: var(--ink); border-color: var(--ink); color: var(--ink-inverse); }
.toolbar .viewtoggle + .sortby { margin-inline-start: var(--space-3); }

/* شماره‌ی صفحه */
.pager--n { align-items: center; gap: var(--space-2); padding-block-end: var(--space-3); }
.pager__a { display: inline-grid; place-items: center; min-inline-size: 42px; block-size: 42px; padding-inline: var(--space-2); border: 1px solid var(--line); border-radius: var(--radius-sm); font-size: var(--text-sm); font-weight: 600; transition: background 160ms var(--ease), color 160ms var(--ease), border-color 160ms var(--ease); }
a.pager__a:hover { border-color: var(--ink); }
.pager__a[aria-current="page"] { background: var(--ink); border-color: var(--ink); color: var(--ink-inverse); }
.pager__a--prev svg { transform: scaleX(-1); }
[dir="rtl"] .pager__a--prev svg { transform: none; }
[dir="rtl"] .pager__a--next svg { transform: scaleX(-1); }
.pager__gap { padding-inline: 2px; color: var(--ink-muted); }
.pager__info { text-align: center; margin: 0 0 var(--space-8); }

/* ۷۰۱–۹۰۰: کفِ ستونِ ۳۶۰px (optiview.css) در کانتینرِ ≈۷۰۵px (۷۶۸) فقط یک ستون جا می‌داد ← کارتِ غول‌پیکر و صفحه‌ی ۱۸٬۶۰۰px. دو ستون
   (دسکتاپ بدونِ تغییر؛ ≤۷۰۰ را قاعده‌ی پایین می‌سازد). */
@media (min-width: 701px) and (max-width: 900px) {
  .grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* گوشی: شبکه‌ی دوستونه (پیش‌فرض) یا یک‌ستونه؛ انتخاب در localStorage و `html[data-grid]` */
@media (max-width: 700px) {
  .viewtoggle { display: flex; }
  [data-plp] .grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-6) var(--space-3); }
  html[data-grid="1"] [data-plp] .grid { grid-template-columns: 1fr; gap: var(--space-8) var(--space-6); }
  html:not([data-grid="1"]) [data-plp] .card__cta { display: none; }
  html:not([data-grid="1"]) [data-plp] .card__badge { font-size: 10px; padding: 3px 8px; inset-block-start: 6px; inset-inline-start: 6px; }
  html:not([data-grid="1"]) [data-plp] .card__body { padding-inline: 2px; }
  html:not([data-grid="1"]) [data-plp] .ways { display: none; } /* ۵ نقطه‌ی ۴۰px در کارتِ ۱۵۰px جا نمی‌شود؛ رنگ‌ها را «N colours» و PDP می‌گویند */
  html:not([data-grid="1"]) [data-plp] .t-title { font-size: var(--text-sm); }
  html:not([data-grid="1"]) [data-plp] .t-price { font-size: var(--text-sm); }
  .toolbar .t-meta { display: none; }
}

/* گروهِ «Frame shape» در کشوی فیلتر: چیپِ دارای آیکن */
.fchips--shapes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2); }
.fchip--shape { display: grid; justify-items: center; gap: 6px; padding: var(--space-3) var(--space-2) var(--space-2); }
.fchip--shape svg.shapeico { inline-size: 70px; block-size: auto; color: var(--ink); }
.fchip--shape .tick { display: none; }
.fchip--shape:has(input:checked) { background: var(--ink); color: var(--ink-inverse); border-color: var(--ink); }
.fchip--shape:has(input:checked) svg.shapeico { color: var(--ink-inverse); }
.fchip--shape .n { opacity: .6; }

/* ═══ صفحه‌ی محصول — نسخه‌ی ارائه ═══ */

/* گالری: ستونِ بندانگشتی + عکسِ اصلیِ بزرگ (دسکتاپ)؛ عکسِ اصلی + ردیفِ بندانگشتی (موبایل). `[data-gallery]` تا اسکلتِ مشترک نخورد. */
.pdp__gal[data-gallery] { display: grid; grid-template-columns: 88px minmax(0, 1fr); grid-template-areas: "thumbs stage"; gap: var(--space-3); align-items: start; }
.pdp__stage { grid-area: stage; position: relative; aspect-ratio: 3 / 2; background: var(--surface-sunken); border-radius: var(--radius-lg); overflow: hidden; }
.pdp__zoom { position: absolute; inset: 0; display: grid; place-items: center; padding: 0; border: 0; background: none; cursor: zoom-in; color: inherit; }
.pdp__lead { display: contents; }
.pdp__zoom img { inline-size: 100%; block-size: 100%; object-fit: contain; padding: var(--space-5); transition: transform 600ms var(--ease); }
.pdp__zoom:hover img { transform: scale(1.04); }
.pdp__zoomicon { position: absolute; inset-block-end: 14px; inset-inline-end: 14px; inline-size: 34px; block-size: 34px; padding: 7px; border-radius: 50%; background: rgb(255 255 255 / .85); color: var(--ink); box-shadow: 0 1px 6px rgb(0 0 0 / .12); }
.pdp__nav { position: absolute; inset-block-start: 50%; translate: 0 -50%; inline-size: 42px; block-size: 42px; display: grid; place-items: center; padding: 0; border: 1px solid var(--line); border-radius: 50%; background: rgb(255 255 255 / .92); color: var(--ink); cursor: pointer; z-index: 2; transition: background 160ms var(--ease), transform 160ms var(--ease); }
.pdp__nav:hover { background: var(--surface); transform: scale(1.06); }
.pdp__nav svg { inline-size: 20px; block-size: 20px; }
.pdp__nav--prev { inset-inline-start: 12px; }
.pdp__nav--next { inset-inline-end: 12px; }
/* پیکانِ «قبلی» در مارک‌آپ به چپ و «بعدی» به راست است؛ در RTL هر دو برعکس می‌شوند */
[dir="rtl"] .pdp__nav svg { transform: scaleX(-1); }
.pdp__count { position: absolute; inset-block-end: 14px; inset-inline-start: 14px; padding: 3px 12px; border-radius: var(--radius-pill); background: rgb(255 255 255 / .85); font-size: var(--text-xs); font-weight: 600; z-index: 2; }
.pdp__thumbs { grid-area: thumbs; display: flex; flex-direction: column; gap: var(--space-2); }
.pdp__thumb { inline-size: 88px; aspect-ratio: 3 / 2; padding: 0; overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface-sunken); cursor: pointer; transition: border-color 160ms var(--ease), box-shadow 160ms var(--ease); }
.pdp__thumb img { inline-size: 100%; block-size: 100%; object-fit: contain; padding: 4px; }
.pdp__thumb:hover { border-color: var(--line-strong); }
.pdp__thumb[aria-current="true"] { border-color: var(--ink); box-shadow: 0 0 0 1px var(--ink); }
@media (max-width: 980px) {
  .pdp__gal[data-gallery] { grid-template-columns: minmax(0, 1fr); grid-template-areas: "stage" "thumbs"; }
  .pdp__thumbs { flex-direction: row; overflow-x: auto; scrollbar-width: none; }
  .pdp__thumbs::-webkit-scrollbar { display: none; }
  .pdp__thumb { flex: 0 0 96px; inline-size: 96px; }
  .pdp__nav { inline-size: 44px; block-size: 44px; }
  .buy__brand { display: inline-flex; align-items: center; min-block-size: 40px; }
  .achip { min-block-size: 40px; }
}

/* بزرگ‌نمایی */
.lb { position: fixed; inset: 0; z-index: 90; display: grid; place-items: center; padding: var(--space-5); background: rgb(10 10 11 / .86); animation: lb-in 160ms var(--ease); }
@keyframes lb-in { from { opacity: 0; } to { opacity: 1; } }
.lb__panel { inline-size: min(940px, 92vw); max-block-size: 100%; padding: var(--space-6); border-radius: var(--radius-xl); background: var(--surface); display: grid; place-items: center; }
.lb__img { inline-size: 100%; block-size: auto; max-block-size: calc(100vh - 140px); object-fit: contain; }
.lb__x, .lb__nav { position: absolute; inline-size: 46px; block-size: 46px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 50%; background: rgb(255 255 255 / .94); color: var(--ink); cursor: pointer; font-size: 26px; line-height: 1; }
.lb__x { inset-block-start: 18px; inset-inline-end: 18px; }
.lb__nav { inset-block-start: 50%; translate: 0 -50%; }
.lb__nav svg { inline-size: 22px; block-size: 22px; }
.lb__nav--prev { inset-inline-start: 18px; } .lb__nav--next { inset-inline-end: 18px; }
.lb__nav--prev svg { transform: scaleX(-1); }
[dir="rtl"] .lb__nav--prev svg { transform: none; } [dir="rtl"] .lb__nav--next svg { transform: scaleX(-1); }
.lb__count { position: absolute; inset-block-end: 22px; inset-inline: 0; text-align: center; color: #fff; font-size: var(--text-sm); }
@media (prefers-reduced-motion: reduce) { .lb { animation: none; } }

/* بالای جعبه‌ی خرید: برند + اشتراک؛ زیرعنوان با آیکنِ شکل؛ نامِ رنگ */
.buy__top { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }
.buy__brand { font-size: var(--text-md); }
.buy__brand:hover { text-decoration: underline; text-underline-offset: 4px; }
.buy__share { inline-size: 40px; block-size: 40px; display: grid; place-items: center; padding: 0; border: 1px solid var(--line); border-radius: 50%; background: var(--surface); color: var(--ink); cursor: pointer; transition: border-color 160ms var(--ease); }
.buy__share:hover { border-color: var(--ink); }
.buy__share svg { inline-size: 18px; block-size: 18px; }
.buy__sub { margin: 0 0 var(--space-3); display: flex; flex-wrap: wrap; align-items: center; gap: 6px; color: var(--ink-muted); font-size: var(--text-sm); }
.buy__shape { display: inline-flex; align-items: center; gap: 8px; color: var(--ink); }
.buy__shape svg { inline-size: 40px; block-size: auto; }
.buy__code b { color: var(--ink); font-weight: 600; }
.buy__code .num { margin-inline-start: 6px; }

/* وعده‌ی تحویل */
.delivery { display: flex; align-items: flex-start; gap: var(--space-3); padding: var(--space-4); margin-block-start: var(--space-5); border: 1px solid var(--line); border-radius: var(--radius-md); }
.delivery svg { flex: none; margin-block-start: 2px; color: var(--accent); }
.delivery b { display: block; font-size: var(--text-sm); }
.delivery span { font-size: var(--text-xs); color: var(--ink-muted); line-height: 1.6; }

/* راهنمای اندازه */
.sizeguide { display: grid; grid-template-columns: minmax(0, 280px) minmax(0, 1fr); gap: var(--space-7); align-items: start; }
.sizeguide__fig { background: var(--surface-sunken); border-radius: var(--radius-lg); padding: var(--space-5); color: var(--ink); }
.sizeguide__fig svg { inline-size: 100%; block-size: auto; display: block; }
.sizeguide__this { padding: var(--space-3) var(--space-4); background: var(--accent-quiet); border-radius: var(--radius-md); color: var(--ink); margin-block-end: var(--space-5); }
.sizeguide h3 { margin: var(--space-6) 0 var(--space-2); font-size: var(--text-sm); color: var(--ink); }
.sizeguide__steps { margin: 0; padding-inline-start: 20px; display: grid; gap: var(--space-2); }
@media (max-width: 760px) { .sizeguide { grid-template-columns: minmax(0, 1fr); gap: var(--space-5); } }

/* نوارِ چسبانِ «Add to bag» (گوشی) */
.stickybuy { position: fixed; inset-inline: 0; inset-block-end: 0; z-index: 35; display: none; align-items: center; gap: var(--space-4); padding: var(--space-3) var(--space-4) calc(var(--space-3) + env(safe-area-inset-bottom)); background: var(--surface); border-block-start: 1px solid var(--line); box-shadow: 0 -10px 28px rgb(10 10 11 / .1); }
.stickybuy__info { display: grid; line-height: 1.3; min-inline-size: 0; }
.stickybuy__info > span { font-size: var(--text-xs); color: var(--ink-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.stickybuy .btn { margin-inline-start: auto; flex: 0 0 auto; padding-inline: var(--space-6); }
@media (max-width: 980px) { .stickybuy:not([hidden]) { display: flex; } }

/* پیامِ کوتاه (کپیِ پیوند) */
.toast { position: fixed; inset-inline: 0; inset-block-end: calc(var(--space-6) + env(safe-area-inset-bottom)); margin-inline: auto; inline-size: max-content; max-inline-size: 90vw; padding: 10px var(--space-5); border-radius: var(--radius-pill); background: var(--ink); color: var(--ink-inverse); font-size: var(--text-sm); z-index: 95; box-shadow: 0 8px 24px rgb(0 0 0 / .25); }

/* نوارِ تب‌ها روی گوشی: اسکرولِ افقیِ نرم */
.details__tabs { scroll-snap-type: x proximity; }
.details__tabs button { scroll-snap-align: start; }

/* نکته‌های محصول زیرِ توضیح: شکل (با آیکن)، مقاس، اصالت */
.highlights { list-style: none; margin: var(--space-6) 0 0; padding: 0; display: grid; gap: var(--space-4); max-inline-size: 70ch; }
.highlights li { display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: var(--space-4); align-items: center; padding: var(--space-3) var(--space-4); background: var(--surface-sunken); border-radius: var(--radius-md); color: var(--ink-muted); }
.highlights svg { inline-size: 30px; block-size: 30px; justify-self: center; color: var(--ink); }
.highlights svg.shapeico { inline-size: 52px; block-size: auto; }
.highlights b { color: var(--ink); font-weight: 600; }

[data-plp] .grid > * { min-inline-size: 0; }

/* عکسِ شکل (Yateem) در ریلِ خانه: همه یک پهنای دیداری؛ ارتفاع از نسبتِ خودشان. */
.shapecard__img { inline-size: min(124px, 80%); block-size: auto; max-block-size: 58px; object-fit: contain; transition: transform 380ms var(--ease); }
.shapecard:hover .shapecard__img, .shapecard:focus-visible .shapecard__img { transform: scale(1.08); }
.shapecard__box { display: grid; place-items: center; inline-size: 100%; block-size: 62px; }

/* قسط: لوگوی رسمیِ Tabby (نعنایی) و Tamara (گرادیان) به‌جای دو برچسبِ متنی — همان ظاهرِ dubaioptical */
.bnpl__logo { vertical-align: middle; flex: none; }
.bnpl__logo--tabby, .bnpl__logo--tamara { block-size: 24px; inline-size: auto; } /* هر دو هم‌قدِ دیداری (Tabby را به خودِ نشان برش داده‌ایم) */

/* سبد (ادغامِ موج ۱): «إزالة» در عربی ۲۲px عرض داشت (هدفِ لمسی < ۳۲)؛ با سبدِ پُر دیده شد (ماتریس).
   Q4 (جاروبِ ۲۲ عرض): همان ۲۲px در ۸۲۰px (iPad Air عمودی) هم بود ← تا ۱۰۲۴px و روی هر نشانگرِ لمسی. */
@media (max-width: 1024px), (pointer: coarse) { .remove { min-inline-size: 44px; justify-content: flex-start; } }

/* فوتر: لینک‌های حقوقی داخلِ .footer__base (که خودش opacity .5 دارد) دوباره کم‌رنگ نشوند — .6×.5 تباینِ ۲٫۶۶ می‌داد (WCAG 1.4.3) */
.footer__base a { opacity: 1; text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgb(255 255 255 / .35); }
.footer__base a:hover, .footer__base a:focus-visible { color: inherit; text-decoration-color: currentColor; }   /* hover: نه برنج (روی opacity .5 تباین ۲٫۱) — همان رنگ + زیرخط */

/* نوارِ چسبانِ خرید (≤۹۸۰) آخرین ردیفِ فوتر (لینک‌های حقوقی) را نپوشاند: صفحه به‌اندازه‌ی نوار پایین‌تر می‌رود تا فوکسِ کیبورد دیده شود */
@media (max-width: 980px) { body:has(.stickybuy:not([hidden])) { padding-block-end: calc(76px + env(safe-area-inset-bottom, 0px)); } }

/* رنگ قاب (PDP): عکس داخلِ <picture> است (inline) و block-size:100% ی img کار نمی‌کرد ← عکس بالا/پایین وسط نبود. */
.colors button { padding: 4px; }
.colors button picture { display: contents; }   /* <source> ها ردیفِ گرید می‌ساختند (۳ ردیف) و عکس را پایین می‌بردند؛ img مستقیماً عضوِ گریدِ دکمه (وسط‌چین) می‌شود */
.colors button img { display: block; inline-size: auto; max-inline-size: 100%; block-size: auto; max-block-size: 100%; }

/* ویزاردِ عدسی — فیلدهای نسخه: علامتِ ±، راهنمای بازه، حالتِ درست */
.lw__row { grid-template-columns: repeat(auto-fit, minmax(128px, 1fr)); }
.lw__num { display: flex; align-items: stretch; direction: ltr; }   /* عددِ نسخه همیشه LTR است: علامت چپِ عدد، در عربی هم */
.lw__num input { min-inline-size: 0; border-radius: 0 var(--radius-sm) var(--radius-sm) 0; }
.lw__sign { flex: none; inline-size: 40px; border: 1px solid var(--line); border-right: 0; border-radius: var(--radius-sm) 0 0 var(--radius-sm); background: var(--surface-sunken); color: var(--ink); font: inherit; font-size: var(--text-md); font-weight: 700; cursor: pointer; transition: background 160ms var(--ease); }
.lw__sign:hover { background: var(--accent-quiet); }
.lw__sign:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; position: relative; }
.lw__field input[data-valid] { border-color: #1f7a4d; }
.lw__field input[aria-invalid="true"] { border-color: #B3261E; box-shadow: 0 0 0 1px #B3261E; }
.lw__field small { line-height: 1.35; min-block-size: 1.35em; }
.lw__field input[aria-invalid="true"] ~ small, .lw__num:has(input[aria-invalid="true"]) ~ small { color: #B3261E; font-weight: 600; }
.lw__total .lw__neg { color: #1f7a4d; }
.lw__total details { margin-block-start: var(--space-2); }
.lw__total details ul { list-style: none; margin: var(--space-2) 0 0; padding: 0; display: grid; gap: 6px; }
.lw__total details li { display: flex; justify-content: space-between; gap: var(--space-4); }
picture > source { display: none; }   /* مرورگر پیش‌فرض none است؛ ولی داخلِ گرید/فلکس ردیف می‌ساخت (reset ی سراسری) */

/* هدفِ لمسیِ فوتر در موبایل: لینک‌های ستون‌ها ۳۶px و لینک‌های حقوقی ≈۱۵px بودند (جاروبِ ریسپانسیو: < ۴۰). ≥ ۴۴px با همان فاصله‌ی دیداری. */
@media (max-width: 700px), (pointer: coarse) {
  html .footer__cols li > a, html .footer__base a { display: inline-flex; align-items: center; min-block-size: 44px; }   /* `html` ابتدا: قاعده‌ی ۳۶px ی پایین‌تر هم‌ویژگی است */
}

/* هدفِ لمسیِ ≥۴۴px در موبایل/تبلت: دکمه‌ی توقفِ هیرو (۳۶) و برچسبِ کمپینِ PDP (۳۶) */
@media (max-width: 980px), (pointer: coarse) {
  html .hero__pause { inline-size: 44px; block-size: 44px; }
  html .cmp-pdp { min-block-size: 44px; }
}

/* عکسِ شکسته: بدونِ آیکن/متنِ alt؛ پس‌زمینه‌ی قاب می‌ماند (theme.js علامت می‌زند) */
img[data-broken] { visibility: hidden; }

/* ═══════════════════════════════════════════════════════════════════════
   دسترس‌پذیریِ دستی (T10 / Q2) — `docs/design/optiview/a11y.md`. فقط ویژگی‌های منطقی (RTL رایگان)؛ توکن‌ها از CSS ی مشترک.
   ترتیبِ ساخت (build.mjs: به ترتیبِ نام): بعد از blade.css و پیش از campaign/checkout…؛ قاعده‌های این‌جا یا تازه‌اند یا با ویژگی‌ای که
   هیچ‌جای دیگر نیست؛ هر جا مجبور به بازنویسی شدیم دلیلش کنارش آمده.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── کارت: نقطه‌های رنگ خواهرِ لینک (تعاملِ تودرتو نبود) ──────────────────────
   `.card__foot` همان‌جایی می‌نشیند که پایینِ بدنه‌ی کارت بود (بعد از ردیفِ قیمت)، پس ظاهر (نقطه‌ی ۱۴px، هدفِ ۴۰px در ≤۸۲۰ از blade/optiview.css،
   «Shop now») دست‌نخورده است. «Shop now» ی بیرونِ لینک یک `<a aria-hidden tabindex=-1>` ی تکراری برای ماوس است ← قاعده‌ی `a.card__cta` ی
   موبایل (`display:inline-flex; min-block-size:40px` برای CTA ی سرخیِ خانه) نباید به آن بچسبد. */
.card__foot { text-align: center; }
.card__foot a.card__cta { display: inline-block; min-block-size: 0; color: inherit; text-decoration: none; }

/* ── نقطه‌های رنگ در دسکتاپ: خودِ دکمه ۲۴×۲۴ (WCAG 2.5.8)؛ ظاهر همان نقطه‌ی ۱۴px ──────────────────────
   ⚠️ ناحیه‌ی نامرئیِ `::after{inset:-5px}` در محاسبه‌ی axe/Lighthouse نمی‌آید (فقط جعبه‌ی خودِ عنصر) ← `target-size` در Lighthouse ی desktop
   می‌افتاد (امتیازِ ۹۶–۹۷). همان الگوی موبایل (optiview.css ≤۸۲۰: جعبه‌ی ۴۰px + نقطه‌ی `::before`) با جعبه‌ی ۲۴px: گام ۲۴px
   (نه ۲۱) تا هدف‌ها هم‌پوشانی نداشته باشند. (≤۸۲۰ را optiview.css می‌سازد.) */
@media (min-width: 821px) {
  .ways { gap: 0; }
  .ways button { inline-size: 24px; block-size: 24px; position: relative; background: none !important; box-shadow: none !important; border-radius: 0; }
  .ways button::before { content: ""; position: absolute; inset: 5px; border-radius: 99px; background: var(--dot); box-shadow: 0 0 0 1px var(--line-strong) inset; }
  .ways button[aria-pressed="true"]::before { box-shadow: 0 0 0 1.5px var(--surface) inset, 0 0 0 2px var(--ink); }
}

/* ── فوکس زیرِ عنصرِ ثابت نمی‌رود (WCAG 2.4.11) ───────────────────────────────
   هدرِ چسبان بالا را می‌پوشاند و دکمه‌ی چت/نوارِ خریدِ PDP/نوارِ تسویه پایین را؛ مرورگر عنصرِ فوکس‌شده را تا لبه‌ی دید می‌برد، یعنی زیرِ آن‌ها.
   `scroll-margin` (نه `scroll-padding` ی html: لنگرهای #… مثلِ `.rv` از قبل `scroll-margin` ی خودشان را دارند و دوبار جبران می‌شد).
   ⚠️ عنصرهایی که خودشان در لایه‌ی ثابت/چسبان‌اند مستثنا: قاعده برایشان «نامرئی» می‌شود و مرورگر بیهوده اسکرول می‌کرد. */
:root { --focus-clear-top: calc(var(--header-h, 70px) + var(--space-3)); --focus-clear-bottom: 144px; }   /* دکمه‌ی چت ۸۰px بالاتر از لبه است (۴۸px قد) ← ۱۲۸px پایین پوشیده است */
@media (max-width: 980px) { body:has(.stickybuy:not([hidden])) { --focus-clear-bottom: 156px; } }
@media (max-width: 899px) { body:has(.co-cta:not(.co-cta--inline)) { --focus-clear-bottom: 144px; } }
:where(a[href], button, input:not([type="hidden"]), select, textarea, summary, [tabindex]:not([tabindex="-1"]), [role="button"], [role="tab"]):where(:not(:is(.header, .topbar, .drawer, .ovl, .lb, .lw-modal, .stickybuy, .co-cta, .skip, .ovl-fab) *, .skip, .ovl-fab)) {
  scroll-margin-block: var(--focus-clear-top) var(--focus-clear-bottom);
}

/* ── PDP: ترتیبِ DOM = ترتیبِ دیداری ───────────────────────────────────────────────
   DOM حالا «گالری ← خرید ← جزئیات» است (موبایل همین بود و با `order` ساخته می‌شد ← Tab روی تب‌های جزئیات می‌رفت پیش از خرید، WCAG 2.4.3).
   موبایل: `order` لازم نیست (۰). دسکتاپ (≥۹۸۱): همان دو ستونِ پیشین با grid-areas — گالری و جزئیات ستونِ ۱ (ردیفِ ۱ و ۲)، خرید ستونِ ۲ روی هر دو ردیف
   (چسبان می‌ماند). `1fr` ی ردیفِ دوم: اگر ستونِ خرید بلندتر از گالری+جزئیات بود، اضافه به ردیفِ جزئیات برسد نه گالری؛ فاصله‌ی دو ردیف ۰ (جزئیات
   `margin-block-start` ی خودش را دارد، مثلِ قبل). */
@media (max-width: 980px) { .pdp__gal, .buy, .details { order: 0; } }
@media (min-width: 981px) {
  .pdp { grid-template-rows: auto 1fr; row-gap: 0; }
  .pdp__gal { grid-column: 1; grid-row: 1; }
  .details { grid-column: 1; grid-row: 2; }
  .buy { grid-column: 2; grid-row: 1 / span 2; }
}

/* ── حلقه‌ی فوکس روی نوارِ برنجیِ اعلان ─────────────────────────────────────────
   حلقه‌ی عمومی (`:focus-visible{outline:2px solid var(--accent)}`) رنگش با پس‌زمینه‌ی نوار (`--accent`) یکی بود ← ۱٫۰۰:۱، نامرئی. مرکبِ تیره روی برنج ۵٫۰:۱. */
.announce :focus-visible { outline-color: var(--accent-ink); }

/* ── اندازه‌ی ناموجود (disabled): `opacity:.4` روی `--ink-muted` نسبتِ ≈۱٫۴:۱ می‌داد (خوانده نمی‌شد) ────────────
   حالا متنِ `--ink-muted` با اپاسیتیِ کامل (۶٫۱:۱ روی زمینه‌ی فرورفته) + خطِ‌خورده + مرزِ خط‌چین + `not-allowed`؛ از اندازه‌ی فعال هنوز تمایز دارد. */
.sizes button[disabled] { opacity: 1; color: var(--ink-muted); background: var(--surface-sunken); border-style: dashed; }

/* ── فوکسِ سلولِ برند: متنِ سفید روی زمینه‌ی روشن ─────────────────────────────────
   `.brandcell:hover` زمینه را مرکب (`--ink`) می‌کند ولی `:focus-visible` فقط رنگِ نامِ برند را سفید می‌کرد (`.brandcell__word`) ← سفید روی
   `--surface-sunken` ≈ ۱٫۱:۱ و نام با کیبورد ناپدید می‌شد. فوکس همان حالتِ هاور را می‌گیرد. */
.brandcell:focus-visible { background: var(--ink); }
.brandcell:focus-visible img { opacity: 1; filter: invert(1); transform: scale(1.06); }

/* ── فوکسِ برنامه‌ایِ تیتر/main (ناوبریِ Turbo): عنصرِ تعاملی نیستند ← حلقه نمی‌خواهند ── */
:is(h1, main)[tabindex="-1"]:focus, :is(h1, main)[tabindex="-1"]:focus-visible { outline: none; }

/* ── R6: دکمه‌ی شناورِ چت در موبایل روی سبد/تسویه/سفارش ─────────────────────────
   روی مبلغِ جمع و دکمه‌ی اصلی می‌افتاد (در صفحه‌ی کوتاه «بالاتر نشستن» هم به ارتفاعِ محتوا وابسته است) ← پنهان (از Tab و درختِ دسترس‌پذیری هم بیرون).
   `data-quiet` را `ov-overlays` از مسیرِ درخواست می‌گذارد. دسکتاپ و صفحه‌های دیگر بدونِ تغییر. */
@media (max-width: 768px) { .ovl-fab[data-quiet] { display: none; } }

/* ── حرکتِ کمتر: شبکه‌ی ایمنی ──────────────────────────────────────────────────
   قاعده‌های هر قابلیت خودشان پشتِ `no-preference` یا `reduce` اند؛ این‌جا اگر چیزی جا ماند (یا قابلیتِ بعدی فراموش کرد) هیچ انیمیشن/انتقالِ
   قابلِ دیدن نمی‌ماند. ۰٫۰۱ms (نه none) تا `transitionend`/`animationend` ی JS هنوز بیاید. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
    animation-delay: 0s !important;
    transition-delay: 0s !important;
  }
}

/* ═══ موج ۳ — رفعِ بازبینی (A11Y-01…12) ═══════════════════════════════════════════════════════════════════════════ */

/* ── A11Y-01: لینکِ کارت حلقه‌ی فوکس می‌خواهد ────────────────────────────────────────────────────────────────
   `a.card` اینلاینِ حاویِ بلاک بود (`<a>` ← `.card__media` div)؛ مرورگر برای چنین اینلاینی outline نمی‌کشد (computed «2px solid» ولی بی‌پیکسل).
   بلاک‌کردن چیدمان را عوض نمی‌کند (فرزندِ بلاکِ `.cardbox` و محتوایش همه بلاک‌اند). */
a.card { display: block; }

/* ── A11Y-02: دکمه‌ی «Zoom image» ی گالری: حلقه‌ی بیرونی زیرِ `.pdp__stage{overflow:hidden}` بریده می‌شد ← حلقه‌ی درونی ── */
.pdp__zoom:focus-visible { outline-offset: -4px; }

/* ── A11Y-10: دکمه‌های روی عکس (فلشِ هیرو، فلشِ گالری): حلقه‌ی برنجیِ تکی روی عکس ۱٫۷–۲٫۷:۱ بود (< ۳:۱) ← دولایه
   (باندِ سفید + خطِ تیره): هر پس‌زمینه‌ای باشد یکی از دو لایه با آن ≥ ۳:۱ است. */
:is(.hero__arw, .pdp__nav, .hero__pause):focus-visible { outline: 2px solid var(--ink); outline-offset: 4px; box-shadow: 0 0 0 4px #fff; }

/* ── A11Y-03: گروه‌های بسته‌ی فیلتر از Tab و صفحه‌خوان بیرون‌اند ─────────────────────────────────────────────────
   `grid-template-rows:0fr` + `overflow:hidden` فقط ظاهر را جمع می‌کرد (≈۵۰ ایستگاهِ Tab ی نامرئی). `visibility:hidden` هم از Tab و هم از درختِ
   دسترس‌پذیری بیرون می‌برد؛ با تأخیرِ هم‌اندازه‌ی جمع‌شدن (۳۰۰ms) تا انیمیشنِ بستن دیده شود، و باز شدن فوری. حرکتِ کمتر: تأخیر صفر (شبکه‌ی ایمنیِ پایین). */
.fgroup:not([data-open]) .fgroup__b { visibility: hidden; transition: grid-template-rows 300ms var(--ease), opacity 220ms var(--ease), visibility 0s linear 300ms; }

/* ── A11Y-04: حالتِ hover ی متن با برنج (۳٫۷۷:۱ روی سفید) زیرِ ۴٫۵:۱ بود ← رنگِ متن `--ink` + زیرخط (نشانه‌ی hover دیگر فقط رنگ نیست).
   ⚠️ `html` ابتدای انتخابگر: `account.css` پس از این فایل می‌آید (ترتیبِ نام) و هم‌ویژگی است. */
html .sechead .more:hover, html .accq__h:hover, html .acct-back a:hover, html .acct-link:hover, html .acct-faqitem > summary:hover, html .achip--clear:hover {
  color: var(--ink); text-decoration: underline; text-underline-offset: 3px;
}

/* ── A11Y-05: پیوندهای فوتر در ≤۷۶۸ اینلاین ۱۷px بودند (Global Constraints: ≥ ۳۶px) ───────────────────────────── */
@media (max-width: 768px) {
  .footer li a { display: inline-flex; align-items: center; min-block-size: 36px; }
}

/* ── A11Y-07: «در حالِ افزودن» با `aria-disabled` (فوکس نمی‌پرد)؛ ظاهر مثلِ غیرفعال، بدونِ اشاره‌گرِ کلیک ── */
.btn[aria-disabled="true"] { opacity: .7; cursor: progress; }

/* ── A11Y-12: دکمه‌ی توقفِ چرخشِ خودکارِ هیرو (WCAG 2.2.2) — دایره‌ی نیمه‌شفاف روی گرادیانِ تیره‌ی پایینِ عکس؛ هدف ۳۶px (≤۷۶۸: ۴۰px) ── */
.hero__pause { align-self: center; display: grid; place-items: center; inline-size: 36px; block-size: 36px; margin-inline-end: var(--space-3); padding: 0; border: 1px solid rgb(255 255 255 / .75); border-radius: 50%; background: rgb(10 10 11 / .5); color: var(--ink-inverse); cursor: pointer; }
.hero__pause[hidden] { display: none; }
.hero__pause:hover { background: rgb(10 10 11 / .75); }
.hero__pause svg { inline-size: 14px; block-size: 14px; }
.hero__pause .i-play, .hero__pause[data-paused] .i-pause { display: none; }
.hero__pause[data-paused] .i-play { display: block; }
@media (max-width: 768px) { .hero__pause { inline-size: 40px; block-size: 40px; } }

/* ═══ حساب مشتری، FAQ، صفحه‌ی عمومی، راهنماها (T2) — پیشوندِ `acct-` تا با قابلیت‌های دیگر (یک بسته) تداخل نکند ═══
   فقط ویژگی‌های منطقی؛ توکن‌های مشترک؛ هدفِ لمسی دکمه/فیلد ≥۴۰px. */

/* ── چیدمانِ حساب: ناو + محتوا ── */
.acct { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: var(--space-7); padding-block: var(--space-7) var(--space-9); align-items: start; }
.acct__title { margin: 0 0 var(--space-5); }
.acct__main { min-inline-size: 0; max-inline-size: 860px; }
.acct-h2 { font-family: var(--font-display); font-weight: 400; font-size: var(--text-xl); margin: var(--space-7) 0 var(--space-4); }
.acct-back { margin: 0 0 var(--space-3); font-size: var(--text-sm); }
.acct-back a, .acct-link { text-decoration: underline; text-underline-offset: 3px; }
.acct-back a:hover, .acct-link:hover { color: var(--accent); }
.acct-who { margin: 0 0 var(--space-6); display: flex; gap: var(--space-2); flex-wrap: wrap; align-items: baseline; }

.acct-nav { position: sticky; inset-block-start: calc(var(--header-h) + var(--space-5)); }
.acct-nav ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.acct-nav a, .acct-nav__out { display: flex; align-items: center; min-block-size: 44px; padding-inline: var(--space-4); border-radius: var(--radius-sm); font-size: var(--text-sm); font-weight: 500; inline-size: 100%; text-align: start; transition: background 160ms var(--ease), color 160ms var(--ease); }
.acct-nav a:hover, .acct-nav__out:hover { background: var(--surface-sunken); }
.acct-nav a[aria-current="page"] { background: var(--ink); color: var(--ink-inverse); }
.acct-nav__out { color: var(--ink-muted); }

/* ── پیام‌ها ── */
.acct-note { margin: 0 0 var(--space-5); padding: var(--space-3) var(--space-4); border-radius: var(--radius-sm); background: var(--surface-sunken); font-size: var(--text-sm); border-inline-start: 3px solid var(--ok); }
.acct-note--error { border-inline-start-color: var(--danger); background: color-mix(in srgb, var(--danger) 8%, var(--surface)); color: var(--ink); }
.acct-note:focus { outline: 2px solid var(--accent); outline-offset: 2px; }

/* ── فرم‌ها ── */
.acct-form { display: grid; gap: var(--space-4); margin-block: var(--space-4); }
.acct-field { display: grid; gap: 6px; }
.acct-field label { font-size: var(--text-sm); font-weight: 600; }
.acct-field small { font-size: var(--text-xs); color: var(--ink-muted); }
.acct-field input, .acct-field select, .acct-field textarea, .acct-qty input {
  inline-size: 100%; min-block-size: 48px; padding: 10px var(--space-4); border: 1px solid var(--line-strong); border-radius: var(--radius-sm); background: var(--surface); color: inherit; font: inherit; font-size: 16px;
}
.acct-field textarea { min-block-size: 96px; resize: vertical; }
.acct-field input:focus-visible, .acct-field select:focus-visible, .acct-field textarea:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.acct-field input[aria-invalid="true"] { border-color: var(--danger); }
.acct-code { letter-spacing: .35em; font-size: 22px !important; text-align: center; font-variant-numeric: tabular-nums; }
.acct-form .btn, .acct-resend .btn { min-block-size: 48px; }
.acct-radios { border: 0; margin: 0; padding: 0; display: grid; gap: var(--space-2); }
.acct-radio { display: flex; align-items: center; gap: var(--space-3); min-block-size: 48px; padding-inline: var(--space-4); border: 1px solid var(--line-strong); border-radius: var(--radius-sm); cursor: pointer; }
.acct-radio:has(input:focus-visible) { outline: 2px solid var(--accent); outline-offset: 2px; }
.acct-radio input { inline-size: 18px; block-size: 18px; accent-color: var(--ink); }
.acct-details { border-block-start: 1px solid var(--line); margin-block-start: var(--space-5); }
.acct-details > summary { display: flex; align-items: center; min-block-size: 48px; cursor: pointer; font-weight: 600; font-size: var(--text-sm); list-style: none; }
.acct-details > summary::-webkit-details-marker { display: none; }
.acct-details > summary::after { content: ""; margin-inline-start: auto; inline-size: 8px; block-size: 8px; border: solid currentColor; border-width: 0 1.5px 1.5px 0; transform: rotate(45deg); opacity: .55; transition: transform 200ms var(--ease); }
.acct-details[open] > summary::after { transform: rotate(-135deg); }
.acct-details > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* ── ورود ── */
.acct-auth { padding-block: var(--space-8) var(--space-9); display: flex; justify-content: center; }
.acct-card { inline-size: min(100%, 460px); }
.acct-card__title { margin: 0 0 var(--space-3); }
.acct-card .t-body { margin-block: 0 var(--space-5); }
.acct-resend { display: flex; align-items: center; gap: var(--space-4); flex-wrap: wrap; margin-block: var(--space-4) 0; }
.acct-resend__time:empty { display: none; }

/* ── کاشی‌های حساب ── */
.acct-tiles { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); }
.acct-tile { display: block; block-size: 100%; padding: var(--space-5); border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface-raised); transition: border-color 160ms var(--ease), background 160ms var(--ease), transform 200ms var(--ease); }
.acct-tile:hover { border-color: var(--ink); background: var(--surface); }
.acct-tile:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.acct-tile__t { margin: 0 0 var(--space-2); font-family: var(--font-display); font-weight: 400; font-size: var(--text-xl); }
.acct-tile__p { margin: 0; }

/* ── حالتِ خالی ── */
.acct-empty { padding: var(--space-7) var(--space-5); border: 1px dashed var(--line-strong); border-radius: var(--radius-md); text-align: center; display: grid; gap: var(--space-3); justify-items: center; }
.acct-empty p { margin: 0; }
.acct-links { display: flex; flex-wrap: wrap; gap: var(--space-3); justify-content: center; }

/* ── وضعیت‌ها ── */
.acct-chip { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: var(--radius-pill); background: var(--surface-sunken); font-size: var(--text-xs); font-weight: 600; white-space: nowrap; }
.acct-chip--paid, .acct-chip--completed, .acct-chip--delivered, .acct-chip--succeeded { background: color-mix(in srgb, var(--ok) 14%, var(--surface)); color: var(--ok); }
.acct-chip--pending_payment, .acct-chip--processing, .acct-chip--shipped, .acct-chip--packed, .acct-chip--awaiting_gateway, .acct-chip--pending { background: color-mix(in srgb, var(--warn) 14%, var(--surface)); color: var(--warn); }
.acct-chip--cancelled, .acct-chip--failed { background: color-mix(in srgb, var(--danger) 12%, var(--surface)); color: var(--danger); }
.acct-chip--default { background: var(--ink); color: var(--ink-inverse); margin-inline-start: var(--space-2); }

/* ── سفارش‌ها ── */
.acct-orders { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-3); }
.acct-order { position: relative; display: grid; grid-template-columns: minmax(0, 1.4fr) auto auto auto auto; align-items: center; gap: var(--space-2) var(--space-5); padding: var(--space-4) var(--space-5); border: 1px solid var(--line); border-radius: var(--radius-md); transition: border-color 160ms var(--ease); }
.acct-order:hover { border-color: var(--ink); }
.acct-order__no { display: flex; align-items: center; min-block-size: 44px; }
.acct-order__no::after { content: ""; position: absolute; inset: 0; }   /* کلِ ردیف لینک است (هدفِ لمسیِ بزرگ) */
.acct-order__no:focus-visible { outline: none; }
.acct-order:has(.acct-order__no:focus-visible) { outline: 2px solid var(--accent); outline-offset: 2px; }
.acct-order__total { justify-self: end; }
.acct-meta { display: flex; align-items: center; gap: var(--space-3); flex-wrap: wrap; margin: 0 0 var(--space-5); }
.acct-pager { display: flex; align-items: center; justify-content: center; gap: var(--space-4); margin-block-start: var(--space-6); }

/* ── جزئیات سفارش ── */
.acct-lines { list-style: none; margin: 0; padding: 0; border-block-start: 1px solid var(--line); }
.acct-line { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-4); padding-block: var(--space-4); border-block-end: 1px solid var(--line); }
.acct-line__main { display: grid; gap: 4px; min-inline-size: 0; }
.acct-line__name { font-weight: 600; overflow-wrap: anywhere; }
.acct-line__price { text-align: end; white-space: nowrap; }
.acct-line__plus { font-weight: 400; }
.acct-lens { margin-block-start: var(--space-3); padding: var(--space-3) var(--space-4); border-inline-start: 3px solid var(--accent); background: var(--surface-raised); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; display: grid; gap: var(--space-2); }
[dir="rtl"] .acct-lens { border-radius: var(--radius-sm) 0 0 var(--radius-sm); }
.acct-lens__t { font-size: var(--text-sm); overflow-wrap: anywhere; }
.acct-lens__pd { margin: 0; }
.acct-rx { overflow-x: auto; max-inline-size: 100%; }
.acct-rx:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.acct-rx table { border-collapse: collapse; font-size: var(--text-xs); min-inline-size: 260px; }
.acct-rx th, .acct-rx td { padding: 6px var(--space-3); text-align: center; border-block-end: 1px solid var(--line); white-space: nowrap; }
.acct-rx tbody th { text-align: start; font-weight: 600; }
.acct-totals { margin: var(--space-5) 0 0; display: grid; gap: var(--space-2); max-inline-size: 420px; margin-inline-start: auto; }
.acct-totals > div { display: flex; justify-content: space-between; gap: var(--space-4); }
.acct-totals dt { color: var(--ink-muted); } .acct-totals dd { margin: 0; text-align: end; }
.acct-totals__total { padding-block-start: var(--space-3); border-block-start: 1px solid var(--line); font-weight: 600; }
.acct-totals__total dt { color: var(--ink); }
.acct-totals__vat { font-size: var(--text-xs); }
.acct-address { font-style: normal; line-height: 1.7; }
.acct-rows { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-2); }
.acct-rows li { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-4); padding: var(--space-3) var(--space-4); border: 1px solid var(--line); border-radius: var(--radius-sm); }
.acct-rows__main { flex: 1 1 160px; font-weight: 600; min-inline-size: 0; overflow-wrap: anywhere; }
.acct-qty { display: inline-flex; align-items: center; gap: var(--space-2); }
.acct-qty input { inline-size: 72px; text-align: center; }

/* ── نشانی‌ها ── */
.acct-addrs { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-3); }
.acct-addr { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-4); flex-wrap: wrap; padding: var(--space-4) var(--space-5); border: 1px solid var(--line); border-radius: var(--radius-md); }
.acct-addr__body { font-style: normal; line-height: 1.7; min-inline-size: 0; flex: 1 1 220px; overflow-wrap: anywhere; }
.acct-addrform .co-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); }
.acct-addrform .fld--line1, .acct-addrform .fld--line2, .acct-addrform .fld--postal_code { grid-column: 1 / -1; }
.acct-addrform .fld { display: grid; gap: 6px; }
.acct-addrform .fld--label { max-inline-size: 360px; }
.acct-addrform .btn { min-block-size: 48px; }

/* ── علاقه‌مندی ── */
.acct-wish { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: var(--space-6) var(--space-4); }
.acct-wish__cell { display: grid; gap: var(--space-3); align-content: start; min-inline-size: 0; }
.acct-wish__cell .btn { min-block-size: 44px; }
.acct-gone { padding: var(--space-5); border: 1px dashed var(--line-strong); border-radius: var(--radius-md); display: grid; gap: var(--space-2); }
.acct-gone p { margin: 0; }

/* ── صفحه‌ی محتوایی، FAQ و راهنما ── */
.acct-faq, .acct-page, .acct-guide { padding-block: var(--space-7) var(--space-9); }
.acct-pagehead { font-size: clamp(30px, 3.4vw, var(--text-5xl)); margin-block: 0 var(--space-4); }
.acct-lead { max-inline-size: 62ch; margin-block: 0 var(--space-6); font-size: var(--text-md); }
.acct-prose { max-inline-size: 70ch; margin-block-end: var(--space-6); }
.acct-prose h2 { font-size: var(--text-2xl); margin-block: var(--space-6) var(--space-3); }
.acct-prose p, .acct-prose li { line-height: 1.8; }
.acct-prose ul, .acct-prose ol { padding-inline-start: var(--space-5); }
.acct-faq__group { margin-block: var(--space-7) var(--space-3); font-size: var(--text-2xl); }
.acct-faqlist { border-block-start: 1px solid var(--line); max-inline-size: 820px; }
.acct-faqitem { border-block-end: 1px solid var(--line); }
.acct-faqitem > summary { display: flex; align-items: center; gap: var(--space-4); min-block-size: 56px; padding-block: var(--space-4); cursor: pointer; list-style: none; font-family: var(--font-display); font-size: var(--text-lg); font-weight: 500; }
.acct-faqitem > summary::-webkit-details-marker { display: none; }
.acct-faqitem > summary:hover { color: var(--accent); }
.acct-faqitem > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.acct-faqitem > summary .car { margin-inline-start: auto; flex: 0 0 auto; inline-size: 9px; block-size: 9px; border: solid currentColor; border-width: 0 1.5px 1.5px 0; transform: rotate(45deg); opacity: .5; transition: transform 280ms var(--ease); }
.acct-faqitem[open] > summary .car { transform: rotate(-135deg); }
.acct-faqitem__a { padding-block-end: var(--space-5); color: var(--ink-muted); line-height: 1.85; white-space: pre-line; max-inline-size: 70ch; }
.acct-faq__more { margin-block-start: var(--space-6); }
.acct-guide__body { display: grid; gap: var(--space-7); }
.acct-guide__body--fig { grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); align-items: start; }
.acct-guide__fig { background: var(--surface-sunken); border-radius: var(--radius-xl); padding: var(--space-7) var(--space-6); color: var(--ink); position: sticky; inset-block-start: calc(var(--header-h) + var(--space-5)); }
.acct-guide__fig svg { inline-size: 100%; block-size: auto; display: block; }
.acct-terms { margin: var(--space-4) 0; display: grid; gap: var(--space-3); }
.acct-terms > div { display: grid; grid-template-columns: 5.5em minmax(0, 1fr); gap: var(--space-4); padding-block-end: var(--space-3); border-block-end: 1px solid var(--line); }
.acct-terms dt { font-weight: 700; font-variant-numeric: lining-nums; } .acct-terms dd { margin: 0; line-height: 1.7; }
.acct-steps { counter-reset: s; list-style: none; padding: 0 !important; display: grid; gap: var(--space-3); }
.acct-steps li { counter-increment: s; display: grid; grid-template-columns: 32px minmax(0, 1fr); gap: var(--space-3); align-items: start; }
.acct-steps li::before { content: counter(s); inline-size: 28px; block-size: 28px; border-radius: 50%; background: var(--ink); color: var(--ink-inverse); display: grid; place-items: center; font-size: var(--text-xs); font-weight: 700; }
.acct-guide .spectable { inline-size: 100%; max-inline-size: 520px; }

/* ── ریسپانسیو ── */
@media (max-width: 1000px) {
  .acct { grid-template-columns: minmax(0, 1fr); gap: var(--space-5); padding-block-start: var(--space-5); }
  .acct-nav { position: static; margin-inline: calc(var(--space-5) * -1); padding-inline: var(--space-5); overflow-x: auto; scrollbar-width: none; }
  .acct-nav::-webkit-scrollbar { display: none; }
  .acct-nav ul { display: flex; gap: var(--space-2); inline-size: max-content; }
  .acct-nav a, .acct-nav__out { inline-size: auto; border: 1px solid var(--line); border-radius: var(--radius-pill); white-space: nowrap; }
  .acct-nav a[aria-current="page"] { border-color: var(--ink); }
  .acct-guide__body--fig { grid-template-columns: minmax(0, 1fr); }
  .acct-guide__fig { position: static; padding: var(--space-5); }
}
@media (max-width: 700px) {
  .acct-tiles { grid-template-columns: minmax(0, 1fr); }
  .acct-order { grid-template-columns: minmax(0, 1fr) auto; }
  .acct-order__total { grid-column: 2; grid-row: 1; }
  .acct-addrform .co-fields { grid-template-columns: minmax(0, 1fr); }
  .acct-line { grid-template-columns: minmax(0, 1fr); }
  .acct-line__price { text-align: start; }
  .acct-totals { max-inline-size: none; }
  .acct-terms > div { grid-template-columns: minmax(0, 1fr); gap: var(--space-1); }
  .acct-auth { padding-block-start: var(--space-6); }
  .acct-card .btn--block, .acct-resend .btn { inline-size: 100%; }
  .acct-wish { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-5) var(--space-3); }
  .acct-wish .ways { display: none; }   /* ۵ نقطه‌ی ۴۰px در کارتِ ۱۶۵px جا نمی‌شود و از لبه‌ی صفحه بیرون می‌افتاد؛ همان قاعده‌ی PLP (blade.css). رنگ‌ها در PDP‌اند */
}
@media (prefers-reduced-motion: reduce) {
  .acct-tile, .acct-order, .acct-details > summary::after, .acct-faqitem > summary .car, .acct-nav a { transition: none; }
}

/* ── فوتر: عنوانِ ستون‌ها `h2` است (h1 ← h3 پرشِ سطح بود، مثلِ سبد/ورود/FAQ). همان ظاهرِ `.footer h3` ی مشترک ── */
.footer h2 { font-size: var(--text-2xs); letter-spacing: .14em; text-transform: uppercase; color: var(--accent); margin-block: 0 var(--space-3); font-weight: 700; }
[lang="ar"] .footer h2 { letter-spacing: 0; text-transform: none; font-size: var(--text-sm); }

/* جدولِ نسخه همیشه LTR (شبکه‌ی بالینیِ SPH/CYL/AXIS)؛ برچسبِ سطر به‌صورتِ منطقی در آغاز می‌ماند */
.acct-rx table { direction: ltr; }
.acct-rx tbody th { text-align: start; }

/* ورود/عضویتِ ایمیل و رمز */
.acct-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; padding: 4px; margin-block: var(--space-4); background: var(--surface-sunken); border-radius: var(--radius-pill); }
.acct-tabs a { display: grid; place-items: center; min-block-size: 40px; border-radius: var(--radius-pill); color: var(--ink-muted); font-size: var(--text-sm); font-weight: 600; text-decoration: none; transition: background 160ms var(--ease), color 160ms var(--ease); }
.acct-tabs a:hover { color: var(--ink); }
.acct-tabs a[aria-current="page"] { background: var(--surface); color: var(--ink); box-shadow: 0 1px 3px rgb(16 16 18 / .12); }
.acct-pw { position: relative; display: flex; }
.acct-pw input { flex: 1; min-inline-size: 0; padding-inline-end: 72px; }
.acct-pw__t { position: absolute; inset-block: 4px; inset-inline-end: 4px; padding-inline: 12px; border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--ink-muted); font: inherit; font-size: var(--text-xs); font-weight: 700; cursor: pointer; }
.acct-pw__t:hover { color: var(--ink); background: var(--surface-sunken); }
.acct-field input[data-valid] { border-color: #1f7a4d; }
.acct-field input[aria-invalid="true"] ~ small, .acct-pw:has(input[aria-invalid="true"]) ~ small { color: var(--danger); font-weight: 600; }
.acct-field small { min-block-size: 1.3em; line-height: 1.35; }
.acct-check { display: flex; align-items: flex-start; gap: var(--space-3); font-size: var(--text-sm); cursor: pointer; }
.acct-check input { flex: none; inline-size: 20px; block-size: 20px; margin-block-start: 1px; accent-color: var(--ink); }
.acct-tabs--sub { margin-block: 0 var(--space-4); background: transparent; border: 1px solid var(--line-strong); }
.acct-tabs--sub a { min-block-size: 44px; }
.acct-dev { margin-block-start: var(--space-6); padding-block-start: var(--space-4); border-block-start: 1px dashed var(--line-strong); text-align: center; }
.acct-dev .t-meta { margin-block-start: var(--space-2); }

/* ═══════════════════════════════════════════════════════════════════════
   کمپین (بنر، صفحه، برچسب) و نوارِ ارسالِ رایگان (T6) — `docs/design/optiview/campaign.md`.
   فقط ویژگی‌های منطقی (RTL رایگان)؛ توکن‌ها از CSS ی مشترک (توکنِ تازه نمی‌سازیم).
   بنر: عکسِ پُر + گرادیانِ تیره‌ی پایین برای کنتراستِ متنِ سفید؛ نشانِ کارت: کپسولِ روشن گوشه‌ی پایانیِ-پایین.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── بنرِ خانه ── */
.cmp-band { padding-block: var(--space-7); }   /* پایین هم فاصله: گوشه‌های گردِ بنر مستقیم به بخشِ تیره‌ی بعدی (.pitch) نچسبد */
.cmp-band__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-4); }
@media (min-width: 768px) {
  .cmp-band__grid { gap: var(--space-5); }
  .cmp-band__grid[data-count="2"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.cmp-banner, .cmp-hero { position: relative; display: block; overflow: hidden; isolation: isolate; border-radius: var(--radius-lg); background: var(--surface-inverse); color: #fff; text-decoration: none; }
.cmp-banner { aspect-ratio: 4 / 3; }
@media (min-width: 768px) { .cmp-band__grid[data-count="1"] .cmp-banner { aspect-ratio: 21 / 8; } }

.cmp-banner picture, .cmp-hero picture { position: absolute; inset: 0; display: block; }
.cmp-banner img, .cmp-hero img { display: block; inline-size: 100%; block-size: 100%; object-fit: cover; object-position: 50% var(--focus, 50%); }
@media (prefers-reduced-motion: no-preference) {
  .cmp-banner img { transition: transform 560ms var(--ease); }
  @media (hover: hover) { .cmp-banner:hover img { transform: scale(1.03); } }
}
/* گرادیانِ تیره: متنِ سفید روی هر عکسی کنتراست ≥ ۴٫۵ می‌ماند */
.cmp-banner::after, .cmp-hero::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(to top, rgb(0 0 0 / .8) 0%, rgb(0 0 0 / .52) 42%, rgb(0 0 0 / 0) 78%); }
.cmp-banner:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }

.cmp-banner__txt, .cmp-hero__txt { position: absolute; inset-inline: 0; inset-block-end: 0; z-index: 2; display: grid; gap: var(--space-2); padding: var(--space-5); }
.cmp-banner__label, .cmp-hero__label { font-size: var(--text-2xs); font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: rgb(255 255 255 / .9); }
[lang="ar"] .cmp-banner__label, [lang="ar"] .cmp-hero__label { letter-spacing: 0; text-transform: none; font-size: var(--text-xs); }
.cmp-banner__title, .cmp-hero__title { margin: 0; font-family: var(--font-display); font-weight: 300; font-size: clamp(24px, 2.6vw, var(--text-4xl)); line-height: 1.15; color: #fff; }
[lang="ar"] .cmp-banner__title, [lang="ar"] .cmp-hero__title { font-weight: 400; line-height: 1.35; }
.cmp-banner__sub, .cmp-hero__sub { margin: 0; max-inline-size: 56ch; font-size: var(--text-sm); line-height: 1.5; color: rgb(255 255 255 / .94); }
.cmp-banner__sub { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.cmp-banner__foot { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-4); margin-block-start: var(--space-2); }
.cmp-banner__cta { display: inline-flex; align-items: center; gap: var(--space-2); min-block-size: 36px; font-size: var(--text-2xs); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; border-block-end: 1px solid #fff; }
[lang="ar"] .cmp-banner__cta { letter-spacing: 0; text-transform: none; font-size: var(--text-xs); }
.cmp-banner__cta svg { flex: none; }
.cmp-banner__ends, .cmp-hero__ends { margin: 0; font-size: var(--text-xs); color: rgb(255 255 255 / .94); }
@media (max-width: 480px) { .cmp-banner__txt, .cmp-hero__txt { padding: var(--space-4); } }

/* ── صفحه‌ی کمپین: بنرِ عنوان‌دار بالای فهرست ── */
.cmp-hero { margin-block: var(--space-6) var(--space-4); aspect-ratio: 4 / 3; }
.cmp-hero__title { font-size: clamp(30px, 3.4vw, var(--text-5xl)); }
@media (min-width: 700px) { .cmp-hero { aspect-ratio: 5 / 2; } .cmp-hero__txt { padding: var(--space-6); } }
@media (min-width: 1100px) { .cmp-hero { aspect-ratio: 3 / 1; } .cmp-hero__txt { padding: var(--space-7); } }
.cmp-empty { display: grid; justify-items: center; gap: var(--space-4); padding-block: var(--space-9); text-align: center; }

/* ── نشانِ کارت: کپسولِ روشن، فقط نمایشی (کارت یک لینک است) ── */
.cmp-tag { position: absolute; inset-block-end: 10px; inset-inline-end: 10px; z-index: 3; max-inline-size: calc(100% - 20px); padding: 5px 10px; border: 1px solid var(--line); border-radius: var(--radius-pill); background: color-mix(in srgb, var(--surface) 92%, transparent); color: var(--ink); font-size: var(--text-2xs); font-weight: 600; line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none; }
[lang="ar"] .cmp-tag { font-size: var(--text-xs); }
@media (max-width: 700px) { html:not([data-grid="1"]) [data-plp] .cmp-tag, .carousel .cmp-tag { font-size: 10px; padding: 3px 8px; inset-block-end: 6px; inset-inline-end: 6px; max-inline-size: calc(100% - 12px); } }

/* ── PDP: «Part of …» ── */
.cmp-pdp { display: inline-flex; align-items: center; gap: var(--space-2); min-block-size: 36px; margin-block: var(--space-2); padding-inline: var(--space-3); border: 1px solid var(--line); border-radius: var(--radius-pill); color: var(--ink); font-size: var(--text-xs); font-weight: 600; text-decoration: none; transition: border-color 160ms var(--ease); }
.cmp-pdp:hover { border-color: var(--ink); }
.cmp-pdp:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.cmp-pdp svg { flex: none; color: var(--accent); }

/* ── نوارِ ارسالِ رایگان (سبد و کشو) ── */
.freeship { margin-block: var(--space-5) var(--space-4); padding: var(--space-4) var(--space-5); border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface-raised); }
.freeship__msg { display: flex; align-items: center; gap: var(--space-2); margin: 0 0 var(--space-3); font-size: var(--text-sm); line-height: 1.5; }
.freeship__msg svg { flex: none; color: var(--ink-muted); }
.freeship--done .freeship__msg svg { color: var(--ok); }
.freeship__bar { block-size: 6px; border-radius: var(--radius-pill); background: var(--line); overflow: hidden; }
.freeship__bar > i { display: block; block-size: 100%; inline-size: var(--p, 0%); border-radius: inherit; background: var(--ink); }
.freeship--done .freeship__bar > i { background: var(--ok); }
@media (prefers-reduced-motion: no-preference) { .freeship__bar > i { transition: inline-size 520ms var(--ease), background-color 240ms var(--ease); } }
.drawer__body > .freeship, [data-cart-body] > .freeship { margin-block: var(--space-4) 0; padding: var(--space-3) var(--space-4); }

/* ═══════════════════════════════════════════════════════════════════════
   تسویه‌حساب (T1) — فرمِ آدرسِ طرح‌محور، سه گام، نتیجه. فقط ویژگی‌های منطقی (RTL رایگان)؛ توکن‌ها از CSS ی مشترک.
   موبایل ۳۹۰: تک‌ستون، خلاصه‌ی تاشو، دکمه‌ی اصلیِ چسبیده به پایین، فیلد ≥۴۸px و فونت ۱۶px (بدونِ زومِ iOS).
   دسکتاپ: دو ستون، خلاصه چسبنده و همیشه باز.
   ═══════════════════════════════════════════════════════════════════════ */

.co { padding-block: var(--space-6) var(--space-9); }
.co__head { display: grid; gap: var(--space-4); margin-block-end: var(--space-5); }
.co__title { margin: 0; font-size: clamp(28px, 3vw, var(--text-4xl)); }
.co__grid { display: grid; gap: var(--space-5); }
.co__main { display: flex; flex-direction: column; gap: var(--space-6); min-inline-size: 0; }   /* flex نه grid: sticky ی دکمه تا پایانِ کلِ ستون می‌چسبد */
.co-h2 { margin: 0 0 var(--space-3); padding: 0; font-size: var(--text-md); font-weight: 600; }
.co fieldset { border: 0; margin: 0; padding: 0; min-inline-size: 0; }

/* ── نشانگرِ گام‌ها ── */
.co-steps { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-5); margin: 0; padding: 0; list-style: none; counter-reset: co-step; font-size: var(--text-sm); color: var(--ink-muted); }
.co-steps li { display: inline-flex; align-items: center; gap: var(--space-2); min-block-size: 36px; counter-increment: co-step; }
.co-steps li::before { content: counter(co-step); display: inline-grid; place-items: center; inline-size: 24px; block-size: 24px; border: 1px solid var(--line-strong); border-radius: 50%; font-size: var(--text-2xs); font-variant-numeric: lining-nums; }
.co-steps li[aria-current="step"] { color: var(--ink); font-weight: 700; }
.co-steps li[aria-current="step"]::before { background: var(--ink); color: var(--ink-inverse); border-color: var(--ink); }
/* ✓ با CSS (حرفِ ✓ در فونتِ عربی «٧» رسم می‌شد) */
.co-steps li[data-done]::before { content: ""; background: var(--accent-quiet) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.5l2.2 2.2L9.5 3.8' fill='none' stroke='%23101012' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px 12px no-repeat; border-color: var(--accent); }
.co-steps a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }

/* ── خلاصه‌ی سفارش ── */
.co-sum { background: var(--surface-sunken); border-radius: var(--radius-lg); padding: 0 var(--space-5); }
.co-sum__toggle { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); min-block-size: 56px; cursor: pointer; font-weight: 600; list-style: none; }
.co-sum__toggle::-webkit-details-marker { display: none; }
.co-sum__toggle::after { content: ""; flex: none; inline-size: 8px; block-size: 8px; margin-inline-start: var(--space-2); border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; /* ⚠️ فیزیکی عمداً: شیورونِ «پایین» نباید در RTL آینه شود */ transform: translateY(-2px) rotate(45deg); transition: transform var(--dur, 160ms) var(--ease, ease); }
.co-sum[open] > .co-sum__toggle::after { transform: translateY(2px) rotate(-135deg); }
.co-sum__title { margin-inline-end: auto; }
.co-sum__count { font-weight: 400; color: var(--ink-muted); }
.co-sum__short { font-weight: 700; }
.co-sum[open] .co-sum__short { visibility: hidden; }
.co-lines { margin: 0; padding: 0 0 var(--space-3); list-style: none; display: grid; gap: var(--space-4); }
.co-line { display: grid; grid-template-columns: 72px minmax(0, 1fr) auto; gap: var(--space-3); align-items: center; }
.co-line--lens { grid-template-columns: minmax(0, 1fr) auto; padding-inline-start: calc(72px + var(--space-3)); }
.co-line__img { aspect-ratio: 3 / 2; display: grid; place-items: center; background: var(--surface); border-radius: var(--radius-sm); overflow: hidden; }
.co-line__img img { inline-size: 92%; block-size: 92%; object-fit: contain; }
.co-line__body { display: grid; gap: 2px; min-inline-size: 0; font-size: var(--text-sm); }
.co-line__name { font-weight: 600; overflow-wrap: anywhere; }
.co-line--lens .co-line__name { font-weight: 400; }
.co-line__meta { font-size: var(--text-xs); color: var(--ink-muted); overflow-wrap: anywhere; }
.co-line__price { font-size: var(--text-sm); font-weight: 700; white-space: nowrap; text-align: end; }
.co-line--lens .co-line__price { font-weight: 400; }
.co-totals { margin: 0; padding: var(--space-3) 0 var(--space-4); border-block-start: 1px solid var(--line-strong); display: grid; }
.co-row { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-4); padding-block: var(--space-2); font-size: var(--text-sm); }
.co-row dt, .co-row dd { margin: 0; }
.co-row dt { color: var(--ink-muted); }
.co-row dd { text-align: end; font-weight: 600; }
.co-row__sub { display: block; font-size: var(--text-xs); }
.co-row__hint { font-weight: 400 !important; color: var(--ink-muted); }
.co-row--discount dd { color: var(--ok); }
.co-row--total { margin-block-start: var(--space-2); padding-block-start: var(--space-4); border-block-start: 1px solid var(--line-strong); font-size: var(--text-md); }
.co-row--total dt { color: var(--ink); font-weight: 700; }
.co-row--total dd { font-weight: 700; }
.co-row--vat { font-size: var(--text-xs); }
.co-row--vat dd { font-weight: 400; }
.co-sum[open] { padding-block-end: var(--space-4); }
.co-sum__note { margin: 0; font-size: var(--text-xs); color: var(--ink-muted); }

/* ── فرم و فیلد ── */
.co-form { display: grid; gap: var(--space-5); }
.co-fields { display: grid; gap: var(--space-4); }
.fld { display: grid; gap: var(--space-2); align-content: start; min-inline-size: 0; }
.fld label { font-size: var(--text-sm); font-weight: 600; }
.fld__opt { font-weight: 400; color: var(--ink-muted); }
.fld input, .fld select, .fld textarea { inline-size: 100%; min-block-size: 48px; padding: 10px var(--space-4); border: 1px solid var(--line-strong); border-radius: var(--radius-sm); background: var(--surface); color: var(--ink); font: inherit; font-size: 16px; text-align: start; transition: border-color var(--dur, 160ms) var(--ease, ease); }
.fld select { appearance: none; padding-inline-end: var(--space-7); background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%); background-size: 5px 5px; background-repeat: no-repeat; background-position: calc(100% - 20px) 50%, calc(100% - 15px) 50%; }
[dir="rtl"] .fld select { background-position: 15px 50%, 20px 50%; }
.fld input[aria-invalid="true"], .fld select[aria-invalid="true"], .fld textarea[aria-invalid="true"] { border-color: var(--danger); box-shadow: 0 0 0 1px var(--danger); }
.fld__err { margin: 0; font-size: var(--text-sm); color: var(--danger); font-weight: 600; }
.fld__hint { margin: 0; font-size: var(--text-xs); color: var(--ink-muted); }
.co-errsum { padding: var(--space-4) var(--space-5); border: 1px solid var(--danger); border-radius: var(--radius-md); background: #FBEDEB; margin-block-end: var(--space-5); }
.co-errsum[hidden] { display: none; }
.co-errsum:focus { outline: 2px solid var(--danger); outline-offset: 2px; }
.co-errsum__title { margin: 0 0 var(--space-2); font-size: var(--text-md); color: var(--danger); }
.co-errsum ul { margin: 0; padding-inline-start: var(--space-5); font-size: var(--text-sm); }
.co-errsum a { color: var(--ink); text-decoration: underline; display: inline-block; padding-block: 6px; }

/* ── رادیو/چک‌باکسِ کارتی (ورودیِ اصلی `.sr` است؛ نشانگرِ بصری جدا) ── */
.co-pick { display: grid; gap: var(--space-3); }
.opt { position: relative; display: flex; align-items: flex-start; gap: var(--space-3); min-block-size: 56px; padding: var(--space-4); border: 1px solid var(--line-strong); border-radius: var(--radius-md); background: var(--surface); cursor: pointer; transition: border-color var(--dur, 160ms) var(--ease, ease), box-shadow var(--dur, 160ms) var(--ease, ease); }
.opt:has(input:checked) { border-color: var(--ink); box-shadow: 0 0 0 1px var(--ink); background: var(--surface-raised); }
.opt:has(input:focus-visible) { outline: 2px solid var(--accent); outline-offset: 2px; }
.opt__dot, .opt__box { flex: none; inline-size: 20px; block-size: 20px; margin-block-start: 1px; border: 2px solid var(--line-strong); background: var(--surface); }
.opt__dot { border-radius: 50%; }
.opt__box { border-radius: var(--radius-xs); }
.opt:has(input:checked) .opt__dot { border-color: var(--ink); background: radial-gradient(circle, var(--ink) 0 45%, var(--surface) 50%); }
.opt:has(input:checked) .opt__box { border-color: var(--ink); background: var(--ink); box-shadow: inset 0 0 0 3px var(--ink); background-image: linear-gradient(45deg, transparent 45%, var(--ink-inverse) 45% 55%, transparent 55%); }
.opt__main { display: grid; gap: 2px; flex: 1; min-inline-size: 0; font-size: var(--text-sm); overflow-wrap: anywhere; }
.opt__main span { color: var(--ink-muted); font-size: var(--text-xs); }
.opt__price { flex: none; font-weight: 700; font-size: var(--text-sm); white-space: nowrap; }
.opt--check { min-block-size: 48px; align-items: center; }

/* ── نشانی و بلوک‌های خلاصه‌ی گام ── */
.co-addr { padding: var(--space-4) var(--space-5); border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface-raised); }
.co-addr__head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }
.co-addr__head .co-h2 { margin: 0; }
.co-addr__change { display: inline-flex; align-items: center; min-block-size: 40px; padding-inline: var(--space-2); font-size: var(--text-sm); color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
.co-addr__body { margin: var(--space-1) 0 0; font-size: var(--text-sm); line-height: 1.7; overflow-wrap: anywhere; }

/* ── پیام‌ها ── */
.co-flash { margin: 0 0 var(--space-5); padding: var(--space-3) var(--space-4); border-radius: var(--radius-md); font-size: var(--text-sm); }
.co-flash--error { background: #FBEDEB; border: 1px solid var(--danger); color: var(--ink); }
.co-flash--note { background: var(--accent-quiet); border: 1px solid var(--accent); }
.co-note { margin: 0; font-size: var(--text-xs); color: var(--ink-muted); }

/* ── کد تخفیف ── */
.co-coupon__row { display: flex; gap: var(--space-3); align-items: stretch; }
.co-coupon__row input { flex: 1; text-transform: uppercase; }
.co-coupon__row .btn { flex: none; min-block-size: 48px; }

/* ── دکمه‌ی اصلی: موبایل چسبیده به پایینِ دیدِ کلِ ستونِ فرم (با پایانِ ستون آزاد می‌شود)؛ `--inline` = بدونِ چسبیدن ── */
.co-cta { position: sticky; inset-block-end: 0; z-index: 6; margin-inline: calc(var(--space-5) * -1); padding: var(--space-3) var(--space-5) calc(var(--space-3) + env(safe-area-inset-bottom, 0px)); background: var(--surface); border-block-start: 1px solid var(--line); }
.co-cta .btn { min-block-size: 52px; }
.co-cta--inline { position: static; margin: 0; padding: 0; border: 0; background: none; }
.co-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-block: var(--space-5) var(--space-4); }
.co-actions .btn { min-block-size: 48px; }
@media (max-width: 767px) { .co-actions .btn { flex: 1 1 100%; } }

/* ── نتیجه ── */
.co--result { padding-block: var(--space-8) var(--space-10, 96px); }
.co-result { max-inline-size: 640px; margin-inline: auto; display: grid; gap: var(--space-4); }
.co-result p { margin: 0; }
.co-result__num { font-size: var(--text-md); }

/* ── ۷۶۸ و بالاتر: امارت و منطقه کنارِ هم ── */
@media (min-width: 768px) {
  .co-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .co-fields .fld--receiver_name, .co-fields .fld--receiver_phone, .co-fields .fld--line1, .co-fields .fld--line2 { grid-column: 1 / -1; }
  .co-fields .fld--receiver_phone { max-inline-size: 360px; }
}

/* ── ۹۰۰ و بالاتر: دو ستون، خلاصه چسبنده؛ دکمه داخلِ جریان ── */
@media (min-width: 900px) {
  .co__grid { grid-template-columns: minmax(0, 1fr) minmax(340px, 400px); grid-template-areas: "main side"; gap: var(--space-9); align-items: start; }
  .co__main { grid-area: main; }
  .co__side { grid-area: side; position: sticky; inset-block-start: calc(var(--header-h) + var(--space-4)); }
  .co-sum { padding-inline: var(--space-6); }
  .co-sum__toggle { pointer-events: none; min-block-size: 64px; }
  .co-sum__toggle::after { display: none; }
  .co-cta { position: static; margin: 0; padding: 0; border: 0; background: none; }
  .co-cta .btn { inline-size: auto; min-inline-size: 280px; }
}

/* صفحه‌ی تماس: کارت‌های اطلاعات (`ContactCards`) — ویژگی‌های منطقی، پس RTL بی‌کار اضافه کار می‌کند */
.contact-cards { list-style: none; margin: var(--space-6) 0; padding: 0; display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); max-inline-size: 880px; }
.contact-card { position: relative; display: grid; align-content: start; gap: var(--space-1); padding: var(--space-5); padding-inline-start: calc(var(--space-5) + 38px); border: 1px solid var(--line); border-radius: 8px; background: #fff; }
.contact-card__icon { position: absolute; inset-block-start: var(--space-5); inset-inline-start: var(--space-5); color: var(--accent); }
.contact-card__label { font-size: var(--text-xs, 12px); letter-spacing: .12em; text-transform: uppercase; color: #6a6a70; }
.contact-card__value { font-size: var(--text-md, 17px); line-height: 1.5; color: inherit; text-decoration: none; overflow-wrap: anywhere; }
a.contact-card__value { text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 3px; transition: text-decoration-color .15s; }
a.contact-card__value:hover, a.contact-card__value:focus-visible { text-decoration-color: currentColor; }
.contact-card:has(a.contact-card__value:focus-visible) { outline: 2px solid var(--accent); outline-offset: 2px; }
@media (max-width: 480px) { .contact-card { padding: var(--space-4); padding-inline-start: calc(var(--space-4) + 36px); } .contact-card__icon { inset-block-start: var(--space-4); inset-inline-start: var(--space-4); } }

/* ═══════════════════════════════════════════════════════════════════════
   علاقه‌مندی (قلب)، نظر و امتیاز، «خبرم کن» (T3a). فقط ویژگی‌های منطقی (RTL رایگان)؛ توکن‌ها از CSS ی مشترک (توکنِ تازه نمی‌سازیم).
   قلب: دکمه‌ی ۴۰×۴۰ گوشه‌ی پایانیِ عکس (خواهرِ لینکِ کارت، نه داخلش). ستاره: ماسکِ CSS ی یک ردیفِ پنج‌تایی (کسری هم پُر می‌شود).
   ═══════════════════════════════════════════════════════════════════════ */

/* ── کارت = لینک + قلب (خواهر) ── */
.cardbox { position: relative; min-inline-size: 0; }

/* ── قلب ── */
.heart { margin: 0; }
.heart--card { position: absolute; inset-block-start: 10px; inset-inline-end: 10px; z-index: 4; }
.heart__btn { inline-size: 40px; block-size: 40px; display: grid; place-items: center; padding: 0; border: 1px solid var(--line); border-radius: 50%; background: color-mix(in srgb, var(--surface) 92%, transparent); color: var(--ink); cursor: pointer; text-decoration: none; transition: border-color 160ms var(--ease), background-color 160ms var(--ease), color 160ms var(--ease); -webkit-tap-highlight-color: transparent; }
.heart__btn:hover { border-color: var(--ink); }
.heart__btn:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.heart__btn svg { inline-size: 20px; block-size: 20px; display: block; }
.heart__btn[aria-pressed="true"] { color: var(--accent); border-color: var(--accent); }
.heart__btn[aria-pressed="true"] svg { fill: currentColor; }
.heart[aria-busy="true"] .heart__btn { cursor: progress; opacity: .7; }
/* پُرشدن با جهشِ کوتاه (فقط وقتی حرکت مجاز است) */
@media (prefers-reduced-motion: no-preference) {
  .heart[data-pop] .heart__btn svg { animation: heart-pop 320ms var(--ease); }
}
@keyframes heart-pop { 0% { transform: scale(.8); } 55% { transform: scale(1.22); } 100% { transform: scale(1); } }
/* PDP: کنارِ Share */
.buy__tools { display: flex; align-items: center; gap: var(--space-2); }
.heart--pdp { position: static; }

/* ── پیامِ گذرا (toast) — ناحیه‌ی زنده؛ همیشه در درخت می‌ماند تا صفحه‌خوان اعلام کند ── */
.engage-toast { position: fixed; inset-inline: var(--space-4); inset-block-end: calc(var(--space-5) + env(safe-area-inset-bottom, 0px)); margin-inline: auto; inline-size: max-content; max-inline-size: calc(100% - 2 * var(--space-4)); z-index: 70; padding: 10px var(--space-5); border-radius: var(--radius-pill); background: var(--ink); color: var(--ink-inverse); font-size: var(--text-sm); text-align: center; box-shadow: 0 8px 28px rgb(0 0 0 / .22); opacity: 0; pointer-events: none; transform: translateY(8px); }
.engage-toast[data-on] { opacity: 1; transform: none; }
.engage-toast[data-kind="error"] { background: var(--danger); color: #fff; }
@media (prefers-reduced-motion: no-preference) { .engage-toast { transition: opacity 180ms var(--ease), transform 180ms var(--ease); } }
@media (max-width: 700px) { .engage-toast { inset-block-end: calc(88px + env(safe-area-inset-bottom, 0px)); } }   /* بالای نوارِ ثابتِ «Add to bag» */

/* ── اعلان‌های سروری (بعد از POST) ── */
.rv-note, .buy__note, .sa__note { margin: 0; padding: 12px var(--space-4); border: 1px solid var(--line); border-inline-start: 3px solid var(--ok); border-radius: var(--radius-sm); background: var(--surface-raised); font-size: var(--text-sm); line-height: 1.6; }
.rv-note { margin-block-end: var(--space-5); }
.buy__note { margin-block-start: var(--space-3); }
.rv-note:focus, .buy__note:focus, .sa__note:focus { outline: 2px solid var(--ink); outline-offset: 2px; }

/* ── ستاره‌ی نمایشی: ماسکِ پنج‌ستاره؛ `--v` از ۰ تا ۵ ── */
.stars { --v: 0; --s: 18px; --star: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 3.2l2.7 5.6 6.1.8-4.5 4.2 1.1 6.1L12 17l-5.4 2.9 1.1-6.1L3.2 9.6l6.1-.8z'/%3E%3C/svg%3E"); display: inline-block; flex: none; inline-size: calc(var(--s) * 5); block-size: var(--s); vertical-align: middle; background: linear-gradient(var(--grad, to right), var(--accent) calc(var(--v) / 5 * 100%), var(--line-strong) 0); -webkit-mask: var(--star) 0 0 / 20% 100% repeat-x; mask: var(--star) 0 0 / 20% 100% repeat-x; }
.stars:dir(rtl) { --grad: to left; -webkit-mask-position: 100% 0; mask-position: 100% 0; }   /* در RTL از سمتِ آغاز (راست) پُر می‌شود؛ `:dir` و نه `[dir]`: کارتِ نظر `dir=auto` است */
.buy__rating { display: inline-flex; align-items: center; gap: var(--space-2); min-block-size: 36px; font-size: var(--text-sm); color: var(--ink-muted); text-decoration: none; }
.buy__rating:hover { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
.buy__rating .stars { --s: 16px; }

/* ── بخشِ نظرها ── */
.rv { padding-block: var(--space-8) var(--space-8); border-block-start: 1px solid var(--line); scroll-margin-block-start: calc(var(--header-h, 72px) + var(--space-4)); }
.rv .sechead { margin-block-end: var(--space-5); }
.rv__layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-6); }
.rv__summary, .rv__main { min-inline-size: 0; }
.rv__avg { display: flex; align-items: baseline; gap: var(--space-2); margin: 0 0 var(--space-2); }
.rv__num { font-family: var(--font-display); font-size: var(--text-4xl, 44px); line-height: 1; font-weight: 400; }
.rv__of { margin-inline-start: var(--space-1); }
.rv__of { color: var(--ink-muted); font-size: var(--text-md); }
.rv__summary .stars { --s: 22px; }
.rv__based { margin: var(--space-2) 0 0; font-size: var(--text-sm); color: var(--ink-muted); }
.rv__dist { list-style: none; margin: var(--space-5) 0 0; padding: 0; display: grid; gap: var(--space-2); }
.rv__dist li { display: grid; grid-template-columns: 76px minmax(0, 1fr) 32px; align-items: center; gap: var(--space-3); min-block-size: 24px; font-size: var(--text-sm); }
.rv__label { white-space: nowrap; }
.rv__bar { block-size: 8px; border-radius: var(--radius-pill); background: var(--surface-sunken); overflow: hidden; }
.rv__bar i { display: block; block-size: 100%; border-radius: inherit; background: var(--accent); }
.rv__n { text-align: end; color: var(--ink-muted); }
.rv__empty { margin: 0; font-size: var(--text-sm); line-height: 1.7; }
.rv__empty b { display: block; font-size: var(--text-md); margin-block-end: var(--space-1); }

.rv__list { list-style: none; margin: 0; padding: 0; }
.rv__more { margin: var(--space-4) 0 0; font-size: var(--text-xs); color: var(--ink-muted); }
.rv-item { display: grid; gap: var(--space-2); padding-block: var(--space-5); border-block-end: 1px solid var(--line); scroll-margin-block-start: calc(var(--header-h, 72px) + var(--space-4)); }
.rv-item:first-child { padding-block-start: 0; }
.rv-item .stars { --s: 16px; }
.rv-item__title { margin: 0; font-size: var(--text-md); font-weight: 600; line-height: 1.4; }
.rv-item__body { margin: 0; font-size: var(--text-sm); line-height: 1.75; white-space: pre-line; overflow-wrap: anywhere; }
.rv-item__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 4px var(--space-2); margin: 0; font-size: var(--text-xs); color: var(--ink-muted); }
.rv-badge { display: inline-flex; align-items: center; gap: 4px; color: var(--ok); font-weight: 600; }
.rv-badge::before { content: ""; inline-size: 12px; block-size: 12px; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.5l2.2 2.2L9.5 3.8' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.5l2.2 2.2L9.5 3.8' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat; }
.rv-reply { margin-block-start: var(--space-2); padding: var(--space-3) var(--space-4); border-inline-start: 3px solid var(--accent); border-radius: var(--radius-sm); background: var(--surface-raised); }
.rv-reply__who { margin: 0 0 2px; font-size: var(--text-xs); font-weight: 700; }
.rv-reply__body { margin: 0; font-size: var(--text-sm); line-height: 1.7; white-space: pre-line; overflow-wrap: anywhere; }

/* ── نوشتنِ نظر ── */
.rv-write { margin-block-start: var(--space-6); scroll-margin-block-start: calc(var(--header-h, 72px) + var(--space-4)); }
.rv-write > summary { list-style: none; cursor: pointer; inline-size: max-content; min-block-size: 44px; }
.rv-write > summary::-webkit-details-marker { display: none; }
.rv-write[open] > summary { margin-block-end: var(--space-4); }
.rv-own, .rv-guest { margin: var(--space-6) 0 0; font-size: var(--text-sm); line-height: 1.6; }
.rv-guest .btn { min-block-size: 44px; }
.rv-form { display: grid; gap: var(--space-4); max-inline-size: 640px; }
.rv-form fieldset { border: 0; margin: 0; padding: 0; min-inline-size: 0; }
.rv-form legend, .rv-form .fld label { padding: 0; font-size: var(--text-sm); font-weight: 600; }
.rv-form .fld { display: grid; gap: var(--space-2); min-inline-size: 0; }
.rv-form .fld__opt { font-weight: 400; color: var(--ink-muted); }
.rv-form input[type="text"], .rv-form textarea { inline-size: 100%; padding: 10px var(--space-4); border: 1px solid var(--line-strong); border-radius: var(--radius-sm); background: var(--surface); color: var(--ink); font: inherit; font-size: 16px; text-align: start; }
.rv-form input[type="text"] { min-block-size: 48px; }
.rv-form textarea { min-block-size: 140px; resize: vertical; line-height: 1.6; }
.rv-form [aria-invalid="true"] { border-color: var(--danger); box-shadow: 0 0 0 1px var(--danger); }
.rv-form .fld__err { margin: 0; font-size: var(--text-sm); color: var(--danger); font-weight: 600; }
.rv-hint { margin: 0; line-height: 1.6; }
.rv-form .btn { justify-self: start; min-block-size: 48px; }

/* ستاره‌ی فرم: radio ی واقعی. DOM ۵←۱ با `direction` وارونه ← ۱ در سمتِ آغاز؛ `~` ستاره‌های ≤ انتخاب را پُر می‌کند.
   ⚠️ `direction` و نه `row-reverse`: فلشِ صفحه‌کلیدِ radio از جهتِ متن پیروی می‌کند، پس فلشِ سمتِ پایان = امتیازِ بالاتر (در LTR و RTL) بدونِ JS. */
.rv-pick { position: relative; display: inline-flex; direction: rtl; justify-content: flex-end; gap: 2px; margin-block-start: var(--space-2); }
[dir="rtl"] .rv-pick { direction: ltr; }
.rv-pick__in { position: absolute; inline-size: 1px; block-size: 1px; opacity: 0; pointer-events: none; }
.rv-pick__star { display: grid; place-items: center; inline-size: 44px; block-size: 44px; border-radius: var(--radius-sm); color: var(--line-strong); cursor: pointer; -webkit-tap-highlight-color: transparent; }
.rv-pick__star svg { inline-size: 30px; block-size: 30px; fill: currentColor; display: block; }
.rv-pick__star:hover, .rv-pick__star:hover ~ .rv-pick__star,
.rv-pick__in:checked + .rv-pick__star, .rv-pick__in:checked + .rv-pick__star ~ .rv-pick__star { color: var(--accent); }
.rv-pick__in:focus-visible + .rv-pick__star { outline: 2px solid var(--ink); outline-offset: 0; }
.rv-errsum { padding: var(--space-4) var(--space-5); border: 1px solid var(--danger); border-radius: var(--radius-md); background: #FBEDEB; margin-block-end: var(--space-5); }
.rv-errsum[hidden] { display: none; }
.rv-errsum:focus { outline: 2px solid var(--danger); outline-offset: 2px; }
.rv-errsum__title { margin: 0 0 var(--space-2); font-size: var(--text-md); color: var(--danger); }
.rv-errsum ul { margin: 0; padding-inline-start: var(--space-5); font-size: var(--text-sm); }
.rv-errsum a { color: var(--ink); text-decoration: underline; display: inline-block; padding-block: 6px; }

@media (min-width: 768px) {
  .rv__layout { grid-template-columns: minmax(240px, 300px) minmax(0, 1fr); gap: var(--space-8); align-items: start; }
  .rv__summary { position: sticky; inset-block-start: calc(var(--header-h, 72px) + var(--space-4)); }
}
@media (max-width: 700px) {
  .rv { padding-block: var(--space-7); }
  .rv-form .btn, .rv-write > summary { inline-size: 100%; justify-self: stretch; }
  .rv-pick__star { inline-size: 48px; block-size: 48px; }
}

/* ── «خبرم کن» ── */
.sa { margin-block-start: var(--space-3); }
.sa__box { display: grid; gap: var(--space-2); margin-block-start: var(--space-3); padding: var(--space-4); border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface-raised); }
.sa__box[hidden] { display: none; }
.sa__title { margin: 0; font-size: var(--text-sm); font-weight: 600; }
.sa__what { margin: 0; font-size: var(--text-xs); color: var(--ink-muted); }
.sa__hint { margin: 0; font-size: var(--text-sm); line-height: 1.6; }
.sa__box form { margin: 0; }
.sa .btn { justify-self: start; min-block-size: 44px; }
@media (max-width: 700px) { .sa .btn { inline-size: 100%; justify-self: stretch; } }

/* نظرِ مشتری به هر زبانی ممکن است باشد: در صفحه‌ی انگلیسی Cairo هم در پشته است (فقط برای حرف‌های عربی بارگذاری می‌شود، unicode-range) */
html:not([lang="ar"]) :is(.rv-item__title, .rv-item__body, .rv-item__meta, .rv-reply__who, .rv-reply__body) { font-family: Inter, Cairo, "Helvetica Neue", Helvetica, Arial, sans-serif; }

/* ═══════════════════════════════════════════════════════════════════════
   پوشش‌های شناور (T5): دیالوگ، چت‌بات، پاپ‌آپِ تبلیغاتی، پاپ‌آپِ وقتِ معاینه. فقط ویژگی‌های منطقی (RTL رایگان)؛ توکن‌ها از CSS ی مشترک.
   همه `position: fixed` اند ← هیچ جهشِ چیدمان (CLS). قفلِ اسکرول پهنای نوارِ اسکرول را با `--ovl-sb` جبران می‌کند (`00-dialog.js`).
   لایه‌ها: دکمه‌ی چت ۳۰ (زیرِ هدر ۴۰ و نوارِ ثابتِ PDP ۳۵ نیست؛ کنارشان بالا می‌رود) · scrim ی کشو ۵۰ · کشو ۶۰ · دیالوگ ۸۵ · toast ۹۵.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── دکمه‌ی چت ── */
.ovl-fab { position: fixed; inset-inline-end: calc(var(--space-4) + var(--ovl-sb, 0px)); inset-block-end: calc(var(--space-8) + var(--space-4) + env(safe-area-inset-bottom, 0px)); z-index: 30; display: inline-flex; align-items: center; gap: var(--space-2); min-block-size: 48px; padding-inline: var(--space-4); border-radius: var(--radius-pill); background: var(--ink); color: var(--ink-inverse); font-size: var(--text-sm); font-weight: 600; line-height: 1; text-decoration: none; box-shadow: var(--shadow-md); -webkit-tap-highlight-color: transparent; }
.ovl-fab:hover { background: var(--accent); color: var(--accent-ink); }
.ovl-fab:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.ovl-fab svg { flex: none; }
@media (max-width: 700px) {
  .ovl-fab { inline-size: 48px; padding-inline: 0; justify-content: center; }
  .ovl-fab__t { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }   /* نامِ دسترس‌پذیر می‌ماند */
}
/* روی نوارِ ثابتِ پایینِ PDP (موبایل/تبلت) بالا می‌رود تا دکمه‌ی «Add to bag» را نپوشاند */
@media (max-width: 980px) {
  /* ★ با `translate` نه `inset`: نوارِ چسبنده پس از بارِ JS ظاهر می‌شود و جابه‌جاییِ `inset` یک پرشِ چیدمان (CLS ≈ ۰٫۰۰۷ در Lighthouse ی PDP) حساب می‌شد؛ transform حساب نمی‌شود. ۹۲ − ۱۶ (= --space-4) = ۷۶px */
  .ovl-fab { transition: translate .2s ease; }
  /* ۵ آبان ۱۴۰۵: دکمه خودش ۸۰px بالاتر است (> نوارِ ۷۶px) ← دیگر لازم نیست با نوار بالا برود */
}
@media (max-width: 980px) and (prefers-reduced-motion: reduce) { .ovl-fab { transition: none; } }
/* تسویه: دکمه‌ی اصلی تمام‌عرض است. «بالا بردنِ ۹۲px» فقط وقتی درست است که نوار واقعاً به کفِ دید چسبیده باشد؛ در صفحه‌ی کوتاه (مثلاً گامِ ارسال با
   یک روش) نوار در جریان و دورتر از کف می‌نشست و FAB دقیقاً روی گوشه‌اش می‌افتاد (ضربه ← چت باز می‌شد، نه پرداخت). تسویه یک جریانِ متمرکز است:
   تا نوار هست (زیر ۹۰۰px که چسبنده است) FAB پنهان؛ نوارِ درون‌جریان (`--inline`) هم دیگر FAB را بالا نمی‌برد. چت در سبد و بقیه‌ی صفحه‌ها هست. */
@media (max-width: 899px) {
  body:has(.co-cta:not(.co-cta--inline)) .ovl-fab { visibility: hidden; }
}
/* کشو/scrim ی سایت باز است ← دکمه از ترتیبِ Tab و درختِ دسترس‌پذیری بیرون (کشوها فقط `#page` را inert می‌کنند) */
body:has(.drawer[data-open]) .ovl-fab { visibility: hidden; }

/* ── دیالوگ (مشترک) ── */
.ovl { position: fixed; inset: 0; z-index: 85; display: flex; align-items: flex-end; justify-content: center; }
.ovl[hidden] { display: none; }
.ovl__scrim { position: absolute; inset: 0; background: rgb(10 10 11 / .5); opacity: 0; }
.ovl[data-open] .ovl__scrim { opacity: 1; }
.ovl__panel { position: relative; display: flex; flex-direction: column; inline-size: 100%; max-block-size: 92vh; max-block-size: 92dvh; background: var(--surface); color: var(--ink); border-radius: var(--radius-lg) var(--radius-lg) 0 0; box-shadow: 0 -12px 40px rgb(10 10 11 / .18); outline: none; opacity: 0; transform: translateY(24px); }
.ovl[data-open] .ovl__panel { opacity: 1; transform: none; }
@media (prefers-reduced-motion: no-preference) {
  .ovl__scrim { transition: opacity 180ms var(--ease); }
  .ovl__panel { transition: opacity 180ms var(--ease), transform 220ms var(--ease); }
}
.ovl__head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-4); padding: var(--space-5) var(--space-5) var(--space-3); }
.ovl__head h2 { margin: 0; font-family: var(--font-display); font-size: var(--text-2xl); font-weight: 400; line-height: 1.15; }
.ovl__x { flex: none; inline-size: 44px; block-size: 44px; display: grid; place-items: center; padding: 0; border: 1px solid var(--line); border-radius: 50%; background: var(--surface); color: var(--ink); cursor: pointer; -webkit-tap-highlight-color: transparent; }
.ovl__x:hover { border-color: var(--ink); }
.ovl__x:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.ovl__body { min-block-size: 0; overflow: auto; overscroll-behavior: contain; padding: var(--space-2) var(--space-5) calc(var(--space-5) + env(safe-area-inset-bottom, 0px)); }
@media (min-width: 701px) {
  .ovl { align-items: center; }
  .ovl__panel { inline-size: min(520px, calc(100% - 48px)); max-block-size: calc(100vh - 48px); max-block-size: calc(100dvh - 48px); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); }
}

/* ── چت‌بات ── */
.cb__lead { margin: 0 0 var(--space-4); color: var(--ink-muted); font-size: var(--text-sm); line-height: 1.6; }
.cb__sub { margin: 0 0 var(--space-1); font-size: var(--text-2xs); font-weight: 600; letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--ink-muted); }   /* در عربی توکن ۰ است (حروفِ پیوسته) */
.cb__faq details { border-block-start: 1px solid var(--line); }
.cb__faq details:last-child { border-block-end: 1px solid var(--line); }
.cb__faq summary { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); min-block-size: 48px; padding-block: var(--space-2); font-size: var(--text-sm); font-weight: 600; line-height: 1.4; cursor: pointer; list-style: none; }
.cb__faq summary::-webkit-details-marker { display: none; }
.cb__faq summary::after { content: ''; flex: none; inline-size: 8px; block-size: 8px; border-inline-end: 1.5px solid currentColor; border-block-end: 1.5px solid currentColor; transform: rotate(45deg); transition: transform 160ms var(--ease); }
.cb__faq details[open] summary::after { transform: rotate(-135deg); }
.cb__faq summary:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.cb__a { padding: 0 0 var(--space-4); font-size: var(--text-sm); line-height: 1.7; color: var(--ink-muted); overflow-wrap: anywhere; }
.cb__actions { display: grid; gap: var(--space-3); margin-block-start: var(--space-5); }
@media (min-width: 701px) {
  .ovl--chat { align-items: flex-end; justify-content: flex-end; padding: var(--space-4); }
  .ovl--chat .ovl__panel { inline-size: min(380px, 100%); max-block-size: min(620px, calc(100dvh - 32px)); }
  .ovl--chat .ovl__scrim { background: transparent; }   /* پنلِ چت سبک است؛ فقط کلیکِ بیرون می‌بندد */
}

/* ── پاپ‌آپِ تبلیغاتی ── */
.ovl--promo .ovl__panel { display: grid; overflow: auto; }
.ovl__x--float { position: absolute; inset-block-start: var(--space-3); inset-inline-end: var(--space-3); z-index: 2; background: rgb(255 255 255 / .94); }
.pp__img { aspect-ratio: 16 / 9; overflow: hidden; background: var(--surface-sunken); }   /* اندازه‌ی ثابت پیش از بارِ عکس ← بدونِ CLS */
.pp__img img { display: block; inline-size: 100%; block-size: 100%; object-fit: cover; }
.pp__body { display: grid; gap: var(--space-3); padding: var(--space-5) var(--space-5) calc(var(--space-5) + env(safe-area-inset-bottom, 0px)); }
.pp__body h2 { margin: 0; font-family: var(--font-display); font-size: var(--text-3xl); font-weight: 400; line-height: 1.1; }
.pp__body p { margin: 0; color: var(--ink-muted); line-height: 1.65; }
.pp__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); margin-block-start: var(--space-2); }
.pp__skip { min-block-size: 44px; padding-inline: var(--space-3); border: 0; background: none; color: var(--ink-muted); font: inherit; font-size: var(--text-sm); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.pp__skip:hover { color: var(--ink); }
.pp__skip:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
@media (min-width: 701px) {
  .ovl--promo .ovl__panel { inline-size: min(720px, calc(100% - 48px)); grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); overflow: hidden; }
  .pp__img { aspect-ratio: auto; block-size: 100%; min-block-size: 380px; }
  .pp__body { align-content: center; padding: var(--space-7); }
}

/* ── پاپ‌آپِ وقتِ معاینه ── */
.bk__meta { margin: var(--space-1) 0 0; font-size: var(--text-sm); color: var(--ink-muted); }
.bk { display: grid; gap: var(--space-5); }
.bk[hidden], .bk__done[hidden] { display: none; }
.bk__set { min-inline-size: 0; margin: 0; padding: 0; border: 0; }
.bk__set legend { padding: 0; margin-block-end: var(--space-3); font-size: var(--text-sm); font-weight: 600; }
.bk__days { display: flex; gap: var(--space-2); overflow-x: auto; margin-inline: calc(var(--space-5) * -1); padding: 2px var(--space-5) var(--space-2); scroll-snap-type: x proximity; scroll-padding-inline: var(--space-5); -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
/* موبایل: نوارِ افقیِ لمسی بدونِ نوارِ اسکرولِ دیدنی (نیمه‌بریده‌بودنِ کارتِ آخر نشانه‌ی اسکرول است)؛ دسکتاپ: کارت‌ها می‌شکنند و همه دیده می‌شوند */
@media (max-width: 700px) { .bk__days { scrollbar-width: none; } .bk__days::-webkit-scrollbar { display: none; } }
@media (min-width: 701px) { .bk__days { flex-wrap: wrap; overflow: visible; margin-inline: 0; padding-inline: 0; } }
.bk-day { position: relative; flex: none; inline-size: 64px; min-block-size: 78px; display: grid; place-content: center; justify-items: center; gap: 2px; border: 1px solid var(--line-strong); border-radius: var(--radius-md); background: var(--surface); text-align: center; line-height: 1.15; cursor: pointer; scroll-snap-align: start; -webkit-tap-highlight-color: transparent; }
.bk-day input, .bk-slot input { position: absolute; inset: 0; inline-size: 100%; block-size: 100%; margin: 0; opacity: 0; cursor: pointer; }   /* radio ی واقعی؛ کلِ کارت هدفِ لمسی و فوکس است */
.bk-day__w, .bk-day__m { font-size: var(--text-xs); color: var(--ink-muted); }
.bk-day__d { font-size: var(--text-xl); font-weight: 600; }
.bk-day:has(input:checked), .bk-slot:has(input:checked) { border-color: var(--ink); background: var(--ink); color: var(--ink-inverse); }
.bk-day:has(input:checked) .bk-day__w, .bk-day:has(input:checked) .bk-day__m { color: inherit; opacity: .8; }
.bk-day:has(input:disabled) { background: var(--surface-sunken); border-color: var(--line); color: var(--ink-muted); cursor: not-allowed; }
.bk-day:has(input:disabled) input { cursor: not-allowed; }
.bk-day:has(input:disabled) .bk-day__d { text-decoration: line-through; font-weight: 400; }
.bk-day:has(input:focus-visible), .bk-slot:has(input:focus-visible) { outline: 2px solid var(--accent); outline-offset: 2px; }
.bk-day--sk { border-color: var(--line); background: linear-gradient(90deg, var(--surface-sunken), var(--surface-raised), var(--surface-sunken)); background-size: 200% 100%; cursor: default; }
@media (prefers-reduced-motion: no-preference) { .bk-day--sk { animation: bk-sk 1.2s linear infinite; } }
@keyframes bk-sk { to { background-position: -200% 0; } }
.bk__slots { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-2); }
.bk__slots:empty { display: none; }
.bk-slot { position: relative; display: grid; place-items: center; min-block-size: 46px; border: 1px solid var(--line-strong); border-radius: var(--radius-sm); background: var(--surface); font-size: var(--text-sm); font-weight: 600; cursor: pointer; -webkit-tap-highlight-color: transparent; }
@media (min-width: 701px) { .bk__slots { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.bk__state { margin: var(--space-3) 0 0; font-size: var(--text-sm); line-height: 1.6; color: var(--ink-muted); }
.bk__state:empty { margin: 0; }
.bk__link, .bk__retry { display: inline-flex; align-items: center; min-block-size: 36px; padding: 0 var(--space-1); border: 0; background: none; color: var(--ink); font: inherit; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.bk__fld { display: grid; gap: var(--space-2); min-inline-size: 0; }
.bk__fld label { font-size: var(--text-sm); font-weight: 600; }
.bk__opt { font-weight: 400; color: var(--ink-muted); }
.bk__fld input, .bk__fld textarea { inline-size: 100%; min-block-size: 48px; padding: 10px var(--space-4); border: 1px solid var(--line-strong); border-radius: var(--radius-sm); background: var(--surface); color: var(--ink); font: inherit; font-size: 16px; text-align: start; }   /* ۱۶px: iOS زوم نکند */
.bk__fld textarea { min-block-size: 88px; resize: vertical; }
.bk__fld input[aria-invalid="true"], .bk__fld textarea[aria-invalid="true"] { border-color: var(--danger); box-shadow: 0 0 0 1px var(--danger); }
.bk__fld input:focus-visible, .bk__fld textarea:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
.bk__err { margin: 0; font-size: var(--text-sm); font-weight: 600; color: var(--danger); }
.bk__phone { direction: ltr; display: flex; align-items: stretch; border: 1px solid var(--line-strong); border-radius: var(--radius-sm); background: var(--surface); overflow: hidden; }   /* شماره همیشه «+971 …» از چپ */
.bk__phone:focus-within { outline: 2px solid var(--accent); outline-offset: 1px; }
.bk__phone:has(input[aria-invalid="true"]) { border-color: var(--danger); box-shadow: 0 0 0 1px var(--danger); }
.bk__cc { display: grid; place-items: center; padding-inline: var(--space-4); background: var(--surface-sunken); border-inline-end: 1px solid var(--line-strong); font-size: var(--text-sm); font-weight: 600; }
.bk__fld .bk__phone input { flex: 1; min-inline-size: 0; border: 0; border-radius: 0; box-shadow: none; outline: none; }
.bk__sum { padding: var(--space-3) var(--space-4); border: 1px solid var(--danger); border-inline-start-width: 4px; border-radius: var(--radius-sm); background: var(--surface-raised); font-size: var(--text-sm); line-height: 1.6; }
.bk__sum:focus { outline: 2px solid var(--ink); outline-offset: 2px; }
.bk__sumt { margin: 0 0 var(--space-1); font-weight: 600; }
.bk__sum ul { margin: 0; padding-inline-start: var(--space-5); }
.bk__sum a { color: var(--danger); font-weight: 600; }
.bk__hp { position: absolute; inset-inline-start: -9999px; inline-size: 1px; block-size: 1px; overflow: hidden; }
.bk__fine { margin: 0; font-size: var(--text-xs); line-height: 1.6; text-align: center; color: var(--ink-muted); }
.bk[data-busy] [data-bk-submit] { cursor: progress; opacity: .7; }
.bk__done { display: grid; justify-items: center; gap: var(--space-3); padding-block: var(--space-5); text-align: center; }
.bk__done:focus { outline: none; }
.bk__done svg { color: var(--ok); }
.bk__done h3 { margin: 0; font-family: var(--font-display); font-size: var(--text-2xl); font-weight: 400; }
.bk__done p { margin: 0; color: var(--ink-muted); font-size: var(--text-sm); line-height: 1.6; }
.bk__done .btn { margin-block-start: var(--space-3); }

/* PLP: کشوی فیلتر (سربرگ و پای ثابت، فقط مقادیر اسکرول)، چیپِ انتخاب‌شده‌ها زیرِ عنوانِ گروه، عکسِ شکل‌ها، select ی مرتب‌سازی. */

/* ── کشوی فیلتر: سربرگ («Filters» و ×) و پا («Clear all» و «Show results») ثابت؛ فقط بدنه اسکرول می‌شود ── */
.drawer[data-filters] { overflow: clip; }   /* clip، نه hidden: hidden با فوکوس/scrollIntoView هنوز کشو را جابه‌جا می‌کرد (سربرگ بیرون می‌رفت) */
.drawer[data-filters] > [data-filter-form] { display: flex; flex-direction: column; flex: 1 1 auto; min-block-size: 0; }
.drawer[data-filters] .drawer__body { flex: 1 1 auto; min-block-size: 0; overflow-y: auto; overscroll-behavior: contain; }
.drawer[data-filters] .drawer__head { position: static; flex: 0 0 auto; }
.drawer[data-filters] .drawer__foot {
  position: static; flex: 0 0 auto; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: var(--space-4);
  padding-block-end: calc(var(--space-5) + env(safe-area-inset-bottom, 0px));
}
.fclear { font-size: var(--text-sm); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; color: var(--ink); white-space: nowrap; }
.fclear:hover { color: var(--accent); }

/* ── چیپِ مواردِ انتخاب‌شده زیرِ عنوانِ هر گروه (تکی قابلِ حذف) ── */
.fsel { display: flex; flex-wrap: wrap; gap: var(--space-2); padding-block-end: var(--space-3); }
.fsel[hidden] { display: none; }
.fsel .achip { cursor: pointer; font: inherit; font-size: var(--text-xs); }

/* ── عکسِ شکل‌ها (همان عکسِ صفحه‌ی اصلی) در نوارِ فهرست، چیپِ فیلتر ── */
.shapechip__img { inline-size: 66px; block-size: auto; max-block-size: 30px; object-fit: contain; mix-blend-mode: multiply; }
.shapeico--img { inline-size: 70px; block-size: auto; max-block-size: 30px; object-fit: contain; mix-blend-mode: multiply; }
/* انتخاب‌شده: عکس‌ها خطِ تیره‌اند ← کلِ چیپ تیره نمی‌شود؛ زمینه‌ی روشن + کادرِ پررنگ */
.shapechip[aria-current="true"], .fchip--shape:has(input:checked) { background: var(--surface-sunken); color: var(--ink); border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.shapechip[aria-current="true"] svg, .fchip--shape:has(input:checked) svg.shapeico { color: var(--ink); }
.shapechip[aria-disabled="true"], .chip[aria-disabled="true"] { opacity: .4; cursor: not-allowed; }
.shapechip[aria-disabled="true"]:hover { border-color: var(--line); }

/* ── select ی مرتب‌سازی ── */
.sortby label { display: inline-flex; align-items: center; gap: var(--space-2); }
.sortby label > span { color: var(--ink-muted); font-weight: 500; white-space: nowrap; }
.sortby select {
  appearance: none; -webkit-appearance: none; cursor: pointer;
  min-block-size: 40px; padding-block: 8px; padding-inline: 16px 38px;
  border: 1px solid var(--line-strong); border-radius: var(--radius-pill); background-color: var(--surface); color: var(--ink);
  font: inherit; font-size: var(--text-sm); font-weight: 600; line-height: 1.2;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2318181b' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-size: 14px 14px; background-position: right 14px center;
  transition: border-color 200ms var(--ease), box-shadow 200ms var(--ease);
}
[dir="rtl"] .sortby select { background-position: left 14px center; }
.sortby select:hover { border-color: var(--ink); }
.sortby select:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.sortby select option { font-weight: 500; color: var(--ink); background: var(--surface); }

/* ═══════════════════════════════════════════════════════════════════════
   PWA — صفحه‌ی آفلاین (T8) — `docs/design/optiview/pwa.md`.
   صفحه مستقل است (بدونِ layout ی اصلی): فقط ستونِ وسط‌چین. ویژگی‌های منطقی (RTL رایگان)؛ توکن‌ها از CSS ی مشترک.
   ═══════════════════════════════════════════════════════════════════════ */

.offline { margin: 0; min-block-size: 100vh; min-block-size: 100svh; background: var(--surface); color: var(--ink); }
.offline__main {
  box-sizing: border-box; min-block-size: inherit; display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: var(--space-3); padding: var(--space-8) var(--space-4); text-align: center;
}
.offline__mark { display: block; inline-size: 72px; block-size: auto; margin-block-end: var(--space-3); animation: offline-breathe 3.2s ease-in-out infinite; }
.offline__title { margin: 0; font-size: clamp(28px, 6vw, var(--text-4xl)); text-wrap: balance; }
.offline__text { max-inline-size: 40ch; margin: 0 0 var(--space-3); color: var(--ink-muted); text-wrap: balance; }
.offline .btn { min-block-size: 44px; min-inline-size: 160px; cursor: pointer; }
.offline__hint { max-inline-size: 40ch; margin: var(--space-3) 0 0; font-size: var(--text-sm); color: var(--ink-muted); text-wrap: balance; }

@keyframes offline-breathe { 0%, 100% { opacity: 1; } 50% { opacity: .55; } }
@media (prefers-reduced-motion: reduce) { .offline__mark { animation: none; } }

/* ══ عربی / RTL (Q3 — docs/design/optiview/ar-rtl.md) ═══════════════════════════════════════════════════════════════
   اصلاح‌های کوچکِ جهت‌دار که با ویژگی‌های منطقیِ پایه حل نمی‌شوند؛ ترتیبِ فایل (بعد از بقیه‌ی css/*.css و قبل از search.css) بی‌اهمیت است
   چون همه با `[dir="rtl"]` ویژه‌تر می‌شوند. */

/* ۱) ★ `.num` (direction: ltr) ویژگی‌های منطقی را مطابقِ جهتِ **خودش** حل می‌کند، نه والد: `inset-inline-start` روی `.pdp__count`
      در RTL «چپ» می‌شد و شمارنده‌ی گالری (۱ / ۲) روی دکمه‌ی بزرگ‌نمایی (inline-end ی بدونِ .num) می‌نشست. از «طرفِ شروعِ صفحه» (راست) بگذار. */
[dir="rtl"] .pdp__count { inset-inline: auto; left: auto; right: 14px; }
/* همان تله برای فاصله‌ی «اولِ خط» روی `.num` ها: `margin-inline-start` روی عنصرِ LTR یعنی «چپ». در RTL سمتِ شروع راست است ← فیزیکی بنویس. */
[dir="rtl"] .fgroup__h .count, [dir="rtl"] .fbox .n { margin-inline-start: 0; margin-left: 0; margin-right: auto; }
[dir="rtl"] .ways .more.num { margin-inline-start: 0; margin-left: 0; margin-right: 2px; }
[dir="rtl"] .buy__code .num { margin-inline-start: 0; margin-left: 0; margin-right: 6px; }
/* شمارنده‌ی سبد (`.dot`): `inset-inline-end` روی `.num` ی LTR «راست» می‌شد؛ در RTL مثلِ بقیه‌ی آیکن‌ها به چپ آینه شود. */
[dir="rtl"] .cartbtn .dot { inset-inline: auto; right: auto; left: 2px; }

/* ۲) `.num` ی بلوک (div/p/td/dd) با direction: ltr چپ‌چین می‌شد؛ در RTL باید به راست بچسبد (شروعِ خط).
      (اینلاین‌ها دست‌نخورده‌اند: ایزوله‌ی LTR داخلِ جمله‌ی راست‌به‌چپ.) */
[dir="rtl"] div.num, [dir="rtl"] p.num, [dir="rtl"] td.num, [dir="rtl"] dd.num, [dir="rtl"] li.num { text-align: right; }
[dir="rtl"] .line__meta.num, [dir="rtl"] .co-line__meta.num { display: block; text-align: right; }

/* ۳) کلمه‌ی یتیم: آخرین سطرِ یک‌کلمه‌ای در متنِ عربی (فقط RTL تا انگلیسی بی‌تغییر بماند). `pretty` سطرِ آخر را متعادل می‌کند، `balance` تیترها را. */
[dir="rtl"] :is(p, li, dd, figcaption, .t-body, .t-meta, .muted, [class*="__sub"], [class*="__desc"], [class*="__text"], [class*="__note"], .lw__opt-main > span) { text-wrap: pretty; }
[dir="rtl"] :is(h1, h2, h3, .t-display, .t-section, .hero__label) { text-wrap: balance; }

/* ۴) ★ مارکیِ `.wordbar`: ردیفِ RTL از لبه‌ی راست شروع می‌شود و `wordmarq` (۰ ← −۵۰٪) آن را از قابِ دید به چپ می‌برد ← نوارِ خالی
      (برعکس‌کردنِ keyframe فقط از −۵۰٪ شروع می‌کرد). در RTL باید ۰ ← +۵۰٪ برود تا قاب همیشه از محتوا پُر بماند. جهتِ دیداری مثلِ قبل
      (ردیفِ عادی به راست، `--rev` به چپ). */
@keyframes wordmarq-rtl { from { transform: translateX(0); } to { transform: translateX(50%); } }
[dir="rtl"] .wordbar__track { animation-name: wordmarq-rtl; animation-direction: normal; }
[dir="rtl"] .wordbar--rev .wordbar__track { animation-direction: reverse; }

/* ۵) کشیدنِ لمسیِ گالریِ PDP (RTL: چپ←راست = بعدی): بدونِ `touch-action: pan-y` مرورگر حرکتِ افقی را برای خودش برمی‌دارد و
      `pointercancel` می‌فرستد ← swipe هرگز اجرا نمی‌شد (هیرو همین را از قبل دارد). `rtl.mjs` با لمسِ واقعی می‌سنجد. */
.pdp__stage { touch-action: pan-y; }

/* ۶) ★ «RB2140 · ۴ ألوان» در سرتیترِ کارت: عددِ «۴» بعد از مدلِ لاتین، طبقِ W7 ی bidi لاتین می‌شد و کنارِ مدل می‌چسبید («۴ GG1922S ألوان»
      از راست). `isolate` روی شمارنده، آن را از مدل جدا می‌کند: از راست «مدل، سپس ۴ ألوان». */
[dir="rtl"] .card h3 .t-meta { unicode-bidi: isolate; }

/* ۷) ★ مارکیِ لوگوی برندها (`.marquee`، خانه): همان تلهٔ `.wordbar` (۴) — `reverse` ی keyframe ی `marq` (۰ ← −۵۰٪) در RTL از −۵۰٪ شروع می‌کرد و
      ردیفِ راست‌چین را از قاب بیرون می‌برد (پوششِ ۰٪ در ۳۹۰/۷۶۸ و ۹–۳۱٪ در ۱۲۸۰). در RTL ۰ ← +۵۰٪ با جهتِ عادی؛ جهتِ دیداری همان (به راست). */
@keyframes marq-rtl { from { transform: translateX(0); } to { transform: translateX(50%); } }
[dir="rtl"] .marquee__track { animation-name: marq-rtl; animation-direction: normal; }

/* ═══ جستجوی زنده + حالتِ خالی (T3b) ═══ */

/* ── پیشنهادِ زنده (زیرِ فیلدِ کشوی جستجو؛ `search.js` می‌سازد) ───────────────────────────
   فهرست در جریانِ کشو می‌نشیند (نه شناور)؛ بنابراین روی محتوای دیگر نمی‌افتد و در RTL و موبایل جابه‌جا نمی‌شود. */
/* کشوی بالا ستونِ flex است و `.wrap` ی آن با margin:auto به اندازه‌ی محتوا جمع می‌شد ← عرضِ فیلد/فهرست با هر تایپ می‌پرید */
.drawer--top > .wrap { inline-size: 100%; max-inline-size: 640px; }
.sg { margin-block-start: var(--space-4); }
.sg[hidden], [data-sg-hide][hidden] { display: none !important; }
.sg__list { max-block-size: min(calc(100dvh - 190px), 560px); overflow-y: auto; overscroll-behavior: contain; transition: opacity var(--dur) var(--ease); }
.sg[data-busy] .sg__list { opacity: .55; }
.sg__label { margin: var(--space-4) 0 var(--space-1); padding-inline: var(--space-2); font-size: var(--text-xs); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--ink-muted); }
.sg__group:first-child .sg__label { margin-block-start: 0; }

.sg__opt { display: flex; align-items: center; gap: var(--space-3); min-block-size: 52px; padding: var(--space-2); border-radius: var(--radius-md); color: var(--ink); text-decoration: none; transition: background var(--dur) var(--ease); }
.sg__opt:hover { background: var(--surface-sunken); }
.sg__opt[aria-selected="true"] { background: var(--surface-sunken); box-shadow: inset 0 0 0 2px var(--ink); }
.sg__opt img { inline-size: 52px; block-size: 52px; flex: none; object-fit: contain; background: var(--surface-sunken); border-radius: var(--radius-md); }
.sg__txt { display: grid; min-inline-size: 0; flex: 1; }
.sg__txt > * { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sg__name { font-size: var(--text-sm); font-weight: 600; }
.sg__meta { font-size: var(--text-xs); color: var(--ink-muted); }
.sg__price { flex: none; font-size: var(--text-sm); white-space: nowrap; }
.sg__opt--all { margin-block-start: var(--space-2); border-block-start: 1px solid var(--line); border-radius: 0; padding-block: var(--space-3); font-weight: 600; }
.sg__opt--all[aria-selected="true"] { border-radius: var(--radius-md); }
.sg__arrow { flex: none; margin-inline-start: auto; }
[dir="rtl"] .sg__arrow { transform: scaleX(-1); }
.sg__none { margin: 0; padding: var(--space-3) var(--space-2); color: var(--ink-muted); font-size: var(--text-sm); }

/* ── حالتِ خالیِ فهرست/جستجو ───────────────────────────────────────────────────────── */
.sempty { padding-block: var(--space-8) var(--space-9); }
.sempty__msg { max-inline-size: 520px; margin-inline: auto; text-align: center; }
.sempty__title { margin: 0 0 var(--space-3); font-size: var(--text-2xl); line-height: var(--leading-tight); font-weight: 600; overflow-wrap: anywhere; }
.sempty__msg p { margin: 0 0 var(--space-5); color: var(--ink-muted); }
.sempty__search { display: flex; gap: var(--space-2); max-inline-size: 420px; margin: 0 auto var(--space-5); }
.sempty__search input { flex: 1; min-inline-size: 0; min-block-size: 44px; padding-inline: var(--space-4); border: 1px solid var(--line-strong); border-radius: var(--radius-md); background: var(--surface); font: inherit; font-size: var(--text-sm); }
.sempty__search input:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.sempty__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-3); }
.sempty__alt { margin-block-start: var(--space-8); }
.sempty__alt .t-label { margin-block-end: var(--space-4); }
.sempty__alt .chips { margin-block-end: 0; }
/* «پرفروش‌ها»: کاشیِ فشرده (۴ تا) — دو ستون در گوشی، چهار ستون از ۷۰۱px */
.stiles { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-6) var(--space-3); }
.stile { display: grid; gap: 4px; justify-items: center; text-align: center; color: var(--ink); text-decoration: none; }
.stile__media { display: block; inline-size: 100%; aspect-ratio: 3 / 2; border-radius: var(--radius-md); background: var(--surface-sunken); overflow: hidden; }
.stile__media picture { display: contents; }
.stile__media img { inline-size: 100%; block-size: 100%; object-fit: contain; transition: transform 400ms var(--ease); }
.stile:hover .stile__media img { transform: scale(1.04); }
.stile:focus-visible { outline: 2px solid var(--ink); outline-offset: 4px; border-radius: var(--radius-md); }
.stile__name { font-size: var(--text-sm); font-weight: 600; }
@media (min-width: 701px) {
  .stiles { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-7) var(--space-5); }
}

@media (prefers-reduced-motion: reduce) {
  .sg__list, .sg__opt, .stile__media img { transition: none; }
}

/* ── ویزارد: فوکسِ فیلدِ نامعتبر زیرِ سربرگِ چسبنده نرود (focus() به scroll-margin احترام می‌گذارد) ── */
.lw__field input { scroll-margin-block: 96px 140px; }

/* ── هدفِ لمسیِ ≥۴۰px (matrix): «Sort by» ی فهرست و «Price breakdown» ی ویزارد ── */
.sortby select { min-block-size: 40px; min-inline-size: 32px; }
.lw__total summary { display: flex; align-items: center; min-block-size: 40px; }
/* صفحه‌ی ویزارد h1 دارد (در مودال h2)؛ همان ظاهرِ h2 */
.lw__head h1 { margin: var(--space-3) 0 0; font-size: var(--text-xl); font-weight: 500; outline: none; }

/* فهرستِ گزینه‌های select (js/select.js): پنلِ شناور با توکن‌های خودمان؛ خودِ select بسته‌اش را کنترل‌های صفحه استایل می‌کنند. */
select[aria-expanded="true"] { border-color: var(--ink); }
.ovsel {
  position: fixed; z-index: 300; box-sizing: border-box; overflow-y: auto; overscroll-behavior: contain;
  padding: var(--space-2); border: 1px solid var(--line-strong); border-radius: var(--radius-md);
  background: var(--surface); color: var(--ink); box-shadow: 0 12px 32px rgb(16 16 18 / .16), 0 2px 6px rgb(16 16 18 / .08);
  font-size: var(--text-sm); outline: none; animation: ovsel-in 120ms var(--ease);
}
@keyframes ovsel-in { from { opacity: 0; translate: 0 -4px; } }
@media (prefers-reduced-motion: reduce) { .ovsel { animation: none; } }
.ovsel__opt {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-4);
  padding: 9px var(--space-3); border-radius: var(--radius-sm); cursor: pointer; font-weight: 500; line-height: 1.35;
}
.ovsel__opt[aria-selected="true"] { font-weight: 700; }
.ovsel__opt[aria-selected="true"]::after {
  content: ""; flex: none; inline-size: 14px; block-size: 14px; background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3.2L13 4.8'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3.2L13 4.8'/%3E%3C/svg%3E") center / contain no-repeat;
}
.ovsel__opt--active { background: var(--surface-sunken); }
.ovsel__opt--off { opacity: .45; cursor: not-allowed; }
.ovsel__group { padding: var(--space-3) var(--space-3) var(--space-1); color: var(--ink-muted); font-size: var(--text-xs); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
@media (forced-colors: active) { .ovsel__opt--active { outline: 2px solid Highlight; outline-offset: -2px; } }
