// BATONS'ON — настроение страницы меняется от выбранной категории. // RES: резолвер ассетов для standalone-сборки (blob-URL), иначе исходный путь window.RES = function (p) { return (p && window.__resources && window.__resources[p]) || p; }; // Эстетика: минимализм, премиум, нейтральная палитра, много воздуха. // Мудборд сдвигает фон тонко и задаёт сдержанный low-chroma акцент. const BATONS_THEMES = { hats: { key: "hats", name: "Головные уборы", tagline: "Тренд, который носят на голове", vibe: "Тепло, чисто, вкусно", vars: { "--bg": "oklch(0.975 0.006 75)", "--bg-2": "oklch(0.95 0.009 75)", "--ink": "oklch(0.2 0.006 60)", "--ink-soft": "oklch(0.46 0.008 60)", "--accent": "oklch(0.52 0.07 45)", "--on-accent": "oklch(0.985 0.005 80)", "--card": "oklch(0.99 0.004 80)", "--line": "oklch(0.9 0.006 75)", "--radius": "2px", "--energy": "1", }, }, street: { key: "street", name: "Стритвир", tagline: "Город. Характер. Силуэт.", vibe: "Графит, прохладно, чётко", vars: { "--bg": "oklch(0.965 0.003 250)", "--bg-2": "oklch(0.93 0.004 250)", "--ink": "oklch(0.18 0.005 260)", "--ink-soft": "oklch(0.44 0.006 260)", "--accent": "oklch(0.38 0.02 255)", "--on-accent": "oklch(0.98 0.003 250)", "--card": "oklch(0.99 0.002 250)", "--line": "oklch(0.89 0.004 250)", "--radius": "2px", "--energy": "1", }, }, beach: { key: "beach", name: "Купальники", tagline: "Солнце на коже", vibe: "Песок, золото, лето", vars: { "--bg": "oklch(0.975 0.011 82)", "--bg-2": "oklch(0.95 0.016 80)", "--ink": "oklch(0.26 0.012 55)", "--ink-soft": "oklch(0.48 0.014 58)", "--accent": "oklch(0.56 0.06 65)", "--on-accent": "oklch(0.99 0.006 80)", "--card": "oklch(0.992 0.006 82)", "--line": "oklch(0.91 0.012 80)", "--radius": "2px", "--energy": "1", }, }, lounge: { key: "lounge", name: "Джинсы и худи", tagline: "Дом, в котором тепло", vibe: "Нежно, мягко, пыльная роза", vars: { "--bg": "oklch(0.972 0.01 25)", "--bg-2": "oklch(0.945 0.015 25)", "--ink": "oklch(0.3 0.014 25)", "--ink-soft": "oklch(0.5 0.016 25)", "--accent": "oklch(0.58 0.06 20)", "--on-accent": "oklch(0.99 0.006 30)", "--card": "oklch(0.99 0.006 25)", "--line": "oklch(0.91 0.012 25)", "--radius": "2px", "--energy": "1", }, }, outerwear: { key: "outerwear", name: "Верхняя одежда", tagline: "Силуэт вечера", vibe: "Камень, прохлада, премиум", vars: { "--bg": "oklch(0.962 0.004 250)", "--bg-2": "oklch(0.93 0.006 250)", "--ink": "oklch(0.21 0.008 258)", "--ink-soft": "oklch(0.45 0.01 258)", "--accent": "oklch(0.44 0.03 250)", "--on-accent": "oklch(0.99 0.004 250)", "--card": "oklch(0.99 0.003 250)", "--line": "oklch(0.89 0.006 250)", "--radius": "2px", "--energy": "1", }, }, }; const BATONS_THEME_ORDER = ["hats", "street", "beach", "lounge", "outerwear"]; function applyTheme(key, target) { const t = BATONS_THEMES[key] || BATONS_THEMES.hats; const el = target || document.documentElement; Object.entries(t.vars).forEach(([k, v]) => el.style.setProperty(k, v)); el.dataset.theme = key; return t; } Object.assign(window, { BATONS_THEMES, BATONS_THEME_ORDER, applyTheme });