1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"/><link rel="preload" as="image" href="/images/Phonetradr-logo-small.svg" fetchPriority="auto"/><link rel="preload" as="image" imageSrcSet="https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=640&fit=max&auto=format 640w, https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=960&fit=max&auto=format 960w, https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024&fit=max&auto=format 1024w" imageSizes="(max-width: 767px) 19.625rem, (max-width: 1023px) 45vw, 34rem" fetchPriority="high"/><link rel="preload" href="/images/footer/mastercard-logo.svg" as="image"/><link rel="preload" href="/images/footer/visa-logo.svg" as="image"/><link rel="preload" href="/images/footer/fasta-logo.svg" as="image"/><link rel="preload" href="/images/footer/zapper-logo.svg" as="image"/><link rel="preload" href="/images/footer/mobicred-logo.svg" as="image"/><link rel="preload" href="/images/footer/discover-logo.svg" as="image"/><link rel="preload" href="/images/footer/diners-club-logo.svg" as="image"/><link rel="preload" href="/images/footer/instant-eft-logo.svg" as="image"/>
1<link rel="stylesheet" href="/_next/static/css/77f0440bdb3d24e5.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-d884bb06af1eeb6c.js"/>
1<script src="/_next/static/chunks/4bd1b696-df4c0fb946159b6a.js" async=""></script>
1<script src="/_next/static/chunks/3794-521b158a965ff4e3.js" async=""></script>
1<script src="/_next/static/chunks/main-app-a8459d5e09b04e0a.js" async=""></script>
1<script src="/_next/static/chunks/1930-431df5db3d2d6569.js" async=""></script>
1<script src="/_next/static/chunks/2762-da6e0ec4f86e948b.js" async=""></script>
1<script src="/_next/static/chunks/644-6a269945e154987b.js" async=""></script>
1<script src="/_next/static/chunks/app/layout-9ff031204bc308e3.js" async=""></script>
1<script src="/_next/static/chunks/8409-de5726a4a278d28f.js" async=""></script>
1<script src="/_next/static/chunks/8500-f62a38ff68ab7f42.js" async=""></script>
1<script src="/_next/static/chunks/9258-716243a91d561964.js" async=""></script>
1<script src="/_next/static/chunks/7649-fc2ec28b21f07c2e.js" async=""></script>
1<script src="/_next/static/chunks/8571-ac6ff42855de95c3.js" async=""></script>
1<script src="/_next/static/chunks/app/(site)/buy/products/%5Bhandle%5D/page-5ec5e55b73260bac.js" async=""></script>
1<script src="/_next/static/chunks/9655-ba60ccb42fba7636.js" async=""></script>
1<script src="/_next/static/chunks/3659-e799d83a1f7641e6.js" async=""></script>
1<script src="/_next/static/chunks/8196-0ce48e1d7930add4.js" async=""></script>
1<script src="/_next/static/chunks/7341-a169b16726cdd02f.js" async=""></script>
1<script src="/_next/static/chunks/3819-592715bab4de6758.js" async=""></script>
1<script src="/_next/static/chunks/3550-97db577c2243f766.js" async=""></script>
1<script src="/_next/static/chunks/7864-8398857fc60a8f4f.js" async=""></script>
1<script src="/_next/static/chunks/9332-f4848cfda1146589.js" async=""></script>
1<script src="/_next/static/chunks/7340-a172a40aa922cb24.js" async=""></script>
1<script src="/_next/static/chunks/app/(site)/layout-6678ff408d8c6633.js" async=""></script>
1<link rel="preload" href="/images/footer/bank-transfer-logo.svg" as="image"/><link rel="preload" as="image" href="/images/contact_us/whatsapp-icon.svg"/><meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)"/><meta name="theme-color" content="#141019" media="(prefers-color-scheme: dark)"/><title>Buy an Apple iPad iPad Pro 11" (2nd gen) 128GB Gray | Phonetradr</title><meta name="description" content="Get the best deal in SA on a quality-approved second hand iPad iPad Pro 11" (2nd gen) with a 12-month warranty, Browse our site for other tablets on sale for today."/><link rel="canonical" href="https://www.phonetradr.com/buy/products/apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1"/><meta property="og:title" content="Buy an Apple iPad iPad Pro 11" (2nd gen) 128GB Gray | Phonetradr"/><meta property="og:description" content="Get the best deal in SA on a quality-approved second hand iPad iPad Pro 11" (2nd gen) with a 12-month warranty, Browse our site for other tablets on sale for today."/><meta property="og:url" content="https://www.phonetradr.com/buy/products/apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1"/><meta property="og:site_name" content="Phonetradr"/><meta property="og:locale" content="en_ZA"/><meta property="og:image" content="https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024&h=1024"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Buy an Apple iPad iPad Pro 11" (2nd gen) 128GB Gray | Phonetradr"/><meta name="twitter:description" content="Get the best deal in SA on a quality-approved second hand iPad iPad Pro 11" (2nd gen) with a 12-month warranty, Browse our site for other tablets on sale for today."/><meta name="twitter:image" content="https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024&h=1024"/><link rel="shortcut icon" href="/images/phonetradr_logo.svg"/><link rel="icon" href="/images/phonetradr_logo.svg" type="image/svg+xml"/>
1<script id="theme-early-bootstrap" data-cfasync="false">(function(){try{var t=localStorage.getItem('theme');var dark=t==='dark';var r=document.documentElement;if(dark){r.classList.add('dark');r.classList.remove('light');r.style.backgroundColor='hsl(222 47% 11%)';}else{r.classList.remove('dark');r.style.backgroundColor='';}r.style.colorScheme=dark?'dark':'light';document.cookie='pt-theme='+(dark?'dark':'light')+'; Path=/; Max-Age=31536000; SameSite=Lax';}catch(e){}})();</script>
1<script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script>
1<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
1<script id="theme-init" data-cfasync="false"> 2(function() { 3 try { 4 var path = location.pathname; 5 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 6 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 7 var ds; 8 var pc; 9 10 if (isAdminV2) { 11 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 12 pc = localStorage.getItem('admin-primary-color') || 'blue'; 13 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 14 } else { 15 var seasonalKey = localStorage.getItem('seasonal-theme'); 16 var preset = seasonalKey && seasonalPresets[seasonalKey]; 17 18 if (!localStorage.getItem('design-system-id-migrated-v3')) { 19 var storedDs = localStorage.getItem('design-system'); 20 if (storedDs === 'frosted-slate') { 21 localStorage.setItem('design-system', 'frosted'); 22 } 23 localStorage.setItem('design-system-id-migrated-v3', '1'); 24 } 25 26 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 27 var currentDs = localStorage.getItem('design-system'); 28 if (!currentDs || currentDs === 'modern-minimal') { 29 localStorage.setItem('design-system', 'frosted-slate'); 30 } 31 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 32 } 33 34 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 35 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 36 } 37 var theme = localStorage.getItem('theme') || 'light'; 38 var isDark = theme === 'dark'; 39 40 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 41 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
4160 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 42 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 43 44 var dsData = designSystems[ds] || designSystems['frosted-slate']; 45 var pcData = primaryColors[pc] || primaryColors['purple']; 46 var colors = isDark ? dsData.dark : dsData.light; 47 var primary = isDark ? pcData.dark : pcData.light; 48 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 49 var sem = isDark ? semantic.dark : semantic.light; 50 51 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 52 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 53 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 54 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 55 var variantHue = (hue + 130) % 360; 56 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 57 var variantLit = isDark ? 55 : 42; 58 59 var applyLightFrostedGlass = function(primary, background) { 60 var parseHsl = function(v) { 61 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 62 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 63 }; 64 var hslToRgb = function(h, s, l) { 65 s /= 100; l /= 100; 66 var c = (1 - Math.abs(2 * l - 1)) * s; 67 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 68 var m = l - c / 2; 69 var r = 0, g = 0, b = 0; 70 if (h < 60) { r = c; g = x; } 71 else if (h < 120) { r = x; g = c; } 72 else if (h < 180) { g = c; b = x; } 73 else if (h < 240) { g = x; b = c; } 74 else if (h < 300) { r = x; b = c; } 75 else { r = c; b = x; } 76 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 77 }; 78 var rgbToHsl = function(r, g, b) { 79 r /= 255; g /= 255; b /= 255; 80 var max = Math.max(r, g, b), min = Math.min(r, g, b); 81 var l = (max + min) / 2, h = 0, s = 0; 82 if (max !== min) { 83 var d = max - min; 84 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 85 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 86 else if (max === g) h = ((b - r) / d + 2) / 6; 87 else h = ((r - g) / d + 4) / 6; 88 } 89 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 90 }; 91 var blend = function(alpha) { 92 var p = parseHsl(primary); 93 var bg = parseHsl(background); 94 var pr = hslToRgb(p.h, p.s, p.l); 95 var br = hslToRgb(bg.h, bg.s, bg.l); 96 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 97 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 98 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 99 return rgbToHsl(r, g, b); 100 }; 101 var glass = blend(0.22); 102 var glassChrome = blend(0.28); 103 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 104 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 105 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 106 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 107 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 108 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 109 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 110 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 111 return { 112 glass: glass + ' / 0.92', 113 glassChrome: glassChrome + ' / 0.92', 114 glassSubtle: blend(0.15) + ' / 0.88', 115 glassHover: blend(0.28) + ' / 0.94', 116 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 117 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 118 }; 119 }; 120 121 if (dsData.tintSurfacesFromPrimary && isDark) { 122 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 123 colors = Object.assign({}, colors, { 124 background: hue + ' ' + surfaceSat + '% 9%', 125 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 126 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 127 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 128 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 129 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 130 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 131 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 132 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 133 glass: hue + ' 28% 16% / 0.88', 134 glassChrome: hue + ' 28% 14% / 0.88', 135 glassSubtle: hue + ' 26% 18% / 0.75', 136 glassHover: hue + ' 30% 20% / 0.92', 137 glassBorder: hue + ' 24% 28% / 0.55' 138 }); 139 } else if (dsData.frostedChrome && !isDark) { 140 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 141 } 142 143 var root = document.documentElement; 144 root.setAttribute('data-design-system', ds); 145 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 146 else root.removeAttribute('data-frosted-chrome'); 147 if (isDark) root.classList.add('dark'); 148 else root.classList.remove('dark'); 149 root.style.colorScheme = isDark ? 'dark' : 'light'; 150 151 var h = function(v) { return 'hsl(' + v + ')'; }; 152 153 root.style.setProperty('--background', h(colors.background)); 154 root.style.setProperty('--foreground', h(colors.foreground)); 155 root.style.setProperty('--card', h(colors.card)); 156 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 157 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 158 root.style.setProperty('--popover', h(colors.popover)); 159 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 160 root.style.setProperty('--border', h(colors.border)); 161 root.style.setProperty('--muted', h(colors.muted)); 162 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 163 root.style.setProperty('--secondary', h(colors.secondary)); 164 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 165 root.style.setProperty('--accent', h(colors.accent)); 166 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 167 root.style.setProperty('--input', h(colors.input)); 168 root.style.setProperty('--sidebar', h(colors.sidebar)); 169 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 170 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 171 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 172 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 173 174 root.style.setProperty('--glass', h(colors.glass)); 175 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 176 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 177 root.style.setProperty('--glass-hover', h(colors.glassHover)); 178 root.style.setProperty('--glass-border', h(colors.glassBorder)); 179 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 180 181 if (dsData.frostedChrome && !isDark) { 182 var darkChrome = dsData.dark; 183 var darkPrimary = pcData.dark; 184 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 185 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 186 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 187 if (dsData.tintSurfacesFromPrimary) { 188 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 189 darkChrome = Object.assign({}, darkChrome, { 190 glass: darkHue + ' 28% 16% / 0.88', 191 glassChrome: darkHue + ' 28% 14% / 0.88', 192 glassBorder: darkHue + ' 24% 28% / 0.55' 193 }); 194 } 195 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 196 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 197 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 198 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 199 } 200 201 if (!isDark) { 202 root.style.setProperty('--hero-halo-center', h(colors.background)); 203 root.style.setProperty('--hero-halo-mid', h(colors.card)); 204 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 205 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 206 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 207 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
207+ '%' : colors.border)); 208 } else { 209 root.style.setProperty('--hero-halo-center', h(colors.card)); 210 root.style.setProperty('--hero-halo-mid', h(colors.background)); 211 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 212 root.style.setProperty('--hero-halo-edge', h(colors.border)); 213 } 214 215 root.style.setProperty('--primary', h(primary)); 216 root.style.setProperty('--primary-foreground', h(primaryFg)); 217 root.style.setProperty('--ring', h(primary)); 218 root.style.setProperty('--sidebar-primary', h(primary)); 219 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 220 root.style.setProperty('--sidebar-ring', h(primary)); 221 222 root.style.setProperty('--destructive', h(sem.destructive)); 223 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 224 225 if (isDark) { 226 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 227 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 228 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 229 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 230 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 231 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
231+ '% / 0.2'); 232 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 233 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 234 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 235 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 236 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 237 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 238 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 239 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 240 } else { 241 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 242 var textSat = Math.min(Math.max(sat - 2, 52), 80); 243 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 244 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 245 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 246 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 247 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 248 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 249 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 250 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 251 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 252 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 253 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 254 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 255 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 256 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 257 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 258 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 259 } 260 261 var sat = isDark ? 70 : 65; 262 var lit = isDark ? 55 : 50; 263 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 264 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 265 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 266 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 267 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 268 } catch (e) {} 269})(); 270</script>
270<script id="buy-trust-dismiss-init"> 271(function() { 272 try { 273 var path = location.pathname.split("?")[0]; 274 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 275 document.documentElement.setAttribute("data-trust-dismissed", "1"); 276 } 277 } catch (e) {} 278})(); 279</script>
279<script data-cfasync="false" nonce="58bf6575-b11a-4b61-89ab-63db3e769eaa">try{(function(w,d){!function(kP,kQ,kR,kS){if(kP.zaraz)console.error("zaraz is loaded twice");else{kP[kR]=kP[kR]||{};kP[kR].executed=[];kP.zaraz={deferred:[],listeners:[]};kP.zaraz._v="20";kP.zaraz._n="58bf6575-b11a-4b61-89ab-63db3e769eaa";kP.zaraz.q=[];kP.zaraz._f=function(kT){return async function(){var kU=Array.prototype.slice.call(arguments);kP.zaraz.q.push({m:kT,a:kU})}};for(const kV of["track","set","debug"])kP.zaraz[kV]=kP.zaraz._f(kV);kP.zaraz.init=()=>{var kW=kQ.getElementsByTagName(kS)[0],kX=kQ.createElement(kS),kY=kQ.getElementsByTagName("title")[0];kY&&(kP[kR].t=kQ.getElementsByTagName("title")[0].text);kP[kR].x=Math.random();kP[kR].w=kP.screen.width;kP[kR].h=kP.screen.height;kP[kR].j=kP.innerHeight;kP[kR].e=kP.innerWidth;kP[kR].l=kP.location.href;kP[kR].r=kQ.referrer;kP[kR].k=kP.screen.colorDepth;kP[kR].n=kQ.characterSet;kP[kR].o=(new Date).getTimezoneOffset();if(kP.dataLayer)for(const kZ of Object.entries(Object.entries(dataLayer).reduce((k$,la)=>({...k$[1],...la[1]}),{})))zaraz.set(kZ[0],kZ[1],{scope:"page"});kP[kR].q=[];for(;kP.zaraz.q.length;){const lb=kP.zaraz.q.shift();kP[kR].q.push(lb)}kX.defer=!0;for(const lc of[localStorage,sessionStorage])Object.keys(lc||{}).filter(le=>le.startsWith("_zaraz_")).forEach(ld=>{try{kP[kR]["z_"+ld.slice(7)]=JSON.parse(lc.getItem(ld))}catch{kP[kR]["z_"+ld.slice(7)]=lc.getItem(ld)}});kX.referrerPolicy="origin";kX.src="/cdn-cgi/zaraz/s.js?z="+btoa(encodeURIComponent(JSON.stringify(kP[kR])));kW.parentNode.insertBefore(kX,kW)};["complete","interactive"].includes(kQ.readyState)?zaraz.init():kP.addEventListener("DOMContentLoaded",zaraz.init)}}(w,d,"zarazData","script");window.zaraz._p=async kH=>new Promise(kI=>{if(kH){kH.e&&kH.e.forEach(kJ=>{try{const kK=d.querySelector("script[nonce]"),kL=kK?.nonce||kK?.getAttribute("nonce"),kM=d.createElement("script");kL&&(kM.nonce=kL);kM.innerHTML=kJ;kM.onload=()=>{d.head.removeChild(kM)};d.head.appendChild(kM)}catch(kN){console.error(`Error executing script: ${kJ}\n`,kN)}});Promise.allSettled((kH.f||[]).map(kO=>fetch(kO[0],kO[1])))}kI()});zaraz._p({"e":["(function(w,d){})(window,document)"]});})(window,document)}catch(e){throw fetch("/cdn-cgi/zaraz/t"),e;};</script>
279</head><body class="font-sans antialiased min-h-screen bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><noscript><iframe title="Google Tag Manager" src="https://www.googletagmanager.com/ns.html?id=GTM-KST77VN" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="flex min-h-screen flex-col"><a class="bg-primary text-primary-foreground focus:not-sr-only sr-only focus:absolute focus:left-4 focus:top-4 focus:z-50 focus:rounded-md focus:px-4 focus:py-2" href="#main-content">Skip to main content</a><header class="site-header sticky top-0 z-40"><div class="mx-auto w-full max-w-[73.125rem] px-4 md:px-6 flex flex-col items-center gap-2 py-2 md:grid md:min-h-[50px] md:grid-cols-[auto_1fr_auto] md:items-center md:gap-2"><a class="site-logo-link inline-flex shrink-0 items-center focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-foreground focus-visible:ring-offset-2 focus-visible:ring-offset-primary md:justify-self-start" href="/"><img src="/images/Phonetradr-logo-small.svg" alt="Phonetradr" width="140" height="44" fetchPriority="auto" class="h-8 w-auto max-w-[140px] md:h-9"/></a><nav aria-label="Main" class="flex max-w-full flex-wrap items-center justify-center gap-0.5 sm:gap-1 md:col-start-2"><a class="site-nav-link text-sm md:text-base" href="/buy">Buy</a><a class="site-nav-link text-sm md:text-base" href="/sell">Sell</a><a class="site-nav-link text-sm md:text-base" href="/how-to">How-To</a><a class="site-nav-link text-sm md:text-base" href="/faq">FAQ</a><a class="site-nav-link text-sm md:text-base font-normal" href="/invite-friends">Invite Friends</a></nav><div class="flex items-center justify-center gap-1 sm:gap-2 md:justify-self-end"><button class="inline-flex items-center justify-center whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground [[data-frosted-chrome=true]_&]:hover:bg-[hsl(var(--surface-hover))] [[data-frosted-chrome=true]_&]:hover:text-[hsl(var(--chip-main-text))] rounded-md site-nav-link relative h-9 gap-1.5 px-2 text-sm md:text-base" type="button" aria-label="Cart" aria-expanded="false" aria-haspopup="dialog"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shopping-cart text-primary h-5 w-5 shrink-0" aria-hidden="true"><circle cx="8" cy="21" r="1"></circle><circle cx="19" cy="21" r="1"></circle><path d="M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12"></path></svg><span class="hidden sm:inline">Cart</span></button><span class="site-nav-link text-sm md:text-base inline-flex h-9 min-w-[4.5rem] items-center justify-center opacity-60" aria-hidden="true"><span class="bg-primary-foreground/20 h-8 w-8 rounded-full md:h-9 md:w-9"></span></span><span class="site-header-divider border-primary-foreground/25 md:border-l md:pl-1"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [[data-frosted-chrome=true]_&]:hover:bg-[hsl(var(--surface-hover))] [[data-frosted-chrome=true]_&]:hover:text-[hsl(var(--chip-main-text))] h-9 w-9 text-primary-foreground hover:bg-primary-foreground/10 hover:text-primary-foreground border-0 site-theme-toggle" type="button" disabled="" aria-label="Loading theme"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun h-5 w-5 opacity-50" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg></button></span></div></div></header>
279<main id="main-content" class="flex-1 bg-background mx-auto w-full px-4 md:px-6 max-w-[73.125rem] py-8 md:py-10">
279<script type="application/ld+json" id="buy-pdp-breadcrumb-jsonld-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Buy","item":"https://www.phonetradr.com/buy"},{"@type":"ListItem","position":2,"name":"Tablets","item":"https://www.phonetradr.com/buy/tablet"},{"@type":"ListItem","position":3,"name":"Apple iPad iPad Pro 11\" (2nd gen)","item":"https://www.phonetradr.com/buy/products/apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1"}]}</script>
279<script type="application/ld+json" id="buy-pdp-product-jsonld-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1">{"@context":"https://schema.org","@type":"Product","@id":"https://www.phonetradr.com/buy/products/apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1#product","name":"Apple iPad iPad Pro 11\" (2nd gen)","url":"https://www.phonetradr.com/buy/products/apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1","mainEntityOfPage":{"@type":"WebPage","@id":"https://www.phonetradr.com/buy/products/apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1"},"description":"Get the best deal in SA on a quality-approved second hand iPad iPad Pro 11\" (2nd gen) with a 12-month warranty, Browse our site for other tablets on sale for today.","image":["https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024&h=1024","https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/2351457e-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024&h=1024","https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/1b8486dc-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024&h=1024","https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/85f9b8ee-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024&h=1024"],"brand":{"@type":"Brand","name":"iPad"},"sku":"apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1","offers":{"@type":"Offer","priceCurrency":"ZAR","price":12500,"url":"https://www.phonetradr.com/buy/products/apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1","availability":"https://schema.org/InStock","itemCondition":"https://schema.org/UsedCondition"}}</script>
279<article data-testid="buy-pdp-root" class="mx-auto w-full max-w-[73.125rem] px-4 md:px-6 space-y-7 pt-1 pb-2 md:space-y-8 md:pt-2 md:pb-4"><div class="space-y-1.5"><nav aria-label="Breadcrumb" data-testid="buy-pdp-breadcrumbs" class="mx-auto w-full text-muted-foreground text-xs leading-snug md:text-sm"><ol class="flex flex-wrap items-center gap-y-0.5"><li class="inline-flex items-center"><a class="hover:text-foreground underline-offset-2 hover:underline" href="/buy">Buy</a></li><li class="inline-flex items-center"><span class="text-muted-foreground/60 mx-1.5 select-none" aria-hidden="true">/</span><a class="hover:text-foreground underline-offset-2 hover:underline" href="/buy/tablet">Tablets</a></li><li class="inline-flex items-center"><span class="text-muted-foreground/60 mx-1.5 select-none" aria-hidden="true">/</span><span class="text-foreground max-w-[14rem] truncate text-xs font-semibold tracking-tight sm:max-w-[20rem] md:text-sm" aria-current="page">Apple iPad iPad Pro 11" (2nd gen)</span></li></ol></nav></div><div class="grid grid-cols-1 gap-7 md:grid-cols-2 md:items-stretch md:gap-x-10 md:gap-y-6 lg:gap-x-12" data-testid="buy-pdp-hero"><div class="contents min-w-0 md:col-start-1 md:row-start-1 md:flex md:h-full md:flex-col md:justify-between md:gap-6"><div class="order-2 min-w-0"><section data-testid="phase4-product-gallery" class="mx-auto w-full space-y-3"><div class="relative mx-auto w-full max-w-[19.625rem] md:mx-0 md:max-w-none"><nav class="pointer-events-none absolute inset-y-0 left-0 right-0 z-20 flex items-center justify-between" aria-label="Product photos" data-testid="buy-pdp-swipe-nav"><button type="button" class="pointer-events-auto bg-background/80 text-foreground border-border -translate-x-1/2 inline-flex size-9 items-center justify-center rounded-full border shadow-sm backdrop-blur-sm sm:size-10" aria-label="Previous photo"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-left size-5" aria-hidden="true"><path d="m15 18-6-6 6-6"></path></svg></button><button type="button" class="pointer-events-auto bg-background/80 text-foreground border-border translate-x-1/2 inline-flex size-9 items-center justify-center rounded-full border shadow-sm backdrop-blur-sm sm:size-10" aria-label="Next photo"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right size-5" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button></nav><div class="relative overflow-hidden rounded-lg border bg-muted aspect-[314/185] md:aspect-[314/260]"><img src="https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024&h=1024" srcSet="https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=640&fit=max&auto=format 640w, https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=960&fit=max&auto=format 960w, https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024&fit=max&auto=format 1024w" sizes="(max-width: 767px) 19.625rem, (max-width: 1023px) 45vw, 34rem" alt="Apple iPad iPad Pro 11" (2nd gen)" width="314" height="260" fetchPriority="high" loading="eager" decoding="async" class="h-full w-full object-contain"/><button type="button" class="absolute inset-0 z-10 h-full w-full cursor-zoom-in border-0 bg-transparent p-0" aria-label="Open image gallery for Apple iPad iPad Pro 11" (2nd gen)"></button></div></div><div class="relative w-full max-md:-mx-4 max-md:w-[calc(100%+2rem)] md:mx-0 md:w-full md:max-w-none"><ul class="scrollbar-none flex min-h-14 snap-x snap-mandatory gap-2 overflow-x-auto overscroll-x-contain px-4 [-ms-overflow-style:none] [scrollbar-width:none] sm:gap-2.5 md:min-
279h-16 md:px-0 [&::-webkit-scrollbar]:hidden justify-center" data-testid="buy-pdp-thumb-strip" aria-busy="true"></ul></div></section></div><div class="order-4 min-w-0"><section class="surface-card buy-pdp-seller-card relative overflow-visible rounded-lg mx-auto w-full" aria-label="Seller description" data-testid="buy-pdp-seller-description-only"><div class="space-y-2 p-2.5 sm:p-3 invisible" aria-hidden="true"><h2 class="text-foreground text-center font-semibold tracking-tight text-sm">Description</h2><div class="max-h-64 overflow-y-auto [scrollbar-gutter:stable] [scrollbar-width:thin]"><p class="text-muted-foreground whitespace-pre-wrap text-xs sm:text-sm line-clamp-3">iPad Pro 11â 2nd Gen. Like new</p></div></div><div class="absolute top-0 right-0 left-0 space-y-2 p-2.5 sm:p-3"><h2 class="text-foreground text-center font-semibold tracking-tight text-sm">Description</h2><div class="max-h-64 overflow-y-auto [scrollbar-gutter:stable] [scrollbar-width:thin]"><p class="text-muted-foreground whitespace-pre-wrap text-xs sm:text-sm line-clamp-3">iPad Pro 11â 2nd Gen. Like new</p></div></div></section></div></div><div class="contents min-w-0 md:col-start-2 md:row-start-1 md:flex md:h-full md:flex-col md:gap-5"><div class="order-1 min-w-0"><header class="space-y-2 text-center" data-testid="buy-pdp-header"><div class="flex flex-wrap items-center justify-center gap-2.5"><h1 class="text-foreground text-2xl font-semibold tracking-tight text-balance md:text-3xl">Apple iPad iPad Pro 11" (2nd gen)</h1><span class="border-foreground text-foreground inline-flex items-center rounded-md border bg-transparent px-2.5 py-0.5 text-sm font-semibold tabular-nums tracking-wide" data-testid="buy-pdp-capacity-badge">128GB</span></div><div class="flex flex-wrap items-center justify-center gap-1.5" data-testid="buy-pdp-meta-chips"><span data-testid="buy-pdp-color-chip" class="text-foreground border-foreground
279/45 inline-flex max-w-full items-center gap-1.5 rounded-md border bg-transparent px-2 py-0.5 text-xs font-medium"><span class="border-foreground/30 size-2.5 shrink-0 rounded-full border" style="background-color:#646366" aria-hidden="true"></span><span class="truncate">Gray</span></span><span data-testid="buy-pdp-sim-chip" class="text-foreground border-foreground/45 inline-flex max-w-full items-center gap-1.5 rounded-md border bg-transparent px-2 py-0.5 text-xs font-medium"><span class="truncate">1 SIM</span></span></div></header></div><div class="order-3 flex min-w-0 flex-1 flex-col gap-4 md:min-h-0 md:gap-5"><div class="mx-auto w-full space-y-1.5 text-center"><p class="text-2xl font-bold tabular-nums md:text-4xl text-emerald-500 dark:text-emerald-400" data-testid="buy-pdp-price">R 12 500</p><div class="text-muted-foreground mx-auto max-w-md space-y-1 text-sm" data-testid="buy-pdp-financing"><p class="text-foreground/70 text-xs uppercase tracking-wide">or</p><p class="flex flex-wrap items-center justify-center gap-x-1.5 gap-y-0.5"><span class="text-foreground font-semibold tabular-nums">R 1 281</span><span>pm with</span><img src="/images/footer/mobicred-logo.svg" alt="Mobicred" class="buy-pdp-mobicred-logo inline-block h-4 w-auto"/><a href="https://www.mobicred.co.za/#feature-application" target="_blank" rel="noopener noreferrer" class="text-primary underline">apply now</a></p><p class="flex flex-wrap items-center justify-center gap-x-1.5 gap-y-0.5"><span class="text-foreground font-semibold tabular-nums">R 6 625</span><span>deposit and</span><span class="text-emerald-500 font-semibold dark:text-emerald-400">3<!-- --> x</span><span class="text-foreground font-semibold tabular-nums">R 2 461</span><span>with</span><img src="/images/footer/fasta-logo.svg" alt="Fasta" class="inline-block h-4 w-auto"/></p></div></div><section class="mx-auto w-full" aria-label="Product quality details" data-testid="buy-pdp-trust-grid"><ul class="grid grid-cols-2 gap-2"><li class=""><div class="surface-card buy-pdp-trust-tile relative flex items-center rounded-lg min-w-0 gap-1.5 px-2 py-2 sm:gap-2.5 sm:px-3 sm:py-2.5"><span class="flex size-9 shrink-0 items-center justify-center text-primary/75"><svg viewBox="0 0 72 48" class="size-10 shrink-0 text-primary/75 h-8 w-auto" aria-hidden="true" fill="none"><rect x="2" y="38" width="6" height="10" rx="1.5" class="fill-current"></rect><rect x="11" y="34" width="6" height="14" rx="1.5" class="fill-current"></rect><rect x="20" y="30" width="6" height="18" rx="1.5" class="fill-current"></rect><rect x="29" y="24" width="6" height="24" rx="1.5" class="fill-current"></rect><rect x="38" y="18" width="6" height="30" rx="1.5" class="fill-current"></rect><rect x="47" y="12" width="6" height="36" rx="1.5" class="fill-current"></rect><g transform="translate(56, 4)"><path d="M6 0L7.2 4.2L11.5 4.5L8.2 7.2L9.2 11.5L6 9.2L2.8 11.5L3.8 7.2L0.5 4.5L4.8 4.2L6 0Z" fill="#F0CE5F"></path></g></svg></span><div class="min-w-0 flex-1"><div class="flex min-w-0 items-center justify-between gap-2.5"><p class="text-foreground min-w-0 font-semibold text-xs sm:text-sm">Condition: Used â Like New</p><button type="button" class="text-muted-foreground hover:text-foreground ml-0.5 shrink-0" aria-expanded="false" aria-controls="trust-tooltip-condition" aria-label="More about condition"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-question-mark size-3.5" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><path d="M12 17h.01"></path></svg></button></div></div></div></li><li class=""><div class="surface-card buy-pdp-trust-tile relative flex items-center rounded-lg min-w-0 gap-1.5 px-2 py-2 sm:gap-2.5 sm:px-3 sm:py-2.5"><span class="flex size-9 shrink-0 items-center justify-center text-primary/75"><svg viewBox="0 0 36 60" class="shrink-0 text-primary/75 h-8 w-auto" aria-hidden="true" fill="none"><rect x="12" y="10" width="12" height="5" rx="1" class="fill-current"></rect><rect x="6" y="14" width="24" height="42" rx="3" class="stroke-current" stroke-width="2" fill="none"></rect><rect x="9" y="24" width="18" height="30" rx="1.5" class="fill-current"></rect></svg></span><div class="min-w-0 flex-1"><div class="flex min-w-0 items-center justify-between gap-2.5"><p class="text-foreground min-w-0 font-semibold text-xs sm:text-sm">Battery Health: 75%+</p><button type="button" class="text-muted-foreground hover:text-foreground ml-0.5 shrink-0" aria-expanded="false" aria-controls="trust-tooltip-battery" aria-label="More about battery"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-question-mark size-3.5" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><path d="M12 17h.01"></path></svg></button></div></div></div></li><li class="col-span-2"><div class="surface-card buy-pdp-trust-tile relative flex items-center rounded-lg gap-3 px-3 py-2.5 sm:gap-3.5 sm:px-3.5 sm:py-3"><span class="flex size-9 shrink-0 items-center justify-center text-primary/75"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-check size-7 shrink-0" aria-hidden="true"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"></path><path d="m9 12 2 2 4-4"></path></svg></span><div class="min-w-0 flex-1"><div class="flex min-w-0 items-center justify-between gap-2.5"><p class="text-foreground min-w-0 font-semibold text-sm">100% Certified</p><button type="button" class="text-muted-foreground hover:text-foreground ml-0.5 shrink-0" aria-expanded="false" aria-controls="trust-tooltip-certified" aria-label="More about certified"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-question-mark size-3.5" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><path d="M12 17h.01"></path></svg></button></div></div></div></li></ul></section><section class="surface-card buy-pdp-seller-card relative overflow-visible rounded-lg mx-auto w-full" aria-label="Included extras" data-testid="buy-pdp-seller-extras"><div class="space-y-2 p-2.5 sm:p-3 invisible" aria-hidden="true"><h2 class="text-foreground text-center font-semibold tracking-tight text-sm">Included with your purchase</h2><div class="max-h-64 overflow-y-auto [scrollbar-gutter:stable] [scrollbar-width:thin]"><ul class="grid grid-cols-2 gap-x-3 gap-y-1"><li class="text-foreground flex items-start gap-1.5 text-xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check text-primary shrink-0 mt-0.5 size-3.5" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span class="min-w-0 break-words">Stylus</span></li><li class="text-foreground flex items-start gap-1.5 text-xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check text-primary shrink-0 mt-0.5 size-3.5" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span class="min-w-0 break-words">Original charger</span></li><li class="text-foreground flex items-start gap-1.5 text-xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check text-primary shrink-0 mt-0.5 size-3.5" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span class="min-w-0 break-words">Cover / keyboard case</span></li></ul></div></div><div class="absolute top-0 right-0 left-0 space-y-2 p-2.5 sm:p-3"><h2 class="text-foreground text-center font-semibold tracking-tight text-sm">Included with your purchase</h2><div class="max-h-64 overflow-y-auto [scrollbar-gutter:stable] [scrollbar-width:thin]"><ul class="grid grid-cols-2 gap-x-3 gap-y-1"><li class="text-foreground flex items-start gap-1.5 text-xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check text-primary shrink-0 mt-0.5 size-3.5" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span class="min-w-0 break-words">Stylus</span></li><li class="text-foreground flex items-start gap-1.5 text-xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check text-primary shrink-0 mt-0.5 size-3.5" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span class="min-w-0 break-words">Original charger</span></li><li class="text-foreground flex items-start gap-1.5 text-xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check text-primary shrink-0 mt-0.5 size-3.5" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg><span class="min-w-0 break-words">Cover / keyboard case</span></li></ul></div></div></section><div class="flex flex-col gap-2 md:mt-auto"><div class="buy-pdp-urgency px-2 py-1.5 text-center text-sm mx-auto w-full" data-testid="buy-pdp-urgency" role="status"><span aria-hidden="true">ð¥ </span><span class="text-foreground font-medium">Only 1 left at this price</span></div><div class="mx-auto flex w-full flex-col items-stretch gap-2 md:mx-0" data-testid="buy-pdp-actions"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:text-accent-foreground [[data-frosted-chrome=true]_&]:hover:bg-[hsl(var(--surface-hover))] [[data-frosted-chrome=true]_&]:hover:text-[hsl(var(--chip-main-text))] px-4 py-2 buy-pdp-cta buy-pdp-cta--buy h-11 w-full shadow-none hover:bg-[unset] hover:!text-white" type="button">Add to Cart</button><a href="https://wa.me/27727291611?text=Hi%2C%20I%20would%20like%20to%20make%20an%20offer%20for%20apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.%20Click%20send%20to%20start%20the%20offers%20process" target="_blank" rel="noopener noreferrer" class="buy-pdp-cta buy-pdp-cta--offer inline-flex h-11 w-full items-center justify-center gap-2 rounded-md text-sm font-semibold" data-testid="phase4-product-make-offer">Make Offer<img src="/images/contact_us/whatsapp-icon.svg" alt="" width="20" height="20" class="size-5" aria-hidden="true"/></a></div></div></div></div></div><section class="mx-auto w-full space-y-5 md:space-y-6" aria-label="With your purchase you get" data-testid="buy-pdp-purchase-benefits"><h2 class="text-foreground text-center text-base font-semibold tracking-tight">With your purchase you get</h2><ul class="grid grid-cols-1 gap-3 sm:grid-cols-2 sm:gap-4"><li class="surface-card buy-pdp-trust-tile flex gap-3 rounded-lg p-3 sm:gap-4 sm:p-4 md:p-5"><span class="text-primary/75 mt-0.5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-percent size-5 shrink-0" aria-hidden="true"><path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"></path><path d="m15 9-6 6"></path><path d="M9 9h.01"></path><path d="M15 15h.01"></path></svg></span><div class="min-w-0 space-y-1.5"><p class="text-foreground text-sm font-semibold leading-snug">30-Day Money Back Guarantee</p><p class="text-muted-foreground text-xs leading-relaxed">Every device is rigorously tested. If somethingâs wrong, weâll repair, replace, or refund within 30 days of purchase.</p></div></li><li class="surface-card buy-pdp-trust-tile flex gap-3 rounded-lg p-3 sm:gap-4 sm:p-4 md:p-5"><span class="text-primary/75 mt-0.5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-truck size-5 shrink-0" aria-hidden="true"><path d="M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2"></path><path d="M15 18H9"></path><path d="M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14"></path><circle cx="17" cy="18" r="2"></circle><circle cx="7" cy="18" r="2"></circle></svg></span><div class="min-w-0 space-y-1.5"><p class="text-foreground text-sm font-semibold leading-snug">Insured Delivery: 1-2 days</p><p class="text-muted-foreground text-xs leading-relaxed">Order before 2pm and have it delivered the next day; or 2 days for outlying areas. Insured nationwide delivery.<!-- --> <a href="/terms-of-use" target="_blank" rel="noopener noreferrer" class="text-primary underline">T&Câs apply</a></p></div></li><li class="surface-card buy-pdp-trust-tile flex gap-3 rounded-lg p-3 sm:gap-4 sm:p-4 md:p-5"><span class="text-primary/75 mt-0.5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield size-5 shrink-0" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path></svg></span><div class="min-w-0 space-y-1.5"><p class="text-foreground text-sm font-semibold leading-snug">12 Month Warranty</p><p class="text-muted-foreground text-xs leading-relaxed">Comes with a full 12 month warranty backed by us and serviced by us.<!-- --> <a href="/terms-of-use" target="_blank" rel="noopener noreferrer" class="text-primary underline">T&Câs apply</a></p></div></li><li class="surface-card buy-pdp-trust-tile flex gap-3 rounded-lg p-3 sm:gap-4 sm:p-4 md:p-5"><span class="text-primary/75 mt-0.5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-smartphone size-5 shrink-0" aria-hidden="true"><rect width="14" height="20" x="5" y="2" rx="2" ry="2"></rect><path d="M12 18h.01"></path></svg></span><div class="min-w-0 space-y-1.5"><p class="text-foreground text-sm font-semibold leading-snug">Repair Care Plus</p><p class="text-muted-foreground text-xs leading-relaxed">Discount on screen damage repairs for 12 months from purchase.<!-- --> <a href="/terms-of-use" target="_blank" rel="noopener noreferrer" class="text-primary underline">T&Câs apply</a></p></div></li></ul></section><section class="mx-auto w-full" data-testid="buy-pdp-returns"><button type="button" class="surface-card buy-pdp-trust-tile flex w-full items-center justify-between gap-3 rounded-lg px-4 py-3 text-left" aria-expanded="false"><span class="text-foreground text-sm font-semibold">Refunds and Returns</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down text-muted-foreground size-4 shrink-0 transition-transform" ari
279a-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></section><section class="surface-card buy-pdp-payment-card rounded-lg p-4 md:p-5 mx-auto w-full" aria-label="Accepted payment methods" data-testid="buy-pdp-payment-providers"><h2 class="text-foreground mb-3 text-center text-sm font-semibold tracking-wide uppercase">Accepted Payment Methods</h2><ul class="flex flex-nowrap items-center justify-start gap-2.5 overflow-x-auto overscroll-x-contain pb-0.5 [-ms-overflow-style:none] [scrollbar-width:none] sm:justify-center sm:gap-3 [&::-webkit-scrollbar]:hidden"><li class="shrink-0"><span class="buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]" title="Mastercard"><img src="/images/footer/mastercard-logo.svg" alt="Supports Mastercard" class="max-h-full max-w-full object-contain"/> </span></li><li class="shrink-0"><span class="buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]" title="Visa"><img src="/images/footer/visa-logo.svg" alt="Supports Visa" class="max-h-full max-w-full object-contain"/> </span></li><li class="shrink-0"><span class="buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]" title="Fasta"><img src="/images/footer/fasta-logo.svg" alt="Supports Fasta" class="max-h-full max-w-full object-contain"/> </span></li><li class="shrink-0"><span class="buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]" title="Zapper"><img src="/images/footer/zapper-logo.svg" alt="Supports Zapper" class="max-h-full max-w-full object-contain"/> </span></li><li class="shrink-0"><span class="buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]" title="Mobicred"><img src="/images/footer/mobicred-logo.svg" alt="Supports Mobicred" class="max-h-full max-w-full object-contain"/> </span></li><li class="shrink-0"><span class="buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]" title="Discover"><img src="/images/footer/discover-logo.svg" alt="Supports Discover" class="max-h-full max-w-full object-contain"/> </span></li><li class="shrink-0"><span class="buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]" title="Diners Club"><img src="/images/footer/diners-club-logo.svg" alt="Supports Diners Club" class="max-h-full max-w-full object-contain"/> </span></li><li class="shrink-0"><span class="buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]" title="Instant EFT"><img src="/images/footer/instant-eft-logo.svg" alt="Supports Instant EFT" class="max-h-full max-w-full object-contain"/> </span></li><li class="shrink-0"><span class="buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]" title="Bank Transfer"><img src="/images/footer/bank-transfer-logo.svg" alt="Supports Bank Transfer" class="max-h-full max-w-full object-contain"/> </span></li></ul></section></article><!--$--><!--/$--></main><footer class="site-footer mt-auto"><div class="mx-auto w-full max-w-[73.125rem] px-4 md:px-6 grid gap-8 py-10 md:grid-cols-4"><div class="md:col-span-1"><p class="text-lg font-semibold">Phonetradr</p><p class="site-footer-tagline text-primary-foreground/80 mt-2 text-sm text-pretty">Buy and sell pre-owned devices with confidence.</p></div><div><h2 class="text-sm font-semibold tracking-wide">Shop</h2><ul class="mt-3 space-y-2"><li><a class="site-footer-link text-primary-foreground/85 hover:text-primary-foreground text-sm underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-foreground" href="/buy">Buy phones</a></li><li>
279<a class="site-footer-link text-primary-foreground/85 hover:text-primary-foreground text-sm underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-foreground" href="/sell">Sell your device</a></li><li><a class="site-footer-link text-primary-foreground/85 hover:text-primary-foreground text-sm underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-foreground" href="/on-sale">On sale</a></li></ul></div><div><h2 class="text-sm font-semibold tracking-wide">Help</h2><ul class="mt-3 space-y-2"><li><a class="site-footer-link text-primary-foreground/85 hover:text-primary-foreground text-sm underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-foreground" href="/faq">FAQ</a></li><li><a class="site-footer-link text-primary-foreground/85 hover:text-primary-foreground text-sm underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-foreground" href="/how-to">How it works</a></li><li><a class="site-footer-link text-primary-foreground/85 hover:text-primary-foreground text-sm underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-foreground" href="/about-us">About us</a></li></ul></div><div><h2 class="text-sm font-semibold tracking-wide">Legal</h2><ul class="mt-3 space-y-2"><li><a class="site-footer-link text-primary-foreground/85 hover:text-primary-foreground text-sm underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-foreground" href="/terms-of-use">Terms of use</a></li><li><a class="site-footer-link text-primary-foreground/85 hover:text-primary-foreground text-sm underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-foreground" href="/privacy-policy">Privacy policy</a></li><li><a class="site-footer-link text-primary-foreground/85 hover:text-primary-foreground text-sm underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-foreground" href="/return-policy">Return policy</a></li></ul></div></div><div class="site-footer-divider border-primary-foreground/15 border-t"><p class="mx-auto w-full max-w-[73.125rem] px-4 md:px-6 site-footer-copy py-4 text-center text-xs opacity-80">© <!-- -->2026<!-- --> Phonetradr. All rights reserved.</p></div></footer></div>
279<script src="/_next/static/chunks/webpack-d884bb06af1eeb6c.js" id="_R_" async=""></script>
279<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
279<script id="theme-init" data-cfasync="false"> 280(function() { 281 try { 282 var path = location.pathname; 283 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 284 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 285 var ds; 286 var pc; 287 288 if (isAdminV2) { 289 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 290 pc = localStorage.getItem('admin-primary-color') || 'blue'; 291 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 292 } else { 293 var seasonalKey = localStorage.getItem('seasonal-theme'); 294 var preset = seasonalKey && seasonalPresets[seasonalKey]; 295 296 if (!localStorage.getItem('design-system-id-migrated-v3')) { 297 var storedDs = localStorage.getItem('design-system'); 298 if (storedDs === 'frosted-slate') { 299 localStorage.setItem('design-system', 'frosted'); 300 } 301 localStorage.setItem('design-system-id-migrated-v3', '1'); 302 } 303 304 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 305 var currentDs = localStorage.getItem('design-system'); 306 if (!currentDs || currentDs === 'modern-minimal') { 307 localStorage.setItem('design-system', 'frosted-slate'); 308 } 309 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 310 } 311 312 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 313 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 314 } 315 var theme = localStorage.getItem('theme') || 'light'; 316 var isDark = theme === 'dark'; 317 318 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 319 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
31960 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 320 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 321 322 var dsData = designSystems[ds] || designSystems['frosted-slate']; 323 var pcData = primaryColors[pc] || primaryColors['purple']; 324 var colors = isDark ? dsData.dark : dsData.light; 325 var primary = isDark ? pcData.dark : pcData.light; 326 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 327 var sem = isDark ? semantic.dark : semantic.light; 328 329 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 330 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 331 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 332 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 333 var variantHue = (hue + 130) % 360; 334 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 335 var variantLit = isDark ? 55 : 42; 336 337 var applyLightFrostedGlass = function(primary, background) { 338 var parseHsl = function(v) { 339 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 340 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 341 }; 342 var hslToRgb = function(h, s, l) { 343 s /= 100; l /= 100; 344 var c = (1 - Math.abs(2 * l - 1)) * s; 345 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 346 var m = l - c / 2; 347 var r = 0, g = 0, b = 0; 348 if (h < 60) { r = c; g = x; } 349 else if (h < 120) { r = x; g = c; } 350 else if (h < 180) { g = c; b = x; } 351 else if (h < 240) { g = x; b = c; } 352 else if (h < 300) { r = x; b = c; } 353 else { r = c; b = x; } 354 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 355 }; 356 var rgbToHsl = function(r, g, b) { 357 r /= 255; g /= 255; b /= 255; 358 var max = Math.max(r, g, b), min = Math.min(r, g, b); 359 var l = (max + min) / 2, h = 0, s = 0; 360 if (max !== min) { 361 var d = max - min; 362 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 363 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 364 else if (max === g) h = ((b - r) / d + 2) / 6; 365 else h = ((r - g) / d + 4) / 6; 366 } 367 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 368 }; 369 var blend = function(alpha) { 370 var p = parseHsl(primary); 371 var bg = parseHsl(background); 372 var pr = hslToRgb(p.h, p.s, p.l); 373 var br = hslToRgb(bg.h, bg.s, bg.l); 374 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 375 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 376 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 377 return rgbToHsl(r, g, b); 378 }; 379 var glass = blend(0.22); 380 var glassChrome = blend(0.28); 381 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 382 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 383 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 384 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 385 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 386 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 387 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 388 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 389 return { 390 glass: glass + ' / 0.92', 391 glassChrome: glassChrome + ' / 0.92', 392 glassSubtle: blend(0.15) + ' / 0.88', 393 glassHover: blend(0.28) + ' / 0.94', 394 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 395 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 396 }; 397 }; 398 399 if (dsData.tintSurfacesFromPrimary && isDark) { 400 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 401 colors = Object.assign({}, colors, { 402 background: hue + ' ' + surfaceSat + '% 9%', 403 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 404 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 405 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 406 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 407 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 408 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 409 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 410 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 411 glass: hue + ' 28% 16% / 0.88', 412 glassChrome: hue + ' 28% 14% / 0.88', 413 glassSubtle: hue + ' 26% 18% / 0.75', 414 glassHover: hue + ' 30% 20% / 0.92', 415 glassBorder: hue + ' 24% 28% / 0.55' 416 }); 417 } else if (dsData.frostedChrome && !isDark) { 418 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 419 } 420 421 var root = document.documentElement; 422 root.setAttribute('data-design-system', ds); 423 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 424 else root.removeAttribute('data-frosted-chrome'); 425 if (isDark) root.classList.add('dark'); 426 else root.classList.remove('dark'); 427 root.style.colorScheme = isDark ? 'dark' : 'light'; 428 429 var h = function(v) { return 'hsl(' + v + ')'; }; 430 431 root.style.setProperty('--background', h(colors.background)); 432 root.style.setProperty('--foreground', h(colors.foreground)); 433 root.style.setProperty('--card', h(colors.card)); 434 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 435 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 436 root.style.setProperty('--popover', h(colors.popover)); 437 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 438 root.style.setProperty('--border', h(colors.border)); 439 root.style.setProperty('--muted', h(colors.muted)); 440 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 441 root.style.setProperty('--secondary', h(colors.secondary)); 442 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 443 root.style.setProperty('--accent', h(colors.accent)); 444 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 445 root.style.setProperty('--input', h(colors.input)); 446 root.style.setProperty('--sidebar', h(colors.sidebar)); 447 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 448 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 449 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 450 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 451 452 root.style.setProperty('--glass', h(colors.glass)); 453 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 454 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 455 root.style.setProperty('--glass-hover', h(colors.glassHover)); 456 root.style.setProperty('--glass-border', h(colors.glassBorder)); 457 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 458 459 if (dsData.frostedChrome && !isDark) { 460 var darkChrome = dsData.dark; 461 var darkPrimary = pcData.dark; 462 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 463 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 464 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 465 if (dsData.tintSurfacesFromPrimary) { 466 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 467 darkChrome = Object.assign({}, darkChrome, { 468 glass: darkHue + ' 28% 16% / 0.88', 469 glassChrome: darkHue + ' 28% 14% / 0.88', 470 glassBorder: darkHue + ' 24% 28% / 0.55' 471 }); 472 } 473 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 474 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 475 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 476 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 477 } 478 479 if (!isDark) { 480 root.style.setProperty('--hero-halo-center', h(colors.background)); 481 root.style.setProperty('--hero-halo-mid', h(colors.card)); 482 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 483 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 484 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 485 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
485+ '%' : colors.border)); 486 } else { 487 root.style.setProperty('--hero-halo-center', h(colors.card)); 488 root.style.setProperty('--hero-halo-mid', h(colors.background)); 489 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 490 root.style.setProperty('--hero-halo-edge', h(colors.border)); 491 } 492 493 root.style.setProperty('--primary', h(primary)); 494 root.style.setProperty('--primary-foreground', h(primaryFg)); 495 root.style.setProperty('--ring', h(primary)); 496 root.style.setProperty('--sidebar-primary', h(primary)); 497 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 498 root.style.setProperty('--sidebar-ring', h(primary)); 499 500 root.style.setProperty('--destructive', h(sem.destructive)); 501 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 502 503 if (isDark) { 504 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 505 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 506 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 507 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 508 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 509 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
509+ '% / 0.2'); 510 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 511 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 512 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 513 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 514 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 515 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 516 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 517 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 518 } else { 519 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 520 var textSat = Math.min(Math.max(sat - 2, 52), 80); 521 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 522 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 523 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 524 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 525 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 526 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 527 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 528 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 529 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 530 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 531 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 532 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 533 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 534 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 535 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 536 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 537 } 538 539 var sat = isDark ? 70 : 65; 540 var lit = isDark ? 55 : 50; 541 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 542 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 543 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 544 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 545 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 546 } catch (e) {} 547})(); 548</script>
548<script id="buy-trust-dismiss-init"> 549(function() { 550 try { 551 var path = location.pathname.split("?")[0]; 552 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 553 document.documentElement.setAttribute("data-trust-dismissed", "1"); 554 } 555 } catch (e) {} 556})(); 557</script>
557<script>(self.__next_f=self.__next_f||[]).push([0])</script>
557<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
557<script id="theme-init" data-cfasync="false"> 558(function() { 559 try { 560 var path = location.pathname; 561 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 562 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 563 var ds; 564 var pc; 565 566 if (isAdminV2) { 567 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 568 pc = localStorage.getItem('admin-primary-color') || 'blue'; 569 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 570 } else { 571 var seasonalKey = localStorage.getItem('seasonal-theme'); 572 var preset = seasonalKey && seasonalPresets[seasonalKey]; 573 574 if (!localStorage.getItem('design-system-id-migrated-v3')) { 575 var storedDs = localStorage.getItem('design-system'); 576 if (storedDs === 'frosted-slate') { 577 localStorage.setItem('design-system', 'frosted'); 578 } 579 localStorage.setItem('design-system-id-migrated-v3', '1'); 580 } 581 582 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 583 var currentDs = localStorage.getItem('design-system'); 584 if (!currentDs || currentDs === 'modern-minimal') { 585 localStorage.setItem('design-system', 'frosted-slate'); 586 } 587 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 588 } 589 590 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 591 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 592 } 593 var theme = localStorage.getItem('theme') || 'light'; 594 var isDark = theme === 'dark'; 595 596 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 597 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
59760 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 598 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 599 600 var dsData = designSystems[ds] || designSystems['frosted-slate']; 601 var pcData = primaryColors[pc] || primaryColors['purple']; 602 var colors = isDark ? dsData.dark : dsData.light; 603 var primary = isDark ? pcData.dark : pcData.light; 604 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 605 var sem = isDark ? semantic.dark : semantic.light; 606 607 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 608 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 609 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 610 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 611 var variantHue = (hue + 130) % 360; 612 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 613 var variantLit = isDark ? 55 : 42; 614 615 var applyLightFrostedGlass = function(primary, background) { 616 var parseHsl = function(v) { 617 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 618 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 619 }; 620 var hslToRgb = function(h, s, l) { 621 s /= 100; l /= 100; 622 var c = (1 - Math.abs(2 * l - 1)) * s; 623 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 624 var m = l - c / 2; 625 var r = 0, g = 0, b = 0; 626 if (h < 60) { r = c; g = x; } 627 else if (h < 120) { r = x; g = c; } 628 else if (h < 180) { g = c; b = x; } 629 else if (h < 240) { g = x; b = c; } 630 else if (h < 300) { r = x; b = c; } 631 else { r = c; b = x; } 632 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 633 }; 634 var rgbToHsl = function(r, g, b) { 635 r /= 255; g /= 255; b /= 255; 636 var max = Math.max(r, g, b), min = Math.min(r, g, b); 637 var l = (max + min) / 2, h = 0, s = 0; 638 if (max !== min) { 639 var d = max - min; 640 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 641 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 642 else if (max === g) h = ((b - r) / d + 2) / 6; 643 else h = ((r - g) / d + 4) / 6; 644 } 645 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 646 }; 647 var blend = function(alpha) { 648 var p = parseHsl(primary); 649 var bg = parseHsl(background); 650 var pr = hslToRgb(p.h, p.s, p.l); 651 var br = hslToRgb(bg.h, bg.s, bg.l); 652 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 653 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 654 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 655 return rgbToHsl(r, g, b); 656 }; 657 var glass = blend(0.22); 658 var glassChrome = blend(0.28); 659 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 660 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 661 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 662 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 663 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 664 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 665 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 666 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 667 return { 668 glass: glass + ' / 0.92', 669 glassChrome: glassChrome + ' / 0.92', 670 glassSubtle: blend(0.15) + ' / 0.88', 671 glassHover: blend(0.28) + ' / 0.94', 672 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 673 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 674 }; 675 }; 676 677 if (dsData.tintSurfacesFromPrimary && isDark) { 678 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 679 colors = Object.assign({}, colors, { 680 background: hue + ' ' + surfaceSat + '% 9%', 681 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 682 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 683 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 684 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 685 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 686 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 687 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 688 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 689 glass: hue + ' 28% 16% / 0.88', 690 glassChrome: hue + ' 28% 14% / 0.88', 691 glassSubtle: hue + ' 26% 18% / 0.75', 692 glassHover: hue + ' 30% 20% / 0.92', 693 glassBorder: hue + ' 24% 28% / 0.55' 694 }); 695 } else if (dsData.frostedChrome && !isDark) { 696 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 697 } 698 699 var root = document.documentElement; 700 root.setAttribute('data-design-system', ds); 701 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 702 else root.removeAttribute('data-frosted-chrome'); 703 if (isDark) root.classList.add('dark'); 704 else root.classList.remove('dark'); 705 root.style.colorScheme = isDark ? 'dark' : 'light'; 706 707 var h = function(v) { return 'hsl(' + v + ')'; }; 708 709 root.style.setProperty('--background', h(colors.background)); 710 root.style.setProperty('--foreground', h(colors.foreground)); 711 root.style.setProperty('--card', h(colors.card)); 712 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 713 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 714 root.style.setProperty('--popover', h(colors.popover)); 715 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 716 root.style.setProperty('--border', h(colors.border)); 717 root.style.setProperty('--muted', h(colors.muted)); 718 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 719 root.style.setProperty('--secondary', h(colors.secondary)); 720 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 721 root.style.setProperty('--accent', h(colors.accent)); 722 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 723 root.style.setProperty('--input', h(colors.input)); 724 root.style.setProperty('--sidebar', h(colors.sidebar)); 725 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 726 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 727 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 728 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 729 730 root.style.setProperty('--glass', h(colors.glass)); 731 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 732 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 733 root.style.setProperty('--glass-hover', h(colors.glassHover)); 734 root.style.setProperty('--glass-border', h(colors.glassBorder)); 735 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 736 737 if (dsData.frostedChrome && !isDark) { 738 var darkChrome = dsData.dark; 739 var darkPrimary = pcData.dark; 740 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 741 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 742 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 743 if (dsData.tintSurfacesFromPrimary) { 744 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 745 darkChrome = Object.assign({}, darkChrome, { 746 glass: darkHue + ' 28% 16% / 0.88', 747 glassChrome: darkHue + ' 28% 14% / 0.88', 748 glassBorder: darkHue + ' 24% 28% / 0.55' 749 }); 750 } 751 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 752 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 753 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 754 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 755 } 756 757 if (!isDark) { 758 root.style.setProperty('--hero-halo-center', h(colors.background)); 759 root.style.setProperty('--hero-halo-mid', h(colors.card)); 760 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 761 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 762 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 763 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
763+ '%' : colors.border)); 764 } else { 765 root.style.setProperty('--hero-halo-center', h(colors.card)); 766 root.style.setProperty('--hero-halo-mid', h(colors.background)); 767 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 768 root.style.setProperty('--hero-halo-edge', h(colors.border)); 769 } 770 771 root.style.setProperty('--primary', h(primary)); 772 root.style.setProperty('--primary-foreground', h(primaryFg)); 773 root.style.setProperty('--ring', h(primary)); 774 root.style.setProperty('--sidebar-primary', h(primary)); 775 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 776 root.style.setProperty('--sidebar-ring', h(primary)); 777 778 root.style.setProperty('--destructive', h(sem.destructive)); 779 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 780 781 if (isDark) { 782 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 783 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 784 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 785 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 786 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 787 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
787+ '% / 0.2'); 788 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 789 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 790 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 791 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 792 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 793 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 794 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 795 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 796 } else { 797 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 798 var textSat = Math.min(Math.max(sat - 2, 52), 80); 799 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 800 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 801 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 802 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 803 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 804 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 805 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 806 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 807 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 808 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 809 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 810 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 811 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 812 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 813 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 814 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 815 } 816 817 var sat = isDark ? 70 : 65; 818 var lit = isDark ? 55 : 50; 819 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 820 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 821 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 822 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 823 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 824 } catch (e) {} 825})(); 826</script>
826<script id="buy-trust-dismiss-init"> 827(function() { 828 try { 829 var path = location.pathname.split("?")[0]; 830 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 831 document.documentElement.setAttribute("data-trust-dismissed", "1"); 832 } 833 } catch (e) {} 834})(); 835</script>
835<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[80558,[\"1930\",\"static/chunks/1930-431df5db3d2d6569.js\",\"2762\",\"static/chunks/2762-da6e0ec4f86e948b.js\",\"644\",\"static/chunks/644-6a269945e154987b.js\",\"7177\",\"static/chunks/app/layout-9ff031204bc308e3.js\"],\"AuthRuntimeScripts\"]\n3:I[78305,[\"1930\",\"static/chunks/1930-431df5db3d2d6569.js\",\"2762\",\"static/chunks/2762-da6e0ec4f86e948b.js\",\"644\",\"static/chunks/644-6a269945e154987b.js\",\"7177\",\"static/chunks/app/layout-9ff031204bc308e3.js\"],\"LegacyRuntimeEnvScript\"]\n4:I[58020,[\"1930\",\"static/chunks/1930-431df5db3d2d6569.js\",\"2762\",\"static/chunks/2762-da6e0ec4f86e948b.js\",\"644\",\"static/chunks/644-6a269945e154987b.js\",\"7177\",\"static/chunks/app/layout-9ff031204bc308e3.js\"],\"ThemeInitScript\"]\n5:I[62499,[\"1930\",\"static/chunks/1930-431df5db3d2d6569.js\",\"2762\",\"static/chunks/2762-da6e0ec4f86e948b.js\",\"644\",\"static/chunks/644-6a269945e154987b.js\",\"7177\",\"static/chunks/app/layout-9ff031204bc308e3.js\"],\"BuyTrustDismissInitScript\"]\n6:I[6902,[\"1930\",\"static/chunks/1930-431df5db3d2d6569.js\",\"2762\",\"static/chunks/2762-da6e0ec4f86e948b.js\",\"644\",\"static/chunks/644-6a269945e154987b.js\",\"7177\",\"static/chunks/app/layout-9ff031204bc308e3.js\"],\"AppRouterGtmNoScript\"]\n7:I[70429,[\"1930\",\"static/chunks/1930-431df5db3d2d6569.js\",\"2762\",\"static/chunks/2762-da6e0ec4f86e948b.js\",\"644\",\"static/chunks/644-6a269945e154987b.js\",\"7177\",\"static/chunks/app/layout-9ff031204bc308e3.js\"],\"AppThemeProvider\"]\n8:\"$Sreact.suspense\"\n9:I[74769,[\"1930\",\"static/chunks/1930-431df5db3d2d6569.js\",\"2762\",\"static/chunks/2762-da6e0ec4f86e948b.js\",\"644\",\"static/chunks/644-6a269945e154987b.js\",\"7177\",\"static/chunks/app/layout-9ff031204bc308e3.js\"],\"AppRouterAnalyticsRoot\"]\na:I[57121,[],\"\"]\nb:I[74581,[],\"\"]\nc:I[98500,[\"8409\",\"static/chunks/8409-de5726a4a278d28f.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"1930\",\"static/chunks/1930-431df5db3d2d6569.js\",\"9258\",\"static/chunks/9258-716243a91d561964.js\",\"7649\",\"static/chunks/7649-fc2ec28b21f07c2e.js\",\"8571\",\"static/chunks/8571-ac6ff42855de95c3.js\",\"7898\",\"static/chunks/app/(site)/buy/products/%5Bhandle%5D/page-5ec5e55b73260bac.js\"],\"\"]\nd:I[6902,[\"1930\",\"static/chunks/1930-431df5db3d2d6569.js\",\"2762\",\"static/chunks/2762-da6e0ec4f86e948b.js\",\"644\",\"static/chunks/644-6a269945e154987b.js\",\"7177\",\"static/chunks/app/layout-9ff031204bc308e3.js\"],\"AppRouterGtmScripts\"]\ne:I[32417,[\"8409\",\"static/chunks/8409-de5726a4a278d28f.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"9655\",\"static/chunks/9655-ba60ccb42fba7636.js\",\"3659\",\"static/chunks/3659-e799d83a1f7641e6.js\",\"8196\",\"static/chunks/8196-0ce48e1d7930add4.js\",\"7341\",\"static/chunks/7341-a169b16726cdd02f.js\",\"3819\",\"static/chunks/3819-592715bab4de6758.js\",\"9258\",\"static/chunks/9258-716243a91d561964.js\",\"3550\",\"static/chunks/3550-97db577c2243f766.js\",\"7864\",\"static/chunks/7864-8398857fc60a8f4f.js\",\"9332\",\"static/chunks/9332-f4848cfda1146589.js\",\"7649\",\"static/chunks/7649-fc2ec28b21f07c2e.js\",\"7340\",\"static/chunks/7340-a172a40aa922cb24.js\",\"644\",\"static/chunks/644-6a269945e154987b.js\",\"6750\",\"static/chunks/app/(site)/layout-6678ff408d8c6633.js\"],\"PublicSiteShellWithWidth\"]\n10:I[90484,[],\"OutletBoundary\"]\n13:I[90484,[],\"ViewportBoundary\"]\n15:I[90484,[],\"MetadataBoundary\"]\n17:I[27123,[],\"default\",1]\n:HL[\"/_next/static/css/77f
8350440bdb3d24e5.css\",\"style\"]\n"])</script>
835<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
835<script id="theme-init" data-cfasync="false"> 836(function() { 837 try { 838 var path = location.pathname; 839 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 840 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 841 var ds; 842 var pc; 843 844 if (isAdminV2) { 845 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 846 pc = localStorage.getItem('admin-primary-color') || 'blue'; 847 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 848 } else { 849 var seasonalKey = localStorage.getItem('seasonal-theme'); 850 var preset = seasonalKey && seasonalPresets[seasonalKey]; 851 852 if (!localStorage.getItem('design-system-id-migrated-v3')) { 853 var storedDs = localStorage.getItem('design-system'); 854 if (storedDs === 'frosted-slate') { 855 localStorage.setItem('design-system', 'frosted'); 856 } 857 localStorage.setItem('design-system-id-migrated-v3', '1'); 858 } 859 860 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 861 var currentDs = localStorage.getItem('design-system'); 862 if (!currentDs || currentDs === 'modern-minimal') { 863 localStorage.setItem('design-system', 'frosted-slate'); 864 } 865 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 866 } 867 868 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 869 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 870 } 871 var theme = localStorage.getItem('theme') || 'light'; 872 var isDark = theme === 'dark'; 873 874 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 875 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
87560 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 876 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 877 878 var dsData = designSystems[ds] || designSystems['frosted-slate']; 879 var pcData = primaryColors[pc] || primaryColors['purple']; 880 var colors = isDark ? dsData.dark : dsData.light; 881 var primary = isDark ? pcData.dark : pcData.light; 882 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 883 var sem = isDark ? semantic.dark : semantic.light; 884 885 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 886 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 887 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 888 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 889 var variantHue = (hue + 130) % 360; 890 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 891 var variantLit = isDark ? 55 : 42; 892 893 var applyLightFrostedGlass = function(primary, background) { 894 var parseHsl = function(v) { 895 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 896 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 897 }; 898 var hslToRgb = function(h, s, l) { 899 s /= 100; l /= 100; 900 var c = (1 - Math.abs(2 * l - 1)) * s; 901 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 902 var m = l - c / 2; 903 var r = 0, g = 0, b = 0; 904 if (h < 60) { r = c; g = x; } 905 else if (h < 120) { r = x; g = c; } 906 else if (h < 180) { g = c; b = x; } 907 else if (h < 240) { g = x; b = c; } 908 else if (h < 300) { r = x; b = c; } 909 else { r = c; b = x; } 910 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 911 }; 912 var rgbToHsl = function(r, g, b) { 913 r /= 255; g /= 255; b /= 255; 914 var max = Math.max(r, g, b), min = Math.min(r, g, b); 915 var l = (max + min) / 2, h = 0, s = 0; 916 if (max !== min) { 917 var d = max - min; 918 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 919 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 920 else if (max === g) h = ((b - r) / d + 2) / 6; 921 else h = ((r - g) / d + 4) / 6; 922 } 923 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 924 }; 925 var blend = function(alpha) { 926 var p = parseHsl(primary); 927 var bg = parseHsl(background); 928 var pr = hslToRgb(p.h, p.s, p.l); 929 var br = hslToRgb(bg.h, bg.s, bg.l); 930 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 931 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 932 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 933 return rgbToHsl(r, g, b); 934 }; 935 var glass = blend(0.22); 936 var glassChrome = blend(0.28); 937 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 938 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 939 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 940 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 941 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 942 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 943 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 944 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 945 return { 946 glass: glass + ' / 0.92', 947 glassChrome: glassChrome + ' / 0.92', 948 glassSubtle: blend(0.15) + ' / 0.88', 949 glassHover: blend(0.28) + ' / 0.94', 950 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 951 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 952 }; 953 }; 954 955 if (dsData.tintSurfacesFromPrimary && isDark) { 956 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 957 colors = Object.assign({}, colors, { 958 background: hue + ' ' + surfaceSat + '% 9%', 959 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 960 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 961 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 962 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 963 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 964 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 965 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 966 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 967 glass: hue + ' 28% 16% / 0.88', 968 glassChrome: hue + ' 28% 14% / 0.88', 969 glassSubtle: hue + ' 26% 18% / 0.75', 970 glassHover: hue + ' 30% 20% / 0.92', 971 glassBorder: hue + ' 24% 28% / 0.55' 972 }); 973 } else if (dsData.frostedChrome && !isDark) { 974 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 975 } 976 977 var root = document.documentElement; 978 root.setAttribute('data-design-system', ds); 979 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 980 else root.removeAttribute('data-frosted-chrome'); 981 if (isDark) root.classList.add('dark'); 982 else root.classList.remove('dark'); 983 root.style.colorScheme = isDark ? 'dark' : 'light'; 984 985 var h = function(v) { return 'hsl(' + v + ')'; }; 986 987 root.style.setProperty('--background', h(colors.background)); 988 root.style.setProperty('--foreground', h(colors.foreground)); 989 root.style.setProperty('--card', h(colors.card)); 990 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 991 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 992 root.style.setProperty('--popover', h(colors.popover)); 993 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 994 root.style.setProperty('--border', h(colors.border)); 995 root.style.setProperty('--muted', h(colors.muted)); 996 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 997 root.style.setProperty('--secondary', h(colors.secondary)); 998 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 999 root.style.setProperty('--accent', h(colors.accent)); 1000 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 1001 root.style.setProperty('--input', h(colors.input)); 1002 root.style.setProperty('--sidebar', h(colors.sidebar)); 1003 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 1004 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 1005 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 1006 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 1007 1008 root.style.setProperty('--glass', h(colors.glass)); 1009 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 1010 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 1011 root.style.setProperty('--glass-hover', h(colors.glassHover)); 1012 root.style.setProperty('--glass-border', h(colors.glassBorder)); 1013 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 1014 1015 if (dsData.frostedChrome && !isDark) { 1016 var darkChrome = dsData.dark; 1017 var darkPrimary = pcData.dark; 1018 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 1019 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 1020 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 1021 if (dsData.tintSurfacesFromPrimary) { 1022 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 1023 darkChrome = Object.assign({}, darkChrome, { 1024 glass: darkHue + ' 28% 16% / 0.88', 1025 glassChrome: darkHue + ' 28% 14% / 0.88', 1026 glassBorder: darkHue + ' 24% 28% / 0.55' 1027 }); 1028 } 1029 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 1030 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 1031 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 1032 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 1033 } 1034 1035 if (!isDark) { 1036 root.style.setProperty('--hero-halo-center', h(colors.background)); 1037 root.style.setProperty('--hero-halo-mid', h(colors.card)); 1038 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 1039 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 1040 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 1041 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
1041+ '%' : colors.border)); 1042 } else { 1043 root.style.setProperty('--hero-halo-center', h(colors.card)); 1044 root.style.setProperty('--hero-halo-mid', h(colors.background)); 1045 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 1046 root.style.setProperty('--hero-halo-edge', h(colors.border)); 1047 } 1048 1049 root.style.setProperty('--primary', h(primary)); 1050 root.style.setProperty('--primary-foreground', h(primaryFg)); 1051 root.style.setProperty('--ring', h(primary)); 1052 root.style.setProperty('--sidebar-primary', h(primary)); 1053 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 1054 root.style.setProperty('--sidebar-ring', h(primary)); 1055 1056 root.style.setProperty('--destructive', h(sem.destructive)); 1057 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 1058 1059 if (isDark) { 1060 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 1061 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 1062 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 1063 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 1064 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 1065 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
1065+ '% / 0.2'); 1066 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 1067 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 1068 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 1069 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 1070 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 1071 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 1072 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 1073 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 1074 } else { 1075 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 1076 var textSat = Math.min(Math.max(sat - 2, 52), 80); 1077 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 1078 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 1079 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 1080 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 1081 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 1082 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 1083 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 1084 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 1085 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 1086 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 1087 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 1088 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 1089 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 1090 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 1091 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 1092 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 1093 } 1094 1095 var sat = isDark ? 70 : 65; 1096 var lit = isDark ? 55 : 50; 1097 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 1098 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 1099 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 1100 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 1101 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 1102 } catch (e) {} 1103})(); 1104</script>
1104<script id="buy-trust-dismiss-init"> 1105(function() { 1106 try { 1107 var path = location.pathname.split("?")[0]; 1108 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 1109 document.documentElement.setAttribute("data-trust-dismissed", "1"); 1110 } 1111 } catch (e) {} 1112})(); 1113</script>
1113<script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"buy\",\"products\",\"apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1?_rsc=1yzog\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"(site)\",{\"children\":[\"buy\",{\"children\":[\"products\",{\"children\":[[\"handle\",\"apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1\",\"d\",null],{\"children\":[\"__PAGE__\",{}]}]}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/77f0440bdb3d24e5.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"id\":\"theme-early-bootstrap\",\"data-cfasync\":\"false\",\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var t=localStorage.getItem('theme');var dark=t==='dark';var r=document.documentElement;if(dark){r.classList.add('dark');r.classList.remove('light');r.style.backgroundColor='hsl(222 47% 11%)';}else{r.classList.remove('dark');r.style.backgroundColor='';}r.style.colorScheme=dark?'dark':'light';document.cookie='pt-theme='+(dark?'dark':'light')+'; Path=/; Max-Age=31536000; SameSite=Lax';}catch(e){}})();\"}}]}],[\"$\",\"body\",null,{\"className\":\"font-sans antialiased min-h-screen bg-background text-foreground\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{\"env\":{\"HOST_NAME\":\"https://www.phonetradr.com\",\"PHONE_IMAGES_BASE_URL\":\"https://www.phonetradr.com/phone-images/\",\"CURRENCY_SYMBOL\":\"R\"}}],[\"$\",\"$L4\",null,{}],[\"$\",\"$L5\",null,{}],[\"$\",\"$L6\",null,{}],[\"$\",\"$L7\",null,{\"defaultTheme\":\"light\",\"children\":[[\"$\",\"$8\",null,{\"fallback\":null,\"children\":[\"$\",\"$L9\",null,{}]}],[\"$\",\"$La\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lb\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"div\",null,{\"className\":\"flex min-h-[50vh] flex-col items-center justify-center gap-4 px-4 text-center\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-2xl font-semibold\",\"children\":\"Page not found\"}],[\"$\",\"p\",null,{\"className\":\"text-muted-foreground max-w-md\",\"children\":\"The page you requested does not exist or has moved.\"}],[\"$\",\"$Lc\",null,{\"href\":\"/\",\"children\":\"Back to home\",\"className\":\"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [\u0026_svg]:pointer-events-none [\u0026_svg]:size-4 [\u0026_svg]:shrink-0 bg-primary text-primary-foreground shadow hover:bg-primary/90 h-9 px-4 py-2\",\"ref\":null}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],[\"$\",\"$Ld\",null,{}]]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Le\",null,{\"children\":[\"$\",\"$La\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lb\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$La\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lb\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$La\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lb\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$La\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lb\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[\"$Lf\",null,[\"$\",\"$L10\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@11\"}]}]]}],{}
1113,null,false,null]},null,false,\"$@12\"]},null,false,\"$@12\"]},null,false,\"$@12\"]},null,false,null]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L13\",null,{\"children\":\"$L14\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L15\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L16\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$17\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"x3p2u1_grTu341TNrmyCQ\"}\n"])</script>
1113<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
1113<script id="theme-init" data-cfasync="false"> 1114(function() { 1115 try { 1116 var path = location.pathname; 1117 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 1118 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 1119 var ds; 1120 var pc; 1121 1122 if (isAdminV2) { 1123 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 1124 pc = localStorage.getItem('admin-primary-color') || 'blue'; 1125 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 1126 } else { 1127 var seasonalKey = localStorage.getItem('seasonal-theme'); 1128 var preset = seasonalKey && seasonalPresets[seasonalKey]; 1129 1130 if (!localStorage.getItem('design-system-id-migrated-v3')) { 1131 var storedDs = localStorage.getItem('design-system'); 1132 if (storedDs === 'frosted-slate') { 1133 localStorage.setItem('design-system', 'frosted'); 1134 } 1135 localStorage.setItem('design-system-id-migrated-v3', '1'); 1136 } 1137 1138 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 1139 var currentDs = localStorage.getItem('design-system'); 1140 if (!currentDs || currentDs === 'modern-minimal') { 1141 localStorage.setItem('design-system', 'frosted-slate'); 1142 } 1143 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 1144 } 1145 1146 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 1147 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 1148 } 1149 var theme = localStorage.getItem('theme') || 'light'; 1150 var isDark = theme === 'dark'; 1151 1152 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 1153 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
115360 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 1154 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 1155 1156 var dsData = designSystems[ds] || designSystems['frosted-slate']; 1157 var pcData = primaryColors[pc] || primaryColors['purple']; 1158 var colors = isDark ? dsData.dark : dsData.light; 1159 var primary = isDark ? pcData.dark : pcData.light; 1160 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 1161 var sem = isDark ? semantic.dark : semantic.light; 1162 1163 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 1164 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 1165 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 1166 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 1167 var variantHue = (hue + 130) % 360; 1168 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 1169 var variantLit = isDark ? 55 : 42; 1170 1171 var applyLightFrostedGlass = function(primary, background) { 1172 var parseHsl = function(v) { 1173 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 1174 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 1175 }; 1176 var hslToRgb = function(h, s, l) { 1177 s /= 100; l /= 100; 1178 var c = (1 - Math.abs(2 * l - 1)) * s; 1179 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 1180 var m = l - c / 2; 1181 var r = 0, g = 0, b = 0; 1182 if (h < 60) { r = c; g = x; } 1183 else if (h < 120) { r = x; g = c; } 1184 else if (h < 180) { g = c; b = x; } 1185 else if (h < 240) { g = x; b = c; } 1186 else if (h < 300) { r = x; b = c; } 1187 else { r = c; b = x; } 1188 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 1189 }; 1190 var rgbToHsl = function(r, g, b) { 1191 r /= 255; g /= 255; b /= 255; 1192 var max = Math.max(r, g, b), min = Math.min(r, g, b); 1193 var l = (max + min) / 2, h = 0, s = 0; 1194 if (max !== min) { 1195 var d = max - min; 1196 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 1197 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 1198 else if (max === g) h = ((b - r) / d + 2) / 6; 1199 else h = ((r - g) / d + 4) / 6; 1200 } 1201 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 1202 }; 1203 var blend = function(alpha) { 1204 var p = parseHsl(primary); 1205 var bg = parseHsl(background); 1206 var pr = hslToRgb(p.h, p.s, p.l); 1207 var br = hslToRgb(bg.h, bg.s, bg.l); 1208 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 1209 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 1210 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 1211 return rgbToHsl(r, g, b); 1212 }; 1213 var glass = blend(0.22); 1214 var glassChrome = blend(0.28); 1215 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 1216 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 1217 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 1218 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 1219 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 1220 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 1221 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 1222 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 1223 return { 1224 glass: glass + ' / 0.92', 1225 glassChrome: glassChrome + ' / 0.92', 1226 glassSubtle: blend(0.15) + ' / 0.88', 1227 glassHover: blend(0.28) + ' / 0.94', 1228 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 1229 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 1230 }; 1231 }; 1232 1233 if (dsData.tintSurfacesFromPrimary && isDark) { 1234 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 1235 colors = Object.assign({}, colors, { 1236 background: hue + ' ' + surfaceSat + '% 9%', 1237 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 1238 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 1239 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 1240 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 1241 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 1242 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 1243 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 1244 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 1245 glass: hue + ' 28% 16% / 0.88', 1246 glassChrome: hue + ' 28% 14% / 0.88', 1247 glassSubtle: hue + ' 26% 18% / 0.75', 1248 glassHover: hue + ' 30% 20% / 0.92', 1249 glassBorder: hue + ' 24% 28% / 0.55' 1250 }); 1251 } else if (dsData.frostedChrome && !isDark) { 1252 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 1253 } 1254 1255 var root = document.documentElement; 1256 root.setAttribute('data-design-system', ds); 1257 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 1258 else root.removeAttribute('data-frosted-chrome'); 1259 if (isDark) root.classList.add('dark'); 1260 else root.classList.remove('dark'); 1261 root.style.colorScheme = isDark ? 'dark' : 'light'; 1262 1263 var h = function(v) { return 'hsl(' + v + ')'; }; 1264 1265 root.style.setProperty('--background', h(colors.background)); 1266 root.style.setProperty('--foreground', h(colors.foreground)); 1267 root.style.setProperty('--card', h(colors.card)); 1268 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 1269 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 1270 root.style.setProperty('--popover', h(colors.popover)); 1271 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 1272 root.style.setProperty('--border', h(colors.border)); 1273 root.style.setProperty('--muted', h(colors.muted)); 1274 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 1275 root.style.setProperty('--secondary', h(colors.secondary)); 1276 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 1277 root.style.setProperty('--accent', h(colors.accent)); 1278 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 1279 root.style.setProperty('--input', h(colors.input)); 1280 root.style.setProperty('--sidebar', h(colors.sidebar)); 1281 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 1282 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 1283 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 1284 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 1285 1286 root.style.setProperty('--glass', h(colors.glass)); 1287 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 1288 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 1289 root.style.setProperty('--glass-hover', h(colors.glassHover)); 1290 root.style.setProperty('--glass-border', h(colors.glassBorder)); 1291 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 1292 1293 if (dsData.frostedChrome && !isDark) { 1294 var darkChrome = dsData.dark; 1295 var darkPrimary = pcData.dark; 1296 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 1297 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 1298 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 1299 if (dsData.tintSurfacesFromPrimary) { 1300 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 1301 darkChrome = Object.assign({}, darkChrome, { 1302 glass: darkHue + ' 28% 16% / 0.88', 1303 glassChrome: darkHue + ' 28% 14% / 0.88', 1304 glassBorder: darkHue + ' 24% 28% / 0.55' 1305 }); 1306 } 1307 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 1308 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 1309 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 1310 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 1311 } 1312 1313 if (!isDark) { 1314 root.style.setProperty('--hero-halo-center', h(colors.background)); 1315 root.style.setProperty('--hero-halo-mid', h(colors.card)); 1316 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 1317 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 1318 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 1319 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
1319+ '%' : colors.border)); 1320 } else { 1321 root.style.setProperty('--hero-halo-center', h(colors.card)); 1322 root.style.setProperty('--hero-halo-mid', h(colors.background)); 1323 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 1324 root.style.setProperty('--hero-halo-edge', h(colors.border)); 1325 } 1326 1327 root.style.setProperty('--primary', h(primary)); 1328 root.style.setProperty('--primary-foreground', h(primaryFg)); 1329 root.style.setProperty('--ring', h(primary)); 1330 root.style.setProperty('--sidebar-primary', h(primary)); 1331 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 1332 root.style.setProperty('--sidebar-ring', h(primary)); 1333 1334 root.style.setProperty('--destructive', h(sem.destructive)); 1335 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 1336 1337 if (isDark) { 1338 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 1339 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 1340 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 1341 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 1342 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 1343 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
1343+ '% / 0.2'); 1344 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 1345 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 1346 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 1347 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 1348 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 1349 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 1350 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 1351 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 1352 } else { 1353 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 1354 var textSat = Math.min(Math.max(sat - 2, 52), 80); 1355 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 1356 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 1357 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 1358 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 1359 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 1360 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 1361 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 1362 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 1363 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 1364 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 1365 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 1366 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 1367 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 1368 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 1369 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 1370 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 1371 } 1372 1373 var sat = isDark ? 70 : 65; 1374 var lit = isDark ? 55 : 50; 1375 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 1376 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 1377 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 1378 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 1379 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 1380 } catch (e) {} 1381})(); 1382</script>
1382<script id="buy-trust-dismiss-init"> 1383(function() { 1384 try { 1385 var path = location.pathname.split("?")[0]; 1386 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 1387 document.documentElement.setAttribute("data-trust-dismissed", "1"); 1388 } 1389 } catch (e) {} 1390})(); 1391</script>
1391<script>self.__next_f.push([1,"18:[]\n12:\"$W18\"\n"])</script>
1391<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
1391<script id="theme-init" data-cfasync="false"> 1392(function() { 1393 try { 1394 var path = location.pathname; 1395 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 1396 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 1397 var ds; 1398 var pc; 1399 1400 if (isAdminV2) { 1401 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 1402 pc = localStorage.getItem('admin-primary-color') || 'blue'; 1403 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 1404 } else { 1405 var seasonalKey = localStorage.getItem('seasonal-theme'); 1406 var preset = seasonalKey && seasonalPresets[seasonalKey]; 1407 1408 if (!localStorage.getItem('design-system-id-migrated-v3')) { 1409 var storedDs = localStorage.getItem('design-system'); 1410 if (storedDs === 'frosted-slate') { 1411 localStorage.setItem('design-system', 'frosted'); 1412 } 1413 localStorage.setItem('design-system-id-migrated-v3', '1'); 1414 } 1415 1416 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 1417 var currentDs = localStorage.getItem('design-system'); 1418 if (!currentDs || currentDs === 'modern-minimal') { 1419 localStorage.setItem('design-system', 'frosted-slate'); 1420 } 1421 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 1422 } 1423 1424 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 1425 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 1426 } 1427 var theme = localStorage.getItem('theme') || 'light'; 1428 var isDark = theme === 'dark'; 1429 1430 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 1431 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
143160 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 1432 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 1433 1434 var dsData = designSystems[ds] || designSystems['frosted-slate']; 1435 var pcData = primaryColors[pc] || primaryColors['purple']; 1436 var colors = isDark ? dsData.dark : dsData.light; 1437 var primary = isDark ? pcData.dark : pcData.light; 1438 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 1439 var sem = isDark ? semantic.dark : semantic.light; 1440 1441 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 1442 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 1443 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 1444 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 1445 var variantHue = (hue + 130) % 360; 1446 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 1447 var variantLit = isDark ? 55 : 42; 1448 1449 var applyLightFrostedGlass = function(primary, background) { 1450 var parseHsl = function(v) { 1451 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 1452 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 1453 }; 1454 var hslToRgb = function(h, s, l) { 1455 s /= 100; l /= 100; 1456 var c = (1 - Math.abs(2 * l - 1)) * s; 1457 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 1458 var m = l - c / 2; 1459 var r = 0, g = 0, b = 0; 1460 if (h < 60) { r = c; g = x; } 1461 else if (h < 120) { r = x; g = c; } 1462 else if (h < 180) { g = c; b = x; } 1463 else if (h < 240) { g = x; b = c; } 1464 else if (h < 300) { r = x; b = c; } 1465 else { r = c; b = x; } 1466 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 1467 }; 1468 var rgbToHsl = function(r, g, b) { 1469 r /= 255; g /= 255; b /= 255; 1470 var max = Math.max(r, g, b), min = Math.min(r, g, b); 1471 var l = (max + min) / 2, h = 0, s = 0; 1472 if (max !== min) { 1473 var d = max - min; 1474 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 1475 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 1476 else if (max === g) h = ((b - r) / d + 2) / 6; 1477 else h = ((r - g) / d + 4) / 6; 1478 } 1479 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 1480 }; 1481 var blend = function(alpha) { 1482 var p = parseHsl(primary); 1483 var bg = parseHsl(background); 1484 var pr = hslToRgb(p.h, p.s, p.l); 1485 var br = hslToRgb(bg.h, bg.s, bg.l); 1486 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 1487 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 1488 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 1489 return rgbToHsl(r, g, b); 1490 }; 1491 var glass = blend(0.22); 1492 var glassChrome = blend(0.28); 1493 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 1494 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 1495 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 1496 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 1497 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 1498 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 1499 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 1500 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 1501 return { 1502 glass: glass + ' / 0.92', 1503 glassChrome: glassChrome + ' / 0.92', 1504 glassSubtle: blend(0.15) + ' / 0.88', 1505 glassHover: blend(0.28) + ' / 0.94', 1506 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 1507 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 1508 }; 1509 }; 1510 1511 if (dsData.tintSurfacesFromPrimary && isDark) { 1512 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 1513 colors = Object.assign({}, colors, { 1514 background: hue + ' ' + surfaceSat + '% 9%', 1515 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 1516 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 1517 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 1518 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 1519 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 1520 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 1521 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 1522 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 1523 glass: hue + ' 28% 16% / 0.88', 1524 glassChrome: hue + ' 28% 14% / 0.88', 1525 glassSubtle: hue + ' 26% 18% / 0.75', 1526 glassHover: hue + ' 30% 20% / 0.92', 1527 glassBorder: hue + ' 24% 28% / 0.55' 1528 }); 1529 } else if (dsData.frostedChrome && !isDark) { 1530 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 1531 } 1532 1533 var root = document.documentElement; 1534 root.setAttribute('data-design-system', ds); 1535 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 1536 else root.removeAttribute('data-frosted-chrome'); 1537 if (isDark) root.classList.add('dark'); 1538 else root.classList.remove('dark'); 1539 root.style.colorScheme = isDark ? 'dark' : 'light'; 1540 1541 var h = function(v) { return 'hsl(' + v + ')'; }; 1542 1543 root.style.setProperty('--background', h(colors.background)); 1544 root.style.setProperty('--foreground', h(colors.foreground)); 1545 root.style.setProperty('--card', h(colors.card)); 1546 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 1547 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 1548 root.style.setProperty('--popover', h(colors.popover)); 1549 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 1550 root.style.setProperty('--border', h(colors.border)); 1551 root.style.setProperty('--muted', h(colors.muted)); 1552 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 1553 root.style.setProperty('--secondary', h(colors.secondary)); 1554 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 1555 root.style.setProperty('--accent', h(colors.accent)); 1556 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 1557 root.style.setProperty('--input', h(colors.input)); 1558 root.style.setProperty('--sidebar', h(colors.sidebar)); 1559 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 1560 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 1561 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 1562 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 1563 1564 root.style.setProperty('--glass', h(colors.glass)); 1565 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 1566 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 1567 root.style.setProperty('--glass-hover', h(colors.glassHover)); 1568 root.style.setProperty('--glass-border', h(colors.glassBorder)); 1569 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 1570 1571 if (dsData.frostedChrome && !isDark) { 1572 var darkChrome = dsData.dark; 1573 var darkPrimary = pcData.dark; 1574 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 1575 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 1576 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 1577 if (dsData.tintSurfacesFromPrimary) { 1578 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 1579 darkChrome = Object.assign({}, darkChrome, { 1580 glass: darkHue + ' 28% 16% / 0.88', 1581 glassChrome: darkHue + ' 28% 14% / 0.88', 1582 glassBorder: darkHue + ' 24% 28% / 0.55' 1583 }); 1584 } 1585 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 1586 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 1587 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 1588 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 1589 } 1590 1591 if (!isDark) { 1592 root.style.setProperty('--hero-halo-center', h(colors.background)); 1593 root.style.setProperty('--hero-halo-mid', h(colors.card)); 1594 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 1595 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 1596 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 1597 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
1597+ '%' : colors.border)); 1598 } else { 1599 root.style.setProperty('--hero-halo-center', h(colors.card)); 1600 root.style.setProperty('--hero-halo-mid', h(colors.background)); 1601 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 1602 root.style.setProperty('--hero-halo-edge', h(colors.border)); 1603 } 1604 1605 root.style.setProperty('--primary', h(primary)); 1606 root.style.setProperty('--primary-foreground', h(primaryFg)); 1607 root.style.setProperty('--ring', h(primary)); 1608 root.style.setProperty('--sidebar-primary', h(primary)); 1609 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 1610 root.style.setProperty('--sidebar-ring', h(primary)); 1611 1612 root.style.setProperty('--destructive', h(sem.destructive)); 1613 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 1614 1615 if (isDark) { 1616 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 1617 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 1618 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 1619 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 1620 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 1621 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
1621+ '% / 0.2'); 1622 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 1623 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 1624 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 1625 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 1626 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 1627 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 1628 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 1629 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 1630 } else { 1631 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 1632 var textSat = Math.min(Math.max(sat - 2, 52), 80); 1633 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 1634 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 1635 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 1636 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 1637 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 1638 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 1639 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 1640 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 1641 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 1642 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 1643 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 1644 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 1645 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 1646 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 1647 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 1648 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 1649 } 1650 1651 var sat = isDark ? 70 : 65; 1652 var lit = isDark ? 55 : 50; 1653 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 1654 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 1655 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 1656 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 1657 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 1658 } catch (e) {} 1659})(); 1660</script>
1660<script id="buy-trust-dismiss-init"> 1661(function() { 1662 try { 1663 var path = location.pathname.split("?")[0]; 1664 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 1665 document.documentElement.setAttribute("data-trust-dismissed", "1"); 1666 } 1667 } catch (e) {} 1668})(); 1669</script>
1669<script>self.__next_f.push([1,"14:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#ffffff\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"content\":\"#141019\",\"media\":\"(prefers-color-scheme: dark)\"}]]\n"])</script>
1669<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
1669<script id="theme-init" data-cfasync="false"> 1670(function() { 1671 try { 1672 var path = location.pathname; 1673 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 1674 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 1675 var ds; 1676 var pc; 1677 1678 if (isAdminV2) { 1679 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 1680 pc = localStorage.getItem('admin-primary-color') || 'blue'; 1681 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 1682 } else { 1683 var seasonalKey = localStorage.getItem('seasonal-theme'); 1684 var preset = seasonalKey && seasonalPresets[seasonalKey]; 1685 1686 if (!localStorage.getItem('design-system-id-migrated-v3')) { 1687 var storedDs = localStorage.getItem('design-system'); 1688 if (storedDs === 'frosted-slate') { 1689 localStorage.setItem('design-system', 'frosted'); 1690 } 1691 localStorage.setItem('design-system-id-migrated-v3', '1'); 1692 } 1693 1694 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 1695 var currentDs = localStorage.getItem('design-system'); 1696 if (!currentDs || currentDs === 'modern-minimal') { 1697 localStorage.setItem('design-system', 'frosted-slate'); 1698 } 1699 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 1700 } 1701 1702 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 1703 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 1704 } 1705 var theme = localStorage.getItem('theme') || 'light'; 1706 var isDark = theme === 'dark'; 1707 1708 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 1709 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
170960 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 1710 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 1711 1712 var dsData = designSystems[ds] || designSystems['frosted-slate']; 1713 var pcData = primaryColors[pc] || primaryColors['purple']; 1714 var colors = isDark ? dsData.dark : dsData.light; 1715 var primary = isDark ? pcData.dark : pcData.light; 1716 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 1717 var sem = isDark ? semantic.dark : semantic.light; 1718 1719 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 1720 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 1721 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 1722 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 1723 var variantHue = (hue + 130) % 360; 1724 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 1725 var variantLit = isDark ? 55 : 42; 1726 1727 var applyLightFrostedGlass = function(primary, background) { 1728 var parseHsl = function(v) { 1729 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 1730 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 1731 }; 1732 var hslToRgb = function(h, s, l) { 1733 s /= 100; l /= 100; 1734 var c = (1 - Math.abs(2 * l - 1)) * s; 1735 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 1736 var m = l - c / 2; 1737 var r = 0, g = 0, b = 0; 1738 if (h < 60) { r = c; g = x; } 1739 else if (h < 120) { r = x; g = c; } 1740 else if (h < 180) { g = c; b = x; } 1741 else if (h < 240) { g = x; b = c; } 1742 else if (h < 300) { r = x; b = c; } 1743 else { r = c; b = x; } 1744 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 1745 }; 1746 var rgbToHsl = function(r, g, b) { 1747 r /= 255; g /= 255; b /= 255; 1748 var max = Math.max(r, g, b), min = Math.min(r, g, b); 1749 var l = (max + min) / 2, h = 0, s = 0; 1750 if (max !== min) { 1751 var d = max - min; 1752 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 1753 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 1754 else if (max === g) h = ((b - r) / d + 2) / 6; 1755 else h = ((r - g) / d + 4) / 6; 1756 } 1757 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 1758 }; 1759 var blend = function(alpha) { 1760 var p = parseHsl(primary); 1761 var bg = parseHsl(background); 1762 var pr = hslToRgb(p.h, p.s, p.l); 1763 var br = hslToRgb(bg.h, bg.s, bg.l); 1764 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 1765 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 1766 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 1767 return rgbToHsl(r, g, b); 1768 }; 1769 var glass = blend(0.22); 1770 var glassChrome = blend(0.28); 1771 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 1772 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 1773 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 1774 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 1775 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 1776 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 1777 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 1778 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 1779 return { 1780 glass: glass + ' / 0.92', 1781 glassChrome: glassChrome + ' / 0.92', 1782 glassSubtle: blend(0.15) + ' / 0.88', 1783 glassHover: blend(0.28) + ' / 0.94', 1784 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 1785 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 1786 }; 1787 }; 1788 1789 if (dsData.tintSurfacesFromPrimary && isDark) { 1790 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 1791 colors = Object.assign({}, colors, { 1792 background: hue + ' ' + surfaceSat + '% 9%', 1793 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 1794 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 1795 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 1796 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 1797 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 1798 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 1799 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 1800 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 1801 glass: hue + ' 28% 16% / 0.88', 1802 glassChrome: hue + ' 28% 14% / 0.88', 1803 glassSubtle: hue + ' 26% 18% / 0.75', 1804 glassHover: hue + ' 30% 20% / 0.92', 1805 glassBorder: hue + ' 24% 28% / 0.55' 1806 }); 1807 } else if (dsData.frostedChrome && !isDark) { 1808 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 1809 } 1810 1811 var root = document.documentElement; 1812 root.setAttribute('data-design-system', ds); 1813 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 1814 else root.removeAttribute('data-frosted-chrome'); 1815 if (isDark) root.classList.add('dark'); 1816 else root.classList.remove('dark'); 1817 root.style.colorScheme = isDark ? 'dark' : 'light'; 1818 1819 var h = function(v) { return 'hsl(' + v + ')'; }; 1820 1821 root.style.setProperty('--background', h(colors.background)); 1822 root.style.setProperty('--foreground', h(colors.foreground)); 1823 root.style.setProperty('--card', h(colors.card)); 1824 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 1825 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 1826 root.style.setProperty('--popover', h(colors.popover)); 1827 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 1828 root.style.setProperty('--border', h(colors.border)); 1829 root.style.setProperty('--muted', h(colors.muted)); 1830 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 1831 root.style.setProperty('--secondary', h(colors.secondary)); 1832 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 1833 root.style.setProperty('--accent', h(colors.accent)); 1834 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 1835 root.style.setProperty('--input', h(colors.input)); 1836 root.style.setProperty('--sidebar', h(colors.sidebar)); 1837 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 1838 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 1839 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 1840 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 1841 1842 root.style.setProperty('--glass', h(colors.glass)); 1843 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 1844 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 1845 root.style.setProperty('--glass-hover', h(colors.glassHover)); 1846 root.style.setProperty('--glass-border', h(colors.glassBorder)); 1847 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 1848 1849 if (dsData.frostedChrome && !isDark) { 1850 var darkChrome = dsData.dark; 1851 var darkPrimary = pcData.dark; 1852 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 1853 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 1854 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 1855 if (dsData.tintSurfacesFromPrimary) { 1856 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 1857 darkChrome = Object.assign({}, darkChrome, { 1858 glass: darkHue + ' 28% 16% / 0.88', 1859 glassChrome: darkHue + ' 28% 14% / 0.88', 1860 glassBorder: darkHue + ' 24% 28% / 0.55' 1861 }); 1862 } 1863 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 1864 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 1865 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 1866 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 1867 } 1868 1869 if (!isDark) { 1870 root.style.setProperty('--hero-halo-center', h(colors.background)); 1871 root.style.setProperty('--hero-halo-mid', h(colors.card)); 1872 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 1873 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 1874 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 1875 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
1875+ '%' : colors.border)); 1876 } else { 1877 root.style.setProperty('--hero-halo-center', h(colors.card)); 1878 root.style.setProperty('--hero-halo-mid', h(colors.background)); 1879 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 1880 root.style.setProperty('--hero-halo-edge', h(colors.border)); 1881 } 1882 1883 root.style.setProperty('--primary', h(primary)); 1884 root.style.setProperty('--primary-foreground', h(primaryFg)); 1885 root.style.setProperty('--ring', h(primary)); 1886 root.style.setProperty('--sidebar-primary', h(primary)); 1887 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 1888 root.style.setProperty('--sidebar-ring', h(primary)); 1889 1890 root.style.setProperty('--destructive', h(sem.destructive)); 1891 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 1892 1893 if (isDark) { 1894 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 1895 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 1896 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 1897 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 1898 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 1899 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
1899+ '% / 0.2'); 1900 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 1901 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 1902 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 1903 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 1904 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 1905 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 1906 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 1907 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 1908 } else { 1909 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 1910 var textSat = Math.min(Math.max(sat - 2, 52), 80); 1911 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 1912 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 1913 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 1914 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 1915 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 1916 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 1917 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 1918 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 1919 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 1920 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 1921 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 1922 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 1923 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 1924 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 1925 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 1926 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 1927 } 1928 1929 var sat = isDark ? 70 : 65; 1930 var lit = isDark ? 55 : 50; 1931 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 1932 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 1933 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 1934 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 1935 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 1936 } catch (e) {} 1937})(); 1938</script>
1938<script id="buy-trust-dismiss-init"> 1939(function() { 1940 try { 1941 var path = location.pathname.split("?")[0]; 1942 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 1943 document.documentElement.setAttribute("data-trust-dismissed", "1"); 1944 } 1945 } catch (e) {} 1946})(); 1947</script>
1947<script>self.__next_f.push([1,"19:I[86869,[],\"IconMark\"]\n11:null\n"])</script>
1947<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
1947<script id="theme-init" data-cfasync="false"> 1948(function() { 1949 try { 1950 var path = location.pathname; 1951 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 1952 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 1953 var ds; 1954 var pc; 1955 1956 if (isAdminV2) { 1957 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 1958 pc = localStorage.getItem('admin-primary-color') || 'blue'; 1959 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 1960 } else { 1961 var seasonalKey = localStorage.getItem('seasonal-theme'); 1962 var preset = seasonalKey && seasonalPresets[seasonalKey]; 1963 1964 if (!localStorage.getItem('design-system-id-migrated-v3')) { 1965 var storedDs = localStorage.getItem('design-system'); 1966 if (storedDs === 'frosted-slate') { 1967 localStorage.setItem('design-system', 'frosted'); 1968 } 1969 localStorage.setItem('design-system-id-migrated-v3', '1'); 1970 } 1971 1972 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 1973 var currentDs = localStorage.getItem('design-system'); 1974 if (!currentDs || currentDs === 'modern-minimal') { 1975 localStorage.setItem('design-system', 'frosted-slate'); 1976 } 1977 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 1978 } 1979 1980 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 1981 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 1982 } 1983 var theme = localStorage.getItem('theme') || 'light'; 1984 var isDark = theme === 'dark'; 1985 1986 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 1987 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
198760 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 1988 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 1989 1990 var dsData = designSystems[ds] || designSystems['frosted-slate']; 1991 var pcData = primaryColors[pc] || primaryColors['purple']; 1992 var colors = isDark ? dsData.dark : dsData.light; 1993 var primary = isDark ? pcData.dark : pcData.light; 1994 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 1995 var sem = isDark ? semantic.dark : semantic.light; 1996 1997 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 1998 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 1999 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 2000 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 2001 var variantHue = (hue + 130) % 360; 2002 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 2003 var variantLit = isDark ? 55 : 42; 2004 2005 var applyLightFrostedGlass = function(primary, background) { 2006 var parseHsl = function(v) { 2007 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 2008 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 2009 }; 2010 var hslToRgb = function(h, s, l) { 2011 s /= 100; l /= 100; 2012 var c = (1 - Math.abs(2 * l - 1)) * s; 2013 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 2014 var m = l - c / 2; 2015 var r = 0, g = 0, b = 0; 2016 if (h < 60) { r = c; g = x; } 2017 else if (h < 120) { r = x; g = c; } 2018 else if (h < 180) { g = c; b = x; } 2019 else if (h < 240) { g = x; b = c; } 2020 else if (h < 300) { r = x; b = c; } 2021 else { r = c; b = x; } 2022 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 2023 }; 2024 var rgbToHsl = function(r, g, b) { 2025 r /= 255; g /= 255; b /= 255; 2026 var max = Math.max(r, g, b), min = Math.min(r, g, b); 2027 var l = (max + min) / 2, h = 0, s = 0; 2028 if (max !== min) { 2029 var d = max - min; 2030 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 2031 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 2032 else if (max === g) h = ((b - r) / d + 2) / 6; 2033 else h = ((r - g) / d + 4) / 6; 2034 } 2035 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 2036 }; 2037 var blend = function(alpha) { 2038 var p = parseHsl(primary); 2039 var bg = parseHsl(background); 2040 var pr = hslToRgb(p.h, p.s, p.l); 2041 var br = hslToRgb(bg.h, bg.s, bg.l); 2042 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 2043 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 2044 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 2045 return rgbToHsl(r, g, b); 2046 }; 2047 var glass = blend(0.22); 2048 var glassChrome = blend(0.28); 2049 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 2050 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 2051 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 2052 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 2053 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 2054 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 2055 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 2056 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 2057 return { 2058 glass: glass + ' / 0.92', 2059 glassChrome: glassChrome + ' / 0.92', 2060 glassSubtle: blend(0.15) + ' / 0.88', 2061 glassHover: blend(0.28) + ' / 0.94', 2062 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 2063 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 2064 }; 2065 }; 2066 2067 if (dsData.tintSurfacesFromPrimary && isDark) { 2068 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 2069 colors = Object.assign({}, colors, { 2070 background: hue + ' ' + surfaceSat + '% 9%', 2071 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 2072 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 2073 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 2074 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 2075 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 2076 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 2077 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 2078 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 2079 glass: hue + ' 28% 16% / 0.88', 2080 glassChrome: hue + ' 28% 14% / 0.88', 2081 glassSubtle: hue + ' 26% 18% / 0.75', 2082 glassHover: hue + ' 30% 20% / 0.92', 2083 glassBorder: hue + ' 24% 28% / 0.55' 2084 }); 2085 } else if (dsData.frostedChrome && !isDark) { 2086 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 2087 } 2088 2089 var root = document.documentElement; 2090 root.setAttribute('data-design-system', ds); 2091 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 2092 else root.removeAttribute('data-frosted-chrome'); 2093 if (isDark) root.classList.add('dark'); 2094 else root.classList.remove('dark'); 2095 root.style.colorScheme = isDark ? 'dark' : 'light'; 2096 2097 var h = function(v) { return 'hsl(' + v + ')'; }; 2098 2099 root.style.setProperty('--background', h(colors.background)); 2100 root.style.setProperty('--foreground', h(colors.foreground)); 2101 root.style.setProperty('--card', h(colors.card)); 2102 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 2103 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 2104 root.style.setProperty('--popover', h(colors.popover)); 2105 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 2106 root.style.setProperty('--border', h(colors.border)); 2107 root.style.setProperty('--muted', h(colors.muted)); 2108 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 2109 root.style.setProperty('--secondary', h(colors.secondary)); 2110 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 2111 root.style.setProperty('--accent', h(colors.accent)); 2112 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 2113 root.style.setProperty('--input', h(colors.input)); 2114 root.style.setProperty('--sidebar', h(colors.sidebar)); 2115 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 2116 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 2117 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 2118 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 2119 2120 root.style.setProperty('--glass', h(colors.glass)); 2121 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 2122 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 2123 root.style.setProperty('--glass-hover', h(colors.glassHover)); 2124 root.style.setProperty('--glass-border', h(colors.glassBorder)); 2125 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 2126 2127 if (dsData.frostedChrome && !isDark) { 2128 var darkChrome = dsData.dark; 2129 var darkPrimary = pcData.dark; 2130 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 2131 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 2132 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 2133 if (dsData.tintSurfacesFromPrimary) { 2134 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 2135 darkChrome = Object.assign({}, darkChrome, { 2136 glass: darkHue + ' 28% 16% / 0.88', 2137 glassChrome: darkHue + ' 28% 14% / 0.88', 2138 glassBorder: darkHue + ' 24% 28% / 0.55' 2139 }); 2140 } 2141 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 2142 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 2143 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 2144 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 2145 } 2146 2147 if (!isDark) { 2148 root.style.setProperty('--hero-halo-center', h(colors.background)); 2149 root.style.setProperty('--hero-halo-mid', h(colors.card)); 2150 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 2151 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 2152 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 2153 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
2153+ '%' : colors.border)); 2154 } else { 2155 root.style.setProperty('--hero-halo-center', h(colors.card)); 2156 root.style.setProperty('--hero-halo-mid', h(colors.background)); 2157 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 2158 root.style.setProperty('--hero-halo-edge', h(colors.border)); 2159 } 2160 2161 root.style.setProperty('--primary', h(primary)); 2162 root.style.setProperty('--primary-foreground', h(primaryFg)); 2163 root.style.setProperty('--ring', h(primary)); 2164 root.style.setProperty('--sidebar-primary', h(primary)); 2165 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 2166 root.style.setProperty('--sidebar-ring', h(primary)); 2167 2168 root.style.setProperty('--destructive', h(sem.destructive)); 2169 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 2170 2171 if (isDark) { 2172 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 2173 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 2174 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 2175 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 2176 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 2177 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
2177+ '% / 0.2'); 2178 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 2179 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 2180 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 2181 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 2182 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 2183 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 2184 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 2185 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 2186 } else { 2187 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 2188 var textSat = Math.min(Math.max(sat - 2, 52), 80); 2189 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 2190 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 2191 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 2192 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 2193 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 2194 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 2195 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 2196 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 2197 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 2198 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 2199 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 2200 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 2201 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 2202 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 2203 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 2204 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 2205 } 2206 2207 var sat = isDark ? 70 : 65; 2208 var lit = isDark ? 55 : 50; 2209 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 2210 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 2211 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 2212 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 2213 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 2214 } catch (e) {} 2215})(); 2216</script>
2216<script id="buy-trust-dismiss-init"> 2217(function() { 2218 try { 2219 var path = location.pathname.split("?")[0]; 2220 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 2221 document.documentElement.setAttribute("data-trust-dismissed", "1"); 2222 } 2223 } catch (e) {} 2224})(); 2225</script>
2225<script>self.__next_f.push([1,"16:[[\"$\",\"title\",\"0\",{\"children\":\"Buy an Apple iPad iPad Pro 11\\\" (2nd gen) 128GB Gray | Phonetradr\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Get the best deal in SA on a quality-approved second hand iPad iPad Pro 11\\\" (2nd gen) with a 12-month warranty, Browse our site for other tablets on sale for today.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"canonical\",\"href\":\"https://www.phonetradr.com/buy/products/apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:title\",\"content\":\"Buy an Apple iPad iPad Pro 11\\\" (2nd gen) 128GB Gray | Phonetradr\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:description\",\"content\":\"Get the best deal in SA on a quality-approved second hand iPad iPad Pro 11\\\" (2nd gen) with a 12-month warranty, Browse our site for other tablets on sale for today.\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:url\",\"content\":\"https://www.phonetradr.com/buy/products/apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:site_name\",\"content\":\"Phonetradr\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:locale\",\"content\":\"en_ZA\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:image\",\"content\":\"https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024\u0026h=1024\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"10\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"11\",{\"name\":\"twitter:title\",\"content\":\"Buy an Apple iPad iPad Pro 11\\\" (2nd gen) 128GB Gray | Phonetradr\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:description\",\"content\":\"Get the best deal in SA on a quality-approved second hand iPad iPad Pro 11\\\" (2nd gen) with a 12-month warranty, Browse our site for other tablets on sale for today.\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:image\",\"content\":\"https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024\u0026h=1024\"}],[\"$\",\"link\",\"14\",{\"rel\":\"shortcut icon\",\"href\":\"/images/phonetradr_logo.svg\"}],[\"$\",\"link\",\"15\",{\"rel\":\"icon\",\"href\":\"/images/phonetradr_logo.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"$L19\",\"16\",{}]]\n"])</script>
2225<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
2225<script id="theme-init" data-cfasync="false"> 2226(function() { 2227 try { 2228 var path = location.pathname; 2229 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 2230 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 2231 var ds; 2232 var pc; 2233 2234 if (isAdminV2) { 2235 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 2236 pc = localStorage.getItem('admin-primary-color') || 'blue'; 2237 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 2238 } else { 2239 var seasonalKey = localStorage.getItem('seasonal-theme'); 2240 var preset = seasonalKey && seasonalPresets[seasonalKey]; 2241 2242 if (!localStorage.getItem('design-system-id-migrated-v3')) { 2243 var storedDs = localStorage.getItem('design-system'); 2244 if (storedDs === 'frosted-slate') { 2245 localStorage.setItem('design-system', 'frosted'); 2246 } 2247 localStorage.setItem('design-system-id-migrated-v3', '1'); 2248 } 2249 2250 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 2251 var currentDs = localStorage.getItem('design-system'); 2252 if (!currentDs || currentDs === 'modern-minimal') { 2253 localStorage.setItem('design-system', 'frosted-slate'); 2254 } 2255 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 2256 } 2257 2258 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 2259 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 2260 } 2261 var theme = localStorage.getItem('theme') || 'light'; 2262 var isDark = theme === 'dark'; 2263 2264 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 2265 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
226560 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 2266 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 2267 2268 var dsData = designSystems[ds] || designSystems['frosted-slate']; 2269 var pcData = primaryColors[pc] || primaryColors['purple']; 2270 var colors = isDark ? dsData.dark : dsData.light; 2271 var primary = isDark ? pcData.dark : pcData.light; 2272 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 2273 var sem = isDark ? semantic.dark : semantic.light; 2274 2275 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 2276 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 2277 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 2278 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 2279 var variantHue = (hue + 130) % 360; 2280 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 2281 var variantLit = isDark ? 55 : 42; 2282 2283 var applyLightFrostedGlass = function(primary, background) { 2284 var parseHsl = function(v) { 2285 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 2286 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 2287 }; 2288 var hslToRgb = function(h, s, l) { 2289 s /= 100; l /= 100; 2290 var c = (1 - Math.abs(2 * l - 1)) * s; 2291 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 2292 var m = l - c / 2; 2293 var r = 0, g = 0, b = 0; 2294 if (h < 60) { r = c; g = x; } 2295 else if (h < 120) { r = x; g = c; } 2296 else if (h < 180) { g = c; b = x; } 2297 else if (h < 240) { g = x; b = c; } 2298 else if (h < 300) { r = x; b = c; } 2299 else { r = c; b = x; } 2300 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 2301 }; 2302 var rgbToHsl = function(r, g, b) { 2303 r /= 255; g /= 255; b /= 255; 2304 var max = Math.max(r, g, b), min = Math.min(r, g, b); 2305 var l = (max + min) / 2, h = 0, s = 0; 2306 if (max !== min) { 2307 var d = max - min; 2308 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 2309 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 2310 else if (max === g) h = ((b - r) / d + 2) / 6; 2311 else h = ((r - g) / d + 4) / 6; 2312 } 2313 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 2314 }; 2315 var blend = function(alpha) { 2316 var p = parseHsl(primary); 2317 var bg = parseHsl(background); 2318 var pr = hslToRgb(p.h, p.s, p.l); 2319 var br = hslToRgb(bg.h, bg.s, bg.l); 2320 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 2321 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 2322 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 2323 return rgbToHsl(r, g, b); 2324 }; 2325 var glass = blend(0.22); 2326 var glassChrome = blend(0.28); 2327 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 2328 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 2329 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 2330 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 2331 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 2332 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 2333 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 2334 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 2335 return { 2336 glass: glass + ' / 0.92', 2337 glassChrome: glassChrome + ' / 0.92', 2338 glassSubtle: blend(0.15) + ' / 0.88', 2339 glassHover: blend(0.28) + ' / 0.94', 2340 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 2341 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 2342 }; 2343 }; 2344 2345 if (dsData.tintSurfacesFromPrimary && isDark) { 2346 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 2347 colors = Object.assign({}, colors, { 2348 background: hue + ' ' + surfaceSat + '% 9%', 2349 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 2350 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 2351 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 2352 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 2353 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 2354 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 2355 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 2356 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 2357 glass: hue + ' 28% 16% / 0.88', 2358 glassChrome: hue + ' 28% 14% / 0.88', 2359 glassSubtle: hue + ' 26% 18% / 0.75', 2360 glassHover: hue + ' 30% 20% / 0.92', 2361 glassBorder: hue + ' 24% 28% / 0.55' 2362 }); 2363 } else if (dsData.frostedChrome && !isDark) { 2364 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 2365 } 2366 2367 var root = document.documentElement; 2368 root.setAttribute('data-design-system', ds); 2369 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 2370 else root.removeAttribute('data-frosted-chrome'); 2371 if (isDark) root.classList.add('dark'); 2372 else root.classList.remove('dark'); 2373 root.style.colorScheme = isDark ? 'dark' : 'light'; 2374 2375 var h = function(v) { return 'hsl(' + v + ')'; }; 2376 2377 root.style.setProperty('--background', h(colors.background)); 2378 root.style.setProperty('--foreground', h(colors.foreground)); 2379 root.style.setProperty('--card', h(colors.card)); 2380 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 2381 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 2382 root.style.setProperty('--popover', h(colors.popover)); 2383 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 2384 root.style.setProperty('--border', h(colors.border)); 2385 root.style.setProperty('--muted', h(colors.muted)); 2386 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 2387 root.style.setProperty('--secondary', h(colors.secondary)); 2388 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 2389 root.style.setProperty('--accent', h(colors.accent)); 2390 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 2391 root.style.setProperty('--input', h(colors.input)); 2392 root.style.setProperty('--sidebar', h(colors.sidebar)); 2393 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 2394 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 2395 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 2396 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 2397 2398 root.style.setProperty('--glass', h(colors.glass)); 2399 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 2400 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 2401 root.style.setProperty('--glass-hover', h(colors.glassHover)); 2402 root.style.setProperty('--glass-border', h(colors.glassBorder)); 2403 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 2404 2405 if (dsData.frostedChrome && !isDark) { 2406 var darkChrome = dsData.dark; 2407 var darkPrimary = pcData.dark; 2408 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 2409 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 2410 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 2411 if (dsData.tintSurfacesFromPrimary) { 2412 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 2413 darkChrome = Object.assign({}, darkChrome, { 2414 glass: darkHue + ' 28% 16% / 0.88', 2415 glassChrome: darkHue + ' 28% 14% / 0.88', 2416 glassBorder: darkHue + ' 24% 28% / 0.55' 2417 }); 2418 } 2419 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 2420 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 2421 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 2422 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 2423 } 2424 2425 if (!isDark) { 2426 root.style.setProperty('--hero-halo-center', h(colors.background)); 2427 root.style.setProperty('--hero-halo-mid', h(colors.card)); 2428 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 2429 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 2430 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 2431 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
2431+ '%' : colors.border)); 2432 } else { 2433 root.style.setProperty('--hero-halo-center', h(colors.card)); 2434 root.style.setProperty('--hero-halo-mid', h(colors.background)); 2435 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 2436 root.style.setProperty('--hero-halo-edge', h(colors.border)); 2437 } 2438 2439 root.style.setProperty('--primary', h(primary)); 2440 root.style.setProperty('--primary-foreground', h(primaryFg)); 2441 root.style.setProperty('--ring', h(primary)); 2442 root.style.setProperty('--sidebar-primary', h(primary)); 2443 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 2444 root.style.setProperty('--sidebar-ring', h(primary)); 2445 2446 root.style.setProperty('--destructive', h(sem.destructive)); 2447 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 2448 2449 if (isDark) { 2450 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 2451 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 2452 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 2453 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 2454 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 2455 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
2455+ '% / 0.2'); 2456 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 2457 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 2458 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 2459 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 2460 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 2461 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 2462 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 2463 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 2464 } else { 2465 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 2466 var textSat = Math.min(Math.max(sat - 2, 52), 80); 2467 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 2468 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 2469 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 2470 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 2471 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 2472 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 2473 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 2474 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 2475 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 2476 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 2477 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 2478 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 2479 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 2480 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 2481 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 2482 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 2483 } 2484 2485 var sat = isDark ? 70 : 65; 2486 var lit = isDark ? 55 : 50; 2487 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 2488 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 2489 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 2490 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 2491 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 2492 } catch (e) {} 2493})(); 2494</script>
2494<script id="buy-trust-dismiss-init"> 2495(function() { 2496 try { 2497 var path = location.pathname.split("?")[0]; 2498 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 2499 document.documentElement.setAttribute("data-trust-dismissed", "1"); 2500 } 2501 } catch (e) {} 2502})(); 2503</script>
2503<script>self.__next_f.push([1,"1a:T66e,"])</script>
2503<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
2503<script id="theme-init" data-cfasync="false"> 2504(function() { 2505 try { 2506 var path = location.pathname; 2507 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 2508 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 2509 var ds; 2510 var pc; 2511 2512 if (isAdminV2) { 2513 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 2514 pc = localStorage.getItem('admin-primary-color') || 'blue'; 2515 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 2516 } else { 2517 var seasonalKey = localStorage.getItem('seasonal-theme'); 2518 var preset = seasonalKey && seasonalPresets[seasonalKey]; 2519 2520 if (!localStorage.getItem('design-system-id-migrated-v3')) { 2521 var storedDs = localStorage.getItem('design-system'); 2522 if (storedDs === 'frosted-slate') { 2523 localStorage.setItem('design-system', 'frosted'); 2524 } 2525 localStorage.setItem('design-system-id-migrated-v3', '1'); 2526 } 2527 2528 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 2529 var currentDs = localStorage.getItem('design-system'); 2530 if (!currentDs || currentDs === 'modern-minimal') { 2531 localStorage.setItem('design-system', 'frosted-slate'); 2532 } 2533 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 2534 } 2535 2536 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 2537 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 2538 } 2539 var theme = localStorage.getItem('theme') || 'light'; 2540 var isDark = theme === 'dark'; 2541 2542 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 2543 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
254360 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 2544 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 2545 2546 var dsData = designSystems[ds] || designSystems['frosted-slate']; 2547 var pcData = primaryColors[pc] || primaryColors['purple']; 2548 var colors = isDark ? dsData.dark : dsData.light; 2549 var primary = isDark ? pcData.dark : pcData.light; 2550 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 2551 var sem = isDark ? semantic.dark : semantic.light; 2552 2553 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 2554 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 2555 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 2556 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 2557 var variantHue = (hue + 130) % 360; 2558 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 2559 var variantLit = isDark ? 55 : 42; 2560 2561 var applyLightFrostedGlass = function(primary, background) { 2562 var parseHsl = function(v) { 2563 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 2564 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 2565 }; 2566 var hslToRgb = function(h, s, l) { 2567 s /= 100; l /= 100; 2568 var c = (1 - Math.abs(2 * l - 1)) * s; 2569 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 2570 var m = l - c / 2; 2571 var r = 0, g = 0, b = 0; 2572 if (h < 60) { r = c; g = x; } 2573 else if (h < 120) { r = x; g = c; } 2574 else if (h < 180) { g = c; b = x; } 2575 else if (h < 240) { g = x; b = c; } 2576 else if (h < 300) { r = x; b = c; } 2577 else { r = c; b = x; } 2578 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 2579 }; 2580 var rgbToHsl = function(r, g, b) { 2581 r /= 255; g /= 255; b /= 255; 2582 var max = Math.max(r, g, b), min = Math.min(r, g, b); 2583 var l = (max + min) / 2, h = 0, s = 0; 2584 if (max !== min) { 2585 var d = max - min; 2586 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 2587 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 2588 else if (max === g) h = ((b - r) / d + 2) / 6; 2589 else h = ((r - g) / d + 4) / 6; 2590 } 2591 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 2592 }; 2593 var blend = function(alpha) { 2594 var p = parseHsl(primary); 2595 var bg = parseHsl(background); 2596 var pr = hslToRgb(p.h, p.s, p.l); 2597 var br = hslToRgb(bg.h, bg.s, bg.l); 2598 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 2599 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 2600 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 2601 return rgbToHsl(r, g, b); 2602 }; 2603 var glass = blend(0.22); 2604 var glassChrome = blend(0.28); 2605 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 2606 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 2607 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 2608 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 2609 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 2610 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 2611 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 2612 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 2613 return { 2614 glass: glass + ' / 0.92', 2615 glassChrome: glassChrome + ' / 0.92', 2616 glassSubtle: blend(0.15) + ' / 0.88', 2617 glassHover: blend(0.28) + ' / 0.94', 2618 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 2619 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 2620 }; 2621 }; 2622 2623 if (dsData.tintSurfacesFromPrimary && isDark) { 2624 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 2625 colors = Object.assign({}, colors, { 2626 background: hue + ' ' + surfaceSat + '% 9%', 2627 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 2628 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 2629 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 2630 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 2631 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 2632 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 2633 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 2634 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 2635 glass: hue + ' 28% 16% / 0.88', 2636 glassChrome: hue + ' 28% 14% / 0.88', 2637 glassSubtle: hue + ' 26% 18% / 0.75', 2638 glassHover: hue + ' 30% 20% / 0.92', 2639 glassBorder: hue + ' 24% 28% / 0.55' 2640 }); 2641 } else if (dsData.frostedChrome && !isDark) { 2642 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 2643 } 2644 2645 var root = document.documentElement; 2646 root.setAttribute('data-design-system', ds); 2647 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 2648 else root.removeAttribute('data-frosted-chrome'); 2649 if (isDark) root.classList.add('dark'); 2650 else root.classList.remove('dark'); 2651 root.style.colorScheme = isDark ? 'dark' : 'light'; 2652 2653 var h = function(v) { return 'hsl(' + v + ')'; }; 2654 2655 root.style.setProperty('--background', h(colors.background)); 2656 root.style.setProperty('--foreground', h(colors.foreground)); 2657 root.style.setProperty('--card', h(colors.card)); 2658 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 2659 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 2660 root.style.setProperty('--popover', h(colors.popover)); 2661 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 2662 root.style.setProperty('--border', h(colors.border)); 2663 root.style.setProperty('--muted', h(colors.muted)); 2664 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 2665 root.style.setProperty('--secondary', h(colors.secondary)); 2666 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 2667 root.style.setProperty('--accent', h(colors.accent)); 2668 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 2669 root.style.setProperty('--input', h(colors.input)); 2670 root.style.setProperty('--sidebar', h(colors.sidebar)); 2671 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 2672 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 2673 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 2674 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 2675 2676 root.style.setProperty('--glass', h(colors.glass)); 2677 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 2678 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 2679 root.style.setProperty('--glass-hover', h(colors.glassHover)); 2680 root.style.setProperty('--glass-border', h(colors.glassBorder)); 2681 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 2682 2683 if (dsData.frostedChrome && !isDark) { 2684 var darkChrome = dsData.dark; 2685 var darkPrimary = pcData.dark; 2686 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 2687 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 2688 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 2689 if (dsData.tintSurfacesFromPrimary) { 2690 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 2691 darkChrome = Object.assign({}, darkChrome, { 2692 glass: darkHue + ' 28% 16% / 0.88', 2693 glassChrome: darkHue + ' 28% 14% / 0.88', 2694 glassBorder: darkHue + ' 24% 28% / 0.55' 2695 }); 2696 } 2697 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 2698 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 2699 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 2700 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 2701 } 2702 2703 if (!isDark) { 2704 root.style.setProperty('--hero-halo-center', h(colors.background)); 2705 root.style.setProperty('--hero-halo-mid', h(colors.card)); 2706 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 2707 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 2708 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 2709 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
2709+ '%' : colors.border)); 2710 } else { 2711 root.style.setProperty('--hero-halo-center', h(colors.card)); 2712 root.style.setProperty('--hero-halo-mid', h(colors.background)); 2713 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 2714 root.style.setProperty('--hero-halo-edge', h(colors.border)); 2715 } 2716 2717 root.style.setProperty('--primary', h(primary)); 2718 root.style.setProperty('--primary-foreground', h(primaryFg)); 2719 root.style.setProperty('--ring', h(primary)); 2720 root.style.setProperty('--sidebar-primary', h(primary)); 2721 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 2722 root.style.setProperty('--sidebar-ring', h(primary)); 2723 2724 root.style.setProperty('--destructive', h(sem.destructive)); 2725 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 2726 2727 if (isDark) { 2728 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 2729 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 2730 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 2731 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 2732 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 2733 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
2733+ '% / 0.2'); 2734 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 2735 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 2736 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 2737 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 2738 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 2739 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 2740 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 2741 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 2742 } else { 2743 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 2744 var textSat = Math.min(Math.max(sat - 2, 52), 80); 2745 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 2746 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 2747 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 2748 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 2749 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 2750 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 2751 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 2752 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 2753 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 2754 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 2755 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 2756 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 2757 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 2758 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 2759 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 2760 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 2761 } 2762 2763 var sat = isDark ? 70 : 65; 2764 var lit = isDark ? 55 : 50; 2765 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 2766 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 2767 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 2768 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 2769 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 2770 } catch (e) {} 2771})(); 2772</script>
2772<script id="buy-trust-dismiss-init"> 2773(function() { 2774 try { 2775 var path = location.pathname.split("?")[0]; 2776 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 2777 document.documentElement.setAttribute("data-trust-dismissed", "1"); 2778 } 2779 } catch (e) {} 2780})(); 2781</script>
2781<script>self.__next_f.push([1,"{\"@context\":\"https://schema.org\",\"@type\":\"Product\",\"@id\":\"https://www.phonetradr.com/buy/products/apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1#product\",\"name\":\"Apple iPad iPad Pro 11\\\" (2nd gen)\",\"url\":\"https://www.phonetradr.com/buy/products/apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1\",\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.phonetradr.com/buy/products/apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1\"},\"description\":\"Get the best deal in SA on a quality-approved second hand iPad iPad Pro 11\\\" (2nd gen) with a 12-month warranty, Browse our site for other tablets on sale for today.\",\"image\":[\"https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024\u0026h=1024\",\"https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/2351457e-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024\u0026h=1024\",\"https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/1b8486dc-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024\u0026h=1024\",\"https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/85f9b8ee-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024\u0026h=1024\"],\"brand\":{\"@type\":\"Brand\",\"name\":\"iPad\"},\"sku\":\"apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1\",\"offers\":{\"@type\":\"Offer\",\"priceCurrency\":\"ZAR\",\"price\":12500,\"url\":\"https://www.phonetradr.com/buy/products/apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1\",\"availability\":\"https://schema.org/InStock\",\"itemCondition\":\"https://schema.org/UsedCondition\"}}"])</script>
2781<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
2781<script id="theme-init" data-cfasync="false"> 2782(function() { 2783 try { 2784 var path = location.pathname; 2785 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 2786 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 2787 var ds; 2788 var pc; 2789 2790 if (isAdminV2) { 2791 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 2792 pc = localStorage.getItem('admin-primary-color') || 'blue'; 2793 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 2794 } else { 2795 var seasonalKey = localStorage.getItem('seasonal-theme'); 2796 var preset = seasonalKey && seasonalPresets[seasonalKey]; 2797 2798 if (!localStorage.getItem('design-system-id-migrated-v3')) { 2799 var storedDs = localStorage.getItem('design-system'); 2800 if (storedDs === 'frosted-slate') { 2801 localStorage.setItem('design-system', 'frosted'); 2802 } 2803 localStorage.setItem('design-system-id-migrated-v3', '1'); 2804 } 2805 2806 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 2807 var currentDs = localStorage.getItem('design-system'); 2808 if (!currentDs || currentDs === 'modern-minimal') { 2809 localStorage.setItem('design-system', 'frosted-slate'); 2810 } 2811 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 2812 } 2813 2814 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 2815 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 2816 } 2817 var theme = localStorage.getItem('theme') || 'light'; 2818 var isDark = theme === 'dark'; 2819 2820 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 2821 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
282160 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 2822 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 2823 2824 var dsData = designSystems[ds] || designSystems['frosted-slate']; 2825 var pcData = primaryColors[pc] || primaryColors['purple']; 2826 var colors = isDark ? dsData.dark : dsData.light; 2827 var primary = isDark ? pcData.dark : pcData.light; 2828 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 2829 var sem = isDark ? semantic.dark : semantic.light; 2830 2831 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 2832 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 2833 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 2834 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 2835 var variantHue = (hue + 130) % 360; 2836 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 2837 var variantLit = isDark ? 55 : 42; 2838 2839 var applyLightFrostedGlass = function(primary, background) { 2840 var parseHsl = function(v) { 2841 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 2842 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 2843 }; 2844 var hslToRgb = function(h, s, l) { 2845 s /= 100; l /= 100; 2846 var c = (1 - Math.abs(2 * l - 1)) * s; 2847 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 2848 var m = l - c / 2; 2849 var r = 0, g = 0, b = 0; 2850 if (h < 60) { r = c; g = x; } 2851 else if (h < 120) { r = x; g = c; } 2852 else if (h < 180) { g = c; b = x; } 2853 else if (h < 240) { g = x; b = c; } 2854 else if (h < 300) { r = x; b = c; } 2855 else { r = c; b = x; } 2856 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 2857 }; 2858 var rgbToHsl = function(r, g, b) { 2859 r /= 255; g /= 255; b /= 255; 2860 var max = Math.max(r, g, b), min = Math.min(r, g, b); 2861 var l = (max + min) / 2, h = 0, s = 0; 2862 if (max !== min) { 2863 var d = max - min; 2864 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 2865 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 2866 else if (max === g) h = ((b - r) / d + 2) / 6; 2867 else h = ((r - g) / d + 4) / 6; 2868 } 2869 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 2870 }; 2871 var blend = function(alpha) { 2872 var p = parseHsl(primary); 2873 var bg = parseHsl(background); 2874 var pr = hslToRgb(p.h, p.s, p.l); 2875 var br = hslToRgb(bg.h, bg.s, bg.l); 2876 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 2877 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 2878 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 2879 return rgbToHsl(r, g, b); 2880 }; 2881 var glass = blend(0.22); 2882 var glassChrome = blend(0.28); 2883 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 2884 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 2885 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 2886 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 2887 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 2888 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 2889 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 2890 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 2891 return { 2892 glass: glass + ' / 0.92', 2893 glassChrome: glassChrome + ' / 0.92', 2894 glassSubtle: blend(0.15) + ' / 0.88', 2895 glassHover: blend(0.28) + ' / 0.94', 2896 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 2897 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 2898 }; 2899 }; 2900 2901 if (dsData.tintSurfacesFromPrimary && isDark) { 2902 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 2903 colors = Object.assign({}, colors, { 2904 background: hue + ' ' + surfaceSat + '% 9%', 2905 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 2906 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 2907 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 2908 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 2909 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 2910 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 2911 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 2912 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 2913 glass: hue + ' 28% 16% / 0.88', 2914 glassChrome: hue + ' 28% 14% / 0.88', 2915 glassSubtle: hue + ' 26% 18% / 0.75', 2916 glassHover: hue + ' 30% 20% / 0.92', 2917 glassBorder: hue + ' 24% 28% / 0.55' 2918 }); 2919 } else if (dsData.frostedChrome && !isDark) { 2920 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 2921 } 2922 2923 var root = document.documentElement; 2924 root.setAttribute('data-design-system', ds); 2925 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 2926 else root.removeAttribute('data-frosted-chrome'); 2927 if (isDark) root.classList.add('dark'); 2928 else root.classList.remove('dark'); 2929 root.style.colorScheme = isDark ? 'dark' : 'light'; 2930 2931 var h = function(v) { return 'hsl(' + v + ')'; }; 2932 2933 root.style.setProperty('--background', h(colors.background)); 2934 root.style.setProperty('--foreground', h(colors.foreground)); 2935 root.style.setProperty('--card', h(colors.card)); 2936 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 2937 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 2938 root.style.setProperty('--popover', h(colors.popover)); 2939 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 2940 root.style.setProperty('--border', h(colors.border)); 2941 root.style.setProperty('--muted', h(colors.muted)); 2942 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 2943 root.style.setProperty('--secondary', h(colors.secondary)); 2944 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 2945 root.style.setProperty('--accent', h(colors.accent)); 2946 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 2947 root.style.setProperty('--input', h(colors.input)); 2948 root.style.setProperty('--sidebar', h(colors.sidebar)); 2949 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 2950 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 2951 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 2952 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 2953 2954 root.style.setProperty('--glass', h(colors.glass)); 2955 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 2956 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 2957 root.style.setProperty('--glass-hover', h(colors.glassHover)); 2958 root.style.setProperty('--glass-border', h(colors.glassBorder)); 2959 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 2960 2961 if (dsData.frostedChrome && !isDark) { 2962 var darkChrome = dsData.dark; 2963 var darkPrimary = pcData.dark; 2964 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 2965 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 2966 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 2967 if (dsData.tintSurfacesFromPrimary) { 2968 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 2969 darkChrome = Object.assign({}, darkChrome, { 2970 glass: darkHue + ' 28% 16% / 0.88', 2971 glassChrome: darkHue + ' 28% 14% / 0.88', 2972 glassBorder: darkHue + ' 24% 28% / 0.55' 2973 }); 2974 } 2975 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 2976 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 2977 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 2978 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 2979 } 2980 2981 if (!isDark) { 2982 root.style.setProperty('--hero-halo-center', h(colors.background)); 2983 root.style.setProperty('--hero-halo-mid', h(colors.card)); 2984 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 2985 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 2986 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 2987 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
2987+ '%' : colors.border)); 2988 } else { 2989 root.style.setProperty('--hero-halo-center', h(colors.card)); 2990 root.style.setProperty('--hero-halo-mid', h(colors.background)); 2991 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 2992 root.style.setProperty('--hero-halo-edge', h(colors.border)); 2993 } 2994 2995 root.style.setProperty('--primary', h(primary)); 2996 root.style.setProperty('--primary-foreground', h(primaryFg)); 2997 root.style.setProperty('--ring', h(primary)); 2998 root.style.setProperty('--sidebar-primary', h(primary)); 2999 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 3000 root.style.setProperty('--sidebar-ring', h(primary)); 3001 3002 root.style.setProperty('--destructive', h(sem.destructive)); 3003 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 3004 3005 if (isDark) { 3006 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 3007 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 3008 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 3009 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 3010 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 3011 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
3011+ '% / 0.2'); 3012 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 3013 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 3014 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 3015 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 3016 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 3017 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 3018 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 3019 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 3020 } else { 3021 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 3022 var textSat = Math.min(Math.max(sat - 2, 52), 80); 3023 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 3024 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 3025 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 3026 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 3027 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 3028 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 3029 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 3030 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 3031 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 3032 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 3033 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 3034 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 3035 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 3036 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 3037 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 3038 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 3039 } 3040 3041 var sat = isDark ? 70 : 65; 3042 var lit = isDark ? 55 : 50; 3043 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 3044 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 3045 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 3046 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 3047 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 3048 } catch (e) {} 3049})(); 3050</script>
3050<script id="buy-trust-dismiss-init"> 3051(function() { 3052 try { 3053 var path = location.pathname.split("?")[0]; 3054 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 3055 document.documentElement.setAttribute("data-trust-dismissed", "1"); 3056 } 3057 } catch (e) {} 3058})(); 3059</script>
3059<script>self.__next_f.push([1,"f:[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"id\":\"buy-pdp-breadcrumb-jsonld-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BreadcrumbList\\\",\\\"itemListElement\\\":[{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":1,\\\"name\\\":\\\"Buy\\\",\\\"item\\\":\\\"https://www.phonetradr.com/buy\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":2,\\\"name\\\":\\\"Tablets\\\",\\\"item\\\":\\\"https://www.phonetradr.com/buy/tablet\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":3,\\\"name\\\":\\\"Apple iPad iPad Pro 11\\\\\\\" (2nd gen)\\\",\\\"item\\\":\\\"https://www.phonetradr.com/buy/products/apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1\\\"}]}\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"id\":\"buy-pdp-product-jsonld-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1\",\"dangerouslySetInnerHTML\":{\"__html\":\"$1a\"}}],[\"$\",\"article\",null,{\"data-testid\":\"buy-pdp-root\",\"className\":\"mx-auto w-full max-w-[73.125rem] px-4 md:px-6 space-y-7 pt-1 pb-2 md:space-y-8 md:pt-2 md:pb-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"space-y-1.5\",\"children\":[\"$\",\"nav\",null,{\"aria-label\":\"Breadcrumb\",\"data-testid\":\"buy-pdp-breadcrumbs\",\"className\":\"mx-auto w-full text-muted-foreground text-xs leading-snug md:text-sm\",\"children\":[\"$\",\"ol\",null,{\"className\":\"flex flex-wrap items-center gap-y-0.5\",\"children\":[[\"$\",\"li\",\"Buy-0\",{\"className\":\"inline-flex items-center\",\"children\":[null,[\"$\",\"$Lc\",null,{\"href\":\"/buy\",\"className\":\"hover:text-foreground underline-offset-2 hover:underline\",\"children\":\"Buy\"}]]}],[\"$\",\"li\",\"Tablets-1\",{\"className\":\"inline-flex items-center\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-muted-foreground/60 mx-1.5 select-none\",\"aria-hidden\":true,\"children\":\"/\"}],[\"$\",\"$Lc\",null,{\"href\":\"/buy/tablet\",\"className\":\"hover:text-foreground underline-offset-2 hover:underline\",\"children\":\"Tablets\"}]]}],[\"$\",\"li\",\"Apple iPad iPad Pro 11\\\" (2nd gen)-2\",{\"className\":\"inline-flex items-center\",\"children\":[\"$L1b\",\"$L1c\"]}]]}]}]}],\"$L1d\",\"$L1e\",\"$L1f\",null,\"$L20\",\"$L21\"]}]]\n"])</script>
3059<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
3059<script id="theme-init" data-cfasync="false"> 3060(function() { 3061 try { 3062 var path = location.pathname; 3063 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 3064 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 3065 var ds; 3066 var pc; 3067 3068 if (isAdminV2) { 3069 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 3070 pc = localStorage.getItem('admin-primary-color') || 'blue'; 3071 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 3072 } else { 3073 var seasonalKey = localStorage.getItem('seasonal-theme'); 3074 var preset = seasonalKey && seasonalPresets[seasonalKey]; 3075 3076 if (!localStorage.getItem('design-system-id-migrated-v3')) { 3077 var storedDs = localStorage.getItem('design-system'); 3078 if (storedDs === 'frosted-slate') { 3079 localStorage.setItem('design-system', 'frosted'); 3080 } 3081 localStorage.setItem('design-system-id-migrated-v3', '1'); 3082 } 3083 3084 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 3085 var currentDs = localStorage.getItem('design-system'); 3086 if (!currentDs || currentDs === 'modern-minimal') { 3087 localStorage.setItem('design-system', 'frosted-slate'); 3088 } 3089 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 3090 } 3091 3092 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 3093 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 3094 } 3095 var theme = localStorage.getItem('theme') || 'light'; 3096 var isDark = theme === 'dark'; 3097 3098 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 3099 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
309960 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 3100 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 3101 3102 var dsData = designSystems[ds] || designSystems['frosted-slate']; 3103 var pcData = primaryColors[pc] || primaryColors['purple']; 3104 var colors = isDark ? dsData.dark : dsData.light; 3105 var primary = isDark ? pcData.dark : pcData.light; 3106 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 3107 var sem = isDark ? semantic.dark : semantic.light; 3108 3109 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 3110 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 3111 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 3112 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 3113 var variantHue = (hue + 130) % 360; 3114 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 3115 var variantLit = isDark ? 55 : 42; 3116 3117 var applyLightFrostedGlass = function(primary, background) { 3118 var parseHsl = function(v) { 3119 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 3120 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 3121 }; 3122 var hslToRgb = function(h, s, l) { 3123 s /= 100; l /= 100; 3124 var c = (1 - Math.abs(2 * l - 1)) * s; 3125 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 3126 var m = l - c / 2; 3127 var r = 0, g = 0, b = 0; 3128 if (h < 60) { r = c; g = x; } 3129 else if (h < 120) { r = x; g = c; } 3130 else if (h < 180) { g = c; b = x; } 3131 else if (h < 240) { g = x; b = c; } 3132 else if (h < 300) { r = x; b = c; } 3133 else { r = c; b = x; } 3134 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 3135 }; 3136 var rgbToHsl = function(r, g, b) { 3137 r /= 255; g /= 255; b /= 255; 3138 var max = Math.max(r, g, b), min = Math.min(r, g, b); 3139 var l = (max + min) / 2, h = 0, s = 0; 3140 if (max !== min) { 3141 var d = max - min; 3142 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 3143 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 3144 else if (max === g) h = ((b - r) / d + 2) / 6; 3145 else h = ((r - g) / d + 4) / 6; 3146 } 3147 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 3148 }; 3149 var blend = function(alpha) { 3150 var p = parseHsl(primary); 3151 var bg = parseHsl(background); 3152 var pr = hslToRgb(p.h, p.s, p.l); 3153 var br = hslToRgb(bg.h, bg.s, bg.l); 3154 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 3155 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 3156 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 3157 return rgbToHsl(r, g, b); 3158 }; 3159 var glass = blend(0.22); 3160 var glassChrome = blend(0.28); 3161 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 3162 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 3163 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 3164 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 3165 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 3166 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 3167 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 3168 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 3169 return { 3170 glass: glass + ' / 0.92', 3171 glassChrome: glassChrome + ' / 0.92', 3172 glassSubtle: blend(0.15) + ' / 0.88', 3173 glassHover: blend(0.28) + ' / 0.94', 3174 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 3175 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 3176 }; 3177 }; 3178 3179 if (dsData.tintSurfacesFromPrimary && isDark) { 3180 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 3181 colors = Object.assign({}, colors, { 3182 background: hue + ' ' + surfaceSat + '% 9%', 3183 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 3184 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 3185 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 3186 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 3187 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 3188 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 3189 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 3190 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 3191 glass: hue + ' 28% 16% / 0.88', 3192 glassChrome: hue + ' 28% 14% / 0.88', 3193 glassSubtle: hue + ' 26% 18% / 0.75', 3194 glassHover: hue + ' 30% 20% / 0.92', 3195 glassBorder: hue + ' 24% 28% / 0.55' 3196 }); 3197 } else if (dsData.frostedChrome && !isDark) { 3198 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 3199 } 3200 3201 var root = document.documentElement; 3202 root.setAttribute('data-design-system', ds); 3203 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 3204 else root.removeAttribute('data-frosted-chrome'); 3205 if (isDark) root.classList.add('dark'); 3206 else root.classList.remove('dark'); 3207 root.style.colorScheme = isDark ? 'dark' : 'light'; 3208 3209 var h = function(v) { return 'hsl(' + v + ')'; }; 3210 3211 root.style.setProperty('--background', h(colors.background)); 3212 root.style.setProperty('--foreground', h(colors.foreground)); 3213 root.style.setProperty('--card', h(colors.card)); 3214 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 3215 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 3216 root.style.setProperty('--popover', h(colors.popover)); 3217 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 3218 root.style.setProperty('--border', h(colors.border)); 3219 root.style.setProperty('--muted', h(colors.muted)); 3220 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 3221 root.style.setProperty('--secondary', h(colors.secondary)); 3222 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 3223 root.style.setProperty('--accent', h(colors.accent)); 3224 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 3225 root.style.setProperty('--input', h(colors.input)); 3226 root.style.setProperty('--sidebar', h(colors.sidebar)); 3227 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 3228 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 3229 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 3230 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 3231 3232 root.style.setProperty('--glass', h(colors.glass)); 3233 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 3234 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 3235 root.style.setProperty('--glass-hover', h(colors.glassHover)); 3236 root.style.setProperty('--glass-border', h(colors.glassBorder)); 3237 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 3238 3239 if (dsData.frostedChrome && !isDark) { 3240 var darkChrome = dsData.dark; 3241 var darkPrimary = pcData.dark; 3242 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 3243 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 3244 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 3245 if (dsData.tintSurfacesFromPrimary) { 3246 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 3247 darkChrome = Object.assign({}, darkChrome, { 3248 glass: darkHue + ' 28% 16% / 0.88', 3249 glassChrome: darkHue + ' 28% 14% / 0.88', 3250 glassBorder: darkHue + ' 24% 28% / 0.55' 3251 }); 3252 } 3253 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 3254 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 3255 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 3256 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 3257 } 3258 3259 if (!isDark) { 3260 root.style.setProperty('--hero-halo-center', h(colors.background)); 3261 root.style.setProperty('--hero-halo-mid', h(colors.card)); 3262 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 3263 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 3264 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 3265 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
3265+ '%' : colors.border)); 3266 } else { 3267 root.style.setProperty('--hero-halo-center', h(colors.card)); 3268 root.style.setProperty('--hero-halo-mid', h(colors.background)); 3269 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 3270 root.style.setProperty('--hero-halo-edge', h(colors.border)); 3271 } 3272 3273 root.style.setProperty('--primary', h(primary)); 3274 root.style.setProperty('--primary-foreground', h(primaryFg)); 3275 root.style.setProperty('--ring', h(primary)); 3276 root.style.setProperty('--sidebar-primary', h(primary)); 3277 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 3278 root.style.setProperty('--sidebar-ring', h(primary)); 3279 3280 root.style.setProperty('--destructive', h(sem.destructive)); 3281 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 3282 3283 if (isDark) { 3284 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 3285 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 3286 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 3287 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 3288 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 3289 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
3289+ '% / 0.2'); 3290 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 3291 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 3292 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 3293 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 3294 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 3295 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 3296 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 3297 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 3298 } else { 3299 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 3300 var textSat = Math.min(Math.max(sat - 2, 52), 80); 3301 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 3302 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 3303 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 3304 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 3305 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 3306 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 3307 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 3308 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 3309 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 3310 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 3311 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 3312 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 3313 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 3314 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 3315 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 3316 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 3317 } 3318 3319 var sat = isDark ? 70 : 65; 3320 var lit = isDark ? 55 : 50; 3321 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 3322 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 3323 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 3324 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 3325 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 3326 } catch (e) {} 3327})(); 3328</script>
3328<script id="buy-trust-dismiss-init"> 3329(function() { 3330 try { 3331 var path = location.pathname.split("?")[0]; 3332 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 3333 document.documentElement.setAttribute("data-trust-dismissed", "1"); 3334 } 3335 } catch (e) {} 3336})(); 3337</script>
3337<script>self.__next_f.push([1,"22:I[9319,[\"8409\",\"static/chunks/8409-de5726a4a278d28f.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"1930\",\"static/chunks/1930-431df5db3d2d6569.js\",\"9258\",\"static/chunks/9258-716243a91d561964.js\",\"7649\",\"static/chunks/7649-fc2ec28b21f07c2e.js\",\"8571\",\"static/chunks/8571-ac6ff42855de95c3.js\",\"7898\",\"static/chunks/app/(site)/buy/products/%5Bhandle%5D/page-5ec5e55b73260bac.js\"],\"BuyProductListingGallery\"]\n23:I[80516,[\"8409\",\"static/chunks/8409-de5726a4a278d28f.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"1930\",\"static/chunks/1930-431df5db3d2d6569.js\",\"9258\",\"static/chunks/9258-716243a91d561964.js\",\"7649\",\"static/chunks/7649-fc2ec28b21f07c2e.js\",\"8571\",\"static/chunks/8571-ac6ff42855de95c3.js\",\"7898\",\"static/chunks/app/(site)/buy/products/%5Bhandle%5D/page-5ec5e55b73260bac.js\"],\"BuyProductListingSellerExpandCard\"]\n28:I[71265,[\"8409\",\"static/chunks/8409-de5726a4a278d28f.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"1930\",\"static/chunks/1930-431df5db3d2d6569.js\",\"9258\",\"static/chunks/9258-716243a91d561964.js\",\"7649\",\"static/chunks/7649-fc2ec28b21f07c2e.js\",\"8571\",\"static/chunks/8571-ac6ff42855de95c3.js\",\"7898\",\"static/chunks/app/(site)/buy/products/%5Bhandle%5D/page-5ec5e55b73260bac.js\"],\"default\"]\n2a:I[12461,[\"8409\",\"static/chunks/8409-de5726a4a278d28f.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"1930\",\"static/chunks/1930-431df5db3d2d6569.js\",\"9258\",\"static/chunks/9258-716243a91d561964.js\",\"7649\",\"static/chunks/7649-fc2ec28b21f07c2e.js\",\"8571\",\"static/chunks/8571-ac6ff42855de95c3.js\",\"7898\",\"static/chunks/app/(site)/buy/products/%5Bhandle%5D/page-5ec5e55b73260bac.js\"],\"BuyProductListingReturnsAccordion\"]\n:HL[\"/images/footer/mastercard-logo.svg\",\"image\"]\n:HL[\"/images/footer/visa-logo.svg\",\"image\"]\n:HL[\"/images/footer/fasta-logo.svg\",\"image\"]\n:HL[\"/images/footer/zapper-logo.svg\",\"image\"]\n:HL[\"/images/footer/mobicred-logo.svg\",\"image\"]\n:HL[\"/images/footer/discover-logo.svg\",\"image\"]\n:HL[\"/images/footer/diners-club-logo.svg\",\"image\"]\n:HL[\"/images/footer/instant-eft-logo.svg\",\"image\"]\n1b:[\"$\",\"span\",null,{\"className\":\"text-muted-foreground/60 mx-1.5 select-none\",\"aria-hidden\":true,\"children\":\"/\"}]\n1c:[\"$\",\"span\",null,{\"className\":\"text-foreground max-w-[14rem] truncate text-xs font-semibold tracking-tight sm:max-w-[20rem] md:text-sm\",\"aria-current\":\"page\",\"children\":\"Apple iPad iPad Pro 11\\\" (2nd gen)\"}]\n"])</script>
3337<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
3337<script id="theme-init" data-cfasync="false"> 3338(function() { 3339 try { 3340 var path = location.pathname; 3341 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 3342 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 3343 var ds; 3344 var pc; 3345 3346 if (isAdminV2) { 3347 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 3348 pc = localStorage.getItem('admin-primary-color') || 'blue'; 3349 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 3350 } else { 3351 var seasonalKey = localStorage.getItem('seasonal-theme'); 3352 var preset = seasonalKey && seasonalPresets[seasonalKey]; 3353 3354 if (!localStorage.getItem('design-system-id-migrated-v3')) { 3355 var storedDs = localStorage.getItem('design-system'); 3356 if (storedDs === 'frosted-slate') { 3357 localStorage.setItem('design-system', 'frosted'); 3358 } 3359 localStorage.setItem('design-system-id-migrated-v3', '1'); 3360 } 3361 3362 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 3363 var currentDs = localStorage.getItem('design-system'); 3364 if (!currentDs || currentDs === 'modern-minimal') { 3365 localStorage.setItem('design-system', 'frosted-slate'); 3366 } 3367 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 3368 } 3369 3370 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 3371 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 3372 } 3373 var theme = localStorage.getItem('theme') || 'light'; 3374 var isDark = theme === 'dark'; 3375 3376 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 3377 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
337760 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 3378 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 3379 3380 var dsData = designSystems[ds] || designSystems['frosted-slate']; 3381 var pcData = primaryColors[pc] || primaryColors['purple']; 3382 var colors = isDark ? dsData.dark : dsData.light; 3383 var primary = isDark ? pcData.dark : pcData.light; 3384 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 3385 var sem = isDark ? semantic.dark : semantic.light; 3386 3387 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 3388 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 3389 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 3390 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 3391 var variantHue = (hue + 130) % 360; 3392 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 3393 var variantLit = isDark ? 55 : 42; 3394 3395 var applyLightFrostedGlass = function(primary, background) { 3396 var parseHsl = function(v) { 3397 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 3398 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 3399 }; 3400 var hslToRgb = function(h, s, l) { 3401 s /= 100; l /= 100; 3402 var c = (1 - Math.abs(2 * l - 1)) * s; 3403 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 3404 var m = l - c / 2; 3405 var r = 0, g = 0, b = 0; 3406 if (h < 60) { r = c; g = x; } 3407 else if (h < 120) { r = x; g = c; } 3408 else if (h < 180) { g = c; b = x; } 3409 else if (h < 240) { g = x; b = c; } 3410 else if (h < 300) { r = x; b = c; } 3411 else { r = c; b = x; } 3412 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 3413 }; 3414 var rgbToHsl = function(r, g, b) { 3415 r /= 255; g /= 255; b /= 255; 3416 var max = Math.max(r, g, b), min = Math.min(r, g, b); 3417 var l = (max + min) / 2, h = 0, s = 0; 3418 if (max !== min) { 3419 var d = max - min; 3420 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 3421 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 3422 else if (max === g) h = ((b - r) / d + 2) / 6; 3423 else h = ((r - g) / d + 4) / 6; 3424 } 3425 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 3426 }; 3427 var blend = function(alpha) { 3428 var p = parseHsl(primary); 3429 var bg = parseHsl(background); 3430 var pr = hslToRgb(p.h, p.s, p.l); 3431 var br = hslToRgb(bg.h, bg.s, bg.l); 3432 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 3433 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 3434 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 3435 return rgbToHsl(r, g, b); 3436 }; 3437 var glass = blend(0.22); 3438 var glassChrome = blend(0.28); 3439 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 3440 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 3441 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 3442 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 3443 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 3444 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 3445 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 3446 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 3447 return { 3448 glass: glass + ' / 0.92', 3449 glassChrome: glassChrome + ' / 0.92', 3450 glassSubtle: blend(0.15) + ' / 0.88', 3451 glassHover: blend(0.28) + ' / 0.94', 3452 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 3453 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 3454 }; 3455 }; 3456 3457 if (dsData.tintSurfacesFromPrimary && isDark) { 3458 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 3459 colors = Object.assign({}, colors, { 3460 background: hue + ' ' + surfaceSat + '% 9%', 3461 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 3462 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 3463 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 3464 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 3465 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 3466 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 3467 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 3468 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 3469 glass: hue + ' 28% 16% / 0.88', 3470 glassChrome: hue + ' 28% 14% / 0.88', 3471 glassSubtle: hue + ' 26% 18% / 0.75', 3472 glassHover: hue + ' 30% 20% / 0.92', 3473 glassBorder: hue + ' 24% 28% / 0.55' 3474 }); 3475 } else if (dsData.frostedChrome && !isDark) { 3476 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 3477 } 3478 3479 var root = document.documentElement; 3480 root.setAttribute('data-design-system', ds); 3481 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 3482 else root.removeAttribute('data-frosted-chrome'); 3483 if (isDark) root.classList.add('dark'); 3484 else root.classList.remove('dark'); 3485 root.style.colorScheme = isDark ? 'dark' : 'light'; 3486 3487 var h = function(v) { return 'hsl(' + v + ')'; }; 3488 3489 root.style.setProperty('--background', h(colors.background)); 3490 root.style.setProperty('--foreground', h(colors.foreground)); 3491 root.style.setProperty('--card', h(colors.card)); 3492 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 3493 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 3494 root.style.setProperty('--popover', h(colors.popover)); 3495 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 3496 root.style.setProperty('--border', h(colors.border)); 3497 root.style.setProperty('--muted', h(colors.muted)); 3498 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 3499 root.style.setProperty('--secondary', h(colors.secondary)); 3500 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 3501 root.style.setProperty('--accent', h(colors.accent)); 3502 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 3503 root.style.setProperty('--input', h(colors.input)); 3504 root.style.setProperty('--sidebar', h(colors.sidebar)); 3505 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 3506 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 3507 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 3508 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 3509 3510 root.style.setProperty('--glass', h(colors.glass)); 3511 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 3512 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 3513 root.style.setProperty('--glass-hover', h(colors.glassHover)); 3514 root.style.setProperty('--glass-border', h(colors.glassBorder)); 3515 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 3516 3517 if (dsData.frostedChrome && !isDark) { 3518 var darkChrome = dsData.dark; 3519 var darkPrimary = pcData.dark; 3520 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 3521 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 3522 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 3523 if (dsData.tintSurfacesFromPrimary) { 3524 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 3525 darkChrome = Object.assign({}, darkChrome, { 3526 glass: darkHue + ' 28% 16% / 0.88', 3527 glassChrome: darkHue + ' 28% 14% / 0.88', 3528 glassBorder: darkHue + ' 24% 28% / 0.55' 3529 }); 3530 } 3531 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 3532 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 3533 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 3534 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 3535 } 3536 3537 if (!isDark) { 3538 root.style.setProperty('--hero-halo-center', h(colors.background)); 3539 root.style.setProperty('--hero-halo-mid', h(colors.card)); 3540 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 3541 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 3542 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 3543 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
3543+ '%' : colors.border)); 3544 } else { 3545 root.style.setProperty('--hero-halo-center', h(colors.card)); 3546 root.style.setProperty('--hero-halo-mid', h(colors.background)); 3547 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 3548 root.style.setProperty('--hero-halo-edge', h(colors.border)); 3549 } 3550 3551 root.style.setProperty('--primary', h(primary)); 3552 root.style.setProperty('--primary-foreground', h(primaryFg)); 3553 root.style.setProperty('--ring', h(primary)); 3554 root.style.setProperty('--sidebar-primary', h(primary)); 3555 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 3556 root.style.setProperty('--sidebar-ring', h(primary)); 3557 3558 root.style.setProperty('--destructive', h(sem.destructive)); 3559 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 3560 3561 if (isDark) { 3562 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 3563 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 3564 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 3565 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 3566 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 3567 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
3567+ '% / 0.2'); 3568 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 3569 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 3570 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 3571 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 3572 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 3573 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 3574 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 3575 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 3576 } else { 3577 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 3578 var textSat = Math.min(Math.max(sat - 2, 52), 80); 3579 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 3580 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 3581 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 3582 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 3583 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 3584 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 3585 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 3586 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 3587 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 3588 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 3589 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 3590 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 3591 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 3592 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 3593 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 3594 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 3595 } 3596 3597 var sat = isDark ? 70 : 65; 3598 var lit = isDark ? 55 : 50; 3599 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 3600 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 3601 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 3602 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 3603 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 3604 } catch (e) {} 3605})(); 3606</script>
3606<script id="buy-trust-dismiss-init"> 3607(function() { 3608 try { 3609 var path = location.pathname.split("?")[0]; 3610 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 3611 document.documentElement.setAttribute("data-trust-dismissed", "1"); 3612 } 3613 } catch (e) {} 3614})(); 3615</script>
3615<script>self.__next_f.push([1,"1d:[\"$\",\"div\",null,{\"className\":\"grid grid-cols-1 gap-7 md:grid-cols-2 md:items-stretch md:gap-x-10 md:gap-y-6 lg:gap-x-12\",\"data-testid\":\"buy-pdp-hero\",\"children\":[[\"$\",\"div\",null,{\"className\":\"contents min-w-0 md:col-start-1 md:row-start-1 md:flex md:h-full md:flex-col md:justify-between md:gap-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"order-2 min-w-0\",\"children\":[\"$\",\"$L22\",null,{\"title\":\"Apple iPad iPad Pro 11\\\" (2nd gen)\",\"mainSrc\":\"https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024\u0026h=1024\",\"gallery\":[{\"src\":\"https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024\u0026h=1024\",\"thumbnailSrc\":\"https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/912c67e2-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=640\u0026fit=max\u0026auto=format\"},{\"src\":\"https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/2351457e-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024\u0026h=1024\",\"thumbnailSrc\":\"https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/2351457e-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=640\u0026fit=max\u0026auto=format\"},{\"src\":\"https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/1b8486dc-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024\u0026h=1024\",\"thumbnailSrc\":\"https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/1b8486dc-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=640\u0026fit=max\u0026auto=format\"},{\"src\":\"https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/85f9b8ee-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=1024\u0026h=1024\",\"thumbnailSrc\":\"https://pt-image-uploads.imgix.net/listings/6aaebf854d0251bc79c9b7fe/85f9b8ee-apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1.jpg?w=640\u0026fit=max\u0026auto=format\"}]}]}],[\"$\",\"div\",null,{\"className\":\"order-4 min-w-0\",\"children\":[\"$\",\"$L23\",null,{\"title\":\"Description\",\"aria-label\":\"Seller description\",\"data-testid\":\"buy-pdp-seller-description-only\",\"compact\":true,\"className\":\"$undefined\",\"needsToggle\":false,\"openLabel\":\"Show more\",\"closeLabel\":\"Show less\",\"collapsed\":[\"$\",\"p\",null,{\"className\":\"text-muted-foreground whitespace-pre-wrap text-xs sm:text-sm line-clamp-3\",\"children\":\"iPad Pro 11â 2nd Gen. Like new\"}],\"expanded\":[\"$\",\"p\",null,{\"className\":\"text-muted-foreground whitespace-pre-wrap text-xs sm:text-sm\",\"children\":\"iPad Pro 11â 2nd Gen. Like new\"}]}]}]]}],[\"$\",\"div\",null,{\"className\":\"contents min-w-0 md:col-start-2 md:row-start-1 md:flex md:h-full md:flex-col md:gap-5\",\"children\":[[\"$\",\"div\",null,{\"className\":\"order-1 min-w-0\",\"children\":[\"$\",\"header\",null,{\"className\":\"space-y-2 text-center\",\"data-testid\":\"buy-pdp-header\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-wrap items-center justify-center gap-2.5\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-foreground text-2xl font-semibold tracking-tight text-balance md:text-3xl\",\"children\":\"Apple iPad iPad Pro 11\\\" (2nd gen)\"}],[\"$\",\"span\",null,{\"className\":\"border-foreground text-foreground inline-flex items-center rounded-md border bg-transparent px-2.5 py-0.5 text-sm font-semibold tabular-nums tracking-wide\",\"data-testid\":\"buy-pdp-capacity-badge\",\"children\":\"128GB\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex flex-wrap items-center justify-center gap-1.5\",\"data-testid\":\"buy-pdp-meta-chips\",\"children\":[[\"$\",\"span\",null,{\"data-testid\":\"buy-pdp-color-chip\",\"className\":\"text-foreground border-foreground
3615/45 inline-flex max-w-full items-center gap-1.5 rounded-md border bg-transparent px-2 py-0.5 text-xs font-medium\",\"children\":[\"$L24\",\"$L25\"]}],\"$L26\"]}]]}]}],\"$L27\"]}]]}]\n"])</script>
3615<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
3615<script id="theme-init" data-cfasync="false"> 3616(function() { 3617 try { 3618 var path = location.pathname; 3619 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 3620 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 3621 var ds; 3622 var pc; 3623 3624 if (isAdminV2) { 3625 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 3626 pc = localStorage.getItem('admin-primary-color') || 'blue'; 3627 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 3628 } else { 3629 var seasonalKey = localStorage.getItem('seasonal-theme'); 3630 var preset = seasonalKey && seasonalPresets[seasonalKey]; 3631 3632 if (!localStorage.getItem('design-system-id-migrated-v3')) { 3633 var storedDs = localStorage.getItem('design-system'); 3634 if (storedDs === 'frosted-slate') { 3635 localStorage.setItem('design-system', 'frosted'); 3636 } 3637 localStorage.setItem('design-system-id-migrated-v3', '1'); 3638 } 3639 3640 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 3641 var currentDs = localStorage.getItem('design-system'); 3642 if (!currentDs || currentDs === 'modern-minimal') { 3643 localStorage.setItem('design-system', 'frosted-slate'); 3644 } 3645 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 3646 } 3647 3648 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 3649 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 3650 } 3651 var theme = localStorage.getItem('theme') || 'light'; 3652 var isDark = theme === 'dark'; 3653 3654 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 3655 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
365560 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 3656 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 3657 3658 var dsData = designSystems[ds] || designSystems['frosted-slate']; 3659 var pcData = primaryColors[pc] || primaryColors['purple']; 3660 var colors = isDark ? dsData.dark : dsData.light; 3661 var primary = isDark ? pcData.dark : pcData.light; 3662 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 3663 var sem = isDark ? semantic.dark : semantic.light; 3664 3665 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 3666 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 3667 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 3668 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 3669 var variantHue = (hue + 130) % 360; 3670 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 3671 var variantLit = isDark ? 55 : 42; 3672 3673 var applyLightFrostedGlass = function(primary, background) { 3674 var parseHsl = function(v) { 3675 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 3676 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 3677 }; 3678 var hslToRgb = function(h, s, l) { 3679 s /= 100; l /= 100; 3680 var c = (1 - Math.abs(2 * l - 1)) * s; 3681 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 3682 var m = l - c / 2; 3683 var r = 0, g = 0, b = 0; 3684 if (h < 60) { r = c; g = x; } 3685 else if (h < 120) { r = x; g = c; } 3686 else if (h < 180) { g = c; b = x; } 3687 else if (h < 240) { g = x; b = c; } 3688 else if (h < 300) { r = x; b = c; } 3689 else { r = c; b = x; } 3690 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 3691 }; 3692 var rgbToHsl = function(r, g, b) { 3693 r /= 255; g /= 255; b /= 255; 3694 var max = Math.max(r, g, b), min = Math.min(r, g, b); 3695 var l = (max + min) / 2, h = 0, s = 0; 3696 if (max !== min) { 3697 var d = max - min; 3698 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 3699 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 3700 else if (max === g) h = ((b - r) / d + 2) / 6; 3701 else h = ((r - g) / d + 4) / 6; 3702 } 3703 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 3704 }; 3705 var blend = function(alpha) { 3706 var p = parseHsl(primary); 3707 var bg = parseHsl(background); 3708 var pr = hslToRgb(p.h, p.s, p.l); 3709 var br = hslToRgb(bg.h, bg.s, bg.l); 3710 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 3711 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 3712 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 3713 return rgbToHsl(r, g, b); 3714 }; 3715 var glass = blend(0.22); 3716 var glassChrome = blend(0.28); 3717 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 3718 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 3719 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 3720 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 3721 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 3722 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 3723 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 3724 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 3725 return { 3726 glass: glass + ' / 0.92', 3727 glassChrome: glassChrome + ' / 0.92', 3728 glassSubtle: blend(0.15) + ' / 0.88', 3729 glassHover: blend(0.28) + ' / 0.94', 3730 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 3731 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 3732 }; 3733 }; 3734 3735 if (dsData.tintSurfacesFromPrimary && isDark) { 3736 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 3737 colors = Object.assign({}, colors, { 3738 background: hue + ' ' + surfaceSat + '% 9%', 3739 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 3740 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 3741 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 3742 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 3743 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 3744 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 3745 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 3746 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 3747 glass: hue + ' 28% 16% / 0.88', 3748 glassChrome: hue + ' 28% 14% / 0.88', 3749 glassSubtle: hue + ' 26% 18% / 0.75', 3750 glassHover: hue + ' 30% 20% / 0.92', 3751 glassBorder: hue + ' 24% 28% / 0.55' 3752 }); 3753 } else if (dsData.frostedChrome && !isDark) { 3754 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 3755 } 3756 3757 var root = document.documentElement; 3758 root.setAttribute('data-design-system', ds); 3759 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 3760 else root.removeAttribute('data-frosted-chrome'); 3761 if (isDark) root.classList.add('dark'); 3762 else root.classList.remove('dark'); 3763 root.style.colorScheme = isDark ? 'dark' : 'light'; 3764 3765 var h = function(v) { return 'hsl(' + v + ')'; }; 3766 3767 root.style.setProperty('--background', h(colors.background)); 3768 root.style.setProperty('--foreground', h(colors.foreground)); 3769 root.style.setProperty('--card', h(colors.card)); 3770 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 3771 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 3772 root.style.setProperty('--popover', h(colors.popover)); 3773 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 3774 root.style.setProperty('--border', h(colors.border)); 3775 root.style.setProperty('--muted', h(colors.muted)); 3776 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 3777 root.style.setProperty('--secondary', h(colors.secondary)); 3778 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 3779 root.style.setProperty('--accent', h(colors.accent)); 3780 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 3781 root.style.setProperty('--input', h(colors.input)); 3782 root.style.setProperty('--sidebar', h(colors.sidebar)); 3783 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 3784 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 3785 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 3786 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 3787 3788 root.style.setProperty('--glass', h(colors.glass)); 3789 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 3790 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 3791 root.style.setProperty('--glass-hover', h(colors.glassHover)); 3792 root.style.setProperty('--glass-border', h(colors.glassBorder)); 3793 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 3794 3795 if (dsData.frostedChrome && !isDark) { 3796 var darkChrome = dsData.dark; 3797 var darkPrimary = pcData.dark; 3798 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 3799 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 3800 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 3801 if (dsData.tintSurfacesFromPrimary) { 3802 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 3803 darkChrome = Object.assign({}, darkChrome, { 3804 glass: darkHue + ' 28% 16% / 0.88', 3805 glassChrome: darkHue + ' 28% 14% / 0.88', 3806 glassBorder: darkHue + ' 24% 28% / 0.55' 3807 }); 3808 } 3809 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 3810 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 3811 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 3812 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 3813 } 3814 3815 if (!isDark) { 3816 root.style.setProperty('--hero-halo-center', h(colors.background)); 3817 root.style.setProperty('--hero-halo-mid', h(colors.card)); 3818 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 3819 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 3820 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 3821 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
3821+ '%' : colors.border)); 3822 } else { 3823 root.style.setProperty('--hero-halo-center', h(colors.card)); 3824 root.style.setProperty('--hero-halo-mid', h(colors.background)); 3825 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 3826 root.style.setProperty('--hero-halo-edge', h(colors.border)); 3827 } 3828 3829 root.style.setProperty('--primary', h(primary)); 3830 root.style.setProperty('--primary-foreground', h(primaryFg)); 3831 root.style.setProperty('--ring', h(primary)); 3832 root.style.setProperty('--sidebar-primary', h(primary)); 3833 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 3834 root.style.setProperty('--sidebar-ring', h(primary)); 3835 3836 root.style.setProperty('--destructive', h(sem.destructive)); 3837 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 3838 3839 if (isDark) { 3840 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 3841 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 3842 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 3843 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 3844 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 3845 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
3845+ '% / 0.2'); 3846 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 3847 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 3848 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 3849 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 3850 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 3851 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 3852 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 3853 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 3854 } else { 3855 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 3856 var textSat = Math.min(Math.max(sat - 2, 52), 80); 3857 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 3858 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 3859 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 3860 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 3861 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 3862 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 3863 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 3864 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 3865 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 3866 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 3867 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 3868 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 3869 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 3870 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 3871 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 3872 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 3873 } 3874 3875 var sat = isDark ? 70 : 65; 3876 var lit = isDark ? 55 : 50; 3877 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 3878 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 3879 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 3880 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 3881 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 3882 } catch (e) {} 3883})(); 3884</script>
3884<script id="buy-trust-dismiss-init"> 3885(function() { 3886 try { 3887 var path = location.pathname.split("?")[0]; 3888 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 3889 document.documentElement.setAttribute("data-trust-dismissed", "1"); 3890 } 3891 } catch (e) {} 3892})(); 3893</script>
3893<script>self.__next_f.push([1,"1e:[\"$\",\"section\",null,{\"className\":\"mx-auto w-full space-y-5 md:space-y-6\",\"aria-label\":\"With your purchase you get\",\"data-testid\":\"buy-pdp-purchase-benefits\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-foreground text-center text-base font-semibold tracking-tight\",\"children\":\"With your purchase you get\"}],[\"$\",\"ul\",null,{\"className\":\"grid grid-cols-1 gap-3 sm:grid-cols-2 sm:gap-4\",\"children\":[[\"$\",\"li\",\"30-Day Money Back Guarantee\",{\"className\":\"surface-card buy-pdp-trust-tile flex gap-3 rounded-lg p-3 sm:gap-4 sm:p-4 md:p-5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-primary/75 mt-0.5\",\"children\":[\"$\",\"$L28\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z\",\"key\":\"3c2336\"}],[\"path\",{\"d\":\"m15 9-6 6\",\"key\":\"1uzhvr\"}],[\"path\",{\"d\":\"M9 9h.01\",\"key\":\"1q5me6\"}],[\"path\",{\"d\":\"M15 15h.01\",\"key\":\"lqbp3k\"}]],\"className\":\"lucide-badge-percent size-5 shrink-0\",\"strokeWidth\":1.75,\"aria-hidden\":true}]}],[\"$\",\"div\",null,{\"className\":\"min-w-0 space-y-1.5\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-foreground text-sm font-semibold leading-snug\",\"children\":\"30-Day Money Back Guarantee\"}],[\"$\",\"p\",null,{\"className\":\"text-muted-foreground text-xs leading-relaxed\",\"children\":[\"Every device is rigorously tested. If somethingâs wrong, weâll repair, replace, or refund within 30 days of purchase.\",null]}]]}]]}],[\"$\",\"li\",\"Insured Delivery: 1-2 days\",{\"className\":\"surface-card buy-pdp-trust-tile flex gap-3 rounded-lg p-3 sm:gap-4 sm:p-4 md:p-5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-primary/75 mt-0.5\",\"children\":[\"$\",\"$L28\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2\",\"key\":\"wrbu53\"}],[\"path\",{\"d\":\"M15 18H9\",\"key\":\"1lyqi6\"}],[\"path\",{\"d\":\"M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14\",\"key\":\"lysw3i\"}],[\"circle\",{\"cx\":\"17\",\"cy\":\"18\",\"r\":\"2\",\"key\":\"332jqn\"}],[\"circle\",{\"cx\":\"7\",\"cy\":\"18\",\"r\":\"2\",\"key\":\"19iecd\"}]],\"className\":\"lucide-truck size-5 shrink-0\",\"strokeWidth\":1.75,\"aria-hidden\":true}]}],[\"$\",\"div\",null,{\"className\":\"min-w-0 space-y-1.5\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-foreground text-sm font-semibold leading-snug\",\"children\":\"Insured Delivery: 1-2 days\"}],[\"$\",\"p\",null,{\"className\":\"text-muted-foreground text-xs leading-relaxed\",\"children\":[\"Order before 2pm and have it delivered the next day; or 2 days for outlying areas. Insured nationwide delivery.\",[\" \",[\"$\",\"a\",null,{\"href\":\"/terms-of-use\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-primary underline\",\"children\":\"T\u0026Câs apply\"}]]]}]]}]]}],[\"$\",\"li\",\"12 Month Warranty\",{\"className\":\"surface-card buy-pdp-trust-tile flex gap-3 rounded-lg p-3 sm:gap-4 sm:p-4 md:p-5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-primary/75 mt-0.5\",\"children\":[\"$\",\"$L28\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\"key\":\"oel41y\"}]],\"className\":\"lucide-shield size-5 shrink-0\",\"strokeWidth\":1.75,\"aria-hidden\":true}]}],[\"$\",\"div\",null,{\"className\":\"min-w-0 space-y-1.5\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-foreground text-sm font-semibold leading-snug\",\"children\":\"12 Month Warranty\"}],[\"$\",\"p\",null,{\"className\":\"text-muted-foreground text-xs leading-relaxed\",\"children\":[\"Comes with a full 12 month warranty backed by us and serviced by us.\",[\" \",[\"$\",\"a\",null,{\"href\":\"/terms-of-use\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-primary underline\",\"children\":\"T\u0026Câs apply\"}]]]}]]}]]}],[\"$\",\"li\",\"Repair Care Plus\",{\"className\":\"surface-card buy-pdp-trust-tile flex gap-3 rounded-lg p-3 sm:gap-4 sm:p-4 md:p-5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-primary/75 mt-0.5\",\"children\":[\"$\",\"$L28\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"rect\",{\"width\":\"14\",\"height\"
3893:\"20\",\"x\":\"5\",\"y\":\"2\",\"rx\":\"2\",\"ry\":\"2\",\"key\":\"1yt0o3\"}],[\"path\",{\"d\":\"M12 18h.01\",\"key\":\"mhygvu\"}]],\"className\":\"lucide-smartphone size-5 shrink-0\",\"strokeWidth\":1.75,\"aria-hidden\":true}]}],\"$L29\"]}]]}]]}]\n"])</script>
3893<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
3893<script id="theme-init" data-cfasync="false"> 3894(function() { 3895 try { 3896 var path = location.pathname; 3897 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 3898 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 3899 var ds; 3900 var pc; 3901 3902 if (isAdminV2) { 3903 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 3904 pc = localStorage.getItem('admin-primary-color') || 'blue'; 3905 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 3906 } else { 3907 var seasonalKey = localStorage.getItem('seasonal-theme'); 3908 var preset = seasonalKey && seasonalPresets[seasonalKey]; 3909 3910 if (!localStorage.getItem('design-system-id-migrated-v3')) { 3911 var storedDs = localStorage.getItem('design-system'); 3912 if (storedDs === 'frosted-slate') { 3913 localStorage.setItem('design-system', 'frosted'); 3914 } 3915 localStorage.setItem('design-system-id-migrated-v3', '1'); 3916 } 3917 3918 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 3919 var currentDs = localStorage.getItem('design-system'); 3920 if (!currentDs || currentDs === 'modern-minimal') { 3921 localStorage.setItem('design-system', 'frosted-slate'); 3922 } 3923 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 3924 } 3925 3926 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 3927 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 3928 } 3929 var theme = localStorage.getItem('theme') || 'light'; 3930 var isDark = theme === 'dark'; 3931 3932 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 3933 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
393360 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 3934 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 3935 3936 var dsData = designSystems[ds] || designSystems['frosted-slate']; 3937 var pcData = primaryColors[pc] || primaryColors['purple']; 3938 var colors = isDark ? dsData.dark : dsData.light; 3939 var primary = isDark ? pcData.dark : pcData.light; 3940 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 3941 var sem = isDark ? semantic.dark : semantic.light; 3942 3943 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 3944 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 3945 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 3946 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 3947 var variantHue = (hue + 130) % 360; 3948 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 3949 var variantLit = isDark ? 55 : 42; 3950 3951 var applyLightFrostedGlass = function(primary, background) { 3952 var parseHsl = function(v) { 3953 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 3954 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 3955 }; 3956 var hslToRgb = function(h, s, l) { 3957 s /= 100; l /= 100; 3958 var c = (1 - Math.abs(2 * l - 1)) * s; 3959 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 3960 var m = l - c / 2; 3961 var r = 0, g = 0, b = 0; 3962 if (h < 60) { r = c; g = x; } 3963 else if (h < 120) { r = x; g = c; } 3964 else if (h < 180) { g = c; b = x; } 3965 else if (h < 240) { g = x; b = c; } 3966 else if (h < 300) { r = x; b = c; } 3967 else { r = c; b = x; } 3968 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 3969 }; 3970 var rgbToHsl = function(r, g, b) { 3971 r /= 255; g /= 255; b /= 255; 3972 var max = Math.max(r, g, b), min = Math.min(r, g, b); 3973 var l = (max + min) / 2, h = 0, s = 0; 3974 if (max !== min) { 3975 var d = max - min; 3976 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 3977 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 3978 else if (max === g) h = ((b - r) / d + 2) / 6; 3979 else h = ((r - g) / d + 4) / 6; 3980 } 3981 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 3982 }; 3983 var blend = function(alpha) { 3984 var p = parseHsl(primary); 3985 var bg = parseHsl(background); 3986 var pr = hslToRgb(p.h, p.s, p.l); 3987 var br = hslToRgb(bg.h, bg.s, bg.l); 3988 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 3989 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 3990 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 3991 return rgbToHsl(r, g, b); 3992 }; 3993 var glass = blend(0.22); 3994 var glassChrome = blend(0.28); 3995 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 3996 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 3997 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 3998 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 3999 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 4000 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 4001 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 4002 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 4003 return { 4004 glass: glass + ' / 0.92', 4005 glassChrome: glassChrome + ' / 0.92', 4006 glassSubtle: blend(0.15) + ' / 0.88', 4007 glassHover: blend(0.28) + ' / 0.94', 4008 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 4009 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 4010 }; 4011 }; 4012 4013 if (dsData.tintSurfacesFromPrimary && isDark) { 4014 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 4015 colors = Object.assign({}, colors, { 4016 background: hue + ' ' + surfaceSat + '% 9%', 4017 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 4018 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 4019 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 4020 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 4021 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 4022 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 4023 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 4024 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 4025 glass: hue + ' 28% 16% / 0.88', 4026 glassChrome: hue + ' 28% 14% / 0.88', 4027 glassSubtle: hue + ' 26% 18% / 0.75', 4028 glassHover: hue + ' 30% 20% / 0.92', 4029 glassBorder: hue + ' 24% 28% / 0.55' 4030 }); 4031 } else if (dsData.frostedChrome && !isDark) { 4032 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 4033 } 4034 4035 var root = document.documentElement; 4036 root.setAttribute('data-design-system', ds); 4037 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 4038 else root.removeAttribute('data-frosted-chrome'); 4039 if (isDark) root.classList.add('dark'); 4040 else root.classList.remove('dark'); 4041 root.style.colorScheme = isDark ? 'dark' : 'light'; 4042 4043 var h = function(v) { return 'hsl(' + v + ')'; }; 4044 4045 root.style.setProperty('--background', h(colors.background)); 4046 root.style.setProperty('--foreground', h(colors.foreground)); 4047 root.style.setProperty('--card', h(colors.card)); 4048 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 4049 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 4050 root.style.setProperty('--popover', h(colors.popover)); 4051 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 4052 root.style.setProperty('--border', h(colors.border)); 4053 root.style.setProperty('--muted', h(colors.muted)); 4054 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 4055 root.style.setProperty('--secondary', h(colors.secondary)); 4056 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 4057 root.style.setProperty('--accent', h(colors.accent)); 4058 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 4059 root.style.setProperty('--input', h(colors.input)); 4060 root.style.setProperty('--sidebar', h(colors.sidebar)); 4061 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 4062 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 4063 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 4064 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 4065 4066 root.style.setProperty('--glass', h(colors.glass)); 4067 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 4068 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 4069 root.style.setProperty('--glass-hover', h(colors.glassHover)); 4070 root.style.setProperty('--glass-border', h(colors.glassBorder)); 4071 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 4072 4073 if (dsData.frostedChrome && !isDark) { 4074 var darkChrome = dsData.dark; 4075 var darkPrimary = pcData.dark; 4076 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 4077 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 4078 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 4079 if (dsData.tintSurfacesFromPrimary) { 4080 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 4081 darkChrome = Object.assign({}, darkChrome, { 4082 glass: darkHue + ' 28% 16% / 0.88', 4083 glassChrome: darkHue + ' 28% 14% / 0.88', 4084 glassBorder: darkHue + ' 24% 28% / 0.55' 4085 }); 4086 } 4087 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 4088 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 4089 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 4090 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 4091 } 4092 4093 if (!isDark) { 4094 root.style.setProperty('--hero-halo-center', h(colors.background)); 4095 root.style.setProperty('--hero-halo-mid', h(colors.card)); 4096 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 4097 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 4098 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 4099 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
4099+ '%' : colors.border)); 4100 } else { 4101 root.style.setProperty('--hero-halo-center', h(colors.card)); 4102 root.style.setProperty('--hero-halo-mid', h(colors.background)); 4103 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 4104 root.style.setProperty('--hero-halo-edge', h(colors.border)); 4105 } 4106 4107 root.style.setProperty('--primary', h(primary)); 4108 root.style.setProperty('--primary-foreground', h(primaryFg)); 4109 root.style.setProperty('--ring', h(primary)); 4110 root.style.setProperty('--sidebar-primary', h(primary)); 4111 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 4112 root.style.setProperty('--sidebar-ring', h(primary)); 4113 4114 root.style.setProperty('--destructive', h(sem.destructive)); 4115 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 4116 4117 if (isDark) { 4118 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 4119 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 4120 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 4121 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 4122 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 4123 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
4123+ '% / 0.2'); 4124 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 4125 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 4126 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 4127 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 4128 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 4129 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 4130 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 4131 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 4132 } else { 4133 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 4134 var textSat = Math.min(Math.max(sat - 2, 52), 80); 4135 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 4136 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 4137 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 4138 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 4139 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 4140 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 4141 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 4142 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 4143 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 4144 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 4145 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 4146 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 4147 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 4148 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 4149 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 4150 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 4151 } 4152 4153 var sat = isDark ? 70 : 65; 4154 var lit = isDark ? 55 : 50; 4155 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 4156 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 4157 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 4158 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 4159 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 4160 } catch (e) {} 4161})(); 4162</script>
4162<script id="buy-trust-dismiss-init"> 4163(function() { 4164 try { 4165 var path = location.pathname.split("?")[0]; 4166 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 4167 document.documentElement.setAttribute("data-trust-dismissed", "1"); 4168 } 4169 } catch (e) {} 4170})(); 4171</script>
4171<script>self.__next_f.push([1,"1f:[\"$\",\"$L2a\",null,{}]\n20:null\n"])</script>
4171<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
4171<script id="theme-init" data-cfasync="false"> 4172(function() { 4173 try { 4174 var path = location.pathname; 4175 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 4176 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 4177 var ds; 4178 var pc; 4179 4180 if (isAdminV2) { 4181 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 4182 pc = localStorage.getItem('admin-primary-color') || 'blue'; 4183 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 4184 } else { 4185 var seasonalKey = localStorage.getItem('seasonal-theme'); 4186 var preset = seasonalKey && seasonalPresets[seasonalKey]; 4187 4188 if (!localStorage.getItem('design-system-id-migrated-v3')) { 4189 var storedDs = localStorage.getItem('design-system'); 4190 if (storedDs === 'frosted-slate') { 4191 localStorage.setItem('design-system', 'frosted'); 4192 } 4193 localStorage.setItem('design-system-id-migrated-v3', '1'); 4194 } 4195 4196 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 4197 var currentDs = localStorage.getItem('design-system'); 4198 if (!currentDs || currentDs === 'modern-minimal') { 4199 localStorage.setItem('design-system', 'frosted-slate'); 4200 } 4201 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 4202 } 4203 4204 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 4205 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 4206 } 4207 var theme = localStorage.getItem('theme') || 'light'; 4208 var isDark = theme === 'dark'; 4209 4210 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 4211 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
421160 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 4212 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 4213 4214 var dsData = designSystems[ds] || designSystems['frosted-slate']; 4215 var pcData = primaryColors[pc] || primaryColors['purple']; 4216 var colors = isDark ? dsData.dark : dsData.light; 4217 var primary = isDark ? pcData.dark : pcData.light; 4218 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 4219 var sem = isDark ? semantic.dark : semantic.light; 4220 4221 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 4222 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 4223 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 4224 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 4225 var variantHue = (hue + 130) % 360; 4226 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 4227 var variantLit = isDark ? 55 : 42; 4228 4229 var applyLightFrostedGlass = function(primary, background) { 4230 var parseHsl = function(v) { 4231 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 4232 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 4233 }; 4234 var hslToRgb = function(h, s, l) { 4235 s /= 100; l /= 100; 4236 var c = (1 - Math.abs(2 * l - 1)) * s; 4237 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 4238 var m = l - c / 2; 4239 var r = 0, g = 0, b = 0; 4240 if (h < 60) { r = c; g = x; } 4241 else if (h < 120) { r = x; g = c; } 4242 else if (h < 180) { g = c; b = x; } 4243 else if (h < 240) { g = x; b = c; } 4244 else if (h < 300) { r = x; b = c; } 4245 else { r = c; b = x; } 4246 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 4247 }; 4248 var rgbToHsl = function(r, g, b) { 4249 r /= 255; g /= 255; b /= 255; 4250 var max = Math.max(r, g, b), min = Math.min(r, g, b); 4251 var l = (max + min) / 2, h = 0, s = 0; 4252 if (max !== min) { 4253 var d = max - min; 4254 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 4255 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 4256 else if (max === g) h = ((b - r) / d + 2) / 6; 4257 else h = ((r - g) / d + 4) / 6; 4258 } 4259 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 4260 }; 4261 var blend = function(alpha) { 4262 var p = parseHsl(primary); 4263 var bg = parseHsl(background); 4264 var pr = hslToRgb(p.h, p.s, p.l); 4265 var br = hslToRgb(bg.h, bg.s, bg.l); 4266 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 4267 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 4268 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 4269 return rgbToHsl(r, g, b); 4270 }; 4271 var glass = blend(0.22); 4272 var glassChrome = blend(0.28); 4273 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 4274 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 4275 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 4276 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 4277 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 4278 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 4279 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 4280 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 4281 return { 4282 glass: glass + ' / 0.92', 4283 glassChrome: glassChrome + ' / 0.92', 4284 glassSubtle: blend(0.15) + ' / 0.88', 4285 glassHover: blend(0.28) + ' / 0.94', 4286 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 4287 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 4288 }; 4289 }; 4290 4291 if (dsData.tintSurfacesFromPrimary && isDark) { 4292 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 4293 colors = Object.assign({}, colors, { 4294 background: hue + ' ' + surfaceSat + '% 9%', 4295 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 4296 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 4297 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 4298 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 4299 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 4300 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 4301 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 4302 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 4303 glass: hue + ' 28% 16% / 0.88', 4304 glassChrome: hue + ' 28% 14% / 0.88', 4305 glassSubtle: hue + ' 26% 18% / 0.75', 4306 glassHover: hue + ' 30% 20% / 0.92', 4307 glassBorder: hue + ' 24% 28% / 0.55' 4308 }); 4309 } else if (dsData.frostedChrome && !isDark) { 4310 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 4311 } 4312 4313 var root = document.documentElement; 4314 root.setAttribute('data-design-system', ds); 4315 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 4316 else root.removeAttribute('data-frosted-chrome'); 4317 if (isDark) root.classList.add('dark'); 4318 else root.classList.remove('dark'); 4319 root.style.colorScheme = isDark ? 'dark' : 'light'; 4320 4321 var h = function(v) { return 'hsl(' + v + ')'; }; 4322 4323 root.style.setProperty('--background', h(colors.background)); 4324 root.style.setProperty('--foreground', h(colors.foreground)); 4325 root.style.setProperty('--card', h(colors.card)); 4326 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 4327 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 4328 root.style.setProperty('--popover', h(colors.popover)); 4329 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 4330 root.style.setProperty('--border', h(colors.border)); 4331 root.style.setProperty('--muted', h(colors.muted)); 4332 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 4333 root.style.setProperty('--secondary', h(colors.secondary)); 4334 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 4335 root.style.setProperty('--accent', h(colors.accent)); 4336 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 4337 root.style.setProperty('--input', h(colors.input)); 4338 root.style.setProperty('--sidebar', h(colors.sidebar)); 4339 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 4340 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 4341 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 4342 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 4343 4344 root.style.setProperty('--glass', h(colors.glass)); 4345 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 4346 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 4347 root.style.setProperty('--glass-hover', h(colors.glassHover)); 4348 root.style.setProperty('--glass-border', h(colors.glassBorder)); 4349 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 4350 4351 if (dsData.frostedChrome && !isDark) { 4352 var darkChrome = dsData.dark; 4353 var darkPrimary = pcData.dark; 4354 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 4355 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 4356 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 4357 if (dsData.tintSurfacesFromPrimary) { 4358 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 4359 darkChrome = Object.assign({}, darkChrome, { 4360 glass: darkHue + ' 28% 16% / 0.88', 4361 glassChrome: darkHue + ' 28% 14% / 0.88', 4362 glassBorder: darkHue + ' 24% 28% / 0.55' 4363 }); 4364 } 4365 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 4366 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 4367 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 4368 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 4369 } 4370 4371 if (!isDark) { 4372 root.style.setProperty('--hero-halo-center', h(colors.background)); 4373 root.style.setProperty('--hero-halo-mid', h(colors.card)); 4374 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 4375 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 4376 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 4377 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
4377+ '%' : colors.border)); 4378 } else { 4379 root.style.setProperty('--hero-halo-center', h(colors.card)); 4380 root.style.setProperty('--hero-halo-mid', h(colors.background)); 4381 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 4382 root.style.setProperty('--hero-halo-edge', h(colors.border)); 4383 } 4384 4385 root.style.setProperty('--primary', h(primary)); 4386 root.style.setProperty('--primary-foreground', h(primaryFg)); 4387 root.style.setProperty('--ring', h(primary)); 4388 root.style.setProperty('--sidebar-primary', h(primary)); 4389 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 4390 root.style.setProperty('--sidebar-ring', h(primary)); 4391 4392 root.style.setProperty('--destructive', h(sem.destructive)); 4393 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 4394 4395 if (isDark) { 4396 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 4397 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 4398 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 4399 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 4400 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 4401 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
4401+ '% / 0.2'); 4402 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 4403 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 4404 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 4405 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 4406 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 4407 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 4408 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 4409 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 4410 } else { 4411 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 4412 var textSat = Math.min(Math.max(sat - 2, 52), 80); 4413 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 4414 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 4415 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 4416 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 4417 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 4418 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 4419 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 4420 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 4421 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 4422 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 4423 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 4424 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 4425 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 4426 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 4427 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 4428 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 4429 } 4430 4431 var sat = isDark ? 70 : 65; 4432 var lit = isDark ? 55 : 50; 4433 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 4434 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 4435 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 4436 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 4437 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 4438 } catch (e) {} 4439})(); 4440</script>
4440<script id="buy-trust-dismiss-init"> 4441(function() { 4442 try { 4443 var path = location.pathname.split("?")[0]; 4444 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 4445 document.documentElement.setAttribute("data-trust-dismissed", "1"); 4446 } 4447 } catch (e) {} 4448})(); 4449</script>
4449<script>self.__next_f.push([1,"21:[\"$\",\"section\",null,{\"className\":\"surface-card buy-pdp-payment-card rounded-lg p-4 md:p-5 mx-auto w-full\",\"aria-label\":\"Accepted payment methods\",\"data-testid\":\"buy-pdp-payment-providers\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-foreground mb-3 text-center text-sm font-semibold tracking-wide uppercase\",\"children\":\"Accepted Payment Methods\"}],[\"$\",\"ul\",null,{\"className\":\"flex flex-nowrap items-center justify-start gap-2.5 overflow-x-auto overscroll-x-contain pb-0.5 [-ms-overflow-style:none] [scrollbar-width:none] sm:justify-center sm:gap-3 [\u0026::-webkit-scrollbar]:hidden\",\"children\":[[\"$\",\"li\",\"Mastercard\",{\"className\":\"shrink-0\",\"children\":[\"$\",\"span\",null,{\"className\":\"buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]\",\"title\":\"Mastercard\",\"children\":[[\"$\",\"img\",null,{\"src\":\"/images/footer/mastercard-logo.svg\",\"alt\":\"Supports Mastercard\",\"className\":\"max-h-full max-w-full object-contain\"}],\" \"]}]}],[\"$\",\"li\",\"Visa\",{\"className\":\"shrink-0\",\"children\":[\"$\",\"span\",null,{\"className\":\"buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]\",\"title\":\"Visa\",\"children\":[[\"$\",\"img\",null,{\"src\":\"/images/footer/visa-logo.svg\",\"alt\":\"Supports Visa\",\"className\":\"max-h-full max-w-full object-contain\"}],\" \"]}]}],[\"$\",\"li\",\"Fasta\",{\"className\":\"shrink-0\",\"children\":[\"$\",\"span\",null,{\"className\":\"buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]\",\"title\":\"Fasta\",\"children\":[[\"$\",\"img\",null,{\"src\":\"/images/footer/fasta-logo.svg\",\"alt\":\"Supports Fasta\",\"className\":\"max-h-full max-w-full object-contain\"}],\" \"]}]}],[\"$\",\"li\",\"Zapper\",{\"className\":\"shrink-0\",\"children\":[\"$\",\"span\",null,{\"className\":\"buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]\",\"title\":\"Zapper\",\"children\":[[\"$\",\"img\",null,{\"src\":\"/images/footer/zapper-logo.svg\",\"alt\":\"Supports Zapper\",\"className\":\"max-h-full max-w-full object-contain\"}],\" \"]}]}],[\"$\",\"li\",\"Mobicred\",{\"className\":\"shrink-0\",\"children\":[\"$\",\"span\",null,{\"className\":\"buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]\",\"title\":\"Mobicred\",\"children\":[[\"$\",\"img\",null,{\"src\":\"/images/footer/mobicred-logo.svg\",\"alt\":\"Supports Mobicred\",\"className\":\"max-h-full max-w-full object-contain\"}],\" \"]}]}],[\"$\",\"li\",\"Discover\",{\"className\":\"shrink-0\",\"children\":[\"$\",\"span\",null,{\"className\":\"buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]\",\"title\":\"Discover\",\"children\":[[\"$\",\"img\",null,{\"src\":\"/images/footer/discover-logo.svg\",\"alt\":\"Supports Discover\",\"className\":\"max-h-full max-w-full object-contain\"}],\" \"]}]}],[\"$\",\"li\",\"Diners Club\",{\"className\":\"shrink-0\",\"children\":[\"$\",\"span\",null,{\"className\":\"buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]\",\"title\":\"Diners Club\",\"children\":[[\"$\",\"img\",null,{\"src\":\"/images/footer/diners-club-logo.svg\",\"alt\":\"Supports Diners Club\",\"className\":\"max-h-full max-w-full object-contain\"}],\" \"]}]}],[\"$\",\"li\",\"Instant EFT\",{\"className\":\"shrink-0\",\"children\":[\"$\",\"span\",null,{\"className\":\"buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]\",\"title\":\"Instant EFT\",\"children\":[[\"$\",\"img\",null,{\"src\":\"/images/footer/instant-eft-logo.svg\",\"alt\":\"Supports Instant EFT\",\"className\":\"max-h-full max-w-full object-contain\"}],\" \"]}]}],[\"$\",\"li\",\"Bank Transfer\",{\"className\":\"shrink-0\",\"children\":[\"$\",\"span\",null,{\"className\":\"buy-pdp-payment-icon flex h-9 w-16 items-center justify-center rounded-md px-1.5 sm:h-10 sm:w-[4.75rem]\",\"t
4449itle\":\"Bank Transfer\",\"children\":[\"$L2b\",\" \"]}]}]]}]]}]\n"])</script>
4449<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
4449<script id="theme-init" data-cfasync="false"> 4450(function() { 4451 try { 4452 var path = location.pathname; 4453 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 4454 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 4455 var ds; 4456 var pc; 4457 4458 if (isAdminV2) { 4459 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 4460 pc = localStorage.getItem('admin-primary-color') || 'blue'; 4461 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 4462 } else { 4463 var seasonalKey = localStorage.getItem('seasonal-theme'); 4464 var preset = seasonalKey && seasonalPresets[seasonalKey]; 4465 4466 if (!localStorage.getItem('design-system-id-migrated-v3')) { 4467 var storedDs = localStorage.getItem('design-system'); 4468 if (storedDs === 'frosted-slate') { 4469 localStorage.setItem('design-system', 'frosted'); 4470 } 4471 localStorage.setItem('design-system-id-migrated-v3', '1'); 4472 } 4473 4474 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 4475 var currentDs = localStorage.getItem('design-system'); 4476 if (!currentDs || currentDs === 'modern-minimal') { 4477 localStorage.setItem('design-system', 'frosted-slate'); 4478 } 4479 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 4480 } 4481 4482 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 4483 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 4484 } 4485 var theme = localStorage.getItem('theme') || 'light'; 4486 var isDark = theme === 'dark'; 4487 4488 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 4489 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
448960 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 4490 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 4491 4492 var dsData = designSystems[ds] || designSystems['frosted-slate']; 4493 var pcData = primaryColors[pc] || primaryColors['purple']; 4494 var colors = isDark ? dsData.dark : dsData.light; 4495 var primary = isDark ? pcData.dark : pcData.light; 4496 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 4497 var sem = isDark ? semantic.dark : semantic.light; 4498 4499 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 4500 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 4501 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 4502 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 4503 var variantHue = (hue + 130) % 360; 4504 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 4505 var variantLit = isDark ? 55 : 42; 4506 4507 var applyLightFrostedGlass = function(primary, background) { 4508 var parseHsl = function(v) { 4509 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 4510 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 4511 }; 4512 var hslToRgb = function(h, s, l) { 4513 s /= 100; l /= 100; 4514 var c = (1 - Math.abs(2 * l - 1)) * s; 4515 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 4516 var m = l - c / 2; 4517 var r = 0, g = 0, b = 0; 4518 if (h < 60) { r = c; g = x; } 4519 else if (h < 120) { r = x; g = c; } 4520 else if (h < 180) { g = c; b = x; } 4521 else if (h < 240) { g = x; b = c; } 4522 else if (h < 300) { r = x; b = c; } 4523 else { r = c; b = x; } 4524 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 4525 }; 4526 var rgbToHsl = function(r, g, b) { 4527 r /= 255; g /= 255; b /= 255; 4528 var max = Math.max(r, g, b), min = Math.min(r, g, b); 4529 var l = (max + min) / 2, h = 0, s = 0; 4530 if (max !== min) { 4531 var d = max - min; 4532 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 4533 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 4534 else if (max === g) h = ((b - r) / d + 2) / 6; 4535 else h = ((r - g) / d + 4) / 6; 4536 } 4537 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 4538 }; 4539 var blend = function(alpha) { 4540 var p = parseHsl(primary); 4541 var bg = parseHsl(background); 4542 var pr = hslToRgb(p.h, p.s, p.l); 4543 var br = hslToRgb(bg.h, bg.s, bg.l); 4544 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 4545 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 4546 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 4547 return rgbToHsl(r, g, b); 4548 }; 4549 var glass = blend(0.22); 4550 var glassChrome = blend(0.28); 4551 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 4552 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 4553 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 4554 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 4555 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 4556 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 4557 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 4558 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 4559 return { 4560 glass: glass + ' / 0.92', 4561 glassChrome: glassChrome + ' / 0.92', 4562 glassSubtle: blend(0.15) + ' / 0.88', 4563 glassHover: blend(0.28) + ' / 0.94', 4564 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 4565 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 4566 }; 4567 }; 4568 4569 if (dsData.tintSurfacesFromPrimary && isDark) { 4570 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 4571 colors = Object.assign({}, colors, { 4572 background: hue + ' ' + surfaceSat + '% 9%', 4573 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 4574 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 4575 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 4576 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 4577 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 4578 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 4579 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 4580 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 4581 glass: hue + ' 28% 16% / 0.88', 4582 glassChrome: hue + ' 28% 14% / 0.88', 4583 glassSubtle: hue + ' 26% 18% / 0.75', 4584 glassHover: hue + ' 30% 20% / 0.92', 4585 glassBorder: hue + ' 24% 28% / 0.55' 4586 }); 4587 } else if (dsData.frostedChrome && !isDark) { 4588 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 4589 } 4590 4591 var root = document.documentElement; 4592 root.setAttribute('data-design-system', ds); 4593 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 4594 else root.removeAttribute('data-frosted-chrome'); 4595 if (isDark) root.classList.add('dark'); 4596 else root.classList.remove('dark'); 4597 root.style.colorScheme = isDark ? 'dark' : 'light'; 4598 4599 var h = function(v) { return 'hsl(' + v + ')'; }; 4600 4601 root.style.setProperty('--background', h(colors.background)); 4602 root.style.setProperty('--foreground', h(colors.foreground)); 4603 root.style.setProperty('--card', h(colors.card)); 4604 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 4605 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 4606 root.style.setProperty('--popover', h(colors.popover)); 4607 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 4608 root.style.setProperty('--border', h(colors.border)); 4609 root.style.setProperty('--muted', h(colors.muted)); 4610 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 4611 root.style.setProperty('--secondary', h(colors.secondary)); 4612 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 4613 root.style.setProperty('--accent', h(colors.accent)); 4614 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 4615 root.style.setProperty('--input', h(colors.input)); 4616 root.style.setProperty('--sidebar', h(colors.sidebar)); 4617 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 4618 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 4619 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 4620 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 4621 4622 root.style.setProperty('--glass', h(colors.glass)); 4623 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 4624 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 4625 root.style.setProperty('--glass-hover', h(colors.glassHover)); 4626 root.style.setProperty('--glass-border', h(colors.glassBorder)); 4627 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 4628 4629 if (dsData.frostedChrome && !isDark) { 4630 var darkChrome = dsData.dark; 4631 var darkPrimary = pcData.dark; 4632 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 4633 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 4634 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 4635 if (dsData.tintSurfacesFromPrimary) { 4636 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 4637 darkChrome = Object.assign({}, darkChrome, { 4638 glass: darkHue + ' 28% 16% / 0.88', 4639 glassChrome: darkHue + ' 28% 14% / 0.88', 4640 glassBorder: darkHue + ' 24% 28% / 0.55' 4641 }); 4642 } 4643 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 4644 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 4645 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 4646 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 4647 } 4648 4649 if (!isDark) { 4650 root.style.setProperty('--hero-halo-center', h(colors.background)); 4651 root.style.setProperty('--hero-halo-mid', h(colors.card)); 4652 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 4653 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 4654 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 4655 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
4655+ '%' : colors.border)); 4656 } else { 4657 root.style.setProperty('--hero-halo-center', h(colors.card)); 4658 root.style.setProperty('--hero-halo-mid', h(colors.background)); 4659 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 4660 root.style.setProperty('--hero-halo-edge', h(colors.border)); 4661 } 4662 4663 root.style.setProperty('--primary', h(primary)); 4664 root.style.setProperty('--primary-foreground', h(primaryFg)); 4665 root.style.setProperty('--ring', h(primary)); 4666 root.style.setProperty('--sidebar-primary', h(primary)); 4667 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 4668 root.style.setProperty('--sidebar-ring', h(primary)); 4669 4670 root.style.setProperty('--destructive', h(sem.destructive)); 4671 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 4672 4673 if (isDark) { 4674 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 4675 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 4676 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 4677 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 4678 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 4679 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
4679+ '% / 0.2'); 4680 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 4681 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 4682 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 4683 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 4684 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 4685 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 4686 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 4687 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 4688 } else { 4689 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 4690 var textSat = Math.min(Math.max(sat - 2, 52), 80); 4691 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 4692 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 4693 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 4694 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 4695 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 4696 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 4697 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 4698 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 4699 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 4700 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 4701 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 4702 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 4703 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 4704 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 4705 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 4706 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 4707 } 4708 4709 var sat = isDark ? 70 : 65; 4710 var lit = isDark ? 55 : 50; 4711 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 4712 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 4713 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 4714 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 4715 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 4716 } catch (e) {} 4717})(); 4718</script>
4718<script id="buy-trust-dismiss-init"> 4719(function() { 4720 try { 4721 var path = location.pathname.split("?")[0]; 4722 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 4723 document.documentElement.setAttribute("data-trust-dismissed", "1"); 4724 } 4725 } catch (e) {} 4726})(); 4727</script>
4727<script>self.__next_f.push([1,"2c:I[12933,[\"8409\",\"static/chunks/8409-de5726a4a278d28f.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"1930\",\"static/chunks/1930-431df5db3d2d6569.js\",\"9258\",\"static/chunks/9258-716243a91d561964.js\",\"7649\",\"static/chunks/7649-fc2ec28b21f07c2e.js\",\"8571\",\"static/chunks/8571-ac6ff42855de95c3.js\",\"7898\",\"static/chunks/app/(site)/buy/products/%5Bhandle%5D/page-5ec5e55b73260bac.js\"],\"BuyProductListingTrustGrid\"]\n:HL[\"/images/footer/bank-transfer-logo.svg\",\"image\"]\n24:[\"$\",\"span\",null,{\"className\":\"border-foreground/30 size-2.5 shrink-0 rounded-full border\",\"style\":{\"backgroundColor\":\"#646366\"},\"aria-hidden\":true}]\n25:[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"Gray\"}]\n26:[\"$\",\"span\",null,{\"data-testid\":\"buy-pdp-sim-chip\",\"className\":\"text-foreground border-foreground/45 inline-flex max-w-full items-center gap-1.5 rounded-md border bg-transparent px-2 py-0.5 text-xs font-medium\",\"children\":[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"1 SIM\"}]}]\n"])</script>
4727<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
4727<script id="theme-init" data-cfasync="false"> 4728(function() { 4729 try { 4730 var path = location.pathname; 4731 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 4732 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 4733 var ds; 4734 var pc; 4735 4736 if (isAdminV2) { 4737 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 4738 pc = localStorage.getItem('admin-primary-color') || 'blue'; 4739 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 4740 } else { 4741 var seasonalKey = localStorage.getItem('seasonal-theme'); 4742 var preset = seasonalKey && seasonalPresets[seasonalKey]; 4743 4744 if (!localStorage.getItem('design-system-id-migrated-v3')) { 4745 var storedDs = localStorage.getItem('design-system'); 4746 if (storedDs === 'frosted-slate') { 4747 localStorage.setItem('design-system', 'frosted'); 4748 } 4749 localStorage.setItem('design-system-id-migrated-v3', '1'); 4750 } 4751 4752 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 4753 var currentDs = localStorage.getItem('design-system'); 4754 if (!currentDs || currentDs === 'modern-minimal') { 4755 localStorage.setItem('design-system', 'frosted-slate'); 4756 } 4757 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 4758 } 4759 4760 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 4761 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 4762 } 4763 var theme = localStorage.getItem('theme') || 'light'; 4764 var isDark = theme === 'dark'; 4765 4766 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 4767 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
476760 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 4768 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 4769 4770 var dsData = designSystems[ds] || designSystems['frosted-slate']; 4771 var pcData = primaryColors[pc] || primaryColors['purple']; 4772 var colors = isDark ? dsData.dark : dsData.light; 4773 var primary = isDark ? pcData.dark : pcData.light; 4774 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 4775 var sem = isDark ? semantic.dark : semantic.light; 4776 4777 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 4778 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 4779 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 4780 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 4781 var variantHue = (hue + 130) % 360; 4782 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 4783 var variantLit = isDark ? 55 : 42; 4784 4785 var applyLightFrostedGlass = function(primary, background) { 4786 var parseHsl = function(v) { 4787 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 4788 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 4789 }; 4790 var hslToRgb = function(h, s, l) { 4791 s /= 100; l /= 100; 4792 var c = (1 - Math.abs(2 * l - 1)) * s; 4793 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 4794 var m = l - c / 2; 4795 var r = 0, g = 0, b = 0; 4796 if (h < 60) { r = c; g = x; } 4797 else if (h < 120) { r = x; g = c; } 4798 else if (h < 180) { g = c; b = x; } 4799 else if (h < 240) { g = x; b = c; } 4800 else if (h < 300) { r = x; b = c; } 4801 else { r = c; b = x; } 4802 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 4803 }; 4804 var rgbToHsl = function(r, g, b) { 4805 r /= 255; g /= 255; b /= 255; 4806 var max = Math.max(r, g, b), min = Math.min(r, g, b); 4807 var l = (max + min) / 2, h = 0, s = 0; 4808 if (max !== min) { 4809 var d = max - min; 4810 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 4811 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 4812 else if (max === g) h = ((b - r) / d + 2) / 6; 4813 else h = ((r - g) / d + 4) / 6; 4814 } 4815 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 4816 }; 4817 var blend = function(alpha) { 4818 var p = parseHsl(primary); 4819 var bg = parseHsl(background); 4820 var pr = hslToRgb(p.h, p.s, p.l); 4821 var br = hslToRgb(bg.h, bg.s, bg.l); 4822 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 4823 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 4824 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 4825 return rgbToHsl(r, g, b); 4826 }; 4827 var glass = blend(0.22); 4828 var glassChrome = blend(0.28); 4829 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 4830 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 4831 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 4832 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 4833 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 4834 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 4835 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 4836 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 4837 return { 4838 glass: glass + ' / 0.92', 4839 glassChrome: glassChrome + ' / 0.92', 4840 glassSubtle: blend(0.15) + ' / 0.88', 4841 glassHover: blend(0.28) + ' / 0.94', 4842 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 4843 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 4844 }; 4845 }; 4846 4847 if (dsData.tintSurfacesFromPrimary && isDark) { 4848 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 4849 colors = Object.assign({}, colors, { 4850 background: hue + ' ' + surfaceSat + '% 9%', 4851 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 4852 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 4853 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 4854 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 4855 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 4856 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 4857 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 4858 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 4859 glass: hue + ' 28% 16% / 0.88', 4860 glassChrome: hue + ' 28% 14% / 0.88', 4861 glassSubtle: hue + ' 26% 18% / 0.75', 4862 glassHover: hue + ' 30% 20% / 0.92', 4863 glassBorder: hue + ' 24% 28% / 0.55' 4864 }); 4865 } else if (dsData.frostedChrome && !isDark) { 4866 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 4867 } 4868 4869 var root = document.documentElement; 4870 root.setAttribute('data-design-system', ds); 4871 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 4872 else root.removeAttribute('data-frosted-chrome'); 4873 if (isDark) root.classList.add('dark'); 4874 else root.classList.remove('dark'); 4875 root.style.colorScheme = isDark ? 'dark' : 'light'; 4876 4877 var h = function(v) { return 'hsl(' + v + ')'; }; 4878 4879 root.style.setProperty('--background', h(colors.background)); 4880 root.style.setProperty('--foreground', h(colors.foreground)); 4881 root.style.setProperty('--card', h(colors.card)); 4882 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 4883 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 4884 root.style.setProperty('--popover', h(colors.popover)); 4885 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 4886 root.style.setProperty('--border', h(colors.border)); 4887 root.style.setProperty('--muted', h(colors.muted)); 4888 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 4889 root.style.setProperty('--secondary', h(colors.secondary)); 4890 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 4891 root.style.setProperty('--accent', h(colors.accent)); 4892 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 4893 root.style.setProperty('--input', h(colors.input)); 4894 root.style.setProperty('--sidebar', h(colors.sidebar)); 4895 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 4896 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 4897 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 4898 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 4899 4900 root.style.setProperty('--glass', h(colors.glass)); 4901 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 4902 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 4903 root.style.setProperty('--glass-hover', h(colors.glassHover)); 4904 root.style.setProperty('--glass-border', h(colors.glassBorder)); 4905 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 4906 4907 if (dsData.frostedChrome && !isDark) { 4908 var darkChrome = dsData.dark; 4909 var darkPrimary = pcData.dark; 4910 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 4911 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 4912 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 4913 if (dsData.tintSurfacesFromPrimary) { 4914 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 4915 darkChrome = Object.assign({}, darkChrome, { 4916 glass: darkHue + ' 28% 16% / 0.88', 4917 glassChrome: darkHue + ' 28% 14% / 0.88', 4918 glassBorder: darkHue + ' 24% 28% / 0.55' 4919 }); 4920 } 4921 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 4922 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 4923 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 4924 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 4925 } 4926 4927 if (!isDark) { 4928 root.style.setProperty('--hero-halo-center', h(colors.background)); 4929 root.style.setProperty('--hero-halo-mid', h(colors.card)); 4930 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 4931 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 4932 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 4933 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
4933+ '%' : colors.border)); 4934 } else { 4935 root.style.setProperty('--hero-halo-center', h(colors.card)); 4936 root.style.setProperty('--hero-halo-mid', h(colors.background)); 4937 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 4938 root.style.setProperty('--hero-halo-edge', h(colors.border)); 4939 } 4940 4941 root.style.setProperty('--primary', h(primary)); 4942 root.style.setProperty('--primary-foreground', h(primaryFg)); 4943 root.style.setProperty('--ring', h(primary)); 4944 root.style.setProperty('--sidebar-primary', h(primary)); 4945 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 4946 root.style.setProperty('--sidebar-ring', h(primary)); 4947 4948 root.style.setProperty('--destructive', h(sem.destructive)); 4949 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 4950 4951 if (isDark) { 4952 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 4953 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 4954 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 4955 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 4956 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 4957 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
4957+ '% / 0.2'); 4958 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 4959 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 4960 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 4961 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 4962 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 4963 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 4964 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 4965 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 4966 } else { 4967 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 4968 var textSat = Math.min(Math.max(sat - 2, 52), 80); 4969 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 4970 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 4971 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 4972 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 4973 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 4974 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 4975 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 4976 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 4977 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 4978 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 4979 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 4980 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 4981 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 4982 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 4983 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 4984 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 4985 } 4986 4987 var sat = isDark ? 70 : 65; 4988 var lit = isDark ? 55 : 50; 4989 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 4990 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 4991 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 4992 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 4993 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 4994 } catch (e) {} 4995})(); 4996</script>
4996<script id="buy-trust-dismiss-init"> 4997(function() { 4998 try { 4999 var path = location.pathname.split("?")[0]; 5000 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 5001 document.documentElement.setAttribute("data-trust-dismissed", "1"); 5002 } 5003 } catch (e) {} 5004})(); 5005</script>
5005<script>self.__next_f.push([1,"27:[\"$\",\"div\",null,{\"className\":\"order-3 flex min-w-0 flex-1 flex-col gap-4 md:min-h-0 md:gap-5\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mx-auto w-full space-y-1.5 text-center\",\"children\":[null,[\"$\",\"p\",null,{\"className\":\"text-2xl font-bold tabular-nums md:text-4xl text-emerald-500 dark:text-emerald-400\",\"data-testid\":\"buy-pdp-price\",\"children\":\"RÂ 12Â 500\"}],[\"$\",\"div\",null,{\"className\":\"text-muted-foreground mx-auto max-w-md space-y-1 text-sm\",\"data-testid\":\"buy-pdp-financing\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-foreground/70 text-xs uppercase tracking-wide\",\"children\":\"or\"}],[\"$\",\"p\",null,{\"className\":\"flex flex-wrap items-center justify-center gap-x-1.5 gap-y-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground font-semibold tabular-nums\",\"children\":\"RÂ 1Â 281\"}],[\"$\",\"span\",null,{\"children\":\"pm with\"}],[\"$\",\"img\",null,{\"src\":\"/images/footer/mobicred-logo.svg\",\"alt\":\"Mobicred\",\"className\":\"buy-pdp-mobicred-logo inline-block h-4 w-auto\"}],[\"$\",\"a\",null,{\"href\":\"https://www.mobicred.co.za/#feature-application\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-primary underline\",\"children\":\"apply now\"}]]}],[\"$\",\"p\",null,{\"className\":\"flex flex-wrap items-center justify-center gap-x-1.5 gap-y-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-foreground font-semibold tabular-nums\",\"children\":\"RÂ 6Â 625\"}],[\"$\",\"span\",null,{\"children\":\"deposit and\"}],[\"$\",\"span\",null,{\"className\":\"text-emerald-500 font-semibold dark:text-emerald-400\",\"children\":[3,\" x\"]}],[\"$\",\"span\",null,{\"className\":\"text-foreground font-semibold tabular-nums\",\"children\":\"RÂ 2Â 461\"}],[\"$\",\"span\",null,{\"children\":\"with\"}],[\"$\",\"img\",null,{\"src\":\"/images/footer/fasta-logo.svg\",\"alt\":\"Fasta\",\"className\":\"inline-block h-4 w-auto\"}]]}]]}]]}],[\"$\",\"$L2c\",null,{\"items\":[{\"kind\":\"condition\",\"title\":\"Condition: Used â Like New\",\"subtitle\":\"\",\"tooltip\":\"Cared for like it's part of the family! Used with a screen protector and a cover. Almost flawless! No scratches, marks or dents.\",\"tooltipVariant\":\"text\",\"conditionValue\":\"Like New\"},{\"kind\":\"battery\",\"title\":\"Battery Health: 75%+\",\"subtitle\":\"\",\"tooltip\":\"Actual battery health will be determined before the device is shipped out to you, as part of our Quality commitment to you, we only certify and ship devices that have battery performance of 75%, or more anything less and the battery will be replaced before it is shipped.\",\"tooltipVariant\":\"text\",\"batteryHealth\":\"$undefined\",\"batteryIsBrandNew\":false},{\"kind\":\"certified\",\"title\":\"100% Certified\",\"subtitle\":\"\",\"tooltip\":\"This device has passed the highest level, 54-point inspection and has been quality certified!\",\"tooltipVariant\":\"text\"}]}],[\"$\",\"$L23\",null,{\"title\":\"Included with your purchase\",\"aria-label\":\"Included extras\",\"data-testid\":\"buy-pdp-seller-extras\",\"compact\":true,\"className\":\"$undefined\",\"needsToggle\":false,\"openLabel\":\"Show more\",\"closeLabel\":\"Show less\",\"collapsed\":[\"$\",\"ul\",null,{\"className\":\"grid grid-cols-2 gap-x-3 gap-y-1\",\"children\":[[\"$\",\"li\",\"Stylus\",{\"className\":\"text-foreground flex items-start gap-1.5 text-xs\",\"children\":[[\"$\",\"$L28\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M20 6 9 17l-5-5\",\"key\":\"1gmf2c\"}]],\"className\":\"lucide-check text-primary shrink-0 mt-0.5 size-3.5\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"min-w-0 break-words\",\"children\":\"Stylus\"}]]}],[\"$\",\"li\",\"Original charger\",{\"className\":\"text-foreground flex items-start gap-1.5 text-xs\",\"children\":[[\"$\",\"$L28\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$27:props:children:2:props:collapsed:props:children:0:props:children:0:props:iconNode\",\"className\":\"lucide-check text-primary shrink-0 mt-0.5 size-3.5\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"min-w-0 break-words\",\"children\":\"Original charger\"}]]}],[\"$\",\"li\",\"Cover / keyboard case\",{\"className\":\"text-foreground flex items-start gap-1.5 text-xs\",\"children\":[[\"$\",\"$L28\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$27:props:children:2:props:collapsed:props:children:0:props:children:0:props:iconNode\",\"className\":\"lucide-check text-primary shrink-0 mt-0.5 size-3.5\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"min-w-0 break-words\",\"children\":\"Cover / keyboard case\"}]]}]]}],\"expanded\":[\"$\",\"ul\",null,{\"className\":\"grid grid-cols-2 gap-x-3 gap-y-1\",\"children\":[[\"$\",\"li\",\"Stylus\",{\"className\":\"text-foreground flex items-start gap-1.5 text-xs\",\"children\":[\"$L2d\",\"$L2e\"]}],\"$L2f\",\"$L30\"]}]}],\"$L31\"]}]\n"])</script>
5005<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
5005<script id="theme-init" data-cfasync="false"> 5006(function() { 5007 try { 5008 var path = location.pathname; 5009 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 5010 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 5011 var ds; 5012 var pc; 5013 5014 if (isAdminV2) { 5015 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 5016 pc = localStorage.getItem('admin-primary-color') || 'blue'; 5017 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 5018 } else { 5019 var seasonalKey = localStorage.getItem('seasonal-theme'); 5020 var preset = seasonalKey && seasonalPresets[seasonalKey]; 5021 5022 if (!localStorage.getItem('design-system-id-migrated-v3')) { 5023 var storedDs = localStorage.getItem('design-system'); 5024 if (storedDs === 'frosted-slate') { 5025 localStorage.setItem('design-system', 'frosted'); 5026 } 5027 localStorage.setItem('design-system-id-migrated-v3', '1'); 5028 } 5029 5030 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 5031 var currentDs = localStorage.getItem('design-system'); 5032 if (!currentDs || currentDs === 'modern-minimal') { 5033 localStorage.setItem('design-system', 'frosted-slate'); 5034 } 5035 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 5036 } 5037 5038 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 5039 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 5040 } 5041 var theme = localStorage.getItem('theme') || 'light'; 5042 var isDark = theme === 'dark'; 5043 5044 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 5045 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
504560 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 5046 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 5047 5048 var dsData = designSystems[ds] || designSystems['frosted-slate']; 5049 var pcData = primaryColors[pc] || primaryColors['purple']; 5050 var colors = isDark ? dsData.dark : dsData.light; 5051 var primary = isDark ? pcData.dark : pcData.light; 5052 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 5053 var sem = isDark ? semantic.dark : semantic.light; 5054 5055 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 5056 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 5057 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 5058 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 5059 var variantHue = (hue + 130) % 360; 5060 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 5061 var variantLit = isDark ? 55 : 42; 5062 5063 var applyLightFrostedGlass = function(primary, background) { 5064 var parseHsl = function(v) { 5065 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 5066 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 5067 }; 5068 var hslToRgb = function(h, s, l) { 5069 s /= 100; l /= 100; 5070 var c = (1 - Math.abs(2 * l - 1)) * s; 5071 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 5072 var m = l - c / 2; 5073 var r = 0, g = 0, b = 0; 5074 if (h < 60) { r = c; g = x; } 5075 else if (h < 120) { r = x; g = c; } 5076 else if (h < 180) { g = c; b = x; } 5077 else if (h < 240) { g = x; b = c; } 5078 else if (h < 300) { r = x; b = c; } 5079 else { r = c; b = x; } 5080 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 5081 }; 5082 var rgbToHsl = function(r, g, b) { 5083 r /= 255; g /= 255; b /= 255; 5084 var max = Math.max(r, g, b), min = Math.min(r, g, b); 5085 var l = (max + min) / 2, h = 0, s = 0; 5086 if (max !== min) { 5087 var d = max - min; 5088 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 5089 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 5090 else if (max === g) h = ((b - r) / d + 2) / 6; 5091 else h = ((r - g) / d + 4) / 6; 5092 } 5093 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 5094 }; 5095 var blend = function(alpha) { 5096 var p = parseHsl(primary); 5097 var bg = parseHsl(background); 5098 var pr = hslToRgb(p.h, p.s, p.l); 5099 var br = hslToRgb(bg.h, bg.s, bg.l); 5100 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 5101 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 5102 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 5103 return rgbToHsl(r, g, b); 5104 }; 5105 var glass = blend(0.22); 5106 var glassChrome = blend(0.28); 5107 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 5108 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 5109 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 5110 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 5111 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 5112 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 5113 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 5114 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 5115 return { 5116 glass: glass + ' / 0.92', 5117 glassChrome: glassChrome + ' / 0.92', 5118 glassSubtle: blend(0.15) + ' / 0.88', 5119 glassHover: blend(0.28) + ' / 0.94', 5120 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 5121 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 5122 }; 5123 }; 5124 5125 if (dsData.tintSurfacesFromPrimary && isDark) { 5126 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 5127 colors = Object.assign({}, colors, { 5128 background: hue + ' ' + surfaceSat + '% 9%', 5129 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 5130 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 5131 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 5132 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 5133 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 5134 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 5135 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 5136 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 5137 glass: hue + ' 28% 16% / 0.88', 5138 glassChrome: hue + ' 28% 14% / 0.88', 5139 glassSubtle: hue + ' 26% 18% / 0.75', 5140 glassHover: hue + ' 30% 20% / 0.92', 5141 glassBorder: hue + ' 24% 28% / 0.55' 5142 }); 5143 } else if (dsData.frostedChrome && !isDark) { 5144 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 5145 } 5146 5147 var root = document.documentElement; 5148 root.setAttribute('data-design-system', ds); 5149 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 5150 else root.removeAttribute('data-frosted-chrome'); 5151 if (isDark) root.classList.add('dark'); 5152 else root.classList.remove('dark'); 5153 root.style.colorScheme = isDark ? 'dark' : 'light'; 5154 5155 var h = function(v) { return 'hsl(' + v + ')'; }; 5156 5157 root.style.setProperty('--background', h(colors.background)); 5158 root.style.setProperty('--foreground', h(colors.foreground)); 5159 root.style.setProperty('--card', h(colors.card)); 5160 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 5161 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 5162 root.style.setProperty('--popover', h(colors.popover)); 5163 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 5164 root.style.setProperty('--border', h(colors.border)); 5165 root.style.setProperty('--muted', h(colors.muted)); 5166 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 5167 root.style.setProperty('--secondary', h(colors.secondary)); 5168 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 5169 root.style.setProperty('--accent', h(colors.accent)); 5170 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 5171 root.style.setProperty('--input', h(colors.input)); 5172 root.style.setProperty('--sidebar', h(colors.sidebar)); 5173 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 5174 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 5175 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 5176 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 5177 5178 root.style.setProperty('--glass', h(colors.glass)); 5179 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 5180 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 5181 root.style.setProperty('--glass-hover', h(colors.glassHover)); 5182 root.style.setProperty('--glass-border', h(colors.glassBorder)); 5183 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 5184 5185 if (dsData.frostedChrome && !isDark) { 5186 var darkChrome = dsData.dark; 5187 var darkPrimary = pcData.dark; 5188 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 5189 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 5190 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 5191 if (dsData.tintSurfacesFromPrimary) { 5192 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 5193 darkChrome = Object.assign({}, darkChrome, { 5194 glass: darkHue + ' 28% 16% / 0.88', 5195 glassChrome: darkHue + ' 28% 14% / 0.88', 5196 glassBorder: darkHue + ' 24% 28% / 0.55' 5197 }); 5198 } 5199 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 5200 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 5201 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 5202 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 5203 } 5204 5205 if (!isDark) { 5206 root.style.setProperty('--hero-halo-center', h(colors.background)); 5207 root.style.setProperty('--hero-halo-mid', h(colors.card)); 5208 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 5209 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 5210 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 5211 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
5211+ '%' : colors.border)); 5212 } else { 5213 root.style.setProperty('--hero-halo-center', h(colors.card)); 5214 root.style.setProperty('--hero-halo-mid', h(colors.background)); 5215 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 5216 root.style.setProperty('--hero-halo-edge', h(colors.border)); 5217 } 5218 5219 root.style.setProperty('--primary', h(primary)); 5220 root.style.setProperty('--primary-foreground', h(primaryFg)); 5221 root.style.setProperty('--ring', h(primary)); 5222 root.style.setProperty('--sidebar-primary', h(primary)); 5223 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 5224 root.style.setProperty('--sidebar-ring', h(primary)); 5225 5226 root.style.setProperty('--destructive', h(sem.destructive)); 5227 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 5228 5229 if (isDark) { 5230 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 5231 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 5232 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 5233 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 5234 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 5235 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
5235+ '% / 0.2'); 5236 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 5237 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 5238 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 5239 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 5240 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 5241 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 5242 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 5243 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 5244 } else { 5245 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 5246 var textSat = Math.min(Math.max(sat - 2, 52), 80); 5247 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 5248 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 5249 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 5250 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 5251 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 5252 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 5253 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 5254 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 5255 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 5256 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 5257 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 5258 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 5259 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 5260 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 5261 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 5262 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 5263 } 5264 5265 var sat = isDark ? 70 : 65; 5266 var lit = isDark ? 55 : 50; 5267 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 5268 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 5269 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 5270 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 5271 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 5272 } catch (e) {} 5273})(); 5274</script>
5274<script id="buy-trust-dismiss-init"> 5275(function() { 5276 try { 5277 var path = location.pathname.split("?")[0]; 5278 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 5279 document.documentElement.setAttribute("data-trust-dismissed", "1"); 5280 } 5281 } catch (e) {} 5282})(); 5283</script>
5283<script>self.__next_f.push([1,"29:[\"$\",\"div\",null,{\"className\":\"min-w-0 space-y-1.5\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-foreground text-sm font-semibold leading-snug\",\"children\":\"Repair Care Plus\"}],[\"$\",\"p\",null,{\"className\":\"text-muted-foreground text-xs leading-relaxed\",\"children\":[\"Discount on screen damage repairs for 12 months from purchase.\",[\" \",[\"$\",\"a\",null,{\"href\":\"/terms-of-use\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-primary underline\",\"children\":\"T\u0026Câs apply\"}]]]}]]}]\n2b:[\"$\",\"img\",null,{\"src\":\"/images/footer/bank-transfer-logo.svg\",\"alt\":\"Supports Bank Transfer\",\"className\":\"max-h-full max-w-full object-contain\"}]\n"])</script>
5283<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
5283<script id="theme-init" data-cfasync="false"> 5284(function() { 5285 try { 5286 var path = location.pathname; 5287 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 5288 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 5289 var ds; 5290 var pc; 5291 5292 if (isAdminV2) { 5293 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 5294 pc = localStorage.getItem('admin-primary-color') || 'blue'; 5295 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 5296 } else { 5297 var seasonalKey = localStorage.getItem('seasonal-theme'); 5298 var preset = seasonalKey && seasonalPresets[seasonalKey]; 5299 5300 if (!localStorage.getItem('design-system-id-migrated-v3')) { 5301 var storedDs = localStorage.getItem('design-system'); 5302 if (storedDs === 'frosted-slate') { 5303 localStorage.setItem('design-system', 'frosted'); 5304 } 5305 localStorage.setItem('design-system-id-migrated-v3', '1'); 5306 } 5307 5308 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 5309 var currentDs = localStorage.getItem('design-system'); 5310 if (!currentDs || currentDs === 'modern-minimal') { 5311 localStorage.setItem('design-system', 'frosted-slate'); 5312 } 5313 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 5314 } 5315 5316 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 5317 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 5318 } 5319 var theme = localStorage.getItem('theme') || 'light'; 5320 var isDark = theme === 'dark'; 5321 5322 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 5323 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
532360 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 5324 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 5325 5326 var dsData = designSystems[ds] || designSystems['frosted-slate']; 5327 var pcData = primaryColors[pc] || primaryColors['purple']; 5328 var colors = isDark ? dsData.dark : dsData.light; 5329 var primary = isDark ? pcData.dark : pcData.light; 5330 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 5331 var sem = isDark ? semantic.dark : semantic.light; 5332 5333 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 5334 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 5335 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 5336 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 5337 var variantHue = (hue + 130) % 360; 5338 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 5339 var variantLit = isDark ? 55 : 42; 5340 5341 var applyLightFrostedGlass = function(primary, background) { 5342 var parseHsl = function(v) { 5343 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 5344 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 5345 }; 5346 var hslToRgb = function(h, s, l) { 5347 s /= 100; l /= 100; 5348 var c = (1 - Math.abs(2 * l - 1)) * s; 5349 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 5350 var m = l - c / 2; 5351 var r = 0, g = 0, b = 0; 5352 if (h < 60) { r = c; g = x; } 5353 else if (h < 120) { r = x; g = c; } 5354 else if (h < 180) { g = c; b = x; } 5355 else if (h < 240) { g = x; b = c; } 5356 else if (h < 300) { r = x; b = c; } 5357 else { r = c; b = x; } 5358 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 5359 }; 5360 var rgbToHsl = function(r, g, b) { 5361 r /= 255; g /= 255; b /= 255; 5362 var max = Math.max(r, g, b), min = Math.min(r, g, b); 5363 var l = (max + min) / 2, h = 0, s = 0; 5364 if (max !== min) { 5365 var d = max - min; 5366 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 5367 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 5368 else if (max === g) h = ((b - r) / d + 2) / 6; 5369 else h = ((r - g) / d + 4) / 6; 5370 } 5371 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 5372 }; 5373 var blend = function(alpha) { 5374 var p = parseHsl(primary); 5375 var bg = parseHsl(background); 5376 var pr = hslToRgb(p.h, p.s, p.l); 5377 var br = hslToRgb(bg.h, bg.s, bg.l); 5378 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 5379 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 5380 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 5381 return rgbToHsl(r, g, b); 5382 }; 5383 var glass = blend(0.22); 5384 var glassChrome = blend(0.28); 5385 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 5386 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 5387 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 5388 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 5389 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 5390 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 5391 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 5392 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 5393 return { 5394 glass: glass + ' / 0.92', 5395 glassChrome: glassChrome + ' / 0.92', 5396 glassSubtle: blend(0.15) + ' / 0.88', 5397 glassHover: blend(0.28) + ' / 0.94', 5398 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 5399 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 5400 }; 5401 }; 5402 5403 if (dsData.tintSurfacesFromPrimary && isDark) { 5404 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 5405 colors = Object.assign({}, colors, { 5406 background: hue + ' ' + surfaceSat + '% 9%', 5407 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 5408 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 5409 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 5410 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 5411 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 5412 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 5413 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 5414 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 5415 glass: hue + ' 28% 16% / 0.88', 5416 glassChrome: hue + ' 28% 14% / 0.88', 5417 glassSubtle: hue + ' 26% 18% / 0.75', 5418 glassHover: hue + ' 30% 20% / 0.92', 5419 glassBorder: hue + ' 24% 28% / 0.55' 5420 }); 5421 } else if (dsData.frostedChrome && !isDark) { 5422 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 5423 } 5424 5425 var root = document.documentElement; 5426 root.setAttribute('data-design-system', ds); 5427 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 5428 else root.removeAttribute('data-frosted-chrome'); 5429 if (isDark) root.classList.add('dark'); 5430 else root.classList.remove('dark'); 5431 root.style.colorScheme = isDark ? 'dark' : 'light'; 5432 5433 var h = function(v) { return 'hsl(' + v + ')'; }; 5434 5435 root.style.setProperty('--background', h(colors.background)); 5436 root.style.setProperty('--foreground', h(colors.foreground)); 5437 root.style.setProperty('--card', h(colors.card)); 5438 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 5439 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 5440 root.style.setProperty('--popover', h(colors.popover)); 5441 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 5442 root.style.setProperty('--border', h(colors.border)); 5443 root.style.setProperty('--muted', h(colors.muted)); 5444 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 5445 root.style.setProperty('--secondary', h(colors.secondary)); 5446 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 5447 root.style.setProperty('--accent', h(colors.accent)); 5448 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 5449 root.style.setProperty('--input', h(colors.input)); 5450 root.style.setProperty('--sidebar', h(colors.sidebar)); 5451 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 5452 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 5453 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 5454 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 5455 5456 root.style.setProperty('--glass', h(colors.glass)); 5457 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 5458 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 5459 root.style.setProperty('--glass-hover', h(colors.glassHover)); 5460 root.style.setProperty('--glass-border', h(colors.glassBorder)); 5461 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 5462 5463 if (dsData.frostedChrome && !isDark) { 5464 var darkChrome = dsData.dark; 5465 var darkPrimary = pcData.dark; 5466 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 5467 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 5468 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 5469 if (dsData.tintSurfacesFromPrimary) { 5470 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 5471 darkChrome = Object.assign({}, darkChrome, { 5472 glass: darkHue + ' 28% 16% / 0.88', 5473 glassChrome: darkHue + ' 28% 14% / 0.88', 5474 glassBorder: darkHue + ' 24% 28% / 0.55' 5475 }); 5476 } 5477 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 5478 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 5479 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 5480 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 5481 } 5482 5483 if (!isDark) { 5484 root.style.setProperty('--hero-halo-center', h(colors.background)); 5485 root.style.setProperty('--hero-halo-mid', h(colors.card)); 5486 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 5487 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 5488 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 5489 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
5489+ '%' : colors.border)); 5490 } else { 5491 root.style.setProperty('--hero-halo-center', h(colors.card)); 5492 root.style.setProperty('--hero-halo-mid', h(colors.background)); 5493 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 5494 root.style.setProperty('--hero-halo-edge', h(colors.border)); 5495 } 5496 5497 root.style.setProperty('--primary', h(primary)); 5498 root.style.setProperty('--primary-foreground', h(primaryFg)); 5499 root.style.setProperty('--ring', h(primary)); 5500 root.style.setProperty('--sidebar-primary', h(primary)); 5501 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 5502 root.style.setProperty('--sidebar-ring', h(primary)); 5503 5504 root.style.setProperty('--destructive', h(sem.destructive)); 5505 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 5506 5507 if (isDark) { 5508 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 5509 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 5510 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 5511 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 5512 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 5513 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
5513+ '% / 0.2'); 5514 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 5515 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 5516 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 5517 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 5518 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 5519 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 5520 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 5521 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 5522 } else { 5523 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 5524 var textSat = Math.min(Math.max(sat - 2, 52), 80); 5525 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 5526 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 5527 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 5528 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 5529 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 5530 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 5531 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 5532 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 5533 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 5534 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 5535 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 5536 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 5537 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 5538 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 5539 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 5540 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 5541 } 5542 5543 var sat = isDark ? 70 : 65; 5544 var lit = isDark ? 55 : 50; 5545 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 5546 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 5547 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 5548 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 5549 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 5550 } catch (e) {} 5551})(); 5552</script>
5552<script id="buy-trust-dismiss-init"> 5553(function() { 5554 try { 5555 var path = location.pathname.split("?")[0]; 5556 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 5557 document.documentElement.setAttribute("data-trust-dismissed", "1"); 5558 } 5559 } catch (e) {} 5560})(); 5561</script>
5561<script>self.__next_f.push([1,"32:I[34315,[\"8409\",\"static/chunks/8409-de5726a4a278d28f.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"1930\",\"static/chunks/1930-431df5db3d2d6569.js\",\"9258\",\"static/chunks/9258-716243a91d561964.js\",\"7649\",\"static/chunks/7649-fc2ec28b21f07c2e.js\",\"8571\",\"static/chunks/8571-ac6ff42855de95c3.js\",\"7898\",\"static/chunks/app/(site)/buy/products/%5Bhandle%5D/page-5ec5e55b73260bac.js\"],\"BuyProductListingActions\"]\n2d:[\"$\",\"$L28\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$27:props:children:2:props:collapsed:props:children:0:props:children:0:props:iconNode\",\"className\":\"lucide-check text-primary shrink-0 mt-0.5 size-3.5\",\"aria-hidden\":true}]\n2e:[\"$\",\"span\",null,{\"className\":\"min-w-0 break-words\",\"children\":\"Stylus\"}]\n2f:[\"$\",\"li\",\"Original charger\",{\"className\":\"text-foreground flex items-start gap-1.5 text-xs\",\"children\":[[\"$\",\"$L28\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$27:props:children:2:props:collapsed:props:children:0:props:children:0:props:iconNode\",\"className\":\"lucide-check text-primary shrink-0 mt-0.5 size-3.5\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"min-w-0 break-words\",\"children\":\"Original charger\"}]]}]\n30:[\"$\",\"li\",\"Cover / keyboard case\",{\"className\":\"text-foreground flex items-start gap-1.5 text-xs\",\"children\":[[\"$\",\"$L28\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$27:props:children:2:props:collapsed:props:children:0:props:children:0:props:iconNode\",\"className\":\"lucide-check text-primary shrink-0 mt-0.5 size-3.5\",\"aria-hidden\":true}],[\"$\",\"span\",null,{\"className\":\"min-w-0 break-words\",\"children\":\"Cover / keyboard case\"}]]}]\n31:[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-2 md:mt-auto\",\"children\":[[\"$\",\"div\",null,{\"className\":\"buy-pdp-urgency px-2 py-1.5 text-center text-sm mx-auto w-full\",\"data-testid\":\"buy-pdp-urgency\",\"role\":\"status\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":true,\"children\":\"ð¥ \"}],[\"$\",\"span\",null,{\"className\":\"text-foreground font-medium\",\"children\":\"Only 1 left at this price\"}]]}],[\"$\",\"$L32\",null,{\"handle\":\"apple-ipad-ipad-pro-11-m2-128gb-gray-like-new-condition-1\",\"productId\":\"6aaebf854d0251bc79c9b7fe\",\"holidayMode\":false}]]}]\n"])</script>
5561<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
5561<script id="theme-init" data-cfasync="false"> 5562(function() { 5563 try { 5564 var path = location.pathname; 5565 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 5566 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 5567 var ds; 5568 var pc; 5569 5570 if (isAdminV2) { 5571 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 5572 pc = localStorage.getItem('admin-primary-color') || 'blue'; 5573 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 5574 } else { 5575 var seasonalKey = localStorage.getItem('seasonal-theme'); 5576 var preset = seasonalKey && seasonalPresets[seasonalKey]; 5577 5578 if (!localStorage.getItem('design-system-id-migrated-v3')) { 5579 var storedDs = localStorage.getItem('design-system'); 5580 if (storedDs === 'frosted-slate') { 5581 localStorage.setItem('design-system', 'frosted'); 5582 } 5583 localStorage.setItem('design-system-id-migrated-v3', '1'); 5584 } 5585 5586 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 5587 var currentDs = localStorage.getItem('design-system'); 5588 if (!currentDs || currentDs === 'modern-minimal') { 5589 localStorage.setItem('design-system', 'frosted-slate'); 5590 } 5591 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 5592 } 5593 5594 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 5595 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 5596 } 5597 var theme = localStorage.getItem('theme') || 'light'; 5598 var isDark = theme === 'dark'; 5599 5600 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 5601 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
560160 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 5602 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 5603 5604 var dsData = designSystems[ds] || designSystems['frosted-slate']; 5605 var pcData = primaryColors[pc] || primaryColors['purple']; 5606 var colors = isDark ? dsData.dark : dsData.light; 5607 var primary = isDark ? pcData.dark : pcData.light; 5608 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 5609 var sem = isDark ? semantic.dark : semantic.light; 5610 5611 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 5612 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 5613 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 5614 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 5615 var variantHue = (hue + 130) % 360; 5616 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 5617 var variantLit = isDark ? 55 : 42; 5618 5619 var applyLightFrostedGlass = function(primary, background) { 5620 var parseHsl = function(v) { 5621 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 5622 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 5623 }; 5624 var hslToRgb = function(h, s, l) { 5625 s /= 100; l /= 100; 5626 var c = (1 - Math.abs(2 * l - 1)) * s; 5627 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 5628 var m = l - c / 2; 5629 var r = 0, g = 0, b = 0; 5630 if (h < 60) { r = c; g = x; } 5631 else if (h < 120) { r = x; g = c; } 5632 else if (h < 180) { g = c; b = x; } 5633 else if (h < 240) { g = x; b = c; } 5634 else if (h < 300) { r = x; b = c; } 5635 else { r = c; b = x; } 5636 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 5637 }; 5638 var rgbToHsl = function(r, g, b) { 5639 r /= 255; g /= 255; b /= 255; 5640 var max = Math.max(r, g, b), min = Math.min(r, g, b); 5641 var l = (max + min) / 2, h = 0, s = 0; 5642 if (max !== min) { 5643 var d = max - min; 5644 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 5645 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 5646 else if (max === g) h = ((b - r) / d + 2) / 6; 5647 else h = ((r - g) / d + 4) / 6; 5648 } 5649 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 5650 }; 5651 var blend = function(alpha) { 5652 var p = parseHsl(primary); 5653 var bg = parseHsl(background); 5654 var pr = hslToRgb(p.h, p.s, p.l); 5655 var br = hslToRgb(bg.h, bg.s, bg.l); 5656 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 5657 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 5658 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 5659 return rgbToHsl(r, g, b); 5660 }; 5661 var glass = blend(0.22); 5662 var glassChrome = blend(0.28); 5663 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 5664 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 5665 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 5666 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 5667 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 5668 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 5669 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 5670 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 5671 return { 5672 glass: glass + ' / 0.92', 5673 glassChrome: glassChrome + ' / 0.92', 5674 glassSubtle: blend(0.15) + ' / 0.88', 5675 glassHover: blend(0.28) + ' / 0.94', 5676 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 5677 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 5678 }; 5679 }; 5680 5681 if (dsData.tintSurfacesFromPrimary && isDark) { 5682 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 5683 colors = Object.assign({}, colors, { 5684 background: hue + ' ' + surfaceSat + '% 9%', 5685 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 5686 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 5687 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 5688 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 5689 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 5690 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 5691 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 5692 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 5693 glass: hue + ' 28% 16% / 0.88', 5694 glassChrome: hue + ' 28% 14% / 0.88', 5695 glassSubtle: hue + ' 26% 18% / 0.75', 5696 glassHover: hue + ' 30% 20% / 0.92', 5697 glassBorder: hue + ' 24% 28% / 0.55' 5698 }); 5699 } else if (dsData.frostedChrome && !isDark) { 5700 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 5701 } 5702 5703 var root = document.documentElement; 5704 root.setAttribute('data-design-system', ds); 5705 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 5706 else root.removeAttribute('data-frosted-chrome'); 5707 if (isDark) root.classList.add('dark'); 5708 else root.classList.remove('dark'); 5709 root.style.colorScheme = isDark ? 'dark' : 'light'; 5710 5711 var h = function(v) { return 'hsl(' + v + ')'; }; 5712 5713 root.style.setProperty('--background', h(colors.background)); 5714 root.style.setProperty('--foreground', h(colors.foreground)); 5715 root.style.setProperty('--card', h(colors.card)); 5716 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 5717 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 5718 root.style.setProperty('--popover', h(colors.popover)); 5719 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 5720 root.style.setProperty('--border', h(colors.border)); 5721 root.style.setProperty('--muted', h(colors.muted)); 5722 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 5723 root.style.setProperty('--secondary', h(colors.secondary)); 5724 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 5725 root.style.setProperty('--accent', h(colors.accent)); 5726 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 5727 root.style.setProperty('--input', h(colors.input)); 5728 root.style.setProperty('--sidebar', h(colors.sidebar)); 5729 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 5730 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 5731 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 5732 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 5733 5734 root.style.setProperty('--glass', h(colors.glass)); 5735 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 5736 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 5737 root.style.setProperty('--glass-hover', h(colors.glassHover)); 5738 root.style.setProperty('--glass-border', h(colors.glassBorder)); 5739 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 5740 5741 if (dsData.frostedChrome && !isDark) { 5742 var darkChrome = dsData.dark; 5743 var darkPrimary = pcData.dark; 5744 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 5745 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 5746 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 5747 if (dsData.tintSurfacesFromPrimary) { 5748 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 5749 darkChrome = Object.assign({}, darkChrome, { 5750 glass: darkHue + ' 28% 16% / 0.88', 5751 glassChrome: darkHue + ' 28% 14% / 0.88', 5752 glassBorder: darkHue + ' 24% 28% / 0.55' 5753 }); 5754 } 5755 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 5756 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 5757 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 5758 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 5759 } 5760 5761 if (!isDark) { 5762 root.style.setProperty('--hero-halo-center', h(colors.background)); 5763 root.style.setProperty('--hero-halo-mid', h(colors.card)); 5764 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 5765 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 5766 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 5767 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
5767+ '%' : colors.border)); 5768 } else { 5769 root.style.setProperty('--hero-halo-center', h(colors.card)); 5770 root.style.setProperty('--hero-halo-mid', h(colors.background)); 5771 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 5772 root.style.setProperty('--hero-halo-edge', h(colors.border)); 5773 } 5774 5775 root.style.setProperty('--primary', h(primary)); 5776 root.style.setProperty('--primary-foreground', h(primaryFg)); 5777 root.style.setProperty('--ring', h(primary)); 5778 root.style.setProperty('--sidebar-primary', h(primary)); 5779 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 5780 root.style.setProperty('--sidebar-ring', h(primary)); 5781 5782 root.style.setProperty('--destructive', h(sem.destructive)); 5783 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 5784 5785 if (isDark) { 5786 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 5787 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 5788 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 5789 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 5790 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 5791 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
5791+ '% / 0.2'); 5792 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 5793 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 5794 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 5795 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 5796 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 5797 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 5798 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 5799 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 5800 } else { 5801 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 5802 var textSat = Math.min(Math.max(sat - 2, 52), 80); 5803 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 5804 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 5805 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 5806 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 5807 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 5808 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 5809 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 5810 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 5811 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 5812 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 5813 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 5814 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 5815 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 5816 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 5817 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 5818 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 5819 } 5820 5821 var sat = isDark ? 70 : 65; 5822 var lit = isDark ? 55 : 50; 5823 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 5824 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 5825 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 5826 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 5827 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 5828 } catch (e) {} 5829})(); 5830</script>
5830<script id="buy-trust-dismiss-init"> 5831(function() { 5832 try { 5833 var path = location.pathname.split("?")[0]; 5834 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 5835 document.documentElement.setAttribute("data-trust-dismissed", "1"); 5836 } 5837 } catch (e) {} 5838})(); 5839</script>
5839<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"efb53ac01a484ef0a74712f5d49a640f","r":1,"spa":2}' crossorigin="anonymous"></script>
5839 5840</body></html>
5840<script id="legacy-runtime-env">(function(){var e={"HOST_NAME":"https://www.phonetradr.com","PHONE_IMAGES_BASE_URL":"https://www.phonetradr.com/phone-images/","CURRENCY_SYMBOL":"R"};window.HOST_NAME=e.HOST_NAME;window.PHONE_IMAGES_BASE_URL=e.PHONE_IMAGES_BASE_URL;window.CURRENCY_SYMBOL=e.CURRENCY_SYMBOL;window.ga=window.ga||function(){};})();</script>
5840<script id="theme-init" data-cfasync="false"> 5841(function() { 5842 try { 5843 var path = location.pathname; 5844 var isAdminV2 = path === '/admin/v2' || path.indexOf('/admin/v2/') === 0; 5845 var seasonalPresets = {"valentines":{"designSystem":"frosted-neutral","primaryColor":"hot-pink"},"christmas":{"designSystem":"frosted-neutral","primaryColor":"red"},"black-friday":{"designSystem":"modern-minimal","primaryColor":"orange"},"halloween":{"designSystem":"modern-minimal","primaryColor":"orange"}}; 5846 var ds; 5847 var pc; 5848 5849 if (isAdminV2) { 5850 ds = localStorage.getItem('admin-design-system') || 'frosted-slate'; 5851 pc = localStorage.getItem('admin-primary-color') || 'blue'; 5852 if (ds === 'frosted-slate-legacy-cohesive') ds = 'frosted'; 5853 } else { 5854 var seasonalKey = localStorage.getItem('seasonal-theme'); 5855 var preset = seasonalKey && seasonalPresets[seasonalKey]; 5856 5857 if (!localStorage.getItem('design-system-id-migrated-v3')) { 5858 var storedDs = localStorage.getItem('design-system'); 5859 if (storedDs === 'frosted-slate') { 5860 localStorage.setItem('design-system', 'frosted'); 5861 } 5862 localStorage.setItem('design-system-id-migrated-v3', '1'); 5863 } 5864 5865 if (!localStorage.getItem('design-system-default-frosted-slate-v1')) { 5866 var currentDs = localStorage.getItem('design-system'); 5867 if (!currentDs || currentDs === 'modern-minimal') { 5868 localStorage.setItem('design-system', 'frosted-slate'); 5869 } 5870 localStorage.setItem('design-system-default-frosted-slate-v1', '1'); 5871 } 5872 5873 ds = (preset && preset.designSystem) || localStorage.getItem('design-system') || 'frosted-slate'; 5874 pc = (preset && preset.primaryColor) || localStorage.getItem('primary-color') || 'purple'; 5875 } 5876 var theme = localStorage.getItem('theme') || 'light'; 5877 var isDark = theme === 'dark'; 5878 5879 var designSystems = {"modern-minimal":{"light":{"background":"220 12% 98%","foreground":"220 15% 30%","card":"220 15% 99%","cardForeground":"220 15% 30%","border":"220 16% 91%","muted":"220 18% 95%","mutedForeground":"220 12% 42%","secondary":"220 25% 92%","secondaryForeground":"220 20% 25%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"225 6% 10%","foreground":"0 0% 72%","card":"225 7% 13%","cardForeground":"0 0% 72%","border":"225 9% 20%","muted":"228 9% 17%","mutedForeground":"0 0% 63%","secondary":"228 9% 17%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}},"frosted":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"tintSurfacesFromPrimary":true,"frostedChrome":true},"frosted-slate":{"light":{"background":"240 8% 96.5%","foreground":"215 25% 27%","card":"0 0% 100%","cardForeground":"215 25% 27%","border":"214 28% 86%","muted":"240 6% 94%","mutedForeground":"215 16% 47%","secondary":"214 32% 91%","secondaryForeground":"215 25% 27%","popover":"0 0% 100%","popoverForeground":"215 25% 27%","accent":"214 95% 93%","accentForeground":"215 25% 27%","input":"0 0% 100%","sidebar":"240 8% 96.5%","sidebarForeground":"215 25% 27%","sidebarAccent":"214 32% 91%","sidebarAccentForeground":"215 25% 27%","sidebarBorder":"214 32% 91%","glass":"240 8% 96.5% / 0.92","glassSubtle":"240 6% 94% / 0.88","glassHover":"214 32% 91% / 0.94","glassBorder":"214 32% 91% / 0.65","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"222 47% 11%","foreground":"213 31% 82%","card":"217 33% 17%","cardForeground":"213 31% 82%","border":"217 25% 24%","muted":"217 25% 20%","mutedForeground":"215 20% 65%","secondary":"217 25% 20%","secondaryForeground":"213 31% 82%","popover":"217 33% 17%","popoverForeground":"213 31% 82%","accent":"217 30% 22%","accentForeground":"213 70% 78%","input":"217 25% 20%","sidebar":"222 47% 9%","sidebarForeground":"213 31% 82%","sidebarAccent":"217 25% 20%","sidebarAccentForeground":"213 31% 82%","sidebarBorder":"217 25% 24%","glass":"217 33% 17% / 0.85","glassSubtle":"217 33% 17% / 0.72","glassHover":"217 33% 22% / 0.90","glassBorder":"217 25% 30% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"frosted-neutral":{"light":{"background":"0 0% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 96%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 88%","muted":"240 4.8% 94%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 94%","secondaryForeground":"240 5.9% 10%","popover":"0 0% 100%","popoverForeground":"240 5.3% 26.1%","accent":"240 4.8% 90%","accentForeground":"240 5.9% 10%","input":"0 0% 100%","sidebar":"0 0% 98%","sidebarForeground":"240 5.3% 26.1%","sidebarAccent":"240 4.8% 94%","sidebarAccentForeground":"240 5.9% 10%","sidebarBorder":"240 5.9% 88%","glass":"0 0% 96% / 0.92","glassSubtle":"0 0% 94% / 0.88","glassHover":"240 4.8% 92% / 0.94","glassBorder":"240 5.9% 84% / 0.75","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 85%","card":"240 10% 6%","cardForeground":"0 0% 85%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 80%","popover":"240 10% 6%","popoverForeground":"0 0% 85%","accent":"240 3.7% 18%","accentForeground":"0 0% 85%","input":"240 3.7% 15.9%","sidebar":"240 10% 3.9%","sidebarForeground":"0 0% 80%","sidebarAccent":"240 3.7% 15.9%","sidebarAccentForeground":"0 0% 72%","sidebarBorder":"240 3.7% 18%","glass":"240 10% 8% / 0.88","glassSubtle":"240 10% 10% / 0.75","glassHover":"240 3.7% 14% / 0.92","glassBorder":"240 3.7% 22% / 0.55","glassOverlay":"0 0% 0% / 0.50"},"frostedChrome":true},"dark-minimal":{"light":{"background":"220 12% 98%","foreground":"240 5.3% 26.1%","card":"0 0% 98%","cardForeground":"240 5.3% 26.1%","border":"240 5.9% 90%","muted":"240 4.8% 95.9%","mutedForeground":"240 3.8% 46.1%","secondary":"240 4.8% 95.9%","secondaryForeground":"240 5.9% 10%","popover":"220 15% 99%","popoverForeground":"220 15% 30%","accent":"217 50% 93%","accentForeground":"217 70% 30%","input":"220 15% 99%","sidebar":"220 12% 98%","sidebarForeground":"220 15% 30%","sidebarAccent":"217 50% 93%","sidebarAccentForeground":"217 70% 30%","sidebarBorder":"220 16% 91%","glass":"220 20% 98% / 0.90","glassSubtle":"220 15% 97% / 0.85","glassHover":"217 40% 95% / 0.92","glassBorder":"0 0% 0% / 0.06","glassOverlay":"0 0% 0% / 0.40"},"dark":{"background":"240 10% 3.9%","foreground":"0 0% 72%","card":"240 10% 6%","cardForeground":"0 0% 72%","border":"240 3.7% 18%","muted":"240 3.7% 15.9%","mutedForeground":"0 0% 63%","secondary":"240 3.7% 15.9%","secondaryForeground":"0 0% 72%","popover":"225 7% 13%","popoverForeground":"0 0% 72%","accent":"213 32% 22%","accentForeground":"206 100% 74%","input":"225 9% 20%","sidebar":"225 6% 8%","sidebarForeground":"0 0% 72%","sidebarAccent":"213 32% 22%","sidebarAccentForeground":"206 100% 74%","sidebarBorder":"225 9% 20%","glass":"0 0% 100% / 0.12","glassSubtle":"0 0% 100% / 0.06","glassHover":"0 0% 100% / 0.18","glassBorder":"0 0% 100% / 0.08","glassOverlay":"0 0% 0% / 0.40"}}}; 5880 var primaryColors = {"purple":{"light":"250 46% 27%","dark":"250 46% 60%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"teal":{"light":"171 84% 44%","dark":"171 70% 50%","lightFg":"0 0% 100%","darkFg":"171 100% 10%"},"blue":{"light":"221.2 83.2% 53.3%","dark":"217.2 91.2% 59.8%","lightFg":"210 40% 98%","darkFg":"222.2 47.4% 11.2%"},"indigo":{"light":"239 84% 67%","dark":"234 89% 74%","lightFg":"0 0% 100%","darkFg":"243 47% 12%"},"green":{"light":"142.1 76.2% 36.3%","dark":"142.1 70.6% 45.3%","lightFg":"355.7 100% 97.3%","darkFg":"144.9 80.4% 10%"},"pink":{"light":"330 81% 60%","dark":"330 70% 65%","lightFg":"0 0% 100%","darkFg":"330 100% 10%"},"hot-pink":{"light":"330 90% 48%","dark":"330 85% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"red":{"light":"0 72% 51%","dark":"0 65% 55%","lightFg":"0 0% 100%","darkFg":"0 0% 100%"},"orange":{"light":"24.6 95% 53.1%","dark":"20.5 90.2% 48.2%","lightFg":"60 9.1% 97.8%","darkFg":"
588060 9.1% 97.8%"},"rose":{"light":"346.8 77.2% 49.8%","dark":"346.8 77.2% 49.8%","lightFg":"355.7 100% 97.3%","darkFg":"355.7 100% 97.3%"}}; 5881 var semantic = {"light":{"destructive":"0 84% 60%","destructiveForeground":"0 0% 100%"},"dark":{"destructive":"0 63% 31%","destructiveForeground":"0 0% 100%"}}; 5882 5883 var dsData = designSystems[ds] || designSystems['frosted-slate']; 5884 var pcData = primaryColors[pc] || primaryColors['purple']; 5885 var colors = isDark ? dsData.dark : dsData.light; 5886 var primary = isDark ? pcData.dark : pcData.light; 5887 var primaryFg = isDark ? pcData.darkFg : pcData.lightFg; 5888 var sem = isDark ? semantic.dark : semantic.light; 5889 5890 var primaryMatch = primary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 5891 var hue = primaryMatch ? parseFloat(primaryMatch[1]) : 250; 5892 var sat = primaryMatch ? parseFloat(primaryMatch[2]) : 65; 5893 var lit = primaryMatch ? parseFloat(primaryMatch[3]) : 50; 5894 var variantHue = (hue + 130) % 360; 5895 var variantSat = Math.min(Math.max(sat - 10, 45), 85); 5896 var variantLit = isDark ? 55 : 42; 5897 5898 var applyLightFrostedGlass = function(primary, background) { 5899 var parseHsl = function(v) { 5900 var m = v.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 5901 return m ? { h: parseFloat(m[1]), s: parseFloat(m[2]), l: parseFloat(m[3]) } : { h: 0, s: 0, l: 100 }; 5902 }; 5903 var hslToRgb = function(h, s, l) { 5904 s /= 100; l /= 100; 5905 var c = (1 - Math.abs(2 * l - 1)) * s; 5906 var x = c * (1 - Math.abs((h / 60) % 2 - 1)); 5907 var m = l - c / 2; 5908 var r = 0, g = 0, b = 0; 5909 if (h < 60) { r = c; g = x; } 5910 else if (h < 120) { r = x; g = c; } 5911 else if (h < 180) { g = c; b = x; } 5912 else if (h < 240) { g = x; b = c; } 5913 else if (h < 300) { r = x; b = c; } 5914 else { r = c; b = x; } 5915 return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)]; 5916 }; 5917 var rgbToHsl = function(r, g, b) { 5918 r /= 255; g /= 255; b /= 255; 5919 var max = Math.max(r, g, b), min = Math.min(r, g, b); 5920 var l = (max + min) / 2, h = 0, s = 0; 5921 if (max !== min) { 5922 var d = max - min; 5923 s = l > 0.5 ? d / (2 - max - min) : d / (max + min); 5924 if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6; 5925 else if (max === g) h = ((b - r) / d + 2) / 6; 5926 else h = ((r - g) / d + 4) / 6; 5927 } 5928 return Math.round(h * 360 * 10) / 10 + ' ' + Math.round(s * 1000) / 10 + '% ' + Math.round(l * 1000) / 10 + '%'; 5929 }; 5930 var blend = function(alpha) { 5931 var p = parseHsl(primary); 5932 var bg = parseHsl(background); 5933 var pr = hslToRgb(p.h, p.s, p.l); 5934 var br = hslToRgb(bg.h, bg.s, bg.l); 5935 var r = Math.round(pr[0] * alpha + br[0] * (1 - alpha)); 5936 var g = Math.round(pr[1] * alpha + br[1] * (1 - alpha)); 5937 var b = Math.round(pr[2] * alpha + br[2] * (1 - alpha)); 5938 return rgbToHsl(r, g, b); 5939 }; 5940 var glass = blend(0.22); 5941 var glassChrome = blend(0.28); 5942 var glassMatch = glass.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 5943 var chromeMatch = glassChrome.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)/); 5944 var gh = glassMatch ? parseFloat(glassMatch[1]) : 222; 5945 var gs = glassMatch ? parseFloat(glassMatch[2]) : 66; 5946 var gl = glassMatch ? parseFloat(glassMatch[3]) : 82; 5947 var ch = chromeMatch ? parseFloat(chromeMatch[1]) : gh; 5948 var cs = chromeMatch ? parseFloat(chromeMatch[2]) : gs; 5949 var cl = chromeMatch ? parseFloat(chromeMatch[3]) : Math.max(gl - 4, 74); 5950 return { 5951 glass: glass + ' / 0.92', 5952 glassChrome: glassChrome + ' / 0.92', 5953 glassSubtle: blend(0.15) + ' / 0.88', 5954 glassHover: blend(0.28) + ' / 0.94', 5955 glassBorder: gh + ' ' + Math.max(gs - 4, 40) + '% ' + Math.max(gl - 6, 74) + '% / 0.75', 5956 glassChromeBorder: ch + ' ' + Math.max(cs - 4, 40) + '% ' + Math.max(cl - 6, 72) + '% / 0.75' 5957 }; 5958 }; 5959 5960 if (dsData.tintSurfacesFromPrimary && isDark) { 5961 var surfaceSat = Math.min(Math.max(Math.round(sat * 0.58), 38), 72); 5962 colors = Object.assign({}, colors, { 5963 background: hue + ' ' + surfaceSat + '% 9%', 5964 card: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 5965 muted: hue + ' ' + Math.max(surfaceSat - 8, 30) + '% 16%', 5966 secondary: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 5967 border: hue + ' ' + Math.max(surfaceSat - 12, 26) + '% 22%', 5968 accent: hue + ' ' + Math.min(sat, 78) + '% 50% / 0.2', 5969 accentForeground: hue + ' ' + Math.min(sat + 5, 85) + '% 78%', 5970 input: hue + ' ' + Math.max(surfaceSat - 10, 28) + '% 18%', 5971 popover: hue + ' ' + Math.max(surfaceSat - 6, 32) + '% 14%', 5972 glass: hue + ' 28% 16% / 0.88', 5973 glassChrome: hue + ' 28% 14% / 0.88', 5974 glassSubtle: hue + ' 26% 18% / 0.75', 5975 glassHover: hue + ' 30% 20% / 0.92', 5976 glassBorder: hue + ' 24% 28% / 0.55' 5977 }); 5978 } else if (dsData.frostedChrome && !isDark) { 5979 colors = Object.assign({}, colors, applyLightFrostedGlass(primary, colors.background)); 5980 } 5981 5982 var root = document.documentElement; 5983 root.setAttribute('data-design-system', ds); 5984 if (dsData.frostedChrome) root.setAttribute('data-frosted-chrome', 'true'); 5985 else root.removeAttribute('data-frosted-chrome'); 5986 if (isDark) root.classList.add('dark'); 5987 else root.classList.remove('dark'); 5988 root.style.colorScheme = isDark ? 'dark' : 'light'; 5989 5990 var h = function(v) { return 'hsl(' + v + ')'; }; 5991 5992 root.style.setProperty('--background', h(colors.background)); 5993 root.style.setProperty('--foreground', h(colors.foreground)); 5994 root.style.setProperty('--card', h(colors.card)); 5995 root.style.setProperty('--card-foreground', h(colors.cardForeground)); 5996 root.style.setProperty('--card-border', isDark ? h(colors.border) : h(colors.card)); 5997 root.style.setProperty('--popover', h(colors.popover)); 5998 root.style.setProperty('--popover-foreground', h(colors.popoverForeground)); 5999 root.style.setProperty('--border', h(colors.border)); 6000 root.style.setProperty('--muted', h(colors.muted)); 6001 root.style.setProperty('--muted-foreground', h(colors.mutedForeground)); 6002 root.style.setProperty('--secondary', h(colors.secondary)); 6003 root.style.setProperty('--secondary-foreground', h(colors.secondaryForeground)); 6004 root.style.setProperty('--accent', h(colors.accent)); 6005 root.style.setProperty('--accent-foreground', h(colors.accentForeground)); 6006 root.style.setProperty('--input', h(colors.input)); 6007 root.style.setProperty('--sidebar', h(colors.sidebar)); 6008 root.style.setProperty('--sidebar-foreground', h(colors.sidebarForeground)); 6009 root.style.setProperty('--sidebar-accent', h(colors.sidebarAccent)); 6010 root.style.setProperty('--sidebar-accent-foreground', h(colors.sidebarAccentForeground)); 6011 root.style.setProperty('--sidebar-border', h(colors.sidebarBorder)); 6012 6013 root.style.setProperty('--glass', h(colors.glass)); 6014 root.style.setProperty('--glass-chrome', h(colors.glassChrome || colors.glass)); 6015 root.style.setProperty('--glass-subtle', h(colors.glassSubtle)); 6016 root.style.setProperty('--glass-hover', h(colors.glassHover)); 6017 root.style.setProperty('--glass-border', h(colors.glassBorder)); 6018 root.style.setProperty('--glass-overlay', h(colors.glassOverlay)); 6019 6020 if (dsData.frostedChrome && !isDark) { 6021 var darkChrome = dsData.dark; 6022 var darkPrimary = pcData.dark; 6023 var darkHueMatch = darkPrimary.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 6024 var darkHue = darkHueMatch ? parseFloat(darkHueMatch[1]) : hue; 6025 var darkSat = darkHueMatch ? parseFloat(darkHueMatch[2]) : sat; 6026 if (dsData.tintSurfacesFromPrimary) { 6027 var chromeSurfaceSat = Math.min(Math.max(Math.round(darkSat * 0.58), 38), 72); 6028 darkChrome = Object.assign({}, darkChrome, { 6029 glass: darkHue + ' 28% 16% / 0.88', 6030 glassChrome: darkHue + ' 28% 14% / 0.88', 6031 glassBorder: darkHue + ' 24% 28% / 0.55' 6032 }); 6033 } 6034 root.style.setProperty('--site-chrome-bg', h(darkChrome.glassChrome || darkChrome.glass)); 6035 root.style.setProperty('--site-chrome-fg', h(darkChrome.foreground)); 6036 root.style.setProperty('--site-chrome-muted-fg', h(darkChrome.mutedForeground)); 6037 root.style.setProperty('--site-chrome-border', h(darkChrome.glassBorder || darkChrome.border)); 6038 } 6039 6040 if (!isDark) { 6041 root.style.setProperty('--hero-halo-center', h(colors.background)); 6042 root.style.setProperty('--hero-halo-mid', h(colors.card)); 6043 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 6044 var edgeMatch = colors.border.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%/); 6045 var edgeLit = edgeMatch ? Math.max(parseFloat(edgeMatch[3]) - 6, 0) : 78; 6046 root.style.setProperty('--hero-halo-edge', h(edgeMatch ? edgeMatch[1] + ' ' + edgeMatch[2] + '% ' + edgeLit
6046+ '%' : colors.border)); 6047 } else { 6048 root.style.setProperty('--hero-halo-center', h(colors.card)); 6049 root.style.setProperty('--hero-halo-mid', h(colors.background)); 6050 root.style.setProperty('--hero-halo-deep', h(colors.muted)); 6051 root.style.setProperty('--hero-halo-edge', h(colors.border)); 6052 } 6053 6054 root.style.setProperty('--primary', h(primary)); 6055 root.style.setProperty('--primary-foreground', h(primaryFg)); 6056 root.style.setProperty('--ring', h(primary)); 6057 root.style.setProperty('--sidebar-primary', h(primary)); 6058 root.style.setProperty('--sidebar-primary-foreground', h(primaryFg)); 6059 root.style.setProperty('--sidebar-ring', h(primary)); 6060 6061 root.style.setProperty('--destructive', h(sem.destructive)); 6062 root.style.setProperty('--destructive-foreground', h(sem.destructiveForeground)); 6063 6064 if (isDark) { 6065 root.style.setProperty('--chip-main-bg', hue + ' ' + sat + '% ' + lit + '% / 0.22'); 6066 root.style.setProperty('--chip-main-border', hue + ' ' + sat + '% ' + lit + '% / 0.38'); 6067 root.style.setProperty('--chip-main-text', hue + ' ' + Math.min(sat + 5, 90) + '% 78%'); 6068 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + sat + '% ' + lit + '% / 0.34'); 6069 root.style.setProperty('--chip-main-hover-border', hue + ' ' + sat + '% ' + lit + '% / 0.48'); 6070 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantSat + '% ' + variantLit
6070+ '% / 0.2'); 6071 root.style.setProperty('--chip-variant-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.34'); 6072 root.style.setProperty('--chip-variant-text', variantHue + ' ' + variantSat + '% 75%'); 6073 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.3'); 6074 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + variantSat + '% ' + variantLit + '% / 0.42'); 6075 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 15, 40) + '% 58%'); 6076 root.style.setProperty('--surface-hover', hue + ' 28% 18% / 0.85'); 6077 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(sat, 40) + '% 18% / 0.35'); 6078 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(sat, 35) + '% 16% / 0.45'); 6079 } else { 6080 var fillSat = Math.min(Math.max(sat - 4, 48), 72); 6081 var textSat = Math.min(Math.max(sat - 2, 52), 80); 6082 var textLit = Math.round(Math.max(Math.min(lit - 22, 32), 22)); 6083 var variantFillSat = Math.min(Math.max(variantSat - 4, 46), 68); 6084 root.style.setProperty('--chip-main-bg', hue + ' ' + fillSat + '% 89%'); 6085 root.style.setProperty('--chip-main-border', hue + ' ' + Math.max(fillSat - 10, 40) + '% 76%'); 6086 root.style.setProperty('--chip-main-text', hue + ' ' + textSat + '% ' + textLit + '%'); 6087 root.style.setProperty('--chip-main-hover-bg', hue + ' ' + fillSat + '% 85%'); 6088 root.style.setProperty('--chip-main-hover-border', hue + ' ' + Math.max(fillSat - 6, 42) + '% 70%'); 6089 root.style.setProperty('--chip-variant-bg', variantHue + ' ' + variantFillSat + '% 89%'); 6090 root.style.setProperty('--chip-variant-border', variantHue + ' ' + Math.max(variantFillSat - 10, 38) + '% 76%'); 6091 root.style.setProperty('--chip-variant-text', variantHue + ' ' + Math.max(variantFillSat, 46) + '% 26%'); 6092 root.style.setProperty('--chip-variant-hover-bg', variantHue + ' ' + variantFillSat + '% 85%'); 6093 root.style.setProperty('--chip-variant-hover-border', variantHue + ' ' + Math.max(variantFillSat - 6, 40) + '% 70%'); 6094 root.style.setProperty('--hover-border', hue + ' ' + Math.max(sat - 18, 42) + '% 70%'); 6095 root.style.setProperty('--surface-hover', hue + ' ' + Math.min(fillSat, 50) + '% 91%'); 6096 root.style.setProperty('--surface-banner', hue + ' ' + Math.min(fillSat, 52) + '% 93%'); 6097 root.style.setProperty('--surface-banner-end', hue + ' ' + Math.min(fillSat - 2, 48) + '% 89%'); 6098 } 6099 6100 var sat = isDark ? 70 : 65; 6101 var lit = isDark ? 55 : 50; 6102 root.style.setProperty('--chart-1', h(hue + ' ' + sat + '% ' + lit + '%')); 6103 root.style.setProperty('--chart-2', h(((hue + 60) % 360) + ' ' + sat + '% ' + lit + '%')); 6104 root.style.setProperty('--chart-3', h(((hue + 120) % 360) + ' ' + sat + '% ' + lit + '%')); 6105 root.style.setProperty('--chart-4', h(((hue + 180) % 360) + ' ' + sat + '% ' + lit + '%')); 6106 root.style.setProperty('--chart-5', h(((hue + 240) % 360) + ' ' + sat + '% ' + lit + '%')); 6107 } catch (e) {} 6108})(); 6109</script>
6109<script id="buy-trust-dismiss-init"> 6110(function() { 6111 try { 6112 var path = location.pathname.split("?")[0]; 6113 if (sessionStorage.getItem("buy-trust-dismiss:" + path) === "1") { 6114 document.documentElement.setAttribute("data-trust-dismissed", "1"); 6115 } 6116 } catch (e) {} 6117})(); 6118</script>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.